]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
remove files not in alpha distribution
authorChet Ramey <chet.ramey@case.edu>
Thu, 9 Jul 2015 19:40:37 +0000 (15:40 -0400)
committerChet Ramey <chet.ramey@case.edu>
Thu, 9 Jul 2015 19:40:37 +0000 (15:40 -0400)
358 files changed:
CWRU/CWRU.chlog [deleted file]
CWRU/OS-BUGS/att-yacc-bug [deleted file]
CWRU/OS-BUGS/bsd-rshd-bug [deleted file]
CWRU/OS-BUGS/bsd-tty-driver [deleted file]
CWRU/OS-BUGS/hpux-ulimit-bug [deleted file]
CWRU/OS-BUGS/isc-posix-bug [deleted file]
CWRU/OS-BUGS/next-rlogind-bug [deleted file]
CWRU/OS-BUGS/sco-3.2.4-bug [deleted file]
CWRU/OS-BUGS/sequent-fcntl-dup2-bug [deleted file]
CWRU/OS-BUGS/sun-yp-bug [deleted file]
CWRU/OS-BUGS/ultrix-bugs [deleted file]
CWRU/audit-patch [deleted file]
CWRU/devfd.c [deleted file]
CWRU/devstdin.c [deleted file]
CWRU/intmax.c [deleted file]
CWRU/mh-folder-comp [deleted file]
CWRU/misc/asort.c [deleted file]
CWRU/misc/copyright [deleted file]
CWRU/misc/endian.c [deleted file]
CWRU/misc/endian2.c [deleted file]
CWRU/misc/endian3.c [deleted file]
CWRU/misc/getwd.bsd44.c [deleted file]
CWRU/misc/iptrt.c [deleted file]
CWRU/misc/nofd0.c [deleted file]
CWRU/misc/pcat.c [deleted file]
CWRU/misc/pgrp.c [deleted file]
CWRU/misc/pid.c [deleted file]
CWRU/misc/rangecmp.c [deleted file]
CWRU/misc/stderr.c [deleted file]
CWRU/misc/test-strtod.c [deleted file]
CWRU/new/execute_cmd.c.lastpipe-first [deleted file]
CWRU/old-changelogs/-i [deleted file]
CWRU/old-changelogs/CHANGES.051093 [deleted file]
CWRU/old-changelogs/CHANGES.071193 [deleted file]
CWRU/old-changelogs/CHANGES.090393 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v10 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v11 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v12 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v13 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v14 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v2 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v3 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v4 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v5 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v6 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v7 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v8 [deleted file]
CWRU/old-changelogs/CWRU.chlog.v9 [deleted file]
CWRU/old-conf/Makefile [deleted file]
CWRU/old-conf/Makefile.builtins [deleted file]
CWRU/old-conf/Makefile.documentation [deleted file]
CWRU/old-conf/Makefile.lib.glob [deleted file]
CWRU/old-conf/Makefile.lib.malloc [deleted file]
CWRU/old-conf/Makefile.lib.readline [deleted file]
CWRU/old-conf/Makefile.lib.termcap [deleted file]
CWRU/old-conf/Makefile.lib.tilde [deleted file]
CWRU/old-conf/config.h [deleted file]
CWRU/old-conf/config.h.mini [deleted file]
CWRU/old-conf/configure [deleted file]
CWRU/old-conf/cpp-Makefile [deleted file]
CWRU/old-conf/machines.h [deleted file]
CWRU/old-conf/support/cat-s [deleted file]
CWRU/old-conf/support/cppmagic [deleted file]
CWRU/old-conf/support/getcppsyms.c [deleted file]
CWRU/old-conf/support/inpath [deleted file]
CWRU/old-conf/support/mkmachtype [deleted file]
CWRU/old-conf/support/mksysdefs [deleted file]
CWRU/old-conf/support/srcdir [deleted file]
CWRU/old/KSH.README [deleted file]
CWRU/old/RELEASE.113 [deleted file]
CWRU/old/RSH.README [deleted file]
CWRU/old/array.doc [deleted file]
CWRU/old/fixlib [deleted file]
CWRU/old/histctl.def [deleted file]
CWRU/old/longsig.c [deleted file]
CWRU/old/mklinks [deleted file]
CWRU/old/mktarfile [deleted file]
CWRU/old/mkversion.c [deleted file]
CWRU/old/pagesize.c [deleted file]
CWRU/old/pagesize.sh [deleted file]
CWRU/old/parse.y.noctlnul [deleted file]
CWRU/old/read.def.stdio [deleted file]
CWRU/old/subst.c.noctlnul [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]
CWRU/usleep.c [deleted file]
MANIFEST.doc [deleted file]
NEWS-4.4 [deleted file]
builtins/-i [deleted file]
builtins/ChangeLog [deleted file]
builtins/psize-posix.c [deleted file]
configure.mk [deleted file]
cross-build/beos-sig.h [deleted file]
cross-build/win32sig.h [deleted file]
doc/-i [deleted file]
doc/FAQ-2.05a [deleted file]
doc/FAQ-2.05b [deleted file]
doc/FAQ-20090219 [deleted file]
doc/FAQ-3.0 [deleted file]
doc/FAQ-3.1 [deleted file]
doc/FAQ-3.2 [deleted file]
doc/FAQ-4.0 [deleted file]
doc/FAQ-4.1 [deleted file]
doc/FAQ-4.2 [deleted file]
doc/FAQ-4.3 [deleted file]
doc/article.pt.ps [deleted file]
doc/bash.info [deleted file]
doc/bashman.html [deleted symlink]
doc/bashref.aux [deleted file]
doc/bashref.bt [deleted file]
doc/bashref.bts [deleted file]
doc/bashref.cp [deleted file]
doc/bashref.cps [deleted file]
doc/bashref.fn [deleted file]
doc/bashref.fns [deleted file]
doc/bashref.ky [deleted file]
doc/bashref.log [deleted file]
doc/bashref.pg [deleted file]
doc/bashref.rw [deleted file]
doc/bashref.rws [deleted file]
doc/bashref.tmp [deleted file]
doc/bashref.toc [deleted file]
doc/bashref.tp [deleted file]
doc/bashref.vr [deleted file]
doc/bashref.vrs [deleted file]
doc/faq.headers.mail [deleted file]
doc/faq.headers.news [deleted file]
doc/faq.headers.news2 [deleted file]
doc/faq.mail [deleted file]
doc/faq.mail.test [deleted file]
doc/faq.news [deleted file]
doc/faq.news2 [deleted file]
doc/faq.version [deleted file]
doc/index.html [deleted file]
doc/mkfaqvers [deleted file]
doc/mkinstall [deleted file]
doc/mkinstall-tmp [deleted file]
doc/mkposix [deleted file]
doc/mkrbash [deleted file]
doc/newbash.texi [deleted file]
doc/old-faq.html [deleted file]
doc/oldbash.texi [deleted file]
doc/texinfo.tex.20090118 [deleted file]
examples/complete/complete-tests [deleted file]
examples/copyright [deleted file]
examples/loadables/TODO [deleted file]
examples/loadables/bsdos.glue.c [deleted file]
examples/loadables/copyright-fullcomment [deleted file]
examples/loadables/pushd.def [deleted file]
examples/loadables/pushd.inc [deleted file]
examples/obashdb/bashdb.vaughan [deleted file]
lib/doc-support/Makefile.in [deleted file]
lib/doc-support/getopt.c [deleted file]
lib/doc-support/getopt.h [deleted file]
lib/doc-support/getopt1.c [deleted file]
lib/doc-support/texindex.c [deleted file]
lib/glob/ChangeLog [deleted file]
lib/malloc/OLD/gmalloc.c [deleted file]
lib/malloc/OLD/ogmalloc.c [deleted file]
lib/malloc/OLD/old-nmalloc.c [deleted file]
lib/malloc/OLD/omalloc.c [deleted file]
lib/malloc/memtest.c [deleted file]
lib/malloc/q [deleted file]
lib/posixheaders.old/ansi_stdlib.h [deleted file]
lib/posixheaders.old/filecntl.h [deleted file]
lib/posixheaders.old/memalloc.h [deleted file]
lib/posixheaders.old/posixdir.h [deleted file]
lib/posixheaders.old/posixjmp.h [deleted file]
lib/posixheaders.old/posixstat.h [deleted file]
lib/posixheaders.old/stdc.h [deleted file]
lib/readline/-i [deleted file]
lib/readline/NEW/xxx-autocomplete [deleted file]
lib/readline/doc/Makefile.in [deleted file]
lib/readline/doc/hist.texinfo [deleted file]
lib/readline/doc/history.3 [deleted file]
lib/readline/doc/history.aux [deleted file]
lib/readline/doc/history.bt [deleted file]
lib/readline/doc/history.cp [deleted file]
lib/readline/doc/history.cps [deleted file]
lib/readline/doc/history.dvi [deleted file]
lib/readline/doc/history.fn [deleted file]
lib/readline/doc/history.html [deleted file]
lib/readline/doc/history.info [deleted file]
lib/readline/doc/history.ky [deleted file]
lib/readline/doc/history.log [deleted file]
lib/readline/doc/history.pg [deleted file]
lib/readline/doc/history.ps [deleted file]
lib/readline/doc/history.tmp [deleted file]
lib/readline/doc/history.toc [deleted file]
lib/readline/doc/history.tp [deleted file]
lib/readline/doc/history.vr [deleted file]
lib/readline/doc/history.vrs [deleted file]
lib/readline/doc/hstech.texinfo [deleted file]
lib/readline/doc/hsuser.texinfo [deleted file]
lib/readline/doc/manvers.texinfo [deleted file]
lib/readline/doc/readline.3 [deleted file]
lib/readline/doc/readline.dvi [deleted file]
lib/readline/doc/readline.html [deleted file]
lib/readline/doc/readline.info [deleted file]
lib/readline/doc/readline.ps [deleted file]
lib/readline/doc/rlman.aux [deleted file]
lib/readline/doc/rlman.bt [deleted file]
lib/readline/doc/rlman.cp [deleted file]
lib/readline/doc/rlman.cps [deleted file]
lib/readline/doc/rlman.fn [deleted file]
lib/readline/doc/rlman.fns [deleted file]
lib/readline/doc/rlman.ky [deleted file]
lib/readline/doc/rlman.log [deleted file]
lib/readline/doc/rlman.pg [deleted file]
lib/readline/doc/rlman.texinfo [deleted file]
lib/readline/doc/rlman.tmp [deleted file]
lib/readline/doc/rlman.toc [deleted file]
lib/readline/doc/rlman.tp [deleted file]
lib/readline/doc/rlman.vr [deleted file]
lib/readline/doc/rltech.texinfo [deleted file]
lib/readline/doc/rluser.texinfo [deleted file]
lib/readline/doc/rluserman.aux [deleted file]
lib/readline/doc/rluserman.bt [deleted file]
lib/readline/doc/rluserman.cp [deleted file]
lib/readline/doc/rluserman.cps [deleted file]
lib/readline/doc/rluserman.dvi [deleted file]
lib/readline/doc/rluserman.fn [deleted file]
lib/readline/doc/rluserman.fns [deleted file]
lib/readline/doc/rluserman.html [deleted file]
lib/readline/doc/rluserman.info [deleted file]
lib/readline/doc/rluserman.ky [deleted file]
lib/readline/doc/rluserman.log [deleted file]
lib/readline/doc/rluserman.pg [deleted file]
lib/readline/doc/rluserman.ps [deleted file]
lib/readline/doc/rluserman.texinfo [deleted file]
lib/readline/doc/rluserman.tmp [deleted file]
lib/readline/doc/rluserman.toc [deleted file]
lib/readline/doc/rluserman.tp [deleted file]
lib/readline/doc/rluserman.vr [deleted file]
lib/readline/doc/rluserman.vrs [deleted file]
lib/readline/doc/texi2dvi [deleted symlink]
lib/readline/doc/texi2html [deleted symlink]
lib/readline/doc/texinfo.tex [deleted symlink]
lib/readline/examples/rl-callbacktest2.c [deleted file]
lib/readline/examples/rlptytest.c [deleted file]
lib/sh/fdprintf.c [deleted file]
lib/sh/strindex.c [deleted file]
lib/sh/xstrchr.c [deleted file]
lib/termcap/grot/COPYING [deleted file]
lib/termcap/grot/ChangeLog [deleted file]
lib/termcap/grot/INSTALL [deleted file]
lib/termcap/grot/Makefile.in [deleted file]
lib/termcap/grot/NEWS [deleted file]
lib/termcap/grot/README [deleted file]
lib/termcap/grot/configure [deleted file]
lib/termcap/grot/configure.in [deleted file]
lib/termcap/grot/termcap.info [deleted file]
lib/termcap/grot/termcap.info-1 [deleted file]
lib/termcap/grot/termcap.info-2 [deleted file]
lib/termcap/grot/termcap.info-3 [deleted file]
lib/termcap/grot/termcap.info-4 [deleted file]
lib/termcap/grot/termcap.src [deleted file]
lib/termcap/grot/termcap.texi [deleted file]
lib/termcap/grot/texinfo.tex [deleted file]
lib/tilde/ChangeLog [deleted file]
lib/tilde/doc/Makefile [deleted file]
lib/tilde/doc/tilde.texi [deleted file]
po/Makevars.template [deleted file]
po/bash-3.1.pot [deleted file]
po/bash-3.2.pot [deleted file]
po/bash-4.0.pot [deleted file]
po/bash-4.1.pot [deleted file]
po/bash-4.2.pot [deleted file]
po/bash-4.3.pot [deleted file]
po/nb.gmo [deleted file]
po/nb.po [deleted file]
po/readline.po [deleted file]
support/bash.icon.ps [deleted file]
support/bash.install [deleted file]
support/bash.xv [deleted file]
support/config.guess.20120210 [deleted file]
support/config.sub.20120418 [deleted file]
support/copyright-comment [deleted file]
support/copyright-def [deleted file]
support/copyright-makefile [deleted file]
support/deblank.sh [deleted file]
support/endian.c [deleted file]
support/mail-shell [deleted file]
support/memtest.c [deleted file]
support/mkdep [deleted file]
support/mkdist [deleted file]
support/mkdocdist [deleted file]
support/mknewvers.sh [deleted file]
support/mksnap [deleted file]
support/relicense [deleted file]
support/texi2dvi-0.43 [deleted file]
support/texi2dvi-0.46 [deleted file]
support/texi2dvi-1.14 [deleted file]
support/texi2html-1.64 [deleted file]
support/texi2html.debug [deleted file]
support/version2.c [deleted file]
tests/-i [deleted file]
tests/RUN-ONE-TEST [deleted file]
tests/RUN-TEST-SCRIPT [deleted file]
tests/cracauer-testsuite/DOC [deleted file]
tests/cracauer-testsuite/Makefile [deleted file]
tests/cracauer-testsuite/OBSERVATIONS [deleted file]
tests/cracauer-testsuite/QUESTIONS [deleted file]
tests/cracauer-testsuite/catcher.c [deleted file]
tests/cracauer-testsuite/lib.csh [deleted file]
tests/cracauer-testsuite/lib.sh [deleted file]
tests/cracauer-testsuite/test01.csh [deleted file]
tests/cracauer-testsuite/test01.sh [deleted file]
tests/cracauer-testsuite/test02.csh [deleted file]
tests/cracauer-testsuite/test02.sh [deleted file]
tests/cracauer-testsuite/test03.sh [deleted file]
tests/cracauer-testsuite/test04.sh [deleted file]
tests/cracauer-testsuite/test05.sh [deleted file]
tests/cracauer-testsuite/test06.sh [deleted file]
tests/cracauer-testsuite/test07.csh [deleted file]
tests/cracauer-testsuite/test07.sh [deleted file]
tests/cracauer-testsuite/test08.sh [deleted file]
tests/cracauer-testsuite/test09.sh [deleted file]
tests/cracauer-testsuite/test10.sh [deleted file]
tests/cracauer-testsuite/test11.sh [deleted file]
tests/cracauer-testsuite/test12.sh [deleted file]
tests/cracauer-testsuite/test13.sh [deleted file]
tests/exp-tests [deleted file]
tests/extglob2.sub [deleted file]
tests/glob-test [deleted file]
tests/local-tests [deleted file]
tests/misc/input-line-2.sh [deleted file]
tests/misc/minus-e [deleted file]
tests/misc/minus-e.right [deleted file]
tests/misc/read-nchars-int.tests [deleted file]
tests/misc/regress/README [deleted file]
tests/misc/regress/geoff.post [deleted file]
tests/misc/regress/getdate.mk [deleted file]
tests/misc/regress/getdate.y [deleted file]
tests/misc/regress/shx [deleted file]
tests/misc/regress/shx1 [deleted file]
tests/misc/regress/shx2 [deleted file]
tests/misc/regress/shx3 [deleted file]
tests/misc/regress/shx4 [deleted file]
tests/misc/regress/shx5 [deleted file]
tests/misc/regress/shx7 [deleted file]
tests/misc/regress/shx8 [deleted file]
tests/misc/run-input-test-2 [deleted file]
tests/misc/run-minus-e [deleted file]
tests/misc/test.patmatch [deleted file]
tests/posix-ifs.sh [deleted file]
tests/printf.right.raw [deleted file]
tests/run-gprof [deleted file]
tests/time.tests [deleted file]
version2.c [deleted file]

diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog
deleted file mode 100644 (file)
index 11dc73b..0000000
+++ /dev/null
@@ -1,8942 +0,0 @@
-                                2/14/2011
-                                ---------
-[bash-4.2 released]
-
-                                  2/15
-                                  ----
-lib/glob/gmisc.c
-       - fix wmatchlen and umatchlen to avoid going past the end of the
-         string on an incomplete bracket expression that ends with a
-         NUL.  Partial fix for bug reported by Clark Wang <dearvoid@gmail.com>
-
-                                  2/16
-                                  ----
-subst.h
-       - new string extract flag value: SX_WORD.  Used when calling
-         extract_dollar_brace_string to skip over the word in
-         ${param op word} from parameter_brace_expand
-
-subst.c
-       - change parameter_brace_expand to add SX_WORD to flags passed to
-         extract_dollar_brace_string
-       - change parameter_brace_expand to use SX_POSIXEXP for all non-posix
-         word expansion operators that treat single quotes as special, not
-         just % and #
-       - change extract_dollar_brace_string to initialize dolbrace_state to
-         DOLBRACE_WORD if SX_WORD flag supplied and we shouldn't use
-         DOLBRACE_QUOTE.  Fixes bug reported by Juergen Daubert <jue@jue.li>
-
-doc/{bash.1,bashref.texi}
-       - document the exact expansions here strings undergo
-
-                                  2/17
-                                  ----
-lib/readline/vi_mode.c
-       - make sure that `dd', `cc', and `yy' call vidomove_dispatch from
-         rl_domove_read_callback.  Fixes bug reported by Clark Wang
-         <dearvoid@gmail.com>
-
-lib/readline/callback.c
-       - make sure _rl_internal_char_cleanup is called after the
-         vi-motion callbacks (rl_vi_domove_callback) in rl_callback_read_char.
-         Companion to above fix
-
-doc/{bash.1,bashref.texi}
-       - make sure that the text describing the rhs of the == and =~
-         operators to [[ states that only the quoted portion of the pattern
-         is matched as a string
-
-                                  2/18
-                                  ----
-lib/glob/gmisc.c
-       - better fix for umatchlen/wmatchlen: keep track of the number of
-         characters in a bracket expression as the value to increase
-         matchlen by if the bracket expression is not well-formed.  Fixes
-         bug reported by Clark Wang <dearvoid@gmail.com>
-
-subst.c
-       - change expand_string_for_rhs so that it sets the W_NOSPLIT2 flag
-         in the word flags.  We will not perform word splitting or quote
-         removal on the result, so we do not want to add quoted nulls if
-         we see "" or ''.  Fixes bug reported by Mike Frysinger
-         <vapier@gentoo.org>
-
-                                  2/19
-                                  ----
-variables.c
-       - new function, int chkexport(name), checks whether variable NAME is
-         exported and remakes the export environment if necessary.  Returns
-         1 if NAME is exported and 0 if not
-       - call chkexport(name) to get tzset to look at the right variable in
-         the environment when modifying TZ in sv_tz.  Don't call tzset if
-         chkexport doesn't indicate that the variable is exported
-
-variables.h
-       - new extern declaration for chkexport
-
-
-{parse.y,builtins/printf.def}
-       - call sv_tz before calling localtime() when formatting time strings
-         in prompt strings or using printf.  Fixes bug reported by
-         Dennis Williamson <dennistwilliamson@gmail.com>
-
-execute_cmd.c
-       - modify fix of 2/9 to add casts when those variables are passed to
-         functions; some compilers throw errors instead of warnings.  Report
-         and fix from Joachim Schmitz <jojo@schmitz-digital.de>
-
-support/shobj-conf
-       - add a stanza for nsk on the Tandem from Joachim Schmitz
-         <jojo@schmitz-digital.de>
-
-{shell,lib/readline/shell}.c
-       - Tandem systems should use getpwnam (getlogin()); for some reason
-         they don't do well with using getuid().  Fix from Joachim Schmitz
-         <jojo@schmitz-digital.de>
-
-                                   3/1
-                                   ---
-variables.c
-       - make sure that the return value from find_variable is non-null
-         before trying to use it in chkexport.  Fixes bug reported by
-         Evangelos Foutras <foutrelis@gmail.com>
-
-                                   3/3
-                                   ---
-parse.y
-       - when adding $$ to the current token buffer in read_token_word(),
-         don't xmalloc a buffer for two characters and then strcpy it, just
-         copy the characters directly into the token buffer.  Fix from
-         Michael Whitten <mfwitten@gmail.com>
-
-execute_cmd.c
-       - fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to
-         be expanded, so "" doesn't add CTLNUL.  Similar to fix of 2/18 to
-         expand_string_for_rhs.  Fixes bug reported by Nathanael D. Noblet
-         <nathanael@gnat.ca> and Matthias Klose <doko@debian.org>
-
-parse.y
-       - fix extended_glob case of read_token_word to allocate an extra
-         space in the buffer for the next character read after the extended
-         glob specification if it's a CTLESC or CTLNUL.  Report and fix from
-         Michael Witten <mfwitten@gmail.com>
-       - fix shell expansions case of read_token_word to allocate an extra
-         space in the buffer for the next character read after the shell
-         expansion if it's a CTLESC or CTLNUL.  Report and fix from
-         Michael Witten <mfwitten@gmail.com>
-       - TENTATIVE: fix read_token_word to reduce the amount of buffer space
-         required to hold the translated and double-quoted value of $"..."
-         strings.  Report and fix from Michael Witten <mfwitten@gmail.com>
-       - change code around got_character and got_escaped_character labels to
-         make sure that we call RESIZE_MALLOCED_BUFFER before adding the
-         CTLESC before a CTLESC or CTLNUL, and before adding the character if
-         we're not adding a CTLESC.  Report and fix from
-         Michael Witten <mfwitten@gmail.com>
-
-subst.c
-       - new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that
-         parameter expansion is on rhs of assignment statement.  That inhibits
-         word splitting
-       - change param_expand to call string_list_dollar_at with quoted == 1
-         if PF_ASSIGNRHS is set, so it will quote IFS characters in the
-         positional parameter before separating them with the first char of
-         $IFS.  This keeps the rhs from being split inappropriately.  Fixes
-         bug reported by Andres Perera <andres.p@zoho.com>
-
-                                   3/4
-                                   ---
-lib/readline/bind.c
-       - add a missing free of `names' in rl_function_dumper.  Bug report
-         and fix from Michael Snyder <msnyder@vmware.com>
-
-                                   3/5
-                                   ---
-lib/readline/rltty.c
-       - change rl_deprep_terminal so it uses fileno (stdin) for the tty fd
-         if rl_instream is not set, like rl_prep_terminal
-
-                                   3/6
-                                   ---
-lib/readline/display.c
-       - fix rl_message to use a dynamically-allocated buffer instead of a
-         fixed-size buffer of 128 chars for the `local message prompt'.  Bug
-         report and fix from Micah Cowan <micah@cowan.name>
-
-                                   3/7
-                                   ---
-jobs.c
-       - add sentinel to wait_sigint_handler so it only sets wait_sigint_received
-         if waiting_for_child is non-zero; otherwise, it restores the old
-         SIGINT handler and sends itself the SIGINT
-       - set waiting_for_child around the calls to waitchld that use it to
-         synchronously wait for a process
-       - change logic that decides whether or not the child process blocked
-         or handled SIGINT based on whether or not waitpid returns -1/EINTR
-         and the shell receives a SIGINT and the child does not exit.  If
-         the child later exits due to SIGINT, cancel the assumoption that it
-         was handled
-       - instead of testing whether or not the child exited due to SIGINT
-         when deciding whether the shell should act on a SIGINT it received
-         while waiting, test whether or not we think the child caught
-         SIGINT.  If it did, we let it go (unless the shell has it trapped);
-         if it did not catch it, the shell acts on the SIGINT.  Fix from
-         Linus Torvalds <torvalds@linux-foundation.org>, bug report originally
-         from Oleg Nesterov <oleg@redhat.com>
-
-                                   3/8
-                                   ---
-shell.c
-       - initialize no_line_editing to 1 if READLINE is not defined -- we
-         can't have line editing without readline
-
-                                  3/12
-                                  ----
-lib/readline/signals.c
-       - add SIGHUP to the set of signals readline handles
-
-lib/readline/doc/rltech.texi
-       - document that SIGHUP is now part of the set of signals readline
-         handles
-
-lib/readline/input.c
-       - if _rl_caught_signal indicates that read() was interrupted by a
-         SIGHUP or SIGTERM, return READERR or EOF as appropriate
-       - call rl_event_hook, if it's set, if call to read in rl_getc
-         returns -1/EINTR.  If rl_event_hook doesn't do anything, this
-         continues the loop as before.  This handles the other fatal
-         signals
-
-execute_cmd.c
-       - add a couple of QUIT; calls to execute_disk_command and
-         execute_simple_command to improve responsiveness to interrupts
-         and fatal signals
-
-input.c
-       - rearrange getc_with_restart so that the return values from read()
-         are handled right
-
-parse.y
-       - don't need to set terminate_immediately in yy_stream_get, since
-         getc_with_restart checks for terminating signals itself
-       - since readline returns READERR on SIGHUP or SIGTERM, don't need
-         to set terminate_immediately.  Still doesn't handle other
-         signals well -- will have to check that some more
-
-bashline.c
-       - new function, bash_event_hook, for rl_event_hook.  Just checks for
-         terminating signals and acts on them using CHECK_TERMSIG.
-       - set rl_event_hook to bash_event_hook
-
-builtins/read.def
-       - take out setting terminate_immediately; add calls to CHECK_TERMSIG
-         after read calls
-
-doc/{bash.1,bashref.texi}
-       - move the text describing the effect of negative subscripts used to
-         reference indexed array elements to the paragraphs describing
-         ${parameter[subscript]}, since that's where they are implemented.
-         Pointed out by Christopher F. A. Johnson <cfajohnson@gmail.com>
-
-arrayfunc.[ch],subst.c
-       - array_expand_index now takes a new first argument: a SHELL_VAR *
-         of the array variable being subscripted.  Can be used later to fully
-         implement negative subscripts
-
-                                  3/14
-                                  ----
-lib/glob/glob.c
-       - fix mbskipname to not turn the directory entry name into a wide char
-         string if the conversion of the pattern to a wide char string fails
-       - fix mbskipname to call skipname if either the pattern or the filename
-         can't be converted into a wide-char string
-
-lib/glob/xmbsrtowcs.c
-       - fix xdupmbstowcs2 to handle return value of 0 from mbsnrtowcs and
-         short-circuit with failure in that case.  Fixes bug reported by
-         Roman Rakus <rrakus@redhat.com>
-
-                                  3/15
-                                  ----
-bashline.c
-       - new variable, bash_filename_quote_characters to store the value
-         assigned to rl_filename_quote_characters so it can be restored
-         if changed.
-       - change bashline_reset and attempt_shell_completion to restore
-         rl_filename_quote_characters if not set to default
-
-                                  3/22
-                                  ----
-lib/glob/glob.c
-       - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs
-         fails to convert the pathname to a wide-character string
-
-lib/glob/xmbsrtowcs.c
-       - xdupmbstowcs2: change to fix problem with leading '\\' (results in
-         nms == 0, which causes it to short-circuit with failure right
-         away).  Fixes bug pointed out by Werner Fink <werner@suse.de>
-       - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the
-         next single-byte character and going on
-       - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC
-         bytes; try to avoid calls to realloc (even if they don't actually
-         result in more memory being allocated)
-
-                                  3/24
-                                  ----
-doc/{bash.1,bashref.texi}
-       - slightly modify BASH_SUBSHELL description based on complaint from
-         Sam Liddicott <sam@liddicott.com>
-
-                                  3/25
-                                  ----
-trap.c
-       - change free_trap_strings to not call free_trap_string for signals
-         that are being ignored, like reset_or_restore_signal_handlers.
-         Fixes bug reported by Satoshi Takahashi <blue3waters@gmail.com>
-
-                                  3/26
-                                  ----
-lib/readline/rltypedefs.h
-       - remove old Function/VFunction/CPFunction/CPPFunction typedefs as
-         suggested by Tom Tromey <tromey@redhat.com>
-
-lib/readline/rlstdc.h
-       - move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from
-         config.h.in to here because declaration of rl_message in
-         readline.h uses the defines.  This makes it hard for another packages
-         to use after the header files are installed, since config.h is not
-         one of the installed files.  Suggested by Tom Tromey
-         <tromey@redhat.com>
-
-                                  3/27
-                                  ----
-print_cmd.c
-       - change indirection_string from a static buffer to a dynamic one
-         managed by indirection_level_string(), so we don't end up truncating
-         PS4.  Suggested by Dennis Williamson <dennistwilliamson@gmail.com>
-
-lib/readline/shell.c
-       - change sh_set_lines_and_columns to use static buffers instead of
-         allocating the buffers to pass to setenv/putenv
-
-lib/readline/terminal.c
-       - change _rl_get_screen_size to not call sh_set_lines_and_columns if
-         ignore_env == 0
-       - _rl_sigwinch_resize_terminal: new function to just retrieve terminal
-         size, ignoring environment
-
-lib/readline/rlprivate.h
-       - new external declaration for _rl_sigwinch_resize_terminal() (currently
-         unused)
-
-lib/readline/signals.c
-       - rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH
-       - rl_sigwinch_handler: don't immediately call rl_resize_terminal; just
-         leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle
-       - _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH.
-         Should fix hang when sending multiple repeated SIGWINCH reported by
-         Henning Bekel <h.bekel@googlemail.com>
-
-                                  3/29
-                                  ----
-lib/sh/snprintf.c
-       - include math.h for any defines for isinf/isnan
-       - use code from gnulib documentation to implement isinf/isnan if they
-         are not defined
-
-configure.in
-       - don't check for isinf or isnan; c99 says they're macros anyway
-
-config.h.in
-       - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used
-         by snprintf.c
-
-                                   4/2
-                                   ---
-braces.c
-       - brace_gobbler: fix to understand double-quoted command substitution,
-         since the shell understands unquoted comsubs.  Fixes bug reported
-         by Michael Whitten <mfwitten@gmail.com>
-
-lib/readline/display.c
-       - include <pc.h> on MDOS
-       - get and set screen size using DJGPP-specific calls on MSDOS
-       - move cursor up clear screen using DJGPP-specific calls
-       - don't call tputs on DJGPP; there is no good terminfo support
-
-lib/readline/terminal.c
-       - include <pc.h> on MDOS
-       - get and set screen size using DJGPP-specific calls on MSDOS
-       - use DJGPP-specific initialization on MSDOS, zeroing all the
-         _rl_term_* variables
-       - don't call tputs on DJGPP; there is no good terminfo support
-         DJGPP support from Eli Zaretskii  <eliz@gnu.org>
-
-                                   4/6
-                                   ---
-
-config-top.h
-       - change DEFAULT_PATH_VALUE to something more useful and modern
-
-                                   4/8
-                                   ---
-tests/printf2.sub
-       - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect.
-         Reported by Cedric Arbogast <arbogast.cedric@gmail.com>
-
-                                  4/11
-                                  ----
-include/chartypes.h
-       - fix a couple of dicey defines (though ones that don't cause any
-         compiler warnings) in IN_CTYPE_DOMAIN
-
-doc/{bashref.texi,bash.1}
-       - add note referring to duplicating file descriptors in sections
-         describing redirecting stdout and stderr and appending to stdout
-         and stderr.  Suggested by Matthew Dinger <mdinger.bugzilla@gmail.com>
-
-pcomplete.c
-       - it_init_helptopics: new function to support completing on help topics,
-         not just builtins
-       - it_helptopics: new programmable completion list of help topics
-       - build list of helptopic completions in gen_action_completions on
-         demand
-
-pcomplete.h
-       - new extern declaration for it_helptopics
-
-builtins/complete.def
-       - the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN,
-         since there are more help topics than just builtins.  Suggested by
-         Clark Wang <dearvoid@gmail.com>
-
-                                  4/12
-                                  ----
-print_cmd.c
-       - fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS
-         before ending the body of the command, so heredocs get attached to
-         the right command instead of to the loop.  From gentoo bug 363371
-         http://bugs.gentoo.org/show_bug.cgi?id=363371
-
-execute_cmd.c
-       - change coproc_pidchk to unset the appropriate shell variables when
-         the (currently single) known coproc pid terminates
-       - cleanup and new functions to fully support multiple coprocesses when
-         and if I decide to go there
-
-                                  4/13
-                                  ----
-print_cmd.c
-       - fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS
-         after call to make_command_string_internal before printing closing
-         `}'
-       - fix make_command_string_internal to add a call to
-         PRINT_DEFERRED_HEREDOCS after recursive call to
-         make_command_string_internal in case cm_subshell before printing
-         closing `)'
-
-                                  4/14
-                                  ----
-print_cmd.c
-       - change overlapping strcpy in named_function_string to memmove
-
-sig.h
-       - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just
-         restores an old signal mask
-
-trap.c
-       - set_signal: instead of setting the signal handler to SIG_IGN while
-         installing the new trap handler, block the signal and unblock it
-         after the new handler is installed.  Fixes bug reported by Roman
-         Rakus <rrakus@redhat.com>
-
-                                  4/15
-                                  ----
-doc/{bash.1,bashref.texi}
-       - make it clear that enabling monitor mode means that all jobs run in
-         separate process groups
-
-                                  4/18
-                                  ----
-builtins/fc.def
-       - update fix of 4/15/2010 to not take saved_command_line_count into
-         account when stepping down the history list to make sure that
-         last_hist indexes something that is valid.  Fixes bug reported by
-         <piuma@piumalab.org>
-
-                                  4/19
-                                  ----
-builtins/fc.def
-       - fc_gethnum: make sure the calculation to decide the last history
-         entry is exactly the same as fc_builtin.  Fixes bug uncovered by
-         fix of 4/18 to stop seg fault
-
-                                  4/22
-                                  ----
-lib/readline/terminal.c
-       - change _rl_enable_meta_key to set a flag indicating that it sent the
-         enable-meta sequence
-       - _rl_disable_meta_key: new function to turn off meta mode after we
-         turned it on with _rl_enable_meta_key
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_disable_meta_key
-
-configure.in
-       - if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited
-         from the environment.  Fixes HP/UX build problem reported by
-         "Daniel Richard G." <skunk@iSKUNK.ORG>
-
-                                  4/26
-                                  ----
-config-top.h
-       - define MULTIPLE_COPROCS to 0 so the code is still disabled but easy
-         to enable via configure option or editing this file
-
-                                  4/29
-                                  ----
-lib/sh/eaccess.c
-       - freebsd provides faccessat, with the same misfeature as their eaccess
-         and access implementations (X_OK returns true for uid==0 regardless
-         of the actual file permissions), so reorganize code to check the
-         file permissions as with eaccess.  Report and fix from Johan Hattne
-         <johan.hattne@utsouthwestern.edu>
-
-                                   5/2
-                                   ---
-doc/{bash.1,bashref.texi}
-       - add forward reference to `Pattern Matching' from `Pathname
-         Expansion', suggested by Greg Wooledge <wooledg@eeg.ccf.org>
-
-                                   5/5
-                                   ---
-pcomplib.c
-       - the bash_completion project now distributes over 200 completions
-         for various programs, with no end in sight, so increase the value
-         of COMPLETE_HASH_BUCKETS from 32 to 128
-
-pathexp.c
-       - quote_string_for_globbing: make sure CTLESC quoting CTLESC is
-         translated into \<CTLESC> even if the flags include QGLOB_REGEXP.
-         We don't want to process the second CTLESC as a quote character.
-         Fixes bug reported by Shawn Bohrer <sbohrer@rgmadvisors.com>
-
-                                   5/6
-                                   ---
-builtins/printf.def
-       - change PRETURN to not call fflush if ferror(stdout) is true
-       - if a call to one of the stdio functions or printstr leaves
-         ferror(stdout) true, and PRETURN is going to be called, let PRETURN
-         print the error message rather than doubling up the messages.  Fixes
-         problem reported by Roman Rakus <rrakus@redhat.com>
-
-                                   5/9
-                                   ---
-doc/{bash.1,bashref.texi}
-       - add note to the effect that lists inside compound command can be
-         terminated by newlines as well as semicolons.  Suggested by
-         Roman Byshko <rbyshko@gmail.com>
-
-                                  5/10
-                                  ----
-subst.c
-       - remove_quoted_nulls: fix problem that caused it to skip over the
-         character after a CTLNUL, which had the effect of skipping every
-         other of a series of CTLNULs.  Fixes bug reported by
-         Marten Wikstrom <marten.wikstrom@keystream.se>
-
-                                  5/11
-                                  ----
-subst.c
-       - extract_process_subst: add SX_COMMAND flag to call to
-         extract_delimited_string, since we're expanding the same sort of
-         command as command substitution.  Fixes bug reported in Ubuntu
-         bug 779848
-
-                                  5/12
-                                  ----
-configure.in
-       - set the prefer_shared and prefer_static variables appropriately
-         depending on the value of $opt_static_link
-
-aclocal.m4
-       - AC_LIB_LINKFLAGS_BODY: change to not prefer shared versions of the
-         libraries it's searching for if the prefer_shared variable is "no".
-         Fixes problem reported by Cedric Arbogast <arbogast.cedric@gmail.com>
-
-                                  5/13
-                                  ----
-lib/readline/readline.c
-       - _rl_internal_teardown: add call to _rl_disable_meta_key to make the
-         meta key active only for the duration of the call to readline()
-       - _rl_internal_setup: move call to _rl_enable_meta_key here from
-         readline_initialize_everything so the meta key is active only for
-         the duration of the call to readline().  Suggestion from Miroslav
-         Lichvar <mlichvar@redhat.com>
-
-builtins/help.def
-       - help_builtin: change strncmp to strcmp so that `help read' no longer
-         matches `readonly'.  Suggested by Clark Wang <dearvoid@gmail.com>
-
-config.h.in
-       - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests
-         for libintl
-
-lib/malloc/malloc.c
-       - internal_free: don't use the cached value of memtop when deciding
-         whether or not to adjust the break and give memory back to the kernel
-         when using the GNU C library, since glibc uses sbrk for its own
-         internal purposes.  From Debian bug 614815, reported by Samuel
-         Thibault <samuel.thibault@gnu.org>
-
-aclocal.m4
-       - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN
-         to avoid warning about not using AC_LANG_SOURCE
-
-                                  5/14
-                                  ----
-bashline.[ch]
-       - two new functions, bashline_set_event_hook and bashline_reset_event_hook,
-         to set rl_event_hook to bash_event_hook and back to NULL, respectively
-       - don't set rl_event_hook unconditionally
-
-sig.c
-       - termsig_sighandler: if the shell is currently interactive and
-         readline is active, call bashline_set_event_hook to cause
-         termsig_handler to be called via bash_event_hook when the shell
-         returns from the signal handler
-
-                                  5/15
-                                  ----
-lib/readline/display.c
-       - _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0
-         for UTF-8 combining characters.  Added workaround dependent on
-         MACOSX.  Fixes problem pointed out by Thomas De Contes
-         <d.l.tDecontes@free.fr>
-
-                                  5/16
-                                  ----
-lib/readline/rlmbutil.h
-       - WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining
-         characters on systems where wcwidth is broken (e.g., Mac OS X).
-
-lib/readline/{complete,display,mbutil}.c
-       - use WCWIDTH instead of wcwidth
-
-                                  5/17
-                                  ----
-lib/readline/display.c
-       - update_line: after computing ofd and nfd, see whether the next
-         character in ofd is a zero-width combining character.  If it is,
-         back ofd and nfd up one, so the base characters no longer compare
-         as equivalent.  Fixes problem reported by Keith Winstein
-         <keithw@mit.edu>
-
-lib/readline/nls.c
-       - _rl_utf8locale: new flag variable, set to non-zero if the current
-         locale is UTF-8
-       - utf8locale(): new function, returns 1 if the passed lspec (or the
-         current locale) indicates that the locale is UTF-8.  Called from
-         _rl_init_eightbit
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_utf8locale
-
-locale.c
-       - locale_utf8locale: new flag variable, set to non-zero if the current
-         locale is UTF-8 (currently unused)
-       - locale_isutf8(): new function, returns 1 if the passed lspec (or the
-         current locale) indicates that the locale is UTF-8.  Should be called
-         whenever the locale or LC_CTYPE value is modified
-
-aclocal.m4
-       - BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns
-         zero-width characters like unicode combining characters as having
-         display length 1; define WCWIDTH_BROKEN in this case
-
-config.h.in
-       - WCWIDTH_BROKEN: new define
-
-lib/readline/rlmbutil.h
-       - change WCWIDTH macro to use _rl_utf8locale and the full range of
-         Unicode combining characters (U+0300-U+036F)
-
-                                  5/19
-                                  ----
-lib/readline/rlprivate.h
-       - _rl_search_context: new member, prevc, will hold character read
-         prior to lastc
-
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: if the character causes us to index into
-         another keymap, save that character in cxt->prevc
-       - _rl_isearch_dispatch: if we index into another keymap, but don't
-         find a function that's special to i-search, and the character that
-         caused us to index into that keymap would have terminated the
-         search, push back cxt->prevc and cxt->lastc to make it appear as
-         if `prevc' terminated the search, and execute lastc as a command.
-         We have to push prevc back so we index into the same keymap before
-         we read lastc.  Fixes bug report from Davor Cubranic
-         <cubranic@stat.ubc.ca>
-
-                                  5/20
-                                  ----
-expr.c
-       - expr_bind_variable: pay attention to the return value from
-         bind_variable and check whether or not we should error out due to
-         a readonly or noassign variable.  Fixes bug reported by Eric
-         Blake <eblake@redhat.com>
-
-                                  5/26
-                                  ----
-
-lib/readline/search.c
-       - include histlib.h for ANCHORED_SEARCH defines
-       - rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for
-         the duration of a history search
-       - rl_history_search_reinit: takes a new flags variable, defines whether
-         or not the search is anchored; assigned to rl_history_search_flags
-       - rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to
-         beginning of search string; otherwise search string is unmodified
-       - rl_history_search_internal: set rl_point appropriately based on
-         whether or not rl_history_search_flags includes ANCHORED_SEARCH
-       - rl_history_substr_search_forward: new function, for non-anchored
-         substring search forward through history for string of characters
-         preceding rl_point
-       - rl_history_substr_search_backward: new function, for non-anchored
-         substring search backward through history for string of characters
-         preceding rl_point.  Original code from Niraj Kulkarni
-         <kulkarniniraj14@gmail.com>
-
-lib/readline/readline.h
-       - extern declarations for rl_history_substr_search_{for,back}ward
-
-lib/readline/funmap.c
-       - history-substring-search-forward: new bindable command, invokes
-         rl_history_substr_search_forward
-       - history-substring-search-backward: new bindable command, invokes
-         rl_history_substr_search_backward
-
-lib/readline/doc/{rluser.texi,readline.3}
-       - document history-substring-search-forward and
-         history-substring-search-backward
-
-                                  5/27
-                                  ----
-{nojobs,jobs}.c
-       - add support for DONT_REPORT_SIGTERM so that the shell doesn't print
-         a message when a job exits due to SIGTERM since that's the default
-         signal sent by the kill builtin.  Suggested by Marc Herbert
-         <mark.herbert@gmail.com>
-
-config-top.h
-       - DONT_REPORT_SIGTERM: new user-modifiable setting.  Commented out
-         by default
-
-                                  5/28
-                                  ----
-lib/readline/bind.c
-       - _rl_skip_to_delim: skip to a closing double quote or other delimiter,
-         allowing backslash to quote any character, including the delimiter
-       - rl_parse_and_bind: call _rl_skip_to_delim instead of using inline
-         code
-       - rl_parse_and_bind: allow quoted strings as the values of string
-         variables.  Variable values without double quotes have trailing
-         whitespace removed (which still allows embedded whitespace, for
-         better or worse).  Fixes problem with string variables not matching
-         in `set' command if values happen to have trailing spaces or tabs
-         (debian bash bug #602762), but introduces slight incompatibility.
-
-                                  5/29
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarify unset description to specify that without options, a
-         variable, then a shell function if there is no variable by that
-         name, is unset.  Fixes discrepancy reported by Mu Qiao
-         <qiaomuf@gentoo.org>
-
-                                  6/4
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarify description of LINES and COLUMNS (and checkwinsize shopt
-         option) to make it clear that only interactive shells set a
-         handler for SIGWINCH and update LINES and COLUMNS.  Original
-         report submitted by Jonathan Nieder <jrnieder@gmail.com>
-
-arrayfunc.c
-       - expand_compound_array_assignment: defer expansion of words between
-         parens when performing compound assignmnt to an associative array
-         variable
-       - assign_compound_array_list: perform the same expansions when doing
-         a compound array assignment to an associative array variable as
-         when doing a straight array index assignment.  The idea is that
-               foo=( [ind1]=bar [ind2]=quux)
-         is the same as
-               foo[ind1]=bar ; foo[ind2]=quux
-
-         This fixes problems with double-expansion and quote removal being
-         performed on the array indices
-
-                                  6/13
-                                  ----
-doc/{bash.1,bashref.texi}
-       - Add a little text to make it clear that the locale determines how
-         range expressions in glob patterns are handled.
-
-
-                                  6/21
-                                  ----
-builtins/read.def
-       - display a message and return error status if -a is used with an
-         existing associative array.  Fixes bug reported by Curtis Doty
-         <curtis@greenkey.net>
-
-                                  6/24
-                                  ----
-{jobs,nojobs}.c
-       - non-interactive shells now react to the setting of checkwinsize
-         and set LINES and COLUMNS after a foreground job exits.  From a
-         suggestion by Leslie Rhorer <lrhorer@satx.rr.com>
-
-doc/{bash.1,bashref.texi}
-       - checkwinsize: remove language saying that only interactive shells
-         check the window size after each command
-
-lib/readline/histfile.c
-       - history_backupfile: new file, creates a backup history file name
-         given a filename (appending `-')
-       - history_do_write: when overwriting the history file, back it up
-         before writing.  Restore backup file on a write error.  Suggested
-         by chkno@chkno.net
-
-bashline.c
-       - find_cmd_name: two new arguments, return the start and end of the
-         actual text string used to find the command name, without taking
-         whitespace into account
-       - attempt_shell_completion: small changes to make sure that completion
-         attempted at the beginning of a non-empty line does not find a
-         programmable completion, even if the command name starts at point
-       - attempt_shell_completion: small change to make sure that completion
-         does not find a progcomp when in whitespace before the command
-         name
-       - attempt_shell_completion: small change to make sure that completion
-         does not find a progcomp when point is at the first character of a
-         command name, even when there is leading whitespace (similar to
-         above).  Fixes problems noted by Ville Skytta <ville.skytta@iki.fi>
-
-subst.c
-       - brace_expand_word_list: since the individual strings in the strvec
-         returned by brace_expand are already allocated, don't copy them to
-         newly-allocated memory when building the WORD_LIST, just use them
-         intact
-
-locale.c
-       - locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change
-         the locale to avoid a function call every time we need to read it
-
-shell.h
-       - new struct to save shell_input_line and associated variables:
-         shell_input_line_state_t
-       - add members of sh_parser_state_t to save and restore token and the
-         size of the token buffer
-
-parse.y
-       - {save,restore}_input_line_state: new functions to save and restore
-         shell_input_line and associated variables
-       - {save,restore}_parser_state: add code to save and restore the token
-         and token buffer size
-       - xparse_dolparen: call save_ and restore_input_line_state to avoid
-         problems with overwriting shell_input_line when we recursively
-         call the parser to parse a command substitution.  Fixes bug
-         reported by Rui Santos <rsantos@grupopie.com>
-
-include/shmbutil.h
-       - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and
-         similar macros
-
-lib/glob/smatch.c
-       - rangecmp,rangecmp_wc: change to take an additional argument, which
-         forces the use of strcoll/wscoll when non-zero.  If it's 0, a new
-         variable `glob_asciirange' controls whether or not we use strcoll/
-         wscoll.  If glob_asciirange is non-zero, we use straight
-         C-locale-like ordering. Suggested by  Aharon Robbins
-         <arnold@skeeve.com>
-
-                                  6/30
-                                  ----
-execute_cmd.c
-       - execute_pipeline: make sure the lastpipe code is protected by
-         #ifdef JOB_CONTROL.  Fixes problem reported by Thomas Cort
-         <tcort@minix3.org>
-
-                                   7/2
-                                   ---
-lib/readline/complete.c
-       - EXPERIMENTAL: remove setting of _rl_interrupt_immediately around
-         completion functions that touch the file system.  Idea from Jan
-         Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
-         team
-
-lib/readline/signals.c
-       - rl_signal_handler: if we're in callback mode, don't interrupt
-         immediately on a SIGWINCH
-
-                                   7/3
-                                   ---
-bashline.c
-       - set_directory_hook: and its siblings are a new set of functions to
-         set, save, and restore the appropriate directory completion hook
-       - change callers to use {set,save,restore}_directory_hook instead of
-         manipulating rl_directory_rewrite_hook directly
-       - dircomplete_expand: new variable, defaults to 0, if non-zero causes
-         directory names to be word-expanded during word and filename
-         completion
-       - change {set,save,restore}_directory_hook to look at dircomplete_expand
-         and change rl_directory_completion_hook or rl_directory_rewrite_hook
-         appropriately
-
-bashline.h
-       - extern declaration for set_directory_hook so shopt code can use it
-
-                                   7/6
-                                   ---
-builtins/shopt.def
-       - globasciiranges: new settable shopt option, makes glob ranges act
-         as if in the C locale (so b no longer comes between A and B).
-         Suggested by Aharon Robbins <arnold@skeeve.com>
-
-                                   7/7
-                                   ---
-doc/{bash.1,bashref.texi}
-       - document new `globasciiranges' shopt option
-
-                                   7/8
-                                   ---
-builtins/shopt.def
-       - direxpand: new settable option, makes filename completion expand
-         variables in directory names like bash-4.1 did.
-       - shopt_set_complete_direxpand: new function, does the work for the
-         above by calling set_directory_hook
-
-doc/{bash.1,bashref.texi}
-       - document new `direxpand' shopt option
-
-                                  7/15
-                                  ----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: when adding character to search string, use
-         cxt->lastc (which we use in the switch statement) instead of c,
-         since lastc can be modified earlier in the function
-
-                                  7/18
-                                  ----
-lib/readline/rlprivate.h
-       - _rl_search_context: add another member to save previous value of
-         (multibyte) lastc: pmb is to mb as prevc is to lastc
-
-lib/readline/isearch.c:
-       - _rl_isearch_dispatch: if a key sequence indexes into a new keymap,
-         but doesn't find any bound function (k[ind].function == 0) or is
-         bound to self-insert (k[ind].function == rl_insert), back up and
-         insert the previous character (the one that caused the index into a
-         new keymap) and arrange things so the current character is the next
-         one read, so both of them end up in the search string.  Fixes bug
-         reported by Clark Wang <dearvoid@gmail.com>
-       - _rl_isearch_dispatch: a couple of efficiency improvements when adding
-         characters to the isearch string
-
-                                  7/24
-                                  ----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb
-         appropriately when in a multibyte locale
-
-doc/{bash.1,bashref.texi}
-       - correct description of {x}>file (and other redirection operators
-         that allocate a file descriptor) to note the the fd range is
-         greater than or equal to 10.  Fixes problem reported by
-         Christian Ullrich 
-
-lib/readline/signals.c
-       - rl_signal_handler: don't interrupt immediately if in callback mode
-
-lib/readline/callback.c
-       - rl_callback_read_char: install signal handlers only when readline
-         has control in callback mode, so readline's signal handlers aren't
-         called when the application is active (e.g., between the calls to
-         rl_callback_handler_install and rl_callback_read_char).  If the
-         readline signal handlers only set a flag, which the application
-         doesn't know about, the signals will effectively be ignored until
-         the next time the application calls into the readline callback
-         interface.  Fixes problem of calling unsafe functions from signal
-         handlers when in callback mode reported by Jan Kratochvil
-         <jan.kratochvil@redhat.com>
-
-execute_cmd.c
-       - fix_assignment_words: when in Posix mode, the `command' builtin
-         doesn't change whether or not the command name it protects is an
-         assignment builtin.  One or more instances of `command'
-         preceding `export', for instance, doesn't make `export' treat its
-         assignment statement arguments differently.  Posix interpretation
-         #351
-
-doc/{bash.1,bashref.texi}
-       - document new Posix-mode behavior of `command' when preceding builtins
-         that take assignment statements as arguments
-
-builtins/printf.def
-       - printstr: if fieldwidth or precision are < 0 or > INT_MAX when
-         supplied explicitly (since we take care of the `-' separately),
-         clamp at INT_MAX like when using getint().  Fixes issue reported
-         by Ralph Coredroy <ralph@inputplus.co.uk>
-
-                                  7/25
-                                  ----
-lib/readline/chardefs.h
-       - isxdigit: don't define if compiling with c++; declared as a c++
-         template function.  Fixes bug reported by Miroslav Lichvar
-         <mlichvar@redhat.com>
-
-builtins/printf.def
-       - getint: if garglist == 0, return whatever getintmax returns (0).
-         Fixes bug reported  by Ralph Coredroy <ralph@inputplus.co.uk>
-
-                                  7/28
-                                  ----
-doc/{bash.1,bashref.texi}
-       - minor changes to the descriptions of the cd and pushd builtins
-
-lib/sh/zread.c
-       - zsyncfd: change variable holding return value from lseek to
-         off_t.  Bug report and fix from Gregory Margo <gmargo@pacbell.net>
-
-                                   8/1
-                                   ---
-expr.c
-       - don't check for division by 0 when in a context where no evaluation
-         is taking place.  Fixes bug reported by dnade.ext@orange-ftgroup.com
-
-                                   8/6
-                                   ---
-execute_cmd.c
-       - execute_command_internal: the parent branch of the subshell code
-         (where the child calls execute_in_subshell) should not close all
-         open FIFOs with unlink_fifo_list if it's part of a shell function
-         that's still executing.  Fixes bug reported by Maarten Billemont
-         <lhunath@lyndir.com>
-
-                                   8/9
-                                   ---
-builtins/common.c
-       - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument
-
-builtins/return.def
-       - return_builtin: just call get_exitstat to get the return status,
-         let it handle proper parsing and handling of arguments.  Fixes
-         issue most recently raised by Linda Walsh <bash@tlinx.org>.
-         Reverses change from 9/11/2008 (see above)
-
-                                  8/16
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clean up `set -e' language to make it clearer that any failure of
-         a compound command will cause the shell to exit, not just subshells
-         and brace commands
-
-                                  8/17
-                                  ----
-configure.in
-       - make the various XXX_FOR_BUILD variables `precious' to autoconf to
-         avoid stale data
-       - change how CC_FOR_BUILD is initialized when cross-compiling and not,
-         but do not change behavior
-       - initialize CFLAGS_FOR_BUILD to -g when cross-compiling
-       - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty
-         when cross-compiling
-       - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when
-         CFLAGS not inherited from environment (like effect of old
-         auto_cflags variable)
-       - substitute LIBS_FOR_BUILD into output Makefiles
-         [changes inspired by bug report from Nathan Phillip Brink
-         <ohnobinki@ohnopublishing.net> -- gentoo bug 378941]
-
-builtins/Makefile.in   
-       - substitute LIBS_FOR_BUILD from configure, not strictly initialized
-         to $(LIBS)
-
-                                  8/27
-                                  ----
-doc/{bash.1,bashref.texi}
-       - minor changes to the here string description to clarify the
-         expansions performed on the word
-
-support/shobj-conf
-       - handle compilation on Lion (Mac OS X 10.7/darwin11) with changes
-         to darwin stanzas.  Fixes readline bug reported by Vincent
-         Sheffer <vince.sheffer@apisphere.com>
-
-lib/sh/strtrans.c
-       - ansic_wshouldquote: check a string with multi-byte characters for
-         characters that needs to be backslash-octal escaped for $'...'
-       - ansic_shouldquote: if is_basic fails for one character, let
-         ansic_wshouldquote examine the rest of the string and return what
-         it returns.  From a patch sent by Roman Rakus <rrakus@redhat.com>
-
-                                  8/30
-                                  ----
-lib/sh/strtrans.c
-       - ansic_quote: changes to quote (or not) multibyte characters.  New
-         code converts them to wide characters and uses iswprint to check
-         valid wide chars.  From a patch sent by Roman Rakus
-         <rrakus@redhat.com>
-
-                                   9/7
-                                   ---
-lib/sh/shquote.c
-       - sh_backslash_quote: change to be table-driven so we can use a
-         different table if we want to
-       - sh_backslash_quote: takes a second char table[256] argument;
-
-externs.h
-       - sh_backslash_quote: add second argument to function prototype
-
-bashline.c,braces.c,parse.y,builtins/printf.def
-       - change callers of sh_backslash_quote to add second argument
-
-bashline.c
-       - filename_bstab: table of characters to pass to sh_backslash_quote;
-         characters with value 1 will be backslash-quoted
-       - set_filename_bstab: turn on characters in filename backslash-quote
-         table according to passed string argument
-       - call set_filename_bstab every time rl_filename_quote_characters is
-         assigned a value
-       - bash_quote_filename: call sh_backslash_quote with filename_bstab
-         as second argument.  This allows other characters in filenames to
-         be quoted without quoting, for instance, a dollar sign in a shell
-         variable reference
-
-                                   9/8
-                                   ---
-bashline.c
-       - complete_fullquote: new variable, controls table passed to
-         sh_backslash_quote.  If non-zero (the default), the standard set
-         of shell metacharacters -- as in bash versions up to and including
-         bash-4.2 -- gets backslash-quoted by the completion code.  If zero,
-         sh_backslash_quote gets the table with the characters in the
-         variable reference removed, which means they are removed from the
-         set of characters to be quoted in filenames
-
-                                  9/10
-                                  ----
-bashline.c
-       - bash_filename_stat_hook: new function, designed to expand variable
-         references in filenames before readline passes them to stat(2)
-         to determine whether or not they are a directory
-
-                                  9/15
-                                  ----
-builtins/declare.def
-       - if assign_array_element fails due to a bad (or empty) subscript, mark
-         it as an assignment error and don't attempt any further processing
-         of that declaration.  Fixes segfault bug reported by Diego Augusto
-         Molina <diegoaugustomolina@gmail.com>
-
-                                  9/19
-                                  ----
-expr.c
-       - exppower: replace the simple exponentiation algorithm with an
-         implementation of exponentiation by squaring.  Inspired by report
-         from Nicolas ARGYROU <nargy@yahoo.com>
-
-bashline.c
-       - bash_quote_filename: check for rtext being non-null before
-         dereferencing it
-       - set_saved_history: operate_and_get_next assumes that the previous
-         line was added to the history, even when the history is stifled and
-         at the max number of entries.  If it wasn't, make sure the history
-         number is incremented properly.  Partial fix for bug reported by
-         gregrwm <backuppc-users@whitleymott.net>
-
-doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi
-       - minor editorial changes inspired by suggestions from
-         Roger Zauner <rogerx.oss@gmail.com>
-
-                                  9/20
-                                  ----
-lib/intl/localealias.c
-       - read_alias_file: close resource leak (fp) when returning on error
-
-                                  9/22
-                                  ----
-execute_command.c
-       - execute_intern_function: implement Posix interpretation 383 by making
-         it an error to define a function with the same name as a special
-         builtin when in Posix mode.
-         http://austingroupbugs.net/view.php?id=383#c692
-
-                                  9/25
-                                  ----
-doc/{bash.1,bashref.texi}
-       - formatting and some content changes from Benno Schulenberg
-         <bensberg@justemail.net>
-       - document new posix-mode behavior from interp 383 change of 9/22
-
-                                  9/30
-                                  ----
-execute_cmd.c
-       - shell_execve: add strerror to error message about executable file
-         that shell can't execute as a shell script.  From suggestion by
-         daysleeper <daysleeper@centrum.cz>
-
-                                  10/1
-                                  ----
-bashhist.c
-       - maybe_add_history: act as if literal_history is set when parser_state
-         includes PST_HEREDOC, so we save the bodies of here-documents just
-         as they were entered.  Fixes bug reported by Jonathan Wakely
-         <bugs@kayari.org>
-       - bash_add_history: make sure that the second and subsequent lines of
-         a here document don't have extra newlines or other delimiting
-         chars added, since they have the trailing newline preserved, when
-         `lithist' is set and history_delimiting_chars isn't called
-
-execute_cmd.c
-       - execute_command_internal: avoid fd exhaustion caused by using
-         process substitution in loops inside shell functions by using
-         copy_fifo_list and close_new_fifos ().  Fixes debian bash bug
-         642504
-
-lib/readline/complete.c
-       - new variable, rl_filename_stat_hook, used by append_to_match.  If
-         filename completion is desired, and rl_filename_stat_hook points
-         to a function, call that function to expand the filename in an
-         application-specific way before calling stat.
-
-bashline.c
-       - bash_default_completion: if variable completion returns a single
-         match, use bash_filename_stat_hook and file_isdir to determine
-         whether or not the variable name expands to a directory.  If it
-         does, set the filename_append_character to `/'.  This is not
-         perfect, so we will see how it works out.  Adds functionality
-         requested by Peter Toft <pto@linuxbog.dk> and Patrick Pfeifer
-         <patrick@pfeifer.de>
-       - rl_filename_stat_hook: assigned bash_filename_stat_hook, so things
-         like $HOME/Downloads (after completion) have a slash appended.
-         In general, this causes the stat hook to be called whenever
-         filename completion is appended.  Adds functionality requested by
-         Patrick Pfeifer <patrick@pfeifer.de>
-
-lib/readline/readline.h
-       - new extern declaration for rl_filename_stat_hook
-
-lib/readline/doc/rltech.texi
-       - rl_directory_rewrite_hook: now documented
-       - rl_filename_stat_hook: document
-
-pcomplete.c
-       - gen_action_completions: in the CA_DIRECTORY case, turn off
-         rl_filename_completion_desired if it was off before we called
-         rl_filename_completion_function and we didn't get any matches.
-         Having it on causes readline to quote the matches as if they
-         were filenames.  Adds functionality requested by many,
-         including Clark Wang <dearvoid@gmail.com>
-
-assoc.[ch]
-       - assoc_replace: new function, takes the same arguments as
-         assoc_insert, but returns the old data instead of freeing it
-       - assoc_insert: if the object returned by hash_insert doesn't have
-         the same value for its key as the key passed as an argument, we
-         are overwriting an existing value.  In this case, we can free the
-         key.  Fixes bug reported by David Parks <davidparks21@yahoo.com>
-
-                                  10/5
-                                  ----
-print_cmd.c
-       - indirection_level_string: small change to only re-enable `x'
-         option after calling decode_prompt_string if it was on before.  In
-         normal mode, it will be, but John Reiser <jreiser@bitwagon.com>
-         has a novel use for that code in conjunction with a pre-loaded
-         shared library that traces system call usage in shell scripts
-
-                                  10/10
-                                  -----
-Makefile.in
-       - Fix from Mike Frysinger <vapier@gentoo.org> to avoid trying to
-         build y.tab.c and y.tab.h with two separate runs of yacc if
-         parse.y changes.  Problem with parallel makes
-       - Fix from Mike Frysinger <vapier@gentoo.org> to avoid subdirectory
-         builds each trying to make version.h (and all its dependencies)
-
-lib/sh/Makefile.in
-       - remove some dependencies on version.h where it doesn't make sense
-
-variables.c
-       - initialize_shell_variables: while reading the environment, a shell
-         running in posix mode now checks for SHELLOPTS being readonly (it
-         gets set early on in main()) before trying to assign to it.  It
-         saves an error message and the variable gets parsed as it should.
-         Fixes bug reported by Len Giambrone <Len.Giambrone@intersystems.com>
-
-                                  10/14
-                                  -----
-doc/{bash.1,bashref.texi}
-       - add to the "duplicating file descriptors" description that >&word
-         doesn't redirect stdout and stderr if word expands to `-'
-       - add to the "appending standard output and standard error"
-         description a note that >&word, where word is a number or `-',
-         causes other redirection operators to apply for sh and Posix
-         compatibility reasons.  Suggested by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-
-                                  10/15
-                                  -----
-pcomplete.c
-       - change pcomp_filename_completion_function to only run the filename
-         dequoting function in the cases (as best as it can figure) where
-         readline won't do it via rl_filename_completion_function.  Based
-         on reports from <lolilolicon@gmail.com>
-
-                                  10/19
-                                  -----
-bashline.c
-       - attempt_shell_completion: add call to set_directory_hook() to make
-         sure the rewrite functions are correct.  It's cheap and doesn't
-         hurt
-       - command_word_completion_function: if completing a command name that
-         starts with `.' or `..', temporarily suppress the effects of the
-         `direxpand' option and restore the correct value after calling
-         rl_filename_completion_function.  If it's enabled, the directory
-         name will be rewritten and no longer match `./' or `../'.  Fixes
-         problem reported by Michael Kalisz <michael@kalisz.homelinux.net>
-
-                                  10/22
-                                  -----
-builtins/history.def
-       - push_history: make sure remember_on_history is enabled before we
-         try to delete the last history entry -- the `history -s' command
-         might not have been saved.  Fixes bug reported by
-         lester@vmw-les.eng.vmware.com
-
-lib/readline/complete.c
-       - rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN
-         instead of straight return; add same call at end of function.
-         Placeholder for future work in deinstalling signal handlers when
-         readline is not active
-
-                                  10/25
-                                  -----
-expr.c
-       - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1
-         for DIV and MOD and avoid SIGFPE.  Bug report and pointer to fix
-         from Jaak Ristioja <jaak.ristioja@cyber.ee>
-       - expassign: same changes for arithmetic overflow for DIV and MOD
-
-                                  10/28
-                                  -----
-subst.c
-       - parameter_brace_expand: allow pattern substitution when there is an
-         expansion of the form ${var/} as a no-op: replacing nothing with
-         nothing
-       - parameter_brace_patsub: don't need to check for PATSUB being NULL;
-         it never is
-
-flags.c
-       - if STRICT_POSIX is defined, initialize history_expansion to 0, since
-         history expansion (and its treatment of ! within double quotes) is
-         not a conforming posix environment.  From austin-group issue 500
-
-lib/readline/histexpand.c
-       - history_expand: when processing a string within double quotes
-         (DQUOTE == 1), make the closing double quote inhibit history
-         expansion, as if the word were outside double quotes.  In effect,
-         we assume that the double quote is followed by a character in
-         history_no_expand_chars.  tcsh and csh seem to do this.  This
-         answers a persistent complaint about history expansion
-
-                                  10/29
-                                  -----
-make_cmd.c
-       - make_arith_for_command: use skip_to_delim to find the next `;'
-         when breaking the string between the double parens into three
-         separate components instead of a simple character loop.  Fixes
-         bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  11/2
-                                  ----
-Makefile.in
-       - make libbuiltins.a depend on builtext.h to serialize its creation
-         and avoid conflict between multiple invocations of mkbuiltins.
-         Fix from Mike Frysinger <vapier@gentoo.org>
-
-                                  11/5
-                                  ----
-findcmd.c
-       - user_command_matches: if stat(".", ...) returns -1, set st_dev
-         and st_ino fields in dotinfo to 0 to avoid same_file matches
-       - find_user_command_in_path: check stat(2) return the same way
-
-lib/glob/glob.c
-       - glob_vector: don't call strlen(pat) without checking pat == 0
-       - glob_dir_to_array: make sure to free `result' and all allocated
-         members before returning error due to malloc failure
-       - glob_vector: make sure to free `nextname' and `npat' on errors
-         (mostly when setting lose = 1)
-       - glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make
-         sure we free `subdir'
-       - glob_filename: when expanding ** (GX_ALLDIRS), make sure we
-         free temp_results (return value from glob_vector)
-
-lib/glob/xmbsrtowcs.c
-       - xdupmbstowcs: fix call to realloc to use sizeof (char *) instead
-         of sizeof (char **) when assigning idxtmp
-
-execute_cmd.c
-       - print_index_and_element: return 0 right away if L == 0
-       - is_dirname: fix memory leak by freeing `temp'
-       - time_command: don't try to deref NULL `command' when assigning
-         to `posix_time'
-       - shell_execve: null-terminate `sample' after READ_SAMPLE_BUF so it's
-         terminated for functions that expect that
-
-builtins/read.def
-       - read_builtin: don't call bind_read_variable with a potentially-null
-         string
-
-pcomplete.c
-       - gen_command_matches: don't call dispose_word_desc with a NULL arg
-       - gen_compspec_completions: fix memory leak by freeing `ret' before
-         calling gen_action_completions (tcs, ...).  happens when
-         performing directory completion as default and no completions
-         have been generated
-       - gen_progcomp_completions: make sure to set foundp to 0 whenever
-         returning NULL
-       - it_init_aliases: fix memory leak by freeing alias_list before
-         returning
-
-bashline.c
-       - command_word_completion_function: don't call restore_tilde with a
-         NULL directory_part argument
-       - bash_directory_expansion: bugfix: don't throw away results of
-         rl_directory_rewrite_hook if it's set and returns non-zero
-       - bind_keyseq_to_unix_command: free `kseq' before returning error
-
-arrayfunc.c
-       - assign_array_element_internal: make sure `akey' is freed if non-null
-         before returning error
-       - assign_compound_array_list: free `akey' before returning error
-       - array_value_internal: free `akey' before returning error
-       - unbind_array_element: free `akey' before returning error
-
-subst.c
-       - array_length_reference: free `akey' before returning error in case
-         of expand_assignment_string_to_string error
-       - array_length_reference: free `akey' after call to assoc_reference
-       - skip_to_delim: if skipping process and command substitution, free
-         return value from extract_process_subst
-       - parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before
-         returning if verify_substring_values fails
-       - parameter_brace_expand: remove two duplicate lines that allocate
-         ret in parameter_brace_substring case
-       - parameter_brace_expand: convert `free (name); name = xmalloc (...)'
-         to use `xrealloc (name, ...)'
-       - parameter_brace_expand: free `name' before returning when handling
-         ${!PREFIX*} expansion
-       - split_at_delims: fix memory leak by freeing `d2' before returning
-
-redir.c
-       - redirection_error: free `filename' if the redirection operator is
-         REDIR_VARASSIGN by assigning allocname
-
-eval.c
-       - send_pwd_to_eterm: fix memory leak by freeing value returned by
-         get_working_directory()
-
-builtins/cd.def
-       - change_to_directory: fix memory leak by freeing return value from
-         resetpwd()
-       - cd_builtin: fix memory leak by freeing value returned by dirspell()
-       - cd_builtin: fix memory leak by freeing `directory' if appropriate
-         before overwriting with return value from resetpwd()
-
-builtins/type.def
-       - describe_command: free `full_path' before overwriting it with return
-         value from sh_makepath
-
-builtins/complete.def
-       - compgen_builtin: fix memory leak by calling strlist_dispose (sl)
-         before overwriting sl with return value from completions_to_stringlist
-
-builtins/hash.def
-       - list_hashed_filename_targets: fix memory leak by freeing `target'
-
-make_cmd.c
-       - make_arith_for_command: free `init', `test', and `step' before
-         returning error on parse error
-
-jobs.c
-       - initialize_job_control: don't call move_to_high_fd if shell_tty == -1
-
-general.c
-       - check_dev_tty: don't call close with an fd < 0
-       - legal_number: deal with NULL `string' argument, return invalid
-
-lib/sh/fmtulong.c
-       - fmtulong: if the `base' argument is invalid, make sure we index
-         buf by `len-1' at maximum
-
-print_cmd.c
-       - print_deferred_heredocs: don't try to dereference a NULL `cstring'
-       - cprintf: make sure to call va_end (args)
-
-variables.c
-       - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *)
-         instead of sizeof (WORD_LIST **)
-
-lib/sh/zmapfd.c
-       - zmapfd: if read returns error, free result and return -1 immediately
-         instead of trying to reallocate it
-
-                                  11/6
-                                  ----
-execute_cmd.c
-       - cpl_reap: rewrote to avoid using pointer after freeing it; now builds
-         new coproc list on the fly while traversing the old one and sets the
-         right values for coproc_list when done
-
-                                  11/12
-                                  -----
-builtins/set.def
-       - if neither -f nor -v supplied, don't allow a readonly function to
-         be implicitly unset.  Fixes bug reported by Jens Schmidt
-         <jens.schmidt35@arcor.de>
-
-lib/readline/callback.c
-       - change CALLBACK_READ_RETURN to clear signal handlers before returning
-         from rl_callback_read_char so readline's signal handlers aren't
-         installed when readline doesn't have control.  Idea from Jan
-         Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
-         team
-
-pcomplete.h
-       - COPT_NOQUOTE: new complete/compgen option value
-
-builtins/complete.def
-       - noquote: new complete/compgen option; will be used to disable
-         filename completion quoting
-
-pcomplete.c
-       - pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns
-         of rl_filename_quoting_desired if set; turns it on if unset (value
-         is inverted, since default is on)
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - document new -o noquote option to complete/compgen/compopt
-
-pathexp.c
-       - quote_string_for_globbing: if QGLOB_REGEXP, make sure characters
-         between brackets in an ERE bracket expression are not inappropriately
-         quoted with backslashes.  This is a pretty substantial change,
-         should be stressed when opening bash up for alpha and beta tests.
-         Fixes bug pointed out by Stephane Chazleas
-         <stephane_chazelas@yahoo.fr>
-
-doc/{bash.1,bashref.texi}
-       - document that regexp matches can be inconsistent when quoting
-         characters in bracket expressions, since usual quoting characters
-         lose their meaning within brackets
-       - note that regular expression matching when the pattern is stored
-         in a shell variable which is quoted for expansion causes string
-         matching
-
-redir.h
-       - RX_SAVEFD: new flag value; notes that a redirection denotes an
-         fd used to save another even if it's not >= SHELL_FD_BASE
-
-redir.c
-       - do_redirection_internal: when deciding whether or not to reset the
-         close-on-exec flag on a restored file descriptor, trust the value
-         of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE
-         if the RX_SAVEFD flag is set
-       - add_undo_redirect: set the RX_SAVEFD flag if the file descriptor
-         limit is such that the shell can't duplicate to a file descriptor
-         >= 10.  Fixes a limitation that tripped a coreutils test reported
-         by Paul Eggert <eggert@cs.ucla.edu>
-
-                                  11/19
-                                  -----
-doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi
-       - make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading
-         the startup files
-       - make it clear that bash runs HISTSIZE=500 after reading the
-         startup files
-       - make it clear that setting HISTSIZE=0 causes commands to not be
-         saved in the history list
-       - make it clear that setting HISTFILESIZE=0 causes the history file
-         to be truncated to zero size
-
-variables.c
-       - sv_histsize: change so setting HISTSIZE to a value less than 0
-         causes the history to be `unstifled'
-       - sv_histsize: change so setting HISTFILESIZE to a value less than 0
-         results in no file truncation
-       - make it clear that numeric values less than 0 for HISTFILESIZE or
-         HISTSIZE inhibit the usual functions
-
-                                  11/23
-                                  -----
-parse.y
-       - save_input_line_state: add missing `return ls' at the end, since the
-         function is supposed to return its argument.  Pointed out by
-         Andreas Schwab <schwab@linux-m68k.org>
-
-builtins/read.def
-       - skip over NUL bytes in input, as most modern shells seem to.  Bug
-         report by Matthew Story <matt@tablethotels.com>
-
-lib/readline/vi_mode.c
-       - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key
-
-                                  11/25
-                                  -----
-builtins/read.def
-       - read_builtin: if xrealloc returns same pointer as first argument,
-         don't bother with the remove_unwind_protect/add_unwind_protect pair
-       - read_builtin: set a flag (`reading') around calls to zread/zreadc
-         and readline()
-       - sigalrm: change to set flag (`sigalrm_seen') and only longjmp if
-         currently in read(2) (reading != 0)
-       - CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero,
-         behavior of old SIGALRM catching function
-       - read_builtin: call CHECK_ALRM in appropriate places while reading
-         line of input.  Fixes bug reported by Pierre Gaston
-         <pierre.gaston@gmail.com>
-
-lib/readline/vi_mode.c
-       - rl_vi_replace: initialize characters before printing characters in
-         vi_replace_keymap to their default values in vi_insertion_keymap,
-         since we're supposed to be in insert mode replacing characters
-       - rl_vi_replace: call rl_vi_start_inserting to set last command to
-         `R' for undo
-       - rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future
-         use by _rl_vi_done_inserting
-       - vi_save_insert_buffer: new function, broke out code that copies text
-         into vi_insert_buffer from _rl_vi_save_insert
-       - _rl_vi_save_replace: new function, saves text modified by
-         rl_vi_replace (using current point and vi_replace_count to figure
-         it out) to vi_replace_buffer
-       - _rl_vi_save_insert: call vi_save_insert_buffer
-       - _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call
-         _rl_vi_save_replace to save text modified in replace mode (uses
-         vi_save_insert_buffer)
-       - _rl_vi_replace_insert: new function, replaces the number of chars
-         in vi_insert_buffer after rl_point with contents ov vi_insert_buffer
-       - rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and
-         there's something in vi_insert_buffer.  Fixes bug with `.' not
-         redoing the most recent `R' command, reported by Geoff Clare
-         <g.clare@opengroup.org> in readline area on savannah
-
-                                  11/26
-                                  -----
-lib/readline/rlprivate.h
-       - RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal
-         to be handled
-       - RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending
-         SIGINT to be handled
-
-lib/readline/complete.c
-       - remove all mention of _rl_interrupt_immediately
-       - rl_completion_matches: check RL_SIG_RECEIVED after each call to
-         the entry function, call RL_CHECK_SIGNALS if true to handle the
-         signal
-       - rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free
-         and zero out the match_list this function allocated
-       - rl_completion_matches: if the completion entry function is
-         rl_filename_completion_function, free the contents of match_list,
-         because that function does not keep state and will not free the
-         entries; avoids possible memory leak pointed out by
-         Garrett Cooper <yanegomi@gmail.com>
-       - gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after
-         calling rl_attempted_completion_function, free the returned match
-         list and handle the signal with RL_CHECK_SIGNALS; avoids
-         possible memory leak pointed out by Garrett Cooper
-         <yanegomi@gmail.com>
-       - gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after
-         calling rl_completion_matches, free the returned match list and
-         handle the signal with RL_CHECK_SIGNALS
-
-lib/readline/util.c
-       - rl_settracefp: new utility function to set the tracing FILE *
-
-lib/readline/signals.c
-       - _rl_sigcleanup: pointer to a function that will be called with the
-         signal and a void * argument from _rl_handle_signal
-       - _rl_sigcleanarg: void * that the rest of the code can set to have
-         passed to the signal cleanup function
-       - _rl_handle_signal: if _rl_sigcleanup set, call as
-               (*_rl_sigcleanup) (sig, _rl_sigcleanarg)
-
-lib/readline/rlprivate.h
-       - extern declarations for _rl_sigcleanup and _rl_sigcleanarg
-
-lib/readline/complete.c
-       - _rl_complete_sigcleanup: signal cleanup function for completion code;
-         calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT
-       - rl_complete_internal: before calling display_matches if what_to_do
-         == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match
-         list gets freed on SIGINT; avoids possible memory leak pointed out
-         by Garrett Cooper <yanegomi@gmail.com>
-       - rl_complete_internal: in default switch case, call _rl_free_match_list
-         before returning to avoid memory leak
-
-doc/bashref.texi
-       - start at a set of examples for the =~ regular expression matching
-         operator, touching on keeping the pattern in a shell variable and
-         quoting portions of the pattern to remove their special meaning
-
-                                  12/1
-                                  ----
-lib/glob/gmisc.c
-       - extglob_pattern: new function, returns 1 if pattern passed as an
-         argument looks like an extended globbing pattern
-
-lib/glob/glob.c
-       - skipname: return 0 immediately if extglob_pattern returns non-zero,
-         let the extended globbing code do the right thing with skipping
-         names beginning with a `.'
-       - mbskipname: return 0 immediately if extglob_pattern returns non-zero,
-         let the extended globbing code do the right thing with skipping
-         names beginning with a `.'.  Fixes bug reported by Yongzhi Pan
-         <panyongzhi@gmail.com>
-
-                                  12/2
-                                  ----
-lib/glob/smatch.c
-       - patscan, patscan_wc: no longer static so other parts of the glob
-         library can use them, renamed to glob_patscan, glob_patscan_wc
-
-lib/glob/glob.c
-       - extern declarations for glob_patscan, glob_patscan_wc
-       - wchkname: new function, does skipname on wchar_t pattern and dname,
-         old body of mbskipname after converting to wide chars
-       - extglob_skipname: new function, checks all subpatterns in an extglob
-         pattern to determine whether or not a filename should be skipped.
-         Calls skipname for each subpattern.  Dname is only skipped if all
-         subpatterns indicate it should be.  Better fix for bug reported by
-         Yongzhi Pan <panyongzhi@gmail.com>
-       - wextglob_skipname: wide-char version of extglob_skipname, calls
-         wchkname instead of calling back into mbskipname for each
-         subpattern to avoid problems with char/wchar_t mismatch
-       - skipname: call extglob_skipname if extglob_pattern returns non-zero
-       - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero
-       - mbskipname: short-circuit immediately if no multibyte chars in
-         pattern or filename
-
-execute_cmd.c
-       - execute_cond_node: added parens to patmatch assignment statement to
-         make intent clearer
-
-                                  12/3
-                                  ----
-configure.in,config.h.in
-       - check for imaxdiv, define HAVE_IMAXDIV if present
-
-expr.c
-       - expassign, exp2: use imaxdiv if available.  Doesn't help with checks
-         for overflow from 10/25
-
-                                  12/6
-                                  ----
-lib/readline/complete.c
-       - compute_lcd_of_matches: if we're ignoring case in the matches, only
-         use what the user typed as the lcd if it matches the first match
-         (after sorting) up to the length of what was typed (if what the
-         user typed is longer than the shortest of the possible matches, use
-         the shortest common length of the matches instead).  If it doesn't
-         match, use the first of the list of matches, as if case were not
-         being ignored.  Fixes bug reported by Clark Wang
-         <dearvoid@gmail.com>
-
-                                  12/7
-                                  ----
-builtins/cd.def
-       - cd_builtin: add code to return error in case cd has more than one
-         non-option argument, conditional on CD_COMPLAINS define (which is
-         not defined anywhere)
-
-doc/{bash.1,bashref.texi}
-       - note that additional arguments to cd following the directory name
-         are ignored.  Suggested by Vaclav Hanzl <hanzl@noel.feld.cvut.cz>
-
-                                  12/10
-                                  -----
-lib/readline/input.c
-       - rl_read_key: don't need to increment key sequence length here; doing
-         it leads to an off-by-one error
-
-lib/readline/macro.c
-       - rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length
-         fixed, can decrement current_macro_index by rl_key_sequence_length
-         (length of key sequence that closes keyboard macro)
-
-lib/readline/readline.c
-       - _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length
-         when ESC maps to a new keymap and we're converting meta characters
-         to ESC+key
-       - _rl_dispatch_subseq: better increment of rl_key_sequence_length
-         before we dispatch to a function in the ISFUNC case (where the
-         second increment above should have happened)
-       - rl_executing_keyseq: the full key sequence that ended up executing
-         a readline command.  Available to the calling application, maintained
-         by _rl_dispatch_subseq, indexed by rl_key_sequence_length
-       - rl_executing_key: the key that was bound to the currently-executing
-         readline command.  Same as the `key' argument to the function
-
-lib/readline/readline.h
-       - rl_executing_keyseq: extern declaration
-       - rl_executing_key: extern declaration
-       - rl_key_sequence_length: declaration moved here from rlprivate.h,
-         now part of public interface
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_executing_keyseq_size, buffer size
-         for rl_executing_keyseq
-
-lib/readline/doc/rltech.texi
-       - documented new variables: rl_executing_key, rl_executing_keyseq,
-         rl_key_sequence_length
-
-                                  12/13
-                                  -----
-bashline.c
-       - bash_execute_unix_command: replace ad-hoc code that searches
-         cmd_xmap for correct command with call to rl_function_of_keyseq
-         using rl_executing_keyseq; now supports key sequences longer
-         than two characters.  Fixes bug reported by Michael Kazior
-         <kazikcz@gmail.com>
-
-                                  12/15
-                                  -----
-make_cmd.c
-       - make_function_def: don't null out source_file before calling
-         make_command so it can be used later on when the function definition
-         is executed
-
-execute_cmd.c
-       - execute_intern_function: second argument is now FUNCTION_DEF *
-         instead of COMMAND *
-       - execute_command_internal: call execute_intern_function with the
-         new second argument (the entire FUNCTION_DEF instead of just the
-         command member)
-       - execute_intern_function: if DEBUGGER is defined, call
-         bind_function_def before calling bind_function, just like
-         make_function_def does (might be able to take out the call in
-         make_function_def depending on what the debugger does with it).
-         Fixes bug reported by <dethrophes@motd005>
-
-expr.c
-       - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1;
-         fix typos and logic errors
-
-                                  12/16
-                                  -----
-bashline.c
-       - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over
-         command substitutions and doesn't treat them as command separators
-       - attempt_shell_completion: instead of taking first return from
-         find_cmd_name as command name to use for programmable completion,
-         use loop to skip over assignment statements.  Fixes problem reported
-         by Raphael Droz <raphael.droz+floss@gmail.com>
-       - attempt_shell_completion: if we don't find a command name but the
-         command line is non-empty, assume the other words are all assignment
-         statements and flag that point is in a command position so we can
-         do command name completion
-       - attempt_shell_completion: if the word being completed is the first
-         word following a series of assignment statements, and the
-         command line is non-empty, flag that point is in a command position
-         so we can do command name completion
-
-lib/readline/history.c
-       - history_get_time: atol -> strtol
-
-                                  12/18
-                                  -----
-parse.y
-       - parser_in_command_position: external interface to the
-         command_token_position macro for use by other parts of the shell,
-         like the completion mechanism
-
-externs.h
-       - extern declaration for parser_in_command_position
-
-                                  12/19
-                                  -----
-
-builtins/read.def
-       - read_builtin: make sure all calls to bind_read_variable are passed
-         a non-null string.  Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-bashline.c
-       - attempt_shell_completion: mark that we're in a command position if
-         we're at the start of the line and the parser is ready to accept
-         a reserved word or command name.  Feature most recently suggested
-         by Peng Yu <pengyu.ut@gmail.com>
-
-                                  12/21
-                                  -----
-lib/readline/bind.c
-       - _rl_escchar: return the character that would be backslash-escaped
-         to denote the control character passed as an argument ('\n' -> 'n')
-       - _rl_isescape: return 1 if character passed is one that has a
-         backslash escape
-       - _rl_untranslate_macro_value: new second argument: use_escapes, if
-         non-zero translate to backslash escapes where possible instead of
-         using straight \C-x for control character `x'.  Change callers
-       - _rl_untranslate_macro_value: now global
-
-lib/readline/rlprivate.h
-       - _rl_untranslate_macro_value: extern declaration
-
-lib/readline/{macro.c,readline.h}
-       - rl_print_last_kbd_macro: new bindable function, inspired by patch
-         from Mitchel Humpherys
-
-lib/readline/funmap.c
-       - print-last-kbd-macro: new bindable command, bound to
-         rl_print_last_kbd_macro
-
-lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
-       - print-last-kbd-macro: document.
-
-lib/readline/text.c
-       - _rl_insert_next: if we're defining a macro, make sure the key gets
-         added to the macro text (should really audit calls to rl_read_key()
-         and make sure the right thing is happening for all of them)
-
-bashline.[ch]
-       - print_unix_command_map: new function, prints all bound commands in
-         cmd_xmap using rl_macro_dumper in a reusable format
-
-builtins/bind.def
-       - new -X option: print all keysequences bound to Unix commands using
-         print_unix_command_map.  Feature suggested by Dennis Williamson
-         (2/2011)
-
-doc/{bash.1,bashref.texi}
-       - document new `bind -X' option
-
-                                  12/24
-                                  -----
-
-doc/{bash.1,bashref.texi}
-       - add a couple of sentences to the description of the case modification
-         operators making it clearer that each character of parameter is
-         tested against the pattern, and that the pattern should only attempt
-         to match a single character.  Suggested by Bill Gradwohl
-         <bill@ycc.com>
-
-                                  12/28
-                                  -----
-shell.c
-       - init_noninteractive: instead of calling set_job_control(0) to
-         unconditionally turn off job control, turn on job control if
-         forced_interactive or jobs_m_flag is set
-       - shell_initialize: call initialize_job_control with jobs_m_flag as
-         argument so `bash -m script' enables job control while running the
-         script
-
-jobs.c
-       - initialize_job_control: if the `force' argument is non-zero, turn on
-         job control even if the shell is not currently interactive
-         (interactive == 0)
-
-                                  12/29
-                                  -----
-
-flags.h
-       - new extern declaration for jobs_m_flag
-
-builtins/{cd,set}.def,doc/{bash.1,bashref.texi}
-       - added text clarifying the descriptions of cd -L and -P, suggested by
-         Padraig Brady <p@draigbrady.com>
-       - slight change to the description of `set -P' about resolving symbolic
-         links
-
-lib/readline/doc/rluser.texi
-       - Added an example to the programmable completion section: _comp_cd,
-         a completion function for cd, with additional verbiage.  Text
-         includes a reference to the bash_completion project
-
-                                1/1/2012
-                                --------
-jobs.c
-       - set_job_status_and_cleanup: note that a job is stopped due to
-         SIGTSTP (any_tstped) if job_control is set; there's no need to
-         test interactive
-
-                                   1/5
-                                   ---
-quit.h
-       - LASTSIG(): new macro, expands to signal number of last terminating
-         signal received (terminating_signal or SIGINT)
-
-trap.c
-       - first_pending_trap: returns lowest signal number with a trap pending
-       - trapped_signal_received: set to the last trapped signal the shell
-         received in trap_handler(); reset to 0 in run_pending_traps
-
-builtins/read.def
-       - read_builtin: changes to posix-mode (posixly_correct != 0) to make
-         `read' interruptible by a trapped signal.  After the trap runs,
-         read returns 128+sig and does not assign the partially-read line
-         to the named variable(s).  From an austin-group discussion started
-         by David Korn
-
-                                  1/11
-                                  ----
-doc/{bash.1,bashref.texi}
-       - slight changes to the descriptions of the compat32 and compat40 shell
-         options to clarify their meaning
-
-                                  1/12
-                                  ----
-lib/readline/{colors.[ch],parse-colors.[ch]}
-       - new files, part of color infrastructure support
-
-Makefile.in,lib/readline/Makefile.in
-       - arrange to have colors.o and parse-colors.o added to readline
-         library
-
-{configure,config.h}.in
-       - check for stdbool.h, define HAVE_STDBOOL_H if found
-
-                                  1/14
-                                  ----
-lib/readline/bind.c
-       - colored_stats: new bindable variable, enables using colors to
-         indicate file type when listing completions
-
-lib/readline/complete.c
-       - _rl_colored_stats: new variable, controlled by colored-stats bindable
-         variable
-       - colored_stat_start, colored_stat_end: new functions to set and reset
-         the terminal color appropriately depending on the type of the
-         filename to be printed
-       - print_filename: changes to print colors if `colored-stats' variable
-         set.  Changes contributed by Raphael Droz
-         <raphael.droz+floss@gmail.com>
-
-lib/readline/readline.c
-       - rl_initialize_everything: add call to _rl_parse_colors to parse
-         color values out of $LS_COLORS.  May have to add to rl_initialize
-         to make more dynamic if LS_COLORS changes (which doesn't happen
-         very often, if at all)
-
-lib/readline/rlprivate.h
-       - _rl_colored_stats: new extern declaration
-
-lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
-       - colored-stats: document new bindable readline variable
-
-lib/readline/colors.c
-       - _rl_print_color_indicator: call rl_filename_stat_hook before calling
-         lstat/stat so we can get color indicators for stuff like
-         $HOME/Applications
-
-lib/readline/complete.c
-       - stat_char: call rl_filename_stat_hook before calling lstat/stat
-
-findcmd.[ch],execute_cmd.c
-       - search_for_command: now takes a second `flags' argument; changed
-         header function prototype and callers
-       - search_for_command: if (flags & 1), put the command found in $PATH
-         into the command hash table (previous default behavior)
-
-execute_cmd.c
-       - is_dirname: call search_for_command with flags argument of 0 so it
-         doesn't try to put something in the command hash table
-
-bashline.c
-       - bash_command_name_stat_hook: a hook function for readline's
-         filename_stat_hook that does $PATH searching the same way that
-         execute_cmd.c:execute_disk_command() does it, and rewrites the
-         passed filename if found.  Does not put names into command hash
-         table.  This allows command name completion to take advantage
-         of `visible-stats' and `colored-stats' settings.
-       - executable_completion: new function, calls the directory completion
-         hook to expand the filename before calling executable_file or
-         executable_or_directory; change command_word_completion_function to
-         call executable_completion.  This allows $HOME/bin/[TAB] to do
-         command completion and display alternatives
-
-                                  1/17
-                                  ----
-pcomplete.c
-       - gen_command_matches: now takes a new second argument: the command
-         name as deciphered by the programmable completion code and used
-         to look up the compspec; changed callers (gen_compspec_completions)
-       - gen_shell_function_matches: now takes a new second argument: the
-         command that originally caused the completion function to be
-         invoked; changed callers (gen_compspec_completions))
-       - build_arg_list: now takes a new second argument: the command name
-         corresponding to the current compspec; changed callers
-         (gen_command_matches, gen_shell_function_matches)
-       - build_arg_list: now uses `cmd' argument to create $1 passed to
-         invoked command or shell function
-       - gen_compspec_completions: if we skipped a null command at the
-         beginning of the line (e.g., for completing `>'), add a new word for
-         it at the beginning of the word list and increment nw and cw
-         appropriately.  This is all a partial fix for the shortcoming
-         pointed out by Sung Pae <sungpae@gmail.com>
-
-                                  1/18
-                                  ----
-
-{configure,config.h}.in
-       - new check: check for AUDIT_USER_TTY defined in <linux/audit.h>,
-         define HAVE_DECL_AUDIT_USER_TTY if both are found
-
-lib/readline/rlconf.h
-       - ENABLE_TTY_AUDIT_SUPPORT: new define, allows use of the Linux kernel
-         tty auditing system if it's available and enabled
-
-lib/readline/util.c
-       - _rl_audit_tty: new function, send a string to the kernel tty audit
-         system
-
-lib/readline/rlprivate.h
-       - _rl_audit_tty: new extern declaration
-
-lib/readline/readline.c
-       - readline: call _rl_audit_tty with line to be returned before returning
-         it if the Linux tty audit system is available and it's been enabled
-         in rlconf.h  Original patch from Miroslav Trmac; recent request
-         from Miroslav Lichvar <mlichvar@redhat.com>
-
-                                  1/21
-                                  ----
-
-lib/readline/readline.c:
-       - _rl_dispatch_subseq: add an inter-character timeout for multi-char
-         key sequences.  Suggested by <rogerx.oss@gmail.com>.  Still needs
-         work to make a user-settable variable
-
-parse.y
-       - shell_getc: make code that uses the pop_alias dependent on ALIAS
-         define
-
-variables.h
-       - sv_tz: extern define should only depend on HAVE_TZSET
-
-expr.c
-       - expr_streval: if ARRAY_VARS is not defined, set lvalue->ind to -1;
-         move assignment to `ind' inside define
-       - expr_bind_array_element: declaration and uses need to be #ifdef
-         ARRAY_VARS
-
-arrayfunc.h
-       - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not
-         defined; used in subst.c unconditionally
-
-sig.h
-       - make the signal blocking functions not dependent on JOB_CONTROL
-
-sig.c
-       - sigprocmask: make the replacement definition not dependent on
-         JOB_CONTROL
-
-trap.c
-       - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on
-         HAVE_POSIX_SIGNALS and BSD signals
-
-                                  1/24
-                                  ----
-
-print_cmd.c
-       - print_redirection_list: change the conditions under which
-         r_duplicating_output_word is mapped to r_err_and_out to more or
-         less match those used in redir.c.  Fixes bug pointed out by
-         Dan Douglas <ormaaj@gmail.com>
-
-
-                                  1/29
-                                  ----
-lib/readline/signals.c
-       - _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies
-         unless SIGWINCH is defined.  Fixes bug reported by Pierre Muller
-         <pierre.muller@ics-cnrs.unistra.fr>
-
-doc/{bash.1,bashref.texi}
-       - small modifications to the introduction to the REDIRECTION section
-         to describe how redirections can modify file handles
-       - small modification to the section describing base#n to make it
-         clearer that n can be denoted using non-numerics.  From a posting
-         by Linda Walsh <bash@tlinx.org>
-
-                                   2/2
-                                   ---
-builtins/printf.def
-       - printf_builtin: make sure vbuf is intialized and non-null when -v
-         is supplied, since other parts of the code assume that it's not
-         null (e.g., bind_printf_variable()).  Fixes bug reported by Jim
-         Avera <james_avera@yahoo.com>
-
-                                   2/4
-                                   ---
-lib/readline/undo.c
-       - _rl_free_undo_list: new function, old body of rl_free_undo_list,
-         frees undo entries in UNDO_LIST * passed as argument
-       - rl_free_undo_list: call _rl_free_undo_list
-
-lib/readline/rlprivate.h
-       - _rl_free_undo_list: new extern declaration
-       - _rl_keyseq_timeout: new extern declaration (see below)
-
-lib/readline/misc.c
-       - rl_clear_history: new function.  Clears the history list and frees
-         all associated data similar to history.c:clear_history(), but
-         takes rl_undo_list into account and frees and UNDO_LISTs saved as
-         `data' members of a history list entry
-
-lib/readline/doc/rltech.texi
-       - rl_clear_history: documented
-
-lib/readline/readline.c
-       - _rl_keyseq_timeout: new variable to hold intra-key timeout value
-         from 1/21 fix; specified in milliseconds.  Default value is 500
-       - _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key
-         timeout if it's greater than 0; no timeout if <= 0
-       - _rl_dispatch_subseq: don't check for queued keyboard input if we have
-         pushed or pending input, or if we're reading input from a macro
-
-lib/readline/bind.c
-       - keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout
-       - string_varlist: add keyseq-timeout
-       - sv_seqtimeout: new function to modify value of _rl_keyseq_timeout;
-         clamps negative values at 0 for now
-       - _rl_get_string_variable_value: return value for keyseq-timeout
-
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
-       - keyseq-timeout: documented
-
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: modification to fix from 7/18 to not use
-         cxt->keymap and cxt->okeymap, since by the time this code is
-         executed, they are equal.  Use `f' to check for rl_insert or
-         unbound func
-       - _rl_isearch_dispatch: if we're switching keymaps, not in
-         callback mode, and don't have pending or pushed input, use
-         _rl_input_queued to resolve a potentially ambiguous key sequence.
-         Suggested by Roger Zauner <rogerx.oss@gmail.com>
-       - _rl_isearch_dispatch: if we have changed keymaps and resolved to
-         an editing function (not self-insert), make sure we stuff the
-         right characters back onto the input after changing the keymap
-         back so the right editing function is executed after the search
-         is terminated.  Rest of fix for bug reported by Roger Zauner
-         <rogerx.oss@gmail.com>
-
-                                   2/5
-                                   ---
-builtins/gen-helpfiles.c
-       - new file: reads struct builtin and writes the long docs to files
-         in the `helpdirs' subdirectory.  The filename is given in the
-         previously-unused `handle' member of the struct builtin.  Links
-         with `tmpbuiltins.o', which is created by Makefile to have the
-         right long documentation.  When not cross-compiling, gets the
-         right #defines based on configuration options from config.h instead
-         of trying to parse conditional parts of def files.  Fixes
-         shortcoming pointed out by Andreas Schwab <schwab@linux-m68k.org>
-
-builtins/Makefile.in
-       - tmpbuiltins.c: new generated file, created to enable creation of
-         separate helpfiles based on correct #defines instead of trying to
-         parse conditional parts of def files
-       - gen-helpfiles: new program to generate helpfiles, links with
-         tmpbuiltins.o
-       - HELPFILES_TARGET: new target, substituted by configure to `helpdoc'
-         if separate helpfiles requested
-       - targets: new target, libbuiltins.a and $(HELPFILES_TARGET)
-       - CREATED_OBJECTS: new variable, holds created object files for
-         make clean; changed make clean to remove created objects
-       - helpdoc: changed to call gen-helpfiles instead of mkbuiltins
-
-Makefile.in
-       - when building libbuiltins.a, recursively call make with `targets'
-         argument to make sure separate helpfiles get built
-
-configure.in
-       - substitute `helpdoc' as value of HELPFILES_TARGET if
-         --enable-separate-helpfiles supplied as configure argument
-
-builtins/mkbuiltins.c
-       - `-nofunctions': new argument, causes mkbuiltins to not write value
-         for function implementing a particular builtin to struct builtin
-         and to write document file name to `handle' member of struct builtin
-       - no longer writes separate helpfiles; that is left to gen-helpfiles
-
-                                   2/8
-                                   ---
-subst.c
-       - make sure last_command_exit_value is set to a non-zero value before
-         any calls to report_error, since `-e' set will short-circuit
-         report_error.  Fixes bug reported by Ewan Mellor
-         <Ewan.Mellor@eu.citrix.com>
-
-variables.c
-       - make_local_array_variable: added second argument; if non-zero,
-         function will return an existing local associative array variable
-         instead of insisting on an indexed array
-
-variable.h,subst.c
-       - make_local_array_variable: changed prototype and caller
-
-builtins/declare.def
-       - declare_internal: add second arg to call to make_local_array_variable;
-         making_array_special, which indicates we're processing an
-         assignment like declare a[b]=c.  Fixes seg fault resulting from
-         a being an already-declared local associative array variable in a
-         function.  Ubuntu bash bug 928900.
-
-                                  2/14
-                                  ----
-
-execute_cmd.c
-       - execute_command_internal: if redirections into or out of a loop fail,
-         don't try to free ofifo_list unless saved_fifo is non-zero.  It's
-         only valid if saved_fifo is set
-
-                                  2/15
-                                  ----
-{arrayfunc,braces,variables}.c
-       - last_command_exit_value: make sure it's set before any calls to
-         report_error, since -e will cause that to exit the shell
-
-builtins/common.c
-       - get_job_by_name: call internal_error instead of report_error so this
-         doesn't exit the shell
-
-                                  2/18
-                                  ----
-builtins/evalstring.c
-       - parse_and_execute: make sure the file descriptor to be redirected to
-         is 1 before calling cat_file.  One fix for bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-parse.y
-       - read_token_word: don't return NUMBER if a string of all digits
-         resolves to a number that overflows the bounds of an intmax_t.
-         Other fix for bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  2/19
-                                  ----
-lib/sh/strtrans.c
-       - ansicstr: use 0x7f as the boundary for characters that translate
-         directly from ASCII to unicode (\u and \U escapes) instead of
-         UCHAR_MAX, since everything >= 0x80 requires more than one byte.
-         Bug and fix from John Kearney <dethrophes@web.de>
-
-builtins/printf.def
-       - tescape: ditto for printf \u and \U escape sequences
-
-                                  2/20
-                                  ----
-lib/sh/unicode.c
-       - u32toutf8: fix to handle encodings up to six bytes long correctly
-         (though technically UTF-8 only has characters up to 4 bytes long).
-         Report and fix from John Kearney <dethrophes@web.de>
-       - u32toutf8: first argument is now an unsigned 32-bit quantity,
-         changed callers (u32cconv) to pass c instead of wc
-       - u32reset: new function, resets local static state to uninitialized
-         (locale information, currently)
-
-locale.c
-       - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the
-         cached locale information used by u32cconv.  From a report from
-         John Kearney <dethrophes@web.de>
-
-                                  2/21
-                                  ----
-doc/{bash,builtins}.1
-       - minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-
-lib/sh/unicode.c
-       - u32cconv: only assume you can directly call wctomb on the passed
-         value if __STDC_ISO_10646__ is defined and the value is <=
-         0x7fffffff
-       - stub_charset: return locale as default instead of "ASCII", let
-         rest of code decide what to do with it
-
-lib/readline/parens.c
-       - _rl_enable_paren_matching: make paren matching work in vi insert
-         mode.  Bug report from <derflob@derflob.de>
-
-                                  2/22
-                                  ----
-lib/sh/shquote.c
-       - sh_backslash_quote: quote tilde in places where it would be
-         expanded.  From a report from John Kearney <dethrophes@web.de>
-
-                                  2/23
-                                  ----
-execute_cmd.c
-       - execute_pipeline: wrap the discard_unwind_frame call in #ifdef
-         JOB_CONTROL, since the frame is only created if JOB_CONTROL is
-         defined.  Bug and fix from Doug Kehn <rdkehn@yahoo.com>
-
-                                  2/25
-                                  ----
-error.c
-       - report_error: make sure last_command_exit_value is non-zero before
-         we call exit_shell, since the exit trap may reference it.  Call
-         exit_shell with last_command_exit_value to allow exit statuses
-         other than 1
-
-unicode.c
-       - stub_charset: use local static buffer to hold charset, don't change
-         value returned by get_locale_var.  Based on idea and code from
-         John Kearney <dethrophes@web.de>
-       - u32toutf16: function to convert unsigned 32-bit value (unicode) to
-         UTF-16.  From John Kearney <dethrophes@web.de>
-       - u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t
-         is two bytes, send result to wcstombs, return if not encoding error.
-         From John Kearney <dethrophes@web.de>
-       - u32cconv: return UTF-8 conversion if iconv conversion to local
-         charset is unsupported
-
-                                   3/2
-                                   ---
-lib/readline/complete.c
-       - print_filename: if there is no directory hook, but there is a stat
-         hook, and we want to append a slash to directories, call the stat
-         hook before calling path_isdir on the expanded directory name.
-         Report and pointer to fix from Steve Rago <sar@nec-labs.com>
-
-                                   3/3
-                                   ---
-builtins/evalstring.c
-       - parse_and_execute: fix to change of 2/18: make sure the file
-         descriptor being redirected to is 0 before calling cat_file when
-         we see something like $(< file).  Real fix for bug reported by
-         Dan Douglas <ormaaj@gmail.com>
-
-subst.c
-       - parameter_brace_patsub: run the replacement string through quote
-         removal even if the expansion is within double quotes, because
-         the parser and string extract functions treat the quotes and
-         backslashes as special.  If they're treated as special, quote
-         removal should remove them (this is the Posix position and
-         compatible with ksh93).  THIS IS NOT BACKWARDS COMPATIBLE.
-
-                                   3/4
-                                   ---
-lib/readline/complete.c
-       - rl_menu_complete: fix to make show-all-if-ambiguous and
-         menu-complete-display-prefix work together if both are set.  Fix
-         from Sami Pietila <sami.pietila@gmail.com>
-
-                                   3/5
-                                   ---
-bashline.c
-       - dircomplete_expand_relpath: new variable, if non-zero, means that
-         `shopt -s direxpand' should expand relative pathnames.  Zero by
-         default, not user-settable yet
-       - bash_directory_completion_hook: if we have a relative pathname that
-         isn't changed by canonicalization or spell checking after being
-         appended to $PWD, then don't change what the user typed.  Controlled
-         by dircomplete_expand_relpath
-
-                                   3/7
-                                   ---
-m4/timespec.m4
-       - new macros, cribbed from gnulib and coreutils: find out whether we
-         have `struct timespec' and what file includes it
-
-m4/stat-time.m4
-       - new macros, cribbed from gnulib and coreutils: find out whether the
-         mtime/atime/ctime/etctime fields of struct stat are of type
-         struct timespec, and what the name is
-
-include/stat-time.h
-       - new file, cribbed from gnulib, with additions from coreutils: include
-         the right file to get the struct timespec define, or provide our own
-         replacement.  Provides a bunch of inline functions to turn the
-         appropriate members of struct stat into `struct timespec' values,
-         zeroing out the tv_nsec field if necessary
-
-test.c
-       - include "stat-time.h" for the nanosecond timestamp resolution stuff
-       - stat_mtime: new function, returns struct stat and the mod time
-         normalized into a `struct timespec' for the filename passed as the
-         first argument
-       - filecomp: call stat_mtime instead of sh_stat for each filename
-         argument to get the mtime as a struct timespec
-       - filecomp: call timespec_cmp instead of using a straight arithmetic
-         comparison for the -nt and -ot operators, using timespec returned by
-         stat_mtime.  Added functionality requested by by Werner Fink
-         <werner@suse.de> for systems that can support it
-
-                                  3/10
-                                  ----
-include/posixdir.h
-       - REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature
-         test macros to decide whether dirent.d_ino is present and usable;
-         define D_INO_AVAILABLE.  Report and fix from Fabrizion Gennari
-         <fabrizio.ge@tiscali.it>
-       - D_FILENO_AVAILABLE: define if we can use dirent.d_fileno
-
-lib/sh/getcwd.c
-       - use D_FILENO_AVAILABLE to decide whether or not to compile in
-         _path_checkino and whether or not to call it.  Report and initial
-         fix from Fabrizion Gennari <fabrizio.ge@tiscali.it>
-
-lib/readline/signals.c
-       - make sure all occurrences of SIGWINCH are protected by #ifdef
-
-sig.c
-       - make sure all occurrences of SIGCHLD are protected by #ifdef
-
-nojobs.c
-       - make sure SA_RESTART is defined to 0 if the OS doesn't define it
-
-version.c
-       - show_shell_version: don't use string literals in printf, use %s.
-         Has added benefit of removing newline from string to be translated
-
-trap.c
-       - queue_sigchld_trap: new function, increments the number of pending
-         SIGCHLD signals by the argument, which is by convention the number
-         of children reaped in a call to waitchld()
-
-trap.h
-       - queue_sigchld_trap: new extern declaration
-
-jobs.c
-       - waitchld: if called from the SIGCHLD signal handler (sigchld > 0),
-         then call queue_sigchld_trap to avoid running the trap in a signal
-         handler context.  Report and original fix from Siddhesh Poyarekar
-         <siddhesh@redhat.com>
-
-lib/sh/unicode.c
-       - u32tocesc: take an unsigned 32-bit quantity and encode it using
-         ISO C99 string notation (\u/\U)
-       - u32cconv: call u32tocesc as a fallback instead of u32cchar
-       - u32cconv: call u32tocesc if iconv cannot convert the character.
-         Maybe do the same thing if iconv_open fails
-       - u32reset: call iconv_close on localconv if u32init == 1
-
-                                  3/11
-                                  ----
-config-top.h
-       - CHECKWINSIZE_DEFAULT: new define, set to initial value of
-         check_window_size (shopt checkwinsize): 0 for off, 1 for on.
-         Default is 0
-
-{jobs,nojobs}.c
-       - check_window_size: default initial value to CHECKWINSIZE_DEFAULT
-
-                                  3/13
-                                  ----
-doc/bashref.texi
-       - change text referring to the copying restrictions to that
-         recommended by the FSF (no Front-Cover Texts and no Back-Cover
-         Texts)
-
-lib/readline/doc/{history,rlman,rluserman}.texi
-       - change text referring to the copying restrictions to that
-         recommended by the FSF (no Front-Cover Texts and no Back-Cover
-         Texts)
-
-                                  3/15
-                                  ----
-array.c
-       - LASTREF_START: new macro to set the starting position for an array
-         traversal to `lastref' if that's valid, and to the start of the array
-         if not.  Used in array_reference, array_insert, array_remove
-       - array_remove: try to be a little smarter with lastref instead of
-         unconditionally invalidating it
-
-                                  3/16
-                                  ----
-array.c
-       - array_insert: fix memory leak by deleting element to be added in the
-         case of an error
-
-                                  3/18
-                                  ----
-lib/sh/mbschr.c
-       - mbschr: don't call mbrlen unless is_basic is false; devolves to a
-         straight character-by-character run through the string
-
-                                  3/19
-                                  ----
-stringlib.c
-       - substring: use memcpy instead of strncpy, since we know the length
-         and are going to add our own NUL terminator
-
-                                  3/20
-                                  ----
-subst.c
-       - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted
-         null string (a list with one element for which
-         QUOTED_NULL(list->word->word) returns true), return the quoted null
-         and set the flags in the returned word to indicate it.  Fixes bug
-         reported by Mark Edgar <medgar123@gmail.com>
-
-lib/sh/tmpfile.c
-       - use random(3) instead of get_random_number to avoid perturbing the
-         random sequence you get using $RANDOM.  Bug report and fix from
-         Jurij Mihelic <jurij.mihelic@fri.uni-lj.si>
-
-                                  3/21
-                                  ----
-config-top.h
-       - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize
-         sequential indexed array assignment patterns.  Defined to 1 by
-         default
-
-array.c
-       - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined,
-         start the search at lastref (see change from 3/15)
-
-                                  3/27
-                                  ----
-print_cmd.c
-       - debug_print_word_list: new debugging function, prints a word list
-         preceded by an optional string and using a caller-specified
-         separator
-
-                                   4/1
-                                   ---
-command.h
-       - W_ASSNGLOBAL: new flag, set to indicate declare -g
-
-execute_cmd.c
-       - fix_assignment_words: note that we have a -g argument to an assignment
-         builtin and set the W_ASSNGLOBAL flag in the variable word
-
-subst.c
-       - dump_word_flags: print out W_ASSNGLOBAL if present
-       - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set
-         and W_ASSNGLOBAL is not.  Don't want to create a local variable even
-         if variable_context is non-zero if ASSNGLOBAL is set.  Fixes bug
-         reported by Bill Gradwohl <bill@ycc.com>
-
-                                   4/7
-                                   ---
-lib/readline/readline.c
-       - _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to
-         ESC processing when in vi mode.  After hitting ESC, readline will
-         wait up to _rl_keyseq_timeout*1000 microseconds (if set) for
-         additional input before dispatching on the ESC and switching to
-         command/movement mode.  Completes timeout work suggested by
-         <rogerx.oss@gmail.com>; this prompted by report from Barry Downes
-         <barry.downes@gmail.com>
-
-lib/sh/shmbchar.c
-       - sh_mbsnlen: new function, returns the number of (possibly multibyte)
-         characters in a passed string with a passed length, examining at most
-         maxlen (third argument) bytes
-
-externs.h
-       - sh_mbsnlen: extern declaration for new function
-
-shell.c
-       - exit_shell: call maybe_save_shell_history if remember_on_history is
-         set, not just in interactive shells.  That means the history is
-         saved if history is enabled, regardless of whether or not the shell
-         is interactive
-
-doc/{bash.1,bashref.texi}
-       - TMOUT: fix description to make it explicit that TMOUT is the timeout
-         period for a complete line of input, not just any input.  Fixes
-         problem reported in Ubuntu bug 957303:
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303
-       - HISTFILE: document change to write history list to history file in
-         any shell with history enabled, not just interactive shells.  This
-         seems to be more logical behavior.  Suggested by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-
-                                  4/12
-                                  ----
-lib/readline/colors.h
-       - only include stdbool.h if HAVE_STDBOOL_H is defined
-       - if HAVE_STDBOOL_H is not defined, provide enough definition for the
-         library to use `bool', `true', and `false'
-
-lib/readline/parse-colors.[ch]
-       - don't try to include <stdbool.h> at all; rely on colors.h to do it
-
-lib/sh/snprintf.c
-       - vsnprintf_internal: only treat '0' as a flag to indicate zero padding
-         if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat
-         it as the first digit of a precision specifier.  Fixes bug reported
-         by Petr Sumbera <petr.sumbera@sun.com>
-
-                                  4/15
-                                  ----
-lib/sh/snprintf.c
-       - vsnprintf_internal: if the '0' and '-' flags both occur, the '0'
-         flag is ignored -- Posix.  Start of a series of fixes based on
-         tests and patches from Petr Sumbera <petr.sumbera@sun.com>
-       - PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+'
-       - vsnprintf_internal: when '+' is read as a flag, don't set right-
-         justify flag if the LADJUST (`-') flag has already been supplied
-       - floating: make sure to output space padding before the `+', zero
-         padding after
-       - exponent: make sure to output space padding before the `+', zero
-         padding after
-       - exponent: only subtract one from the width for the decimal point
-         if we're really going to print one
-       - floating: use presence of PF_PLUS flag to decide whether to account
-         for the `+' in the padded field width.  Ditto for exponent()
-
-                                  4/16
-                                  ----
-lib/sh/snprintf.c
-       - vsnprint_internal: only reduce precision by 1 when processing the `g'
-         format if it's > 0.  A precision of 0 should stay 0; otherwise it
-         gets set to -1 (NOT_FOUND) and converted to the default
-       - number, lnumber: if an explicit precision is supplied, turn off the
-         zero-padding flag and set the pad character back to space
-       - number, lnumber: only account for a `+' when performing the field
-         width calculation if the coversion is base 10; we don't add a `+'
-         for other bases
-
-                                  4/18
-                                  ----
-tests/printf3.sub
-       - try using "perl -e 'print time'" to get the current time in seconds
-         since the epoch if "date +%s" is not available (solaris 8-10)
-
-                                  4/19
-                                  ----
-tests/run-printf
-       - use cat -v instead of relying on diff -a being available to convert
-         control characters to ascii and avoid the dreaded "Binary files
-         /tmp/xx and printf.right differ"
-
-                                  4/20
-                                  ----
-lib/sh/strftime.c
-       - incoporated new version from Aharon Robbins <arnold@skeeve.com>
-
-                                  4/22
-                                  ----
-doc/{bash.1,bashref.texi}
-       - slight change to the description of /dev/tcp and /dev/udp
-
-subst.c
-       - match_wpattern: logic fix to the calculation of `simple' (was |=,
-         needs to be &=).  Bug report from Mike Frysinger <vapier@gentoo.org>,
-         fix from Andreas Schwab <schwab@linux-m68k.org>
-
-bashline.c
-       - bash_filename_stat_hook: add code from bash_directory_completion_hook
-         that performs pathname canonicalization in the same way that cd and
-         other builtins will do
-
-                                  4/25
-                                  ----
-execute_cmd.c
-       - execute_pipeline: change the call to move_to_high_fd to make it use
-         getdtablesize() and to not stomp on existing open file descriptors,
-         like the fd the shell is using to read a script.  Bug report from
-         Greg Wooledge <wooledg@eeg.ccf.org>
-
-                                   5/6
-                                   ---
-subst.c
-       - expand_word_internal: case '$': after calling param_expand and
-         setting had_quoted_null, set TEMP to null.  The code that builds the
-         returned string at the end of the function will take care of making
-         and returning a quoted null string if there's nothing else in
-         ISTRING.  If there is, the quoted null should just go away.  Part of
-         fix for bug reported by Ruediger Kuhlmann <RKuhlmann@orga-systems.com>
-       - expand_word_internal: when processing ISTRING to build return value,
-         only set W_HASQUOTEDNULL in the returned word flags if the word is
-         a quoted null string AND had_quoted_null is set.  Rest of fix
-
-                                   5/9
-                                   ---
-variables.c
-       - bind_variable_internal: if we get an array variable here (implicit
-         assignment to index 0), call make_array_variable_value, which
-         dummies up a fake SHELL_VAR * from array[0].  This matters when
-         we're appending and have to use the current value
-       - bind_variable_internal: after computing the new value, treat assoc
-         variables with higher precedence than simple array variables; it
-         might be that a variable has both attributes set
-
-arrayfunc.c
-       - bind_array_var_internal: break code out that handles creating the
-         new value to be assigned to an array variable index into a new
-         function, make_array_variable_value.  This handles creating a
-         dummy SHELL_VAR * for implicit array[0] assignment.  Fixes bug
-         reported by Dan Douglas <ormaaj@gmail.com>
-
-arrayfunc.h
-       - make_array_variable_value: new extern declaration
-
-                                  5/19
-                                  ----
-variables.c
-       - bind_int_variable: if an assignment statement like x=y comes in
-         from the expression evaluator, and x is an array, handle it like
-         x[0]=y.  Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  5/24
-                                  ----
-
-braces.c
-       - mkseq: handle possible overflow and break the sequence generating
-         loop if it occurs.  Fixes OpenSUSE bug 763591:
-         https://bugzilla.novell.com/show_bug.cgi?id=763591
-
-                                  5/25
-                                  ----
-Makefile.in
-       - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
-         buildversion, mksignames, mksyntax
-       - LDFLAGS_FOR_BUILD: add to compilation recipes for test tools
-         recho, zecho, printenv, xcase
-
-builtins/Makefile.in
-       - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
-         gen-helpfiles, psize.aux
-
-variables.c
-       - bind_int_variable: if LHS is a simple variable name without an array
-         reference, but resolves to an array variable, call
-         bind_array_variable with index 0 to make x=1 equivalent to x[0]=1.
-         Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  5/27
-                                  ----
-subst.c
-       - expand_word_internal: make sure has_dollar_at doesn't get reset before
-         recursive calls to param_expand or expand_word_internal, since it has
-         to save state of what came before.  Use temp variable and make sure
-         has_dollar_at is incremented if recursive call processes "$@".
-         Fixes bug reported by gregrwm <backuppc-users@whitleymott.net> and
-         supplemented by Dan Douglas <ormaaj@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - changes to the description of substring expansion inspired by
-         suggestions from Bill Gradwohl <bill@ycc.com>
-
-doc/bashref.texi
-       - added substring expansion examples inspired by suggestions from
-         Bill Gradwohl <bill@ycc.com>
-
-variables.c
-       - find_shell_variable: search for a variable in the list of shell
-         contexts, ignore the temporary environment
-       - find_variable_tempenv: search for a variable in the list of shell
-         contexts, force search of the temporary environment
-       - find_variable_notempenv: search for a variable in the list of shell
-         contexts, don't force search of the temporary environment
-
-variables.h
-       - find_shell_variable: extern declaration
-       - find_variable_tempenv: extern declaration
-       - find_variable_notempenv: extern declaration
-
-arrayfunc.c
-       - bind_array_variable: call find_shell_variable instead of calling
-         var_lookup directly
-
-findcmd.c
-       - search_for_command: call find_variable_tempenv instead of
-         find_variable_internal directly
-       - _find_user_command_internal: call find_variable_tempenv instead of
-         find_variable_internal directly
-
-builtins/setattr.def
-       - set_var_attribute: call find_variable_notempenv instead of
-         find_variable_internal directly
-       - show_name_attributes:  call find_variable_tempenv instead of
-         find_variable_internal directly
-
-                                   6/1
-                                   ---
-sig.c
-       - termsig_handler: don't try to save the shell history on a terminating
-         signal any more, since it just causes too many problems on Linux
-         systems using glibc and glibc malloc
-
-lib/readline/vi_mode.c
-       - rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi
-         motion character.  From Red Hat bug 813289
-       - rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi
-         motion character
-       - rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi
-         motion character
-
-                                   6/4
-                                   ---
-lib/sh/mktime.c
-       - current versions of VMS do not need to include <stddef.h>.  Fix from
-         John E. Malmberg <wb8tyw@qsl.net>
-
-                                   6/5
-                                   ---
-lib/sh/eaccess.c
-       - sh_stat: instead of using a static buffer to do the DEV_FD_PREFIX
-         translation, use a dynamically-allocated buffer that we keep
-         resizing.  Fixes potential security hole reported by David Leverton
-         <levertond@googlemail.com>
-
-                                   6/5
-                                   ---
-braces.c
-       - expand_seqterm: check errno == ERANGE after calling strtoimax for
-         rhs and incr.  Part of a set of fixes from Scott McMillan
-         <scotty.mcmillan@gmail.com>
-       - expand_seqterm: incr now of type `intmax_t', which changes
-         arguments to mkseq
-       - mkseq: a better fix for detecting overflow and underflow since it's
-         undefined in C and compilers `optimize' out overflow checks.  Uses
-         ADDOVERFLOW and SUBOVERFLOW macros
-       - mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t
-         variables
-       - mkseq: don't allow incr to be converted to -INTMAX_MIN
-       - mkseq: make sure that strvec_create isn't called with a size argument
-         greater than INT_MAX, since it only takes an int
-
-                                   6/6
-                                   ---
-braces.c
-       - mkseq: try and be smarter about not overallocating elements in
-         the return array if the increment is not 1 or -1
-
-                                   6/7
-                                   ---
-parse.y
-       - history_delimiting_chars: if the parser says we're in the middle of
-         a compound assignment (PST_COMPASSIGN), just return a space to avoid
-         adding a stray semicolon to the history entry.  Fixes bug reported
-         by "Davide Brini" <dave_br@gmx.com>
-
-                                   6/8
-                                   ---
-bashline.c
-       - bash_directory_completion_hook: don't attempt spelling correction
-         on the directory name unless the direxpand option is set and we are
-         going to replace the directory name with the corrected one in the
-         readline line.  Suggested by Linda Walsh <bash@tlinx.org>
-
-lib/sh/shquote.c
-       - sh_backslash_quote: now takes a third argument: flags.  If non-zero,
-         tildes are not backslash-escaped.  Have to handle both printf %q,
-         where they should be escaped, and filename completion, where they
-         should not when used as usernames
-
-externs.h
-       - sh_backslash_quote: declaration now takes a third argument
-
-builtins/printf.def
-       - printf_builtin: call sh_backslash_quote with 1 as third argument
-         so tildes get escaped
-
-{bashline,bracecomp}.c
-       - call sh_backslash_quote with 0 as third argument so tildes are not
-         escaped in completed words
-
-doc/bash.1
-       - add `coproc' to the list of reserved words.  From a report by
-         Jens Schweikhardt <schweikh@schweikhardt.net>
-
-                                  6/10
-                                  ----
-execute_cmd.c
-       - line_number_for_err_trap: now global, so parse_and_execute can save
-         and restore it with unwind-protect
-
-builtins/evalstring.c
-       - parse_prologue: save and restore line_number_for_err_trap along
-         with line_number
-       - restore_lastcom: new function, unwind-protect to restore
-         the_printed_command_except_trap
-       - parse_prologue: use restore_lastcom to save and restore the value
-         of the_printed_command_except_trap around calls to parse_and_execute
-         (eval/source/.)
-
-                                  6/15
-                                  ----
-lib/readline/complete.c
-       - complete_fncmp: change filename comparison code to understand
-         multibyte characters, even when doing case-sensitive or case-mapping
-         comparisons.  Fixes problem reported by Nikolay Shirokovskiy
-         <nshyrokovskiy@gmail.com>
-
-                                  6/20
-                                  ----
-builtins/mapfile.def
-       - mapfile: move the line count increment and check for having read
-         the specified number of lines to the end of the loop to avoid
-         reading an additional line with zgetline.  Fixes bug reported by
-         Dan Douglas <ormaaj@gmail.com>
-
-                                  6/21
-                                  ----
-
-execute_cmd.c
-       - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on
-         all systems, since it's tested later in the function.  Fixes bug
-         reported by John E. Malmberg <wb8tyw@qsl.net>
-
-                                  6/22
-                                  ----
-mailcheck.c
-       - file_mod_date_changed: return 0 right away if mailstat() does not
-         return success.  Fixes bug with using uninitialized values reported
-         by szymon.kalasz@uj.edu.pl
-
-builtins/set.def
-       - the `monitor' option is not available when the shell is compiled
-         without job control, since the underlying `m' flag is not available
-
-nojobs.c
-       - job_control: now declared as int variable, initialized to 0, never
-         modified
-
-jobs.h
-       - job_control: extern declaration no longer dependent on JOB_CONTROL
-
-execute_cmd.c
-       - execute_pipeline: made necessary changes so `lastpipe' shell option
-         is now available in all shells, even those compiled without
-         JOB_CONTROL defined
-
-                                  6/23
-                                  ----
-lib/glob/glob.c
-       - glob_filename: check for interrupts before returning if glob_vector
-         returns NULL or an error.  Bug reported by Serge van den Boom
-         <svdb@stack.nl>, fix from Andreas Schwab <schwab@linux-m68k.org>
-       - call run_pending_traps after each call to QUIT or test of
-         interrupt_state, like we do in mainline shell code
-       - glob_vector: don't call QUIT; in `if (lose)' code block; just free
-         memory, return NULL, and let callers deal with interrupt_state or
-         other signals and traps
-
-                                  6/25
-                                  ----
-lib/readline/input.c
-       - rl_read_key: restructure the loop that calls the event hook a little,
-         so that the hook is called only after rl_gather_tyi returns no input,
-         and any pending input is returned first.  This results in better
-         efficiency for processing pending input without calling the hook
-         on every input character as bash-4.1 did.  From a report from
-         Max Horn <max@quendi.de>
-
-                                  6/26
-                                  ----
-trap.c
-       - signal_is_pending: return TRUE if SIG argument has been received and
-         a trap is waiting to execute
-
-trap.h
-       - signal_is_pending: extern declaration
-
-lib/glob/glob.c
-       - glob_vector: check for pending SIGINT trap each time through the loop,
-         just like we check for interrupt_state or terminating_signal, and
-         set `lose = 1' so we clean up after ourselves and interrupt the
-         operation before running the trap.  This may require a change later,
-         maybe call run_pending_traps and do that if run_pending_traps returns?
-
-variables.c
-       - sv_histtimefmt: set history_comment_character to default (`#') if
-         it's 0 when we're turning on history timestamps.  The history code
-         uses the history comment character to prefix timestamps, and
-         leaving it at 0 effectively removes them from the history.  From a
-         report to help-bash by Dennis Williamson <dennistwilliamson@gmail.com>
-
-                                  6/27
-                                  ----
-lib/readline/signals.c
-       - rl_maybe_restore_sighandler: new function, sets handler for SIG to
-         HANDLER->sa_handler only if it's not SIG_IGN.  Needs to be called
-         on same signals set using rl_maybe_set_sighandler, which does not
-         override an existing SIG_IGN handler (SIGALRM is ok since it does
-         the check inline; doesn't mess with SIGWINCH)
-
-                                  6/30
-                                  ----
-variables.h
-       - additional defines for the new `nameref' variable attribute
-         (att_nameref): nameref_p, nameref_cell, var_setref
-
-variables.c
-       - find_variable_nameref: resolve SHELL_VAR V through chain of namerefs
-       - find_variable_last_nameref: resolve variable NAME until last in a
-         chain of possibly more than one nameref starting at shell_variables
-       - find_global_variable_last_nameref: resolve variable NAME until last
-         in a chain of possibly more than one nameref starting at
-         global_variables
-       - find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs        
-         in a specific variable context (usually a local variable hash table)
-       - find_variable_nameref_context: resolve SHELL_VAR V through chain of
-         namerefs following a chain of varible contexts
-       - find_variable_last_nameref_context: resolve SHELL_VAR V as in
-         find_variable_last_context, but return the final nameref instead of
-         what the final nameref resolves to
-       - find_variable_tempenv, find_variable_notempenv, find_global_variable,
-         find_shell_variable, find_variable: modified to follow namerefs
-       - find_global_variable_noref: look up a global variable without following
-         any namerefs
-       - find_variable_noref: look up a shell variable without following any
-         namerefs
-       - bind_variable_internal: modify to follow a chain of namerefs in the
-         global variables table; change to handle assignments to a nameref by
-         following nameref chain
-       - bind_variable: modify to follow chain of namerefs when binding to a
-         local variable
-       - unbind_variable: changes to unset nameref variables (unsets both
-         nameref and variable it resolves to)
-
-subst.c
-       - parameter_brace_expand_word: change to handle expanding nameref whose
-         value is x[n]
-       - parameter_brace_expand_indir: change to expand in ksh93-compatible
-         way if variable to be indirected is nameref and a simple (non-array)
-         expansion
-       - param_expand: change to expand $foo where foo is a nameref whose value
-         is x[n]
-
-execute_cmd.c
-       - execute_for_command: changes to implement ksh93 semantics when index
-         variable is a nameref
-
-builtins/setattr.def
-       - show_var_attributes: change to add `n' to flags list if att_nameref
-         is set
-
-builtins/set.def
-       - unset_builtin: changes to error messages to follow nameref variables
-
-builtins/declare.def
-       - document new -n option
-       - declare_internal: new `-n' and `+n' options
-       - declare_internal: handle declare -n var[=value] and
-         declare +n var[=value] for existing and non-existant variables.
-         Enforce restriction that nameref variables cannot be arrays.
-         Implement semi-peculiar ksh93 semantics for typeset +n ref=value
-
-                                   7/5
-                                   ---
-variables.c
-       - unbind_variable: unset whatever a nameref resolves to, leaving the
-         nameref variable itself alone
-       - unbind_nameref: new function, unsets a nameref variable, not the
-         variable it references
-
-variables.h
-       - unbind_nameref: extern declaration
-
-builtins/set.def
-       - unset_builtin: modify to add -n option, which calls unbind_nameref
-         leaving unbind_variable for the usual case.  This required slight
-         changes and additions to the test suite
-
-doc/{bash.1,bashref.texi}
-       - document namerefs and typeset/declare/local/unset -n
-
-                                  7/13
-                                  ----
-lib/sh/casemod.c
-       - include shmbchar.h for is_basic and supporting pieces
-       - sh_casemod: use _to_wupper and _to_wlower to convert wide character
-         case instead of TOUPPER and TOLOWER.  Fixes bug reported by
-         Dennis Williamson <dennistwilliamson@gmail.com>, fix from
-         Andreas Schwab <schwab@linux-m68k.org>
-       - cval: short-circuit and return ascii value if is_basic tests true
-       - sh_casemod: short-circuit and use non-multibyte case modification
-         and toggling code if is_basic tests true
-
-lib/readline/signals.c
-       - _rl_{block,release}_sigint: remove the code that actually blocks and
-         releases the signals, since we defer signal handling until calls to
-         RL_CHECK_SIGNALS()
-
-lib/readline/{callback,readline,util}.c
-       - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without
-         saving and restoring the signal mask instead of setjmp/longjmp
-
-lib/readline/rltty.c
-       - prepare_terminal_settings: don't mess with IXOFF setting if
-         USE_XON_XOFF defined
-
-doc/{bash.1,bashref.texi}
-       - add some text to the description of set -e clarifying its effect
-         on shell functions and shell function execution.  Suggested by
-         Rainer Blome <rainer.blome@gmx.de>
-
-bashline.c
-       - edit_and_execute_command: increment current_command_line_count before
-         adding partial line to command history (for command-oriented-history
-         because of rl_newline at beginning of function), then reset it to 0
-         before adding the dummy history entry to make sure the dummy entry
-         doesn't get added to previous incomplete command.  Partial fix for
-         problem reported by Peng Yu <pengyu.ut@gmail.com>
-
-                                  7/24
-                                  ----
-configure.in
-       - interix: define RECYCLES_PIDS.  Based on a report from Michael
-         Haubenwallner <michael.haubenwallner@salomon.at>
-
-                                  7/26
-                                  ----
-jobs.c
-       - make_child: call bgp_delete on the newly-created pid unconditionally.
-         Some systems reuse pids before cycling through an entire set of
-         CHILD_MAX/_SC_CHILD_MAX unique pids.  This is no longer dependent
-         on RECYCLES_PIDS.  Based on a report from Michael Haubenwallner
-         <michael.haubenwallner@salomon.at>
-
-support/shobj-conf
-       - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We
-         can finally kill Panther
-
-                                  7/28
-                                  ----
-subst.c
-       - command_substitute: make sure last_made_pid gets reset if make_child
-         fails
-
-execute_cmd.c
-       - execute_command_internal: case cm_simple: decide whether or not to
-         wait_for a child if already_making_children is non-zero, indicates
-         that there is an unwaited-for child.  More of fix for bug report
-         from Michael Haubenwallner <michael.haubenwallner@salomon.at>
-
-jobs.c
-       - make_child: call delete_old_job (new_pid) unconditionally, don't
-         bother to check whether or not pid wrap occurred.  Rest of fix for
-         bug report from Michael Haubenwallner
-         <michael.haubenwallner@salomon.at>
-
-                                  7/29
-                                  ----
-shell.c
-       - subshell_exit: new function, exits the shell (via call to sh_exit())
-         after calling any defined exit trap
-
-externs.h
-       - subshell_exit: new extern declaration
-
-execute_cmd.c
-       - execute_command_internal: make sure to call subshell_exit for
-         {} group commands executed asynchronously (&).  Part of fix for
-         EXIT trap bug reported by Maarten Billemont <lhunath@lyndir.com>
-
-sig.c
-       - reset_terminating_signals: make sure to set termsigs_initialized back
-         to 0, so a subsequent call to initialize_terminating_signals works
-         right.  Rest of fix for bug reported by Maarten Billemont
-         <lhunath@lyndir.com>
-
-{execute_cmd,general,jobs,mailcheck,mksyntax,test}.c
-builtins/{cd,fc,pushd,ulimit}.def
-lib/malloc/getpagesize.h
-lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c
-       - make inclusion of <sys/param.h> dependent on HAVE_SYS_PARAM_H
-         consistently
-
-                                   8/6
-                                   ---
-lib/readline/histexpand.c
-       - history_expand_internal: now takes an additional argument saying
-         whether the history expansion occurs within a quoted string, set to
-         the open quote character
-       - history_expand_internal: use new argument instead of checking prev
-         char and initializing quoted_search_delimiter, pass qc directly to
-         get_history_event, where it allows a matching quote to terminate a
-         string defining an event
-       - history_expand: change single-quote handling code so that if
-         history_quotes_inhibit_expansion is 0, single quotes are treated
-         like double quotes
-       - history_expand: change call to history_expand_internal to pass new
-         argument of `"' if double-quoted string, `'' if single-quoted string;
-         this lets history_expand decide what is a quoted string and what
-         is not
-
-                                   8/7
-                                   ---
-configure.in
-       - AC_CANONICAL_BUILD: invoke for later use
-
-lib/readline/macro.c
-       - _rl_prev_macro_key: new function, inverse of _rl_next_macro_key:
-         backs up the index into the current macro by 1
-
-lib/readline/rlprivate.h
-       - _rl_prev_macro_key: extern declaration
-
-
-lib/readline/readline.c
-       - _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char
-         if we're currently reading from a macro; call _rl_prev_macro_key
-         instead.  Fixes bug reported by Clark Wang <clark.wang@oracle.com>
-
-                                  8/13
-                                  ----
-builtins/evalstring.c
-       - evalstring(): new function, wrapper around parse_and_execute.
-         make sure we handle cases where parse_and_execute can call `return'
-         and short-circuit without cleaning up properly.  We call
-         parse_and_execute_cleanup() then jump to the previous-saved return
-         location
-
-builtins/common.h
-       - extern declaration for evalstring()
-
-builtins/eval.def
-       - eval_builtin: make sure we handle `eval " ... return"' in contexts
-         where `return' is valid by calling evalstring().  Fixes bug with
-         `eval return' in sourced files reported by Clark Wang
-         <dearvoid@gmail.com>
-
-trap.c
-       - run_pending_traps: call evalstring instead of parse_and_execute.
-         XXX - still needs to handle saving and restoring token state in the
-         presence of `return'; could use unwind_protects for that
-
-builtins/mapfile.def
-       - run_callback: call evalstring instead of parse_and_execute
-
-                                  8/15
-                                  ----
-bashline.c
-       - bash_filename_stat_hook: make sure we don't free local_dirname
-         before using it to canonicalize any expanded filename.  Make sure
-         it always points to *dirname and only free it if we're replacing
-         it.
-
-lib/readline/complete.c
-       - append_to_match: make sure we call rl_filename_stat_hook with
-         newly-allocated memory to avoid problems with freeing it twice
-
-                                  8/17
-                                  ----
-variables.c,config-top.h
-       - if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the
-         code that allows indexed arrays to be exported is enabled and
-         included
-
-                                  8/19
-                                  ----
-shell.c
-       - call start_debugger from main() only if dollar_vars[1] != 0 (close
-         enough to a non-interactive shell, since we can be interactive with
-         -i while running a shell script).  Fixes oddity reported by
-         Techlive Zheng <techlivezheng@gmail.com>
-
-                                  8/20
-                                  ----
-arrayfunc.c
-       - quote_array_assignment_chars: don't bother quoting if the word has
-         not been marked as an assignment (W_ASSIGNMENT)
-       - quote_array_assignment_chars: turn on W_NOGLOB in the word flags
-         so assignment statements don't undergo globbing.  Partial fix for
-         problems reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  8/21
-                                  ----
-command.h
-       - W_NOBRACE: new word flag that means to inhibit brace expansion
-
-subst.c
-       - brace_expand_word_list: suppress brace expansion for words with
-         W_NOBRACE flag
-
-                                  8/22
-                                  ----
-builtins/read.def
-       - read_builtin: don't call dequote_string on what we've read, even if
-         we saw an escape character, unless (input_string && *input_string).
-         We may have escaped an IFS whitespace character.  Fixes seg fault
-         reported by <armandsl@gmail.com>
-
-execute_cmd.c
-       - execute_command_internal: set the_printed_command_except trap when
-         about to execute a ( ... ) user subshell.  For now, set it only if
-         ERR is trapped; can relax that later.  Fixes bug reported by
-         Mike Frysinger <vapier@gentoo.org>
-
-                                  8/23
-                                  ----
-jobs.c
-       - remove references to first_pid and pid_wrap, since we're not using
-         them for anything anymore
-
-                                  8/24
-                                  ----
-subst.c
-       - changes for W_NOBRACE everywhere appropriate: so it can be displayed
-         for debugging, and passed out of expand_word_internal
-
-doc/{bash.1,bashref.texi}
-       - small changes to make it clearer that the = and == operators are
-         equivalent, and will cause pattern matching when used with [[.
-         From a question from Michal Soltys <soltys@ziu.info>
-
-doc/bashref.texi
-       - some small formatting changes from Karl Berry <karl@freefriends.org>
-
-                                  8/27
-                                  ----
-lib/readline/doc/{history,rlman,rluserman}.texi
-       - some small formatting changes from Karl Berry <karl@freefriends.org>
-
-arrayfunc.c
-       - assign_array_element_internal, assign_compound_array_list,
-         unbind_array_element, array_value_internal: changes to make
-         assignment statements to negative indices (a[-1]=2) and unsetting
-         array elements using negative indices (unset 'a[-1]') work.
-         From suggestions by Dennis Williamson <dennistwilliamson@gmail.com>
-         and Chris F. A. Johnson <chris@cfajohnson.com>
-
-subst.c
-       - array_length_reference: changes to make length references to array
-         elements using negative indices (${#a[-1]}) work
-
-                                  8/28
-                                  ----
-doc/{bash.1,bashref.texi}
-       - document new treatment of negative indices to indexed arrays when
-         assigning, referencing, calculating length, and unsetting
-
-                                  8/29
-                                  ----
-shell.c
-       - show_shell_usage: add -l to list of shell invocation options (short
-         for --login).  From Red Hat bug 852469
-
-configure.ac
-       - renamed from configure.in, as latest autoconf versions want.  Patches
-         Stefano Lattarini <stefano.lattarini@gmail.com>
-
-MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles
-       - configure.in -> configure.ac
-
-                                   9/1
-                                   ---
-
-parse.y
-       - read_token_word: allow words like {array[ind]} to be valid redirection
-         words for constructs like {x}<file
-
-redir.c
-       - redir_varassign: bind_var_to_int already handles array assignments,
-         so don't need to do anything more for things like {a[i]}<file
-       - redir_varvalue: changes to allow references to {a[i]} when
-         performing redirections using valid_array_reference and
-         get_array_value.  Adds functionality requested most recently by
-         <unknown@vmw-les.eng.vmware.com>
-
-lib/readline/display.c
-       - update_line: if the first difference between the old and new lines
-         is completely before any invisible characters in the prompt, we
-         should not adjust _rl_last_c_pos, since it's before any invisible
-         characters.  Fixed in two places
-       - prompt_modechar: return a character indicating the editing mode:
-         emacs (@), vi command (:), or vi insert (+)
-       - _rl_reset_prompt: new function, just calls rl_expand_prompt.  Will be
-         inlined, placeholder for more changes
-       - expand_prompt: if show-mode-in-prompt is enabled, add a character to
-         the front of the prompt indicating the editing mode, adjusting the
-         various variables as appropriate to keep track of the number of
-         visible characters and number of screen positions
-
-lib/readline/bind.c
-       - show-mode-in-prompt: new bindable boolean variable, shadowed by
-         _rl_show_mode_in_prompt variable
-       - hack_special_boolean_var: call _rl_reset_prompt when toggling or
-         setting show-mode-in-prompt
-
-lib/readline/readline.c
-       - readline_internal_setup: make sure the correct vi mode keymap is set
-         before expanding the prompt string for the first time
-
-lib/readline/misc.c
-       - rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're
-         showing the editing mode in the prompt
-
-lib/readline/rlprivate.h
-       - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations
-
-lib/readline/vi_mode.c
-       - rl_vi_insertion_mode: call _rl_reset_prompt
-       - rl_vi_movement_mode: call _rl_reset_prompt.  Finishes changes for
-         showing mode in prompt string, originally requested by Miroslav
-         Koskar <mkoskar@gmail.com> and most recently by Jordan Michael
-         Ziegler <jziegler@bnl.gov>
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - document new show-mode-in-prompt variable, off by default
-
-                                   9/3
-                                   ---
-
-jobs.c
-       - set_childmax: new function, external mechanism for other parts of
-         the shell to set js.c_childmax, the number of saved exited child
-         statuses to remember
-jobs.h
-       - set_childmax: extern declaration
-
-variables.c
-       - CHILD_MAX: new special variable, with sv_childmax function to
-         run when it changes.  Setting CHILD_MAX to a value greater than
-         zero but less than some maximum (currently 8192) sets the number of
-         exited child statuses to remember.  set_childmax (jobs.c) ensures
-         that the number does not drop below the posix-mandated minimum
-         (CHILD_MAX)
-
-doc/{bash.1,bashref.texi}
-       - CHILD_MAX: document new meaning and action when variable is set
-
-                                   9/5
-                                   ---
-redir.c
-       - redir_varassign: call stupidly_hack_special_variables after
-         assigning fd number to specified variable, so we can use constructs
-         like {BASH_XTRACEFD}>foo.  Suggested by Pierre Gaston
-         <pierre.gaston@gmail.com>
-
-                                   9/8
-                                   ---
-expr.c
-       - readtok: invalidate previous contents of `curlval' before freeing
-         and reallocating tokstr (which, chances are, will get the same
-         pointer as before and render curlval inconsistent).  Fixes other
-         bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                   9/9
-                                   ---
-lib/readline/complete.c
-       - rl_username_completion_function: protect call to setpwent() with
-         #ifdef (HAVE_GETPWENT)/#endif.  Fixes bug reported by
-         Gerd Hofmann <gerd.hofmann.nbg@googlemail.com>
-
-lib/readline/display.c
-       - rl_message: second and subsequent calls to rl_message can result in
-         local_prompt being overwritten with new values (e.g., from the
-         successive calls displaying the incremental search string).  Need
-         to free before overwriting if it's not the same as the value saved
-         in saved_local_prompt.  Fixes memory leak reported by
-         Wouter Vermaelen <vermaelen.wouter@gmail.com>
-
-lib/readline/{terminal.c,rlprivate.h}
-       - move CUSTOM_REDISPLAY_FUNC and CUSTOM_INPUT_FUNC defines from
-         terminal.c to rlprivate.h so other files can use them
-
-expr.c
-       - expr_streval: if noeval is non-zero, just return 0 right away,
-         short-circuiting evaluation completely.  readtok will leave curtok
-         set correctly without re-entering the evaluator at all.  Rest of
-         fix for bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  9/11
-                                  ----
-
-parse.y
-       - parse_comsub: make sure the `reserved word ok in this context' flag
-         is preserved after we read `do' followed by whitespace.  Fixes bug
-         reported by Benoit Vaugon <benoit.vaugon@gmail.com>
-
-                                  9/13
-                                  ----
-configure.ac,config.h.in
-       - enable-direxpand-default: new configure option, turns the `direxpand'
-         shell option on by default
-
-bashline.c
-       - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if
-         DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero
-
-doc/bashref.texi
-       - enable-direxpand-default: document new configure option
-
-                                  9/14
-                                  ----
-shell.c
-       - --protected: make option valid only when wordexp is compiled into
-         the shell.  Fix from Roman Rakus <rrakus@redhat.com>
-
-configure.ac
-       - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
-         Joachim Schmitz <jojo@schmitz-digital.de>
-
-                                  9/16
-                                  ----
-subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c
-       - minor code cleanups from Joachim Schmitz <jojo@schmitz-digital.de>
-
-lib/readline/colors.h
-       - workaround for HP NonStop compiler issue with <stdbool.h> from
-         Joachim Schmitz <jojo@schmitz-digital.de>
-
-                                  9/17
-                                  ----
-builtins/printf.def
-       - printf_builtin: handle localtime returning NULL, as can happen when
-         encountering overflow.  Bug report and initial fix from
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - emphasize that brace expansion using character ranges ({a..c}) acts
-         as if the C locale were in use.  Prompted by message from
-         Marcel Giannelia <info@skeena.net>
-
-                                  9/20
-                                  ----
-lib/sh/wcsnwidth.c
-       - wcsnwidth: new function, variant of wcwidth, returns the number of
-         wide characters from a string that will be displayed to not exceed
-         a specified max column position
-
-                                  9/21
-                                  ----
-builtins/help.def
-       - show_builtin_command_help: break code that displays the short-doc
-         for each builtin in two columns into a new function: dispcolumn
-       - wdispcolumn: multibyte-char version of dispcolumn; uses wide
-         chars and printf "%ls" format.  Fixes problem reported by
-         Nguyá»n Thái Ngá»c Duy <pclouds@gmail.com>
-
-                                  9/22
-                                  ----
-execute_cmd.c
-       - execute_disk_command: before running the command-not-found hook,
-         call kill_current_pipeline() to make sure we don't add processes
-         to an existing pipeline or wait for processes erroneously
-
-                                  9/23
-                                  ----
-lib/readline/input.c
-       - rl_input_available_hook: new hook function, called from
-         _rl_input_available (or _rl_input_queued) to return whether or not
-         input is available wherever the input source is
-
-lib/readline/doc/rltech.texi
-       - rl_input_available_hook: document
-
-                                  9/27
-                                  ----
-lib/glob/sm_loop.c:
-       - GMATCH: after one or more `*', an instance of ?(x) can match zero or
-         1 times (unlike ?, which has to match one character).  The old code
-         failed if it didn't match at least once.  Fixes `a*?(x)' bug.
-       - GMATCH: if we hit the end of the search string, but not the end of
-         the pattern, and the rest of the pattern is something that can
-         match the NUL at the end of the search string, we should successfully
-         match.  Fixes `a*!(x)' bug reported by <hans1worst@gmail.com>
-
-                                  10/2
-                                  ----
-command.h
-       - add c_lock member to coproc structure for future use to tell who is
-         manipulating it
-
-execute_cmd.c
-       - execute_coproc: block SIGCHLD while parent is forking coproc
-         process and adding pid to sh_coproc struct to avoid race condition
-         where child is reaped before the pid is assigned and the coproc is
-         never marked as having died.  Fixes race condition identified by
-         Davide Baldini <baldiniebaldini@gmail.com>
-       - add assignments to c_lock member of struct coproc in various
-         functions that manipulate it; was used to identify race condition
-       - coproc_pidchk: don't call coproc_dispose to avoid using malloc and
-         other functions in a signal handler context
-       - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while
-         manipulating the sh_coproc struct
-
-                                  10/6
-                                  ----
-lib/readline/complete.c
-       - rl_display_match_list: if printing completions horizontally, don't
-         bother with spacing calculations if limit == 1, which means we are
-         printing one completion per line no matter what.  Fixes bug
-         reported by David Kaasen <kaasen@nvg.ntnu.no>
-
-                                  10/7
-                                  ----
-builtins/declare.def
-       - declare_internal: add error checking for nameref attribute and
-         variable assignments: self-references, attempts to make an array
-         variable a nameref
-
-subst.c
-       - parameter_brace_expand: handle parameter_brace_expand_word returning
-         &expand_param_fatal or &expand_param_error and return the appropriate
-         error value
-       - parameter_brace_expand_word: if a nameref variable's value is not a
-         valid identifier, return an error
-       - param_expand: if a nameref variable's value is not a valid identifier,
-         return an error
-
-test.c
-       - unary_operator: add new -R variable, returns true if variable is set
-         and has the nameref attribute. From ksh93
-
-builtins/test.def
-       - add -R to description of conditional commands for help test
-
-doc/{bash.1,bashref.texi}
-       - document new -R unary conditional operator
-
-                                  10/13
-                                  -----
-trap.c
-       - check_signals_and_traps: new function, convenience function for the
-         rest of the shell to check for pending terminating and interrupt
-         signals, and to check for and process any pending traps
-       - any_signals_trapped: new function, returns non-zero if any signals
-         are trapped and -1 if not
-
-trap.h
-       - extern declaration for check_signals_and_traps
-
-bashline.c
-       - bashline_reset: make sure we reset the event hook
-       - bash_event_hook: call check_signals_and_traps instead of just
-         checking for terminating signals so we can run pending traps and
-         react to interrupts, and reset the event hook when we're done
-
-
-                                  10/14
-                                  -----
-trap.c
-       - trap_handler: if executing in a readline signal handler context,
-         call bashline_set_event_hook to install bash_event_hook to process
-         the signal (if bash cares about it)
-
-sig.c
-       - sigint_sighandler: call bashline_set_event_hook to set the event
-         hook if we're executing in a readline signal handler context
-
-lib/readline/input.c
-       - rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught
-         signal is SIGINT or SIGQUIT rather than waiting until the next time
-         around the loop
-       - rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow
-         an application signal handler to set the event hook in its own
-         signal handler (e.g., like bash trap_handler or sigint_sighandler)
-
-
-parse.y
-       - yy_readline_get: don't set interrupt_immediately before we call
-         readline().  Inspired by report from lanshun zhou
-         <zls.sogou@gmail.com>
-
-input.c
-       - getc_with_restart: add call to run_pending_traps after call to
-         CHECK_TERMSIG
-
-lib/sh/zread.c
-       - zread: call check_signals_and_traps if read() returns -1/EINTR
-         instead of just ignoring the EINTR and deferring handling any
-         signal that generated it
-
-builtins/mapfile.def
-       - mapfile: don't set interrupt_immediately before calling zgetline()
-         (which uses zread internally)
-
-builtins/read.def
-       - read_builtin: don't set interrupt_immediately before calling zread
-         (moved code around so that it was only being set right around calls
-         to zread to avoid signal handler conflicts).  Inspired by report
-         from lanshun zhou <zls.sogou@gmail.com>
-       - edit_line: don't set interrupt_immediately around call to readline()
-       - include shmbutil.h
-       - read_builtin: don't call read_mbchar unless is_basic(c) returns
-         false for the character we just read
-
-                                  10/15
-                                  -----
-sig.c
-       - throw_to_top_level: if interrupt_state is non-zero, make sure that
-         last_command_exit_value reflects 128+SIGINT if it's not already
-         greater than 128
-
-                                  10/20
-                                  -----
-builtins/wait.def
-       - WAIT_RETURN: set wait_signal_received back to 0 for the potential
-         next call to wait
-
-quit.h
-       - CHECK_WAIT_INTR: macro to check whether trap_handler handled a
-         signal and set wait_signal_received; longjmp to wait_intr_buf in
-         that case
-
-jobs.c
-       - wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call
-         CHECK_TERMSIG to check for terminating signals
-       - wait_sigint_handler: don't longjmp out of the wait builtin unless
-         interrupt_immediately is set; otherwise just SIGRETURN from the
-         handler
-       - wait_sigint_handler: if interrupt_immediately not set, but we are
-         executing in the wait builtin and SIGINT is not trapped, treat it
-         as a `normally received' SIGINT: restore the signal handler and
-         send SIGINT to ourselves
-       - waitchld: when in posix mode and running SIGCHLD traps, don't longjmp
-         to wait_intr_buf (and let wait be interrupted) if we're running from
-         a signal handler.  Wait for CHECK_WAIT_INTR to do the longjmp.
-         run_pending_traps will run the SIGCHLD trap later
-
-nojobs.c
-       - reap_zombie_children, wait_for_single_pid, wait_for: call
-         CHECK_WAIT_INTR where we call CHECK_TERMSIG
-       - wait_sigint_handler: don't longjmp out of the wait builtin unless
-         interrupt_immediately is set; otherwise just SIGRETURN from the
-         handler
-
-trap.c
-       - trap_handler: make sure wait_signal_received is set if the wait
-         builtin is executing, and only longjmp if interrupt_immediately is
-         set.  This whole set of fixes was prompted by report from
-         lanshun zhou <zls.sogou@gmail.com>
-
-                                  10/24
-                                  -----
-lib/glob/glob.c
-       - glob_filename: only check directory_name for globbing chars if
-         it's of non-zero length
-
-lib/sh/strchrnul.c
-       - new simpler implementation
-
-subst.c
-       - command_substitute: call set_shellopts after turning off errexit
-         in subshells so it's reflected in $SHELLOPTS
-
-                                  11/7
-                                  ----
-builtins/evalstring.c
-       - parse_and_execute: treat ERREXIT case like reader_loop does: set
-         variable_context to 0 before longjmping back to top_level. Don't
-         run the unwind-protect context to avoid side effects from popping
-         function contexts.  Part of fix for problem reported by Nikolai
-         Kondrashov <nikolai.kondrashov@redhat.com>
-
-execute_cmd.c
-       - execute_simple_command: call unlink_fifo_list only if this is the
-         last element of a pipeline (or not in a pipeline), rather than for
-         every child.  Fixes difference in behavior between /dev/fd and
-         FIFOs reported by Zev Weiss <zev@bewilderbeest.net>
-       - execute_null_command: do the same thing in the parent branch after
-         make_child
-
-                                  11/14
-                                  -----
-subst.c
-       - parameter_brace_expand: a variable is null if it's special ($@, $*),
-         the expansion occurs within double quotes, and the expansion turns
-         into a quoted null.  Fixes debian bug 692447 reported by
-         Matrosov Dmitriy <sgf.dma@gmail.com>
-
-jobs.c
-       - run_sigchld_trap: make sure `running_trap' sentinel is set
-         appropriately
-       - waitchld: only run the sigchld trap if we're not in a signal
-         handler, not running a trap, and executing the wait builtin.
-         Otherwise, queue for later handling.  We still run one instance
-         of the trap handler per exited child.  Bulk of fix for bug
-         reported by Elliott Forney <idfah@cs.colostate.edu>
-
-trap.c
-       - queue_sigchld_trap: set catch_flag so run_pending_traps notices,
-         and set trapped_signal_received for completeness.  Rest of fix
-         for bug reported by Elliott Forney <idfah@cs.colostate.edu>
-
-lib/malloc/malloc.c
-       - block_signals: renamed to _malloc_block_signals, made public
-       - unblock_signals: renamed to _malloc_unblock_signals, made public
-
-lib/malloc/imalloc.h
-       - extern declarations for _malloc_{un,}block_signals
-
-lib/malloc/table.c
-       - mregister_alloc, mregister_free: block signals around table
-         manipulation
-
-                                  11/15
-                                  -----
-trap.c
-       - run_pending_traps: set SIG_INPROGRESS flag around calls to
-         run_sigchld_handler so other parts of the shell know that the
-         SIGCHLD trap handler is executing
-       - run_pending_traps: if we get a situation where we are looking at
-         running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER
-         and the SIG_INPROGRESS flag is set, just skip it.  This is possible
-         if run_pending_traps is called from a SIGCHLD trap handler run by
-         run_sigchld_trap
-
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
-       - corrected description of the effect of `set history-size 0'.  Report
-         from Vesa-Matti J Kari <vmkari@cc.helsinki.fi>
-
-include/stdc.h
-       - CPP_STRING: new define, replaces __STRING
-
-lib/malloc/{malloc.c,imalloc.h}
-       - replace __STRING with CPP_STRING
-
-                                  11/16
-                                  -----
-lib/readline/bind.c
-       - sv_histsize: if argument evaluates to a value < 0, unstifle the
-         history
-
-                                  11/22
-                                  -----
-redir.c
-       - do_redirection_internal: if we have REDIR_VARASSIGN set in the
-         redirection flags and we set up `redirector' using fcntl or dup2,
-         don't add a redirect to make sure it stays open.  Let the
-         script programmer manage the file handle.  Fixes bug reported by
-         Sam Liddicott <sam@liddicott.com>
-
-                                  11/24
-                                  -----
-jobs.c
-       - wait_for_any_job: new function, waits for an unspecified background
-         job to exit and returns its exit status.  Returns -1 on no background
-         jobs or no children or other errors.  Calls wait_for with new
-         sentinel value ANY_PID
-       - wait_for: changes to handle argument of ANY_PID: don't look up or
-         try to modify the child struct, only go through the wait loop once.
-         Return -1 if waitpid returns no children
-
-jobs.h
-       - ANY_PID: new define
-
-builtins/wait.def
-       - new option: -n. Means to wait for the next job and return its exit
-         status.  Returns 127 if there are no background jobs (or no
-         children).  Feature most recently requested by Elliott Forney
-         <idfah@cs.colostate.edu>
-
-doc/{bash.1,bashref.texi}
-       - document new `wait -n' option
-
-execute_cmd.c
-       - execute_command_internal: save make_command_string () result in a
-         temp variable before calling savestring() on it; avoids evaluating
-         make_command_string() result twice.  Fix from John E. Malmberg
-         <wb8tyw@qsl.net>
-
-                                  11/28
-                                  -----
-
-builtins/declare.def
-       - declare_internal: if an array variable is declared using `declare -a'
-         or `declare -A', but not assigned a value, set the `invisible'
-         attribute so the variable does not show up as set.  Fix for bug
-         about variable initialization reported by Tim Friske <me@timfriske.com>
-
-builtins/{mapfile,read}.def
-       - after calling find_or_make_array_variable, make sure the invisible
-         flag is turned off, in case the variable was declared previously
-         using `declare -a' or `declare -A'.  Side effect of above change to
-         declare_internal
-
-subst.c
-       - shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into
-         the list of options passed to make_internal_declare as appropriate.
-         Fix for bug reported by Tim Friske <me@timfriske.com>
-
-                                  11/30
-                                  -----
-test.c
-       - unary_op: make sure -v and -n check that the variable is not marked
-         as invisible before calling var_isset.  Fix for bug reported by Tim
-         Friske <me@timfriske.com>
-
-                                  12/2
-                                  ----
-subst.c
-       - process_substitute: turn off the `expanding_redir' flag, which
-         controls whether or not variables.c:find_variable_internal uses the
-         temporary environment to find variables.  We want to use the
-         temp environment, since we don't have to worry about order of
-         evaluation in a subshell.  Fixes bug reported by Andrey Borzenkov
-         <arvidjaar@gmail.com>
-
-                                  12/4
-                                  ----
-lib/glob/glob.c
-       - glob_filename: changes to avoid null filenames and multiple entries
-         returned for patterns like **/** (globstar enabled).  Fixes bug
-         reported by Ulf Magnusson <ulfalizer@gmail.com>
-
-                                  12/10
-                                  -----
-lib/glob/glob.c
-       - glob_filename: finish up a series of changes to make globstar-style   
-         globbing more efficient, avoid more duplicate filenames, and be more
-         compatible with other shells that implement it
-               o collapse a sequence of **/**/** to one **
-               o note when the directory name is all ** or ends in ** so we
-                 can treat it specially when the filename is **
-         All inspired by report from Andrey Borzenkov <arvidjaar@gmail.com>
-
-lib/sh/zread.c
-       - zreadn: new function, like zread, but takes an additional argument
-         saying how many bytes to read into the local buffer.  Can be used to
-         implement `read -N' without so many one-byte calls to zreadc.  Code
-         from Mike Frysinger <vapier@gentoo.org>
-
-                                  12/12
-                                  -----
-lib/glob/sm_loop.c
-       - PATSCAN (glob_patscan): if passed string already points to end of
-         pattern, return NULL immediately.  Fixes problem with
-         extglob_skipname reported by Raphaël Droz <raphael.droz@gmail.com>
-
-                                  12/13
-                                  -----
-execute_cmd.c
-       - execute_coproc: handle the command's exit status being inverted
-         (an oversight).  Fixes bug reported by DJ Mills
-         <danielmills1@gmail.com> and Andreas Schwab <schwab@linux-m68k.org>
-
-                                  12/14
-                                  -----
-lib/readline/readline.c
-       - bind_arrow_keys_internal: add MINGW key bindings for Home, End,
-         Delete, and Insert keys.  Fix from Pierre Muller
-         <pierre.muller@ics-cnrs.unistra.fr>
-
-builtins/printf.def
-       - printf_builtin: '%()T' conversion: if there is no argument supplied,
-         behave as if -1 had been supplied (current time).  ksh93-like feature
-         suggested by Clark Wang <dearvoid@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - document new printf %()T default argument behavior
-
-                                  12/15
-                                  -----
-lib/readline/display.c
-       - displaying_prompt_first_line: new variable, indicates whether or
-         not the first line of output is displaying the prompt.  Always true
-         in normal mode, sometimes false in horizontal scrolling mode
-       - rl_redisplay: set displaying_prompt_first_line to true unless we
-         are in horizontal mode; set to false in horizontal mode if the left
-         margin of the displayed line is greater than the end of the prompt
-         string
-       - rl_redisplay: when in horizontal scroll mode, don't adjust
-         _rl_last_c_pos by the wrap offset unless the line is displaying
-         a prompt containing invisible chars
-       - update line: don't adjust _rl_last_c_pos by the wrap offset unless
-         the line is displaying a prompt containing invisible chars
-       - update_line: if shrinking the line by reducing the number of
-         displayed characters, but we have already moved the cursor to the
-         beginning of the line where the first difference starts, don't
-         try to delete characters
-
-builtins/read.def
-       - unbuffered_read: set to 2 if invoked as `read -N'
-       - if unbuffered_read is set to 2, compute the number of chars we
-         need to read and read that many with zreadn.  Posix mode still
-         uses zreadintr.  Code from Mike Frysinger <vapier@gentoo.org>
-
-doc/{bash.1,bashref.texi}
-       - read: make it clear that if read times out, it saves any input
-         read to that point into the variable arguments.  Report from
-         Fiedler Roman <Roman.Fiedler@ait.ac.at>
-
-subst.c
-       - command_substitute: change direct assignment of exit_immediately_on_error
-         to use change_flag ('e', FLAG_OFF) instead
-
-flags.c
-       - use errexit_flag as the variable modified by changes to the -e
-         option, reflect those changes to exit_immediately_on_error
-
-execute_cmd.c
-       - execute_builtin: new global variable, builtin_ignoring_errexit, set
-         to 0 by default and set to 1 if eval/source/command executing in a
-         context where -e should be ignored
-       - execute_builtin: set exit_immediately_on_error to errextit_flag
-         after executing eval/source/command in a context where -e should
-         be ignored
-
-flags.c
-       - if builtin_ignoring_errexit is set, changes to errexit_flag are
-         not reflected in the setting of exit_immediately_on_error.  Fixes
-         bug reported by Robert Schiele <rschiele@gmail.com>
-
-                                  12/23
-                                  -----
-include/posixjmp.h
-       - setjmp_nosigs: new define, call setjmp in such a way that it will
-         not manipulate the signal mask
-
-{expr,test,trap}.c
-       - setjmp_nosigs: call instead of setjmp; don't need to manipulate
-         signal mask
-
-builtins/read.def
-       - read_builtin: setjmp_nosigs: call instead of setjmp; don't need
-         to manipulate signal mask
-
-builtins/evalstring.c:
-       - parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need
-         to manipulate signal mask
-       - parse_string: setjmp_nosigs: call instead of setjmp; don't need
-         to manipulate signal mask
-       - parse_and_execute: save and restore the signal mask if we get a
-         longjmp that doesn't cause us to return or exit (case DISCARD)
-
-                                  12/24
-                                  -----
-general.c
-       - bash_tilde_expand: only set interrupt_immediately if there are no
-         signals trapped; we want to jump to top level if interrupted but
-         not run any trap commands
-
-                                  12/25
-                                  -----
-jobs.c
-       - run_sigchld_trap: no longer set interrupt_immediately before calling
-         parse_and_execute, even if this is no longer run in a signal handler
-         context
-
-input.c
-       - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG
-
-parse.y
-       - yy_stream_get: now that getc_with_restart calls QUIT, don't need to
-         set interrupt_immediately (already had call to run_pending_traps)
-
-execute_cmd.c
-       - execute_subshell_builtin_or_function,execute_function,execute_in_subshell:
-         setjmp_nosigs: call instead of setjmp when saving return_catch; don't
-         need to manipulate signal mask
-       - execute_subshell_builtin_or_function,execute_in_subshell:
-         setjmp_nosigs: call instead of setjmp where appropriate when saving
-         top_level; don't need to manipulate signal mask if we're going to
-         exit right away
-
-subst.c
-       - command_substitute: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-       - command_substitute: setjmp_nosigs: call instead of setjmp where
-         appropriate when saving top_level; don't need to manipulate signal
-         mask if we're going to exit right away
-
-trap.c
-       - run_exit_trap: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-       - run_exit_trap: setjmp_nosigs: call instead of setjmp where
-         appropriate when saving top_level; don't need to manipulate signal
-         mask if we're going to exit right away
-       - _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-
-builtins/evalfile.c
-       - _evalfile: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-
-builtins/evalstring.c
-       - evalstring: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-
-shell.c
-       - main: setjmp_nosigs: call instead of setjmp where appropriate when
-         saving top_level; don't need to manipulate signal mask if we're
-         going to exit right away
-       - run_one_command: setjmp_nosigs: call instead of setjmp where
-         appropriate when saving top_level; don't need to manipulate signal
-         mask if we're going to exit right away
-       - run_wordexp: setjmp_nosigs: call instead of setjmp where
-         appropriate when saving top_level; don't need to manipulate signal
-         mask if we're going to exit right away
-
-eval.c
-       - reader_loop: save and restore the signal mask if we get a longjmp
-         that doesn't cause us to return or exit (case DISCARD)
-
-                                  12/26
-                                  -----
-parse.y
-       - shell_input_line_{index,size,len}: now of type size_t; in some cases
-         the unsigned property makes a difference
-       - STRING_SAVER: saved_line_{size,index} now of type size_t
-       - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX;
-         lines longer than that are truncated until read sees a newline;
-         addresses theoretical buffer overflow described by Paul Eggert
-         <eggert@cs.ucla.edu>
-       - set_line_mbstate: size_t changes like shell_getc
-       - shell_getc: if shell_input_line is larger than 32K, free it and
-         start over to avoid large memory allocations sticking around
-
-variables.c
-       - bind_global_variable: new function, binds value to a variable in
-         the global shell_variables table
-
-variables.h
-       - bind_global_variable: new extern declaration
-
-builtins/declare.def
-       - declare_internal: if -g given with name=value, but variable is not
-         found in the global variable table, make sure to call
-         bind_global_variable so the variable is created and modified at
-         global scope.  Fixes a bug where declare -g x=y could modify `x'
-         at a previous function scope
-
-command.h
-       - W_ASSIGNARRAY: new word flag, compound indexed array assignment
-
-subst.h
-       - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in
-         a function context, used by declare -g
-
-execute_cmd.c
-       - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to
-         declaration builtin
-
-subst.c
-       - do_assignment_internal: explicitly handle case where we are
-         executing in a function and we want to create a global array or
-         assoc variable
-       - shell_expand_word_list: call make_internal_declare if -a option
-         given to declaration builtin (W_ASSIGNARRAY); handle -g option with
-         it (W_ASSNGLOBAL).  Fixes inconsistency noticed by Vicente Couce
-         Diaz <vituko@gmail.com>, where declare -ag foo=(bar) could modify
-         array variable foo at previous function scope, not global scope
-
-                                  12/27
-                                  -----
-bashline.c
-       - Minix needs the third argument to tputs to be a void funtion taking
-         an int argument, not an int-returning function.  Fix from
-         John E. Malmberg <wb8tyw@qsl.net> as part of VMS bash port
-
-                                  12/29
-                                  -----
-configure.ac,version.c,patchlevel.h
-       - bash-4.3-devel: new version, new shell compatibility level (43)
-
-subst.c
-       - parameter_brace_patsub: put the bash-4.2 code back in from the
-         change of 3/3 that runs the replacement string through quote
-         removal, make it dependent on shell_compatibility_level <= 42
-
-builtins/shopt.def
-       - compat42: new shopt option
-       - set_compatibility_level: change logic to set and unset various
-         compat variables and shell_compatibility_level
-
-COMPAT
-       - new documentation for bash-4.3 compatibility changes
-
-doc/{bash.1,bashref.texi}
-       - compat42: document new shopt option
-
-builtins/shopt.def
-       - set_compatibility_opts: new function, sets the various shopt
-         compat variables based on the value of shell_compatibility_level
-
-builtins/common.h
-       - set_compatibility_opts: new extern declaration
-
-variables.c
-       - BASH_COMPAT: new special variable; sets the shell compatibility
-         level.  Accepts values in decimal (4.2) or integer (42) form;
-         Unsetting variable, setting it to empty string, or setting it to
-         out-of-range value sets the shell's compatibility level to the
-         default for the current version.  Valid values are 3.1/31 through
-         the current version
-       - sv_shcompat: new function implementing logic for BASH_COMPAT
-
-variables.h
-       - sv_shcompat: new extern declaration
-
-doc/{bash.1,bashref.texi}
-       - BASH_COMPAT: description of new variable
-
-lib/readline/complete.c
-       - _rl_colored_stats: default back to 0 for 4.3 release branch
-
-                                1/5/2013
-                                --------
-quit.h
-       - remove spurious call to itrace in CHECK_WAIT_INTR
-
-bashline.c
-       - bash_event_hook: if we're going to jump to top_level, make sure we
-         clean up after readline() by calling rl_cleanup_after_signal().
-         Fixes bug reported against devel branch by Raphaël Droz
-         <raphael.droz@gmail.com>
-       - bash_event_hook: reset the event hook before checking for signals
-         or traps in case we longjmp
-
-doc/{bash.1,bashref.texi}
-       - small additions to the set -e section to make it more clear that
-         contexts where -e is ignored extend to compound commands as well
-         as shell functions
-
-lib/readline/readline.h
-       - rl_signal_event_hook: new extern declaration
-
-lib/readline/input.c
-       - rl_signal_event_hook: new variable, hook function to call when a
-         function (currently just read(2)) is interrupted by a signal and
-         not restarted
-       - rl_getc: call rl_signal_event_hook instead of rl_event_hook
-
-lib/readline/doc/rltech.texi
-       - rl_signal_event_hook: document new function
-
-bashline.c
-       - changes to set rl_signal_event_hook instead of rl_event_hook
-
-lib/readline/readline.h
-       - change readline version numbers to 6.3
-
-                                   1/6
-                                   ---
-doc/{bash.1,bashref.texi}
-       - a couple of changes to the descriptions of the ERR trap and its
-         effects based on a message from Rob Nagler <nagler@bivio.biz>
-
-                                   1/9
-                                   ---
-expr.c
-       - expassign: invalidate curlval before freeing and NULLing tokstr to
-         avoid aliasing issues.  Fixes bug reported by Eduardo A. Bustamante
-         López<dualbus@gmail.com>  and Dan Douglas <ormaaj@gmail.com>
-
-braces.c
-       - array_concat: don't be so aggressive in trying to short-circuit. We
-         can only short-circuit if we have a single-element array where the
-         element is an empty string (array[0] == "" array[1] = 0x0).  Existing
-         practice requires us to replicate arrays and prefix or append empty
-         strings.  Fixes bug reported by Eduardo A. Bustamante López
-         <dualbus@gmail.com>
-
-                                  1/11
-                                  ----
-execute_cmd.c
-       - execute_builtin: since mapfile uses evalstring() to run its callbacks
-         internally, just like eval, so it needs to handle the case where the
-         temp environment given to mapfile persists throughout the entire
-         set of callback commands.  This might be a problem with trap also, but
-         trap isn't run in the same way.  Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-                                  1/13
-                                  ----
-redir.c
-       - redirection_error: before expanding the redirection word (if
-         expandable_redirection_filename returns true), disable command
-         substitution during expansion.  Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-subst.c
-       - expand_word_internal: case '\\': if the next character is an IFS
-         character, and the expansion occurs within double quotes, and the
-         character is not one for which backslash retains its meaning, add
-         the (escaped) '\' and the (escaped) character.  Fixes bug reported
-         by Dan Douglas <ormaaj@gmail.com>
-
-                                  1/15
-                                  ----
-builtins/cd.def
-       - cd_builtin: make sure call to internal_getopt handles -e option.
-         Fixes bug reported by <mashimiao.fnst@cn.fujitsu.com>
-
-                                  1/17
-                                  ----
-subst.c
-       - expand_word_list_internal: make sure tempenv_assign_error is
-         initialized to 0
-
-execute_cmd.c
-       - execute_simple_command: make sure tempenv_assign_error is reset to 0
-         after it's tested to see if an error should force the shell to exit.
-         Fixes problem where a the failure of a tempenv assignment preceding
-         a non-special builtin `sticks' and causes the next special builtin
-         to exit the shell.  From a discussion on bug-bash started by
-         douxin <wq-doux@cn.fujitsu.com>
-
-                                  1/20
-                                  ----
-subst.c
-       - parameter_brace_expand_rhs: call stupidly_hack_special_variables
-         after assigning with ${param[:]=word} even if IFS is changing.
-         Suggested by Dan Douglas <ormaaj@gmail.com> [TENTATIVE, needs work
-         on IFS side effects]
-
-command.h
-       - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used
-         yet)
-
-{execute_cmd,subst,variables}.c
-       - removed all code that mentioned W_GLOBEXP
-       - removed mention of gnu_argv_flags and code that set it
-
-                                  1/22
-                                  ----
-subst.c
-       - param_expand: set W_SPLITSPACE if we expand (unquoted) $* and
-         IFS is unset or null so we can be sure to split this on spaces
-         no matter what happens with IFS later
-       - expand_word_internal: note that param_expand returns W_SPLITSPACE
-         in the returned word flags and keep track of that state with
-         `split_on_spaces'
-
-                                  1/23
-                                  ----
-subst.c
-       - expand_word_internal: if split_on_spaces is non-zero, make sure
-         we split `istring' on spaces and return the resultant word.  The
-         previous expansions should have quoted spaces in the positional
-         parameters where necessary.  Suggested by Dan Douglas
-         <ormaaj@gmail.com>
-
-execute_cmd.c
-       - execute_command_internal: make sure any subshell forked to run a
-         group command or user subshell at the end of a pipeline runs any
-         EXIT trap it sets.  Fixes debian bash bug 698411
-         http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411
-
-subst.c
-       - shell_expand_word_list: fix code that creates args for and calls
-         make_internal_declare to avoid calling it twice (missing `else'
-         in 12/26 change)
-       - do_assignment_internal: fix code from 12/26 change to fix problem
-         where an existing assoc variable could be converted to an array
-         without checking `mkassoc'
-
-                                  1/24
-                                  ----
-builtins/evalfile.c
-       - _evalfile: add missing `close (fd)' calls before returning to
-         avoid fd leaks.  Bug and fix from Roman Rakus <rrakus@redhat.com>
-
-                                  1/25
-                                  ----
-builtins/read.def
-       - read_builtin: don't try to play tricks with the top of the unwind-
-         protect stack after read gets a SIGALRM; save input_string to new
-         memory, run the stack, then restore input_string and assign the
-         variables.  Part of fix for bug reported by konsolebox
-         <konsolebox@gmail.com>; the rest of the fix is with the changes in
-         trap and signal handling and doing away with interrupt_immediately
-
-                                  1/26
-                                  ----
-redir.c
-       - redirection_expand, write_here_string, write_here_document: before
-         calling any of the word expansion functions, after setting
-         expanding_redir to 1 (which bypasses the temp environment in the
-         variable lookup functions), call sv_ifs to reset the cached IFS-
-         related variables set by subst.c:setifs().  This ensures that
-         redirections will not get any IFS values that are set in the
-         temporary environment, as Posix specifies.  Then, after the word
-         expansions, after resetting expanding_redir to 0, call sv_ifs
-         again to make sure the cached IFS values are set from any
-         assignments in the temporary environment.  We force executing_builtin
-         to 1 to `fool' the variable lookup functions into using any temp
-         environment, then reset it to its old value after sv_ifs returns.
-         This is what allows read() to use the (cached) IFS variables set
-         in the temp environment. Fixes inconsistency reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-                                  1/29
-                                  ----
-lib/readline/display.c
-       - update_line: fix off-by-one error when updating vis_lbreaks array
-         in a multibyte locale that occurs when moving multibyte chars from
-         one line down to another.  Bug report and fix from Egmont
-         Koblinger <egmont@gmail.com>
-
-                                  1/30
-                                  ----
-configure.ac
-       - changed version to 4.3-alpha
-
-redir.c
-       - redir_open: handle open returning -1/EINTR, which seems to happen
-         a lot with FIFOs and SIGCHLD, and call QUIT to handle other
-         signals that can interrupt open(2).  Bug report and initial fix
-         from Mike Frysinger <vapier@gentoo.org>
-
-                                  1/31
-                                  ----
-subst.c
-       - parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag
-         to parameter_brace_expand_word
-       - parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag
-         is set and we are expanding ${a[@]} or ${a[*]} we set quoted to
-         include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring
-         what we do for $@ and $*.  Fixes inconsistency reported by Dan
-         Douglas <ormaaj@gmail.com>
-
-configure.ac
-       - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it
-         will find $host-prefixed versions of utilities.  Report and fix from
-         Mike Frysinger <vapier@gentoo.org>
-
-builtins/setattr.def
-       - set_var_attribute: check whether bind_variable (called when the
-         variable whose attributes are being modified is found in the temp
-         environment) just modified a read-only global variable, and don't
-         bother marking the temporary variable for propagation if so.  The
-         propagation is superfluous and will result in a strange error
-         message
-
-                                   2/2
-                                   ---
-variables.c
-       - initialize_shell_variables: don't try to import function definitions
-         with invalid names from the environment if already in posix mode,
-         but create them as (invisible) exported variables so they pass
-         through the environment.  Print an error message so user knows
-         what's wrong.  Fixes bug reported by Tomas Trnka <ttrnka@mail.muni.cz>
-
-                                   2/9
-                                   ---
-
-builtins/read.def
-       - sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c)
-         can use them
-       - sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was
-         longjmp without manipulating signal mask, leaving SIGALRM blocked
-
-quit.h
-       - move CHECK_ALRM macro here from builtins/read.def so trap.c:
-         check_signals() can call it
-
-trap.c
-       - check_signals: add call to CHECK_ALRM before QUIT
-       - check_signals_and_traps: call check_signals() instead of including
-         CHECK_ALRM and QUIT inline.  Integrating check for read builtin's
-         SIGALRM (where zread call to check_signals_and_traps can see it)
-         fixes problem reported by Mike Frysinger <vapier@gentoo.org>
-
-                                  2/12
-                                  ----
-lib/glob/xmbsrtowcs.c
-       - xdupmbstowcs2: fixed but where end of string was not handled
-         correctly, causing loop to go past end of string in a bunch of cases.
-         Fixes bug reported by "Dashing" <dashing@hushmail.com>
-
-
-                                  2/13
-                                  ----
-builtins/pushd.def
-       - popd_builtin: treat any argument that isn't -n or of the form
-         [-+][[:digit:]]* as an error.  Fixes problem reported by Bruce
-         Korb <bruce.korb@gmail.com>
-
-                                  2/14
-                                  ----
-configure.ac
-       - add check for sig_atomic_t; already a placeholder for it in
-         config.h.in
-
-                                  2/15
-                                  ----
-subst.c
-       - do_compound_assignment: don't call assign_compound_array_list with
-         a NULL variable in case make_local_xxx_variable returns NULL
-         (it will if you try to shadow a readonly or noassign variable).
-         Fixes bug reported by Richard Tollerton <rich.tollerton@ni.com>
-
-                                  2/16
-                                  ----
-variables.c
-       - make_local_variable: print error messager if an attempt is made to
-         create a local variable shadowing a `noassign' variable.  Previously
-         we just silently refused to do it
-
-trap.[ch]
-       - get_original_signal: now global so rest of the shell can use it
-
-sig.c
-       - initialize_shell_signals: install a signal handler for SIGTERM
-         that does nothing except set a sigterm_received flag instead of
-         ignoring it with SIG_IGN, as long as SIGTERM is not ignored when
-         the shell is started.  Use get_original_signal early to get the
-         original handler, since we will do that later anyway
-       - set_signal_handler: if installing sigterm_sighandler as the SIGTERM
-         handler, make sure to add SA_RESTART flag to make it as close to
-         SIG_IGN as possible
-
-sig.h
-       - sigterm_sighandler: new extern declaration
-
-quit.h
-       - RESET_SIGTERM: set sigterm_receved to 0
-       - CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it
-         as a fatal signal and call termsig_handler to exit the shell
-
-jobs.c
-       - make_child: call RESET_SIGTERM just before fork() so we can detect
-         if the child process received a SIGTERM before it's able to change
-         the signal handler back to what it was when the shell started
-         (presumably SIG_DFL).  Only has effect if the shell installed
-         sigterm_sighandler for SIGTERM, interactive shells that were not
-         started with SIG_IGN as the SIGTERM handler
-       - make_child: call RESET_SIGTERM in the parent after fork() so the
-         rest of the shell won't react to it
-
-execute_cmd.c
-       - execute_simple_command: call CHECK_SIGTERM after make_child in child
-         to catch SIGTERM received after fork() and before restoring old
-         signal handlers
-       - execute_disk_command: call CHECK_SIGTERM after make_child in child
-         process after restoring old signal handlers and again just before
-         calling shell_execve.  Fixes race condition observed by
-         Padraig Brady <p@draigbrady.com> when testing with his `timeout'
-         program
-
-lib/readline/display.c
-       - open_some_spaces: new function, subset of insert_some_chars that just
-         opens up a specified number of spaces to be overwritten
-       - insert_some_spaces: now just calls to open_some_spaces followed by
-         _rl_output_some_chars
-       - update_line: use col_temp instead of recalculating it using
-         _rl_col_width in the case where we use more columns with fewer bytes
-       - update_line: use open_some_spaces and then output the right number
-         of chars instead of trying to print new characters then overwrite
-         existing characters in two separate calls.  This includes removing
-         some dodgy code and making things simpler.  Fix from Egmont
-         Koblinger <egmont@gmail.com>
-       - use new variable `bytes_to_insert' instead of overloading temp in
-         some code blocks (nls - nfd, bytes that comprise the characters
-         different in the new line from the old)
-
-                                  2/18
-                                  ----
-redir.c
-       - do_redirection_internal: add undoable redirection for the implicit
-         close performed by the <&n- and >&n- redirections.  Fixes bug
-         reported by Stephane Chazelas <stephane.chazelas@gmail.com>
-
-                                  2/19
-                                  ----
-sig.c
-       - termsig_handler: an interactive shell killed by SIGHUP and keeping
-         command history will try to save the shell history before exiting.
-         This is an attempt to preserve the save-history-when-the-terminal-
-         window-is-closed behavior
-
-                                  2/21
-                                  ----
-braces.c
-       - brace_expand: if a sequence expansion fails (e.g. because the
-         integers overflow), treat that expansion as a simple string, including
-         the braces, and try to process any remainder of the string.  The
-         remainder may include brace expansions.  Derived from SuSE bug
-         804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551)
-
-                                  2/23
-                                  ----
-{quit,sig}.h,sig.c
-       - sigterm_received declaration now in sig.h; type is sig_atomic_t
-       - sigwinch_received type now sig_atomic_t
-       - sig.h includes bashtypes.h and <signal.h> if SIG_DFL not defined
-         (same logic as trap.h) to pick up sig_atomic_t
-
-unwind_prot.c
-       - include sig.h before quit.h (reverse order)
-
-                                  2/27
-                                  ----
-builtins/shopt.def
-       - reset_shopt_options: make sure check_window_size is reset to the
-         default from config.h, not unconditionally to 0
-
-jobs.[ch]
-       - last_made_pid, last_asynchronous_pid: now volatile.  Change from SuSE
-
-jobs.c
-       - wait_for: if we're using sigaction to install a handler for SIGCHLD,
-         make sure we specify SA_RESTART
-
-lib/{tilde,readline}/shell.c
-       - get_home_dir: instead of looking in the password file every time,
-         look once and cache the result
-
-sig.[ch]
-       - sigwinch_received, sigterm_received: now `volatile' qualified
-
-sig.c,quit.h
-       - interrupt_state,terminating_signal: now sig_atomic_t
-
-                                   3/1
-                                   ---
-MANIFEST,examples/*
-       - removed around 120 files without FSF copyrights; requested by
-         Karl Berry in early January
-
-                                   3/2
-                                   ---
-lib/malloc/malloc.c
-       - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined
-
-doc/bashref.texi
-       - Fixed most of the examples in the GNU Parallel section to use better
-         shell idioms following complaints on bug-bash; added a couple of
-         examples and smoothed out the text
-
-quit.h
-       - include "sig.h" for sig_atomic_t
-
-lib/readline/display.c
-       - update_line: when inserting one or more characters at the end of
-         the display line in a non-multibyte environment, just write from the
-         first difference to the end of the line and return. We don't have
-         to adjust _rl_last_c_pos.  This is needed to adjust from the old
-         two-part copy to a single call to _rl_output_some_chars (change of
-         2/16)
-
-                                   3/4
-                                   ---
-Makefile.in,doc/Makefile.in
-       - PACKAGE_TARNAME, docdir: new variables substituted by autoconf
-       - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary
-         documentation files to be installed into $(docdir)
-       - install: add new rule to install $(OTHER_DOCS)
-       - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS)
-
-doc/bash.1
-       - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that
-         section in --posix and set -o posix descriptions
-
-examples/
-       - removed around 110 examples at the request of the FSF due to copyright
-         issues
-
-                                   3/5
-                                   ---
-builtins/setattr.def
-       - readonly: modified help text slightly to make it clearer that
-         functions aren't changed or displayed unless the -f option is given.
-         Report from <gotmynick@gmail.com>
-
-                                   3/9
-                                   ---
-include/typemax.h
-       - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined
-
-parse.y
-       - include "typemax.h" for possible SIZE_MAX definition, make sure we
-         include it after shell.h
-
-{braces,expr}.c
-       - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions
-
-                                  3/10
-                                  ----
-bashline.c
-       - bash_default_completion: make sure completion type of `!' (same as
-         TAB but with show-all-if-ambiguous set) and glob-word-completion
-         sets rl_filename_completion_desired to 0 so extra backslashes don't
-         get inserted by `quoting' the completion.  We can't kill all the
-         matches because show-all-if-ambiguous needs them.   Bug report from
-         Marcel (Felix) Giannelia <info@skeena.net>
-
-[bash-4.3-alpha frozen]
-
-                                  3/14
-                                  ----
-general.c
-       - trim_pathname: use memmove instead of memcpy since the source and
-         destination pathnames may overlap.  Report and fix from Matthew
-         Riley <mattdr@google.com>
-
-                                  3/18
-                                  ----
-configure.ac
-       - socklen_t is defined as `unsigned int' if configure can't find it
-
-                                  3/20
-                                  ----
-lib/readline/complete.c
-       - S_ISVTX: since it's not defined on all platforms (Minix), make sure
-         its use is protected with #ifdef
-
-                                  3/21
-                                  ----
-doc/{bash.1,bashref.texi}
-       - Added mention of ${!name[@]} and ${!name[*]} expansions to get all
-         indices of an array.  Suggested by Jonathan Leffler
-         <jonathan.leffler@gmail.com>
-
-                                  3/24
-                                  ----
-subst.h
-       - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that
-         single quotes (for now) will be treated as ordinary characters
-
-subst.c
-       - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now
-
-                                  3/25
-                                  ----
-support/config.{guess,sub}
-       - updated to versions from autoconf-2.69
-
-                                  3/31
-                                  ----
-lib/sh/shquote.c
-       - sh_single_quote: short-circuit quoting a single "'" instead of
-         creating a long string with empty single-quoted strings
-
-parser.h
-       - DOLBRACE_QUOTE2: new define, like DOLBRACE_QUOTE, but need to single-
-         quote results of $'...' expansion because quote removal will be
-         done later.  Right now this is only done for ${word/pat/rep}
-
-parse.y
-       - parse_matched_pair: set state to DOLBRACE_QUOTE2 for pattern
-         substitution word expansion so we don't treat single quote specially
-         in the pattern or replacement string
-       - parse_matched_pair: if we're parsing a dollar-brace word expansion
-         (${...}) and we're not treating single quote specially within
-         double quotes, single-quote the translation of $'...' ansi-c
-         escaped strings.  Original report and fix from Eduardo A.
-         Bustamante López <dualbus@gmail.com>
-
-subst.c
-       - extract_dollar_brace_string: ${word/pat/rep} scanning now sets the
-         DOLBRACE_QUOTE2 flag instead of DOLBRACE_QUOTE so we don't treat
-         single quotes specially within a double-quoted string
-
-execute_cmd.c
-       - fix_assignment_words: skip over assignment statements preceding a
-         command word before trying to figure out whether or not assignment
-         statements following a possible declaration command should be 
-         treated specially.  Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-                                   4/4
-                                   ---
-lib/readline/readline.c
-       - _rl_dispatch_subseq: only call _rl_vi_set_last (and check whether
-         the key is a text modification command) if the key sequence length
-         is 1.  That keeps the arrow keys from setting the last command
-         when called in vi command mode.  Fixes bug reported by Ian A.
-         Watson <watson_ian_a@lilly.com>
-
-                                   4/6
-                                   ---
-lib/readline/bind.c
-       - rl_parse_and_bind: when parsing a double-quoted string as the value
-         of a variable, make sure we skip past the leading double quote.
-         Fix from Andreas Schwab <schwab@linux-m68k.org>
-
-variables.c
-       - hash_lookup: set new local variable last_table_searched to the table
-         a successful lookup appears in; tested in make_local_variable to
-         solve the problem below
-       - make_local_variable: if we find a variable with the tempenv flag
-         set at the same `level' as variable_context', but not found in the
-         temporary_env (temp environment preceding the builtin), return it.
-         The temp environment preceding the function call has already been
-         merged (in execute_function) into the list of variable contexts the
-         function sees as shell_variables by the time this is called.  Fixes
-         inconsistency pointed out by Dan Douglas <ormaaj@gmail.com>
-
-subst.c
-       - expand_arith_string: expanded out contents of expand_string,
-         expand_string_internal, expand_string_if_necessary to create a
-         WORD_DESC and call call_expand_word_internal() on it directly.
-         We don't want process substitution to be performed ( 1<(2) ) should
-         mean something different in an arithmetic expression context.
-         It doesn't work to just turn on the DQUOTE flag, since that means
-         that things like ${x["expression"]} are not expanded correctly.
-         Fixes problem pointed out by Dan Douglas <ormaaj@gmail.com>
-
-                                  4/13
-                                  ----
-subst.c
-       - process_substitute: run the EXIT trap before exiting, as other
-         shells seem to.  Fixes problem pointed out by Dan Douglas
-         <ormaaj@gmail.com>
-
-lib/readline/readline.c
-       - readline_internal_setup: call rl_vi_insertion_mode to enter vi
-         mode instead of rl_vi_insert_mode to avoid resetting the saved last
-         command information.  Posix says that `.' can repeat a command
-         that was entered on a previous line so we need to save the info.
-         Fixes bug reported by Ian A. Watson <watson_ian_a@lilly.com>
-
-                                  4/14
-                                  ----
-lib/readline/complete.c
-       - rl_completion_matches: make sure xrealloc returns something non-null
-         (can happen when interrupted by a signal) before trying to add
-         matches to match_list
-
-subst.c
-       - array_remove_pattern: return NULL right away if array_variable_part
-         returns an invisible variable
-       - array_length_reference: handle array_variable_part returning an
-         invisible variable
-       - get_var_and_type: handle array_variable_part returning an invisible
-         variable
-
-                                  4/15
-                                  ----
-execute_cmd.c
-       - execute_command_internal: make sure to run the EXIT trap for group
-         commands anywhere in pipelines, not just at the end.  From a point
-         raised by Andreas Schwab <schwab@linux-m68k.org>
-
-variables.c
-       - bind_int_variable: make sure invisible flag is unset.  Fixes problems
-         like "declare -ai a; : $(( a[4]=4 ));"
-
-arrayfunc.c
-       - array_variable_part: return variable even if invisible flag set,
-         callers must handle invisible vars
-
-                                  4/18
-                                  ----
-builtins/set.def
-       - unset_builtin: if -n flag given, call unset_nameref instead of
-         unset_variable
-
-variables.c
-       - find_variable_nameref: print warning message if nameref circular
-         reference detected, return NULL and let caller deal with it
-
-builtins/declare.def
-       - declare_builtin: only disallow global references at this point if
-         we are at the global scope
-
-                                  5/16
-                                  ----
-configure.ac
-       - update release status to beta
-
-                                  5/23
-                                  ----
-trap.c
-       - run_pending_traps: save and restore pipeline around calls to
-         evalstring() in case we get a trap while running a trap. Have to
-         figure out the recursive running traps issue elsewhere.  Fixes
-         bug reported by Roman Rakus <rrakus@redhat.com>
-       - run_pending_traps: make sure to set running_trap to the appropriate
-         signal value when running a trap command
-       - run_pending_traps: short-circuit immediately if running_trap set
-         when invoked.  Could change this later to only skip if it would
-         run the same trap as currently being run (running_trap == sig + 1)
-
-configure.ac
-       - add warning if bison not found
-
-lib/readline/doc/rltech.texi
-       - new section with an example program illustrating the callback
-         interface. Suggested by Peng Yu <pengyu.ut@gmail.com>
-
-examples/loadables/Makefile.in
-       - remove references to `cut' and `getconf', which were removed in
-         early March
-
-                                  5/28
-                                  ----
-lib/sh/pathphys.c
-       - sh_realpath: correct inverted two arguments to call to sh_makepath.
-         Report and fix from Julien Thomas <jthomas@exosec.fr>
-
-                                   6/7
-                                   ---
-execute_cmd.c
-       - executing_line_number: the else clauses that are conditional on
-         various options being defined can simply be if clauses -- they are
-         mutually exclusive and all have `return' in the body.  Fixes bug
-         reported by Flavio Medeiros <flaviomotamedeiros@gmail.com>
-
-                                  6/25
-                                  ----
-lib/readline/readline.c
-       - readline_internal_setup: only sent the meta-key enable string to the
-         terminal if we've been told to use one and the terminal has been
-         successfully initialized (RL_ISSTATE (RL_STATE_TERMPREPPED) != 0).
-         Suggested by Dan Mick <dan.mick@inktank.com>
-
-lib/readline/signals.c
-       - _rl_signal_handler: call any defined signal hook after calling
-         rl_resize_terminal when handling a SIGWINCH.  We already have called
-         the original SIGWINCH handler but will not be resending the signal
-         to ourselves
-
-                                  6/27
-                                  ----
-lib/readline/doc/history.3, doc/bash.1
-       - fix description of the `$' modifier to note that it expands to the
-         last *word*, which is not always the last argument.  Report from
-         ariyetz@gmail.com via gnu.org RT
-
-                                  6/29
-                                  ----
-lib/glob/smatch.c
-       - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead
-         of 0 (0 if not defined)
-
-configure.ac,config.h.in
-       - --enable-glob-asciiranges-default: new option, controls the value of
-         GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on
-         by default
-
-doc/bashref.texi
-       - document new --enable-glob-asciiranges-default configure option
-
-variables.c
-       - assign_in_env: implement += value appending semantics for assignments
-         preceding command names
-
-                                   7/4
-                                   ---
-expr.c
-       - set lasttok = NUM in all of the functions that result in a number,
-         even if it's a boolean, to avoid errors with constructs like
-         1 * x = 1, which should be an asignment error.  Fixes problem
-         pointed out by Dan Douglas <ormaaj@gmail.com>
-
-parse.y
-       - decode_prompt_string: don't bother to call strcpy if
-         polite_directory_format returns its argument unchanged.  It's not
-         necessary and Mac OS X 10.9 aborts because of a supposed overlapping
-         string copy.  Bug and fix from simon@hitzemann.org
-
-subst.c
-       - parameter_brace_find_indir: new function, code from
-         parameter_brace_expand_indir that looks up the indirectly-referenced
-         variable, but does not expand it
-       - parameter_brace_expand_indir: call parameter_brace_find_indir to
-         look up indirected variable reference
-       - get_var_and_type: call parameter_brace_find_indir if it looks like we
-         are trying to manipulate an indirect variable reference like
-         ${!b%%foo}.  This makes a difference if !b references an array
-         variable.  Bug report from Dan Douglas <ormaaj@gmail.com>
-
-                                   7/6
-                                   ---
-lib/sh/casemod.c
-       - sh_modcase: make sure argument passed to is_basic is <= UCHAR_MAX,
-         since cval can convert something to a wchar_t greater than UCHAR_MAX.
-         Fixes bug reported by Tomasz Tomasik <scx.mail@gmail.com>
-
-                                   7/8
-                                   ---
-lib/readline/history.c
-       - add_history_time: if history_length == 0, referencing history_length
-         - 1 will result in an array bounds error, so make history_length be
-         at least 1 before going on.  Fixes bug reported by Geng Sheng Liu
-         <gsliu.tju@gmail.com>
-
-builtins/setattr.def
-       - show_func_attributes: display definition (if NODEFS argument is 0) and
-         attributes for a particular function; used by `declare -fp name'
-
-builtins/declare.def
-       - declare_internal: call show_func_attributes if -f supplied with -p.
-         Fixes inconsistency observed by Linda Walsh <bash@tlinx.org>
-
-builtins/common.h
-       - new extern declaration for show_func_attributes
-
-builtins/read.def
-       - read_builtin: check the first supplied variable name for validity
-         before attempting to read any input, since we know we will have to
-         at least use that one.  Don't check any other names yet.  Suggested
-         by jidanni@jidanni.org
-
-                                  7/10
-                                  ----
-redir.c
-       - do_redirection_internal: when closing a file descriptor with
-         r_close_this ([n]<&-) count close errors as redirection errors if
-         errno ends up as EIO or ENOSPC.  Originally reported back in April
-         2012 by Andrey Zaitsev <jstcdr@gmail.com>
-
-                                  7/11
-                                  ----
-redir.c
-       - do_redirection_internal: before calling check_bash_input, make sure
-         that we don't call check_bash_input for an asynchronous process that
-         is replacing stdin with something else. The seek backwards affects
-         the parent process as well, since parents and children share the
-         file pointer. Fixes problem originally reported in March 2013 by
-         Martin Jackson <mjackson220.list@gmail.com>
-
-                                  7/13
-                                  ----
-doc/{bash.1,bashref.texi}
-       - slight change to add a description of `shopt -o' suggested by Bruce
-         Korb <bruce.korb@gmail.com>
-
-                                  7/19
-                                  ----
-lib/readline/histfile.c
-       - history_do_write: if close returns < 0, make sure we restore the
-         backup history file and return a non-zero value
-       - history_truncate_file: if write or close return < 0, make sure we
-         return a non-zero value
-
-[bash-4.3-beta frozen]
-
-                                  7/21
-                                  ----
-lib/readline/isearch.c
-       - rl_display_search: now takes an entire search context flags word as
-         the second argument, instead of just reverse flag; changed callers
-       - rl_display_search: if the search has failed, add `failed ' to the
-         beginning of the search prompt
-       - _rl_isearch_dispatch: if the search has failed, display the entire
-         search string with an indication that the search failed but with the
-         last matching line.  Suggested by jidanni@jidanni.org
-
-command.h
-       - W_ASSIGNINT: new word flag; used internally for make_internal_declare
-         and set by fix_assignment_words
-
-execute_cmd.c
-       - fix_assignment_words: set W_ASSIGNINT if compound assignment and -i
-         given as option.  We don't do anything with the value yet
-
-subst.c
-       - shell_expand_word_list: rework the way the option list that is
-         passed to make_internal_declare is created
-
-                                   8/1
-                                   ---
-doc/{bash.1,bashref.texi}
-       - minor changes to description of $! based on a report from Chris
-         Down <chris@chrisdown.name>
-
-arrayfunc.c
-       - assign_array_element_internal: before trying to get an array's max
-         index to process a negative subscript, make sure the array exists.
-         Bug report from Geir Hauge <geir.hauge@gmail.com>
-
-                                   8/2
-                                   ---
-arrayfunc.c
-       - assign_array_element_internal: before using array_max_index() when
-         processing a negative subscript, make sure the variable is an array.
-         if it's not, use 0 as array_max_index assuming it's a string.
-         Fixes bug report from Geir Hauge <geir.hauge@gmail.com>
-
-                                   8/3
-                                   ---
-Makefile.in
-       - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
-         Curtis Doty <curtis@greenkey.net>
-
-                                   8/5
-                                   ---
-lib/glob/sm_loop.c
-       - strcompare: short-circuit and return FNM_NOMATCH if the lengths of the
-         pattern and string (pe - p  and se - s, respectively) are not equal
-       - strcompare: don't bother trying to set *pe or *se to '\0' if that's
-         what they already are.  Fixes bug reported by Geir Hauge
-         <geir.hauge@gmail.com>
-
-                                   8/6
-                                   ---
-doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi
-       - minor typo changes from Geir Hauge <geir.hauge@gmail.com>
-
-bultins/help.def
-       - show_longdoc: avoid trying to translate the empty string because it
-         often translates to some boilerplate about the project and
-         translation.  Report and fix from Geir Hauge <geir.hauge@gmail.com>
-
-                                   8/8
-                                   ---
-builtins/help.def
-       - help_builtin: try two passes through the list of help topics for each
-         argument: one doing exact string matching and one, if the first pass
-         fails to find a match, doing string prefix matching like previous
-         versions.  This prevents `help read' from matching both `read' and
-         `readonly', but allows `help r' to match everything beginning with
-         `r'.  Inspired by report from Geir Hauge <geir.hauge@gmail.com>
-
-                                  8/13
-                                  ----
-builtins/fc.def
-       - fc_builtin,fc_gethnum: calculate `real' end of the history list and
-         use it if -0 is specified as the beginning or end of the history
-         range to list.  Doesn't work for fc -e or fc -s by design.  Feature
-         requested by Mike Fied <micfied@gmail.com>
-
-                                  8/16
-                                  ----
-trap.c
-       - _run_trap_internal: use {save,restore}_parser_state instead of
-         {save,restore}_token_state. It's more comprehensive
-
-                                  8/23
-                                  ----
-doc/bash.1
-       - disown: remove repeated text.  Report and fix from Thomas Hood
-         <jdthood@gmail.com>
-
-                                  8/25
-                                  ----
-lib/readline/rltty.c
-       - set_special_char: fix prototype (last arg is rl_command_func_t *)
-
-sig.c
-       - set_signal_handler: return oact.sa_handler only if sigaction
-         succeeds; if it doesn't, return SIG_DFL (reasonable default).  From
-         https://bugzilla.redhat.com/show_bug.cgi?id=911404
-
-bashline.c
-       - attempt_shell_completion: fix to skip assignment statements preceding
-         command name even if there are no programmable completions defined.
-         From https://bugzilla.redhat.com/show_bug.cgi?id=994659
-       - attempt_shell_completion: if still completing command word following
-         assignment statements, do command completion even if programmable
-         completion defined for partial command name entered so far
-
-                                  8/26
-                                  ----
-pcomplete.c
-       - pcomp_filename_completion_function: make sure rl_filename_dequoting_function
-         is non-NULL before trying to call it.  Bug and fix from
-         Andreas Schwab <schwab@linux-m68k.org>
-
-bashline.c
-       - bash_command_name_stat_hook: if *name is not something we're going
-         to look up in $PATH (absolute_program(*name) != 0), just call the
-         usual bash_filename_stat_hook and return those results.  This makes
-         completions like $PWD/exam[TAB] add a trailing slash
-
-                                   9/2
-                                   ---
-builtins/read.def
-       - read_builtin: before comparing what we read to the delim, make sure
-         we are not supposed to be ignoring the delimiter (read -N).  We
-         set the delim to -1, but it's possible to read a character whose
-         int value ends up being between -1 and -128.  Fixes bug
-         reported by Stephane Chazelas <stephane.chazelas@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - word splitting: crib some language from Posix to make it clear that
-         characters in IFS are treated as field *terminators*, not field
-         *separators*.  Addresses issue raised by DJ Mills
-         <danielmills1@gmail.com>
-
-lib/readline/{util.c,rldefs.h}
-       - _rl_stricmp,_rl_strnicmp: now take const char * string arguments;
-         changed prototype declarations
-
-                                   9/5
-                                   ---
-doc/{bash.1,bashref.texi}
-       - [[: modify description of pattern matching to make it clear that the
-         match is performed as if the extglob option were enabled.  From Red
-         Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=1002078
-
-                                  9/12
-                                  ----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: if we read an ESC and it's supposed to
-         terminate the search, make sure we check for typeahead with
-         _rl_pushed_input_available, since installing a hook function causes
-         typeahead to be collected in `ibuffer' (input.c).  If there is any,
-         make sure we still use the ESC as a prefix character.  Bug and fix
-         from Mike Miller <mtmiller@ieee.org>
-
-                                  9/16
-                                  ----
-builtins/{caller,cd,kill,pushd,wait}.def
-       - builtin_usage(): make sure call to this sets return status to
-         EX_USAGE
-
-                                  9/18
-                                  ----
-terminal.c
-       - rl_change_environment: new application-settable variable; if non-
-         zero (the default), readline will modify LINES and COLUMNS in the
-         environment when it handles SIGWINCH
-       - _rl_get_screen_size: if rl_change_environment is non-zero, use setenv
-         to modify LINES and COLUMNS environment variables
-
-readline.h
-       - rl_change_environment: new extern declaration for applications
-
-                                  9/22
-                                  ----
-configure.ac
-       - relstatus: bumped version to bash-4.3-beta2
-
-                                  9/24
-                                  ----
-
-lib/readline/readline.c
-       - bind_arrow_keys_internal: added more key bindings for the numeric key
-         pad arrow keys on mingw32.  Patch from Pierre Muller
-         <pierre.muller@ics-cnrs.unistra.fr>
-
-                                  10/19
-                                  -----
-
-bashline.c
-       - maybe_restore_tilde: version of restore_tilde that honors `direxpand';
-         calls restore_tilde after saving directory expansion hook if
-         necessary.  Report from Andreas Schwab <schwab@linux-m68k.org>
-
-builtins/cd.def
-       - -@: new option, allows cd to use `extended attributes' present in
-         NFSv4, ZFS; idea taken from ksh93.  Attributes associated with a
-         file are presented as a directory containing the attributes as
-         individual files.  Original patch contributed by Cedric Blancher
-         <cedric.blancher@gmail.com>
-
-                                  10/20
-                                  -----
-aclocal.m4
-       - BASH_CHECK_MULTIBYTE: check for wcwidth being broken with unicode
-         combining characters needs a value to use when cross-compiling.
-         Bug report from Bert Sutherland <bertsutherland@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - document new -@ option to cd builtin
-
-                                  10/28
-                                  -----
-lib/glob/{{gmisc,glob}.c,glob.h}
-       - extglob_pattern renamed to extglob_pattern_p, declared in glob.h
-
-subst.c
-       - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2
-         had a typo (& isexp instead of &&)
-
-                                  10/29
-                                  -----
-input.c
-       - getc_with_restart: make sure local_index and local_bufused are
-         reset to 0 before returning EOF, in case we are running an interactive
-         shell without line editing and ignoreeof is set.  Report and fix
-         from Yong Zhang <yong.zhang@windriver.com>
-
-lib/readline/search.c
-       - _rl_nsearch_init: take out extra third argument to rl_message; it
-         only matches prototype (and maybe format) in cases where
-         PREFER_STDARG and USE_VARARGS are both undefined, which is rare
-
-                                  10/31
-                                  -----
-subst.c
-       - process_substitute: when opening the named pipe in the child, open
-         without O_NONBLOCK to avoid race conditions.  Happens often on AIX.
-         Bug report and fix from Michael Haubenwallner
-         <michael.haubenwallner@salomon.at>
-
-builtins/ulimit.def
-       - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is,
-         use RLIMIT_NTHR (NetBSD)
-
-                                  11/5
-                                  ----
-locale.c
-       - set_default_locale_vars,set_locale_var: if TEXTDOMAINDIR has been
-         set, and default_dir has a non-null value, call bindtextdomain(3)
-         when TEXTDOMAIN is assigned a value.  Fixes problem reported by
-         Michael Arlt <qwertologe@googlemail.com>
-
-                                  11/6
-                                  ----
-builtins/cd.def
-       - cdxattr: only create synthetic pathname in `buf' if NDIRP argument
-         is non-null
-       - change_to_directory: if we have specified -@ and cdxattr returns
-         failure, fail immediately.  Fixes bug reported by Joshuah Hurst
-         <joshhurst@gmail.com>
-
-                                  11/12
-                                  -----
-redir.c
-       - print_redirection: change r_err_and_out (&>) and its append form,
-         r_append_err_and_out (&>>) cases to separate redirection operator
-         from filename by a space, in case we have a process substitution.
-         Fixes bug reported by admn ombres <admn.ombres@gmail.com>
-
-                                  11/15
-                                  -----
-execute_cmd.c
-       - execute_simple_command: don't close process substitution fds until
-         we are finished executing any current shell function.  Partial fix
-         for bug reported by John Dawson <john.dawson@gmail.com>
-
-support/shobj-conf
-       - add support for Darwin 13 (Mac OS X 10.9, Mavericks).  Based on a
-         report by Ludwig Schwardt <ludwig.schwardt@gmail.com>
-
-                                  11/20
-                                  -----
-[bash-4.3-rc1 frozen]
-
-                                  11/24
-                                  -----
-builtins/printf.def
-       - bind_printf_variable: make sure that the variable assigned to is
-         no longer marked as invisible. Fixes bug reported by NBaH
-         <nbah@sfr.fr>
-
-                                  11/28
-                                  -----
-jobs.c
-       - delete_old_job: fix off-by-one error in job index in call to
-         internal_warning. Bug report from Peter Cordes <peter@cordes.ca>
-
-                                  11/30
-                                  -----
-doc/bashref.texi
-       - add string to description of special parameters with name of
-         special parameter prefixed by a $, so you can search for $#,
-         for instance
-
-                                  12/2
-                                  ----
-lib/readline/{histexpand.c
-       - get_history_event: account for current_history() possibly returning
-         NULL. Report and fix from Pankaj Sharma <pankaj.s01@samsung.com>
-
-
-                                  12/11
-                                  -----
-
-lib/readline/parse-colors.c
-       - get_funky_string: don't call abort if we see something we can't
-         parse; just return an error
-       - _rl_parse_colors: if we encounter an error while parsing $LS_COLORS
-         we need to leave _rl_color_ext_list as NULL after freeing its
-         elements, then turn off _rl_colored_stats. Report and fix from Martin
-         Wesdorp <mwesdorp@casema.nl>
-
-                                  12/13
-                                  -----
-
-lib/readline/parse-colors.c
-       - _rl_parse_colors: if we encounter an unrecognized prefix, throw an
-         error but try to recover and go on to the next specification
-
-variables.c
-       - make_local_variable: for new variables this function creates, set
-         the att_invisible attribute.  All callers from declare_internal.
-         Indirectly, this is a fix for bug with `declare -n var; var=foo;'
-         reported by Pierre Gaston <pierre.gaston@gmail.com>
-       - bind_variable: if assigning to nameref variable that doesn't have
-         a value yet (e.g., with `declare -n var; var=foo'), don't try to
-         use the unset name. Fixes a segfault reported by Pierre Gaston
-         <pierre.gaston@gmail.com>
-
-execute_cmd.c
-       - execute_command_internal: make sure last_command_exit_value is set
-         to 0 after any command executed in the background.  Fixes bug
-         reported by Martin Kealey <martin@kurahaupo.gen.nz>
-
-                                  12/17
-                                  -----
-support/config.{guess,sub}
-       - updated to latest versions from git
-
-                                  12/19
-                                  -----
-parse.y
-       - struct STRING_SAVER: now has a new `flags' element, to identify the
-         caller: alias expansion, double-paren parsing, or parse_and_execute
-       - push_string: now sets flags to PSH_ALIAS if `ap' argument is non-NULL
-       - push_string: now doesn't attempt to call strlen on a NULL string to
-         set shell_input_line_size
-       - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
-         functions to provide an external interface to push_string and
-         pop_string; parser_save_alias sets flags element to PSH_SOURCE (could
-         be renamed PSH_EXTERN someday)
-       - shell_getc: when yy_getc returns '\0', instead of just testing
-         whether the pushed_string_list is not-empty before popping it, don't
-         pop if if the saved string has flags PSH_SOURCE, indicating that
-         parse_and_execute set it before setting bash_input to the string.
-         We should continue reading to the end of that string before popping
-         back to a potential alias. Partial solution for the problem of aliases
-         with embedded newlines containing `.' commands being executed out of
-         order reported by Andrew Martin <andrew.martin@gmail.com>
-       - shell_getc: when yy_getc returns '\0' and there is a saved string of
-         type PSH_SOURCE, restart the read without popping the string stack
-         if we have not read to the end of bash_input.location.string.  Rest
-         of fix for out-of-order execution problem
-
-externs.h
-       - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
-         extern function declarations
-
-builtins/evalstring.c
-       - pe_prologue: if the parser is expanding an alias, make sure to add
-         an unwind-protect to restore the alias; undoes the work that will be
-         performed by parse_and_execute/parse_string
-       - parse_and_execute,parse_string: after calling push_stream to save
-         bash_input, check whether or not the parser is currently expanding
-         an alias (parser_expanding_alias() != 0). If it is, we want to save
-         that string in the pushed_string_list, which we do with
-         parser_save_alias.
-
-                                  12/23
-                                  -----
-execute_cmd.c
-       - execute_for_command: make sure to set line_number before expanding
-         the word list, so expansion errors have the right line number.
-         From a report from Ben Okopnik <ben@okopnik.com>
-
-expr.c
-       - exp2: save token pointer before calling readtok(), arrange to use
-         saved token pointer when printing error token on a division by 0
-         error
-
-                                  12/27
-                                  -----
-lib/readline/display.c
-       - rl_redisplay: when calculating effects of invisible characters in a
-         prompt that is split across physical screen lines to set the indices
-         of linebreaks, don't bother testing local_prompt_prefix (line 751).
-         That prefix doesn't matter when calculating prompt visible and
-         invisible characters.  Fixes problem reported by Jinesh Choksi
-         <jinesh@onelittlehope.com>
-
-Makefile.in
-       - install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
-         Report and fix from Matthias Klose <doko@debian.org>
-
-doc/texinfo.tex
-       - updated to version of 2013-09-11
-
-                                  12/28
-                                  -----
-lib/readline/undo.c
-       - rl_do_undo: if we are undoing from a history entry (rl_undo_list ==
-         current_history()->data), make sure the change to rl_line_buffer is
-         reflected in the history entry. We use the guts of
-         rl_maybe_replace_line to do the work.  Fixes problem reported by
-         gregrwm <backuppc-users@whitleymott.net>
-
-                                  12/30
-                                  -----
-sig.c
-       - sigint_sighandler: if we get a SIGINT (and this signal handler is
-         installed) while the wait builtin is running, note that we received
-         it in the same way as jobs.c:wait_sigint_handler and return.  The
-         various wait_for functions will look for that with CHECK_WAIT_INTR.
-         This fixes the wait builtin not being interruptible in an interactive
-         job control shell
-
-                                  12/31
-                                  -----
-trap.c
-       - set_signal_hard_ignored: rename set_signal_ignored to this, since it
-         both sets original_signals[sig] and sets the HARD_IGNORE flag
-       - set_signal_ignored: new function, now just sets original_signals[sig]
-
-trap.h
-       - set_signal_hard_ignored: new external declaration
-
-sig.c
-       - initialize_terminating_signals: call set_signal_hard_ignored instead
-         of set_signal_ignored for signals with disposition SIG_IGN when the
-         shell starts
-
-execute_cmd.c
-       - setup_async_signals: make sure we get the original dispositions for
-         SIGINT and SIGQUIT before starting the subshell, and don't call
-         set_signal_ignored  because that sets original_signals[sig].  If we
-         don't, subsequent attempts to reset handling using trap will fail
-         because it thinks the original dispositions were SIG_IGN. Posix
-         interpretation 751 (http://austingroupbugs.net/view.php?id=751)
-
-                                1/2/2014
-                                --------
-lib/sh/stringvec.c
-       - strvec_mcreate, strvec_mresize: versions of create and resize that
-         use malloc and realloc, respectively, instead of xmalloc/xrealloc
-
-braces.c
-       - expand_amble,mkseq: use strvec_mcreate/strvec_mresize so we can
-         catch and handle memory allocation failures instead of aborting
-         with the xmalloc/xrealloc interface
-
-lib/sh/strdup.c
-       - strdup replacement function for ancient systems that don't have it
-
-lib/sh/itos.c
-       - mitos: new function, itos that uses strdup instead of savestring
-
-externs.h
-       - strvec_mcreate/strvec_mresize: new extern declarations
-       - mitos: new extern declaration
-
-configure.ac
-       - bash version moved to 4.3-rc2
-
-                                   1/6
-                                   ---
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
-       - separate the description of what happens when readline reads the
-         tty EOF character from the description of delete-char, leaving a
-         note in the delete-char description about common binding for ^D.
-         From suggestion by Parke <parke.nexus@gmail.com>
-
-lib/readline/doc/{version.texi,history.3,*.texi}
-       - updated email addresses and copyright dates
-
-                                   1/7
-                                   ---
-variables.c
-       - delete_var: new function, just removes a variable from a hash table
-         and frees it, without doing anything else
-       - make_variable_value: if we are trying to assign to a nameref variable,
-         return NULL if the value is null or the empty string or not a valid
-         identifier
-
-variables.h
-       - delete_var: new extern declaration
-
-subst.h
-       - ASS_NAMEREF: new define for assignments, means assigning to a nameref
-         variable
-
-builtins/declare.def
-       - declare_internal: if we are creating and assigning to a nameref
-         variable, make sure the value is a valid variable name (checks done
-         by make_variable_value via bind_variable_value) and display an
-         error message, deleting the variable we just created, if it is not.
-         Fixes bug reported by Peggy Russell <prusselltechgroup@gmail.com>
-
-                                   1/9
-                                   ---
-builtins/declare.def
-       - declare_internal: turning on nameref attribute for an existing
-         variable turns off -i/-l/-u/-c attributes (essentially the ones
-         that cause evaluation at assignment time) for ksh93 compat
-
-builtins/setattr.def
-       - show_name_attributes: if asked to display attributes and values for
-         a nameref variable, don't follow the nameref chain to the end. More
-         ksh93 compat
-
-                                  1/10
-                                  ----
-trap.c
-       - _run_trap_internal: use {save,restore}_parser_state instead of
-         {save,restore}_token_state, like in run_pending_traps(); don't
-         need to save and restore last_command_exit_value as a result
-       - _run_trap_internal: call {save,restore}_pipeline like in
-         run_pending_traps()
-       - run_pending_traps: since we no longer run traps in a signal handler
-         context, do not block and unblock the trapped signal while the
-         trap is executing
-       - run_pending_traps: allow recursive invocations (basically, running
-         traps from a trap handler) with only a warning if the shell is
-         compiled in debug mode.  If a caller doesn't want this to happen,
-         it should test running_trap > 0. signal_in_progress (sig) only works
-         for the signals the shell handles specially
-
-bashline.c
-       - bash_event_hook: make sure we clean up readline if interrupt_state
-         is set, not only when SIGINT is not trapped.  check_signals_and_traps
-         will call check_signals, which calls QUIT, which will longjmp back
-         to top_level, running the interrupt trap along the way.  Fixes the
-         problem of signal handlers being reset out from under readline, and
-         not being set properly the next time readline is called, because
-         signals_set_flag is still set to 1.  XXX - might need to do this
-         for other signals too?
-
-                                  1/11
-                                  ----
-subst.h
-       - SD_GLOB: new define for skip_to_delim; means we are scanning a
-         glob pattern.
-
-subst.c
-       - skip_to_delim: if flags include SD_GLOB, assume we are scanning a
-         glob pattern.  Currently only used to skip bracket expressions
-         which may contain one of the delimiters
-
-                                  1/12
-                                  ----
-subst.c
-       - parameter_brace_expand: when expanding $@ as part of substring
-         expansion, pattern substitution, or case modification, don't turn
-         on the QUOTED_NULL flag.  The code that constructs the word to be
-         returned from expand_word_internal expects a different code path
-         when $@ is being expanded.  Fixes bug reported by Theodoros
-         V. Kalamatianos <thkala@gmail.com>
-
-                                  1/19
-                                  ----
-subst.c
-       - list_dequote_escapes: new function; analogue of list_quote_escapes
-
-pathexp.c
-       - quote_string_for_globbing: fix case where unescaped ^A is last char
-         in string; need to pass it through unaltered instead of turning it
-         into a bare backslash
-       - quote_string_for_globbing: when quoting for regexp matching in [[,
-         don't treat backslash as a quote character; quote the backslash as
-         any other character.  Part of investigation into reports from
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                  1/25
-                                  ----
-builtins/gen-helpfiles.c
-       - write_helpfiles: add prototype
-       - make sure to #undef xmalloc/xfree/xrealloc/free if USING_BASH_MALLOC
-         is defined. the code does not use them, and we don't link against
-         xmalloc.o. Report from Linda Walsh <bash@tlinx.org>
-
-Makefile.in
-       - variables.o: add dependency on builtins/builtext.h; helps with
-         parallel builds.  Report from Linda Walsh <bash@tlinx.org>
-
-support/shobj-conf
-       - darwin: combine the stanzas into one that will not require them to
-         be updated on each Mac OS X release.  Report and fix from Max Horn
-         <max@quendi.de>
-
-                                  1/27
-                                  ----
-support/shobj-conf
-       - darwin: changed the install_name embedded into the shared library
-         to contain only the major version number, not the minor one. The
-         idea is that the minor versions should all be API/ABI compatible,
-         and it is better to link automatically with the latest one.  Idea
-         from Max Horn <max@quendi.de>
-
-                                  1/29
-                                  ----
-[bash-4.3-rc2 released]
-
-                                  1/30
-                                  ----
-lib/readline/readline.h
-       - rl_clear_history, rl_free_keymap: add extern declarations.  Report
-         from Hiroo Hayashi <hiroo.hayashi@computer.org>
-
-general.c
-       - include trap.h for any_signals_trapped() prototype
-
-lib/sh/unicode.c
-       - include <stdio.h> for sprintf prototype
-
-                                  1/31
-                                  ----
-execute_cmd.c
-       - execute_simple_command: only posix-mode shells should exit on an
-         assignment failure in the temporary environment preceding a special
-         builtin. This is what the documentation and code comments have
-         always said
-       - execute_simple_command: make sure redirection errors, word expansion
-         errors, and assignment errors to Posix special builtins cause a
-         non-interactive posix mode shell to exit.  Previously the shell
-         would not exit if the failed special builtin was on the LHS of ||
-         or &&
-
-pathexp.c
-       - quote_string_for_globbing: when quoting a regular expression
-         (QGLOB_REGEXP), allow an unquoted backslash to pass through
-         unaltered. Don't use it as a quote character or quote it.  More
-         investigation from 1/24 and report by Mike Frysinger
-         <vapier@gentoo.org>
-       - quote_string_for_globbing: when quoting a regular expression
-         (QGLOB_REGEXP), turn CTLESC CTLESC into CTLESC without adding a
-         backslash to quote it. We should not have to quote it because it is
-         not a character special to EREs. More investigation from 1/24
-
-lib/glob/glob.c
-       - glob_testdir: now takes a second flags argument (currently unused);
-         changed prototype and callers
-
-                                   2/1
-                                   ---
-lib/glob/glob.c
-       - glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use
-         lstat so we skip symlinks when traversing the directory tree.
-         Originally reported by Chris Down <chris@chrisdown.name>
-
-                                   2/2
-                                   ---
-lib/readline/undo.c
-       - rl_do_undo: make sure CUR is non-zero before dereferencing it to
-         check cur->data against rl_undo_list.  Report and fix from
-         Andreas Schwab <schwab@linux-m68k.org>
-
-doc/{bash.1,bashref.texi}
-       - added slight clarifying language to the description of $*,
-         describing what happens when the expansion is not within double
-         quotes
-
-                                   2/4
-                                   ---
-test.c
-       - unary_test: add code to -v case so that it interprets `bare' array
-         references (foo[1]) and returns true if that index has a value
-
-                                   2/5
-                                   ---
-trap.c
-       - restore_default_signal: fix SIGCHLD special case for SIG_TRAPPED flag
-         off but SIG_INPROGRESS mode set and handler IMPOSSIBLE_TRAP_HANDLER;
-         continue with resetting handler in this case. maybe_set_sigchld_trap
-         will check these things before resetting sigchld trap from
-         run_sigchld_trap.  Fixes (apparently long-standing?) problem reported
-         by Alexandru Damian <alexandru.damian@intel.com>
-
-                                   2/6
-                                   ---
-lib/sh/strtrans.c
-       - ansic_quote: fixed a bug when copying a printable character that
-         consumes more than one byte; byte counter was not being incremented.
-         Bug report from jidanni@jidanni.org
-
-                                   2/7
-                                   ---
-input.c
-       - getc_with_restart: if read(2) returns -1/EINTR and interrupt_state or
-         terminating_signal is set (which means QUIT; will longjmp out of this
-         function), make sure the local buffer variables are zeroed out to
-         avoid reading past the end of the buffer on the next call.  Bug report
-         from Dan Jacobson <jidanni@jidanni.org>
-
-                                   2/9
-                                   ---
-bashline.c
-       - command_word_completion_function: if a directory in $PATH contains
-         quote characters, we need to quote them before passing the candidate
-         path to rl_filename_completion_function, which performs dequoting on
-         the pathname it's passed.  Fixes bug reported by Ilyushkin Nikita
-         <ilyushkeane@gmail.com>
-
-                                  2/11
-                                  ----
-parse.y
-       - xparse_dolparen: save and restore shell_eof_token around call to
-         parse_string, intead of just leaving it set to ')'
-       - shell_getc: when -v is set, only print the command line when
-         shell_eof_token is 0, so we don't print it multiple times when
-         recursively entering the parser to parse $(...) commands.  Fixes
-         bug reported by Greg Wooledge <wooledg@eeg.ccf.org>
-
-[changed release status to 4.3-release]
-
-                                  2/13
-                                  ----
-lib/sh/strtrans.c
-       - ansic_quote: handle case where mbrtowc reports that the multibyte
-         sequence is incomplete or invalid.  Fixes bug reported by
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                  2/14
-                                  ----
-variables.c
-       - find_variable_nameref_context: fix a problem that caused the loop
-         to go one context too close to the global context.  In some cases,
-         simple variable assignment would set a variable in the global
-         context instead of a local context.  Bug report from
-         Geir Hauge <geir.hauge@gmail.com>
-
-                                  2/26
-                                  ----
-[bash-4.3 released]
-
-                                  2/27
-                                  ----
-aclocal.m4
-       - broken wcwidth check: fix typo reported by David Michael
-         <fedora.dm0@gmail.com>
-
-                                  2/28
-                                  ----
-support/bashbug.sh
-       - add ${BUGADDR} to error message printed if sending mail fails
-
-trap.c
-       - _run_trap_internal: don't call {save,restore}_pipeline if running
-         DEBUG trap; run_debug_trap calls them itself.  Fixes bug reported
-         by Moe Tunes <moetunes42@gmail.com>
-
-test.c
-       - unary_test: fix 'R' case by using find_variable_noref instead of
-         find_variable
-       - test_unop: add back missing 'R' case.  Fixes bug reported by
-         NBaH <nbah@sfr.fr>
-
-                                   3/2
-                                   ---
-jobs.c
-       - end_job_control: if job control is active, we changed the terminal's
-         process group, so make sure we restore it.  Fixes bug reported by
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                   3/7
-                                   ---
-pcomplete.c
-       - pcomp_curtxt: new variable, holds the original text to be completed
-         as passed to the programmable completion code
-       - pcomp_filename_completion_function: if we are running compgen
-         (presumably in a shell function completion) and performing readline
-         completion, check the word being completed.  If it's not empty, but
-         the original word passed to the programmable completion code is an
-         empty string (""), call a dequoting function if one is available.
-         This compensates for an assumption in bash-completion.  Reported by
-         Albert Shih <Albert.Shih@obspm.fr>
-
-lib/readline/readline.c
-       - _rl_dispatch_subseq: when deciding whether or not to set vi mode's
-         idea of the last command, use whether or not the dispatching keymap
-         is vi_movement_keymap instead of the key sequence length.  The `c',
-         `d', and `y' commands all take motion commands as `arguments' and
-         will produce key sequences longer than 1 character.  The arrow keys
-         will end up dispatching out of a different keymap, so the test will
-         prevent arrow keys from setting the last command (the problem in
-         bash-4.2). Bug report from Daan van Rossum <daan@flash.uchicago.edu>
-
-lib/readline/vi_mode.c
-       - _rl_vi_motion_command: convenience function to test whether a key is
-         a vi-mode motion command
-
-lib/readline/rlprivate.h
-       - _rl_vi_motion_command: extern declaration
-
-parse.y
-       - parse_matched_pair: we should not skip processing single quotes in
-         posix mode if dolbrace_state == DOLBRACE_QUOTE2 (pattern
-         substitution).  Fixes bug reported by David Sines
-         <dave.gma@googlemail.com>
-
-                                  3/10
-                                  ----
-lib/readline/readline.c
-       - _rl_dispatch_callback: treat a return value of -1 as the end of
-         a command dispatch sequence if the current context doesn't
-         indicate that we're reading a multi-key sequence
-         ((cxt->flags & KSEQ_SUBSEQ) == 0).  Turn off the multikey flag
-         and free the context chain in this case.  Fixes one bug reported
-         by Felix Yan <felixonmars@gmail.com> to bug-readline list
-       - _rl_dispatch_callback: treat a return value of > 0 the same as 0
-         and return from the function, since only values < 0 cause us to
-         simulate recursion.  Rest of fix for bug tracked down by
-         Anatol Pomozov <anatol.pomozov@gmail.com>
-
-                                  3/11
-                                  ----
-
-execute_cmd.c
-       - execute_in_subshell: if a longjmp occurs, set result to
-         EXECUTION_FAILURE only if last_command_exit_value == EXECUTION_SUCCESS;
-         use value of last_command_exit_value otherwise.  Fixes cosmetic
-         issue reported by Dennis Lambe Jr. <malsyned@malsyned.net>
-
-doc/bash.1
-       - shell-kill-word and shell-backward-kill-word should be documented
-         as unbound by default.  Report from Oliver Hartley
-         <ohartley@talktalk.net>
-
-trap.c
-       - run_pending_traps: save value of $? before running trap commands in
-         trap_saved_exit_value, like run_exit_trap
-       - _run_trap_internal: save value of $? before running trap commands in
-         trap_saved_exit_value, like run_exit_trap
-
-builtins/common.c
-       - get_exitstat: when running `return' in a trap action, and it is not
-         supplied an argument, use the saved exit status in
-         trap_saved_exit_value.  Fixes Posix problem reported by
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                  3/13
-                                  ----
-lib/sh/shquote.c
-       - sh_contains_quotes: new function, returns true if a given string
-         contains any of the shell quote characters (single quote, double
-         quote, or backslash)
-
-externs.h
-       - sh_contains_quotes: new extern declaration
-
-pcomplete.c
-       - pcomp_filename_completion_function: more changes for the benefit of
-         bash-completion: if the argument is not the same as the original
-         argument passed to the programmable completion code (pcomp_curtxt),
-         and we are being run by compgen as part of a completion, dequote the
-         argument as bash-completion expects.  Fix for the complete-word-
-         with-quoted-special-chars problem with bash-completion
-
-                                  3/17
-                                  ----
-execute_cmd.c
-       - execute_intern_function: when in posix mode, make defining a function
-         with the same name as a special builtin a fatal error only when the
-         shell is not interactive. Interactive shells display an error
-         message and go on.  From a discussion with Doug McIlroy
-         <doug@cs.dartmouth.edu>
-
-                                  3/18
-                                  ----
-arrayfunc.c
-       - assign_compound_array_list: when using expand_assignment_string_to_string
-         to expand the value in a ( [x]=y ) compound assignment, make sure
-         that we convert 0x0 to "" when expanding [x]= so it doesn't appear as
-         if the index is unset.  Fixes bug reported by Geir Hauge
-         <geir.hauge@gmail.com>
-
-builtins/common.c
-       - get_exitstat: update fix of 3/11 to allow the DEBUG trap to use the
-         current value of $? instead of the value it had before the trap
-         action was run.  This is one reason the DEBUG trap exists, and
-         extended debug mode uses it.  Might want to do this only in Posix
-         mode
-
-doc/{bash.1,bashref.texi}
-       - return: add language cribbed from Posix saying what happens when
-         return is run without an argument from a trap, including the DEBUG
-         trap exception
-
-                                  3/19
-                                  ----
-lib/glob/gmisc.c
-       - extglob_pattern_p: make sure ?(patlist) is flagged as an extglob
-         pattern
-
-lib/glob/glob.c
-       - extglob_skipname: rewrite to handle patterns that begin but do not
-         end with an extglob pattern; change test for easy case and loop
-         through patterns accordingly.  Fixes problem with matching filenames
-         with a leading dot reported by Stephane Chazelas
-         <stephane.chazelas@gmail.com>
-       - wextglob_skipname: make analogous changes
-
-                                  3/20
-                                  ----
-Makefile.in
-       - pass -DDEBUG down to builds in readline and history directories
-
-lib/readline/util.c
-       - _rl_trace and related functions are now only compiled in if DEBUG
-         is defined
-
-lib/readline/Makefile.in
-       - substitute @DEBUG@ and pass -DDEBUG, if necessary, to compilation
-         in LOCAL_CFLAGS
-
-                                  3/21
-                                  ----
-parse.y
-       - shell_getc: when checking whether or not to reallocate
-         shell_input_line to add trailing newline, don't try to subtract from
-         shell_input_line_size.  size_t is unsigned, so if its value is less
-         than 3 (like, say, 2), size-3 is a very large number and the string
-         will not be reallocated.  Use len+3 > size instead of len > size-3.
-         Fixes bug reported in
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1295467
-
-                                  3/27
-                                  ----
-lib/readline/display.c
-       - _rl_clean_up_for_exit: don't bother to call _rl_move_vert to whatever
-         readline thinks the last displayed line is if it's 0.  Two reasons: a
-         minor optimization, and it protects against unwanted moving if this
-         function is called twice, as it is when ^C is pressed.  Fixes bug
-         reported by Egmont Koblinger <egmont@gmail.com>
-
-                                  3/28
-                                  ----
-bashline.c
-       - invalid_completion: new function, used to identify attempts to
-         complete words that are syntax errors
-       - attempt_shell_completion: if invalid_completion returns true for a
-         word in a command position, punt on all completions.  Fixes cosmetic
-         issue reported by Uwe Storbeck <uwe@ibr.ch>
-       - attempt_shell_completion: add clause so that in_command_position
-         remains set to 1 for an empty word following a command separator like
-         (, &, or |
-
-lib/readline/kill.c
-       - rl_yank, rl_yank_nth_arg_internal: don't return -1 from bindable
-         functions, return 1 instead
-
-lib/readline/text.c
-       - rl_rubout, _rl_rubout_char, rl_delete, rl_change_case,
-         rl_transpose_chars, rl_transpose_words, _rl_set_mark_at_pos,
-         rl_exchange_point_and_mark, _rl_insert_next, _rl_char_search,
-         _rl_char_search_internal:
-         don't return -1 from bindable functions, return 1 instead
-
-lib/readline/vi_mode.c
-       - rl_vi_end_word, rl_vi_rubout, rl_vi_delete, rl_vi_char_search,
-         rl_vi_match, _rl_vi_set_mark, _rl_vi_goto_mark:
-         don't return -1 from bindable functions, return 1 instead
-
-lib/readline/macro.c
-       - rl_start_kbd_macro, rl_end_kbd_macro:
-         don't return -1 from bindable functions, return 1 instead
-
-builtins/setattr.def
-       - set_var_attribute: honor setting of no_invisible_vars when setting
-         att_invisible on a variable
-       - include "../flags.h" for no_invisible_vars
-
-builtins/declare.def
-       - declare_internal: honor setting of no_invisible_vars when setting
-         att_invisible on a variable
-       - include "../flags.h" for no_invisible_vars
-
-Makefile.in,builtins/Makefile.in
-       - make sure declare.o and setattr.o depend on flags.h
-
-execute_cmd.c
-       - decpoint: new function, returns locale's decimal point or `.' default
-       - mkfmt: use decpoint() to get decimal point instead of unconditionally
-         using `.'.  Fixes bug reported by Andrey Tataranovich
-         <tataranovich@gmail.com> in debian bug 741669
-
-                                  4/10
-                                  ----
-lib/readline/rltypedefs.h
-       - add back old Function/VFunction/etc typedefs, since other packages
-         (python, samba) use them. Mark as deprecated using gcc and clang
-         attributes.  Report and fix from Max Horn <max@quendi.de>
-
-                                  4/14
-                                  ----
-jobs.c
-       - run_sigchld_trap: unwind-protect value of this_shell_builtin, since
-         it matters in some cases whether or not we are running `wait' or
-         `eval'.  Fixes bug reported by Eduardo A. Bustamante López
-         <dualbus@gmail.com>
-
-                                  4/18
-                                  ----
-shell.h
-       - sh_parser_state_t: add `need_here_doc' flags member, since
-         xparse_dolparen (via parse_command) sets it to 0
-
-parse.y
-       - gather_here_documents: make sure need_here_doc is > 0, since we
-         don't want to just decrement it forever if it ends up < 0. Partial
-         fix for bug reported by Jared Yanovich <slovichon@gmail.com>
-       - {save,restore}_parser_state: save and restore need_here_doc flag.
-         Rest of fix for bug reported by Jared Yanovich <slovichon@gmail.com>
-
-                                  4/19
-                                  ----
-subst.c
-       - cond_expand_word: since we are not supposed to be performing word
-         splitting here, set expand_no_split_dollar_star to 1 in addition to
-         setting W_NOSPLIT2
-       - expand_word_internal: if we have a case where we have an unquoted
-         $@ but we are in a case where we don't want to split (W_NOSPLIT2),
-         make sure we return a list consisting of a single word with the
-         arguments separated by spaces and don't do word splitting.  Fixes
-         bug reported by Greg Wooledge <wooledg@eeg.ccf.org> from an IRC
-         discussion
-
-builtins/hash.def
-       - print_portable_hash_info: single-quote pathnames and hashed filenames
-         that contain shell metacharacters.  Fixes bug reported by
-         <g1pi@libero.it> in debian bash bug #739853
-
-                                  4/20
-                                  ----
-lib/readline/display.c
-       - When using horizontal scrolling, the redisplay code erases too much
-         of the line containing successful results, so make sure we only
-         erase to the end of the line after making sure we move the cursor
-         to the end.  Fixes bug reported by <Trond.Endrestol@ximalas.info>
-
-                                  4/23
-                                  ----
-{bashhist,bashline}.c
-builtins{bind,help,type}.def
-lib/glob/glob.c, lib/intl/{loadmsgcat,localealias}.c,lib/sh/mktime.c
-       - fixes to memory leaks uncovered by coverity scan
-
-                                  4/24
-                                  ----
-{bashhist,subst,redir,assoc,jobs,array,trap}.c
-lib/intl/l10flist.c
-builtins/complete.def
-       - fixes to memory leaks and other resource usage problems uncovered by
-         coverity scan
-
-redir.c
-       - do_redirection_internal: if dup2 fails (presumably because of a
-         resource limit), close the file descriptor we opened before returning
-         error
-
-                                  4/25
-                                  ----
-config-top.h
-       - DEFAULT_BASHRC: new define with the name of the default shell
-         startup file
-
-bashline.c
-       - bash_directory_completion_matches: don't dequote the directory name.
-         If rl_completion_found_quote is non-zero, readline will dequote the
-         filename itself.  Fixes bug reported by Clark Wang
-         <dearvoid@gmail.com>
-
-                                  4/27
-                                  ----
-subst.c
-       - parameter_brace_expand_rhs: if parameter_brace_find_indir returns
-         NULL or "", or if it returns something that is not a valid identifier,
-         report an error and return &expand_wdesc_error so the error can
-         propagate up.  Fixes bug reported by Andre Holzhey
-         <andre.holzhey@gmx.de>
-
-                                  4/29
-                                  ----
-subst.c
-       - parameter_brace_substring: don't short-circuit right away if the
-         value is NULL but we are looking at the positional parameters.  Part
-         of fix for bug reported by Pierre Gaston <pierre.gaston@gmail.com>
-       - pos_params: if there are no positional parameters, only short-circuit
-         if we are looking for $1 and above.  Rest of fix for bug reported
-         by Pierre Gaston <pierre.gaston@gmail.com>
-
-subst.h
-       - SD_NOPROCSUB: new flag for skip_to_delim, means to not allow any
-         process subsitutions (should not have overloaded SD_NOSKIPCMD)
-
-subst.c
-       - skip_to_delim: honor SD_NOPROCSUB flag
-
-make_cmd.c
-       - make_arith_for_expr: set W_NOPROCSUB flag in the created word
-       - make_arith_for_command: set SD_NOPROCSUB in the flags argument to
-         skip_to_delim so we don't treat <( or >( as a process substitution
-         (we won't evaluate them in eval_arith_for_expr anyway).  Fixes
-         bug reported by Pierre Gaston <pierre.gaston@gmail.com>
-
-                                   5/1
-                                   ---
-lib/glob/gmisc.c
-       - glob_dirscan: new function, takes a pattern and a directory separator
-         argument and advances the pattern to the last occurrence of the
-         separator. Like strrchr, but understands extended glob patterns and
-         uses glob_patscan to skip over them
-
-lib/glob/glob.c
-       - extglob_skipname: if the extended globbing pattern is invalid, don't
-         skip the name
-       - glob_filename: if there is a slash in the pattern to be matched, and
-         extglob is enabled, use glob_dirscan to find the real last occurrence
-         of `/' to avoid being confused by slashes in extglob patterns.  Fix
-         for bug reported by Pierre Gaston <pierre.gaston@gmail.com>
-
-                                   5/6
-                                   ---
-variables.c
-       - make_local_variable: only set the att_invisible attribute if
-         no_invisible_vars isn't set
-       - find_variable_for_assignment: new function, intended to be called by
-         code that eventually wants to assign a value to the variable; will not
-         skip invisible variables; currently identical to find_variable
-       - find_variable_no_invisible: new function, finds the first visible
-         instance of variable with a given name in the variable context chain;
-         eventually will be used to replace find_variable; separate right now
-         for testing
-
-variables.h
-       - find_variable_for_assignment: extern declaration
-       - find_variable_no_invisible: extern declaration
-
-                                   5/7
-                                   ---
-variables.c
-       - make_local_variable: don't clear `invisible' attribute if we are
-         returning an existing local variable at the right context.  Let the
-         upper layers do that. Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-                                   5/8
-                                   ---
-lib/readline/input.c
-       - rl_getc: call RL_CHECK_SIGNALS if a read(2) is interrupted (-1/EINTR)
-         by SIGALRM or SIGVTALRM (placeholder for non-keyboard-generated
-         signals of interest)
-
-builtins/read.def
-       - edit_line: call bashline_set_event_hook and
-         bashline_reset_event_hook around call to readline(), so the right
-         signal handling happens
-       - read_builtin: make sure we add an unwind_protect call to
-         bashline_reset_event_hook.  These changes fix bug reported in
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
-
-bashline.c
-       - bash_event_hook: make sure we clean up the readline state by calling
-         rl_cleanup_after_signal if sigalrm_seen is non-zero.  The read builtin
-         sets this when it times out
-
-                                  5/12
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarify language to make it clear that changing attributes of a
-         nameref variable (e.g., export), actually changes the attributes of
-         the referenced variable.  Fixes omission noted by Jeff Haemer
-         <jeffrey.haemer@gmail.com>
-
-arrayfunc.c
-       - bind_array_var_internal: make sure ENTRY no longer has invisible
-         attribute before returning.  Fixes bug reported by Geir Hauge
-         <geir.hauge@gmail.com>
-
-                                  5/22
-                                  ----
-execute_cmd.c
-       - shell_execve: if execve fails and we return 127 or 126, make sure to
-         set last_command_exit_value if a call to file_error or report_error
-         causes the shell to exit.  This ensures that the shell exits with
-         the right value.
-
-                                   6/6
-                                   ---
-shell.c
-       - drop_priv_mode: print an error message on setuid() failure, optionally
-         exit if errno == EAGAIN, as it can be on Linux when RLIMIT_NPROC for
-         the target user is exceeded.
-
-config-top.h
-       - EXIT_ON_SETUID_FAILURE: new settable define, will cause the shell to
-         exit if setuid fails with errno == EAGAIN
-
-                                  6/10
-                                  ----
-parse.y
-       - time_command_acceptable: fix so time is accepted everywhere the
-         grammar is looking for a `compound_list'.  Fixes bug reported by
-         Dale Worley <worley@alum.mit.edu>
-
-                                  6/12
-                                  ----
-subst.c
-       - clear_fifo_list: new function, clears FDs associated with open pipes
-         in current FIFO list without closing the file descriptors.  Can
-         possibly be used when shell_execve fails and the shell jumps back
-         to top_level and we don't want the shell to close the open FIFOs
-         each time through the read-execute loop.  Bug reported by Harald
-         Koenig <koenig@tat.physik.uni-tuebingen.de>
-
-
-                                  6/16
-                                  ----
-builtins/shopt.def
-       - compat42: make sure the `compat42' option sets the correct variable
-         for compatibility level.  Fixes bug reported by Ondrej Oprala
-         <ooprala@redhat.com>
-
-support/bashbug.sh
-       - fix typo when echoing $USAGE.  Report from Shantanu Kulkarni
-         <djbware@shantanukulkarni.org>
-
-execute_cmd.c
-       - shell_execve: before longjmp back to subshell_top_level, clear out the
-         FIFO fd list by calling clear_fifo_list so the FDs (which we inherited
-         from our parent) aren't closed every time through the read-eval loop.
-         Fix for bug reported by Harald Koenig <koenig@tat.physik.uni-tuebingen.de>
-
-                                  6/18
-                                  ----
-subst.c
-       - extract_process_subst: add additional argument: xflags, allow callers to
-         pass flags like extract_command_subst
-       - extract_process_subst: call xparse_dolparen like command substitution
-         to avoid problems when parsing commands constructs with embedded open
-         parens.  Fixes bug reported by Tim Friske <me@timfriske.com>
-
-subst.h
-       - extract_process_subst: modified prototype for extern declaration
-
-                                  6/19
-                                  ----
-execute_cmd.c
-       - execute_pipeline: if running with lastpipe enabled, make sure that we
-         check whether or not the job id is valid using INVALID_JOB before
-         calling job_exit_status. the jobs list can get frozen and unfrozen in
-         the presence of nested pipelines and loops and wait_for can clear a
-         job table entry.  Fixes bug reported by <scorp.dev.null@gmail.com>
-
-jobs.c
-       - freeze_jobs_list: now returns old value of jobs_list_frozen; unused at
-         current time
-
-jobs.h
-       - freeze_jobs_list: change return value
-
-                                  6/20
-                                  ----
-lib/glob/smatch.c
-       - MEMCHR: single-byte and wide character defines (memchr/wmemchr)
-
-lib/glob/sm_loop.c
-       - GMATCH: when the wildcards are the last element of the pattern, make
-         sure they do not match a string containing a `/' if FNM_PATHNAME is
-         set in FLAGS
-       - GMATCH: when recursively calling GMATCH after we see a `*', don't
-         try to consume the rest of the pattern with `*' if FNM_PATHNAME is
-         set in FLAGS, just consume up to the next slash and then see whether
-         or not the rest of the pattern matches.  Fixes bug reported by Ian
-         Kelling <ian@iankelling.org>
-       - GMATCH: when processing `*' in the pattern, after skipping consecutive
-         wildcards, if we hit a literal `/' in the pattern and we're looking
-         for a pathname, skip characters in the string until we find a `/'
-         (no slash means the match fails), and try to match the rest of the
-         pattern against the portion of the string after the next `/'.  Picked
-         up from gnulib/glibc
-
-pathexp.c
-       - split_ignorespec: since split_ignorespec gets globbing patterns,
-         make sure we call skip_to_delim with the SD_GLOB flag so delimiters
-         that occur within bracket expressions don't delimit the pattern.
-         Fixes problem with [[:digit:]] in GLOBIGNORE reported by Ian Kelling
-         <ian@iankelling.org>
-
-unwind_prot.c
-       - unwind_protect_tag_on_stack: new function, returns 1 if unwind-protect
-         frame corresponding to `tag' argument is on unwind-protect stack
-
-unwind_prot.h
-       - unwind_protect_tag_on_stack: extern declaration
-
-                                  6/30
-                                  ----
-lib/readline/misc.c
-       - _rl_revert_all_lines: set entry->data to 0 after assigning it to
-         rl_undo_list to avoid pointer aliasing problems that would result
-         in entry->line being freed by an undo.  The subsequent free would
-         be a double free.  Report and fix from Jared Yanovich
-         <slovichon@gmail.com>
-
-subst.c
-       - command_substitute: other shells do not appear to inherit the -v
-         option when reading and executing command substitutions.  Reported
-         by Ondrej Oprala <ooprala@redhat.com>
-
-                                   7/1
-                                   ---
-config-top.h
-       - CHECKHASH_DEFAULT: new define that supplies the default value for
-         check_hashed_filenames (`checkhash' shopt option); still 0 by default
-
-findcmd.c
-       - check_hashed_filenames: initialize using CHECKHASH_DEFAULT
-
-lib/readline/histexpand.c
-       - history_expand: double quotes can inhibit recognition of the history
-         comment character if history_quotes_inhibit_expansion is non-zero
-
-lib/readline/doc/{history.3,hstech.texi}
-       - history_quotes_inhibit_expansion: expand definition to note that it
-         inhibits scanning for the history comment character as well; correct
-         typo to make it clear that it only works on double-quoted strings
-
-lib/sh/zgetline.c
-       - add new fourth argument: DELIM, allows delimiter to be something
-         other than newline (if DELIM != '\n', UNBUFFERED_READ should be
-         non-zero)
-       - UNBUFFERED_READ is now fifth argument
-       - check character against DELIM rather than strictly newline
-
-externs.h
-       - zgetline: change function prototype for extern declaration
-
-builtins/mapfile.def
-       - mapfile: change calling sequence for zgetline calls
-       - mapfile_builtin: new -d option: DELIM, like in read builtin
-       - mapfile_builtin: pass `delim' to mapfile() as new argument; default
-         to '\n' unless -d option supplied
-       - mapfile: take new DELIM argument, pass to zgetline
-       - mapfile: if DELIM != '\n', set unbuffered_read to 1
-
-doc/{bash.1,bashref.texi}
-       - mapfile: document new `-d DELIM' option
-
-                                   7/5
-                                   ---
-lib/readline/histfile.c
-       - history_truncate_file: if there is an error writing the truncated
-         history list back to the history file, use the same strategy as
-         history_do_write: create a backup file, rename the history file to
-         the backup file, and restore the original history file from the
-         backup file name if the write or the close fails.  Suggestion from
-         Chen Gang <gang.chen.5i5j@gmail.com> to bug-readline
-
-execute_cmd.c
-       - evalnest, evalnest_max: new variables establishing maximum number of
-         recursive `eval' calls; current max is 4096
-       - execute_builtin: unwind-protect value of evalnest around calls to
-         eval builtin. Suggested by Oliver Morais <oliver.morais@gmail.com>
-       - {initialize_subshell,execute_subshell_builtin_or_function}: reset
-         evalnest to 0 in a subshell
-
-builtins/setattr.def
-       - show_name_attributes: show a variable's attributes even if it's
-         invisible (don't show any value since it has none). This means that
-         declare -p var will display VAR's attributes even when var marked
-         as invisible.  Feature request from Peggy Russell
-         <prusselltechgroup@gmail.com>
-       - show_var_attributes: don't print assignment if array or assoc
-         attribute is set but variable marked as invisible
-
-tests/array.right
-       - special note: changed all declare -a output tests because the shell
-         will no longer print out values for invisible array variables. This
-         is a change, but one for correctness:
-
-               declare -a foo='()'
-         and
-               declare -a foo
-         are not equivalent
-
-                                  7/22
-                                  ----
-subst.c
-       - parameter_brace_expand: after calling parameter_brace_expand_indir,
-         turn off the W_ARRAYIND flag in the word it returns, because there
-         is no way for it to return the index that should be used, and the
-         rest of the function assumes that IND is valid if W_ARRAYIND is set.
-         Fixes bug reported by Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
-
-                                   8/2
-                                   ---
-parse.y
-       - read_token_word: if we read a character that will end a command
-         substitution, don't skip over quoted newlines when we read an
-         additional character to figure out whether it's a two-character
-         token. This lets the higher layers deal with quoted newlines after
-         the command substitution. Fixes bug reported by EmanueL Czirai
-         <amanual@riseup.net>
-
-                                  8/11
-                                  ----
-execute_cmd.c
-       - execute_pipeline: check whether lastpipe_jid corresponds to a valid
-         job before calling append_process, for the same reason as fix from
-         6/19.  Fixes bug reported by <lolilolicon@gmail.com>
-
-                                  8/12
-                                  ----
-lib/sh/unicode.c
-       - stub_charset: use strncpy instead of strcpy because we are copying
-         into a local fixed-length buffer.  Fixes vulnerability reported by
-         <romerox.adrian@gmail.com>
-
-execute_cmd.c
-       - execute_pipeline: if we don't call append_process, call
-         wait_for_single_pid to get the status of `lastpid', since that will
-         check the status of already-reaped processes.  Fixes spurious error
-         message about non-existent process from fix of 8/11
-
-                                  8/15
-                                  ----
-jobs.c
-       - running_in_background: new variable, keeps track of whether or not we
-         are running in the background (not perfect yet)
-       - initialize_job_control: even if we are not turning on job control,
-         get the terminal pgrp so we can use it later
-       - {set_job_control,initialize_job_control}: set running_in_background
-         to 1 if terminal pgrp != shell pgrp
-       - {stop_pipeline,make_child,wait_for}: if we are running in the
-         background, don't mess with the terminal's process group; assume that
-         the parent shell will do that.  Fixes bug reprted by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-
-shell.c
-       - shell_reinitialize: reset running_in_background back to 0
-
-                                  8/24
-                                  ----
-execute_cmd.c
-       - {execute_connection,execute_command_internal}: make sure that
-         asynchronous commands always set $? to 0 and are not affected by the
-         command's exit status being inverted using `!'.  Fixes bug reported
-         by Vincent Lefevre <vincent@vinc17.net>
-
-lib/readline/display.c
-       - rl_message: call vsnprintf with full msg_bufsiz, since it counts 
-         one fewer than the buffer length passed as an argument.  Bug report
-         and fix from Dylan Cali <calid1984@gmail.com>
-
-                                  8/26
-                                  ----
-builtins/evalstring.c
-       - evalstring: if CURRENT_TOKEN == yacc_EOF, reset it to newline.  This
-         is instead of calling reset_parser(); that might still be needed.
-         Fixes bug with eval and a subsequent statement ending with EOF
-         reported by <jim.avera@gmail.org>
-
-pcomplete.c
-       - filter_stringlist: when extglob is on, a leading ! in the filter
-         pattern should be left alone when it introduces a !(pat) pattern;
-         otherwise it messes up the pattern.  Fixes bug reported by David
-         Korn <dgkorn@gmail.com>
-
-                                  8/27
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarify the behavior of bash when given the -c option, since $0 is
-         technically not a positional parameter.  Bug reported by Stephane
-         Chazelas <stephane.chazelas@gmail.com>
-
-                                  8/28
-                                  ----
-lib/readline/history.c
-       - add_history: use history_max_entries (if history is stifled) or
-         DEFAULT_HISTORY_INITIAL_SIZE if not (new define, defaults to 502)
-         to size the initial allocation of the history array.  Assumption
-         is that this will reduce the number of allocations
-
-                                  8/29
-                                  ----
-execute_command.c:
-       - sourcenest, sourcenest_max: new variables used to track level of
-         sourced files and (maybe) one day catch infinite source recursion
-       - execute_builtin: if current source level exceeds sourcenest_max,
-         trigger an error and jump back to the top level
-       - {initialize_subshell,execute_subshell_builtin_or_function}: reset
-         sourcenest to 0 in a subshell
-
-                                   9/2
-                                   ---
-variables.c
-       - bind_variable: if a nameref expands to an array reference, make
-         sure that assign_array_element gets called (maybe even
-         recursively) instead of bind_variable_internal, so invalid variable
-         names (like arr[0]) don't get created.  Fixes bug reported by
-         <lolilolicon@gmail.com>
-
-                                   9/3
-                                   ---
-execute_cmd.c
-       - evalnest_max,sourcenest_max: initialize from EVALNEST_MAX and
-         SOURCENEST_MAX, respectively.  Feature suggested by
-         <bogun.dmitriy@gmail.com>
-
-config-top.h
-       - define EVALNEST_MAX and SOURCENEST_MAX to 0
-
-                                   9/6
-                                   ---
-bashline.c
-       - find_cmd_start: fix to (crudely) deal with >| token; even though
-         skip_to_delim finds `|' as a delimiter, we call it again and use
-         what the second call finds.  Fixes bug reported by Dan Jacobson
-         <jidanni@jidanni.org>
-
-findcmd.c
-       - find_in_path_element: if in posix mode, do not expand a literal
-         tilde in a $PATH element
-
-doc/bashref.texi
-       - add change to tilde expansion in $PATH elements to posix mode
-         description
-
-builtins/common.h
-       - ISHELP: new define for builtins that do their own option parsing
-         and don't use internal_getopt(); checks whether argument is --help
-       - CHECK_HELPOPT: convenience define to help builtins that do their
-         own option parsing to check for --help with one line of code
-       - CASE_HELPOPT: convenience define to help builtins that use
-         internal_getopt() check for --help with one line of code
-
-builtins/help.def
-       - builtin_help: new function, prints out --help output for current
-         builtin
-
-builtins/{kill,let,pushd}.def
-       - add CHECK_HELPOPT to builtins that use ISOPTION; call builtin_help
-         and return EX_USAGE (kill/let/pushd/popd/dirs)
-
-builtins/{caller,fg_bg}.def
-       - use CHECK_HELPOPT to recognize --help, since these builtins perform
-         checks that can cause them to return before calling no_options
-         (caller/fg/bg)
-
-builtins/{exit,return}.def
-       - use CHECK_HELPOPT to recognize --help before calling get_exitstat()
-         (return/exit/logout)
-
-builtins/{break,shift}.def
-       - use CHECK_HELPOPT to recognize --help before any other checks
-         (break/continue/shift)
-
-builtins/bashgetopt.h
-       - GETOPT_EOF: convenience define
-       - GETOPT_HELP: new define, to indicate internal_getopt saw --help
-
-builtins/bashgetopt.c
-       - internal_getopt: return GETOPT_HELP for --help
-
-builtins/common.c
-       - no_options: recognize --help, call builtin_help and return 2
-         (builtin/eval/source/./times)
-
-builtins/command.def
-       - use CASE_HELPOPT() to handle --help after calling internal_getopt()
-         (command)
-
-builtins/{colon,echo,test}.def
-       - do not recognize --help (:/true/false/echo/test)
-
-                                   9/8
-                                   ---
-sig.c
-       - termsig_sighandler: if readline is active now, set the bashline event
-         hook. Old code just set it for interactive shells.  Part of fix for
-         bug reported by <mickael9@gmail.com>
-
-bashline.c
-       - bash_event_hook: call rl_cleanup_after_signal if terminating_signal
-         is non-zero, since check_signals_and_traps() will cause the shell to
-         exit if it is and we want to clean up the readline state first.  Rest
-         of fix for bug reported by <mickael9@gmail.com>
-
-                                   9/9
-                                   ---
-jobs.c
-       - waitchld: when running the wait builtin in posix mode, with a trap set
-         on SIGCHLD, use queue_sigchld_trap instead of trap_handler (SIGCHLD),
-         otherwise you will lose SIGCHLDs when children_exited > 1.  Fixes bug
-         reported by <crispusfairbairn@gmail.com>
-
-builtins/read.def
-       - read_builtin: if we are changing the tty settings, call
-         initialize_terminating_signals so we have a chance to catch all
-         terminating signals and potentially clean up the terminal before
-         exiting
-       - read_builtin: tty_modified: new variable, set to 1 if we change the
-         terminal attributes and have to call ttyrestore() to restore them
-       - if one of the `reads' returns -1/EINTR due to a terminating signal,
-         and we have modified the terminal, call ttyrestore before calling
-         CHECK_TERMSIG
-       - ttyrestore: set tty_modified to 0 when called
-
-                                  9/10
-                                  ----
-builtins/read.def
-       - termsave: now global to file so other functions can use it
-       - read_tty_cleanup: if tty_modified is non-zero, call ttycleanup to
-         restore old terminal settings and turn off tty_modified
-
-sig.c
-       - termsig_handler: call read_tty_cleanup if currently executing read
-         builtin; it does the right thing.  Final piece of fix for bug reported
-         by Jan Rome <jan.rome@gmail.com>
-
-                                  9/11
-                                  ----
-general.c
-       - printable_filename: general function to return a printable
-         representation of a string (presumed to be a filename)
-
-general.h
-       - extern declaration for printable_filename
-
-execute_cmd.c
-       - execute_disk_command: use printable_filename
-
-builtins/{bind,cd,enable,hash,source}.def
-       - use printable_filename as appropriate when printing error messages.
-         From a suggestion by Vincent Lefevre <vincent@vinc17.net>
-
-builtins/bind.def
-       - use CASE_HELPOPT() to handle --help after calling internal_getopt()
-         (bind)
-
-                                  9/12
-                                  ----
-builtins/common.h
-       - SEVAL_FUNCDEF: new flag for parse_and_execute; it means that we only
-         accept a single function definition command, as when we are importing
-         functions from the environment
-       - SEVAL_ONECMD: new flag for parse_and_execute; for future use
-
-builtins/evalstring.c
-       - parse_and_execute: if the SEVAL_FUNCDEF flag is set, disallow anything
-         but a function definition command
-
-variables.c
-       - initialize_shell_variables: don't allow functions with invalid names
-         to be imported from the environment, even though we still allow them
-         to be defined
-       - initialize_shell_variables: when importing function definitions from
-         the environment, call parse_and_execute with the SEVAL_FUNCDEF flag
-         to force the command to be just a function definition
-
-subst.c
-       - param_expand: when expanding a $name variable expansion, make sure that
-         the variable is visible and set before following the nameref chain
-       - param_expand: when expanding a $name variable expansion and following the
-         nameref chain, make sure the resulting variable is visible and set
-         before using it
-
-                                  9/13
-                                  ----
-variables.c
-       - initialize_shell_variables: when importing function definitions from
-         environment, use SEVAL_ONECMD flag for parse_and_execute.  Part of
-         CVE-2014-6271
-
-builtins/evalstring.c
-       - parse_and_execute: if SEVAL_ONECMD flag set, return immediately after
-         calling execute_command_internal.  Final piece for fix for bug
-         reported by Stephane Chazelas <stephane.chazelas@gmail.com>.  Part of
-         CVE-2014-6271
-
-                                  9/24
-                                  ----
-parse.y
-       - reset_parser: reset eol_ungetc_lookahead to 0 here, since we don't want
-         shell_getc returning it on the next call.  Fixes problem reported by
-         Tavis Ormandy <taviso@cmpxchg8b.com> and Michal Zalewski
-         <lcamtuf@coredump.cx>.  Potentially part of CVE-2014-6271; fix for
-         CVE-2014-7169
-
-                                  9/25
-                                  ----
-parse.y
-       - push_heredoc: new function, pushes a here-doc redirection onto
-         redir_stack handling overflow of redir_stack. Exits on overflow.
-         Original fix from Florian Weimer <fweimer@redhat.com>.  Fix for
-         CVE-2014-7186
-       - change straight assignments to redir_stack to call push_redir
-       - add one to size of word_lineno stack to avoid off-by-one error
-         below in read_token_word. Overflow just results in line numbers
-         being wrong.  Fix for CVE-2014-7187
-
-                                  9/27
-                                  ----
-{execute_cmd,trap}.c
-       - changes to make minimal-config builds work again, mostly missing
-         #ifdefs for optional features
-
-builtins/common.c
-       - builtin_help: dummy version to be included if HELP_BUILTIN not
-         defined, for minimal-config builds
-
-variables.c
-       - initialize_shell_variables: incorporated patches from Florian
-         Weimer <fweimer@redhat.com> to change the strings bash looks
-         for when importing shell functions from the environment.  It
-         adds a prefix (BASH_FUNC_) and a suffix (%%) to the name to
-         mark it as having been created by bash as an exported function.
-         Fix for remote attacks part of CVE-2014-6271 and CVE-2014-7169
-       - mk_env_string: takes new argument, indicating whether we are
-         constructing a function
-       - mk_env_string: encodes function names as described above, so
-         initialize_shell_variables can find them
-
-                                  9/28
-                                  ----
-copy_cmd.c
-       - copy_redirects: before calling savestring on here_doc_eof, make
-         sure it's not NULL (it could have been the result of a here
-         document delimited by EOF or EOS).  Fixes bug reported by
-         Michal Zalewski <lcamtuf@coredump.cx>.  Fix for CVE-2014-6277
-
-make_cmd.c
-       - make_redirection: initialize here_doc_eof member to NULL.  Rest of
-         fix for CVE-2014-6277
-
-                                  9/29
-                                  ----
-parse.y
-       - current_input_line_state: return a sh_input_line_state_t containing
-         the current shell_input_line and its index and size variables
-
-shell.h
-       - current_input_line_state: extern declaration
-
-builtins/evalstring.c
-       - parse_and_execute: call reset_parser() before returning if
-         SEVAL_ONECMD set.  Fixes bug reported by Michal Zalewski
-         <lcamtuf@coredump.cx> and designated CVE-2014-6278
-       - parse_and_execute: if we parse a function definition when
-         SEVAL_FUNCDEF is set, but don't consume the entire passed string,
-         throw an error, reset the parser, and return.  Part of fix for
-         CVE-2014-6278
-       - parse_and_execute: if parsing the shell function definition when
-         SEVAL_FUNCDEF is set transforms the function name (e.g., if it
-         begins with a newline or begins or ends with whitespace), throw
-         an error, reset the parser, and return.  Fixes bug reported by
-         Eric Kobrin <ekobrin@akamai.com>
-
-                                  10/2
-                                  ----
-jobs.c
-       - bgp_prune: don't do anything if bgpids.npid == 0 or bgpids.list == NULL.
-         This can happen if something gets run before the job control framework
-         is initialized.  Bug report from <mancha1@zoho.com>
-
-                                  10/3
-                                  ----
-parse.y
-       - xparse_dolparen: don't set token_to_read to newline after calling
-         parse_string() and cleaning up when the shell is not interactive.  This
-         makes the parser think it's ok to read new commands even if it's not in
-         a state where that should be possible.  Underlying fix for bug reported
-         by Michal Zalewski <lcamtuf@coredump.cx> and designated CVE-6278
-       - parser_remaining_input: new function, returns the portion of
-         shell_input_line that hasn't yet been read
-       - current_input_line_state: removed
-
-shell.h
-       - parser_remaining_input: extern declaration
-       - current_input_line_state: removed
-
-builtins/evalstring.c
-       - parse_and_execute: change code that checks whether parse_command has
-         consumed the entire passed string when SEVAL_FUNCDEF is used to use
-         parser_remaining_input instead of messing around with (new)
-         current_input_line_state.  Part of fix for CVE-2014-6278
-
-variables.c
-       - initialize_shell_variables: if we don't call parse_and_execute, free
-         the temporary string, since parse_and_execute won't.  Report and fix
-         from Eric Kobrin <ekobrin@akamai.com>
-
-                                  10/4
-                                  ----
-print_cmd.c
-       - print_function_def: when in posix mode, print shell function
-         definitions as posix specifies them, without the leading
-         `function' keyword
-
-general.c
-       - exportable_function_name: return 1 if the passed string can be
-         added to the environment as an exported function name.  Currently
-         prohibits function names containing  `/' and `=' from being
-         exported
-
-general.h
-       - exportable_function_name: extern declaration
-
-builtins/setattr.def
-       - set_or_show_attributes: if exporting a function with export -f,
-         call exportable_function_name to determine whether the function
-         should be exported; don't export function if it returns 0
-
-                                  10/7
-                                  ----
-builtins/setattr.def
-       - set_or_show_attributes: don't show identifiers that are invisible
-         and imported from the environment, since that combination of
-         attributes means that the imported variable is not a valid shell
-         identifier.  Report from Stephane Chazelas
-         <stephane.chazelas@gmail.com>
-
-                                  10/8
-                                  ----
-shell.c
-       - shell_initialize: set new variable should_be_restricted, which
-         says whether or not the shell will be a restricted one based on the
-         shell name; use in calls to initialize_shell_variables (to inhibit
-         importing shell functions) and initialize_shell_options (to inhibit
-         parsing $SHELLOPTS) and initialize_bashopts (to inhibit parsing
-         $BASHOPTS).  Report from <paulfm@umn.edu>
-
-                                  10/12
-                                  -----
-execute_cmd.c
-       - execute_function: unwind-protect loop_level, set loop_level to 0
-         when entering a function so break and continue in functions don't
-         break loops running outside of the function. Fix picked up from
-         dash via Herbert Xu <herbert@gnodor.apana.org.au>
-
-                                  10/13
-                                  -----
-doc/Makefile.in
-       - bashref.pdf: create using texi2dvi --pdf rather than postprocessing
-         the dvi file, so we have PDF bookmarks and links.  Fix from
-         Siep Kroonenberg <siepo@cybercomm.nl>
-
-                                  10/14
-                                  -----
-subst.h
-       - Q_ARITH: new quoting flag. Semantics are per Posix's spec for
-         arithmetic expansion: act as if string is quoted, but don't treat
-         double quotes specially (in this case, they will be removed by quote
-         removal)
-       - Q_ARRAYSUB: new quoting flag, indicates we are expanding an indexed
-         array subscript
-
-subst.c
-       - expand_arith_string: if we are not expanding the string, but we saw
-         a quote with Q_ARITH specified as one of quoting flags, perform
-         quote removal even if Q_DOUBLE_QUOTES is specified
-       - param_expand: change calls to expand_arith_string for $[ and $((
-         cases to specify Q_ARITH.  Now $(( "$x" )) and $(( "x" )) work if x
-         has a value that evaluates to a valid number, as Posix specifies
-       - expand_word_internal: add test for quoted&Q_ARITH to the tilde case,
-         so we continue to perform tilde expansion in arithmetic contexts
-       - expand_word_internal: if quoted&Q_ARITH, continue processing when we
-         see a `"', acting as if the double quote isn't present (already
-         Q_DOUBLE_QUOTED)
-
-arrayfunc.c
-       - array_expand_index: pass Q_DOUBLE_QUOTED|Q_ARITH|Q_ARRAYSUB as quoted
-         argument in call to expand_arith_string.  This inhibits word
-         splitting (Q_DOUBLE_QUOTED) while discarding double quotes (Q_ARITH),
-         identical to the quote flags passed while expanding $(( )) and $[ ].
-         Q_ARRAYSUB reserved for future use.  Fixes problem reported by
-         Stephane Chazelas <stephane.chazelas@gmail.com>
-
-                                  10/16
-                                  -----
-subst.c
-       - parameter_brace_expand_word: if the PF_ASSIGNRHS flag is set and we
-         are expanding what looks like an array subscripted with @ or *,
-         make sure the variable we're expanding is actually an array before
-         we add Q_DOUBLE_QUOTES to the flags.  If we don't, things like
-         scalar[@] will remain quoted.  Fixes ubuntu bug 1381567
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1381567
-
-                                  10/17
-                                  -----
-{jobs,nojobs}.c
-       - get_original_tty_job_signals: get original signal dispostions for
-         SIGTSTP, SIGTTIN, SIGTTOU before we start manipulating them in
-         make_child
-       - default_tty_job_signals: make sure we set SIGTSTP, SIGTTIN, or
-         SIGTTOU to SIG_IGN if they were ignored at shell startup instead of
-         unconditionally setting them to SIG_DFL.  Fixes bug reported by
-         idallen@idallen.ca
-
-jobs.h
-       - get_original_tty_job_signals: extern declaration
-
-trap.c
-       - initialize_traps: add call to get_original_tty_job_signals
-
-                                  10/22
-                                  -----
-subst.c
-       - expand_string_for_rhs: when expanding in this context (rhs of a word
-         expansion or pattern removal), we don't perform word splitting, so
-         we don't want to split $* if IFS is empty.  Fixes bug reported by
-         Stephane Chazelas <stephane.chazelas@gmail.com>
-
-                                  10/23
-                                  -----
-subst.c
-       - param_expand: when expanding $* in a pattern context where the
-         expansion is quoted (Q_PATQUOTE), don't quote the expansion --
-         the outer quotes don't make the characters in the expansion of
-         $* special.  Posix interp 221.  Reported by Stephane Chazelas
-         <stephane.chazelas@gmail.com>
-
-                                  10/28
-                                  -----
-lib/readline/bind.c
-       - enable-bracketed-paste: new bindable variable, enables support for
-         a terminal's `bracketed paste mode'.  Code contributed by
-         Daniel Colascione <dancol@dancol.org>
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - enable-bracketed-paste: add description
-
-lib/readline/{readline.c,rlprivate.h}
-       - _rl_enable_bracketed_paste: declarations
-       - #defines for use by bracketed paste implementation
-
-lib/readline/rltty.c
-       - rl_prep_terminal: send BRACK_PASTE_INIT string to terminal if we
-         are supposed to enable bracketed-paste mode; change terminal_prepped
-         to indicate we sent that string and need to clean up
-       - rl_deprep_terminal: if terminal_prepped indicates we sent the
-         bracketed-paste mode init string to the terminal, send the cleanup
-         string before restoring the terminal modes
-
-lib/readline/kill.c
-       - rl_bracketed_paste_begin: function to read bracketed paste until
-         BRACK_PASTE_SUFF; discard the suffix, and insert the rest of the
-         paste as a single (undoable) object.  Bound to BRACK_PASTE_PREF
-
-lib/readline/funmap.c
-       - bracketed-paste-begin: new bindable command, executes
-         rl_bracketed_paste_begin
-
-lib/readline/readline.c
-       - bind_bracketed_paste_prefix: new function, sets up to recognize
-         the bracketed paste prefix sequence (BRACK_PASTE_PREF) in emacs
-         keymap and vi insertion keymap
-       - readline_initialize_everything: call bind_bracketed_paste_prefix
-
-                                  11/1
-                                  ----
-builtins/ulimit.def
-       - RLIMIT_POSIXLOCKS: now synonym for RLIMIT_LOCKS
-       - -k: new option: RLIMIT_KQUEUES, max kqueues allocated for this
-         process
-       - -P: new option: RLIMIT_NPTS, max number of pseudoterminals available
-         to this process
-
-doc/{bash.1,bashref.texi}
-       - document `ulimit -k' option
-       - document `ulimit -P' option
-
-parse.y
-       - `timespec list_terminator' production: if the list terminator is `;'
-         set last_read_token to `;' to allow things like `time ; command' to
-         time null commands and not throw a syntax error.  Patch from
-         Piotr Grzybowski <narsil.pl@gmail.com>
-       - `BANG list_terminator' production: do the same thing
-
-variables.c
-       - sv_optind: use find_shell_variable and get_variable_value so we can
-         have the variable's context in the case we need to do something
-         when we are restoring a previous variable context's value
-
-builtins/getopt.h
-       - sh_getopt_state_t: struct to save sh_getopt's internal state so we
-         can restore it around function calls in the event that we have a
-         local copy of OPTIND
-
-builtins/getopt.[ch]
-       - sh_getopt_{save,restore}_istate: new functions to save and restore
-         getopt's internal state
-       - sh_getopt_{alloc,dispose}_istate: new functions to allocate and
-         deallocate sh_getopt_istate_t objects
-
-execute_cmd.c
-       - maybe_restore_getopt_state: restore sh_getopt state after executing
-         function body iff the funtion declared a local copy of OPTIND
-       - execute_function: save sh_getopt state before executing function body
-       - execute_function: note in getopt_state->flags whether or not the
-         function declared a local copy of OPTIND; used by
-         maybe_restore_getopt_state
-       - execute_function: maybe restore sh_getopt state before returning via
-         call to maybe_restore_getopt_state.  Fixes bugs with getopts and
-         state between calls reported in 2011 by Bernd Eggink
-         <monoped@sudrala.de> and in 2014 by Oyvind Hvidsten
-         <oyvind.hvidsten@dampir.no>
-
-configure.ac
-       - enable-function-import: new option, controls whether function imports
-         are included.  Enabled by default.  Patch from David Galos
-         <davegalos@google.com>
-
-config.h.in
-       - FUNCTION_IMPORT: define controlled by enable-function-import above
-
-variables.c
-       - initialize_shell_variables: include code to import function
-         definitions from the environment if FUNCTION_IMPORT is defined
-
-doc/bashref.texi
-       - --enable_function-import: document new configuration option
-
-                                  11/5
-                                  ----
-lib/readline/history.c
-       - history_lines_read_from_file: new variable, set by read_history and
-         read_history_range to the actual number of lines read from the
-         history file.  The value is valid immediately after a call to one
-         of those functions
-       - history_lines_written_to_file: new variable, set by write_history,
-         history_do_write, and history_truncate_file to the actual number of
-         lines written to the history file.  The value is valid immediately
-         after a call to one of those functions
-
-variables.c
-       - sv_histsize: set history_lines_in_file after history_truncate_file()
-         only if hmax < history_lines_in_file (lines we've already read); a
-         cosmetic change only
-
-bashhist.c
-       - load_history: set history_lines_in_file after read_history() from
-         history_lines_read_from_file, since read_history reads all of the
-         lines from the history file even if it's more than $HISTSIZE
-       - maybe_save_shell_history: after calling write_history(), set
-         history_lines_in_file to history_lines_written_to_file, since we
-         can assume that we read everyhing we just wrote
-
-builtins/history.def
-       - history_builtin: after calling read_history (history -r), set the
-         new value of history_lines_in_file, for the same reason as above
-       - history_builtin: after calling read_history_range (history -n), set
-         history_lines_in_file from history_lines_read_from_file
-
-                                  11/6
-                                  ----
-lib/readline/histfile.c
-       - history_truncate_file: since we move the old file to a backup copy
-         before truncating, make sure the new file is owned by the same uid
-         as the old
-       - history_do_write: use chown in the same way as history_truncate_file
-
-                                  11/12
-                                  -----
-lib/readline/display.c
-       - expand_prompt: takes a new `flags' argument; only one flag defined
-         so far: PMT_MULTILINE
-       - expand_prompt: changed all callers to add new flags argument
-       - rl_expand_prompt, redraw_prompt: make sure to set PMT_MULTILINE in
-         FLAGS argument to expand_prompt if expanding parts of a prompt
-         containing embedded newlines
-       - expand_prompt: only add mode char to last line of a prompt with
-         embedded newlines, so mode indicator doesn't get lost and gets
-         updated properly.  Fixes problem reported by Renlin Li
-         <lirenlin@gmail.com>
-
-                                  11/13
-                                  -----
-
-lib/readline/display.c
-       - prompt_modestr: changed prompt_modechar to return a string denoting
-         the editing mode; default strings for emacs and both vi modes are
-         #defines in this file.  prompt_modestr takes an argument in which
-         it returns the length of the mode string
-       - expand_prompt: if expanding mode strings in the prompt, get the
-         mode string to use and add it at the beginning of the prompt string,
-         before expanding it.  This will allow future work allowing the mode
-         string to contain invisible characters
-
-                                  11/15
-                                  -----
-lib/readline/rlprivate.h
-       - _rl_{emacs,vi_cmd,vi_ins}_mode_str: extern declarations for
-         variables to hold current values of user-settable mode strings;
-         variables to hold lengths 
-
-lib/readline/rlconf.h
-       - defines for default values of the mode strings for each editing mode
-         and keymap
-
-lib/readline/display.c
-       - _rl_{emacs,vi_cmd,vi_ins}_mode_str: new variables to hold values of
-         user-settable mode strings
-       - _rl_{emacs,vi_cmd,vi_ins}_modestr_len: new variables to hold lengths
-         of corresponding mode string variables
-       - prompt_modestr: return appropriate user-settable mode string
-         variables
-
-lib/readline/bind.c
-       - {emacs,vi-ins,vi-cmd}-mode-string: new user-settable mode string
-         variables
-       - sv_{emacs,viins,vicmd}_modestr: variable handling functions for user-
-         settable mode string variables. Non-null values are run through
-         rl_translate_keyseq so users can include invisible character
-         sequences in the mode strings; null values restore the default
-       - _rl_get_string_variable_value: handle values for new user-settable
-         mode string variables. Original code contributed by Dylan Cali
-         <calid1984@gmail.com>
-
-lib/readline/doc/rluser.texi
-       - {emacs,vi-ins,vi-cmd}-mode-string: document, including the fact that
-         you can use \1 and \2 to bracket sequences of non-printing
-         characters
-
-                                  11/16
-                                  -----
-lib/readline/history.c
-       - add_history: replace loop that copies history list down one item
-         with call to memmove to take advantage of whatever efficiencies
-         libc can offer.  Won't be any slower than current loop
-
-lib/readline/display.c
-       - rl_redraw_prompt_last_line: new function, calls redraw_prompt if
-         the prompt contains multiple lines; calls rl_forced_update_display
-         if not
-
-lib/readline/readline.h
-       - rl_redraw_prompt_last_line: extern declaration, undocumented in
-         texinfo manual until I get it a little more work
-
-bashline.c
-       - bash_execute_unix_command: instead of unconditionally calling
-         rl_forced_update_display, call rl_redraw_prompt_last_line if we
-         cleared the last line before executing the command.  This keeps
-         commands that don't display any other output but just manipulate
-         the contents of the line buffer from redisplaying the prompt lines
-         before the last newline multiple times.  Fixes bug reported by
-         Jesper Nygards <jesper.nygards@gmail.com> and Rob Foehl
-         <rwf@loonybin.net>.  This means that commands that display output
-         will *only* display the final line of the prompt
-       - bash_execute_unix_command: if the command returns 124, we redraw
-         the line unconditionally, including all lines of the prompt
-
-                                  11/18
-                                  -----
-builtins/mapfile.def
-       - mapfile_builtin: don't allow a valid array reference through to
-         mapfile(), since it will just create a shell variable with that name.
-         Bug and fix from Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                  11/19
-                                  -----
-lib/readline/complete.c
-       - _rl_colored_completion_prefix: new variable, if non-zero, and color
-         support is compiled in, and the $LS_COLORS variable exists and
-         contains color definitions, display any common prefix of a set of
-         completions in blue when displaying all the possible completions.
-         Doesn't work with menu-complete, which inserts possible completions
-         inline
-       - colored_prefix_start(), colored_prefix_end(): new functions, used to
-         bracket colored completion prefixes
-       - fnprint: if prefix_bytes is non-zero, and _rl_colored_completion_prefix
-         is > 0, display the first PREFIX_BYTES bytes of the word bracketed
-         by calls to colored_prefix_start and colored_prefix_end
-       - print_filename: if _rl_colored_completion_prefix is > 0, compute the
-         length in bytes of the common prefix and pass that to fnprint
-
-lib/readline/readline.c
-       - readline_initialize_everything: initialize the colors from $LS_COLORS
-         if _rl_colored_completion_prefix is non-zero
-
-lib/readline/colors.c
-       - _rl_print_prefix_color: new function, changes text color to that
-         defined for the common prefix of a set of possible completions
-         (currently cyan, same as directories); currently uses C_PREFIX,
-         defined in colors.h as C_DIR
-
-lib/readline/colors.h
-       - _rl_print_prefix_color: new extern declaration
-
-lib/readline/bind.c
-       - colored-completion-prefix: new bindable variable, if set, common
-         prefix of a set of possible completions is displayed in color.
-         Feature requested by several, most recently by Richard Neill
-         <rn214@richardneill.org> (in a slightly different form) and
-         Duy Nguyen <pclouds@gmail.com>
-
-                                  11/20
-                                  -----
-builtins/printf.def
-       - printf_builtin: allow null (empty) format strings supplied with
-         -v var to set `var' to the empty string.  That is, printf -v var ""
-         is now the same as var="".  Change suggested by Mike Frysinger
-         <vapier@gentoo.org>
-
-pathexp.h
-       - FNMATCH_NOCASEGLOB: macro to decide whether or not to pass
-         FNM_CASEFOLD flag to strmatch depending on whether glob_ignore_case
-         is set; analogout to FNMATCH_IGNCASE
-
-pathexp.c
-       - glob_name_is_acceptable: use FNMATCH_NOCASEMATCH to determine flags
-         passed to strmatch; if nocaseglob is used to generate glob matches,
-         it should be used to generate ignored matches
-
-                                  11/21
-                                  -----
-pcomplete.c
-       - filter_stringlist: the call to strmatch now honors the setting of
-         nocasematch.  Feature request from Ville Skytta <ville.skytta@iki.fi>
-         back in 2010
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - complete -X: document that filtering the list of possible completions
-         honors the nocasematch option when performing matching
-
-lib/glob/gmisc.c
-       - include chartypes.h and strmatch.h for new defines
-       - match_pattern_{wchar,char}: now take new third FLAGS argument, flags
-         have same meanings as strmatch(); intent is to handle case
-         insensitive comparisons under same conditions as strmatch
-       - FOLD: imported case-folding define from sm_loop.c; wide and single-
-         byte character versions
-       - match_pattern_{wchar,char}: use FOLD when comparing characters to
-         honor FNM_CASEFOLD if set in FLAGS argument
-
-externs.h
-       - match_pattern_{wchar,char}: updated extern declarations
-
-subst.c
-       - match_{upattern,wpattern}: update strmatch/wcsmatch calls to include
-         FNMATCH_IGNCASE in flags argument
-       - match_{upattern,wpattern}: update match_pattern_{char,wchar} calls
-         to include FNMATCH_IGNCASE in flags argument (consistent with calls
-         to strmatch).  This makes pattern substitution word expansion honor
-         nocasematch shell option.  Feature requested by Davide Baldini
-         <baldiniebaldini@gmail.com>
-       - match_wpattern: make sure to fold case if necessary when doing simple
-         matching
-
-doc/{bash.1,bashref.texi}
-       - pattern substitution: updated description to include honoring setting
-         of nocasematch when performing matching
-
-subst.c
-       - expand_word_internal: optimize handling of "$@" idiom by calling
-         list_rest_of_args() and quote_list() directly at the top of the
-         function instead of going through normal code path
-       - cached_quoted_dollar_at: WORD_LIST of quoted positional parameters,
-         used by same code above that optimizes "$@"; if non-null we just
-         return a copy of the list; if null, we save a copy of the list we
-         create
-       - invalidate_cached_quoted_dollar_at: convenience function to allow
-         other parts of the shell (e.g., remember_args()) to destroy the
-         cached list of quoted positional parameter when the positional
-         parameters change
-
-builtins/common.c
-       - remember_args: call invalidate_cached_quoted_dollar_at()
-
-builtins/shift.def
-       - shift_builtin: call invalidate_cached_quoted_dollar_at after modifying
-         dollar_vars[]
-
-builtins/source.def
-       - maybe_pop_dollar_vars: call invalidate_cached_quoted_dollar_at just
-         to be safe
-
-                                  11/23
-                                  -----
-builtins/evalfile.c
-       - _evalfile: return -1 if errno == ENOENT and the flags don't include
-         FEVAL_ENOENTOK.  If we print an error message we should return an
-         error
-       - force_execute_file: new function, reads and executes commands from
-         a file but returns an error if file  doesn't exist
-
-builtins/common.h
-       - force_execute_file: new extern declaration
-
-shell.c
-       - main: call start_debugger even if dollar_vars[1] == 0 if the shell
-         isn't interactive (interactive_shell == 0)
-       - start_debugger: call force_execute_file instead of maybe_execute_file;
-         turn off debugging mode if it returns value < 0
-
-                                  11/24
-                                  -----
-hashlib.h
-       - DEFAULT_HASH_BUCKETS: doubled to 128, cost in memory use is small but
-         changes traversal order when not sorting results
-
-                                  11/25
-                                  -----
-doc/{bash.1,bashref.texi}
-       - make it clearer, by breaking it out into a separate paragraph, that
-         referencing an array without a subscript is equivalent to referencing
-         it with subscript 0
-       - add text saying that referencing any variable using a valid subscript
-         is OK
-
-                                  11/28
-                                  -----
-
-arrayfunc.c
-       - bind_array_variable, bind_assoc_variable: allow binding value to a
-         readonly variable if the ASS_FORCE flag is set in the FLAGS
-         argument
-
-subst.h
-       - ASS_FORCE: new assignment flag; means to allow assignment even if
-         variable is marked readonly
-
-builtins/declare.def
-       - when assigning a value to an array or assoc variable using
-         something like `declare -r foo=bar' where foo is an existing array
-         variable, pass the ASS_FORCE to assign_array_var_from_string so
-         the assignment is allowed.  Fixes debian bug 765759
-         http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765759
-
-builtins/setattr.def
-       - var_attribute_string: new function to return (as argument) a char
-         array with attribute flag values for a given variable; returns the
-         length of the array
-
-lib/sh/shquote.c
-       - sh_quote_reusable: function returning a version of its string
-         argument that is quoted for reuse
-
-externs.h
-       - sh_quote_reusable: extern declaration
-
-builtins/common.h
-       - MAX_ATTRIBUTES: define used to size arrays for attribute flag
-         characters
-       - var_attribute_string: new extern function declaration
-
-subst.c
-       - array_remove_pattern: fixed a bug where `var' instead of `v' was
-         tested for invisible attribute
-       - get_var_and_type: fill in a valid *VARP if returning VT_VARIABLE
-         because callers may need to use it
-       - parameter_brace_transform: family of functions to implement the new
-         mksh-inspired ${param@spec} transformation word expansions.  Some
-         of the operators transform the (expanded) value of the parameter,
-         the rest expand to information about the parameter itself
-         (array_transform, parameter_list_transform, list_transform,
-         string_transform, pos_params_assignment, array_var_assignment,
-         string_var_assignment)
-       - parameter_brace_expand: changes to parse the new `@' word expansion
-         operator and call parameter_brace_transform appropriately
-       - parameter_brace_expand: make sure we handle ${#@} as we have before
-         even in the presence of the new `@' operator
-
-variables.c
-       - push_temp_var: make sure to call bind_variable_internal with the
-         ASS_FORCE flag so we override readonly variables created with
-         something like `tempvar=foo declare -r foo'.
-       - bind_variable_internal: honor ASS_FORCE flag to allow binding even
-         if a variable is readonly
-
-execute_cmd.c
-       - struct func_array_state: new state to save state of BASH_LINENO,
-         BASH_SOURCE, and FUNCNAME during function execution so it can be
-         restored on a jump to top level
-       - restore_funcarray_state: new function to restore func_array_state
-       - execute_function: fill in func_array_state variable, add unwind-
-         protect to restore it on jump to top level, call explicitly at
-         end of function if subshell != 0 (may not be necessary, but safe
-         for now).  Fixes bug with local assignments to FUNCNAME reported
-         by Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>
-
-                                  11/29
-                                  -----
-arrayfunc.c
-       - assign_compound_array_list: turn off ASS_APPEND flag when processing
-         each individual assignment inside the parens in var+=(...).  The
-         outer += should not affect assignments to existing subscripts;
-         those should be treated like usual assignments unless += supplied
-         inside the parens.  Bug report from Maarten Billemont
-         <lhunath@lyndir.com>, fix from Eduardo A. Bustamante López
-         <dualbus@gmail.com>
-
-config.h.in
-       - HAVE_PSELECT: define if pselect(2) available
-
-configure.ac
-       - check for pselect(2), define HAVE_PSELECT if found
-
-lib/readline/input.c
-       - rl_getc: use pselect(2) to wait for input ready on readline's
-         input fd or for a signal to arrive, will handle SIGWINCH (which
-         does not interrupt read(2)) and thus allow resize to happen without
-         having to wait to read more input.  Only works if pselect available
-         and returns -1/EINTR on a signal even if the signal was installed
-         with SA_RESTART.  From a suggestion from Egmont Koblinger
-         <egmont@gmail.com>
-
-                                  12/3
-                                  ----
-variables.c
-       - flush_temporary_env: new function, disposes all temp variables in
-         temporary_env hash table
-       - bind_variable: only try to update a temporary variable's value in the
-         temporary env if the value argument is not null.  Fixes bug reported
-         by <tangqinghao@360.cn>
-
-variables.h
-       - flush_temporary_env: new extern declaration
-
-subst.c
-       - command_substitute: if running command substitution as part of
-         expanding a redirection (expanding_redir == 1), flush any temporary
-         environment we've inherited as part of this command, since we are not
-         supposed to have access to the temporary environment.  Since
-         expanding_redir only controls access to the temporary environment for
-         variable lookup and binding, we can turn it off in the subshell
-
-                                  12/4
-                                  ----
-builtins/printf.def
-       - printstr: make sure a missing precision specifier after a `.' is
-         treated as 0, as printf(3) specifies.  Fixes ubuntu bash bug
-         1399087 (https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1399087)
-
-                                  12/5
-                                  ----
-subst.c
-       - skip_to_delim: if scanning past process substitution (skipcmd == 1,
-         noprocsub == 0), use extract_delimited_string instead of
-         extract_process_subst, which was changed a while back (bash-4.3.23)
-         to use xparse_dolparen.  xparse_dolparen complains if the command
-         or process substitution is unterminated, since it runs the parser,
-         which is not what we want here.  Command substitution does the same
-         thing.  Fixes bug reported by  Daniel Kahn Gillmor
-         <dkg@fifthhorseman.net> as Debian bash bug 771968
-         (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771968)
-
-                                  12/6
-                                  ----
-subst.c
-       - command_substitute: short-circuit without forking on a command string
-         that consists entirely of <blank>s and newlines
-
-jobs.c
-       - make_child: changes to allow interrupts through if fork fails and
-         we are sleeping for `forksleep' seconds
-       - waitchld: make things a little more resilient if CHILD ends up NULL
-
-                                  12/12
-                                  -----
-lib/readline/complete.c
-       - rl_display_match_list: when calculating common prefix to display in
-         color, make sure we correctly handle a common prefix with a trailing
-         `/' as we do when checking whether or not to add an ellipis.
-         printable_part() doesn't return the whole pathname if it ends in a
-         slash, to avoid printing null strings, so we have to make sure we
-         have the entire prefix
-
-lib/readline/complete.c
-       - _rl_complete_display_matches_interrupt: new variable, set to 1 by
-         _rl_complete_sigcleanup to let rl_display_match_list know it has
-         freed the match list
-       - display_matches: check for signals during the printing loops with
-         RL_SIG_RECEIVED(), return immediately if there is a pending signal
-         (might not want to do this if it's SIGWINCH -- CHECK)
-       - rl_complete_internal: if _rl_complete_display_matches_interrupt
-         set after calling display_matches, just null out `matches' since
-         it's already been freed and call any application-set signal hook
-
-                                  12/14
-                                  -----
-parse.y
-       - time_command_acceptable: if the token before a newline is `|',
-         return 0, since it's not really valid to time inside a pipeline.
-         Only handles a single newline but allows things like
-               echo a |
-                time cat
-         to invoke /usr/bin/time, which is probably enough to catch the
-         stray carriage return.  Fixes bug reported by Andre Majorel
-         <aym-ung@teaser.fr>
-
-builtins/declare.def
-       - declare_internal: don't try to perform compound assignments unless
-         the WORD_DESC has flags including W_COMPASSIGN (maybe should check
-         W_ASSIGNMENT as well), avoiding unexpected evaluation if a word
-         is of the form (word) and is assigned to an array variable like so:
-         declare -x var=$value.  Bug reported by Stephane Chazelas
-         <stephane.chazelas@gmail.com>. Will eventually be contingent on
-         compatibility level > 43, but not there yet. TENTATIVE
-
-                                  12/15
-                                  -----
-lib/sh/Makefile.in
-       - add missing dependencies for shmatch.o.  Pointed out by Sergey
-         Mikhailov <sergey.mikhailov@gmail.com>
-
-                                  12/16
-                                  -----
-{execute_cmd,subst}.c
-       - W_ASSIGNINT: remove, not used any more
-
-execute_cmd.c
-       - fix_assignment_words: don't look for `-i' option and set W_ASSIGNINT
-         flag any more; doing things a different way
-       - shell_expand_word_list: instead of using W_ASSIGNINT flag, since it
-         doesn't take into account all options that can transform values on
-         assignment (-l/-u/-c can also), go through option arguments looking
-         for options that need special handling and add them to the `opts'
-         array for make_internal_declare to use.  Fixes bug with constructs
-         like `declare -al foo=(UPONE UPTWO UPTHREE)' not being lowercased on
-         assignment reported by Linda Walsh <bash@tlinx.org>
-
-
-
-                                  12/18
-                                  -----
-lib/readline/readline.c
-       - rl_internal_char: when we read EOF on a non-empty line, check for
-         signals and invoke any readline signal handling and any application-
-         installed signal hook
-
-                                  12/20
-                                  -----
-lib/readline/readline.c
-       - rl_internal_char: if we read EOF on a non-empty line, set c to
-         _rl_eof_char the first time through.  If we read EOF the next time,
-         return EOF from readline().  If callbacks are defined, this returns
-         EOF immediately, since lastc isn't available.  Fix for problem
-         most recently identified by Jiri Kukacka <jiri.kukacka@orcle.com>,
-         it has come up in the past
-
-                                  12/21
-                                  -----
-builtins/declare.def
-       - declare_internal: keep track of whether or not an assignment statement
-         argument to declare is an array subscript assignment; need to
-         differentiate assignments from straight declarations (declare a[4])
-         which are accepted for backwards compatibility
-       - assignment statements like declare a[2]=foo are now treated as
-         straight subscript assignment statements if a already exists as an
-         array variable
-       - declare foo='(1 2 3)' is treated as an assignment to foo[0] if foo
-         exists and is an array, just as it would be if it were an assignment
-         statement and `declare' was not present.  All this from a proposal
-         by Stephane Chazelas <stephane.chazelas@gmail.com>
-
-                                  12/22
-                                  -----
-builtins/read.def
-       - read_tty_modified: function to tell the rest of the shell if the
-         read builtin has modified the tty
-       - read_builtin: make sure to initialize terminating signals before
-         installing a SIGALRM signal handler in case we modify the tty as
-         well as ask for a timeout; the subsequent call to
-         initialize_terminating_signals would overwrite the read-builtin-
-         local SIGALRM handler
-
-builtins/common.h
-       - read_tty_modified: new extern declaration
-
-shell.c
-       - exit_shell: if read_tty_modified() returns true, call read_tty_cleanup
-         to undo the terminal modifications. Extension of previous fixes;
-         fixes bug with read -s reported by Richard W. Marsden
-         <richard@marsden.nu>
-
-
-                                  12/23
-                                  -----
-builtins/setattr.def
-       - show_var_attributes: call print_array_assignment and print_assoc_assignment
-         with a `not quoted' flag so the assignment statements are not
-         surrounded by single quotes.  Caused changes to a lot of test output
-
-                                  12/29
-                                  -----
-lib/readline/complete.c
-       - stat_char: Windows doesn't handle X_OK flag to access(2); use file
-         extensions to determine whether or not a file is executable.  Bug
-         report and fix from Eli Zaretskii <eliz@gnu.org>
-
-configure.ac
-       - changed version to bash-4.4-devel
-
-lib/readline/readline.h
-       - changed version to readline-6.4
-
-                                  12/30
-                                  -----
-readline.h
-       - struct readline_state: fix types of `ignorefunc' and `attemptfunc'
-         members
-
-lib/sh/shquote.c,externs.h
-       - sh_contains_shell_metas, sh_contains_quotes: now take `const char *'
-         as parameter
-
-stringlib.c,externs.h
-       - strcreplace: `text' argument now `const char *'
-
-pathexp.[ch]
-       - quote_globbing_chars: `string' argument now `const char *', accompanying
-         changes to function local variables
-
-pcomplete.c
-       - preproc_filterpat: `text' argument now `const char *'
-       - filter_stringlist: `text' argument now `const char *'
-
-                                  12/31
-                                  -----
-builtins/evalstring.c
-       - should_suppress_fork: new function, broke code that decides whether
-         to turn on CMD_NO_FORK flag out of parse_and_execute into a separate
-         function
-
-execute_cmd.c
-       - execute_command_internal: AND_AND, OR_OR: call should_suppress_fork
-         for the RHS of && and ||, make `make' invocations marginally more
-         efficient
-
-flags.c
-       - get_current_flags: returns a bitmap of all single-letter shell
-         options with a non-zero value meaning option is enabled
-       - set_current_flags: set current single-letter options from a passed
-         bitmap, which has presumably been initialized with get_current_flags
-
-flags.h
-       - {get,set}_current_flags: new extern declarations
-
-builtins/declare.def
-       - declare_internal: if invoked as `local', interpret name argument of
-         `-' to mean to save (and restore at shell return) single-letter
-         shell options
-
-variables.c
-       - push_func_var: if we encounter `-' as the name of a local variable,
-         take the value and call set_current_flags on it to restore old
-         flag settings
-
-builtins/set.def
-       - get_current_options: returns a bitmap of all shell options settable
-         with `set', with a non-zero value meaning option is enabled
-       - set_current_options: set current shell options from a passed
-         bitmap, which has presumably been initialized with get_current_options
-
-
-                                1/1/2015
-                                --------
-lib/readline/parens.c
-       - _rl_blink_matching_paren: initialize to 0 whether or not select(2) is
-         available.  Inconsistency reported by Mark Karpov
-         <markkarpov@opmbx.org>
-
-builtins/declare.def
-       - declare_internal: use get_current_options instead of
-         get_current_flags, so `local -' can be generalized
-
-variables.c
-       - push_func_var: use set_current_options instead of set_current_flags
-         so `local -' can be generalized
-
-doc/{bash.1,bashref.texi}
-       - document new `local -' feature; originally inspired by Robert Elz
-         <kre@munnari.oz.au> describing feature in NetBSD sh
-
-                                   1/3
-                                   ---
-lib/readline/{complete,funmap,kill,histfile,util}
-lib/readline/readline.h
-lib/tilde/tilde.c
-       - fixes for filename- and evironment-related issues on Windows.  Fixes
-         from Eli Zaretskii <eliz@gnu.org>
-       - Windows can paste to the console from the clipboard like Cygwin
-       - Windows uses $APPDATA as a pseudo-$HOME
-
-lib/readline/input.c
-       - rl_getc: use _getch on Windows to avoid being overridden by a getch
-         ncurses function
-       - win32_isatty: replace Windows isatty(3) with a function that does
-         additional checks, sinces Windows isatty returns non-zero for
-         every character device.  From Eli Zaretskii <eliz@gnu.org>
-
-lib/readline/display.c
-       - delete_chars: if compiled with ncurses on Windows, this code can
-         work, so build it in if NCURSES_VERSION defined
-       - open_some_spaces: ditto
-
-                                   1/6
-                                   ---
-doc/{bash.1,bashref.texi}
-       - minor grammar and typo corrections from TonyMc <afmcc@btinternet.com>
-
-                                   1/8
-                                   ---
-sig.c
-       - throw_to_top_level: only attempt to run the interrupt trap if SIGINT
-         is trapped -- minor optimization
-       - throw_to_top_level: if we are running a trap, call run_trap_cleanup
-         to turn off the sigmodes flags
-
-trap.c
-       - _run_trap_internal: temporarily suppress pending SIGINTs while running
-         one of the traps the shell handles internally (e.g., ERR).  Fixes bug
-         reported by Keith Thompson <keithsthompson@gmail.com>
-
-                                  1/10
-                                  ----
-bashhist.c
-       - bash_history_inhibit_expansion: use skip_to_delim with the history
-         expansion character to see whether or not the instance of the
-         history expansion character should be skipped because, for instance,
-         it is in a command substitution.  Fixes issue reported by
-         Zigmund.Ozean@zig-home.localdomain
-
-                                  1/14
-                                  ----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: if we are in a multibyte locale, make sure to
-         use _rl_find_prev_mbchar when trying to delete characters from the
-         search string, instead of just chopping off the previous byte.
-         Fixes bug reported by Kyrylo Shpytsya <kshpitsa@gmail.com>
-
-lib/readline/complete.c
-       - rl_filename_completion_function: if we tilde-expand `dirname', make
-         sure we use the expanded result instead of throwing it away for the
-         quote-removed `users_dirname', which still has any leading tilde.
-         Fixes bug reported by Dave Rutherford <dave@evilpettingzoo.com>
-
-execute_cmd.c
-       - select_query: if the read builtin doesn't return anything in REPLY,
-         return NULL (failure). Fixes bug reported by Etherial Raine
-         <osirisgothra@hotmail.com>
-
-builtins/read.def
-       - read_builtin: if REPLY has the readonly or noassign attribute, return
-         failure
-
-                                  1/16
-                                  ----
-redir.c
-       - redir_open: if open() returns -1/EINTR, check traps as well as
-         using QUIT to handle signals
-
-                                  1/18
-                                  ----
-jobs.c
-       - wait_for: make sure queue_sigchld is set to 1 before unblocking
-         SIGCHLD if MUST_UNBLOCK_CHLD is defined
-
-                                  1/19
-                                  ----
-pcomplete.h
-       - new progcomp option: COPT_NOSORT, means to not sort list of possible
-         completions
-
-pcomplete.c
-       - pcomp_set_readline_variables: if COPT_NOSORT set in compspec flags,
-         set rl_sort_completion_duplicates to 0
-
-builtins/complete.def
-       - _compopt: new option value: -o nosort, sets COPT_NOSORT in compspec
-         option flags. Provides new -o nosort option for complete and compgen
-
-bashline.c
-       - attempt_shell_completion: make sure rl_sort_completion_matches is
-         set to 1 before completion is attempted; allow a compspec to turn
-         it off
-
-lib/readline/kill.c
-       - rl_vi_yank_pop: new function, vi-mode version of yank-pop.  Original
-         code from Ian Kelling <ian@iankelling.org>
-
-lib/readline/funmap.c
-       - `vi-yank-pop': bindable name mapped to rl_vi_yank_pop
-
-lib/readline/readline.h
-       - rl_vi_yank_pop: extern declaration
-
-                                  1/21
-                                  ----
-lib/sh/shquote.c
-       - sh_backslash_quote: change to understand and handle multibyte
-         characters, using is_basic, COPY_CHAR_P.  See
-         https://bugzilla.redhat.com/show_bug.cgi?id=1184320 for original
-         report
-
-                                  1/23
-                                  ----
-include/posixjmp.h
-       - use setjmp_sigs instead of redefined setjmp, it fails on Cygwin.
-         Report from Eric Blake <eblake@redhat.com>
-
-builtins/wait.def,shell.c
-       - use setjmp_sigs instead of setjmp call, since setjmp no longer
-         redefined to something known
-
-include/chartypes.h, lib/readline/chardefs.h
-       - make sure all ctype.h macros are called with unsigned char args,
-         casting to make sure
-
-lib/sh/casemod.c
-       - sh_modcase: don't assume that the upper and lower case versions of a
-         character are the same width, so don't try to do the conversion in
-         place: convert and copy the converted characters one or more at a
-         time to the returned string
-       - sh_modcase: since upper and lower case versions of same character
-         may have different widths in some locales, don't shortcut and assume
-         that we can do single-byte case modification (toupper) with a
-         single-byte input character (e.g., `i').  Fix for problem reported
-         by Stephane Chazelas <stephane.chazelas@gmail.com>
-
-                                  1/31
-                                  ----
-lib/readline/histfile.c
-       - history_truncate_file, history_do_write: if the first rename(2)
-         of the history file to the backup file fails, set the backup file
-         name to NULL to prevent any later attempts to restore the
-         original.  Report from Jonathan Hankins <jhankins@homewood.k12.al.us>
-       - history_do_write: don't attempt to back up non-regular files.
-         Report from Jonathan Hankins <jhankins@homewood.k12.al.us>
-
-                                   2/2
-                                   ---
-trap.c
-       - run_interrupt_trap: now takes an argument indicating whether or not
-         it was called just before a longjmp to top_level; change callers
-       - run_interrupt_trap: if running a trap and we are being called before
-         a longjmp to top_level, call run_trap_cleanup on running trap so
-         a QUIT call while running a DEBUG trap, for instance, doesn't leave
-         sigmodes[DEBUG_TRAP] including SIG_INPROGRESS.  Fixes bug reported
-         by Chih-Chieh Chou <ccchou@gmail.com>
-
-sig.c
-       - throw_to_top_level: change call to run_interrupt_trap to pass arg 1
-       - termsig_handler: change call to run_interrupt_trap
-
-trap.h
-       - run_interrupt_trap: update extern prototype declaration
-
-                                   2/4
-                                   ---
-lib/readline/histfile.c
-       - histfile_backup, histfile_restore: new functions to back up and restore
-         history file to `filename-', following (one level of) symlinks through
-         so we don't rename the symlink itself.  From a suggestion by
-         Jonathan Hankins <jhankins@homewood.k12.al.us>
-
-assoc.c
-       - assoc_to_assign: if an index happens to be `@' or `*', make sure it's
-         double-quoted.  Bug report from Greg Wooledge <wooledg@eeg.ccf.org>
-
-                                   2/5
-                                   ---
-lib/readline/bind.c
-       - rl_bind_key: if we are rebinding a key that is not bound to a
-         function or a macro, construct a key sequence and pass it to
-         rl_bind_keyseq.  Make sure that '\' when it is used as a key is
-         changed to "\\" so it can survive rl_translate_keyseq.  Fixes
-         https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776743
-
-                                   2/8
-                                   ---
-include/posixjmp.h
-       - _rl_longjmp, sh_longjmp: new defines, expand to siglongjmp or longjmp
-         depending on autoconf results, used to avoid redefining longjmp,
-         remove _OPENNT conditional code.  Report from Eric Blake
-         <eblake@redhat.com>
-
-{bashjmp,quit}.h,{execute_cmd,expr,jobs,sig,trap}.c,builtins/{evalstring.c,return.def}
-       - change calls to longjmp to use sh_longjmp
-
-lib/readline/util.c
-       - change calls to longjmp to use _rl_longjmp
-
-                                  2/18
-                                  ----
-variables.c
-       - bind_int_variable: make sure `v' is non-null before making it visible
-
-                                  2/19
-                                  ----
-arrayfunc.c
-       - assign_array_var_from_word_list: after assignment, mark variable as no
-         longer invisible
-       - assign_array_var_from_string: after assignment, mark variable as no
-         longer invisible
-
-builtins/declare.def
-       - declare_internal: add warning if an attempt is made to use a quoted
-         compound assignment as an argument to declare (declare -a foo='( 1 2 )');
-         backwards compatible with bash-4.3. Still a tentative change
-
-                                  2/20
-                                  ----
-lib/glob/smatch.c
-       - is_wcclass: check malloc() return value, return -1 if it fails
-         Report from Tobias Stoeckmann <tobias@stoeckmann.org>
-
-lib/sh/shmatch.c
-       - sh_regmatch: check malloc() return value, handle NULL value if it
-         fails.  Report from Tobias Stoeckmann <tobias@stoeckmann.org>
-
-                                  2/22
-                                  ----
-lib/readline/doc/rltech.texi
-       - rl_callback_handler_install: note that the handler function should
-         free the line it receives, as with readline.  Suggested by
-         Ulf Magnusson <ulfalizer@gmail.com>
-       - Readline Signal Handling: note that application needs to clean up
-         readline's terminal state if it wants to handle a signal before
-         the line handler restores it.  Suggested by Ulf Magnusson
-         <ulfalizer@gmail.com>
-
-                                  2/24
-                                  ----
-lib/readline/histfile.c
-       - history_do_write,history_truncate_file: if the write fails, make sure
-         to set history_lines_written_to_file to 0 so we don't lose those
-         history entries
-
-                                  2/27
-                                  ----
-execute_cmd.c
-       - execute_function: unwind-protect the value of line_number_for_err_trap,
-         so a function that returns a non-zero value and triggers an ERR trap
-         has the right value for LINENO. Any simple command in the function
-         body can change it.  Bug report from Paul Donohue <gnu@paulsd.com>
-
-                                   3/5
-                                   ---
-lib/sh/shquote.c
-       - sh_backslash_quote: cast `c' to `unsigned char' before using as
-         index into backslash_table.  Report and fix from
-         alexeyv.90@gmail.com
-
-arrayfunc.[ch]
-       - valid_array_reference: added second `flags' argument for future use;
-         currently unused
-
-parse.y,{redir,subst,variables,test}.c
-builtins/{declare,printf,read,set}.def
-       - valid_array_reference: changed callers
-
-                                   3/7
-                                   ---
-lib/readline/signals.c
-       - _rl_handle_signal: if readline gets a SIGTSTP or SIGTTIN, block
-         SIGTTOU so a backgrounded readline can reset the terminal settings
-         appropriately, otherwise the terminal state and readline's idea
-         of it can get messed up.  Original report from Dave Wysochanski
-         <dwysocha@redhat.com> and Dave Anderson <anderson@redhat.com>
-
-trap.c
-       - run_pending_traps: don't allow recursive SIGWINCH trap invocations;
-         they're wasteful and trying to handle a stream of signals while a
-         user resizes the terminal can lead to malloc errors trying to save
-         and restore the_pipeline multiple times.  Problem reported most
-         recently by Martin M. S. Pederson (Fedora bash bug 1197768
-         https://bugzilla.redhat.com/show_bug.cgi?id=1197768)
-       - reset_or_restore_signal_handlers: set pending_traps to 0 for all
-         signals when forking a child. TENTATIVE fix
-
-jobs.c
-       - {save,restore}_pipeline: block SIGCHLD while manipulating the_pipeline
-         like cleanup_the_pipeline does. XXX - may not be necessary
-
-lib/readline/display.c
-       - rl_redisplay: fixed case where multibyte character in the prompt
-         (e.g., \u03bb) in the last screen column causes problems with line
-         wrapping because the newline marker is put in the middle of the
-         multibyte char.  Most recently reported on Ubuntu by
-         <sterpe@gmail.com>
-
-pathexp.c
-       - quote_string_for_globbing: if a bracket expression doesn't have a
-         closing right bracket, rescan it from just after the opening
-         bracket without treating it as a bracket expression.  Bug report
-         from Stephane Chazelas <stephane.chazelas@gmail.com>
-
-                                   3/9
-                                   ---
-subst.c
-       - process_substitute: keep the last pipeline created to run a process
-         substitution in LAST_PROCSUB_CHILD; discard it when another one is
-         created
-
-jobs.[ch]
-       - discard_pipeline: now global, so process_substitute can call it
-
-jobs.c
-       - last_procsub_child: new variable, set and modified only by the process
-         substitution code
-       - find_pipeline: if the requested pid is in LAST_PROCSUB_CHILD, return
-         it; analogous to the way this code handles the_pipeline
-       - waitchld: if we find a child via find_pipeline that is a part of the
-         last process substitution child, mark that child appropriately.  If
-         the child is dead, add it to the bgp list.  This and the previous
-         change allow waiting for the most recent process substitution (the
-         one corresponding to $!).  Original report from Stephane Chazelas
-         <stephane.chazelas@gmail.com>
-
-                                  3/10
-                                  ----
-arrayfunc.c
-       - unbind_array_element: make sure skipsubscript() doesn't try to parse
-         embedded quotes in the subscript, since this has already been through
-         one round of word expansion before calling the unset builtin.  (This
-         function is only called by the unset builtin).  Fixes bug reported by
-         <vampyrebat@gmail.com>
-
-                                  3/17
-                                  ----
-jobs.c
-       - waitchld: move code that adds the last process substitution pid to
-         the bgpids array from waitchld (where it can call malloc in a signal
-         handler context) to cleanup_dead_jobs
-
-                                  3/19
-                                  ----
-subst.c
-       - parameter_brace_expand: if expanding an array in a context where word
-         splitting will not take place (W_ASSIGNRHS only for now), make sure
-         to pass the double-quoted flag to chk_atstar so we don't get the
-         unquoted $* behavior, which will cause unwanted word splitting.
-         Fixes bug reported by isabella parakiss <izaberina@gmail.com>
-
-arrayfunc.c
-       - unbind_array_element: don't assume that caller will check and pass
-         only array variables; don't allow non-array variables to be unset
-         using the `@' or `*' subscripts and don't allow any subscripts other
-         than 0; return -2 in those cases
-       - unbind_array_element: unset a non-array variable if passed a subscript
-         of `0' (e.g., `unbind "scalar[0]"').  This is new functionality that
-         parallels the ${scalar[0]} expansion
-
-builtins/set.def
-       - unset_builtin: don't check whether a variable is an array if it's
-         referenced using array syntax (scalar[0]); pass it to
-         unbind_array_element anyway and check the result.  This means that
-         `unset scalar' and `unset scalar[0]' are equivalent
-
-                                  3/20
-                                  ----
-builtins/set.def
-       - set_builtin: make `-i' an invalid option, unconditionally for now.
-         From a bug-bash discussion started by Peng Yu <pengyu.ut@gmail.com>
-
-                                  3/21
-                                  ----
-lib/readline/colors.c
-       - _rl_print_color_indicator: handle dangling symlinks (C_ORPHAN) and
-         the `target' specifier for links (dereference S_ISLNK if the target
-         exists).  Bug report and fix from andreas@stapelspeicher.org
-
-{arrayfunc,subst}.c
-       - add code to save and restore this_command_name in places that set
-         this_command_name to NULL to prevent error messages from arithmetic
-         evaluation.  Fixes bug reported by brian.carpenter@gmail.com
-
-builtins/mapfile.def
-       - do_chop: remove a new DELIM argument from the line, instead of
-         unconditionally removing newline
-       - mapfile: if -d delim is supplied and we are breaking fields at DELIM,
-         remove DELIM if the -t option is supplied by passing DELIM to do_chop().
-         Suggested by Geir Hauge <geir.hauge@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - mapfile: document new -t option behavior, defaults are the same
-
-builtins/alias.def
-       - print_alias: if the first character of an alias name is `-', add a
-         `-- ' after `alias' to avoid option errors when trying to reuse the
-         output.  Bug report and fix on savannah from Pasha Bolokhov
-         <pasha.bolokhov@gmail.com>
-
-                                  3/22
-                                  ----
-builtins/declare.def
-       - declare_internal: if creating a variable does not return a valid
-         variable in VAR, check for null variable before dereferencing it.
-         This happens with nameref variables referencing variables set to
-         the empty string.
-         Fixes bug reported by Arthur200000 <arthur200126@163.com> 
-
-                                  3/23
-                                  ----
-doc/{bash.1,bashref.texi}
-       - INVOCATION: add language to make it clear that non-interactive login
-         shells execute ~/.bash_logout if they run the `exit' builtin.  From a
-         question from Christoph Anton Mitterer <calestyo@scientia.net>
-
-                                   4/6
-                                   ---
-subst.c
-       - process_substitute: increment and decrement subshell_level around
-         calls to parse_and_execute, as in command substitution, so
-         $BASH_SUBSHELL gets new values in the subshell.  Fixes inconsistency
-         pointed out by Peng Yu <pengyu.ut@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - read: add clarifying text to note that the -N option does not split
-         on $IFS, but does retain backslash as an escape character subject
-         to -r.  Report from isabella parakiss <izaberina@gmail.com>
-
-builtins/declare.def
-       - declare_internal: unless it's the last statement in a {...} block,
-         NEXT_VARIABLE must be protected by braces.  Bug introduced in patch
-         from 3/22, reported by Eduardo A. Bustamante López
-         <dualbus@gmail.com>
-
-                                   4/7
-                                   ---
-parse.y
-       - shell_getc: if bash is reading input from a string that ends with an
-         unquoted backslash, add another backslash instead of a newline, since
-         the backslash and newline will disappear in normal processing.  Fixes
-         bug with `bash -c 'eval \\; echo y' ' skipping the eval command and
-         setting incorrect exit status, and `bash -ic 'eval \\; echo y' '
-         seeing EOF on empty line and exiting before the echo.  Keep track of
-         backslash state with last_was_backslash; set in char reading loop.
-         Fixes bug reported by Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                   4/8
-                                   ---
-shell.c
-       - main: check for $INSIDE_EMACS as well as $EMACS when deciding whether
-         or not bash is being run in a GNU emacs shell window.  Don't bother
-         checking whether $TERM is unset because variable initialization sets
-         it to `dumb' if unset.  Fixes from Paul Eggert <eggert@CS.UCLA.EDU>
-
-parse.y
-       - push_token: new function, rotates current_token through last_read_token,
-         saving old values like yylex() does, sets current_token to argument
-
-evalfile.c
-       - _evalfile: if current_token is yacc_EOF, push a newline as the value
-         of current_token instead, using push_token().  yacc_EOF can result if
-         sourced file doesn't end with a newline but does end with an unescaped
-         backslash.  Fixes bug reported by Pedro Gimeno
-         <pgwr-842@personal.formauri.es>
-
-lib/readline/histfile.c
-       - use PARAMS(x) instead of __P(x).  Bug reported by Evan Gates
-         <evan.gates@gmail.com>
-
-                                   4/9
-                                   ---
-execute_cmd.c
-       - execute_simple_command: if we haven't already forked, and we have
-         created FIFOs, turn off the no-fork optimization in the simple
-         command's flags. Originally reported to savannah by Kuang-che Wu as
-         https://savannah.gnu.org/support/index.php?108732
-
-                                  4/10
-                                  ----
-trap.c
-       - trap_if_untrapped: new function, sets a trap on a signal if that
-         signal is not already trapped
-       - maybe_set_debug_trap: new function, sets DEBUG trap to command string
-         argument only if it's not already trapped
-
-trap.h
-       - maybe_set_debug_trap: new extern declaration
-
-
-builtins/source.def
-       - source_builtin: if the -T option isn't set, use maybe_set_debug_trap
-         in the unwind-protect instead of unconditionally restoring the old
-         trap string. That means if the sourced file changes the DEBUG trap,
-         that new trap will persist instead of being undone when the old
-         value is restored. Fixes bug reported by Scott Bronson
-         <bronson@rinspin.com>
-
-builtins/evalstring.c
-       - parse_string: before we jump to top_level, if we are at the `bottom'
-         of the parse_and_execute stack (parse_and_execute_level == 0), call
-         top_level_cleanup() before jumping so the right cleanup happens (e.g.,
-         cleaning up redirections and other state).  Fixes bug reported by
-         Sam Liddicott <sam@liddicott.com>
-
-                                  4/15
-                                  ----
-jobs.c
-       - delete_job: only add J_ASYNC (and not J_FOREGROUND) jobs to the
-         bgpids array, since Posix says shells only need to save the status
-         of async jobs.  Report and fix from John Fremlin <john@fb.com>
-
-                                  4/17
-                                  ----
-pcomplib.c
-       - COMPLETE_HASH_BUCKETS: increase to 256 since bash-completion is
-         over 300 completions by now
-
-variables.c
-       - VARIABLES_HASH_BUCKETS: constant used to size shell variables hash
-         table instead of relying on hash library default.  Used in calls
-         to hash_create in create_variable_tables(), push_temp_var(), and
-         push_func_var().  Currently set to 1024 because why not?  From a
-         discussion starting at
-         https://lists.gnu.org/archive/html/bug-bash/2015-04/msg00089.html
-       - initialize_shell_variables: if FUNCTION_IMPORT is not defined, the
-         nested conditional compilation causes syntax errors.  Bug and fix
-         from Eric Blake <eblake@redhat.com>
-
-configure.ac
-       - function-import: fix typo, assign to correct variable.  Found as the
-         result of a report by Eric Blake <eblake@redhat.com>
-
-shell.c
-       - open_shell_script: check whether or not file argument is a
-         directory before opening; Posix says that implementations may open
-         a directory with O_RDONLY.  Bug report from
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                  4/19
-                                  ----
-ulimit.def
-       - fix typo in limits[] declaration of `k'
-
-                                  4/20
-                                  ----
-configure.ac
-       - add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report
-         from Andreas Schwab <schwab@linux-m68k.org>
-
-variables.c
-       - FUNCTIONS_HASH_BUCKETS: constant used to size the hash tables used for
-         shell functions and the text of shell function definitions.  Initially
-         set to 512, even though it's a really rare case that someone has more
-         than around 150 functions, even with bash-completion
-
-                                  4/21
-                                  ----
-shell.c
-       - main: malloc_set_register: change arg to 0 to disable keeping track of
-         allocations and frees in table; change to 1 for malloc debugging on
-         demand.  Table is too small to keep effective track of allocations on
-         a modern system, need to use something like valgrind
-
-                                  4/22
-                                  ----
-shell.c
-       - main: move cmd_init() (initialize word desc and word list object
-         caches) after startup files are read so the cache doesn't get filled
-         up with semi-permanent storage for shell functions and variables
-
-execute_cmd.c
-       - execute_function: use maybe_set_debug_trap in the same way as source
-         builtin change from 4/10 to allow functions to reset a DEBUG trap
-         when set -T not in effect.  From a report by Peng Yu
-         <pengyu.ut@gmail.com>
-
-                                  4/23
-                                  ----
-execute_cmd.c
-       - execute_disk_command: don't overwrite value of subshell_environment
-         by assigning SUBSHELL_FORK; just OR in SUBSHELL_FORK so something
-         like SUBSHELL_ASYNC or SUBSHELL_PIPE is preserved
-
-jobs.c
-       - wait_for: don't call give_terminal_to if running in a subshell
-         environment, not just if running_in_background is set; don't want
-         shell functions waiting for a process to complete in a pipeline to
-         give the terminal to the wrong process group.  Part of fix for bug
-         reported by Valentin Bajrami <valentin.bajrami@gmail.com>
-       - make_child: child process should not try to give the terminal to the
-         pipeline_pgrp if running as part of a pipeline (SUBSHELL_PIPE in
-         subshell_environment); functions in execute_cmd.c don't set that
-         flag until after make_child returns and the child process is running.
-         Rest of fix for bug reported by Valentin Bajrami
-         <valentin.bajrami@gmail.com>
-
-                                  4/24
-                                  ----
-redir.c
-       - redirection_error: if the redirection involves {varname}, only use
-         `varname' in the error message if the error code is < 0 (one of the
-         internal redirection errors, like ambiguous or bad variable name);
-         otherwise the issue is probably with the filename and should be treated
-         as usual.  Fixes problem reported by Dr. David Alan Gilbert
-         <dgilbert@redhat.com>
-
-configure.ac,config.h.in
-       - sys/ioctl.h: add check in AC_CHECK_HEADERS macro, define HAVE_SYS_IOCTL_H
-
-lib/readline/{rltty,terminal}.c
-       - sys/ioctl.h: include unconditionally for ioctl declaration, avoid
-         issues with `implicit declaration' warnings.  Issue originally
-         raised on gdb list by Chen Gang <xili_gchen_5257@hotmail.com>
-
-                                  4/27
-                                  ----
-lib/malloc/table.c
-       - mem_table: now a circular buffer showing the state of the last
-         REG_TABLE_SIZE allocations rather than a hash table that quickly
-         fills up
-
-builtins/declare.def
-       - typeset_builtin: add -n to list of supported options.  Omission
-         reported by Valentin Bajrami <valentin.bajrami@gmail.com>
-
-unwind_prot.c
-       - use object caches instead of malloc/free to allocate and deallocate
-         unwind-protect elements
-       - uwp_init: initialize unwind-protect element object cache
-
-unwind_prot.h
-       - uwp_init: extern declaration
-
-shell.c
-       - main: call uwp_init right after calling cmd_init -- initialize all the
-         object caches at the same place
-
-lib/malloc/table.[ch]
-       - mlocation_table: new table to keep track of allocation locations by
-         file and line, functions to initialize table, record an allocation,
-         and dump the table to stderr
-       - mregister_alloc: call mlocation_register_alloc to record the location
-         (source file/line) for each allocation to pinpoint malloc hot spots
-         by number of calls.  More detail than gprof
-
-parse.y
-       - set_line_mbstate: replace free/xmalloc pair with xrealloc call
-       - read_token_word: call alloc_word_desc instead of xmalloc so we can take
-         advantage of the WORD_DESC cache
-
-                                  4/28
-                                  ----
-execute_cmd.c
-       - execute_simple_command: if command execution fails because the command
-         is a directory, and the `autocd' option is set, add a `--' argument
-         to the constructed `cd' command to protect against command names with
-         the same name as options to `cd'.  Report and fix from
-         isabella parakiss <izaberina@gmail.com>
-
-                                  4/30
-                                  ----
-jobs.c
-       - printable_job_status, j_strsignal: change calls to strcpy and sprintf
-         that write to retcode_name_buffer to use strncpy and snprintf to
-         avoid buffer overflows caused by malicious translations.  Bug and fix
-         from Trammell Hudson <Trammell.Hudson@twosigma.com>
-
-                                   5/1
-                                   ---
-strtrans.c
-       - ansicstr: make sure the buffer is at least 12 bytes to ensure enough
-         space for any eventual call to u32cesc for one multibyte char
-
-                                   5/4
-                                   ---
-jobs.c
-       - wait_for: if an interactive shell is running a loop and waiting for
-         a non-builtin command to exit, and the command exits due to SIGINT,
-         act as if the shell received the SIGINT as well and break the loop.
-         This matches the behavior when the shell is running a builtin command
-         in a loop, and when running a non-builtin command outside a loop, and
-         seems more broadly useful than running the trap handler over and over
-         again.  Report originally from Kaz Kylheku <kkylheku@gnu.org>
-
-builtins/set.def
-       - unset_builtin: use different variables for keeping the state of the
-         -f and -v options than the loop uses to decide whether or not to
-         treat a name as a function or a variable.  Fixes problem with
-         unset_function setting `sticking' after you unset a function when
-         invoked with no options.  Bug report from Dreamcat4
-         <dreamcat4@gmail.com>
-
-shell.c
-       - open_shell_script: set running_shell_script to 1, set to 0 in every
-         other case (new variable)
-       - main: when checking whether or not to call start_debugger, test
-         running_shell_script instead of dollar_vars[1].  The goal is to not
-         invoke the debugger for interactive shells but allow it to run for
-         things like `bash --debugger -i /tmp/script'.  Problem reported by
-         Rocky Bernstein <rocky@gnu.org>
-
-lib/readline/histexpand.c
-       - history_event_delimiter_chars: new (as yet undocumented) variable
-         containing by default characters that can delimit a history event
-         specifier without requiring a `:': "^$*%-" as the documentation has
-         always said.  Fixes bug reported by Anders Granlund
-         <anders.granlund.0@gmail.com>
-
-                                  5/10
-                                  ----
-lib/glob/gmisc.c
-       - match_pattern_char, match_pattern_wchar: if passed an empty string,
-         return a match if the first character of the pattern is `*'
-
-subst.c
-       - pat_subst: change to allow empty strings to be replaced as long as
-         pattern matches empty string.  Report and fix from isabella parakiss
-         <izaberina@gmail.com>
-
-                                  5/12
-                                  ----
-lib/sh/strtrans.c
-       - ansic_wshouldquote: make behavior consistent in the event of an
-         invalid multibyte sequence: return 1 to the caller so the string
-         will be $'...' quoted
-
-builtins/cd.def
-       - cd_builtin: print the right error message even if printable_filename
-         changes errno (e.g., EILSEQ)
-
-lib/sh/shquote.c
-       - sh_backslash_quote: in multibyte locales, even if is_basic does not
-         return true, backslash-quote an ASCII character that backslash_table
-         says should be quoted.  Part of fix for bug reported by Igor
-         Bogomazov <ygrex@ygrex.ru>
-
-bashline.c
-       - directory_exists: new function, dequotes the string argument, removes
-         any trailing slash, and returns true if the result is a valid
-         existing filename
-       - bash_filename_stat_hook,bash_directory_completion_hook: use
-         directory_exists instead of calling lstat/stat on the quoted
-         directory name.  Rest of fix for bug reported by Igor Bogomazov
-         <ygrex@ygrex.ru>
-
-                                  5/15
-                                  ----
-aclocal.m4
-       - BASH_CHECK_MULTIBYTE: when checking for locale_charset, add $LIBINTL
-         to $LIBS.  If we're using the included lib/intl/libintl.a, it will
-         include a version of locale_charset
-
-                                  5/17
-                                  ----
-lib/readline/bind.c
-       - sv_isrchterm: make sure we check for v[end] == 0 while in the loop
-         looking for whitespace.  Bug report and fix from Sergio Durigan
-         Junior <sergiodj@sergiodj.net>
-
-lib/sh/shmbchar.c
-       - mbstrlen,mbsmbchar: move calculation of MB_CUR_MAX out of loop;
-         calculate it once at beginning
-
-lib/sh/mbscmp.c
-       - mbscmp: move calculation of MB_CUR_MAX out of loop; calculate it once
-         at beginning
-
-lib/sh/mbscasecmp.c
-       - mbscasecmp: move calculation of MB_CUR_MAX out of loop; calculate it
-         once at beginning
-
-lib/sh/shquote.c
-       - sh_backslash_quote: move calculation of MB_CUR_MAX out of loop;
-         calculate it once at beginning
-
-lib/sh/casemod.c
-       - sh_modcase: move calculation of MB_CUR_MAX out of loop; calculate it
-         once at beginning
-
-subst.c
-       - expand_word_internal: move calculation of MB_CUR_MAX out of loops;
-         calculate it once at beginning of function (XXX should use
-         locale_mb_cur_max)
-
-                                  5/22
-                                  ----
-lib/readline/rlmbutil.h
-       - _rl_wcwidth: new function, short-circuits wcwidth calls for ASCII
-         printable characters, returns 1 for those
-       - WCWIDTH: call _rl_wcwidth instead of wcwidth
-
-lib/readline/display.c
-       - rl_redisplay: move calculation of MB_CUR_MAX out of loop; calculate
-         it once at beginning.  Report and patch from Ole Laursen
-         <ole.laursen@gmail.com>
-
-                                  5/24
-                                  ----
-lib/readline/text.c
-       - rl_insert: change to attempt to batch-insert pending typeahead (not
-         pushed input or input from a macro) that maps to rl_insert.  An
-         attempt to suppress redisplay until readline reads all typeahead --
-         pasted input, for instance.  Inspired by report from Ole Laursen
-         <ole.laursen@gmail.com>.  XXX - need to make this a bindable
-         variable; already controlled by _rl_optimize_typeahead
-
-lib/readline/rlprivate.h
-       - _rl_optimize_typeahead: extern declaration
-
-lib/readline/doc/{hstech.texi,history.3}
-       - next_history: clarify under what circumstances the history offset is
-         incremented; suggestion from Glenn Golden <gdg@zplane.com>
-
-print_cmd.c
-       - print_arith_command: should be compiled in if either DPAREN_ARITHMETIC
-         or ARITH_FOR_COMMAND is defined.  Report from Flavio Medeiros
-         <flaviomotamederios@gmail.com>
-
-flags.c
-       - change_flag: new variable verbose_flag, set when `v' flag modified;
-         sets value of echo_input_at_read correspondingly
-
-flags.h
-       - verbose_flag: new extern declaration
-
-shell.c
-       - long_options: --verbose now sets verbose_flag
-       - main: set echo_input_at_read from verbose_flag after parsing any
-         long options
-
-builtins/fc.def
-       - fc_builtin: don't unwind-protect echo_input_at_read directly; set it
-         to 1 before calling fc_execute_file as before, and reset it to value
-         of global verbose_flag using set_verbose_flag called from an
-         unwind_protect.  Report from isabella parakiss <izaberina@gmail.com>
-
-builtins/shopt.def
-       - shopt_set_debug_mode: new function, called when the extdebug shell
-         option changes.  Right now, it sets function_trace_mode when extdebug
-         is enabled, and turns off when extdebug is disabled.  The
-         documentation has always said that shopt does this.  Report from
-         Peng Yu <pengyu.ut@gmail.com>
-
-                                  5/27
-                                  ----
-findcmd.[ch]
-       - add support for EXECIGNORE shell variable, list of extglob patterns
-         that prevent matching filenames from being identified as executable
-         files
-
-variables.c
-       - EXECIGNORE: arrange for findcmd.c:setup_exec_ignore to be called when
-         $EXECIGNORE changes
-
-variables.h
-       - sv_execignore: extern declaration
-
-doc/{bash.1,bashref.texi}
-       - document EXECIGNORE variable
-
-                                  5/28
-                                  ----
-lib/readline/callback.c
-       - rl_callback_sigcleanup: new function, cleans up and unsets any state
-         rl_callback_read_char uses.  Intended to be used after a signal
-
-lib/readline/signals.c
-       - _rl_handle_signal: call rl_callback_sigcleanup on SIGINT.  Fixes bug
-         reported to python group by Martin Panter <vadmium+floss@gmail.com>
-
-lib/readline/isearch.c
-       - _rl_isearch_cleanup: now a public function so rl_callback_cleanup can
-         call it
-
-lib/readline/search.c
-       - _rl_nsearch_cleanup: now a public function so rl_callback_cleanup can
-         call it
-
-lib/readline/rlprivate.h
-       - _rl_[in]search_cleanup: extern declarations
-
-lib/readline/readline.h
-       - rl_callback_sigcleanup: new extern declaration
-
-lib/readline/doc/rltech.texi
-       - rl_callback_sigcleanup: documented
-
-lib/readline/readline.h
-       - bump readline version to 7.0 due to addition of rl_callback_sigcleanup
-
-                                  5/29
-                                  ----
-builtins/declare.def
-       - declare_internal: if we are trying to change attributes or value for
-         a nameref variable whose value points to an unset variable, make
-         sure we create a new variable whose name is the value of the nameref
-         variable. That is,
-
-               declare -n foo=bar
-               unset foo       # unsets bar
-               declare -i foo
-
-         should create a (invisible) variable named `bar' with the integer
-         attribute.  Fixes problem reported by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-
-builtins/set.def
-       - unset_builtin: if we find a nameref variable when we look it up with
-         find_variable (the returned variable has a name different from what
-         we looked up), make sure we use that new name for the rest of the
-         function rather than rely on unbind_variable to do the same thing as
-         find_variable.  Fixes problem reported by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-       - unset_builtin: if we try to unset a nameref variable whose value is
-         not a set variable, make sure we don't try to unset the nameref
-         itself, but rather the variable it points to.  This ensures that the
-         following always works as it should
-
-               declare -n foo=bar
-               unset foo       # unsets bar and leaves foo unchanged
-
-lib/readline/funmap.c
-       - vi-insertion-mode: make sure it maps to rl_vi_insert_mode, which is
-         actually what the `i' keybinding in vi_movement_keymap maps to.
-         Cosmetic fix from isabella parakiss <izaberina@gmail.com>
-
-                                   6/2
-                                   ---
-general.c
-       - conf_standard_path: moved get_standard_path here from command.def; made
-         public function
-
-general.h
-       - conf_standard_path: extern declaration
-
-
-                                   6/3
-                                   ---
-parse.y
-       - parse_matched_pair: make sure that command substitution constructs
-         within ${...} expansions are parsed as such using parse_comsub, so
-         the P_FIRSTCLOSE flag doesn't stop parsing if a right brace appears
-         within the comsub.  Report from Christos Zoulas <christos@zoulas.com>
-
-findcmd.c
-       - search_for_command: take two new flags for FLAGS arg: CMDSRCH_STDPATH,
-         which means use the command -p path, and CMDSRCH_TEMPENV, currently
-         unused.  Existing flag value of 1 now CMDSRCH_HASH
-       - search_for_command: don't set `path' to NULL if it wasn't found in
-         the temporary environment; we can use it later
-       - search_for_command: look for the hashed file if temp_path == 0, not
-         if we set path back to 0 (or path lookup failed)
-       - search_for_command: just call find_user_command_in_path with a
-         pathlist argument that's set depending on the flags passed
-       - find_in_path: new function, just calls find_user_command_in_path at 
-         this point
-       - search_for_command: don't put non-existent files into the hash table
-
-findcmd.h
-       - CMDSRCH_*: new flags for search_for_command
-       - find_in_path: extern declaration
-
-execute_cmd.c
-       - execute_disk_command: check for CMD_STDPATH and call search_for_command
-         with CMDSRCH_STDPATH if it's set
-
-builtins/command.def
-       - command_builtin: if -p given without -v or -V, set the CMD_STDPATH
-         flag in the simple command we construct from the rest of the
-         argument list.  This fixes the command -p cmd issue with changing
-         $PATH for the duration  of `cmd's execution reported by
-         <sdowdy@rap.ucar.edu>
-
-builtins/common.h
-       - CDESC_STDPATH: new flag for describe_command; means to use standard
-         path for command -pv or -pV
-
-builtins/command.def
-       - command_builtin: if -p given with -v or -V, pass the CDESC_STDPATH
-         flag to describe_command
-
-builtins/type.def
-       - describe_command: if given the CDESC_STDPATH flag, use find_in_path
-         with the conf_standard_path() result. Since `all' will never be on
-         with this flag, at least not yet, we can allocate and free the path
-         list.  Fixes the bug of a temporary environment value for PATH
-         preceding a `command -pv' or `command -pV' persisting when the
-         command finishes and means we use fewer unwind-protects
-
-                                   6/4
-                                   ---
-Makefile.in (plus other Makefile.ins)
-       - VPATH: remove `.' from VPATH value.  It's not needed any more and it
-         trips a GNU make 4.1 bug on Cygwin.  Report and fix from Eric Blake
-         <eblake@redhat.com>
-
-lib/readline/histfile.c
-       - history_tempfile: new function, takes history file name as template
-         and creates a temp file name including the PID
-       - history_truncate_file, history_do_write: instead of creating backup
-         and restoring it on failure, use history_tempfile to create a temp
-         file name, write to it, then rename to original history filename
-         (handling symlinks using history_restore()).  Original report and
-         patch from Russell Stuart <russell-savannah@stuart.id.au>
-
-doc/{bash.1,bashref.texi}
-       - ulimit: clarify that -c and -f are in increments of 512 bytes when
-         in posix mode.  Fix from Robin Johnson <robbat2@gentoo.org> via
-         <vapier@gentoo.org>
-
-                                   6/9
-                                   ---
-execute_cmd.c
-       - execute_in_subshell: don't call restore_default_signal for the exit
-         trap, reset_signal_handlers already does the right thing and keeps
-         the trap string around; no need to kill trap string.  Bug report
-         from Miroslav Koskar <mk@mkoskar.com>
-
-                                  6/11
-                                  ----
-nojobs.c
-       - find_proc_slot: now takes pid as an argument to avoid finding old
-         procs when pids wrap around
-       - add_pid: pass pid to find_proc_slot to avoid multiple instances of
-         the same pid in the list when pids wrap around.  Fixes bug reported
-         by Roy Keene <rkeene@rkeene.org>
-
-execute_cmd.c
-       - REAP: test for job_control == 0 also to determine whether or not
-         to call reap_dead_jobs, since shells without job control enabled
-         don't report on background process status
-
-doc/bash.1,lib/readline/doc/hsuser.texi
-       - history: clarify documentation of -a option to note that it will not
-         append the same line to the history file more than once.  Fixes
-         problem reported by Reuben Thomas <rrt@sc3d.org>
-
-                                  6/12
-                                  ----
-execute_cmd.c
-       - execute_in_subshell: don't bother decrementing subshell_level before
-         this returns; the caller will just exit.  This means that
-         $BASH_SUBSHELL will have consistent values in the subshell and any
-         subsequent exit trap.  Fixes bug reported by Miroslav Koskar
-         <mk@mkoskar.com>
-       - shell_execve: before longjmp to subshell_top_level, call reset_parser
-         to free up any input line and stack of pushed strings
-
-parse.y
-       - mk_alexpansion: if the last character of the alias is a shell
-         metacharacter, don't add a space to the string following the alias
-         value, since that will change the meaning of the command.  THIS IS
-         NOT BACKWARDS COMPATIBLE AND MAY REQUIRE REVERTING. Inspired by an
-         email message from Jilles Tjoelker <jilles@stack.nl> to austin
-         group
-
-                                  6/13
-                                  ----
-subst.c
-       - dequote_string: don't turn strings consisting of a single CTLESC
-         into empty strings; return them unmodified.  The idea is that there
-         is nothing to quote.  This means that something like
-               c=$'\001'
-               x=$c
-         results in x containing '\001' when IFS=$'\001'.  See if this will
-         cause problems by adding a debugging statement in the code
-
-                                  6/15
-                                  ----
-parse.y
-       - CHECK_FOR_RESERVED_WORD: don't return ESAC when you read `esac'
-         after a `|' while in a case pattern list (parser_state & PST_CASEPAT).
-         This is Posix grammar rule 4
-         (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02)
-
-                                  6/16
-                                  ----
-jobs.c
-       - wait_for: make sure we queue SIGCHLD signals if a SIGCHLD trap
-         handler is running (signal_in_progress or IMPOSSIBLE_TRAP_HANDLER),
-         since we allow recursive trap invocations now
-       - wait_for: make sure we treat SIGCHLD as trapped if the trap handler
-         is set to IMPOSSIBLE_TRAP_HANDLER so we don't miss signals during
-         calls to run_sigchld_trap()
-
-trap.c
-       - run_pending_traps: since we allow recursive trap handler invocations,
-         make sure we set pending_traps[SIGCHLD] to 0 while we mark the
-         signal handler in progress (SIG_INPROGRESS) and don't reset it to 0
-         after run_sigchld_trap returns in case more SIGCHLDs have been
-         queued while it's running
-
-                                  6/22
-                                  ----
-lib/readline/readline.c
-       - _rl_dispatch_subseq: if we shadowed any function, not just self-
-         insert, bind that function to the key we shadowed and dispatch on it.
-         This preserves and dispatches off the original key, not ANYOTHERKEY,
-         and makes sure we are dispatching from a keymap with the right key
-         binding.  Fixes bug reported by Carlos Pita
-         <carlosjosepita@gmail.com>
-
-                                  6/23
-                                  ----
-bashline.c
-       - attempt_shell_completion: don't read past the end of rl_line_buffer
-         while skipping assignment statements before command names.  Fix for
-         bug reported by Hanno Böck <hanno@hboeck.de>
-
-lib/readline/parens.c
-       - _rl_enable_paren_matching: make paren matching work in vi insert
-         mode. Really, this time.  Bug report from Carlos Pita
-         <carlosjosepita@gmail.com>
-
-                                  6/29
-                                  ----
-parse.y
-       - parse_comsub: when starting to parse a word, make sure that we set
-         lex_rwlen to 0 along with lex_wlen if we are in a position where we
-         can read a reserved word.  Fixes bug reported by  Nathan Neulinger
-         <nneul@neulinger.org>
-
-                                  6/30
-                                  ----
-sig.h
-       - include <signal.h> unconditionally and rely on guards in sig.h to
-         keep from including it more than once.  Irix 6.5 defines SIG_DFL
-         in other files and defeats the test of SIG_DFL.  Fixes bug
-         reported by Klaus Ziegler <klausz@haus-gisela.de>
-
-alias.c
-       - ALIAS_HASH_BUCKETS: table size increased to 64
-
-[bash-4.4-alpha frozen]
diff --git a/CWRU/OS-BUGS/att-yacc-bug b/CWRU/OS-BUGS/att-yacc-bug
deleted file mode 100644 (file)
index 4c1370b..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-From chet@cwns1.INS.CWRU.Edu Sun Aug 26 17:46:14 1990
-Flags: 50
-Received: from cwns1.INS.CWRU.Edu by cwjcc.INS.CWRU.Edu with SMTP (5.61+ida+/CWRU-1.3-decnet)
-       id AA17813; Sun, 26 Aug 90 17:46:14 -0400 (from chet@cwns1.INS.CWRU.Edu for /usr/local/bin/m2mbox /usr/homes/chet/mbox)
-Received:  by cwns1.INS.CWRU.Edu (5.61+ida+/CWRU-1.3-client)
-       id AA00962; Sun, 26 Aug 90 17:46:31 -0400 (from chet for chet@cwjcc.INS.CWRU.Edu)
-Date: Sun, 26 Aug 90 17:01:56 -0400
-From: Chet Ramey <chet@cwns1.INS.CWRU.Edu>
-To: trent@jove.cs.pdx.edu
-Subject: Re: bash on triton
-Cc: chet@cwns1.INS.CWRU.Edu
-Reply-To: chet@po.CWRU.Edu
-In-Reply-To: Message from trent@jove.cs.pdx.edu of Fri, 24 Aug 90 16:07:19 PDT
-Message-Id: <9008262101.AA00902.SM@cwns1.INS.CWRU.Edu>
-Read-Receipt-To: chet@po.CWRU.Edu
-
-> Actually, it just that PSU gets the short end of the stick compared to
-> the other state universities because we don't have a division I
-> football team (no :-).
-
-Yeah, but didn't you guys produce Neil Lomax (lo these many years ago)?  What
-have the other schools given the NFL lately?
-
-> First thing I noticed is that this alias fails:
->      alias  .root=/usr/local/.root
-> The error is:
->      alias: .root: not a valid shell identifier
-
-This is correct according to Posix 1003.2a draft 5.  An alias must obey this
-pseudo-regexp:
-       [a-zA-Z_][a-zA-Z0-9_]*
-
-(That is, only letters, digits, and underscores, and it may not begin with an
-underscore).  This is in the latest version of the manual page, the one in
-the documentation directory.
-
-> Also it crashes when PROMPT_COMMAND is set, thus:
->      bash$ PROMPT_COMMAND="A=`pwd`"
->      bash$                           # just hit return
->      bash: free: Called with already freed block argument
-
-I am sorting through this problem right now, and I've discovered a few things
-(none complimentary to Sun).
-
-First of all, this crash happens because Sun's programmers are lazy.  The Sun
-malloc allows you to free things multiple times, instead of doing the old
-
-       if (x)
-               free(x);
-       x = NULL;
-
-trick.  The Gnu malloc disallows that.
-
-The root of this set of problems is that the Sun yyparse() is not reentrant
-(`impure').  First of all, /usr/lib/yaccpar has changed a number of things
-to be dynamically allocated that were once static arrays (the state stack
-and the value stack are the two major ones).  Second, some things that used
-to be automatic variables to yyparse (like the state stack) are now
-globally static variables in /usr/lib/yaccpar.  This means no more
-indirectly recursive calls to yyparse().  This is pure bogusness, and
-breaks backwards compatibility in a major way. 
-
-The first indirect call to yyparse() occurs when PROMPT_COMMAND is run
-through parse_and_execute() (parse.y, around line 1200).  The next call to
-yyparse() in your example (hitting return) returns quickly, putting nothing
-onto the state stack.  Of course, YYACCEPT doesn't check whether anything
-was put into the stack; it just goes ahead and frees it anyway. 
-
-The next problem arises when PROMPT_COMMAND contains a backquoted command,
-which is run through parse_and_execute() again.  It doesn't matter that
-this parse_and_execute is in a subshell; the data structures being built by
-Sun's yacc come along for free when bash forks.  The state stack gets all
-screwed up and a segmentation fault is the inevitable result.  If Sun (and,
-I assume, AT&T, since the SCCS line at the top of /usr/lib/yaccpar
-indicates that it is derived from S5R3.1) wants to do this kind of shit,
-they should at least provide a convenience function to clear out the state
-stack. 
-
-Both of these problems are avoided by using bison.  I have put bison on
-triton (you'll have to redo it if you want it; it looks for the parser
-skeletons in /home/chet/lib), and a bash compiled with a bison-generated
-parser does not crash given the above setting of PROMPT_COMMAND.  That bash
-is in /home/chet/bin.  I don't know how to solve these problems in a
-simple way by using the Sun yacc.
-
-`Byacc' (Berkeley Yacc), the 4.4 BSD rewrite of Yacc by Bob Corbett (who
-wrote the original version of bison), should also be OK, though I haven't
-looked at it.
-
-> That brings up something else:  Triton is set up as a mail-less
-> machine (all mail is forwarded elsewhere).  Do you want your mail
-> forwarded to CWSU??  Right now the bug reports Bash generates are
-> vanishing.  (I don't touch sendmail, and, from what I'm told, I'm
-> better off that way :-)
-
-(It's CWRU, by the way.)
-
-Don't worry, I get them all.  Look at the end of shell.c (make_bug_report)
-where it opens a pipe to `/bin/rmail chet@ins.cwru.edu'.
-
-Let me know of any more problems you encounter.
-
-Chet
-
-
---
-Chet Ramey                             ``Levi Stubbs' tears run down
-Network Services Group                   his face...''
-Case Western Reserve University        
-chet@ins.CWRU.Edu              
-
diff --git a/CWRU/OS-BUGS/bsd-rshd-bug b/CWRU/OS-BUGS/bsd-rshd-bug
deleted file mode 100644 (file)
index 54712d4..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-From chet@odin.INS.CWRU.Edu Sat Apr 27 19:54:13 1991
-Flags: 50
-Received: from odin.INS.CWRU.Edu by usenet.INS.CWRU.Edu with SMTP (5.65b+ida+/CWRU-1.5-UUCPGW)
-       id AA05700; Sat, 27 Apr 91 19:54:13 -0400 (from chet@odin.INS.CWRU.Edu for /usr/local/bin/m2mbox /usr/homes/chet/mbox)
-Received:  by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.4-ins)
-       id AA17732; Sat, 27 Apr 91 19:54:06 -0400 (from chet for chet@usenet.INS.CWRU.Edu)
-Date: Sat, 27 Apr 91 19:31:16 -0400
-From: Chet Ramey <chet@odin.INS.CWRU.Edu>
-To: bfox@ai.mit.edu
-Subject: Re: [pedz@aixwiz.austin.ibm.com: fd 9 left open bug]
-Cc: chet@odin.INS.CWRU.Edu, pedz@aixwiz.austin.ibm.com
-Reply-To: chet@po.CWRU.Edu
-In-Reply-To: Message from bfox@bears.ece.ucsb.edu of Wed, 24 Apr 91 12:49:33 PDT
-Message-Id: <9104272331.AA17706.SM@odin.INS.CWRU.Edu>
-Read-Receipt-To: chet@po.CWRU.Edu
-
-> Below is something I call Xemacs which goes across the net, sets up the
-> display variable and then kicks off emacs in such a way that rshd
-> terminates.  The trick is that the shell must die and all file
-> descriptors going back to rshd must be closed.  The same basic script
-> works with csh but I had to add in the "9>&-" part at the end to make
-> it work with bash.   This is because somehow, file descriptor 9 is left
-> open and I guess it must be a dup of stdin, stdout, or stderr.
-
-This is a bug alright, but it's a bug with rshd that's not fixed until
-4.3-reno.
-
-rshd sets up a pipe (int pv[2]; if you have the source to the tahoe rshd)
-to the process it executes and uses it to manage error and control output
-from over the net.  In the child process, it does a dup2(pv[1], 2), but
-never calls close(pv[1]).  Adding that code to the 4.3-tahoe rshd makes it
-(and the Xemacs script) work right.
-
-I don't know how to solve this cleanly in bash.  Doing a blanket close of
-all open file descriptors < 2, < 20 is a no-no, especially when we're not
-interactive.  csh `works' because it does the blanket close on startup, but
-csh can get away with doing that because it doesn't let you manipulate
-arbitrary file descriptors.
-
-Chet
-
---
-Chet Ramey                       Internet: chet@po.CWRU.Edu
-Case Western Reserve University          NeXT Mail: chet@macbeth.INS.CWRU.Edu
-
-``Now,  somehow we've brought our sins back physically -- and they're pissed.''
diff --git a/CWRU/OS-BUGS/bsd-tty-driver b/CWRU/OS-BUGS/bsd-tty-driver
deleted file mode 100644 (file)
index 2083e7c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From chet Thu Aug 13 10:42:35 1992
-Flags: 50
-Received:  by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.5-ins)
-       id AA07004; Thu, 13 Aug 92 10:42:35 -0400 (from chet for /usr/homes/chet/bin/mailfilter.sh /usr/homes/chet/mbox)
-Date: Thu, 13 Aug 1992 10:34:47 -0400
-From: Chet Ramey <chet@odin.INS.CWRU.Edu>
-To: przemek@rrdstrad.nist.gov
-Subject: Re: output of background jobs in BASH
-Cc: bug-bash@prep.ai.mit.edu, chet
-Reply-To: chet@po.CWRU.Edu
-In-Reply-To: Message from przemek@rrdstrad.nist.gov of 12 Aug 92 18:15:53 GMT
-Message-Id: <9208131434.AA00639.SM@odin.INS.CWRU.Edu>
-Read-Receipt-To: chet@po.CWRU.Edu
-
-> I believe that this changed when I installed bash 1.12: when I put a job that
-> prints on stdout in background (^Z/bg or directly by &), the output comes out
-> staggered, as if the CR wasn't being added to the LF at the end of the lines.
-
-This is a result of bash using the BSD-style tty driver on Ultrix.  The BSD
-driver ties input and output carriage return translation together with the
-CRMOD bit.  (The CRMOD bit causes CR->LF translation on input and LF->CRLF
-translation on output.)  Unless the CRMOD bit is cleared, it is impossible
-to get a literal ^M in an input line.  Unfortunately, one of the effects of
-clearing it is the loss of output processing you've observed. 
-
-The Ultrix Posix-style tty driver can't be used because it has serious
-problems with losing typeahead when ICANON is switched on and off.  These
-characters seem to reappear later without warning, usually when a
-program that uses the BSD-style ioctls turns on CBREAK (e.g., `more').
-
-Chet
-
---
-``The use of history as therapy means the corruption of history as history.''
-       -- Arthur Schlesinger
-
-Chet Ramey, Case Western Reserve University    Internet: chet@po.CWRU.Edu
-
diff --git a/CWRU/OS-BUGS/hpux-ulimit-bug b/CWRU/OS-BUGS/hpux-ulimit-bug
deleted file mode 100644 (file)
index 7c9a341..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-The HP/UX manual page for ulimit(2) reports that ulimit(1, 0L) will return 
-the maximum file size in terms of 512-byte blocks.  It lies, at least on
-HP/UX 6.5; the number of bytes is returned.
diff --git a/CWRU/OS-BUGS/isc-posix-bug b/CWRU/OS-BUGS/isc-posix-bug
deleted file mode 100644 (file)
index 5acf416..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-Article 7946 of comp.unix.sysv386:
-Newsgroups: comp.unix.sysv386
-Path: usenet.ins.cwru.edu!agate!stanford.edu!snorkelwacker.mit.edu!think.com!zaphod.mps.ohio-state.edu!rpi!batcomputer!cornell!rochester!lubkin
-From: lubkin@cs.rochester.edu (Saul Lubkin)
-Subject: Binary patch to os.o fixes POSIX panics using VP/ix with job controlled bash
-Message-ID: <1991Apr30.034006.24056@cs.rochester.edu>
-Organization: Computer Science Department University of Rochester
-Date: Tue, 30 Apr 1991 03:40:06 GMT
-
-
-Recently, Uwe Doering posted the following article:
-
-       Article 6891 of comp.unix.sysv386:
-       Path: nancy!uunet!math.fu-berlin.de!fub!geminix.in-berlin.de!gemini
-       From: gemini@geminix.in-berlin.de (Uwe Doering)
-       Newsgroups: comp.unix.sysv386
-       Subject: Re: NAMEI panic - trap "E", address and info follows (+ patch)
-       Message-ID: <KYXPX2E@geminix.in-berlin.de>
-       Date: 13 Apr 91 00:55:41 GMT
-       References: <1991Apr10.040146.645@ddsw1.MCS.COM>
-       Organization: Private UNIX Site
-       Lines: 92
-
-       karl@ddsw1.MCS.COM (Karl Denninger) writes:
-
-       >Is anyone else having problems with a "namei" panic in ISC 2.2 (with NFS,
-       >the NFS/lockd patches, and POSIX patches applied)?
-       >
-       >I have been getting these nearly daily.  Trap type "E", address is d007962f.
-       >That's right near the end of "namei"; here's the relavent line from a "nm"
-       >on the kernel:
-       >
-       >namei               |0xd007919c|extern|       *struct( )|0x0608|     |.text
-       >
-       >Needless to say, I am most displeased with the crashes!
-       >
-       >Near as I can determine, the hardware is fine.  
-       >
-       >All pointers or ideas appreciated...
-
-       I found this bug a few days ago and was about to send a bug report
-       to ISC. The problem is "simply" a NULL pointer reference in the
-       namei() function. The machine I found this on runs ISC 2.21 with
-       the security fix installed. I fixed this bug with a binary patch. It
-       is for the module /etc/conf/pack.d/kernel/os.o. I disassembled the
-       original and then the fixed version of os.o and ran a context diff
-       over the output. Depending on what version of the kernel config kit
-       you have the addresses might be off some bytes. You can apply this
-       patch with every binary file editor.
-
-       ***************
-       *** 35349,35364 ****
-                             [%al,%al]
-               cf71:  74 1e                  je     0x1e <cf91>
-                             [0xcf91]
-       !       cf73:  0f b7 07               movzwl (%edi),%eax
-                             [%edi,%eax]
-       !       cf76:  3d 11 00 00 00         cmpl   $0x11,%eax
-                             [$0x11,%eax]
-       !       cf7b:  74 14                  je     0x14 <cf91>
-                             [0xcf91]
-       !       cf7d:  c7 45 e8 00 00 00 00   movl   $0x0,0xe8(%ebp)
-       !                     [$0x0,-24+%ebp]
-       !       cf84:  eb 19                  jmp    0x19 <cf9f>
-       !                     [0xcf9f]
-               cf86:  90                     nop    
-                             []
-               cf87:  90                     nop    
-       --- 35349,35372 ----
-                             [%al,%al]
-               cf71:  74 1e                  je     0x1e <cf91>
-                             [0xcf91]
-       !       cf73:  85 ff                  testl  %edi,%edi
-       !                     [%edi,%edi]
-       !       cf75:  74 1a                  je     0x1a <cf91>
-       !                     [0xcf91]
-       !       cf77:  0f b7 07               movzwl (%edi),%eax
-                             [%edi,%eax]
-       !       cf7a:  3d 11 00 00 00         cmpl   $0x11,%eax
-                             [$0x11,%eax]
-       !       cf7f:  74 10                  je     0x10 <cf91>
-                             [0xcf91]
-       !       cf81:  eb 15                  jmp    0x15 <cf98>
-       !                     [0xcf98]
-       !       cf83:  90                     nop    
-       !                     []
-       !       cf84:  90                     nop    
-       !                     []
-       !       cf85:  90                     nop    
-       !                     []
-               cf86:  90                     nop    
-                             []
-               cf87:  90                     nop    
-
-       I'm not absolutely sure whether the action that is now taken in case of
-       a NULL pointer is the right one, but I haven't noticed any problems,
-       and most important, there are no more kernel panics! At least not from
-       that spot. :-) The action that is taken if the pointer in _not_ NULL
-       hasn't changed (this is not very obvious from the patch, but look
-       in the disassembler listing of your own kernel for more details).
-       I use this modified kernel for over a week now and it works for
-       me. Of course, as always, I can't give you any guaranty that this
-       patch does something useful on your machine. :-)
-
-       Hope this helps you.
-
-            Uwe
-
-       PS: ISC, if you see this posting, could you drop me a note on whether
-       you have put this on your to-do list? This would save me the time
-       needed to file an official bug report.
-       -- 
-       Uwe Doering  |  INET : gemini@geminix.in-berlin.de
-       Berlin       |----------------------------------------------------------------
-       Germany      |  UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
-       =======================================================================
-
-
-Here is a copy of my recent note to Uwe:
-
-
-       I've applied the binary patch that you recently poosted to comp.unix.sysv386
-       for os.o.
-
-       It works beautifully.  Previously, I had compiled bash1.07CWRU, and it worked
-       well (using POSIX job control), job control and all -- but running VP/ix under
-       this bash caused a system panic.  This evidently is the (now infamous) "POSIX
-       namei bug".  After rebuilding the kernel with a patched os.o, the problem
-       simply disappeared.  VP/ix, like everything else, now works fine under
-       bash1.07CWRU.
-
-
-                               Yours sincerely,
-
-                               Saul Lubkin
-
-
diff --git a/CWRU/OS-BUGS/next-rlogind-bug b/CWRU/OS-BUGS/next-rlogind-bug
deleted file mode 100644 (file)
index 09d0c31..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-From chet@odin.INS.CWRU.Edu Thu Mar  7 19:16:25 1991
-Flags: 50
-Received: from odin.INS.CWRU.Edu by usenet.INS.CWRU.Edu with SMTP (5.61+ida+/CWRU-1.4-UUCPGW)
-       id AA00967; Thu, 7 Mar 91 19:16:25 -0500 (from chet@odin.INS.CWRU.Edu for /usr/local/bin/m2mbox /usr/homes/chet/mbox)
-Received:  by odin.INS.CWRU.Edu (5.65+ida+/CWRU-1.4-ins)
-       id AA04437; Thu, 7 Mar 91 19:15:31 -0500 (from chet for chet@usenet.INS.CWRU.Edu)
-Date: Thu, 7 Mar 91 19:10:00 -0500
-From: Chet Ramey <chet@odin.INS.CWRU.Edu>
-To: jacob@blackbox.gore.com
-Subject: Re: Library function redefinition
-Cc: chet@odin.INS.CWRU.Edu, bfox@ai.mit.edu
-Reply-To: chet@po.CWRU.Edu
-In-Reply-To: Message from jacob@blackbox.gore.com of Sun, 3 Mar 91 19:18:54 MST
-Message-Id: <9103080010.AA04427.SM@odin.INS.CWRU.Edu>
-Read-Receipt-To: chet@po.CWRU.Edu
-
-> Now that you're working on bash for NeXT, let me ask you if you've run into
-> this bug under 2.0: bash, as a login shell, hangs on rlogin into the NeXT.
-> But it works fine on telnet.  On rlogin, I even get no output to stdout
-> from the 'tset' (or debugging 'echo's) in my startup files.
-
-It's getting stuck in initialize_jobs ().  There is a bug in the NeXT 
-/usr/etc/rlogind that causes bash to be started with the terminal still
-belonging to the rlogind process, and its process group set to 0 (so
-that getpgrp() returns 0 (!)).  It looks like there's a stray setpgrp(0, 0)
-in the rlogind code that NeXT is not handling like 4.3 BSD.
-
-(Another bug that I've found with NeXT 2.0 is that Terminal starts up the
-shell underneath it with argc == 0 and argv[0] = "-".  Not polite.
-`mount -vat nfs' seems to be broken too.  Any more good ones I should look
-for?)
-
-Here's a diff to jobs.c to work around it.  Your line numbers will certainly
-vary (for all I know, the code might, too).
-
-Chet
-
-*** jobs.c~    Tue Mar  5 17:41:00 1991
---- jobs.c     Thu Mar  7 18:50:12 1991
-***************
-*** 1839,1842 ****
---- 1839,1852 ----
-        }
-  
-+ #if defined (NeXT)
-+       /* This is to compensate for a bug in the NeXT 2.0 /usr/etc/rlogind. */
-+       if (shell_pgrp == 0)
-+      {
-+        shell_pgrp = getpid ();
-+        setpgid (0, shell_pgrp);
-+        tcsetpgrp (shell_tty, shell_pgrp);
-+      }
-+ #endif /* NeXT */
-+ 
-        while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1)
-       {
-
---
-Chet Ramey                             ``Now, somehow we've brought our sins
-Network Services Group                   back physically -- and they're
-Case Western Reserve University                  pissed.''
-chet@ins.CWRU.Edu              My opinions are just those, and mine alone.
-
diff --git a/CWRU/OS-BUGS/sco-3.2.4-bug b/CWRU/OS-BUGS/sco-3.2.4-bug
deleted file mode 100644 (file)
index 7378d3c..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-From gnulists@ai.mit.edu Mon Feb 22 20:41:24 1993
-Flags: 50
-Received: from po.CWRU.Edu by odin.INS.CWRU.Edu with SMTP (5.65b+ida+/CWRU-1.5.4-ins)
-       id AA17713; Mon, 22 Feb 93 20:41:24 -0500 (from gnulists@ai.mit.edu for /usr/homes/chet/bin/mailfilter.sh /usr/homes/chet/mbox)
-Return-Path: <gnulists@ai.mit.edu>
-Received: from life.ai.mit.edu by po.CWRU.Edu with SMTP (5.65b+ida+/CWRU-1.9)
-       id AA29616; Mon, 22 Feb 93 20:41:17 -0500 (from gnulists@ai.mit.edu for chet@odin.INS.CWRU.Edu)
-Received: from raisin-nut (raisin-nut.ai.mit.edu) by life.ai.mit.edu (4.1/AI-4.10) id AA01858; Mon, 22 Feb 93 20:40:47 EST
-Received: by raisin-nut (4.1/AI-4.10) id AA06708; Mon, 22 Feb 93 20:40:46 EST
-Resent-Date: Mon, 22 Feb 1993 13:29:57 -0500
-Resent-Message-Id: <9302230140.AA06708@raisin-nut>
-Received: from odin.INS.CWRU.Edu by life.ai.mit.edu (4.1/AI-4.10) id AA19283; Mon, 22 Feb 93 13:36:48 EST
-Received:  by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.5.4-ins)
-       id AA27765; Mon, 22 Feb 93 13:36:44 -0500 (from chet for bug-bash@prep.ai.mit.edu)
-Date: Mon, 22 Feb 1993 13:29:57 -0500
-From: Chet Ramey <chet@odin.ins.cwru.edu>
-Sender: gnulists@ai.mit.edu
-To: pat@bcserv.wustl.edu
-Subject: Re: bash for SCO Unix 3.2.2/4
-Cc: bug-bash@prep.ai.mit.edu, chet@odin.ins.cwru.edu
-Reply-To: chet@po.cwru.edu
-In-Reply-To: Message from pat@bcserv.wustl.edu of 22 Feb 93 06:23:34 GMT (id <pat.730362214@bcserv>)
-Message-Id: <9302221829.AA27553.SM@odin.INS.CWRU.Edu>
-Read-Receipt-To: chet@po.CWRU.Edu
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Resent-From: bug-bash-request@prep.ai.mit.edu
-
-> I've had no luck making either bash-1.11 or bash-1.12 for 
-> SCO Unix v 3.2.2 or 3.2.4...
-> 
-> bash-1.12 says (specifically) that it's making for 3.2.2, but
-> still has problems.
-> 
-> It locks up after a few commnds...
-> 
-> I don't have GCC right now, so I did have to tell it that I don't
-> have 'alloca' by undefining it in machines.h - if that could be a problem.
-
-You can't run bash-1.12 on a 3.2.4 system if it's been compiled on a
-3.2.2 system.  Bash contains a fix for the broken sigsuspend in 3.2.2
-that breaks bash on 3.2.4, because 3.2.4 has the bug fixed.
-
-Bash 1.12 should build and run OK out of the box on 3.2.2.  For 3.2.4
-you need to locate the code at around line 1250 of jobs.c and change
-#if !defined (SCO) to #if 1 so that sigsuspend is used.  Then take out
-the SCO defines in flush_child().
-
-Chet
-
---
-``The use of history as therapy means the corruption of history as history.''
-       -- Arthur Schlesinger
-
-Chet Ramey, Case Western Reserve University    Internet: chet@po.CWRU.Edu
-
-
diff --git a/CWRU/OS-BUGS/sequent-fcntl-dup2-bug b/CWRU/OS-BUGS/sequent-fcntl-dup2-bug
deleted file mode 100644 (file)
index 7676d49..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-From chet@odin.INS.CWRU.Edu Fri May  3 17:22:41 1991
-Flags: 50
-Received: from odin.INS.CWRU.Edu by usenet.INS.CWRU.Edu with SMTP (5.65b+ida+/CWRU-1.5-UUCPGW)
-       id AA22515; Fri, 3 May 91 17:22:41 -0400 (from chet@odin.INS.CWRU.Edu for /usr/local/bin/m2mbox /usr/homes/chet/mbox)
-Received:  by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.4-ins)
-       id AA07171; Fri, 3 May 91 17:22:21 -0400 (from chet for chet@usenet.INS.CWRU.Edu)
-Date: Fri, 3 May 91 17:18:03 -0400
-From: Chet Ramey <chet@odin.INS.CWRU.Edu>
-To: jp@lysator.liu.se
-Subject: fixed sequent bug
-Cc: chet@odin.INS.CWRU.Edu
-Reply-To: chet@po.CWRU.Edu
-Message-Id: <9105032118.AA07167.SM@odin.INS.CWRU.Edu>
-Read-Receipt-To: chet@po.CWRU.Edu
-
-
-I fixed it.  Sequent's fcntl and dup2 are both messed up.  They do not set
-the new descriptor to be open-on-exec.  For dup2 it's OK; that's the way
-4.2 BSD did it.  fcntl doing it is a bug, and a bad one.
-
-Chet
-
---
-Chet Ramey                       Internet: chet@po.CWRU.Edu
-Case Western Reserve University          NeXT Mail: chet@macbeth.INS.CWRU.Edu
-
-``Now,  somehow we've brought our sins back physically -- and they're pissed.''
-
diff --git a/CWRU/OS-BUGS/sun-yp-bug b/CWRU/OS-BUGS/sun-yp-bug
deleted file mode 100644 (file)
index 5b84ec0..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-From chet Mon Jul 27 14:54:45 1992
-Flags: 50
-Received:  by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.5-ins)
-       id AA15494; Mon, 27 Jul 92 14:54:45 -0400 (from chet for /usr/homes/chet/bin/mailfilter.sh /usr/homes/chet/mbox)
-Date: Mon, 27 Jul 1992 14:29:55 -0400
-From: Chet Ramey <chet@odin.INS.CWRU.Edu>
-To: stud7b43@x400gate.bnr.ca
-Subject: Re: Bug in Bash 1.12.1
-Cc: bug-bash@ai.mit.edu, chet
-Reply-To: chet@po.CWRU.Edu
-In-Reply-To: Message from stud7b43@x400gate.bnr.ca of Mon, 27 Jul 1992 12:30:00 +0000
-Message-Id: <9207271829.AA14484.SM@odin.INS.CWRU.Edu>
-Read-Receipt-To: chet@po.CWRU.Edu
-
-> I seem to have found a bug in Bash.
-> 
-> How to cause the bug to appear:
-> 1) Start a long username-completion, e.g.
->       cat ~user<TAB>
->    Let it run for a while (don't know exactly how long...)
->    Before it's finished, hit ^C (or whatever the break character
->    is set to)
-> 2) As the next command, run a filename completion with a username in it, eg.
->       cat ~username/.log<TAB>
-> 
-> Error message:  "free: Called with already freed block argument
-
-This is a bug in the Sun YP code that everyone seems to have picked up.
-
-Sun keeps static state in the YP library code -- a pointer into the
-data returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null.  So far,
-so good.
-
-If one of the YP functions is interrupted during getpwent (the exact function
-is interpretwithsave()), and returns NULL, the pointer is freed without being
-reset to NULL, and the function returns.  The next time getpwent is called,
-it sees that this pointer is non-null, calls free, and the Gnu free()
-blows up because it's being asked to free freed memory.
-
-The traditional Unix mallocs allow memory to be freed multiple times; that's
-probably why this has never been fixed.  You can probably stop it by adding
-an #undef USE_GNU_MALLOC to the appropriate machine description in machines.h.
-
-Chet
-
---
-``The use of history as therapy means the corruption of history as history.''
-       -- Arthur Schlesinger
-
-Chet Ramey, Case Western Reserve University    Internet: chet@po.CWRU.Edu
-
diff --git a/CWRU/OS-BUGS/ultrix-bugs b/CWRU/OS-BUGS/ultrix-bugs
deleted file mode 100644 (file)
index f9fb82c..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-From chet@odin.INS.CWRU.Edu Fri Dec 21 10:56:27 1990
-Flags: 50
-Received: from odin.INS.CWRU.Edu by usenet.INS.CWRU.Edu with SMTP (5.61+ida+/CWRU-1.3-UUCPGW)
-       id AA27089; Fri, 21 Dec 90 10:56:27 -0500 (from chet@odin.INS.CWRU.Edu for /usr/local/bin/m2mbox.test /usr/homes/chet/mbox)
-Received:  by odin.INS.CWRU.Edu (5.61+ida+/CWRU-1.4-ins)
-       id AA17558; Fri, 21 Dec 90 10:56:18 -0500 (from chet for chet@usenet.INS.CWRU.Edu)
-Date: Fri, 21 Dec 90 10:36:58 -0500
-From: Chet Ramey <chet@odin.ins.cwru.edu>
-To: dbrooks@osf.org
-Subject: Re: bash and OSF/1
-Cc: chet@odin.INS.CWRU.Edu
-Reply-To: chet@po.CWRU.Edu
-In-Reply-To: Message from dbrooks@osf.org of Fri, 21 Dec 90 10:28:26 EST
-Message-Id: <9012211536.AA17531.SM@odin.ins.cwru.edu>
-Read-Receipt-To: chet@po.CWRU.Edu
-
-> Michael Meissner has been suddenly asked to do Real Work (TM) so it's
-> unlikely he'll get to do anything with OSF/1 until the new year.  We
-> talked about it, however, and there are a few issues.
-
-Not (gasp) Real Work!
-
-> The upshot of the above is: expect a block of #defines based on
-> __OSF1__, and expect it possibly not to work under all
-> implementations.
-
-Works for me.
-
-> I have two new bugs for you in 1.06.
-> 
-> - Typeahead is very weird.  Often, I will be in a state where a
->   command is busy, and I type a new one.  The shell prompts and
->   nothing happens; I have to type the line again.  Later, if I enter
->   an interactive command (such as "mail") the missing keystrokes get
->   delivered to it instead.  This is on a pmax, Ultrix 3.1, with some
->   patches of my own and Michael's fignore patch (that may have caused
->   it; I haven't investigated yet.  Just wanted to see if this rang a bell.)
-
-Typeahead under Ultrix is wierd.  This doesn't happen anywhere else.  Here's
-what it does for me:
-
-cwjcc$ sleep 4
-echo hi ; echo hi              <----- typeahead while sleeping
-cwjcc$                         <----- nothing comes out
-cwjcc$ more readline.c
-readline.c: No such file or directory
-cwjcc$ echo hi ; echo hi       <----- now it does...
-hi
-hi
-
-I'll look at it today.
-
-> - The sequence
->      echo foo > /dev/tty
->      cat bar
->   produces:
->      cat: write error: Bad file number
-
-This only happens under Ultrix, too.  It's another consequence of Dec's
-dup2 fuckup (I am *really*pissed*off* about it; it's caused me to waste a
-lot of time already).  File descriptor 1 is getting set to close-on-exec. 
-I haven't decided whether to hack around it in the code or to just make
-Ultrix use the dup2 emulation in general.c.
-
-Cheers,
-
-Chet
-
---
-Chet Ramey                             ``I die, Horatio''
-Network Services Group, Case Western Reserve University
-chet@ins.CWRU.Edu
-                My opinions are just those, and mine alone.
-
diff --git a/CWRU/audit-patch b/CWRU/audit-patch
deleted file mode 100644 (file)
index 3e14ccc..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-Date: Tue, 06 Feb 2007 16:06:58 -0500
-From: Steve Grubb <sgrubb@redhat.com>
-Subject: Re: bash and linux audit
-To: chet.ramey@case.edu
-Organization: Red Hat
-
-OK, I released audit 1.4 Sunday which has the logging function for user
-commands. It produces audit events like this:
-
-type=USER_CMD msg=audit(01/30/2007 18:23:45.793:143) : user pid=22862 uid=root
-auid=root subj=system_u:system_r:unconfined_t:s0-s0:c0.c1023
-msg='cwd=/root/test dir cmd=ls -l (terminal=tty1 res=success)'
-
-diff -urp bash-3.2.orig/config-bot.h bash-3.2/config-bot.h
---- bash-3.2.orig/config-bot.h 2007-01-03 09:01:05.000000000 -0500
-+++ bash-3.2/config-bot.h      2007-01-20 11:59:23.000000000 -0500
-@@ -97,6 +97,11 @@
- #  define RESTRICTED_SHELL_NAME "rbash"
- #endif
-+/* If the shell is called by this name, it will become audited. */
-+#if defined (AUDIT_SHELL)
-+#  define AUDIT_SHELL_NAME "aubash"
-+#endif
-+
- /***********************************************************/
- /* Make sure feature defines have necessary prerequisites. */
- /***********************************************************/
-diff -urp bash-3.2.orig/config.h.in bash-3.2/config.h.in
---- bash-3.2.orig/config.h.in  2007-01-03 09:01:05.000000000 -0500
-+++ bash-3.2/config.h.in       2007-01-20 11:59:23.000000000 -0500
-@@ -81,6 +81,11 @@
-    flag. */
- #undef RESTRICTED_SHELL
-+/* Define AUDIT_SHELL if you want the generated shell to audit all
-+   actions performed by root account.  The shell thus generated can become
-+   audited by being run with the name "aubash". */
-+#undef AUDIT_SHELL
-+
- /* Define DISABLED_BUILTINS if you want "builtin foo" to always run the
-    shell builtin "foo", even if it has been disabled with "enable -n foo". */
- #undef DISABLED_BUILTINS
-diff -urp bash-3.2.orig/configure.in bash-3.2/configure.in
---- bash-3.2.orig/configure.in 2007-01-03 09:01:05.000000000 -0500
-+++ bash-3.2/configure.in      2007-01-20 11:59:23.000000000 -0500
-@@ -162,6 +162,7 @@ opt_history=yes
- opt_bang_history=yes
- opt_dirstack=yes
- opt_restricted=yes
-+opt_audit=yes
- opt_process_subst=yes
- opt_prompt_decoding=yes
- opt_select=yes
-@@ -195,8 +196,8 @@ dnl a minimal configuration turns everyt
- dnl added individually
- if test $opt_minimal_config = yes; then
-       opt_job_control=no opt_alias=no opt_readline=no
--      opt_history=no opt_bang_history=no opt_dirstack=no
--      opt_restricted=no opt_process_subst=no opt_prompt_decoding=no
-+      opt_history=no opt_bang_history=no opt_dirstack=no opt_restricted=no
-+      opt_audit=no opt_process_subst=no opt_prompt_decoding=no
-       opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no
-       opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no
-       opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no
-@@ -227,6 +228,7 @@ AC_ARG_ENABLE(progcomp, AC_HELP_STRING([
- AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
- AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
- AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
-+AC_ARG_ENABLE(audit, AC_HELP_STRING([--enable-audit], [enable an audited shell]), opt_audit=$enableval)
- AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
- AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
- AC_ARG_ENABLE(single-help-strings, AC_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval)
-@@ -254,6 +256,10 @@ fi
- if test $opt_restricted = yes; then
- AC_DEFINE(RESTRICTED_SHELL)
- fi
-+if test $opt_audit = yes; then
-+AC_DEFINE(AUDIT_SHELL)
-+AUDIT_LIB='-laudit'
-+fi
- if test $opt_process_subst = yes; then
- AC_DEFINE(PROCESS_SUBSTITUTION)
- fi
-@@ -355,6 +361,8 @@ AC_SUBST(HELPDIRDEFINE)
- AC_SUBST(HELPINSTALL)
- AC_SUBST(HELPSTRINGS)
-+AC_SUBST(AUDIT_LIB)
-+
- echo ""
- echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
- echo ""
-diff -urp bash-3.2.orig/doc/bash.1 bash-3.2/doc/bash.1
---- bash-3.2.orig/doc/bash.1   2007-01-03 09:01:05.000000000 -0500
-+++ bash-3.2/doc/bash.1        2007-01-20 11:59:23.000000000 -0500
-@@ -155,6 +155,12 @@ single-character options to be recognize
- .PP
- .PD 0
- .TP
-+.B \-\-audit
-+The shell logs all commands run by the root user (see
-+.SM
-+.B "AUDIT SHELL"
-+below).
-+.TP
- .B \-\-debugger
- Arrange for the debugger profile to be executed before the shell
- starts.
-@@ -8770,6 +8776,17 @@ turns off any restrictions in the shell 
- script.
- .\" end of rbash.1
- .if \n(zY=1 .ig zY
-+.SH "AUDIT SHELL"
-+.zY
-+.PP
-+If
-+.B bash
-+is started with the name
-+.BR aubash ,
-+or the
-+.B \-\-audit
-+option is supplied at invocation, the shell logs all commands issued by the root user to the audit system.
-+.if \n(zY=1 .ig zY
- .SH "SEE ALSO"
- .PD 0
- .TP
-diff -urp bash-3.2.orig/eval.c bash-3.2/eval.c
---- bash-3.2.orig/eval.c       2007-01-03 09:01:06.000000000 -0500
-+++ bash-3.2/eval.c    2007-01-20 11:59:23.000000000 -0500
-@@ -45,6 +45,11 @@
- #  include "bashhist.h"
- #endif
-+#if defined (AUDIT_SHELL)
-+#  include <libaudit.h>
-+#  include <errno.h>
-+#endif
-+
- extern int EOF_reached;
- extern int indirection_level;
- extern int posixly_correct;
-@@ -58,6 +63,38 @@ extern int rpm_requires;
- static void send_pwd_to_eterm __P((void));
- static sighandler alrm_catcher __P((int));
-+#if defined (AUDIT_SHELL)
-+static int audit_fd = -1;
-+
-+static int
-+audit_start ()
-+{
-+  audit_fd = audit_open ();
-+  if (audit_fd < 0)
-+    return -1;
-+  else
-+    return 0;
-+}
-+
-+static int
-+audit (cmd, result)
-+        char *cmd;
-+        int result;
-+{
-+  int rc;
-+
-+  if (audit_fd < 0)
-+    return 0;
-+
-+  rc = audit_log_user_command (audit_fd, AUDIT_USER_CMD, cmd,
-+                               NULL, !result);
-+  close (audit_fd);
-+  audit_fd = -1;
-+  return rc;
-+}
-+#endif
-+
-+
- /* Read and execute commands until EOF is reached.  This assumes that
-    the input source has already been initialized. */
- int
-@@ -145,7 +182,25 @@ reader_loop ()
-             executing = 1;
-             stdin_redir = 0;
-+#if defined (AUDIT_SHELL)
-+              if (audited && interactive_shell && getuid () == 0)
-+                {
-+                  if (audit_start () < 0)
-+                    {
-+                      if (errno != EINVAL && errno != EPROTONOSUPPORT &&
-+                          errno != EAFNOSUPPORT)
-+                        return EXECUTION_FAILURE;
-+                    }
-+                }
-+#endif
-+
-             execute_command (current_command);
-+#if defined (AUDIT_SHELL)
-+              {
-+                extern char *shell_input_line;
-+                audit (shell_input_line, last_command_exit_value);
-+              }
-+#endif
-           exec_done:
-             QUIT;
-diff -urp bash-3.2.orig/externs.h bash-3.2/externs.h
---- bash-3.2.orig/externs.h    2007-01-03 09:01:06.000000000 -0500
-+++ bash-3.2/externs.h 2007-01-20 12:05:00.000000000 -0500
-@@ -77,6 +77,10 @@ extern int shell_is_restricted __P((char
- extern int maybe_make_restricted __P((char *));
- #endif
-+#if defined (AUDIT_SHELL)
-+extern int maybe_make_audited __P((char *));
-+#endif
-+
- extern void unset_bash_input __P((int));
- extern void get_current_user_info __P((void));
-diff -urp bash-3.2.orig/flags.c bash-3.2/flags.c
---- bash-3.2.orig/flags.c      2007-01-03 09:01:06.000000000 -0500
-+++ bash-3.2/flags.c   2007-01-20 11:59:23.000000000 -0500
-@@ -142,6 +142,12 @@ int restricted = 0;               /* currently restri
- int restricted_shell = 0;     /* shell was started in restricted mode. */
- #endif /* RESTRICTED_SHELL */
-+#if defined (AUDIT_SHELL)
-+/* Non-zero means that this shell is audited. An audited shell records
-+   each command that the root user executes. */
-+int audited = 0;              /* shell was started in audit mode. */
-+#endif /* AUDIT_SHELL */
-+
- /* Non-zero means that this shell is running in `privileged' mode.  This
-    is required if the shell is to run setuid.  If the `-p' option is
-    not supplied at startup, and the real and effective uids or gids
-diff -urp bash-3.2.orig/flags.h bash-3.2/flags.h
---- bash-3.2.orig/flags.h      2007-01-03 09:01:06.000000000 -0500
-+++ bash-3.2/flags.h   2007-01-20 11:59:23.000000000 -0500
-@@ -66,6 +66,10 @@ extern int restricted;
- extern int restricted_shell;
- #endif /* RESTRICTED_SHELL */
-+#if defined (AUDIT_SHELL)
-+extern int audited;
-+#endif /* AUDIT_SHELL */
-+
- extern int *find_flag __P((int));
- extern int change_flag __P((int, int));
- extern char *which_set_flags __P((void));
-Only in bash-3.2: .made
-diff -urp bash-3.2.orig/Makefile.in bash-3.2/Makefile.in
---- bash-3.2.orig/Makefile.in  2007-01-03 09:01:06.000000000 -0500
-+++ bash-3.2/Makefile.in       2007-01-20 11:59:23.000000000 -0500
-@@ -366,6 +366,8 @@ MALLOC_LIBRARY = @MALLOC_LIBRARY@
- MALLOC_LDFLAGS = @MALLOC_LDFLAGS@
- MALLOC_DEP = @MALLOC_DEP@
-+AUDIT_LIB = @AUDIT_LIB@
-+
- ALLOC_HEADERS = $(ALLOC_LIBSRC)/getpagesize.h $(ALLOC_LIBSRC)/shmalloc.h \
-               $(ALLOC_LIBSRC)/imalloc.h $(ALLOC_LIBSRC)/mstats.h \
-               $(ALLOC_LIBSRC)/table.h $(ALLOC_LIBSRC)/watch.h
-@@ -386,7 +388,7 @@ BASHINCFILES =      $(BASHINCDIR)/posixstat.
-                $(BASHINCDIR)/ocache.h
- LIBRARIES = $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \
--          $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LOCAL_LIBS)
-+          $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LOCAL_LIBS) $(AUDIT_LIB)
- LIBDEP = $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) $(GLOB_DEP) \
-        $(TILDE_DEP) $(MALLOC_DEP)
-diff -urp bash-3.2.orig/parse.y bash-3.2/parse.y
---- bash-3.2.orig/parse.y      2007-01-03 09:01:06.000000000 -0500
-+++ bash-3.2/parse.y   2007-01-20 11:59:23.000000000 -0500
-@@ -258,7 +258,7 @@ int need_here_doc;
- /* Where shell input comes from.  History expansion is performed on each
-    line when the shell is interactive. */
--static char *shell_input_line = (char *)NULL;
-+char *shell_input_line = (char *)NULL;
- static int shell_input_line_index;
- static int shell_input_line_size;     /* Amount allocated for shell_input_line. */
- static int shell_input_line_len;      /* strlen (shell_input_line) */
-diff -urp bash-3.2.orig/shell.c bash-3.2/shell.c
---- bash-3.2.orig/shell.c      2007-01-03 09:01:06.000000000 -0500
-+++ bash-3.2/shell.c   2007-01-20 12:04:23.000000000 -0500
-@@ -240,6 +240,9 @@ struct {
- #if defined (RESTRICTED_SHELL)
-   { "restricted", Int, &restricted, (char **)0x0 },
- #endif
-+#if defined (AUDIT_SHELL)
-+  { "audit", Int, &audited, (char **)0x0 },
-+#endif
-   { "verbose", Int, &echo_input_at_read, (char **)0x0 },
-   { "version", Int, &do_version, (char **)0x0 },
-   { "wordexp", Int, &wordexp_only, (char **)0x0 },
-@@ -644,6 +647,10 @@ main (argc, argv, env)
-     maybe_make_restricted (shell_name);
- #endif /* RESTRICTED_SHELL */
-+#if defined (AUDIT_SHELL)
-+    maybe_make_audited (shell_name);
-+#endif
-+
-   if (wordexp_only)
-     {
-       startup_state = 3;
-@@ -1143,6 +1150,29 @@ maybe_make_restricted (name)
- }
- #endif /* RESTRICTED_SHELL */
-+#if defined (AUDIT_SHELL)
-+/* Perhaps make this shell an `audited' one, based on NAME.  If the
-+   basename of NAME is "aubash", then this shell is audited.  The
-+   name of the audited shell is a configurable option, see config.h.
-+   In an audited shell, all actions performed by root will be logged
-+   to the audit system.
-+   Do this also if `audited' is already set to 1 maybe the shell was
-+   started with --audit. */
-+int
-+maybe_make_audited (name)
-+     char *name;
-+{
-+  char *temp;
-+
-+  temp = base_pathname (name);
-+  if (*temp == '-')
-+    temp++;
-+  if (audited || (STREQ (temp, AUDIT_SHELL_NAME)))
-+    audited = 1;
-+  return (audited);
-+}
-+#endif /* AUDIT_SHELL */
-+
- /* Fetch the current set of uids and gids and return 1 if we're running
-    setuid or setgid. */
- static int
diff --git a/CWRU/devfd.c b/CWRU/devfd.c
deleted file mode 100644 (file)
index e5a3574..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <unistd.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-#define S_ISDIR(m)      (((m)&S_IFMT) == S_IFDIR)       /* directory */
-#endif
-
-main(c, v)
-int    c;
-char   **v;
-{
-       struct stat     sb;
-       int     r, fd;
-       char    fbuf[32];
-
-       r = stat("/dev/fd", &sb);
-       /* test -d /dev/fd */
-       if (r == -1 || S_ISDIR (sb.st_mode) == 0)
-               exit (1);
-       /* test -r /dev/fd/0 */
-       r = access ("/dev/fd/0", R_OK);
-       if (r == -1)
-               exit (1);
-       /* exec 3</dev/null */
-       fd = open("/dev/null", O_RDONLY, 0666);
-       if (fd == -1)
-               exit (2);
-       if (fd != 3 && (dup2(fd, 3) == -1))
-               exit (1);
-       /* test -r /dev/fd/3 */
-       r = access("/dev/fd/3", R_OK);
-       if (r == -1)
-               exit (1);
-       exit (0);
-}
-
-       
diff --git a/CWRU/devstdin.c b/CWRU/devstdin.c
deleted file mode 100644 (file)
index 45834be..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <unistd.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-#define S_ISDIR(m)      (((m)&S_IFMT) == S_IFDIR)       /* directory */
-#endif
-
-main(c, v)
-int    c;
-char   **v;
-{
-       struct stat     sb;
-       int     r, fd;
-       char    fbuf[32];
-
-       r = stat("/dev/fd", &sb);
-       /* test -d /dev/fd */
-       if (r == -1 || S_ISDIR (sb.st_mode) == 0)
-               exit (1);
-       /* test -r /dev/stdin < /dev/null */
-       fd = open("/dev/null", O_RDONLY, 0666);
-       if (fd == -1)
-               exit (2);
-       if (dup2(fd, 0) == -1)
-               exit (1);
-       r = access("/dev/stdin", R_OK);
-       if (r == -1)
-               exit (1);
-       exit (0);
-}
-
-       
diff --git a/CWRU/intmax.c b/CWRU/intmax.c
deleted file mode 100644 (file)
index cd14111..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <unistd.h>
-#include <limits.h>
-#include <stdio.h>
-
-#ifndef INTMAX_MAX
-#  ifdef LLONG_MAX
-#    define INTMAX_MAX LLONG_MAX
-#  else
-#    define INTMAX_MAX LONG_MAX
-#  endif
-#endif
-
-main(int c, char **v)
-{
-       printf ("%d\n", INT_MAX);
-       printf ("%ld\n", LONG_MAX);
-       printf ("%lld\n", INTMAX_MAX);
-       exit(0);
-}
diff --git a/CWRU/mh-folder-comp b/CWRU/mh-folder-comp
deleted file mode 100644 (file)
index 905000c..0000000
+++ /dev/null
@@ -1,449 +0,0 @@
-From jwe@che.utexas.edu Wed Sep 21 17:23:40 1994
-Flags: 10
-Return-Path: jwe@che.utexas.edu
-Received: from po.CWRU.Edu (root@po.CWRU.Edu [129.22.4.2]) by odin.INS.CWRU.Edu with ESMTP (8.6.8.1+cwru/CWRU-2.1-ins)
-       id RAA04010; Wed, 21 Sep 1994 17:23:39 -0400 (from jwe@che.utexas.edu for <chet@odin.INS.CWRU.Edu>)
-Received: from life.ai.mit.edu (life.ai.mit.edu [128.52.32.80]) by po.CWRU.Edu with SMTP (8.6.8.1+cwru/CWRU-2.2)
-       id RAA02121; Wed, 21 Sep 1994 17:23:28 -0400 (from jwe@che.utexas.edu for <chet@po.cwru.edu>)
-Received: from schoch.che.utexas.edu by life.ai.mit.edu (4.1/AI-4.10) for chet@po.cwru.edu id AA09989; Wed, 21 Sep 94 17:23:17 EDT
-Received: from localhost (jwe@localhost) by schoch.che.utexas.edu (8.6.8.1/8.6) with SMTP id QAA05737; Wed, 21 Sep 1994 16:22:01 -0500
-Message-Id: <199409212122.QAA05737@schoch.che.utexas.edu>
-To: march@tudor.com
-Cc: bug-bash@prep.ai.mit.edu
-Subject: Re: Completion feature possible?
-In-Reply-To: Your message of 21 Sep 94 13:30:22 EDT
-Date: Wed, 21 Sep 94 16:22:00 EDT
-From: John Eaton <jwe@che.utexas.edu>
-
-Gregory F. March <march@tudor.com> wrote:
-
-: I was having a discussion about MH with one of my friends the other
-: day and I got to thinking that the +folder/subfolder scheme for naming
-: mail folders is a real pain because completion doesn't work on
-: them. Someone then mentioned that zsh (I think) has the ability to
-: specify how to complete (I guess where to look for the files) for
-: different prefixes. Bash right now knows about '@', '~', and '$' (any
-: others?). It would be really helpful if one could define something
-: like:
-: 
-:      completion '+' "$HOME/Mail"
-: 
-: in a config file someplace. Would this be easy? Is there a list of
-: TODO item that someone might want to add this to?
-
-It would be nice to have a general completion feature like this.
-
-Until that happens, maybe you will find the following patch useful.
-It makes MH folder name completion work with bash.  The diffs are
-relative to version 1.14.2.
-
-I realize that changes to readline.c and and complete.c are not good
-since they add some MH-specific stuff to the readline code and not to
-bash, but when I first wrote this, I had no idea what else to do.
-
-Chet, would you consider adding this if it were cleaned up a bit?
-Made optional with cpp conditionals?
-
-This feature has been very useful to me for the last several years
-(since about 1.05 or 1.06, I think).
-
-Thanks,
-
---
-John W. Eaton      | 4.3BSD is not perfect.  -- Leffler, et al. (1989).
-jwe@che.utexas.edu |
-
-
--------------------------------cut here-------------------------------
-diff -rc bash-1.14.2/bashline.c bash-1.14.2.local/bashline.c
-*** bash-1.14.2/bashline.c     Wed Aug  3 09:32:45 1994
---- bash-1.14.2.local/bashline.c       Wed Sep 21 15:39:04 1994
-***************
-*** 58,63 ****
---- 58,64 ----
-  static char *hostname_completion_function ();
-  static char *command_word_completion_function ();
-  static char *command_subst_completion_function ();
-+ static char *mh_folder_completion_function ();
-  
-  static void snarf_hosts_from_file (), add_host_name ();
-  static void sort_hostname_list ();
-***************
-*** 90,95 ****
---- 91,98 ----
-    bash_complete_username_internal (),
-    bash_complete_hostname (), bash_possible_hostname_completions (),
-    bash_complete_hostname_internal (),
-+   bash_complete_mh_folder (), bash_possible_mh_folder_completions (),
-+   bash_complete_mh_folder_internal (),
-    bash_complete_variable (), bash_possible_variable_completions (),
-    bash_complete_variable_internal (),
-    bash_complete_command (), bash_possible_command_completions (),
-***************
-*** 134,140 ****
-    rl_terminal_name = get_string_value ("TERM");
-    rl_instream = stdin;
-    rl_outstream = stderr;
-!   rl_special_prefixes = "$@";
-  
-    /* Allow conditional parsing of the ~/.inputrc file. */
-    rl_readline_name = "Bash";
---- 137,143 ----
-    rl_terminal_name = get_string_value ("TERM");
-    rl_instream = stdin;
-    rl_outstream = stderr;
-!   rl_special_prefixes = "$@+";
-  
-    /* Allow conditional parsing of the ~/.inputrc file. */
-    rl_readline_name = "Bash";
-***************
-*** 193,198 ****
---- 196,207 ----
-    rl_bind_key_in_map ('@', bash_possible_hostname_completions,
-                     emacs_ctlx_keymap);
-  
-+   rl_add_defun ("complete-mh-folder", bash_complete_mh_folder, META('+'));
-+   rl_add_defun ("possible-mh-folder-completions",
-+              bash_possible_mh_folder_completions, -1);
-+   rl_bind_key_in_map ('+', bash_possible_mh_folder_completions,
-+                    emacs_ctlx_keymap);
-+ 
-    rl_add_defun ("complete-variable", bash_complete_variable, -1);
-    rl_bind_key_in_map ('$', bash_complete_variable, emacs_meta_keymap);
-    rl_add_defun ("possible-variable-completions",
-***************
-*** 656,661 ****
---- 665,677 ----
-    if (!matches && *text == '@')
-      matches = completion_matches (text, hostname_completion_function);
-  
-+   /* Another one.  Why not?  If the word starts in '+', then look for
-+      matching mh folders for completion first. */
-+   if (!matches && *text == '+')
-+     {
-+       matches = completion_matches (text, mh_folder_completion_function);
-+     }
-+ 
-    /* And last, (but not least) if this word is in a command position, then
-       complete over possible command names, including aliases, functions,
-       and command names. */
-***************
-*** 1077,1082 ****
---- 1093,1185 ----
-      return ((char *)NULL);
-  }
-  
-+ /* How about a completion function for mh folders? */
-+ static char *
-+ mh_folder_completion_function (text, state)
-+      int state;
-+      char *text;
-+ {
-+   extern int rl_filename_completion_desired;
-+ 
-+   extern char *get_mh_path ();
-+ 
-+   static char *mh_path = (char *)NULL;
-+   static int len;
-+   static int istate;
-+   static char *val;
-+   char *hint;
-+ 
-+   static char *mh_folder_hint = (char *)NULL;
-+ 
-+   /* If we don't have any state, make some. */
-+   if (!state)
-+     {
-+       val = (char *)NULL;
-+ 
-+       if (mh_path)
-+      free (mh_path);
-+ 
-+       mh_path = get_mh_path ();
-+       if (!mh_path && !(hint[1] == '/' || hint[1] == '.'))
-+      return ((char *)NULL);
-+ 
-+       len = strlen (mh_path);
-+     }
-+ 
-+   if (mh_folder_hint)
-+     free (mh_folder_hint);
-+ 
-+   hint = text;
-+   if (*hint == '+')
-+     hint++;
-+ 
-+   mh_folder_hint = (char *)xmalloc (2 + len + strlen (hint));
-+   if (*hint == '/' || *hint == '.') {
-+     len = -1;
-+     sprintf (mh_folder_hint, "%s", hint);
-+   } else
-+     sprintf (mh_folder_hint, "%s/%s", mh_path, hint);
-+ 
-+   istate = (val != (char *)NULL);
-+ 
-+  again:
-+   val = filename_completion_function (mh_folder_hint, istate);
-+   istate = 1;
-+ 
-+   if (!val)
-+     {
-+       return ((char *)NULL);
-+     }
-+   else
-+     {
-+       char *ptr = val + len + 1, *temp;
-+       struct stat sb;
-+       int status = stat (val, &sb);
-+ 
-+       if (status != 0)
-+      return ((char *)NULL);
-+ 
-+       if ((sb.st_mode & S_IFDIR) == S_IFDIR)
-+      {
-+        temp = (char *)xmalloc (2 + strlen (ptr));
-+        *temp = '+';
-+        strcpy (temp + 1, ptr);
-+ 
-+        free (val);
-+        val = "";
-+ 
-+        rl_filename_completion_desired = 1;
-+ 
-+        return (temp);
-+      }
-+       else
-+      {
-+        free (val);
-+      }
-+       goto again;
-+     }
-+ }
-+ 
-  /* History and alias expand the line. */
-  static char *
-  history_expand_line_internal (line)
-***************
-*** 1628,1633 ****
---- 1731,1773 ----
-  {
-    bash_specific_completion
-      (what_to_do, (Function *)username_completion_function);
-+ }
-+ 
-+ static void
-+ bash_complete_mh_folder (ignore, ignore2)
-+      int ignore, ignore2;
-+ {
-+   bash_complete_mh_folder_internal (TAB);
-+ }
-+ 
-+ static void
-+ bash_possible_mh_folder_completions (ignore, ignore2)
-+      int ignore, ignore2;
-+ {
-+   bash_complete_mh_folder_internal ('?');
-+ }
-+ 
-+ static void
-+ bash_complete_mh_folder_internal (what_to_do)
-+      int what_to_do;
-+ {
-+   Function  *orig_func;
-+   CPPFunction *orig_attempt_func;
-+   char *orig_rl_completer_word_break_characters;
-+   extern char *rl_completer_word_break_characters;
-+ 
-+   orig_func = rl_completion_entry_function;
-+   orig_attempt_func = rl_attempted_completion_function;
-+   orig_rl_completer_word_break_characters = rl_completer_word_break_characters;
-+   rl_completion_entry_function = (Function *)mh_folder_completion_function;
-+   rl_attempted_completion_function = (CPPFunction *)NULL;
-+   rl_completer_word_break_characters = " \t\n\"\'";
-+ 
-+   rl_complete_internal (what_to_do);
-+ 
-+   rl_completion_entry_function = orig_func;
-+   rl_attempted_completion_function = orig_attempt_func;
-+   rl_completer_word_break_characters = orig_rl_completer_word_break_characters;
-  }
-  
-  static void
-Only in bash-1.14.2.local: bashline.c.orig
-diff -rc bash-1.14.2/lib/readline/complete.c bash-1.14.2.local/lib/readline/complete.c
-*** bash-1.14.2/lib/readline/complete.c        Tue Jul 26 12:59:57 1994
---- bash-1.14.2.local/lib/readline/complete.c  Wed Sep 21 15:41:19 1994
-***************
-*** 733,751 ****
-             if (rl_filename_completion_desired)
-               {
-                 struct stat finfo;
-!                char *filename = tilde_expand (matches[0]);
-  
-!                if ((stat (filename, &finfo) == 0) && S_ISDIR (finfo.st_mode))
-                   {
-!                    if (rl_line_buffer[rl_point] != '/')
-!                      rl_insert_text ("/");
-                   }
-!                else
-                   {
-!                    if (rl_point == rl_end)
-!                      rl_insert_text (temp_string);
-                   }
--                free (filename);
-               }
-             else
-               {
---- 733,768 ----
-             if (rl_filename_completion_desired)
-               {
-                 struct stat finfo;
-!                char *tilde_expand ();
-!                char *plus_expand ();
-!                char *filename = (char *) NULL;
-  
-!                switch (*matches[0])
-                   {
-!                  case '+':
-!                    filename = plus_expand (matches[0]);
-!                    break;
-!                  case '~':
-!                  default:
-!                    filename = tilde_expand (matches[0]);
-!                    break;
-                   }
-! 
-!                if (filename)
-                   {
-!                    if ((stat (filename, &finfo) == 0)
-!                        && S_ISDIR (finfo.st_mode))
-!                      {
-!                        if (rl_line_buffer[rl_point] != '/')
-!                          rl_insert_text ("/");
-!                      }
-!                    else
-!                      {
-!                        if (rl_point == rl_end)
-!                          rl_insert_text (temp_string);
-!                      }
-!                    free (filename);
-                   }
-               }
-             else
-               {
-Only in bash-1.14.2.local/lib/readline: diffs
-diff -rc bash-1.14.2/lib/readline/readline.c bash-1.14.2.local/lib/readline/readline.c
-*** bash-1.14.2/lib/readline/readline.c        Fri Aug 12 12:47:46 1994
---- bash-1.14.2.local/lib/readline/readline.c  Wed Sep 21 15:36:07 1994
-***************
-*** 23,28 ****
---- 23,29 ----
-  #define READLINE_LIBRARY
-  
-  #include <stdio.h>
-+ #include <string.h>
-  #include <sys/types.h>
-  #include <fcntl.h>
-  #if !defined (NO_SYS_FILE)
-***************
-*** 3518,3523 ****
---- 3519,3616 ----
-  }
-  
-  #endif /* TEST */
-+ 
-+ #define cr_whitespace(c) ((c) == '\r' || (c) == '\n' || whitespace(c))
-+ 
-+ char *
-+ get_mh_path ()
-+ {
-+   static FILE *fp = (FILE *)NULL;
-+   char buf[512];      /* XXX */
-+   char profile[512];  /* XXX */
-+   char *bp;
-+   char *temp_home;
-+   char *temp_path;
-+ 
-+   temp_home = (char *)getenv ("HOME");
-+   if (!temp_home)
-+     return ((char *)NULL);
-+ 
-+   strcpy (profile, temp_home);
-+   strcat (profile, "/.mh_profile");
-+ 
-+   if (fp)
-+     fclose (fp);
-+ 
-+   fp = fopen (profile, "r");
-+   if (fp == (FILE *)NULL)
-+     return ((char *)NULL);
-+ 
-+   while (fgets (buf, 512, fp) != (char *)NULL)  /* XXX */
-+     {
-+       if ((bp = strstr (buf, "Path:")) != (char *)NULL)
-+      {
-+        bp += 5;
-+        while (whitespace (*bp))
-+          bp++;
-+ 
-+        if (*bp == '\0')
-+          return ((char *)NULL);
-+ 
-+        temp_path = (char *)xmalloc (3 + strlen (bp) + strlen (temp_home));
-+ 
-+        strcpy (temp_path, temp_home);
-+        strcat (temp_path, "/");
-+        strcat (temp_path, bp);
-+ 
-+        bp = temp_path;
-+ 
-+        while (!(cr_whitespace (*bp)))
-+          bp++;
-+ 
-+        *bp = '\0';
-+ 
-+        return temp_path;
-+      }
-+     }
-+ 
-+   return ((char *)NULL);
-+ }
-+ 
-+ /* Expand FILENAME if it begins with a plus.  This always returns
-+    a new string. */
-+ char *
-+ plus_expand (filename)
-+      char *filename;
-+ {
-+   static char *dirname = (char *)NULL;
-+ 
-+   if (filename && *filename == '+')
-+     {
-+       char *mh_path = get_mh_path ();
-+ 
-+       if (filename[1] == '/' || filename[1] == '.')
-+      {
-+        dirname = (char *)xmalloc (1 + strlen (filename));
-+ 
-+        strcpy(dirname, filename+1);
-+ 
-+        return dirname;
-+      }
-+ 
-+       if (mh_path)
-+      {
-+        dirname = (char *)xmalloc (1 + strlen (filename) + strlen (mh_path));
-+ 
-+        strcpy (dirname, mh_path);
-+        strcat (dirname, "/");
-+        strcat (dirname, filename+1);
-+ 
-+        return dirname;
-+      }
-+     }
-+   return (char *)NULL;
-+ }
-  
-  \f
-  /*
-
diff --git a/CWRU/misc/asort.c b/CWRU/misc/asort.c
deleted file mode 100644 (file)
index 5a3a304..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <stdio.h>
-#include <locale.h>
-
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-static int
-qsort_strcmp(s1, s2)
-char   **s1, **s2;
-{
-       return (strcoll(*s1, *s2));
-}
-
-static void
-usage()
-{
-       fprintf(stderr, "asort: usage: asort [-v] args\n");
-}
-
-int
-main(c, v)
-int    c;
-char   **v;
-{
-       int     i, verbose;
-       char    *dlocale;
-
-       verbose = 0;
-       while ((i = getopt(c, v, "v")) != -1) {
-               switch (i) {
-               case 'v':
-                       verbose = 1; break;
-               case '?':
-               default:
-                       usage();
-                       exit(2);
-               }
-       }
-       c -= optind;
-       v += optind;
-
-       dlocale = setlocale(LC_ALL, "");
-       if (verbose)
-               printf("default locale = %s\n", dlocale ? dlocale : "''");
-       qsort(v, c, sizeof(char *), qsort_strcmp);
-       for (i = 0; i < c; i++) {
-               printf("%s ", v[i]);
-       }
-       printf("\n");
-       exit(0);
-}
diff --git a/CWRU/misc/copyright b/CWRU/misc/copyright
deleted file mode 100644 (file)
index df1b6a7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright (C) 2008,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 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/>.
-*/
diff --git a/CWRU/misc/endian.c b/CWRU/misc/endian.c
deleted file mode 100644 (file)
index 3dd30b3..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <stdio.h>
-
-main()
-{
-
-union {
-       long int l;
-       char c[sizeof(long int)];
-} u;
-       int x0, x1, x2, x3;
-
-       u.l = 1;
-       x0 = u.c[0];
-       x3 = u.c[sizeof (long int) - 1];
-       printf ("x0 = %d x3 = %d (%s)\n", x0, x3, x3 == 1 ? "bigendian" : "littleendian");
-       x0 = u.l >> 24;
-       x1 = u.l >> 16;
-       x2 = u.l >> 8;
-       x3 = u.l & 0xff;
-       printf ("x0:x3: %d %d %d %d\n", x0, x1, x2, x3);
-}
diff --git a/CWRU/misc/endian2.c b/CWRU/misc/endian2.c
deleted file mode 100644 (file)
index b84754b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <stdio.h>
-int
-main()
-{
-       int i = 0x12345678;
-       char *x;
-
-       x = (char *)&i;
-       printf ("0x%x\n", *x);
-       printf ((*x == 0x78) ? "little endian\n" : "big endian\n");
-       return 0;
-}
diff --git a/CWRU/misc/endian3.c b/CWRU/misc/endian3.c
deleted file mode 100644 (file)
index 86b478b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <stdio.h>
-
-main()
-{
-
-       union {
-               int l;
-               char c[sizeof(int)];
-       } u;
-       int x0, x1, x2, x3;
-
-       u.l = 0x012345678;
-       x0 = u.c[0];
-       x3 = u.c[sizeof (int) - 1];
-       printf ("x0 = 0x%x x3 = 0x%x (%s)\n", x0, x3, x3 == 0x78 ? "bigendian" : "littleendian");
-       x0 = (u.l >> 24) & 0xff;
-       x1 = (u.l >> 16) & 0xff;
-       x2 = (u.l >> 8)  & 0xff;
-       x3 = u.l & 0xff;
-       printf ("big endian x0:x3: %x %x %x %x\n", x0, x1, x2, x3);
-}
diff --git a/CWRU/misc/getwd.bsd44.c b/CWRU/misc/getwd.bsd44.c
deleted file mode 100644 (file)
index f5dd39b..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 1989, 1991 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)getcwd.c   5.11 (Berkeley) 2/24/91";
-#endif /* LIBC_SCCS and not lint */
-
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <errno.h>
-#if defined (HAVE_DIRENT_H)
-#include <dirent.h>
-#else
-#include <sys/dir.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifndef HAVE_DIRENT_H
-#  define dirent direct
-#endif
-
-#define        ISDOT(dp) \
-       (dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || \
-           dp->d_name[1] == '.' && dp->d_name[2] == '\0'))
-
-#ifndef dirfd
-#  define dirfd(d)     ((d)->dd_fd)
-#endif
-
-char *
-getcwd(pt, size)
-       char *pt;
-       size_t size;
-{
-       register struct dirent *dp;
-       register DIR *dir;
-       register dev_t dev;
-       register ino_t ino;
-       register int first;
-       register char *bpt, *bup;
-       struct stat s;
-       dev_t root_dev;
-       ino_t root_ino;
-       size_t ptsize, upsize;
-       int save_errno;
-       char *ept, *eup, *up;
-
-       /*
-        * If no buffer specified by the user, allocate one as necessary.
-        * If a buffer is specified, the size has to be non-zero.  The path
-        * is built from the end of the buffer backwards.
-        */
-       if (pt) {
-               ptsize = 0;
-               if (!size) {
-                       errno = EINVAL;
-                       return((char *)NULL);
-               }
-               ept = pt + size;
-       } else {
-               if (!(pt = (char *)malloc(ptsize = 1024 - 4)))
-                       return((char *)NULL);
-               ept = pt + ptsize;
-       }
-       bpt = ept - 1;
-       *bpt = '\0';
-
-       /*
-        * Allocate bytes (1024 - malloc space) for the string of "../"'s.
-        * Should always be enough (it's 340 levels).  If it's not, allocate
-        * as necessary.  Special * case the first stat, it's ".", not "..".
-        */
-       if (!(up = (char *)malloc(upsize = 1024 - 4)))
-               goto err;
-       eup = up + MAXPATHLEN;
-       bup = up;
-       up[0] = '.';
-       up[1] = '\0';
-
-       /* Save root values, so know when to stop. */
-       if (stat("/", &s))
-               goto err;
-       root_dev = s.st_dev;
-       root_ino = s.st_ino;
-
-       errno = 0;                      /* XXX readdir has no error return. */
-
-       for (first = 1;; first = 0) {
-               /* Stat the current level. */
-               if (lstat(up, &s))
-                       goto err;
-
-               /* Save current node values. */
-               ino = s.st_ino;
-               dev = s.st_dev;
-
-               /* Check for reaching root. */
-               if (root_dev == dev && root_ino == ino) {
-                       *--bpt = '/';
-                       /*
-                        * It's unclear that it's a requirement to copy the
-                        * path to the beginning of the buffer, but it's always
-                        * been that way and stuff would probably break.
-                        */
-                       (void)bcopy(bpt, pt, ept - bpt);
-                       free(up);
-                       return(pt);
-               }
-
-               /*
-                * Build pointer to the parent directory, allocating memory
-                * as necessary.  Max length is 3 for "../", the largest
-                * possible component name, plus a trailing NULL.
-                */
-               if (bup + 3  + MAXNAMLEN + 1 >= eup) {
-                       if (!(up = (char *)realloc(up, upsize *= 2)))
-                               goto err;
-                       eup = up + upsize;
-               }
-               *bup++ = '.';
-               *bup++ = '.';
-               *bup = '\0';
-
-               /* Open and stat parent directory. */
-               if (!(dir = opendir(up)) || fstat(dirfd(dir), &s))
-                       goto err;
-
-               /* Add trailing slash for next directory. */
-               *bup++ = '/';
-
-               /*
-                * If it's a mount point, have to stat each element because
-                * the inode number in the directory is for the entry in the
-                * parent directory, not the inode number of the mounted file.
-                */
-               save_errno = 0;
-               if (s.st_dev == dev) {
-                       for (;;) {
-                               if (!(dp = readdir(dir)))
-                                       goto notfound;
-                               if (dp->d_fileno == ino)
-                                       break;
-                       }
-               } else
-                       for (;;) {
-                               if (!(dp = readdir(dir)))
-                                       goto notfound;
-                               if (ISDOT(dp))
-                                       continue;
-                               bcopy(dp->d_name, bup, dp->d_namlen + 1);
-
-                               /* Save the first error for later. */
-                               if (lstat(up, &s)) {
-                                       if (!save_errno)
-                                               save_errno = errno;
-                                       errno = 0;
-                                       continue;
-                               }
-                               if (s.st_dev == dev && s.st_ino == ino)
-                                       break;
-                       }
-
-               /*
-                * Check for length of the current name, preceding slash,
-                * leading slash.
-                */
-               if (bpt - pt <= dp->d_namlen + (first ? 1 : 2)) {
-                       size_t len, off;
-
-                       if (!ptsize) {
-                               errno = ERANGE;
-                               goto err;
-                       }
-                       off = bpt - pt;
-                       len = ept - bpt;
-                       if (!(pt = (char *)realloc(pt, ptsize *= 2)))
-                               goto err;
-                       bpt = pt + off;
-                       ept = pt + ptsize;
-                       (void)bcopy(bpt, ept - len, len);
-                       bpt = ept - len;
-               }
-               if (!first)
-                       *--bpt = '/';
-               bpt -= dp->d_namlen;
-               bcopy(dp->d_name, bpt, dp->d_namlen);
-               (void)closedir(dir);
-
-               /* Truncate any file name. */
-               *bup = '\0';
-       }
-
-notfound:
-       /*
-        * If readdir set errno, use it, not any saved error; otherwise,
-        * didn't find the current directory in its parent directory, set
-        * errno to ENOENT.
-        */
-       if (!errno)
-               errno = save_errno ? save_errno : ENOENT;
-       /* FALLTHROUGH */
-err:
-       if (ptsize)
-               free(pt);
-       free(up);
-       return((char *)NULL);
-}
-
-char *
-getwd(buf)
-       char *buf;
-{
-       char *p;
-
-       if (p = getcwd(buf, MAXPATHLEN))
-               return(p);
-       (void)strcpy(buf, strerror(errno));
-       return((char *)NULL);
-}
diff --git a/CWRU/misc/iptrt.c b/CWRU/misc/iptrt.c
deleted file mode 100644 (file)
index b9d1e2a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdio.h>
-
-main()
-{
-       if (sizeof(char *) == sizeof(long))
-               printf("long\n");
-       else if (sizeof(char *) == sizeof(short))
-               printf("short\n");
-       else
-               printf("int\n");
-       exit(0);
-}
diff --git a/CWRU/misc/nofd0.c b/CWRU/misc/nofd0.c
deleted file mode 100644 (file)
index 88cae1a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-main(c, v, e)
-int    c;
-char   **v, **e;
-{
-       close(0);
-       execv(v[1], v+1);
-}
-
-       
diff --git a/CWRU/misc/pcat.c b/CWRU/misc/pcat.c
deleted file mode 100644 (file)
index f520128..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-/* $Header:cat.c 12.0$ */
-/* $ACIS:cat.c 12.0$ */
-/* $Source: /ibm/acis/usr/src/bin/RCS/cat.c,v $ */
-
-#ifndef lint
-static char *rcsid = "$Header:cat.c 12.0$";
-#endif
-
-/*
- * Copyright (c) 1980 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cat.c      5.2 (Berkeley) 12/6/85";
-#endif not lint
-
-/*
- * Concatenate files.
- */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-/* #define OPTSIZE BUFSIZ      /* define this only if not 4.2 BSD or beyond */
-
-int    bflg, eflg, nflg, sflg, tflg, uflg, vflg;
-int    spaced, col, lno, inline, ibsize, obsize;
-
-#include <signal.h>
-
-sigpipe()
-{
-       write(2, "pcat: caught SIGPIPE\n", 21);
-       exit(1);
-}
-
-main(argc, argv)
-char **argv;
-{
-       int fflg = 0;
-       register FILE *fi;
-       register c;
-       int dev, ino = -1;
-       struct stat statb;
-       int retval = 0;
-
-       signal(SIGPIPE, sigpipe);
-       lno = 1;
-       for( ; argc>1 && argv[1][0]=='-'; argc--,argv++) {
-               switch(argv[1][1]) {
-               case 0:
-                       break;
-               case 'u':
-                       setbuf(stdout, (char *)NULL);
-                       uflg++;
-                       continue;
-               case 'n':
-                       nflg++;
-                       continue;
-               case 'b':
-                       bflg++;
-                       nflg++;
-                       continue;
-               case 'v':
-                       vflg++;
-                       continue;
-               case 's':
-                       sflg++;
-                       continue;
-               case 'e':
-                       eflg++;
-                       vflg++;
-                       continue;
-               case 't':
-                       tflg++;
-                       vflg++;
-                       continue;
-               }
-               break;
-       }
-       if (fstat(fileno(stdout), &statb) == 0) {
-               statb.st_mode &= S_IFMT;
-               if (statb.st_mode!=S_IFCHR && statb.st_mode!=S_IFBLK) {
-                       dev = statb.st_dev;
-                       ino = statb.st_ino;
-               }
-#ifndef        OPTSIZE
-               obsize = statb.st_blksize;
-#endif
-       }
-       else
-               obsize = 0;
-       if (argc < 2) {
-               argc = 2;
-               fflg++;
-       }
-       while (--argc > 0) {
-               if (fflg || (*++argv)[0]=='-' && (*argv)[1]=='\0')
-                       fi = stdin;
-               else {
-                       if ((fi = fopen(*argv, "r")) == NULL) {
-                               perror(*argv);
-                               retval = 1;
-                               continue;
-                       }
-               }
-               if (fstat(fileno(fi), &statb) == 0) {
-                       if ((statb.st_mode & S_IFMT) == S_IFREG &&
-                           statb.st_dev==dev && statb.st_ino==ino) {
-                               fprintf(stderr, "cat: input %s is output\n",
-                                  fflg?"-": *argv);
-                               fclose(fi);
-                               retval = 1;
-                               continue;
-                       }
-#ifndef        OPTSIZE
-                       ibsize = statb.st_blksize;
-#endif
-               }
-               else
-                       ibsize = 0;
-               if (nflg||sflg||vflg)
-                       copyopt(fi);
-               else if (uflg) {
-                       while ((c = getc(fi)) != EOF)
-                               putchar(c);
-               } else
-                       retval |= fastcat(fileno(fi));  /* no flags specified */
-               if (fi!=stdin)
-                       fclose(fi);
-               else
-                       clearerr(fi);           /* reset sticky eof */
-               if (ferror(stdout)) {
-                       fprintf(stderr, "cat: output write error\n");
-                       retval = 1;
-                       break;
-               }
-       }
-       exit(retval);
-}
-
-copyopt(f)
-       register FILE *f;
-{
-       register int c;
-
-top:
-       c = getc(f);
-       if (c == EOF)
-               return;
-       if (c == '\n') {
-               if (inline == 0) {
-                       if (sflg && spaced)
-                               goto top;
-                       spaced = 1;
-               }
-               if (nflg && bflg==0 && inline == 0)
-                       printf("%6d\t", lno++);
-               if (eflg)
-                       putchar('$');
-               putchar('\n');
-               inline = 0;
-               goto top;
-       }
-       if (nflg && inline == 0)
-               printf("%6d\t", lno++);
-       inline = 1;
-       if (vflg) {
-               if (tflg==0 && c == '\t')
-                       putchar(c);
-               else {
-                       if (c > 0177) {
-                               printf("M-");
-                               c &= 0177;
-                       }
-                       if (c < ' ')
-                               printf("^%c", c+'@');
-                       else if (c == 0177)
-                               printf("^?");
-                       else
-                               putchar(c);
-               }
-       } else
-               putchar(c);
-       spaced = 0;
-       goto top;
-}
-
-fastcat(fd)
-register int fd;
-{
-       register int    buffsize, n, nwritten, offset;
-       register char   *buff;
-       struct stat     statbuff;
-       char            *malloc();
-
-#ifndef        OPTSIZE
-       if (obsize)
-               buffsize = obsize;      /* common case, use output blksize */
-       else if (ibsize)
-               buffsize = ibsize;
-       else
-               buffsize = BUFSIZ;
-#else
-       buffsize = OPTSIZE;
-#endif
-
-       if ((buff = malloc(buffsize)) == NULL) {
-               perror("cat: no memory");
-               return (1);
-       }
-
-       /*
-        * Note that on some systems (V7), very large writes to a pipe
-        * return less than the requested size of the write.
-        * In this case, multiple writes are required.
-        */
-       while ((n = read(fd, buff, buffsize)) > 0) {
-               offset = 0;
-               do {
-                       nwritten = write(fileno(stdout), &buff[offset], n);
-                       if (nwritten <= 0) {
-                               perror("cat: write error");
-                               exit(2);
-                       }
-                       offset += nwritten;
-               } while ((n -= nwritten) > 0);
-       }
-
-       free(buff);
-       if (n < 0) {
-               perror("cat: read error");
-               return (1);
-       }
-       return (0);
-}
diff --git a/CWRU/misc/pgrp.c b/CWRU/misc/pgrp.c
deleted file mode 100644 (file)
index 507da56..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <stdio.h>
-#include <sys/types.h>
-
-int     pid;
-int     pg1;
-
-main()
-{
-       pid = getpid();
-       pg1 = getpgrp(0);
-
-       printf("pid = %d, pgrp = %d\n", pid, pg1);
-}
diff --git a/CWRU/misc/pid.c b/CWRU/misc/pid.c
deleted file mode 100644 (file)
index 458fde4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <stdio.h>
-
-main()
-{
-       fprintf(stderr, "%d\n", getpid());
-       exit(0);
-}
diff --git a/CWRU/misc/rangecmp.c b/CWRU/misc/rangecmp.c
deleted file mode 100644 (file)
index 8c96502..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#include <stdio.h>
-#include <locale.h>
-
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-static void
-usage()
-{
-       fprintf(stderr, "rangecmp: usage: rangecmp [-v] start test end\n");
-}
-
-int
-main(c, v)
-int    c;
-char   **v;
-{
-       int     i, verbose, r1, r2;
-       char    *dlocale;
-
-       verbose = 0;
-       while ((i = getopt(c, v, "v")) != -1) {
-               switch (i) {
-               case 'v':
-                       verbose = 1; break;
-               case '?':
-               default:
-                       usage();
-                       exit(2);
-               }
-       }
-       c -= optind;
-       v += optind;
-
-       dlocale = setlocale(LC_ALL, "");
-       if (verbose)
-               printf("default locale = %s\n", dlocale ? dlocale : "''");
-       r1 = strcoll (v[1], v[0]);
-       printf("strcoll (%s, %s) -> %d\n", v[1], v[0], r1);
-       r2 = strcoll (v[1], v[2]);
-       printf("strcoll (%s, %s) -> %d\n", v[1], v[2], r2);
-
-       exit(0);
-}
diff --git a/CWRU/misc/stderr.c b/CWRU/misc/stderr.c
deleted file mode 100644 (file)
index f1ec1dc..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdio.h>
-
-main()
-{
-       fprintf(stdout, "to stdout\n");
-       fprintf(stderr, "to stderr\n");
-       fprintf(stdout, "to stdout\n");
-       fprintf(stderr, "to stderr\n");
-       exit(0);
-}
-
-       
diff --git a/CWRU/misc/test-strtod.c b/CWRU/misc/test-strtod.c
deleted file mode 100644 (file)
index e76f93a..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-
-
-#ifndef errno
-extern int errno;
-#endif
-
-main(c, v)
-int    c;
-char   **v;
-{
-       double  dv, dv2;
-       char    *sv, *ep;
-       int     r;
-
-       sv = "4.2";
-       dv = 4.2;
-
-       errno = 0;
-       dv2 = strtod(sv, &ep);
-       if (*ep)
-               exit(1);
-       else if (errno == ERANGE)
-               exit(1);
-       if (dv != dv2)
-               exit(1);
-       exit(0);
-}
-
-       
-       
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/old-changelogs/-i b/CWRU/old-changelogs/-i
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/CWRU/old-changelogs/CHANGES.051093 b/CWRU/old-changelogs/CHANGES.051093
deleted file mode 100644 (file)
index c7637b5..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-This file details the changes between the previous release of CWRU bash
-(3/10/93) and this release.
-
-1. Bugs Fixed
-
-New version of endian.c that handles 64-bit machines better
-
-added code to make readline reset itself when $TERMINFO changes
-
-fixed memory leaks in:
-       builtins/exec.def
-       lib/readline/history.c
-       lib/readline/readline.c
-       parse.y
-       subst.c
-       variables.c
-       dispose_cmd.c
-       mailcheck.c
-       bashline.c
-       execute_cmd.c
-       shell.c
-
-make sure that bash_symbolic_link_hook calls get_working_directory with a
-non-empty string argument
-
-check the return value of getdtablesize() for bad values
-
-make the job control tty handlers print error message only if the shell is
-currently interactive
-
-process substitution no longer tries to close every file descriptor
-
-fixed up the source to contain more extern function declarations rather than
-casting the return values
-
-fixed up handling of embedded quoted strings by the parser so that $ is not
-a special character while parsing one
-
-added escape handling to the read builtin so backslashes can escape $IFS
-characters
-
-fixed the brace expansion code so that backslash can act as a delimiter and
-can escape `"' in a double-quoted string
-
-the `<>' redirection needs to open the file O_RDWR|O_CREAT for Posix.2
-compatibility
-
-fixed up the here document reading code so that it will remove backslash-
-quoted newlines if the document delimiter is not quoted
-
-fixed up the unwind_protect_var code so that the same strategy is used
-for both saving and restoring variables
-
-completion functions may now tell readline not to attempt filename completion
-by returning (char **) -1
-
-improved the error message printed by get_working_directory
-
-Compile for solaris if either USGr4 or __svr4__ is defined
-
-bash does not perform a getwd() on startup unless the inherited value of
-$PWD is wrong or $PWD was not in the environment
-
-fixed up the trap saving and restoring code so that savetrap=$(trap) works
-like Posix.2 says it should
-
-non-interactive shells are now much better about cleaning up dead processes
-and jobs on both job control and non job control systems
-
-fixed the code that saves and restores the dollar variables around a `.'
-script so that if the script changes the positional parameters, the old
-values are not restored
-
-fixed the tokenizer so that it will not return ASSIGNMENT_WORD while
-parsing a case statement pattern list
-
-redid the implementation of cprintf for systems without varargs
-
-fixed up the variable expansion code so that illegal variable names in ${ }
-expansion now generate errors rather than produce incorrect results
-
-fixed up some problems with default_buffered_input and the implicit redirection
-of fd 0 to /dev/null for asynchronous commands without job control
-
-new function internal_error for shell internal error messages
-
-changed the sigint signal handler in nojobs.c to do nothing when it's called,
-not even run a signal handler
-
-made the command substitution code more careful about file descriptors when
-errors occur
-
-2. New Features
-
-SIGWINCH causes bash to reset the values of $LINES and $COLUMNS for both
-readline and non-readline systems
-
-changed the code in readline that handled conditional parsing of `$if term='
-to test the terminal name given to $if against both the `long' and `short'
-(portion up to the first `-') forms of the terminal name
-
-the completion code now single-quotes a match that contains a shell word
-break character
-
-the readline code does not define USE_XON_XOFF.  This causes output to be
-swallowed when using bash over a relatively slow line (like a modem line). 
-
-there is now a bindable readline function to do only history expansion;
-bound to M-^ (M-! was already taken)
-
-ulimit now has a -u option to set and get the limit for the maximum number
-of user processes
-
-config.h.mini is a `minimal' configuration file that compiles out just about
-everything
diff --git a/CWRU/old-changelogs/CHANGES.071193 b/CWRU/old-changelogs/CHANGES.071193
deleted file mode 100644 (file)
index 6d24c8f..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-This file details the changes between the previous release of CWRU bash
-(5/10/93) and this release.
-
-1. Bugs Fixed
-
-commas within backquotes inside matching braces are now treated as
-quoted (e.g., echo {`echo foo:bar | sed s/:/,/`})
-
-don't create the export env unless we are running a command with
-shell_execve (in execute_disk_command), and don't create it anew
-each time a child is forked
-
-make execute_disk_command look in the temp environment for an
-assignment to PATH, and disable hash lookup for the command if
-such an assignment is present 
-
-fixed here documents so that backslash-quoted newlines are treated as
-Posix.2 specifies
-
-removed a number of extraneous unwind-protects or moved them inside
-if statements
-
-only call rl_reset_terminal in sv_term if we're actually using readline
-
-only run traps on SIGCHLD if job_control != 0
-
-fixed readline so it won't try to pass memory allocated with alloca() to
-a separate function
-
-cleaned up the readline global function and variable namespace, and split
-some more code out from readline.c into separate files
-
-added header files that declare extern functions rather than having those
-extern declarations littered throughout the code
-
-readline now allows ^T to be undone
-
-fixed readline so that characters whose screen representation is > 1
-character (e.g., \354) are erased correctly
-
-the read builtin no longer attempts to split its input into words if
-$IFS is unset
-
-changed the terminating signals that bash catches so they're reset to
-their original handlers when a child is forked
-
-the Gnu malloc library code was upgraded to Gnu libc version 1.06
-
-the Gnu termcap library code was upgraded to Gnu termcap version 1.02
-
-the man page was updated to cover the bind -m option
-
-2. New Features
-
-Bash now notices if it's running setuid or setgid and disables $ENV
-processing and importing shell functions from the environment
-
-New flag: -p/-o privileged, set if the shell is running setuid or setgid.
-Turning this off causes the effective uid and gid to be set to the
-real uid and gid
-
-New machine descriptions for the Intel Paragon, Symmetric 375, NeXT 486,
-and HP running 4.4 BSD
diff --git a/CWRU/old-changelogs/CHANGES.090393 b/CWRU/old-changelogs/CHANGES.090393
deleted file mode 100644 (file)
index f38e5f2..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-This file details the changes between the previous release of CWRU bash
-(07/11/93) and this release.
-
-1. Bugs Fixed
-
-Readline's vi-mode once again has TAB bound to completion; entering `posix
-mode' changes it to self-insert
-
-Bash now binds its special emacs-mode functions directly into
-emacs_meta_keymap so that eight-bit character handling does not interfere
-
-Some source restructuring: more extern functions are defined in header files
-and not in C source files
-
-The handling of `line number' inside functions is now more correct and
-closer to reality
-
-Some functions of `general use' were moved to general.c (vfree,
-full_pathname)
-
-A bug that caused some redirections to be applied twice was fixed in
-execute_command_internal (dispose of redirection_undo_list after copying it;
-ditto for exec_redirection_undo_list)
-
-The exit status of a command that is not found is 126, as Posix.2 specifies
-
-More speed improvements -- bash now runs as fast as the SunOS sh on
-Haertel's `shell benchmark'
-
-Instead of returning pointers to -1, bash and the readline, history, and
-glob libraries now return pointers to special `error pointers', which the
-calling code checks for in place of -1
-
-Fixed a problem with canonicalize_pathname which made it get
-confused with xxx/./yyy if yyy was `.' or `..'
-
-Fixes to make bash recognize SVR4.2 and set USGr4_2 for SVR4.2 systems
-
-Fixes to the HP/UX machine descriptions to make alloca work on HPUX_9
-and to avoid `M_MACHINE redefined' warnings
-
-Fixes to the CRAY machine description
-
-Fixes to the mailpath code to make it Posix.2-compliant -- backslash
-may now quote `%' and `?' 
-
-The namespace was further cleaned up, and more functions and variables
-were made static
-
-On systems with S_IFSOCK or S_ISSOCK defined in sys/stat.h, bash checks
-whether fd 0 is a socket to decide whether or not it's being started by
-rshd and to run the startup files
-
-Bash now gives the signal mask it inherits to its children -- previously,
-login shells cleared the signal mask
-
-cpp-Makefile and subst.c both used the `USE_GLOB_LIBRARY' define, but
-with different meanings; subst.c now uses `USE_POSIX_GLOB_LIBRARY'
-
-Fixed pattern substitution so that ${a%%$b}, where b was unset, no longer
-causes a core dump
-
-Changed the `test_exit' define in test.c to no longer use `longjmp' as
-the rhs or a comma-ized expression; this causes core dumps on some
-optimizer/machine combinations
-
-A speed hack in variables.c: if no local variables are defined for a level
-of shell context, kill_all_local_variables does not need to search the
-whole variable hash table when popping a context
-
-Fixed the `bind' builtin so that -m now changes the keymap for all of the
-subsequent operations
-
-Changed some more builtins to use internal_getopt: bind, command, export,
-readonly, declare, typeset
-
-Fixed fc to use the Posix.2 format for listing commands in the
-history list
-
-Changed bg to set `!', as Posix.2 specifies
-
-Fixed ulimit.def to compile if RLIMIT_RSS is not defined,
-as some systems seem to have it
-
-Replaced lib/malloc/alloca.c with the version from emacs 19.  The old one
-lives in alloca.c.old
-
-malloc.c now uses the ANSI C features to `stringize' macro arguments if
-__STDC__ is defined
-
-Fixes to the GNU malloc library from glibc 1.06 and Mike Haertel
-
-Fixes to readline key binding and lookup for Cray systems, which don't
-like the casting that readline does
-
-Fixes to all readline library source files to clean up the code: make sure
-`int'-returning functions use `return x;' rather than `return;', declare all
-arguments, even the `int' ones, and make some functions void.  Cleaned up
-the code formatting a little, too.
-
-The readline completer now double-quotes filenames with special word-break
-characters, so that tilde expansion still works
-
-^C now breaks out of keyboard macros
-
-If being compiled as part of the shell, readline no longer attempts to
-handle SIGTTIN, SIGTTOU, or SIGTSTP
-
-tilde_expansion_failure_hook is now a CPFunction rather than a Function,
-since that's how it's used
-
-Readline vi-mode `change case' function now skips over characters which
-are neither upper nor lower case
-
-Readline vi-mode now allows replacement to be redoable with `.'
-
-2. New Features
-
-A `strict Posix.2' mode, enabled with the -posix startup option or
-setting the POSIXLY_CORRECT variable (see CWRU/POSIX.NOTES for a 
-description of the changed behavior)
-
-`ONESHOT' is now an option in config.h
-
-cpp-Makefile assumes that fixed header files are present if gcc is being
-used
-
-The redirections attached to a function declaration are now part of that
-function, applied when the function is executed, as specified by Posix.2.
-This caused a change to parse.y that resulted in 66 shift/reduce
-conflicts(!)
-
-All of the OP= functions that Posix.2 specifies are now implemented for
-both `let' and arithmetic substitution
-
-The `command' builtin has acquired the Posix.2 `-v' and `-V' options
-(this shares code with the `type' builtin)
-
-A new `bash_builtins' man page, like the `csh_builtins' page on some
-systems
diff --git a/CWRU/old-changelogs/CWRU.chlog.v10 b/CWRU/old-changelogs/CWRU.chlog.v10
deleted file mode 100644 (file)
index 9fe2a7a..0000000
+++ /dev/null
@@ -1,3177 +0,0 @@
-
-[code made available via ftp -- first redistributable version]
-
-                                   9/3
-                                   ---
-lib/readline/history.c
-       - removed stray extern declaration of strrchr()
-       - made get_history_word_specifier a static function
-
-lib/readline/readline.c
-       - removed redundant declaration of rl_visible_stats
-
-execute_cmd.c
-       - make sure that the subshell forked to execute ( xxx yyy ) &
-         sets original_pgrp to -1 so that ( exec xxx yyy ) & does not
-         make the exec builtin restore the original process group
-
-                                   9/4
-                                   ---
-
-builtins/read.def
-       - free `t' *only if* it was assigned the value from
-         string_list_dollar_star when more words are read than variables
-         supplied
-
-variables.c
-       - moved some external function declarations to file scope
-
-test.c
-       - changed the unary_advance and advance macros to use the
-         do { ... } while (0) idiom rather than the comma operator
-
-                                   9/5
-                                   ---
-builtins/getopts.def
-       - if __GNU_LIBRARY__ is defined, change getopt_set_posix_option_order
-         to a macro, because getopt.c will not be compiled in
-
-                                   9/7
-                                   ---
-subst.c
-       - support $POSIX_PEDANTIC as a synonym for $POSIXLY_CORRRECT
-
-builtins/set.def
-       - added support for `set -o posix'
-       - changed list_long_opts to use a define (`MINUS_O_FORMAT') for
-         the format argument to printf
-
-bashline.c, execute_cmd.c, jobs.c, nojobs.c, print_cmd.c, subst.c, test.c,
-variables.c
-       - moved extern declarations from function scope to file scope, or
-         removed extern function declarations already appearing in bash
-         header files
-
-bashline.c
-       - include alias.h if ALIAS defined
-
-lib/readline/history.h
-       - added extern declaration for history_tokenize
-
-shell.c
-       - changed run_startup_files to use the global value of
-         posixly_correct instead of the posix_env argument, which was
-         eliminated
-
-lib/readline/readline.c
-       - changed alphabetic() so we're not casting the return value
-         from strchr() to an int
-
-                                   9/8
-                                   ---
-builtins/ulimit.def
-       - disable the getrlimit stuff if GETRLIMIT_MISSING is defined
-
-machines.h
-       - define GETRLIMIT_MISSING for the Sequent Symmetry
-       - change the M_OS define to `Dynix_ptx' for the Sequent Symmetry
-       - take HAVE_ALLOCA out of the Symmetry definition
-       - removed extra HAVE_ALLOCA define from linux machine description
-
-cpp-Makefile
-       - add $OSTYPE to HOSTTYPE_DECL, defining it as ${OS_NAME}
-
-variables.c
-       - make a variable $OSTYPE analogous to $HOSTTYPE, set from the
-         OSTYPE define from cpp-Makefile
-
-documentation/bash.1
-       - added description of $OSTYPE
-
-parse.y
-       - changed report_syntax_error so that syntax errors set $? to 2
-         like sh and ksh do
-
-lib/readline/funmap.c
-       - added bindings for the non-incremental `search again' functions
-         like those that vi uses
-
-expr.c, general.c, builtins/trap.def, builtins/common.c
-       - removed some extraneous extern function declarations
-
-                                   9/9
-                                   ---
-jobs.h
-       - added some more extern function declarations exported by jobs.c
-
-parse.y, bashline.c, shell.c, builtins/common.c
-       - removed some extraneous extern function declarations
-
-builtins/common.h
-       - fixed the extern declaration of parse_and_execute_cleanup
-
-lib/readline/readline.h
-       - added more extern function declarations for functions in bind.c
-         and complete.c
-       - include tilde.h instead of redeclaring the tilde variables and
-         functions
-
-parse.y
-       - made with_input_from_stream and with_input_from_stdin void
-         functions
-       - made the yy_*_get and yy_*_unget functions static
-
-shell.c
-       - made all the initialize functions static void
-
-trap.h
-       - added extern declarations for the rest of the functions defined
-         in trap.c
-
-trap.c
-       - made initialize_traps a void function, since it has no return
-         value
-
-externs.h
-       - new file, with function declarations not mentioned in other header
-         files.  Included by shell.h.
-
-cpp-Makefile, builtins/Makefile
-       - updated the dependencies to include new header files
-
-bashline.c, execute_cmd.c, jobs.c, general.c, mailcheck.c, make_cmd.c,
-nojobs.c, parse.y, print_cmd.c, shell.c, subst.c, test.c, trap.c,
-variables.c, builtins/common.c, builtins/bind.def, builtins/declare.def,
-builtins/exec.def, builtins/hash.def, builtins/let.def, builtins/source.def,
-builtins/trap.def, builtins/type.def, error.c
-       - removed extern function declarations already in externs.h
-
-lib/tilde/tilde.h, jobs.h
-       - protect against multiple inclusion with #ifdef __XXX_H__
-
-jobs.h
-       - added extern declaration of job_control
-
-general.c
-       - include <tilde/tilde.h> and remove all of the extern declarations
-         for the tilde variables
-
-lib/readline/history.h
-       - added extern declarations for variables exported by history.c
-
-execute_cmd.c
-       - don't bother trying to free the string passed to make_child in
-         the child if the command is not found
-
-bashhist.c, bashhist.h
-       - new files with bash interface to the history library.  Moved code
-         from parse.y, shell.c, subst.c to here.
-
-parse.y, bashline.c, shell.c, subst.c, variables.c
-       - include bashhist.h
-
-error.c, bashhist.c, bracecomp.c
-       - added copyright comment
-
-machines.h
-       - changed hpux_8 and hpux_9 entries to #undef USE_GNU_MALLOC
-         because they have the same YP bug as SunOS
-
-                                  9/10
-                                  ----
-print_cmd.c
-       - fixed the printing of functions declared within functions by
-         making print_function_def and named_function_string responsible
-         for printing the open and close braces and printing the `inside'
-         command rather than overloading print_group_command
-
-builtins/fc.def, builtins/history.def
-       - fixed up to use bashhist.h and removed extra declarations of
-         history stuff
-
-nojobs.c
-       - restore the top-level signal mask on Posix.1 systems after
-         forking in make_child
-       - make all children set the job control signals to SIG_DFL in
-         make_child
-
-                                  9/12
-                                  ----
-documentation/texi2roff-2.0.shar
-       - removed from the source tree
-
-                                  9/13
-                                  ----
-lib/doc-support
-       - new directory for building texindex
-
-lib/doc-support/texindex.c
-       - upgraded to version 1.45 from the texinfo-3.1 distribution
-
-documentation/Makefile
-       - fixed so that features.dvi would build correctly
-
-variables.c, subst.c, braces.c, flags.c, jobs.c, mailcheck.c, parse.y,
-builtins/cd.def, builtins/common.c, lib/readline/history.c,
-lib/readline/isearch.c, lib/readline/readline.c
-       - removed instances of `index' being used as a variable or
-         structure member
-
-cpp-Makefile
-       - pass HAVE_LIMITS_H through to the rest of the build in
-         SYSTEM_FLAGS and LIBRARY_CFLAGS
-
-maxpath.h
-       - removed inclusion of `sysdefs.h', since the only reason it was
-         included was to pick up HAVE_LIMITS_H
-
-                                  9/14
-                                  ----
-bashhist.h
-       - add extern declaration of history_expansion_inhibited, dependent
-         on BANG_HISTORY
-
-execute_cmd.c, builtins/common.c, subst.c, variables.c, parse.y, jobs.c,
-error.c, bashline.c
-       - moved all extern variable declarations to beginning of file,
-         giving them file scope
-
-execute_cmd.c
-       - changed the code so that /dev/null is used as fd 0 for async
-         jobs if the shell itself is not interactive (!interactive_shell)
-         rather than currently interactive (!interactive)
-
-builtins/break.def, builtins/cd.def, builtins/declare.def
-builtins/exit.def, builtins/fc.def, builtins/fg_bg.def builtins/hash.def,
-builtins/kill.def builtins/read.def, builtins/return.def,
-builtins/setattr.def builtins/source.def, builtins/type.def,
-builtins/wait.def
-       - moved all extern variable declarations to beginning of file,
-         giving them file scope
-
-                                  9/15
-                                  ----
-support/mksysdefs
-       - change the test to set SCOREL so that it handles SCO v4.2 and
-         above (everything above and including 4.0)
-
-machines.h
-       - changed M_OS define of `Solaris' to `SunOS5'; added -DSolaris to
-         SYSDEP_CFLAGS for Solaris 2 systems
-
-                                  9/16
-                                  ----
-print_cmd.c
-       - make sure cprintf() null-terminates the_printed_command correctly
-
-test.c
-       - changed the last two stray stat() calls to test_stat()
-       - made test_stat handle emulation of /dev/fd for systems that
-         don't have it: /dev/fd/x returns the result of fstat(x, finfo)
-
-documentation/bash.1
-       - added -b to the usage line for the `set' builtin
-       - added description of `set -o posix'
-       - added -u, -v to the usage line for the `ulimit' builtin
-       - added text describing key bindings in ~/.inputrc to the
-         READLINE section
-
-documentation/texinfo.tex
-       - upgraded to the latest version from the texinfo-3.1 distribution
-
-documentation/features.texi, lib/readline/doc/rluser.texinfo, 
-lib/readline/doc/hsuser.texinfo
-       - a major overhaul and expansion
-
-                                  9/17
-                                  ----
-bashline.c
-       - set rl_vi_comment_begin to "#" when in Posix.2 mode
-
-lib/readline/vi_mode.c
-       - set vi mode comment begin character string to "#" by default
-
-                                  9/18
-                                  ----
-lib/readline/bind.c
-       - added `set keymap' command to the init file variable setting code
-
-documentation/bash.1, documentation/features.texi
-       - added description of `set keymap' command
-
-lib/readline/doc/rluser.texinfo
-       - completed description of init file and keybinding syntax
-
-                                  9/20
-                                  ----
-variables.c
-       - if POSIXLY_CORRECT or POSIX_PEDANTIC are in the initial shell
-         environment, enter `Posix.2 mode'
-
-machines.h
-       - define SCO REQUIRED_LIBRARIES as `-lc_s -lc -lPW' to pick up
-         the functions in libc and libPW from libc (e.g. rename)
-
-
-                                  9/21
-                                  ----
-execute_cmd.c
-       - fixed X_BIT macro to protect its argument with parens in the
-         macro body
-
-maxpath.h
-       - include sys/param.h on Dynix machines if MAXPATHLEN is not
-         defined after including limits.h
-
-general.c
-       - moved the inclusion of <signal.h> on Posix.1 systems up with the
-         rest of the includes
-
-shell.c, lib/readline/complete.c, lib/tilde/tilde.c
-       - don't extern declare getpwuid on Dynix machines
-
-lib/readline/history.c
-       - make sure strlen() is cast to int whenever used in a comparison
-
-                                  9/23
-                                  ----
-lib/readline/readline.c
-       - changed rl_call_last_kbd_macro to disallow recursive macro
-         execution
-
-                                  9/26
-                                  ----
-bashline.c
-       - free rl_vi_comment_begin before assigning to it; make sure to
-         savestring() what we assign to it
-
-                                  9/28
-                                  ----
-lib/readline/search.c
-       - in noninc_search, make the ^W and ^U bindings closer to what
-         Posix.2 specifies.  (The ^W binding still uses unix_word_rubout,
-         which uses whitespace as the word boundary.  This is what
-         ksh-88 does, too.  Posix.2 says to use punctuation characters
-         as word boundaries also.)
-
-lib/readline/vi_mode.c
-       - fixed a bug in rl_vi_delete_to which caused c[wW] to delete one
-         extra character when there were multiple spaces between words.
-         Made the same change to rl_vi_change_to() and rl_vi_yank_to().
-
-lib/readline/complete.c
-       - fixed quoted substring completion so that `\' can quote the
-         quote character
-       - fixed the quoted string completion mechanism by doing the
-         following:
-               o quoted word break characters do not break words for the
-                 completer, so `"abcde"/xhy' no longer sends `/xhy' to
-                 the rest of the completion code
-               o quotes are stripped after the application-specific
-                 completion function is attempted if filename completion
-                 is about to be performed.  If needed, they are added
-                 back later.  This has the benefit of removing unneeded
-                 quotes.
-
-                                  9/29
-                                  ----
-siglist.h
-       - ICL DRS6000s need sys_siglist to be defined as _sys_siglist
-
-machines.h
-       - take the define of sys_siglist out of the DRS6000 entry
-       - added summary of available definitions for SYSDEP_CFLAGS
-       - added new SYSDEP_CFLAGS variable: HAVE_GETPW_DECLS to isc386, sgi,
-         Linux, Dynix descriptions
-       - changed isc386 description: added ISC_SYSDEPS to make the
-         SYSDEP_CFLAGS lines a little cleaner
-
-shell.c, lib/tilde/tilde.c, lib/readline/complete.c
-       - now uses HAVE_GETPW_DECLS define
-
-lib/tilde/tilde.c
-       - removed references to getpwent(), since it's not called
-       - add extern declaration for getpwnam()
-
-lib/readline/complete.c
-       - add a __STDC__ definition for getpwnam() for isc386 machines
-
-cpp-Makefile
-       - updated the dependencies: bashhist.h, bashansi.h, dependencies
-         on the library include files
-
-                                  9/30
-                                  ----
-mailcheck.c
-       - cleaned up the name space by making functions not used by other
-         files static
-       - took out redundant test in check_mail after the goto next_mail_file
-
-variables.c
-       - cleaned up the code a bit by removing unnecessary { ... } pairs
-         enclosing some code blocks
-       - check for $IGNOREEOF at startup, call sv_ignoreeof if imported
-
-parse.y
-       - new variable `ignoreeof', non-zero if we are ignoring EOF, used
-         in handle_eof_input_unit -- keeps us from looking up $IGNOREEOF
-         and $ignoreeof on every EOF character
-
-subst.c
-       - sv_ignoreeof now sets or clears `ignoreeof'
-
-flags.h
-       - changed flags_alist `name' member to be a char, since we only
-         ever use one character
-       - added FLAG_UNKNOWN to be returned by find_flag, since (int *)-1
-         is not portable, and (int *)0 is just as good a value
-
-flags.c
-       - changed find_flag, change_flag_char, change_flag, to take a
-         char as a parameter rather than a char * because we only use
-         one char and this is faster
-
-builtins/set.def
-       - changed calls to find_flag to pass a char instead of a char *
-
-shell.c, jobs.c, builtins/set.def
-       - changed instances of change_flag_char to change_flag, since the
-         two are now equivalent
-
-cpp-Makefile
-       - added BUILTIN_OBJS, made BUILTINS_LIB depend on them
-       - added dependencies for builtin objects on builtin .def files
-       - otherwise tightened up the dependencies
-
-                                  10/1
-                                  ----
-support/mksysdefs
-       - handle SGI Irix 5.x by making SYSDEF="Irix5"
-
-parse.y
-       - made init_yy_io a void function
-
-input.h
-       - moved extern function declarations for parse.y and input.c to
-         this file from externs.h
-
-shell.c
-       - include input.h unconditionally, now that it has extern function
-         declarations
-       - check for $POSIX_PEDANTIC at shell startup, set posixly_correct
-         if found
-
-make_cmd.c
-       - include input.h for the extern function declarations
-
-execute_cmd.h
-       - new file, with extern declarations from execute_cmd.c
-
-subst.c, builtins/type.def, variables.h, builtins/exec.def, builtins/hash.def,
-shell.c, buitlins/common.c, execute_cmd.c, mailcheck.c
-       - include execute_cmd.h
-
-cpp-Makefile, builtins/Makefile
-       - updated the dependencies as a result of the new and changed
-         include files
-
-execute_cmd.h, externs.h, input.h
-       - changed to use the __P(()) method of using prototypes for extern
-         functions
-
-nojobs.c
-       - include command.h
-
-                                  10/5
-                                  ----
-bashline.c
-       - make sure test_for_directory frees the filename if stat(2)
-         fails
-
-lib/readline/vi_mode.c
-       - fixed the `c' command when used with the following motion
-         commands: `^', `0', `%', `b', `B'.  The cursor was being
-         moved one position too far, resulting in too much erasure
-
-parse.y
-       - changed redirection_needing_here_document into a stack of
-         such redirections (redir_stack), indexed by need_here_doc,
-         to handle command lines with >1 redirection, e.g.
-               cat <<a; cat <<b
-       - new function gather_here_documents to run the redirection stack
-
-shell.c
-       - don't import redirection_needing_here_doc; call
-         gather_here_documents() instead
-
-input.h
-       - extern declaration for gather_here_documents()
-
-machines.h
-       - add OPENDIR_NOT_ROBUST to the SYSDEP_CFLAGS for SunOS 5
-
-                                  10/6
-                                  ----
-subst.c
-       - removed the unused `preserve_backslashes' and Q_KEEP_BACKSLASH
-         code in expand_word_internal
-       - fixed memory leak: free `istring' before longjmping out of a
-         bad substitution
-       - fixed memory leak: free `temp' at the bad_substitution label
-       - fixed memory leak: free `value' at the bad_substitution label
-       - removed all calls to longjmp from expand_word_internal: it now
-         returns a pointer to expand_word_error or expand_word_fatal,
-         and the caller is responsible for cleaning up locally allocated
-         resources and calling longjmp with the appropriate parameter.
-         BY CONVENTION: when one of those distinguished values is returned,
-         the `string' variable has already been freed, so the caller must
-         set it to null or otherwise not free it
-       - changed an fprintf (stderr, ...) to report_error in
-         parameter_brace_expand_error
-
-dispose_cmd.c
-       - check for word->word being non-null in dispose_word before trying
-         to free it
-
-                                  10/8
-                                  ----
-variables.c
-       - made new_shell_variable static
-       - made set_var_read_only, set_func_read_only, set_var_auto_export,
-         set_func_auto_export, sort_char_array, maybe_make_export_env,
-         put_command_name_into_env void functions
-
-variables.h
-       - added declarations for all the missing extern functions
-
-builtins/hash.def
-       - include posixstat.h for definition of struct stat to use in
-         function prototype declarations
-
-expr.c                                 
-       - renamed local function `assignment' to `expassign' to avoid
-         clashing with the global `assignment' defined in variables.c
-
-builtins/source.def
-       - include `execute_cmd.h' to pick up extern function declarations
-
-trap.h
-       - protected against multiple inclusion with __TRAP_H__ define
-       - added prototypes with __P
-
-                                  10/11
-                                  -----
-support/mksysdefs
-       - check in /usr/include/ansi and /usr/include/bsd for NeXT 3.x
-         machines
-
-lib/readline/vi_mode.c
-       - include rldefs.h
-
-                                  10/12
-                                  -----
-test.c
-       - changed the `-x' test to call access(2) when AFS is defined,
-         since `stat' doesn't work with AFS
-
-builtins/cd.def
-       - added code to dirs_builtin to implement dirs -n and dirs +n
-
-documentation/bash.1, documentation/features.texi
-       - updated description of `dirs' builtin
-
-                                  10/14
-                                  -----
-lib/readline/bind.c
-       - new function _rl_bind_if_unbound, which binds a key sequence to a
-         readline function if that key sequence is unbound
-
-lib/readline/readline.c
-       - use _rl_bind_if_unbound to try to bind the arrow keys in
-         init_terminal_io
-
-
-                                 10/15
-                                 ----- 
-
-lib/readline/display.c
-       - laid the groundwork for expanding special characters in
-         readline prompt strings: new function expand_prompt
-       - rl_redisplay now has static local prompt variables:
-               local_prompt: expanded prompt string after last newline
-               local_prompt_prefix: expanded prompt string before last newline
-               visible_length: number of visible chars in local_prompt 
-               prefix_length: number of visible chars in local_prompt_prefix
-         changed when rl_display_prompt changes
-
-                                  10/18
-                                  -----
-lib/readline/display.c
-       - new function: rl_expand_prompt, expands the prompt and sets the
-         local display variables to the right values for redisplay.
-       - changed rl_redisplay to use the values computed by rl_expand_prompt
-         if rl_display_prompt == rl_prompt and the old expansion code if
-         otherwise (for instance, if rl_display_prompt is set by rl_message)
-
-lib/readline/readline.c
-       - new function: rl_get_termcap to retrieve the value of any termcap
-         attribute that readline retrieves
-       - made readline_internal static, added appropriate declarations
-       - new global library variable: rl_visible_prompt_length
-       - added call to rl_expand_prompt in readline() before call to
-         rl_initialize
-
-lib/readline/search.c
-       - use rl_visible_prompt_length instead of strlen(rl_prompt) in
-         noninc_search ()
-
-                                  10/19
-                                  -----
-execute_cmd.c
-       - in execute_command_internal, mark an async job with a forced
-         subshell `( xxx ) &' as no longer an interactive shell, no
-         matter whether or not the original shell was interactive.  This
-         allows jobs to be reaped without notification and fixes a mem
-         `leak' (not really a leak, but the shell keeps increasing the
-         size of the jobs table)
-
-                                  10/21
-                                  -----
-machines.h
-       - updated the NEC EWS description with hints from Jim Blandy
-
-                                  10/23
-                                  -----
-
-lib/readline/display.c
-       - changed expand_prompt so that it understands `escape' characters
-         to mark the beginning and end of a sequence of non-visible
-         characters, and takes these into account when returning the
-         length of the prompt string
-
-lib/readline/readline.h
-       - new defines: RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE
-
-                                  10/24
-                                  -----
-
-parse.y
-       - removed check for $NO_PROMPT_VARS from decode_prompt_string()
-
-documentation/bash.1
-       - removed reference to $NO_PROMPT_VARS
-
-                                  10/25
-                                  -----
-machines.h
-       - add -lc_s to the AIX/PS2 REQUIRED_LIBRARIES definition
-
-lib/readline/readline.c
-       - removed the extra space that rl_yank_nth_arg adds before the
-         yanked string
-
-                                  10/26
-                                  -----
-trap.c
-       - set_sigint_handler now sets the SIGINT handler to sigint_sighandler
-         only if `interactive' is set, rather than interactive_shell.  This
-         fixes the `". x", then sigint' bug reported by Vasco Pedro.
-
-general.c
-       - removed `register' from variable declarations in function prologues
-       - some functions now take slightly different arguments:
-               delete_element takes a `char *' as the third argument
-               find_name_in_list takes a `char **' as the second argument
-
-general.h
-       - changed definition of REVERSE_LIST to cast the argument of the
-         call to reverse_list()
-       - added prototypes for all extern functions defined in general.c
-       - definition of BCOPY for use in general.c and elsewhere
-
-shell.c
-       - changed some calls to reverse_list to REVERSE_LIST
-
-shell.h, make_cmd.c, unwind_prot.c, input.c, builtins.h, error.c
-       - include command.h before general.h for declaration of WORD_LIST
-
-execute_cmd.c, expr.c, general.c, input.c, shell.c, unwind_prot.c, parse.y
-       - changed calls to bcopy to call xbcopy instead, and cast the
-         first two arguments to char *
-
-copy_cmd.c
-       - changed calls to bcopy to call BCOPY instead
-
-machines.h
-       - new machine definition for IBM AIX/ESA (OSF/1) from Sergio
-         Gelato
-
-support/mksysdefs
-       - If `uname -m' returns `ESA', the machine is an IBM ESA
-
-lib/posixheaders/memalloc.h
-       - new file, to unify the code to include <alloca.h> if necessary
-         and declare alloca()
-
-config.h, config.h.mini, lib/readline/rldefs.h, lib/readline/history.c,
-lib/readline/isearch.c, lib/readline/search.c, lib/tilde/tilde.c
-       - changed to include "memalloc.h"
-
-builtins/getopt.c
-       - don't include #pragma alloca line on IBM ESA systems
-       - include malloc.h rather than alloca.h for AIX/ESA
-
-support/getcppsyms.c
-       - new defines to support AIX/ESA
-
-cpp-Makefile, builtins/Makefile, lib/readline/Makefile
-       - updated dependency information to include memalloc.h
-
-lib/readline/vi_keymap.c
-       - `\' in vi insertion mode should be mapped to self-insert rather
-         than quoted-insert
-
-                                  10/27
-                                  -----
-nojobs.c
-       - added variable `already_making_children', made a function
-         start_pipeline called from make_child to set it, value cleared
-         in stop_pipeline.  This is how jobs.c treats it.
-
-execute_cmd.c
-       - in the `subshell' code in execute_command_internal, we need to
-         handle a possible `return' if in a function:
-               f()
-               {
-                       echo x | ( read b ; return 1 )
-                       return 0
-               }
-         and treat it like an `exit'
-       - already_making_children is no longer a job-control only variable
-       - made the code that decides whether or not to wait for a child
-         process in the simple_command case of execute_command_internal
-         be the same for job control and non-job control shells, since
-         already_making_children has been put into nojobs.c
-
-lib/readline/display.c
-       - changed the display code to handle invisible characters in the
-         prompt and still wrap lines at the correct column.  wrap_offset
-         is the variable used to keep track of the number of invisible
-         characters in the buffer
-       - changed rl_redisplay to use `screenchars' from readline.c so we
-         don't have to compute (screenwidth * screenheight) on each
-         redisplay
-
-lib/readline/readline.c
-       - new variable `screenchars', set to the total number of characters
-         on the screen we can use (screenwidth * screenheight)
-       - changed rl_refresh_line so that it computes the line that the
-         cursor is on correctly, taking invisible characters into account
-
-                                  10/28
-                                  -----
-general.h
-       - changed declaration of vfree to xfree
-
-general.c
-       - renamed vfree to xfree, since some systems already have a vfree()
-         in libc
-
-execute_cmd.c, jobs.c, builtins/read.def, builtins/common.c
-       - changed vfree to xfree
-
-shell.c
-       - for systems that don't define USG and define ENOTSOCK, try to
-         use getpeername() in issock() to find out whether or not an
-         fd is a socket
-
-documentation/bash.1, documentation/features.texi
-       - documented the new \[ and \] prompt string escape sequences
-
-documentation/bash.1, lib/readline/doc/rluser.texinfo
-       - documented the new `show-all-if-ambiguous' readline variable
-
-lib/readline/complete.c
-       - changed rl_complete to call rl_complete_internal with `!' if
-         the variable `_rl_complete_show_all' is non-zero
-       - changed rl_complete_internal to show all matches if there is
-         more than one and what_to_do is `!'
-
-lib/readline/bind.c
-       - new variable `show-all-if-ambiguous' to control the value of
-         _rl_complete_show_all
-       - changed a call to alloca() in rl_parse_and_bind to a
-         malloc/free pair (`seq' variable), since some systems do not
-         allow alloca'd memory to be passed to a function
-       - did the same alloca -> xmalloc/free in rl_generic_bind
-         (`keys' variable)
-
-                                  10/29
-                                  -----
-dispose_cmd.h, make_cmd.h, command.h
-       - added prototypes for the extern function declarations
-
-variables.c
-       - BSD/386 needs getenv to have a `const char *' argument
-
-make_cmd.c
-       - changed make_until_or_while to a static function
-
-command.h
-       - removed extern declarations for functions in make_cmd.c; those
-         are in make_cmd.h
-
-                                  11/1
-                                  ----
-input.c
-       - make sure that sync_buffered_stream returns a value
-
-test.c
-       - make sure that binary_operator returns a value
-
-                                  11/2
-                                  ----
-cpp-Makefile
-       - added a definition of GCC_LINT_FLAGS and GCC_LINT_CFLAGS to
-         generate lint-like warnings from gcc
-
-siglist.h
-       - cast references to sys_siglist[] in the `strsignal' macro
-         for the benefit of Linux
-
-jobs.c, nojobs.c
-       - changed all absolute references to sys_siglist to call the
-         strsignal macro instead
-
-lib/readline/{readline.c,display.c,signals.c}
-       - _rl_output_character_function is an int
-
-lib/readline/rltty.c
-       - outchar should return an int
-
-general.c
-       - use %ld to printf longs
-
-builtins/trap.def
-       - reordered code and eliminated some brace groups
-
-builtins/ulimit.def
-       - open_files() should return a long
-
-shell.h
-       - include <varargs.h> if HAVE_VARARGS_H is defined, not simply if
-         HAVE_VFPRINTF is defined
-
-parse.y, execute_cmd.c, subst.c, trap.c, jobs.c
-       - make sure that all function parameters are declared explicitly
-         and not defaulted to int
-
-builtins/fg_bg.def
-       - fixed a bug where last_asynchronous_pid could be set to a random
-         value if an unknown job or a non-job-control job was selected
-
-test.c
-       - added a missing `%s' to a call to test_syntax_error
-
-cpp-Makefile
-       - renamed `endian.h' to `bash-endian.h'; it seems that linux and
-         gnu libc use it in /usr/include.  What a pain in the ass.
-
-                                  11/4
-                                  ----
-machines.h
-       - add `#define HAVE_VARARGS_H' to the Linux machine description;
-         the auto-configuration process is unable to find it in the gcc
-         private include directories
-
-                                  11/5
-                                  ----
-cpp-Makefile
-       - COMPRESS_EXT should be `.gz'
-
-general.h
-       - have the BCOPY define for USG machines use `memmove' rather than
-         `memcpy', since that handles overlapping objects correctly
-
-lib/readline/display.c
-       - fixed the line updating code that checked whether a new line was
-         shorter or had fewer invisible characters that the visible line,
-         and called clear_to_eol with the right value and only in the
-         right cases
-
-machines.h
-       - added separate machine descriptions for NetBSD and FreeBSD
-
-builtins/command.def
-       - don't try to call confstr() on NetBSD
-
-                                  11/6
-                                  ----
-machines.h
-       - define HAVE_BCOPY for sgi
-       - define HAVE_GETHOSTNAME for Linux and HPUX machines later than
-         hpux 6.2
-
-general.h
-       - remove the `if defined (sgi) from the clause that defines BCOPY
-
-general.c
-       - use new HAVE_BCOPY and HAVE_GETHOSTNAME defines instead of the
-         OS-specific symbols used before
-
-                                  11/8
-                                  ----
-machines.h
-       - for i386 machines running aix/ps2, use USE_TERMCAP_EMULATION,
-         since the terminfo database is more up-to-date than termcap
-
-lib/readline/complete.c
-       - make sure that X_OK is defined for the VISIBLE_STATS code
-
-config.h, builtins/echo.def
-       - added a DEFAULT_ECHO_TO_USG option for the echo builtin
-
-lib/readline/rldefs.h
-       - Xenix 2.2 systems, while mostly USGr3, do not have `sighold'
-         and related functions
-
-lib/readline/isearch.c
-       - added a variable `prev_line_found' to keep the incremental
-         searches from finding the same line two or more times in a
-         row
-
-support/getcppsyms.c
-       - recognize `_M_XENIX' and `mc68k32' symbols from cpp
-
-tests/run-dollar-at-star-test
-       - use `../bash' to point at the bash executable rather than
-         `../../sun4/bash'
-
-general.h
-       - some systems have a `strerror' define, so we need to protect
-         the extern function declaration
-
-trap.h
-       - use SIG_DFL rather than NSIG as the test of whether or not to
-         include <signal.h>, since Posix.1 does not require NSIG
-
-                                  11/9
-                                  ----
-subst.c
-       - new function get_word_from_string to slice a field off the front
-         of a string and skip trailing separators according to $IFS
-
-builtins/read.def
-       - changed read_builtin to use get_word_from_string to `incrementally'
-         do word splitting on the line read so that if fewer variable names
-         are given than words read, the separators in the original line are
-         preserved.  This makes `read' Posix.2 compliant.
-
-                                  11/10
-                                  -----
-cpp-Makefile
-       - add a sentinel file `parser-built' for y.tab.c and y.tab.h to
-         depend on, since there's no rule for telling make how to build
-         y.tab.h
-
-shell.c
-       - removed the #ifdef AUX code that sets up a 4.2 compatible
-         environment in favor of using the -ZP option to cc to create
-         a Posix executable (AUX 3.0)
-
-jobs.c
-       - changed sigwinch_sighandler so that it saves the window size
-         struct with the new values in shell_tty_info.c_winsize on AIX PS/2
-         Since readline calls the old sigwinch handler, this code should
-         be called no matter when the signal is received
-
-support/mksysdefs
-       - add code to define AIX_13 on AIX PS/2 version 1.3 machines
-
-machines.h
-       - there are different SYSDEP_CFLAGS and REQUIRED_LIBRARIES for
-         AIX PS/2 1.2 and 1.3, so use the AIX_13 define to differentiate
-
-                                  11/11
-                                  -----
-execute_cmd.c
-       - speedups and fixes for here document processing in
-         do_redirection_internal: don't do string processing we can
-         avoid, use stdio to help with write buffering if we're
-         expanding the document, close some file descriptor leaks
-
-make_cmd.c
-       - speed up gathering here documents: avoid expensive calls to
-         strncmp when possible, avoid a stupid strcpy when stripping
-         leading tabs, use BCOPY instead of strcpy
-
-print_cmd.c
-       - made varargs and non-varargs versions of cprintf() as similar
-         as possible
-       - redid the_printed_command_resize() to be a little smarter about
-         allocating memory
-
-subst.c
-       - sped up string_list_internal by allocating all the necessary
-         space before copying rather than using xrealloc, using BCOPY
-         and an `end ptr' instead of strcat, trying not to call strlen
-         to get the separator length
-       - sped up sub_append_string by using BCOPY instead of strcat,
-         being smarter about memory allocation, and cutting down calls
-         to strcpy
-       - sped up expand_string_internal by not calling the
-         make_word/dispose_word pair, but by filling in a local
-         WORD_DESC, short-circuiting if the string is null or empty
-       - don't bother trying to split words in expand_string_leave_quoted
-         if expand_string_internal returns a null list
-       - ditto for dequoting in expand_string_unsplit
-
-lib/readline/vi_mode.c
-       - removed `w' and `W' from the list of characters that do not
-         require the point to be moved after a call to rl_vi_domove
-         in rl_vi_delete_to (`d') and rl_vi_yank_to (`y').  Only the
-         `c' command (rl_vi_change_to) requires this behavior
-
-                                  11/12
-                                  -----
-subst.c
-       - make sure all places which call expand_word_internal are
-         prepared to deal with error returns (expand_word_error
-         and expand_word_fatal) by adding a convenience function
-         call_expand_word_internal that performs the call and deals
-         with the possible error returns.  This keeps the shell
-         from dumping core on some errors
-
-lib/readline/vi_mode.c
-       - make sure <sys/types.h> is included before rldefs.h
-
-parse.y
-       - changed read_a_line to use and re-use a static line buffer
-
-make_cmd.c
-       - no longer need to free full_line, since read_a_line (called
-         from read_secondary_line), does not allocate a new one on
-         each call
-
-builtins/psize.c, alias.c
-       - need to include command.h before general.h
-
-                                  11/15
-                                  -----
-documentation/features.texi, lib/readline/doc/{hsuser,rluser}.texi
-       - fixed some spelling errors and typos
-
-endian.c
-       - include <sys/types.h> for size_t
-
-Makefile.inc
-       - new file, included in cpp-Makefile, providing biolerplate Gnu
-         make definitions
-
-cpp-Makefile
-       - include Makefile.inc
-       - added `distclean', `realclean' targets as per Gnu coding
-         standards
-
-                                  11/17
-                                  -----
-cpp-Makefile
-       - `make install' now installs the documentation in $(mandir) and
-         $(infodir)
-       - `make documentation' now passes $(MFLAGS) to the sub-make
-
-documentation/Makefile
-       - now has an `install' target
-
-config.h
-       - RESTRICTED_SHELL is no longer automatically defined
-
-support/mksysdefs
-       - Intel paragons (uname -m = paragon) need MAKE_ANSI set to true
-
-lib/readline/history.c
-       - create the history file with mode 0600, since it's supposed to
-         be private information
-
-builtins/fc.def
-       - make sure we put in the tab and `*' only if the line is actually
-         being listed to stdout rather than to a file for reexecution
-
-                                  11/17
-                                  -----
-machines.h
-       - fixed a typo in the hpux machine description
-       - added some SYSDEP_CFLAGS to the __BSD_4_4__ description
-
-README
-       - corrected mail address for bash-maintainers
-
-jobs.h
-       - don't declare fork (), getpid (), and getpgrp () on __BSD_4_4__
-
-                                  11/18
-                                  -----
-subst.c
-       - fix to string_list_internal to make it return a null string if
-         handed a null list
-
-parse.y
-       - fix to find_reserved_word: `word' is declared as the argument, but
-         `token' is what's used in the body
-
-lib/malloc/alloca.c
-       - Crays need to define _getb67() as CRAY_STACKSEG_END
-
-machines.h
-       - ISC machines should be using USE_TERMCAP_EMULATION
-
-                                  11/19
-                                  -----
-lib/readline/Makefile, lib/tilde/Makefile, lib/glob/Makefile, cpp-Makefile
-       - change instances of `make' in recipes to `$(MAKE) $(MFLAGS)'
-
-machines.h
-       - SunOS4 needs `OPENDIR_NOT_ROBUST'
-       - recognize a Motorola M88100 if m88k and USGr4 are defined, since
-         support/mksysdefs sets SYSDEF to USGr4 rather than M88100 for
-         the Motorola V.4
-       - changes to the ISC entry to handle ISC version 4 as well as
-         version 3 using cc and gcc to compile
-
-shell.c
-       - fixed a typo (__POSIX_VERSION -> _POSIX_VERSION)
-       - fixed a problem with reset_terminating_signals which caused the
-         wrong signal numbers to be checked for being trapped or
-         handled specially
-
-lib/readline/vi_keymap.c
-       - ^H in movement mode should by default be mapped to rl_backward
-       - delete (^?) should be unbound in the default movement mode keymap
-
-lib/readline/vi_mode.c
-       - rl_vi_last_arg should insert a space before inserting the last
-         argument, according to Posix.2
-
-getcwd.c
-       - correctly declare the second argument as a size_t if __STDC__
-         is defined
-
-                                  11/20
-                                  -----
-builtins/fc.def
-       - go back to the ad-hoc option parsing style, because the builtin
-         getopt does not handle things like `fc -l -10' correctly
-
-support/mksysdefs
-       - fixed a typo problem defining $UnicosMachine that left a comment
-         unclosed
-
-lib/malloc/alloca.c
-       - bug fix from Bill Jones for CRAY_STACKSEG_END define
-
-config.h, execute_cmd.c
-       - fix for CRAY and defining `word'
-
-machines.h
-       - Crays need to define OPENDIR_NOT_ROBUST
-
-bashtypes.h
-       - sys/types.h with handling for multiple inclusion and Cray
-         peculiarities
-
-execute_cmd.c, make_cmd.c, parse.y, subst.c
-       - include `bashtypes.h' rather than <sys/types.h>
-
-                                  11/22
-                                  -----
-machines.h
-       - add definitions of CRAY_STACKSEG_END for Cray XMP and YMP
-       - removed OLD_CRAY_DESCRIPTION stuff
-
-lib/readline/rldefs.h
-       - encapsulate CRAY peculiarities with casting pointers to ints
-         inside two defines: FUNCTION_TO_KEYMAP and KEYMAP_TO_FUNCTION
-
-lib/readline/bind.c, lib/readline/readline.c
-       - change code to use FUNCTION_TO_KEYMAP and KEYMAP_TO_FUNCTION
-
-maxpath.h
-       - include <sys/param.h> on the convex, but not on bsdi
-
-newversion.c
-       - overhauled and cleaned up
-       - added the `-patch' argument to set the patch level of the shell
-       - look in `.patchlevel' for the patch level and write it out as
-         PATCHLEVEL
-
-version.c
-       - new variable patch_level
-
-shell.c
-       - the version string is now `dist.patch(build)'
-       - new function shell_version_string returns a pointer to the
-         version string, show_shell_version changed to use it
-
-variables.c
-       - bind $BASH_VERSION to the value of shell_version_string ()
-
-                                  11/23
-                                  -----
-machines.h
-       - SCO machines now include -DPGRP_PIPE in the SYSDEP_CFLAGS define
-       - HPUX_9 needs an #undef HAVE_RESOURCE; it appears that they've
-         finally removed getrusage
-
-trap.c
-       - signal_name should return an error when passed NSIG
-
-parse.y
-       - add AND_AND and OR_OR to the list of tokens which are not followed
-         by a semicolon
-       - decrement current_command_line_count if pre_process_line returns
-         a null or empty string, otherwise the next input line may be
-         combined with the previous line inappropriately
-
-                                  11/24
-                                  -----
-machines.h
-       - the KSR/1 section should be delimited by `__ksr1__', added some
-         SYSDEP_CFLAGS to that description
-
-support/mksysdefs
-       - quote all the arguments to expr
-
-support/getcppsyms.c
-       - recognize and pass on `__ksr1__'
-
-lib/readline/bind.c
-       - new inputrc variable `output-meta', which means output meta
-         chars without converting them to M- sequences
-
-lib/readline/readline.c
-       - new variable `_rl_output_meta_chars' to hold value of
-         `output-meta', initially off
-       - slight efficiency improvement to rl_insert_text, rl_forward,
-         rl_backward
-       - changed the order of args to rl_kill_text in rl_unix_word_rubout
-         so that multiple words can be killed and yanked out in the
-         `right' order
-
-lib/readline/display.c
-       - changes to use the value of `_rl_output_meta_chars' to decide how
-         to output characters with the eighth bit set
-
-documentation/bash.1, lib/readline/doc/rluser.texinfo
-       - documented new readline `output-meta' variable
-
-lib/readline/complete.c
-       - make the replacement of typed text by a completion match be a
-         single undoable event
-
-builtins/type.def
-       - call user_command_matches specifying FS_EXEC_ONLY as the search
-         criteria.  This keeps test from finding directories
-
-bashhist.c
-       - changed maybe_save_shell_history so that if the history has
-         been stifled then the history file is replaced with the current
-         history list
-
-                                  11/29
-                                  -----
-builtins/exec.def
-       - if the shell is restricted, exec is not allowed
-
-cpp-Makefile
-       - more changes for GNU standards: VPATH, libdir, srcdir
-
-jobs.h
-       - remove machine-specific undefining of HAVE_WAIT_H
-
-machines.h
-       - cadmus systems need to #undef HAVE_WAIT_H
-       - hpux_usg and hpux_6 systems need to #undef HAVE_WAIT_H
-       - added a section for `Irix5' to the sgi section
-
-documentation/Makefile
-       - fixed up the install for bash_builtins.1 so that it sets the .so
-         path correctly
-
-shell.c
-       - renamed issock to isnetconn and made its inclusion unconditional
-       - added a check for S_ISCHR for SVR4 and SVR4.2 systems to isnetconn
-
-subst.c
-       - added code so that `history_control=ignoreboth' works
-
-documentation/bash.1, documentation/features.texi
-       - added a description of `ignoreboth' to the text describing
-         `history_control'
-
-                                  11/30
-                                  -----
-input.c
-       - don't print an error message in check_bash_input if the fnctl
-         to dup the file descriptor fails unless the file descriptor
-         is already active
-
-jobs.c, nojobs.c
-       - set bash_input.location.buffered_fd to -1 when setting
-         default_buffered_input to -1 in make_child.  This fixes
-         the `( echo hi 1>&3 ) 3>&1 >/dev/null' spurious error message
-
-shell.c, error.c
-       - removed the automated bug report code
-
-support/bashbug.c
-       - is no more
-
-Makefile
-       - added GNU boilerplate definitions
-
-support/bashbug.sh, support/mkbashbug
-       - new files for a BSD sendbug-like bug reporting shell script
-
-cpp-Makefile
-       - changes to use $(SUPPORT_SRC) instead of $(SDIR) under some
-         circumstances
-       - removed references to support/bashbug.c
-       - new target to make bashbug from $(SUPPORT_SRC)/bashbug.sh using
-         $(SUPPORT_SRC)/mkbashbug
-       - bashbug is now created by default
-       - don't build endian.aux or create bash-endian.h if HAVE_WAIT_H
-         is defined, because it will end up being unused anyway
-
-machines.h
-       - add OPENDIR_NOT_ROBUST to the isc386 description
-
-signames.c
-       - make the signal_names array 2 * NSIG long to hack around HP/UX
-         misfeature
-
-builtins/test.def
-       - fixed the help text for -t to note the the fd argument is not
-         optional
-
-                                  12/1
-                                  ----
-builtins/common.c
-       - changed parse_and_execute so that it no longer unconditionally
-         sets `interactive' to 0.  It is now the responsibility of callers
-         of parse_and_execute to set it how they want, and reset it if
-         necessary
-
-shell.c, subst.c, builtins/source.def
-       - changed the functions that call parse_and_execute to manage the
-         value of `interactive'
-
-shell.c
-       - changed maybe_execute_file so that it takes a second argument
-         saying whether or not to force the value of `interactive' to 0
-       - changed all calls to maybe_execute_file to add a second arg
-
-builtins/fc.def, builtins/exit.def
-       - changed all calls to maybe_execute_file to add the second arg
-         Now background jobs re-run with `fc -s' echo the job number
-
-externs.h
-       - changed the function prototype for maybe_execute_file
-
-                                  12/2
-                                  ----
-execute_cmd.c
-       - rewrote the auto-resume code in execute_simple_command for clarity
-       - added the `substring' value for auto_resume to cause a command that
-         matches a substring of a stopped job to restart that job
-
-documentation/bash.1, documentation/features.texi
-       - added a description of the possible values for `auto_resume' and
-         their effects on the shell's behavior
-
-machines.h
-       - added a generic desription for SVR4 running on the sparc from
-         Ian Stewartson
-
-Makefile
-       - added a command to the bash-Makefile target that will remove
-         bash-Makefile and (hopefully) stop the make if something happens
-         and bash-Makefile is created with zero length
-
-                                  12/3
-                                  ----
-machines.h
-       - add -DOPENDIR_NOT_ROBUST to the SYSDEP_CFLAGS for SCO
-       - if compiling with gcc on SCO, link with -lc_s and -lc in
-         REQUIRED_LIBRARIES
-
-                                  12/6
-                                  ----
-builtins/source.def
-       - new variable `sourcelevel' which is incremented each time `.'
-         is called and decremented before source_builtin returns
-
-variables.c
-       - find_variable should call find_variable with a second parameter
-         of 1 if `builtin_env' is non-null, so it will search it.  This
-         ensures that all builtins inside a script read with `.' with a
-         temporary environment will get the right values
-
-subst.c
-       - fix for get_word_from_string: white space should be removed from
-         the beginning of the string if $IFS is " \t\n"
-
-execute_cmd.c
-       - in `Posix.2 mode', redirections should not perform filename
-         expansion when the shell is not interactive
-
-                                  12/7
-                                  ----
-support/getcppsyms.c
-       - recognize `__i386__'
-
-lib/readline/bind.c
-       - only free and reassign `last_readline_init_file' if it has
-         changed (`filename' points to something different) in
-         rl_read_init_file
-
-builtins/ulimit.def
-       - add a `$DEPENDS_ON !MINIX' line so that this won't be built
-         under MINIX
-
-config.h
-       - Minix machines need JOB_CONTROL undefined
-
-cpp-Makefile
-       - don't define libraries with absolute pathnames; use -llibname
-         instead
-       - make sure MALLOC_LIBRARY is defined even if the Gnu malloc is
-         not being used for the benefit of `LD_HAS_NO_DASH_L'
-
-general.c
-       - use a `TIMEVAL_MISSING' define to decide whether or not to
-         try to print a struct timeval * rather than simply `USG'
-
-lib/readline/parens.c
-       - don't try to include <sys/time.h> unless FD_SET is defined
-
-lib/readline/vi_keymap.c
-       - fix incorrect cast of rl_abort in vi_movement_keymap
-
-signames.c
-       - make sure NSIG is defined
-
-siglist.c
-       - include `trap.h' to pick up definition of NSIG if it's undefined
-
-siglist.h
-       - minix uses _sys_siglist and does not need an external declaration
-         for it
-
-                                  12/8
-                                  ----
-lib/readline/readline.c
-       - add `ks' and `ke' to the termcap attributes that readline retrieves
-
-lib/readline/rltty.c
-       - new function `control_keypad' to enable and disable keypad keys.
-         Some systems need this before the arrow keys will work
-       - call control_keypad to enable and disable the keypad from the
-         terminal prep and deprep code
-
-                                  12/9
-                                  ----
-support/mksysdefs
-       - added code a la trn `Configure' to search a list of include
-         directories for each .h file of interest.  Done by defining a
-         variable containing the code fragement we want to execute and
-         calling `eval' on this string for each file
-
-lib/readline/bind.c
-       - slightly changed the filenames used by rl_read_init_file.  Now
-         the filename used is the first non-null file from this list:
-               1. the filename used for the previous call
-               2. the value of the shell variable `INPUTRC'
-               3. ~/.inputrc
-
-documentation/bash.1
-       - added descriptions of INPUTRC to the shell variables and
-         readline sections
-
-documentation/features.texi
-       - added a description of INPUTRC to the shell variables section
-
-lib/readline/doc/rluser.texi
-       - added description of the INPUTRC environment variable
-       - changed instances of ~/.inputrc to the more generic `init file'
-         or `inputrc file'
-
-lib/readline/complete.c
-       - added #defines for the possible values of `do_replace' rather
-         than relying on magic numbers
-       - if a completion that needs double quotes starts with a tilde,
-         rl_complete_internal now performs tilde expansion before
-         quoting the string, since the shell allows double quotes to
-         inhibit tilde expansion
-
-                                  12/10
-                                  -----
-lib/readline/readline.c
-       - new function to kill the whole line no matter what point is:
-         rl_kill_full_line ()
-
-lib/readline/readline.h
-       - extern declaration for rl_kill_full_line ()
-
-lib/readline/funmap.c
-       - rl_kill_full_line is available as `kill-entire-line'
-
-cpp-Makefile
-       - remove `.machine' when `make clean' run
-
-subst.c, subst.h
-       - made expand_string_leave_quoted static again
-
-                                  12/14
-                                  -----
-shell.c
-       - use HAVE_SOCKETS define to decide whether to include <sys/socket.h>
-         and call getsockname(); defined automatically for non-USG systems
-         if ENOTSOCK is defined
-
-                                  12/15
-                                  -----
-bashline.c, flags.c, flags.h, jobs.c, subst.c, builtins/common.c,
-builtins/cd.def
-       - changed `follow_symbolic_links' to `no_symbolic_links', with an
-         opposite meaning
-
-flags.c, flags.h
-       - new shell option, -P/-o physical set if no_symbolic_links is set
-       - changed a sequence of `if' statements into a switch statement in
-         change_flag
-
-documentation/bash.1, documentation/features.texi
-       - added documentation for the -P/-o physical option
-
-builtins/cd.def
-       - follow_symbolic_links is now declared in flags.c and declared
-         extern here
-
-builtins/set.def
-       - code to set and get the value of -P/-o physical
-       - fixed up the help text and short documentation string
-       - made `set -?' print a usage message
-
-subst.c
-       - made sv_nolinks set the new variable `no_symbolic_links'
-
-                                  12/17
-                                  -----
-machines.h
-       - add -DUSG to HPUX_CFLAGS
-       - hpux 9 does not need -lPW and can use the gnu malloc if gcc
-         is being used
-
-config.h
-       - remove the code that defines USG for HPUX, Xenix, and UNIXPC
-         in favor of putting it into the machines.h entry
-
-                                  12/19
-                                  -----
-flags.h
-       - added prototypes for the extern function declarations from flags.c
-
-*.h
-       - added copyrights to the include files which were missing them
-
-lib/readline/vi_mode.c
-       - rl_vi_yank_nth arg inserted the space in the wrong spot before
-         yanking the last argument
-       - removed the call to rl_vi_insertion_mode because of changes to
-         rl_yank_nth_arg
-
-lib/readline/readline.c
-       - changed rl_yank_nth_arg so that vi mode inserts a space in the
-         right spot
-       - fixed rl_yank_nth_arg so that yanking into an empty line does
-         not corrupt the buffer
-
-lib/readline/search.c
-       - fixed noninc_search so that ^H and RUBOUT call rl_rubout
-         explicitly
-
-bashline.c
-       - fix for operate_and_get_next to make ^O work on the most
-         recent line even if the history is unstifled.  From Seth
-         Robertson.  XXX - may not be right
-
-parse.y
-       - set interactive to 0 before calling parse_and_execute in
-         execute_prompt_command to stop infinite recursion through
-         this function
-
-shell.c
-       - moved the code that executes PROMPT_COMMAND to parse_command
-
-parse.y
-       - removed the code that executes PROMPT_COMMAND from read_token
-         to avoid confusing non-reentrant versions of yacc
-       - made execute_prompt_command global, not static
-
-input.h
-       - new declaration for execute_prompt_command 
-
-jobs.c
-       - made give_terminal_to return -1 if tcsetpgrp fails
-       - initialize_jobs now prints a message if job_control ends up being
-         set to 0
-
-support/mkmachtype
-       - shell script stolen from emacs 19 that attempts to output the
-         `GNU-style' machine type, e.g. sparc-sun-sunos4.1.2.  Named
-         `mkmachtype' because I envision people assigning its output to
-         a MACHTYPE variable
-
-
-                                  12/20
-                                  -----
-execute_cmd.c
-       - if a command is found in the temporary $PATH, don't add it to
-         the hash table
-
-error.c
-       - changed report_error so that the script name is echoed instead
-         of the shell name if the shell is not interactive
-
-                                  12/22
-                                  -----
-machines.h
-       - made the Sun description unconditionally #undef USE_GNU_MALLOC
-         because memory access bugs are legion in libc in SunOS 4.x and 5.x
-
-jobs.c
-       - disabled printing an error message when the tcgetattr in
-         get_tty_state() fails
-
-                                  12/27
-                                  -----
-cpp-Makefile, jobs.h
-       - renamed bash-endian.h to bash_endian.h
-
-machines.h
-       - NeXT machines need to #undef HAVE_DIRENT_H, since it requires
-         ANSI/POSIX defines that make the rest of the compilation fail
-       - SGI irix 5.x machines need -DNO_SBRK_DECL in SYSDEP_CFLAGS
-       - machine descriptions for OSF/1 running on i386 and MIPS machines
-         from Michael Meissner
-
-                                  12/28
-                                  -----
-expr.c
-       - fixed so that blank expressions evaluate to 0 rather than an
-         error ($[    ] or $((    )))
-
-lib/readline/readline.c
-       - new variable `_rl_bell_preference' replacing _rl_prefer_visible_bell
-       - changed ding() to use _rl_bell_preference
-
-lib/readline/rldefs.h
-       - definitions for NO_BELL, AUDIBLE_BELL, and VISIBLE_BELL
-
-lib/readline/bind.c
-       - changed rl_variable_bind to parse the `bell-style' variable and its
-         possible values (`none', `audible', or `visible'), keeping
-         `prefer-visible-bell' for backwards compatibility
-
-documentation/bash.1, lib/readline/doc/rluser.texinfo
-       - added descriptions of the `bell-style' and `expand-tilde'
-         readline variables
-
-general.c
-       - changed set_signal_handler for posix systems to attempt to
-         restart all interrupted system calls execept for SIGALRM
-
-trap.c
-       - changed restore_signal to use set_signal_handler() instead of
-         signal()
-       - added a new function set_signal_ignored to set the SIG_HARD_IGNORE
-         flag for a particular signal
-
-execute_cmd.c
-       - call set_signal_ignored for SIGINT and SIGQUIT in the child if
-         the command is asynchronous after calling restore_original_signals,
-         since restore_original_signals will undo work done by make_child
-         done in a new function setup_async_signals
-
-execute_cmd.h
-       - extern declaration for setup_async_signals
-
-subst.c
-       - call setup_async_signals when making the child for process
-         substitution
-
-jobs.c, nojobs.c
-       - removed code from make_child that sets SIGINT and SIGQUIT to
-         SIG_IGN, since setup_async_signals now does that
-
-shell.c
-       - let throw_to_top_level call longjmp with DISCARD if the shell
-         is an interactive shell, but not yet initialized
-
-                                  12/29
-                                  -----
-config.h
-       - define PROCESS_SUBSTITUTION if HAVE_DEV_FD is defined, even if
-         MKFIFO_MISSING is also defined
-
-execute_cmd.c
-       - close pipes created using /dev/fd for process substitution at
-         the same time as the pipes for conventional piping are closed
-
-subst.c
-       - when the /dev/fd list is initialized, clamp the total number of
-         file descriptors at 256, but make sure there is room enough to
-         store a bit for the fd passed to add_fifo_list
-
-                                  12/30
-                                  -----
-lib/readline/readline.c
-       - change a strncpy() in rl_delete_text to a for loop, since some
-         versions of strncpy can't handle overlapping arguments
-
-lib/readline/chardefs.h
-       - definition for digit_value(x)
-
-lib/readline/history.c
-       - changed calls to sscanf followed by an empty for loop that consumes
-         the digits to a for loop that computes the value as it goes along
-         in get_history_word_specifier()
-       - added `x*' and `x-' history word designators from csh
-       - added new `&' modifier to repeat previous substitution
-       - experimental implementation of `q' modifier to quote substituted
-         words by calling single_quote on the substituted string
-
-lib/readline/history.c, builtins/fc.def
-       - changed a loop using strncmp() to find one string in another for
-         substitution to test the current character against the first
-         character of the pattern before calling strncmp()
-
-documentation/bash.1, lib/readline/doc/hsuser.texinfo
-       - documented the new history word designators
-       - documented new `&' and `q' history modifiers
-
-                                   1/1
-                                   ---
-parse.y
-       - broke the code that parses `( ... )' subshells out into its
-         own grammar production
-
-lib/readline/history.c
-       - rearranged some code to get rid of gotos and make the intent
-         clearer
-       - fixed a bug in history_truncate_file that tried to write to
-         a file opened O_RDONLY
-       - changed a stat-open in history_truncate_file into an open-fstat
-         pair
-       - removed gotos in history_search_internal
-       - changed straight strncmp() calls trying to find history line
-         matches to check the first character before calling strncmp in
-         history_search_internal
-       - changed a call to stat after an open (!) to fstat on the
-         returned file descriptor
-       - cleaned up the code in get_history_event
-       - cleaned up some code in get_history_word_specifier
-       - cleaned up some code and removed extra function calls in
-         history_arg_extract
-       - changed history_arg_extract to malloc enough space for the
-         entire string at one time, instead of doing xrealloc in a
-         loop
-       - cleaned up the code in history_tokenize, removing gotos and
-         other spaghetti constructs
-       - replaced a call to sprintf with assignment statements and a call
-         to strcpy in history_expand
-
-cpp-Makefile
-       - changed the `INDEX' target to a `TAGS' target
-
-lib/readline/emacs_keymap.c
-       - added a default binding for ESC-ESC to rl_complete, like ksh emacs
-         mode editing
-
-                                   1/3
-                                   ---
-machines.h
-       - make sure ISC_POSIX is defined as nothing when using gcc on isc386
-
-parse.y
-       - made token_to_read, current_token, last_read_token,
-         token_before_that, EOF_reached, shell_input_line,
-         shell_input_line_*, token, token_buffer_size all static vars
-       - made prompt_again return immediately if the shell is not
-         currently interactive
-       - made yylex call prompt_again only if there is no token_to_read
-         and the shell is currently interactive
-
-jobs.c
-       - changed the NeXT || alliant define to use RLOGIN_PGRP_BUG
-       - use TERMIOS_LDISC define for systems with line discipline field
-         in struct termios
-
-shell.c
-       - use RLOGIN_PGRP_BUG instead of NeXT to fix machines that get
-         started without a controlling terminal
-
-machines.h
-       - added -DRLOGIN_PGRP_BUG to SYSDEP_CFLAGS for NeXT and alliant
-       - added -DTERMIOS_LDISC to SYSDEP_CFLAGS for Ultrix, Sun OS 4,
-         and aixpc
-
-support/mksysdefs
-       - look for sys/param.h, define HAVE_SYS_PARAM if found
-
-cpp-Makefile
-       - pass -DHAVE_SYS_PARAM via SYSTEM_FLAGS if it's found by mksysdefs
-
-maxpath.h
-       - include <sys/param.h> if HAVE_SYS_PARAM is defined
-
-lib/readline/history.c
-       - got rid of the get_which label in get_history_event
-       - got rid of the event_not_found label in history_expand
-       - new function hist_error, which takes care of printing history
-         expansion errors
-
-                                   1/4
-                                   ---
-lib/readline/history.c
-       - split the actual history expansion code out of history_expand into
-         history_expand_internal
-       - got rid of the do_add and add_char labels in history_expand
-       - history_expand now returns 2 if the `p' modifier was given and the
-         caller should just print the results
-       - new function `quote_breaks' to implement the `x' modifier
-
-bashhist.c
-       - if history expansion fails, make sure the error message is
-         printed in a standard way by calling internal_error
-       - print the results of history_expand and return NULL if
-         history_expand returns 2
-
-                                   1/5
-                                   ---
-lib/readline/history.c
-       - rearranged some code in the `s' and `&' cases of the switch in
-         history_expand_internal, added the GET_SUBST_PATTERN macro
-
-                                   1/6
-                                   ---
-tests/*
-       - cleaned up the directory, made a runnable regression test suite
-
-cpp-Makefile
-       - added a `tests' target that runs all of the tests with a newly-
-         built bash
-
-subst.c
-       - made process substitution work only when unquoted
-
-bashhist.c
-       - new function history_number to return the history number of a
-         command
-
-bashhist.h
-       - extern declaration for history_number
-
-parse.y
-       - changed the `!' and `\!' code in decode_prompt_string to use
-         history_number
-       - replaced calls to sprintf/savestring with calls to itos()
-
-variables.c
-       - new dynamic variable $HISTCMD is current history number (what
-         you get with \! in a prompt string)
-
-documentation/bash.1
-       - description of $HISTCMD
-
-                                   1/7
-                                   ---
-
-execute_cmd.c
-       - new variable stdin_redir, incremented for subshells if stdin has
-         been redirected, saved for children so we don't redirect /dev/null
-         to fd 0 if it has already been the subject of a redirection.  Makes
-         bash more sh-compatible, but I'm not sure it's the right thing.
-       - more changes to file_status for systems with AFS
-
-test.c
-       - changed calls to eaccess to EACCESS (not to be confused with the
-         EACCES error).  EACCESS is defined as access on AFS machines,
-         eaccess on all others
-
-siglist.h
-       - don't declare sys_siglist on NetBSD
-
-                                  1/11
-                                  ----
-lib/readline/history.c
-       - if `&' appears in the rhs of a history substitution, it is
-         replaced with the matched lhs.  A single backslash protects
-         the `&' from lhs interpolation
-       - fixed ADD_CHAR macro to properly terminate the target string
-       - changed GET_SUBST_PATTERN so that a single backslash can
-         quote the substitution delimiter
-       - changed GET_SUBST_PATTERN so that subst_lhs is not changed if
-         the lhs pattern is empty
-       - if the lhs is empty and there is no previous substitution, the
-         last string used in a !?string? search is used
-       - turned the GET_SUBST_PATTERN macro into a real function,
-         get_subst_pattern()
-       - changed get_subst_pattern() so that backslashes quoting the
-         search delimiter are removed
-       - fixed get_history_word_specifier so that x- returns x-$ without
-         the last word
-
-documentation/bash.1, lib/readline/doc/hsuser.texinfo
-       - changes for the new history substitution features
-
-                                  1/13
-                                  ----
-make_cmd.c
-       - new function fixup_async_list() which traverses a command list and
-         makes the last command asynchronous (`&').  This is to fix up a
-         problem with the yacc grammar productions
-
-parse.y
-       - call fixup_async_list if a list is followed by a bare `&' without
-         a second list
-
-builtins/fc.def
-       - fixed a bug in fc_gethnum that caused negative history
-         specifications (< 0) to be off by 1 when indexing against the
-         current history index
-
-lib/readline/funmap.c
-       - kill-entire-line -> kill-whole-line
-       - tilde-expand is now a bindable command that calls rl_tilde_expand
-       - added emacs-editing-mode as a bindable command
-       - added more bindable vi-mode readline commands: vi-redo,
-         vi-tilde-expand 
-
-lib/readline/emacs_keymap.c
-       - M-C-H is now bound to backward-kill-word
-
-lib/readline/vi_keymap.c
-       - `0' is now bound to beginning-of-line in vi-movement-mode
-
-documentation/bash.1, lib/readline/doc/rluser.texinfo
-       - added documentation for some of the new readline functions
-
-test.c
-       - added definitions for whitespace, digit, and digit_value when
-         compiling -DSTANDALONE
-
-                                  1/14
-                                  ----
-make_cmd.c, make_cmd.h, parse.y
-       - fixup_async_list -> connect_async_list
-
-parse.y
-       - have the productions for all async lists call connect_async_list,
-         even when followed by another async list
-       - don't save and restore the buffered stream in buffers[] in
-         push_stream and pop_stream if the default input fd is -1
-         (like command substitution sets it to, for instance)
-
-cpp-Makefile
-       - added $(PURIFY) the final cc line, make PURIFY=purify to build
-         a `purified' bash
-
-builtins/read.def
-       - fixed a memory leak -- `input_string' was not being freed
-
-variables.c
-       - fixed a memory leak in assign_in_env -- free value
-
-subst.c
-       - process substitution and command substitution now call make_child
-         with a null first argument -- no need to save a string for the
-         call; it's never used
-
-                                  1/17
-                                  ----
-lib/readline/{readline.h,complete.c}
-       - renamed rl_symbolic_link_hook to rl_directory_completion_hook,
-         which much more accurately reflects its purpose.  Left a define
-         of the old name there is readline.h
-
-bashline.c
-       - use rl_directory_completion_hook instead of rl_symbolic_link_hook
-       - bash_symbolic_link_hook -> bash_directory_completion_hook
-       - bash_directory_completion_hook is now an `int' returning function
-       - bash_directory_completion_hook now tries to to variable expansion
-         and command and arithmetic substitution if the directory name
-         contains `$' or ``'
-       - fixed a bug in bash_directory_completion_hook which made it
-         remove the trailing slash on a directory name
-       - bash_directory_completion returns 1 if variable expansion is
-         performed, 0 otherwise
-       - when doing bash filename-specific completion, don't do any kind
-         of directory name expansion
-       - removed ``' and `$' from the completer word break characters;
-         they're not word break chars
-
-lib/readline/complete.c
-       - changed semantics for rl_directory_completion_hook -- if a non-zero
-         value is returned, the return value is put into the expanded
-         filename, replacing the directory name that the user typed
-       - changed filename_completion_function to quote a replacement if
-         it contains `$' or ``' in addition to characters appearing in
-         rl_completer_word_break_characters (#ifdef SHELL)
-
-                                  1/18
-                                  ----
-shell.c
-       - take out different code for USG and BSD and mail checking.  The
-         shell always calls remember_mail_dates on startup.
-
-                                  1/19
-                                  ----
-execute_cmd.c
-       - changed executable_file into a simple return statement
-
-support/mksysdefs
-       - look for bison, define HAVE_BISON if found
-
-cpp-Makefile
-       - do not unconditionally define HAVE_BISON, let mksysdefs do
-         the work
-
-                                  1/20
-                                  ----
-machines.h
-       - added -DNO_SBRK_DECL to hpux_8, hpux_9, and Solaris descriptions
-
-lib/malloc/malloc.c
-       - removed the code that defines NO_SBRK_DECL for some machines
-
-cpp-Makefile
-       - removed the definitions of PPROMPT and SPROMPT and their inclusion
-         as defines in CFG_FLAGS
-       - added definitions for man3dir and man3ext and passed them to
-         make install in the documentation directory
-
-config.h
-       - PPROMPT and SPROMPT are now defined here
-
-builtins/mkbuiltins.c
-       - plugged up a number of memory leaks (~35K worth)
-
-documentation/Makefile
-       - made readline.3 and readline.ps standard targets
-       - make install now installs readline.3
-
-documentation/readline.3
-       - new manual page documenting the readline library
-
-general.c
-       - don't define TIMEVAL_MISSING on USG systems if HAVE_TIMEVAL is
-         defined
-
-                                  1/21
-                                  ----
-machines.h
-       - define HAVE_SOCKETS in HPUX_SYSDEP_CFLAGS for hpux_8 and hpux_9
-
-Makefile
-       - add a `tests' target that just runs `make -f bash-Makefile tests'
-
-general.c
-       - include config.h before any other include files so <unistd.h>
-         gets included if present
-
-                                  1/24
-                                  ----
-cpp-Makefile
-       - make `bashbug' by using sed with multiple -e options rather than
-         a separate `mkbashbug' program
-
-                                  1/25
-                                  ----
-machines.h
-       - sgi machines need HAVE_SOCKETS defined to make isnetconn() work
-
-lib/readline/isearch.c
-       - rewrote lots of rl_search_history to eliminate spaghetti and
-         increase speed
-
-lib/readline/history.c
-       - added defines for STREQ and STREQN to clean up the search code
-
-lib/readline/complete.c
-       - compare the first characters of the name and returned value from
-         getpwent when attempting username completion to avoid all those
-         calls to strncmp
-
-                                  1/26
-                                  ----
-lib/readline/readline.h
-       - move definition of VISIBLE_STATS here so all files can see it
-       - extern definitions of rl_history_search_forward() and
-         rl_history_search_backward ()
-
-lib/readline/search.c
-       - implementations of rl_history_search_forward() and
-         rl_history_search_backward (), which search through the history
-         list for lines beginning with the string of characters between
-         the beginning of the line and rl_point (history lines with a
-         common prefix)
-       - added definitions of STREQ and STREQN
-
-lib/readline/funmap.c
-       - added `history-search-forward' and `history-search-backward' as
-         bindable commands (names compatible with tcsh)
-
-lib/readline/complete.c
-       - make stat_char use lstat if S_ISLNK is defined to pick up symbolic
-         links
-       - split some common code out into auxiliary functions: printable_part
-         and print_filename
-       - expand filenames before calling stat_char if visible-stats is
-         active
-
-documentation/bash.1, documentation/readline.3, lib/readline/doc/rluser.texinfo
-       - documented new `history-search-forward' and `history-search-backward'
-         readline commands, by default unbound
-
-error.c
-       - changed get_name to get_name_for_error and made it externally
-         visible
-
-error.h
-       - extern declaration for get_name_for_error
-
-test.c
-       - call get_name_for_error in test_syntax_error if the shell is
-         not interactive
-
-                                  1/27
-                                  ----
-lib/readline/emacs_keymap.c
-       - add M-~ as a binding for rl_tilde_expand, it's more intuitive
-
-lib/readline/bind.c, lib/readline/readline.h
-       - exported rl_invoking_keyseqs_in_map as a public interface
-
-lib/readline/rldefs.h
-       - don't include memalloc.h if PRAGMA_ALLOCA is defined
-
-lib/readline/readline.c, lib/readline/isearch.c, lib/tilde/tilde.c,
-lib/readline/complete.c, lib/readline/search.c
-       - replaced all calls to alloca with xmalloc/free pairs or array
-         declarations
-
-lib/readline/history.c
-       - replaced some calls to alloca
-
-variables.c, subst.c, mailcheck.c, alias.c, parse.y, builtins/cd.def
-       - replaced all calls to alloca with xmalloc/free pairs or array
-         declarations
-
-builtins/source.def
-       - replaced call to alloca with xmalloc/free/unwind_protect
-       - replaced stat/open sequence with open/fstat
-
-                                  1/28
-                                  ----
-lib/readline/history.c
-       - print an error message for an unrecognized history modifier
-         instead of just ignoring it
-       - replaced remaining calls to alloca()
-
-execute_cmd.c
-       - added a #pragma alloca at the head of the file if AIX and
-         RISC6000 are defined and __GNUC__ is not
-
-                                  1/31
-                                  ----
-support/recho.c
-       - now a standard part of the distribution, needed for `make tests'
-
-cpp-Makefile
-       - make sure recho is built before the tests are run
-
-                                   2/1
-                                   ---
-builtins/command.def
-       - If subshell_environment is 1, we've already forked and are in
-         a subshell, so add CMD_NO_FORK to the flags of the command
-         to be executed and see if we can get away without forking
-
-                                   2/9
-                                   ---
-support/mksysdefs
-       - write the name of the maintainer to sysdefs.h surrounded by
-         double quotes
-
-cpp-Makefile
-       - removed the now-unnecessary double quotes around the MAINTAIN_DEFINE
-         variable value
-
-lib/readline/readline.h
-       - new variable rl_attempted_completion_over, set in the completion
-         attempt function to suppress the normal filename completion
-
-lib/readline/complete.c
-       - if rl_attempted_completion_over is set after the program-specific
-         completion function is called, don't do filename completion
-
-general.h
-       - new FREE and STRLEN convenience defines
-
-subst.c
-       - code cleanups, use of FREE and STRLEN
-
-                                  2/10
-                                  ----
-execute_cmd.c, parse.y, jobs.c, variables.c, test.c
-       - changed code to use FREE, STRLEN, other code cleanups
-       - removed, wherever possible, calls to strncmp and strcmp
-
-builtins/set.def
-       - changed the `unset' builtin to use internal_getopt
-
-builtins/set.def, builtins/test.def, builtins/fg_bg.def, builtins/type.def,
-builtins/enable.def, builtins/exec.def, builtins/declare.def,
-builtins/ulimit.def, builtins/cd.def, builtins/fc.def
-       - removed calls to strcmp, strncmp wherever possible, replacing
-         them with incline 
-
-builtins/common.h
-       - new define ISOPTION, to test whether a string s is setting
-         a specific option
-
-builtins/kill.def, builtins/read.def, builtins/trap.def, builtins/umask.def,
-builtins/enable.def, builtins/alias.def, builtins/hash.def
-       - changed to use ISOPTION
-
-builtins/read.def
-       - moved option processing before all of the code that sets up
-         the input stream
-
-                                  2/11
-                                  ----
-Makefile
-       - added `distclean' target to mirror one in cpp-Makefile
-
-                                  2/14
-                                  ----
-documentation/bash.1, documentation/features.texi
-       - noted that `=' was not a valid character for an alias name
-
-                                  2/17
-                                  ----
-builtins/common.c
-       - if parse_and_execute gets an interrupt during execution, make
-         sure that `interactive' is restored to the correct value (the
-         same value as `interactive_shell' before throwing control back
-         to the top level with throw_to_top_level so the shell does
-         not exit in throw_to_top_level
-
-builtins/reserved.def
-       - cleaned up the variables section, removing some and correcting
-         the descriptions
-
-                                  2/18
-                                  ----
-cpp-Makefile
-       - provide alternate defintions for build_builtins_in_dir depending
-         on whether __STDC__ is defined and > 0.  The `stdc' version uses
-         `##' to concatenate tokens
-
-machines.h
-       - new machine description for QNX 4.2 from pt@flard.ocunix.on.ca
-
-jobs.c, nojobs.c
-       - changed some calls to report_error to calls to internal_error
-
-test.c
-       - some systems may not define S_IFMT, so use an #ifdef to work around
-
-print_cmd.c
-       - combined the code for print_word_list and command_print_word_list
-         into an internal function that takes a pointer to a function to
-         use to print the words
-
-variables.c
-       - don't call savestring in bind_variable on the value if it's an
-         empty string
-
-nojobs.c
-       - changed wait_for to call waitpid with -1 for pid value on Posix
-         systems so all processes in a pipeline get reaped at the same
-         time (or at least most of them)
-
-                                  2/21
-                                  ----
-lib/readline/{complete.c,display.c,readline.c,rltty.c,signals.c}
-       - changed _GO32_ to __GO32__
-
-machines.h
-       - SunOS5 needs to add /usr/ccs/lib to the library search path
-         for the right termcap library
-
-                                  2/22
-                                  ----
-shell.c
-       - make sure that a subshell sets sourced_env to 0 after longjmp
-         so that $ENV is sourced by subshells forked to execute scripts
-         without a leading `#!' line
-
-bashhist.c, bashhist.h
-       - make maybe_add_history a global interface -- new function
-         to add a line to the history file depending on the value
-         of history_control
-
-builtins/fc.def
-       - call maybe_add_history in fc_addhist rather than add_history
-
-machines.h
-       - new entry for concurrent machines in att universe from
-         geoffl@vallista.ca.boeing.com (Geoffrey A. Lowney)
-
-                                  2/23
-                                  ----
-general.c, general.h
-       - new function string_to_long, which basically does the same
-         thing as atol(), which I don't believe is universal
-
-builtins/ulimit.def
-       - replaced a call to sscanf with calls to all_digits and
-         string_to_long
-       - non-root users can only raise a resource up to the hard limit,
-         even if they specify `unlimited', so shell_ulimit translates
-         RLIM_INFINITY into limit.rlim_max if euid != 0
-
-                                  2/25
-                                  ----
-shell.c
-       - make the default behavior of bash when invoked with -c command
-         to make the first argument after the command string $0 and the
-         rest $1...$N
-
-documentation/bash.1
-       - document the change in -c behavior
-
-                                   3/2
-                                   ---
-mailcheck.c
-       - made add_mail_file return the index in the list of mail files,
-         so an immediate call to find_mail_file need not be made and
-         we are guaranteed that the index returned is never -1
-       - added the check back in that changes the message to note that
-         *new* mail has arrived -- the test was not redundant after all
-       - fixed an off-by-one error in free_mail_files
-       - replaced an sprintf() in get_mailpaths with two calls to strcpy
-
-general.c
-       - changed getc_with_restart to do local buffering to reduce the
-         number of read(2) system calls
-
-subst.c
-       - changed do_assignment_internal to check for expansion and quoting
-         characters and only call expand_string when something needs
-         expansion, string_quote_removal when quotes appear, and savestring
-         for simple assignment statements
-
-                                   3/3
-                                   ---
-builtins/exit.def, documentation/bash.1
-       - removed `bye' as a synonym for `exit'
-
-shell.h
-       - new exit value: EX_USAGE
-
-builtins/{bind,command,declare,fc,getopts,histctl,history,inlib,jobs,read,
-setattr,trap,ulimit}.def
-       - changed to return EX_USAGE when a usage message is printed
-
-builtins/declare.def
-       - removed the `no_modifiers' code, changed argument name to local_var
-
-command.h, make_cmd.h
-       - declarations for the select command, inside #ifdef SELECT_COMMAND
-
-copy_cmd.c
-       - declarations for copying select commands
-
-dispose_cmd.c
-       - code to dispose of select command structures
-
-execute_cmd.c
-       - code to execute select commands
-
-make_cmd.c
-       - code to construct select command structures
-       - removed `coerce_to_word()'
-
-parse.y
-       - code to parse select commands in the grammar.  The SELECT token is
-         returned by read_token only if SELECT_COMMAND is defined
-
-print_cmd.c
-       - code to print select commands
-
-config.h, config.h.mini
-       - make SELECT_COMMAND the #define that controls whether or not the
-         `select' command is compiled in
-
-documentation.bash,1, documentation/features.texi
-       - documented the `select' command and $PS3
-
-                                   3/4
-                                   ---
-builtins/getopts.def
-       - removed a call to sprintf() in favor of expanding a number manually
-
-builtins/getopt.c
-       - make sure that we set nextchar to NULL when incrementing optind
-         so that it does not end up pointing to stale memory (freed, then
-         later reallocated)
-
-                                   3/7
-                                   ---
-builtins/common.c
-       - fixed parse_and_execute not to be overzealous in marking a command
-         as NO_FORK -- make sure there's nothing left in the string to be
-         executed before doing so
-
-machines.h
-       - change the string check for BSD/386 to __bsdi__
-       - add INT_GROUPS_ARRAY to BSDI, SunOS4, 386bsd, FreeBSD, and NetBSD
-         descriptions
-
-test.c
-       - change to use INT_GROUPS_ARRAY
-
-execute_cmd.c
-       - tightened up the execution loop in execute_for_command and
-         removed a couple of unneeded variables
-
-lib/posixheaders/memalloc.h
-       - make sure to check for sun being defined when checking for sparc;
-         there are ICL DRS6000 machines running SVR4.2 out there that do
-         not have the file
-
-                                   3/8
-                                   ---
-execute_cmd.c
-       - make sure close_fd_bitmap is called before do_redirections, lest
-         the bitmap override some of the redirections
-
-cpp-Makefile
-       - supply an explicit suffix list, so make understands the .def.o
-         suffix rule as such
-
-                                   3/9
-                                   ---
-jobs.h
-       - added extern declarations for rest of global functions in jobs.c
-       - added prototypes
-
-jobs.c
-       - made delete_job, terminate_current_pipeline, kill_current_pipeline,
-         describe_pid, notify_and_cleanup, reap_dead_jobs,
-         initialize_job_signals , without_job_control void functions
-
-                                  3/10
-                                  ----
-execute_cmd.c, execute_cmd.h
-       - moved check_identifier to general.c, general.h
-
-general.c
-       - check_identifier has acquired a second parameter; when set to 1
-         this causes the word to be checked by legal_identifier
-       - for and select commands call check_identifier with a second arg
-         of 1, function names are checked with legal_identifier when in
-         Posix.2 mode
-
-general.h
-       - add second argument to extern declaration of check_identifier
-
-CWRU/POSIX.NOTES
-       - added description of new function name behavior
-
-lib/readline/readline.h
-       - include sys/ioctl.h on FreeBSD and NetBSD
-
-lib/readline/rlconf.h
-       - new file, with readline configuration variables
-       - included in rldefs.h
-
-lib/readline/{readline.c,readline.h,complete.c,display.c}
-       - took configuration defines out and put them into rlconf.h
-
-lib/readline/Makefile
-       - updated dependencies to include rlconf.h
-
-                                  3/14
-                                  ----
-lib/readline/Makefile
-       - remove VI_MODE from the CFLAGS
-
-lib/readline/rlconf.h
-       - made VI_MODE a definable configuration option
-
-lib/readline/vi_mode.c
-       - include rlconf.h before testing whether or not VI_MODE is defined
-
-lib/readline./funmap.c
-       - include `rlconf.h' before `readline.h'
-
-lib/readline/keymaps.c
-       - include `rlconf.h' before `vi_keymap.c' and `keymaps.h'
-
-lib/readline/readline.c, lib/readline/vi_mode.c
-       - rl_vi_set_last -> _rl_vi_reset_last
-       - new function _rl_vi_set_last to set the vi-mode last command
-         information
-       - renamed vi_done_inserting to _rl_vi_done_inserting
-
-lib/readline/vi_mode.c
-       - _rl_vi_last_command, _rl_vi_last_repeat, _rl_vi_last_arg_sign,
-         and _rl_vi_doing_insert are now static
-
-                                  3/15
-                                  ----
-bashline.c
-       - unbind C-M-m in emacs_meta_keymap so people don't accidentally
-         switch into vi editing mode
-
-                                  3/21
-                                  ----
-builtins/cd.def
-       - `pwd' now follows the setting of nolinks/set -o physical; there
-         is an undocumented -P option to get the `real' working directory
-
-                                  3/28
-                                  ----
-make_cmd.c
-       - only follow the command chain to the end of a list in
-         connect_async_list if the list is not being executed in the
-         background as a unit with CMD_WANT_SUBSHELL
-
-support/mksysdefs
-       - removed the define of HAVE_CSH
-       - added an additional check for SVR4 on i[34]86 machines from
-         mkmachtype
-
-lib/readline/vi_mode.c
-       - fix up rl_vi_delete_to so that cw deletes the character under
-         the cursor no matter what, as per Posix.2
-       - any text modifying command that calls rl_vi_insertion_mode needs
-         to explicitly set the `last command' info for `.'
-       - rl_vi_movement_mode() no longer resets the `last command' info
-         so that things like `cw' can be redone with `.'
-
-                                  3/29
-                                  ----
-general.h
-       - a new define MEMMOVE_MISSING to specify to use memcpy in the
-         define for BCOPY
-       - the defines for BCOPY don't need a trailing `;'
-
-machines.h
-       - isc386 needs -DMEMMOVE_MISSING in SYSDEP_CFLAGS
-
-                                  3/30
-                                  ----
-bashline.c
-       - fix to set_saved_history to simplify the code by using 
-         rl_get_previous_history
-
-                                  3/31
-                                  ----
-error.c
-       - change the bug report message 
-
-support/mksysdefs
-       - removed `WHOAMI' junk for setting the `maintainer'
-
-cpp-Makefile
-       - hardcode the maintainer to `bug-bash@prep.ai.mit.edu'
-
-subst.c
-       - call rl_reset_terminal in sv_terminal if interactive_shell
-         is nonzero
-       - split the code that checks whether or not expand_string_unsplit
-         needs to be called from do_assignment_internal into a separate
-         function that takes a function pointer to call as an additional
-         parameter
-
-trap.c
-       - make sure that set_signal_ignored also sets original_signals[sig]
-         to SIG_IGN
-
-bashline.c
-       - `{' is not a word break character for the completion functions
-
-                                   4/2
-                                   ---
-[first beta distribution of bash-1.14.0]
-
-                                   4/5
-                                   ---
-builtins/cd.def
-       - fixed a problem with CDPATH processing (used `dirlen' instead of
-         `pathlen')
-
-subst.c
-       - make sure that get_word_from_string updates `stringp' even if
-         it's nothing but separators
-
-builtins/read.def
-       - after the call to get_word_from_string, set *e to 0 only if t
-         is not null and a word was actually returned
-
-machines.h
-       - remove the NO_SBRK_DECL declaration for sgi machines from all
-         but Irix 5.x machines
-       - sgi needs __STDC__ defined if __EXTENSIONS__ is defined
-
-lib/posixheaders/stdc.h
-       - moved the #if defined (__P) inside the check for __STDC__, so
-         the other things get defined even if __P is already defined
-       - don't redefine const, inline, etc. if `const' is already defined
-
-cpp-Makefile
-       - add dependencies on stdc.h
-       - pass -DHAVE_SYS_STREAM_H through to builds in subdirs
-
-support/mksysdefs
-       - redirect error messages from subshell attempting to find and invoke
-         bison
-       - look for <sys/stream.h>, define HAVE_SYS_STREAM_H if found
-
-lib/readline/rldefs.h
-       - include <sys/stream.h> only of HAVE_SYS_STREAM_H is defined
-
-externs.h, print_cmd.c
-       - made print_command and print_simple_command void functions
-
-builtins/common.c, builtins/common.h
-       - builtin_error now a void function
-       - dispose_saved_dollar_vars now a void function
-       - bad_option now a void function
-       - initialize_shell_builtins now a void function
-
-variables.c
-       - initialize_shell_variables now a void function
-       - adjust_shell_level now a void function
-       - delete_all_variables now a void function
-
-jobs.c
-       - inserted some returns into `int'-valued functions lacking them
-
-hash.c
-       - initialize_hash_table now static void
-
-externs.h
-       - added declarations for functions from mailcheck.c
-
-                                   4/6
-                                   ---
-lib/readline/readline.c
-       - added missing function arguments
-
-
-lib/readline/complete.c
-       - get_y_or_n now accepts space for `y' and rubout/del for `n' to
-         be more emacs-like
-
-lib/readline/history.c
-       - fixed an off-by-one error in history_expand_internal: checking
-         the wrong character for the history event or word specifier
-
-                                   4/7
-                                   ---
-lib/readline/complete.c
-       - make sure `max' is intialized to 0 when displaying the possible
-         completions, even if we've done `goto display_matches'
-
-lib/posixheaders/stdc.h
-       - if __STDC__ is defined but we're not using gcc (__GNUC__ not
-         defined), make `inline' expand to nothing
-
-lib/readline/isearch.c
-       - use STREQN to match the search string against the history line,
-         since we're not interested in exact matches, only matches of
-         the search string
-
-                                   4/8
-                                   ---
-machines.h
-       - description for a sparc running netbsd
-
-                                  4/11
-                                  ----
-lib/readline/vi_mode.c
-       - make sure we're starting an undo group when we implicitly
-         enter insertion mode after a command like c[motion], so
-         we can get to the characters that were inserted
-       - new variable: vi_continued_command, set to 1 if we enter
-         insert mode implicitly
-
-                                  4/12
-                                  ----
-machines.h
-       - generic entry for MIPS machines running SVR4, SVR4.2
-       - changed sony entry to handle M_MACHINE already being
-         defined
-
-lib/malloclib/malloc.c
-       - fixes for malloc stats, from kboyce@bnr.ca
-
-                                  4/13
-                                  ----
-machines.h
-       - changed the u370/USGr4 description: added -DNO_SBRK_DECL to
-         SYSDEP_CFLAGS
-
-lib/readline/readline.c
-       - add a call to rl_set_keymap_from_edit_mode after reading the
-         inputrc file in readline_initialize_everything to override
-         the effect of any `set keymap' assignments in the inputrc
-         file
-
-support/mksysdefs
-       - added a check for MIPS RISCos machines
-       - set the value of `dirlist' to /bsd43/usr/include if we're
-         building on a RISCos machine
-
-lib/readline/bind.c
-       - skip leading whitespace in lines read from the inputrc file
-         in rl_read_init_file
-       - call rl_set_keymap_from_edit mode after reading the inputrc
-         file in rl_re_read_init_file
-
-                                  4/14
-                                  ----
-documentation/Makefile
-       - change bash_builtins.1 to builtins.1 in the recipe for `install'
-       - remove the dependency on texindex from features.dvi
-
-builtins/kill.def
-       - remove explicit inclusion of <sys/types.h>
-
-machines.h
-       - Xenix requires -DMEMMOVE_MISSING
-       - Xenix 2.3 requires -DLD_HAS_NO_DASH_L
-       - added #undef HAVE_RESOURCE to xenix descriptions just to be sure
-
-cpp-Makefile
-       - make sure texindex is built before trying to build the documentation
-
-lib/doc-support/texindex.c
-       - fixes for portability and to fit into the bash configuration
-         scheme
-
-support/mksysdefs
-       - fixed the Xenix section to make sure that sysdefs.h defines `i386'
-         for machines.h -- apparently the default xenix cc does not
-         predefine it
-
-                                  4/16
-                                  ----
-shell.c
-       - regularized parsing of `-c' option so it can be bundled with other
-         options
-       - if bash is started with a `-o' without an argument, list the long
-         options with list_minus_o_opts
-
-builtins/set.def
-       - renamed `list_long_opts' to `list_minus_o_opts', made it global
-
-builtins/common.c
-       - builtin_error now calls get_name_for_error if this_command_name
-         is null or empty
-
-hash.c, hash.h
-       - made hash utility functions able to cope with being passed a
-         null hash table
-
-                                  4/18
-                                  ----
-lib/readline/history.c
-       - changes to history_expand, history_expand_internal to allow
-         modifiers to be used with `!#'
-       - changes to get_history_event so that only `?' or newline can
-         terminate a substring search string.  This is more csh-like.
-
-builtins/common.c
-       - get_working_directory now uses get_name_for_error when for_whom
-         is null and it needs to print an error message
-
-shell.c
-       - set no_rc and no_profile in shell_reinitialize to clarify our
-         intent about not running the .bashrc for shell scripts
-
-                                  4/19
-                                  ----
-lib/readline/vi_mode.c
-       - change rl_vi_possible_completions to fix an inadvertent infinite
-         loop in code that attempts to move to the end of the current word
-
-                                  4/21
-                                  ----
-lib/readline/vi_mode.c
-       - comment out rl_vi_possible_completions -- it's unused
-
-lib/readline/vi_keymap.c
-       - comment out vi_escape_keymap declaration -- it's unused
-
-parse.y, subst.c
-       - shells running in `posix mode' do not perform process substitution
-
-                                  4/22
-                                  ----
-support/getcppsyms
-       - don't process and define __GNUC__ at all
-       - only test for and possibly define __STDC__ if __GNUC__ is not
-         defined (not using gcc)
-
-                                  4/25
-                                  ----
-machines.h
-       - Make sure SunOS 4.x has INT_GROUPS_ARRAY defined
-
-                                  4/26
-                                  ----
-lib/readline/readline.c
-       - make sure screenwidth is not set to 0
-
-                                  4/27
-                                  ----
-Makefile
-       - changed the text printed by the `.notified' target to refer to
-         `bashbug'
-
-[1.14.1 announced and made available for anonymous FTP]
-
-                                  4/28
-                                  ----
-builtins/read.def
-       - unset the variables passed to `read' as arguments when EOF is
-         read from stdin (sh, Posix.2 compatibility)
-
-machines.h
-       - add HAVE_STRERROR to the solaris machine description
-
-print_cmd.c
-       - made declaration of printf depend on __GNUC__ being defined, since
-         only gcc seems to need it
-
-cpp-Makefile
-       - renamed DEBUG_FLAGS to CDEBUGFLAGS
-
-                                  4/29
-                                  ----
-builtins/getopt.c
-       - fix for core dump problems
-
-parse.y, make_cmd.c, make_cmd.h, execute_cmd.c
-       - changed make_redirection to take a `REDIRECTEE', which is a union,
-         as its second argument, to avoid int/long/pointer problems
-       - changed all calls to make_redirction to pass a correctuly-
-         initialized REDIRECTEE argument
-
-                                   5/1
-                                   ---
-general.h
-       - Linux needs a slightly different declaration for gethostname()
-
-nojobs.c
-       - fix to arguments to stop_pipeline
-
-                                   5/3
-                                   ---
-alias.c, bashline.c, variables.c
-       - added casts to eliminate compiler warnings
-
-general.h
-       - removed __P type information from functions taking a GENERIC_LIST *,
-         since that is never what is passed
-       - changed prototype to show that xrealloc takes a `void *'
-
-general.c
-       - xrealloc takes a `void *' as its first argument
-
-                                   5/4
-                                   ---
-support/mksysdefs
-       - changed test -r to test -f when looking for ranlib
-
-lib/readline/readline.c
-       - cleaned up some casts before xmalloc/xrealloc calls
-       - make sure the arrow keys are bound into the vi movement keymap in
-         init_terminal_io
-       - set the keymap explicitly in init_terminal_io before trying to
-         bind the arrow keys
-
-lib/readline/vi_keymap.c
-       - bind ESC in vi_movement_keymap to 0 rather than rl_abort, since
-         the rl_abort binding keeps _rl_bind_if_unbound from working
-
-shell.c
-       - look in $PATH for an input file given on the command line only
-         if that file is not an `absolute program' (contains no slashes)
-
-                                   5/5
-                                   ---
-machines.h
-       - changed HPUX_SYSDEP_CFLAGS to HPUX_CFLAGS
-
-general.h, general.c, copy_cmd.c, make_cmd.c, print_cmd.c, parse.y, subst.c
-       - BCOPY -> FASTCOPY because some machines define or undef BCOPY in
-         system header files
-
-longest_sig.c, support/pagesize.{c,sh}
-       - removed from distribution, moved to CWRU/misc
-
-lib/readline/parens.c, lib/readline/bind.c
-       - don't compile in all of the paren-matching code if PAREN_MATCHING
-         is not defined in rlconf.h
-
-                                   5/9
-                                   ---
-lib/readline/rldefs.h
-       - new #define WINSIZE_IN_IOCTL_H, set for machines that need
-         to include <sys/ioctl.h> to get TIOCGWINSZ and related definitions
-       - use `dirent' instead of `direct', define `dirent' as `direct' if
-         HAVE_DIRENT_H is not defined
-
-lib/readline/signals.c, lib/readline/readline.c
-       - changed to include <sys/ioctl.h> if WINSIZE_IN_IOCTL_H defined
-
-lib/readline/readline.c
-       - strip high bit in rl_getc if __GO32__ is defined
-
-lib/readline/complete.c
-       - use `struct dirent' rather than `struct direct' in
-         filename_completion_function
-
-lib/readline/bind.c
-       - make sure that "" is not passed to open as the name of the inputrc
-         file
-
-general.c
-       - hpux_9 needs #undef HAVE_GETDTABLESIZE, just like hpux_8, on hppa
-
-builtins/times.def
-       - Posix.1 systems need to default to using `struct tms' and the
-         output of `times'
-
-jobs.c
-       - don't redefine _POSIX_SOURCE on sun systems if already defined
-
-parse.y
-       - changed a couple of calls to reverse_list to use the REVERSE_LIST
-         macro instead
-
-newversion.c
-       - now adds the `build version' as part of `SCCSVERSION' in the same
-         format as the shell prints the version string
-
-                                  5/12
-                                  ----
-builtins/psize.sh
-       - if /tmp/pipesize is an empty file, default by defining PIPESIZE
-         to be 512.  An empty file indicates that `psize.aux' did not
-         succeed for some reason
-
-                                  5/13
-                                  ----
-machines.h
-       - dynix/ptx needs -DHAVE_SOCKETS added to SYSDEP_CFLAGS
-
-bashline.c
-       - changed some calls to strncmp to use STREQN
-
-                                  5/15
-                                  ----
-print_cmd.c
-       - if the delimiter to a here document is supposed to be quoted,
-         print it single-quoted
-       - make if statements and while/until statements print similarly,
-         with the then/do on the same line as the first word, separated
-         from the command list by a semicolon
-
-make_cmd.c
-       - reverse the order of patterns in the case statement pattern
-         list in make_pattern_list, so it's printed in the same way
-         it was defined
-
-Makefile
-       - make sure that references to cpp-Makefile and ansi-Makefile
-         are prefixed with $(srcdir) or use CPP_MAKEFILE or ANSI_MAKEFILE
-         respectively
-       - make sure that srcdir is passed from Makefile to bash-Makefile
-         when making `all'
-
-support/mkdirs
-       - new program, clone of `mkdir -p'
-
-cpp-Makefile
-       - before running a make in a subdirectory, call `mkdirs' to ensure
-         that that subdirectory exists
-
-                                  5/16
-                                  ----
-newversion.c
-       - added a `-dir' option to specify a directory prefix, like $(srcdir)
-
-                                  5/17
-                                  ----
-builtins/mkbuiltins.c
-       - if the .def filename begins with a slash, don't prepend the name
-         of the `error directory' when printing error messages or writing
-         line number information to a generated c source file
-
-config.h
-       - don't include memalloc.h if BUILDING_MAKEFILE is defined
-
-lib/malloc/Makefile
-       - skeleton Makefile to make this directory more like other
-         library directories
-
-Makefile, cpp-Makefile, builtins/Makefile, lib/*/Makefile
-       - changes to make bash buildable in a directory without the source
-         present by running `make srcdir=xxx'
-
-support/srcdir
-       - new program, used to print the full path of the source directory;
-         it echoes the output of `pwd' if $1 is `.'
-
-                                  5/18
-                                  ----
-cpp-Makefile
-       - CFLAGS -> CCFLAGS, CDEBUGFLAGS -> CFLAGS to obey the GNU standard
-         (which does not consider the possibility that other information
-         besides debugging could conceivably be passed to cc)
-
-general.h
-       - don't prototype gethostname() unless we're defining our own version
-         in general.c
-
-lib/readline/history.c
-       - fix hist_error to allocate and return a new string with the
-         error message; removed the `ret' argument
-
-                                  5/19
-                                  ----
-subst.c
-       - new function char_is_quoted(s, i) returns 1 if character at
-         position i in s is quoted
-
-bashline.c
-       - removed `\' from rl_completer_word_break_characters
-       - make sure that a command separator character is not quoted in
-         attempt_shell_completion by calling char_is_quoted before calling
-         command_word_completion_function
-       - fixed a problem with detection of command separator characters
-         in attempt_shell_completion
-
-lib/readline/complete.c
-       - set found_quote if a backslash is found in the string in
-         rl_complete_internal
-       - if compiled for the shell, call char_is_quoted to find out
-         whether a character in rl_line_buffer is quoted when deciding
-         where to break a word for the completer
-
-                                  5/23
-                                  ----
-machines.h
-       - made sure all definitions of M_OS were quoted
-
-lib/doc-support/Makefile
-       - more surgery to use ${topdir} and ${srcdir}
-
-documentation/bash.1
-       - clarify that redirections may precede only simple commands
-
-support/fixlinks
-       - new script to make multiple copies of files links or symlinks
-         to a single master copy
-
-support/SYMLINKS
-       - name -> target symlink map for support/fixlinks
-
-support/fixlib
-       - modification of fixdist to move lib to ../lib and clone the files
-         in there like using lndir
-
-filecntl.h
-       - moved to lib/posixheaders, replaced with symlink
-
-support/getcppsyms.c
-       - removed support for outputting -D__STDC__; it's rarely right
-
-cpp-Makefile
-       - build_builtins_in_dir(directory, makefile) --> build_builtins(target)
-         to get rid of the need to know how cpp does token concatenation
-
-nojobs.c
-       - changed the printing of the pid for asynchronous jobs to be the
-         same as sh (no brackets)
-       - took a useless loop out of wait_for_background_pids
-
-                                  5/24
-                                  ----
-
-cpp-Makefile
-       - major surgery to replace #define with make variable assignments --
-         now cpp is used only for inclusion and conditionals (and shorthand)
-
-machines.h
-       - new entry for Lynx 2.1
-
-builtins/declare.def
-       - make sure that the name in command name=value is a legal variable
-         name (affects typeset/declare, export, readonly)
-
-                                  5/26
-                                  ----
-machines.h
-       - make sure a 386/486 running Solaris2 is not misidentified as a
-         Sun 386i
-       - make sure a 486 running NeXT OS is identified as a `NeXT-i386'
-
-                                  5/27
-                                  ----
-builtins/enable.def
-       - fixed an off-by-one error in option parsing
-       - improved option parsing to be Posix compliant (`--'), bad options
-
-Makefile
-       - call /bin/sh to run support/mksysdefs and create sysdefs.h, since
-         it's a shell script
-       - ditto for $(CPPMAGIC)
-
-cpp-Makefile
-       - newversion.aux does not need to be linked against the math
-         library
-
-                                  5/30
-                                  ----
-machines.h
-       - set M_OS to `NeXTstep' for NeXT and i386 machines running NeXT OS
-
-[1.14.2 beta release made available for FTP]
-
-                                  5/31
-                                  ----
-siglist.h
-       - don't define `strsignal' on SunOS5; it has its own
-
-builtins/setattr.def
-       - change set_or_show_attributes to check for legal variable names
diff --git a/CWRU/old-changelogs/CWRU.chlog.v11 b/CWRU/old-changelogs/CWRU.chlog.v11
deleted file mode 100644 (file)
index 163247e..0000000
+++ /dev/null
@@ -1,8400 +0,0 @@
-                                   6/2
-                                   ---
-lib/readline/readline.c
-       - fixed an off-by-one error in the kill ring reallocation code
-         in rl_kill_text
-
-Makefile
-       - replaced instances of /bin/sh with $(SHELL)
-
-Makefile, cpp-Makefile, documentation/Makefile
-       - added a working `uninstall' target
-
-[1.14.0 FCS release made available for FTP]
-
-                                   6/3
-                                   ---
-README
-       - added note about building with gcc, same as in Makefile
-
-documentation/Makefile
-       - some versions of make don't understand `$*' in a regular recipe;
-         replace with features.dvi in the recipe for features.ps
-
-                                   6/4
-                                   ---
-subst.c
-       - fix up the calls to string_extract_double_quoted and 
-         string_extract_single_quoted in char_is_quoted so the initial
-         value of the index is *after* the opening quote character
-       - make sure we only return 1 from char_is_quoted if the index
-         into the string after a call to string_extract_double_quoted or
-         string_extract_single_quoted is *greater than* `eindex'
-
-lib/readline/complete.c
-       - change the order and sense of the quoting tests in
-         rl_complete_internal so that the expensive char_is_quoted
-         is only called if `scan' actually is a word break character
-
-shell.c
-       - fixed a typo in the test for a restricted shell
-
-builtins/exec.def
-       - need to include flags.h
-
-                                   6/6
-                                   ---
-make_cmd.c
-       - make sure that we don't try to walk down a null command tree
-         in connect_async_list (tickled by `(command &) &')
-       - if a command has the CMD_WANT_SUBSHELL bit set in its flags,
-         don't even try to walk the command tree and move the `&';
-         just connect the command with a null command using `&'
-
-execute_cmd.c
-       - make sure we don't try to reference a command struct without
-         first checking it (case '&')
-
-                                   6/7
-                                   ---
-machines.h
-       - fix a typo in the NeXT/i386 description; change the NeXT description
-         to #define HAVE_RESOURCE if not already defined rather than putting
-         -DHAVE_RESOURCE into the SYSDEP_CFLAGS
-
-                                   6/9
-                                   ---
-Makefile
-       - make sure all of the rules that reinvoke `make' have the
-         `-f bash-Makefile' before the assignment statements; some
-         versions of make like it that way
-
-variables.c
-       - make sure that `interactive' is set to 0 before evaluating the
-         string containing an exported function obtained from the
-         environment, so that it does not try to execute PROMPT_COMMAND
-         (this may not be the best fix)
-
-                                  6/13
-                                  ----
-documentation/Makefile
-       - make sure all of the directories exist before trying to install
-         doc files into them
-
-lib/readline/history.c
-       - add a missing O_TRUNC to the open call for writing in
-         history_truncate_file
-
-trap.c
-       - run_interrupt_trap should only try to run the trap command if
-         the value is not IMPOSSIBLE_TRAP_HANDLER
-
-Makefile
-       - add `realclean'
-
-lib/readline/complete.c
-       - do the same kind of double-quoting a replacement string if the
-         user supplies the opening double quote as we would if we were
-         adding both quotes ourselves
-
-variables.c
-       - fixed the variable initialization so that history_control/HISTCONTROL
-         can be inherited from a parent shell
-
-INSTALL, README, cpp-Makefile, documentation/bash.1, documentation/readline.3
-       - ai.mit.edu -> prep.ai.mit.edu
-
-shell.c
-       - fixed a problem with setting no_line_editing to the result of the
-         check for running inside emacs, thereby losing any value
-         initialized by the `-nolineediting' flag
-
-cpp-Makefile
-       - `make distclean' will now remove the `installed-bash' link
-
-print_cmd.c
-       - fixed a problem with undefined variables when HAVE_VARARGS_H is
-         not defined
-
-                                  6/14
-                                  ----
-lib/readline/history.c
-       - fixed an error in the csh history expansion code so that the
-         `-y' word designator now expands to `0-y' rather than `1-y'
-
-lib/readline/isearch.c
-       - changed an absolute check for a character falling within the
-         ASCII 32-126 range (printable chars) with checks for CTRL_P
-         and META_CHAR and a check against the value RUBOUT
-       - changed a `break' to a `continue' so that the first non-matching
-         character in the search string does not cause the search to
-         end abruptly
-       - initialize prev_line_found to 0 at the top of rl_search_history
-         to avoid duplicate history lines being saved across searches
-
-lib/readline/rltty.c
-       - consolidated repeated code for setting special characters into
-         `SET_SPECIAL' defines
-
-lib/readline/readline.c
-       - include <sys/ioctl.h> if VSTATUS is defined
-       - add bindable command rl_tty_status (unbound by default)
-
-lib/readline/funmap.c
-       - assign bindable command name `tty-status' to rl_tty_status
-
-INSTALL
-       - add note about compiling with gcc, same text as README
-
-lib/readline/display.c
-       - many changes and tweaks to make redisplay work better when the
-         prompt has invisible characters.  These changes are non-optimal
-         in that the prompt is redrawn more than it needs to be, but
-         things are a hell of a lot better than they were
-
-                                  6/15
-                                  ----
-documentation/Makefile
-       - make a variable NROFF that people can set to `groff -Tascii' if
-         they don't have real nroff
-       - changed the suffix rules to use $<
-
-support/bashbug.sh
-       - if rmail doesn't exist or fails, save the bug report in
-         ~/dead.bashbug
-
-execute_cmd.c
-       - in setup_async_signals, only ignore SIGINT and SIGQUIT if job
-         control is not active.  If it is active and the job is restarted,
-         SIGINT remains ignored, and the now-foregrounded job is not
-         interruptible
-
-subst.c
-       - fixed up a problem with char_is_quoted that caused backslash-
-         escaped characters to cause incorrect results
-
-tests/run-dollars, tests/dollar-at.sh, tests/dollar-star.sh
-       - since the error messages produced by `cat' vary, changed `cat'
-         to `recho' and updated the correct answers file
-
-machines.h
-       - fixes to CRAY_STACKSEG_END definitions for different versions of
-         Unicos on the YMP (from Bill Jones)
-       - Motorola SVR4 machines have getcwd() and should not undef
-         HAVE_GETCWD
-       - on hpux 9.x, don't try to link with -lPW if compiling with gcc
-         (for alloca)
-
-parse.y
-       - an ugly fix for a compiler problem with structure assignment on
-         the cray
-
-                                  6/16
-                                  ----
-builtins/wait.def
-       - replaced a call to sscanf with a validity check using all_digits()
-         and a call to atoi, since a pid_t is not necessarily an int, and
-         the sscanf clobbered the stack frame on systems where it is shorter
-         than an int (e.g., SCO)
-
-lib/readline/display.c
-       - since META_CHAR and the other macros only work with unsigned
-         chars, make rl_character_len convert its argument to an unsigned
-         char before testing it
-
-documentation/Makefile
-       - use $(INSTALL_DATA) instead of $(CP) to install the man pages and
-         info files
-
-cpp-Makefile
-       - use INSTALL_PROGRAM and INSTALL_DATA to install binaries and
-         documentation; pass both values to installs in subdirectories
-
-                                  6/18
-                                  ----
-builtins/ulimit.def
-       - compensate for systems which define RLIMIT_OFILE instead of
-         RLIMIT_NOFILE, or don't provide such a compatibility define
-         themselves
-
-shell.c
-       - make maybe_execute_file check for directories and print an
-         appropriate error message, since it's doing an fstat anyway
-
-support/mksysdefs
-       - added support for a `-s srcdir' option so it can find
-         cpp-Makefile if ansi-Makefile is to be created
-
-Makefile
-       - call mksysdefs with -s $(srcdir)
-
-jobs.c
-       - add the magic #undef lines to avoid redefinition warnings on
-         SunOS 4 only
-
-                                  6/20
-                                  ----
-cpp-Makefile
-       - install `bashbug' with `make install'
-
-trap.c
-       - make sure that `interactive' is set to 0 when running trap
-         commands
-
-builtins/umask.c
-       - fixed typo in usage error message
-
-subst.c
-       - fix process_substitute to set subshell_environment
-
-jobs.c, nojobs.c
-       - only mess with the terminal settings for an interactive shell
-         that is not in a subshell environment
-
-                                  6/21
-                                  ----
-lib/readline/history.h
-       - add extern declaration of history_get
-
-builtins/fc.def
-       - make history replacement when using `r' or `fc -s' obey the
-         setting of HISTCONTROL
-
-general.c
-       - in canonicalize_pathname, preserve a double // at the start
-         of an absolute pathname, since that means something special
-         for the network directory system
-
-README, INSTALL
-       - updated information about submitting bug reports
-
-lib/readline/vi_mode.c, lib/readline/isearch.c
-       - make sure unistd.h is included before rldefs.h, if
-         HAVE_UNISTD_H is defined
-
-                                  6/24
-                                  ----
-lib/readline/complete.c
-       - add `#' to the list of characters which cause a completed filename
-         to be quoted
-
-execute_cmd.c
-       - be more careful about closing pipe file descriptors in do_piping;
-         don't want to have `dup2(i, i); close(i);' problem
-
-lib/readline/{keymaps,readline}.h
-       - include local copies of include files if READLINE_LIBRARY is
-         defined, otherwise include the `official, installed' versions
-         using #include <readline/xxx.h>
-
-lib/readline/*.c
-       - define READLINE_LIBRARY before including any files
-       - include only `local' copies of include files using #include "xxx.h"
-         rather than #include <readline/xxx.h>
-
-                                  6/26
-                                  ----
-execute_cmd.c
-       - check for clobbering the bash input stream before closing a file
-         descriptor due to an r_close_this redirection
-
-lib/readline/history.c
-       - made history_expand inhibit history expansion if the history
-         expansion char is set to 0
-
-lib/readline/chardefs.h
-       - moved savestring() definition to rldefs.h
-       - changed lowercase_p, uppercase_p, to_lower, to_upper defines to
-         use <ctype.h> macros rather than assume ASCII
-
-lib/readline/bind.c, general.c, general.h
-       - use strcasecmp, strncasecmp instead of str[n]icmp if
-         HAVE_STRCASECMP is defined
-
-cpp-Makefile
-       - pass -DHAVE_STRCASECMP to builds in the libraries, primarily
-         readline
-
-machines.h
-       - add HAVE_STRCASECMP to the entries for BSD/386, NetBSD, FreeBSD,
-         and 4.4 BSD
-
-builtins/hash.def
-       - add a fourth parameter to remember_filename, the initial value
-         of times_found (0 if we're just looking it up for `hash', 1
-         for the command execution code)
-
-execute_cmd.c
-       - call remember_filename with an initial value of 1 for times_found
-
-builtins/wait.def
-       - handle a null argument with an error message
-
-builtins/common.c
-       - parse_and_execute now takes a third parameter: the value for
-         `interactive' while it is executing commands
-
-bashline.c, jobs.c, parse.y, shell.c, subst.c, trap.c, variables.c
-       - set the new third argument to parse_and_execute appropriately
-
-builtins/eval.def, builtins/fc.def, builtins/source.def
-       - set the new third argument to parse_and_execute appropriately
-
-builtins/help.def
-       - changed a call to strnicmp to strncmp when trying to find what
-         to give help on; it seems more correct
-
-                                  6/27
-                                  ----
-machines.h
-       - cleaned up the SunOS section so it no longer relies on
-         HAVE_SHARED_LIBS being defined; it uses SunOS4 and SunOS5
-         instead
-
-support/mksysdefs
-       - define SYSDEF to be SunOS4 or SunOS5 depending on the output
-         of uname rather than looking for ld.so
-
-                                  6/29
-                                  ----
-machines.h
-       - minor change to the ardent titan machine description
-       - move the ardent and stardent descriptions before the
-         mips riscos description
-
-print_cmd.c
-       - ardent machines also need the extern declaration for printf
-
-make_cmd.c
-       - connect_async_list should do its work only if the lists to be
-         backgrounded are connected with `;'.  This makes `;' bind tighter
-         than `&', so only the last job in the list is backgrounded.  All
-         other lists should have the entire thing put in the background
-
-parse.y
-       - added a function `print_prompt' to take care of displaying the
-         prompt string if readline is not being used.  This fixes problems
-         with the prompt being displayed before the status of completed
-         jobs is printed
-
-                                  6/30
-                                  ----
-builtins/fg_bg.def
-       - `fg' and `bg' now print error messages if invoked when job control
-         is disabled
-
-lib/readline/rltty.c
-       - if not compiled into the shell, make get_tty_settings get and set
-         the window size.  This noop stops the process if it is started in
-         the background
-
-lib/readline/readline.c
-       - provide a function version of savestring, if not being compiled
-         into the shell, since the macro has been removed from the
-         `public' header files
-
-lib/readline/readline.h
-       - provide all extern function declarations without checking whether
-         VI_MODE or PAREN_MATCHING are defined.  It does not hurt to define
-         them if they are not used and not in the library, and other
-         applications using readline can't tell whether or not VI_MODE was
-         defined when the library was compiled anyway
-
-                                   7/1
-                                   ---
-machines.h
-       - add #undef HAVE_DIRENT_H to the ardent titan description
-
-                                   7/2
-                                   ---
-lib/readline/chardefs.h
-       - removed META_P define, renamed CTRL_P to CTRL_CHAR
-
-lib/readline/bind.c, lib/readline/isearch.c
-       - changed instances of CTRL_P to CTRL_CHAR
-
-lib/readline/search.c
-       - include <unistd.h> before rldefs.h, if HAVE_UNISTD_H is defined
-
-lib/readline/readline.c
-       - declare PC, UP, and BC as extern rather than `local' to the
-         readline library
-
-                                   7/5
-                                   ---
-bashline.c
-       - implement command word completion inside of command substitution
-         with a new function: `command_subst_completion_function'
-
-subst.c
-       - new function to help with command subst completion: unclosed_pair
-
-lib/readline/complete.c
-       - new variable rl_filename_quoting_desired, which can be set to 0
-         to inhibit the quoting of filenames after completion
-
-lib/readline/readline.h
-       - declare rl_filename_completion_desired and
-         rl_filename_quoting_desired
-
-builtins/bind.def
-       - don't save the old value of rl_outstream before initializing
-         readline -- it saves garbage values and screws up readline
-
-parse.y
-       - don't have private state telling whether or not readline has
-         been initialized -- use bash_readline_initialized like other
-         functions in bashline.c
-
-lib/readline/readline.c
-       - make the default 8-bit behavior be based on whether LC_CTYPE is
-         defined and its value (accept iso-8859-1 or iso_8859_1)
-
-                                   7/6
-                                   ---
-variables.c
-       - fix up the declaration of getenv() for convex machines
-
-                                   7/7
-                                   ---
-lib/readline/readline.c
-       - fixed up typos in the declaration of `savestring'
-
-lib/readline/history.c
-       - fixed an off-by-one error in the ADD_CHAR macro which caused one
-         extra character to be overwritten, causing the gnu malloc to abort
-         when that one character was at the end of an allocated block
-       - changed the ADD_STRING macro to avoid some unnecessary xreallocs
-
-lib/readline/display.c
-       - fixed a problem with move_cursor_relative -- function now returns
-         immediately if it has nothing to do
-       - fixed another problem with displaying prompts with invisible chars
-
-lib/readline/chardefs.h
-       - fixed the CTRL macro to be right (agree with the BSD kernel, for
-         example)
-
-cpp-Makefile
-       - fixed typo in the `install' recipe
-
-                                   7/8
-                                   ---
-support/srcdir
-       - fixed to handle srcdir when it begins with ./ or ../ to handle
-         $(srcdir) being a relative path better
-
-cpp-Makefile
-       - changed some include paths to $(BUILTIN_ABSSRC) when building in
-         `builtins' to handle $(srcdir) being a relative path
-       - change the `chmod' on bashbug to turn on read and execute for all
-       - added a couple of definitions to make it easier for a later
-         `configure' program
-
-support/mksysdefs
-       - added a -i option to specify an alternate set of directories to
-         search for include files
-
-lib/readline/bind.c
-       - in rl_read_init_file, when skipping whitespace at the start of
-         the line, decrement `i' so that we don't jump past the start
-         of the next line
-
-machines.h
-       - SCOv4 has a `robust' opendir that checks that you're actually
-         opening a directory
-
-                                  7/11
-                                  ----
-lib/readline/complete.c
-       - make sure a word break character is unquoted before using it to
-         separate out the current word for completing
-
-machines.h
-       - new machine description: NetBSD on motorola m68k machines like
-         the hp300
-       - undef HAVE_GETWD in the generic svr4 machine description, like
-         other svr4 descriptions
-
-lib/readline/rltty.c
-       - make sure to fflush (rl_outstream) after toggling the setting
-         of the keypad and meta key
-
-portbash/libc.sh
-       - add a test for OPENDIR_NOT_ROBUST
-
-support/getcppsyms.c
-       - output __svr4__ if we find __uxps__ (this makes the Fujitsu port of
-         SVR4 to the sparc build OK)
-
-                                  7/12
-                                  ----
-lib/readline/display.c
-       - more display-related fixes when the prompt has invisible chars;
-         this time for screen updates when moving between screen lines
-
-lib/readline/readline.c, lib/readline/display.c
-       - changes to make readline work with terminals that have auto-wrap
-         from Per Bothner (new function _rl_update_final, term_xn changes,
-         some efficiency speedups, new function space_to_eol)
-
-                                  7/13
-                                  ----
-lib/readline/display.c
-       - after moving up screen lines using term_up in _rl_move_vert, if
-         the new screen line is 0, _rl_last_c_pos needs to be adjusted
-         to take invisible characters into account.  This was the source
-         of many bugs
-
-                                  
-                                  7/14
-                                  ----
-documentation/Makefile
-       - change instances of `groff' to `${GROFF}', GROFF is set to
-         `groff' by default
-
-general.c, variables.c
-       - moved `qsort_string_compare' from variables.c to general.c
-
-general.h, variables.h
-       - moved declaration of `qsort_string_compare' from variables.h
-         to general.h
-
-alias.c, lib/readline/funmap.c
-       - moved qsort auxiliary functions after their use and added
-         forward declarations to avoid warnings from ANSI C compilers
-
-memalloc.h
-       - hpux_9 needs alloca declared as `extern void *' if __STDC__
-         is defined
-
-support/mksysdefs
-       - removed HAVE_SHARED_LIBS entirely
-       - make a call to /bin/uname -X for SCO machines to avoid running
-         a different uname from the $PATH
-
-machines.h
-       - new descriptions: Intel i860 running SVR4, Tahoe running 4.3 BSD
-       - changed descriptions: Mips/RiscOS, DG AViiON, unknown machine
-
-jobs.c
-       - changes to how the shell handles foreground jobs dying of SIGINT:
-               an interactive shell using job control will no longer
-               act as if it received a SIGINT if the foreground job
-               dies from a SIGINT
-
-               a non-interactive shell or shell without job control tries
-               to differentiate between SIGINTs it has seen (in
-               wait_sigint_handler) and a foreground job dying of a SIGINT
-               not sent from the keyboard, and runs the normal SIGINT code
-               only in the former case
-
-                                  7/15
-                                  ----
-support/mksysdefs
-       - check for ${UNAME}${RELEASE} expanding to `SunOS4*' or `SunOS5*'
-         to set SYSDEF to SunOS4 or SunOS5, respectively.  Apparently
-         this does not work for Solbourne
-
-                                  7/18
-                                  ----
-
-lib/readline/rltty.c
-       - if output is being flushed on termios systems, loop until the
-         FLUSHO bit is no longer set in the termios struct
-
-support/mksysdefs
-       - added a -A flag to force creation of ansi-Makefile
-
-machines.h
-       - new entry for Tandem machines running SVR3
-
-                                  7/19
-                                  ----
-lib/readline/rldefs.h
-       - include <termcap.h> if HAVE_TERMCAP_H is defined
-       - use <termio.h> stuff if HAVE_TERMIO_H is defined and _POSIX_VERSION
-         is not defined
-
-lib/readline/rldefs.h, lib/readline/history.c
-       - include "config.h" if HAVE_CONFIG_H is defined
-
-lib/readline/{rldefs.h,signals.c,readline.c}
-       - WINSIZE_IN_IOCTL_H -> GWINSZ_IN_SYS_IOCTL for compatibility with
-         other GNU programs
-
-lib/readline/doc/Makefile
-       - fixed up to create the readline and history manuals in dvi and
-         ps format
-
-lib/readline/Makefile
-       - changes inspired by the standalone readline-2.0 distribution
-
-                                  7/20
-                                  ----
-lib/readline/history.c
-       - new function, history_is_stifled (), returns history_stifled
-       - set history_state flags member in the history state functions
-
-lib/readline/history.h
-       - reorganized the function declarations, added missing declarations
-       - history_stifled is no longer exported by the library
-       - added a `flags' member to the HISTORY_STATE structure
-
-bashline.c
-       - use history_is_stifled () instead of history_stifled
-
-lib/readline/readline.c, lib/readline/vi_mode.c
-       - filled in correct argument declarations for functions called via
-         keymaps (count, key)
-
-lib/readline/complete.c
-       - efficiency improvement for compare_strings
-
-                                  7/21
-                                  ----
-examples/dirfuncs
-       - new directory functions from ksh book, contributed by
-         Ken Konecki (kenk@wfg.com)
-
-machines.h
-       - hpux_8 and hpux_9 should both #undef HAVE_ALLOCA unless gcc is
-         being used
-
-                                  7/22
-                                  ----
-bashline.c
-       - fixed up command_word_completion_function so that filenames with
-         leading tildes are completed correctly
-
-                                  7/26
-                                  ----
-builtins/read.def
-       - if -r not given, make sure CTLESC is removed from input string
-         when reading \<newline>
-
-lib/readline/readline.c
-       - new function bind_arrow_keys, which binds vt100/ansi arrow key
-         escape sequences after reading the termcap definition and the
-         inputrc file
-       - new function rl_yank_last_arg, which does what insert-last-arg
-         does in bash
-
-lib/readline/emacs_keymap.c
-       - remove default bindings to rl_arrow_keys for M-[ and M-O
-       - rl_yank_last_arg is now bound to `M-.' and `M-_' in
-         emacs_meta_keymap
-
-subst.c
-       - when performing process substitution on systems with /dev/fd,
-         make sure the child clears the slot in dev_fd_list it gets
-         from its parent so the file descriptor does not get closed
-         inappropriately if reallocated by, e.g., pipe(2)
-
-bashline.c
-       - removed insert_last_arg and the calls to bind in to `M-.' and `M-_'.
-         `insert-last-argument' is now bound to rl_yank_last_arg for
-         backwards compatibility
-
-lib/readline/funmap.c
-       - `yank-last-arg' is now a named command for rl_yank_last_arg
-
-
-documentation/bash.1, documentation/readline.3
-       - add description of yank-last-arg as one of the readline user
-         commands
-
-lib/readline/doc/rluser.texinfo
-       - added description of yank-last-arg
-
-builtins/getopts.def
-       - fixed a typo in the int-to-string code computing the value to set
-         OPTIND to: had '\0' instead of '0'
-       - made getopts handle the case where there are more than 9 dollar
-         variables (where rest_of_args is non-null) correctly
-
-                                  7/28
-                                  ----
-lib/readline/display.c
-       - fixes to the display code for single-line-display in the presence
-         of prompts containing invisible characters
-
-lib/readline/readline.c
-       - if we are using horizontal scrolling and we have term_xn, decrement
-         the screenwidth by 1, since we won't be doing any line wrapping
-
-                                  7/31
-                                  ----
-jobs.c
-       - new variable `freeze_jobs_list' to set when changes to the jobs
-         list or status of jobs in the list (other than calling something
-         like `jobs -n') are undesirable.  This is set when execuing traps
-         on SIGCHLD
-
-                                   8/1
-                                   ---
-subst.c
-       - check that `~' is unquoted before performing tilde expansion in
-         an assignment statement
-
-                                   8/3
-                                   ---
-bracecomp.c
-       - keep brace completion from dumping core if there is only one
-         match
-
-lib/readline/chardefs.h
-       - add a define for digit_p, which returns the value of isdigit()
-
-lib/readline/readline.c
-       - added function equivalents for uppercase_p, lowercase_p, to_upper,
-         to_lower, pure_alphabetic, digit_p, and digit_value
-       - replaced calls to numeric () with calls to digit_p, removed
-         definition of numeric ()
-
-lib/readline/history.c
-       - digit -> digit_p
-
-lib/readline/vi_mode.c
-       - replaced uses of the `isletter' define to use pure_alphabetic
-         from chartypes.h
-       - replaced uses of `numeric' with calls to digit_p
-       - added do...while(0) to `exchange' define
-
-                                   
-                                   8/4
-                                   ---
-execute_cmd.c
-       - make sure execute_function saves and restores the current loop
-         count with unwind_protect_int
-
-documentation/features.texi
-       - change the `Shell Command Line Options' section to `Invoking
-         Bash' to be closer to the GNU coding standards
-
-                                   8/5
-                                   ---
-builtins/read.def
-       - fixed up a memory leak and made behavior correct when no
-         variables given and backslash escaped at least one input char
-       - if we added CTLESC anywhere while reading the input string,
-         make sure we call dequote_string on each word of the input
-         before calling bind_variable with that string
-
-                                   8/6
-                                   ---
-lib/readline/readline.h
-       - removed definition of rl_show_star -- the variable no longer
-         exists
-
-lib/readline/readline.h, lib/readline/history.h
-       - reorganized to follow texinfo manual structure
-
-lib/readline/bind.c
-       - rl_function_dumper is now static
-       - rl_list_funmap names does not take any arguments
-
-builtins/bind.def
-       - rl_list_funmap names does not take any arguments
-
-lib/readline/readline.c, lib/readline/signals.c
-       - rl_init_argument ->_rl_init_argument
-
-lib/readline/rltty.c
-       - remove declaration and references to output_was_flushed
-
-support/getcppsyms.c
-       - if __uxps__ is defined, define __uxps__ and __svr4__
-
-                                   8/9
-                                   ---
-support/mkdist
-       - added a -r option to set the `root name' of the distribution
-         (e.g., `bash' or `readline')
-
-                                  8/10
-                                  ----
-input.c
-       - if check_bash_input sees that default_buffered_input is about
-         to be the target of a redirection, but the buffered input stream
-         is not the current input stream (e.g. as the result of an
-         `eval' while in a script, change default_buffered_input to a
-         new fd and use a new variable `bash_input_fd_changed' to note
-         the change
-
-parse.y
-       - if pop_stream sees that default_buffered_input has changed while
-         a buffered stream was on the save stack (because
-         bash_input_fd_changed is non-zero), then make the popped stream
-         and the corresponding buffer use the new fd
-
-test.c
-       - fixed an off-by-one error in test_stat when testing /dev/fd/n.
-
-cpp-Makefile
-       - add -I$(incdir) to CPPFLAGS
-       - add `incdir = $(prefix)/include' assignment
-
-                                  8/11
-                                  ----
-lib/readline/signals.c
-       - changed some calls to signal () to call rl_set_sighandler()
-       - call _rl_redisplay_after_sigwinch from the sigwinch handler
-         to do better redisplay of wrapped command lines and multi-line
-         prompts
-
-builtins/suspend.def
-       - changed some calls to signal () to call set_signal_handler()
-
-lib/readline/*.c
-       - include config.h before anything else if HAVE_CONFIG_H is defined
-
-lib/readline/readline.c
-       - renamed rl_set_mark to _rl_set_mark_at_pos
-       - call _rl_vi_initialize_line from rl_initialize if the current
-         editing mode is vi mode
-       - only output a term_cr in crlf if term_cr is non-null
-
-lib/readline/readline.h
-       - added declarations for rl_vi_set_mark and rl_vi_goto_mark
-
-lib/readline/readline.c, lib/readline/readline.h
-       - added a new bindable command to set the mark, rl_set_mark
-
-lib/readline/funmap.c
-       - new bindable function with name `set-mark', bound to rl_set_mark
-       - new bindable vi-mode functions with names `vi-set-mark' and
-         `vi-goto-mark'
-
-documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
-       - added documentation for `set-mark' (unbound)
-
-lib/readline/vi_mode.c
-       - new vi-command mode commands to save marks (the vi `m' command)
-         and go to saved marks (the ``' command)
-       - new function _rl_vi_initialize_line called from rl_initialize
-         to set up the line state in vi mode.  Right now this just resets
-         all the marks
-
-lib/readline/vi_keymap.c
-       - new vi command-mode bindings to set the mark (`m') and to go to
-         a saved mark (``')
-
-documentation/readline.3
-       - added vi-set-mark and vi-goto-mark to list of key bindings for
-         vi command mode
-
-lib/readline/{readline.c,display.c}
-       - renamed term_xn to _rl_term_autowrap
-
-lib/readline/display.c
-       - new function _rl_redisplay_after_sigwinch to encapsulate the
-         necessary redisplay code after a SIGWINCH is received
-
-variables.c
-       - only call find_user_command on the shell name in shell_initialize
-         if shell_name is not an absolute program name
-       - call canonicalize_pathname on the full shell pathname after
-         calling make_absolute on it if the shell name starts with a `.'
-
-siglist.h
-       - FreeBSD does not need a definition of sys_siglist[]
-
-                                  8/12
-                                  ----
-lib/readline/rltty.c
-       - don't try to use FLUSHO unless FLUSHO is defined
-
-cpp-Makefile
-       - make sure to pass $(CC) to the make in the lib/malloc subdirectory
-
-lib/readline/readline.c
-       - don't declare PC, UP, and BC as extern; it causes too many problems
-
-                                  8/13
-                                  ----
-machines.h
-       - add -DNO_SBRK_DECL to SYSDEP_CFLAGS for SVR4.2 on i386
-
-support/mksysdefs
-       - new variable UNAME_S for the output of `uname -s'
-       - if uname -s does not output the same thing as uname, and uname -s
-         outputs UNIX_SV, then set UNAME to UNIX_SV.  Some versions of i386
-         SVR4.2 make `uname' equivalent to `uname -n'
-
-lib/readline/memalloc.h
-       - removed from the library; not needed since readline does not use
-         alloca
-
-lib/readline/{history.c,isearch.c,search.c,rldefs.h}, lib/tilde/tilde.c
-       - no longer include memalloc.h
-
-lib/readline/Makefile
-       - remove dependencies on memalloc.h
-
-lib/readline/signals.c
-       - overhauled signal handling based on ideas from Bruno Haible
-         (haible@ma2s2.mathematik.uni-karlsruhe.de) so that readline
-         saves and restores the signal mask and flags on Posix systems
-       - don't include fcntl.h, sys/file.h, errno.h, or stdlib.h
-       - ignore SIGALRM during rl_signal_handler like SIGINT until the
-         old handler is installed, on non-Posix or non-BSD systems
-       - new define SIGHANDLER_RETURN, dependent on the value of
-         VOID_SIGHANDLER
-       - use RETSIGTYPE instead of `sighandler' as the signal handler
-         return type; it's the name autoconf uses.  If not defined,
-         set up from VOID_SIGHANDLER
-
-lib/readline/rltty.c
-       - call control_meta_key and control_keypad from rl_deprep_terminal
-         before putting the terminal back into ICANON mode to avoid
-         messing up the tty driver
-
-                                  8/15
-                                  ----
-cpp-Makefile
-       - changes so that fewer -Idir arguments are passed to the make
-         in ./builtins
-
-                                  8/16
-                                  ----
-lib/readline/bind.c
-       - use KEYMAP_SIZE instead of 128 in rl_invoking_keyseqs_in_map
-
-lib/readline/complete.c
-       - qsort the array of matches omitting matches[0], which must stay
-         in place no matter what, even if strcmp doesn't compare unsigned
-         chars correctly
-       - some fixes to the loop that prints the list of completions
-
-lib/readline/keymaps.c
-       - run the loop up to 127 when creating a new keymap in rl_make_keymap
-
-input.h, general.h, lib/readline/keymaps.h, lib/readline/tilde.h
-       - use _FUNCTION_DEF instead of __FUNCTION_DEF
-
-lib/readline/parens.c
-       - include "config.h" if HAVE_CONFIG_H is defined
-       - include <sys/select.h> if HAVE_SYS_SELECT_H is defined
-       - use HAVE_SELECT instead of FD_SET as the `configuring define';
-         define HAVE_SELECT if it is not already defined but FD_SET is
-
-lib/readline/readline.c, lib/readline/rltty.c
-       - the __GO32__ include file is <pc.h>
-
-lib/tilde/tilde.c
-       - rewrote tilde_expand_word, eliminated static u_name array in
-         favor of using xmalloc
-
-lib/tilde/tilde.h
-       - use single leading underscore for file inclusion guard
-
-lib/readline/vi_mode.c
-       - use KEYMAP_SIZE rather than a literal 127 as the loop limit when
-         creating the overstrike keymap
-
-support/install.sh
-       - new file, from the make-3.71 distribution
-
-                                  8/17
-                                  ----
-lib/readline/complete.c, lib/readline/readline.h
-       - new variable, rl_basic_quote_characters, used to see
-         if a word break character was a quoting character, so we can
-         do appropriate quoting after the completion
-
-lib/readline/parens.c
-       - use rl_basic_quote_characters when trying to find a matching
-         open paren
-
-lib/readline/doc/rltech.texinfo
-       - description of rl_basic_quote_characters
-
-                                  8/18
-                                  ----
-newversion.c
-       - renamed to support/mkversion.c, which builds to mkversion
-
-cpp-Makefile
-       - changed to use support/mkversion
-       - removed instances of $< except in suffix rules -- some makes don't
-         handle those right
-
-lib/readline/rldefs.h
-       - make sure to #undef HAVE_DIRENT_H on NeXT machines
-
-                                  
-                                  8/19
-                                  ----
-lib/readline/readline.h
-       - removed some duplicate function declarations
-
-trap.h
-       - define DEBUG_TRAP as NSIG for the last slot in trap_list
-       - define EXIT_TRAP as 0
-       - declare trap_list as array of unknown size, since this is just a
-         header file
-
-trap.c
-       - extend trap_list and sigmodes to NSIG+1
-       - initialize DEBUG_TRAP to do nothing; changes to functions to handle
-         DEBUG_TRAP
-       - let decode_signal return OK if NSIG is given, even though this will
-         vary between systems, for DEBUG_TRAP
-       - make reset_signal_handlers and restore_original_signals loop from
-         1 to NSIG, not 0 to NSIG
-       - change GET_ORIGINAL_SIGNAL to try to get the original signal handler
-         only if `sig' is less than NSIG
-       - restore_default_signal just frees the trap string for both EXIT_TRAP
-         and DEBUG_TRAP
-       - run_debug_trap: new function to run traps on DEBUG
-       - free_trap_command: new function to free a trap string if it is
-         really a command and not one of the special trap values
-       - if a SIGINT trap resets the SIGINT trap string, free the old string
-       - new function: set_debug_trap(char *), which will reset the DEBUG
-         trap string, suitable for calling from an unwind-protect handler
-
-signames.c
-       - arrange things so that signal_names[NSIG] == "DEBUG"
-
-builtins/trap.def
-       - make sure traps on DEBUG are printed
-
-execute_cmd.c
-       - call run_debug_trap at the end of the `cm_simple' case in
-         execute_command_internal
-       - change execute_function so that traps on DEBUG do not propagate
-         into the function
-
-documentation/bash.1, documentation/features.texi
-       - documented the new DEBUG trap
-
-                                  8/20
-                                  ----
-shell.c, config.h
-       - made the name of the restricted shell configurable in config.h;
-         the option is RESTRICTED_SHELL_NAME
-
-shell.c
-       - if the shell is invoked as `sh', enter Posix.2 mode after running
-         /etc/profile and ~/.profile
-
-builtins/read.def
-       - added a -p option for a prompt string, which is displayed before
-         trying to read anything
-
-documentation/bash.1
-       - description of `read -p'
-       - description of new -r and -s options to `jobs' 
-
-documentation/features.texi
-       - description of new -r and -s options to `jobs' 
-
-jobs.c
-       - new functions: list_running_jobs, list_stopped_jobs
-       - list_jobs -> list_all_jobs
-       - new function `print_job' to do the work for all of the list*jobs
-         functions
-       - list_one_job type now void, calls print_job to do the work
-
-jobs.h
-       - new declarations for list_running_jobs, list_stopped_jobs
-       - list_one_job now void
-       - list_jobs -> list_all_jobs
-
-builtins/jobs.def
-       - new options: -r to print only running jobs, -s to print only
-         stopped jobs
-
-                                  8/22
-                                  ----
-lib/readline/readline.c
-       - don't try to expand a null prompt string
-
-subst.c
-       - remove special handling of hostname_completion_file and
-         history_control; HOSTFILE and HISTCONTROL are the acceptable
-         names
-       - new function sv_histignore; call if HISTIGNORE variable is
-         assigned to
-
-bashhist.c
-       - new functions and declarations for handling HISTIGNORE variable
-         and its specifications for command lines to ignore
-       - change maybe_add_history to call history_should_ignore if the
-         HISTCONTROL tests are passed
-
-documentation/bash.1, documentation/features.texi
-       - removed mention of history_control and hostname_completion_file
-       - added description of HISTIGNORE
-
-                                  8/23
-                                  ----
-array.c, array.h
-       - promoted to the shell mainline code; the `array' subdir is now
-         gone
-
-variables.h
-       - include `array.h' for the ARRAY typedef
-
-variables.c
-       - changes to assignment() to handle array assignments a[x]=b
-       - split off the creation of new variables into a new function:
-         make_new_variable
-       - split off the construction of variable values for assignments and
-         bindings into a new function: make_variable_value
-       - new function: bind_array_variable, to handle the addition of
-         new array variables and indices
-
-subst.c
-       - changes to do_assignment_internal to handle a[x]=b:
-               parse the subscript out of the name and call evalexp() on it
-               call bind_array_variable to do the value assignment
-       - change the printing of assignment statements when -x is in effect
-         to before the variable binding is attempted, so any error messages
-         look better
-       - new functions for referencing indexed arrays and to find the length
-         of arrays or array indices
-
-                                  8/24
-                                  ----
-expr.c
-       - fixed up error reporting to use get_name_for_error if not executing
-         a builtin
-
-subst.c
-       - everywhere evalexp() is called, use maybe_expand_string to expand
-         the expression (calls expand_string if necessary)
-
-subst.h
-       - extern declarations for array convenience functions exported to the
-         rest of the shell
-
-variables.c
-       - more new convenience array functions: make_new_array_variable and
-         convert_var_to_array
-
-builtins/declare.def
-       - additions to declare_internal to add a -a flag which makes array
-         variables, and the requisite semantics (declare +a does not work,
-         declare -a name=value does not work, etc.)
-       - code to support the ksh-like declare a[] syntax to make array
-         variables
-
-builtins/setattr.def
-       - made set_or_show_attributes understand array variables and `-a'
-
-builtins/set.def
-       - changes to make `unset name' work, where name is an array variable
-       - changes to make `unset name[xxx]' work
-
-                                  8/25
-                                  ----
-
-lib/readline/readline.c
-       - make sure meta characters are added to a keyboard macro as
-         ESC-char if we are converting meta chars to ascii
-       - change rl_unix_word_rubout to handle repeat counts
-       - move the check of LC_CTYPE from rl_initialize to
-         readline_initialize_everything, where it should have been
-         all along
-
-error.c
-       - make sure <sys/types.h> is included before <fcntl.h>
-
-machines.h
-       - new entry for Bull DPX2
-
-lib/tilde/tilde.c
-       - include <sys/types.h> before <pwd.h>
-
-variables.c
-       - PS1 and PS2 are no longer non-unsettable
-
-                                  8/26
-                                  ----
-variables.c
-       - PPID, UID, and EUID, since they are read-only, need not appear on
-         the `non-unsettable' list
-       - PATH and IFS now have the `nounset' attribute set rather than use
-         a separate `non-unsettable' list
-       - the non-unsettable list and non_unsettable() are gone
-
-variables.h
-       - new define `non_unsettable_p' to test nounset attribute
-
-builtins/set.def
-       - `unset' now uses non_unsettable_p to tell whether a variable can
-         be unset even if it's not readonly
-
-builtins/read.def
-       - read -a arrayname will read a list of values from stdin and assign
-         them to the array `arrayname', splitting on " \t\n" (honoring
-         backslash quoting if -r is not supplied)
-
-builtins/declare.def
-       - print values of arrays when `display -a' is invoked
-
-builtins/exit.def
-       - remove references to `bye'
-
-                                  8/28
-                                  ----
-lib/readline/rltty.c
-       - removed calls to control_keypad; they cause problems on some
-         machines and should not really be performed by an application
-
-cpp-Makefile
-       - support for optionally linking array.o into the shell
-
-lib/glob/glob.c
-       - when returning an error after glob_filename on the directory name
-         returns an error result, make sure to free `result'.  This fixes
-         a memory leak for names passed to glob_filename which contain
-         globbing characters before the first `/' but do not match any
-         existing files
-
-                                  8/29
-                                  ----
-execute_cmd.c
-       - the `for' and `select' commands should expand their word lists
-         using expand_words_no_vars
-
-command.h, execute_cmd.c, general.c, make_cmd.c, print_cmd.c, subst.c,parse.y
-       - changed the `dollar_present', `quoted', and `assignment' members
-         of WORD_DESC to a single flags word
-
-                                  8/30
-                                  ----
-variables.c
-       - make get_string_value return array[0] if called with a variable
-         that is an array
-
-                                  8/31
-                                  ----
-lib/readline/display.c
-       - don't take the value of _rl_term_autowrap into account when
-         computing which screen line the cursor should be on; it screws
-         up wrapping on terminals without the `xn' capability
-
-lib/readline/examples/rltest.c
-       - new file, test code moved here from readline.c
-
-documentation/features.texi, lib/readline/doc/hsuser.texinfo
-       - fixed up printing of some of the shell options and the history
-         commands and modifiers
-
-subst.c
-       - make sure $name, where `name' is an array variable, returns
-         ${name[0]}
-
-variables.c
-       - convert a variable to an array even if index 0 is being assigned to,
-         instead of leaving it a `normal' variable
-
-                                   9/1
-                                   ---
-
-builtins/setattr.def
-       - make sure that array variables printed by `declare' single-quote
-         the value after the `=' so the statement can be reused as input
-
-variables.c
-       - make sure array variables can be exported (name=(assignments)), and
-         that the export code works.  The code is commented out because of
-         the possible confusion between an array and a regular string that
-         looks like an array assignment string.
-
-                                   9/2
-                                   ---
-variables.c
-       - make sure there is an executable file with the same name as
-         `shell' name in the current directory before assigning it to
-         $BASH at startup.  If there is not, just make $BASH the login
-         shell name
-
-                                   9/3
-                                   ---
-parse.y
-       - removed a reduction from the `list0' production that could cause
-         statements which require semicolons to be allowed without error
-         (like before a `}' in a group command)
-
-lib/readline/display.c
-       - new functions: _rl_save_prompt and _rl_restore_prompt to save and
-         restore prompt invisible character info
-       - if the redisplay code encounters a line shorter than the old one
-          and containing invisible characters, make sure that the cursor is
-         at the end of the new text before calling clear_to_eol
-       - new variable last_invisible containing the index in the prompt
-         string of the last invisible character.  We only have to redraw
-         the prompt string of _rl_last_c_pos is < last_invisible
-       - new function _rl_make_prompt_for_search to take care of setting
-         up the prompt string for a non-incremental search when the prompt
-         contains invisible characters
-       - fix so that a prompt string with invisible characters is not
-         redrawn each time through update_line (don't tputs term_cr unless
-         the cursor is before the last invisible character in the prompt
-         and will be moving past the last invisible char of the prompt
-
-lib/readline/isearch.c
-       - call _rl_save_prompt and _rl_restore_prompt when changing the prompt
-         to do i-search
-
-                                   9/4
-                                   ---
-lib/readline/readline.c
-       - doing_an_undo -> _rl_doing_an_undo for use by the vi-mode code
-       - rewrote rl_do_undo to reformat and eliminate a clumsy goto
-       - new split the add-to-kill-ring code off into a separate function,
-         _rl_copy_to_kill_ring
-       - added a new bindable function rl_copy_region_as_kill
-       - added a new bindable function rl_kill_region
-       - moved _rl_char_search_internal to here from vi_mode.c
-       - new bindable function rl_char_search
-
-lib/readline/vi_mode.c
-       - made `.' work for the `cw' and `[Ss]' commands, which implicitly
-         put the editor into insertion mode after they run
-       - split rl_vi_char_search code that actually searches for a character
-         into a new function, _rl_char_search_internal
-
-lib/readline/emacs_keymap.c
-       - bind M-= to possible-completions for ksh compatibility
-       - bind M-* to insert-completions
-       - bind C-x C-x to exchange-point-and-mark
-       - bind C-] to character-search
-       - bind C-@ to set-mark
-
-lib/readline/funmap.c
-       - new bindable function names: exchange-point-and-mark, kill-region,
-         copy-region-as-kill, character-search
-
-lib/readline/readline.h
-       - declare rl_exchange_point_and_mark, rl_copy_region_to_kill,
-         rl_kill_region, and rl_char_search externally
-
-documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
-       - document new exchange-point-and-mark bindable command
-       - documented M-* default emacs-mode binding to insert-completions
-       - documented new copy-region-as-kill and kill-region commands
-       - documented new character search emacs-mode command
-       - documented new binding for set-mark
-
-lib/readline/rldefs.h
-       - moved values for `dir' when searching for characters in the line
-         from vi_mode.c to here
-
-                                   9/6
-                                   ---
-general.c
-       - new function ansicstr, which decodes ANSI-C backslash-escaped
-         characters (with the addition of \e and \E to mean escape) and
-         returns a new string
-
-subst.c
-       - new expansion $'...' which translates ANSI-C backslash escapes
-         in `...' and expands to the result
-
-builtins/echo.def
-       - ifdefs for ANSI-C for \a and \v rather than just expanding to
-         literal ASCII values
-
-documentation/bash.1
-       - documented new $'...' expansion
-
-                                   9/7
-                                   ---
-builtins/enable.def
-       - fixed up the help text
-       - added a -s flag to restrict operation to Posix.2 `special' builtins
-       - removed -all option; -a is the way to do it now
-       - converted to use the builtin getopt
-
-builtins/common.c
-       - changed builtin_address_internal to return a pointer to a
-         struct builtin, which makes it much more useful.  Changed
-         find_shell_builtin and builtin_address accordingly
-       - new function find_special_builtin, which returns special builtins
-         ((flags & SPECIAL_BUILTIN) != 0)
-
-execute_cmd.c
-       - in Posix.2 mode, find special builtins before shell functions
-         when performing command lookup
-       - in find_user_command_internal, return NULL if there is no $PATH
-       - in Posix.2 mode, failure of a special builtin causes a non-
-         interactive shell to exit
-
-variables.c
-       - allow $PATH to be unset
-
-                                   9/8
-                                   ---
-input.h
-       - added a new `input type': st_stdin, for use when using readline,
-         since readline is not properly a string
-
-parse.y
-       - surgery on the grammar:
-               o added new `compound_list' production: a list that can end
-                 without a newline, `;' or `&' (used in subshell commands
-                 and case clause commands)
-               o removed shell_command_1, folded rules into command
-               o eliminated pattern_list_1; changed case_clause_sequence to
-                 directly incorporate the SEMI_SEMI token (a pattern_list_1
-                 was just a pattern_list with a trailing SEMI_SEMI)
-               o new `for_command' and `case_command' productions
-               o redirections -> redirection_list
-               o newlines -> newline_list
-               o redid the code that attaches redirections to the function
-                 command rather than the function definition and eliminated
-                 all of the shift/reduce conflicts
-       - changed with_input_from_stdin in the readline case to set
-         bash_input.type to st_stdin
-
-print_cmd.c
-       - a couple of changes to the way functions are printed
-
-shell.c
-       - only execute the PROMPT_COMMAND if input is not coming from a
-         string (bash_input.type != st_string).  This fixes the problem
-         of PROMPT_COMMAND being executed by `eval' commands in an
-         interactive shell
-
-                                  9/12
-                                  ----
-shell.c
-       - all interactive shells SIGHUP running jobs when exiting due to
-         a SIGHUP, not just login shells
-
-                                  9/13
-                                  ----
-config.h, config.h.mini
-       - changed the default primary prompt (PPROMPT) to "\s\$ "
-       - removed the INTERACTIVE_COMMENTS define
-
-flags.c
-       - interactive comments are now enabled by default, regardless of the
-         INTERACTIVE_COMMENTS define
-
-input.h
-       - a new enum: stream_type, used in the BASH_INPUT struct
-
-parse.y
-       - bash_input.type is now initialized to st_none
-
-bashhist.c
-       - command_oriented_history is now the default
-
-documentation/bash.1
-       - removed description of `nolinks' variable, updated set -P
-         description
-       - removed description of `notify' variable, updated set -b
-         description
-       - removed description of `noclobber' variable, updated set -C
-         description
-
-variables.c
-       - IFS may now be unset
-
-builtins/read.def
-       - now does the right thing if IFS is unset (acts as if it is
-         set to " \t\n")
-
-builtins/cd.def
-       - added a new parameter to change_to_directory () which says
-         whether or not to follow symlinks, instead of using the
-         global no_symbolic_links
-       - changed cd_builtin to accept a -P option to disable symlink
-         following temporarily
-
-builtins/ulimit.def
-       - instead of using a hardcoded `long' for the return type of the
-         rlimit functions, use RLIMTYPE, which defaults to long
-       - new defines string_to_rlimtype -> string_to_long and
-         print_rlimtype for systems which do not need `RLIMTYPE' defined
-         to something other than long
-
-general.c
-       - function replacements for string_to_rlimtype and print_rlimtype
-         for machines which have RLIMTYPE defined in the machine description
-
-general.h
-       - extern declarations for string_to_rlimtype and print_rlimtype
-
-shell.c
-       - don't source file named by $ENV at script startup if act_like_sh
-         is turned on
-
-machines.h
-       - new entry for amiga/netbsd
-       - change all the netbsd entries to add -DRLIMTYPE=quad_t to
-         SYSDEP_CFLAGS
-
-siglist.h
-       - define sys_siglist as _sys_siglist on the amiga only if USGr4 is
-         defined
-
-print_cmd.c
-       - change so that printf is not prototyped on LynxOS with gcc
-
-lib/readline/Makefile
-       - changed the `installdirs' target to not fail if the directories
-         do not need creating
-
-lib/readline/history.c
-       - fixed a bug in history_arg_extract which manifested itself when
-         !* was used after a command without arguments (e.g., pwd ; echo !*)
-
-                                  9/15
-                                  ----
-subst.c
-       - expand_word_internal should preserve the flags (other than
-         W_QUOTED) from the word passed as a parameter on the word it returns
-       - expand_words_internal renamed to expand_word_list_internal
-       - expand_word_list_internal does not perform word splitting or
-         globbing on words with the W_ASSIGNMENT bit set
-       - removed special treatment of `notify', `command_oriented_history',
-         `history_control', and `nolinks'
-       - rewrote some of the sv_* functions to remove or avoid calls to
-         sscanf, one of the most expensive C library functions
-
-variables.c
-       - don't look for $command_oriented_history at startup, since it now
-         defaults to `on'
-
-general.h, general.c
-       - new function posix_initialize to do whatever is necessary to enable
-         `Posix mode'
-
-shell.c, subst.c
-       - call posix_initialize
-
-general.c
-       - rewrote replacements for strchr, strrchr to make them faster
-
-builtins/enable.def
-       - new -f option and necessary support to load builtins from a shared
-         object file on systems supporting both dlopen() and dlsym().  New
-         builtins loaded this way can replace existing shell builtins or
-         add completely new functionality
-
-builtins.h
-       - mkbuiltins.c creates `static_shell_builtins', which is a fixed
-         array, `shell_builtins' points to this array initially
-       - extern declaration for current_builtin
-
-builtins/mkbuiltins.c
-       - change to creat static_shell_builtins[] and declare shell_builtins
-         as a pointer to it
-       - change to declare `current_builtin' in created builtins.c
-
-builtins/source.def
-       - print an error message and return failure if no filename argument
-         is supplied
-
-builtins/common.c
-       - current_builtin is set by find_shell_builtin, find_special_builtin,
-         and builtin_address_internal
-       - new function builtin_usage, which prints the contents of
-         current_builtin->short_doc
-
-builtins/{bind,declare,enable,fc,getopts,hash,history,jobs,kill,read,set,
-         setattr,trap,ulimit,umask}.def
-       - changed the builtins in these files to use builtin_usage() to
-         print usage messages
-
-cpp-Makefile
-       - support for the HAVE_DLOPEN and HAVE_DLSYM defines
-
-machines.h
-       - added -ldl and -Bdynamic to the SunOS4 entry
-
-documentation/{bash.1,features.texi}
-       - documented new enable -f option to dynamically load builtins
-
-                                  9/16
-                                  ----
-test.c
-       - added `==' as a synonym for `='
-
-                                  9/18
-                                  ----
-bashline.c
-       - include readline/rlconf.h so that VI_MODE is defined if
-         appropriate
-
-shell.c
-       - removed `-nobraceexpansion' option
-
-flags.c, flags.h
-       - added new -B flag; enabled if brace expansion is turned on
-
-subst.c
-       - use brace_expand instead of !no_brace_expand
-
-builtins/set.def
-       - change set -o braceexpand to be equivalent to set -B
-
-parse.y
-       - in with_input_from_stdin, do nothing if bash_input.type already
-         is st_stdin or if there is already a stream with type st_stdin
-         on the saved stream stack
-       - new function stream_on_stack to find out if there is a saved
-         stream of a specified type
-
-documentation/bash.1, documentation/features.texi
-       - doeumented new set -B option
-       - removed -nobraceexpansion shell startup option
-
-                                  9/19
-                                  ----
-builtins/reserved.def
-       - made `help select' work
-
-cpp-Makefile
-       - removed references to the nonexistant `load.def'
-       - removed conditionals based on GETOPTS_BUILTIN
-
-builtins/getopts.def
-       - no longer $DEPENDS_ON GETOPTS_BUILTIN
-
-config.h, config.h.mini, builtins/help.def
-       - made the `help' builtin dependent on the HELP_BUILTIN define
-       - removed GETOPTS_BUILTIN
-
-builtins/mkbuiltins.c
-       - made the `$DEPENDS_ON' clause work for reserved words and
-         shell control structures in reserved.def by writing out
-         dependencies to builtext.h even if there is no `function'
-       - made the long_doc for each builtin and reserved word get
-         written out to builtins.c with #ifdef HELP_BUILTIN surrounding
-         the doc strings -- this makes the minimal shell much smaller
-
-shell.c, documentation/bash.1
-       - removed `-quiet' long option
-
-parse.y
-       - make sure that word splitting is not performed on the prompt
-         string after expanding in prompt_string_decode by calling
-         expand_string_unsplit instead of expand_string
-
-lib/readline/bind.c
-       - new readline variable `mark-directories': if set, completed
-         directory names have a slash appended
-
-lib/readline/complete.c
-       - support for `mark-directories'
-
-documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
-       - documented the new `mark-directories' variable
-
-builtins/bind.def
-       - new option `-r' to remove a binding for a specified key sequence
-       - make sure that a failure return from bind resets the keymap
-         correctly if a -m option was supplied
-
-documentation/{bash.1,features.texi}
-       - documented new bind -r option
-
-                                  9/20
-                                  ----
-builtins/jobs.def
-       - new `disown' builtin
-
-documentation/{bash.1,features.texi}
-       - documented new `disown' builtin
-
-cpp-Makefile
-       - removed support for `MAKE_SHELL' cpp variable
-       - renamed endian.aux to mkendian, look for endian.c in support dir
-       - link in array.o, alias.o, braces.o, bracecomp.o
-         unconditionally, rely on cpp defines in the files to exclude code
-       - pass -DHAVE_SYS_SIGLIST if sys_siglist is defined
-       - pass -DHAVE_GETCWD if HAVE_GETCWD is defined in machines.h
-       - pass -DHAVE_VFPRINTF_EMUALTION through from machines.h to
-         compilation
-
-array.c
-       - don't compile in body of file unless ARRAY_VARS is defined
-
-braces.c
-       - don't compile in body of file unless BRACE_EXPANSION is defined
-
-alias.c
-       - don't compile in body of file unless ALIAS is defined
-
-bracecomp.c
-       - don't compile in body of file unless BRACE_EXPANSION and READLINE
-         are defined
-
-bashline.c
-       - don't compile in body of file unless READLINE is defined
-
-bashhist.c
-       - don't compile in body of file unless HISTORY is defined
-
-siglist.c
-       - don't compile in body of file unless HAVE_SYS_SIGLIST is not
-         defined
-
-getcwd.c
-       - don't compile in body of file unless HAVE_GETCWD is not defined
-
-vprint.c
-       - don't compile in body of file unless USE_VFPRINTF_EMULATION
-         is defined
-
-support/mksysdefs
-       - for SCO machines, define SYSDEF as SCO or SCOv4
-
-lib/readline/readline.[ch]
-       - new function rl_push_macro_input (s), which makes s the current
-         macro input string
-
-endian.c
-       - renamed to support/endian.c
-
-                                  9/21
-                                  ----
-lib/readline/complete.c
-       - more file types for the VISIBLE_STATS code:
-               |       FIFOs
-               %       character special devices
-               #       block special devices
-
-lib/readline/isearch.c
-       - made RETURN an alternate search string terminator
-
-builtins/read.def
-       - removed use of stdio -- unbuffered stdio on a dup of fd 0 is
-         a big loss
-
-builtins/set.def
-       - new function: minus_o_option_value, returns 1, 0, or -1 given
-         a -o option name (-1 means a bad name)
-       - reorganized list_minus_o_options to be more efficient
-
-execute_cmd.c
-       - when expanding a here document, use maybe_expand_string rather
-         than a simple expand_string to try a speed things up a bit
-
-input.c
-       - don't compile in the body of the file unless BUFFERED_INPUT
-         is defined in config.h
-
-                                  9/22
-                                  ----
-jobs.h, siglist.h
-       - replaced instances of Solaris with SunOS5
-
-shell.c
-       - changed long option parsing code so that --arg is equivalent
-         to -arg, when `arg' is one of the recognized multichar options
-
-builtins/history.def
-       - rewrote to regularize the option parsing and use internal_getopt
-       - now allows only one of -awrn to be specified
-       - added a new -p option that adds each of its arguments to the
-         end of the history list, and deletes the `history -p' history
-         entry
-
-builtins/trap.def
-       - added new -p option to display specified trap values, or all
-         trap values if no other arguments supplied
-
-documentation/{bash.1,features.texi}
-       - documented new history -p option
-       - documented new trap -p option
-
-                                  9/25
-                                  ----
-lib/readline/display.c
-       - fixed up the calcluation of the correct cursor line number (a `+'
-         and `-' were transposed in the calculation of `nleft')
-
-                                  9/26
-                                  ----
-general.c
-       - moved isint() here from test.c, renamed to legal_number
-
-general.h
-       - extern declaration of legal_number
-
-test.c
-       - only compile isint() if SHELL is not defined, define it as
-         legal_number otherwise
-
-trap.c
-       - use legal_number in decode_signal instead of sscanf()
-
-builtins/common.c
-       - moved list_sigs to here from trap.def, renamed to
-         display_signal_list
-       - changed get_numeric_arg to use legal_number instead of doing
-         the parsing and calculation itself
-
-builtins/common.h
-       - extern declaration for display_signal_list
-
-builtins/{trap.def
-       - changed to use display_signal_list for trap -l
-
-builtins/kill.def
-       - changed to use display_signal_list for kill -l
-       - added new kill -n signum option
-
-documentation/bash.1
-       - added description of new kill -l signame functionality
-       - added description of new kill -n signum feature
-       - added description of new enable -d option
-
-builtins.h
-       - added a char *handle member to `struct builtin' for later use
-       - new flags value: BUILTIN_DELETED
-
-builtins/mkbuiltins.c
-       - added code to inintialize the `handle' member to null in the
-         static builtin array definition
-
-builtins/common.c
-       - don't `find' a builtin if the BUILTIN_DELETED flag is set in the
-         flags word of the struct builtins array
-
-builtins/enable.def
-       - new option -d to remove a builtin loaded with -f, depends on
-         HAVE_DLCLOSE
-
-cpp-Makefile
-       - pass -DHAVE_DLCLOSE through from machines.h to compilation
-
-machines.h
-       - change SunOS4 machine description to define HAVE_DLCLOSE
-
-                                  9/27
-                                  ----
-shell.c
-       - split shell exit code off into a separate function: exit_shell(status)
-
-builtins/exec.def
-       - rewrote for clarity and speed and to use the builtin getopt()
-       - added new -a, -c, and -l options
-       - now calls exit_shell if shell_execve fails and the shell is not
-         interactive
-
-documentation/bash.1
-       - documented the new options to `exec'
-
-                                  9/28
-                                  ----
-builtins/exec.def
-       - if the execve fails and the shell is not going to exit, reinitialize
-         traps and signals
-       - only call end_job_control if subshell_environment != 0
-       - exec should exit unconditionally if the execve fails and
-         subshell_environment != 0
-
-subst.c
-       - if valid_brace_expansion_word fails, make sure `temp' is set to
-         NULL before trying to free it after the `goto bad_substitution'
-
-cpp-Makefile
-       - add $(CPPFLAGS) to the compilation flags when making `mksignames'
-
-documentation/features.texi
-       - fixed a typo in the tilde expansion section
-
-                                  9/29
-                                  ----
-machines.h
-       - DEC OSF/1 has the dlopen/dlsym/dlclose set of library functions
-
-shell.c
-       - don't execute /etc/profile if -noprofile given
-
-builtins/pushd.def
-       - new file, pushd/popd/dirs split off from cd.def
-       - replaced calls to sscanf with calls to legal_number
-
-builtins/Makefile, cpp-Makefile
-       - changes for pushd.def
-
-config.h, config.h.mini
-       - ALLOW_RIGID_POSIX_COMPLIANCE is no longer used
-
-subst.c, variables.c
-       - GETOPTS_BUILTIN is no longer used
-
-variables.c
-       - if the first character of argv[0] is not a `/', search the path
-         and canonicalize the result to find out how to set $BASH
-
-                                  10/2
-                                  ----
-builtins/enable.def
-       - changed enable_shell_builtin to use builtin_address_internal to find
-         the builtin rather than searching the list itself
-       - list_some_builtins skips a builtin if flags & BUILTIN_DISABLED != 0
-       - rewrote dyn_load_builtin to take a list of names to load from a
-         single filename
-       - don't dlclose the shared object in dyn_unload_builtin unless its
-         reference count drops to 0
-
-builtins/test.def
-       - don't bother making new copies of everything in the argument list
-         when constructing the argc and argv for test_command; just make
-         sure not to free anything but ARGV
-
-                                  10/3
-                                  ----
-bashline.c
-       - remove C-e binding in vi movement mode which switches into emacs
-         mode
-
-general.c
-       - make xfree only try to call free on non-null strings
-
-                                  10/4
-                                  ----
-builtins/read.def
-       - new `-e' option that uses readline to read the line
-       - if one of the arguments is not a legal variable name, print an
-         error message and return failure
-
-builtins/reserved.def
-       - changed the `Variables' to `variables' so `help variables' works
-
-subst.c
-       - set startup_state to 2 in child of command substitution to try to
-         avoid some unneeded forks
-
-trap.c
-       - removed call to reset_terminating_signals in restore_original
-         signals; callers are now required to take care of that themselves,
-         if necessary
-
-execute_cmd.c, subst.c
-       - added necessary calls to reset_terminating_signals before calls
-         to restore_original_signals
-
-execute_cmd.c
-       - when executing a null command in a subshell, don't bother passing
-         a string to make_child; just pass NULL
-       - in execute_builtin_or_function, don't add so many unwind-protects
-         if `subshell' == 1
-       - in command_substitute, call cleanup_the_pipeline to discard the
-         old pipeline, so pipeline_pgrp does not get set to 0 in
-         start_pipeline, which is called by make_child via making_children
-
-jobs.c, nojobs.c
-       - new function, ignore_tty_job_signals, to set SIGTTIN, SIGTTOU, and
-         SIGTSTP to SIG_IGN
-       - new function, default_tty_job_signals, to set those signals
-         to SIG_DFL
-       - new function, cleanup_the_pipeline to free up the_pipeline and
-         set it to NULL
-
-                                  10/5
-                                  ----
-builtins/history.def
-       - the history -p option is now -s (to sort of parallel the ksh
-         print -s option)
-       - the -s option now combines all of its arguments into a single
-         string and appends the string to the history list
-       - new history -p option to history expand each argument and print
-         the result without modifying the history list
-
-documentation/bash.1, documentation/features.texi
-       - documented the new -e option to read
-       - documented the new history -s and -p options
-       - documented the new cd and pwd -L options
-
-builtins/cd.def
-       - changed cd and pwd to use internal_getopt
-       - added the -L option to cd and pwd to follow symlinks (like if
-         set +P were issued)
-
-builtins/pushd.def
-       - added text for dirs +N and dirs -N to the dirs builtin long doc
-       - added -v option to dirs to print dirstack one dir per line with
-         stack index prepended
-
-                                  10/6
-                                  ----
-execute_cmd.c
-       - split the command searching code into a new function:
-         search_for_command
-       - removed a bunch of dead code from shell_execve
-       - removed call to reset_terminating_signals when executing a function
-         or builtin in a subshell (either via (xxx) or xxx &)
-       - don't add unwind protects at all in execute_function if subshell == 1
-
-lib/readline/chardefs.h
-       - new macro ALPHABETIC(c), returns 1 if c is a letter or digit
-
-lib/readline/readline.c
-       - don't call abort() in rl_change_case(); it's impolite in a
-         library function
-       - new macro, SWAP, used to swap values of two integers
-       - changed alphabetic to use ALPHABETIC, made it slightly faster
-       - modified rl_change_case() so that word capitalization is the
-         same as GNU Emacs
-
-lib/readline/search.c
-       - in noninc_dosearch, don't reset the history positition to what
-         it was if we're currently in vi editing mode (as per Posix.2
-         `/' and `?' vi-mode editing commands)
-
-                                  10/7
-                                  ----
-builtins/common.c
-       - changed single_quote and double_quote to use char pointers
-         rather than string indexing
-       - new function backslash_quote(string), which quotes special
-         characters in STRING using backslashes
-
-                                  10/8
-                                  ----
-alias.h
-       - added an extern declaration for alias_expand_word
-
-parse.y
-       - broke the alias expansion code off into a function
-         alias_expand_token; its return value says whether to re-read
-         a token or go on
-       - changed the alias expansion code to handle aliases that expand
-         to nothing better
-       - broke the code that does special-case token recognition off into
-         a function: special_case_tokens
-       - used the new functions to make sure that the special-case tokens
-         can be the expansion of an alias
-       - made sure that if in `posix mode' that reserved words cannot be
-         aliased and that all reserved words can be the values of aliases
-         and be recognized after expansion
-
-                                  10/10
-                                  -----
-lib/readline/complete.c
-       - replaced #ifdef SHELL code with two new exported readline interfaces:
-         rl_filename_quoting_function and rl_filename_dequoting_function.
-         Both return a pointer to char.
-       - new extern variable rl_filename_quote_characters, containing a list
-         of characters that cause a word to be quoted by the completer if
-         they appear in a file name
-
-bashline.c
-       - new functions for rl_filename_quoting_function and
-         rl_filename_dequoting_function.
-       - initialize rl_filename_quoting_function and rl_filename_dequoting_function
-         in initialize_readline
-       - initialize rl_filename_quote_characters
-
-lib/readline/readline.h
-       - extern declarations for new public interfaces
-         rl_filename_quoting_function and rl_filename_dequoting_function
-       - added declarations for NO_MATCH, SINGLE_MATCH, and MULT_MATCH for
-         use by the filename quoting functions
-       - new extern declaration for rl_filename_quote_characters
-
-lib/readline/history.c
-       - made a version of single_quote be compiled in if SHELL is not
-         defined
-       - the `q' and `x' modifiers are now compiled in by default, not
-         just if SHELL is defined
-
-                                  10/11
-                                  -----
-subst.c
-       - string_quote_removal was being a little overzealous in stripping
-         things within embedded quoted strings when `quoted' was == 1.
-         Only remove one level of quotes each time through the function
-         This fixes the problem of quotes being stripped incorrectly in
-               var="The text \"hello\" should show up inside double quotes."
-
-lib/readline/history.c
-       - made the behavior of single quotes inhibiting history expansion
-         configurable with a variable: history_quotes_inhibit_expansion,
-         not just shell-specific
-       - added a new variable: history_search_delimiter_chars, which is a
-         list of characters that can also delimit a history search string
-
-lib/readline/history.h
-       - extern declaration of history_quotes_inhibit_expansion
-       - extern declaration of history_search_delimiter_chars
-
-bashhist.c
-       - set history_quotes_inhibit_expansion to 1 in bash_initialize_history
-       - initialize history_search_delimiter_chars to ";&()|<>"
-
-lib/readline/doc/{rltech,hstech}.texinfo
-       - documented new readline and history library interfaces
-
-parse.y
-       - split the part of read_token that reads a single word off into
-         a new function: read_token_word
-
-lib/readline/chardefs.h
-       - include <string.h> by default; only check HAVE_STRING_H if
-         HAVE_CONFIG_H is defined
-
-                                  10/12
-                                  -----
-parse.y
-       - moved the `RESET' code out of read_token into reset_parser
-       - rewrote some of decode_prompt_string to make it more efficient
-       - rewrote more of read_token_word to make it more efficient
-       - make shell_getc cast its result to `unsigned char' before
-         returning it.  This fixes the problem of \255 appearing in a
-         line
-
-machines.h
-       - new entry for m68k machines running Linux
-
-                                  10/13
-                                  -----
-builtins/exec.def
-       - use search_for_command rather than find_user_command to look up
-         the path to exec, so the hash table and temp environment are used
-
-variables.c
-       - don't rebuild the export environment after binding a shell
-         function unless that function is exported
-       - make sure that copy_variable copies arrays correctly, using
-         dup_array()
-       - in assign_in_env, only call tilde_expand if a `~' appears somewhere
-         in the value
-
-execute_cmd.c
-       - if we found $PATH in the temp environment in search_for_command,
-         call find_user_command_in_path instead of find_user_command, so
-         we don't try to search the temporary env again.  Call
-         find_user_command as normal if PATH is not in the temp environment
-
-subst.c
-       - char_is_quoted should not be compiled in if READLINE is not
-         defined
-
-lib/readline/complete.c
-       - add a new external interface: Function *rl_char_is_quoted_p,
-         which is called to find out whether a word break character is
-         quoted and should be skipped over when breaking words for
-         the completer
-
-lib/readline/readline.h
-       - extern declaration for rl_char_is_quoted_p
-
-bashline.c
-       - initialize rl_char_is_quoted_p to char_is_quoted
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_char_is_quoted_p
-
-lib/readline/readline.c
-       - extend the undo records so that a `start' or `end' value of -1
-         means rl_point and a value of -2 means rl_end.  This is a start
-         to better support for undoing vi-mode commands like `C'
-
-lib/readline/vi_mode.c
-       - don't save what's entered in insert mode after a `C' command
-         for later insertion when doing a `redo'
-
-                                  10/16
-                                  -----
-test.c
-       - rewrote unop() to use a switch statement instead of a call to
-         strchr
-       - remove #ifdef SHELL blocks by defining getuid, geteuid, getgid
-         and getegid as references to current_user.{uid,euid,gid,egid}
-         respectively
-       - change group_member to only fetch the group list once and to use
-         NGROUPS_MAX or NGROUPS to find the maximum number of groups
-
-documentation/bash.1
-       - fixed description of ${#@} expansion
-
-                                  10/17
-                                  -----
-support/bashbug.sh
-       - add a `From:' line to the mail message handed to rmail
-
-                                  10/18
-                                  -----
-test.c
-       - rewrote binary_operator for speed and clarity
-       - removed age_of, added arithcomp(), filecomp() to support new
-         binary_operator
-       - removed support for `-l string'
-
-documentation/bash.1
-       - removed mention of `-l string' from `test' description
-
-                                  10/19
-                                  -----
-cpp-Makefile
-       - pass PROGRAM as the double-quoted shell name to compilation of
-         shell.c and error.c
-
-                                  10/20
-                                  -----
-support/bashbug.sh
-       - don't try to use ${word:-expansion}; ultrix sh doesn't understand it
-
-hash.c
-       - new function: flush_hash_table (table, free_data) to delete the
-         contents of a given hash table.  *free_data is called to free
-         each item's data, if free() is inappropriate
-
-builtins/hash.def
-       - new functions free_hashed_filenames and free_filename_data to
-         flush the table of hashed filenames
-
-subst.c
-       - change sv_path to call flush_hashed_filenames directly
-
-variables.c
-       - only sort arrays of variables or functions for the environment or
-         `set' output if `posixly_correct' is set.  sh does it; ksh does
-         not, and there's no real requirement to do so
-       - rewrote delete_all_variables so it looks like flush_hash_table
-
-trap.c
-       - two new flag values for the `sigmodes' array: SIG_INPROGRESS,
-         which is set for sigmodes[sig] while a trap handler for sig
-         is executing, and SIG_CHANGED, which is set if a new trap
-         value is set when SIG_INPROGRESS is set.  This should obviate
-         the need to set the trap value to IMPOSSIBLE_TRAP_HANDLER while
-         the trap handler is executing
-
-alias.c
-       - rewrote delete_all_aliases so it looks like flush_hash_table
-
-                                  10/21
-                                  -----
-alias.c
-       - changed delete_all_aliases to call flush_hash_table directly
-         and use free_alias_data as the `free function' argument
-
-variables.c
-       - changed delete_all_variables to call flush_hash_table directly
-
-tests/run-test, tests/test-tests
-       - new scripts to run tests of the `test' builtin as part of the
-         regression test
-
-                                  10/24
-                                  -----
-bashline.c
-       - initialize_hostname_list needs to look for HOSTFILE first
-       - hostname list is no longer sorted
-       - replaced binary search in hostnames_matching with a simple
-         linear search
-       - made the code that reads hostnames skip over the first word on
-         a line only if its first character is a digit, assuming it's
-         an Internet address
-
-copy_cmd.c
-       - removed copy_select_command; overload copy_for_command, since the
-         select and for command structs are exactly the same
-
-make_cmd.c
-       - combined make_for_command and make_select_command into a new
-         function, make_for_or_select
-       - rewrote make_here_document to remove the unneeded `switch' statement
-
-builtins/common.c, builtins/hash.def
-       - moved remove_hashed_filename from common.c to hash.def
-
-builtins/common.c
-       - remove the \r from error message printed by get_working_directory
-       - change parse_and_execute to call dispose_fd_bitmap directly then
-         discard the `pe_dispose' unwind-protect frame rather than running
-         the frame
-
-builtins/set.def
-       - changed how set -o options are set and retrieved, using set and get
-         functions to avoid all that special-case inline code
-
-                                  10/26
-                                  -----
-test.c
-       - added unary operator `-o', which returns true of the shell option
-         name given as an argument is set
-
-lib/readline/readline.c
-       - added a definition of set_lines_and_columns to be called if the
-         library is not compiled -DSHELL
-
-shell.c
-       - added a --verbose startup long option
-       - renamed `--nolineediting' to `--noediting'
-
-                                  10/27
-                                  -----
-lib/readline/util.c
-       - new file, for readline utility functions
-
-lib/readline/readline.c
-       - moved a bunch of functions to util.c
-
-subst.c
-       - make sure set_sigint_handler is called only by the subshells doing
-         command and process substitution
-
-builtins/read.def
-       - make sure that rlbuf is initialized to null
-
-trap.c
-       - new flag for sigmodes[] members: SIG_IGNORED, set when signal is
-         ignored, even if it's special or untrappable
-       - new function: signal_is_ignored (sig), which returns 1 if SIG
-         has been ignored with trap ''
-
-builtins/trap.def
-       - changed to use the builtin getopt
-
-shell.c
-       - added a check to sigint_sighandler for whether or not SIGINT has
-         been ignored with trap '' in an interactive shell.  This fixes
-         the problem with `read' being interruptible in an interactive
-         shell even if SIGINT is being ignored
-
-                                  11/8
-                                  ----
-lib/readline/Makefile
-       - added definition of INSTALLED_HEADERS, just in case
-
-                                  11/11
-                                  -----
-variables.c
-       - change assign_in_env so that it doesn't use savestring ("") to
-         set `value' to a dummy value; don't call strcpy if there's
-         nothing to copy
-
-                                  11/15
-                                  -----
-general.h
-       - new defines, legal_variable_starter and legal_variable_char
-       - new define SIGRETURN(n) which encapsulates the VOID_SIGHANDLER
-         differences when returning from a signal handler
-
-general.c, variables.c, subst.c, expr.c
-       - use legal_variable_starter and legal_variable_char
-
-shell.c, nojobs.c, trap.c, jobs.c, builtins/suspend.def
-       - change to use SIGRETURN macro
-
-subst.c
-       - massive changes to clean up the code and remove unused code and
-         variables
-       - expanded the ${#param} code so that all of the shell special
-         variables may have their length taken
-
-tests/run-tilde
-       - new test for tilde expansion
-
-bashline.c
-       - fix a bug in command_subst_completion_matches: make sure that
-         `matches' is static
-
-parse.y
-       - don't print a prompt when not using readline if the current
-         input type is st_string
-
-machines.h
-       - add -DINT_GROUPS_ARRAY to SYSDEP_CFLAGS on ultrix
-       - fixes to the cray machine description from Bill Jones
-
-braces.c
-       - fixed a bug in brace_gobbler that prevented a backslash from
-         escaping an open brace
-
-                                  11/16
-                                  -----
-tests/braces-tests, tests/run-braces
-       - new regression tests for brace expansion
-
-builtins/pushd.def
-       - new -p option for `dirs' that prints dirstack on per line
-         without numbers
-
-                                  11/17
-                                  -----
-command.h
-       - move redirection error values here from execute_cmd.c
-       - new defines INPUT_REDIRECT and OUTPUT_REDIRECT
-
-shell.c
-       - make the default MAINTAINER `bash-maintainers@prep.ai.mit.edu'
-
-execute_cmd.c
-       - many changes to clean up the code and remove unused variables and
-         functions
-       - new functions: redirection_error, find_in_path_element,
-         find_absolute_program
-       - fixes to redirection error reporting, so things like exec 4<&y*
-         and exec 4<&$FOO are displayed correctly
-       - removed the `lexical_scoping' code
-
-flags.c, flags.h
-       - removed the lexical_scoping code and variable
-
-documentation/{bash.1,features.texi}
-       - removed the description of the `-l' option to `set'
-
-jobs.c
-       - don't try to open /dev/tty to get the controlling tty, use
-         fd 2 like other job control shells
-
-lib/readline/vi_mode.c
-       - when using `d%', make sure the matching character found by
-         the `%' is deleted by the `d'.  Ditto for `c%'.
-       - stub function for vi undo: rl_vi_undo.  Right now it just
-         calls rl_undo_command
-
-lib/readline/vi_keymap.c
-       - change to call rl_vi_undo instead of rl_undo_command
-
-lib/readline/readline.h
-       - extern declaration for rl_vi_undo
-
-                                  11/21
-                                  -----
-execute_cmd.c
-       - fix to print_select_list to avoid a possible divide-by-zero error
-         and subsequent core dump
-       - fix to execute_select_command to just return 0 if there is no
-         select list
-
-parse.y
-       - remove `in' from the list of tokens that cannot take trailing
-         semicolons
-
-builtins/read.def
-       - make sure that leading IFS whitespace is removed before calling
-         get_word_from_string the first time.  This matters when IFS is
-         not " \t\n" but non-null
-       - make sure the array code uses IFS to split the input string
-         before assigning it to the array
-
-                                  11/22
-                                  -----
-parse.y
-       - make sure that if \nnn expands to CTLESC or CTLNUL, the char
-         is protected by a CTLESC
-       - new variable `promptvars', which, if non-zero, causes all the
-         variable expansions to be performed in decode_prompt_string.
-         If zero, only quote removal is performed.
-
-builtins/source.def
-       - new variable: `source_uses_path', set to 1 by default.  If
-         non-zero, the `.' builtin uses $PATH to find the script to
-         source
-
-builtins/getopt.h
-       - cut out everything not needed by bash
-
-builtins/getopt.c
-       - cut out everything not needed by bash
-
-builtins/getopts.def
-       - removed the call to getopt_set_posix_option_order, which is no
-         longer necessary
-
-execute_cmd.c
-       - split the code that writes out here documents to files out into
-         a separate function
-
-                                  11/23
-                                  -----
-builtins/getopt.c, builtins/getopt.h, builtins/getopts.def, subst.c
-       - prefix all of the getopt variables and functions with `sh_'
-         (that is, optind becomes sh_optind and getopt becomes sh_getopt)
-         to avoid confusion with a system's getopt(3) implementation
-
-subst.c
-       - new functions: parameter_brace_substring and verify_substring_values
-         and changes to expand_word_internal to support the ksh-93
-         ${var:exp1:exp2} substring syntax
-
-documentation/bash.1
-       - documented the new ${var:exp1[:exp2]} syntax
-
-                                  11/25
-                                  -----
-builtins/setattr.def
-       - don't allow readonly -n at all
-
-array.c
-       - split array_to_string into two parts; a new function
-         array_to_string_internal does the real work
-       - new function array_subrange () to return a subset of the elements
-         in an array
-
-subst.c
-       - augmented the substring code to handle the positional parameters
-         and array variables
-       - made quote_list and dequote_list return their WORD_LIST *
-         arguments so they can be used like
-
-               z = string_list ((quoted ? quote_list (l) : l), xxx);
-
-       - augmented the ${xxx} expansion code to do indirect variable
-         references if the first character of the variable name is `!'
-
-tests/new-exp.tests
-       - added regression tests for substring expansion
-       - added regression tests for indirect variable references
-
-                                  11/28
-                                  -----
-builtins/set.def
-       - added set -o hashfunc and set -o onecmd, synonyms for set -h
-         and set -t, respectively
-
-builtins/shift.def
-       - changed shift so that the positional parameters are not changed
-         if the argument is > $# (this is ksh and Posix.2, unlike sh)
-
-documentation/bash.1
-       - documented true behavior of `shift'
-
-lib/readline/kill.c
-       - split the kill ring management code and the kill commands out
-         from readline.c into this file
-
-lib/readline/undo.c
-       - split the code that does undoing out of readline.c into this file
-
-shell.c
-       - force the shell to exit with status 127 if a longjmp back to
-         run_one_command occurs with bash -c
-       - force the last command exit status to 1 if a
-         longjmp (top_level, DISCARD) is performed
-
-builtins/read.def
-       - don't throw away partial lines after reading EOF
-
-subst.c
-       - command substitution should not inherit the -e flag
-
-builtins/source.def
-       - make sure to set the exit status correctly when in posix mode
-         and the filename argument to `.' does not exist
-
-                                  11/29
-                                  -----
-lib/readline/input.c
-       - split the input buffering and character input code out of
-         readline.c to here
-
-lib/readline/macro.c
-       - moved the keyboard macro management code to here from readline.c
-
-lib/readline/readline.c
-       - removed the STATIC_MALLOC code
-
-lib/readline/rltty.c
-       - return -1 in POSIX get_tty_settings if tcgetattr returns -1 and
-         errno != EINTR, even if output is being flushed
-
-                                  12/1
-                                  ----
-machines.h
-       - fixes to the hpux_8 and hpux_9 machine descriptions
-
-trap.c
-       - make run_exit_trap return the right exit status
-         (last_command_exit_value)
-       - run_exit_trap no longer preserves the value of last_command_exit_value
-         around the execution of the trap commands
-       - run_exit_trap now turns off SIG_TRAPPED and sets SIG_INPROGRESS
-         and will not try to run anything if SIG_INPROGRESS is set
-
-trap.h
-       - change definition for run_exit_trap
-
-shell.c
-       - call run_exit_trap only if trap[0] is set and not ignored
-
-builtins/exit.def
-       - make sure we only source the .bash_logout file once, even if it
-         contains a call to `exit'
-
-execute_cmd.c
-       - if we run an exit trap in a (...) user subshell, allow it to
-         override the exit status of the subshell
-
-lib/readline/readline.c
-       - made rl_delete_text bounds check its `to' argument, and limit
-         it at rl_end
-
-lib/readline/vi_mode.c
-       - make rl_vi_subst call `rl_delete_text' directly for the `s'
-         command
-
-support/mksysdefs
-       - define a new variable for the sysdefs.h file for ISC machines:
-         ISC_release, which can be ISC_2, ISC_3, or ISC_4
-
-machines.h
-       - don't `#undef' HAVE_GETCWD on ISC 4.x machines
-       - `#undef' HAVE_RESOURCE on ISC 4.x machines
-
-support/mkversion.c
-       - include "posixstat.h" rather than <sys/stat.h> for the benefit
-         of ISC machines
-
-                                  12/5
-                                  ----
-lib/readline/complete.c
-       - changed username_completion_function so that a null username
-         generates a list of all users as possible completions
-
-lib/readline/readline.h
-       - added definitions for STREQ, STREQN
-
-lib/readline/{search.c,isearch.c,kill.c}
-       - removed private definitions of STREQ, STREQN
-
-execute_cmd.c
-       - in find_user_command_internal, just return a copy of the pathname
-         passed as an argument if there is no PATH
-
-                                  12/6
-                                  ----
-siglist.h
-       - NetBSD 1.0 does not need a define for strsignal()
-
-                                  12/8
-                                  ----
-subst.c
-       - removed assignment_name, word_list_quote_removal, word_quote_removal,
-         and sub_append_number -- unused functions
-       - removed some unexecuted code from expand_word_internal
-
-                                  12/9
-                                  ----
-execute_cmd.c
-       - if PATH is set to the empty string, find executables in the
-         current directory
-
-shell.c, parse.y, trap.c
-       - before setting the SIGINT sighandler unconditionally to one of
-         sigint_sighandler or termination_unwind_protect, check that it
-         is not ignored.  Now trap '' 2 really sets the SIGINT signal
-         handler to SIG_IGN. [In 1.14.3]
-
-trap.c
-       - rewrote set_sigint_handler to use SIG_IGNORED rather than checking
-         against IGNORE_SIG
-       - changed ignore_signal, run_exit_trap, maybe_call_trap_handler, and
-         run_trap_internal to check SIG_IGNORED
-
-shell.c
-       - removed the check for signal_is_ignored(SIGINT) in sigint_sighandler
-
-                                  12/11
-                                  -----
-sig.c, sig.h
-       - new files, moved signal-related definitions and code here from
-         shell.c, general.h, general.c, jobs.c, jobs.h, externs.h
-
-unwind_prot.c, shell.h, nojobs.c
-       - include sig.h
-
-                                  12/12
-                                  -----
-jobs.c
-       - only break out of loops if SIGTSTP was used to stop a job in the
-         loop, the shell is currently interactive, and job control is on.
-         SIGSTOP does not break loops. [In 1.14.3]
-
-                                  12/13
-                                  -----
-expr.c
-       - bases < 2 or > 36 are now accepted without silently being reset
-         to 10
-
-braces.c
-       - make sure array_concat copies the array it returns if one of
-         the arguments is null [In 1.14.3]
-
-                                  12/14
-                                  -----
-subst.c
-       - split the ${...} expansion code out into a separate function,
-         static char *parameter_brace_expand()
-       - changes to array_value so that any variable can be referred to
-         as an array with an integer subscript.  The value will be
-         returned if a non-array variable is referred to as ${var[0]};
-         if the subscript is > 0 a null string is returned
-
-                                  12/15
-                                  -----
-machines.h
-       - fixes to freebsd description for FreeBSD 2 [In 1.14.3]
-
-support/bashbug.sh
-       - changed to use /usr/lib/sendmail if present or /usr/sbin/sendmail
-         if present, defaulting to rmail [In 1.14.3]
-
-bashhist.c
-       - HISTFILESIZE now controls how large the history file is after
-         it is written.  After saving the shell history, sv_histfilesize
-         will truncate it if necessary.  history -w can override this.
-
-documentation/bash.1
-       - documented change to treatment of HISTSIZE when saving history
-
-lib/malloc/malloc.c
-       - removed the calls to sigsetmask() in malloc().  This should
-         result in a speed improvement
-
-                                  12/19
-                                  -----
-builtins/enable.def
-       - don't allow -f or -d in a restricted shell
-
-builtins/alias.def
-       - rewrote alias and unalias to use the internal getopt
-       - added -p option to print the alias list to alias
-       - fixed up the documentation for `alias'
-
-documentation/{bash.1,features.texi}
-       - updated the documentation for `alias'
-       - updated the documentation for $_
-
-array.c,array.h
-       - new function `empty_array (ARRAY *a)' removes all of the
-         elements in a without destroying the array variable in
-         preparation for overwriting it.  Used by read -a.
-
-builtins/read.def
-       - call empty_array() before assigning list of values with read -a
-       - changed dispose_array to use empty_array to destroy the
-         array elements
-
-variables.c
-       - set $_ to argv[0] at variable initialization time
-
-                                  12/20
-                                  -----
-subst.c
-       - broke the pattern removal code into a few separate functions:
-         getpatspec to get the pattern specifier, getpattern to do the
-         necessary word expansions and return the pattern to be matched
-       - new function: parameter_list_remove_pattern(), which implements
-         the ${param[#%][[%#]]pattern} where param is `@' or `*'
-
-documentation/bash.1
-       - documented new pattern removal functionality for the positional
-         paramters
-
-general.c
-       - new function strsub (s, pat, rep, gflag) replaces PAT with REP
-         in S.  All occurrences are replaced if GFLAG != 0; the first is
-         replaced otherwise
-       - changed strindex() to avoid multiple calls to strnicmp by
-         checking first character of the string
-
-builtins/fc.def
-       - changed to use builtin_getopt with a check for fc numbers as
-         arguments
-       - some code rearranging for efficiency and clarity
-       - fc_dosubs now just calls strsub(); fc_replace is gone
-
-                                  12/21
-                                  -----
-subst.c
-       - new function, match_pattern, which matches a shell globbing
-         pattern anywhere in a string and returns the boundaries of the
-         match
-
-lib/readline/readline.h
-       - declarations for rl_insert_command and rl_backward_char_search
-
-lib/readline/readline.c
-       - new function rl_insert_comment, no longer vi-mode-specific
-       - new function rl_backward_char_search
-
-lib/readline/bind.c
-       - comment-begin now sets the comment char for emacs and vi modes
-       - variable holding the value is now _rl_comment_begin
-
-lib/readline/vi_mode.c
-       - move the `comment-begin' stuff to readline.c and bind.c
-
-lib/readline/funmap.c
-       - vi-comment is now insert-comment
-       - new bindable command character-search-backward
-
-lib/readline/vi_mode.c
-       - command mode `#' now invokes rl_insert_comment
-
-lib/readline/emacs_keymap.c
-       - M-# now bound to insert-comment
-       - M-space now bound to set-mark
-       - M-^] now bound to character-search-backward
-
-bashline.c
-       - posix_readline_initialize now calls rl_variable_bind to set the
-         value of comment-begin rather than directly modifying
-         _rl_comment_begin
-
-documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
-       - added description of new bindable `insert-comment' command
-       - documented new M-space emacs mode binding
-       - documented new character-search-backward command and default
-         emacs mode binding to M-C-]
-
-shell.c
-       - only call posix_initialize if posixly_correct is set
-
-                                  12/22
-                                  -----
-cpp-Makefile
-       - make $(Program) depend on $(srcdir)/.distribution, for the
-         benefit of systems where `make' does not have VPATH support
-         [In 1.14.3]
-
-jobs.c
-       - if a foreground job is killed by SIGINT while job control is
-         active, print a newline to compensate for the kernel printing
-         ^C without one [in 1.14.3]
-
-bashline.c
-       - make sure bashline_reinitialize resets rl_completion_entry_function
-         to NULL, as the comment says it should [In 1.14.3]
-
-                                  12/23
-                                  -----
-test.c
-       - fix a problem that caused core dumps if a `)' was missing in a
-         parenthesized expression [In 1.14.3]
-
-jobs.c
-       - broke the code the manages the manipulation of the job table and
-         process status out of flush_child into a new function waitchld()
-       - flush_child now just calls waitchld() with a parameter that tells
-         it not to block
-       - wait_for calls waitchld() with the pid it's looking for and tells
-         it to block (don't call it with WNOHANG)
-       - cleaned up wait_for considerably -- turned the wait_loop: label
-         stuff into a do-while loop and removed the setting of job status
-         (that's now done only by waitchld).  wait_for now calls
-         waitchld continuously until the job it is interested in is
-         marked JDEAD.
-
-                                  12/28
-                                  -----
-subst.c
-       - fixed expand_word_internal so that any word that expands into
-         nothing and contains a double-quoted $@ is removed, like sh
-         and ksh
-       - new function: expand_string_for_rhs, which calls expand_word_internal
-         with a variable that lets it find out whether or not a $@ appeared
-         in the WORD in ${paramOPword} when expanding it, so that "$@"
-         and various other things are handled correctly on the rhs
-       - added params for parameter_brace_expand to tell expand_word_internal
-         if a quoted $@ was processed as part of the rhs (or even the lhs);
-         these new params are passed along to parameter_brace_expand_rhs
-       - pass the right value of quoted to parameter_brace_expand_rhs from
-         parameter_brace_expand.  expand_string_for_rhs doesn't need to know
-         whether the brace expression is quoted
-
-                                  12/31
-                                  -----
-support/printenv
-       - now an official part of the distribution, moved from CWRU/misc
-         [in 1.14.3]
-
-cpp-Makefile
-       - copy support/printenv into the `tests' directory when making tests
-         [in 1.14.3]
-       - change to understand GCC_STANDARD [in 1.14.3]
-
-support/bashbug.sh
-       - fixed a typo that caused it to not parse correctly [in 1.14.3]
-
-machines.h
-       - define GCC_STANDARD if the standard `cc' is gcc and you don't want
-         to use the compiler named `gcc' for some reason [in 1.14.3]
-
-                                   1/2
-                                   ---
-general.h
-       - added FS_DIRECTORY to the list of flags that file_status returns
-
-execute_cmd.c
-       - changed find_in_path_element to return null if the flags argument
-         specifies FS_EXEC_ONLY and the file is not executable
-       - return FS_DIRECTORY from file_status if the argument specifies a
-         directory
-       - new function, is_directory (char *), which returns non-zero if the
-         filename argument is a directory
-
-execute_cmd.h
-       - extern declaration for is_directory
-
-flags.c, flags.h
-       - hashing_disabled and locate_commands_in_functions were removed,
-         hashing_enabled added
-
-execute_cmd.c, builtins/common.c. builtins/hash.def
-       - use hashing_enabled instead of hashing_disabled, and reverse
-         the sense of tests of it
-
-documentation/bash.1, documentation/features.texi
-       - changed description of `set -h/set -o hashcmds', removed
-         set -d/set -o nohash
-
-bashline.c
-       - changed command_word_completion_function to return matches if names
-         are directories as well as if they are executable files
-
-support/mksysdefs
-       - look for `ranlib' in $PATH before searching the file system;
-         look in /usr/gnu/bin for it; default to `:' if not found
-
-general.c
-       - change ansicstr to accept a second argument telling it whether to
-         recognize \c and to pass back a non-zero value in it if \c is
-         seen
-
-general.h
-       - changed extern declaration of ansicstr
-
-subst.c
-       - call ansicstr with an extra argument
-
-                                   1/3
-                                   ---
-builtins/echo.def
-       - rewrote to use ansicstr() with the new argument
-
-                                   1/4
-                                   ---
-trap.c
-       - changed instances of signal() to set_signal_handler() [in 1.14.4]
-       - combined reset_signals and restore_signals into a single function,
-         since they were essentially identical
-
-subst.c
-       - if set -u is set, references to the positional parameters now
-         generate errors if that parameter is not set [in 1.14.4]
-
-lib/*/Makefile, builtins/Makefile
-       - since RANLIB can be just `ranlib', just try to run it without
-         checking that the file exists [in 1.14.4]
-
-builtins/set.def
-       - changed `hashcmds' to `hashall'
-
-documentation/{bash.1,features.texi}
-       - changed `hashcmds' to `hashall'
-
-                                   1/5
-                                   ---
-trap.c
-       - make the loop that restores signal handlers run from signal 0 to
-         make sure user subshells don't inherit traps on `exit' (to fix
-         for 1.14.3, change restore_original_signals so that the loop
-         starts from 0) [in 1.14.4]
-
-variables.c
-       - don't import exported function definitions at startup if the
-         shell is restricted
-
-builtins/source.def
-       - don't allow use of pathname arguments containing `/' in a
-         restricted shell
-
-execute_cmd.c
-       - when a shell is spawned to execute a shell script without a
-         #! line, turn off the -r flag if the shell is restricted
-
-shell.c
-       - added a new long option `--restricted'
-
-documentation/bash.1
-       - added a section on the restricted shell, and documented the
-         new `--restricted' long invocation option
-
-                                   1/7
-                                   ---
-shell.c
-       - when using bash -c command, make run_one_command return
-         last_command_exit_value if a throw_to_top_level with value
-         EXITPROG occurs [in 1.14.4]
-
-print_cmd.c
-       - make sure to initialize arg_index in the non-varargs implementation
-         of cprintf [in 1.14.4]
-
-jobs.c
-       - don't try to change the state of the SIGCHLD handler before
-         calling waitchld() from wait_for, since SIGCHLD is blocked
-         while this code is executing [in 1.14.4]
-
-                                  1/11
-                                  ----
-lib/readline/rltty.c
-       - call control_keypad iff the value of a new variable,
-         _rl_enable_keypad, is non-zero
-
-lib/readline/bind.c
-       - new readline variable `enable-keypad' to control whether readline
-         tries to manipulate the application keypad
-
-documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new `enable-keypad' variable
-
-                                  1/12
-                                  ----
-lib/readline/search.c
-       - make sure to call rl_unix_word_rubout and rl_unix_line_discard
-         with the correct arguments [in 1.14.4]
-
-make_cmd.h
-       - make sure make_select_command is declared even if SELECT_COMMAND
-         is not defined
-
-parse.y
-       - make sure the \[ and \] escape sequences are not recognized if
-         READLINE is not defined [in 1.14.4]
-
-config.h
-       - make sure HISTORY is defined if READLINE is; code moved here
-         from bashhist.c [in 1.14.4]
-
-bashhist.c
-       - removed check for READLINE being defined without HISTORY; now
-         in config.h
-       - new function, bash_history_reinit
-
-flags.h, flags.c, builtins/set.def
-       - the -H/-o histexpand flag should be compiled into the shell
-         only if BANG_HISTORY is defined [in 1.14.4]
-
-subst.c
-       - don't include sv_histchars unless BANG_HISTORY is defined
-         [in 1.14.4]
-       - if QUOTED is true in parameter_brace_expand_rhs, pre-process the
-         word on the rhs of the parameter expansion by a call to
-         string_extract_double_quoted with the STRIPDQ parameter set to 1
-       - new arg for string_extract_double_quoted; causes it to strip
-         double quotes and alter its backslash handling behavior; designed
-         to be called from parameter_brace_expand_rhs
-       - changed all other instances of string_extract_double_quoted to
-         call it with STRIPDQ set to 0, to get old behavior
-
-shell.c
-       - call bash_history_reinit rather than manipulating history
-         variables directly
-
-variables.c
-       - don't auto-export $BASH [in 1.14.4]
-
-tests/rhs-exp.tests
-       - new test script to check for behavior fixed by changes to
-         string_extract_double_quoted and parameter_brace_expand_rhs
-
-parse.y
-       - `for' and `select' must now take non-empty lists between
-         `in' and `;'
-
-                                  1/16
-                                  ----
-subst.c
-       - fixed string_quote_removal to do double-quoted string processing
-         itself rather than call string_extract_double_quoted, which
-         assumes that a call to expand_word_internal or the equivalent
-         will follow immediately and leaves some backslashes in place,
-         inappropriately for quote removal
-
-                                  1/23
-                                  ----
-subst.c
-       - make sure to set `temp' to NULL after it's freed by sub_append_string
-         in expand_word_internal to keep it from pointing to newly-allocated
-         memory that will be subsequently freed, causing a `memory freed
-         twice' error [in 1.14.4]
-
-trap.c
-       - handle the EXIT_TRAP specially in reset_or_restore_signal_handlers,
-         since in both cases we simply want to free up the trap string and
-         mark the signal as not trapped
-
-shell.h
-       - added \n to the list of characters in slashify_in_double_quotes
-
-                                  1/26
-                                  ----
-subst.c
-       - make string_extract_single_quoted and string_extract_double_quoted
-         `inline'
-       - new function skip_single_quoted, used when we used to call
-         string_extract_single_quoted and just throw the returned string
-         away
-       - new function skip_double_quoted for the same purpose
-
-                                  1/28
-                                  ----
-subst.c
-       - fixed expand_word_internal so that if an assignment word
-         is expanded, no word splitting is performed [in 1.14.4]
-
-builtins/ulimit.def
-       - some systems lack RLIMIT_CPU; so `#ifdef' its use [in 1.14.4]
-       - some versions of cpp expand parameters like \n if `n' is an
-         argument to the macro; change `n' to `num' in the definition
-         of print_rlimtype to compensate [in 1.14.4]
-
-builtins/read.def
-       - make sure the read loop sets `saw_escape' to note that an
-         escape character was read if CTLESC or CTLNUL is read [in 1.14.4]
-
-shell.c, sig.c
-       - only test interactive_shell before calling maybe_save_shell_history
-         [in 1.14.4]
-shell.c
-       - include <locale.h> if HAVE_LOCALE_H is defined
-       - call setlocale(LC_ALL, "") at the beginning of main() if
-         either _POSIX_VERSION or HAVE_SETLOCALE is defined
-
-support/mksysdefs
-       - look for <locale.h>, define HAVE_LOCALE_H if found
-
-cpp-Makefile
-       - pass HAVE_LOCALE_H through from sysdefs.h to the build process
-
-bashhist.c
-       - remove test against interactive_shell in maybe_save_shell_history
-         [in 1.14.4]
-
-variables.c
-       - moved definition of DEFAULT_MAIL_PATH to config.h
-
-config.h, config.h.mini
-       - now has definition of DEFAULT_MAIL_PATH [in 1.14.4]
-       - changed default value of PATH to
-         `/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.'
-         [in 1.14.4]
-
-documentation/bash.1
-       - updated the example of the default path in the description of
-         the PATH variable
-
-lib/readline/readline.c
-       - set up a table of `legal' LC_CTYPE values and match the value of
-         $LC_CTYPE against it when deciding whether or not to default to
-         eight-bit input and output
-       - check for LC_ALL, LC_CTYPE, and LANG, in that order, for names to
-         check against the legal_lc_ctype_values table
-
-lib/readline/bind.c
-       - moved strindex, stricmp, and strnicmp to lib/readline/util.c, 
-         added _rl_ prefix to names
-       - some miscellaneous code cleanups and speedups
-
-lib/readline/rldefs.h
-       - define _POSIX_VDISABLE as _SVR4_VDISABLE if there is a define
-         for the latter and not the former [in 1.14.4]
-       - moved defining _rl_stricmp and _rl_strnicmp as strcasecmp and
-         strncasecmp, respectively, here from bind.c, since the functions
-         are now defined in util.c and used in two files
-
-builtins/common.c
-       - removed the \n case in double_quote, so a backslash is not added
-         before an existing newline.  The \<newline> pair is removed by
-         the parser before anything else in the shell gets hold of it
-         except within single quotes [in 1.14.4]
-
-                                  1/30
-                                  ----
-general.c
-       - make sure the string index in canonicalize_pathname never goes
-         < 0 (it can, in some cases, result in `start' being -1, and `i'
-         being set to that) [in 1.14.4]
-
-                                   2/1
-                                   ---
-execute_cmd.c
-       - fix a typo in a call to `access' in AFS-specific code [in 1.14.4]
-
-                                   2/3
-                                   ---
-builtins/shopt.def
-       - finally added new `shopt' builtin
-
-builtins/umask.def
-       - converted to use builtin_getopt
-
-bashhist.c
-       - support for storing literal newlines in the history list when
-         command_oriented_history is enabled, rather than using semicolons
-
-builtins/Makefile
-       - changed rule to make a .o file from a .def file to remove the
-         .c file if the compilation fails
-
-                                   2/6
-                                   ---
-bashhist.c
-       - added new variable `force_append_history' that will force the
-         history list to be appended to the history file at shell exit
-       - new function, maybe_append_history, to append any history lines
-         from the current session to the history file.  Used by history -a
-
-builtins/bind.def
-       - changed the `-d' option to -p
-
-builtins/set.def
-       - added `allenv' as a -o synonym for `set -k'.  Now all of the
-         single-letter shell options have -o equivalents
-
-builtins/shopt.def
-       - added -p option to display shell options, like other builtins
-       - added `interactive_comments' as a shell option, like set -o
-
-builtins/bind.def, builtins/history.def, builtins/enable.def
-       - changed use of multiple variables to hold option flag settings to
-         one variable with bits representing flag values
-
-documentation/bash.1, documentation/features.texi
-       - changed the description of the `bind' builtin for the new -p option
-       - changed the description of the `set' builtin for the new
-         `-o allenv' option
-       - updated the description of the `shopt' builtin
-
-builtins/history.def
-       - changed -a option to use maybe_append_history
-
-subst.c
-       - changed the substring/subarray code to make negative offsets
-         count backwards from the end of the string or array
-
-builtins/bashgetopt.c
-       - added option modifiers `;' (argument is optional) and `#'
-         (argument is optional, but if present must be numeric)
-
-builtins/hash.def
-       - converted to use builtin_getopt
-       - broke code out into a new function: add_hashed_command
-
-                                   2/7
-                                   ---
-builtins/getopt.c
-       - changed to save state to avoid relying on `nextchar' staying the
-         same across calls to sh_getopt [in 1.14.4]
-       - added a function to restore `nextchar' from this saved state
-         [in 1.14.4]
-       - removed some dead code
-
-builtins/getopts.def
-       - call function to restore sh_getopt state when parsing explicitly
-         supplied arguments rather than the positional parameters [in 1.14.4]
-
-lib/readline/vi_mode.c
-       - fixed an off-by-one error in _rl_vi_done_inserting that put the
-         \0 in vi_insert_buf at offset `len' instead of `len - 1'
-
-lib/readline/complete.c
-       - print_filename now filters out control characters and displays
-         them in printable format, rather than relying on the tty driver
-         to do the right thing [in 1.14.4]
-
-                                   2/8
-                                   ---
-lib/posixheaders/stdc.h
-       - test for each special keyword being defined individually, rather
-         than just testing on `const' [in 1.14.4]
-
-lib/readline/util.c
-       - new function _rl_abort_internal; rl_abort just calls this
-
-nojobs.c
-       - include error.h for extern function definitions [in 1.14.4]
-
-builtins/ulimit.def
-       - include <unistd.h> if HAVE_UNISTD_H is defined
-       - use HAVE_LIMITS_H to decide whether or not to include <limits.h>
-
-variables.c, subst.c, builtins/set.def
-       - removed special handling of `noclobber' variable
-
-builtins/set.def
-       - new function set_shellopts to set up the $SHELLOPTS variable
-         based on the values of the set -o options; `set' calls this
-         function whenever one of the options is changed
-       - new function parse_shellopts to take the value of SHELLOPTS and
-         turn on each option found therein
-       - new function initialize_shell_options to parse any inherited
-         value of $SHELLOPTS and set up $SHELLOPTS
-
-shell.c
-       - call initialize_shell_options at the end of shell_initialize()
-
-execute_cmd.c, general.c
-       - moved extract_colon_unit from execute_cmd.c to general.c
-
-execute_cmd.h, general.h
-       - moved extern declaration of extract_colon_unit from
-         execute_cmd.h to general.h
-
-documentation/{bash.1,features.texi}
-       - documented SHELLOPTS
-
-                                  2/18
-                                  ----
-builtins/{shopt,pushd,jobs,umask}.def
-       - removed the `longjobs', `longdirs', `pushd_home' and `symbolic_umask'
-         options
-
-lib/readline/{histexpand,histsearch,histfile}.c, lib/readline/histlib.h
-       - new files, split off from old history library history.c
-
-lib/readline/history.c, lib/readline/history.h
-       - new function clear_history() to clear the history list
-
-lib/readline/doc/hstech.texinfo
-       - documented clear_history ()
-
-builtins/pushd.def
-       - new function clear_directory_stack() to delete all elements of
-         the dir stack
-       - new -c option for `dirs' to clear directory stack
-       - new function get_dirstack_index for dirs -N and dirs +N to use
-       - new function get_dirstack_element(i, dir) for use by other parts of
-         the shell that want the functionality of dirs -N and dirs +N
-         (dir is 1 for dirs +N, -1 for dirs -N)
-       - new function set_dirstack_element(i, dir, val) for use by other
-         parts of the shell to change values in the dirstack (dir is -1
-         for dirs -N, +1 for dirs +N).  Used when assigning to $DIRSTACK.
-
-builtins/history.def
-       - new -c option to clear the history list
-
-documentation/bash.1, documentation/features.texi
-       - removed no-longer-valid shopt options
-       - documented new dirs -c option
-       - documented new history -c option
-       - documented new \T and \H prompt escape sequences
-       - documented new $DIRSTACK dynamic array variable
-       - documented the new expand-glob and list-glob readline commands
-
-variables.c
-       - set PS4 to its default value of `+ ', so that unsetting it will
-         disable the tracing characters [in 1.14.4]
-       - new framework for dynamic array variables -- each place an
-         array index is assigned to, a test is made.  if a dynamic
-         assignment function exists, it is called with args `self',
-         the index being assigned to, and the new value
-       - new variable `$DIRSTACK', a dynamic array variable that holds
-         the current contents of the directory stack.  You can even
-         change the stack by assigning to thie variable
-
-shell.c
-       - changed indirection_level_string to return the null string if
-         $PS4 is unset or null [in 1.14.4]
-
-parse.y
-       - new \H prompt escape for hostname up to first `.'; changed \h
-         to return full hostname (like \w/\W)
-       - new \T prompt escape for 12-hour time
-
-bashline.c
-       - new readline functions to expand glob patterns and insert or
-         list the expansions (special completion functions)
-
-
-                                  2/20
-                                  ----
-builtins/pushd.def
-       - new code for `pushd -n' and `popd -n' to inhibit cd when
-         adding or removing directories from the stack
-       - broke functionality off into separate functions for use by the
-         $DIRSTACK manipulation functions
-
-                                  2/21
-                                  ----
-lib/readline/kill.c
-       - new functions to copy words to the kill ring, backward or
-         forward
-
-lib/readline/readline.h
-       - extern declarations for rl_copy_{backward,forward}_word
-
-
-lib/readline/funmap.c
-       - new bindable readline commands: copy-backward-word and
-         copy-forward-word to copy portions of the line to the kill
-         ring without deleting them
-
-documentation/{bash.1,readline.3}, lib/readline/doc/hsuser.texinfo
-       - documented the new copy-backward-word and copy-forward-word
-         readline commands
-
-mailcheck.c, config.h
-       - the declaration of DEFAULT_MAIL_PATH is now only in config.h
-         and used by mailcheck.c and variables.c.  There is no need to
-         use DEFAULT_MAIL_PATH_LEN; `sizeof' does the job [in 1.14.4]
-
-                                  2/22
-                                  ----
-support/mksysdefs
-       - changes to fix `RELEASE' if it ends up being set to the empty string
-         [in 1.14.4]
-       - check for amdahl UTS [in 1.14.4]
-       - check for SGI Irix version 6.x [in 1.14.4]
-
-machines.h
-       - new entry for Amdahl UTS [in 1.14.4]
-       - changes to the SGI entry for Irix 6.x [in 1.14.4]
-
-                                  2/23
-                                  ----
-machines.h
-       - changes for BSD/OS 2.0 (M_OS now set to `BSD_OS') [in 1.14.4]
-
-support/mksysdefs
-       - change to recognize BSD/OS 2.0 and set SYSDEF to BSDI2 [in 1.14.4]
-
-siglist.h
-       - don't declare sys_siglist on BSD/OS 2.0 [in 1.14.4]
-
-                                  2/24
-                                  ----
-parse.y
-       - if reset_parser is called while the prompt command is being
-         executed because of a syntax error in $PROMPT_COMMAND, an
-         infinite loop results.  set token_to_read back to 0 at the
-         end of execute_prompt_command to stop the looping [in 1.14.4]
-
-                                  2/25
-                                  ----
-mailcheck.h
-       - new header file for mail-checking and related definitions
-       - declaration of DEFAULT_MAIL_PATH is now here
-
-mailcheck.c
-       - new function, make_default_mailpath, which constructs a default
-         $MAILPATH string from DEFAULT_MAIL_PATH [in 1.14.4]
-       - change remember_mail_dates to call make_default_mailpath
-         [in 1.14.4]
-
-externs.h
-       - moved function declarations for functions in mailcheck.c to
-         mailcheck.h
-
-variables.c
-       - change initialize_shell_variables to call make_default_mailpath
-         [in 1.14.4]
-       - removed some unneeded variables in initialize_shell_variables
-
-                                  2/26
-                                  ----
-lib/readline/callback.c
-       - new file with readline callback function interface
-
-lib/readline/rlconf.h
-       - new READLINE_CALLBACKS define for the readline callback code to
-         be compiled in and available
-
-lib/readline/readline.c
-       - broke readline_internal into three functions: readline_internal_setup,
-         readline_internal_charloop, and readline_internal_teardown
-       - changes for READLINE_CALLBACKS
-
-lib/readline/readline.h
-       - extern declarations for the readline callback code
-
-cpp-Makefile
-       - added lib/readline/callback.c to the list of readline files
-
-lib/readline/input.c
-       - added a layer of indirection to allow the user to specify the
-         function that reads a character from rl_instream.  The variable
-         name is rl_getc_function, set by default to rl_getc
-
-                                  2/27
-                                  ----
-lib/readline/display.c
-       - added a variable rl_redisplay_function to allow an application-
-         specified redisplay function, for those apps that want to control
-         redisplay
-
-lib/readline/readline.c
-       - extern declarations for rl_getc_function and rl_redisplay_function
-
-lib/readline/{readline,display,isearch,search,parens}.c
-       - changed to call through rl_redisplay_function rather than
-         rl_redisplay directly
-
-parse.y
-       - try to avoid some work in reset_readline_prompt and prompt_again
-         if the prompt is the empty or null string [in 1.14.4]
-
-lib/readline/readline.c
-       - call rl_expand_prompt unconditionally [in 1.14.4]
-
-lib/readline/display.c
-       - short-circuit out of rl_expand_prompt if the prompt string is null
-         after clearing out the saved local prompt values.  This allows
-         $PS2 to be set to "" [in 1.14.4]
-
-lib/readline/doc/rltech.texinfo
-       - documented the callback code and functions
-       - documented rl_getc_function and rl_redisplay_function
-
-lib/readline/{callback,readline,rltty,signals}.c
-       - added layer of indirction for terminal prep and deprep, with
-         rl_term_prep_function and rl_term_deprep_function.  These are
-         set by default to rl_prep_terminal and rl_deprep_terminal,
-         respectively
-
-lib/readline/readline.h
-       - make rl_term_prep_function and rl_term_deprep_function available
-         to callers
-
-                                   3/1
-                                   ---
-lib/readline/complete.c
-       - broke the (long, complicated) rl_complete_internal code into a
-         number of separate functions:
-
-               find_completion_word
-               gen_completion_matches
-               remove_duplicate_matches
-               display_matches
-               insert_text
-               insert_match
-               append_to_match
-               insert_all_matches
-
-       - made some efficiency improvments to filename_completion_function
-       - the completion ignore function is now called no matter what type
-         of completion is being performed (as it should have been all along)
-
-lib/readline/rldefs.h
-       - use #defines for the possible values ORed into `found_quote' by
-         the completion code
-
-                                   3/2
-                                   ---
-make_cmd.c, general.c
-       - moved make_word_array from make_cmd.c to general.c, renamed to
-         word_list_to_argv, extended it to optionally not malloc all of
-         the strings and to reserve space at the start of the array
-
-execute_cmd.c
-       - changed to use word_list_to_argv, not mallocing space for the
-         strings
-
-builtins/common.c, builtins/common.h
-       - new function make_builtin_argv, which uses word_list_to_argv
-         and reserves 1 slot at the beginning for the command name
-
-builtins/exec.def
-       - changed to use word_list_to_argv
-
-builtins/{getopts,test}.def
-       - changed to use make_builtin_argv
-
-subst.c
-       - new function match_pattern_char, to see if the first char of
-         a string has a chance to match a given pattern (test against
-         the first char of the pattern); used by match_pattern in the
-         MATCH_ANY case
-
-                                   3/3
-                                   ---
-jobs.c
-       - renamed flush_child to sigchld to capture the functionality better
-
-array.c
-       - new function array_pat_subst, to do pattern substitution on each
-         element in an array
-
-array.h
-       - extern declaration for array_pat_subst
-
-subst.c
-       - new function pat_subst to do pattern matching and substitution on
-         a string
-       - new function parameter_brace_pat_subst to implement
-         ${v/[/]pat[/sub]}; calls pat_subst for simple vars,
-         pos_params_pat_subst to do substitution on the positional params,
-         and array_pat_subst for things like ${v[@]/p/r}
-
-subst.h
-       - extern declaration for pat_subst so array.c can find it
-
-                                   3/6
-                                   ---
-parse.y
-       - <>filename now dups filename to file descriptor 0 for both input
-         and output even when not in posix.2 mode
-
-bashline.c
-       - add the globbing characters to the list of characters that need
-         to be quoted by filename completion
-
-jobs.h
-       - new convenience macros:
-               RUNNING, STOPPED, DEADJOB - to test a job's state
-               IS_FOREGROUND, IS_NOTIFIED, IS_JOBCONTROL - flags
-
-jobs.c, builtins/{kill,fg_bg}.def
-       - changed to use new jobs.h macros
-
-                                   3/7
-                                   ---
-array.c, array.h
-       - new function dup_array_subrange(a, s, e) to make a new array
-         out of the elements of array A between S and E, inclusive
-       - add `quoted' parameters to array_subrange and array_pat_subst
-         to preserve proper quoting of elements when expanding things
-         like "${av[@]/xx/yy}"
-       - new function array_quote to quote the members of an array like
-         the functions in subst.c
-
-subst.c
-       - pass the quoted flag to array_subrange and array_pat_subst
-       - quote_string is no longer static
-
-subst.h
-       - extern declaration for quote_string
-
-builtins/hash.def
-       - added a -p pathname option to specify a pathname for the command
-         name to be hashed.  With -p, no path search is performed.
-
-lib/readline/histexpand.c
-       - broke history_tokenize off into history_tokenize_internal and
-         added two arguments: a character index and a word index.  If
-         the char index is >= 0, the word index will be modified to point
-         into the returned array of strings to the word surrounding that
-         particular character index
-       - new function history_find_word(line, ind) to return the word 
-         containing the character at index IND in LINE
-       - new variable search_match, found by history_find_word, to hold the
-         word last matched by a !?string? search
-       - corrected a problem with the `%' modifier: it should insert the
-         word last matched, not the last search string
-
-                                   3/8
-                                   ---
-cpp-Makefile
-       - changed INSTALL_PROGRAM and INSTALL_DATA to use support/install.sh
-       - changed `install' target to not explicitly save the old version of
-         bash in `bash.old'; let install take care of it
-
-shell.c
-       - new static variable `running_under_emacs', set to 1 if the
-         variable `EMACS' is in the startup environment, and to 2 if
-         we're running under the `eterm' terminal emulator
-       - send an escape sequence to eterm if running_under_emacs is 2
-         after executing any $PROMPT_COMMAND to tell it the current
-         directory
-
-                                   3/9
-                                   ---
-builtins/ulimit.def
-       - made getting -u work for systems that have a MAXUPRC define.
-         it still cannot be set without RLIMIT_NPROC
-
-shell.c
-       - include trap.h for sig definitions
-
-builtins/common.h, subst.h, general.h, externs.h
-       - more extern function declarations
-
-bashhist.c
-       - new function, bash_history_disable(), to turn off history and
-         history expansion
-       - bash_history_disable now sets history_expansion_inhibited
-
-bashline.h
-       - new file with extern declarations from bashline.c
-
-parse.y, bashhist.c, builtins/bind.def, subst.c, sig.c
-       - include bashline.h
-
-                                  3/10
-                                  ----
-lib/glob/glob.h
-       - new file with extern declarations for local glob library
-
-shell.c
-       - include glob.h, mailcheck.h
-
-cpp-Makefile
-       - changes to dependencies due to mailcheck.h, bashline.h, glob.h
-
-                                  3/13
-                                  ----
-execute_cmd.c
-       - new function execute_connection to execute commands of type
-         cm_connection
-       - new function execute_pipeline, to execute pipelines
-
-lib/readline/rltty.c
-       - add a `tty' argument to the set_winsize function/macro, the
-         non-shell version needs it
-
-                                  3/14
-                                  ----
-parse.y
-       - added \a (bell) and \e (escape) prompt string escape sequences
-
-                                  3/16
-                                  ----
-lib/readline/display.c
-       - fixed bug in update_line that caused stray characters to be left on
-         lines after the first if characters are deleted so that the first
-         line becomes exactly as long as the screen width [in 1.14.4]
-
-lib/readline/doc-support
-       - brought in the GNU getopt because texindex needs it
-
-documentation/Makefile
-       - adopted the BSD convention of a suffix of `.0' for formatted
-         manual pages
-
-                                  3/17
-                                  ----
-support/inpath
-       - a script to find out if a particular command name appears in
-         a directory in $PATH [in 1.14.4]
-
-support/mksysdefs
-       - changed to use inpath to find `ranlib' [in 1.14.4]
-
-                                  3/18
-                                  ----
-bashline.c
-       - include bashline.h
-       - removed the DYNAMIC_HISTORY_COMPLETION define; that code is now
-         included unconditionally
-       - renamed ETCHOSTS to DEFAULT_HOSTS_FILE; moved definition to
-         bashline.h
-       - moved definition of BRACE_COMPLETION to config.h
-
-config.h
-       - conditional definition of BRACE_COMPLETION is now here
-
-pathnames.h
-       - new file with defines that are absolute pathnames
-
-shell.h
-       - include pathnames.h
-
-mailcheck.h
-       - def of DEFAULT_MAIL_PATH now moved to pathnames.h
-
-shell.c
-       - def of SYS_PROFILE moved to pathnames.h
-
-alias.h
-       - removed a bunch of extra definitions
-
-lib/readline/{vi_mode.c,bind.c}
-       - removed superfluous STATIC_MALLOC code
-
-variables.c
-       - removed SHADOWED_ENV code
-
-                                  3/20
-                                  ----
-machines.h
-       - don't define USG or USGr3 for linux machines [in 1.14.4]
-       - change REVERSED_SETVBUF_ARGS to SETVBUF_REVERSED for autoconf
-         compatibility
-
-shell.c
-       - change REVERSED_SETVBUF_ARGS to SETVBUF_REVERSED for autoconf
-         compatibility
-
-support/mksysdefs, maxpath.h
-       - change HAVE_SYS_PARAM to HAVE_SYS_PARAM_H for autoconf
-         compatibility
-
-support/mksysdefs, jobs.h
-       - use HAVE_SYS_WAIT_H
-
-machines.h, error.c
-       - change HAVE_VFPRINTF to HAVE_VPRINTF for autoconf compatibility
-
-test.c
-       - replace UID_T and GID_T with GETGROUPS_T, the size of the elements
-         of the array returned by getgroups
-
-general.c
-       - define HAVE_KILLPG if killpg() is present; compile in a replacement
-         killpg if not
-
-machines.h, jobs.c
-       - change BSD_GETPGRP to HAVE_BSD_PGRP
-
-sig.c
-       - don't call initialize_siglist if HAVE_SYS_SIGLIST is defined, no
-         longer use INITIALIZE_SIGLIST
-
-machines.h, lib/malloc/malloc.c
-       - change NO_SBRK_DECL to SBRK_DECLARED
-
-                                  3/22
-                                  ----
-machines.h
-       - BSD/OS 2.0 does not need INT_GROUPS_ARRAY in SYSDEP_CFLAGS
-
-lib/readline/rldefs.h
-       - don't check `Linux'; just include <termcap.h> if HAVE_TERMCAP_H
-         is defined
-
-builtins/command.def
-       - changed get_standard_path to use HAVE_CONFSTR 
-
-execute_cmd.c
-       - execute_simple_command no longer uses alloca
-       - don't check RISC6000 anymore when deciding whether to use
-         #pragma alloca
-
-execute_cmd.c, shell.c
-       - check for ultrix instead of Ultrix when calling alloca(0)
-
-jobs.h
-       - check HAVE_UNISTD_H to see whether to declare fork, getpid,
-         and getpgrp
-
-builtins/common.c
-       - include <signal.h> for NSIG
-
-sig.h
-       - don't define SIGABRT as SIGIOT unless SIGIOT is defined
-
-jobs.c
-       - check for ultrix instead of Ultrix
-
-                                  3/23
-                                  ----
-general.c, general.h
-       - new function check_dev_tty, which makes sure we can open
-         /dev/tty
-
-shell.c
-       - call check_dev_tty instead of having the code inline
-
-posixstat.h
-       - removed references to isc386
-
-general.h
-       - code to define one of TERMIOS_TTY_DRIVER, TERMIO_TTY_DRIVER,
-         or NEW_TTY_DRIVER
-
-jobs.c, nojobs.c
-       - use the general.h code to define the tty driver types
-
-                                  3/24
-                                  ----
-builtins/declare.def
-       - new -p option to display variables and their values and attributes
-         `declare -p xxx' displays attribs and value of var `xxx'
-
-builtins/setattr.def
-       - new function to display the attributes and value of a particular
-         variable; used by set_or_show_attributes
-       - new function to look up a variable by name and show that name's
-         attributes and value
-
-builtins/common.c
-       - declarations for new functions in setattr.def
-
-variables.c
-       - don't set a default value for MAILPATH in initialize_shell_variables;
-         let remember_mail_dates take care of it [in 1.14.4]
-
-mailcheck.c
-       - fixed an off-by-one bug in make_default_mailpath [in 1.14.4]
-
-                                  3/28
-                                  ----
-[changes for autoconf-generated config files]
-
-lib/malloc/malloc.c
-       - use HAVE_GETPAGESIZE, HAVE_BSD_SIGNALS, HAVE_POSIX_SIGNALS
-
-trap.c
-       - remove tests for USG and USGr4
-       - test on HAVE_POSIX_SIGNALS rather than _POSIX_VERSION
-       - use MUST_REINSTALL_SIGHANDLERS define to decide whether trap_handler
-         should call signal again
-
-getcwd.c
-       - redid the directory includes for autoconf compatibility
-       - use HAVE_LSTAT instead of testing for S_ISLNK
-       - use STRUCT_DIRENT_HAS_D_INO
-       - include memalloc.h for alloca define
-
-general.h
-       - cleaned up strchr, strrchr definitions
-       - removed tests against USG
-       - use HAVE_MEMMOVE instead of MEMMOVE_MISSING
-
-jobs.c
-       - use HAVE_WAIT3, MUST_REINSTALL_SIGHANDLERS, GETPGRP_VOID
-
-mailcheck.h
-       - removed definition of DEFAULT_MAIL_DIRECTORY; now set by
-         autoconf in config.h
-
-shell.c
-       - remove checks on USG, just check for HAVE_GETPW_DECLS
-       - use C_ALLOCA define
-       - redid the isnetconn() code using HAVE_SYS_SOCKET_H,
-         HAVE_GETPEERNAME, SVR4 and SVR4_2
-
-general.c
-       - use HAVE_KILLPG, HAVE_RESTARTABLE_SYSCALLS, HAVE_UNAME,
-         ULIMIT_MAXFDS, HAVE_TIMEVAL, HAVE_TIMES
-
-lib/readline/rldefs.h
-       - redid the tty driver definitions using HAVE_TERMIOS_H, etc.
-       - don't define anything having to do with signal type
-
-lib/glob/glob.c
-       - redid the DIRENT defines and includes
-       - redid other includes to remove dependencies on USG and system
-         type (e.g., NeXT)
-
-builtins/times.def
-       - changed to use HAVE_GETRUSAGE, HAVE_TIMEVAL, HAVE_TIMES, and
-         the autoconf way to include <sys/time.h> and <time.h>
-
-builtins/ulimit.def
-       - changed to use HAVE_GETRLIMIT
-       - removed test of USG being defined
-
-siglist.h
-       - changed to use SYS_SIGLIST_DECLARED, HAVE_UNDER_SYS_SIGLIST, and
-         HAVE_STRSIGNAL
-
-print_cmd.c
-       - use PRINTF_DECLARED
-
-builtins/command.def
-       - use HAVE_CONFSTR along with _CS_PATH to get the standard path
-
-execute_cmd.c
-       - only compile in execute_shell_script if HAVE_HASH_BANG_EXEC is not
-         defined
-
-nojobs.c
-       - use HAVE_SIGINTERRUPT, HAVE_KILLPG, HAVE_POSIX_SIGNALS,
-         MUST_REINSTALL_SIGHANDLERS, HAVE_WAITPID, *_TTY_DRIVER defines
-
-test.c
-       - set up a new `getmaxgroups' define, moving the code out of inline
-       - eliminate use of GETGROUPS_T
-
-variables.c
-       - use CAN_REDEFINE_GETENV
-
-sig.c, sig.h
-       - use HAVE_POSIX_SIGNALS, MUST_REINSTALL_SIGHANDLERS
-
-pathnames.h
-       - removed the default mail directory defines; now set by autoconf
-
-oslib.c
-       - new file, functions from general.c that are unix-version variable
-
-general.h
-       - slightly changed function declarations for use by oslib.c
-
-support/bashbug.sh
-       - changed @xxx@ to !xxx! for sed substitutions to avoid conflicts
-         with autoconf substitutions in the Makefile
-       - added MACHTYPE variable
-
-mailcheck.c
-       - changed DEFAULT_MAIL_PATH to DEFAULT_MAIL_DIRECTORY, since that
-         more clearly defines its function
-
-lib/readline/rltty.h
-       - new file, to include the correct tty driver #include file
-
-lib/readline/rltty.c
-       - include rltty.h
-
-lib/malloc/malloc.c
-       - make systems with Posix signals block all signals while malloc
-         is executing
-
-                                  3/29
-                                  ----
-input.c
-       - use off_t as the type of a seek offset, rather that int or long
-
-variables.c, oslib.c
-       - moved `getenv' from variables.c to oslib.c
-
-                                  3/31
-                                  ----
-sig.c, sig.h
-       - new function, jump_to_top_level, which just calls longjmp with
-         top_level as an argument -- here to isolate calls to longjmp
-
-subst.c
-       - replaced calls to longjmp with jump_to_top_level
-
-bashjmp.h
-       - new file with setjmp/longjmp defines and declarations
-
-shell.h, nojobs.c
-       - include bashjmp.h in place of setjmp.h
-
-shell.c, sig.c, execute_cmd.c, unwind_prot.h, expr.c,
-builtins/{return,source}.def
-       - change to use new defs in bashjmp.h
-
-subst.c
-       - make sure PAT and REP in pattern substitution are run through
-         expand_string_unsplit
-
-builtins/set.def
-       - don't try to blindly dereference the value returned by
-         find_flags in set_shellopts
-
-                                   4/2
-                                   ---
-aclocal.m4, config.h.in, config.h.top, config.h.bot, configure.in,
-support/install.sh, support/config.guess, support/config.sub
-       - new files for (now official) autoconf-based configuration
-
-Makefile.in, builtins/Makefile.in,
-lib/{doc-support,malloc,glob,termcap,tilde,readline}/Makefile.in
-       - new Makefiles for autoconf
-
-[additionally, all source files now include config.h]
-
-                                   4/3
-                                   ---
-array.c, array.h
-       - index_t --> arrayind_t, because some systems define index_t in
-         <sys/types.h>
-
-                                   4/4
-                                   ---
-aclocal.m4
-       - fix test for broken dup2
-
-lib/*/Makefile.in
-       - make all object files depend on $(BUILD_DIR)/config.h
-
-                                   4/5
-                                   ---
-array.c
-       - fixed problems in empty_array: need to reset max_index
-         and max_size, and remove the links in the element chain
-         after freeing them
-
-jobs.c
-       - new functions to save an array of status values for each
-         foreground job that exits (degenerate case is to have a
-         single-process job exit and have a 1-element array)
-       - new function to set a shell array variable `PIPESTATUS'
-         which holds the status values from each member of the
-         last-executed pipeline that spawned children
-
-documentation/bash.1
-       - documented $PIPESTATUS
-
-                                   4/6
-                                   ---
-configure.in
-       - added new --with-afs argument to #define AFS for execute_cmd.c
-
-                                  4/10
-                                  ----
-builtins/ulimit.def
-       - use sysconf(_SC_CHILD_MAX) to find the maximum number of child
-         proceeses per user if HAVE_SYSCONF and _SC_CHILD_MAX are both
-         defined and RLIMIT_NPROC is not
-
-                                  4/12
-                                  ----
-lib/readline/undo.c
-       - new variable, local to library, to keep track of the number of
-         `open' undo groups (UNDO_BEGIN without corresponding UNDO_END)
-       - new function _rl_fix_last_undo_of_type to modify start and end
-         bounds of last undo record of a specified type
-
-lib/readline/vi_mode.c
-       - _rl_vi_done_inserting now calls rl_end_undo_group if the count
-         of unclosed groups is > 0
-       - fixed rl_vi_change_to to save an undo record when redoing and
-         to fix the buffer corruption when doing `u' undo after a `.'
-         redo of `C'
-
-                                  4/13
-                                  ----
-unwind_prot.h
-       - changed to use a union { char *s; int i; } when unwind-protecting
-         integers to force correct alignment on machines where ints and
-         pointers differ in size
-
-lib/readline/readline.c
-       - new variable Keymap rl_executing_keymap, which is set to the
-         keymap the last function was invoked out of
-
-lib/readline/bind.c
-       - new variable Keymap rl_binding_keymap, which is set to the last
-         keymap a function and key sequence were bound in
-
-                                  4/17
-                                  ----
-general.c
-       - removed xmalloc, xrealloc, xfree to xmalloc.c
-
-lib/malloc/Makefile.in
-       - MALLOC and ALLOCA are both set by autoconf
-       - need to provide some empty stub file to make up the library
-         in case neither malloc.c and alloca.c are compiled into the
-         shell
-
-lib/malloc/gmalloc.c
-       - new file, GNU libc malloc code
-
-Makefile.in
-       - new source file, xmalloc.c, new object file, xmalloc.o
-
-general.h
-       - changed type of size argument to xmalloc, xrealloc to `size_t'
-
-configure.in
-       - changes for new argument `--with-glibc-malloc' that includes
-         gmalloc.o in libmalloc.a
-
-                                  4/18
-                                  ----
-xmalloc.c
-       - if malloc or realloc return null, report in the error message
-         how many bytes have been allocated
-
-lib/readline/display.c
-       - changed redisplay code to use an array of positions in the visible
-         and invisible lines at which to break lines instead of simply
-         calculating based on the screenwidth and number of invisible
-         characters.  In the future, this will allow newlines embedded in
-         the lines to display to be handled better
-
-[Bash-1.14.4 released to net]
-
-                                  4/19
-                                  ----
-lib/readline/signals.c
-       - changed last call to signal() to call rl_set_sighandler()
-
-                                  4/20
-                                  ----
-lib/readline/display.c
-       - changed some ascii-specific code to use CTRL_CHAR and UNCTRL
-       - finished up the changes that keep an array of line breaks
-
-shell.h
-       - moved #define constants for parameter pattern substitution here
-         from subst.c
-
-subst.c
-       - changed the pattern substitution functions to take a `flags'
-         parameter, which subsumes the match type, global replacement
-         flag, and quoted variables
-       - changed the pattern substitution functions to handle the `#'
-         and `%' match qualifiers, which anchor the match at the
-         beginning and end of the string, respectively
-
-shell.c
-       - moved the code that turns off privileged mode into a function
-         named `disable_priv_mode'
-       - if the shell is running setuid or setgid and `-p' is not
-         supplied, turn off privileged mode and reset the effective
-         uid/gid
-
-                                  4/21
-                                  ----
-subst.c
-       - added a `quoted' paramter to parameter_brace_remove_pattern;
-         Posix.2 says that the pattern is parsed differently if the
-         entire expression is double-quoted
-       - `getpattern' now takes a second argument, `quoted'
-       - fixed `getpattern' to correctly handles a pattern spec when
-         the whole expression is double-quoted.  Posix.2 says that
-         quote characters inside the pattern spec don't quote any
-         special pattern chars if the whole thing is double-quoted.
-         For example, the `*' in "${foo#'*'}" is not quoted, and the
-         single quotes must appear literally.
-
-Makefile.in
-       - add `documentation' as a dependency of `.made'
-
-                                  4/24
-                                  ----
-Makefile.in
-       - added `installdirs' target that makes bindir, infodir, mandir,
-         and man3dir [in 1.14.5 cpp-Makefile]
-
-                                  4/25
-                                  ----
-builtins/fc.def
-       - fixed problem with `fc -l' that occurred when fewer than 16 lines
-         were in the history list [in 1.14.5]
-
-                                   5/1
-                                   ---
-Makefile.in, {builtins,documentation}/Makefile.in, lib/*/Makefile.in
-       - fixed up the various `clean' targets to agree with Gnu coding
-         standards
-
-                                   5/2
-                                   ---
-lib/readline/complete.c
-       - made insert_all_matches correctly quote each of the filenames
-         inserted into the line, if necessary
-
-config.h.top
-       - surround definitions of DEFAULT_PATH_VALUE and STANDARD_UTILS_PATH
-         with #ifndef/#endif to allow them to be overridden from the command
-         line
-
-builtins/set.def
-       - changed set -o allenv to set -o keyword for ksh88 compatibility
-
-documentation/{bash.1,features.texi}
-       - changed set -o allenv to set -o keyword
-
-builtins/setattr.def
-       - added a `nodefs' attribute to set_or_show_attributes,
-         show_var_attributes, and show_name_attributes to inhibit printing
-         of definition as well as name
-
-builtins/declare.def
-       - changed calls to set_or_show_attributes, and show_var_attributes
-         accordingly
-
-                                   5/3
-                                   ---
-Makefile.in
-       - LIBPATH -> LIBSUBDIR
-
-                                   5/4
-                                   ---
-lib/readline/bind.c
-       - renamed readline variable meta-flag to be input-meta
-
-documentation/bash.1, lib/readline/doc/rluser.texinfo
-       - changed meta-flag to input-meta
-
-documentation/Makefile.in
-       - use groff -Tascii to convert .1 -> .0
-
-subst.c
-       - new function, strip_trailing_ifs_whitespace, does the obvious
-
-builtins/read.def
-       - call strip_trailing_ifs_whitespace before assigning last
-         variable to remainder of input string [in 1.14.5]
-
-                                   5/5
-                                   ---
-builtins/hashcom.h
-       - changed check_dot member of the PATH_DATA struct to flags, and
-         added a HASH_CHKDOT define to replace the check_dot semantics
-       - add HASH_RELPATH define for flags value
-
-builtins/hash.def, builtins/common.c
-       - instead of xxx->check_dot, use (xxx->flags & HASH_CHKDOT)
-
-builtins/hash.def
-       - if the full pathname to which a command is being hashed does
-         not begin with a `/', set the HASH_RELPATH flag for it
-
-builtins/common.c
-       - if a hashed filename as HASH_RELPATH set, check ./filename,
-         returning null if that filename is not executable
-
-execute_cmd.c, general.c, execute_cmd.h, general.h
-       - moved same_file and check_binary_file from execute_cmd.c to
-         general.c
-
-hashlib.c, Makefile.in
-       - renamed hash.c to hashlib.c
-
-hashlib.h, Makefile.in, builtins/Makefile.in, alias.h, variables.h,
-execute_cmd.c, hashlib.c, builtins/hashcom.h
-       - renamed hash.h to hashlib.h
-
-variables.c, alias.c
-       - removed inclusion of `hash.h'; header files already include
-         correct file
-
-Makefile.in
-       - new rule to remake all the Makefiles (`make Makefiles')
-       - more changes to adhere to GNU coding standards for the various
-         flavors of `clean' targets
-
-                                   5/8
-                                   ---
-documentation/Makefile.in
-       - use `texi2dvi' to make dvi files rather than tex and texindex
-         [in 1.14.5]
-       - don't install `bash_builtins.1' [in 1.14.5]
-
-Makefile.in
-       - removed instances of doc-support/texindex
-
-                                   5/9
-                                   ---
-make_cmd.c
-       - new function make_bare_word, to make a WORD_DESC from a string but
-         not to set any of its flags
-       - broke make_word into make_bare_word and make_word_flags
-       - fixed a bug in make_word_flags to make backslash-quoting a quoting
-         character work right to not set the W_QUOTED flags
-
-subst.c, array.c, execute_cmd.c
-       - call make_bare_word instead of make_word in situations where we
-         don't want the flags set inadvertently
-
-                                  5/11
-                                  ----
-subst.c
-       - removed special handling of $POSIX_PEDANTIC
-
-                                  5/12
-                                  ----
-shell.c
-       - broke the code that fetches the uids and gids into a new
-         function, uidget()
-
-subst.c
-       - EUID and UID are no longer handled specially, since they're
-         readonly
-       - removed sv_uids function
-       - merge sv_histfilesize into sv_histsize
-
-variables.c
-       - instead of calling sv_uids from initialize_shell_variables,
-         call uidset() instead
-       - sv_uids -> uidset with mods to make it faster and avoid an
-         extra call to free, malloc, and itos
-
-bashhist.c
-       - call sv_histsize instead of sv_histfilesize
-
-                                  5/13
-                                  ----
-pathexp.c
-       - moved setup_ignore_patterns here from bashline.c, so GLOBIGNORE
-         works even when readline is compiled out of the shell
-       - changed the ignore data structure to a `struct ignorevar',
-         defined in pathexp.h
-       - added functions to implement GLOBIGNORE
-
-bashline.c
-       - setup_ignore_patterns now in pathexp.c
-       - renamed _ignore_names to ignore_completion_names
-
-subst.c
-       - new function sv_globignore to be called when GLOBIGNORE changes
-         value
-
-documentation/{bash.1,features.texi}
-       - documented GLOBIGNORE
-
-                                  5/15
-                                  ----
-documentation/texinfo.tex
-       - upgraded to version 2.145 from autoconf-2.3 distribution
-
-                                  5/16
-                                  ----
-lib/readline/display.c
-       - delicate surgery on rl_redisplay, update_line, and _rl_update_final
-         to convert to using the line breaks array instead of assuming that
-         lines wrap because they're too long and using absolute buffer
-         positioning calculated from the screen width.  Now the `lithist'
-         shopt option works right
-
-lib/readline/complete.c
-       - make sure insert_match doesn't double an opening quote character
-         after make_quoted_replacement adds an opening quote [in 1.14.5]
-       - make sure append_match doesn't double a closing quote character
-         [in 1.14.5]
-
-quit.h
-       - new macros: SETINTERRUPT, CLRINTERRUPT, ADDINTERRUPT, DELINTERRUPT
-         to manipulate the value of interrupt_state
-
-trap.c, sig.c, jobs.c
-       - changes to use the new macros from quit.h
-
-jobs.c
-       - make an a job that exits due to SIGINT make the shell act as if
-         it received the interrupt itself, but only if SIGINT is not
-         trapped [in 1.14.5]
-
-                                  5/18
-                                  ----
-builtins/common.c
-       - fix up find_hashed_filename and the HASH_RELPATH code.  still need
-         to use `shopt -s checkhash' to check the hashed pathnames.  could
-         fix this up more to make that unnecessary in the HASH_RELPATH case
-
-subst.c
-       - new function get_array_value that does array subscripting for
-         things like aa[1], for use by other parts of the shell like the
-         expression evaluator
-
-expr.c
-       - changes to make things like $(( aa[1] + aa[2])) work without
-         using ${aa[1]}
-
-bashhist.c
-       - converted the HISTIGNORE code to use the `struct ignorevar'
-         framework, with a callback function histignore_item_func to
-         set the HIGN_EXPAND flag if needed
-
-pathexp.c
-       - made the `globignore' variable static
-       - redid the code that removes ignored names from the `names' array
-         in ignore_globbed_names to make it more efficient
-
-bashline.c
-       - made the `fignore' variable static
-
-                                  5/20
-                                  ----
-Makefile.in
-       - made the `distclean' target remove the Makefiles in subdirectories
-         created by autoconf
-
-                                  5/22
-                                  ----
-builtins/command.def
-       - don't allow `command -p' if the shell is restricted
-
-documentation/bash.1
-       - documented the restriction on command -p for rbash
-
-                                  5/23
-                                  ----
-aclocal.m4
-       - add a new macro BASH_CHECK_TYPE, based on AC_CHECK_TYPE, that
-         allows the caller to specify the header files to be included
-         in the test program and provides for a default value to be
-         defined if the type is found in the system files
-
-configure.in
-       - check for getrusage and gettimeofday functions/syscalls
-       - use BASH_CHECK_TYPE to check for clock_t in sys/types.h and
-         sys/times.h
-       - use BASH_CHECK_TYPE to check for sigset_t instead of a special
-         BASH_TYPE_SIGSET_T
-       - use BASH_CHECK_TYPE to check for quad_t instead of BASH_QUAD_T
-       - new argument --enable-command-timing to compile in the `time'
-         reserved word and command timing
-
-general.c
-       - print_time_in_hz takes a `clock_t', not a `time_t'
-
-execute_cmd.c
-       - support for timing pipelines with a new function time_command
-       - execute_command_internal calls time_command if it is passed a
-         command with the CMD_TIME_PIPELINE bit set in command->flags
-       - new functions difftimeval and addtimeval to do arithmetic on
-         timeval structs with overflow
-
-parse.y
-       - new production: pipeline_command, used by list1 and simple_list1
-       - pipeline_command includes rules to handle `!' and time
-       - code to recognize `time' as a reserved word
-
-print_cmd.c
-       - new code to print `time ' before a command if the CMD_TIME_PIPELINE
-         flag bit is turned on
-
-builtins/test.def
-       - added description of string1 < string2 and string1 > string2 to
-         the long doc
-
-test.c
-       - added `<' and `>' string binary operators
-
-documentation/bash.1
-       - documented the `time' reserved word and command timing
-       - documented the new test `<' and `>' binary operators
-
-documentation/features.texi
-       - documented the `time' reserved word and command timing
-       - added more to the section detailing the differences between bash
-         and sh
-       - added descriptions of LINENO and ENV to the Ksh variables section
-       - added description of echo to bash builtins section
-       - added PPID, BASH, SHLVL to the Bash variables section
-
-subst.c
-       - added a `quoted' parameter to extract_dollar_brace_string; changed
-         all calls to it
-
-                                  5/24
-                                  ----
-builtins/let.def
-       - wrote code for an `exp' builtin that treats all of its arguments
-         as an expression, concatenates them like `eval', and runs the
-         expression evaluator
-
-expr.c
-       - added code to do the Posix.2 conditional operator: expr?expr:expr
-       - added a `noeval' flag to suppress evaluation.  currently it only
-         suppresses assignment
-       - added code to the && and || functions so that evaluation is
-         suppressed in the part of the statement that is not supposed to
-         be executed (a && b: set noeval if a is false; a || b; set
-         noeval if a is true)
-
-                                  5/25
-                                  ----
-documentation/{bash.1,features.texi}
-       - documented new `expr?expr:expr' conditional expression syntax
-         now arithmetic evaluation is Posix.2-conformant
-
-lib/readline/readline.c
-       - added several more locale names to the list of legal $LANG
-         values
-
-subst.c
-       - fixed a bug in parameter_brace_patsub: when replacing a string 
-         with nothing, rep was set to "", and the code attempted to
-         free "", which the GNU malloc upchucked on
-
-bashhist.c
-       - just add a line to the history if command_oriented_history is
-         set to 1 and the current line in the command is > 1; don't
-         even bother checking history_ignore
-
-parse.y
-       - new variable `two_tokens_ago' to remember the token read before
-         `token_before_that'
-       - fix to history_delimiting_chars to make sure that no semicolon
-         is added after `()' (assume its a function definition), but that
-         a semicolon is added after other `)' (assume its a parenthesized
-         command)
-
-                                  5/31
-                                  ----
-tests/run-all
-       - put `.' first in $PATH and don't export ENV
-       - set THIS_SH to ../bash if it's unset
-
-lib/readline/complete.c
-       - only try to find a word break character in rl_complete_internal
-         if we hit the end of the input string and found_quote == 0
-         (the opening quote could have been the last character in the
-         string)
-
-                                   6/2
-                                   ---
-subst.c
-       - changed make_quoted_char to return CTLNUL\0 if passed a \0
-         (this is what quote_string does, too) [in 1.14.5]
-       - changed list_string to use make_quoted_char when adding a quoted
-         null argument due to a null field when ifs != ' \t\n'
-       - added an `expandpat' argument to getpattern, which tells it to
-         call string_extract_double_quoted if the pattern expression is
-         double-quoted, and changed all calls to initially pass `1' as
-         its value
-
-jobs.c
-       - changed start_job so that an attempt to start a job marked as
-         JDEAD elicits an error message [in 1.14.5]
-
-Makefile.in
-       - fixed `distclean' target so that it removes Makefiles in subdirs
-         *after* descending into them to do submakes (!)
-       - fixed `realclean' target to remove everything that distclean does
-
-                                   6/5
-                                   ---
-builtins/declare.def
-       - fixed a typo that made `declare +r var' turn off read-only status
-         for a variable [in 1.14.5]
-       - added -p option to short doc and long doc
-       - added code to allow `declare -f -options name' to set and unset
-         attributes for the named functions.  Only when no other options
-         are supplied will the named and value of the function be displayed
-         [in 1.14.5]
-
-variables.h
-       - new SETVARATTR macro to set or unset attributes for a specific
-         SHELL_VAR *
-
-builtins/setattr.def
-       - use SETVARATTR
-
-                                   6/7
-                                   ---
-execute_cmd.c
-       - moved the retrieval of $PS3 inside the loop in execute_select_command
-         so that PS3 can be modified in the select command's body
-         [in 1.14.5]
-
-execute_cmd.c
-       - changed execute_builtin and execute_function to not set
-         builtin_env and function_env, respectively, to NULL if there is
-         no temporary env.  This makes the temp env persist across calls
-         to functions from other functions [in 1.14.5]
-
-configure.in
-       - Linux needs LOCAL_LDFLAGS set to -rdynamic
-
-                                   6/8
-                                   ---
-general.c
-       - canonicalize_pathname should not attempt to interpret backslash
-         quoting `/', since Unix doesn't really allow it [in 1.14.5]
-
-bashline.c
-       - added `\', `!', and `)' to the list of characters which
-         cause filenames to be quoted
-       - changed bash_quote_filename to use any of the three shell
-         quoting styles based on the value of a variable,
-         completion_quoting_style
-       - if *qcp is not 0 when passed to bash_quote_filename, adjust the
-         type of completion we're doing based on its value (i.e.,
-         *qcp == '"' forces double quoting, *qcp == '\'' forces single)
-       - bash_quote_filename now leaves the quotes intact in the filename
-         it returns.  The readline completion code takes care of avoiding
-         doubled open quotes
-       - if a filename containing a `!' is passed to bash_quote_filename
-         without an opening quote character, and we are performing history
-         expansion, use single quoting as the quoting style
-
-bashhist.c
-       - changed bash_history_disable to not call bash_history_reinit(0),
-         but do what it needs to directly
-       - new function bash_history_enable
-       - make history_expansion_inhibited exist only if BANG_HISTORY
-         is defined
-
-bashhist.h
-       - extern declaration for bash_history_enable
-
-lib/readline/complete.c
-       - make make_quoted_replacement set should_quote to 1 if the quote
-         character is `'' as well as if it's `"'
-
-test.c
-       - added the csh-like `=~' and `!~' pattern-matching binary operators
-         which match the string on the lhs against the shell pattern on
-         the rhs.  PATTERN_MATCHING must be defined for this to work; it is
-         undefined and undocumented by default
-
-jobs.c
-       - broke the code that gets the new window size and sets $LINES and
-         $COLUMNS out of sigwinch_sighandler into a new function,
-         get_window_size, which sigwinch_sighandler calls
-
-                                  6/12
-                                  ----
-parse.y
-       - new function, pop_expansion, to remove the top string on the
-         expanded token stack
-       - renamed save_expansion to push_expansion
-
-lib/readline/complete.c
-       - fixed a bug in find_completion_word that tested found_quote
-         instead of quote_char when trying to decide if we have an unclosed
-         quoted string [in 1.14.6]
-
-                                  6/26
-                                  ----
-subst.c
-       - fixed expand_word_internal to remove all traces of $*, even if
-         it's quoted, if there are no positional parameters and there are
-         other characters in the expansion
-
-bashline.c
-       - don't attempt hostname completion if multiple consecutive `@'
-         characters appear
-
-                                  6/27
-                                  ----
-shell.c
-       - initialize top_level early, and exit if a longjmp sends us there
-         before we reinitialize
-
-subst.c
-       - more fixes to expansion of quoted $* when no positional parameters
-       - broke the code that assigns a value to an array element (and parses
-         the array element reference) into a new function,
-         do_array_element_assignment
-
-builtins/read.def
-       - new function, bind_read_variable, to allow binding simple variables
-         and array elements to strings read (uses do_array_element_assignment)
-       - changed occurrences of bind_variable to bind_read_variable where
-         it matters
-
-variables.c
-       - tentative change to bind_variable to make x=y the same as x[0]=y
-         if x is already an array variable.  This works for `read' as well.
-         This is what ksh does.
-
-                                  6/28
-                                  ----
-alias.h
-       - added a `flags' member to the ASSOC struct and renamed it to
-         `alias_t'
-
-alias.c, bashline.c, builtins/alias.def, builtins/type.def
-       - changed ASSOC to alias_t
-
-alias.c
-       - changed add_alias to set the AL_EXPANDNEXT flag when the alias is
-         inserted into the hash table
-
-parse.y
-       - added a third parameter to push_string: a pointer to the alias_t
-         that is being expanded
-       - push_string marks the alias it's passed as being expanded
-         (AL_BEINGEXPANDED)
-       - pop_string marks the alias being popped as no longer being
-         expanded
-       - changed shell_getc to defer popping an alias expansion until
-         the parser has had a chance to catch up, since the parser reads
-         ahead and would cause the expansion to be popped before it
-         fully parsed the expanded string
-       - changed alias_expand_word to check the AL_BEINGEXPANDED flag
-         instead of the expanded_token_stack when checking whether an
-         alias is already being expanded
-
-oslib.c
-       - make the definition of bzero be surrounded by #ifdef HAVE_BZERO
-         rather than lumping it in with bcopy
-
-configure.in
-       - add a test for bzero
-
-config.h.in
-       - add a template for HAVE_BZERO
-
-                                   7/3
-                                   ---
-builtins/set.def
-       - added new meaning for `set +o' without options, as per the latest
-         draft of Posix.2.  It means to list -o options as a series of set
-         commands to recreate the current settings
-
-documentation/bash.1
-       - augmented description of the `set' builtin
-
-                                   7/6
-                                   ---
-jobs.c
-       - make sure that temp_handler is not set to SIG_DFL before calling
-         it from waitchld
-
-builtins/cd.def
-       - rewrote cd_builtin to make the code flow clearer
-       - broke full directory name construction out into a separate
-         function: mkpath
-       - cd_builtin now tests that a directory constructed from a $CDPATH
-         entry is actually a directory before trying to chdir to it
-       - added an error message if $HOME is not set
-       - added a descriptive error message if `cd -' used and OLDPWD unset
-       - changed the error messages to use builtin_error, not file_error
-       - moved the code at the bind_and_exit label into a function,
-         bindpwd (no_symlinks)
-       - Posix.2 says that when using $CDPATH, the resultant value of PWD
-         should have no symlinks
-
-                                   7/7
-                                   ---
-input.c
-       - if fd_to_buffered_stream fails in some way and returns a NULL
-         buffered stream, with_input_from_buffered_stream uses a function
-         that does nothing but return EOF as the `getter'.  This keeps
-         the shell from crashing if invoked with fd 0 closed
-
-subst.c
-       - made the `quoted' parameter to expand_word_internal into a flags
-         word with flag values defined in shell.h.  Each place where
-         `quoted' is tested for a non-zero value was changed to test
-         (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0 instead
-
-mailcheck.c, shell.c, parse.y
-       - change calls to the expand_string* functions to pass an explicit
-         Q_DOUBLE_QUOTES where appropriate
-
-                                   7/9
-                                   ---
-subst.c
-       - getpattern now passes Q_NOQUOTE to expand_word_internal, indicating
-         that quotes in the pattern spec are not to be treated specially
-
-                                  7/12
-                                  ----
-jobs.c
-       - fixed up the MUST_UNBLOCK_CHILD code in wait_for so that it now
-         unblocks all signals and sets the signal handler for SIGCHLD to
-         SIG_DFL.  pre-v4 SCO machines seem to require this [in 1.14.5]
-
-[Bash-1.14.5 released to net 7/16]
-
-                                  7/17
-                                  ----
-documentation/features.texi
-       - changed the Bourne Shell builtins section to have the same format
-         as the bash builtins section, with usage synopses
-       - added a section on the restricted shell
-
-                                  7/18
-                                  ----
-documentation/features.texi
-       - changed the name of this document to the Bash Reference Manual
-       - added sections on POSIX mode and restricted shell
-
-lib/readline/doc/hsuser.texinfo
-       - added the text from the bash manual page about the bash history
-         facilities if BashFeatures is set
-
-                                  7/19
-                                  ----
-documentation/features.texi
-       - added more stuff to the bash basics section
-
-lib/readline/doc/rluser.texinfo
-       - added a sample inputrc file
-
-                                  7/20
-                                  ----
-documentation/features.texi
-       - added section on shell expansions to bash basics section
-
-builtins/Makefile.in, lib/glob/Makefile.in, lib/malloc/Makefile.in,
-lib/readline/Makefile.in, lib/termcap/Makefile.in, lib/tilde/Makefile.in
-       - ar is now called with flags `cr' when building libraries
-
-                                  7/21
-                                  ----
-lib/readline/complete.c
-       - fixed a bug in find_completion_word that resulted in the found_quote
-         flag and the delimiter character not being passed back to the
-         caller (tested (*fp) instead of (fp) before assigning found_quote;
-         similarly for dp).  With this fix, the filename dequoting function
-         is properly called
-
-                                  7/25
-                                  ----
-general.c
-       - renamed bash_tilde_expand to bash_tilde_expansion_failure_hook
-       - new function, bash_tilde_expand, that just sets interrupt_immediately
-         and calls tilde_expand, returning what tilde_expand returns
-
-subst.c, general.c, shell.c, execute_cmd.c, variables.c, bashline.c,
-builtins/cd.def
-       - changed calls to tilde_expand to calls to bash_tilde_expand instead
-
-                                  7/27
-                                  ----
-builtins/set.def
-       - added a -o history option to enable and disable command history
-         saving.  This uses bash_history_enable() and bash_history_disable()
-         It's keyed off of remember_on_history.  With this, shell scripts 
-         can use the command history
-
-bashhist.c
-       - bash_history_enable now calls sv_history_control and sv_histignore
-
-builtins/fc.def
-       - if history_list() returns a null pointer, immediately return
-         [in 1.14.6]
-
-documentation/{bash.1,features.texi}, lib/readline/doc/hsuser.texinfo
-       - added a description of the `set -o history' option and changed
-         text to refer to it rather than strictly interactive shells
-
-                                   8/1
-                                   ---
-variables.c
-       - new builtin variable $HOSTNAME, initialized to current_host_name
-         as set in shell.c
-
-documentation/bash.1, documentation/features.texi
-       - documented $HOSTNAME
-
-                                   8/3
-                                   ---
-support/texi2html
-       - new program, a texinfo-html converter
-
-documentation/Makefile.in
-       - added directives to produce features.html from features.texi
-
-MANIFEST.doc
-       - added features.html and features_toc.html to the doc distribution
-
-                                  8/10
-                                  ----
-lib/readline/bind.c
-       - new functions rl_variable_dumper and rl_dump_variables to print
-         readline variables and their values to rl_outstream
-       - new functions rl_get_keymap_name and rl_get_keymap_name_from_edit_mode
-         to get the name of the current keymap for the variable dumper
-
-lib/readline/readline.h
-       - extern declarations for rl_variable_dumper, rl_dump_variables, and
-         rl_get_keymap_name
-
-builtins/bind.def
-       - added -V flag to print variable names and bindings
-       - added -P flag to print variable names and bindings in the syntax
-         of the inputrc file
-
-lib/readline/funmap.c
-       - added new bindable `dump-variables' readline command
-
-documentation/{bash.{1,html},readline.3,features.html},
-lib/readline/doc/rluser.texinfo
-       - documented new `dump-variables' readline command
-
-documentation/{bash.{1,html},features.{texi,html}
-       - documented new bind -P and -V options
-
-documentation/bashbug.1
-       - new manual page
-
-documentation/Makefile.in
-       - changes to build and install bashbug.1
-
-                                  8/15
-                                  ----
-print_cmd.c
-       - new function `xprintf' that just calls vfprintf(stdout, ...)
-         to avoid having to declare printf
-
-parse.y
-       - slight change in how read_token_word computes `all_digits'
-
-                                  8/21
-                                  ----
-
-subst.c
-       - new function dequote_escapes to remove CTLESC escaping
-         CTLESC and CTLNUL in a string, returning a new string
-
-                                  8/25
-                                  ----
-shell.c
-       - execute the file SYS_BASHRC for interactive shells if SYS_BASHRC
-         is defined, before executing ~/.bashrc
-
-config.h.top
-       - add a dummy commented definition for SYS_BASHRC, defaulting to
-         /etc/bash.bashrc
-
-lib/readline/input.c
-       - added code to call select() in rl_gather_tyi() and return
-         immediately if it indicates that there is nothing to read on
-         the readline input fd (#ifdef HAVE_SELECT)
-
-lib/posixheaders/posixdir.h
-       - new file to localize the <dirent.h>/<sys/dir.h> and dirent/direct
-         mess
-
-posixdir.h, lib/readline/posixdir.h
-       - symlinks to lib/posixheaders/posixdir.h
-
-lib/readline/rldefs.h
-       - removed the posix dir includes and defines
-
-lib/readline/complete.c, getcwd.c
-       - include posixdir.h rather than having the code inline
-
-builtins/cd.def
-       - new code to do spelling correction on the directory name
-         modified from patch sent by Neil Russell (caret@c-side.com)
-
-                                  8/29
-                                  ----
-builtins/shopt.def
-       - new option `cdspell' to toggle cd directory name spelling
-         correction
-
-documentation/{bash.{1,html},features.texi}
-       - documented new shopt `cdspell' option
-
-                                   9/5
-                                   ---
-subst.c
-       - $'' should expand to the same thing as '' (a quoted null string)
-
-shell.h
-       - changed CTLNUL to '\177'; some scripts use ^B for things like IFS
-         [in 1.14.6]
-
-                                   9/7
-                                   ---
-support/config.guess
-       - added code to identify a PPC running Solaris 2
-
-doc
-       - new directory replacing documentation
-
-Makefile.in, MANIFEST, MANIFEST.doc, configure.in
-       - replaced `documentation' with `doc'
-
-                                   9/8
-                                   ---
-lib/readline/display.c
-       - fixed the code in _rl_update_final that decides whether or not the
-         cursor is at character position 0 on an otherwise-empty line and
-         adjusts _rl_vis_botlin accordingly
-
-                                  9/13
-                                  ----
-general.c
-       - fixed canonicalize_pathname to make sure that intermediate
-         results correspond to directories before blindly chopping
-         off the last component when we see a `..'.  This fixes the
-         `cd ../.../..' being equivalent to `cd ..' problem
-
-subst.c
-       - fixed make_named_pipe so that mkfifo is called with mode 0600
-         for security reasons [in 1.14.6]
-       - changed the /dev/fd version of add_fifo_list to zero out new
-         entries to the fifo_list when it resizes it larger [in 1.14.6]
-       - changed make_dev_fd_filename to use DEV_FD_PREFIX
-
-aclocal.m4
-       - changed BASH_HAVE_DEV_FD to check for /proc/self/fd and define
-         DEV_FD_PREFIX to either "/dev/fd/" or "/proc/self/fd/" as
-         appropriate
-
-                                  9/14
-                                  ----
-lib/readline/display.c
-       - when displaying the first line of a multiline prompt, make sure
-         that the final \n is followed by a \r (outputting one if necessary)
-         so that we know we are starting at column 0
-
-variables.h
-       - new attribute: att_local
-
-variables.c
-       - changed make_local_variable to set the att_local attribute
-       - changed makunbound to just make variables marked as `local' in
-         the current context invisible.  This makes the local variable
-         persist throughout the function even if it is unset, so a
-         subsequent assignment preserves the `local' attribute
-       - changed kill_all_local_variables to unset the att_local attribute
-         before calling makunbound
-
-                                  9/18
-                                  ----
-lib/readline/complete.c
-       - make sure the cursor is on the last line of a possibly-multiple-
-         line command line before listing the completions in
-         display_matches
-
-                                  9/19
-                                  ----
-braces.c
-       - fixed the non-SHELL case in brace_gobbler so the loop exits when
-         it should
-
-lib/readline/bind.c, lib/readline/readline.h
-       - added functions to dump key sequences bound to macros and their
-         values
-
-builtins/bind.def
-       - added -S and -s options to dump the readline macros and their values
-       - changed the options so that -p and -P dump functions, -v and -V
-         dump variables, and -s and -S dump macros (s for string)
-
-doc/{bash.{1,html},readline.3,features.texi}, lib/readline/doc/rluser.texinfo
-       - added documentation for the new `bind' options
-       - added documentation for the new readline functions to dump macros
-         and the key sequences that output them
-
-                                  9/22
-                                  ----
-print_cmd.c
-       - new function xtrace_print_word_list (WORD_LIST *) to print the
-         words of a simple command when set -x is on.  This prints ''
-         when it encounters an empty string
-
-externs.h
-       - new extern declaration for xtrace_print_word_list
-
-execute_cmd.c
-       - call xtrace_print_word_list in execute_simple_command
-
-                                  9/25
-                                  ----
-builtins/getopts.def
-       - make sure that the loop counter stops at 10 when stepping through
-         the dollar_vars array to count the number of positional parameters
-         [in 1.14.6]
-
-                                  9/30
-                                  ----
-lib/readline/histsearch.c
-       - fixed history_search_internal to bail immediately if it gets a
-         null or empty search string.  This fixes the !? core dumps.
-         [in 1.14.6]
-
-                                  10/3
-                                  ----
-lib/readline/histexpand.c
-       - if there is a null string given with a !? search specifier, use
-         a previous search string if one exists, else fail immediately
-
-trap.c
-       - made run_exit_trap preserve $? around the call to execute the
-         trap string, unless the trap string contains an `exit'
-         command, in which case it can set the shell's exit status
-         [in 1.14.6]
-
-         In other words:
-
-               touch /tmp/z
-               trap 'rm /tmp/z ; exit 5' 0
-               exit 1
-
-         exits with status 5; while
-
-               touch /tmp/z
-               trap 'rm /tmp/z' 0
-               exit 1
-
-         exits with status 1
-
-subst.c, parse.y
-       - moved the $'...' code from subst.c to parse.y, more like ksh
-         does it
-
-doc/bash.1, doc/bash.html, doc/features.texi
-       - moved the description of $'...' from the expansion section to
-         the quoting section
-
-                                  10/4
-                                  ----
-command.h
-       - added a `line' member to the function struct for the source line
-         the function definition starts on
-
-make_cmd.c
-       - initialize the `line' member in Function_def to 0
-       - make_function_def takes a third parameter telling which line the
-         function definition started on and a fourth telling which line
-         the function body started on
-
-make_cmd.h
-       - changed prototype for make_function_def
-
-parse.y
-       - new variable `function_dstart', set by read_token and read_token_word
-         to keep track of where a function definition begins
-       - new variable `function_bstart' to keep track of where function
-         body begins
-       - pass function_dstart and function_bstart to make_function_def
-       - new function strtrans to do the $"..." locale-specific translation
-         of `...'
-       - call strtrans() to translate $"string".  The translated string is
-         double-quoted
-
-doc/bash.{1,html}
-       - updated the description of LINENO now that line numbers within
-         functions are correct
-
-configure.in
-       - look for the `gettext' library function
-
-config.h.in
-       - define HAVE_GETTEXT if gettext(3) exists in a findable library
-
-                                  10/5
-                                  ----
-builtins/common.c
-       - changed backslash_quote so that `#' is only quoted at the start
-         of a word
-       - new function contains_shell_metas returns 1 if the argument
-         string contains one or more shell meta-characters that require
-         quoting
-
-builtins/common.h
-       - extern declaration for contains_shell_metas
-
-print_cmd.c
-       - changed xtrace_print_word_list to print words containing
-         shell metacharacters within single quotes
-
-lib/termcap
-       - upgraded to GNU termcap version 1.3
-
-                                  10/9
-                                  ----
-lib/readline/readline.c
-       - call setlocale(LC_CTYPE, ...) after finding a legal value for
-         one of LC_ALL, LC_CTYPE, or LANG
-
-                                  10/11
-                                  -----
-lib/readline/search.c
-       - make rl_history_search_internal just do previous-history or
-         next-history as appropriate when given a null search string
-         (rl_point == 0)
-
-                                  10/24
-                                  -----
-subst.c
-       - fixed an off-by-one error in char_is_quoted that skipped a
-         characters after calling skip_single_quoted or skip_double_quoted
-         [in 1.14.6]
-       - fixed an off-by-one error in string_extract_verbatim so it
-         leaves *sindex at the separator character if the separator
-         character is "'" [in 1.14.6]
-
-                                  10/27
-                                  -----
-parse.y
-       - in CHECK_FOR_RESERVED_WORD, make sure that reading a `}'
-         decrements open_brace_awaiting_satisfaction if it is non-zero
-         [in 1.14.6]
-
-shell.c
-       - don't run the shell startup files if the shell is running
-         setuid
-       - don't source $ENV if the shell is running setuid
-
-variables.c
-       - new parameter to initialize_shell_variables: no_functions.  If
-         non-zero, don't import functions from the environment
-
-variables.h
-       - change to function prototype for initialize_shell_variables
-
-lib/readline/complete.c
-       - fix for the code that decides whether or not a char is quoted for
-         applications that don't supply a value for rl_char_is_quoted_p
-       - fixed insert_match to not remove a user-supplied opening quote
-         character if make_quoted_replacement does not return a string
-         beginning with that quote character
-
-                                  11/2
-                                  ----
-general.c
-       - new function ungetc_with_restart that handles the local buffering
-         [in 1.14.6]
-
-parse.y
-       - changed yy_stream_unget to call ungetc_with_restart if the OS
-         does not have restartable syscalls [in 1.14.6]
-
-                                  11/3
-                                  ----
-bashline.c
-       - rewrote _ignore_completion_names to actually free and remove
-         names from the array if more than one names in the array
-         passed is acceptable, instead of just bailing [in 1.14.6]
-
-                                  11/7
-                                  ----
-bashline.c
-       - if no matches are acceptable to _ignore_completion_names,
-         free the entries in NAMES, set NAMES[0] == 0, and let the
-         caller clean up [in 1.14.6]
-       - fixed a problem with backslash-quoted characters in
-         bash_dequote_filename that caused the character after the
-         backslash to be interpreted
-       - bash_dequote_filename now takes a quote_char parameter that,
-         if non-zero, gives the quote character (`'' or `"') that
-         delimits the filename.  Used to initialize the quoting state
-
-lib/readline/complete.c
-       - if the completion ignore function returns with MATCHES == 0
-         or MATCHES[0] == 0, ring the bell and quit the completion
-         attempt [in 1.14.6]
-       - pass quote_char to gen_completion_matches so it can pass it
-         along to the app-specific filename dequoting function
-       - have gen_completion_matches pass quote_char to whatever function
-         is pointed to by rl_filename_dequoting_function
-
-pathexp.c
-       - rewrote ignore_globbed_names to be more like _ignore_completion_names
-
-lib/readline/doc/rltech.texinfo
-       - updated documentation for rl_filename_dequoting_function
-
-                                  11/10
-                                  -----
-subst.c
-       - fixed remove_quoted_nulls so that it is now a full function that
-         removes unquoted CTLNUL chars from the string it is passed
-         [in 1.14.6]
-       - fixed expand_word_internal to avoid generating some unneeded
-         quoted nulls (if the string is partially quoted, note that we
-         have seen a quoted null and add one if the rest of the string
-         doesn't expand to anything)
-
-                                  11/13
-                                  -----
-variables.c
-       - bind HOSTTYPE, OSTYPE, and HOSTNAME unconditionally
-
-pathexp.c
-       - new function quote_globbing_chars, adds `\' before globbing
-         chars in its string argument, returns new string
-
-pathexp.h
-       - extern declaration for quote_globbing_chars
-
-bashhist.c
-       - if the previous line contains globbing chars, run it through
-         quote_globbing_chars before trying to match.  This affects
-         only HISTIGNORE patterns containing `&'
-
-                                  11/14
-                                  -----
-bashhist.c
-       - if the history line to be added contains globbing chars, quote
-         them with backslashes by calling quote_globbing_chars in
-         history_should_ignore before comparing them against the
-         patterns in HISTIGNORE
-
-bashline.c
-       - make sure that we erase the current readline line after running
-         fc on it and executing the resultant commands in
-         vi_edit_and_execute_command, so the original readline line
-         doesn't get returned [in 1.14.6]
-
-jobs.h
-       - added a new job listing format: JLIST_NONINTERACTIVE -- like
-         JLIST_LONG, but does not print the job number
-
-jobs.c
-       - added code to pretty_print_job to handle JLIST_NONINTERACTIVE
-       - call notify_and_cleanup() from wait_for even if the shell is
-         running a script (interactive_shell == 0)
-       - changed notify_and_cleanup to call notify_of_job_status if
-         interactive or interactive_shell == 0, so scripts report
-         about jobs they run
-       - changed notify_of_job_status to call pretty_print_job with a
-         JLIST_NONINTERACTIVE format if interactive_shell is 0 and a
-         job is marked JDEAD, after printing the script name and line
-         number.  This message is printed only if the job dies due to
-         a fatal signal
-
-support/mkversion.c
-       - added support for a `-status status' argument to set the
-         `release status' of the shell (alpha, beta, or release).  It
-         defines `RELSTATUS' in version.h and changes the definition
-         of SCCSVERSION, if present
-
-Makefile.in
-       - set a RELSTATUS variable that is included when printing the build
-         message and passed to mkversion with the -status option
-       - make RELSTATUS one of the variables sed sets when it creates
-         bashbug from support/bashbug.sh
-
-version.c
-       - added a `release_status' variable that's set to RELSTATUS if
-         it's defined
-
-support/bashbug.sh
-       - added the `RELSTATUS' variable to the report with heading
-         `Release Status'
-       - set the bug address to chet@po.cwru.edu if the release status
-         is `alpha' or `beta'
-
-                                  11/15
-                                  -----
-
-shell.c, execute_cmd.c
-       - new variable expand_aliases to control alias expansion.  For now,
-         this is set to the same value as interactive_shell when that is
-         set
-
-parse.y
-       - perform alias expansion if expand_aliases is non-zero rather than
-         checking the value of interactive_shell
-
-                                  11/16
-                                  -----
-builtins/shopt.def
-       - new option `expand_aliases' to control the value of expand_aliases
-
-doc/bash.1, doc/bash.html
-       - updated the description of `shopt' with the `expand_aliases' option
-
-                                  11/28
-                                  -----
-bashline.c
-       - if there is only one completion in _ignore_completion_names, see
-         if it is acceptable and return right away [in 1.14.6]
-
-configure.in
-       - change to define WAITPID_BROKEN on SCO 3.2v5
-
-                                  12/6
-                                  ----
-parse.y
-       - call prompt_again in read_token_word if a newline is read in an
-         interactive shell and bash_input.type is either st_stdin or
-         st_stream
-       - remove superfluous call to reset_readline_prompt in yy_readline_get
-
-                                  12/7
-                                  ----
-parse.y
-       - combine delimiters, delimiter_depth, and delimiter_space into a
-         single structure of type `struct dstack'
-       - replace all references to delimiter* with dstack.delimiter*
-       - include parser.h for struct dstack
-       - new define pop_delimiter(), analogous to push_delimiter
-       - current_delimiter, push_delimiter, and pop_delimiter defines now
-         include the delimiter stack struct as the first parameter
-
-parser.h
-       - now includes definition of struct dstack
-
-bashline.c
-       - include parser.h for struct dstack
-       - refer to dstack.delimiter_depth instead of delimiter_depth
-
-                                  12/12
-                                  -----
-execute_cmd.c
-       - before doing a longjmp(subshell_top_level,...) when executing a
-         shell script without a leading #!, set history_lines_this_session
-         to 0 to forget about the history and not save it on an exec
-         (we don't free the memory with clear_history(), though -- that
-         would slow bash down)
-
-                                  12/14
-                                  -----
-jobs.c, nojobs.c
-       - cause the sigwinch handling code to be compiled into the shell
-         even if READLINE is defined
-       - new functions: set_sigwinch_handler and unset_sigwith_handler
-         to enable and disable catching of SIGWINCH and adjusting $LINES
-         and $COLUMNS
-       - changed initialize_job_signals to install a signal handler for
-         SIGWINCH with set_sigwinch_handler
-
-jobs.h
-       - extern declarations for set_sigwinch_handler and
-         unset_sigwinch_handler
-
-                                  12/20
-                                  -----
-doc/bash.{1,html}, doc/readline.3, lib/readline/doc/rluser.texinfo
-       - documented the readline `visible-stats' variable
-
-                                  12/21
-                                  -----
-trap.c
-       - new global variable `running_trap' incremented and decremented
-         around running a trap command in _run_trap_internal
-
-execute_cmd.c
-       - new variable currently_executing_command, set to the COMMAND *
-         currently being processed by execute_command_internal, unless a
-         trap command is being run (running_trap != 0)
-       - new function executing_line_number, which returns the line number
-         of the currently executing command (which may not be the same as
-         line_number)
-       - don't run the debug trap if it was not set before the current
-         simple command was executed, since we don't want to run it after
-         the trap command that sets the DEBUG trap
-
-variables.c
-       - new function assign_lineno, to assign a value to line_number
-         when LINENO is set
-       - changed get_lineno to call executing_line_number() rather than
-         returning line_number
-
-parse.y
-       - new argument for push_stream telling it whether or not to reset
-         line_number to 0
-
-builtins/common.c
-       - change to parse_and_execute to call push_stream with an argument
-
-                                  12/29
-                                  -----
-subst.c
-       - set subshell_environment in command_substitute and process_substitute
-         for the child process
-
-                                   1/2
-                                   ---
-trap.c
-       - made decode_signal recognize signal names case insensitively
-
-shell.c
-       - make the shell exit on a longjmp (DISCARD, ...) if
-         subshell_environment is non-zero
-
-                                  1/16
-                                  ----
-lib/readline/histexpand.c
-       - let the `!' in ${!xxx} pass through without error
-
-shell.c
-       - new --help long option
-       - new function show_shell_usage() for use by --help
-
-                                  1/19
-                                  ----
-parse.y
-       - changes to shell_getc to make sure that lines consisting of only a
-         newline get added to the history correctly when they are part of
-         a quoted string
-
-                                  1/24
-                                  ----
-aclocal.m4, configure.in
-       - added a check for -lsocket (and -lnsl) to fix solaris problems
-         with isnetconn()
-
-shell.c
-       - rearranged the code in isnetconn to check for a socket using
-         getpeername() first, before any SVR4 or SVR4.2-specific checks
-       - added checks for ttys (isatty) and FIFOs (S_ISFIFO) to the
-         SVR4/SVR4.2 case of isnetconn()
-
-general.h
-       - new macro RESIZE_MALLOCED_BUFFER to check and see whether there
-         is enough room in a string to add a given number of characters
-         and to resize it if there is not
-
-                                  1/25
-                                  ----
-parse.y, general.c, subst.c, bashhist.c, alias.c, array.c, variables.c
-       - use RESIZE_MALLOCED_BUFFER where appropriate
-
-                                  1/26
-                                  ----
-support/config.{guess,sub}
-       - merged in latest changes from GNU master copies
-
-                                  1/30
-                                  ----
-
-jobs.c
-       - make sure to freeze the jobs list when calling a trap handler
-         for SIGINT
-       - added code to waitchld() so that a SIGINT trap handler is called
-         if the shell is running a shell script and a SIGINT is received
-         while waiting for a foreground job, even if that job does not
-         die from the SIGINT
-
-jobs.c, nojobs.c
-       - make get_tty_state reset $LINES and $COLUMNS after each process
-         exits if the variable `check_window_size' is non-zero
-
-builtins/shopt.def
-       - new variable `checkwinsize', which controls the value of
-         check_window_size
-
-doc/{bash.{1,html},features.texi}
-       - updated description of `shopt' to include `checkwinsize'
-
-execute_cmd.c, lib/readline,complete.c
-       - some changes from the GNU WIN32 project for the bash port to
-         Windows NT and Windows 95
-
-bashwait.h
-       - new file, with `union wait' defines from jobs.h
-
-jobs.h
-       - include `bashwait.h' if <sys/wait.h> is not present and
-         _POSIX_VERSION is not defined
-       - removed define of pid_t for non-Posix systems; now provided by
-         autoconf in config.h
-
-                                  1/31
-                                  ----
-parse.y
-       - new temporary delimiter stack, used when decoding prompt strings.
-         This is needed so command substitutions in the prompt strings
-         (especially PS2) don't screw up the parser's quoting state
-
-lib/readline/complete.c
-       - new variable for readline library users:
-         rl_completion_append_character.  The value of this variable is
-         the character appended to a completion when it occurs at the
-         end of a line.  Setting it to '\0' causes nothing to be
-         appended.
-
-lib/readline/readline.h
-       - declaration for rl_completion_append_character
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_append_character as int variable available
-         to library users
-
-subst.c
-       - new code for maintaining a string array saying which words in the
-         output of expand_word_list_internal are the result of globbing
-
-variables.c
-       - new function put_gnu_argv_flags_into_env (pid, flags_string)
-         to put Roland's GNU getopt helper variable into the export_env
-
-execute_cmd.c
-       - in execute_disk_command, after forking the child, put the GNU
-         getopt helper environment variable into the child's export_env
-
-unwind_prot.c
-       - changed unwind_protect_var and restore_variable to do the
-         bcopy of the variable's value if it's shorter than the size of
-         an int, as well as if it's longer.  This keeps stray data
-         from being copied if a short is being unwind-protected
-
-unwind_prot.h
-       - new define, unwind_protect_short, to protect variables smaller
-         than an int
-
-jobs.c
-       - in the code that handles SIGCHLD traps, call unwind_protect_short
-         if that is the size of a pid_t (for last_made_pid)
-
-                                   2/5
-                                   ---
-Makefile.in
-       - only try make distclean in HIST_LIBDIR if Makefile exists -- could
-         have already been removed if HIST_LIBDIR is the same as RL_LIBDIR
-
-general.c
-       - make canonicalize_pathname be more careful about what it checks
-         for being a directory name when processing a full pathname
-
-Makefile.in, configure.in, doc/Makefile.in
-       - small changes to get bash to build better in a directory not the
-         source directory
-
-                                  2/12
-                                  ----
-Makefile.in
-       - added `install-strip' target
-
-                                  2/14
-                                  ----
-doc/bash.{1,html}, doc/features.texi
-       - documented the `--verbose' startup option
-
-lib/readline/complete.c
-       - fix to gen_completion_matches to fix a memory leak
-       - fix to rl_complete_internal to fix a memory leak
-
-                                  2/15
-                                  ----
-bashwait.h
-       - changed to use WORDS_BIGENDIAN instead of LITTLE_ENDIAN or
-         BIG_ENDIAN
-
-configure.in, config.h.in
-       - call AC_C_BIGENDIAN, define WORDS_BIGENDIAN
-
-Makefile.in
-       - remove all references to mkendian.c, mkendian, and bash_endian.h
-       - added a `symlinks' target that just runs support/fixlinks
-
-MANIFEST
-       - mkendian.c is no longer in the distribution
-
-                                  2/16
-                                  ----
-execute_cmd.c
-       - include <sys/times.h> if HAVE_SYS_TIMES_H and HAVE_TIMES are
-         defined
-
-bashline.c
-       - fix to bash_directory_completion_hook to compensate for
-         canonicalize_pathname returning NULL
-
-variables.c
-       - fix to initialize_shell_variables to compensate for
-         canonicalize_pathname returning NULL
-
-                                  2/22
-                                  ----
-tests/test-tests, tests/test.right
-       - changes to avoid writing in the source directory -- all temp files
-         are created in /tmp
-
-[First alpha release at Thu Feb 22 15:59:51 EST 1996]
-
-                                  2/23
-                                  ----
-lib/readline/rldefs.h
-       - work around SVR4.2 bug including <sys/ptem.h> and <termios.h>
-
-lib/readline/chardefs.h
-       - fix to CTRL_CHAR macro for chars > 128 on systems with signed
-         characters
-
-builtins/ulimit.def
-       - protect more of the RLIMIT_* defines with checks
-       - new macro RETINVALID() to set errno and return the correct
-         value for an invalid request
-
-doc/Makefile.in
-       - add a definition for INSTALL, set by autoconf
-
-                                  2/26
-                                  ----
-support/bashbug.sh
-       - if USER is unset, assign it the value of $LOGNAME or `whoami`
-
-Makefile.in,{lib/*,doc,builtins}/Makefile.in
-       - use `test' instead of `[' to conform to GNU coding standards
-       - `incdir' -> `includedir' as per latest GNU coding standards
-
-lib/readline/Makefile.in, lib/glob/Makefile.in
-       - use $(srcdir)/ instead of $(srcdir) in the CSOURCES variable
-
-general.h
-       - new define, FS_NODIRS, to not find directory names when searching
-         $PATH
-
-execute_cmd.c
-       - fix to find_in_path_element so it does not return directories
-       - executable_file() no longer returns directories as executable
-
-                                  2/27
-                                  ----
-jobs.h
-       - new flag value: J_NOHUP
-
-jobs.c
-       - new function: nohup_job(job).  Sets J_NOHUP flag for specified
-         job
-       - change hangup_all_jobs so that jobs marked J_NOHUP are not
-         sent SIGHUP.  If stopped, the job still gets SIGCONT.
-       - changed calls to report_error to call internal_error, which will
-         not exit the shell
-       - changed FIND_CHILD define to call internal_error, restore the
-         SIGINT handler, set termination_state to 127 and return, rather
-         than aborting the shell
-
-builtins/jobs.def
-       - new option for disown: `-h'.  Marks the specified jobs J_NOHUP.
-
-doc/{bash.{1,html},features.texi}
-       - added description of `disown -h'
-
-jobs.c, nojobs.c
-       - include some files needed for struct winsize by SCO
-
-lib/readline/input.c
-       - added some #ifdefs to avoid including <sys/time.h> on systems
-         with select but without <sys/select.h>
-
-configure.in
-       - check for <stdarg.h>, define HAVE_STDARG_H in config.h if found
-
-config.h.bot
-       - define USE_VARARGS and either PREFER_STDARG or PREFER_VARARGS
-         if one of <stdarg.h> or <varargs.h> is present
-
-aclocal.m4
-       - moved default mail directory check here from configure.in, macro
-         name is BASH_DEFAULT_MAIL_DIR
-       - rewrote BASH_CHECK_DEV_FD to cache the value
-       - minor fixes from Bruno Haible
-
-shell.c
-       - no longer includes <varargs.h>
-
-builtins/Makefile.in
-       - add -I$(topdir)/builtins to list of includes
-
-execute_cmd.c, lib/glob/glob.c
-       - include memalloc.h for correct alloca definitions
-
-error.[ch], print_cmd.c, builtins/common.[ch]
-       - changes to include new ANSI-C stdargs code if PREFER_STDARG is
-         defined
-
-                                  2/28
-                                  ----
-aclocal.m4
-       - more minor fixes from Andreas Schwab
-
-doc/Makefile.in
-       - change TEXINPUTS makefile variables to TEXINPUTDIR to avoid
-         conflict with shell variable of the same name
-
-builtins/pushd.def
-       - fix to avoid a bad call to free after a call to
-         polite_directory_format does not change its argument string
-
-lib/readline/bind.c
-       - fixes to _rl_macro_dumper_internal so that it prints whatever
-         prefix it's passed, if any
-
-                                  2/29
-                                  ----
-Makefile.in
-       - slight change to the rule for `stamp-h': it should be created by
-         running `config.status', not explicitly by the makefile rule
-
-builtins/Makefile.in
-       - replace `..' in the dependencies with `$(topdir)'
-       - replace `.' in the dependencies with `$(srcdir)'
-
-                                   3/1
-                                   ---
-Makefile.in
-       - add a rule to build builtins/builtext.h for the benefit of
-         deficient makes like the SunOS one
-
-variables.c
-       - fix to assign_in_env so that values in the environment are
-         properly null-terminated
-
-builtins/Makefile.in
-       - added dependencies for object files made from .c files in this
-         directory: common.o, getopt.o, bashgetopt.o.  SunOS /bin/make
-         doesn't seem to be able to handle anything else
-
-support/mkclone
-       - new script to replace clone-bash that works from MANIFEST to link
-         only those files contained in a distribution
-
-support/mkversion.c
-       - change so that it doesn't try to get `.build' from the source
-         directory when that's different from the build directory
-
-                                   3/4
-                                   ---
-bashjmp.h
-       - #undef setjmp and longjmp before redefining them as sigsetjmp and
-         siglongjmp, respectively
-
-bashhist.c
-       - fixed an uninitialized variable problem in expand_histignore_pattern
-
-builtins/set.def
-       - used `on_or_off' where `value' was needed in minus_o_option_commands
-
-builtins/common.h
-       - added extern declaration for set_var_attribute
-
-print_cmd.c
-       - include `bashansi.h' instead of just string.h or strings.h
-
-builtins/*.def, builtins/common.c
-       - include `../bashansi.h' where appropriate
-
-parse.y
-       - fixed a parenthesization problem in alias_expand_token
-
-general.h
-       - added extern declaration for `ungetc_with_restart'
-
-lib/readline/readline.c
-       - renamed LibraryVersion to rl_library_version, made it extern,
-         assigned `2.1' to it
-
-lib/readline/readline.h
-       - extern declaration for `rl_library_version'
-
-lib/readline/doc/rltech.texinfo
-       - added description of `rl_library_version'
-
-lib/glob/glob.c
-       - changed call to sprintf in glob_dir_to_array to a couple of
-         calls to strcpy, since we keep the length of the first string
-         we copy
-
-                                   3/7
-                                   ---
-aclocal.m4
-       - added new macro `BASH_FUNC_LSTAT' to check for lstat on Linux,
-         which defines it as an inline function in <sys/stat.h>
-
-configure.in
-       - call BASH_FUNC_LSTAT if $ac_cv_func_lstat has value `no'
-
-                                   3/8
-                                   ---
-parse.y
-       - changed the occurrences of `list' in the if command productions
-         to use `compound_list' instead
-
-                                  3/11
-                                  ----
-parse.y
-       - changed the occurrences of `list' in the while and until command
-         productions to use `compound_list'
-
-lib/readline/complete.c
-       - fix to filename_completion_function -- off-by-one error when
-         expand-tilde is enabled and a filename to be completed begins
-         with `~/'
-
-                                  3/12
-                                  ----
-builtins/cd.def
-       - made the POSIX.2 behavior of PWD not containing symlinks after
-         using $CDPATH part of `posix mode', not default shell behavior
-
-lib/readline/display.c
-       - fix to update_line to handle update problems when using
-         horizontal scroll mode.  This is a dumb update solution -- it
-         should use a better one
-
-                                  3/14
-                                  ----
-examples/functions/csh-compat
-       - replaced the defintion for `alias' with a better one posted to
-         usenet by Mohit Aron <aron@cs.rice.edu>
-
-                                  3/15
-                                  ----
-jobs.c
-       - fix to wait_for_background_pids to keep `wait' from hanging
-
-                                  3/19
-                                  ----
-lib/readline/input.c
-       - new function `_rl_input_available()' returns > 0 if there is
-         input available on the readline input file descriptor.  Only
-         works if select(2) or FIONREAD are available
-
-lib/readline/isearch.c
-       - slight change to the isearch termination behavior -- ESC still
-         terminates the search, but if there is pending input or if input
-         arrives within 0.1 seconds (on systems with select(2)) it is
-         used as a prefix character with rl_execute_next
-
-shell.c
-       - the GNU coding standards say to write the output generated by
-         the --help command line option to stdout, not stderr
-       - show_shell_version now takes an `extended' option that displays
-         copyright information if non-zero
-       - show_shell_version now prints the value of `MACHTYPE' by default
-       - the `--version' option now causes the shell to exit successfully
-         after printing the extended version information
-
-externs.h
-       - changed prototype for show_shell_version
-
-shell.c, bashline.c, builtins/help.def
-       - changed calls to show_shell_version to add appropriate argument
-
-Makefile.in
-       - pass a `MACHTYPE' define to the compiler
-
-                                  3/22
-                                  ----
-general.c
-       - changed print_timeval() and print_time_in_hz() to output three
-         fractional digits after the decimal point
-
-examples/loadables/sleep.c
-       - changed to an implementation that will sleep fractional portions
-         of seconds if select() is available
-
-                                  3/25
-                                  ----
-builtins/shopt.def
-       - fixes to shopt -o from Andreas Schwab.  Use FLAG_ON/FLAG_OFF
-         instead of SETOPT/UNSETOPT
-
-                                  3/26
-                                  ----
-Makefile.in, builtins/Makefile.in
-       - use `@includedir@' instead of `@incdir' for autoconf 2.9
-
-Makefile.in
-       - the `info', `dvi', and `ps' targets do not depend on `texindex'
-       - add a `dist' target that just prints a message describing how
-         distributions are constructed
-
-support/mkdirs
-       - replace uses of [...] with `test'
-
-                                  3/28
-                                  ----
-parse.y
-       - fix for a problem with \@ prompt expansion from Tim Mooney
-
-jobs.c
-       - broke the code that prints a pipeline out into a separate
-         function: print_pipeline().  This gets called by
-         pretty_print_job and can be used for debugging
-       - two new functions to save and restore the_pipeline around calls
-         to make_child that you don't want to disturb the current pipeline,
-         for example in process substitution
-
-subst.c
-       - changed process_substitute to call save_pipeline and
-         restore_pipeline in the appropriate places
-
-                                  3/29
-                                  ----
-general.c
-       - ansicstr now takes an additional parameter, the length of the
-         string to be translated.  It's the second paramter.
-
-builtins/echo.def
-       - changed call to ansicstr to pass strlen(list->word->word)
-
-parse.y
-       - redid the $'...' expansion so it works like it's supposed to:
-         the quoted strings may appear anywhere in a token, and multiple
-         ansi-c quoted strings may appear in a token
-       - redid the $"..." expansion so it works like it's supposed to
-
-tests/nquote.{tests,right}, tests/run-nquote
-       - tests for the $'...' and $"..." quoting stuff -- simple-minded
-
-subst.c
-       - on systems without /dev/fd, open the named pipe for a `reading
-         in child' process substitution (>(...)) with O_NONBLOCK
-
-lib/posixheaders/filecntl.h
-       - add code to make sure the O_NONBLOCK is defined to O_NDELAY if
-         it is present and O_NONBLOCK is not defined by <fcntl.h>
-
-general.c
-       - don't bother handling both O_NONBLOCK and O_NDELAY in
-         unset_nodelay_mode, since filecntl.h defines O_NONBLOCK as
-         O_NDELAY for non-Posix systems
-
-                                   4/1
-                                   ---
-lib/readline/funmap.c
-       - made `vi-fetch-history' a bindable command name
-
-doc/readline.3
-       - many cleanups, updated the list of default bindings 
-
-                                   4/4
-                                   ---
-doc/bash.1, doc/readline.3
-       - fixed up use of \-; now it is not used unless the text is being
-         printed in bold or italic
-
-configure.in, config.h.in
-       - add a configuration option, --enable-usg-echo-default, to turn
-         on DEFAULT_ECHO_TO_USG and make `echo' expand backslash-escaped
-         characters by default
-
-                                   4/8
-                                   ---
-parse.y
-       - another small change to localeexpand to handle backslash-escaped
-         double quotes in the double-quoted string
-
-                                   4/9
-                                   ---
-shell.c
-       - add the value of MACHTYPE to the text output by `--help'
-
-                                  4/11
-                                  ----
-parse.y
-       - more changes to the $"..." and $'...' code to move it into
-         read_token
-       - don't try to check token[token_index - 1] unless token_index
-         is greater than 0
-
-                                  4/12
-                                  ----
-trap.c
-       - new function run_trap_cleanup to clean up after _run_trap_internal
-         in the event that parse_and_execute does not return normally
-         (e.g., if a `return' is executed in the trap command)
-       - set running_trap to the number of the signal whose trap is being
-         run plus one in _run_trap_internal
-
-trap.h
-       - extern declaration for run_trap_cleanup
-
-jobs.c
-       - new function `unfreeze_jobs_list' to set freeze_jobs_list back to 0.
-         called from parse_and_execute_cleanup so a `return' while running
-         an interrupt trap does not leave the jobs list frozen
-
-jobs.h
-       - new extern declaration for unfreeze_jobs_list
-
-builtins/common.c
-       - if running_trap is non-zero in parse_and_execute_cleanup, indicating
-         that parse_and_execute was running a trap command when it got a
-         `return', call run_trap_cleanup (running_trap - 1)
-       - parse_and_execute_cleanup now calls unfreeze_jobs_list
-
-                                  4/16
-                                  ----
-Makefile.in
-       - don't try to make `doc' as a dependency of `install'
-
-doc/Makefile.in
-       - make `info' a dependency of `install' to make sure the info
-         document is present and up to date before installing it
-       - make the `install' target install the documents with a $(srcdir)/
-         prefix in case we're building in another directory
-
-lib/glob/glob.c
-       - fixed an off-by-one error in glob_dir_to_array
-
-shell.c
-       - removed an extra increment of arg_index when setting up the
-         arguments for -c command
-
-                                  4/17
-                                  ----
-pathexp.c
-       - made quote_globbing_chars backslash-quote backslashes as well as
-         `?*[]'; changed it to be a little faster
-
-bashhist.c
-       - call quote_globbing_chars to quote backslashes in the previous
-         history line even if no other globbing chars are present.  This
-         is done only if we're matching against a HISTIGNORE pattern of `&'
-       - don't bother quoting globbing characters in the current history
-         line in history_should_ignore -- fnmatch ignores special chars in
-         its `string' argument
-
-[bash-2.0-alpha2 frozen]
-
-                                  4/18
-                                  ----
-command.h
-       - new flag value for a word: W_NOSPLIT.  A word with this bit set
-         in its flags will not have word splitting performed
-
-parse.y
-       - turn on the W_NOSPLIT flags for assignment statements appearing
-         where an assignment statement is acceptable (words that would
-         return ASSIGNMENT_WORD rather than WORD).  This means that, for
-         the time being, assignment statement arguments to builtins like
-         `declare' or `alias' will be split unless they are quoted
-
-subst.c
-       - don't split a word in expand_word_internal if the W_NOSPLIT flag
-         is set, rather than checking W_ASSIGNMENT; do the same thing in
-         expand_word_list_internal
-
-builtins.h
-       - a new flag, ASSIGNMENT_BUILTIN, indicating that this builtin takes
-         assignment statements as arguments
-       - rearranged the values of the builtin flags, so the BUILTIN_* flags
-         come first, then the *_BUILTIN flags
-
-builtins/makebuiltins.c
-       - added code for an array of `assignment builtins' -- builtins that
-         take assignment statements as arguments -- and to add the
-         ASSIGNMENT_BUILTIN flag for those builtins
-
-execute_cmd.c
-       - added a hack function `fix_assignment_words', which checks the
-         first word of a builtin command to see if it is a builtin that
-         has the ASSIGNMENT_BUILTIN flag set, and adds W_NOSPLIT to the
-         flags for all words with the W_ASSIGNMENT bit set.  This means
-         that word splitting is not done for any of the assignment
-         statements in commands like `declare z=$a'
-
-                                  4/19
-                                  ----
-execute_cmd.c
-       - fixed a memory-freed-twice error in find_in_path_element
-
-lib/readline/rltty.c
-       - include <sys/ioctl.h> if GWINSZ_IN_SYS_IOCTL is defined and
-         SHELL is not defined
-
-lib/readline/input.c
-       - changed a stray HAVE_FIONREAD to FIONREAD
-       - include <sys/ioctl.h> if FIONREAD_IN_SYS_IOCTL is defined
-
-aclocal.m4
-       - new macro, BASH_HAVE_FIONREAD, to check for a #define of
-         FIONREAD in <sys/ioctl.h> or one of the files it includes;
-         defines FIONREAD_IN_SYS_IOCTL if present
-
-config.h.in
-       - new line for FIONREAD_IN_SYS_IOCTL
-
-configure.in
-       - call BASH_HAVE_FIONREAD
-
-                                  4/22
-                                  ----
-builtins/cd.def
-       - fixed a memory-freed-twice error in mkpath()
-
-jobs.c
-       - don't print a job termination message for a non-interactive shell
-         with startup_state == 2 (those shells are started to run commands
-         when bash is invoked with `-c command')
-
-                                  4/23
-                                  ----
-general.h
-       - definition for a `generic pointer' type PTR_T -- `void *' on ANSI
-         C systems, `char *' otherwise
-
-jobs.h
-       - new members of job struct: `j_cleanup', a function to call when the
-         job is marked JDEAD, and `cleanarg', argument to pass to j_cleanup
-
-jobs.c
-       - initialize j_cleanup and cleanarg to NULL in stop_pipeline
-       - call j_cleanup from waitchld() when a job is marked JDEAD
-
-test.c
-       - fixed binop() so it recognizes `<' and `>' as binary operators
-       - fixed a bug in binary_operator so `<' works correctly
-
-tests/test-tests
-       - fixed the tests so they no longer rely on the modes of files in
-         the file system to test -u, -g, -r, -x, -w, and so on, except
-         for a few `standard' files like /dev/tty and /dev/null
-       - added tests for string < string and string > string
-
-xmalloc.c
-       - include <unistd.h> if HAVE_UNISTD_H is defined for a prototype
-         for sbrk
-       - add an extern declaration for sbrk if SBRK_DECLARED is not defined
-       - use PTR_T to cast the return value of sbrk() when finding out where
-         the break is and how many bytes of memory have been allocated
-
-lib/malloc/malloc.c
-       - added code to write 0xcf into memory as it's freed, to uncover
-         callers that try to refer to freed memory, and writes 0xdf into
-         newly-allocated memory, to uncover callers that assume something
-         about new allocations (e.g., that newmem[0] == 0)
-
-lib/malloc/gmalloc.c
-       - latest version from GNU sources
-
-                                  4/25
-                                  ----
-doc/bash.1
-       - changed the description of `unset' to include a description of
-         the `-v' option
-
-parse.y
-       - fixed a problem with conversion to 12-hour time in
-         decode_prompt_string that made 12:00pm show up as 00:00pm
-
-                                  4/26
-                                  ----
-builtins/common.c, subst.c
-       - a couple of fixes from Andreas Schwab
-
-configure.in
-       - set up the minimal configuration after checking for
-         --enable-minimal-config with AC_ARG_ENABLE, before checking any
-         of the other options, instead of after checking all options.
-         This makes `--enable-minimal-config --enable-prompt-string-decoding'
-         work as documented
-       - changed AC_PREREQ to require autoconf version 2.8 or higher
-       - added some code to disable gnu malloc by default on the systems
-         listed in NOTES
-       - set MALLOC_SRC to have the $(ALLOC_LIBSRC)/ prefix to avoid having
-         a directory in the dependencies when making without the gnu
-         malloc
-
-lib/malloc/Makefile.in
-       - make gmalloc.o depend on $(BUILD_DIR)/config.h
-
-                                  4/30
-                                  ----
-COMPAT
-       - new file listing user-visible incompatibilites between bash-1.14
-         and bash-2.0
-
-parse.y
-       - new prompt expansions, \v (version) and \V (version + patchlevel)
-
-config.h.top
-       - the default value of PS1 is now '\s-\v\$ '
-
-doc/{bash.{1,html},features.texi}
-       - added descriptions of \v and \V prompt expansions
-       - changed default value of PS1
-
-Makefile.in
-       - added dependencies on config.h.top for files that use definitions
-         included there
-
-builtins/exec.def
-       - removed reference to `no_exit_on_failed_exec' from the help text
-
-                                   5/3
-                                   ---
-builtins/cd.def
-       - fixed a typo in fix from 4/22
-
-                                   5/7
-                                   ---
-builtins/common.c
-       - new function `no_options (WORD_LIST *)' to be called by builtins
-         that do not take options to check for options and -?.  It returns
-         0 on success, non-zero if an unwanted option is supplied
-
-builtins/common.h
-       - extern declaration for no_options
-
-builtins/return.def
-       - corrected the error message to include returning from a sourced
-         script
-
-builtins/{getopts,eval,wait,source,fg_bg,help}.def
-       - changed the following builtins to either call no_options or test
-         explicitly for options and return EX_USAGE if any are found:
-
-               getopts eval wait source . fg bg help
-
-builtins/help.def
-       - error messages are now printed using builtin_error
-
-                                   5/8
-                                   ---
-builtins/jobs.def
-       - fixed an unitialized variable problem
-
-tests/more-exp.tests
-       - added additional tests for IFS problem uncovered by `iffe'
-
-                                   5/9
-                                   ---
-lib/malloc/Makefile.in
-       - use $(ALLOCA_SOURCE) instead of $< in rule that builds alloca.o.
-         Some makes don't expand the $< in non-suffix rules
-
-lib/readline/rldefs.h
-       - fix workaround for SVR4.2 bug
-
-shell.c
-       - even though SVR4.2 has getpeername(), isnetconn() should not use it
-
-maxpath.h
-       - rework to make sure PATH_MAX and NAME_MAX are defined, and remove
-         the BUILDING_MAKEFILE code
-
-general.c, parse.y, oslib.c, jobs.c, builtins/common.c, builtins/cd.def
-       - change uses of MAXPATHLEN to PATH_MAX
-
-examples/loadables/{{log,base,dir}name,tty,pathchk,tee}.c
-       - new loadable builtins:
-
-               logname basename dirname tty pathchk tee
-
-configuure.in, config.h.in
-       - look for tzset(3), define HAVE_TZSET if found
-
-subst.c
-       - new special variable function, sv_tz, which calls tzset when
-         TZ is changed, if tzset(3) exists and the shell is compiled
-         to do prompt string decoding
-
-subst.h
-       - extern declaration for sv_tz
-
-                                  5/10
-                                  ----
-builtins/echo.def
-       - only call printf if the string to print is non-null
-       - add an fflush(stdout) after the printf call to work around a
-         bug in SunOS 5.5
-
-                                  5/16
-                                  ----
-shell.c
-       - moved some variable declarations out of this file to more
-         logical places
-
-support/config.guess
-       - small fixes from rfg@monkeys.com
-
-version.c
-       - moved functions for getting, setting, and displaying shell version
-         information here from shell.c
-
-general.c
-       - moved set_lines_and_columns to variables.c
-       - moved getc_with_restart and ungetc_with_restart to input.c
-       - new function argv_to_word_list(), converts an array of strings
-         into a WORD_LIST
-       - renamed find_name_in_list to find_name_in_array to match rest
-         of functions that operate on arrays of strings
-
-configure.in, Makefile.in, jobs.c, nojobs.c
-       - changes so that jobs.c no longer includes nojobs.c, and the correct
-         object file (jobs.o or nojobs.o) is selected by configure
-         and substituted into the Makefile
-
-list.c
-       - new file, list manipulation functions from general.c
-
-externs.h, general.h
-       - moved extern declarations for functions defined in oslib.c and
-         list.c to externs.h from general.h
-
-                                  5/17
-                                  ----
-locale.c
-       - new file, with locale code from parse.y and shell.c
-
-shell.c
-       - don't turn off job control if act_like_sh is set
-       - if an unknown option is supplied at startup or if -c is
-         supplied without an argument, exit with EX_USAGE
-       - call posix_initialize after parsing all the options, to
-         catch `bash -o posix'
-       - new functions: init_interactive(), init_noninteractive()
-       - exit with EX_NOTFOUND if a script argument is not found
-       - exit with EX_NOINPUT if a script file cannot be opened for
-         some reason
-
-shell.h
-       - new define for EX_NOINPUT exit status (126)
-
-                                  5/18
-                                  ----
-lib/readline/bind.c
-       - fixed _rl_get_keyname() so that it properly handles C-\ and outputs
-         it as \C-\\ and C-" as \C-\".  This fixes the improper binding
-         commands written by `bind -p' that caused weird things to happen
-         when people used the output of `bind -p' as a start for their
-         own inputrc files
-       - new function _rl_init_file_error to print error messages encountered
-         while parsing the inputrc file
-       - print out an error message if parsing an inputrc line and no closing
-         double quote is found for a key binding
-
-lib/readline/complete.c
-       - in rl_complete_internal, if the completion function results in
-         multiple matches, but none match up to even the first character, 
-         use what the user typed in (which is presumably a glob pattern
-         that expanded into multiple files) as matches[0].  This makes
-         things like show-all-if-ambiguous work right, too
-
-oslib.c
-       - if we are providing our own version of getenv(), provide a function
-         _getenv() as well, which just calls getenv()
-
-builtins/ulimit.def
-       - #define _KERNEL before including <sys/resource.h> if HPUX is
-         defined.  This makes the full set of limits available on hpux
-         version 8 and above
-
-bashline.c
-       - new function, enable_hostname_completion, sets up readline to
-         perform or not perform hostname completion.  Hostname completion
-         is on by default.
-       - don't attempt hostname completion in attempt_shell_completion()
-         unless perform_hostname_completion is set
-
-builtins/shopt.def
-       - add a `set_func' member to the shopt options structure, to provide
-         a hook for those variables that require a little more than just
-         toggling a variable on or off
-       - new shopt variable `hostcomplete', turns hostname completion on and
-         off
-
-doc/{bash.{1,html},features.texi}
-       - added description of new shopt `hostcomplete' variable
-
-                                  5/21
-                                  ----
-sig.c
-       - don't try to save the shell history in termination_unwind_protect
-         if we're dying due to SIGABRT
-
-bashhist.c
-       - new functions: last_history_entry (static), last_history_line
-
-bashhist.h
-       - extern declarations for new functions in bashhist.c
-
-error.c
-       - have programming_error() report the last command in the history
-         before aborting
-
-builtins/fc.def
-       - if the editor returns a non-zero exit status when using `fc -e',
-         return immediately without trying to execute the commands, as
-         per Posix.2, 5.12.2
-       - when using `fc -s', echo the command to be executed to stderr,
-         not stdout
-
-lib/readline/terminal.c
-       - new file, with all code related to termcap/terminfo
-
-lib/readline/{readline,rltty,display,util}.c
-       - moved functions dealing with termcap to terminal.c
-
-lib/readline/readline.c
-       - readline_initialize_everything now calls _rl_enable_meta_key()
-         to turn on the meta key, based on the value of _rl_enable_meta
-         (on by default)
-
-lib/readline/rltty.c
-       - do not enable and disable the meta key each time readline is
-         called; do it once at initialization
-
-                                  5/23
-                                  ----
-bashhist.c
-       - when `hist_verify' is set, call re_edit with the expanded line,
-         not the original one, and do not print the results of the
-         expansion before re-editing
-
-                                  5/24
-                                  ----
-support/config.guess
-       - recognize linux/sparc
-
-configure.in
-       - don't use GNU malloc on linux/sparc
-
-variables.c
-       - initialize a new $MACHTYPE variable to the value of MACHTYPE as
-         set by autoconf
-
-doc/{bash.{1,html},features.texi}
-       - documented $MACHTYPE
-
-                                  5/30
-                                  ----
-builtins/ulimit.def
-       - allow the max vm size to be set via setrlimit() if RLIMIT_VMEM
-         is defined
-
-                                  5/31
-                                  ----
-shell.h
-       - changed EX_USAGE to 258, EX_BADUSAGE is now 2
-       - added a number of execution failure statuses, so that builtins
-         can indicate various failures.  All are greater than 256, so
-         they cannot be returned by other utilities
-
-execute_cmd.c
-       - new function, builtin_status(), to translate the new return
-         status codes to something the shell can export
-       - changed execute_simple_command to call builtin_status after
-         execute_builtin_or_function to translate error codes if a
-         builtin is invoked.  If a function or regular builtin is
-         invoked, all return values greater than EX_SHERRBASE get
-         translated to EXECUTION_FAILURE, with the exception that
-         EX_USAGE gets translated to EX_BADUSAGE.  If a special
-         builtin failed with a status > EX_SHERRBASE, special_builtin_failed
-         is set to cause the shell to exit in POSIX mode
-       - changed execute_builtin_or_function to return EX_REDIRFAIL if
-         redirections fail
-       - changed execute_subshell_builtin_or_function to translate
-         EX_USAGE to EX_BADUSAGE if a builtin is executed
-       - set this_command_name to NULL in execute_for_command before binding
-         each member of the word list to the loop variable, to avoid
-         garbled error messages if the variable has the integer attribute
-
-builtins/{set,unset}.def
-       - return EX_USAGE instead of EXECUTION_FAILURE if a bad option is
-         supplied
-
-builtins/source.def
-       - return EX_USAGE instead of EXECUTION_FAILURE if the required
-         filename argument is missing
-
-builtins/setattr.def
-       - return EX_BADASSIGN if any assignment statements given as arguments
-         to readonly, export, etc. return failures (assignment to
-         non-identifier, assignment to readonly variable)
-
-builtins/declare.def
-       - don't allow `declare var=value' to assign value to a readonly
-         variable
-
-lib/readline/rldefs.h
-       - include <stdarg.h> if we're going to be using stdarg instead of
-         varargs
-
-lib/readline/display.c
-       - added `stdarg' version of rl_message
-
-lib/readline/readline.h
-       - changed extern declaration for rl_message to be in ANSI-C format
-         if __STDC__ is defined and we're using stdarg
-
-variables.c
-       - make sure this_command_name is set to null before calling
-         make_variable_value in assign_array_var_from_string so any
-         error messages are not garbled
-
-                                   6/2
-                                   ---
-builtins/common.c
-       - don't execute the command in parse_and_execute if -n has been
-         enabled and the shell is not interactive
-       - include flags.h for read_but_dont_execute
-
-[bash-2.0-alpha3 released]
-
-                                   6/5
-                                   ---
-subst.c
-       - array_length_reference and parameter_brace_expand_length now
-         return -1 on errors
-       - parameter_brace_expand now returns &expand_param_error if
-         paramter_brace_expand_length returns something < 0
-
-variables.c
-       - assign_in_env now checks for assignments to readonly shell
-         variables and disallows them
-
-                                   6/6
-                                   ---
-xmalloc.c
-       - only do pointer arithmetic on pointers cast to (char *), since
-         it's not required that compilers support arithmetic on void *
-
-shell.c
-       - make sure <sys/socket.h> is included with the same conditions
-         used to call getpeername(2) in isnetconn()
-
-parse.y
-       - added a new function, paren_match, to parse the contents of $(...)
-         constructs.  This function correctly handles embedded quoted
-         strings, embedded command substitutions, embedded command
-         substitutions with embedded quoted strings, etc.  The implementation
-         is much closer to that described in POSIX.2, section 3.6.3.
-       - changed read_token_word to call paren_match where appropriate
-
-subst.c
-       - rewrote extract_delimited_string so that it correctly understands
-         quoted strings inside command substitutions, a la paren_match
-         in parse.y.  Corrected the description of the function's output
-         in the code.  extract_delimited_string is now very recursive, and
-         does not try to do everything in one pass without recursion
-
-                                   6/7
-                                   ---
-test.c
-       - fixed three_arguments() to test the second argument for a valid
-         binary operator before checking whether or not the first argument
-         is `!'.  This is what POSIX.2 says to do.
-
-lib/malloc/malloc.c
-       - don't compile in the memory scrambling code (#define MEMSCRAMBLE)
-         if NO_MEMSCRAMBLE is defined.
-
-configure.in
-       - define NO_MEMSCRAMBLE in LOCAL_CFLAGS for SCO 3.2v[45]
-
-                                   6/9
-                                   ---
-parse.y
-       - renamed paren_match to parse_matched_pair
-       - call parse_matched_pair to parse <(...) and >(...) constructs,
-         since those should be treated the same as $(...) for the purposes
-         of matching parens and skipping embedded quoted strings
-
-                                  6/13
-                                  ----
-parse.y
-       - augmented parse_matched_pair
-               o fixed up backslash quoting and CTLESC handling after
-                 backslashes
-               o match pairs of ${...} and $[...] inside double-quoted
-                 strings or `` strings
-               o keep track of line number quoted string starts on for
-                 better error messages
-               o push and pop delimiters when parsing quoted strings
-                 inside $(...), ${...}, and $[...] for use by the
-                 history code
-               o set EOF_Reached to 1 if we get an EOF before finding the
-                 match closer
-       - rewrote read_token_word from scratch to use parse_matched_pair:
-               o shell quote characters use parse_matched_pair to find
-                 the matching quote
-               o fixed up backslash parsing code
-               o compound array assignments use parse_matched_pair
-               o corrected all_digits and dollar_present computations, so,
-                 for instance, 2''>/dev/null is no longer accepted as
-                 identical to 2>/dev/null
-               o converted ${...} parsing to use parse_matched_pair
-               o removed printing of error messages about unmatched quotes;
-                 now handled by parse_matched_pair
-               o converted $'...' and $"..." to use parse_matched_pair
-               o removed all of the delimited_xxx and dollar_xxx variables
-                 and embedded_quoted_string
-       - modified report_syntax_error to regularize error messages:
-               o non-interactive shells and interactive shells running
-                 scripts with `.' now always report line numbers
-               o unexpected EOF is always reported when EOF_Reached is true
-               o non-interactive shells no longer duplicate the script name
-                 in error messages (e.g., `./z3: ./z3: line 3: syntax error')
-
-bashline.c
-       - make sure `newnames' is freed in _ignore_completion_names
-
-lib/readline/complete.c
-       - don't insert the first match on TAB completion in
-         rl_complete_internal() if matches[0] is the empty string --
-         that will overwrite whatever the user has typed, if dequoting
-         what the user typed results in the empty string
-
-execute_cmd.c
-       - include <limits.h> if HAVE_LIMITS_H is defined for ARG_MAX
-       - only put the special environment variable for GNU getopt into
-         the environment if ARG_MAX exceeds 10240
-
-subst.c
-       - rewrote extract_dollar_brace_string so that it fully obeys
-         the POSIX.2 rules for finding the closing `}' and uses
-         skip_{single,double}_quoted rather than trying to do it with
-         inline delimiters
-       - removed the INC_NEST and DEC_NEST defines
-
-                                  6/14
-                                  ----
-jobs.c
-       - don't print status messages for background jobs that complete
-         successfully when running shell scripts
-
-builtins/shopt.def
-       - when using shopt -o as a synonym for set -o, make sure $SHELLOPTS
-         is updated
-       - make sure to update $SHELLOPTS when using shopt to set or unset
-         interactive comments
-
-execute_cmd.c
-       - fixed find_in_path_element to not return non-executable files
-         when FS_EXEC_PREFERRED is one of the flags, after saving such
-         a file as file_to_lose_on (fix from william@nscs.fast.net)
-
-                                  6/17
-                                  ----
-lib/readline/complete.c
-       - after printing possible completions, all lines of a multi-line
-         prompt are redisplayed using rl_forced_update_display()
-
-subst.c
-       - in expand_word_internal, only do tilde expansion on words where
-         (flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT (unquoted
-         assignment statements) and contain unquoted `=~' or `:~', and
-         only if posixly_correct is off.  POSIX.2 says that only the
-         assignments preceding the command name should be tilde-expanded.
-
-                                  6/18
-                                  ----
-support/config.guess
-       - recognize the new Pyramid DC-OSx as `mips-pyramid-sysv4'
-
-configure.in
-       - set LOCAL_CFLAGS to -Xa for mips-pyramid-sysv4 as per
-         Peter Chubb
-
-subst.c
-       - variable assignment errors when there is not a command name
-         after the assignments now causes a non-interactive shell to 
-         exit in POSIX.2 mode
-
-execute_cmd.c
-       - if the iteration variable in a for statement is a read-only
-         variable, a variable assignment error occurs.  This causes
-         non-interactive shells to exit in posix mode, and a failure
-         status to be returned for other non-interactive shells and
-         interactive shells
-       - if the selection variable in a select statement is a read-only
-         variable, a variable assignment error occurs, with the same
-         consequences as a for statement variable assignment error
-
-doc/bashref.*
-       - renamed features.* to bashref.*, since that more accurately
-         reflects the current contents
-
-                                  6/19
-                                  ----
-test.c
-       - changed three_arguments() to do one-argument tests on $1 and
-         $3 and return the appropriate values if -a or -o is given as
-         the second argument
-       - changed three_arguments() to perform a one-argument test on
-         $2 if $1 == '(' and $3 == ')' and return that result
-       - make sure test_stat translates /dev/fd/xx to DEV_FD_PREFIX/xx
-         so /dev/fd/0 always means the same thing, even on linux,
-         which uses /proc/self/fd
-
-aclocal.m4
-       - added a check for libncurses in BASH_CHECK_LIB_TERMCAP
-
-configure.in
-       - added an initial message saying we're configuring for bash-2.0
-
-lib/glob/fnmatch.c
-       - made a small change to fnmatch() to fix a bug matching patterns
-         with multiple consecutive `*'s
-
-                                  6/20
-                                  ----
-parse.y
-       - inhibit history expansion when calling pre_process_line() from
-         shell_getc() if the current delimiter is a single quote, even
-         if we're on a different line than the opening quote
-       - make sure read_a_line prints a prompt if we're interactive and
-         not using readline, and make sure we call clearerr() if we
-         get EOF when interactive and not using readline
-
-bashhist.c
-       - new function history_expansion_p(char *) returns 1 if the string
-         passed contains the history expansion or history substitution
-         characters
-       - pre_process_line() now calls history_expansion_p and calls
-         the history expansion code only if that returns 1
-
-                                  6/26
-                                  ----
-lib/readline/isearch.c
-       - swap the behavior of ^J and ^M when i-searching.  ^J now terminates
-         the search without accepting the line.  ^M terminates the search
-         and accepts the line, executing the command
-
-examples/loadables/sprintf.c
-       - new `sprintf' builtin: sprintf var format [args...]
-
-lib/readline/readline.c
-       - added a line in _rl_dispatch that sets _rl_suppress_redisplay if
-         the function is rl_insert and there is input available
-
-                                  6/27
-                                  ----
-builtins/getopts.def
-       - new function, getopts_bind_variable(), used when assigning a value
-         to the user-supplied variable passed to getopts().  It makes sure
-         that that variable name is legal and prints an error message if it
-         is not
-
-builtins/getopt.c
-       - don't increment sh_optind until after we've checked whether or not
-         the current option character appears in the list of options passed
-         to getopts by the user
-
-                                  6/28
-                                  ----
-variables.c
-       - added a new parameter to print_var_value: QUOTE.  If it's non-zero
-         and the variable's value contains shell metacharacters, quote the
-         value so it can be read back in
-
-variables.h
-       - changed extern declaration for print_var_value
-
-siglist.h
-       - if SYS_SIGLIST_DECLARED is not defined, but HAVE_UNDER_SYS_SIGLIST
-         is, only declare sys_siglist as extern char *sys_siglist[] if
-         sys_siglist is not `#define'd
-
-parse.y
-       - make sure a reserved word is acceptable before returning `}' as
-         a token from special_case_tokens, even if the token read so far
-         is "}"
-       - make reset_parser set allow_open_brace to 0
-
-                                   7/1
-                                   ---
-test.c
-       - fixed binop to not try to read s[3] if s[2] == '\0'.  There are
-         no one-character binary operators that begin with `-'
-
-variables.c
-       - fixed kill_all_local_variables to do nothing if variable_context
-         is >= local_variable_stack_size (indicating that we do have some
-         local variables, but not at this level of function nesting, and
-         we are beyond the end of the array allocated the last time we
-         had local variables)
-
-                                   7/2
-                                   ---
-execute_cmd.c
-       - non-interactive shells in posix mode should exit if the variable
-         in a for command is not a valid identifier.  This should really
-         be caught by the parser
-       - non-interactive shells in posix mode should exit if a function
-         name is not a valid identifier.  This should also be caught by
-         the parser
-
-                                   7/3
-                                   ---
-jobs.c
-       - non-interactive shells should ignore stopped children, so
-         waitchld() should set waitpid_flags to WUNTRACED only if the
-         shell is interactive and it's not a subshell environment
-
-lib/readline/signals.c
-       - if not being compiled as part of the shell, readline should
-         catch SIGTERM and clean up
-
-shell.c
-       - change to isnetconn: on Solaris 2.5, getpeername() can return
-         EINVAL rather than ENOTSOCK if the fd passed as the first
-         argument is not a socket
-
-                                   7/5
-                                   ---
-lib/readline/complete.c
-       - new variable, available to library users, to inhibit completion
-         and cause the completion character to be inserted into the
-         line with self-insert: rl_inhibit_completion.  Set to 0 by default.
-
-lib/readline/readline.h
-       - extern declaration for rl_inhibit_completion
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_inhibit_completion
-
-lib/readline/bind.c
-       - new readline user variable: disable-completion.  This provides
-         users a way to toggle the value of rl_inhibit_completion
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - documented disable-completion variable
-
-lib/readline/doc/Makefile
-       - added `html' target to create html from rlman.texinfo and
-         hist.texinfo
-
-                                   7/8
-                                   ---
-builtins/cd.def
-       - only try cd spelling correction if the shell is currently
-         interactive, regardless of value of `cdspell' option
-
-lib/posixheaders/alloca.h
-       - AIX 4.2 needs `#pragma alloca' if gcc is not being used
-
-                                   7/9
-                                   ---
-builtins/getopts.def
-       - return EXECUTION_FAILURE from getopts if it's trying to assign
-         to a read-only variable
-       - reset sh_badopt to zero in getopts_reset()
-
-builtins/getopt.c
-       - new variable, sh_badopt, set to 1 if we find an illegal option
-       - do the increment of sh_optind if sh_badopt is non-zero and we're
-         at the end of the option string at the beginning of sh_getopt().
-         The increment is deferred until the next call so $OPTIND is
-         correct
-
-builtins/getopt.h
-       - extern declaration of sh_badopt
-
-                                  7/10
-                                  ----
-Makefile.in
-       - don't pass ALLOCA_SOURCE or ALLOCA_OBJECT to the make in lib/malloc
-       - don't make libmalloc.a depend on ALLOCA_DEP -- it causes some
-         compilers to build alloca.o in the top directory, and if ALLOCA
-         is not defined, makes the malloc library depend on a directory
-
-aclocal.m4
-       - some small changes to make the output look better
-
-memalloc.h
-       - made some small changes suggested by the autoconf documentation
-
-                                  7/11
-                                  ----
-parse.y
-       - swapped meanings of \h and \H in prompt_string_decode for
-         bash-1.14.6 compatibility
-
-doc/{bash.{1,html},bashref.texi}
-       - updated prompt string decoding section with swap of \h and \H
-
-general.c
-       - print_timeval and print_time_in_hz now accept a FILE * as the
-         first argument, so `times' can print to stdout while `time'
-         prints to stderr
-
-execute_cmd.c
-       - changed time_command to print the timing statistics to stderr
-
-builtins/times.def
-       - added the FILE * argument to the calls to print_timeval and
-         print_time_in_hz
-
-support/texi2html
-       - upgraded to version 1.50
-
-error.c
-       - include bashhist.h if HISTORY is defined for declarations of
-         last_history_line() and remember_on_history
-
-lib/glob/glob.c
-       - add a `#pragma alloca' as the first thing in the file if we're
-         not using gcc and _AIX is defined
-
-lib/posixheaders/memalloc.h
-       - remove the `#pragma alloca' stuff; it is done in the C source
-         files now, to avoid problems with other AIX header file
-         declarations
-
-                                  7/12
-                                  ----
-lib/readline/rltty.c
-       - some changes to work around AIX 4.2 bugs (sometimes OPOST is unset
-         in termios, sometimes FLUSHO is inexplicably set in termios, etc.)
-
-                                  7/15
-                                  ----
-lib/readline/rltty.c
-       - make SETATTR use TCSADRAIN on POSIX machines.  This setting is
-         supposed to be used for changes that affect output
-
-[bash-2.0-alpha4 released]
-
-                                  7/16
-                                  ----
-trap.c
-       - changed reset_or_restore_signal_handlers to honor traps before
-         special signals, so that `trap "" 2' works right and causes
-         children to ignore SIGINT
-
-locale.c
-       - added lc_all variable to track the value of LC_ALL
-       - added new functions: set_default_locale_vars, set_locale_var,
-         set_lang, get_locale_var, removed get_current_messages_locale
-
-subst.h
-       - added extern declaration for sv_locale
-
-subst.c
-       - LC_ALL, LC_CTYPE, LC_MESSAGES, and LANG are now special variables;
-         sv_locale() is called when they are assigned a value
-
-shell.c
-       - call set_default_locale_vars after initializing the shell variables
-         in main(), so LC_CTYPE and LC_MESSAGES (if present) have values
-       - shell.c does not need to include <locale.h>
-
-general.c
-       - changed print_timeval and print_time_in_hz to format their output
-         as Posix.2 specifies for `time -p' if the new POSIX_TIME argument
-         is non-zero
-
-parse.y
-       - new grammar production: timespec, to handle `time' and `time -p'
-       - change to special_case_tokens so that -p after `time' returns
-         TIMEOPT
-
-execute_cmd.c
-       - set posix_time in time_command if the command's flags include
-         CMD_TIME_POSIX
-       - call print_timeval and print_time_in_hz with posix_time as
-         the new third argument
-       - use a space to separate the word (`real') and the time if we're
-         in posix mode.  This is what POSIX.2 defines for `time -p'
-
-builtins/times.def
-       - call print_timeval and print_time_in_hz with 0 as the new third
-         argument
-
-command.h
-       - new flag: CMD_TIME_POSIX, used to handle `time -p'
-
-doc/{bash.{1,html},bashref.texi}
-       - documented `time -p'
-
-                                  7/17
-                                  ----
-support/mkversion.c
-       - include `config.h' before any other include files
-
-parse.y
-       - initialize was_dollar to 0 in parse_matched_pair
-
-configure.in
-       - removed duplicate check for <sys/file.h> from call to
-         AC_HAVE_HEADERS
-
-sig.c
-       - include siglist.h so we can find out if it defines HAVE_SYS_SIGLIST
-
-siglist.h
-       - define HAVE_SYS_SIGLIST if we end up defining sys_siglist as
-         _sys_siglist (Solaris 2.[45])
-
-siglist.c
-       - include "siglist.h" before testing whether or not HAVE_SYS_SIGLIST
-         is defined; it may be defined in there (Solaris 2.[45])
-
-                                  7/19
-                                  ----
-examples/misc/alias-conv.sh
-       - updated, now uses code from examples/functions/csh-compat to do
-         the alias conversion, uses `command' builtin in functions it
-         creates, does some substitution of csh special variables to
-         bash equivalents
-
-examples/misc/cshtobash
-       - a more ambitious script that attempts to convert csh aliases,
-         environment variables, and local variables to bash equivalents
-
-                                  7/22
-                                  ----
-bashline.c
-       - added `:' to the set of completion word break characters so that
-         individual directories in $PATH assignments can be completed
-
-aclocal.m4
-       - added a new macro, BASH_CC_WORKS, that aborts configuration if
-         ${CC} can't compile a simple program successfully
-
-configure.in
-       - call BASH_CC_WORKS before doing anything else
-
-                                  7/23
-                                  ----
-execute_cmd.c
-       - fixed select_query to print the prompt ($PS3) to stderr
-
-support/bashbug.sh
-       - workaround for bug in SunOS 5.x /bin/sh that causes it to
-         not ignore interrupts while waiting for a foreground process
-         to exit
-
-                                  7/24
-                                  ----
-general.c
-       - added new functions to decompose `timeval's and `clock_t's into
-         seconds and thousandths of seconds:  timeval_to_secs and
-         clock_t_to_secs
-       - changed print_timeval and print_time_in_hz to call timeval_to_secs
-         and clock_t_to_secs, respectively
-       - removed no-longer-used third argument for print_timeval and
-         print_time_in_hz -- `time' output is now done in execute_cmd.c
-
-general.h
-       - new extern declarations for timeval_to_secs and clock_t_to_secs
-
-builtins/times.def
-       - changed calls to print_timeval and print_time_in_hz, removing the
-         no-longer-used third argument
-
-execute_cmd.c
-       - changed the way time_command prints its output:  it now interprets
-         a format string, replacing several escape sequences prefixed with
-         a `%' with the real, user, and system times.  There are options in
-         the format string to ask for the `long' format that `times' uses
-         as well as to specify the number of places after the decimal point,
-         and whether to output fractional seconds at all
-       - time_command now uses the value of the `TIMEFORMAT' variable, if
-         present, to format the timing output.  This is flexible enough to
-         encompass the bash default, posix `time -p', BSD, and SV time
-         formats
-
-                                  7/25
-                                  ----
-Makefile.in
-       - `make clean' should delete the files listed in $(CREATED_SUPPORT);
-         `make mostlyclean' should not
-
-doc/{bash.{1,html},bashref.texi}
-       - fixed an error in the description of the effect that setting and
-         unsetting GLOBIGNORE has on the setting of the `dotglob' option
-
-doc/bashref.texi
-       - updated the section listing the major differences between bash
-         and the SVR4.2 shell
-
-lib/readline/readline.c
-       - removed the setting of _rl_suppress_redisplay, since it doesn't
-         really do anything yet
-
-oslib.c
-       - new function get_clk_tck (void), returns the value of _SC_CLK_TCK
-         if sysconf(3) is available, otherwise returns the value of
-         CLOCKS_PER_SEC (default 60)
-
-general.c
-       - moved CLOCKS_PER_SEC defines to oslib.c
-       - changed clock_t_to_secs to call get_clk_tck once to get the
-         right value to use
-
-externs.h
-       - extern declaration for get_clk_tck
-
-execute_cmd.c
-       - changed print_formatted_time so that a `%' at the end of the string
-         is output literally
-       - changed print_formatted_time to output a newline after the
-         translated format string, so it does not need to be included in
-         the format
-       - changed BASH_TIMEFORMAT (the default time format) to have a leading
-         newline to match ksh93
-
-configure.in
-       - use `shlicc2' on BSD/OS machines
-
-                                  7/26
-                                  ----
-doc/bash.html
-       - major overhaul, cleaned up text, corrected some minor HTML errors
-
-variables.c
-       - call sv_optind and sv_opterr to initialize the getopts stuff in
-         initialize_shell_variables
-
-                                  7/29
-                                  ----
-shell.c
-       - don't let maybe_execute_file try to read files that are not
-         `regular files'
-
-                                  7/30
-                                  ----
-parse.y
-       - cast `string' in yy_string_get() to unsigned char * to avoid
-         sign extension bugs.  For example, bash -c $'ls\377who'
-
-
-builtins/reserved.def
-       - add help text for the `time' reserved word
-       - deleted description of `HISTCONTROL'
-       - added descriptions for HISTIGNORE, PWD, HOSTNAME, GLOBIGNORE,
-         MACHTYPE
-
-                                  7/31
-                                  ----
-builtins/common.c
-       - parse_and_execute saves and restores the line number around
-         calls, and resets it to 0 when pushing the string onto the
-         input stack
-
-parse.y
-       - added code that parses `` within a double-quoted string as a
-         single word
-
-                                   8/6
-                                   ---
-configure.in, config.h.in
-       - look for `textdomain' as well as `gettext' for internationalization
-
-locale.c
-       - when LC_MESSAGES is set, call textdomain as well as setlocale
-       - new variable `default_domain', used to track the value of
-         $TEXTDOMAIN
-
-subst.c        
-       - call sv_locale when TEXTDOMAIN changes
-
-                                   8/7
-                                   ---
-error.c
-       - new function, sys_error(), which prints a formatted string followed
-         by a colon and strerror(errno) to stderr
-
-error.h
-       - extern declaration for sys_error
-
-jobs.c, nojobs.c, input.c, execute_cmd.c, subst.c
-       - changes to use sys_error()
-
-[many files]
-       - changes to many of the literal strings in the code for consistency
-         and easier potential translation
-
-                                   8/8
-                                   ---
-parse.y
-       - new function debug_parser(int) to toggle the value of yydebug
-         if YYDEBUG != 0
-
-                                   8/9
-                                   ---
-oslib.c
-       - don't use CLOCKS_PER_SEC, just try to get CLK_TCK (60 by default)
-
-bashline.c
-       - set saved_history_line_to_use to -1 when it's not going to be used
-         rather than 0.  A value of 0 can be confused with the first
-         history line
-
-builtins/evalstring.c
-       - moved parse_and_execute and auxiliary functions here from
-         builtins/common.c
-
-builtins/evalfile.c
-       - moved maybe_execute_file here from shell.c
-
-Makefile.in, builtins/Makefile.in
-       - changes necessitated by the new files
-
-                                  8/12
-                                  ----
-builtins/common.c
-       - fixed an off-by-one bug in single_quote that could make bash
-         run off the end of a string if it consisted entirely of single
-         quotes
-
-                                  8/13
-                                  ----
-shell.c
-       - moved code from main() to a new function: open_shell_script
-       - don't try to fclose(default_input) if BUFFERED_INPUT is defined
-       - moved argument binding code out of two places in main() and
-         open_shell_script() to a new function: bind_args().  This takes
-         an additional argument telling whether to bind starting at $0
-         or $1
-       - moved the code that calls the with_input_from_* functions into
-         a new function: set_bash_input
-       - moved the normal shell command-line option parsing code out of
-         main() into a new function: parse_shell_options
-       - moved the long option parsing code out of main() into a new
-         function: parse_long_options()
-
-general.c
-       - new function: move_to_high_fd(fd), which tries to move FD to a
-         file descriptor close to the allowed maximum, returning the new
-         fd and closing the old one (or returning the old one if something
-         goes wrong)
-
-general.h
-       - new extern declaration for move_to_high_fd
-
-variables.c
-       - moved indirection_level_string() here from shell.c
-
-jobs.c
-       - change initialize_jobs to use move_to_high_fd() instead of the
-         inline code to do the same thing
-
-                                  8/14
-                                  ----
-lib/readline/readline.c
-       - add `en_US.ISO8859-1' to the list of legal LANG values that turns
-         on readline's 8-bit mode
-
-                                  8/15
-                                  ----
-builtins/evalfile.c
-       - combined source_file and maybe_execute_file into a new function
-         _evalfile(fname, flags), where the flags select the appropriate
-         behavior
-
-eval.c
-       - moved the functions that perform the read-eval loop here from
-         shell.c
-
-execute_cmd.c
-       - changed CPU calculation for printing timing statistics using
-         ideas and code from Deven Corzine (deven@ties.org)
-
-eval.c, builtins/evalstring.c
-       - make sure we dispose of global_command if set -n is on and the
-         shell is not interactive
-
-                                  8/16
-                                  ----
-variables.c
-       - make a new array variable, BASH_VERSINFO, with version information:
-
-               BASH_VERSINFO[0] = release      (2)
-               BASH_VERSINFO[1] = version      (00)
-               BASH_VERSINFO[2] = patch level  (0)
-               BASH_VERSINFO[3] = build version (1058)
-               BASH_VERSINFO[4] = release status (beta1)
-               BASH_VERSINFO[5] = $MACHTYPE    (sparc-sun-sunos4.1.4)
-
-doc/{bash.{1,html},bashref.texi}
-       - Documented BASH_VERSINFO
-
-configure.in, config.h.in
-       - look for bindtextdomain(), set HAVE_BINDTEXTDOMAIN if found
-
-subst.c
-       - call sv_locale if TEXTDOMAINDIR is set or changes
-
-locale.c
-       - handle TEXTDOMAINDIR in set_locale_var; call bindtextdomain if
-         it is present
-
-tests/array.tests
-       - added calls to egrep to filter out BASH_VERSINFO and PIPESTATUS,
-         which can vary from system to system
-
-                                  8/19
-                                  ----
-shell.c
-       - moved line_buffer_stream from here to oslib.c, made it into a
-         replacement for setlinebuf() if that is not available
-
-externs.h
-       - extern declaration for setlinebuf()
-
-lib/readline/input.c
-       - in rl_gather_tyi, punt if chars_avail < 0 after checking input fd
-
-                                  8/20
-                                  ----
-builtins/suspend.def
-       - send SIGSTOP instead of SIGTSTP
-
-                                  8/21
-                                  ----
-builtins/colon.def
-       - added true and false as builtins (undocumented)
-
-CWRU/POSIX.NOTES, doc/bashref.texi
-       - note that process substitution is not available in posix mode
-
-bashintl.h
-       - new header file for internationalization, included by locale.c
-
-                                  8/22
-                                  ----
-subst.c
-       - in command_substitute, set istring to NULL before trying to
-         make the pipe, so if that fails, the code at error_exit:
-         doesn't try to free it
-
-execute_cmd.c
-       - when executing a shell script without a leading `#!' internally,
-         and the shell is not interactive, close the fd to the script
-         we're reading.  If this is called by the exec builtin, the shell
-         will not have forked, and the fd will not have been closed, even
-         though it's marked close-on-exec
-       - if subshell_argv is non-null, free its members (except 0) and
-         subshell_argv in shell_execve before reassigning it
-       - dispose of currently_executing_command before jumping back to
-         subshell_top_level
-
-builtins/hash.def
-       - use a sentinel variable so we only initialize the hash table
-         once in initialize_filename_hashing
-
-shell.c
-       - don't flush the filename hash table in shell_reinitialize
-       - free dollar_vars[0] in set_shell_name before assigning it
-       - don't fetch the current hostname more than once
-       - don't fetch the current user information more than once unless
-         the uid changes
-
-parse.y
-       - initialize_bash_input should free bash_input.name if it is
-         non-null before zeroing it
-
-                                  8/23
-                                  ----
-aclocal.m4
-       - changed BASH_CHECK_SOCKLIB:  if -lsocket is present, check for
-         and cache the existence of -lnsl.  Define LIBS appropriately
-         based on the values of the cache variables rather than relying
-         on the autoconf tests to do it
-
-                                  8/26
-                                  ----
-parse.y
-       - fix up yy_readline_get and yy_stream_get to fix the sign
-         extension problem
-
-shell.c
-       - move the setjmp(top_level) that catches early SIGINTs to the
-         first statement in main()
-
-Makefile.in
-       - added a `strip' target to strip the binary
-
-[bash-2.0-beta1 frozen]
-
-                                  8/27
-                                  ----
-parse.y
-       - replaced several static state variables with a single flags word:
-         parser_state
-
-                                  8/28
-                                  ----
-parse.y
-       - in read_token_word, combined the ${...} case with the other
-         expansion cases -- the code was identical
-       - added code to handle ksh-style ((...)) -- equivalent to
-         `let "..."'.  In fact, the above construct is translated internally
-         into `let "..."', so error messages output by the evaluator
-         will contain `let'
-
-expr.c
-       - changed evalerror to call internal_error so the name of the
-         shell script is prefixed to the message, if necessary
-
-Makefile.in
-       - changed RELSTATUS to `beta2'
-
-tests/{arith,new-exp}.{tests,right}
-       - changed the expected error message because of the change in format
-         of the arithmetic evaluation error messages in expr.c
-
-builtins/pushd.def
-       - changed pushd_builtin so `pushd -' is equivalent to `pushd $OLDPWD'
-
-externs.h
-       - changed the extern declaration for setlinebuf() to avoid having
-         to include stdio.h before externs.h everywhere
-
-                                  8/29
-                                  ----
-error.c
-       - new function, parser_error, for use by parts of the parser that
-         don't want to call report_syntax_error
-
-error.h
-       - extern declaration for parser_error
-
-parse.y
-       - changed some parts of the parser to use parser_error
-       - made the ((...)) code #ifdef'd on DPAREN_ARITHMETIC
-
-shell.c
-       - added a line to the --help output saying to use `bashbug' to
-         report bugs
-
-configure.in
-       - added new option: --enable-dparen-arithmetic; it controls
-         the DPAREN_ARITHMETIC define in config.h
-       - changed $host_os check for SCO to only enable -DWAITPID_BROKEN
-         for sco3.2v5; all other SCO versions enable -DMUST_UNBLOCK_CHILD
-
-config.h.in
-       - added line for DPAREN_ARITHMETIC, modified by configure
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new ((...)) command and new configuration option
-
-execute_cmd.c
-       - shell_execve should not try to close default_buffered_input unless
-         it is >= 0.  Other code that closes it and deallocates the buffer
-         should set default_buffered_input to -1
-
-                                  8/30
-                                  ----
-configure.in
-       - more changes to LOCAL_CFLAGS for sco machines
-
-error.c
-       - changed parser_error to handle all cases of the shell being
-         interactive, not interactive, reading from a script, and reading
-         from some other file
-
-parse.y
-       - changed report_syntax_error to call parser_error for consistent
-         messages
-
-dispose_cmd.c
-       - change dispose_command to use programming_error instead of
-         report_error
-
-execute_cmd.c, input.c, general.c
-       - changed calls to report_error to internal_error, since we don't
-         want to possibly exit in any of those cases
-
-                                   9/3
-                                   ---
-input.c
-       - changed the `localbuf' type to `unsigned char'
-
-parse.y
-       - changed yy_stream_get to use feof to test for end of file when
-         not using getc_with_restart
-
-                                   9/6
-                                   ---
-config.h.top
-       - added a commented-out define for SYS_BASH_LOGOUT, which is a
-         system-wide .bash_logout file, run when a login shell exits
-       - added /sbin to STANDARD_UTILS_PATH
-
-builtins/exit.def
-       - added support for SYS_BASH_LOGOUT
-
-                                  9/10
-                                  ----
-lib/readline/{{chardefs,histlib}.h,{bind,histexpand,readline,util,vi_mode}.c}
-       - changed to_upper to _rl_to_upper and to_lower to _rl_to_lower
-       - changed digit_value to _rl_digit_value
-       - changed digit_p to _rl_digit_p
-       - changed uppercase_p and lowercase_p to _rl_uppercase_p and
-         _rl_lowercase_p respectively
-       - changed pure_alphabetic to _rl_pure_alphabetic
-
-support/zecho.c
-       - new file, implements a bare-bones echo (no -n, no \-escapes),
-         to be used by tests
-
-tests/rhs-exp.tests
-       - changed calls to echo to use recho to avoid errors when bash is
-         configured with --enable-usg-echo-default
-
-tests/more-exp.tests
-       - changed some calls to echo to use zecho to avoid errors when bash
-         is configured with --enable-usg-echo-default
-
-                                  9/11
-                                  ----
-lib/readline/histexpand.c
-       - fixed a possible off-by-one error in history_expand_internal when
-         deciding whether or not to reallocate `result'
-
-expr.c
-       - fixed expcond() so that an assignment may be supplied as the
-         token after the `?'
-       - illegal bases now cause an evaluation error
-       - multiple base specifications now cause an evaluation error
-
-tests/arith.tests
-       - added more tests for conditional operator and associativity
-
-tests/{run-heredoc,heredoc.{tests,right}}
-       - new set of tests for here-documents
-
-builtins/common.c
-       - print out the name returned by get_name_for_error in
-         builtin_error()
-
-subst.c
-       - set this_command_name to NULL before processing command-line
-         assignment statements so arithmetic evaluation errors don't
-         print garbage
-       - according to POSIX.2, echo ${foo?$x} should print the expanded
-         value of $x, even when it doesn't expand into anything
-
-                                  9/12
-                                  ----
-shell.c
-       - changed the execution of startup files so that $ENV is never
-         run by a non-interactive shell and an interactive shell begun
-         as `sh' reads and executes $ENV, as posix specifies
-
-doc/{bash.{1,html},bashref.texi}
-       - updated description of startup file behavior
-
-doc/Makefile.in
-       - make sure references to bashref.texi are preceded by $(srcdir)/
-         so we can build the documentation in another directory just by
-         typing `make'; e.g. after giving configure the --srcdir option
-
-subst.c
-       - change to array_remove_pattern to avoid evaluating the `param'
-         part of the ${param#word} spec twice when doing things like
-         echo ${A[x=(i+=1)]#${A[y=(i+=2)]}}
-
-                                  9/13
-                                  ----
-builtins/bashgetopt.c
-       - fixed a problem with `;' option specifier (optional argument)
-
-support/config.{sub,guess}
-       - added cases to recognize CRAY C90 and T90
-
-builtins/ulimit.def
-       - rewritten almost from scratch to use internal_getopt and to not
-         mask the return value from getrlimit/setrlimit, and to make it
-         easier to maintain
-       - added `-l' option for systems with RLIMIT_MEMLOCK (4.4 BSD)
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new `-l' option to `ulimit'
-
-                                  9/24
-                                  ----
-parse.y
-       - added `in' to the list of tokens that should not be followed by
-         a semicolon when combining history lines
-       - removed the special-case code in history_delimiting_chars that
-         tried to be smart about `()'
-
-                                  9/25
-                                  ----
-print_cmd.c
-       - fixes to print_group_command from Andreas Schwab
-       - rewrote indent() to use a single malloced string for the spaces
-         to print, rather than calling cprintf multiple times
-
-shell.c
-       - make sure to set the strings in current_user to NULL after freeing
-         their contents in uidget().
-
-parse.y
-       - make sure decode_prompt_string quotes the values inserted by the
-         \w and \W escape sequences using backslashes if the string will be
-         expanded later because promptvars is set
-
-support/mkdirs
-       - removed leading `^' from regular expressions to be matched by
-         `expr' on the advice of meyering@appaloosa.asic.sc.ti.com
-
-                                  9/26
-                                  ----
-parse.y
-       - added a few more possible flag values for parser_state
-       - changed history_delimiting_chars to not add a semicolon after a
-         right paren if we're parsing a case statement
-
-                                  9/27
-                                  ----
-builtins/ulimit.def
-       - a few minor cleanups
-
-                                  10/1
-                                  ----
-builtins/trap.def
-       - make sure first_arg is non-empty before calling signal_object_p()
-
-[bash-2.0-beta2 frozen]
-
-                                  10/2
-                                  ----
-bashintl.h
-       - if we have setlocale(), but don't have a definition for LC_ALL,
-         undefine HAVE_SETLOCALE
-
-configure.in
-       - set LOCAL_LDFLAGS on AIX 4.2 to allow dynamic loading of builtins
-
-builtins/enable.def
-       - use correct flags for AIX 4.2 in dlopen call if _AIX is defined
-
-examples/loadables/Makefile
-       - add sample commands for AIX 4.2
-
-                                  10/3
-                                  ----
-variables.c
-       - new functions: merge_temporary_env(), merge_builtin_env(), to
-         take temporary_env and builtin_env, respectively, and create
-         shell variables from them
-
-variables.h
-       - new extern declarations for merge_temporary_env() and
-         merge_builtin_env()
-
-execute_cmd.c
-       - if variable assignments preceds a posix special builtin, and the
-         shell is in posix mode, those assignments should persist in the
-         shell environment after the builtin completes
-
-doc/bashref.texi
-       - modified description of what's changed by posix mode to include
-         the persistance of assignment statements preceding special builtins
-
-doc/mkposix
-       - new script to create CWRU/POSIX.NOTES directly from the `Bash
-         POSIX Mode' node of bashref.texi, like INSTALL is created
-
-                                  10/4
-                                  ----
-lib/{malloc,glob,readline}/Makefile.in, builtins/Makefile.in
-       - don't have autoconf substitute LOCAL_CFLAGS into the CFLAGS
-         assignment so people on SCO 3.2v[45] can still build with
-         NO_MEMSCRAMBLE even when they run `make CFLAGS=...'
-
-test.c
-       - renamed eaccess() to test_eaccess() to avoid conflict with SCO
-
-config.h.bot
-       - #undef HAVE_GETCWD if GETCWD_BROKEN is defined, so we use the
-         replacement in getcwd.c
-
-general.c
-       - fixed a small memory leak in full_pathname that occurs if
-         getcwd() returns NULL
-
-oslib.c
-       - new constant string variable: bash_getcwd_errstr, to use when
-         getcwd() returns NULL
-
-{general,jobs}.c, parse.y, builtins/{cd.def,common.c}
-       - change calls to getwd() to use getcwd() instead
-
-general.c, builtins/common.c, builtins/cd.def
-       - changed error behavior when getcwd() returns NULL to use
-         bash_getcwd_errstr, sys_error(), and strerror(errno) where
-         appropriate
-
-sig.c
-       - change a couple of calls to signal to set_signal_handler
-
-aclocal.m4
-       - added definitions of _popen and _pclose to the BASH_FUNC_GETCWD
-         macro
-
-configure.in
-       - added -DPATH_MAX=1024 to LOCAL_CFLAGS for sco3.2v[45] on the
-         advice of <grog@lemis.de>
-       - removed check for getwd(3)
-
-externs.h
-       - removed extern declaration for getwd(), added extern declaration
-         for getcwd() if HAVE_GETCWD is not defined
-
-oslib.c
-       - removed definition of getwd(); it is no longer used
-
-lib/readline/rltty.c
-       - changed SETATTR macro for SCO POSIX systems to call tcsetattr
-         with TCSANOW, on advice of <wbader@nacs.fast.net>
-
-                                  10/7
-                                  ----
-support/mkdirs
-       - slight change to work around a bug in the HP-UX `expr'
-
-                                  10/8
-                                  ----
-lib/readline/vi_mode.c
-       - changes so that the text inserted with an `i' command is available
-         to be reinserted with `.'
-
-examples/functions/autoload.v2
-       - new implementation: uses arrays, keeps a list of autoloaded
-         functions, allows autoloaded functions to be removed, allows
-         autoloaded functions to be listed
-
-execute_cmd.c
-       - when freeing the members of subshell_argv in shell_execve(), free
-         only the members up to subshell_argc
-
-                                  10/9
-                                  ----
-configure.in
-       - replaced calls to AC_HAVE_FUNCS with AC_CHECK_FUNCS
-       - replaced calls to AC_FUNC_CHECK with AC_CHECK_FUNC
-       - replaced calls to AC_HAVE_HEADERS with AC_CHECK_HEADERS
-       - added additional code to check for libintl.{a,so} for the
-         internationalization functions if bindtextdomain is not found
-         in libc
-       - define HAVE_WAIT3 if AC_FUNC_CHECK(wait3,...) succeeds, rather
-         than HAVE_FUNC_WAIT3, which is not used in the source
-       - added a call to AC_FUNC_STRCOLL to check for the presence of a
-         working strcoll(3)
-
-config.h.in
-       - removed HAVE_FUNC_WAIT3
-       - added HAVE_STRCOLL
-
-variables.c, stringlib.c
-       - move sort_char_array from variables.c to stringlib.c
-
-variables.h, externs.h
-       - move extern declaration of sort_char_array from variables.h to
-         externs.h
-
-variables.c
-       - don't sort the exported environment, even when we're not in
-         posix mode
-
-stringlib.c
-       - changed qsort_string_compare to use strcoll(3) if it is available
-         (HAVE_STRCOLL is defined).  This means that the results of glob
-         expansions are now sorted in the per-locale collation order
-
-locale.c
-       - track the value of $LC_COLLATE and call setlocale(LC_COLLATE,...)
-         when it changes.  Also, set its default value
-
-subst.c
-       - LC_COLLATE is now a special variable; call sv_locale when it is
-         assigned to or unset
-
-lib/readline/util.c
-       - move compare_strings here from complete.c; renamed it
-         _rl_qsort_string_compare; made it use strcoll(3) if it's
-         available; made it global so other library files can use it
-
-lib/readline/complete.c
-       - use _rl_qsort_string_compare instead of static compare_strings.
-         This means that completions are now sorted in a locale-specific
-         collation order
-
-lib/readline/funmap.c
-       - removed static declaration of qsort_string_compare; qsort now
-         uses _rl_qsort_string_compare instead
-
-oslib.c
-       - rewrote stricmp, strnicmp; renamed them strcasecmp and
-         strncasecmp, since they're only compiled in if HAVE_STRCASECMP
-         is not defined
-
-externs.h
-       - removed extern declarations of strnicmp, stricmp, replacing them
-         with declarations of strcasecmp and strncasecmp if HAVE_STRCASECMP
-         is not defined; removed #defines of stricmp and strnicmp to
-         strcasecmp and strncasecmp
-
-trap.c
-       - changed calls to stricmp to direct calls to strcasecmp
-
-Makefile.in
-       - bumped RELSTATUS to `beta3'
-
-doc/bash.{1,html}
-       - added mention of LC_COLLATE
-
-doc/bashref.texi
-       - removed item about sorting environment from the section on posix
-         mode
-
-                                  10/16
-                                  -----
-subst.c
-       - fixed array_length_reference to return 0 for an unbound variable
-         and 1 for a variable that is not an array
-
-examples/scripts.v2/cdhist.bash
-       - package with functions to replace cd and maintain a cd directory
-         stack
-
-examples/scripts.v2/pmtop
-       - a `poor man's top' for SunOS 4.x and BSD
-
-examples/scripts.v2/bashrand
-       - a script to return a random number within a specified range, with
-         an optional seed
-
-examples/scripts/zprintf
-       - printf(1) replacement that uses gawk to do the output
-
-doc/{bash.{1,html},bashref.texi}, lib/readline/doc/hsuser.texinfo
-       - several small corrections
-
-                                  10/17
-                                  -----
-variables.c
-       - changed the calls to list_string_with_quotes and then
-         expand_words_no_vars in assign_array_var_from_string to a single
-         call to expand_string.  This behaves more rationally, and closer
-         to ksh93
-
-subst.c
-       - commented out list_string_with_quotes -- it is no longer used
-
-lib/readline/terminal.c
-       - new function, _rl_set_screen_size(int rows, int cols), to set
-         readline's idea of the screen size
-
-jobs.c, nojobs.c
-       - make sure that window size changes are propagated back down to
-         the readline code, by calling _rl_set_screen_size with the
-         new sizes.  This happens when bash gets a SIGWINCH or if
-         `checkwinsize' is set with `shopt'
-
-                                  10/18
-                                  -----
-support/config.guess
-       - added code to recognize the various NetBSD ports
-
-lib/readline/signals.c
-       - don't install a handler for SIGALRM if the containing application
-         has installed a handler with SA_RESTART as part of the flags.
-         This is in effect, obviously, only for systems with POSIX signals.
-
-subst.c
-       - make parameter_brace_expand_length expand variables in a double-
-         quoted environment so it takes spaces in the variable value into
-         account
-
-                                  10/21
-                                  -----
-command.h
-       - flags for possible values of subshell_environment telling what
-         caused the subshell
-
-builtins/command.def
-       - the `command' builtin should not be setting CMD_NO_FORK at all;
-         it doesn't know enough about the execution context to do so
-
-execute_cmd.c, subst.c
-       - set subshell_environment to one of the values in command.h rather
-         than to `1', so we know what kind of subshell it is (just for
-         informational purposes; nothing actually uses this yet)
-
-
-                                  10/22
-                                  -----
-execute_cmd.c
-       - just return EXECUTION_SUCCESS immediately in execute_command_internal
-         if read_but_dont_execute is set
-
-                                  10/23
-                                  -----
-general.c
-       - fixed check_dev_tty to return immediately if ttyname() returns NULL
-
-builtins/suspend.def
-       - SIGSTOP cannot be caught, so there's no reason to try to do so
-
-examples/loadables/{finfo,pathchk,print}.c
-       - minor fixes
-
-pathexp.c
-       - fix to off-by-one error in setup_ignore_patterns
-
-jobs.c
-       - try to set the tty pgrp to our pgrp if we change our pgrp to our
-         pid and become a process group leader.  If it doesn't work,
-         reset our pgrp to what it was originally and disable job control
-
-aclocal.m4
-       - new test, BASH_STRUCT_TERMIO_LDISC, to test for a c_line member
-         of struct termio
-
-config.h.in
-       - add a new preprocessor variable, TERMIO_LDISC, undefined by default
-
-configure.in
-       - call BASH_STRUCT_TERMIO_LDISC after BASH_STRUCT_TERMIOS_LDISC
-
-                                  10/25
-                                  -----
-lib/readline/terminal.c
-       - increased the size of the termcap buffers to 4096
-
-                                  10/29
-                                  -----
-parse.y
-       - include memalloc.h for uses of alloca that the code in the
-         generated bison parser does not catch (e.g., HP-UX 10.10)
-
-aclocal.m4
-       - new test, BASH_KERNEL_RLIMIT_CHECK, to check whether a given
-         HP-UX machine needs _KERNEL defined for the RLIMIT_* defines in
-         <sys/resource.h> (9.05, 10.01 yes, 10.10,10.20 no)
-
-configure.in
-       - call BASH_KERNEL_RLIMIT_CHECK if $host_os begins with `hpux'
-
-config.h.in
-       - new #undef for RLIMIT_NEEDS_KERNEL
-
-builtins/ulimit.def
-       - only define _KERNEL before including <sys/resource.h> if HPUX
-         and RLIMIT_NEEDS_KERNEL are both defined
-
-[bash-2.0-beta3 frozen]
-
-                                  11/1
-                                  ----
-locale.c
-       - if setting LC_ALL to a null value (as is done when `unset LC_ALL'
-         is run), call setlocale() to set LC_ALL back to default_locale
-
-lib/readline/readline.c
-       - moved i18n code from here to nls.c
-
-lib/readline/Makefile.in, Makefile.in
-       - new readline library member, nls.c
-
-lib/readline/nls.c
-       - new file, with internationalization code from readline.c (such as
-         it is)
-       - updated legal_lang_values to just contain a list of codesets
-       - added code modified from a diff sent by Ulrich Drepper
-         <drepper@cygnus.com> to parse a locale specification and isolate
-         and normalize the codeset part, for checking against the values
-         in legal_lang_values
-
-                                  11/4
-                                  ----
-builtins/setattr.def, locale.c, aclocal.m4, oslib.c
-       - minor cleanups
-
-                                  11/5
-                                  ----
-lib/readline/complete.c, test.c, trap.c
-       - more minor cleanups
-
-                                  11/6
-                                  ----
-parse.y
-       - added a `flags' parameter to parse_matched_pair, currently unused
-
-                                  11/7
-                                  ----
-configure.in, config.h.in
-       - add a check for time_t, defaulting to `long' if it's not
-         defined in <sys/types.h>
-
-builtins/fc.def
-       - use `time_t *' instead of `long *' in call to time()
-
-                                  11/8
-                                  ----
-configure.in
-       - removed check for getpwent in libsun.a; it's not necessary for
-         recent versions of irix (irix[56].?)
-
-                                  11/11
-                                  -----
-test.c
-       - used `&&' where `||' was needed when testing if HAVE_LSTAT and
-         S_IFLNK are both defined
-
-[bash-2.0-beta3 net release version frozen]
-
-                                  11/12
-                                  -----
-builtins/getopt.c
-       - when sh_getopt detects that a required argument is not present,
-         set sh_optarg to "" so that getopts does the right thing
-
-                                  11/15
-                                  -----
-builtins/ulimit.c
-       - made the default (without -H or -S) report the soft limit and set
-         both soft and hard limits (like sh and ksh)
-
-expr.c
-       - changed the maximum base in base#num constants to 64, implemented
-         just like ksh93
-
-doc/{bash.{1,html},bashref.texi}
-       - updated description of ulimit builtin to new behavior when
-         neither -H nor -S is supplied
-       - updated arithmetic evaluation section with new maximum base and
-         explanation of how numbers between 10 and 63 are represented
-
-lib/readline/vi_mode.c
-       - in rl_vi_done_inserting, don't try to save the text entered while
-         in insert mode unless rl_undo_list is non-null (indicating that
-         there was actually some text to be saved)
-
-                                  11/19
-                                  -----
-lib/readline/tcap.h
-       - new file, for termcap library definitions.  Uses <termcap.h> if
-         it is available
-
-lib/readline/rldefs.h
-       - remove inclusion of termcap.h; now included in tcap.h
-
-lib/readline/{terminal,display,readline}.c
-       - include tcap.h
-
-lib/readline/Makefile.in
-       - update dependencies to include tcap.h
-
-                                  11/21
-                                  -----
-lib/readline/complete.c
-       - broke the code that computes the lcd of the list of completion
-         matches out into a separate function, compute_lcd_of_matches()
-
-lib/readline/complete.c
-       - call compute_lcd_of_matches after calling the application-specific
-         completion ignore function, since it may have eliminated some
-         names from the match list
-
-builtins/cd.def
-       - replaced instances of MAXNAMLEN in the spelling correction code
-         with PATH_MAX
-
-lib/readline/terminal.c
-       - new termcap capabilities: kh (sent by Home key) and kH (sent by
-         End key) automatically bound to beginning-of-line and end-of-line
-         respectively in emacs_standard and vi_movement maps
-
-mailcheck.c
-       - fix to remember_mail_dates so any message following the
-         filename is saved correctly
-
-                                  11/22
-                                  -----
-lib/readline/bind.c
-       - fixed extern declaration of _rl_parsing_coditionalized_out
-         to match declaration in readline.c
-
-                                  11/25
-                                  -----
-doc/{bash.{1,html},bashref.texi}
-       - fixed a gross documentation error in the description of
-         ${parameter:offset:length} (offset and length were transposed)
-       - slight changes to the description of output redirection
-
-subst.c
-       - new function, quoted_substring, to return substrings of variables
-         when the expression is within double quotes and the value has
-         CTLESC characters embedded within it.  Called by
-         parameter_brace_substring
-       - get_var_and_type should return VT_POSPARMS if `*' is passed as
-         the variable name
-       - added a new first parameter for pos_params -- the variable name
-       - changed pos_params to obey the rules for "$*" wrt using the
-         first character of IFS as the separator in the result
-       - if an unquoted $* or $@ is expanded, call quote_escapes on the
-         result to protect any special characters from inadvertently
-         causing quoting
-
-                                  12/3
-                                  ----
-builtins/ulimit.def
-       - corrected a misspelling of `unlimited'
-       - added support for linux RLIMIT_AS resource limit for -v option
-         and changed the block multiplier to 1024 if we have RLIMIT_VMEM
-         or RLIMIT_AS
-
-                                  12/5
-                                  ----
-lib/readline/readline.c
-       - fix rl_insert to handle a count of exactly 1024
-
-shell.c
-       - new function: unbind_args(), which removes all the positional
-         parameters.  Just calls remember_args(NULL, 1)
-
-execute_cmd.c
-       - call unbind_args when executing a subshell, after setting up
-         subshell_argX
-
-bashintl.h
-       - include <libintl.h> if HAVE_LIBINTL_H defined
-
-config.h.in
-       - add HAVE_LIBINTL_H define
-
-configure.in
-       - add call to AC_CHECK_HEADERS for libintl.h
-
-doc/Makefile.in
-       - added infodir and various mandir defines for completeness
-
-Makefile.in
-       - changed some of the *dir defines to use the autoconf values
-         (e.g., bindir = @bindir@)
-       - changed manroot to mandir, removed old mandir and manext variables
-       - added `manpfx' variable; should be either `man' or `cat'
-
-                                  12/6
-                                  ----
-lib/readline/readline.c
-       - fixed rl_digit_loop so it once again displays the argument count
-         as it's being entered (added calls to _rl_save_prompt and
-         _rl_restore_prompt)
-
-                                  12/7
-                                  ----
-support/config.guess
-       - recognize netbsd/vax
-       - recognize openbsd on all supported platforms
-       - recognize tenon's machten running on powerpc and macintosh
-
-                                  12/9
-                                  ----
-support/config.guess
-       - added all sorts of systems from config.guess distributed with
-         autoconf-2.12
-
-                                  12/10
-                                  -----
-subst.c
-       - new function quoted_strchr(); does the same thing as strchr but
-         honors shell backslash and CTLESC quoting conventions
-       - parameter_brace_patsub now calls quoted_strchr
-
-                                  12/11
-                                  -----
-shell.c
-       - if the shell is named `-su', run the normal login shell startup
-         files, even if the shell is not interactive.  This handles the
-         case of `su - username -c command' compatibly
-
-lib/readline/readline.c
-       - minor change to rl_digit_loop so that M-- and M--1 are equivalent,
-         as the prompt for digit arguments has always implied
-
-lib/malloc/malloc.c
-       - added definitions of calloc() and cfree(), compiled in unless
-         NO_CALLOC is defined to cpp
-
-
-                                  12/16
-                                  -----
-parse.y
-       - protect uses of history_expansion_inhibited with #ifdef
-         BANG_HISTORY
-
-[bash-2.0-release candidate frozen]
-
-builtins/common.c
-       - changed backslash_quote to quote a tilde if it's the first
-         character in the string
-
-                                  12/17
-                                  -----
-aclocal.m4
-       - changed BASH_CC_WORKS to provide a cross-compiling default for
-         better error messages
-
-configure.in
-       - generated configure using autoconf-2.12
-       - changed the default value of CFLAGS to `-g -O2'
-
-                                  12/18
-                                  -----
-aclocal.m4
-       - look for /var/spool/mail before /usr/spool/mail when checking
-         for the default mail directory
-
-jobs.c, builtins/shopt.def
-       - fixed a couple of `macro replacement within a string literal'
-         problems
-
-Makefile.in
-       - removed `realclean' target
-
-shell.c
-       - changed the first line ouput by bash --version to conform to
-         the latest GNU coding standards (replace space between version
-         and machtype with a hyphen)
-
-                                  12/19
-                                  -----
-execute_cmd.c
-       - when looking at the debug trap in execute_function and
-         execute_command_internal, make sure it's trapped and not
-         ignored before trying to save the value of the trap string
-
-                                  12/20
-                                  -----
-trap.c
-       - changed set_signal and ignore_signal to handle EXIT_TRAP and
-         DEBUG_TRAP specially, so we don't try to fetch signal handlers
-         or do other unnecessary things
-
-                                  12/22
-                                  -----
-builtins/ulimit.def
-       - if the current euid is not 0, and we're trying to set the hard
-         limit of a resource to RLIM_INFINITY, set it to the current hard
-         limit to avoid error messages
-
-builtins/read.def
-       - fix for bug that caused core dump if line read had leading white
-         space and IFS was set to ''
-
-[bash-2.0-release frozen]
-
diff --git a/CWRU/old-changelogs/CWRU.chlog.v12 b/CWRU/old-changelogs/CWRU.chlog.v12
deleted file mode 100644 (file)
index dc687d4..0000000
+++ /dev/null
@@ -1,10049 +0,0 @@
-                               12/23/1996
-                               ----------
-[bash-2.0 released]
-
-                                  12/27
-                                  -----
-configure.in
-       - don't automatically use GNU malloc on FreeBSD, the builtin one
-         is supposed to be better (but doesn't have the debugging hooks)
-
-builtins/exec.def
-       - check that full_pathname(command) doesn't return NULL because of
-         inaccessible parent directories
-
-support/config.sub
-       - recognize OpenBSD
-
-execute_cmd.c
-       - broke the code that opens a file for output redirection when in
-         noclobber mode out into a separate function: noclobber_open().
-         This tries to avoid race conditions and file replacement between
-         stat(2) and open(2)
-
-subst.c
-       - make sure pat_subst does not run off the end of its return
-         string when copying the unmatched portion of the input string
-
-                                  12/30
-                                  -----
-doc/Makefile.in
-       - don't install readline.3 by default
-
-lib/tilde/tilde.c
-       - removed an unnecessary check for string[i] being non-null in
-         tilde_find_suffix
-
-                                  12/31
-                                  -----
-support/config.{sub,guess}
-       - merged in changes from config.sub in autoconf-2.12 distribution
-
-lib/readline/readline.c
-       - in rl_newline, only call _rl_vi_done_inserting and _rl_vi_reset_last
-         if readline is currently in vi mode
-
-lib/readline/display.c
-       - corrected a misuse of inv_lbreaks where vis_lbreaks was wanted in
-         the code that decides whether the cursor is at the beginning of
-         an otherwise-empty line
-
-                                1/2/1997
-                                --------
-support/bashbug.sh
-       - fixed a typo, thanks to eggert@twinsun.com
-
-aclocal.m4
-       - new test, BASH_STRUCT_DIRENT_D_FILENO, testing for d_fileno member
-         of struct dirent
-
-configure.in
-       - call BASH_STRUCT_DIRENT_D_FILENO
-
-config.h.in
-       - new #define for STRUCT_DIRENT_HAS_D_FILENO
-
-lib/posixheaders/posixdir.h
-       - only define d_fileno as d_ino if STRUCT_DIRENT_HAS_D_INO is defined
-         and STRUCT_DIRENT_HAS_D_FILENO is not defined.  This fixed the
-         problem of compiling getcwd.c on SunOS4.1.4 with cc
-
-                                   1/3
-                                   ---
-lib/readline/complete.c
-       - fix a memory-used-after-freed bug reported by Andreas Schwab
-
-configure.in
-       - call BASH_CHECK_SOCKLIB only if getpeername is not found in libc
-         (ac_cv_func_getpeername = no)
-
-                                  1/13
-                                  ----
-
-builtins/getopt.h
-       - change #define guard to _SH_GETOPT_H to avoid similar guards in
-         /usr/include/getopt.h (Dec OSF/1 4.x, for example)
-
-variables.h
-       - fix assign_array_from_string so that it rejects attempts to assign
-         to readonly variables
-
-subst.c
-       - fix verify_substring_values to handle offsets that are past the
-         end or before the beginning (in the case of a negative offset)
-         of the expanded variable value
-
-                                  1/14
-                                  ----
-bashline.c
-       - fix a problem where any completion after a `cmd` command
-         substitution would inappropriately attempt command completion,
-         even if the previous command substitution was correctly closed
-
-builtins/evalstring.c
-       - unwind_protect remember_on_history even if the shell is not
-         interactive, since history can now be used in scripts, and
-         `source' will turn off interactive_shell before calling
-         parse_and_execute
-
-jobs.c
-       - new function get_job_by_pid(pid, block) to translate a pid to
-         a job number.  The block argument says whether or not to block
-         SIGCHLD
-
-jobs.h
-       - new extern declaration for get_job_by_pid
-
-builtins/jobs.def
-       - call get_job_by_pid if an argument appears to be a pid rather
-         than a jobspec
-
-configure.in
-       - configure --without-gnu-malloc automatically on MachTen 4.x
-
-builtins/cd.def
-       - change to mindist() so that a best guess of `.' returns 3,
-         which means not reasonable
-
-lib/posixheaders/memalloc.h
-       - changed hpux_9 to __hpux, since the new config stuff doesn't
-         define hpux_9
-
-subst.c
-       - fix parameter_brace_patsub to handle null patterns (doesn't
-         do anything)
-
-oslib.c
-       - slight change to bzero replacement
-
-support/bashbug.sh
-       - changed TEMP to be /tmp/bbug.$$ as a sop to systems with 14-char
-         file names
-
-doc/bashref.texi
-       - add note to POSIX Mode section that the output of `set' when
-         invoked without arguments is sorted when in POSIX mode
-
-                                  1/15
-                                  ----
-support/recho.c
-       - a couple of changes prompted by a `gcc -Wall'
-
-subst.c
-       - changed ASSIGN_RETURN macro to use the do...while(0) idiom to
-         avoid problems with its multiple statements
-
-builtins/setattr.def
-       - a bad identifier given to readonly or export without an assignment
-         statement (e.g. `readonly a[5]') is an error, but not an assignment
-         error (i.e., return EXECUTION_FAILURE rather than EX_BADASSIGN)
-
-tests/{{array,new-exp}.,tilde-}tests
-       - added `set +o posix' at the beginning to disable POSIX mode, which
-         causes some of the tests to fail.  Some systems (e.g. LINUX-FT),
-         set POSIXLY_CORRECT by default
-
-tests/test-tests
-       - added a warning if $UID is 0 to the effect that the test suite
-         should not be run as root
-       - worked around the `noread' and `nowrite' tests failing when run
-         as root
-
-test.c
-       - began removing the remains of the STANDALONE code, since test is
-         included in GNU shellutils
-
-                                  1/16
-                                  ----
-lib/readline/{readline,display}.c
-       - a couple of slight changes to build on Win95 using djgpp (reported
-         by x-aes@telelogic.se)
-
-Makefile.in
-       - changed TERMCAP_LIBDIR to TERM_LIBDIR, so building the termcap
-         library (if necessary) should work now
-
-bashline.c
-       - new function: quote_word_break_characters(), to backslash-quote 
-         characters in a filename that the readline completion code would
-         treat as word breaks
-       - change bash_quote_filename to call quote_word_break_characters if
-         the completion quoting style says to use backslashes
-       - add `:' to rl_filename_quote_characters, since it's part of
-         filename_word_break_characters
-
-lib/posixheaders/posixjmp.h
-       - new file, with half of bashjmp.h
-       - posixjmp.h and lib/readline/posixjmp.h are symlinks to this file
-
-bashjmp.h
-       - include "posixjmp.h" for possible redefinitions of setjmp/longjmp
-         and procenv_t
-
-                                  1/17
-                                  ----
-shell.c
-       - bad options now cause the standard shell usage message (a subset
-         of what `bash --help' prints) to be displayed on stderr
-
-trap.c
-       - don't free the trap command for a DEBUG trap in
-         restore_default_signal if SIG_INPROGRESS is set -- there's already
-         a pointer saved to the old value in _run_trap_internal.  This
-         makes bashdb run better, too
-
-examples/bashdb/bashdb.{pre,fns}
-       - a couple of minor fixes; it actually has a chance of working now
-
-                                  1/21
-                                  ----
-config.h.in
-       - add a define for <dlfcn.h>, HAVE_DLFCN_H
-
-configure.in
-       - look for <dlfcn.h>, define HAVE_DLFCN_H if found
-
-builtins/enable.def
-       - include <dlfcn.h> only if HAVE_DLFCN_H is defined
-
-lib/readline/display.c
-       - renamed clear_to_eol to _rl_clear_to_eol and made it global, so
-         other library files (readline.c) can use it
-       - new function _rl_clear_screen, to clear the screen with the right
-         termcap escape sequence
-
-lib/readline/readline.c
-       - call _rl_clear_to_eol and _rl_clear_screen instead of using tputs
-       - extern declarations for _rl_clear_to_eol and _rl_clear_screen
-
-                                  1/22
-                                  ----
-mailcheck.c
-       - fixed a problem in make_default_mailpath() where a slash was not
-         added between the default mail directory and the username
-
-                                  1/23
-                                  ----
-stringlib.c
-       - added a fourth parameter to ansicstr: the length of the returned
-         string
-
-externs.h
-       - changed declaration of ansicstr
-
-parse.y
-       - changed call to ansicstr -- saves a call to strlen
-
-builtins/echo.def
-       - changed call to ansicstr
-       - if do_v9 is non-zero, use putchar to output the string instead
-         of printf, since there may be embedded NULL characters
-
-doc/{bash.1,bashref.texi}, builtins/trap.def
-       - modified the `trap' documentation to make it clearer that trap
-         takes multiple signal specs as arguments
-
-jobs.c, nojobs.c, jobs.h
-       - renamed initialize_jobs to initialize_job_control, added an
-         argument (force)
-
-jobs.c
-       - set shell_tty to fileno(stderr) in initialize_job_control if
-         the shell is not interactive.  This fixes the problem of bad
-         tty pgrps when monitor mode is turned on in a non-interactive
-         shell
-
-sig.c
-       - made initialize_terminating_signals do only that; moved the rest
-         of the code that used to be there into a new function:
-         initialize_shell_signals, which calls initialize_terminating_signals
-         if the shell is interactive
-       - initialize_terminating_signals is now extern
-       - made reset_terminating_signals return immediately if
-         termsigs_intitialized is zero, meaning that
-         initialize_terminating_signals has not been called
-
-sig.h
-       - new extern declaration for initialize_terminating_signals
-
-trap.c
-       - call initialize_terminating_signals from set_signal if sig is
-         EXIT_TRAP and the shell is not interactive.  Since the terminating
-         signals do not need to be initialized until a trap on exit is
-         set, not doing that at startup should result in a speed increase
-         for scripts
-
-execute_cmd.c
-       - save and restore command->flags in time_command, so you can use
-         `time command' in a loop
-
-                                  1/24
-                                  ----
-lib/readline/display.c
-       - fix redisplay code to wrap correctly if the prompt is longer than
-         the screen width (reported by bos@Eng.Sun.COM)
-
-lib/readline/undo.c
-       - don't include <setjmp.h>, it's not needed
-
-lib/readline/{util,readline}.c
-       - include "posixjmp.h" instead of <setjmp.h>
-       - readline_top_level is now a `procenv_t' instead of a `jmp_buf'
-         (now readline uses the correct posix semantics for preserving
-         the signal mask and other things across longjmp)
-
-parse.y
-       - fixes to push_string/pop_string to make them more general -- they
-         now can be used generally, instead of having to be associated
-         with an alias being expanded
-       - fixes to the parser so that it parses (( ls abc; ls def); ls ghi)
-         as a nested subshell command for backwards compatibility.  Broke
-         the double-paren expression parsing off into a new function:
-         parse_arith_cmd, called from read_token when a `((' is seen.  If
-         it looks like an arithmetic command, return `let' and set things
-         up so that the expression is returned as a double-quoted string
-         by the next call to read_token.  If it's a nested subshell, push
-         the text we parsed onto the list of strings for later consumption
-         and return `('
-
-lib/glob/glob.c
-       - fix glob_vector so it doesn't short-circuit checking a filename if
-         it starts with a `.' and the pattern starts with `\.' (if
-         noglob_dot_filenames is set).  This makes `".junk2"*' match
-         `.junk2.txt' correctly
-
-                                  1/27
-                                  ----
-support/bashbug.sh
-       - ask for confirmation before sending the bug report
-
-builtins/fc.def
-       - when editing and re-executing a multiline command, make sure
-         current_command_line_count is initialized and then incremented
-         for each line read from the file so that the lines added to
-         the history list by fc_replhist and fc_addhist obey the `lithist'
-         and `cmdhist' shopt options.  Reported by tibbitts@pb.seflin.org
-
-                                  1/28
-                                  ----
-lib/readline/readline.h
-       - added a couple of extern declarations for variables described in
-         the documentation but heretofore undeclared
-
-builtins/ulimit.def
-       - try to catch some classes of integer overflows before calling
-         set_limit
-
-                                  1/29
-                                  ----
-parse.y
-       - push and pop a `(' delimiter while parsing a $(...) construct, so
-         the history code doesn't try to inappropriately add a `;' when
-         a newline appears in the `...'
-
-aclocal.m4
-       - new macro, BASH_STRUCT_WINSIZE, which looks for `struct winsize'
-         in <sys/ioctl.h> (or one of the files it includes)
-
-configure.in
-       - call BASH_STRUCT_WINSIZE
-       - slightly reorganized the calls to bash-specific macros
-
-config.h.in
-       - add an `#undef STRUCT_WINSIZE_IN_SYS_IOCTL'
-
-jobs.c, nojobs.c
-       - only look in sys/ptem.h for struct winsize if
-         STRUCT_WINSIZE_IN_SYS_IOCTL is not defined to cpp
-
-                                  1/30
-                                  ----
-.{distribution,patchlevel}
-       - renamed to _{distribution,patchlevel}
-
-configure.in
-       - create a variable BASHVERS, from the contents of _distribution,
-         and a variable BASHPATCH, from the contents of _patchlevel,
-         (using m4 magic so we don't have to distribute .distribution
-         and .patchlevel) and substitute them into Makefile.in
-
-Makefile.in
-       - use Version and PatchLevel variables instead of the contents of
-         .distribution and .patchlevel, respectively.  These are set by
-         configure
-       - removed `.machine' from targets and dependencies
-
-support/mkversion.sh
-       - new shell script to handle updating version.h, replaces mkversion.c
-         (which is now overkill)
-
-support/mkdist
-       - don't bother with writing .distribution and .patchlevel files,
-         since they're no longer distributed
-
-support/mknewvers.sh
-       - simple bash script to make new version files.  It can increment
-         the major or minor version numbers or patchlevel, or take a
-         completely new version number (e.g., 2.01) as an argument
-
-doc/Makefile.in
-       - added support for the `install-info' command to update the info
-         directory file after installing bash.info
-
-                                  1/31
-                                  ----
-builtins/help.def
-       - fix core dump with `help --'
-
-susbt.c
-       - make call_expand_word_internal obey the convention that if
-         expand_word_internal returns &expand_word_{fatal,error}, then
-         w->word has already been freed
-       - return &expand_word_fatal from expand_word_internal if the shell
-         is not interactive and `set -u' has been executed
-
-test.c, general.c
-       - moved group_member from test.c to general.c
-
-externs.h, general.h
-       - moved extern declaration of group_member from externs.h to general.h
-
-general.c
-       - broke the code that initializes the group array out into a new
-         function, initialize_group_array()
-       - initialize_group_array() now initializes an array even if the OS
-         does not have getgroups().  If it does not, an array with one
-         element (the real gid) is created
-       - call sysconf(_SC_NGROUPS_MAX) if sysconf is available and
-         _SC_NGROUPS_MAX is defined
-       - new function, char **get_group_list(int *), to return an array
-         of strings made from the groups list
-
-variables.c
-       - new dynamic array variable: GROUPS, expands to the group set as
-         obtained with getgroups() (or whatever initialize_group_array()
-         makes)
-
-doc/{bash.{1,html},bashref.texi}
-       - added description of GROUPS variable
-
-test/test-tests
-       - before modifying the setgid bit on /tmp/setgid, try to change its
-         group to ${GROUPS[0]} 
-
-                                   2/3
-                                   ---
-aclocal.m4
-       - new autconf macro, BASH_MISC_SPEED_T, to see if speed_t is defined
-         in <sys/types.h>
-
-configure.in
-       - call BASH_MISC_SPEED_T
-
-config.h.in
-       - add `#undef SPEED_T_IN_SYS_TYPES'
-
-lib/readline/tcap.h
-       - include `rltty.h' if HAVE_TERMCAP_H and __linux__ are defined, but
-         SPEED_T_IN_SYS_STYPES is not, before including <termcap.h>
-
-support/mksignames.c, siglist.c
-       - add support for 4.4 BSD SIGLOST
-
-support/config.guess
-       - add support for recognizing QNX based on `uname' output
-
-Makefile.in
-       - make sure recho and zecho are compiled with the same set of CC
-         options as the rest of the sources
-
-lib/readline/bind.c
-       - change calls to rl_generic_bind to cast the third argument to
-         (char *) where necessary
-
-command.h
-       - two new flags: CMD_AMPERSAND (currently unused), and CMD_STDIN_REDIR,
-         which means that this command should have its standard input
-         redirected from /dev/null if there are not any explicit redirections
-         to stdin
-
-execute_cmd.c
-       - a redirection of type r_inputa_direction is no longer added at the
-         beginning of the redirection chain for an async command;
-         CMD_STDIN_REDIR is set in the flags instead
-       - new function: stdin_redirects: returns the number of redirections to
-         stdin in a chain of redirections
-       - new functions: async_redirect_stdin() to open /dev/null and make it
-         file descriptor 0
-       - changes to make CMD_STDIN_REDIR propagate to all of the necessary
-         functions (like execute_simple_command)
-       - execute_disk command now takes the flags from simple_command rather
-         than just the CMD_NO_FORK flag as its last argument
-       - various places after make_child is executed (in the child) check for
-         CMD_STDIN_REDIRECT (and no stdin redirections or piping) and call
-         async_redirect_stdin
-       - stdin_redir is now global
-
-eval.c
-       - set stdin_redir to 0 just before calling execute_command so it
-         gets reset to a known value and doesn't persist across commands
-
-                                   2/4
-                                   ---
-builtins/ulimit.def
-       - add a stub function for ulimit(2) on systems without HAVE_RESOURCE
-         or HAVE_ULIMIT that just sets errno to EINVAL and returns -1 --
-         QNX is one such system
-
-bashhist.c
-       - pre_process_line needs to protect all occurrences of hist_verify
-         with #ifdef READLINE
-
-builtins/shopt.def
-       - hist_verify needs to be protected with #ifdef READLINE, not
-         #ifdef HISTORY
-
-                                   2/5
-                                   ---
-support/config.{guess,sub}, configure.in
-       - chages to better support the Harris Night Hawk
-
-[many files]
-       - changes for things pointed out by gcc -Wall
-
-lib/glob/Makefile.in
-       - make sure -DSHELL is included in CCFLAGS so that globbing is
-         interruptible
-
-lib/malloc/malloc.c
-       - extern declaration for botch: if botch is #defined, it should be
-         the name of a void function
-
-configure.in,Makefile.in,builtins/Makefile.in,
-lib/{glob,malloc,readline,tilde}/Makefile.in
-       - add a LOCAL_DEFS variable, substituted from configure into the
-         various Makefiles.  It's set to -DSHELL, so that define gets
-         passed to all sub-makes without doing anything special
-
-lib/readline/readline.c
-       - change to rl_digit_loop to make it compatible with GNU emacs:
-         if a key bound to `universal-argument' is read after reading
-         some digits, it terminates the argument but is otherwise
-         ignored.  This is how people can insert repeated digits
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - changed description of `universal-argument' to describe how
-         to terminate a numeric argument
-
-                                   2/6
-                                   ---
-jobs.c
-       - changed kill_pid to diddle the job and process data structures
-         if we're sending SIGCONT to a stopped job with `kill' so that
-         the shell knows the job is running again.  ksh93 does this
-
-                                   2/7
-                                   ---
-unwind_prot.c
-       - changed bcopy to FASTCOPY
-
-builtins/enable.def
-       - changed pointer arithmetic in delete_builtin to just subtract
-         the head of the builtins list (shell_builtins) from a pointer
-         to the builtin to be deleted (b) to find its index in the list
-         on ANSI C systems
-
-                                  2/10
-                                  ----
-lib/readline/bind.c
-       - when using old-style keynames to bind to a new-style macro,
-         pass an array of type (unsigned char *) to rl_macro_bind
-
-builtins/getopt.c
-       - change sh_getopt to return EOF if nextchar is empty or NULL
-         and sh_optind is greater than argc.  This can happen if a
-         script mixes calls to `getopts' with calls to `shift'
-
-                                  2/11
-                                  ----
-print_cmd.c
-       - fixed make_command_string_internal so that commands with the
-         CMD_TIME_POSIX flag set print `time -p' instead of `time'
-       - changed print_redirection_list so the here documents are
-         printed after all the other redirections, and followed by a
-         newline (rather than a possible semicolon)
-       - added a new variable, was_heredoc, to avoid adding a semicolon
-         at the beginning of an empty line after printing the heredoc
-         ending delimiter
-
-execute_cmd.c
-       - don't put the gnu_argv_flags into the environment any more; it's
-         proven to be a bad idea
-
-configure.in
-       - set LOCAL_CFLAGS to `-DSunOS5' on Solaris 5.5[.x]
-
-builtins/echo.def
-       - only call fflush() after printing each word on SunOS 5.5, since
-         that's the system with the bug that prompted its inclusion in
-         the first place
-
-support/mksignames.c
-       - added support for more system-specific signals from AIX 4.2,
-         changed initialization order so that system-specific signals
-         are done first, before the common signals
-
-                                  2/12
-                                  ----
-execute_cmd.c
-       - broke the code that creates a file containing the text of a
-         here document out into a separate function: here_doc_to_fd
-       - create the temp file used for a here document with mode 600
-       - open the temp file used for a here document with O_EXCL
-
-shell.h
-       - changed the uid members of struct user_info to be of type uid_t
-         and the gid members to be of type gid_t
-
-parse.y
-       - changed the type of the `type' argument to init_yy_io() to be
-         `enum stream_type', since that's what's always passed
-
-input.h
-       - changed the function prototype for init_yy_io so the third arg is
-         type `enum stream_type'
-
-externs.h
-       - added a prototype for getcwd, if HAVE_GETCWD is not defined
-
-builtins/umask.def
-       - changed all variables that are used as arguments to or save the
-         return value from umask(2) to be of type mode_t
-       - changed print_symbolic_umask to take an argument of type mode_t
-
-                                  2/13
-                                  ----
-jobs.c
-       - if old_sigint_handler is set to SIG_DFL, as it will be in a script
-         without a trap on SIGINT installed, call termination_unwind_protect()
-         directly from waitchld()
-
-                                  2/14
-                                  ----
-configure.in
-       - added a section before the call to BASH_CHECK_LIB_TERMCAP to
-         set a variable prefer_curses on some systems (AIX, for one)
-
-aclocal.m4
-       - in BASH_CHECK_LIB_TERMCAP, don't return -ltermcap if $prefer_curses
-         is non-empty
-
-lib/readline/Makefile.in
-       - redid the dependencies
-
-                                  2/17
-                                  ----
-hashlib.c, getcwd.c
-       - include `bashansi.h' instead of stdlib.h and string.h
-
-error.c, siglist.c, xmalloc.c, builtins/{common,evalfile,mkbuiltins,psize}.c,
-builtins/{exec,exit,fg_bg,hash,history}.def
-       - include `bashtypes.h' instead of directly including <sys/types.h> 
-
-builtins/fc.def
-       - include ../bashtypes.h and ../posixstat.h instead of bashtypes.h
-         and posixstat.h
-
-builtins/mkbuiltins.c
-       - include ../posixstat.h instead of <sys/stat.h>
-
-general.h
-       - include `bashtypes.h' if RLIMTYPE is defined, so we can fetch
-         a definition of quad_t (or whatever) from <sys/types.h> before
-         using it in a function prototype
-
-Makefile.in, builtins/Makefile.in
-       - updated dependencies
-
-                                  2/18
-                                  ----
-builtins/set.def
-       - new function, set_posix_mode, called when `set [-+]o posix'
-         or `shopt -[su] -o posix' is executed.  It sets or unsets
-         $POSIXLY_CORRECT and calls sv_strict_posix
-
-subst.c
-       - in sv_strict_posix, call posix_readline_initialize only if
-         the shell is interactive (interactive_shell != 0)
-
-shell.c
-       - if we are acting like `sh', call posix_readline_initialize
-         if the shell is interactive
-       - moved the code that does posix.2 mode initialization after
-         interactive_shell is set, and call posix_readline_initialize
-         if interactive_shell is non-zero
-
-bashwait.h
-       - renamed to unionwait.h, since that is what it defines
-
-posixwait.h
-       - moved the POSIX 1003.1 job control defines here from jobs.h
-
-jobs.h
-       - include `posixwait.h'
-
-                                  2/19
-                                  ----
-braces.c
-       - if SHELL is defined, pass the contents of new-style command
-         substitution through without expanding brace constructs between
-         the parens -- let the subshell do it
-
-subst.c
-       - when brace-expanding words, preserve the flags (word->flags) if
-         brace expansion does not change the word.  This fixes the problem
-         of things like
-
-                local -a avar=( ${PATH//: } );
-
-bashline.c
-       - have shell_expand_line pass a copy of rl_line_buffer to expand_string
-         in case there are substitution errors and the string gets freed
-
-                                  2/20
-                                  ----
-expr.c
-       - make sure that expland and explor set `lasttok' to LAND and LOR,
-         respectively, if they parse `&&' or `||'.  This makes the
-         precedence code work right
-
-subst.c
-       - changes so that non-interactive shells exit immediately when a
-         parameter that is unset is referenced after `set -u' has been
-         executed causes the shell to exit immediately
-
-                                  2/21
-                                  ----
-flags.c
-       - if `set -r' is executed, call maybe_make_restricted so that $PATH
-         and $SHELL are made read-only
-
-execute_cmd.c
-       - if `set -e' has been executed, and we're inverting a pipeline's
-         return status with `!', set CMD_IGNORE_RETURN so a failing
-         command does not inadvertently cause the shell to exit before
-         the exit status can be inverted.  This is probably only a problem
-         with the `eval' builtin.
-
-                                  2/24
-                                  ----
-builtins/hash.def
-       - add a missing argument of 0 to add_hashed_command
-
-builtins/kill.def
-       - job identifiers can be used in non-interactive shells as long as
-         job control has been turned on with `set -m'
-
-jobs.c
-       - we want to be notified of stopped jobs if job_control is non-zero,
-         even if the shell is not interactive
-
-execute_cmd.c
-       - make sure shell_execve returns EX_NOTFOUND if execve fails and
-         errno is set to ENOENT
-       - makes sure execute_builtin saves the temporary environment to
-         builtin_env for the `eval' builtin, since it can destroy the
-         temporary environment when it calls parse_and_execute
-
-bashhist.c
-       - new variable: hist_last_line_added, set to 1 if the last command
-         line was added to the history successfully as a separate entry.
-         Used by `history' and `fc'
-
-                                  2/25
-                                  ----
-trap.c
-       - save line number before executing trap command, because
-         parse_and_execute resets it to 1 and the trap command might
-         want it
-
-execute_cmd.c
-       - change to executing_line_number to return trap_line_number if
-         the shell is currently running a trap
-
-                                  2/26
-                                  ----
-execute_cmd.c
-       - change to time_command so that a `real' value of 0 does not
-         cause a divide-by-zero error when computing cpu percentage
-
-lib/readline/signals.c
-       - if MUST_REINSTALL_SIGHANDLERS is defined, reinstall the SIGWINCH
-         handler in rl_handle_sigwinch
-
-builtins/set.def
-       - `unset' now rejects attempts to unset names that are not valid
-         shell identifiers as errors
-       - add a description of `-o history' option to help text
-
-subst.c
-       - in parameter_brace_patsub, we want backslash removal done on
-         the replacement if (mflags & MATCH_QUOTED), since the code
-         in expand_word_internal will not do it.  We need to call
-         expand_string_unsplit directly, since maybe_expand_string does
-         not do the right thing
-
-                                  2/28
-                                  ----
-execute_cmd.c
-       - if execute_for_command finds that the iteration variable is readonly,
-         decrement loop_level before returning
-
-builtins/break.def
-       - if the break count is <= 0, display an error message and break out
-         of all loops
-
-builtins/command.def
-       - if PATH is unset, and we're using command -p, we don't want PATH
-         to be set to the empty string when `command' completes
-
-builtins/common.c
-       - POSIX.2 says `kill -l signum' prints the signal name without the
-         leading `SIG' prefix, so check for this_shell_builtin == kill_builtin
-         in display_signal_list
-
-builtins/getopts.def
-       - when invoked without any arguments, `getopts' now prints a usage
-         message
-
-                                   3/3
-                                   ---
-builtins/common.c
-       - add a second argument to get_numeric_arg: if non-zero, the shell
-         exits on a bad argument; if not, the shell jumps to top_level
-         with a DISCARD argument, which aborts the current command
-
-builtins/{break,exit,history,return,shift}.def
-       - change calls to get_numeric_argument
-
-lib/readline/funmap.c
-       - add `dump-macros' to list of bindable names
-
-lib/readline/readline.h
-       - added extern declaration for rl_prompt (it was apparently missing)
-
-lib/readline/readline.c
-       - new internal function, _rl_init_line_state, which sets rl_point
-         and rl_end to 0, sets the_line to point to _rl_line_buffer, and
-         clears the line
-
-lib/readline/callback.c
-       - if a user's callback function does not clear the line, clear it
-         for him by calling _rl_init_line_state
-
-                                   3/4
-                                   ---
-alias.c
-       - made the readline support functions #ifdef READLINE, so they're
-         not compiled into the shell unless readline is
-
-lib/readline/bind.c
-       - new function _rl_untranslate_macro_value, to expand meta-prefixes
-         and other special characters in a macro value for printing by
-         _rl_macro_dumper_internal
-       - call _rl_untranslate_macro_value in _rl_macro_dumper_internal to
-         get a printable version of the macro value
-
-lib/readline/readline.c
-       - new variable, rl_dispatching, set to 1 when we call a function
-         from _rl_dispatch
-
-lib/readline/readline.h
-       - extern declaration for rl_dispatching
-
-lib/readline/complete.c
-       - make sure S_ISCHR and S_ISBLK are defined before using them
-
-lib/readline/terminal.c
-       - add a new #define NEED_EXTERN_PC.  Define this if the termcap
-         or curses libraries need `extern' before declarations of PC,
-         BC, and UP
-
-lib/readline/{readline,terminal,histfile}.c
-       - changes to compile on OS/2 with OS/2 `EMX' port of gcc, originally
-         sent by ilya@math.ohio-state.edu
-
-builtins/set.def
-       - fixed a bug in set_shellopts that caused the shell to crash if
-         there were no shell options set
-
-                                   3/5
-                                   ---
-configure.in,Makefile.in
-       - choose run-all or run-minimal as the test script based on whether
-         the --enable-minimal-config option was given to configure
-
-builtins/setattr.def
-       - fixed `export -p' and `readonly -p' so that they output `export'
-         or `readonly' when in POSIX mode, as POSIX.2 specifies
-
-                                   3/6
-                                   ---
-builtins/setattr.def
-       - make `readonly -a var=(...)' work just like `declare -ar var=(...)',
-         since the two logically mean the same
-       - `readonly -f' and `export -f' don't print the function definition
-         for each readonly or exported function, respectively, when in
-         POSIX mode
-
-jobs.c, nojobs.c
-       - don't report status for processes killed by SIGPIPE if
-         DONT_REPORT_SIGPIPE is defined
-
-config.h.top
-       - added a commented-out define for DONT_REPORT_SIGPIPE
-
-execute_cmd.c
-       - `time' can now be used to time background pipelines, and reports
-         the timing statistics when the pipeline completes
-
-[bash-2.01-alpha1 frozen]
-
-                                  3/12
-                                  ----
-subst.c
-       - move the parent end of the pipe file descriptor used for process
-         substitution to a high, unused file descriptor to avoid clashes
-         with redirections performed explicitly by a script
-
-configure.in
-       - added a `--with-curses' argument so curses can be forcibly chosen
-         over libtermcap (some Unix versions ship lousy termcap databases)
-
-support/mkconffiles
-       - new script to create _distribution and _patchlevel from values
-         contained in `configure'
-
-doc/bashref.texi
-       - updated installation instructions
-
-                                  3/13
-                                  ----
-general.c
-       - if `getgroups' returns 0, make sure we add the primary group id
-         as GROUPS[0].
-       - if we have getgroups, and the primary gid is not in the array
-         getgroups returns, add it as group_array[0] and shuffle everything
-         up one element.  This ensures that current_user.gid == group_array[0]
-         all the time
-
-tests/builtins.tests
-       - changes to avoid stray variables in environment when the shell
-         version of printenv is used with bash as /bin/sh, running the
-         `exec -c' tests.
-
-                                  3/14
-                                  ----
-builtins/cd.def
-       - spelling correction is no longer enabled by default
-
-support/bashbug.sh
-       - if the shell's release status is alpha or beta, offer the option
-         of sending the bug report to the bash-testers mailing list as
-         well as to chet
-
-                                  3/17
-                                  ----
-configure.in
-       - configure --without-gnu-malloc by default on *-sgi-irix6* because
-         their code needs 8-byte alignment
-
-support/bashbug.sh
-       - ``' needs to be quoted with a backslash in double-quoted strings
-
-aclocal.m4
-       - slight changes to the strcoll test, since AIX 4.2 returns -1, 0, or
-         1 from strcmp(3) but a numeric collation order difference from
-         strcoll(3)
-
-                                  3/18
-                                  ----
-command.h
-       - new redirection error code:  HEREDOC_REDIRECT
-
-execute_cmd.c
-       - return HEREDOC_REDIRECT from do_redirection_internal when
-         here_document_to_fd cannot create the temp file for a here document
-       - changed redirection_error to print a meaningful message when
-         here document temp file creation fails (HEREDOC_REDIRECT)
-
-                                  3/19
-                                  ----
-subst.c
-       - changes to match_pattern_char: return 1 if the first char of the
-         pattern is `?' only if the string is non-null; just return 1 if
-         the first char of the pattern is `[' and the string is non-empty
-         rather than try to re-implement the brace matching code from fnmatch
-
-lib/glob/fnmatch.c
-       - some changes from glibc-2.0.1 posix/fnmatch.c
-
-                                  3/21
-                                  ----
-variables.c
-       - only do the initialization of `ignoreeof' if the shell is
-         interactive
-       - reset values of $SHLVL > 1000 to 1 in adjust_shell_level, and
-         don't call itos, since we don't need its generality
-       - new function, initialize_shell_level, just calls adjust_shell_level
-         with argument of 1.  If $SHLVL is unset, adjust_shell_level will
-         deal with it correctly
-       - change initialize_shell_variables to not malloc a copy of each
-         environment variable, just keep two pointers into the env string:
-         one for the name, one for the value
-       - broke the code that computes the value of $BASH out into a separate
-         function: get_bash_name
-       - get_bash_name special-cases shell_name with a `./' prefix when
-         initializing $BASH
-       - new function: set_home_var, sets $HOME to current_user.home_dir if
-         it's not already set, calling get_current_user_info if
-         current_user.home_dir is NULL
-       - new function: set_shell_var, sets $SHELL to current_user.shell if
-         it's not already set, calling get_current_user_info if
-         current_user.shell is NULL
-       - changed places that reference information in current_user to check
-         for NULL values of the member they're interested in and call
-         get_current_user_info if necessary
-
-shell.c
-       - moved the code that sets up the information in current_user that
-         comes from the password file into a new function,
-         get_current_user_info
-       - shell_initialize calls get_current_user_info only if the shell is
-         interactive
-
-externs.h
-       - new extern declaration for get_current_user_info(), so variables.c
-         can use it
-
-                                  3/24
-                                  ----
-lib/tilde/tilde.c
-       - if SHELL is defined, user the current_user struct info to find
-         the user's home directory rather than calling getpwuid
-
-                                  3/25
-                                  ----
-nojobs.c
-       - don't try to open /dev/tty when getting or setting the tty state
-         and window size; use shell_tty instead
-       - initialize shell_tty to standard error in initialize_job_control
-       - only fetch the tty state initially if the shell is interactive
-
-general.c
-       - open /dev/tty with the O_NONBLOCK flag
-
-variables.c
-       - changed all_vars so that it sorts its output all the time, not
-         just when in POSIX mode.  This means that the output of `set'
-         and `export' will be sorted
-
-builtins/set.def
-       - in initialize_shell_options, only call parse_shellopts if we
-         inherited $SHELLOPTS from the environment
-       - make sure we call parse_shellopts from initialize_shell_options
-         with a copy of the value of SHELLOPTS, in case one of the functions
-         called while setting one of the variables modifies $SHELLOPTS
-
-lib/readline/readline.c
-       - make sure that digit arguments don't change the state of
-         rl_last_func
-
-support/printenv.c
-       - new file, printenv(1) clone, used to avoid environment variables
-         that might be set automatically when using printenv.sh
-
-lib/tilde/tilde.c
-       - if SHELL is defined, don't call getenv to get the value of $HOME,
-         call get_string_value () directly
-
-                                  3/26
-                                  ----
-lib/readline/histexpand.c
-       - abstracted the `#ifdef SHELL' stuff that checked for special cases
-         that should not be history expanded ([!...], ${!...}) into a call
-         to a function that is the value of the
-         new history_inhibit_expansion_function variable
-
-lib/readline/history.h
-       - extern declaration for history_inhibit_expansion_function
-
-bashhist.c
-       - new function, bash_history_inhibit_expansion, which checks for
-         the special cases in which history expansion should be inhibited
-       - changes to the various history initialization functions to
-         set history_inhibit_expansion_function
-
-lib/readline/doc/hstech.texinfo
-       - documented history_inhibit_expansion_function
-
-lib/readline/shell.c
-       - new file, containing versions of the functions that are provided
-         by bash when readline is linked as part of bash
-       - new function: get_env_value().  If SHELL is defined, this calls
-         get_string_value().  If SHELL is not defined, this calls getenv()
-
-lib/readline/histexpand.c
-       - moved single_quote() to shell.c
-
-lib/readline/util.c
-       - moved savestring() to shell.c
-
-lib/readline/terminal.c
-       - moved set_lines_and_columns() to shell.c
-
-lib/readline/Makefile.in, Makefile.in
-       - added shell.c and shell.o to the appropriate variables that contain
-         the files comprising the readline and history libraries
-
-lib/readline/signals.c
-       - introduced two new cpp defines:  HANDLE_JOB_SIGNALS and
-         HANDLE_SIGTERM.  When HANDLE_JOB_SIGNALS is defined, SIGTSTP,
-         SIGTTIN, and SIGTTOU are caught and handled.  When HANDLE_SIGTERM
-         is defined, SIGTERM is caught and handled.  These are both
-         defined automatically if SHELL is not defined
-
-lib/readline/{bind,histfile,nls,readline,terminal}.c
-       - call get_env_value instead of getenv().  This should remove the
-         dependency on being able to redefine getenv() in oslib.c
-
-shell.c
-       - added a missing argument of -1 to the call to list_minus_o_opts.
-         Now `bash -o' lists all options, not just random ones depending
-         on what's on the stack
-
-                                  3/28
-                                  ----
-builtins/ulimit.def
-       - change RLIM_INFINITY to the hard limit only if the hard limit is
-         greater than the current (soft) limit
-
-hashlib.c
-       - return immediately from flush_hash_table if the hash table passed
-         is NULL
-
-                                   4/1
-                                   ---
-shell.c
-       - remove call to initialize_filename_hashing -- initialize the hash
-         table the first time a hashed command has to be remembered
-
-hashcmd.c
-       - new file, with functions to perform filename hashing and lookup
-         taken from builtins/hash.def and builtins/common.c
-       - change to remember_filename -- call initialize_filename_hashing
-         if hashing_initialized is 0
-
-hashcmd.h
-       - new file, mostly from builtins/hashcom.h, with extern function
-         declarations added
-
-execute_cmd.c, builtins/{hash,type}.def
-       - include hashcmd.h for hash function and type definitions
-
-builtins/{common.{c,h},hash.def}
-       - moved hashing functions and declarations to hashcmd.c/hashcmd.h
-
-Makefile.in, builtins/Makefile.in
-       - changed source and object file definitions and dependencies because
-         of addition of hashcmd.h and hashcmd.c
-
-builtins/hash.def
-       - return immediately from print_hashed_commands if hashed_commands
-         is empty, indicating that the hash table has not been initialized
-
-                                   4/2
-                                   ---
-lib/readline/bind.c
-       - fixed translation of ESC in rl_untranslate_keyseq and
-         rl_untranslate_macro_value
-
-lib/readline/{readline,kill}.c
-       - added an argument to _rl_fix_point telling it whether or not to
-         fix up the mark also; changed calls to _rl_fix_point to add the
-         appropriate argument
-
-Makefile.in
-       - changed the substitution delimiter in the `sed' commands that
-         create bashbug from `:' to `%' to avoid conflicts with options
-         containing `:'
-
-                                   4/3
-                                   ---
-print_cmd.c
-       - made the initial value and the default growth value for the
-         printed command somewhat smaller -- we don't really need to
-         allocate 4096 bytes for the printed command
-       - added stdarg support to xprintf if PREFER_STDARG is defined
-
-stringlib.c
-       - changed strip_trailing to take the index of the last character
-         as the second argument, saving a (useless) call to strlen, since
-         the caller already knows where the end of the string is
-
-subst.c
-       - change call to strip_trailing in command_substitute to add the
-         new second argument
-
-externs.h
-       - changed extern declaration for strip_trailing
-
-                                   4/4
-                                   ---
-Makefile.in, configure.in, lib/malloc/Makefile.in
-       - changed the strategy for picking which `malloc' to include by
-         having configure define a `malloc target' and the Makefile in
-         lib/malloc implementing rules for that target
-
-                                   4/5
-                                   ---
-Makefile.in
-       - slightly changed the rules for remaking `parser-built':  it is
-         now a copy of y.tab.h, updated only when the contents of y.tab.h
-         change
-       - everything that used to depend on y.tab.h now depends on
-         parser-built
-
-                                   4/6
-                                   ---
-execute_cmd.c, print_cmd.c
-       - use #include <y.tab.h> so we pick up y.tab.h from the build
-         directory instead of the source directory if it happens to be
-         recreated in the build directory
-
-                                   4/7
-                                   ---
-bashline.c
-       - fixed another problem with `pwd`/[TAB] thinking that the `/
-         started an unclosed command substitution, generating errors
-
-                                   4/8
-                                   ---
-general.c
-       - renamed bash_tilde_expansion_failure_hook to be
-         bash_special_tilde_expansions, since that more accurately reflects
-         its function
-       - changed tilde_initialize so that there is no failure hook -- the
-         special expansions are handled first with the preexpansion hook
-
-lib/tilde/tilde.c
-       - new variable: tilde_expansion_preexpansion_hook -- if non-null, it
-         points to a function that is called before standard tilde expansion
-         is attempted
-
-lib/tilde/tilde.h
-       - extern declaration for tilde_expansion_preexpansion_hook
-
-doc/{bash.{1,html},bashref.texi}
-       - added optional open paren to description of `case' command syntax
-
-                                   4/9
-                                   ---
-variables.c
-       - on qnx, set and export a variable `NODE' which contains the QNX
-         `node id'
-
-general.c
-       - QNX system can now handle pathnames with a leading `//'
-
-configure.in
-       - added `-Dqnx' to LOCAL_CFLAGS on QNX machines
-
-lib/malloc/getpagesize.h
-       - some systems need sysconf(_SC_PAGE_SIZE) to obtain the page size;
-         added code to check for it
-
-                                  4/10
-                                  ----
-print_cmd.c
-       - include the prototype for cprintf only if PREFER_STDARG is defined,
-         otherwise just have a K&R-style forward function declaration
-
-hashlib.h
-       - reduced the default number of buckets in a hash table to 53
-
-lib/tilde/tilde.c
-       - prime the result string in tilde_expand by allocating a new string
-         that's as long as the input string (+16 if a tilde appears in
-         the string to be expanded).  This should reduce the number of
-         reallocs
-
-subst.c
-       - broke the code that reads the output of a command substitution
-         through the pipe to the subshell out into a separate function:
-         read_comsub().  This does not use stdio, but rather reads
-         directly from the pipe into a local 128-character buffer
-
-                                  4/11
-                                  ----
-execute_cmd.c
-       - some systems need both <sys/time.h> and <time.h>, so include both
-         if it's possible, otherwise include <sys/time.h> (if present)
-
-lib/readline/rl{tty,defs}.h
-       - moved includes of <sys/stream.h>, <sys/ptem.h>, etc. to rltty.h
-
-lib/readline/terminal.c
-       - include rltty.h after rldefs.h
-
-variables.c
-       - changes to make environment creation faster and use less memory
-         (fewer malloc/free calls, too):
-
-               o two new variables: export_env_index (how many environment
-                 strings are in export_env) and export_env_size (the
-                 number of slots for strings allocated in export_env)
-               o added new function add_to_export_env, since adding the
-                 exported shell variables and shell functions does not
-                 need to search the export_env for a definition to supersede
-                 (we just cleared it out!)
-               o renamed add_or_supersede to add_or_supersede_exported_var,
-                 since it always works on export_env, and changed the second
-                 argument to a flag saying whether or not to allocate a new
-                 copy of the string placed into the environment
-               o changed calls to add_or_supersede to the new
-                 add_or_supersede_exported_var with the appropriate flags
-               o don't free and reallocate export_env in maybe_make_export_env,
-                 just free the strings and start anew
-               o prime the size of export_env from the total number of shell
-                 variables and shell functions -- this will always be enough
-                 for the exported shell functions and variables, and big
-                 enough most of the time for the entire environment
-
-builtins/cd.def
-       - efficiency hack in bindpwd():  if PWD is exported, we will have to
-         rebuild the entire exported environment after every time we change
-         directories.  What we do is see if array_needs_making changes value
-         from 0 to 1 after bind_variable ("PWD", dirname) is called, and
-         that PWD is exported.  If that happens, we just replace the value
-         of PWD in the exported environment with a call to
-         add_or_supersede_exported_var
-
-bashline.c, parse.y
-       - check calls to pre_process_line to make a fresh copy of the line
-         if pre_process_line returns what it was passed, in preparation
-         for future changes
-
-bashhist.c
-       - pre_process_line now returns its argument if it did not make
-         any changes to it
-
-alias.c
-       - free the bucket entry holding the alias to be removed in
-         remove_alias, as well as the data
-
-                                  4/14
-                                  ----
-unwind_prot.c
-       - if an unwind-protect frame is being discarded, and its cleanup
-         function is `restore_variable', the `arg' member points to a
-         SAVED_VAR that must be freed.  This change is made in
-         remove_unwind_protect_internal and unwind_frame_discard_internal
-
-parse.y
-       - need to free memory allocated by parse_arith_cmd if it is an
-         arithmetic command, after using it to make a new word
-
-subst.c
-       - fixed some memory leaks caused by not freeing the argument to
-         make_bare_word, which duplicates its string argument
-       - need to dispose list generated by list_rest_of_args in
-         paramter_list_remove_pattern
-       - make sure the return value from getpattern() is freed
-       - make sure array_value_internal always returns newly-allocated
-         memory
-       - get_var_and_type returns a new type: VT_ARRAYMEMBER if the
-         string passed is of the form var[index]
-       - make sure parameter_brace_substring frees the memory allocated
-         by get_var_and_type if verify_substring_values returns 0
-
-hashlib.c, hashlib.h
-       - new function, dispose_hash_table (table), which frees the
-         table's bucket array and the table itself
-
-alias.c
-       - call dispose_hash_table from delete_all_aliases instead of just
-         freeing the table
-
-pathexp.c
-       - make sure to free `newnames' (but *not* its contents) before
-         returning from ignore_globbed_names
-
-builtins/exec.def
-       - make sure the argv created to pass to shell_execve is freed if
-         the execve fails and we're not exiting on failed execs
-
-expr.c
-       - broke evalexp into two functions: evalexp, which sets up the
-         jmp_buf that errors jump to, and subexpr, which does the
-         evaluation and pushing and popping of contexts
-       - readtok now calls subexpr to evaluate subexpressions in
-         parentheses
-       - evalexp now takes an additional paramter, a pointer to an int.
-         If the expression contains errors, the location to which this
-         points gets 0, otherwise it gets 1 to show that the value
-         returned may be used.  This plugs up memory leaks that were
-         the result of evalexp() longjmping back to top_level
-       - fixed a memory leak: expr_stack[0] was not being freed
-
-externs.h
-       - changed extern declaration for evalexp
-
-variables.c, subst.c, builtins/let.def
-       - changed calls to evalexp appropriately.  They either cause a
-         longjmp (top_level, DISCARD) (which is what the old stuff in
-         expr.c did) or are handled by returning an appropriate error
-         value (e.g., &expand_word_error in subst.c)
-
-                                  4/16
-                                  ----
-shell.c
-       - make sure to free dollar_vars[0] before assigning it the first
-         argument following `-c command'
-
-variables.c
-       - if unsetting a local variable with a previous context, make sure      
-         to free the hash table element used to store the local variable
-
-lib/readline/terminal.c
-       - rearrange the includes so <sys/ioctl.h> is included before rltty.h,
-         as it is in rltty.c
-
-                                  4/17
-                                  ----
-flags.c
-       - new function: reset_shell_flags, which resets all of the flags
-         back to their initial values
-
-flags.h
-       - extern declaration for reset_shell_flags
-
-builtins/set.def
-       - new function: reset_shell_options, which resets all of the -o
-         options that are not also shell flags back to their initial values
-
-builtins/shopt.def
-       - new function: reset_shopt_options, which resets all of the shopt
-         options that are not also shell flags or -o options back to their
-         initial values
-
-builtins/common.h
-       - extern declarations for reset_shell_options and reset_shopt_options
-
-execute_cmd.c
-       - broke the code that reinitializes things when an executable script
-         without a leading `#!' is found out into a new function:
-         initialize_subshell
-       - initialize_subshell now calls the reset_* functions that reset the
-         shell flags and options
-
-general.c, general.h
-       - move_to_high_fd now takes a third argument: the highest fd at which
-         to start looking.  If that's less than 20, the maximum number of
-         open files as returned by getdtablesize() is used (which is what
-         it did before this)
-
-jobs.c, shell.c, subst.c
-       - changed calls to move_to_high_fd appropriately
-
-[bash-2.01-beta1 frozen]
-
-                                  4/18
-                                  ----
-general.c
-       - itos now uses a local char buffer to do its conversion, but still
-         returns newly-allocated memory
-
-                                  4/21
-                                  ----
-variables.c
-       - be a little more careful when checking for backwards-compatibility
-         with exported function definitions
-
-                                  4/22
-                                  ----
-builtins/ulimit.def
-       - translate RLIM_INFINITY to limit.rlim_max if the current limit is
-         less than or equal to the hard limit, not just strictly less than
-         (the change of 3/28 was too drastic)
-
-                                  4/23
-                                  ----
-oslib.c
-       - fixed definition of to_lower on machines without strcasecmp
-
-trap.c
-       - don't free the trap command in change_signal if the SIG_INPROGRESS
-         is set in the signal's flags -- it will cause memory to be freed
-         twice if a trap command resets the signal handler more than once,
-         and _run_trap_internal keeps a pointer to the trap command so it
-         can free it, so there will be no leaks
-
-                                  4/24
-                                  ----
-aclocal.m4,configure.in
-       - removed BASH_CC_WORKS, since AC_PROG_CC now has the functionality
-
-shell.c, externs.h
-       - get_current_user_info is now a void function
-
-bashline.c
-       - alias_expand_line_internal was removed
-       - new function, alias_expand_line, performs alias expansion on
-         rl_line_buffer and either replaces rl_line_buffer or signals
-         an error
-       - new bindable commands: alias-expand-line and
-         history-and-alias-expand-line, available if ALIAS is defined
-
-                                  4/25
-                                  ----
-Makefile.in, lib/malloc/malloc.c
-       - changed the define that turns on malloc range checking from
-         `rcheck' to `RCHECK'
-
-lib/readline/isearch.c
-       - fixed a couple of places where rl_search_history would try to
-         free a NULL pointer
-
-                                  4/29
-                                  ----
-unwind_prot.c
-       - fixed a problem with saving a variable that is a null pointer
-         in unwind_protect_var.  It happens only on machines where the
-         size of a pointer is not the size of an int.  The old FASTCOPY
-         code would copy the eight bytes at memory location zero, which
-         did not necessarily make a null pointer
-
-                                  4/30
-                                  ----
-shell.c
-       - run_startup_files should turn off job control, since the startup
-         files should be run without job control enabled -- this makes
-         SIGINT interrupt startup file execution again
-       - if we get a SIGINT or other longjmp to top_level while executing
-         the startup files, re-enable job control for interactive shells
-         before setting locally_skip_execution
-
-                                   5/2
-                                   ---
-lib/readline/nls.c
-       - if we have setlocale(3), don't bother with checking the
-         environment variables for valid values; just use setlocale()
-         to set the locale categories from the environment variables
-         directly and go into eight-bit mode if the current locale is
-         not C or POSIX
-
-                                   5/5
-                                   ---
-sig.c
-       - make sure that the handler for SIGPROF is not changed if it has
-         been set to something other than SIG_IGN or SIG_DFL -- this makes
-         profiling work after the terminating signals have been initialized
-
-bashline.c
-       - if a filename containing `!' is completed, and the user has started
-         the string with a `"', change the completion style to backslash-      
-         quoting, since there's no way to use `!' with double quotes (this
-         requires more changes to readline to really work right)
-
-                                   5/6
-                                   ---
-lib/readline/complete.c
-       - changes to make_quoted_replacement, insert_all_matches, and
-         insert_match and their callers to allow the application-specific
-         filename quoting function to change the quote character (e.g., for
-         bash to change a filename containing a `!' and started with a
-         double quote by the user into a filename with the `!' quoted by
-         a backslas and no double quote)
-
-                                   5/8
-                                   ---
-jobs.c
-       - new function: nohup_all_jobs(), calls nohup_job for each entry in
-         the jobs list
-       - delete_all_jobs is now global
-
-jobs.h
-       - new extern declarations for delete_all_jobs() and nohup_all_jobs()
-
-builtins/jobs.def
-       - `disown' without any jobspec arguments means the current job.  Fix
-         a core dump printing the error message when there is no current job
-
-                                  5/12
-                                  ----
-subst.c
-       - process an expansion like $((foo); bar) as a command substitution,
-         not as an arithmetic expansion.  An arithmetic expansion must have
-         a closing `))'
-
-                                  5/14
-                                  ----
-builtins/evalstring.c
-       - the third argument to parse_and_execute() is now a flags word.
-         The caller can control the value of `interactive' and whether
-         or not history is disabled while parse_and_execute() runs
-
-builtins/common.h
-       - new #defines for the flag values for parse_and_execute()
-
-{bashline,jobs,shell,subst,trap,variables}.c, parse.y, builtins/evalfile.c,
-builtins/{eval,fc}.def
-       - changed calls to parse_and_execute appropriately
-
-builtins/evalfile.c
-       - if _evalfile() is passed FEVAL_HISTORY as part of the flags arg,
-         don't pass SEVAL_NOHIST to parse_and_execute
-       - new function: fc_execute_file, which sets FEVAL_HISTORY in the
-         flags argument to _evalfile()
-
-bashline.c
-       - call bash_add_history instead of add_history from
-         vi_edit_and_execute_command so the bash state variables get
-         updated properly.  This keeps the `v' command from operating
-         on an empty command when the history list is stifled
-
-bashhist.c
-       - bash_add_history is now global
-
-bashhist.h
-       - extern declaration for bash_add_history
-
-builtins/fc.def
-       - call fc_execute_file instead of maybe_execute_file in the
-         edit-and-re-execute case (fc -e ...)
-       - don't manually insert the commands from the file created by `fc -e'
-         into the history list, just set remember_on_history and let
-         fc_execute_file take care of telling parse_and_execute to do the
-         right thing.  This makes compound commands and the `cmdhist'
-         and `lithist' settings work better.  This supersedes the fix of
-         1/27.  This was reported again by rchen@fractal.eng.yale.edu.
-
-parse.y
-       - the body of a `for' command (the commands between do...done or
-         {...}) should be a `compound_list' instead of a `list'.  Problem
-         reported by cpg@research.bell-labs.com
-
-                                  5/19
-                                  ----
-lib/readline/complete.c
-       - in filename_completion_function, if we find that the directory
-         pointer (return value from opendir(3)), is not null when state
-         is 0 (indicating that this is the first time the completion
-         function has been called for the current completion), call
-         closedir on it, assuming that it was left open by a previous
-         (interrupted) completion
-
-[bash-2.01-beta2 frozen]
-
-                                  5/27
-                                  ----
-Makefile.in
-       - make sure that `make distclean' (and other clean targets) remove
-         the `printenv' executable
-
-tests/execscript, tests/redir.tests
-       - make sure to set LANG=C and LC_ALL=C so the messages show up in
-         English
-
-tests/run-func
-       - add a warning about exported functions in the environment
-
-                                  5/29
-                                  ----
-builtins/hash.def
-       - if one of the arguments passed to `hash' is an absolute pathname,
-         just continue the loop, don't do list=list->next first.  This
-         fixes the `hash a/b' -> core dump bug
-
-                                  5/30
-                                  ----
-general.c
-       - change canonicalize_pathname to leave a leading `/' alone, as
-         POSIX requires
-
-                                   6/2
-                                   ---
-support/xenix-link.sh
-       - shell script for linking bash under Xenix
-
-                                   6/3
-                                   ---
-bashline.c
-       - fixed a memory leak in command_word_completion_function, courtesy
-         of a.pfaller@pop.gun.de
-
-hashcmd.c
-       - fixed find_hashed_filename to always return a newly-allocated
-         string
-
-execute_cmd.c
-       - since find_hashed_filename returns newly-allocated memory, don't
-         call savestring() on it, and free it if the data is stale (in
-         search_for_command()).  Another memory leak fixed courtesy of
-         a.pfaller@pop.gun.de
-
-builtins/type.def
-       - free the value returned by find_hashed_filename
-
-[bash-2.01-release frozen]
-
-                                   6/6
-                                   ---
-configure.in
-       - force shlicc2 and libc malloc for BSD/OS 3.0
-
-                                   6/9
-                                   ---
-doc/Makefile.in
-       - don't create ${man3dir}, since we're not installing the readline
-         manual page
-
-lib/readline/readline.h
-       - rl_dispatching should be declared `extern'
-         [in bash-2.01.1]
-
-                                  6/10
-                                  ----
-lib/malloc/Makefile.in
-       - make sure ${ALLOCA_SOURCE} is preceded by ${srcdir} so that things
-         work when building in a directory other than the source directory
-         [in bash-2.01.1]
-
-                                  6/30
-                                  ----
-lib/readline/examples/rltest.c
-       - don't free the value returned by history_list()
-
-lib/readline/histfile.c
-       - open the history file for writing with mode 0600 for better
-         security
-         [in bash-2.01.1]
-
-execute_cmd.c
-       - select_query now uses legal_number to decide whether the user's
-         selection is a valid number, and just executes the loop again if
-         invalid input is entered
-         [in bash-2.01.1]
-
-                                   7/1
-                                   ---
-builtins/evalstring.c
-       - fix to parse_and_execute so `bash -c 'time [-p] zzz'' works right
-         [in bash-2.01.1]
-
-execute_cmd.c
-       - fix to execute_command_internal so that `bash -c time [-p] (zzz)''
-         works right
-         [in bash-2.01.1]
-       - print_formatted_time should pass a long as the fourth parameter
-         to mkfmt 
-         [in bash-2.01.1]
-
-externs.h, shell.c
-       - `exit_shell' is now a void function
-
-hashlib.c
-       - print_table_stats is now a void function
-
-mailcheck.c
-       - made add_mail_file check for the filename in the mail file list
-         using the expanded filename, since that is what it puts into
-         the list
-         [in bash-2.01.1]
-
-variables.c
-       - for the time being, PWD will be auto-exported, since some systems
-         seem to expect it
-
-doc/bashref.texi, lib/readline/doc/{hist,rlman}.texinfo
-       - added necessary `dircategory' and `direntry' commands to make
-         `install-info' work correctly
-
-Makefile.in
-       - move $(LDFLAGS) after $(BUILTINS_LDFLAGS) and $(LIBRARY_LDFLAGS) on
-         the line that links bash
-
-doc/texinfo.tex
-       - upgraded to version 2.185 from the texinfo-3.9 distribution
-
-lib/tilde/tilde.c
-       - fixed a bug in tilde_expand so that enough space is allocated for
-         the string and terminating null byte if a `~' does not appear.
-         This was masked before by the bash malloc()
-         [in bash-2.01.1]
-
-                                   7/3
-                                   ---
-aclocal.m4
-       - new test, BASH_TYPE_INT32_T, to check which builtin C type is
-         32 bits wide
-       - new test, BASH_TYPE_PTRDIFF_T, to check which builtin C type is
-         appropriate for pointer arithmetic
-
-configure.in
-       - check sizes of int and long, and for the existence of an int32_t
-         basic system type.  Call BASH_TYPE_INT32_T if int32_t is not
-         defined anywhere in the system header files
-       - check size of (char *), and for the existence of a ptrdiff_t
-         basic system type.  Call BASH_TYPE_PTRDIFF_T if ptrdiff_t is not
-         defined anywhere in the system header files
-       - added a check for <stddef.h>
-
-config.h.in
-       - add lines for SIZEOF_INT, SIZEOF_LONG, SIZEOF_CHAR_P, int32_t,
-         u_int32_t, and ptrdiff_t
-       - added line for HAVE_STDDEF_H
-
-lib/malloc/malloc.c
-       - new version, with many changes and much better memory usage; old
-         (bash-2.01) version is lib/malloc/omalloc.c
-
-lib/malloc/gmalloc.c
-       - new version, with a number of changes and range checking included
-         by default; old (bash-2.01) version is lib/malloc/ogmalloc.c
-
-execute_cmd.c
-       - applied patch from 5/27 to make execute_simple_command fork early
-         if it's part of a pipeline.  This keeps assignment statements or
-         other commands that don't require a builtin, function, or disk
-         command to be executed from modifying the shell's environment
-
-tests/exec?.sub
-       - renamed from tests/execscript.sub? because those filenames are
-         too long for System V 14-char filename systems
-
-tests/source?.sub
-       - renamed from tests/source.sub? because those filenames are bad
-         for DOS/Windows
-
-tests/getopts?.sub
-       - renamed from tests/getopts.sub? because those filenames are bad
-         for DOS/Windows
-
-tests/histexp.{tests,right}
-       - renamed from histexpand.{tests,right} because those filenames are
-         too long for System V 14-char filename systems
-
-tests/trap1.sub
-       - renamed from trap.sub1 because that filename was bad for DOS/Windows
-
-tests/ifs-[123].right
-       - renamed from ifs.[123].right because those filenames were bad for
-         DOS/Windows
-
-tests/ifs-[123].test
-       - renamed from ifs-test-[123].sh because those filenames were bad
-         for DOS/Windows
-
-examples/startup-files/Bashrc.bfox
-       - renamed from examples/startup-files/Bashrc because that filename
-         conflicts with examples/startup-files/bashrc on case-insensitive
-         file systems
-
-tests/exec.right
-       - renamed from execscript.right because that filename is too long
-         for System V 14-char filename systems
-
-tests/run-set-e
-       - renamed from run-set-e-test
-
-tests/misc/perftest
-       - renamed from tests/misc/haertel.perftest because that filename is
-         too long for System V 14-char filename systems
-
-lib/glob/fnmatch.c
-       - new version with full POSIX.2 BRE matching (character classes,
-         collating symbols, equivalence classes), full support for
-         strcoll(3), and case-insensitive pattern matching
-
-lib/glob/fnmatch.h
-       - new version, with necessary symbols for the new fnmatch.c
-
-tests/posixpat.{tests,right}, tests/run-posixpat
-       - test suite for the POSIX.2 BRE pattern matching code
-
-variables.c
-       - make sure that array assignment using the compound syntax empties
-         the array before doing the assignment
-         [in bash-2.01.1]
-
-trap.c
-       - new function, trap_to_sighandler(sig), which returns the correct
-         trap handler for SIG depending on the information in sigmodes[sig]
-         [in bash-2.01.1]
-
-sig.h
-       - extern declarations for trap_handler and trap_to_sighandler
-         [in bash-2.01.1]
-
-jobs.c
-       - if we get an interrupt while waiting for a command to complete,
-         and there was a trap set on SIGINT that resets the handler to
-         SIG_DFL, the value that waitchld uses for old_trap_handler will
-         be wrong (it will be trap_handler, but trap_handler no longer
-         knows anything about SIGINT).  If old_signal_handler is trap_handler,
-         but signal_is_trapped(SIGINT) returns 0, we need to call
-         trap_to_sighandler to decide what to do
-         [in bash-2.01.1]
-
-                                   7/7
-                                   ---
-locale.c
-       - fix to set_locale_var to handle an assignment to LC_ALL (e.g., as
-         the result of `unset LANG') when default_locale is null
-         [in bash-2.01.1]
-
-                                   7/8
-                                   ---
-builtins/umask.def, doc/{bash.{1,html},bashref.texi}
-       - added `-p' option for umask to print output in a reusable form
-
-                                   7/9
-                                   ---
-doc/{bash.{1,html},bashref.texi}
-       - removed descriptions of `-type', `-path', and `-all' options to
-         the `type' builtin in preparation for removing them in the next
-         release
-
-builtins/type.def
-       - removed mention of `-type', `-path', and `-all' options from the
-         long help description
-
-error.c, error.h
-       - new function: internal_warning, for warning messages
-
-variables.c
-       - changed a call to internal_error to use internal_warning
-       - modified change of 7/3 so that arrays are not emptied until
-         just before the shell is about to assign the new values, so
-         the old value can be used to generate the rhs of the assignment,
-         if necessary.  This is how `normal' shell variables work
-         [in bash-2.01.1]
-
-jobs.c, jobs.h
-       - delete_job now takes a second int argument and prints a warning
-         message when deleting a stopped job if the second argument is
-         non-zero
-
-jobs.c, builtins/jobs.def
-       - changed all calls to delete_job to provide a proper second arg
-
-lib/readline/bind.c
-       - broke rl_read_init_file into an `upper' and `lower' half in
-         preparation for adding file inclusion capability to inputrc
-         parsing
-       - handle_parser_directive now displays an error message if an
-         unknown directive is encountered
-       - parser_endif now prints an error message if an $endif without
-         a matching $if is found
-       - added `$include' parser directive to read bindings and commands
-         from another file at that point
-
-lib/readline/doc/rluser.texinfo, doc/{bash.{1,html},readline.3}
-       - documented new readline `$include' parser directive
-
-shell.c, parse.y
-       - added a new invocation option, --dump-po-strings, and code to
-         make it dump translatable strings ($"...") in GNU gettext
-         `po' format
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new `--dump-po-strings' invocation option
-
-lib/readline/{{kill,funmap}.c,readline.h}
-       - added `rl_paste_from_clipboard()', bound to `paste-from-clipboard'
-         for CYGWIN32 users
-
-lib/readline/kill.c
-       - incorporated bfox's patches for `iterative' yank-last-arg handling.
-         This means that one can keep pressing M-. and move backwards in
-         the history, yanking the last argument of successive history lines
-
-lib/readline/rlwinsize.h
-       - new file, encapsulates various locations of the definition for
-         `struct winsize'
-
-aclocal.m4
-       - augmented BASH_STRUCT_WINSIZE to look in termios.h as well as
-         sys/ioctl.h for definition of `struct winsize'
-
-lib/readline/rltty.h
-       - include "rlwinsize.h" after including tty-driver-specific header
-         file
-
-                                  7/10
-                                  ----
-support/config.guess
-       - add better support for SunOS on M68K (old Sun3 machines)
-
-parse.y
-       - check for compound array assignment in read_token_word only if
-         there are characters before the `=' (which would make it a legal
-         assignment statement).  This fixes the problem with defining a
-         function named `=' with `=() { echo foo; }'
-         [in bash-2.01.1]
-
-jobs.c, jobs.h
-       - nohup_all_jobs and delete_all_jobs now take a parameter which
-         says whether or not to restrict their operation to only running
-         jobs
-
-jobs.c
-       - changed all calls to delete_all_jobs
-
-builtins/jobs.def
-       - added `-a' (all jobs) and `-r' (running jobs only) options to
-         `disown'
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new `-a' and `-r' options to `disown'
-
-findcmd.c, findcmd.h
-       - new files with command searching code from execute_cmd.c and
-         function declarations from execute_cmd.h
-
-Makefile.in, builtins/Makefile.in
-       - updated dependencies to account for new findcmd.[ch]
-       - updated dependencies to account for new redir.[ch]
-
-redir.c, redir.h
-       - new files with code that sets up lists and performs redirections
-         from execute_cmd.c and execute_cmd.h
-
-execute_cmd.c
-       - include new findcmd.h, redir.h
-
-                                  7/11
-                                  ----
-Makefile.in, configure.in
-       - PROFILE_FLAGS is now substituted into the Makefile by configure
-
-                                  7/14
-                                  ----
-print_cmd.c
-       - make sure single_quote is called from xtrace_print_word_list
-         to correctly quote each word of trace output, especially those
-         with embedded quotes
-         [in bash-2.01.1]
-
-aclocal.m4
-       - extended BASH_CHECK_GETPW_FUNCS so that it checks that getpwuid
-         and getpwnam can also be declared, as well as getpwent
-         [in bash-2.01.1]
-       - in BASH_FUNC_PRINTF, cast printf to type `_bashfunc' before trying
-         to assign it to `pf' to avoid any prototype problems in the
-         declaration
-         [in bash-2.01.1]
-
-trap.c
-       - include <unistd.h> before any of the bash-specific header files,
-         but after config.h
-         [in bash-2.01.1]
-
-test.c
-       - include <errno.h> and declare `extern int errno' before including
-         any of the bash-specific include files, but after <unistd.h>
-         [in bash-2.01.1]
-
-builtins/Makefile.in
-       - PROFILE_FLAGS is now substituted into the Makefile by configure
-
-configure.in
-       - new options, --enable-profiling and --enable-static-link, to turn
-         on profiling with gprof and link bash statically (if using gcc)
-         for use as a root shell.  The former implies the latter.  If
-         we're linking statically, dynamic loading of new builtins is not
-         available
-
-doc/bashref.texi
-       - documented new --enable-profiling and --enable-static-link
-         options in installation section; regenerated INSTALL
-
-lib/glob/glob.[ch]
-       - new global variable, glob_ignore_case, turns on case-insensitive
-         filename matching in fnmatch() using the FNM_CASEFOLD flag
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new shopt `nocaseglob' option
-
-                                  7/15
-                                  ----
-bashline.c
-       - when glob_complete_word is called with state == 0, make sure we
-         set rl_filename_completion_desired so that proper quoting of
-         the resultant filenames is performed
-         [in bash-2.01.1]
-
-                                  7/16
-                                  ----
-externs.h, oslib.c
-       - strcasecmp and strncasecmp replacements should have `const char *'
-         as the first two arguments, to match OS definitions
-         [in bash-2.01.1]
-
-                                  7/17
-                                  ----
-(many files)
-       - changes for minix-2.0, mostly just adding #ifndef _MINIX around
-         include files that minix doesn't provide, like <sys/param.h> and
-         <sys/file.h>
-
-lib/readline/terminal.c
-       - removed `outchar' function; use _rl_output_character_function in
-         its place
-
-support/config.guess
-       - changes to recognize HP_ARCH of `hppa2.0'
-
-test.c
-       - new `-N' option: `test -N file' returns true if FILE exists and
-         has been modified since it was last accessed
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new `test -N' option
-
-                                  7/22
-                                  ----
-aclocal.m4
-       - prefer /var/spool/mail to /usr/spool/mail in BASH_DEFAULT_MAIL_DIR
-         [in bash-2.01.1]
-
-lib/readline/{complete,bind}.c
-       - new readline variable, print-completions-horizontally, which causes
-         matches to be printed across the screen (like `ls -x') rather than
-         up-and-down (like `ls')
-       - new readline variable, completion-ignore-case, which causes filename
-         completion and matching to be performed case-insensitively
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new print-completions-horizontally variable
-       - documented new completion-ignore-case variable
-
-_distribution, Makefile.in
-       - bumped the version number up to 2.02-alpha1
-
-bracecomp.c
-       - fixes so that the braces are not quoted by the filename quoting
-         function when complete-into-braces is executed with M-{.  The
-         brace completion functions do filename quoting themselves
-         [in bash-2.01.1]
-
-pathexp.c
-       - changed quote_string_for_globbing so that it takes a flags word
-         as its second argument
-
-pathexp.h
-       - defines for flags passed to quote_string_for_globbing
-
-subst.c,execute_cmd.c
-       - changed calls to quote_string_for_globbing to pass the correct
-         flag arguments
-
-expr.c
-       - added a `**' binary operator to do exponentiation (2**16 == 65536).
-         precedence is lower than arithmetic operators, higher than unary
-         operators (2**16-1 == 65535)
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new `**' arithmetic binary operator
-
-                                  7/24
-                                  ----
-shell.c
-       - added new (currently undocumented) `--wordexp' option to do the
-         job required by POSIX.2 wordexp().  If -n is supplied along with
-         --wordexp, command substitution is disallowed and the shell
-         exits with a status of 125 if one is attempted.  If there is an
-         expansion error, the shell exits with a status of 127.  If there
-         is a shell parsing error, the shell exits with a status of 126.
-         Otherwise, the exit status is 0.  The current output is
-
-               number of words\n
-               number of bytes\n
-               expanded words, one per line, separated by newlines
-
-         This will have to be changed when an interface to glibc is coded
-
-                                  7/28
-                                  ----
-hashcmd.h
-       - reduced the default size of the filename hash table from 631
-         to 107
-
-sig.c
-       - don't call initialize_siglist if HAVE_UNDER_SYS_SIGLIST is defined
-         [in bash-2.01.1]
-
-siglist.c
-       - don't compile this file if HAVE_UNDER_SYS_SIGLIST is defined
-         [in bash-2.01.1]
-
-variables.c
-       - fix to make $RANDOM work better in subshells
-         [in bash-2.01.1]
-
-aclocal.m4
-       - new macro, BASH_DECL_UNDER_SYS_SIGLIST, looks for _sys_siglist in
-         <signal.h> and <unistd.h>, defines UNDER_SYS_SIGLIST_DECLARED if
-         found
-         [in bash-2.01.1]
-       - change BASH_UNDER_SYS_SIGLIST to require BASH_DECL_UNDER_SYS_SIGLIST,
-         like BASH_SYS_SIGLIST requires AC_DECL_SYS_SIGLIST
-         [in bash-2.01.1]
-
-config.h.in
-       - add a line for UNDER_SYS_SIGLIST_DECLARED
-         [in bash-2.01.1]
-
-configure.in
-       - make sure that SVR4_2 is defined for machines that have $host_os
-         sysv4.2* (e.g., sysv4.2MP) as well as $host == sysv4.2
-         [in bash-2.01.1]
-
-                                  7/29
-                                  ----
-command.h
-       - new command type, ARITH_COM, used to create and execute a ((...))
-         command without translating it into let "..."
-
-parse.y
-       - changes to the grammar and lexer so that ((...)) is parsed as a
-         command of type ARITH_CMD.  An ARITH_CMD is a WORD_LIST, for
-         future expansion, even though only the first word is used
-
-make_cmd.c, make_cmd.h
-       - definition and declaration of a function to build an arithmetic
-         command
-
-dispose_cmd.c
-       - added code to dispose of arithmetic commands
-
-print_cmd.c
-       - added code to print arithmetic commands, both `regularly' and
-         when they're being traced with `set -x'
-
-externs.h
-       - extern declaration for xtrace_print_arith_cmd
-
-copy_cmd.c
-       - added code to copy arithmetic commands
-
-execute_cmd.c
-       - added code to directly execute arithmetic commands -- they are
-         a shell_control_structure, so just about everything like
-         redirections and piping is taken care of by the boilerplate code.
-         All that's needed is to expand the expression (which is within
-         double quotes -- added by parse.y:parse_arith_cmd()), print it
-         if tracing is enabled, call the expression evaluator, and return
-         an appropriate result
-
-                                  7/30
-                                  ----
-input.c
-       - new function, set_buffered_stream(fd, bp), sets the buffered stream
-         associated with FD to BP and returns the old buffered stream
-
-input.h
-       - extern declaration for set_buffered_stream
-
-parse.y
-       - call set_buffered_stream rather than manipulating the BUFFERS array
-         directly
-
-shell.c
-       - unset_bash_input now takes an argument, CHECK_ZERO.  This tells it
-         whether to check whether default_buffered_input is >= 0 or just > 0
-
-externs.h
-       - changed extern declaration for unset_bash_input
-
-execute_cmd.c, jobs.c, nojobs.c
-       - changed calls to unset_bash_input to add appropriate argument
-
-input.h
-       - #undef B_* before defining them as flag values for b_flags.  Some
-         systems, like SVR4, have a B_ERROR define in a file included by
-         jobs.c and nojobs.c, and it causes a warning
-
-                                  7/31
-                                  ----
-fnmatch.c
-       - rewrote most of fnmatch(), so that it now implements ksh-88 style
-         pattern matching (`[@+*?!](patlist)') if the FNM_EXTMATCH flag
-         is set
-
-fnmatch.h
-       - added a define for FNM_EXTMATCH
-
-                                   8/4
-                                   ---
-lib/readline/display.c
-       - fixed _rl_redisplay_after_sigwinch () so that it really redisplays
-         only the portion after the final newline of a multi-line prompt
-         [in bash-2.01.1]
-
-bashline.c
-       - attempt_shell_completion no longer returns matches if a glob pattern
-         matches more than one filename -- it caused too many problems
-         [in bash-2.01.1]
-
-                                   8/5
-                                   ---
-lib/glob/glob.c
-       - updated glob_pattern_p so that the extended matching operators
-         are recognized
-
-pathexp.c
-       - udpated unquoted_glob_pattern_p so that the extended matching
-         operators are recognized
-       - udpated quote_globbing_chars so that the extended matching
-         operators are recognized and quoted appropriately
-
-subst.c
-       - updated match_pattern_char so that the extended matching operators
-         are recognized
-
-parse.y
-       - updated read_token_word so that it parses an extended matching
-         pattern as a single word
-
-jobs.c
-       - if a job is suspended with SIGTSTP, and the user has set
-         checkwinsize with `shopt', update the window size
-         [in bash-2.01.1]
-
-pathexp.c, pathexp.h
-       - new global variable, extended_glob, controls whether the extended
-         pattern matching features are enabled
-
-pathexp.h
-       - new define, FNMATCH_EXTFLAG, to be OR'd with other values for
-         flags argument to fnmatch to enable the extended pattern matching
-         features if extended_glob is set
-
-{pathexp,execute_cmd,bashhist,subst,test}.c, builtins/help.def
-       - changed calls to fnmatch to add FNMATCH_EXTFLAG to the flags arg if
-         extended_glob is non-zero
-
-lib/glob/glob.c
-       - changed flags arg passed to fnmatch to include FNM_EXTMATCH if
-         extended_glob is non-zero (#ifdef SHELL)
-
-                                   8/6
-                                   ---
-builtins/shopt.def
-       - added a new `extglob' shell option, controls the value of
-         extended_glob
-
-                                   8/7
-                                   ---
-doc/{bash.{1,html},bashref.texi}
-       - documented new extended pattern matching operators and the `extglob'
-         shell option
-
-tests/{extglob.{tests,right},run-extglob}
-       - test suite for the new extended globbing features
-
-                                   8/8
-                                   ---
-parse.y, pathexp.h, lib/glob/fnmatch.c
-       - made the extended globbing code #ifdef EXTENDED_GLOB
-
-config.h.in
-       - added a line for EXTENDED_GLOB, controlled by configure
-
-configure.in
-       - new option, --enable-extended-glob, controls defining of
-         EXTENDED_GLOB (on by default)
-
-doc/bashref.texi
-       - documented new `configure' `--enable-extended-glob' option
-
-                                  8/11
-                                  ----
-builtins/printf.def
-       - new `printf' builtin, implemented according to POSIX.2 spec
-         for printf(1)
-
-Makefile.in,builtins/Makefile.in
-       - added necessary stuff for new printf builtin
-
-                                  8/12
-                                  ----
-lib/readline/isearch.c
-       - change to make ^G interrupt the incremental search correctly
-         [in bash-2.01.1]
-
-configure.in, config.h.in
-       - configure now checks for the availability of strtoul(3)
-
-builtins/printf.def
-       - use strtoul for the `%o', `%u', `%x', and `%X' formats if it
-         is available
-
-                                  8/13
-                                  ----
-tests/{printf.{right,tests},run-printf}
-       - extensive test suite for the new `printf' builtin
-
-builtins/Makefile.in
-       - change so that `builtext.h' is not recreated every time the source
-         file for a builtin is changed if the contents are the same.  This
-         keeps many files from being recompiled
-
-                                  8/14
-                                  ----
-subst.c
-       - changed verify_substring_values so that it returns -1 for substring
-         range errors, 0 for expression errors, and 1 for success
-         [in bash-2.01.1]
-       - changed parameter_brace_substring to return an error if
-         verify_substring_values returns 0, and a null string if it returns
-         -1.  This matches the ksh93 behavior
-         [in bash-2.01.1]
-
-trap.c
-       - changed decode_signal so that it makes sure the first three
-         characters of a signal name are `SIG' before allowing the `SIG'
-         prefix to be omitted.  This is so a signal spec of `T' does not
-         match `EXIT', for instance
-         [in bash-2.01.1]
-
-builtins/trap.def
-       - make sure that showtrap() displays traps for signals with unknown
-         names using the signal number
-         [in bash-2.01.1]
-shell.c
-       - make sure that `bash -r' doesn't turn on the restricted mode until
-         after the startup files are executed
-         [in bash-2.01.1]
-
-doc/{bash.{1,html},bashref.texi}
-       - documented printf builtin
-
-                                  8/15
-                                  ----
-general.c
-       - added \xNNN escape to ansicstr -- NNN are up to three hex digits.
-         This affects $'...', `echo -e', and printf
-
-builtins/printf.def
-       - added \xNNN escape to bexpand -- NNN are up to three hex digits.
-         This affects printf's `%b' conversion specifier
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new \xNNN escape sequence for echo, $'...', and printf
-
-builtins/setattr.def
-       - make sure that a variable found in the temp environment does not
-         cause a null string to be assigned by bind_variable (e.g.,
-               foo="" export foo
-         )
-         [in bash-2.01.1]
-
-                                  8/18
-                                  ----
-subst.c
-       - fixed a bug that sometimes caused bad memory (pointer into an
-         allocated block) to be passed to free when doing arithmetic
-         substitution.  Bug report from stevet@myofb.org
-         [in bash-2.01.1]
-
-                                  8/19
-                                  ----
-subst.c
-       - considerable changes:  moved the code that expands a single
-         $... parameter expansion into a separate function: param_expand()
-         This function returns a string, which may contain characters
-         quoted with CTLESC or CTLNUL without doing word splitting
-       - changed expand_word_internal to not remove the expansion of "$*"
-         if the number of positional parameters is > 0
-       - changed the '"' case of expand_word_internal to remove quoted
-         nulls from the resultant word if the expansion was not "$@", and
-         the word is not a quoted null string ([] == CTLNUL, [1] == '\0')
-
-subst.c, variables.c
-       - moved the code that handles special variables from subst.c to
-         variables.c
-
-                                  8/20
-                                  ----
-subst.c
-       - rearranged the source a bit to group functions with similar
-         operation together
-       - fixed parameter_brace_expand so that it no longer allows
-         indirect expansion of `special' variables
-       - fixed parameter_brace_expand so taking the length of some of
-         the shell's special parameters works again
-       - moved all of the code that computes the length of a shell
-         parameter (the ${#xxx} expansion) into parameter_brace_expand_length.
-         Previously, the code that handled the lengths of the shell's
-         special parameters was in parameter_brace_expand_word
-       - valid indirect expansions are now only variable names or positional
-         parameters
-
-                                  8/21
-                                  ----
-subst.c
-       - fixed param_expand to raise an expansion error if $! is being
-         expanded and no asynchronous processes have been created
-       - an expression error in a $((...)) arithmetic expansion now causes
-         a non-interactive shell running in POSIX mode to exit
-       - relaxed change of 8/20 to allow indirect references to $#, $@, $*
-
-builtins/bashref.texi
-       - documented new posix-mode exit on invalid expressions in $((...))
-
-lib/readline/complete.c
-       - don't call rl_strpbrk unless rl_filename_quote_characters is not
-         NULL -- strpbrk requires non-NULL arguments
-         [in bash-2.01.1]
-
-                                  8/22
-                                  ----
-bashline.c
-       - don't make `history-expand-line' a bindable command unless
-         BANG_HISTORY is defined, and don't compile the code for that
-         command in unless BANG_HISTORY is defined
-       - make history_expand_line(), tcsh_magic_space(), alias_expand_line(),
-         and history_and_alias_expand_line() int-returning functions that
-         return 0 for success and non-zero on error.  This allows
-         tcsh_magic_space() to just call history_expand_line() and insert
-         a space if that returns successfully
-       - `magic-space' is now a bindable readline command
-
-doc/bash.{1,html}, lib/readline/doc/rluser.texinfo
-       - documented new `magic-space' bindable readline command
-
-                                  8/25
-                                  ----
-parse.y
-       - fixed decode_prompt_string so that values of $PWD longer than
-         PATH_MAX don't cause buffer overruns (char t_string[PATH_MAX])
-         [in bash-2.01.1]
-
-general.c
-       - fixed polite_directory_format so that values of $HOME longer
-         than PATH_MAX don't cause buffer overruns (char tdir[PATH_MAX])
-         [in bash-2.01.1]
-
-subst.c
-       - fix to expansion of $* so that the positional parameters are
-         separated by the first character of $IFS, even when the expansion
-         is not within double quotes, so the correct split is still
-         performed even when IFS does not contain a space.  Works for
-         ${*}, too
-       - fix to expansion of $@ so that the positional parameters are
-         separated by the first character of $IFS, even when the expansion
-         is not within double quotes, so the correct split is still
-         performed even when IFS does not contain a space.  Works for
-         ${@}, too
-       - new function, string_list_dollar_at(), which is to $@ as
-         string_list_dollar_star is to $*
-       - fixed expansion of $@ so that splitting is still done even if
-         IFS is unset or NULL, as POSIX.2 specifies (section 3.5.2)
-       - fixed expansion of $* so that it expands to multiple words if there
-         is more than one positional parameter, just like $@, even if
-         IFS is unset or NULL
-       - new function list_quote_escapes, quotes (with CTLESC) all
-         CTLESC and CTLNUL characters in each member of the list
-
-tests/dollar-{at,star}.sh
-       - combined into dollar-at-star, changed run-dollars accordingly
-
-                                  8/26
-                                  ----
-Makefile.in
-       - make the `tests' target use $(SHELL) instead of hardcoding `sh'
-
-                                  8/29
-                                  ----
-subst.c
-       - expand_word_list_internal now takes a flags word as the second
-         argument, telling which expansions to perform on the WORD_LIST
-       - broke expand_word_list_internal into several functions: one
-         each to do brace expansion, glob expansion, and the `normal'
-         shell expansions
-       - new extern function: expand_words_shellexp() to perform the
-         `normal' shell expansions on a WORD_LIST
-
-subst.h
-       - extern declaration for expand_words_shellexp
-
-bashline.c
-       - fixed a problem with attempt_shell_completion where it attempted
-         to refer to rl_line_buffer[-1] (completion at the start of the
-         line, which means that ti == -1, which means that the test for
-         rl_line_buffer[ti] at line 715 was an array bounds error
-         [in bash-2.01.1]
-
-eval.c
-       - new function, parse_string_to_word_list(), which takes a string
-         and runs it through the parser, returning the resultant word
-         list
-
-externs.h
-       - new extern declaration for parse_string_to_word_list()
-
-variables.c
-       - change assign_array_var_from_string to first split the string
-         between the parens on whitespace, then expand the resultant
-         list of words with all the shell expansions before doing the
-         assignment
-
-                                   9/4
-                                   ---
-redir.c, redir.h
-       - redirection_error is no longer a static function
-
-builtins/evalstring.c
-       - changes to handle $( < filename ) (equivalent to $(cat filename))
-         as in ksh
-
-lib/readline/bind.c
-       - added two new functions: rl_unbind_function_in_map(func, map),
-         which unbinds all keys that execute FUNC in MAP; and
-         rl_unbind_command_in_map(command, map), which unbinds all keys
-         bound to COMMAND in MAP
-
-lib/readline/readline.h
-       - extern declarations for rl_unbind_{function,command}_in_map
-
-lib/readline/doc/rltech.texi
-       - documented rl_unbind_{function,command}_in_map
-
-builtins/bind.def
-       - added a new option, -u FUNCNAME, which unbinds all key sequences
-         bound to FUNCNAME in the specified (or current) keymap
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new $( < filename ) command substitution
-       - documented new bind -u FUNCNAME option
-
-                                   9/5
-                                   ---
-shell.c
-       - send SIGHUP to all jobs when an interactive login shell exits if
-         the variable `hup_on_exit' is non-zero
-       - modified run_startup_files so that if `NON_INTERACTIVE_LOGIN_SHELLS'
-         is #define'd (perhaps in config.h.top, though there is nothing there
-         for it), all login shells (interactive and non-interactive) run
-         /etc/profile and one of the per-user login shell startup files
-
-builtins/shopt.def
-       - new shopt option `huponexit' to control the value of hup_on_exit
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new `huponexit' shell option
-
-                                   9/8
-                                   ---
-builtins/common.c
-       - changed contains_shell_metas to return 1 if a tilde appears at the
-         start of a string or after a `=' or `:'
-       - changed backslash_quote to quote a tilde if it appears at the start
-         of a string or after a `=' or `:'
-
-lib/readline/complete.c
-       - moved rl_tilde_expand to util.c; it doesn't really have anything
-         to do with completion
-       - moved insert_text to readline.c, renamed it _rl_replace_text (since
-         that's really what it does), changed callers
-       - moved code that postprocesses the list of completion matches into
-         a new function: postprocess_matches
-       - new implementation of tcsh-like menu completion in a single new
-         function: rl_menu_complete
-
-lib/readline/{funmap.c,readline.h}
-       - necessary declarations for binding rl_menu_complete to the
-         new `menu-complete' command
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new `menu-complete' bindable readline command
-
-                                   9/9
-                                   ---
-jobs.c
-       - delete_job should print a warning only if subshell_environment
-         is 0, so we don't print bogus warnings when shell scripts without
-         a leading #! are executed
-
-                                  9/10
-                                  ----
-builtins/read.def
-       - fixed the code so that the `read' is automatically restarted when
-         it returns -1 with errno == EINTR.  SIGINT is handled by the
-         interrupt handler, since interrupt_immediately is set to 1, so
-         this handles things like SIGCHLD
-         [in bash-2.01.1]
-
-                                  9/11
-                                  ----
-test.c
-       - reorganized the code slightly to make it easier to add the ksh-like
-         [[...]] compound command
-
-test.h
-       - new file, with extern declarations for functions available in test.c
-
-externs.h
-       - moved declaration of test_command to test.h
-
-builtins/test.def
-       - include `test.h'
-
-                                  9/16
-                                  ----
-{command,make_cmd,dispose_cmd,externs,subst}.h
-parse.y, subst.c
-{make,dispose,copy,print,execute}_cmd.c
-       - changes to add the new ksh-93 compatible [[...]] conditional command
-
-configure.in
-       - new enable option, --enable-cond-command, to compile in the [[...]]
-         command code
-
-config.h.in
-       - new #define, COND_COMMAND, to compile in the [[...]] command code
-
-tests/{run-cond,cond.{tests,right}}
-       - test suite for the new [[...]] command
-
-{builtins,lib/{readline,glob,tilde}}/Makefile.in
-       - explicit dependencies for .o files on .c files for losing makes
-         like Solaris
-
-doc/{bash.{1,html},bashref.texi}
-       - documented the new `[[' compound command
-       - documented the test/[ builtin behavior based on the number of
-         arguments in the description of the builtin
-       - made a new section for conditional expressions that just lists
-         the available primaries -- the connectives and other operators
-         are listed in the description of the [[ command and the test/[
-         builtin
-
-                                  9/18
-                                  ----
-builtins/set.def
-       - minus_o_option_commands is now a global function so the shopt
-         code can use it
-       - minus_o_option_commands now takes an argument telling it which
-         options to print, just like list_minus_o_options
-       - new function, print_minus_o_option, which prints the value of
-         a `set -o' option either in the traditional format or in the
-         format used by `set +o'
-       - changed list_minus_o_opts and minus_o_option_commands to call
-         print_minus_o_option
-
-builtins/shopt.def
-       - `shopt -p' now causes output to be printed in a format reusable
-         as input (the format is a series of shopt commands, like the
-         output of `set +o')
-       - fixed a bug that made `shopt -so' and `shopt -uo' not work
-       - fixed list_shopt_o_options so that `shopt -op' acts like `set +o'
-       - fixed list_shopt_o_options to that `shopt -op optname' prints the
-         value of optname in a reusable format
-       - fixed list_some_o_options so that `shopt -ops' and `shopt -opu'
-         work and display output in a reusable format
-
-                                  9/19
-                                  ----
-doc/{bash.{1,html},bashref.texi}
-       - documented new `shopt -p' behavior
-
-shell.c
-       - made `bash +o' display the same output as `set +o' and then
-         start an interactive shell (previously `bash -o' and `bash +o'
-         displayed the same thing)
-
-builtins/common.h
-       - added prototypes to the extern function declarations
-
-                                  9/22
-                                  ----
-builtins/evalstring.c
-       - fixed the DISCARD case of the jump_to_top_level so that it
-         doesn't try to call dispose_command(command) after the
-         `pe_dispose' unwind frame gets run, since that disposes the
-         command
-
-                                  9/23
-                                  ----
-test.[ch]
-       - test_eaccess is now a global function so that globbing code can
-         use it
-
-lib/glob/glob.c
-       - rewrote glob_vector to be slightly more efficient and to not
-         read the directory if the filename pattern does not contain
-         any globbing chars.  This satisfies the POSIX requirement that
-         read permission is not required for a directory when the
-         pathname component does not contain a pattern character (bug
-         reported by jsm28@cam.ac.uk)
-
-subst.c
-       - fixed parameter_brace_expand so that ${array[@]} and ${array[*]}
-         behave correctly when IFS is unset or set to something that does
-         not contain a space (they should result in separate words, just
-         like $@ and $*)
-
-tests/{run-array2,array-at-star,array2.right}
-       - tests for the expansions of ${array[@]} and ${array[*]}, derived
-         from the tests in dollar-at-star
-
-                                  9/24
-                                  ----
-jobs.c
-       - fixed cleanup_dead_jobs so that it doesn't remove the job
-         containing last_asynchronous_pid from the job table.  This
-         fixes the POSIX.2 `wait' requirement problem
-
-                                  9/25
-                                  ----
-parse.y
-       - added `\r' escape sequence to the prompt expansion code
-
-lib/readline/chardefs.h
-       - added defines for ISOCTAL, OCTVALUE, isxdigit (if not defined),
-         and HEXVALUE
-
-lib/readline/bind.c
-       - added `normal' echo/printf-like backslash escapes to the
-         key sequence translation code, with the addition that \d
-         expands to RUBOUT.  This means that key sequence definitions
-         (before the `:') and macro values may contain these special
-         backslash-escape sequences
-       - now that we can translate octal escape sequences in key bindings,
-         change _rl_get_keyname so that it turns characters with values
-         128-159 inclusive into octal escape sequences (\200-\237), since
-         those characters are not ASCII or ISO Latin 1
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new backslash escapes for readline key sequence and
-         macro translation
-
-builtins/pushd.def
-       - new function, get_dirstack_from_string(char *string), returns an
-         element from the directory stack or null, treating the argument
-         exactly as `dirs string' would, with the exception that if
-         the first character of `string' is not `+' or `-', a `+' is
-         assumed
-
-builtins/common.h
-       - new extern declaration for get_dirstack_from_string
-
-general.c
-       - added code to bash_special_tilde_expansions to get the expansion
-         using get_dirstack_from_string() if the first character of the
-         tilde-prefix is a digit or the first character is a `+' or `-'
-         and the second is a digit
-
-tests/dstack.{tests,right}
-       - renamed from dirstack.{tests,right}
-
-tests/dtack2.{tests,right}
-       - new tests for the directory stack tilde expansion code
-
-tests/run-dirstack
-       - now runs both dstack and dstack2
-
-                                  10/3
-                                  ----
-trap.c
-       - reordered header file inclusion for irix 4
-
-execute_cmd.c
-       - fixed select_query so that a reply that is not a number is treated
-         the same as a numeric reply that is out of range
-
-lib/readline/util.c
-       - added a backwards-compatibility definition of _rl_savestring()
-
-builtins/set.def
-       - initialize_shell_options now takes an argument saying whether or
-         not we should parse $SHELLOPTS from the environment.  The shell
-         does not parse the value if it's restricted, running setuid, or
-         running in `privileged mode'
-
-shell.c
-       - change call to initialize_shell_options to add the correct argument
-
-builtins/common.h
-       - changed extern declaration for initialize_shell_options
-
-doc/{bash.{1,html},bashref.texi}
-       - added note that the shell ignores $SHELLOPTS in the environment at
-         startup if running in privileged mode
-       - added note that the restricted shell does not parse $SHELLOPTS from
-         the environment at startup
-
-                                  10/6
-                                  ----
-aclocal.m4
-       - change BASH_RLIMIT_TYPE so that it looks for rlim_t in
-         <sys/resource.h> as well as <sys/types.h>, for Solaris 2.6
-       - new macro, BASH_LARGE_FILE_SUPPORT, to enable special compilation
-         options for large files on Solaris 2.6 (from eggert@twinsun.com)
-
-mailcheck.c
-       - the `file_size' member of the FILEINFO struct should be of
-         type `off_t'
-       - the `size' variable in file_has_grown should be of type `off_t'
-       - the RESET_MAIL_FILE macro should initialize file_size to 0, not 0L
-
-builtins/Makefile.in
-       - LDFLAGS and LOCAL_LDFLAGS are now set by configure
-       - `mkbuiltins' is now created from `mkbuiltins.o' instead of directly
-         from the source to the executable
-
-builtins/evalfile.c
-       - fixed _evalfile so that it handles large files correctly on
-         systems where the st_size member of `struct stat' will not fit
-         into an `int'
-
-builtins/mkbuiltins.c
-       - don't assume that st_size fits into an int
-
-input.[ch]
-       - the `b_size' member of a struct BSTREAM is now of type `size_t'
-       - changed third argument to make_buffered_stream to size_t; changed
-         caller
-       - changed `size' variable in fd_to_buffered_stream to type `size_t'
-
-general.h
-       - include <sys/resource.h> if HAVE_SYS_RESOURCE_H and RLIMTYPE are
-         both defined, for possible necessary definition of RLIMTYPE
-         (e.g., on Solaris 2.6)
-
-{execute_cmd,jobs}.c, builtins/times.def
-       - don't include <sys/resource.h> explicitly if RLIMTYPE is defined,
-         since general.h will include it in that case
-
-lib/readline/bind.c
-       - new function, char *_rl_read_file(filename, sizep), which reads
-         FILENAME into a malloced buffer, returning the buffer and the
-         size of the buffer in *SIZEP
-
-lib/readline/histfile.c
-       - changed read_history_range and history_truncate_file to handle
-         large files
-
-hashcmd.c
-       - find_hashed_filename should not add `./' to the front of a pathname
-         that already begins with `./'
-
-                                  10/8
-                                  ----
-support/config.sub
-       - recognize `hppa2.0' as a valid machine architecture
-
-aclocal.m4
-       - changed BASH_CHECK_LIB_TERMCAP so that `gnutermcap' is not chosen
-         if `$prefer_curses' is set to something
-
-bashhist.c
-       - don't use HISTCONTROL or HISTIGNORE to remove lines from the
-         second and subsequent lines of a multi-line command
-         (current_command_line_count > 1).  Old code did this only when
-         command-oriented-history was enabled
-
-doc/{bash.{1,html},bashref.texi}
-       - changed descriptions of HISTCONTROL and HISTIGNORE to state that
-         these variables are not applied to the second and subsequent
-         lines of a multi-line command
-
-builtins/hash.def, {copy,dispose}_cmd.c
-       - include "bashtypes.h" -- cray machines need it because of their
-         oddball definition of `word'
-
-configure.in
-       - changed check of ${host_cpu} to check for `*cray*' and `*Cray*'
-         when deciding whether to include the GNU malloc, since it
-         seems that ${host_cpu} gets set to `CrayYMP'
-
-                                  10/9
-                                  ----
-configure.in
-       - look for strtod and strtol in libc
-       - make lib/sh directory in build directory if not there
-       - create lib/sh/Makefile
-
-config.h.in
-       - added HAVE_STRTOD and HAVE_STRTOL
-
-Makefile.in
-       - changes for lib/sh/libsh.a (shell library)
-
-builtins/printf.def
-       - took out the `#ifdef STRTOUL' code, since strtoul is in libsh.a,
-         and will be resolved from there if it's not in libc
-
-variables.c
-       - call strtol() instead of string_to_long()
-
-general.c, general.h
-       - removed string_to_long
-       - changed legal_number to use strtol so it correctly sets errno
-         to ERANGE on overflow
-       - moved bash_getcwd_errstr here from lib/sh/oslib.c
-
-externs.h
-       - moved extern declarations for functions defined in libsh to a
-         separate section of the file, added extern declarations for
-         other functions in libsh
-
-builtins/ulimit.def
-       - changed macro definition for string_to_rlimtype to call strtol
-         directly instead of string_to_long
-
-lib/sh/clktck.c
-       - moved get_clock_tck to its own file, since it's compiled in
-         unconditionally
-
-                                  10/10
-                                  -----
-lib/sh/getenv.c
-       - moved getenv() and __getenv() here from lib/sh/oslib.c
-
-lib/sh/{setlinebuf,strerror,strcasecmp}.c
-       - moved {setlinebuf,strerror,strcasecmp}() from oslib.c to
-         individual files
-
-lib/sh/Makefile.in, Makefile.in
-       - changes for new files in lib/sh
-
-aclocal.m4
-       - new macro BASH_SYS_RESTARTABLE_SYSCALLS, which does what
-         AC_SYS_RESTARTABLE_SYSCALLS does, but using posix sigaction()
-
-configure.in
-       - call BASH_SYS_RESTARTABLE_SYSCALLS if ac_cv_sys_restartable_syscalls
-         is `no'
-
-                                  10/13
-                                  -----
-builtins/jobs.def
-       - catch out-of-range jobs better in disown_builtin
-
-configure.in
-       - don't build with GNU malloc on cygwin32
-
-trap.c
-       - change signal_name to handle the case where signal_names[sig] is
-         NULL, which can happen on cygwin32
-
-execute_cmd.c
-       - changes to do_piping to make pipes text mode (O_TEXT) on cygwin32
-
-cross-build
-       - new directory with cache files and other stuff for cross-compiling
-         bash (currently only for building for cygwin32 on a Unix machine)
-
-cross-build/cygwin32.cache
-       - new file containing configuration variable assignments for
-         cygwin32 that would otherwise require a default case for AC_TRY_RUN
-
-configure.in
-       - source ${srcdir}/cross-build/cygwin32.cache on CYGWIN32 systems
-         if we're cross-compiling on a unix machine
-       - set $CC_FOR_BUILD for cygwin32 cross-compiling environment
-
-Makefile.in
-       - CC_FOR_BUILD is now a variable set by configure
-
-builtins/mkbuiltins.c
-       - only check for read(2) returning <= 0 in extract_info() (error
-         and exit on < 0, warning and return on == 0)
-
-builtins/evalfile.c
-       - only check for read(2) returning <= 0 in _evalfile() (error and
-         and failure return on < 0, success on == 0 while short-circuting
-         rest of operation)
-
-                                  10/14
-                                  -----
-
-vprint.c
-       - moved to lib/sh/vprint.c
-
-lib/sh/Makefile.in
-       - added entries for vprint.[co] in the appropriate places
-
-cross-build/win32sig.h
-       - a version of signames.h for cross-compiling for the CYGWIN32
-         environment on a Unix machine (from noer@cygnus.com)
-
-aclocal.m4
-       - made all cases of AC_TRY_RUN and AC_TRY_COMPILE have reasonable
-         default cases for cross-compiling, and tell the user what they are
-
-Makefile.in
-       - removed vprint.c from shell sources and vprint.o from shell
-         objects
-       - added a level of indirection for signames.h -- the variable
-         SIGNAMES_H is set by configure to either `lsignames.h' or
-         a file for a cross-compilation environment (currently only
-         the cygwin32 stuff is supported).  Then that file is copied
-         to `signames.h'.  `lsignames.h' is created by `mksignames' as
-         was previously used to create signames.h directly
-
-configure.in
-       - set SIGNAMES_H to either `$(srcdir)/cross-build/win32sig.h' or
-         `lsignames.h' as appropriate, substitute into Makefile
-
-                                  10/15
-                                  -----
-builtins/Makefile.in
-       - CC_FOR_BUILD is now set by configure and used to build mkbuiltins
-         and psize.aux
-
-variables.h
-       - new variable attribute `att_tempvar', set if the SHELL_VAR * was
-         constructed on the fly from the temporary environment
-
-variables.c
-       - find_name_in_env_array now sets the `att_tempvar' attribute on
-         the SHELL_VAR it creates
-
-findcmd.c
-       - search_for_command now disposes the SHELL_VAR created by searching
-         the temporary environment for $PATH, if it is found there
-       - _find_user_command_internal also disposes of the SHELL_VAR if it
-         has the `att_tempvar' attribute set
-
-builtins/setattr.c
-       - show_name_attributes looks in the temporary environemnt, so it needs
-         to dispose the SHELL_VAR if it has the att_tempvar attribute set
-
-subst.c
-       - parameter_brace_expand_word now disposes of the SHELL_VAR returned
-         by find_variable if it has the att_tempvar attribute set
-       - ditto for param_expand and word_split
-
-builtins/kill.def
-       - disallow null pid arguments instead of treating them as 0
-       - display a usage message and return failure if no pid or job
-         arguments are supplied
-
-                                  10/16
-                                  -----
-builtins/declare.def
-       - make `var=value declare -x var' behave the same as
-         `var=value export var' and `var=value declare -r var' behave the
-         same as `var=value readonly var', now that we have the `tempvar'
-         attribute
-
-                                  10/22
-                                  -----
-jobs.c
-       - non-interactive shells shouldn't report jobs killed by a SIGINT,
-         even if the standard output is to a terminal
-       - pretty_print_job should add a CR at the end of its output if the
-         shell is interactive and asynchronous notification is being
-         performed.  This fixes the problem with extra CRs in the output
-         of $(jobs)
-
-general.c
-       - changed canonicalize_pathname to change `//' into `/', but leave
-         other pathnames starting with two consecutive slashes alone
-
-                                  10/27
-                                  -----
-
-lib/readline/histexpand.c
-       - fixed history_expand so that the appearance of the history
-         comment character at the beginning of a word inhibits history
-         expansion for the rest of the line
-
-                                  10/29
-                                  -----
-jobs.c,variables.c
-       - moved set_pipestatus_array to variables.c
-
-variables.c
-       - new function, set_pipestatus_from_exit(int), which sets the
-         PIPESTATUS variable from a command's exit status
-
-variables.h
-       - extern declarations for set_pipestatus_from_exit and
-         set_pipestatus_array
-
-execute_cmd.c
-       - fixed execute_simple_command to call set_pipestatus_from_exit
-         if a foreground builtin or function, or a foreground null
-         command is executed
-
-                                  10/31
-                                  -----
-shell.c
-       - fixed run_startup_files to detect being run by sshd, and treat
-         that case as equivalent to being run by rshd
-
-                                  11/3
-                                  ----
-builtins/set.def
-       - make sure `set -a' doesn't cause SHELLOPTS to be exported when
-         a change is made to one of the shell options
-
-                                  11/4
-                                  ----
-pathexp.c
-       - fix to shell_glob_filename in the code that uses a POSIX glob
-         library
-
-                                  11/5
-                                  ----
-jobs.c
-       - fix cleanup_dead_jobs to hang onto the job corresponding to
-         last_asynchronous_pid only if the shell is not interactive
-         (this still has the problem that until a new async process
-         is started, the job will stay in the jobs table)
-
-configure.in,aclocal.m4
-       - added a new macro, BASH_TYPE_U_INT32_T, to check for u_int32_t
-         separately from int32_t, since there are systems (HP-UX 10.20)
-         that have a define for the latter but not the former
-
-                                  11/6
-                                  ----
-jobs.c
-       - cleanup_dead_jobs no longer checks whether the job it is deleting
-         corresponds to last_asynchronous_pid
-       - notify_of_job_status and mark_dead_jobs_as_notified now will not
-         mark the job corresponding to last_asynchronous_pid as notified
-         if the shell is not interactive
-       - wait_for_single_pid, if told to wait for last_asynchronous_pid,
-         or the job of which it is a member, will take care of marking
-         the job as notified after calling wait_for and collecting the
-         status.  This means that two successive `wait' calls for $! will
-         succeed the first time and fail the second, as POSIX.2 specifies
-         (take this code out if it causes problems)
-
-                                  11/7
-                                  ----
-jobs.c
-       - wait_for_job, if told to wait for the job corresponding to the
-         last async pid, will mark the job as notified after waiting for
-         it and collecting the status
-
-general.h
-       - fixed MEMBER macro to avoid reading past end of S (it used to
-         test s[1] before s[0], which is an error if s == "")
-
-subst.c
-       - expand_word_internal should free ISTRING before returning if
-         param_expand returns an error
-       - parameter_brace_expand_word should free the memory it allocates
-         and passes to param_expand
-
-execute_cmd.c
-       - execute_arith_command should call dispose_words on the list
-         returned by expand_words
-
-parse.y
-       - after calling parse_arith_command, read_token needs to free the
-         string value that parse_arith_command fills in, since make_word
-         makes a copy of the string it's passed
-
-                                  11/10
-                                  -----
-subst.c
-       - cond_expand_word needs to free the value returned by string_list
-         after it is run through quote_string_for_globbing
-
-parse.y
-       - make sure cond_term frees yylval.word if it is just a `!' and
-         it's parsed as a term negation operator
-
-variables.c
-       - assign_array_var_from_string needs to free the word list returned
-         by parse_string_to_word_list after calling expand_words_shellexp
-         on it
-
-execute_cmd.c
-       - changed execute_simple_command to avoid saving the_printed_command
-         into command_line until just before it's needed.  This should save
-         time and prevent memory leaks on errors, but it must be watched
-         closely to make sure that the_printed_command doesn't change out
-         from under execute_simple_command before we copy it
-
-                                  11/12
-                                  -----
-builtins/alias.def
-       - alias and unalias should print error messages when passed an
-         argument that is not an alias for printing or deletion,
-         respectively, even if the shell is not interactive
-
-builtins/exit.def
-       - `logout' will no longer exit a non-login non-interactive shell
-
-                                  11/17
-                                  -----
-lib/readline/nls.c
-       - add `koi8-r' as a legal LANG value
-
-builtins/alias.def
-       - if `alias' or `alias -p' is executed when no aliases are defined,
-         the return status should be 0, according to POSIX.2
-
-                                  11/18
-                                  -----
-subst.c
-       - changed a couple of calls to make_word_list (make_word(z), ...)
-         to add_string_to_list (z, ...)
-
-execute_cmd.c
-       - execute_cond_command now sets this_command_name to `[['
-
-                                  11/21
-                                  -----
-variables.c
-       - all_visible_{function,variable}s and the functions they call
-         should be compiled in only if READLINE is defined
-
-                                  11/24
-                                  -----
-aclocal.m4
-       - remove some leading whitespace before preprocessor statements in
-         BASH_KERNEL_RLIMIT_CHECK
-
-general.[ch]
-       - fix declarations for group_member so the extern declaration in
-         general.h agrees with the definition in general.c (fix from
-         Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
-
-builtins/cd.def
-       - print the new working directory if the shell is interactive
-         and `cd -' succeeds
-       - don't print the new working directory if it's found in $CDPATH
-         if the shell is not interactive
-
-                                  11/25
-                                  -----
-builtins/cd.def
-       - fixes to bindpwd so that it copes with get_working_directory
-         returning NULL (bug from schwab@issan.informatik.uni-dortmund.de)
-
-                                  12/2
-                                  ----
-support/config.guess
-       - add support for new OS name for SINIX SVR4 systems
-
-                                  12/3
-                                  ----
-
-builtins/set.def
-       - `unset' should check that a function it's trying to unset is a
-         legal identifier only when in POSIX mode
-
-redir.c
-       - changed here_document_to_fd to try and make sure the filename
-         used for the here document is `more unique', since the old
-         version would fail if two here documents were created in less
-         than a second
-
-                                  12/4
-                                  ----
-builtins/cd.def
-       - POSIX.2 says that if CDPATH is used to find the new directory,
-         and it's not relative to the current directory, the new directory
-         name should be displayed on stdout even if the shell is not
-         interactive
-
-                                  12/5
-                                  ----
-parse.y
-       - changes so that `time' is recognized as a reserved word only at
-         the beginning of a pipeline (the last read token is one of 0,
-         `;', `\n', `&&', `||', or `&'):
-
-               o add clause to special_case_tokens that does the check
-                 and returns TIME if the conditions are met
-               o take check for `TIME' out of CHECK_FOR_RESERVED_WORD, but
-                 leave it in the word_token_alist so that `type' still
-                 reports it as a `keyword'
-               o new function, time_command_acceptable(), encapsulates the
-                 necessary conditions for `time' to be returned as a 
-                 reserved word
-
-[bash-2.02-alpha1 frozen]
-
-                                1/6/1998
-                                --------
-lib/glob/fnmatch.c
-       - fix define for isgraph so that it does not return success for space
-       - fix strcompare() so that the call to strcoll is surrounded by
-         #ifdef HAVE_STRCOLL
-
-                                   1/7
-                                   ---
-lib/glob/fnmatch.c
-       - the `test' argument to brackmatch() should be of type `unsigned char'
-
-                                  1/11
-                                  ----
-execute_cmd.c
-       - make sure execute_arith_command sets this_command_name to `(('
-
-                                  1/29
-                                  ----
-parse.y
-       - make sure the code for pushing and popping strings is compiled in
-         if either ALIAS or DPAREN_ARITHMETIC is defined, because the ((
-         code uses push_string in the case of a nested subshell
-       - fix cond_skip_newlines so it resets the prompt to $PS2 while
-         parsing an unfinished conditional command
-
-dispose_cmd.c, copy_cmd.c, builtins/hash.def
-       - fixes to not use `word' as a variable name or the name of a
-         function parameter to get around stuff in the Cray Unix include
-         files
-
-builtins/printf.def
-       - return failure immediately if an illegal format character is
-         encountered
-
-redir.c
-       - make the code that creates here-documents behave better if the
-         file it's trying to create already exists for some reason
-
-lib/readline/complete.c
-       - changed print_filename to return the number of characters it
-         outputs; changed callers to use that value.  This makes columns
-         line up when printing completion listings with filenames
-         containing control characters
-
-doc/bash.{1,html}
-       - fixed a typo in the quote removal section
-
-                                  1/30
-                                  ----
-parse.y
-       - free_string_list() needs to check that t->expander is not NULL
-         before trying to dereference it
-       - reset_parser() doesn't need to set pushed_string_list to NULL
-         after calling free_string_list(), since free_string_list does it
-
-configure.in,cross-build/cygwin32.cache
-       - fixes from Geoff Noer for better cygwin32 cross-compilation
-
-tests/printf.{tests,right}
-       - removed test for integer overflow, since error messages differ
-         across systems
-
-pathexp.c
-       - fixed a problem with unquoted_glob_pattern_p that made things
-         like `x+*' not expand correctly
-
-lib/glob/glob.c
-       - fixed a problem with glob_pattern_p that made things like `x+*'
-         not expand correctly
-
-builtins/cd.def
-       - if `cd -P' is executed, or `set -o physical' has been executed,
-         the value of $PWD after a successful cd will not contain any
-         symlinks, regardless of whether or not the shell is in posix mode
-
-                                   2/3
-                                   ---
-lib/readline/shell.c
-       - include <string.h> or <strings.h> as appropriate
-
-                                   2/4
-                                   ---
-builtins/common.c
-       - take out the code in backslash_quote() that looks for tildes to
-         quote, for the time being
-       - if getcwd() fails, get_working_directory now prints the error
-         message corresponding to errno in addition to the rest of the
-         information -- TENTATIVE CHANGE
-
-lib/sh/getcwd.c
-       - fix from Paul Smith to make getcwd() behave better in the presence
-         of lstat(2) failures
-
-stringlib.c
-       - when copying the replacement string into the output string being
-         constructed, strsub() needs to make sure enough space for the
-         replacement string is allocated, not the length of the pattern
-         (use REPLEN, not PATLEN)
-
-mailcheck.c
-       - make sure make_default_mailpath() has a valid current_user struct
-         before trying to construct the default mailpath
-
-                                   2/5
-                                   ---
-execute_cmd.c
-       - execute_builtin needs to call run_unwind_frame if the builtin is
-         `source' or `eval' and we're not in a subshell rather than just
-         calling dispose_builtin_env, because not all invocations copy 
-         the temporary_env to builtin_env, and nested calls to `.' require
-         that the temporary env given to the first persist until that first
-         call to `.' finishes
-
-parse.y
-       - fix to history_delimiting_chars so that function definitions like
-
-               function xyz
-               {
-                       echo a
-               }
-
-         are saved to the history correctly when command_oriented_history
-         is enabled, but literal_history is not
-
-bashhist.c
-       - when calling internal_error from pre_process_line, use "%s" as
-         the format with history_value as the argument to avoid the
-         problem with the failed history event containing printf escape
-         sequences
-
-                                  2/13
-                                  ----
-shell.c
-       - if shell_initialized is non-zero, don't line-buffer stderr and
-         stdout in shell_initialize on SunOS5 -- see if this fixes the
-         crashing problems for scripts without a leading `#! /bin/sh'
-
-                                  2/17
-                                  ----
-bashline.c
-       - added diffs to _ignore_completion_names from Andreas Schwab to
-         complete names that would otherwise be ignored with FIGNORE if
-         they are the only possible completions.  Define NO_FORCE_FIGNORE
-         if you want this; it is not defined by default
-
-                                  2/19
-                                  ----
-support/bashbug.sh
-       - changed the bug-bash address to bug-bash@gnu.org
-
-examples/loadables/Makefile.in
-       - converted from `Makefile' with some boilerplate configure variables
-         to find the source and build directories -- still requires some
-         hand-editing to get the right CFLAGS and LDFLAGS for shared object
-         creation
-
-Makefile.in
-       - create examples/loadables/Makefile with `make makefiles'
-
-configure.in
-       - create examples/loadables directory so `make makefiles' can write a
-         makefile there
-
-general.c
-       - make sure initialize_groups_array always sets things up so that
-         ${GROUPS[0]} is the user's primary group (current_user.gid)
-
-                                  2/20
-                                  ----
-lib/readline/parens.c
-       - change the time delay when showing matching parens from 1.5 sec to
-         0.5 sec
-
-                                  2/23
-                                  ----
-shell.c
-       - isnetconn() should call getpeername(fd,...) instead of using 0
-         (though fileno(stdin) should always be 0)
-
-support/config.guess
-       - updates from master FSF copy
-
-                                  2/24
-                                  ----
-support/man2html.c
-       - modified version of man2html to convert bash.1 into bash.html
-
-support/Makefile.in
-       - simple Makefile to create man2html
-
-configure.in
-       - make sure support/Makefile is created
-
-Makefile.in
-       - make sure support/Makefile is created and cleaned
-
-doc/Makefile.in
-       - changes to suffix rules to say how to make .html from .1 
-       - `bash.html' is now a makefile target, created by man2html from
-         bash.1 rather than being hand-modified
-
-lib/sh/itos.c, general.c
-       - new file, itos() from general.c.  This is here because the
-         implementation of strerror in lib/sh/strerror.c uses itos()
-
-Makefile.in, lib/sh/Makefile.in
-       - changes to add itos.c in libsh.a
-
-externs.h, general.h
-       - moved extern declaration of itos() from general.h to externs.h
-
-aclocal.m4
-       - changes to BASH_LARGE_FILE_SUPPORT for the LFS64_* variables in
-         Solaris 2.6
-
-Makefile.in
-       - make sure configure sets CPPFLAGS in this file
-
-                                  2/27
-                                  ----
-
-builtins/command.def
-       - make sure get_standard_path returns the value of
-         STANDARD_UTILS_PATH if _CS_PATH is defined, but confstr(3)
-         returns 0, indicating that _CS_PATH does not have a defined
-         value
-
-bashhist.c
-       - fixed bash_history_inhibit_expansion() so that extended globbing
-         expressions like *.!(c) are not history expanded if extended_glob
-         is non-zero (shopt -s extglob has been executed)
-
-                                   3/2
-                                   ---
-Makefile.in
-       - changed release status to `beta1'
-
-[bash-2.02-beta1 frozen]
-
-                                  3/17
-                                  ----
-lib/readline/vi_mode.c
-       - make sure _rl_vi_save_insert() gets a non-null UNDO_LIST pointer
-         before trying to do anything with it
-
-jobs.c
-       - add a call to internal_warning from wait_for_job if the job is
-         stopped
-       - changed notify_of_job_status to not report pipelines exiting due to
-         SIGPIPE in non-interactive shells if the shell is compiled with
-         -DDONT_REPORT_SIGPIPE
-
-builtins/psize.sh
-       - some fixes to try to avoid /tmp file races and surreptitious
-         substitutions
-
-version.c
-       - changed the extended version info to show 1998 as the copyright year
-
-parse.y
-       - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>
-         for compilation errors when the shell is configured --disable-alias
-         but with dparen arithmetic enabled
-
-eval.c
-       - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de> to
-         make sure the input stream is popped correctly when performing an
-         array assignment in the command argument to `bash -c', e.g.,
-         `bash -c 'A=()''
-
-builtins/kill.def
-       - make `kill' with no arguments print a usage message and return a
-         failure status
-
-alias.c
-       - fix so that rd_token doesn't dump core when trying to do alias
-         expansion on a line containing an unclosed single quote (fix from
-         Vasco Pedro <vp@di.fct.unl.pt>)
-
-builtins/cd.def
-       - fix so that using a non-empty directory from CDPATH to construct
-         the name of the directory to change to results in an absolute
-         pathname of the new current working directory being displayed,
-         as POSIX.2 specifies
-
-support/bashbug.sh
-       - a couple of small fixes to minimize /tmp file races -- the script
-         is still raceable, the window is just smaller
-
-                                  3/24
-                                  ----
-variables.c
-       - make sure assign_in_env passes a malloc'd string to
-         expand_string_unsplit, because some of the error code assumes that
-         it is malloc'd and frees it (bug reported by Marko.Makela@HUT.FI)
-
-                                  3/25
-                                  ----
-doc/bashref.texi
-       - changed the email addresses to use the @email texinfo tag
-
-trap.c
-       - call reset_parser from the exit trap code before calling
-         parse_and_execute, so reserved words are parsed correctly
-
-subst.c
-       - make sure parameter_brace_patsub expands the pattern string as if
-         the expression were not in double quotes, even if the entire
-         expansion is enclosed in double quotes, so that quote removal
-         on embedded double quotes is performed correctly (bug report from
-         schwab@issan.informatik.uni-dortmund.de)
-
-                                  3/27
-                                  ----
-support/config.guess
-       - changes to allow Power PCs running Apple's Rhapsody to configure
-
-                                  3/31
-                                  ----
-
-Makefile.in
-       - changed release status to `beta2'
-
-[bash-2.02-beta2 frozen]
-
-                                   4/6
-                                   ---
-subst.c
-       - make sure command_substitute does not try to set the terminal's
-         process group to a background job
-
-[bash-2.02 frozen]
-
-                                  4/18
-                                  ----
-[bash-2.02 released]
-
-                                  4/20
-                                  ----
-bashline.c
-       - make sure that rl_defun is not called for
-         history-and-alias-expand-line unless both ALIAS and BANG_HISTORY
-         are defined
-         [in bash-2.02.1]
-
-                                  4/22
-                                  ----
-make_cmd.c
-       - make sure that make_here_document allocates enough space for the
-         first line of the here document, by using the line length +2
-         (instead of 1000, which is what the old code did, and breaks if
-         the first line of the here document is enough longer than 1000
-         characters to cause other memory to be scribbled on)
-         [in bash-2.02.1]
-
-builtins/cd.def
-       - when in posix mode, a value of "" for CDPATH should be treated the
-         same as the current directory, not result in an error
-         [in bash-2.02.1]
-
-lib/malloc/malloc.c
-       - change the mh_align member of `union mhead' to be of type double
-         rather than a pointer, so that malloc will return (hopefully)
-         8-byte aligned memory
-         [in bash-2.02.1]
-
-                                  4/23
-                                  ----
-aclocal.m4
-       - add a new macro to check whether or not off_t is 64 bits 
-
-                                  4/24
-                                  ----
-configure.in
-       - fixed a typo so the bash malloc is not compiled in on mips-sgi-irix6
-
-lib/readline/display.c
-       - fix for readline redisplay if the prompt string is longer than the
-         screen width and includes invisible characters
-         [in bash-2.02.1]
-
-jobs.c
-       - make_child should not set the terminal's process group to
-         pipeline_pgrp if pipeline_pgrp == shell_pgrp (indicating that we
-         are forking a child for a command substitution)
-         [in bash-2.02.1]
-
-subst.c
-       - in execute_simple_command, in the child forked if there is a pipe
-         or the command is asynchronous, set subshell_environment to
-         SUBSHELL_ASYNC only if the command is asynchronous, SUBSHELL_FORK
-         if there is a pipe in or out
-         [in bash-2.02.1]
-
-                                  4/27
-                                  ----
-support/texi2dvi
-       - upgraded to version 0.8 (from 0.5)
-
-support/texi2html
-       - upgraded to version 1.52 (from 1.51)
-
-support/config.sub
-       - config.sub now recognizes all the permutations of the system name
-         that config.guess produces for alphas
-         [in bash-2.02.1]
-
-aclocal.m4
-       - changed BASH_TYPE_INT32_T, BASH_TYPE_U_INT32_T, and
-         BASH_TYPE_PTRDIFF_T to avoid compiling a program; instead use
-         the values determined by the AC_CHECK_SIZEOF tests to determine
-         the default values to supply to AC_CHECK_TYPE
-
-configure.in
-       - don't call AC_CHECK_TYPE({int32_t,u_int32_t,ptrdiff_t}) from
-         configure.in; use the updated BASH_TYPE macros instead
-
-builtins/exec.def
-       - if shell_execve fails, set ARGS to null because the realloc() call
-         by shell_execve may have caused it to be reallocated and freed --
-         we don't want to free the memory twice
-
-lib/glob/fnmatch.c
-       - fixes from ache@nagual.pp.ru to make fnmatch work for eight-bit
-         characters when `isupper' and `islower' are used -- they were
-         restricted to ASCII characters before, probably to work around
-         some ancient, broken C libraries in which is{low,upp}er are valid
-         only for ASCII characters and return bogus values otherwise
-         [in bash-2.02.1]
-
-                                  4/29
-                                  ----
-builtins/cd.def
-       - fixed a problem with the shell displaying the old working directory
-         instead of the new one after changing to a directory found via
-         $CDPATH when in physical mode (set -o physical)
-         [in bash-2.02.1]
-
-make_cmd.c
-       - make make_cond_command initialize the line number from the cond_node
-         that's passed as an argument (not that it's used right now)
-
-copy_cmd.c
-       - make sure that copy_cond_command copies the type of the cond command,
-         since execute_cond_command uses that to decide what kind of test
-         to perform
-         [in bash-2.02.1]
-
-builtins/printf.def
-       - make sure the for loop that processes the format string actually
-         consumes arguments; otherwise process it only once to avoid
-         infinite loops (e.g., `printf " " abc def ghi')
-         [in bash-2.02.1]
-       - if the format string is empty after preprocessing by ansicstr,
-         return immediately
-         [in bash-2.02.1]
-
-tests/run-printf
-       - use `diff -a' so the presence of a non-printing character in the
-         output doesn't confuse diff into thinking the files are binary
-         (test whether or not `diff' supports `-a' first)
-
-Makefile.in
-       - keep $(LOCAL_LIBS) from being specified twice
-
-                                  4/30
-                                  ----
-support/shobj-conf
-       - a script to generate variables to do shared object configuration
-         for the loadable builtin stuff
-
-configure.in
-       - added a section for shared object configuration using an `eval'
-         of the output of shobj-conf and substituting the generated values
-         with AC_SUBST
-
-examples/loadables/Makefile.in
-       - the system-specific shared object configuration variables are now
-         substituted by configure
-
-                                   5/4
-                                   ---
-builtins/ulimit.def
-       - some changes for HPUX 9.x's peculiar handling of RLIMIT_FILESIZE
-       - changed the limit retrieval functions to return an error code
-         and the value in a reference argument to avoid use of RLIM_INVALID
-
-general.c
-       - new function, get_group_array(), which returns an array of
-         gids
-
-examples/loadables/{id,printenv,sync,uname,whoami,push}.c
-       - new loadable builtins
-
-variables.c
-       - moved code that initializes $PPID into a new function, set_ppid()
-
-variables.h
-       - extern declaration for set_ppid()
-
-                                   5/6
-                                   ---
-subst.c
-       - make sure that the `"' (double-quoted string) case of
-         expand_word_internal calls string_list_dollar_at if we've expanded
-         a double-quoted $@ so correct splitting on $IFS is done when
-         the expansion is complete.  We can't simply call string_list
-         because that forces a space separator, and $IFS may not contain
-         a space
-         [in bash-2.02.1]
-
-                                   5/7
-                                   ---
-builtins/umask.def
-       - broke the code that parses a symbolic mode out of symbolic_umask
-         into a separate function that takes a symbolic mode and an initial
-         set of bits to modify
-
-examples/loadables/mkdir.c
-       - new loadable builtin
-
-                                  5/11
-                                  ----
-builtins/printf.def
-       - use the format string length provided by ansicstr() to process the
-         format string, rather than testing for nullness, to handle NUL
-         bytes in the expanded format string
-
-builtins/pushd.def
-       - changes so it can be built as both a regular builtin and a loadable
-         builtin from the same source
-
-examples/loadables/Makefile.in
-       - changes to build pushd.c from ${topdir}/builtins/pushd.def and then
-         compile it with the correct flags to make it a loadable builtin,
-         even if PUSHD_AND_POPD is not defined in config.h
-
-                                  5/12
-                                  ----
-lib/readline/complete.c
-       - use rl_completer_quote_characters instead of #ifdef SHELL/#endif
-         code in make_quoted_replacement.  This means complete.c no longer
-         has any #ifdef SHELL code
-
-                                  5/13
-                                  ----
-builtins/Makefile.in
-       - `make clean' should remove mkbuiltins.o
-
-Makefile.in
-       - all of the various `clean' targets need to descend into lib/sh
-         and run the appropriate target there
-
-builtins/type.def
-       - changed to use the builtin getopt.  The old long options are
-         handled by prescanning the argument list looking for the long
-         options, processing them, and taking them out of the list before
-         passing it to internal_getopt()
-
-lib/readline/signals.c
-       - removed #ifdef SHELL code -- job control signals and SIGTERM are
-         always set in rl_set_signals, but are set to SIG_IGN if the old
-         handler was SIG_IGN (as bash sets it)
-       - new function rl_maybe_set_sighandler, which sets the signal
-         disposition back to SIG_IGN if the old handler was SIG_IGN
-       - removed #ifdef HANDLE_JOB_SIGNALS and #ifdef HANDLE_SIGTERM code
-
-lib/readline/rltty.c
-       - removed #ifdef SHELL code -- set_winsize is always called
-         to force the application to stop if it's not in the foreground
-         before getting the tty attributes
-
-                                  5/14
-                                  ----
-lib/readline/signals.c
-       - readline now catches SIGQUIT and cleans up the tty before resending
-         it to its container application (unless the calling application has
-         set the disposition of SIGQUIT to be SIG_IGN)
-       - rl_handle_sigwinch is now called rl_sigwinch_handler
-       - rl_sigwinch_handler now calls rl_resize_terminal to fetch the
-         screen size after a SIGWINCH
-       - the sighandler_cxt struct for non-posix systems now includes
-         sa_flags and sa_mask variables, for future use
-       - new variable, rl_catch_signals, indicating that readline should
-         install its own signal handlers for SIGINT, SIGTERM, SIGQUIT,
-         SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU
-       - new variable, rl_catch_sigwinch, indicating that readline should
-         install its own SIGWINCH handler, which will chain to a calling
-         application's SIGWINCH handler
-       - new function, rl_free_line_state(), to free up variable state
-         associated with the current line after receiving a signal
-       - new function, rl_cleanup_after_signal(), to clean up the display
-         and terminal state after receiving a signal
-       - new function, rl_reset_after_signal(), to reinitialize the
-         terminal state after a signal handler returns and readline
-         continues
-       - rl_set_signals and rl_clear_signals now look at the values of
-         rl_catch_signals and rl_catch_sigwinch
-
-lib/readline/terminal.c
-       - new function rl_resize_terminal (), to reset readline's idea of
-         the screen size after a SIGWINCH
-
-lib/readline/readline.h
-       - extern declarations for rl_resize_terminal(), rl_free_line_state(),
-         rl_cleanup_after_signal(), rl_reset_after_signal()
-       - extern declarations for rl_catch_signals and rl_catch_sigwinch
-
-variables.c
-       - new functions, get_env_value(char *) and get_home_dir(void) to
-         satisfy references from the tilde and readline libraries when
-         they are compiled as part of bash
-
-lib/tilde/tilde.c
-       - rely on extern declarations of get_env_value and get_home_dir;
-         there is no more #ifdef SHELL code
-
-lib/readline/shell.c
-       - implementation of get_home_dir that uses getpwuid() to satisfy
-         references from tilde.c when not compiled as part of bash
-       - removed savestring()
-       - removed #ifdef SHELL/#endif pair -- all of these functions will be
-         resolved from bash when readline is linked into bash
-
-lib/readline/savestring.c
-       - new file, with function definition for savestring() for backwards
-         compatibility
-
-Makefile.in, _distribution
-       - bumped things up to bash-2.03-alpha
-
-                                  5/15
-                                  ----
-lib/readline/rlconf.h
-       - removed #ifdef SHELL/#endif pair, so the callback stuff will be
-         compiled into libreadline, but never linked into bash (since it's
-         not referenced)
-
-configure.in
-       - added new `--with-installed-readline' option to allow readline to
-         be linked with an already-installed version -- this will probably
-         not work with versions of readline prior to 2.3 (libreadline.so.4)
-         [THIS IS STILL UNDOCUMENTED]
-
-Makefile.in
-       - changed necessary variables to allow the `--with-installed-readline'
-         option to work; shared and static libraries are supported
-
-                                  5/18
-                                  ----
-lib/readline/display.c
-       - _rl_save_prompt is now rl_save_prompt; _rl_restore_prompt is now
-         rl_restore_prompt
-
-lib/readline/readline.h
-       - extern declarations for rl_save_prompt and rl_restore_prompt
-
-lib/readline/{search,isearch,readline,display}.c
-       - converted calls to _rl_{save,restore}_prompt () to use new public
-         versions
-
-lib/readline/doc/rltech.texinfo
-       - documented new public functions rl_{save,restore}_prompt
-
-                                  5/19
-                                  ----
-lib/readline/readline.c
-       - new hook function variable, rl_pre_input_hook.  If non-zero, it's
-         called from readline_internal_setup just before it returns and
-         readline starts reading input
-
-lib/readline/readline.h
-       - extern declaration for rl_pre_input_hook
-
-lib/readline/doc/rltech.texinfo
-       - documented new variable rl_pre_input_hook
-
-                                  5/20
-                                  ----
-lib/readline/complete.c
-       - new hook function variable, rl_completion_display_matches_hook.
-         If non-null, this function is called when readline would normally
-         display the list of completion matches
-
-lib/readline/readline.h
-       - extern declaration for rl_completion_display_matches_hook
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_display_matches_hook
-
-lib/readline/readline.c
-       - if RL_LIBRARY_VERSION is not defined, define it to 4.0 to match
-         the version number of the shared libraries
-
-lib/readline/doc/{hist,rlman}.texinfo
-       - changed the version and edition to 4.0 to match the library version
-
-support/config.guess
-       - added case clause for matching UnixWare 7 from SCO (SVR5) -- further
-         work may be needed 
-         [These fixes were in a usenet posting from hops@sco.com]
-
-support/config.sub
-       - added case clauses to recognize various aliases for SCO Open Server
-         and Open Desktop
-         [in bash-2.02.1]
-       - broke the code that canonicalizes unixware into unixware2 and
-         unixware7 clauses (multiple places)
-         [in bash-2.02.1]
-       - added clause to recognize `sysv5' for SVR5
-         [These fixes were in a usenet posting from hops@sco.com]
-         [in bash-2.02.1]
-
-configure.in
-       - add `-b elf' to LOCAL_CFLAGS for sco3.2v5* to allow dynamic linking
-         (and loadable builtins)
-       - add AC_DEFINE(SVR5) on SVR5 (unixware 7)
-
-config.h.in
-       - add #undef SVR5, set by configure
-
-                                  5/21
-                                  ----
-shell.c
-       - line-buffer stdout and stderr in shell_initialize only if
-         shell_initialized is 0 on all systems, not just SunOS 5
-         [in bash-2.02.1]
-
-support/rlvers.sh
-       - script to print out the version number of any installed
-         readline library
-
-configure.in
-       - only allow --with-installed-readline if the version of the
-         installed readline library is 4.0 or greater
-
-                                  5/22
-                                  ----
-lib/readline/complete.c
-       - broke the code that actually displays a list of completion
-         matches on the output stream into a separate public function,
-         rl_display_match_list, so it can be called from the hook
-         function rl_completion_display_matches_hook.
-
-lib/readline/readline.h
-       - new extern declaration for rl_display_match_list
-
-lib/readline/rltech.texinfo
-       - documented rl_display_match_list
-
-configure.in,Makefile.in
-       - --enable-static-link now creates a STATIC_LD variable in Makefile
-         rather than adding to LDFLAGS directly.  LDFLAGS now includes
-         $(STATIC_LD)
-
-                                   6/2
-                                   ---
-builtins/cd.def
-       - OLDPWD is now auto-exported
-       - broke the code out of bindpwd() that updated the value of PWD in
-         the export environment in-place and made it general, so it can
-         be used for OLDPWD, too (this should be made *more* general, and
-         moved to variables.c)
-
-                                   6/3
-                                   ---
-variables.c
-       - moved builtins/cd.def:export_pwd_var to here, renamed it to
-         update_export_env_inplace
-       - converted put_command_name_into_env to just call
-         update_export_env_inplace
-       - made dummy variable for OLDPWD, marked as invisible and exported,
-         in initialize_shell_variables
-
-variables.h
-       - extern declaration for update_export_env_inplace
-
-builtins/cd.def
-       - changed calls to export_pwd_var to update_export_env_inplace
-
-lib/readline/bind.c
-       - added missing return in rl_unbind_function_in_map
-       - changed _rl_read_file to check whether or not `read' returns
-         < 0 rather than < file_size
-       - _rl_read_init_file needs to free `openname' after calling
-         _rl_read_file, since it's not used again
-
-lib/readline/callback.c
-       - bogus extern declaration for `readline_internal_startup', should
-         be readline_internal_setup
-
-lib/readline/histfile.c
-       - read_history_range now checks whether read(2) returns < 0 rather
-         than checking the return value against the file size
-
-lib/readline/parens.c
-       - whoops -- timer.tv_usec is *micro* seconds, not milliseconds
-
-lib/readline/readline.c
-       - initialize `eof' to 1 in readline_internal_charloop
-
-                                   6/5
-                                   ---
-configure.in
-       - if we're configuring with an installed version of readline, set and
-         have configure substitute RL_INCLUDE to `-I$(includedir)', so the
-         build process uses the installed readline include files as well as
-         the libraries
-
-Makefile.in, builtins/Makefile.in
-       - add @RL_INCLUDE@ in the appropriate places, substituted by configure
-
-lib/readline/{history,readline}.h
-       - add `extern "C"' wrapper if `__cplusplus' is defined
-
-lib/glob/fnmatch.h
-       - include stdc.h
-       - add prototypes to extern declaration for fnmatch()
-
-lib/readline/rlstdc.h
-       - link to ../posixheaders/stdc.h (in readline lib with different name
-         for benefit of standalone readline library installation)
-
-lib/readline/{history,keymaps}.h
-       - include rlstdc.h
-       - add prototypes to all of the extern function declarations
-
-lib/readline/history.h
-       - the `data' member of a HIST_ENTRY is now a histdata_t, which is
-         either a void * (ansi c) or a char * (k&r c)
-
-lib/readline/readline.c
-       - changed calls to replace_history_entry to pass a histdata_t as the
-         third parameter
-
-                                   6/8
-                                   ---
-copy_cmd.c
-       - make sure that copy_cond_command doesn't blindly try to copy
-         com->op, since that will be null for AND and OR nodes, at least
-         [in bash-2.02.1]
-
-lib/readline/vi_mode.c
-       - added missing second argument to rl_vi_[fbe][Ww]ord(), since
-         they're used as pseudo-bindable commands (they appear in the
-         default funmap) as well as utility functions
-
-lib/readline/readline.h
-       - include rlstdc.h
-       - added prototypes for functions from vi_mode.c, util.c, terminal.c,
-         search.c, util.c, undo.c, readline.c, parens.c, macro.c, kill.c,
-         keymaps.c, isearch.c, input.c, funmap.c, display.c, complete.c,
-         callback.c, 
-       - added extern declarations for functions from rltty.c
-
-lib/readline/{readline,util}.c
-       - rl_refresh_line now takes the standard two arguments for bindable
-         commands; changed callers
-
-lib/readline/*.c
-       - small cleanups for incorrect arguments, etc. uncovered by use of
-         function prototypes
-
-bashline.c
-       - small cleanups for incorrect arguments, etc. uncovered by use of
-         function prototypes
-
-                                  6/11
-                                  ----
-jobs.c
-       - cast result of strsignal() to (char *) for the benefit of broken
-         Cray UNICOS machines
-         [in bash-2.02.1]
-
-configure.in,aclocal.m4
-       - new test, BASH_TYPE_BITS64_T, used to find out what basic type is
-         64 bits long; defaults to `double'
-       - call AC_CHECK_SIZEOF(double)
-
-config.h.in
-       - #define for bits64_t, undef by default
-
-                                  6/24
-                                  ----
-aclocal.m4
-       - changed BASH_TYPE_BITS64_T so that it checks the size of a char *
-         first, before trying sizeof(double)
-
-lib/readline/doc/rluser.texinfo,doc/{bash.1,readline.3}
-       - changed default binding for tilde-expand to M-&, since bash
-         overrides M-~ to force username completion
-
-bashline.c
-       - fixed an off-by-one error in hostnames_matching that exhibited
-         itself when an exact multiple of 16 hostnames matched (fix
-         from <davidg@nikhef.nl>)
-         [in bash-2.02.1]
-
-                                  6/30
-                                  ----
-lib/readline/readline.c
-       - the maximum numeric argument is now 1000000
-
-bashline.c
-       - fixed a bug in bash_directory_completion_hook that caused memory
-         to be freed twice if a directory name containing an unset
-         variable was completed and `set -u' had been set
-
-configure.in
-       - on LynxOS, add a -DRECYCLES_PIDS to LOCAL_CFLAGS
-
-execute_cmd.c
-       - make sure that the changes to make the shell fork early when
-         run in the background do not cause commands such as `%1 &'
-         to fork
-         [in bash-2.02.1]
-       - if RECYCLES_PIDS is defined, execute_command_internal sets
-         last_made_pid to NO_PID after waiting for a foreground process,
-         if the return status is 0 (fix from plai@Lynx.COM (Paul Lai))
-
-lib/readline/kill.c
-       - fixes from Andreas Schwab to rl_yank_last_arg that make it
-         behave better
-
-lib/readline/input.c
-       - fixes from Donald Beaudry <donb@sgi.com> to make the input buffering
-         and rl_stuff_char work right when the input buffer is nearly full
-         (probably not a problem with keyboard input, but maybe a problem
-         with programmers attempting to use rl_stuff_char to preload the
-         input buffer)
-
-                                  7/14
-                                  ----
-parse.y
-       - fix to decode_prompt_string so that the \$ expansion quotes the `$'
-         so it won't be processed by subsequent parameter expansion
-       - change read_token_word so a $$ appearing in a token is recognized
-         and parsed immediately, so a single or double quote after the
-         second `$' doesn't cause ANSI-C expansion or locale translation
-         (bug report from haertel@ichips.intel.com)
-
-                                  7/16
-                                  ----
-lib/readline/display.c
-       - fixed a bug that caused core dumps in xrealloc if the prompt was
-         longer than 1024 characters
-
-                                  7/21
-                                  ----
-builtins/mkbuiltins.c
-       - if the number of characters read from the .def file is less than
-         the file size reported by `stat', and the read completed without
-         errors, reset the file size to avoid writing garbage at the end
-         of the generated .c file (needed on WIN32 systems, doesn't hurt
-         on Unix)
-
-                                  7/22
-                                  ----
-CWRU/empty-for-wordlist
-       - patch from Brian Fox for parse.y to allow bash to accept an empty
-         `wordlist' after the `in' keyword in a for statement
-
-                                  7/23
-                                  ----
-doc/bash.1
-       - corrected the synopsis of the `for' and `select' statements to
-         indicate that the semicolon (or newline) after the optional
-         `in words' is required
-
-[bash-2.02.1 released]
-
-                                  7/28
-                                  ----
-lib/readline/display.c
-       - make sure visible_length is initialized to 0 in rl_expand_prompt.
-         Fix from Gerhard Niklasch <nikl@mathematik.tu-muenchen.de>.
-
-lib/glob/glob.c
-       - make sure that quotes are removed from the filename being globbed
-         in glob_vector() before calling the GLOB_TESTNAME macro if there
-         are no globbing characters in the pattern
-
-doc/Makefile.in
-       - make sure that builtins.1 is looked for in $(srcdir) when running
-         `make install' (it's still commented out, though)
-
-                                  7/30
-                                  ----
-config.h.bot
-       - if PROMPT_STRING_DECODE is not defined, define PPROMPT (the primary
-         prompt string) as "$ "
-
-variables.c
-       - if PROMPT_STRING_DECODE is not defined, and current_user.euid == 0,
-         PS1 defaults to "# ", otherwise it defaults to `primary_prompt'
-
-doc/bashbug.1
-       - fixed email address prep.ai.mit.edu -> gnu.org
-
-                                   8/3
-                                   ---
-support/shobj-conf
-       - add `solaris2' as a possible OS name, treated the same as sunos5
-
-                                   8/4
-                                   ---
-shell.c
-       - changed maybe_make_restricted() so that $ENV and $BASH_ENV are
-         read-only variables in a restricted shell
-
-doc/{bash.1,bashref.texi}
-       - added ENV and BASH_ENV to the list of readonly variables in
-         restricted mode
-
-parse.y
-       - added `do', `then', `else', `{', and `(' to the list of keywords
-         that may precede the `time' reserved word
-
-general.c
-       - added sanity checks to timeval_to_secs and clock_t_to_secs so
-         that if the fractional part is >= 1000, 1 is added to the
-         seconds and 1000 is subtracted from the fractional seconds
-
-                                   8/6
-                                   ---
-Makefile.in
-       - use $(CC_FOR_BUILD) to build mksignames
-
-configure.in
-       - changes to allow cross-building for BeOS as well as cygwin32
-
-cross-build/{beos-sig.h,x86-beos.cache}
-       - new files for cross-compiling for BeOS
-
-                                   8/7
-                                   ---
-Makefile.in
-       - changed rule for version.h to use && instead of if-then-else-fi to
-         make sure the recipe fails if mkversion.sh fails
-
-configure.in
-       - beos does not use the GNU malloc
-
-lib/sh/itos.c
-       - broke itos into inttostr(i, buf, len) and itos(i), which calls
-         inttostr and returns a newly-allocated string with the result
-
-support/mksignames.c
-       - define `SIGKILLTHR' if system include files define it
-
-externs.h
-       - extern declaration for inttostr(int, char *, int)
-
-                                  8/13
-                                  ----
-lib/sh/strtol.c
-       - include stdc.h before bashansi.h
-
-execute_cmd.c
-       - make sure that execute_cond_node treats `=' the same as `=='
-
-                                  8/25
-                                  ----
-variables.c, print_cmd.c
-       - changed some calls to itos to use inttostr instead
-
-cross-build/x86-beos.cache, {execute_cmd,general,shell,trap}.c
-       - some changes for BeOS (from fnf@ninemoons.com)
-
-lib/posixheaders/memalloc.h
-       - changes to handle case where we're using both gcc and the C
-         version of alloca(), or if we have alloca.h and we're using
-         the C version of alloca() (from fnf@ninemoons.com)
-
-lib/sh/oslib.c
-       - if bcopy or bzero are #defines, #undef them before defining
-         replacement functions
-
-support/config.guess
-       - recognize AmigaOS (from fnf@ninemoons.com)
-       - recognize BeOS running on various machines
-         (from fnf@ninemoons.com)
-
-support/config.sub
-       - change basic_machine definition for amiga; added amigaos
-         (from fnf@ninemoons.com)
-       - changed definitions for MIPS machines running Linux (from
-         fnf@ninemoons.com)
-       - recognize `beos' as a valid operating system
-         (from fnf@ninemoons.com)
-       - changed OS for *-cbm to `amigaos' rather than `amigados'
-         (from fnf@ninemoons.com)
-
-examples/functions/autoload.v3
-       - a new version, from Mark Kennedy <mtk@ny.ubs.com>
-
-lib/readline/readline.c
-       - new function, rl_delete_or_show_completions, like tcsh editing
-         function delete-char-or-list
-
-lib/readline/readline.h
-       - new extern declaration for rl_delete_or_show_completions
-
-lib/readline/funmap.c
-       - new bindable name `delete-char-or-list', like tcsh
-
-lib/readline/doc/rluser.texinfo, doc/{bash.1,readline.3}
-       - documented new delete-char-or-list command
-
-general.c
-       - fix full_pathname to keep it from generating things like
-         //foo when the current directory is /
-
-                                  8/27
-                                  ----
-builtins/fc.def
-       - fixed the help text for the -e option
-
-                                  8/28
-                                  ----
-support/shobj-conf
-       - added a clause for AIX 4.2 systems running gcc -- just the
-         standard gcc stuff for shared objects, but it has to come
-         before the other AIX 4.2 clause
-
-                                  8/31
-                                  ----
-shell.c
-       - some changes so that `set -e' is turned off while executing
-         the startup files
-
-                                   9/3
-                                   ---
-flags.c
-       - new variable, `restricted_shell', non-zero if the shell was
-         started in restricted mode
-
-flags.h
-       - extern declaration for restricted_shell
-
-shell.c
-       - new function, shell_is_restricted, returns 1 if the shell is
-         supposed to be restricted based on the basename of $0 or the
-         -r option
-       - set restricted_shell to the value returned by shell_is_restricted
-         before executing the startup files
-
-externs.h
-       - extern declaration for shell_is_restricted
-
-builtins/shopt.def
-       - new shopt variable, restricted_shell, indicates whether the shell
-         was restricted at startup -- useful in startup files
-
-doc/{bash.1,bashref.texi}
-       - documented new restricted_shell shopt option
-
-                                  9/15
-                                  ----
-lib/sh/rename.c
-       - new file, replacement for rename(2) if the OS doesn't provide it
-
-configure.in,config.h.in,Makefile.in,lib/sh/Makefile.in
-       - machinery for including rename.o in libsh.a
-
-nojobs.c
-       - make sure that set_tty_state returns a value
-
-builtins/mkbuiltins.c
-       - use a call to rename(2) instead of a link/unlink pair
-
-lib/glob/glob.c
-       - don't #define bcopy if bcopy is already defined
-
-lib/readline/histfile.c
-       - add a call to ftruncate for BeOS, which ignores the O_TRUNC flag
-         to open
-
-lib/readline/input.c
-       - make rl_getc loop if read returns -1/EINTR on BeOS
-
-configure.in
-       - set ARFLAGS and substitute it into the Makefiles
-
-{,builtins,lib/{glob,malloc,readline,sh,termcap,tilde}}/Makefile.in
-       - ARFLAGS is now substituted by configure
-       - use ARFLAGS in rules that create libraries using $(AR)
-
-builtins/printf.def
-       - fixed bug that caused a core dump when a modifier was supplied
-         in the format string without a conversion character (e.g. `%h')
-
-                                  9/17
-                                  ----
-lib/glob/glob.c
-       - if filenames starting with a dot don't have to be matched
-         explicitly (e.g., after a `shopt -s dotglob'), don't match
-         `.' or `..' in any case
-
-eval.c
-       - make sure that array assignments don't show up in the history list
-         (fix from Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
-
-lib/readline/complete.c
-       - fix to rl_menu_complete so it inserts a single completion properly
-         when a word matches only one filename
-
-                                  9/24
-                                  ----
-execute_cmd.c
-       - difftimeval should zero out the tv_usec field if the tv_sec field
-         is < 0
-       - addtimeval should check for tv_usec being == 1000000 and add one
-         to tv_sec if it is
-
-                                  9/25
-                                  ----
-subst.c
-       - fix to expand_word_internal to prevent non-whitespace IFS characters
-         from causing word splitting if they are not the results of an
-         expansion (not exactly right yet, but I think it's the result of a
-         problem with the ${...} end-brace-matching code in the parser)
-
-                                  9/28
-                                  ----
-parse.y
-       - new flag for parse_matched_pair -- P_FIRSTCLOSE -- which makes it not
-         count and match additional construct open characters
-       - change calls to parse_matched_pair when matching braces in
-         ${...} constructs (both unquoted and within double quotes) to
-         specify the P_FIRSTCLOSE flag to match POSIX.2 requirements
-
-subst.c
-       - changed fix from 9/25, now that the parser problem is fixed
-
-                                  9/30
-                                  ----
-variables.c
-       - change expansion of list of words between (...) in array assignments
-         to include pathname generation in assign_array_var_from_string
-
-doc/{bash.1,bashref.texi}
-       - clarified behavior of the shell at startup if running setuid, with
-         and without the -p option supplied
-
-                                  10/7
-                                  ----
-bashhist.c
-       - change default open(2) mode to 0600 instead of 0666 for `privacy
-         concerns'
-
-                                  10/13
-                                  -----
-lib/readline/display.c
-       - fixed a problem with displaying tabs after newlines, from
-         <qrczak@knm.org.pl>
-       - in update_line, if we are printing over existing material,
-         only call space_to_eol or _rl_clear_to_eol if lendiff is non-zero
-       - when moving the cursor in _rl_move_cursor_relative, only call
-         _rl_backspace if the current cursor position is strictly greater
-         than the desired cursor position
-
-                                  10/14
-                                  -----
-locale.c
-       - LC_ALL is no longer set automatically when LANG is assigned a value
-
-config.h.{top,bot}
-       - renamed to config-{top,bot}.h, respectively
-
-config.h.in
-       - include config-top.h and config-bot.h
-
-Makefile.in
-       - things now depend on config-top.h and config-bot.h
-
-subst.c
-       - minor changes to extract_dollar_brace_string and char_is_quoted to
-         allow things like "${PIP[TAB] to perform correct variable completion
-
-                                  10/15
-                                  -----
-builtins/Makefile.in
-       - add $(PROFILE_FLAGS) to the make recipe that creates `mkbuiltins',
-         so configuring with --enable-profiling works right
-
-                                  10/20
-                                  -----
-doc/bashref.texi
-       - documented the new --with-installed-readline option
-
-[bash-2.03-alpha1 frozen]
-
-                                  10/21
-                                  -----
-builtins/reserved.def
-       - fixed help text for { ... } to make it clear that a semicolon is
-         required before the closing brace
-
-                                  10/22
-                                  -----
-trap.c
-       - in decode_signal, don't bother calling strcasecmp if
-         signal_names[sig] is null or empty
-
-                                  11/2
-                                  ----
-configure.in
-       - make sure RL_LIBDIR and HIST_LIBDIR are assigned values even if
-         readline or history is configured out of the shell, so the -L
-         options have arguments in the link command
-
-test.c
-       - make test_syntax_error cause test to return a status > 1, to
-         conform to POSIX.2 4.62.8
-
-doc/readline.3
-       - make sure the SYNOPSIS section indicates that programmers should
-         include <stdio.h> before <readline.h>
-
-                                  11/9
-                                  ----
-Makefile.in
-       - install with explicit mode of 0755
-
-                                  11/10
-                                  -----
-builtins/test.def
-       - make sure that a missing `]' makes `[' exit with status 2, to
-         conform to POSIX.2 4.62.8
-
-command.h
-       - new word flag: W_NOGLOB, meaning to not perform globbing
-
-execute_cmd.c
-       - fix_assignment_statements now turns on the W_NOGLOB flag for
-         arguments to `assignment builtins' that have W_ASSIGNMENT set
-
-subst.c
-       - expand_word_internal needs to preserve the W_NOGLOB flag from
-         the word being expanded to the word being returned
-       - glob_expand_word_list does not call shell_glob_filename for a
-         word with W_NOGLOB set
-
-builtins/shopt.def
-       - print_shopt is now void
-
-configure.in
-       - machines running Rhapsody don't use the bash malloc
-       - pass host_vendor to the Makefiles with AC_SUBST
-
-support/config.guess
-       - Rhapsody is really rhapsody, not nextstep
-
-support/config.sub
-       - add rhapsody to the list of supported configurations
-
-Makefile.in
-       - pass CONF_HOSTTYPE, CONF_OSTYPE, and CONF_MACHTYPE as -D options
-         in SYSTEM_FLAGS, to indicate that they came from the configuration
-         process
-       - set VENDOR variable from host_vendor configuration variable
-       - pass CONF_VENDOR as part of SYSTEM_FLAGS
-
-variables.c
-       - define HOSTTYPE, OSTYPE, and MACHTYPE as CONF_HOSTTYPE, CONF_OSTYPE,
-         and CONF_MACHTYPE, respectively
-
-                                  11/11
-                                  -----
-doc/{bashref.texi,bash.1}
-       - updated description of `read' to clarify the -r option and its
-         effect on backslash escaping
-
-                                  11/13
-                                  -----
-examples/loadables/{ln,unlink}.c
-       - new loadable builtins
-
-                                  11/23
-                                  -----
-lib/glob/fnmatch.c
-       - some fixes to handle extended glob patterns immediately following
-         a `*'
-
-tests/extglob.tests
-       - updated with cases from bug report fixed today
-
-support/shobj-conf
-       - udpated stanza for aix 4.2 with gcc, based on information from
-         jik@cisco.com
-
-configure.in
-       - changes to add the correct linker options to allow dynamic linking
-         when using gcc on AIX 4.2, instead of insisting on the AIX C
-         compiler
-
-examples/misc/aliasconv.{bash,sh}
-       - changes to handle aliases with embedded single quotes
-
-                                  11/25
-                                  -----
-lib/readline/complete.c
-       - postprocess_matches should call compute_lcd_of_matches with an
-         argument of `t' instead of `text'
-       - postprocess_matches should never call ding(); leave that for the
-         callers
-       - postprocess_matches no longer needs `text' as the first argument
-       - rl_complete_internal needs to call ding() if postprocess_matches
-         returns 0, since postprocess_matches no longer does it
-       - rl_complete_internal can now free `text' immediately after calling
-         gen_completion_matches, since it's no longer used
-
-                                  11/30
-                                  -----
-print_cmd.c
-       - make sure redirections following compound commands have a space
-         separating them from the command
-
-                                  12/1
-                                  ----
-general.c
-       - changed canonicalize_pathname so that if the result path begins
-         with `//', it will be changed to `/' if and only if the original
-         path did not begin with `//' (there has to be a non-slash after
-         the leading `///' in the original path)
-
-                                  12/2
-                                  ----
-builtins/evalstring.c
-       - augment the test for turning on CMD_NO_FORK to make sure that
-         parse_and_execute_level == 1.  That takes care of things like
-
-               bash -c 'for f in 1 2 3; do eval "/bin/echo \"$f\"" ; done'
-
-         only printing one line of output
-
-                                  12/8
-                                  ----
-config-top.h
-       - add commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS so
-         that users may, if they choose, make things like
-
-               #! /bin/bash --login
-
-         work in shell scripts
-
-                                  12/10
-                                  -----
-jobs.c
-       - changes to the way jobs are reaped when the shell is not
-         interactive:
-
-               o notify_of_job_status no longer marks dead jobs as
-                 notified if they did not exit due to a signal;
-               o changed mark_background_jobs_as_notified to take an
-                 argument `force':  if zero, we only mark enough
-                 dead jobs as notified to keep CHILD_MAX jobs in the
-                 jobs list, as POSIX.2 specifies.  If non-zero, mark
-                 all dead jobs as notified;
-               o wait_for_background_pids marks all dead jobs as
-                 notified when it has finished waiting for everything,
-                 since the only thing that calls it is the `wait' builtin;
-               o wait_for_single_pid marks a job as notified after it
-                 has completed, since the only things that call it are
-                 wait_for_background_pids and the `wait' builtin
-               o wait_for_job marks the job as notified after the last
-                 pid completes
-
-execute_cmd.c
-       - change execute_subshell_builtin_or_function to check
-         subshell_environment and pipe_out to decide whether or not to fork
-         if builtin == jobs_builtin, since the early-forking code added in
-         bash-2.02 means that the piping has probably already been done
-
-                                  12/15
-                                  -----
-parse.y
-       - changes to make avar=((...)) a syntax error instead of ignoring
-         the nested parens and treating it as an array assignment
-
-shell.c
-       - changed run_startup_files so that any shell, whether or not it is
-         interactive, will run the login shell startup files when given the
-         --login option.  This happens only when not in posix mode.
-
-builtins/enable.def
-       - changes to handle Tenon's MachTen, whose dlclose() does not return
-         a value
-
-lib/glob/fnmatch.c
-       - changed gmatch so that when it calls extmatch, it removes FNM_PERIOD
-         from the flags if it's not matching at the start of the string.
-         This fixes the problem of `@' and `+' extended-glob subpatterns
-         containing bracket expressions treating `.' specially when matching
-         a portion of the string starting with `.'
-
-config-top.h
-       - removed define for NON_INTERACTIVE_LOGIN_SHELLS, since it's no longer
-         necessary
-
-                                  12/17
-                                  -----
-lib/readline/complete.c
-       - change rl_complete_internal and rl_menu_complete to check
-         rl_filename_completion_desired to decide whether or not we're
-         completing filenames instead of checking whether the attempted
-         completion function is filename_completion_function.
-         filename_completion_function sets rl_filename_completion_desired,
-         so this shouldn't break anything -- just allow postprocessing of
-         matches for user-supplied filename completion functions that don't
-         call filename_completion_function
-
-lib/readline/display.c
-       - new function, _rl_erase_entire_line, which erases the entire line,
-         no matter where the cursor is, and puts the cursor at the beginning
-         of the (newly-empty) line
-
-lib/readline/readline.c
-       - new application-level variable, rl_erase_empty_line, which, if
-         non-zero, tells readline to erase the contents of the current line,
-         prompt and all, if the only character typed to an otherwise-blank
-         line is bound to rl_newline.  Requested by the Cygnus GDB folks.
-       - change to rl_newline to suppress the call to _rl_update_final if
-         rl_erase_empty_line is non-zero, and rl_point == rl_end == 0, since
-         _rl_update_final calls crlf()
-       - change to readline_internal_charloop to call _rl_erase_entire_line
-         if newline was the only thing typed on an otherwise-empty line
-
-lib/readline/readline.h
-       - extern declaration for rl_erase_empty_line
-
-lib/readline/doc/rltech.texinfo
-       - documented new rl_erase_empty_line variable
-
-                                  12/18
-                                  -----
-Makefile.in
-       - changed RELSTATUS to `beta1'
-
-[bash-2.03-beta1 frozen]
-
-                                  12/21
-                                  -----
-doc/{bash.1,bashref.texi}
-       - added description of `test -h'; equivalent to `test -L'
-
-                                  12/22
-                                  -----
-support/shobj-conf
-       - SHOBJ_LDFLAGS should be those options to ld which are common
-         between building dynamically loadable shared objects and shared
-         libraries
-       - added two new variables: SHOBJ_XLDFLAGS, which are ld options
-         specific to building dynamically loaded shared objects, and
-         SHLIB_LIBS, which are other libraries against which shared libraries
-         should be linked.  These are for the benefit of AIX 4.2; other
-         stanzas do not need to be changed.
-
-configure.in
-       - add call to AC_SUBST for SHOBJ_XLDFLAGS
-
-examples/loadables/Makefile.in
-       - SHOBJ_XLDFLAGS is now substituted by configure
-       - $(SHOBJ_LDFLAGS) -> $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) in all
-         recipes that build loadable builtins
-
-                                  12/29
-                                  -----
-support/config.{guess,sub}
-       - changes for NEC SX4 machines running SUPER-UX (?).  Info from
-         Nicholas Clark <nick@flirble.org>
-
-lib/readline/bind.c
-       - new bindable variable, `isearch-terminators', which is the list of
-         characters that will terminate an incremental search without
-         subsequently executing the character as a command
-
-lib/readline/isearch.c
-       - changes to incorporate the new isearch-terminators bindable variable;
-         uses new private readline variable _rl_isearch_terminators
-         (suggested by Brian Fox)
-
-doc/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new `isearch-terminators' settable variable
-
-lib/readline/complete.c
-       - new convenience function, free_match_list, called from
-         rl_complete_internal
-
-                                  12/30
-                                  -----
-aclocal.m4
-       - changed the calls to AC_MSG_ERROR in the cross-compiling sections
-         to AC_MSG_WARN, since AC_MSG_ERROR can cause configure to abort
-
-examples/functions/which
-       - new function, emulation of `which' as it appears in FreeBSD
-
-                                  12/31
-                                  -----
-lib/readline/readline.c
-       - new bindable function: rl_rubout_or_delete.  Does rl_rubout if
-         rl_point is at the end of the line, or rl_delete if not.  This
-         is intended to mimic the Motif/Netscape/GNOME behavior of the
-         DEL character, and can be bound to delete to get that behavior
-
-lib/readline/readline.h
-       - new extern declaration for rl_rubout_or_delete
-
-lib/readline/funmap.c
-       - bound the name `forward-backward-delete-char' to
-         rl_rubout_or_delete (currently not bound to any keys)
-
-lib/readline/doc/manvers.texinfo
-       - new file with readline manual version information, to mantain
-         consistent numbering between readline and history manuals
-
-lib/readline/doc/{rlman,hist}.texinfo
-       - @include manvers.texinfo for version information
-       - moved the @dircategory and and @direntry directives inside
-         the @ifinfo block
-       - changed copyrights to 1988-1999
-
-doc/Makefile.in, lib/readline/doc/Makefile.in
-       - texi2html is now called with -menu (to handle the texinfo menus)
-         and -monolithic (to include the table of contents in the generated
-         HTML file instead of putting it in a separate file
-       - changed recipes to remove references to TOC html files
-
-lib/glob/fnmatch.c
-       - include <string.h> or <strings.h> as appropriate for strchr()
-         declaration
-
-                                1/4/1999
-                                --------
-print_cmd.c
-       - don't print bare words when printing conditional expressions in
-         print_cond_node, use cprintf("%s", cond->op->word)
-
-subst.c
-       - in separate_out_assignments, if VARLIST is non-null on function
-         entry, free it up to clean up after a previous error longjmp
-
-                                   1/5
-                                   ---
-configure.in
-       - make sure the case clause that disables the bash malloc on alpha
-         machines catches things like `alphaev56' as well as `alpha'
-
-                                  1/12
-                                  ----
-lib/readline/histlib.h
-       - new error message code: NO_PREV_SUBST
-
-lib/readline/histexpand.c
-       - handle NO_PREV_SUBST with appropriate error message in hist_error
-       - in history_expand_internal, if the `s' or `&' case results in a
-         null or empty LHS, return NO_PREV_SUBST
-
-error.c
-       - new interface: command_error(func, code, e, flags); intended to
-         collect command-related errors in one place
-       - new interface: command_errstr(code); returns a string describing
-         command error CODE
-
-error.h
-       - extern declarations for command_error and command_errstr
-
-command.h
-       - possible values for CODE in calls to command_error and command_errstr
-
-{shell,print_cmd,make_cmd,execute_cmd,dispose_cmd,eval}.c ,builtins/evalstring.c
-       - changed some calls to programming_error to use command_error
-
-                                  1/13
-                                  ----
-configure.in
-       - if --enable-profiling is specified on a solaris2 machine, don't
-         turn on enable-static-link, since it's very hard to build a
-         static binary on solaris2 and gprof does not (apparently) require it
-
-builtins/getopts.def
-       - add calls to sh_getopt_restore_state so the state is restored each
-         time getopts is called.  This protects us against the behavior of
-         some mallocs, which causes `nextchar' to be set to garbage in
-         getopt.c when a function is called between calls to getopts
-
-                                  1/14
-                                  ----
-lib/readline/complete.c
-       - if postprocess_matches returns 0 in rl_complete_internal, reset
-         completion_changed_buffer to 0 before returning, since nothing
-         has been changed
-
-                                  1/20
-                                  ----
-subst.c
-       - fixed pat_subst so that null patterns with a `#' specifier prefix
-         the string to be substituted on with the replacement, and null
-         patterns with a `%' specifier append the replacement to the string
-         to be substituted on
-
-doc/{bash.1,bashref.texi}
-       - corrected a small error in the description of parameter pattern
-         substitution
-
-support/mksignames.c
-       - SIGINFO means something else on sequent systems
-
-                                  1/26
-                                  ----
-execute_cmd.c
-       - fix to execute_simple_command to keep a child process from getting
-         a bad value of last_asynchronous_pid when the shell forks early
-
-                                   2/1
-                                   ---
-Makefile.in
-       - changed RELSTATUS to `beta2'
-
-                                   2/2
-                                   ---
-[bash-2.03-beta2 released]
-
-                                   2/3
-                                   ---
-tests/{cprint.{tests,right},run-cprint}
-       - new test to exercise the command printing and copying code --
-         hopefully this will avoid things like the `conditional commands
-         in functions make the shell abort' problem
-
-                                   2/4
-                                   ---
-version.c
-       - if MACHTYPE is not defined, use CONF_MACHTYPE if it's defined
-
-                                   2/5
-                                   ---
-builtins/read.def
-       - if READLINE is defined, we need an extra pair of braces around
-         the `while' loop that reads from fd 0 if the -e option is
-         supplied, otherwise the code erroneously tests the value of
-         `retval', which is not set when using readline
-
-                                  2/15
-                                  ----
-builtins/fc.def
-       - make sure that fc closes `stream' before calling fc_execute_file
-
-                                  2/17
-                                  ----
-builtins/fc.def
-       - don't bother opening and closing the file of commands before
-         calling fc_execute_file, since parse_and_execute will write the
-         commands to the history file for us
-
-Makefile.in
-       - changed release status to `release'
-
-                                  2/18
-                                  ----
-parse.y
-       - change to special_case_tokens so that `time' is not recognized
-         as a reserved word while the parser is parsing a case statement
-         pattern list (if `time' is the first pattern, the last read
-         token will be newline, which time_command_acceptable says is OK
-         to start a pipeline)
-
-pathexp.c
-       - some changes to the POSIX_GLOB_LIBRARY code (often unused)
-
-shell.c
-       - a couple of changes for Interix (nee OPENNT)
-       - added code that handles systems without a third argument to main();
-         initializing `env' from `environ', conditionalized on a cpp define
-         NO_MAIN_ENV_ARG
-
-configure.in, config.h.in
-       - check for the presence of sbrk(2); define HAVE_SBRK if found
-
-xmalloc.c
-       - don't do the space allocated computation when malloc or realloc
-         fails if HAVE_SBRK is not defined
-
-configure.in
-       - new configure variable, MAKE_SHELL, defaults to /bin/sh
-
-Makefile.in,{builtins,doc,support,lib/{glob,malloc,readline,sh,termcap,tilde},examples/loadables}/Makefile.in
-       - set SHELL from @MAKE_SHELL@
-
-lib/posixheaders/posixjmp.h
-       - Don't override defines for setjmp and longjmp in <setjmp.h> on
-         Internix (nee OPENNT)
-
-lib/readline/complete.c
-       - Interix (OPENNT) doesn't do username completion
-
-configure.in
-       - on Interix/OPENNT ($host_os == interix* or opennt*), add
-         -DNO_MAIN_ENV_ARG to LOCAL_CFLAGS
-       - on Interix/OPENNT, set MAKE_SHELL to $OPENNT_ROOT/bin/sh rather
-         than a straight /bin/sh
-
-cross-build/opennt.cache
-       - a `configure' cache file for Interix/OPENNT; not necessarily
-         for cross-compiling, but this is where the other system cache
-         files are
-
-[bash-2.03 released]
-
-                                  2/19
-                                  ----
-configure.in
-       - changed OPENNT_ROOT to INTERIX_ROOT for building on Interix
-
-support/config.guess
-       - added two stanzas for Interix running on alpha and intel hardware
-
-                                  2/22
-                                  ----
-config-bot.h
-       - if PROMPT_STRING_DECODE is not defined, #undef PPROMPT before
-         redefining it, to avoid warning messages
-
-execute_cmd.c
-       - set jobs_hack in execute_subshell_builtin_or_function only if
-         JOB_CONTROL is defined
-
-                                  2/24
-                                  ----
-trap.c
-       - fixed an obscure bug caused by a race condition in run_pending_traps.
-         Read the comments in the source code for a full description of the
-         problem and solution
-
-                                   3/1
-                                   ---
-aclocal.m4
-       - new test, BASH_STRUCT_TIMEVAL, which tries to compile a code
-         fragment that includes <sys/time.h> and <time.h> as appropriate
-         and defines HAVE_TIMEVAL if the compile succeeds
-
-configure.in
-       - call BASH_STRUCT_TIMEVAL rather than running a pair of
-         AC_HEADER_EGREPs on sys/time.h and time.h
-
-lib/readline/histfile.c
-       - include "posixstat.h" rather than <sys/stat.h>
-       - in history_truncate_file, only try to truncate if the history file
-         is a regular file
-
-                                   3/2
-                                   ---
-aclocal.m4
-       - changed BASH_STRUCT_TIMEVAL back to using a pair of
-         AC_EGREP_HEADERs instead of compiling a program fragment
-
-lib/readline/readline.c
-       - readline_internal_charloop should cast the first argument to
-         _rl_dispatch to `unsigned char' to avoid problems with negative
-         array indices on systems where signed chars are the default
-
-lib/readline/kill.c
-       - instead of doing a sequence of next_history() calls in
-         rl_yank_nth_arg_internal, save and restore the history
-         position explicitly after finding the correct entry.  This
-         attempts to ensure that rl_yank_nth_arg leaves the history
-         pointer set to the same position as when it was called.
-         Fix from Vasco Pedro <vp@di.fct.unl.pt>
-
-                                   3/5
-                                   ---
-redir.c
-       - broke code that opens file for redirection in do_redirection_internal
-         into a separate function: redir_open(path, flags, mode, ri)
-
-general.h
-       - changed STREQN so that it evaluates to 1 (strings are equivalent)
-         if N == 0, to match the behavior of strncmp
-
-lib/sh/zwrite.c
-       - new file, zwrite() from builtins/evalstring.c
-
-builtins/evalstring.c
-       - removed private definition of zwrite
-
-builtins/common.c
-       - double_quote needs to protect newlines with backslashes as well
-       - new function, un_double_quote, to remove backslashes proctecting
-         characters that are special in double quotes
-
-builtins/common.h
-       - new extern declaration for un_double_quote
-
-parse.y
-       - changed read_token_word to requote the expanded value of $'...'
-         using single_quote
-       - added a new flag to parse_matched_pair: P_ALLOWESC.  It allows
-         backslashes to quote embedded single quotes, and is used by
-         the $'...' translation code for better ksh93-compatibility
-       - changed localeexpand to call mk_msgstr on the string passed
-         before displaying it if all we're doing is displaying translatable
-         strings in `po' format.  mk_msgstr quotes backslashes and double
-         quotes in the string passed with backslashes, and encloses the
-         result in double quotes.  If only -D is supplied, the string is
-         not changed at all -- this is what ksh93 does
-
-lib/readline/rlconf.h
-       - removed PAREN_MATCHING #define, paren matching is always compiled
-         into readline
-
-lib/readline/parens.c
-       - removed code that was active if PAREN_MATCHING was not defined
-       - added _rl_enable_paren_matching, which is called when the readline
-         variable `blink-matching-paren' is assigned a value and changes
-         the appropriate key bindings in emacs_standard_keymap
-
-lib/readline/bind.c
-       - no more PAREN_MATCHING defines, `blink-matching-paren' is always
-         available
-       - if `blink-matching-paren' is assigned a value, call
-         _rl_enable_paren_matching (rl_blink_matching_paren)
-
-lib/readline/emacs_keymap.c
-       - removed PAREN_MATCHING defines; the default key bindings for
-         ), ], and } are self-insert
-
-                                   3/7
-                                   ---
-stringlib.c
-       - added an extra argument to ansicstr so that `echo -e' will not
-         convert \' to '
-
-externs.h
-       - changed extern declaration for ansicstr
-
-parse.y, builtins/{echo,printf}.def
-       - changed calls to ansicstr() appropriately
-
-eval.c
-       - in parse_string_to_word_list, if an unexpected token is encountered
-         that causes the string to not parse to a simple command, or to
-         completely consume the string, display an error message and jump
-         back to the top level after restoring the parsing environment,
-         returning an error status from the attempted assignment
-
-                                   3/8
-                                   ---
-lib/glob/fnmatch.c
-       - fixed patscan and extmatch to handle embedded [...](...) patterns
-         better
-
-tests/{extglob2.{tests,right},run-extglob2}
-       - an additional set of ksh extended globbing tests, cribbed from zsh
-
-                                  3/10
-                                  ----
-general.c
-       - changed unset_nodelay_mode slightly to make sure it handles both
-         O_NDELAY and O_NONBLOCK if they have different values; it now
-         returns a value of 0 on success (or no action); -1 on failure
-
-general.h
-       - changed extern declaration for unset_nodelay_mode
-
-
-lib/readline/shell.c
-       - new function: unset_nodelay_mode; identical to definition in
-         general.c
-
-lib/readline/input.c
-       - changed rl_getc to call unset_nodelay_mode if the read fails with
-         errno == EWOULDBLOCK || errno == EAGAIN
-
-                                  3/11
-                                  ----
-lib/termcap/termcap.c
-       - minor changes from termutils-2.0
-       - minor change to MS-DOS version of valid_filename_p so MS-DOS-specific
-         code from tgetent() can be removed (from Michel@smr.nl)
-
-lib/readline/bind.c
-       - in _rl_read_file, null-terminate the buffer at the number of
-         characters actually read, not what stat() says the file size is
-       - use ~/_inputrc as a last-ditch inputrc filename on MS-DOS
-
-lib/readline/complete.c
-       - change printable_part to handle MS-DOS `drive-letter:' pathname
-         prefixes
-       - removed __GO32__ code, since it's for DJGPP 1.x, which is not
-         supported any more, and they don't work for DJGPP 2.x
-       - added code to support MS-DOS drive letter prefixes and //X/...
-         to filename_completion_function
-       - _rl_completion_case_fold defaults to 1 on MS-DOS
-
-lib/readline/{display,input,readline,rltty,signals,terminal}.c
-       - removed __GO32__ code
-
-lib/readline/histfile.c
-       - make read_history_range and history_truncate_file work with the
-         actual number of characters read from the file, not the file size
-         as reported by stat()
-
-lib/readline/readline.c
-       - change bind_arrow_keys_internal to bind MS-DOS arrow keys to the
-         appropriate functions if __MSDOS__ is defined
-
-lib/readline/rltty.c
-       - make sure set_winsize is always defined, with a null body if
-         TIOCGWINSZ is not defined
-
-lib/readline/shell.c
-       - include <stdio.h>, since this file uses sprintf
-
-support/shobj-conf
-       - MS-DOS does not support shared objects
-
-lib/tilde/tilde.c
-       - change tilde_find_suffix and isolate_tilde_prefix to understand
-         backslash as a pathname separator on MS-DOS
-
-                                  3/12
-                                  ----
-lib/readline/{bind,readline,terminal}.c
-       - no longer need to include <signal.h>
-
-lib/readline/terminal.c
-       - don't need to include <setjmp.h>
-
-builtins/history.def
-       - broke the code than handles deleting a particular history entry
-         from the history list out into a separate function: delete_histent
-       - added `-d offset' option to delete the history entry at position
-         OFFSET, as displayed when the history is listed
-
-jobs.c, nojobs.c
-       - new function, count_all_jobs(), returns the number of active jobs
-         in the jobs list
-
-jobs.h
-       - extern declaration for count_all_jobs()
-
-configure.in
-       - check for C library function ttyname()
-
-config.h.in
-       - define HAVE_TTYNAME if configure finds ttyname(3)
-
-parse.y
-       - two new escape sequences for decode_prompt_string:
-
-               \j      number of active jobs in jobs list
-               \l      basename of shell's tty device name
-
-doc/{bash.1,bashref.texi}, lib/readline/doc/hsuser.texi
-       - documented new `history -d' option
-       - documented new \j and \l prompt string expansion sequences
-
-lib/readline/bind.c
-       - new static state variable, currently_reading_init_file, set to
-         1 while _rl_read_init_file is operating on a file
-       - changed _rl_init_file_error to include the name and line number
-         from the init file only if currently_reading_init_file is non-zero
-         (this is needed since applications like bash can call
-         rl_parse_and_bind, and error messages from those calls would be
-         misleading if they referred to the last inputrc file read
-
-bashline.c
-       - support for a `extended command keymap', which will allow
-         readline key sequences to be bound to unix commands using an
-         auxiliary keymap and a special function that knows how to execute
-         commands from it
-       - bind_keyseq_to_unix_command supports `bind -x'
-       - bash_execute_unix_command is the readline callback that looks in
-         an auxiliary keymap to find the shell command to execute for a
-         particular key sequence
-       - new variable, no_empty_command_completion, which suppresses $PATH
-         searching for command completion when TAB is typed on an empty
-         line
-
-bashline.h
-       - extern declaration for new function bind_keyseq_to_unix_command
-
-builtins/bind.def
-       - added `-x' option to bind a key sequence to a shell command
-
-builtins/help.def
-       - added `-s' option to just print a builtin's short_doc
-
-builtins/shopt.def
-       - added new shell option, no_empty_cmd_completion', mirroring value
-         of no_empty_command_completion
-
-doc/{bash.1,bashref.texi}
-       - documented new `bind -x' option
-       - documented new shopt `no_empty_cmd_completion' option
-       - documented new `help -s' option
-
-Makefile.in
-       - changed RELSTATUS to `devel'
-
-_distribution
-       - changed to `2.04'
-
-                                  3/15
-                                  ----
-support/shobj-conf
-       - add `-h $@' to linking options on Solaris 2 with gcc
-
-expr.c
-       - changes to add {pre,post}-{inc,dec}rement operators (++id, --id,
-         id++, id--).  These are somewhat more liberal than ksh93, and
-         may require more strict syntax checking down the line
-
-tests/arith.{tests,right}
-       - additional tests for {pre,post}-{inc,dec}rement operators
-
-                                  3/16
-                                  ----
-command.h
-       - structures and types for ksh-93-style arithmetic `for' command
-
-configure.in
-       - new `--enable-arith-for-command' option to compile arithmetic for
-         command code into the shell
-
-config.h.in
-       - new define, ARITH_FOR_COMMAND, turned on by configure
-
-parse.y
-       - changed read_token_word to parse a set of arithmetic for expressions
-         between (( and )) as long as the last token read before the `(('
-         was FOR
-       - added grammar rules to build arithmetic for commands
-
-make_cmd.c
-       - functions to parse (( ... )) into the three sub-expressions needed
-         for the arithmetic for command and create the command structures
-         (done this way instead of in the grammar rules to avoid forcing
-         users to quote special characters between the (( and )) )
-
-make_cmd.h
-       - extern declaration for make_arith_for_command
-
-copy_cmd.c
-       - code to copy arithmetic for commands
-
-dispose_cmd.c
-       - code to dispose of arithmetic for commands
-
-print_cmd.c
-       - code to print arithmetic for commands
-
-execute_cmd.c
-       - code to execute arithmetic for commands and note that they are
-         shell control structures for the piping code
-
-doc/{bash.1,bashref.texi}
-        - documented new arithmetic for command
-
-doc/bashref.texi
-       - documented new configure --enable-arith-for-command option
-
-                                  3/17
-                                  ----
-builtins/read.def
-       - added `-t timeout' option and code to support it
-
-                                  3/18
-                                  ----
-examples/loadables/Makefile.in
-       - various clean targets need to descend into perl
-
-examples/loadables/perl/Makefile.in
-       - added mostlyclean and maintainer-clean targets
-
-include
-       - new directory, with files from lib/posixheaders
-
-lib/posixheaders
-       - removed
-
-{posixwait,unionwait,maxpath}.h
-       - moved from top src directory to include subdir
-
-Makefile.in,builtins/Makefile.in,lib/{glob,malloc,sh,tilde}/Makefile.in
-       - updated dependencies and file lists for new include directory
-       - added BASHINCDIR variable, added -I${BASHINCDIR} to cc's include path
-
-MANIFEST,support/SYMLINKS
-       - updated for new include directory
-
-lib/readline/{ansi_stdlib,posixdir,posixjmp,posixstat,rlstdc}.h
-       - changed symlinks to point to ../../include rather than
-         ../posixheaders
-
-builtins/common.h
-       - changed `#include "../stdc.h"' to `#include "stdc.h"'
-
-builtins/{cd,exec,fc,history,pushd,source,type,umask,printf}.def
-builtins/{mkbuiltins,common,evalfile,evalstring,getopt}.c
-       - changed include specifications:
-               ../posixstat.h -> posixstat.h
-               ../filecntl.h -> filecntl.h
-               ../maxpath.h -> maxpath.h
-               ../memalloc.h -> memalloc.h
-
-include/shtty.h
-       - new file, contents of bashtty.h and code from jobs.c that includes
-         the appropriate terminal file
-
-lib/sh/shtty.c
-       - new file with some tty manipulation utility functions
-
-bashtty.h
-       - removed
-
-jobs.c, nojobs.c
-       - include shtty.h instead of bashty.h and other code that includes
-         the correct system-dependent tty include file
-
-lib/sh/Makefile.in
-       - added shtty.o as part of libsh.a
-
-MANIFEST
-       - added include/shtty.h and lib/sh/shtty.c, removed bashtty.h
-
-                                  3/19
-                                  ----
-lib/readline/display.c
-       - some more __MSDOS__ code to make readline work better with DJGPP:
-               output \r instead of tputs(term_cr, ...)
-
-lib/readline/terminal.c
-       - some changes for __DJGPP__ (one is of dubious value -- doesn't
-         DJGPP have a termcap library?)
-
-                                  3/23
-                                  ----
-configure.in
-       - make sure that the $CC argument to shobj-conf is quoted
-
-support/shobj-conf
-       - changes to SGI SHOBJ_LDFLAGS from David Kaelbling <drk@sgi.com>
-
-                                  3/24
-                                  ----
-lib/sh/zread.c
-       - interface to read(2) that restarts automatically if errno == EINTR
-
-externs.h
-       - new declarations for functions in lib/sh/{zread,zwrite}.c
-
-lib/sh/Makefile.in, Makefile.in
-       - add zread.c, zread.o to appropriate file lists
-
-{subst,input}.c, builtins/{evalstring.c,read.def}
-       - converted some loops around read() to call zread() instead
-
-lib/readline/rltty.h
-       - new struct _rl_tty_chars to save tty special characters
-
-lib/readline/rltty.c
-       - new function save_tty_chars to save tty special characters
-         (currently they're only saved -- nothing looks at them yet)
-       - two new internal library functions, _rl_disable_tty_signals ()
-         and _rl_restore_tty_signals (), intended to disable tty driver
-         signal processing for readline's literal-next code, so users
-         can do stuff like ^V^C and have ^C end up in the readline
-         buffer even if ^C is the terminal's interrupt character
-
-lib/readline/readline.c
-       - changed rl_quoted_insert to disable and restore tty signal
-         handling around the call to rl_read_key (), so users can put
-         tty special chars into the readline buffer
-
-                                  3/25
-                                  ----
-expr.c
-       - added `,' operator (expr1 , expr2) -- both expr1 and expr2 are
-         evaluated and the return value is the value of expr2.  Precedence
-         is higher than assignment (which makes it highest)
-       - make `lasttp' (pointer to last token) part of the expression
-         context that is saved and restored by {push,pop}_context.  This
-         is used only in error reporting
-
-doc/{bash.1,bashref.texi}
-       - documented new `,' arithmetic operator
-       - cleaned up some of the language concerning variables referenced
-         by name within an arithmetic expression
-
-lib/readline/readline.c
-       - new application-settable variable, rl_num_chars_to_read, which, if
-         set to a non-zero value, causes readline to return after reading
-         that many characters (or at least that many characters, if
-         rl_startup_hook is used to prime the input buffer) rather than
-         when reading a character bound to accept-line
-
-lib/readline/readline.h
-       - extern declaration for rl_num_chars_to_read
-
-builtins/read.def
-       - added new `-n nchars' option to read NCHARS from stdin rather than
-         a complete line.  Works both with and without using readline
-
-doc/{bash.1,builtins.texi}
-       - documented new `read -n nchars' option
-
-                                  3/26
-                                  ----
-execute_cmd.c
-       - make sure all uses of PIDs are of type pid_t
-
-redir.c
-       - broke stdin_redirects into two functions: stdin_redirection, which
-         checks a single redirection specification, and a new stdin_redirects,
-         which does what it did before but calls stdin_redirection for each
-         redirection in the chain
-
-                                  3/29
-                                  ----
-aclocal.m4
-       - new test, BASH_CHECK_DEV_STDIN, checks for /dev/stdin.  If it's
-         present HAVE_DEV_STDIN is defined and it's assumed that /dev/stdout
-         and /dev/stderr are present as well
-
-configure.in
-       - call BASH_CHECK_DEV_STDIN
-
-config.h.in
-       - add HAVE_DEV_STDIN, initially undefined
-
-test.c
-       - add /dev/std{in,out,err} to the special filenames that are handled
-         by test_stat() if HAVE_DEV_STDIN is not defined
-
-doc/{bash.1,bashref.texi}
-       - documented conditional expressions' handling of /dev/std{in,out,err}
-
-stringlib.c
-       - new function, find_string_in_alist, to find (or match as an extended
-         glob pattern) a string in a STRING_INT_ALIST and return the
-         associated token value
-
-externs.h
-       - extern declaration for find_string_in_alist
-
-redir.c
-       - new STRING_INT_ALIST list of filenames the redirection code handles
-         specially (_redir_special_filenames)
-       - new function, redir_special_open () to handle filenames found in
-         _redir_special_filenames (framework for /dev/tcp and /dev/udp, but
-         those are not implemented get)
-
-doc/{bash.1,bashref.texi}
-       - documented special filename handling in redirections
-
-                                  3/30
-                                  ----
-builtins/read.def
-       - added `-d delim' option, like ksh93, to read until delim rather
-         than newline
-
-doc/{bash.1,bashref.texi}
-       - documented new read `-d delim' option
-
-configure.in
-       - look for gethostbyname(3), inet_aton(3)
-       - look for <netdb.h> and <netinet/in.h>
-       - call BASH_FUNC_GETHOSTBYNAME if gethostbyname(3) is not in libc
-       - check for u_int and u_long types, default to `unsigned int' and
-         `unsigned long' respectively
-       - new enable option `--enable-net-redirections' to compile in the
-         /dev/tcp and /dev/udp redirection code
-
-aclocal.m4
-       - new macro, BASH_FUNC_GETHOSTBYNAME, looks for gethostbyname(3) in
-         the socket libraries if it's not found in libc
-
-config.h.in
-       - new defines: HAVE_GETHOSTBYNAME, HAVE_INET_ATON, HAVE_NETDB_H,
-         HAVE_NETINET_IN_H, NETWORK_REDIRECTIONS
-       - new defines: u_int, u_long
-
-lib/sh/inet_aton.c
-       - new file, from GNU libc, slightly modified to remove inet_addr()
-
-lib/sh/netopen.c
-       - new file, functions to create tcp/udp network connections.  Exports
-         a single function: netopen(pathname)
-
-externs.h
-       - extern declaration for netopen()
-
-lib/sh/Makefile.in, Makefile.in, MANIFEST
-       - added appropriate references to inet_aton.c and netopen.c
-
-config-bot.h
-       - if HAVE_SYS_SOCKET_H, HAVE_GETPEERNAME, and HAVE_NETINET_IN_H are
-         all defined, define HAVE_NETWORK
-
-redir.c
-       - call netopen for pathnames of the form /dev/(tcp|udp)/host/port
-         if HAVE_NETWORK is defined; print a warning message otherwise
-       - /dev/tcp and /dev/udp code is only compiled in if
-         NETWORK_REDIRECTIONS is defined
-
-                                  3/31
-                                  ----
-lib/sh/zread.c
-       - new function, zsyncfd(fd) which syncs the kernel's seek pointer on
-         FD with the last character returned by zreadc()
-
-externs.h
-       - extern declaration for zsyncfd
-
-builtins/read.def
-       - use zreadc if the input is not unbuffered (this cuts the number
-         of read(2) calls *way* down)
-       - if input is not unbuffered, call zsyncfd before returning to make
-         sure zreadc's buffering doesn't consume too much input
-
-                                   4/1
-                                   ---
-Makefile.in
-       - install bashbug with mode 555
-
-                                   4/2
-                                   ---
-shell.c
-       - make want_pending_command and read_from_stdin global rather than
-         local variables
-
-flags.c
-       - change which_set_flags to insert `c' and `s' if the `-c' and `-s'
-         invocation options, respectively, were supplied at shell startup
-
-bashline.c
-       - change bash_directory_completion_hook to change the logic for
-         deciding whether or not to parameter expand the directory name --
-         now we expand only if there's a `$' (still has problems if the
-         user quoted the `$') or a `` pair.  Fixes bug reported by
-         chuckjr@sinclair.net.  To fix the `$' problem, could possibly
-         check what the user typed with rl_line_buffer and start, end
-         parameters to gen_completion_matches
-       - changed attempt_shell_completion to slightly adjust the logic for
-         deciding whether or not a word is in a command position:  if the
-         word being completed has a single opening single or double quote
-         before the command separator, treat it as a candidate for (quoted)
-         command word completion
-       - now that we understand partially-quoted strings as completion
-         candidates, we can do command completion on certain unclosed
-         uses of $(...
-
-subst.c
-       - change extract_delimited_string to not return an error for an
-         unclosed construct if DOING_COMPLETION is non-zero
-
-                                   4/5
-                                   ---
-expr.c
-       - fixed `ss=09 ; let ss=10' bug by introducing one-token lookahead
-         after a string token is parsed.  If the next token is `=', we
-         don't evaluate the variable's value as an expression, since it's
-         not going to be used
-
-variables.h
-       - added new member to struct variable: exportstr -- for the future
-         caching of strings to be placed into the environment
-       - extern declaration for bind_variable_value
-
-variables.c
-       - make sure that the `exportstr' member of a struct variable is
-         initialized correctly, and put code in to free it where appropriate
-         (if non-null)
-       - new function, bind_variable_value(VAR, VALUE); make shell variable
-         VAR have value VALUE
-       - make sure var->exportstr is invalidated when a variable or function
-         is assigned a value
-
-builtins/declare.def
-       - call bind_variable_value instead of duplicating some of bind_variable
-         inline
-
-                                   4/6
-                                   ---
-variables.h
-       - new macros, VSETATTR and VUNSETATTR to set and clear variable
-         attributes
-
-builtins{read,set,setattr,declare}.def,{execute_cmd,expr,shell,subst,variables}.c
-       - change to use VSETATTR and VUNSETATTR
-
-                                   4/7
-                                   ---
-doc/Makefile.in
-       - if htmldir is set by configure, install the html files into that
-         directory with `make install' and remove them with `make uninstall'
-
-Makefile.in,doc/Makefile.in
-       - htmldir is set by configure and passed from the Makefile to the
-         install in the doc subdirectory
-
-configure.in
-       - substitute `htmldir' into Makefiles
-
-support/config.guess
-       - some small changes for Apple's Rhapsody
-
-lib/termcap/Makefile.in
-       - make the `distclean' and `maintainer-clean' targets remove Makefile
-
-lib/termcap/ltcap.h
-       - new private library include file, for Rhapsody __private_extern__
-         define
-
-lib/termcap/{termcap,tparam}.c
-       - include "ltcap.h"
-       - if HAVE_CONFIG_H is defined, include <stdlib.h> if HAVE_STDLIB_H is
-         defined, otherwise declare getenv, malloc, realloc as extern
-       - add __private_extern__ qualifier for extern data that Rhapsody
-         requires
-
-shell.c
-       - don't run the startup files in the rshd case if shell_level is >= 2
-         This should catch the case of
-               rsh machine bash -c 'echo a'
-         running the .bashrc twice, once for the shell started by rshd and
-         one for the shell running -c command
-
-                                   4/8
-                                   ---
-variables.c
-       - in initialize_shell_variables, unset the export attribute from
-         SSH_CLIENT if it exists and we got it from the initial environment
-
-shell.c
-       - don't bother unsetting export attribute from SSH_CLIENT, since we
-         now do it in initialize_shell_variables
-
-lib/readline/display.c
-       - don't check prompt_this_line[-2] in rl_redisplay if prompt_this_line
-         isn't at least 2 characters after the start of rl_display_prompt
-
-lib/readline/histfile.c
-       - change the name of the default history file to _history on MS-DOS
-
-lib/readline/histlib.h
-       - add an extern declaration for history_offset
-
-lib/readline/hist{expand,search}.c
-       - remove extern declaration for history_offset; now in histlib.h
-
-lib/readline/xmalloc.h
-       - new file, extern declarations for xmalloc, xrealloc, xfree
-
-lib/readline/rlprivate.h
-       - new file, with extern declarations for `readline private' global
-         variables and functions
-
-lib/readline/rlshell.h
-       - new file, with extern function declarations for stuff in shell.c
-
-lib/readline/Makefile.in
-       - add dependencies on xmalloc.h, rlshell.h
-       - add xmalloc.h, rlprivate.h to list of header files
-
-MANIFEST
-       - add lib/readline/xmalloc.h, lib/readline/rlprivate.h,
-         lib/readline/rlshell.h
-
-Makefile.in
-       - add $(RL_LIBSRC)/xmalloc, $(RL_LIBSRC)/rlprivate.h,
-         $(RL_LIBSRC)/rlshell.h to READLINE_SOURCE variable
-
-lib/readline/{bind,complete,display,funmap,histexpand,histfile,history,input,
-isearch,keymaps,kill,macro,readline,search,shell,util,vi_mode}.c
-       - include "xmalloc.h" rather than extern declarations for xmalloc,
-         xrealloc, xfree
-
-lib/readline/terminal.c
-       - new function, used in two places, _emx_get_screensize for EMX
-
-lib/readline/readline.c
-       - EMX apparently no longer needs _emx_build_environ
-
-lib/readline/signals.c
-       - support for __EMX__ in rl_signal_handler
-       - don't set the old handler passed to rl_set_sighandler to
-         rl_signal_handler, because that would cause infinite recursion if
-         that signal were generated
-
-lib/readline/xmalloc.c
-       - no longer the same as lib/malloc/xmalloc.c, which is no longer
-         used by anyone
-       - changes to include xmalloc.h, define READLINE_LIBRARY, change
-         some of the argument types
-
-lib/tilde/tilde.c
-       - add prototypes for extern function declarations if __STDC__
-         defined
-
-lib/readline/{terminal,bind,readline,nls,histexpand}.c
-       - include "rlshell.h" for function prototypes
-
-                                   4/9
-                                   ---
-lib/readline/{bind,callback,complete,display,input,isearch,kill,macro,nls,
-parens,readline,rltty,search,signals,terminal,util,vi_mode}.c
-       - include "rlprivate.h"
-       - remove extern declarations already in rlprivate.h
-
-xmalloc.c
-       - xfree should take a PTR_T as its argument
-
-general.h
-       - change prototype for xfree to use void * instead of char *
-
-lib/malloc/malloc.c
-       - define PTR_T like it is defined in general.h
-       - malloc() returns a PTR_T
-       - free() takes a PTR_T as its argument
-       - realloc() returns a PTR_T and takes a PTR_T as its first argument
-       - memalign returns a PTR_T
-       - valloc returns a PTR_T
-       - calloc returns a PTR_T
-       - cfree() takes a PTR_T
-
-variables.c
-       - new function: char **all_variables_matching_prefix (char *prefix)
-
-variables.h
-       - extern declaration for all_variables_matching_prefix
-
-bashline.c
-       - converted variable_completion_function to use
-         all_variables_matching_prefix
-
-stringlib.c
-       - new function, char **alloc_array(n), allocates an argv-style
-         array of strings with room for N members
-
-externs.h
-       - extern declaration for alloc_array
-
-                                  4/13
-                                  ----
-lib/readline/keymaps.c
-       - include "readline.h"
-       - remove extern function declarations
-
-include/stdc.h
-       - break the definition of __P out from a strict __STDC__ block,
-         since __GNUC__ and __cplusplus also indicate that prototypes
-         are available
-
-lib/readline/readline.h
-       - adjust conditional declaration of rl_message, since __cplusplus
-         indicates that prototypes are available
-
-lib/readline/rlstdc.h
-       - private copy, modified, no longer symlinked to ../../include/stdc.h
-       - __P is defined if __GNUC__ or __cplusplus is defined
-       - removed defines for __STRING, const, inline, signed, volatile, since
-         readline does not use them
-
-lib/readline/{search,readline}.c
-       - extern declaration for _rl_free_history_entry with prototypes,
-         since it's not in rlprivate.h
-
-lib/readline/history.h
-       - added some missing `extern's in function declarations
-
-lib/readline/undo.c
-       - include "rlprivate.h"
-
-lib/readline/shell.c
-       - include "rlshell.h"
-
-lib/readline/Makefile.in
-       - update dependencies for undo.c, shell.c
-
-lib/tilde/tilde.h
-       - add #define for __P if not already defined
-       - use prototypes in extern function declarations with __P()
-
-lib/readline/doc/rluserman.texinfo
-       - new file, derived from rlman.texinfo
-
-{bashline,findcmd,general,pathexp}.c, builtins/getopts.def
-       - call alloc_array(N) instead of (char **)xmalloc (N * sizeof (char *))
-
-subst.c
-       - added code to implement ksh-93 ${!prefix*} expansion
-
-doc/{bash.1,bashref.texi}
-       - documented new ${!prefix*} expansion
-
-                                  4/15
-                                  ----
-execute_cmd.c
-       - new variable, this_shell_function, points to SHELL_VAR of currently
-         executing shell function
-
-variables.c
-       - new dynamic variable, FUNCNAME -- invisible when not executing shell
-         function
-
-doc/{bash.1,bashref.texi}
-       - documented new FUNCNAME variable
-
-                                  4/16
-                                  ----
-support/rlvers.sh
-       - add -T option to specify correct termcap library
-
-configure.in
-       - Irix 4.x still needs to link with -lsun if it contains a replacement
-         getpwent function that works with NIS
-       - if we're configuring with an already-installed readline library,
-         call BASH_CHECK_LIB_TERMCAP and pass the resulting $TERMCAP_LIB to
-         support/rlvers.sh
-
-lib/readline/readline.c
-       - in rl_forward, if rl_point ends up being < 0, set it to 0
-
-lib/readline/exammples/excallback.c
-       - new callback example code, from `Jeff Solomon <jsolomon@stanford.edu>'
-
-lib/sh/getcwd.c
-       - define NULL as 0 if not defined by one of the standard include files
-       - cast result of malloc and realloc to (char *) where appropriate
-
-variables.c
-       - new functions for use by dynamic variables: null_assign and
-         null_array_assign.  Used as assign_func for a particular variable,
-         they cause assignments to that variable to be silently ignored
-       - FUNCNAME and GROUPS are no longer readonly
-       - FUNCNAME changed to use null_assign
-       - GROUPS changed to use null_array_assign.  This means that the
-         variable can be unset if desired (like for Oracle startup scripts),
-         but cannot be assigned to
-
-doc/{bash.1,bashref.texi}
-       - added text about assignments being silently discarded to descriptions
-         of FUNCNAME and GROUPS
-       - removed text saying that GROUPS is readonly
-       - added standard text about GROUPS being unset and losing its special
-         properties, even if reset
-
-command.h
-       - new command type, cm_subshell, actually causes the shell to fork
-         and then executes the command in the SUBSHELL_COM struct
-
-parse.y
-       - ( ... ) now creates a command of type cm_subshell, with the same
-         flag CMD_WANT_SUBSHELL as previous
-
-make_cmd.c
-       - new function make_subshell_command
-
-make_cmd.h
-       - extern declaration for make_subshell_command
-
-dispose_cmd.c
-       - code to destroy a SUBSHELL_COM
-
-copy_cmd.c
-       - code to duplicate a SUBSHELL_COM
-
-print_cmd.c
-       - code to print a SUBSHELL_COM
-
-execute_cmd.c
-       - broke the code that handles executing commands in subshells out of
-         execute_command_internal into a new function, execute_in_subshell,
-         with the same arguments
-       - executing a command of type cm_subshell is just a slightly special
-         case, handled in execute_in_subshell
-
-                                  4/18
-                                  ----
-execute_cmd.c
-       - changed code in execute_command_internal that executes subshell
-         commands to check for command->type == cm_subshell in addition to
-         checking that commmand->flags & CMD_WANT_SUBSHELL is non-zero
-       - changed execute_in_subshell to set the CMD_NO_FORK flag on the
-         command to be executed by a command of type cm_subshell
-         (command->value.Subshell->command), if that command is a simple
-         command (type == cm_simple) or a nested subshell (type == cm_subshell)
-         and is not being timed
-       - changed execute_command_internal to just call and return the value
-         returned by execute_in_subshell if it gets a command of type
-         cm_subshell with flags including CMD_NO_FORK
-
-lib/malloc/malloc.c
-       - morecore() should always return through morecore_done, not with a
-         simple `return'
-
-                                  4/20
-                                  ----
-variables.c
-       - new function, quote_array_assignment_chars, backslash quotes all
-         `[' and `]' before an `=' in a word that's part of the body of a
-         compound array assignment.  Needed because we run the list through
-         the globbing code now.  Don't bother if `=' does not appear in
-         the string or if the first char is not `['
-       - call quote_array_assignment_chars from assign_array_var_from_string
-         now
-
-eval.c
-       - moved parse_string_to_word_list to parse.y
-
-parse.y
-       - moved parse_string_to_word_list here.  Much simpler -- no longer
-         tries to parse a command, but just reads tokens using read_token().
-         Any token but a WORD or ASSIGNMENT_WORD causes a syntax error.
-         Don't have to mess around with saving global_command or calling
-         parse_command, but do need to save and restore the history stuff,
-         so the array assignment doesn't get saved on the history list
-
-                                  4/21
-                                  ----
-nojobs.c
-       - changed to use functions in lib/sh/shtty.c (tt{get,set}attr) for
-         the terminal attributes
-       - added a `flags' field to struct proc_status, flags are PROC_RUNNING
-         and PROC_NOTIFIED (status has been returned to `wait')
-       - functions check flags & PROC_RUNNING to check whether or not a
-         particular process is still alive; PROC_RUNNING is reset by
-         set_pid_status
-       - new function, mark_dead_jobs_as_notified, same function as the one
-         in jobs.c
-       - cleanup_dead_jobs reaps jobs only if they're dead and not marked
-         as notified
-       - wait_for_background pids marks all pids as notified and reaps them
-         before it returns, since it's called by the `wait' builtin
-       - wait_for_single_pid marks the pid being waited for as notified so
-         its slot can be reclaimed -- it's only called by the `wait' builtin
-       - new function, process_exit_status, to turn what wait(2) takes into
-         an exit status
-
-                                  4/22
-                                  ----
-nojobs.c
-       - add_pid takes a new second argument, async_p, which is non-zero if
-         the process is in the background
-       - new flag, PROC_ASYNC, set by add_pid
-       - set_pid_status now sets the PROC_NOTIFIED flag if PROC_ASYNC is unset,
-         so foreground jobs get cleaned up right away
-       - changed mark_dead_jobs_as_notified to take a `force' argument; if
-         non-zero, it marks only enough dead jobs to make the number of
-         un-notified dead jobs < CHILD_MAX
-       - new function, reap_dead_jobs, same as in jobs.c
-
-execute_cmd.c
-       - don't need separate cases for REAP any more
-
-                                  4/23
-                                  ----
-builtins/printf.def
-       - new function, tescape, which processes a single backslash
-         escape sequence and returns the number of characters consumed by
-         the argument string (code taken from bexpand)
-       - changed bexpand to call tescape rather than do backslash-escape
-         sequence conversion itself
-       - changed occurrences of `illegal' in error messages to `invalid'
-       - printf no longer calls ansicstr to translate backslash-escape
-         sequences; the mainline printf code now calls tescape whenever it
-         hits a backslash
-
-                                  4/26
-                                  ----
-subst.c
-       - new variable, garglist, set to list of words to be expanded after
-         leading assignment statements are removed
-       - command_substitute now calls maybe_make_exported_env before making
-         the child process if there are no variable assignments preceding
-         the command currently being expanded, or if the command currently
-         being expanded consists only of variable assignments
-
-execute_cmd.c
-       - the `early fork' code in execute_simple_command now calls
-         maybe_make_export_env before forking because execute_disk_command
-         would do that in the vast majority of cases, and this will obviate
-         the need to do it for subsequent commands if the environment does
-         not change
-
-                                  4/27
-                                  ----
-variables.h
-       - more macros to manipulate the exportstr member of a SHELL_VAR
-       - changed initialize_shell_variables to cache the value from the
-         environment as the initial exportstr for all imported variables
-       - changed make_var_array to use exportstr if it exists, instead
-         of computing the value
-       - changed make_var_array to cache exportstr for exported functions,
-         so they don't have to be deparsed every time the export env is
-         remade
-
-                                  4/28
-                                  ----
-lib/readline/{histlib,rldefs}.h
-       - changed STREQN macro to evaluate to 1 if the third argument is 0
-
-lib/readline/search.c
-       - changed rl_history_search_{for,back}ward so they leave point at
-         the end of the line when the string to search for is empty, like
-         previous-history and next-history
-       - broke common code out of rl_history_search_{for,back}ward into
-         a new function, rl_history_search_reinit
-       - rewrote rl_history_search_internal to be more like the
-         non-incremental search functions, use noninc_search_from_pos,
-         and leave the last history line found in the current line buffer
-         if the search fails
-       - new function, make_history_line_current, takes care of making
-         the current line buffer a copy of the history entry passed as an
-         argument; used by rl_history_search_internal and noninc_dosearch
-
-subst.c
-       - make ${!prefix@} be the same as ${!prefix*} for (undocumented)
-         ksh93 compatibility
-
-                                  4/30
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - added note about including <readline/readline.h>, and that <stdio.h>
-         should be included before readline.h
-
-lib/readline/doc/hstech.texinfo
-       - added note about including <readline/history.h>
-
-lib/readline/doc/manvers.texinfo
-       - updated version to 4.1
-
-lib/readline/{bind,complete,display,isearch,nls,parens,readline,signals,tilde,
-histexpand}.c
-       - added prototypes with __P((...)) for forward static function
-         declarations
-
-lib/readline/display.c
-       - broke the code that initializes VISIBLE_LINE and INVISIBLE_LINE out
-         of rl_redisplay into a new function, init_line_structures, which
-         takes an argument giving the minimum number of characters that the
-         line must hold 
-       - new function for use by applications that want to display the
-         initial prompt themselves rather than having the first call to
-         readline do it:  rl_on_new_line_with_prompt (modified from code in
-         the CLISP distribution)
-
-lib/readline/readline.c
-       - new external variable, rl_already_prompted, to let readline know
-         that the prompt string has already been displayed on the screen
-         before the first call to readline
-       - test rl_already_prompted before displaying the prompt in
-         readline_internal_setup
-       - if rl_already_prompted is non-zero, readline_internal_setup calls
-         rl_on_new_line_with_prompt instead of rl_on_new_line
-
-lib/readline/readline.h
-       - extern declaration for rl_on_new_line_with_prompt
-       - extern declaration for rl_already_prompted
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_on_new_line_with_prompt and rl_already_prompted
-
-builtins/read.def
-       - new -s option (silent mode).  Input from a terminal is not echoed
-
-doc/{bash.1,bashref.texi}
-       - documented new `-s' option to read builtin
-
-                                   5/3
-                                   ---
-lib/readline/vi_mode.c
-       - replaced references to rl_getc with (*rl_getc_function)
-
-[bash-2.04-devel frozen]
-
-                                   5/5
-                                   ---
-subst.c
-       - make sure that verify_substring_values always passes malloc'd
-         memory to maybe_expand_string as the string to be expanded,
-         since it gets freed on errors
-
-support/shobj-conf
-       - don't need -R option for shared libraries on Solaris
-       - new stanza for OSF/1 machines with gcc
-
-lib/readline/readline.c
-       - new variable, rl_gnu_readline_p, always 1.  Available to allow
-         readline users to test whether or not they're linking against
-         the true readline, rather than some bogus replacement (from CLISP)
-
-lib/readline/readline.h
-       - extern declaration for rl_gnu_readline_p
-
-hashlib.h, hashcmd.h
-       - added prototypes to extern function declarations
-
-pcomplete.h
-       - new file, declarations for the programmable completion stuff
-
-pcomplib.c
-       - new file, library functions for programmable completion
-
-                                   5/6
-                                   ---
-builtins/complete.def
-       - new file, interface to programmable completion management
-
-configure.in
-       - new enable argument --enable-progcomp, defines
-         PROGRAMMABLE_COMPLETION
-
-config.h.in
-       - #define for PROGRAMMABLE_COMPLETION
-
-config-bot.h
-       - if PROGRAMMABLE_COMPLETION is defined and READLINE is not,
-         #undef PROGRAMMABLE_COMPLETION
-
-pcomplete.c
-       - new file, placeholder for programmable completion generators and
-         associated functions
-
-Makefile.in, builtins/Makefile.in
-       - changes to add pcomplete.c, builtins/complete.def
-
-                                   5/7
-                                   ---
-subst.c
-       - new function, #ifdef READLINE, skip_to_delim (s, i, delims).
-         Starting at s[i], return the index of the first character in s
-         that is contained in delims.  Understands shell quoting.
-       - added two arguments to list_string_with_quotes: an index to
-         watch for, and a pointer to int to return the index into the
-         created word list of the word containing the sentinel.  Now
-         compiled in all the time.  The returned index starts at 1.
-
-subst.h
-       - extern declarations for char_is_quoted, unclosed_pair, and
-         skip_to_delim
-       - changed extern declaration for list_string_with_quotes, moved
-         it out of the #ifdef ARRAY_VARS section
-
-bashline.c
-       - removed extern declarations for char_is_quoted and unclosed_pair
-
-variables.c
-       - new function, SHELL_VAR **all_exported_variables()
-       = new function, SHELL_VAR **all_array_variables(), #ifdef ARRAY_VARS
-
-variables.h
-       - extern declaration for all_exported_variables, all_array_variables
-
-lib/sh/strpbrk.c
-       - replacement if we don't have strpbrk(3)
-
-configure.in, config.h.in
-       - check for strpbrk(3), define HAVE_STRPBRK if found
-
-builtins/shopt.def
-       - new function, char **get_shopt_options (), returns an array of
-         shopt option names
-
-builtins/set.def
-       - new function, char **get_minus_o_opts (), returns an array of
-         `set -o' option names
-
-builtins/common.h
-       - extern declarations for get_shopt_options, get_minus_o_opts
-
-                                  5/10
-                                  ----
-pathexp.c
-       - make the POSIX_GLOB_LIBRARY code implement the GLOBIGNORE stuff
-
-                                  5/11
-                                  ----
-array.c
-       - new convenience function, char **array_to_argv (ARRAY *),
-         converts an array to a list of string values
-
-array.h
-       - extern declaration for array_to_argv
-
-execute_cmd.c
-       - new convenience function, int execute_shell_function (SHELL_VAR *,
-         WORD_LIST *)
-
-execute_cmd.h
-       - extern declaration for execute_shell_function
-
-builtins/evalstring.c
-       - make parse_and_execute unwind_protect current_prompt_string
-         if the shell is interactive
-
-                                  5/12
-                                  ----
-variables.c
-       - moved bind_int_variable from expr.c to here; it now returns a
-         SHELL_VAR *, like the other variable binding functions
-
-variables.h
-       - extern declaration for bind_int_variable
-
-                                  5/14
-                                  ----
-bashline.c, parse.y, general.c, make_cmd.c, subst.c, braces.c, execute_cmd.c
-       - replaced some common code sequences with calls to substring()
-
-lib/readline/doc/rltech.texinfo
-       - fixed small typo in description of rl_completion_entry_function
-
-                                  5/18
-                                  ----
-stringlib.c
-       - new function, strcreplace(char *string, int c, char *text, int do_glob)
-         replaces all occurrences of C in STRING with TEXT.  Backslash may
-         be used to quote C.  If DO_GLOB is non-zero, the replacement TEXT
-         is quoted to protect globbing characters.
-
-externs.h
-       - extern declaration for strcreplace
-
-bashhist.c
-       - use strcreplace in expand_histignore_pattern
-
-pcomplete.c
-       - finished initial implementation of programmable completion
-
-alias.c
-       - code to set the aliases itemlist to dirty when an alias is added
-         or removed, if PROGRAMMABLE_COMPLETION is defined
-
-variables.c
-       - code to set the functions itemlist to dirty when a shell function
-         is added or removed, if PROGRAMMABLE_COMPLETION is defined
-
-builtins/enable.def
-       - code to set the builtins itemlist to dirty when a shell builtin
-         is added or removed, if PROGRAMMABLE_COMPLETION is defined
-       - code to set the enabled and disabled itemlists to dirty when a
-         builtin is enabled or disabled, if PROGRAMMABLE_COMPLETION is
-         defined
-
-builtins/shopt.def
-       - new shell option, `progcomp', on if programmable_completion_enabled
-         (from pcomplete.c) is non-zero
-
-doc/{bash.1,bashref.texi}
-       - note that `${' is not eligible for brace expansion to avoid
-         conflicts with parameter expansion
-
-                                  5/19
-                                  ----
-builtins/complete.def
-       - added a new `compgen' builtin for use by completion functions
-
-                                  5/21
-                                  ----
-bashline.c
-       - new function, void clear_hostname_list(void), to delete all the
-         entries in the hostname completion list
-
-bashline.h
-       - extern declaration for clear_hostname_list
-
-variables.c
-       - changed sv_hostfile to clear the hostname list if $HOSTFILE is
-         unset
-
-doc/{bash.1,bashref.texi}
-       - documented new behavior of HOSTFILE when it's unset
-       - added some awkwardly-worded text to make it clear that an
-         interactive shell cannot be started with non-option arguments
-         or with the -c option
-
-shell.c
-       - restored NON_INTERACTIVE_LOGIN_SHELLS test, so that if it is
-         defined, shells with argv[0][0] == '-' and not in posix mode
-         run the startup files even if non-interactive
-
-config-top.h
-       - added commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS
-
-                                  5/24
-                                  ----
-subst.c
-       - make sure the characters in IFS are cast to unsigned before being
-         indexed in ifscmap (expand_word_internal)
-
-                                  5/25
-                                  ----
-parse.y
-       - change grammar rule for arithmetic for expressions to handle a
-         list_terminator after the `))' instead of requiring a newline_list
-
-subst.c
-       - fix so that variable indirection can reference the shell's special
-         variables (like $0...$9, $$, $#, etc.)
-
-pcomplete.c
-       - changed gen_wordlist_matches to use split_at_delims to split the
-         string at $IFS first, then expand each individual word
-
-                                  5/27
-                                  ----
-lib/readline/histfile.c
-       - change things so that O_BINARY mode is used when reading and writing
-         the history file on cygwin32 as well as OS/2 (__EMX__)
-
-parse.y
-       - add calls to push_delimiter and pop_delimiter around the call
-         to parse_matched_pair when parsing $'...' and $"..." so the
-         history entry is added correctly
-
-                                  5/28
-                                  ----
-doc/{bash.1,bashref.texi}, lib/readline/doc/rluser.texinfo
-       - documented new programmable completion facilities
-
-doc/bashref.texi
-       - documented new configure `--enable-progcomp' option
-
-                                   6/1
-                                   ---
-variables.c
-       - if make_local_variable is being asked to make a local shadow
-         variable of a read-only variable, print an error message and
-         return NULL
-       - if make_local_variable returns NULL to make_local_array_variable,
-         just return it
-
-builtins/declare.def
-       - if we're making local variables, and make_local_array_variable or
-         make_local_variable returns NULL, just flag an error and go on
-
-                                   6/2
-                                   ---
-Makefile.in
-       - changed release status to `alpha1'
-
-[bash-2.04-alpha1 frozen]
-
-                                  6/18
-                                  ----
-bashline.c
-       - fixed find_cmd_start so that it doesn't spin-loop on commands with
-         a command separator like `;' or `&'.  Problem was not incrementing
-         `os' past the delimiter found
-
-                                  6/21
-                                  ----
-variables.c
-       - cosmetic change: introduced two macros to encapsulate initialization
-         of dynamic variables
-
-                                  6/23
-                                  ----
-pcomplib.c
-       - new function: num_progcomps(void), returns the number of entries in
-         the programmable completions hash table
-
-pcomplete.h
-       - extern declaration for num_progcomps
-
-bashline.c
-       - make sure some programmable completions have been defined before
-         diving into the programmable completion code
-
-shell.c
-       - in open_shell_script, move the fd opened to the script to a high
-         one with move_to_high_fd in all cases -- the buffered input code
-         still has problems if fd == 0 and later on fd 0 is closed or
-         redirected (cf. input.c:check_bash_input())
-
-builtins/printf.def
-       - getlong() now calls strtol directly with a third argument of 0 so
-         it can handle 0x (hex) and 0 (octal) prefixes, which legal_number
-         does not -- this has implications for arguments to %d that begin
-         with `0'
-
-lib/sh/getenv.c
-       - make sure that the variable found in the temporary environment has
-         a non-null value before calling savestring() on it
-
-subst.c
-       - make sure split_at_delims returns 0 in *nwp and *cwp if handed a
-         null or empty string
-
-pcomplete.c
-       - make sure build_arg_list handles lwords == 0, as it will be if an
-         empty command line is handed to the programmable completion code
-         (like compgen -C xyz)
-
-execute_cmd.c
-       - make sure execute_shell_function passes a non-null bitmap of fds to
-         close to execute_function, allocating and deallocating it locally
-
-sig.c
-       - don't mess with SIGPROF in initialize_terminating_signals
-
-jobs.c, nojobs.c
-       - if the user has requested it with checkwinsize, check for a new
-         window size after a job exits due to a signal as well as being
-         stopped
-
-lib/readline/kill.c
-       - changed rl_kill_region to set the point to the beginning of the
-         region after the kill is performed
-
-                                  6/24
-                                  ----
-configure.in
-       - make sure ranges ([1-9]*) are protected with [...] for m4 quoting
-
-variables.c
-       - make sure that bind_variable_value honors `set -a' and that it
-         marks the environment for recreation if necessary
-
-                                  6/25
-                                  ----
-lib/readline/complete.c
-       - if we're completing at the end of the line, find_completion_word
-         shouldn't test whether the character is a special word break
-         char and (possibly) advance rl_point past the end of the buffer
-
-parse.y
-       - change mk_msgstr to write embedded newlines as `\n"<NL>"', as the
-         PO file format apparently requires
-
-                                  6/28
-                                  ----
-lib/readline/display.c
-       - code to manage the growth of the inv_lbreaks and vis_lbreaks arrays
-         beyond 256, since there are pathalogical command lines that can
-         have more than 256 line breaks for redisplay
-
-                                  6/30
-                                  ----
-stringlib.c
-       - include pathexp.h for extern declaration of quote_globbing_chars
-
-variables.h
-       - change CACHE_EXPORTSTR to savestring() the value and not set the
-         att_importstr flag
-
-                                   7/6
-                                   ---
-support/bashbug.sh
-       - bashbug now accepts --help and --version options
-
-bashline.c
-       - change bash_quote_filename to use single quotes if the user
-         does not specify an opening quote character and the filename being
-         completed contains newlines
-
-                                   7/8
-                                   ---
-configure.in, aclocal.m4, config.h.in
-       - BASH_TYPE_INT32_T --> BASH_TYPE_BITS32_T; int32_t --> bits32_t
-       - BASH_TYPE_U_INT32_T --> BASH_TYPE_U_BITS32_T; u_int32_t --> u_bits32_t
-
-lib/malloc/{malloc,gmalloc}.c, lib/sh/inet_aton.c
-       - int32_t --> bits32_t; u_int32_t --> u_bits32_t
-
-aclocal.m4
-       - new tests: BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T
-
-configure.in
-       - add check for sizeof short, sizeof char
-       - call BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T
-
-config.h.in
-       - new #defines for bits16_t, u_bits16_t
-
-lib/malloc/malloc.c
-       - use u_bits16_t for type of mi_magic2
-
-
-                                  7/16
-                                  ----
-lib/readline/display.c
-       - new private library function, _rl_strip_prompt, to remove instances
-         of RL_PROMPT_{START,END}_IGNORE from the passed prompt string
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_strip_prompt
-
-lib/readline/readline.c
-       - call _rl_strip_prompt before outputting the prompt if we're not
-         doing any echoing of input chars (readline_echoing_p == 0)
-
-Makefile.in
-       - tentative change to rule for parser-built: use $< instead of
-         `y.tab.h' in recipe
-
-                                  7/19
-                                  ----
-support/config.{guess,sub}
-       - add code to handle all versions of Mac OS (e.g., Mac OS X)
-
-                                  7/26
-                                  ----
-lib/readline/bind.c
-       - on cygwin32, treat \r\n as a line terminator when reading the
-         inputrc file
-
-                                  7/29
-                                  ----
-lib/sh/netopen.c
-       - fixed problem in _getaddr with copying the address returned from
-         gethostbyname to the `struct in_addr *' argument -- hostnames
-         now work in /dev/(tcp|udp)/host/port
-
-                                   8/2
-                                   ---
-configure.in
-       - on Apple Rhapsody systems, set LOCAL_CFLAGS to -DRHAPSODY
-
-variables.h
-       - changes from Apple for building fat binaries on Rhapsody,
-         setting HOSTYPE, OSTYPE, VENDOR, and MACHTYPE
-
-lib/readline/terminal.c
-       - some work on the `dumb terminal' setup code in _rl_init_terminal_io
-         to make sure it's complete for use by the redisplay code and some
-         stuff in {readline,complete}.c
-
-lib/readline/display.c
-       - new function, _rl_current_display_line, returns the number of
-         lines down from the first `screen line' of the current readline
-         line the cursor is
-
-lib/readline/readline.c
-       - make rl_refresh_line call _rl_current_display_line
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_current_display_line
-
-                                   8/3
-                                   ---
-doc/bashref.texi
-       - reorganized slightly:
-               o a new shell builtins chapter
-               o a new shell variables chapter
-               o a new special builtins section
-               o bourne shell features chapter removed
-               o alias builtins moved to the bash builtins section
-               o bourne shell differences moved to appendix
-               o order of readline and history chapters swapped
-               o indices are now unnumbered appendices
-               o some text cleaned up and some explanatory text added
-
-lib/readline/terminal.c
-       - if a calling application is using a custom redisplay function,
-         don't call tgetent to get the terminal attributes, since those
-         are used only by the redisplay code.  Still get the window
-         size, though
-
-lib/glob/fnmatch.c
-       - range comparisons in bracket expressions no longer use strcoll(3),
-         since in some locales (de, for example), [A-Z] matches all
-         characters
-
-parse.y, print_cmd.c
-       - some changes to make sure the shell compiles when
-         DPAREN_ARITHMETIC is not defined but ARITH_FOR_COMMAND is
-
-                                   8/5
-                                   ---
-redir.c
-       - in the here document code in do_redirection_internal, check
-         that the file descriptor returned by here_document_to_fd is not
-         the same as a file descriptor specified as the redirector
-         before closing it
-
-                                   8/6
-                                   ---
-parse.y
-       - make sure the pipline rule for `timespec BANG pipeline' sets the
-         CMD_INVERT_RETURN flag for the pipeline command
-
-builtins/wait.def
-       - use setjmp with a special jump buffer to take longjmps in the
-         case that a SIGINT is received while waiting for jobs or processes
-         it makes wait return with a status > 128, as POSIX.2 specifies
-
-{jobs,nojobs}.c
-       - changed wait_sigint_handler to longjmp to wait_intr_buf if it's
-         executing the wait builtin and SIGINT is trapped.  It calls
-         trap_handler to make sure a pending trap for SIGINT is set also,
-         so the trap is taken when the wait builtin returns
-
-                                   8/9
-                                   ---
-jobs.c
-       - save and restore the value of errno in sigchld_handler
-
-trap.c
-       - save and restore the value of errno in trap_handler
-
-                                  8/10
-                                  ----
-Makefile.in
-       - changed release status to beta1
-
-                                  8/13
-                                  ----
-include/posixtime.h
-       - new file to encapsulate the <time.h> and <sys/time.h> mess
-
-Makefile.in
-       - add posixtime.h to list of include files in BASHINCFILES
-       - update dependencies for general.o, execute_cmd.o
-
-general.c, execute_cmd.c, builtins/times.def
-       - include posixtime.h instead of <time.h>, <sys/time.h>
-
-general.c
-       - protect inclusion of <sys/times.h> with HAVE_SYS_TIMES_H check
-
-builtins/Makefile.in
-       - update dependencies for times.o
-
-                                  8/16
-                                  ----
-lib/sh/timeval.c
-       - moved functions dealing with struct timevals here from general.c
-         and execute_cmd.c
-
-lib/sh/clock.c
-       - moved functions dealing with clock_ts here from general.c
-         (print_time_in_hz renamed to print_clock_t)
-
-externs.h
-       - moved extern declarations for timeval_to_secs and print_timeval
-         here from general.h
-       - moved extern declarations for clock_t_to_secs and print_clock_t
-         here from general.h
-
-builtins/times.def
-       - calls to print_time_in_hz changed to print_clock_t
-
-Makefile.in
-       - added references for lib/sh/timeval.c and lib/sh/clock.c
-
-lib/sh/Makefile.in
-       - clock.o and timeval.o are now included in libsh.a
-
-                                  8/23
-                                  ----
-execute_cmd.c
-       - make sure last_command_exit_value is updated before running a
-         DEBUG trap in the cm_simple case of execute_command_internal
-
-lib/readline/display.c
-       - new function, static void redraw_prompt (char *), used to
-         redraw the last line of a multiline prompt that possibly
-         contains terminal escape sequences
-       - call redraw_prompt from _rl_redisplay_after_sigwinch
-
-                                  8/24
-                                  ----
-lib/readline/bind.c
-       - new struct with names of string-valued readline variables and
-         handler functions to call when the variable is set
-       - changed rl_variable_bind to use functions to find boolean vars
-         and string vars in their respective lists
-       - new function, bool_to_int, to translate a boolean value that may
-         appear as an argument to `set <boolean-var-name>' to 1 or 0
-       - new function, hack_special_boolean_var, called if the element in
-         the boolean_vars struct has the V_SPECIAL flag set, to provide
-         any necessary other action when a boolean variable is set
-       - new functions to be called when each string variable is set;
-         called by rl_variable_bind
-
-execute_cmd.c
-       - do_piping no longer sets pipes to O_TEXT mode if __CYGWIN32__
-         is defined
-
-                                  8/25
-                                  ----
-subst.c
-       - parameter_brace_patsub now mallocs a local copy of `patsub', because
-         if it starts with a `/' we increment it, and functions down the call
-         chain will free that on an error (and if we pass the incremented
-         value, will try to free unallocated memory)
-       - pos_params now short-circuits and returns a null string immediately
-         if start == end, meaning we want 0 positional parameters
-
-                                  8/26
-                                  ----
-subst.c
-       - fixed pat_subst to correctly handle a null replacement string with
-         a null pattern string prefixed with `%' or `#'
-
-                                   9/3
-                                   ---
-variables.c
-       - don't import shell functions from the environment if the shell was
-         started with -n
-
-                                   9/8
-                                   ---
-subst.c
-       - if a command substitution is being performed inside a shell function,
-         catch `return' in command_substitute so that a return inside the
-         command substitution doesn't jump back to execute_function (or one
-         of its brethren) and go on with the command
-
-parse.y
-       - in history_delimiting_chars, if the first line is `for var' and
-         command_oriented_history is active, we don't want a semicolon if
-         the next token to be read is `in', but we do want one otherwise.
-         All we can do is check shell_input_line and see if the next chars
-         are `in' -- if so, we return " "
-
-                                  9/16
-                                  ----
-builtins/hash.def
-       - don't allow `hash -p /pathname/with/slashes name' if the shell
-         is restricted
-
-doc/{bash.1,bashref.texi}
-       - updated description of restricted shell mode
-
-lib/readline/display.c
-       - fixed a bug in _rl_update_final which used the inv_lbreaks array
-         to index into visible_line
-
-jobs.c
-       - waitchld() need not go through the pain of setting up an environment
-         to execute traps on SIGCHLD if children_exited == 0
-       - waitchld returns -1 if waitpid() returns -1 with errno == ECHILD,
-         indicating that there are no unwaited-for child processes, and it
-         has not yet reaped any dead children
-       - wait_for, wait_for_single_pid return -1 if waitchld() returns -1
-       - new function, mark_all_jobs_as_dead
-       - wait_for_background_pids calls mark_all_jobs_as_dead if
-         wait_for_single_pid returns -1 with errno == ECHILD, since there are
-         no unwaited-for child processes
-
-subst.c
-       - tentative change: subshells started for command substitution no
-         longer unconditionally disable job control
-
-                                  9/17
-                                  ----
-parse.y
-       - new function: save_token_state().  Saves the value of last_read_token
-         and the two previous tokens in an allocated array and returns the
-         array
-       - new function: restore_token_state(ts).  TS is an array returned by
-         save_token_state.  last_read_token and the two previous tokens are
-         set from the values in TS
-
-trap.c
-       - run_pending_traps calls save_token_state and restore_token_state
-         around the call to parse_and_execute, which will call the parser
-         and possibly leave it in a state where reserved words will not be
-         recognized (_run_trap_internal, too)
-
-                                  9/20
-                                  ----
-support/bashbug.sh
-       - if sendmail is used as $RMAIL, pass `-i -t' as arguments so changes
-         made by the user to the recipient headers in the message are
-         honored
-
-                                  9/21
-                                  ----
-bashhist.c
-       - if histverify has been set, make sure a `:p' modifier to a history
-         expansion prints the result
-
-builtins/echo.def
-       - new extern variable, xpg_echo, set to 1 if DEFAULT_ECHO_TO_USG is
-         defined and 0 otherwise
-       - echo_builtin now sets the initial value of do_v9 from xpg_echo
-
-builtins/shopt.def
-       - new shopt option, `xpg_echo', turns backslash escape expansion by
-         `echo' on and off at runtime
-
-builtins/{bash.1,bashref.texi}
-       - documented new `xpg_echo' shell option
-
-tests/{builtins.tests,builtins2.sub,shopt.tests}
-       - changes for new `xpg_echo' shell option
-
-configure.in
-       - changes for FreeBSD-3.x ELF to add `-rdynamic' to LOCAL_LDFLAGS.
-         This allows dynamic loading of builtins
-
-support/shobj-conf
-       - changes to handle FreeBSD-3.x elf or a.out object file formats
-
-                                  9/23
-                                  ----
-[bash-2.04-beta1 released]
-
-                                  9/24
-                                  ----
-jobs.c
-       - wait_for returns -1 only if the shell is currently executing the
-         `wait' builtin, since that's the only thing that cares
-
-execute_cmd.c
-       - moved cases of close_fd_bitmap to before calls to do_piping to
-         handle some pathological cases
-
-                                  9/29
-                                  ----
-execute_cmd.c
-       - save the command line in execute_simple_command before making the
-         export environment, since maybe_make_export_env clobbers
-         the_printed_command if there are exported functions
-
-                                  9/30
-                                  ----
-configure.in,config.h.in
-       - check explicitly for setvbuf; define HAVE_SETVBUF if found
-
-configure.in
-       - change opt_gnu_malloc to opt_bash_malloc, since the bash malloc
-         is not really the gnu malloc anymore
-       - new argument, --with-bash-malloc, identical to --with-gnu-malloc
-       - AC_DEFINE(USING_BASH_MALLOC) if opt_bash_malloc is enabled
-
-config.h.in
-       - new #define for USING_BASH_MALLOC
-
-doc/bashref.texi
-       - updated installation section to add --with-bash-malloc and
-         change description of --with-gnu-malloc
-
-lib/sh/setlinebuf.c
-       - change name of function to sh_setlinebuf, just returns 0 if
-         HAVE_SETVBUF and HAVE_SETLINEBUF are undefined
-       - prefer setvbuf to setlinebuf if we have both
-       - if we're using setvbuf, use a local buffer for stdin and stdout
-         local buffer is BUFSIZ unless we're using the bash malloc
-         (USING_BASH_MALLOC is defined), in which case it's 1008 (which
-         the bash malloc rounds up to 1024)
-
-                                  10/4
-                                  ----
-input.c
-       - if USING_BASH_MALLOC is defined, set the max buffer size to 8176,
-         which the bash malloc rounds up to 8192
-
-                                  10/5
-                                  ----
-pcomplete.c
-       - new function, pcomp_filename_completion_function, a wrapper for
-         filename_completion_function that dequotes the filename first
-
-bashline.c
-       - changed bash_directory_completion_matches to dequote the filename
-         before passing it (indirectly) to filename_completion_function
-
-execute_cmd.c
-       - change execute_command to defer calling unlink_fifo_list until any
-         shell function has finished executing (variable_context == 0)
-
-configure.in
-       - added AC_CYGWIN, AC_MINGW32, AC_EXEEXT
-
-                                  10/8
-                                  ----
-subst.c
-       - expand_word_internal(): changes some things to avoid small (2 or 3
-         byte) calls to xmalloc -- added a label and some gotos (BEWARE)
-       - changed make_dev_fd_filename so it doesn't call sprintf anymore
-
-                                  10/27
-                                  -----
-execute_cmd.c
-       - make execute_select_command handle the effects of the `continue'
-         builtin correctly
-
-                                  11/5
-                                  ----
-Makefile.in
-       - RELSTATUS changed to `beta2'
-
-                                  11/8
-                                  ----
-[bash-2.04-beta2 released]
-
-                                  11/9
-                                  ----
-shell.c
-       - make run_startup_files check for ssh2 as well as ssh1
-
-                                  11/19
-                                  -----
-parse.y
-       - make sure parsing conditional commands isn't confused by unexpected
-         tokens (like `[[)]]')
-
-builtins/common.c
-       - fix get_job_spec to return NO_JOB for numeric job specs that are
-         beyond the size of the jobs table
-
-builtins/type.def
-       - change describe_command to report `not found' if a path search
-         returns the same string as the command name and the command name
-         does not match an executable file.  This has implications for
-         `type' and `command -[vV]'.
-       - if a command is not found in $PATH, but an executable file with the
-         name supplied exists in the current directory, make the command
-         into a full pathname for the `command' builtin.  This has
-         implications for `type' and `command -[vV]'
-
-subst.c
-       - new function, expand_prompt_string, expands prompt string and
-         returns the string passed if an error occurs
-
-subst.h
-       - extern declaration for expand_prompt_string
-
-parse.y
-       - decode_prompt_string calls expand_prompt_string instead of
-         expand_string_unsplit
-
-                                  11/22
-                                  -----
-builtins/echo.def
-       - return EXECUTION_FAILURE if ferror(stdout) is true
-
-                                  11/23
-                                  -----
-locale.c
-       - if LC_ALL is unset, call setlocale(LC_ALL, lc_all), because lc_all
-         holds the default locale
-
-                                  11/29
-                                  -----
-lib/readline/shell.c
-       - define NULL as 0 if it's not defined
-       - change single_quote to allocate 4 characters in new string for
-         each character in the old one (like builtins/common.c:single_quote)
-
-locale.c
-       - when a locale variable (LC_*) is unset, pass "" to setlocale()
-         to get the default locale set, since value is NULL
-
-lib/sh/makepath.c
-       - new function, sh_makepath(char *path, char *dir, int flags)
-
-Makefile.in
-       - changed version to beta3
-
-builtins/type.def
-       - changed describe_command to use sh_makepath()
-
-builtins/cd.def
-       - removed private declaration of mkpath(), changed to use sh_makepath
-
-general.c
-       - changed make_absolute to use sh_makepath
-       - changed full_pathname to use sh_makepath
-
-findcmd.c
-       - removed private definition of make_full_pathname, changed to use
-         sh_makepath
-
-doc/{bashref.texi,bash.1}
-       - added text to description of `getopts' to make it clear that getopts
-         may be used to parse option characters other than letters, and
-         that `:' and `?' may not be used as option characters
-
-eval.c
-       - when processing a jump_to_top_level(EXITPROG), make sure the shell
-         doesn't think it's still in a function by setting variable_context
-         to 0
-
-doc/rbash.1
-       - a skeletal man page for rbash, adapted from debian
-
-support/bashbug.sh
-       - try to find a default editor if EDITOR is unset, rather than blindly
-         using `emacs'
-
-                                  11/30
-                                  -----
-support/config.{guess,sub}
-       - many changes from the latest `automake' distribution, from the
-         Debian folks
-
-                                  12/2
-                                  ----
-lib/readline/keymaps.h, lib/tilde/tilde.h
-       - added support for C++ compilation (`extern "C" {...}')
-
-                                  12/3
-                                  ----
-subst.c
-       - in process_substitute, make sure the child resets the O_NONBLOCK
-         flag on the file descriptor opened for read to a named pipe
-
-jobs.c
-       - new function, raw_job_exit_status, returns exit status of last job
-         in pipeline
-       - change job_exit_status to call raw_job_exit_status and pass the
-         result to process_exit_status
-       - in notify_of_job_status, get termination status from call to
-         raw_job_exit_status, rather than the first job in the pipeline
-         (fixes debian bug #15165)
-
-bashhist.c
-       - changed bash_history to not add shell comment lines to the history
-         file (fixes debian bug #21901).  Uses new function shell_comment(L)
-         which returns 1 if L is a shell comment line.  Doesn't handle
-         comments embedded in lines yet
-
-redir.c
-       - when running in POSIX.2 mode, bash no longer performs word splitting
-         on the expanded value of the word supplied as the filename argument
-         to a redirection operator (fixes debian bug #30460)
-
-doc/bashref.texi
-       - added new redirection stuff to POSIX Mode section (from previous fix)
-
-                                  12/6
-                                  ----
-hashlib.h
-       - removed extra semicolon at end of HASH_ENTRIES define
-
-redir.c
-       - replaced toggling of disallow_filename_globbing flag with setting
-         flags in redirection word to include W_NOGLOB if the shell is in
-         POSIX mode and not interactive when expanding the filename argument
-         to a redirection
-
-                                  12/7
-                                  ----
-builtins/common.c
-       - new function, backslash_quote_for_double_quotes(char *), quotes
-         characters special when in double quotes in the string passed as
-         an argument.
-         #ifdef PROMPT_STRING_DECODE; called by decode_prompt_string
-
-builtins/common.h
-       - extern declaration for backslash_quote_for_double_quotes
-
-parse.y
-       - call backslash_quote_for_double_quotes instead of backslash_quote
-         in decode_prompt_string
-
-                                  12/9
-                                  ----
-parse.y
-       - before expanding the \u prompt string escape sequence, make sure
-         current_user.user_name is non-null and call get_current_user_info
-         if it is
-
-                                  12/10
-                                  -----
-support/mkversion.sh
-       - changes to avoid relying on floating point output format, which
-         can be locale-specific
-
-                                  12/14
-                                  -----
-print_cmd.c
-       - changes to named_function_string (for normal function printing)
-         and print_function_def (for printing function definitions embedded
-         in other commands) to print redirections that should be attached
-         to the function as a whole after the closing brace
-
-tests/func1.sub
-       - tests for printing functions with attached redirections, called by
-         func.tests
-
-                                  12/16
-                                  -----
-lib/readline/complete.c
-       - if we're completing files in the root directory and executing the
-         visible-stats code, don't pass an empty pathname to
-         rl_directory_completion_hook, because, for bash, that will be
-         expanded to the current directory.  Just pass `/' instead.
-
-lib/tilde/tilde.c
-       - fix to tilde_expand_word for Cygwin to avoid creating pathnames
-         beginning with `//' if $HOME == `/'
-
-variables.c
-       - don't bother with the exportstr validation on cygwin systems,
-         or even using exportstr at all, since that system has weird
-         environment variables
-
-                                  12/17
-                                  -----
-configure.in
-       - new option, --enable-xpg-echo-default, new name for
-         --enable-usg-echo-default (which is still present for backwards
-         compatibility)
-
-configure.in, config.h.in, builtins/echo.def
-       - DEFAULT_ECHO_TO_USG -> DEFAULT_ECHO_TO_XPG
-
-                                  12/29
-                                  -----
-aclocal.m4
-       - changed a couple of tests to avoid creating files with known
-         names in /tmp
-
-support/rlvers.sh
-       - changed to create files in /tmp/rlvers
-
-support/mksignames.c
-       - now understands the POSIX.1b real-time signal names on systems
-         that support them
-
-                                  12/30
-                                  -----
-[bash-2.04-beta3 released]
-
-                                  12/31
-                                  -----
-redir.c
-       - try some more things to avoid race file replacements in
-         here_document_to_fd
-
-parse.y
-       - two new functions:
-               get_current_prompt_level: returns 2 if current prompt is $PS2,
-                                         1 otherwise
-               set_current_prompt_level: sets current prompt to $PS2 if arg
-                                         is 2, $PS1 otherwise
-
-copy_cmd.c
-       - make sure to copy the `line' member in copy_arith_for_command
-
-pcomplete.c
-       - free up `lwords' and `line' after evaluating any command or shell
-         function in gen_compspec_completions
-       - after filtering any matches specified by cs->filterpat in
-         gen_compspec_completions, free ret->list (the members have
-         already been copied or freed by filter_stringlist)
-
-bashline.c
-       - free what find_cmd_name returns after calling the programmable
-         completion code
-
-                                1/4/2000
-                                --------
-subst.c 
-       - make call_expand_word_internal set w->word to NULL if either
-         expand_word_error or expand_word_fatal is returned 
-
-                                   1/7
-                                   ---
-parse.y
-       - two new functions: set_current_prompt_level(int) and
-         get_current_prompt_level() to set and get the `level' of
-         current_prompt_string (1 if $PS1, 2 if $PS2)
-
-externs.h
-       - extern declarations for {get,set}_current_prompt_level
-
-builtins/evalstring.c
-       - add an unwind_protect to save and restore the current prompt
-         string pointers using {get,set}_current_prompt_level
-
-                                   1/9
-                                   ---
-Makefile.in
-       - changed release status to `beta4'
-
-                                  1/18
-                                  ----
-[bash-2.04-beta4 released]
-
-                                  1/19
-                                  ----
-configure.in
-       - moved checks for non-unix variants to beginning of tests
-
-Makefile.in, {builtins,support}/Makefile.in
-       - added some $(EXEEXT) suffixes to generated programs for non-Unix
-         systems
-
-                                  1/20
-                                  ----
-parse.y
-       - make get_current_prompt_level return 1 if current_prompt_string is
-         NULL (as it would be while sourcing startup files)
-
-support/rlvers.sh
-       - rmdir $TDIR in the exit trap
-       - move the exit trap after we successfully create $TDIR
-
-                                  1/21
-                                  ----
-subst.c
-       - several changes to split_at_delims to make non-whitespace
-         delimiters create separate fields containing those delimiters,
-         like the shell parser does with meta characters.  This allows
-         redirection operators, for example, to be treated as separate
-         words by the programmable completion code
-
-examples/complete/complete-examples
-       - added new function: _redir_op, which return true if the word
-         passed as an argument contains a redirection operator (just
-         bare-bones for now)
-       - changed set completion function to use _redir_op as an example
-
-parse.y
-       - make parse_string_to_word_list save and restore the value of
-         shell_input_line_terminator, since an assignment like
-         COMPREPLY=() inside a shell function called by the programmable
-         completion code can change shell_input_line_terminator out from
-         underneath shell_getc().  shell_getc will set the input line
-         terminator to EOF when it gets EOF from the getter function, and
-         the string getter function returns EOF at EOS.  parse_and_execute
-         tests for EOS directly and never gets EOF from shell_getc, so it
-         does not have this problem.
-
-                                  1/24
-                                  ----
-lib/readline/funmap.c
-       - #define QSFUNC like in complete.c
-       - cast _rl_qsort_string_compare to a QSFUNC * in the call to qsort
-
-lib/readline/terminal.c
-       - correct a typo in usage of the __EMX__ preprocessor define
-       - fix a reversed usage of `#if defined (__DJGPP__)' in 
-         _rl_control_keypad
-       - remove extern declarations for _rl_in_stream and _rl_out_stream
-
-lib/readline/rlprivate.h
-       - add extern declaration for _rl_in_stream, since there's already
-         one for _rl_out_stream
-
-builtins/ulimit.def
-       - if bash is using ulimit(2), make sure that getfilesize() returns
-         the value multiplied by 512 to convert it from a number of blocks
-         to a number of bytes
-
-                                  1/25
-                                  ----
-execute_cmd.c
-       - make sure execute_command_internal sets last_command_exit_value
-         correctly when inverting the return value of a (...) subshell
-         command
-
-tests/{run-invert,invert.{tests,right}}
-       - new tests for return value inversion
-
-configure.in
-       - compile without bash malloc on m68k-motorola-sysv due to a file
-         descriptor leak in closedir(3) -- the motorola implementation
-         requires that freed memory be readable so it can free the dirent
-         and then look back at it to find the file descriptor
-
-expr.c
-       - fix negative exponents in v**e to return an eval error
-
-                                   2/1
-                                   ---
-Makefile.in
-       - changed status to beta5
-
-jobs.c
-       - fixed a problem with checking the wrong process when checking to
-         see whether or not we need to reset the tty state.  The old code
-         checked the first process in a pipeline; the new code checks all
-         processes in the pipeline to see whether any of them exited due
-         to a signal or was stopped.  If none were signalled or stopped,
-         the code uses the exit status of the last process in the job's
-         pipeline
-
-                                   2/4
-                                   ---
-[bash-2.04-beta5 released]
-
-eval.c
-       - call set_current_prompt_level instead of setting prompt_string_pointer
-         directly
-
-                                  2/10
-                                  ----
-[bash-2.04-beta5 re-released to net]
-
-                                  2/11
-                                  ----
-sig.c
-       - make sure SIGCHLD is defined in initialize_shell_signals before
-         trying to use it in sigdelset() (DJGPP fix)
-
-                                  2/14
-                                  ----
-lib/sh/shtty.c
-       - include <unistd.h> before <shtty.h>
-       - separate tests for ONLCR, ONOCR, ONLRET to cope with systems like
-         DJGPP that don't implement the full POSIX termios option set
-
-builtins/psize.sh
-       - set TMPDIR only if it's not already set
-
-lib/glob/glob.c
-       - if a system doesn't define _POSIX_SOURCE but has a `struct dirent'
-         without a d_ino member, define REAL_DIR_ENTRY to 1 so all entries
-         are read
-
-configure.in
-       - check for <arpa/inet.h> header file
-
-config.h.in
-       - add HAVE_ARPA_INET_H define
-
-lib/sh/inet_aton.c
-       - don't compile unless HAVE_NETWORK, HAVE_NETINET_IN_H, and
-         HAVE_ARPA_INET_H are all defined in config.h or config-bot.h
-
-                                  2/16
-                                  ----
-subst.c
-       - if we have a construct like "${@:-}", we need to note that we're
-         not using whatever is in $@ (we're using the rhs), so the special
-         double-quoting $@ rules do not apply
-
-                                  2/21
-                                  ----
-lib/readline/signals.c
-       - declare SigHandler before using it on non-POSIX systems
-
-lib/sh/{zread,zwrite}.c
-       - include <sys/types.h> unconditionally
-
-configure.in
-       - m68k-motorola-sysv should be m68k-sysv in the section that sets
-         opt_bash_malloc to no for certain systems
-
-builtins/complete.def
-       - fixed a typo (stoppped) when printing out completion actions
-
-                                  2/22
-                                  ----
-lib/sh/netopen.c
-       - include <arpa/inet.h> if it's present
-
-aclocal.m4
-       - new macro, BASH_FUNC_INET_ATON, checks for inet_aton(3) including
-         <netinet/in.h> and <arpa/inet.h>, which some systems require to
-         resolve the function
-
-configure.in
-       - if autoconf can't fund inet_aton on its own, try BASH_FUNC_INET_ATON
-
-pcomplete.c
-       - fixed a memory leak in gen_wordlist_completions
-       - changed gen_wordlist_completions to do prefix-matching against the
-         word being completed
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
-       - documented the change in behavior of the -W option to complete and
-         compgen
-
-builtins/umask.def
-       - if parse_symbolic_mode() returns -1, symbolic_umask needs to return
-         -1 as well, otherwise the umask will be changed inappropriately
-
-input.c
-       - always compile in getc_with_restart and ungetc_with_restart
-
-parse.y
-       - yy_stream_get and yy_stream_unget now call getc_with_restart and
-         ungetc_with_restart, respectively, to avoid problems with some
-         systems not restarting the read(2) when signals that bash handles
-         are received during the read (since bash installs its signal
-         handlers without the SA_RESTART flag)
-
-lib/readline/complete.c
-       - don't default rl_completion_case_fold to 1 if __DJGPP__ is defined
-
-                                  2/25
-                                  ----
-subst.c
-       - renamed `varlist' to `subst_assign_varlist' and made it global
-
-jobs.c
-       - when running a SIGCHLD trap, need to unwind-protect
-         subst_assign_varlist and set it to NULL before running the trap
-         command (fix from ericw@bestnet.org and doogie@debian.org)
-
-                                  2/28
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - document rl_funmap_names()
-
-                                  2/29
-                                  ----
-subst.c
-       - change split_at_delims to set the current word more appropriately
-         when the cursor is between two words.  Should probably change this
-         again to set the current word like this only when the cursor is at
-         whitespace or another delim just before the word start
-
-                                   3/1
-                                   ---
-lib/sh/shtty.c
-       - more checks for flag bits being defined before using them
-
-                                   3/7
-                                   ---
-variables.h
-       - fix typo in COPY_EXPORTSTR definition 
-
-                                  3/14
-                                  ----
-subst.c
-       - changed split_at_delims so that if the cursor is at whitespace
-         between words, and we're interested in the current word (cwp != NULL),
-         make a new empty word and set the cwp to that word
-
-locale.c
-       - support for setting LC_NUMERIC locale category based on value of
-         LC_NUMERIC shell variable
-
-variables.c
-       - LC_NUMERIC is now treated specially
-
-doc/{bash.1,bashref.texi}
-       - LC_NUMERIC updates
-
-                                  3/15
-                                  ----
-pcomplete.c
-       - fix to avoid freeing memory twice
-
-                                  3/17
-                                  ----
-[bash-2.04 released]
-
-                                  3/20
-                                  ----
-doc/bash.1
-       - minor typo fix to description of `xpg_echo' option in `echo'
-         description
-
-                                  3/23
-                                  ----
-parse.y
-       - minor fix to parse_string_to_word_list to allow newlines in
-         compound array assignments
-
-                                  3/27
-                                  ----
-lib/readline/rltty.c
-       - fixed a missing-semicolon syntax error in the old 4.3 BSD tty code
-
-support/mksignames.c
-       - if SIGRTMAX is >= 2*NSIG, just #undef SIGRTMIN and SIGRTMAX.  This
-         is an issue on AIX 4.3 (only, so far) -- checked by configure, which
-         #defines UNUSABLE_RT_SIGNALS if this is the case
-
-aclocal.m4
-       - new macro, BASH_CHECK_RTSIGS, checks whether or not real-time
-         signals are defined with large values and defines UNUSABLE_RT_SIGNALS
-         if they are
-
-config.h.in
-       - place marker for UNDEF_RT_SIGNALS (initially undefined)
-
-configure.in
-       - call BASH_CHECK_RTSIGS in the `bash miscellaneous' section
-
-                                  3/29
-                                  ----
-
-subst.c
-       - fixed a problem in match_pattern_char, where `string' was checked
-         for a paren following a [?+!@], rather than `pat'
-       - the code that checks whether or not to exit after a failed
-         ${word?msg} substitution needs to check interactive_shell rather
-         than interactive to avoid exiting if such a construct appears in
-         a sourced file
-
-                                  3/31
-                                  ----
-
-bashline.c
-       - add `{' to the list of characters that need to be quoted by the
-         completion code when appearing in a filename
-
-                                   4/1
-                                   ---
-lib/glob/fnmatch.c
-       - fixed an error in brackmatch() while skipping the rest of a bracket
-         expression after a character matched.  When `c' was a backslash and
-         *p was a backslash, as in a pattern like [/\\], the old code didn't
-         take both backslashes into account and ended up skipping the `]'
-         after erroneously concluding that it was quoted.  Report and fix
-         from akim@epita.fr
-
-                                   4/3
-                                   ---
-lib/readline/rltty.c
-       - slight change to the BSD tty interface code, so that if the first
-         ioctl fails, get_tty_settings returns -1 immediately
-       - better checking of ioctl return values in BSD tty version of
-         get_tty_settings
-
-                                   4/5
-                                   ---
-doc/{bash.1,bashref.texi}
-       - documented use of LINES and COLUMNS variables
-
-                                  4/12
-                                  ----
-lib/readline/rltty.c
-       - change the SETATTR define for the termio tty driver to use
-         TCSETAW (the analog of the termios TCSADRAIN)
-
-lib/glob/fnmatch.c
-       - fix for posix-style bracket expressions ([:xxx:], [=x=]) broken
-         by fix of 4/1 for quotes in bracket expressions
-
-                                  4/26
-                                  ----
-subst.c
-       - fix to list_string and get_word_from_string to make a non-whitespace
-         IFS character preceded by IFS whitespace part of the current field
-         delimiter, not a separate delimiter that would result in a separate
-         null field when splitting.  cf POSIX.2, 3.6.5, (3)(b).  Bug reported
-         by amc@cs.berkeley.edu
-       - changed the behavior of the (currently undocumented) ${!prefix@}
-         expansion to be analogous to the expansion of $@ in other contexts
-         when double-quoted.  ksh93 seems to do this.  Bug reported by
-         Ken Pizzini <ken@halcyon.com>
-       - changed read_comsub to ignore NUL bytes in the command substitution
-         output, printing a warning message for now
-
-parse.y
-       - changed shell_getc to ignore NUL bytes in the input, printing a
-         warning message for now
-       - changed read_a_line to print a warning when a NUL byte is encountered,
-         like shell_getc does
-
-                                  5/18
-                                  ----
-subst.c
-       - make sure split_at_delims uses d2 only if it's non-null
-       - make split_at_delims skip leading newlines in the string to split,
-         if newline is a delimiter
-
-jobs.c
-       - prevent hanging processes by marking a child process as not running
-         (even if the shell thinks it is) when waitpid() returns -1/ECHILD --
-         this indicates that waitpid never returned a reasonable status
-         for that child though, which may be a symptom of another problem
-
-builtins/cd.def
-       - make `pwd' print an error message if the write fails when displaying
-         the current directory
-
-lib/readline/histexpand.c
-       - return NULL from history_find_word if history_tokenize_internal
-         returns (char **)NULL rather than attempting to dereference a
-         possibly-NULL pointer
-       - change history_tokenize_internal to set *indp to -1 before any
-         processing if indp is non-null
-
-                                  5/19
-                                  ----
-builtins/trap.def
-       - when in POSIX.2 mode and printing trap dispositions, print the
-         signal name without the leading `SIG', as POSIX.2 requires
-
-                                  5/23
-                                  ----
-lib/readline/readline.c
-       - readline_initialize_everything now assigns $TERM to rl_terminal_name
-         if the application has left it unset, and calls _rl_init_terminal_io
-         with the resultant value
-
-lib/readline/doc/rltech.texinfo
-       - updated the description of rl_terminal_name to note initialization
-
-parse.y
-       - change parse_string_to_word_list to save and restore the value of
-         current_command_line_count before calling back into the parser --
-         it will screw up history if the string extends over one line.  Bug
-         reported by Jan.Djarv@mbox200.swipnet.se
-
-                                   6/7
-                                   ---
-unwind_prot.h
-       - change unwind_protect_string to pass the address of the variable to
-         unwind_protect_var on machines where ints and char *s are not the
-         same size
-
-unwind_prot.c
-       - make sure we save the value of a variable in unwind_protect_var on
-         machines where sizeof(char *) != sizeof(int), not the contents the
-         value points to.  Fix from Andreas Schwab <schwab@suse.de>
-
-                                   6/8
-                                   ---
-configure.in
-       - auto-configure MacOS X without bash malloc (like Rhapsody)
-
-                                  6/12
-                                  ----
-configure.in
-       - replace `cygwin32' with `cygwin'
-
-builtins/evalfile.c
-       - in _evalfile, change all instances of \r to \n in the file to be
-          sourced and evaluated if __CYGWIN__ is defined
-
-input.c
-       - change \r to \n in the buffer argument to make_buffered_stream and
-          after calling zread() from b_fill_buffer if __CYGWIN__ is defined
-
-                                  6/29
-                                  ----
-lib/sh/Makefile.in
-       - add rest of dependency rules for makepath.o
-
-                                   7/3
-                                   ---
-jobs.c
-       - changed `int' to `WAIT' in a couple of places for non-POSIX
-         environments
-
-                                   7/5
-                                   ---
-locale.c
-       - try to avoid an unnecessary memory allocation in localetrans() in
-         the case that a translation for the string exists
-
-lib/readline/doc/rluserman.texinfo
-       - change the `direntry' information to make it use rluserman instead
-         of readline
-
-                                   7/6
-                                   ---
-execute_cmd.c
-       - changes to execute_in_subshell so it honors a `!' prefixing a command
-         inside a user subshell (...)
-
-support/config.{guess,sub}
-       - add cases for Apple Darwin (Mac OS X)
-
-configure.in
-       - Apple Darwin (MacOS X) uses its own malloc
-
-lib/readline/readline.h
-       - removed bogus extern declaration of savestring
-
-                                   7/7
-                                   ---
-builtins/common.c
-       - in get_working_directory, don't count on getcwd returning anything
-         useful in the buffer passed as the first argument on failure; just
-         use bash_getcwd_errstr in the error message
-
-examples/loadables/cut.c
-       - loadable version of cut(1), from the FreeBSD source tree
-
-                                  7/18
-                                  ----
-lib/readline/vi_mode.c
-       - changed two instances of (*rl_getc_function) (rl_instream) to calls
-         to rl_read_key(), which works better when using the readline
-         callback interface
-
-builtins/evalfile.c
-       - added FEVAL_CHECKBINARY flag for _evalfile; controls whether a check
-         for a binary file is performed
-       - FEVAL_CHECKBINARY is not set by source_file or maybe_execute_file,
-         which means that the startup file execution and the `.' builtin will
-         not check for binary files
-       - FEVAL_CHECKBINARY is not set by fc_execute_file, so that files
-         composed of history commands run by the `fc' builtin will not check
-         for binary files
-
-                                  7/21
-                                  ----
-shell.c
-       - added `--init-file' as a synonym for `--rcfile'
-
-                                  7/26
-                                  ----
-support/shobj-conf
-       - added commented-out stanzas for hpux 10 and hpux 11 when the HP
-         unbundled ANSI C compiler is being used
-
-                                  7/27
-                                  ----
-shell.c
-       - don't call end_job_control() from exit_shell if subshell_environment
-         is non-zero, even if the shell is interactive
-
-                                   8/1
-                                   ---
-bashhist.c
-       - change maybe_add_history to remember if we saved the first line of
-         a command and don't save the second and subsequent lines of a
-         multi-line command if we didn't save the first line
-
-configure.in, config.h.in
-       - add autoconf check for getservbyname()
-
-lib/sh/netopen.c
-       - add support for named services in /dev/(tcp|udp)/host/service
-         translation
-       - make sure _netopen sets errno to something other than 0 if something
-         goes wrong, so the redirection functions behave
-
-                                   8/3
-                                   ---
-parse.y
-       - changes to shell_getc so that history saving of blank lines in
-         multi-line commands does a better job of syntactic correctness
-
-bashline.c
-       - bind ^O to operate-and-get-next in emacs_standard_keymap explicitly,
-         rather than letting rl_add_defun do it in whatever keymap is current
-
-                                   8/4
-                                   ---
-builtins/ulimit.def
-       - removed some of the special handling of RLIM_INFINITY -- the old
-         code would let people use RLIM_INFINITY as a shorthand for setting
-         the soft limit to the hard limit.  Now, the code just passes
-         RLIM_INFINITY through if the hard limit is being set, so any kernel
-         errors will get through
-
-                                  8/10
-                                  ----
-parse.y
-       - change the grammar rule for group_command so that it's composed of
-         a compound_list instead of a list, which requires a terminator
-         This means that you can now do (legal) things like
-
-               { { echo a b c ; } }
-
-         since the second close brace will be recognized as such because a
-         reserved word is legal in that context
-
-                                  8/23
-                                  ----
-subst.c
-       - fix parameter_brace_substring to free all memory allocated by
-         get_var_and_type in the VT_ARRAYMEMBER case (returned parameter
-         `val')
-
-                                  8/30
-                                  ----
-variables.c
-       - now that we have dynamic array variables, remove the check for
-         array_p in bind_variable and let array variables with assignment
-         functions call the assignment function
-
-subst.c
-       - change cond_expand_word to perform tilde expansion (like it should
-         have done all along)
-
-lib/readline/complete.c
-       - don't allow backslash to quote anything inside a single-quoted
-         string in find_completion_word
-
-doc/{bash.1,bashref.texi}
-       - note that `set -a' will cause functions to be exported
-
-lib/readline/parens.c
-       - changed the blink timeout so it's settable by the application.  A
-         new function, int rl_set_paren_blink_timeout (int u), (still
-         undocumented) will set the timeout to U usec
-
-variables.c
-       - at startup of an interactive login shell, if the current directory
-         is $HOME, and $HOME and $PWD are not the same, set the current
-         directory (and $PWD) to $HOME
-       - break code that initializes $PWD and $OLDPWD into set_pwd function
-
-variables.h
-       - new extern declaration for set_pwd()
-
-                                   9/6
-                                   ---
-lib/readline/{readline,callback}.c
-       - allocate memory for rl_prompt instead of simply using what's passed
-         as the `prompt' argument to readline() or
-         rl_callback_handler_install().  This will allow constant strings to
-         be passed to readline(), since the prompt processing code wants to
-         write to rl_prompt
-
-lib/sh/pathcanon.c
-       - new file, does pathname canonicalization
-
-externs.h
-       - extern declarations for stuff in lib/sh/pathcanon.c
-
-general.c
-       - canonicalize_pathname now simply calls sh_canonpath()
-
-                                   9/7
-                                   ---
-pcomplete.h
-       - new member in a `struct compspec': options
-       - define some flag values for options field
-
-pcomplib.c
-       - make sure options field is allocated and copied by compspec utility
-         functions
-
-builtins/complete.def
-       - add struct for completion options.  These control the `meta-behavior'
-         of the compspec.  Initially, there are three:
-
-               default - perform bash default completion if programmable
-                         completion produces no matches
-               dirnames - perform directory name completion if programmable
-                          completion produces no matches
-               filenames - tell readline that the compspec produces filenames,
-                           so it can do things like append slashes to
-                           directory names and suppress trailing spaces
-
-       - add `-o option' to complete and compgen, setting new options field
-         in a compspec
-       - add code to display any -o options when a compspect is printed
-         with the `-p' option to complete
-
-pcomplete.c
-       - programmable_completions now passes back to the caller in the last
-         argument any options associated with the active compspec (from the
-         options field)
-       - change gen_compspec_completions to re-call gen_action_completions
-         with a CA_DIRECTORY action if the rest of the compspec actions
-         generate no matches and the COPT_DIRNAMES option is present
-
-bashline.c
-       - if a programmable completion was specified to return filenames with
-         the `-o filenames' option, set rl_filename_completion_desired to 1
-         so readline does its special filename-specific things
-       - if a compspec was defined to fall back to the readline default with
-         the `-o default' option, suppress setting the
-         rl_attempted_completion_over variable in attempt_shell_completion
-         so readline will go on and do filename completion
-
-include/ansi_stdlib.h
-       - add extern declarations for atof and strtod
-
-builtins/printf.def
-       - change getdouble() to use strtod (since we provide a version in
-         libsh if the C library doesn't have one), and change the calling
-         convention to match the other getXXX functions (take value pointer
-         as argument, return success or failure).  This makes printf handle
-         invalid floating point numbers better
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
-       - documented new `-o' option to complete and compgen; described the
-         arguments and their effects
-
-lib/readline/{macro,util}.c
-       - renamed _rl_executing_macro to rl_executing_macro; made it public
-
-lib/readline/readline.h
-       - new extern declaration for rl_executing_macro
-
-lib/readline/rltech.texinfo
-       - documented rl_executing_macro
-
-                                   8/8
-                                   ---
-lib/readline/readline.c
-       - new state variable, rl_readline_state
-
-lib/readline/readline.h
-       - extern declaration for rl_readline_state
-       - define some flag bits for rl_readline_state and macros to test and
-         set them
-
-lib/readline/{readline,complete,isearch,macro,rltty,search,signals,undo,vi_mode}.c
-       - added calls to the macros that set and unset various readline states
-
-lib/readline/readline.c
-       - new private function, _rl_free_saved_history_line, to free up the
-         history entry saved in saved_line_for_history
-
-lib/readline/search.c
-       - free any saved history entry in rl_history_search_reinit(), because
-         rl_get_previous_history makes a call to maybe_save_line without
-         freeing up the saved line when it returns (so rl_get_next_history
-         can use it)
-       - fix up noninc_search_from_pos to deal with invalid history indices
-         better
-
-                                  9/12
-                                  ----
-support/shobj-conf
-       - HPUX 11.0 needs the `-fpic' flag passed to the linker as well as
-         the compiler
-
-execute_cmd.c
-       - on MS-DOS systems, let the #! checking stuff in execute_shell_script
-         treat \r as EOL (identical to \n)
-
-input.c
-       - on DJGPP systems, allow buffered_getchar to ignore \r.  Change
-         suggested by snowball3@bigfoot.com
-
-                                  9/13
-                                  ----
-lib/sh/tmpfile.c
-       - new file, with functions for creating and (hopefully safely) opening
-         temporary files for the shell
-
-externs.h
-       - extern declarations for functions in tmpfile.c
-
-variables.c
-       - new function, get_random_number, returns random values from the
-         shell's (lame) RNG to the rest of the shell
-
-variables.h
-       - new extern declaration for get_random_number()
-
-subst.c
-       - changed make_named_pipe to call sh_mktmpname instead of mktemp
-
-redir.c
-       - changed here_document_to_fd to call sh_mktmpfd instead of using
-         inline code
-
-builtins/fc.def
-       - changed fc_builtin to call sh_mktmpfp instead of using inline code
-
-builtins/common.h
-       - new extern declaration for fc_execute_file()
-
-bashline.c
-       - if RL_ISSTATE(RL_STATE_INITIALIZED) is 0 in initialize_readline,
-         call rl_initialize to bind the defaults before setting up our
-         custom shell functions and key bindings
-
-lib/readline/doc/{rluser,hsuser}.texinfo
-       - some markup changes proposed by dima@chg.ru
-
-lib/readline/rlstdc.h, lib/tilde/tilde.h
-       - to get ready for some `const' changes to the source, define const
-         as either `__const' (gcc -traditional) or nothing if __STDC__ and
-         __cplusplus are not defined
-
-lib/readline/readline.c
-       - upped the default readline version to `4.2-alpha'
-
-lib/readline/readline.[ch]
-       - readline now takes a `const char *' as an argument
-
-lib/readline/history.h
-       - read_history(), read_history_range(), write_history(),
-         append_history(), history_truncate_file() now take `const char *'
-         filename arguments
-
-lib/readline/histfile.c
-       - history_filename(), read_history(), read_history_range(),
-         write_history(), append_history(), history_truncate_file(),
-         history_do_write() now take `const char *' filename arguments
-
-lib/readline/readline.h
-       - rl_read_init_file() now takes a `const char *' filename argument
-
-lib/readline/bind.c
-       - current_readline_init_file is now a `const char *'
-       - _rl_read_init_file(), rl_read_init_file() now take `const char *'
-         filename arguments
-
-lib/tilde/tilde.c
-       - tilde_expand(), tilde_expand_word() now take a `const char *'
-         as their first argument
-
-lib/readline/chardefs.h
-       - fixed CTRL_CHAR macro to be right on systems where chars are unsigned
-         by default
-
-                                  9/14
-                                  ----
-lib/readline/doc/{rl,hs}tech.texinfo
-       - documented new `const char *' function arguments where appropriate
-
-lib/readline/vi_mode.c
-       - clamp the numeric argument in vi mode at 999999, just like in emacs
-         mode
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_readline_state and its possible bit values
-
-builtins/source.def
-       - in maybe_pop_dollar_vars, don't overwrite a shell function's
-         argument list even if the sourced script changes the positional
-         parameters
-
-lib/readline/{util.c,rlprivate.h}
-       - made _rl_strindex() and _rl_savestring() take `const char *'
-         arguments
-
-                                  9/15
-                                  ----
-subst.c
-       - renamed `doing_completion' to `no_longjmp_on_fatal_error', a more
-         accurate description of its current behavior
-
-pcomplete.[ch], externs.h, lib/sh/stringlist.c
-       - moved the stringlist code from pcomplete.c to lib/sh/stringlist.c
-       - moved the type declaration and extern function declarations from
-         pcomplete.h to externs.h
-
-stringlib.c, externs.h, lib/sh/stringvec.c
-       - moved the char array code from stringlib.c to lib/sh/stringvec.c
-
-                                  9/18
-                                  ----
-subst.c
-       - new static variable, expand_no_split_dollar_star, to ensure that
-         $* isn't `split and rejoined' when expanded via a call to
-         expand_string_unsplit or expand_word_no_split
-
-                                  9/19
-                                  ----
-subst.[ch], execute_cmd.c
-       - renamed expand_word_no_split to expand_word_unsplit
-
-copy_cmd.c
-       - in copy_word, just assign w->flags to new_word->flags rather than
-         bcopying the entire structure
-
-configure.in, config.h.in
-       - add autoconf check for pathconf(3)
-
-lib/sh/tmpfile.c
-       - test for systems with short filenames using pathconf and
-         _PC_NAME_MAX, so generated temp file names don't exceed that length
-         (only do this if the file name length is less than 32, since the
-         current code doesn't generate filenames longer than about 17 chars)
-
-                                  9/20
-                                  ----
-command.h
-       - added `W_NOSPLIT2' word flag to prepare for supporting weird $@
-         expansion on the rhs of assignment statements (inspecting the ksh93
-         behavior, it seems like nothing except $@ is split, and $@ is split
-         on $IFS and rejoined as a single string)
-
-                                  9/21
-                                  ----
-subst.c
-       - since verify_substring_values looks for arithmetic expressions
-         bounded by `:', do some ad-hoc parsing of the substring passed as
-         the argument to avoid cutting the expression off at the wrong `:'
-         (since the inclusion of conditional expressions, expressions may
-         contain a `:').  Do some paren balancing, too.
-
-                                  9/22
-                                  ----
-command.h
-       - new #define, CLOBBERING_REDIRECT, evaluates to true for any redirect
-         that will clobber a file and should be subject to `noclobber'
-
-redir.c
-       - changed redir_open to use CLOBBERING_REDIRECT instead of
-         OUTPUT_REDIRECT.  This means that <> no longer tests the value of
-         noclobber, as POSIX.2 specifies
-
-parse.y
-       - made a change to cond_term so that expressions like [[ (x) ]] are
-         parsed correctly
-
-                                  9/25
-                                  ----
-parse.y
-       - small change to grammar for arith_for_command and special_case_tokens
-         to allow `do...done' or {...} after ((...)) without an intervening
-         list_terminator (for ksh93 compatibility)
-
-builtins/printf.def
-       - `printf' now treats \E and \e the same when performing backslash
-         escape expansion for the %b format character for compatibility with
-         $'...' quoting (for ksh93 compatibility)
-
-                                  9/26
-                                  ----
-builtins/source.def
-       - new variable, source_searches_cwd, initially 1.  If non-zero, `.'
-         searches $PWD for the filename argument if it's not found in $PATH
-
-general.c
-       - changed posix_initialize to turn off source_searches_cwd if posix
-         mode is being enabled; turn it on if posix mode is being disabled
-       - changed things so interactive_comments is not turned off if posix
-         mode is disabled, since that's rarely what is desired
-
-variables.c
-       - changed uidset() to set UID and EUID only if they are not already
-         set when the shell starts up
-       - changed things to HOSTNAME is set only if it's not set when the
-         shell starts up
-
-execute_cmd.c
-       - changed execute_builtin_or_function so that if a command like
-         `command exec 4<file' is executed, the effect is as if the `command'
-         had been omitted, as POSIX.2 requires
-
-subst.c
-       - changed array_length_reference to support ${foo[X]} when foo is not
-         an array variable and X is 0, @, or * (everything else returns 0)
-         for ksh compatibility
-       - changed array_value_internal to support ${foo[@]} and ${foo[*]}
-         when foo is not an array variable (as ksh does)
-
-                                  9/27
-                                  ----
-general.h
-       - added defines for ABSPATH (absolute pathname), RELPATH (relative
-         pathname, and ROOTEDPATH (pathname rooted at /), with different
-         definitions for Unix and Cygwin
-       - added defines for DIRSEP (the directory separator in pathnames,
-         and ISDIRSEP (whether a particular character is the directory
-         separator)
-       - added PATHSEP define: takes a character and decides whether it
-         delimits a filename component of a pathname
-       - changed isletter(c) #define to just call isalpha(c)
-
-lib/sh/pathcanon.c
-       - changed to use new pathname #defines from general.h above
-
-general.c
-       - changed make_absolute, absolute_pathname to understand
-         Cygwin's idea of an absolute pathname: [[:upper:][:lower:]]:/
-       - rewrote absolute_pathname to use PATHSEP and ABSPATH
-       - changed full_pathname to use ABSPATH
-
-variables.c
-       - changed get_bash_name to use ABSPATH and RELPATH, and to handle the
-         case when $PWD is unset when it is called
-
-subst.c
-       - if compiling on cygwin, translate \r\n to \n when reading the output
-         of a command substitution in read_comsub()
-
-                                  9/28
-                                  ----
-input.c, shell.c, builtins/read.def, lib/tilde/tilde.c
-       - changed __CYGWIN32__ to __CYGWIN__
-
-lib/readline/{bind,funmap,kill}.c, lib/readline/readline.h
-       - changed __CYGWIN32__ to __CYGWIN__
-
-input.c
-       - a couple of minor changes to clean up the code
-
-parse.y
-       - changed shell_getc and shell_ungetc to implement one character of
-         lookahead/lookbehind when pushing a character back at the start
-         of an input line (the old code would have discarded it because
-         shell_input_line_index was 0)
-
-lib/readline{histsearch.c,history.h}
-       - history_search_internal, history_search, history_search_prefix,
-         history_search_pos now take const char * string arguments
-
-lib/readline/{histexpand.c,history.h}
-       - get_history_event, history_arg_extract, history_tokenize_internal,
-         history_tokenize now take const char * string arguments
-
-lib/readline/{history.c,history.h}
-       - add_history, replace_history_entry now take const char * string
-         arguments
-
-lib/readline/{bind.c,readline.h}
-       - rl_add_defun, rl_unbind_command_in_map, rl_set_key, rl_macro_bind,
-         rl_generic_bind, rl_translate_keyseq, rl_named_function,
-         rl_function_of_keyseq, rl_variable_bind, rl_get_keymap_by_name
-         now take const char * string arguments where appropriate
-       - rl_function_dumper, rl_list_funmap_names needed changes to deal
-         with rl_funmap_names returning const char **
-       - rl_readline_name is now a const char * variable
-
-lib/readline/keymaps.h
-       - duplicate definition of rl_get_keymap_by_name needs const changes
-
-lib/readline/{bind.c,rlprivate.h}
-       - _rl_bind_if_unbound takes a const char * string argument
-
-lib/readline/{funmap.c,readline.h}
-       - rl_add_funmap_entry now takes a const char * string argument
-       - rl_funmap_names now returns a const char **
-       - a FUNMAP now has a const char *name member
-
-lib/readline/{terminal.c,readline.h,rlprivate.h}
-       - _rl_init_terminal_io, rl_get_termcap, rl_reset_terminal,
-         _rl_output_some_chars now take const char * string arguments
-
-lib/readline/{readline.[ch],rlprivate.h}
-       - rl_library_version and rl_terminal_name are now const char *
-         variables
-       - rl_insert_text, _rl_replace_text now take const char * string
-         arguments
-
-lib/readline/{callback.c,readline.h}
-       - rl_callback_handler_install takes a const char * string argument
-
-lib/readline/doc/{rltech,hstech}.texinfo
-       - changed documentation for newly-consted functions and variables
-
-lib/readline/{complete.c,readline.h}
-       - rl_strpbrk now takes const char * string arguments
-       - username_completion_function and filename_completion_function
-         now take const char * string arguments
-       - rl_basic_word_break_characters, rl_basic_quote_characters,
-         rl_completer_word_break_characters, rl_completer_quote_characters,
-         rl_filename_quote_characters, rl_special_prefixes are all
-         const char * variables
-
-lib/readline/{display.c,rlprivate.h}
-       - _rl_move_cursor_relative takes a const char * string argument
-
-redir.c
-       - change from tbisp@uswest.net to fix a problem with cygwin and
-         here_document_to_fd, since cygwin doesn't allow a file to be
-         unlinked if there is a descriptor open on it
-
-display.c
-       - fixed a slight bug in the logic deciding whether or not to redraw
-         a prompt containing invisible characters in update_line.  Fixes
-         bug reported by bdluevel@heitec.net
-
-                                  9/29
-                                  ----
-shell.c
-       - fixed a problem with a too-aggressive setting of restricted shell
-         mode based on shell_name.  Old code set `restricted' even after a
-         longjmp due to shell_execve trying to execute an executable script
-         without a leading `#!', though that case should result in an
-         unrestricted shell
-
-                                  10/2
-                                  ----
-copy_cmd.c
-       - make sure copy_function_def copies the `flags' and `line' members
-         of the function_def
-
-parse.y
-       - make the function_def production take a new function_body parse
-         unit, which is currently just a group_command (in prep for future
-         changes)
-
-builtins/printf.def
-       - changed getint, getlong, getulong, getdouble to print warnings on
-         range errors and return the clamped values that strtol/strtod
-         return, as POSIX.2 specifies
-
-                                  10/3
-                                  ----
-parse.y
-       - made a function_def a `command' instead of a `shell_command'
-         This makes the grammar more closely resemble that supplied in
-         the POSIX.2 standard
-       - made a `function_body' be like the function_body production in
-         the POSIX.2 standard.  This relaxes the restriction that the
-         body be composed of a group_command, but introduces a YACC
-         shift/reduce conflict
-
-print_cmd.c
-       - changes to named_function_string (for normal function printing)
-         and print_function_def (for printing function definitions embedded
-         in other commands) to print redirections that should be attached
-         to the function as a whole after the closing brace, because of
-         the changes to the parser
-
-tests/func2.sub
-       - tests for new function declarations whose bodies are not group
-         commands -- the command printing code still prints them with the
-         braces
-
-                                  10/4
-                                  ----
-lib/sh/pathphys.c
-       - new function, sh_physpath, resolves symlinks in pathname passed
-         as argument
-
-builtins/cd.def
-       - changed pwd_builtin to use sh_physpath if -P supplied or in
-         physical mode
-       - changed bindpwd to use sh_physpath if the no_symlinks argument is
-         non-zero
-       - changed change_to_directory to use sh_physpath and set
-         the_current_working_directory appropriately if the `nolinks'
-         argument is non-zero
-
-                                  10/5
-                                  ----
-variables.c, bashline.c, builtins/cd.def
-       - replaced calls to canonicalize_pathname with sh_canonpath
-
-builtins/cd.def
-       - rewrote change_to_directory to make it much shorter and simpler
-
-command.h
-       - added SUBSHELL_PIPE as possible flag value for subshell_environment
-
-execute_cmd.c
-       - execute_simple_command sets SUBSHELL_PIPE in subshell_environment
-         if the command has a pipe in or out
-
-subst.c
-       - don't reset pipeline_pgrp to shell_pgrp in command_substitute if
-         we're already in a pipline
-         ((subshell_environment & SUBSHELL_PIPE) != 0)
-
-                                  10/6
-                                  ----
-subst.c 
-       - change command_substitute to call setmode(fd, O_TEXT) on the pipe
-         file descriptor if __CYGWIN__ is defined; remove the other code
-         that converts CR/LF to LF on cygwin
-
-                                  10/9
-                                  ----
-stringlib.c
-       - change strcreplace() to make sure that RESIZE_MALLOCED_BUFFER is
-         called everywhere characters are added
-
-                                  10/11
-                                  -----
-lib/sh/spell.c
-       - new file, with the spelling correction code from builtins/cd.def
-
-builtins/cd.def
-       - a little surgery on cd_builtin, to make the structure clearer
-
-                                  10/12
-                                  -----
-builtins/read.def
-       - include fcntl.h and io.h on __CYGWIN__
-       - set mode of fd 0 to O_TEXT if __CYGWIN__ and O_TEXT are both
-         defined
-
-shell.c
-       - in open_shell_script, set mode of fd opened to the shell script
-         to O_TEXT if __CYGWIN__ and O_TEXT are both defined
-
-builtins/evalfile.c
-       - changed the __CYGWIN__ code to call setmode(fd, O_TEXT) instead
-         of translating \r to \n after the read() returns
-
-                                  10/13
-                                  -----
-lib/sh/strtrans.c, stringlib.c
-       - moved ansicstr() from stringlib.c to new file lib/sh/strtrans.c
-       - new function ansic_quote, to quote a string with $'...'
-
-lib/sh/strindex.c, stringlib.c
-       - moved strindex() from stringlib.c to new file lib/sh/strindex.c
-
-lib/sh/Makefile.in
-       - compile `shquote.c' in as part of the shell library
-       - compile `strtrans.c' in as part of the shell library
-       - compile `strindex.c' in as part of the shell library
-
-Makefile.in
-       - link with libsh before any of the readline libraries
-
-builtins/common.c
-       - removed the functions also appearing in lib/sh/shquote.c
-
-externs.h, builtins/common.h
-       - moved extern declarations for functions in lib/sh/shquote.c to
-         externs.h from builtins/common.h
-
-variables.c
-       - print_var_value (used in the output of `set') now calls
-         ansic_quote to quote the value, so any non-printable characters
-         are displayed
-
-                                  10/14
-                                  -----
-syntax.h
-       - new file, with definitions from shell.h having to do with shell
-         syntax, metacharacters, and quoting
-
-parse.y
-       - moved defines for shell metachars and other char class declarations
-         to syntax.h
-
-shell.h
-       - now includes syntax.h
-
-Makefile.in,builtins/Makefile.in,lib/sh/Makefile.in
-       - added syntax.h to appropriate dependency lists
-
-                                  10/16
-                                  -----
-mksyntax.c
-       - new program, to build a syntax table for the shell at compile time
-
-Makefile.in
-       - new generated file, syntax.c, generated by mksyntax
-
-general.h
-       - `digit(x)' is now just defined as `isdigit(x)'
-
-syntax.h
-       - now that we have sh_syntaxtab[], change the appropriate defines
-         to use it
-
-parse.y, subst.c
-       - change checks of member(c, slashify_in_quotes) to test
-         sh_syntaxtab[c] & CBSDQUOTE
-
-builtins/set.def
-       - corrected the help text for `unset', since PATH and IFS may be
-         unset
-
-subst.c
-       - changed explicit tests for shell special parameters using member()
-         or strchr() to test (sh_syntaxtab[c] & CSPECVAR) instead
-       - changed some boilerplate calls to member() that test for validity
-         of various characters in the expansion process to macros for
-         efficiency
-
-lib/sh/shquote.c
-       - changed some of the functions to use checks against sh_syntaxtab[]
-         flag values
-
-                                  10/19
-                                  -----
-findcmd.c
-       - find_user_command_in_path no longer finds directories if the caller
-         specified FS_NODIRS in the flags argument.  This fixes the bug of
-         hashing directory names, at the loss of some information about
-         attempting to execute directories
-
-builtins/hash.def
-       - hash -p dirname name no longer puts directories into the hash table
-
-                                  10/26
-                                  -----
-builtins/read.def
-       - make sure that the last unwind-protect added is the one that calls
-         xfree(input_string), so that this is the top element on the
-         unwind-protect stack
-       - if xrealloc() is called to increase the size of input_string, make
-         sure to remove the top element from the unwind-protect stack (the
-         old xfree) and add a new one, in case realloc() freed the original
-         input_string and allocated new space.  This fixes the bug of bash
-         crashing because it's trying to free already-freed memory if the
-         `read' is interrupted (reported by klausf@Pool.Informatik.RWTH-Aachen.DE)
-
-                                  10/27
-                                  -----
-subst.c
-       - fixed a problem in expand_word_list_internal so that
-         last_command_exit_value is set to 1 if a variable assignment fails
-         and a jump_to_top_level (DISCARD) is taken.  This fixes the problem
-         of assignment statements to read-only variables appearing to succeed
-         (though it always worked right in non-interactive posix-mode shells)
-
-                                  10/30
-                                  -----
-lib/readline/readline.h
-       - rl_completion_entry_function is now of type CPFunction *, since
-         that's the actual type that's used, and casting function pointers
-         of different types (which happened all the time as a result), is
-         problematic on some architectures
-
-lib/readline/complete.c
-       - changed entry function argument to gen_completion_matches to be of
-         type CPFunction *, since that's how it's used
-       - changed variables that are completion entry function pointers to be
-         of type CPFunction *, removed problematic typecasts
-
-lib/readline/doc/rltech.texinfo
-       - documented type change for rl_completion_entry_func
-
-lib/readline/rltypedefs.h
-       - new file, with all the readline function typedefs
-
-lib/readline/rltypedefs.h
-       - new typedef, rl_command_func_t, which is a function returning
-         an int
-       - a KEYMAP_ENTRY now contains a pointer to an rl_command_func_t
-       - new typedef, rl_compentry_func_t, which is a function returning
-         a char *
-       - new typdef, rl_completion_func_t, which is a function returning
-         a char **
-       - new typedef, rl_quote_func_t, which is a function returning a
-         char *
-       - new typedef, rl_dequote_func_t, which is a function returning a
-         char *
-       - new typedef, rl_compignore_func_t, which is a function returning a
-         char *
-       - new typedef, rl_compdisp_func_t, which is a void function taking
-         a char **, int, int argument list
-       - new typedef, rl_hook_func_t, which is a function taking no args
-         and returning an int (used for input and other hooks)
-       - new typedef, rl_modterm_func_t, which is a void function tkaing
-         an int, used to modify terminal (rl_prep_term_function)
-       - new typedef, rl_getc_func_t, which is an int-returning function
-         that takes a FILE *
-       - new typedef, rl_linebuf_func_t, which takes a string and an int
-         index and returns an int
-       - new generic typedefs, rl_intfunc_t and rl_voidfunc_t, which are
-         functions which take and return int and void, respectively 
-       - new generic typedef, rl_vintfunc_t, which takes an int and returns
-         void
-       - new generic typedefs, rl_icpfunc_t and rl_vcpfunc_t, which take a
-         char * and return int and void, respectively
-       - new generic typedefs, rl_icppfunc_t and rl_vcppfunc_t, which take
-         a char ** and return int and void, respectively
-
-lib/readline/rlprivate.h
-       - rl_last_func is now of type rl_command_func_t *
-
-lib/readline/readline.c
-       - declare rl_last_func as rl_command_func_t *
-
-lib/readline/{bind,readline,vi_keymap,emacs_keymap,funmap,keymaps,isearch}.c
-lib/readline/readline.h
-       - change appropriate cases of (Function *) to (rl_command_func_t *)
-
-lib/readline/{readline.h,bind.c}
-       - rl_named_function and rl_function_of_keyseq now return a
-         (rl_command_func_t *)
-
-lib/readline/bind.c
-       - changed type of functions in parser function table from Function *
-         to _rl_parser_func_t *
-
-lib/readline/funmap.c
-       - removed `vi-bracktype' from vi function map -- it's not a
-         bindable function
-
-lib/readline/{readline.h,complete.c}
-       - changed appropriate uses of CPFunction * to rl_compentry_func_t *
-         or rl_quote_func_t *
-
-lib/readline/{rltty.c,readline.h}
-       - rl_prep_term_function is now of type rl_vintfunc_t *
-       - rl_deprep_term_function is now of type rl_voidfunc_t *
-
-lib/readline/{keymaps,history.h}
-       - include rltypedefs.h or <readline/rltypedefs.h> as appropriate
-
-lib/readline/{display.c,readline.h}
-       - rl_redisplay_func is now of type rl_voidfunc_t *
-
-lib/readline/{callbacks.c,readline.h}
-       - the `linefunc' argument to rl_callback_handler_install and the
-         rl_linefunc variable are now of type rl_vcpfunc_t *
-
-lib/readline/{complete.c,readline.h}
-       - rl_completion_display_matches_hook is now of type
-         rl_compdisplay_func_t *
-       - rl_directory_completion_hook is now of type rl_icppfunc_t *
-
-lib/readline/{history.h,histexpand.c}
-       - history_inhibit_expansion_function is now of type
-         rl_linebuf_func_t *
-
-lib/readline/histexpand.c
-       - new private type, _hist_search_func_t, used to indirect through
-         the various history search functions
-
-lib/tilde/tilde.h
-       - new typedef, tilde_hook_func_t, which takes a char * and returns
-         a char *
-
-lib/tilde/tilde.[ch]
-       - tilde_expansion_preexpansion_hook and tilde_expansion_failure_hook
-         are now of type tilde_hook_func_t *
-
-[THERE ARE NO LONGER ANY REFERENCES TO Function *, CPFunction *, or
-CPPFunction * IN THE READLINE SOURCE, WHICH INCLUDES THE TILDE LIBRARY]
-
-{bashline,bracecomp}.c, bashline.h
-       - changes for changed type of rl_completion_entry_func and other
-         changed types (rl_compentry_func_t, rl_completion_func_t,
-         const changes for prototypes, etc.)
-
-pathexp.[ch]
-       - shell_glob_filename now takes a `const char *' argument
-       - quote_string_for_globbing now takes a `const char *' argument
-
-                                  10/31
-                                  -----
-lib/sh/zwrite.c
-       - fix zwrite() to update the buffer pointer in the case of a
-         partial write, in addition to decreasing the count of bytes to
-         be written
-
-support/config.{guess,sub}
-       - added entries for MIPS-based Compaq machines running NonStopUX
-
-                                  11/1
-                                  ----
-lib/readline/undo.c
-       - renamed free_undo_list to be rl_free_undo_list, made a dummy
-         replacement function free_undo_list that just calls
-         rl_free_undo_list
-
-lib/readline/readline.h
-       - extern declaration for rl_free_undo_list
-
-lib/readline/{readline,signals}.c
-       - changed calls to free_undo_list to rl_free_undo_list
-
-lib/readline/doc/rltech.texinfo
-       - changed all function types and arguments for new typedefs
-
-                                  11/2
-                                  ----
-lib/readline/{rlprivate.h,terminal.c,display.c}
-       - term_clreol, term_clrpag, term_cr, term_backspace, term_goto,
-         term_pc, term_im, term_ei, term_ic, term_ip, term_IC, term_dc,
-         term_DC, term_forward_char, term_up, term_mm, term_mo, term_ku,
-         term_kd, term_kr, term_kl, term_ks, term_ke, term_kh, term_kH,
-         terminal_can_insert variables all now have a _rl_ prefix
-
-lib/readline/{rlprivate.h,terminal.c,display.c, readline.c}
-       - screenheight, screenwidth, screenchars now have an _rl_ prefix
-
-lib/readline/{terminal,complete,isearch,kill,macro,readline,search,undo,util,vi_mode}.c
-       - changed calls to ding to calls to rl_ding
-
-lib/readine/{isearch,readline,search}.c
-       - saved_line_for_history now has an _rl_ prefix
-
-lib/readline/readline.[ch]
-       - renamed maybe_{replace,save,unsave} line to have an rl_ prefix
-
-lib/readline/{readline,search,isearch}.c
-       - changed calls to maybe_{replace,save,unsave} line to call the
-         rl_-prefixed equivalents
-
-lib/readline/{rlprivate.h,readline.c,util.c}
-       - renamed alphabetic to rl_alphabetic; changed calls
-
-lib/readline/{bind.c,funmap.c,rlprivate.h}
-       - possible_control_prefixes -> _rl_possible_control_prefixes
-       - possible_meta_prefixes -> _rl_possible_meta_prefixes
-
-lib/readline/compat.c
-       - new file for entry points for backwards compatibility functions
-       - moved free_undo_list here from undo.c
-       - maybe_{replace,save,unsave}_line function that call their rl_
-         counterparts
-       - moved ding() here; it just calls rl_ding()
-       - moved alphabetic here; it just calls _rl_alphabetic()
-
-lib/readline/Makefile.in
-       - make sure compat.o is built and linked appropriately
-
-bashline.c,pcomplete.c
-       - changed calls to ding() to call rl_ding()
-
-support/shobj-conf
-       - changed linux stanza SHLIB_XLDFLAGS to make the `soname' in a
-         shared library have only the major version number, rather than
-         major and minor numbers
-       - made analogous changes for bsd/os-4
-       - changed freebsd 3.x stanza to match `freebsdelf[3-9]*' for
-         FreeBSD elf systems and `freebsdaout[3-9]*' for FreeBSD
-         a.out systems (are there any?)
-
-lib/readline/doc/{rluser,hsuser}.texinfo
-       - changed uses of @samp to @option where appropriate
-
-doc/bashref.texi
-       - changed uses of @samp to @option where appropriate
-
-                                  11/3
-                                  ----
-lib/readline/{readline.h,complete.c,compat.c}
-       - completion_matches, username_completion_function,
-         filename_completion_function all have an rl_ prefix
-
-{bashline,bracecomp,pcomplete}.c
-       - changed calls to completion_matches, username_completion_function,
-         and filename_completion_function
-
-lib/sh/shquote.c
-       - single_quote, double_quote, un_double_quote, backslash_quote,
-         backslash_quote_for_double_quotes, contains_shell_metas all now
-         have an sh_ prefix
-
-externs.h
-       - changed extern declarations for functions from shquote.c
-
-{array,bashline,pcomplete,print_cmd,variables}.c, parse.y
-builtins/{alias,complete,trap,type}.def
-       - changed callers of single_quote
-
-{array,bashline}.c, builtins/setattr.def
-       - changed callers of double_quote
-
-{bashline,bracecomp}.c, parse.y, builtins/printf.def
-       - changed callers of backslash_quote
-
-parse.y
-       - changed callers of backslash_quote_for_double_quotes
-
-{print_cmd,variables}.c
-       - changed callers of contains_shell_metas
-
-lib/readline/{rlshell.h,shell.c,histexpand.c}
-       - single_quote -> sh_single_quote
-
-lib/readline/{rlshell.h,shell.c,input.c}
-general.[ch],shell.c,subst.c
-        - unset_nodelay_mode -> sh_unset_nodelay_mode
-
-lib/readline/{rlshell.h,shell.c}, lib/tilde/tilde.c, variables.c
-       - get_home_dir -> sh_get_home_dir
-
-lib/readline/rlshell.h,lib/readline/bind,histfile,nls,readline,shell,terminal}.c, lib/tilde/tilde.c, variables.c
-       - get_env_value -> sh_get_env_value
-
-lib/readline/rlshell.h,lib/readline/{shell,terminal}.c
-variables.h,{jobs,nojobs,variables}.c
-       - set_lines_and_columns -> sh_set_lines_and_columns
-
-                                  11/6
-                                  ----
-configure.in
-       - bash can only link with an already-installed readline library whose
-         version is 4.2 or greater
-
-variables.h
-       - new variable attribiute, noassign, with its accompanying test macro,
-         noassign_p.  Completely internal, not user-settable
-
-execute_cmd.c
-       - treat noassign variables like readonly variables, except an attempt
-         to assign to them does not cause a non-interactive shell in POSIX
-         mode to abort
-
-{subst,variables}.c,builtins/declare.def
-       - attempts to assign to `noassign' variables return an error status,
-         but no error messages -- almost identical to readonly variables
-
-variables.c
-       - GROUPS and FUNCNAME are `noassign' variables, meaning assignment to
-         them is disallowed, but that they may be unset (in which case they
-         lose their special properties)
-
-doc/{bash.1,bashref.texi}
-       - documented that assignments to GROUPS and FUNCNAME are disallowed
-         and return an error status
-
-                                  11/8
-                                  ----
-lib/readline/{funmap.c,bind.c,rlprivate.h}
-       - _rl_possible_{control,meta}_prefixes are now arrays of `const char *'
-         and are defined in bind.c, since that's where they're used
-
-lib/readline/rltty.c
-       - changed prepare_terminal_settings to take an `oldtio' argument
-         instead of `otio', which shadows the global declaration
-
-lib/readline/bind.c
-       - the `name' member of a parser_directive element is now a
-         `const char *'
-       - the `name' member of a boolean_varlist element is now a
-         `const char *'
-       - the `name' member of a string_varlist element is now a
-         `const char *'
-       - the `name' member of an assoc_list element is now a
-         `const char *'
-       - the `name' member of an keymap_names element is now a
-         `const char *'
-
-lib/readline/display.c
-       - changed scope-local char * variable `temp' to `vtemp' because
-         there's already a function local variable named `temp' of a
-         different type (int) in rl_redisplay
-
-lib/readline/util.c
-       - pathname_alphabetic_chars is now `const char *'
-
-lib/readline/terminal.c
-       - the `tc_var' member of a _tc_string element is now a
-         `const char *'
-
-lib/readline/histexpand.c
-       - changed history_expand_internal to remove the duplicate local
-         declaration of `t' in the `s'/`&' case
-
-lib/readline/histfile.c
-       - in history_filename, `home' is now a `const char *'
-
-lib/tilde/tilde.c
-       - default_prefixes and default_suffixes are now arrays of
-         `const char *'
-
-lib/readline/vi_mode.c
-       - vi_motion and vi_texmod are now `const char *'
-
-lib/readline/complete.c
-       - simplified the conditional declaration of getpwent()
-
-variables.[ch]
-       - get_string_value now takes a `const char *' argument
-
-                                  11/10
-                                  -----
-display.c
-       - changes to expand_prompt and rl_redisplay to keep track of the number
-         of invisible characters on the first line of the prompt, in case it
-         takes up more than one physical line, and not all invisible chars are
-         on the first line
-       - the code that determines the index into the line at which to wrap the
-         first line if the visible prompt length exceeds the screen width was
-         changed to use the number of invisible chars in the first physical
-         prompt line rather than the total number of invisible characters
-       - changed redraw_prompt to save and restore prompt_invis_chars_first_line
-
-subst.c
-       - changed expand_string_internal to savestring() the string argument
-         to avoid possible doubly-freed memory on substitution errors
-       - fixed expand_word_list_internal so that commands with assignment
-         statements preceding words that expand to nothing return a failure
-         status if one of the assignments fails; for example
-
-               readonly TVAR
-               TVAR=7 $ECHO $ABCDE
-       - made sure that all cases of jump_to_top_level set
-         last_command_exit_value to something non-zero before jumping, since
-         they are by definition errors
-
-builtins/evalstring.c
-       - changed parse_and_execute to set last_result to EXECUTION_FAILURE
-         along with last_command_exit_value in the `DISPOSE' case of a
-         jump_to_top_level, since we can return this value in most
-         (interactive) circumstances
-
-                                  11/14
-                                  -----
-general.c
-       - fix legal_number so that it skips any trailing whitespace in its
-         string argument after strtol returns, since strtol does not
-
-lib/readline/{complete.c,readline.h}
-       - new function pointer, rl_directory_rewrite_hook, identical in effect
-         to rl_directory_completion_hook except that it does not modify what
-         is displayed when the possible completions are listed or inserted
-
-bashline.c
-       - changed tcsh_magic_space to try and insert a space closer to where
-         the point was originally, rather than always inserting it at the
-         end of the line
-
-                                  11/16
-                                  -----
-jobs.c
-       - fixed a bug that happened on cygwin systems that caused the jobs
-         table to fill up if a file sourced from an interactive shell ran
-         lots of jobs -- notify_and_cleanup() never called notify_of_job_status
-
-subst.c
-       - fixed pat_match to avoid infinite recursion on zero-length matches
-         from match_pattern
-
-                               11/17/2000
-                               ----------
-[bash-2.05-alpha1 released]
-
-                                  11/18
-                                  -----
-support/shobj-conf
-       - added GNU Hurd support, identical to linux
-
-variables.c
-       - cygwin systems don't use the exportstr stuff at all, so call
-         INVALIDATE_EXPORTSTR before testing var->exportstr, since just
-         blindly using the value_cell will break exported functions that
-         already have an exportstr set
-       - when recomputing the exported value because valid_exportstr fails,
-         make sure to call named_function_string if the variable is a shell
-         function
-
-                                  11/20
-                                  -----
-variables.c
-       - removed call to valid_exportstr; the exportstr code has been
-         adequately debugged
-
-lib/glob/fnmatch.c
-       - reverted to the POSIX.2 behavior of using the current locale and
-         strcoll() to evaluate range expressions in bracket expressions
-
-doc/{bash.1,bashref.texi}
-       - added note to Pattern Matching section emphasizing that the current
-         locale plays a part in evaluating range expressions within [...]
-
-aclocal.m4
-       - added an #include <unistd.h> to the test for posix sigaction
-         restarting interrupted system calls
-
-support/config.guess
-       - changes from Tim Mooney to support `letter version' releases of
-         Tru 64 Unix on the Alpha (e.g., 5.1a)
-
-                                  11/21
-                                  -----
-lib/sh/pathphys.c
-       - make sure MAXSYMLINKS is defined
-
-aclocal.m4
-       - changed BASH_CHECK_PWFUNCS to just use AC_EGREP_CPP on a file
-         that includes pwd.h and other header files, checking for getpwuid.
-         It #defines HAVE_GETPW_DECLS if the egrep succeeds
-
-lib/readline/complete.c
-       - provide extern declaration of getpwent if _POSIX_SOURCE is defined,
-         since most systems don't declare it in <pwd.h> unless _POSIX_SOURCE
-         is undefined
-
-                                  11/22
-                                  -----
-input.c
-       - fixed a small typo in the cygwin-specific code
-
-doc/{bashref.texi,bash.1}
-       - added some more explanatory text about the effect of the current
-         locale's collating order on range expressions within bracket
-         expressions
-
-doc/bashref.texi, lib/readline/doc/{rltech,rluser,hstech}.texinfo
-       - changed to use @env instead of @code for the names of environment
-         and shell variables in text (not in tables yet)
-
-                                  11/27
-                                  -----
-configure.in
-       - configure without the bash malloc on Interix
-
-lib/readline/doc/rltech.texinfo
-       - changed completion_matches() to rl_completion_matches()
-       - changed filename_completion_function() to
-         rl_filename_completion_function()
-       - changed username_completion_function() to
-         rl_username_completion_function()
-
-lib/readline/rlprivate.h
-       - changed declaration of _rl_alphabetic to rl_alphabetic, since that's
-         what's used in the C files
-
-support/bashbug.sh
-       - Debian has /usr/bin/editor as a link to the system default editor;
-         make that one of the alternatives if $EDITOR is not set
-       - if the OS provides mktemp(1) or tempfile(1), use those to create
-         the temp file for the bug report
-
-lib/readline/{readline.[ch], callback.c}
-       - new function, rl_set_prompt, called with prompt string as argument,
-         sets and, if necessary, expands rl_prompt
-
-lib/readline/{complete.c,compat.c,readline.h}
-       - rl_completion_matches now takes a `const char *' as its first
-         argument
-       - compute_lcd_of_matches now takes a `const char *' as its third
-         argument
-
-lib/readline/rltypedefs.h
-       - a rl_completion_func_t now takes a `const char *' as its first
-         argument
-
-lib/readline/Makefile.in
-       - added dependencies on rltypedefs.h
-
-bashline.c
-       - attempt_shell_completion now takes a `const char *' as its first
-         argument
-       - removed bogus cast when assigning to rl_attempted_completion_function
-         and rl_completion_entry_function
-       - bash_directory_completion_matches takes a `const char *' argument
-
-pcomplete.c
-       - gen_matches_from_itemlist, pcomp_filename_completion_function,
-         gen_action_completions, gen_globpat_matches, gen_wordlist_matches,
-         gen_compspec_completions now take `const char *' arguments as
-         appropriate
-       - programmable_completions now takes `const char *' first and 
-         second arguments
-
-pcomplib.c
-       - find_compspec now takes a `const char *' argument
-
-                                  11/29
-                                  -----
-shell.c
-       - in open_shell_script, if we have /dev/fd, don't perform the check
-         for a binary file if isatty(fd) (where fd is opened on the script
-         name) returns non-zero
-       - in open_shell_script, don't call init_noninteractive again, since it
-         can undo changes made by the startup files ($BASH_ENV)
-
-input.c
-       - in fd_to_buffered_stream, make sure buffer size (and hence size
-         arg passed to read(2)) is greater than zero.  This makes
-         bash /dev/stdin work right.
-       - return -1 from sync_buffered_stream immediately if buffers is NULL
-         (can happen when running `bash -i /dev/stdin' and executing a
-         command that requires a fork)
-
-                                  11/30
-                                  -----
-jobs.c
-       - renamed cont_signal_handler to sigcont_sighandler for consistency
-       - renamed stop_signal_handler to sigstop_sighandler for consistency
-       - if there is no jobs list or no outstanding jobs, return immediately
-         from notify_of_job_status, before fussing with the signal state
-       - change map_over_jobs to not fuss with the signal state unless there
-         are jobs
-
-lib/malloc/malloc.c
-       - encapsulated the code to block and unblock signals during morecore()
-         execution into two functions:  block_signals and unblock_signals
-       - only block signals in morecore() if interrupt_immediately is non-zero
-         or SIGINT or SIGCHLD is trapped
-
-                                  12/1
-                                  ----
-lib/readline/readline.c
-       - fix to rl_forward to make sure that lend doesn't get set < 0, since
-         that will result in rl_point being < 0
-
-                                  12/5
-                                  ----
-parse.y
-       - fix to parse_matched_pair to allow backslash to escape a ' inside a
-         $'...' construct inside another grouping construct like ${...}
-       - translate $'...' and $"..." in parse_matched_pair, because nothing
-         else will do it if such a construct appears inside a grouping
-         construct
-
-                                  12/6
-                                  ----
-configure.in
-       - make sure all bracket tests for pattern matching in case statements
-         are appropriately quoted, so autoconf doesn't swallow the brackets
-       - add -rdynamic to LOCAL_LDFLAGS for freebsd-4.x
-
-examples/loadables/realpath.c
-       - new loadable builtin, canonicalizes pathnames and expands symlinks
-
-builtins/ulimit.def
-       - added undocumented -w option for setting RLIMIT_SWAP, if it's defined
-
-                                  12/7
-                                  ----
-bashline.c
-       - reordered code in initialize_readline so all of the rl_add_defun
-         calls are made before the call to rl_initialize, and all of the
-         rl_{bind,unbind}_key_in_map calls are made after initializing
-         readline.  This allows the bash-specific function names to be used
-         in ~/.inputrc
-
-                                  12/12
-                                  -----
-lib/readline/callback.c
-       - in rl_callback_read_char, loop after returning from
-         readline_internal_char and test rl_pending_input in case some
-         function (like the incremental search functions and digit argument
-         functions) pushed input back with rl_execute_next
-
-lib/readline/readline.h
-       - new rl_state flag:  RL_STATE_INPUTPENDING, indicating that
-         rl_execute_next has pushed input back for rl_get_key to read
-
-lib/readline/input.c
-       - new function to clear rl_pending_input: rl_clear_pending_input()
-
-lib/readline/{input,readline,signals}.c
-       - when rl_pending_input is set, set state RL_STATE_INPUTPENDING;
-         unset that state when rl_read_key returns the pending input
-       - call rl_clear_pending_input at appropriate points
-
-                                  12/15
-                                  -----
-lib/readline/histfile.c
-       - don't leak file descriptors while attempting to truncate a non-regular
-         file
-
-input.c
-       - make sure check_bash_input sets the close-on-exec flag for the file
-         descriptor used to save the bash input fd
-
-parse.y
-       - if default_buffered_input gets changed while it's on the saved
-         stream stack, make sure it gets set to close-on-exec when it's
-         restored by pop_stream()
-
-                                  12/18
-                                  -----
-builtins/ulimit.def
-       - change set_limit to account for Cygwin's setdtablesize() being
-         declared as a void function
-
-support/config.{guess,sub}
-       - change cygwin32 to cygwin
-
-                                  12/20
-                                  -----
-nojobs.c
-       - make wait_sigint_handler handle the case of interrupt_immediately
-         being non-zero when it's called, and jump out appropriately
-
-jobs.c
-       - new function to run sigchld traps: run_sigchld_trap(); called from
-         waitchld
-       - broke the code that computes the printable job status messages for
-         pretty_print_job out into a separate function
-       - rearranged some code eliminating a useless `else' branch in wait_for
-       - shell_tty_info is now a TTYSTRUCT, using defines from shtty.h
-       - broke the code that sets a job's status after waitpid says its state
-         has changed and cleans up after a received SIGINT out into a separate
-         function: set_job_status_and_cleanup
-       - last_stopped_job() -> job_last_stopped() to avoid collision with a
-         variable name
-       - last_running_job() -> job_last_running() for consistency
-
-                                  12/21
-                                  -----
-variables.c
-       - new function, print_func_list (SHELL_VAR **list); prints shell
-         functions from list in a form that may be re-used as input to
-         redefine the functions
-
-variables.h
-       - new extern declaration for print_func_list
-
-builtins/set.def
-       - set without options now calls print_func_list to have functions
-         printed in a way that can be reused as input (this affects
-         `declare' and `declare -p' also)
-
-                                  12/27
-                                  -----
-general.h
-       - add an ISOCTAL define
-
-builtins/common.h
-       - use ISOCTAL in read_octal function
-
-parse.y
-       - in decode_prompt_string, don't just skip STRING forward by 3 if an
-         octal sequence is translated; handle sequences of fewer than three
-         characters by checking each character
-
-                                  12/28
-                                  -----
-doc/{bash.1,bashref.texi}
-       - make sure `vi-move' is a documented keymap argument to bind's
-         `-m' option
-
-                                  12/29
-                                  -----
-variables.c
-       - change print_assignment so that functions are printed in a way that
-         may be reused as input (without the `=')
-
-                                1/2/2001
-                                --------
-test.c
-       - fix test_command to print an error message if `[' is supplied a
-         single argument that is not `]'
-
-support/shobj-conf
-       - change test of $SHOBJ_CC from `gcc*' to `*gcc*' to handle full
-         pathnames
-
-                                  1/11
-                                  ----
-execute_cmd.c
-       - in initialize_subshell, zero out builtin_env, since those aren't
-         supposed to be exported
-
-variables.c
-       - new function: shell_var_from_env_string, creates a SHELL_VAR from
-         a `name=value' style environment string and returns it
-       - new function: bind_name_in_env_array(name, value, array), makes
-         NAME have VALUE in ARRAY, a temporary environment
-       - new function: bind_tempenv_variable (name, value), makes NAME have
-         VALUE in one of the temporary environments -- temporary_env,
-         builtin_env, or function_env
-       - changed bind_variable to call bind_tempenv_variable if one of the
-         temporary environments is non-null before modifying the
-         shell_variables table.  This fixes a problem with sourced scripts
-         modifying variables in a temporary environment, but not seeing the
-         updated values
-
-                                  1/12
-                                  ----
-variables.c
-       - changed things so OSTYPE, HOSTTYPE, and MACHTYPE are set only if
-         they don't have a value at shell startup
-
-                                  1/17
-                                  ----
-builtins/fc.def
-       - create temp file with MT_USETMPDIR
-
-variables.c
-       - allow function local readonly variables to overwrite (or shadow)
-         other (calling) function readonly variables, but not global
-         readonly ones
-
-builtins/wait.def
-       - replace unwind_protect of interrupt_immediately, since that's a
-         variable that you cannot unwind-protect (the unwind-protect code
-         uses it)
-
-                                  1/22
-                                  ----
-Makefile.in
-       - changed RELSTATUS to `beta1'
-
-lib/readline/terminal.c
-       - added rl_set_screen_size function, wrapper around
-         _rl_set_screen_size so bash doesn't call _rl_ functions
-
-lib/readline/{rlprivate,readline}.h
-       - moved rl_explicit_arg to readline.h
-       - moved rl_numeric_arg to readline.h
-       - moved rl_editing_mode to readline.h
-       - moved rl_last_func to readline.h
-       - added rl_set_screen_size to readline.h
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_explicit_arg, rl_editing_mode, rl_numeric_arg,
-         rl_last_func
-       - documented rl_set_screen_size
-
-{jobs,nojobs}.c
-       - _rl_set_screen_size -> rl_set_screen_size
-
-{bashline,pcomplete}.c, builtins/set.def
-       - removed extern declarations of variables defined in readline.h
-
-                                  1/23
-                                  ----
-support/rlvers.sh
-       - use $TMPDIR if it's defined
-       - use $RL_INCDIR (set by -I option, /usr/local/include by default)
-         as the directory containing the installed readline header files
-       - cd to the temp directory before attempting compilation
-
-configure.in
-       - pass `-I ${includedir}' to rlvers.sh
-
-                                  1/29
-                                  ----
-subst.c
-       - fixed parameter_brace_expand to only throw away the state of
-         quoted dollar-at if we're going to be using the rhs of the
-         brace expansion, since whatever parameter_brace_expand_rhs sets
-         should be what goes (corrects bad fix of 2/16/2000)
-       - fixed param_expand to only free temp after calling
-         parameter_brace_expand if it's a quoted null and we *did not*
-         have a quoted $@, since in that case we want to keep it and
-         do the $@ special handling (fixes real problem from 2/16/2000)
-
-                                  1/30
-                                  ----
-variables.c
-       - remove export attribute from SSH2_CLIENT, like SSH_CLIENT
-
-                                   2/1
-                                   ---
-unwind_prot.c
-       - added new function, clear_unwind_protect_list, to zero out the
-         unwind_protect list, optionally freeing the elements
-
-unwind_prot.h
-       - new extern declaration for clear_unwind_protect_list
-
-execute_cmd.c
-       - call clear_unwind_protect_list in initialize_subshell.  This fixes
-         the problem of core dumps when calling a shell script without a
-         leading `#!' from a shell function or other context with an
-         unwind-protect list
-       - set variable_context and return_catch_flag to 0 in
-         initialize_subshell, since a new subshell is no longer in a shell
-         function
-
-                                   2/2
-                                   ---
-doc/readline.3
-       - updated the text; clarified several points
-       - changed the usage synopsis to include <readline/readline.h> and
-         <readline/history.h>
-
-lib/readline/doc/hstech.texinfo
-       - made sure all function prototypes are valid ANSI C (mostly
-         changing () to (void))
-
-lib/readline/doc/rluser.texinfo
-       - a few clarifications
-
-lib/readline/doc/rltech.texinfo
-       - a few clarifications
-       - added two new subsections for character input and terminal
-         management
-       - changed all function prototypes to be valid ANSI C (mostly
-         replacing () with (void))
-       - documented some variables in readline.h but previously not in
-         the reference manual (rl_num_chars_to_read, rl_dispatching,
-         rl_gnu_readline_p, rl_completion_type)
-       - documented some functions in readline.h but previously not in
-         the reference manual (rl_clear_pending_input, rl_prep_terminal,
-         rl_deprep_terminal, rl_tty_set_default_bindings, rl_alphabetic,
-         rl_crlf)
-
-lib/readline/readline.h
-       - added extern declaration for rl_clear_pending_input()
-       - added extern declaration for rl_alphabetic
-       - changed rltty_set_default_bindings to rl_tty_set_default_bindings
-       - changed crlf() -> rl_crlf()
-
-lib/readline/rltty.c
-       - new function, rl_tty_set_default_bindings, just calls
-         rltty_set_default_bindings (needed `rl_' prefix)
-
-lib/readline/readline.c
-       - readline_default_bindings now calls rl_tty_set_default_bindings
-
-lib/readline/terminal.c
-       - renamed crlf() to rl_crlf(); crlf() is still defined for backwards
-         compatibility 
-
-bashline.c, lib/readline/{complete,display}.c
-       - changed all calls to crlf() to rl_crlf()
-
-test.c
-       - fix filecomp() so that `test file1 -nt file2' doesn't fail if file1
-         exists but file2 does not
-
-                                   2/5
-                                   ---
-lib/readline/{terminal,compat}.c
-       - move crlf() backwards-compatibility definition to compat.c
-
-execute_cmd.c
-       - if we're running a command `( command ) &' from a non-interactive
-         shell, don't unconditionally disable expand_aliases.  Only do it
-         when running such a command from an interactive shell, since then
-         we're changing to a non-interactive shell
-
-                                   2/6
-                                   ---
-[bash-2.05-beta1 released]
-
-lib/readline/compat.c
-       - add extern declaration for rl_crlf()
-
-lib/readline/undo.c
-       - initialize start and end in rl_do_undo to avoid bogus gcc compiler
-         warning with -Wall
-
-lib/readline/rlprivate.h
-       - fix typo in extern declaration of _rl_current_display_line()
-       - add extern declaration of _rl_free_saved_history_line()
-
-lib/readline/terminal.c
-       - return immediately from _rl_set_screen_size if one of the args is 0
-       - new function, rl_get_screen_size (int *rows, int *cols) to return
-         readline's idea of the screen dimensions
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_get_screen_size
-
-                                   2/7
-                                   ---
-pathexp.c
-       - a couple of fixes for the POSIX_GLOB_LIBRARY version of the globbing
-         code
-
-expr.c
-       - fixed omission of ^= from the special assignment operators
-
-shell.c
-       - change logic for setting `posixly_correct' at shell startup:  if
-         $POSIXLY_CORRECT or $POSIX_PEDANTIC is found in the environment,
-         set it to 1, otherwise retain the previous value (which is
-         initialized to 0)
-
-                                  2/10
-                                  ----
-builtins/evalstring.c
-       - since subshell_environment is now a flags word, test for the
-         SUBSHELL_COMSUB bit being set when decided whether or not to
-         evaluate $(<file), not just for subshell_environment ==
-         SUBSHELL_COMSUB
-
-                                  2/12
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - fixed a couple of problems with the documentation for
-         rl_prep_terminal and rl_deprep_terminal 
-       - added description of rl_set_prompt
-
-support/config.sub
-       - added support for Linux running on the IBM S390
-
-                                  2/13
-                                  ----
-input.c
-       - new function, fd_is_bash_input (fd), encapsulates the test for
-         whether or not FD is the file descriptor from which bash is reading
-         its input
-       - change check_bash_input to call fd_is_bash_input
-       - new function, save_bash_input (fd, new_fd), handles saving the
-         buffered stream associated with file descriptor FD to one
-         associated with NEW_FD.  If NEW_FD == -1, this function allocates a
-         file descriptor itself with fcntl
-       - new function, set_bash_input_fd(fd), sets the fd bash is using to
-         read input to FD
-       - changed duplicate_buffered_stream to note that the buffer it's
-         duplicating to was the bash input buffer (B_WASBASHINPUT)
-
-input.h
-       - extern declarations for fd_is_bash_input and save_bash_input
-       - new flag for b->flag: B_WASBASHINPUT
-
-redir.c
-       - in add_undo_redirect, if FD is 0, make the undo redirect be of type
-         r_duplicating_input instead of r_duplicating_output, since that fd
-         requires special handling in the presence of buffered streams (fixes
-         problem with scripts reading input through a pipe restoring bash
-         input buffered stream correctly after a `read' with an input
-         redirection
-
-                                  2/14
-                                  ----
-lib/readline{complete,util}.c
-       - moved rl_strpbrk to util.c with rest of string utility functions,
-         renamed to _rl_strpbrk
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_strpbrk
-
-lib/readline/input.c
-       - make the timeout in rl_gather_tyi() be a variable
-         (_keyboard_input_timeout) rather than a constant
-       - new function, rl_set_keyboard_input_timeout (int u) to set
-         _keyboard_input_timeout.  The argument is in microseconds; returns
-         the old value of _keyboard_input_timeout
-       - _rl_input_available uses _keyboard_input_timeout also
-
-lib/readline/readline.h
-       - extern declaration for rl_set_keyboard_input_timeout
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_variable_bind(), rl_macro_bind(), rl_macro_dumper(),
-         rl_variable_dumper(), rl_push_macro_input(), rl_show_char()
-
-                                  2/20
-                                  ----
-findcmd.c
-       - new function, executable_or_directory(name), returns 1 if NAME is
-         an executable file or a directory
-
-findcmd.h
-       - extern declaration for executable_or_directory()
-
-bashline.c
-       - call executable_or_directory() from command_word_completion_function,
-         which requires a single stat(2), instead of executable_file() and
-         is_directory(), each of which requires a stat(2)
-
-                                  2/21
-                                  ----
-execute_cmd.c
-       - changed execute_builtin to handle `return' with a preceding variable
-         assignment list specially when in POSIX mode.  POSIX says that the
-         variable assignments should persist after the builtin returns, since
-         `return' is a special builtin.  Since `return' does a longjmp and
-         doesn't go through the normal cleanup path, we need to do special
-         things
-
-variables.c
-       - new function, merge_function_env(), merges the function_env into
-         the shell_variables table
-
-variables.h
-       - extern declaration for merge_function_env()
-
-execute_cmd.c
-       - changed execute_function to merge any variable assignments preceding
-         the function call into shell_variables if the shell is running in
-         POSIX mode
-
-subst.c
-       - changed parameter_brace_expand_error to do tilde expansion on the
-         rhs of the expansion, if it's not null
-       - changed command_substitute so that the subshell begun to execute
-         the command substitution inherits the setting of the `-e' option
-         when in POSIX mode
-
-builtins/break.def
-       - changed check_loop_level to not print a complaining message when
-         the shell is running in POSIX mode, even if BREAK_COMPLAINS is
-         defined.  This affects `break' and `continue'
-       - changed `break' and `continue' to return success even if the shell
-         is not executing a loop, as POSIX specifies
-
-builtins/set.def
-       - changed reset_shell_options() to not clear posixly_correct, so
-         subshells spawned to execute shell scripts without a leading `#!'
-         inherit posix mode from their parent shell
-
-variables.c
-       - changed make_new_variable to create the shell_variables hash table
-         if it hasn't been done yet.  This is needed because bind_variable
-         may be called before initialize_shell_variables (e.g., when
-         `bash -o posix' calls bind_variable("POSIXLY_CORRECT", "y") from
-         parse_shell_options -> set_minus_o_option -> set_posix_mode
-         This makes `bash --posix' and `bash -o posix' equivalent, as they
-         should always have been
-       - changed maybe_make_export_env to merge the contents of `builtin_env'
-         into export_env after function_env and before temporary_env.  This
-         fixes the problems with variable assignments preceding `eval' or
-         `source' not making it into the environment passed to executed disk
-         commands (var=20 eval printenv var)
-
-doc/bashref.texi
-       - noted that variable assignments preceding shell function calls
-         persist in the shell environment after the function returns when
-         the shell is running in POSIX mode
-       - noted that when the shell is running in POSIX mode, subshells
-         spawned to execute command substitutions inherit the value of
-         the `-e' option from the parent shell
-
-                                  2/26
-                                  ----
-doc/bashref.texi
-       - augmented description of bash non-posix behavior in posix mode
-         with information from running the vsc-lite test suite
-
-                                  2/28
-                                  ----
-general.c
-       - since POSIX.2 says that aliases should be expanded even in
-         non-interactive shells, enable alias expansion in
-         posix_initialize() when posix mode is enabled, and set it to the
-         value of interactive_shell if posix mode is disabled
-
-shell.c
-       - before running the startup scripts, set expand_aliases to
-         posixly_correct, since we don't want alias expansion in startup
-         files unless we've been given the --posix invocation option
-
-doc/bashref.texi
-       - added item in BASH Posix Mode section noting that alias expansion
-         is always enabled when in posix mode
-
-Makefile.in
-       - changed release level to `beta2'
-
-                                   3/1
-                                   ---
-jobs.c
-       - expanded retcode_name_buffer to 64
-       - changed printable_job_status to conform to posix.2 for text of
-         stopped job status: `Stopped(SIGTSTP)' or `Stopped(SIGSTOP)'
-
-doc/bashref.texi
-       - Noted above change in posix mode section
-
-                                   3/5
-                                   ---
-lib/readline/bind.c
-       - changed rl_get_keymap_by_name to work case-insensitively
-
-                                   3/6
-                                   ---
-doc/readline.{0,3,ps}
-       - removed from distribution; moved to readline distribution
-
-lib/readline/doc/history.3
-       - man page for history library; neither built nor installed
-         (part of the standalone readline distribution)
-
-lib/readline/histfile.c
-       - changed history_truncate_file to return 0 on success, errno
-         on failure
-       - changed history_do_write to return errno on a write error.  This
-         affects write_history and append_history
-
-lib/readline/history.c
-       - max_input_history is now history_max_entries; the old variable is
-         maintained for backwards compatibility
-
-lib/readline/histexpand.c
-       - the list of delimiters that separate words for history_tokenize
-         is now a variable: history_word_delimiters; default value is as
-         before
-       - changed history_expand to return 0 immediately if its second
-         argument is NULL
-
-bashline.c
-       - changed to use history_max_entries
-
-lib/readline/history.h
-       - extern declaration for history_max_entries
-       - extern declaration for history_word_delimiters
-
-                                   3/8
-                                   ---
-test.c
-       - changed unary_operator() to return FALSE for non-numeric arguments
-         to `-t'
-
-                                   3/9
-                                   ---
-[bash-2.05-beta2 released]
-
-                                  3/12
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - documented rl_set_paren_blink_timeout()
-       - moved the example function to its own info node
-
-lib/readline/{hstech.texinfo,history.3}
-       - `$' is not in the default value of history_word_delimiters
-
-                                  3/13
-                                  ----
-bashline.c
-       - in maybe_add_history, if the tests for HISTCONTROL succeed, but
-         the HISTIGNORE check fails, set first_line_saved to 0
-
-                                  3/15
-                                  ----
-
-lib/glob/fnmatch.c
-       - fixed a bug in patscan that caused `[' to be treated as special
-         even inside a nested bracket expression.  It's supposed to lose
-         it's special handling inside []
-       - fixed a bug in patscan that caused `]' to end an embedded bracket
-         expression even if it was the first character after the `[' (or
-         a leading `!' or `^')
-
-                                  3/22
-                                  ----
-execute_cmd.c
-       - made a small change to shell_execve to report a more user-friendly
-         error if execve(2) fails because of a `#! interpreter' error with
-         `interpreter'
-       - in shell_execve, if HAVE_HASH_BANG_EXEC is not defined, make sure
-         the file length is > 2 characters before attempting to execute an
-         interpreter
-
-                                  3/26
-                                  ----
-jobs.c, nojobs.c
-       - give_terminal_to now takes a second argument, FORCE.  If that
-         second argument is non-zero, give the terminal away no matter
-         what job_control is set to
-
-jobs.h
-       - changed extern declaration of give_terminal_to
-
-{jobs,sig,subst}.c,parse.y
-       - changed all calls to give_terminal_to to add a second argument
-         of 0
-
-jobs.c
-       - changed second argument of call to give_terminal_to in
-         end_job_control to 1, to force this even if job_control is 0.
-         This fixes the problem of `exec other-job-control-shell' in a
-         startup file hanging, since run_startup_files sets job_control to 0
-
-subst.c
-       - fixed test of subshell_environment in command_substitute to test the
-         bit SUBSHELL_ASYNC rather than test equality, since it's now a
-         bitmask
-
-                                  3/27
-                                  ----
-shell.c
-       - changed posix initialization calls to set POSIXLY_CORRECT=y and
-         then call sv_strict_posix, so $SHELLOPTS includes `posix' and
-         POSIXLY_CORRECT is set, for both the posix command line options
-         and when act_like_sh is non-zero
-
-redir.c
-       - the `>& filename' redirection now works in posix mode, redirecting
-         stdout and stderr, since POSIX.2 leaves it unspecified
-
-doc/bashref.texi
-       - removed item about `>& filename' from Bash POSIX Mode section
-
-parse.y
-       - fixed a problem in decode_prompt_string with `\W' not printing
-         anything if PWD == "//"
-
-lib/readline/input.c
-       - in rl_read_key, after calling (*rl_event_hook), check for rl_done
-         being set, and return '\n' if it is
-
-Makefile.in
-       - changed RELSTATUS to `release'
-
-                                  3/28
-                                  ----
-support/bashbug.sh
-       - replace use of $(...) with `...` for the benefit of old versions
-         of sh
-
-builtins/set.def
-       - changed print_all_shell_variables to not print shell function names
-         and definitions when in posix mode
-
-doc/bashref.texi
-       - noted change in `set' behavior in posix mode section
-
-                                   4/2
-                                   ---
-lib/readline/readline.c
-       - changed default value of RL_LIBRARY_VERSION to `4.2'
-
-                                   4/5
-                                   ---
-[bash-2.05-release frozen]
-
-                                   4/6
-                                   ---
-bashline.c
-       - fix to vi_edit_and_execute_command to keep it from adding an
-         empty line to the history and not resetting current_command_line_count,
-         which resulted in each command re-run with `v' having a `;' appended
-
diff --git a/CWRU/old-changelogs/CWRU.chlog.v13 b/CWRU/old-changelogs/CWRU.chlog.v13
deleted file mode 100644 (file)
index 565b0cb..0000000
+++ /dev/null
@@ -1,9648 +0,0 @@
-                                4/9/2001
-                                --------
-[bash-2.05 released]
-
-                                  4/10
-                                  ----
-redir.c
-       - check return value of fclose() in write_here_document() for error
-         returns; don't just rely on fwrite() failing
-
-support/bashbug.sh
-       - set TMPDIR to /tmp if it's null or unset
-       - use $TMPDIR in the TEMP tempfile name template
-       - fixed the call to `mktemp', if it exists, to make it more portable
-
-jobs.c
-       - if WCONTINUED is not defined, define it to 0 and add a define for
-         WIFCONTINUED(wstatus) which expands to 0
-       - add WCONTINUED to the flags passed to waitpid(2) in waitchld()
-       - don't increment children_exited if waitpid's status is WIFCONTINUED,
-         since we don't want to call a SIGCHLD trap handler in this case
-       - in waitchld(), we set child->running to 1 if WIFCONTINUED(status)
-         is non-zero
-       - make sure pretty_print_job doesn't check for the core dump bit if
-         the process has been continued; it's only valid if the job is dead
-       - in set_job_status_and_cleanup, set the job to JRUNNING if job_state
-         is non-zero and the job was previously marked as JSTOPPED
-
-configure.in
-       - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS
-
-lib/glob/glob.c
-       - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1
-
-jobs.c
-       - in kill_pid, we only need to block and unblock SIGCHLD if the
-         `group' argument is non-zero, since otherwise we just call `kill'
-         on the pid argument
-
-version.c
-       - update copyright date to 2001
-
-bashline.c
-       - prog_complete_return needs to take a `const char *' as its first
-         argument
-       - history_completion_generator needs to take a `const char *' as
-         its first argument, and `text' needs to be a `const char *'
-
-                                  4/11
-                                  ----
-redir.c
-       - fixed a weird typo in redir_special_open, case RF_DEVFD, added
-         call to all_digits before call to legal_number
-       - fixed do_redirection_internal to call legal_number instead of atol(3)
-         when translating r_duplicating_{in,out}put_word, so it handles
-         overflow better
-       - produce an error message in redirection_error for out-of-range
-         file descriptors
-       - change allocation strategy in redirection_error so we don't have to
-         malloc scratch memory if redirection_expand() fails
-
-jobs.h
-       - added defines for `running' member of a struct process
-
-general.c
-       - fix legal_number to return 0 when strtol(3) reports overflow or
-         underflow
-
-parse.y
-       - changed read_token_word to call legal_number instead of atoi(3)
-
-input.c
-       - return -1/EBADF from close_buffered_fd if fd is < 0
-
-command.h
-       - fixed bogus comment about IS_DESCRIPTOR in description of the
-         REDIRECTEE struct
-
-print_cmd.c
-       - change cprintf's 'd' modifier code to display negative numbers as
-         an out-of-range value.  We can do this only because the only use
-         of %d is to output file descriptor numbers in redirections
-
-support/mksignames.c
-       - need to include config.h to get a possible value for
-         UNUSABLE_RT_SIGNALS
-
-                                  4/16
-                                  ----
-lib/readline/doc/rluser.texinfo
-       - corrected a small error in one description of M-DEL
-
-                                  4/17
-                                  ----
-stringlib.c
-       - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER
-         in strcreplace()
-
-support/bashversion.c
-       - new file, prints bash version information
-
-Makefile.in
-       - rules for building bashversion and linking it to version.o
-
-                                  4/24
-                                  ----
-conftypes.h
-       - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from
-         variables.h
-
-variables.h, version.c
-       - include conftypes.h
-
-patchlevel.h
-       - new file, contains define for PATCHLEVEL.  Doing away with the old
-         scheme of having the information in configure.in
-
-version.c
-       - include patchlevel.h
-
-Makefile.in
-       - run bashversion -p to find patch level rather than have configure
-         substitute in a value
-       - pass -S ${top_srcdir} to support/mkversion.sh
-
-support/mkversion.sh
-       - don't put PATCHLEVEL define into version.h, but accept and ignore
-         a -p option
-       - take a new -S srcdir option
-       - find the patch level by parsing it out of patchlevel.h
-
-configure.in
-       - hard-code BASHVERS assignment instead of reading it from a file
-       - remove BASHPATCH; don't substitute it
-
-_distribution,_patchlevel
-       - removed
-
-                                  4/26
-                                  ----
-shell.c
-       - call init_noninteractive() in open_shell_script if forced_interactive
-         is non-zero (the shell was started with -i) and fd_is_tty is 0
-         (the script file is a real file, not something like /dev/stdin),
-         since it wasn't done earlier
-
-builtins/printf.def
-       - change for POSIX.2 compliance when conversion errors are encountered
-         when processing %d, %u, and floating point conversion operators
-         (print a warning message, return the value accumulated at the time
-         of the error -- which is always 0 -- and exit with a non-zero status)
-
-command.h
-       - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the
-         code in execute_cmd.c
-
-builtins/command.def
-       - add CMD_COMMAND_BUILTIN to the created command's flags
-
-                                   5/1
-                                   ---
-configure.in
-       - add call to AC_C_CONST to test `const' compiler behavior
-       - add call to AC_C_INLINE to test `inline' compiler behavior
-       - add call to AC_C_STRINGIZE to test cpp #x stringizing operator
-
-config.h.in
-       - add `#undef const' for configure to substitute
-       - add `#undef inline' for configure to substitute
-       - add `#undef HAVE_STRINGIZE' for configure to substitute
-
-include/stdc.h
-       - remove code that defines or undefines `const' and `inline'
-       - change the __STRING macro to be defined depending on the value
-         of HAVE_STRINGIZE
-
-lib/malloc/malloc.c
-       - change the __STRING macro to be defined depending on the value
-         of HAVE_STRINGIZE
-
-lib/readline/{readline,rlprivate}.h
-       - moved rl_get_termcap to readline.h, making it a public function
-
-lib/readline/readline.h
-       - new #define, RL_READLINE_VERSION, hex-encoded library version
-         number, currently set to 0x0402
-       - new public int variable, rl_readline_version
-
-lib/readline/readline.c
-       - #define RL_READLINE_VERSION if it is not already defined (which it
-         should be in readline.h)
-       - initialize rl_readline_version to RL_READLINE_VERSION
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_get_termcap
-       - documented rl_readline_version
-
-jobs.c
-       - job_exit_status should return an int, not a WAIT (undetected
-         before because on most POSIX-like systems a WAIT is really an int)
-
-builtins/evalfile.c
-       - added FEVAL_REGFILE (file must be a regular file) to accepted
-          _evalfile flags
-       - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags.  This
-         means that startup files and files read with `.' no longer need
-         to be regular files
-
-                                   5/2
-                                   ---
-
-lib/termcap/Makefile.in
-       - fix target for installed termcap library (normally unused)
-
-lib/tilde/Makefile.in
-       - fix install target to install in $(libdir) (normally unused)
-
-Makefile.in
-       - don't make $(man3dir) since there's nothing installed there
-
-Makefile.in,doc/Makefile.in
-       - change `man1ext' to `.1', `man3ext' to `.3'
-       - change appropriate install targets to use new values of man[13]ext
-       - use `test ...' instead of `[...]'
-       - add support for DESTDIR root installation prefix, for package
-         building (installdirs, install, install-strip, uninstall targets)
-
-builtins/common.c
-       - new function int get_exitstat(WORD_LIST *list) returns an eight-bit
-         exit status value for use in return, exit, logout builtins
-
-builtins/common.h
-       - extern declaration for get_exitstat()
-
-builtins/{exit,return}.def
-       - call get_exitstat where appropriate
-
-builtins/printf.def
-       - add support for "'" flag character as posix 1003.2-200x d6 says
-       - fix core dump when user-supplied field width or precision is 0
-       - fix to printstr() to handle zero-length precision with `%b' format
-         specifier (printf '%.0b-%.0s\n' foo bar)
-       - fix to printstr() to treat a negative field width as a positive
-         field width with left-justification
-       - fix to mklong to avoid static buffers, which can always be overrun
-         by someone sufficiently motivated
-
-bashline.c
-       - change var in add_host_name to type `size_t' for passing to xrealloc
-
-                                   5/3
-                                   ---
-execute_cmd.c
-       - change restore_signal_mask to accept a sigset_t *, since a sigset_t
-         may not fit into a pointer, change call
-
-unwind_prot.c
-       - use a union UWP in restore_variable when restoring a variable whose
-         size is the same as sizeof(int), the reverse of the method used to
-         store it in unwind_protect_int
-
-builtins/printf.def
-       - use a #define LENMODS containing the length modifiers instead of
-         testing against each possible modifier character, save any mod
-         character found
-       - add support for ISO C99 length specifiers `j', `t', and `z'
-       - if `L' modifier is supplied with a floating point conversion char,
-         pass a `long double' to printf if HAVE_LONG_DOUBLE is defined
-
-configure.in,config.h.in
-       - call AC_C_LONG_DOUBLE to check for `long double'; define
-         HAVE_LONG_DOUBLE if supported
-
-bashline.c
-       - fix an inadvertantly-unclosed comment in attempt_shell_completion
-       - make set_saved_history return a value
-       - make dynamic_complete_history return a useful value
-
-{make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test,
-pcomplete}.c
-       - removed some declared-but-unused variables
-
-builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def
-       - removed some declared-but-unused variables
-
-lib/sh/{zread,netopen}.c
-       - removed some declared-but-unused variables
-
-execute_cmd.c
-       - in execute_arith_command, use a long variable to hold the result
-         of evalexp(), since that's what it returns
-
-builtins/evalstring.c
-       - make cat_file return -1 on a read or write error
-
-lib/sh/stringlib.c
-       - make merge_stringlists() return the right value
-
-                                   5/7
-                                   ---
-pcomplete.c
-       - remove typo that caused empty declaration (;;)
-
-parse.y
-       - fix yyerror() to accept a single string argument; fix callers
-
-trap.c
-       - cast pointer to long instead of int when printing message with
-         internal_warning() in run_pending_traps()
-
-subst.c
-       - fix process_substitute to handle stdin being closed
-
-test.c
-       - change `while' to `if' in and() and or(), since the loop isn't
-         actually performed -- there's an unconditional `return' in the
-         loop body
-       - check for integer overflow of arguments to `-t'
-
-lib/sh/netopen.c
-       - change _getserv() to reject negative port/service numbers
-
-expr.c
-       - fix strlong() to not convert the base specification from long to
-         int before checking for overflow, since truncation on machines
-         where sizeof(int) != sizeof(long) may mask errors
-
-builtins/{jobs,kill,wait}.def
-       - use legal_number instead of atoi when converting strings to pid_t;
-         check for numeric overflow
-
-input.c
-       - fix for cygwin in b_fill_buffer -- off-by-one error when checking
-         buffer for \r\n termination
-
-general.h
-       - new #define INT_STRLEN_BOUND(t), computes max length of string
-         representing integer value of type T, possibly including a sign
-         character
-       - include <limits.h> if it's present
-
-{execute_cmd,findcmd,test}.c
-       - don't include <limits.h>, since general.h does it now
-
-{execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c
-       - use INT_STRLEN_BOUND instead of static array sizes when converting
-         various strings to integer values
-
-shell.h
-       - struct fd_bitmap now uses an `int' size, since it's bounded by
-         the number of file descriptors, which must fit into an `int'
-
-execute_cmd.c
-       - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L
-       - new_fd_bitmap takes an `int' size parameter, not a `long'
-
-execute_cmd.h
-       - change prototype for new_fd_bitmap()
-
-test.c
-       - fix test_stat to check for overflow when parsing the integer file
-         descriptor number; return ENOENT instead of EBADF for files that
-         are not open
-
-hashlib.c
-       - don't discard the upper 32 bits of the random value, if present
-
-lib/readline/shell.c
-       - use the same INT_STRLEN_BOUND mechanism to decide how much space to
-         allocated in sh_set_lines_and_columns
-
-                                   5/8
-                                   ---
-aclocal.m4
-       - add check for libtinfo (termcap-specific portion of ncurses-5.2) to
-         BASH_CHECK_LIB_TERMCAP
-       - new macro, RL_LIB_READLINE_VERSION, checks version of installed
-         readline library and (optionally) writes version #defines to
-         config.h.  Bash doesn't use the version defines
-
-configure.in
-       - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh
-
-execute_cmd.c
-       - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros
-         to check array bounds before indexing into the sample string
-
-unwind_prot.[ch]
-       - import new versions submitted by Paul Eggert <eggert@twinsun.com>
-         with a couple of changes for backwards compatibility, so the rest
-         of the source doesn't need to be changed yet
-
-jobs.c
-       - use unwind_protect_var on last_made_pid in run_sigchld_trap
-
-builtins/bind.def
-       - use unwind_protect_var on rl_outstream
-
-general.c
-       - rework print_rlimtype to use INT_STRLEN_BOUND and handle the
-         most negative number correctly
-
-expr.c
-       - `tokval' should have been a `long', since all arithmetic is done
-         as longs
-
-builtins/history.def
-       - consolidate tests for valid history position in one block to
-         avoid duplicate code and strings
-
-builtins/ulimit.def
-       - fix check for overflow when setting limit to work when int is 32
-         bits and RLIMTYPE is 64
-
-lib/sh/tmpfile.c
-       - don't truncate the result of time(3) to int; just use time_t,
-         since it's being assigned to an `unsigned long'
-
-mailcheck.c
-       - use legal_number instead of atoi in time_to_check_mail() to catch
-         more numeric errors; consolidate error checking in one block
-       - last_time_mail_checked should be a time_t
-
-                                   5/9
-                                   ---
-builtins/set.def
-       - recognize `set [-+]o nolog' if HISTORY is defined
-
-bashline.c
-       - new variable `dont_save_function_defs', set by `set -o nolog';
-         currently ignored
-
-command.h
-       - the `dest' member of a REDIRECTEE is now an `int'
-
-parse.y,redir.c
-       - changed uses of `redir.test' (where redir is a REDIRECTEE) since
-         it's now an int
-
-lib/readline/rlstdc.h
-       - don't mess around with `const', rely on configure to supply a
-         proper definition if the compiler doesn't support it
-
-lib/tilde/tilde.h
-       - include <config.h> if HAVE_CONFIG_H is defined
-       - don't mess around with `const', rely on configure
-
-builtins/shopt.def
-       - new read-only `shopt' option, login_shell, non-zero if shell is a
-         login shell (as decided by shell.c)
-       - new function set_login_shell(), sets shopt private value of
-         login_shell
-
-builtins/common.h
-       - new extern declaration for set_login_shell
-
-shell.c
-       - call set_login_shell after setting value of login_shell (in
-         main() and set_shell_name())
-
-parse.y
-       - added new `\A' prompt string escape sequence:  time in 24-hour
-         HH:MM format
-
-configure.in, config.h.in
-       - check for <grp.h>, define HAVE_GRP_H if found
-
-builtins/complete.def
-       - add new `-A group/-g' option to complete group names
-
-pcomplete.h
-       - new define for CA_GROUP, used with group name completion
-
-pcomplete.c
-       - add code to support CA_GROUP group name completion
-
-bashline.c
-       - new function, bash_groupname_completion_function(), supports
-         programmable completion of group names
-
-bashline.h
-       - extern declaration for bash_groupname_completion_function
-
-lib/readline/bind.c
-       - new inputrc variable, `match-hidden-files', controls completion
-         matching files beginning with a `.' (on Unix)
-
-lib/readline/complete.c
-       - new variable, _rl_match_hidden_files, mirrors `match-hidden-files'
-         inputrc variable
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_match_hidden_files
-
-builtins/hash.def
-       - new `-t' option to list hash values for each filename argument
-
-builtins/read.def
-       - alarm(3) takes an `unsigned int' argument, not int
-       - check for arithmetic overflow with -t and -n options
-
-input.c
-       - check for read error before doing \r\n translation on cygwin in
-         b_fill_buffer
-       - reset bp->b_used to 0 instead of leaving it at -1 on read error
-         in b_fill_buffer
-
-builtins/shopt.def
-       - new functions, shopt_setopt(name, mode) and
-         shopt_listopt(name, mode) to give the rest of the shell an easy
-         interface
-
-builtins/common.h
-       - extern declarations for shopt_setopt and shopt_listopt
-
-shell.c
-       - new invocation options -O and +O, to list or set/unset shopt
-         options like +o/-o sets and unsets `set -o' options
-
-doc/{bash.1,bashref.texi}
-       - document `set -o nolog'
-       - document `login_shell' shopt option
-       - document new `\A' prompt string escape sequence
-       - document new `-t' option to `hash'
-       - document new `[+-]O' invocation option
-
-doc/bashref.texi
-       - add text to `Invoking Bash' section defining a login shell; text
-         taken from man page
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
-       - documented new complete/compgen `-A group/-g' option
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - documented new `match-hidden-files' inputrc variable
-
-                                  5/10
-                                  ----
-configure.in
-       - fix AC_CHECK_PROG(ar, ...)
-       - add AC_CHECK_TYPE for ssize_t
-
-config.h.in
-       - new #undef for ssize_t
-
-lib/sh/zread.c
-       - int -> ssize_t fixes to mirror modern declarations of read and write
-       - the `off' variable in zsyncfd should be an off_t since it computes
-         a file offset
-       - the local buffer `lbuf' is now char, since it's not nice to pass
-         unsigned char * to read(2), and the values from it are assigned to
-         a char anyway
-       - lind and lused are now size_t, since they index into a buffer
-       - set lused to 0 on read error
-
-lib/sh/zwrite.c
-       - change second argument to type `char *', since ISO C says you have
-         to pass a `char *' to `write'
-
-externs.h
-       - fix extern declarations of zread, zread1, zreadc, and zwrite
-       - prototype extern declaration of qsort_string_compare
-       - add extern declaration for history_delimiting_chars() from parse.y
-
-input.h
-       - b_used and b_inputp members ofr struct BSTREAM are now size_t
-
-builtins/evalstring.c
-       - the number of chars read with zread in cat_file should be assigned
-         to a variable of type ssize_t
-
-input.c
-       - the number of chars read with zread in b_fill_buffer should be
-         assigned to a variable of type ssize_t
-       - `localbuf' is now type char[], since POSIX says you shouldn't pass
-         unsigned char * to read(2)
-       - in getc_with_restart(), use a variable of type unsigned char to
-         get a value from the local buffer and return it
-       - in ungetc_with_restart, explicitly return the character arg passed
-         to avoid relying on localbuf being unsigned char
-
-subst.c
-       - the number of chars read with zread in read_comsub should be
-         assigned to a variable of type ssize_t
-
-mksyntax.c
-       - instead of casting to unsigned char * in addcstr, use a variable
-         of type unsigned char and let the compiler do the work
-
-parse.y
-       - instead of casting to unsigned char * in yy_readline_get, use a
-         variable of type unsigned char and let the compiler do the work
-       - ditto for yy_string_get and shell_getc (cast to unsigned char)
-
-subst.c
-       - instead of casting to unsigned char when assigning to ifscmap in
-         expand_word_internal, use a variable of type unsigned char and
-         let the compiler do the work
-
-lib/sh/strtrans.c
-       - instead of casting to unsigned char in ansic_quote, use a variable
-         of type unsigned char and let the compiler do the work
-
-builtins/evalstring.c
-       - remove extern declarations for zwrite and run_trap_cleanup; they're
-         in externs.h
-       - prototype cat_file forward declaration
-
-Makefile.in
-       - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES
-
-aclocal.m4
-       - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR,
-         and RL_INCLUDEDIR to what it used to test the installed readline
-         library version for use by the caller
-       - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if
-         the caller has already assigned it a value
-       - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir,
-         _rl_includedir -> ac_cv_rl_includedir
-
-configure.in
-       - change testing of whether to use the value of
-         $opt_with_installed_readline to be != no, to allow the user to
-         specify a prefix where the installed readline library may be found
-       - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix
-         to PREFIX before calling RL_LIB_READLINE_VERSION
-       - if --with-installed-readline[=PREFIX] is supplied, don't set
-         RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care
-         of it, set RL_INCLUDE=-I${RL_INCLUDEDIR}
-       - if --with-installed-readline[=PREFIX] is supplied, and we're
-         linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR
-         so we use the same version of the installed readline and history
-         libraries
-
-Makefile.in, builtins/Makefile.in
-       - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable
-
-doc/bashref.texi
-       - updated description of --with-installed-readline configure option 
-
-general.c
-       - moved QSFUNC typedef here from builtins/common.c
-
-{alias,bashline,variables,lib/sh/stringvec}.c
-       - cast fourth argument to qsort to (QSFUNC *)
-
-alias.c
-       - prototype forward declaration of qsort_alias_compare
-
-bashhist.c
-       - include <glob/glob.h> for extern declaration of glob_pattern_p
-       - remove extern declaration of history_delimiting_chars; it's now
-         in externs.h
-       - prototype forward declarations of histignore_item_func,
-         maybe_add_history, and bash_add_history
-
-bracecomp.c
-       - remove extern declaration for sh_backslash_quote; it's in externs.h
-
-braces.c
-       - remove extern declaration for extract_command_subst; it's in subst.h
-       - prototype forward declarations for expand_amble, array_concat, and
-         brace_gobbler
-
-error.c
-       - prototype extern declaration of give_terminal_to, fix bad call
-
-{execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir,
-shell}.c
-       - prototype all static forward function declarations
-
-pcomplete.c
-       - changed some function parameters to `const char *' to avoid discarding
-         const qualifier
-
-make_cmd.c
-       - make_bare_word, make_word_flags, and make_word now take a
-         `const char *' string argument
-
-make_cmd.h
-       - changed extern declarations for make_bare_word and make_word
-
-print_cmd.c
-       - cprintf now takes a `const char *' as its first argument, like
-         xprintf and printf
-       - the conditional define for xprintf should have been HAVE_VPRINTF,
-         not HAVE_VFPRINTF
-
-shell.c
-       - in isnetconn(), the return value of sizeof() is size_t
-
-aclocal.m4
-       - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in
-         BASH_CHECK_TYPE
-
-configure.in
-       - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument
-         to getpeername(2))
-
-                                  5/11
-                                  ----
-lib/readline/bind.c
-       - make `useq' a char array to pass to rl_macro_bind in
-         rl_parse_and_bind
-
-lib/readline/{{bind,isearch}.c,rlprivate.h}
-       - _rl_isearch_terminators is now a char *, not unsigned char *
-
-{subst,variables,lib/sh/tmpfile}.c
-       - dollar_dollar_pid is now a `pid_t' instead of `int'
-
-variables.c
-       - sbrand() now takes an `unsigned long' to set the seed value
-       - changed last_random_value to type int, since it's always between
-         0 and 32767
-       - use strtoul to convert the value in assign_random instead of atoi
-       - take out casts in any arguments to sbrand()
-       - take out cast to int in call to inttostr in set_ppid()
-
-subst.c
-       - don't cast last_asynchronous_pid when passing to itos()
-
-{sig,subst}.c
-       - prototype all static forward function declarations
-
-                                  5/14
-                                  ----
-{test,trap,variables}.c
-       - prototype all static forward function declarations
-
-variables.c
-       - free_variable_hash_data() now takes a PTR_T, a `generic pointer'
-
-builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help,
-history,jobs,pushd,read,set,trap,umask,
-       - prototype all static forward function declarations
-
-builtins/read.def
-       - reset_eol_delim now takes a `char *' arg, since that's what the
-         unwind_protect functions pass it, and it ignores its arguments
-         anyway
-
-lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c
-       - prototype all static forward function declarations
-
-lib/tilde/tilde.c
-       - prototype all static forward function declarations
-       - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and
-         glue_prefix_and_suffix now take `const char *' arguments where
-         appropriate
-
-configure.in,config.h.in
-       - check for vsnprintf, define HAVE_VSNPRINTF if found
-
-lib/readline/display.c
-       - use vsnprintf() in rl_message if it's available; if we don't, at
-         least set the last character in msg_buf to 0 to avoid overrun --
-         we really can't do anything about overflow at this point.  if it's
-         available, this fixes buffer overflow problems in rl_message
-
-                                  5/15
-                                  ----
-lib/readline/histexpand.c
-       - in get_history_word_specifier, allow any character to terminate
-         a `:first-' modifier, not just `:' and null.  This is what csh
-         appears to do.  This allows things like `!:0- xyzzy' to replace the
-         last argument with xyzzy
-
-                                  5/18
-                                  ----
-configure.in, config.h.in
-       - check for <stdint.h>, define HAVE_STDINT_H if found
-       - check for intmax_t in <stdint.h>, define intmax_t as long if not
-         found
-
-                                  5/21
-                                  ----
-builtins/kill.def
-       - change to use strerror() for error message when kill(2) fails
-
-aclocal.m4
-       - new macro, BASH_C_LONG_LONG, check for `long long'
-
-configure.in, config.h.in
-       - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found
-
-lib/sh/snprintf.c
-       - new file, with implementations of snprintf, vsnprintf, asprintf,
-         and vasprintf, derived from inetutils version
-
-Makefile.in, lib/sh/Makefile.in
-       - add snprintf.c/snprintf.o
-
-configure.in, config.h.in
-       - add checks for snprintf, asprintf, vasprintf, with appropriate
-         cpp defines
-
-lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c
-       - xmalloc and xrealloc now take `size_t' arguments, like their bash
-         counterparts
-
-externs.h,lib/sh/itos.c
-       - inttostr and itos now take `long' arguments
-       - inttostr takes a `size_t' argument for the buffer size
-
-{expr,lib/malloc/malloc,variables,general}.c
-       - fixed calls to itos() by removing casts, etc.
-
-subst.[ch]
-       - get_dollar_var_value now takes a long, not an int
-       - sub_append_number now takes a long, not an int
-
-subst.c
-       - in parameter_brace_expand_word, use a long and legal_number to
-         translate ${N}, to avoid overflow
-       - in parameter_brace_expand_length, use a long and legal_number to
-         translate ${#N}, to avoid overflow
-       - in do_array_element_assignment, array_expand_index,
-         array_value_internal, use arrayind_t instead of int
-       - let verify_substring_values take long * arguments for the return
-         value of evalexp()
-       - pass long * arguments to verify_substring_values in
-         parameter_brace_substring
-       - parameter_brace_expand_length now returns `long'
-       - parameter_brace_expand now uses a long variable for the return
-         value of parameter_brace_expand_length
-       - param_expand now uses a long variable for the return value from
-         evalexp
-       - array_length reference now returns an `arrayind_t', since it can
-         return the num_elements member of an array, which is of type
-         arrayind_t
-
-subst.h
-       - array_expand_index now returns an `arrayind_t'
-
-array.[ch]
-       - array_subrange now takes arrayind_t arguments, not `int'
-       - dup_array_subrange now uses arrayind_t local variable to do
-         array indexing
-       - use long to print array indices in print_element
-
-variables.c
-       - null_array_assign, assign_dirstack, bind_array_variable
-         now take arrayind_t arguments as array indices
-       - assign_array_var_from_word_list, assign_array_var_from_string,
-         unbind_array_element now use arrayind_t local variables for
-         array indexing
-
-variables.h
-       - change extern declaration of bind_array_variable
-
-builtins/common.[ch]
-       - get_numeric_arg now returns a `long', since it usually returns
-         the value of legal_number()
-
-builtins/{shift,break}.def
-       - use long variables for the return value of get_numeric_arg
-
-builtins/history.def
-       - convert string argument to int only if it's in range
-
-builtins/pushd.def
-       - set_dirstack_element and get_dirstack_element now take `long'
-         index arguments
-       - get_dirstack_index now takes a `long' index argument, since it's
-         passed the converted value from legal_number
-
-lib/sh/timeval.c
-       - in print_timeval, don't assume that the number of minutes fits into
-         an int, since it's just seconds/60.
-
-lib/sh/clock.c
-       - ditto for print_clock_t
-
-                                  5/22
-                                  ----
-shell.c
-       - since the -O option settings may possibly be overridden by the
-         normal shell initialization or posix initialization, save the
-         invocation options on an alist (with add_shopt_to_alist) and
-         process them after basic initialization (with run_shopt_alist)
-
-                                  5/23
-                                  ----
-trap.h
-       - new define, BASH_NSIG, all system signals plus special bash traps
-
-trap.c, builtins/trap.def
-       - use BASH_NSIG for array bounds and loops where appropriate
-
-trap.c
-       - change decode_signal to disallow numeric signal numbers above
-         NSIG -- this means you can only reference special traps like
-         DEBUG by name
-       - new SPECIAL_TRAP(s) macro to test whether s is one of the special
-         bash traps (currently DEBUG and EXIT)
-       - change reset_or_restore_signal_handlers so command substitution
-         doesn't inherit the debug trap (like ksh93), and child processes
-         don't have to rely on initialize_traps being run to get rid of
-         any debug trap
-
-support/mksignames.c
-       - add extra "ERR" signal name, value NSIG+1, allocate space for it
-         and write it out in signal_names[]
-
-trap.h
-       - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2
-       - extern declarations for set_error_trap, run_error_trap
-       - new define: TRAP_STRING(s), expands to trap_list[s] if signal S
-         is trapped and not ignored, NULL otherwise
-
-trap.c
-       - add ERROR_TRAP to SPECIAL_TRAPS define
-       - initialize ERROR_TRAP stuff in initialize_traps
-       - new function: set_error_trap(command), sets the ERR trap string
-       - new function: run_error_trap(command), runs the ERR trap string
-       - set trap string for ERROR_TRAP to NULL in free_trap_strings
-       - change reset_or_restore_signal_handlers so child processes don't
-         inherit the ERR trap
-       - add case to call run_error_trap in maybe_call_trap_handler
-
-execute_cmd.c
-       - in execute_command_internal, keep track of ERR trap and call it if
-         necessary
-       - use TRAP_STRING to get the value of debug and error traps
-       - in execute_function, arrange things so the ERR trap is not inherited
-         by shell functions, and is saved and restored like the DEBUG trap
-
-doc/{bash.1,bashref.texi}
-       - documented new ERR trap
-
-tests/{trap.{tests,right},trap2.sub,trap2a.sub}
-       - added ERR trap tests
-
-subst.c
-       - on machines without /dev/fd, change the named pipe fifo list to a
-         list of structs containing pathname and proc information
-       - change unlink_fifo_list to kill the proc in the fifo list with
-         signal 0 and not remove the fifo if the proc is still alive.  This
-         should fix the problem on those backward systems without /dev/fd
-         where fifos were removed when a job using process substitution was
-         suspended
-
-                                  5/24
-                                  ----
-examples/loadables/getconf.h
-       - new file, with basic defines needed to make getconf work minimally
-         on POSIX systems without the necessary definitions
-
-examples/loadables/getconf.c
-       - replacement functions for confstr, sysconf, pathconf for systems
-         that lack them, providing a minimal posix interface
-       - heavily augmented getconf, now supports all POSIX.1-200x,
-         POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables
-
-                                  5/29
-                                  ----
-builtins/setattr.def
-       - make `readonly', `export', and `declare' print `invisible' variables
-         as just a command and variable name, without a value, when listing
-         all variables (as POSIX.2-200x d6 requires)
-
-                                  5/30
-                                  ----
-
-configure.in
-       - upgraded to autoconf-2.50 on main development machine, so require
-         autoconf-2.50 in preparation for using some if its new features
-       - call AC_C_PROTOTYPES
-       - remove call to AC_EXEEXT, which now does the wrong thing
-       - changed AC_INIT to new flavor
-       - added call to AC_CONFIG_SRCDIR
-       - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
-       - AC_RETSIGTYPE -> AC_TYPE_SIGNAL
-
-configure.in, aclocal.m4, config.h.in
-       - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE
-         standard support, with new macros _FILE_OFFSET_BITS and
-         _LARGE_FILES
-       - removed definition of BASH_LARGE_FILE_SUPPORT
-
-doc/bashref.texi
-       - document new `--enable-largefile' configure option
-
-lib/readline/readline.c
-       - change rl_set_prompt to call rl_expand_prompt unconditionally, so
-         local_prompt and local_prompt_prefix get set correctly
-
-                                   6/6
-                                   ---
-lib/readline/complete.c
-       - don't append `/' or ` ' to a match when completing a symlink that
-         resolves to a directory, unless the match doesn't add anything
-         to the word.  This means that a tab will complete the word up to
-         the full name, but not add anything, and a subsequent tab will add
-         a slash.  Change to append_to_match; callers changed
-
-hashlib.c
-       - new function, hash_table_nentries (table), returns the number of
-         items in TABLE
-
-hashlib.h
-       - extern declaration for hash_table_nentries
-
-configure.in
-       - configure without bash malloc on openbsd; they claim it needs
-         eight-bit alignment (which the bash malloc provides, but...)
-
-                                   7/2
-                                   ---
-stringlib.c
-       - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement
-         string length is > 0, avoid possible hangs if replacement is null
-
-subst.c
-       - don't include input.h; no longer needed
-
-configure.in
-       - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and
-         BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used
-
-config.h.in
-       - remove define for HAVE_RESTARTABLE_SYSCALLS
-
-aclocal.m4
-       - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used
-
-execute_cmd.c
-       - changed select command so `return' no longer terminates the select
-         command, so it can be used to return from an enclosing function.
-         This is as ksh (88 and 93) does it
-
-lib/readline/vi_mode.c
-       - fix trivial typo in declaration of vi_motion; `t' appears twice;
-         the second instance should be `T'
-
-                                   7/3
-                                   ---
-configure.in
-       - don't add -static to LDFLAGS on Solaris 2.x.  This means that the
-         auxiliary programs will be built as dynamic executables, but that
-         should do no harm
-
-                                   7/5
-                                   ---
-lib/glob/fnmatch.c
-       - fix the code that processes **(pattern) to short-circuit if the
-         pattern is ill-formed or lacks a trailing `)'  -- this fixes the
-         segfault on **(/*)
-
-Makefile.in, builtins/Makefile.in
-       - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in
-         cross-compilation
-       - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD)
-
-configure.in, config.h.in
-       - check for getaddrinfo(3), define HAVE_GETADDRINFO if found
-
-lib/sh/netopen.c
-       - implemented a version of _netopen (_netopen6) that uses
-         getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined.
-         old _netopen is _netopen4; _netopen now calls either _netopen6
-         or _netopen4 as appropriate
-
-                                   7/9
-                                   ---
-builtins/exit.def
-       - don't source ~/.bash_logout if subshell_environment is non-zero
-
-execute_command.c
-       - in execute_until_or_while, handle the case where `breaking' is
-         set in the loop test (e.g., by the job control code when a job
-         is stopped with SIGTSTP), but the return value from the test is
-         something that would cause the loop to break.  Need to decrement
-         `breaking' in this case
-
-                                  7/10
-                                  ----
-execute_cmd.c
-       - in execute_in_subshell, make sure a command of type cm_subshell
-         inherits its `enclosing' command's CMD_IGNORE_RETURN flag
-
-variables.c
-       - in maybe_make_export_env, don't allow restricted shells to put
-         exported functions in the export environment
-
-                                  7/11
-                                  ----
-lib/glob/strmatch.h
-       - renamed old fnmatch.h
-       - changed guard #ifdef to _STRMATCH_H
-       - include system <fnmatch.h> if HAVE_LIBC_FNM_EXTMATCH is defined
-
-lib/glob/strmatch.c
-       - renamed old fnmatch.c
-       - include "strmatch.h"
-       - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of
-         strmatch() that just calls fnmatch(3)
-
-lib/glob/glob.c
-       - include "strmatch.h"
-       - fnmatch -> strmatch
-
-Makefile.in, lib/glob/Makefile.in
-       - fnmatch -> strmatch
-
-{bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c,
-pathexp.h,builtins/help.def
-       - include <glob/strmatch.h>
-       - fnmatch -> strmatch
-
-execute_cmd.c
-       - broke the code that parses the interpreter name from a #! line
-         out from execute_shell_script to a new function, getinterp()
-       - call getinterp from execute_shell_script
-       - use return value from getinterp in error message about bad
-         #! interpreter in shell_execve
-
-                                  7/12
-                                  ----
-lib/readline/isearch.c
-       - the last isearch string is now remembered in a new static variable,
-         last_isearch_string
-       - if ^R^R is typed, readline now searches for the remembered isearch
-         string, if one exists
-
-                                  7/24
-                                  ----
-pcomplete.h
-       - extern declaration for completions_to_stringlist()
-
-                                  7/25
-                                  ----
-builtins/complete.def
-       - make compgen handle -o default option
-       - make compgen return success only if sl->list_len is non-zero,
-         indicating that there are items on the list
-
-                                  7/31
-                                  ----
-execute_cmd.c
-       - in execute_connection, force stdin to /dev/null for asynchronous
-         commands if job control is not active, not just if the shell is
-         running a shell script (since you can run `set -m' in a script)
-
-lib/readline/rltty.c
-       - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on
-         successful restoration of the terminal modes
-       - make sure _rl_tty_disable_signals turns off IXON so that ^S and
-         ^Q can be read by rl_quoted_insert
-
-                                   8/1
-                                   ---
-aclocal.m4
-       - new check for FNM_EXTMATCH being defined in <fnmatch.h>, as Ullrich
-         Drepper intends to do for new versions of GNU libc
-
-config.h.in
-       - new definition for HAVE_LIBC_FNM_EXTMATCH
-
-configure.in
-       - check for fnmatch, but don't define anything in config.h
-       - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH
-
-                                   8/2
-                                   ---
-alias.h
-       - remove bogus extern declaration for xmalloc()
-       - include "stdc.h"
-       - add prototype declarations for all extern function declarations
-
-xmalloc.c,lib/readline/xmalloc.c
-       - fix xmalloc to return a PTR_T
-       - fix xrealloc to return a PTR_T and take a PTR_T as first argument
-
-include/ansi_stdlib.h
-       - extern declarations for malloc and realloc have them return PTR_T
-
-xmalloc.h
-       - new file, with extern declarations for functions in xmalloc.c
-
-general.h
-       - removed extern declarations for functions in xmalloc.c
-       - include xmalloc.h
-
-Makefile.in,builtins/Makefile.in
-       - update dependencies to include xmalloc.h
-
-parse.y,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general,
-hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib,
-subst,unwind_prot,variables}.c
-builtins/{common,evalfile}.c
-builtins/{cd,command,enable,exec,printf,read,set}.def
-lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist,
-strtrans,tmpfile}.c
-lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input,
-histfile,histexpand,display,complete,bind}.c
-       - make sure all calls to xmalloc are cast to the right return value
-
-siglist.c
-       - include xmalloc.h
-
-parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c
-builtins/{fc,printf,read}.def
-lib/sh/snprintf.c, lib/tilde/tilde.c
-lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c
-       - make sure all calls to xrealloc are cast to the right return value
-
-lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c
-       - include xmalloc.h, remove extern declaration of xmalloc
-
-lib/readline/xmalloc.h
-       - xmalloc and xrealloc should return PTR_T
-
-lib/readline/rldefs.h
-       - don't include an extern declaration for xmalloc
-
-                                   8/7
-                                   ---
-support/shobj-conf
-       - fixed up commented-out stanzas for HP's unbundled C compiler on
-         HP/UX
-
-support/bashbug.sh
-       - force the subject to be changed from the default
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - document that transpose-words swaps the last two words on the line
-         if point is at the end of the line
-
-                                   8/9
-                                   ---
-stringlib.c
-       - fix possible infinite recursion problem with null pattern in
-         strsub()
-
-hashlib.c
-       - new function copy_hash_table to copy a hash table using a caller-
-         supplied function to copy item data (defaults to savestring())
-
-hashlib.h
-       - new extern declaration for copy_hash_table
-
-builtins/declare.def
-       - changes so that declare [-a] var=value assigns `value' to element 0
-         of array variable `var' like ksh93
-       - change so that declare [-a] var[N]=value assigns `value' to element
-         N of array variable `var' like ksh93
-
-                                  8/13
-                                  ----
-arrayfunc.c
-       - new file, for miscellaneous array functions
-
-arrayfunc.h
-       - new file, extern declarations for functions in arrayfunc.c
-
-variables.c
-       - move convert_var_to_array, bind_array_variable,
-         assign_array_from_string, assign_array_var_from_word_list,
-         assign_array_var_from_string, quote_array_assignment_chars,
-         skipsubscript, unbind_array_element, print_array_assignment
-         to arrayfunc.c
-
-shell.h
-       - include arrayfunc.h after variables.h
-
-variables.h
-       - remove above extern function declarations moved to arrayfunc.h
-       - add extern declaration for var_lookup
-
-Makefile.in
-       - add arrayfunc.c, arrayfunc.h in appropriate places
-       - add arrayfunc.h to dependencies
-
-subst.c
-       - move valid_array_reference, array_expand_index, array_variable_part,
-         array_value_internal, array_value (now global), get_array_value,
-         do_array_element_assignment to arrayfunc.c
-
-subst.h
-       - extern declarations for functions above moved to arrayfunc.h
-
-arrayfunc.h
-       - extern declarations for above functions from subst.c
-
-subst.[ch]
-       - string_list_dollar_star and string_list_dollar_at are now global
-         functions
-       - quote_escapes is now a global function
-
-subst.c
-       - maybe_expand_string -> expand_string_if_necessary
-       - expand_string_to_string -> expand_string_to_string_internal
-       - new functions: expand_string_to_string and
-         expand_string_unsplit_to_string, which call
-         expand_string_to_string_internal with expand_string and
-         expand_string_unsplit as the FUNC arguments, respectively
-
-arrayfunc.c
-       - change array_expand_index to call expand_string_to_string instead
-         of maybe_expand_string
-
-                                  8/14
-                                  ----
-shell.c
-       - in execute_env_file, call expand_string_unsplit_to_string
-
-mailcheck.c
-       - in check_mail, call expand_string_to_string
-
-variables.c
-       - in assign_in_env, call expand_string_unsplit_to_string
-
-arrayfunc.c
-       - new function, array_variable_name, splits an array reference into
-         a name (which is returned as a new string) and subscript
-       - change array_variable_part to just call array_variable_name and
-         look up the string returned with find_variable
-       - new function, find_or_make_array_variable (name, flags) which will
-         look up an array variable and convert a string variable to an
-         array if necessary.  The FLAGS argument, if non-zero, says to
-         check the readonly and noassign attributes and fail if either is set
-
-builtins/read.def
-       - make `read -a aname' honor any readonly status of `aname'
-       - read -a now calls find_or_make_array_variable with FLAGS value 1
-
-arrayfunc.[ch], subst.c, builtins/{declare,read}.def
-       - do_array_element_assignment -> assign_array_element
-
-                                  8/20
-                                  ----
-parse.y
-       - changed `for' command grammar to allow missing word list after `IN'
-         token, like latest POSIX drafts require
-
-lib/sh/tmpfile.c
-       - in sh_mktmpname(), check for filenum == 0 and init to non-zero number
-         in this case.  it can happen on arithmetic overflow
-
-support/mkversion.sh
-       - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a
-         distribution to allow for intermediate versions, like 2.05a
-
-support/config.guess
-       - removed the addition of the output of `/usr/bin/objformat' when
-         creating the canonical name on FreeBSD machines, so the canonical
-         name is once again `freebsd4.2' instead of `freebsdelf4.2'
-
-                                  8/22
-                                  ----
-lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell,
-rltypedefs,xmalloc}.h
-lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch,
-input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode
-       - changed __P to PARAMS
-
-lib/tilde/tilde.[ch]
-       - changed __P to PARAMS
-
-{Makefile,configure}.in
-       - changed the version number to 2.05a
-       - changed the release status to `alpha1'
-
-                                  8/23
-                                  ----
-support/shobj-conf
-       - support for building shared libraries on Darwin/MacOS X
-
-siglist.h
-       - extern declaration for strsignal() to compensate for lack of
-         a definition in some system include files
-
-jobs.c
-       - remove casts from strsignal() calls
-
-[bash-2.05a-alpha1 frozen]
-
-                                  8/27
-                                  ----
-[bash-2.05a-alpha1 released]
-
-                                  8/27
-                                  ----
-execute_cmd.c
-       - fix eval_arith_for_expr to handle the case where the expanded
-         word list is NULL, returning 0 in this case
-
-print_cmd.c
-       - in print_function_def, make sure that func_redirects is assigned
-         a value before being used
-
-                                  8/28
-                                  ----
-alias.c
-       - include <ctype.h> for definition of isalpha()
-
-bashhist.h
-       - add prototypes for extern function declarations
-
-flags.c
-       - include bashhist.h for extern function declarations
-
-mksyntax.c
-       - include <unistd.h> if HAVE_UNISTD_H is defined in config.h
-
-parse.y
-       - include test.h for extern function declarations
-
-externs.h
-       - change extern declaration for setlinebuf to sh_setlinebuf
-
-stringlib.c
-       - include <glob/glob.h> for extern function declarations
-
-variables.h
-       - add function prototypes for all of the sv_* functions
-
-builtins/common.h
-       - add extern declarations for set_shellopts() and parse_shellopts()
-         from builtins/set.def
-
-variables.c
-       - include "hashcmd.h" for extern declaration for flush_hashed_filenames
-       - include "pathexp.h" for extern declaration for setup_glob_ignore
-
-lib/malloc/malloc.c
-       - cast to `long' instead of `int' in memalign for 64-bit machines
-
-{pcomplete,trap}.c
-       - changed printf escape sequences used to print pointers to %p
-
-lib/readline/undo.c
-       - include "xmalloc.h" for extern function declaration
-
-input.h
-       - add function prototypes to extern declarations for getc_with_restart
-         and ungetc_with_restart
-
-variables.[ch]
-       - changed type of `function' member of `struct name_and_function' to
-         `sv_func_t', which is defined and prototyped in variables.h
-       - map_over now takes an `sh_var_map_func_t *'
-
-shell.h
-       - start of a set of function pointer typedefs like those in
-         lib/readline/rltypedefs.h
-
-hashlib.[ch]
-       - second paramter to flush_hash_table is now an `sh_free_func_t *'
-
-trap.c
-       - parameter to reset_or_restore_signal_handlers is now an
-         `sh_resetsig_func_t *'
-
-pcomplete.h, pcomplib.c
-       - function pointer argument to print_all_compspecs is now an
-         `sh_csprint_func_t *'
-       - function pointer `list_getter' element of an `ITEMLIST' is now
-         prototyped with __P((...)) instead of using `Function *'
-
-jobs.[ch]
-       - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *'
-
-alias.c
-       - map_over_aliases now takes an `sh_alias_map_func_t *'
-       - free_alias_data now takes a `PTR_T'
-
-pathexp.c
-       - function pointer argument to ignore_globbed_names is now an
-         `sh_ignore_func_t *' 
-
-bashline.c
-       - function pointer argument to _ignore_completion_names is now an
-         `sh_ignore_func_t *' 
-
-pathexp.h,{bashhist,bashline.c
-       - `item_func' member of a `struct ignorevar' is now an
-         `sh_iv_item_func_t *'
-
-builtins/evalfile.c
-       - `errfunc' is now an `sh_vmsg_func_t *'
-
-jobs.c
-       - map_over_job now takes an `sh_job_map_func_t *' as its first argument
-
-array.[ch]
-       - function pointer argument to array_walk is now an
-         `sh_ae_map_func_t *'
-
-general.c
-       - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *',
-         and so the assignment in tilde_initialize doesn't need a cast
-
-list.c
-       - map_over_words now takes an `sh_icpfunc_t *' as its second argument
-
-input.h
-       - the `getter' and `ungetter' function pointer members of a
-         BASH_INPUT are now of types `sh_cget_func_t *' and
-         `sh_cunget_func_t *' respectively
-       - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
-         an `sh_cunget_func_t *' as its second
-
-parse.y
-       - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
-         an `sh_cunget_func_t *' as its second
-       - initialize_bash_input casts bash_input.getter and bash_input.ungetter
-         appropriately
-
-builtins/mkbuiltins.c
-       - make the extern function definitions written to builtext.h have
-         prototypes with __P((...))
-       - include "stdc.h"
-       - change Function to mk_handler_func_t
-       - fixed comment_handler to take the right number of args
-       - prototyped all the handler functions with __P((...))
-
-builtins.h
-       - the `function' member of a struct builtin is now of type
-         `sh_builtin_func_t *'
-
-builtins/common.[ch]
-       - last_shell_builtin, this_shell_builtin are now of type
-         `sh_builtin_func_t *'
-       - find_shell_builtin, builtin_address, find_special_builtin now return
-         `sh_builtin_func_t *'
-
-builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y
-       - changed all declarations of last_shell_builtin and this_shell_builtin
-
-execute_cmd.c
-       - execute_builtin, execute_builtin_or_function,
-         execute_subshell_builtin_or_function now take an
-         `sh_builtin_func_t *' instead of a `Function *' for argument
-       - changed appropriate variables from `Function *' to
-         `sh_builtin_func_t *'
-
-builtins/{bind,builtin,enable,read,setattr}.def
-       - replaced uses of `Function *' in variable declarations with
-         appropriate types (sh_builtin_func_t * or rl_command_func_t *)
-
-builtins/set.def
-       - set_func and get_func members of binary_o_options are now of types
-         `setopt_set_func_t *' and `setopt_get_func_t *', which are
-         prototyped
-
-builtins/shopt.def
-       - set_func member of shopt_vars is now of type `shopt_set_func_t *'
-
-bashline.c
-       - enable_hostname_completion now returns `int' (the old value of
-         perform_hostname_completion)
-
-[The only use of Function and VFunction now is for unwind-protects]
-
-                                   9/4
-                                   ---
-lib/sh/getcwd.c
-       - use const define from config.h rather than `CONST'
-       - use PTR_T define from xmalloc.h rather than `PTR'
-       - include xmalloc.h for PTR_T
-       - remove PATH_MAX define, rely on value from maxpath.h
-
-{general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c
-       - don't include maxpath.h directly; it's already included by shell.h
-
-lib/sh/mailstat.c
-       - new `mailstat()' implementation, to stat a mailbox file for
-         mail checking.  handles maildir-style mail directories with one
-         file per message and creates a dummy stat struct from them
-
-lib/sh/Makefile.in
-       - add mailstat.c and mailstat.o in the appropriate places
-
-lib/malloc/malloc.c
-       - augmented implementation with wrapper functions that pass in file
-         and line number information from cpp.  currently unused, but a
-         placeholder for future debugging and use tracking
-
-lib/malloc/shmalloc.h
-       - new file, extern declarations for allocation wrapper functions for
-         use by the shell (and others, I guess)
-
-xmalloc.[ch]
-       - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that
-         pass cpp line number information through to the malloc functions,
-         if USING_BASH_MALLOC is defined
-
-                                   9/5
-                                   ---
-lib/malloc/gmalloc.c
-       - removed; no longer part of distribution
-
-lib/malloc/Makefile.in
-       - removed references to gmalloc.[co]
-
-configure.in, doc/bashref.texi
-       - removed references to `--with-glibc-malloc' configure option
-
-{configure,Makefile}.in
-       - changed the way bash malloc is configured into the Makefile, making
-         it more like how readline is configured.  If the bash malloc is
-         not configured in, nothing in lib/malloc will be built
-
-                                   9/6
-                                   ---
-lib/malloc/imalloc.h
-       - new file, some internal malloc definitions
-
-lib/malloc/mstats.h
-       - new file, definitions for malloc statistics structs and functions
-
-lib/malloc/trace.c
-       - new file, malloc tracing functions (currently just print messages
-         to stderr), code is #ifdef MALLOC_TRACE
-
-lib/malloc/stats.c
-       - new file, moved malloc stats code from malloc.c to here
-
-lib/malloc/malloc.c
-       - moved some definitions to imalloc.h
-       - moved stats code to stats.c
-       - malloc tracing calls added to internal_{malloc,realloc,free}, all
-         #ifdef MALLOC_TRACE
-
-lib/malloc/Makefile.in, Makefile.in
-       - added {imalloc,mstats}.h, {trace,stats}.c
-
-parse.y
-       - changed decode_prompt_string to save and restore $?
-         (last_command_exit_value) around calls to expand_prompt_string(),
-         so command substitutions in PS1, etc. don't change $?
-
-{array,subst}.c
-       - a couple more arrayind_t fixes from Paul Eggert
-
-configure.in
-       - remove redundant check for wait3(2)
-
-redir.h
-       - fixed a typo (stdin_redirs -> stdin_redirects)
-
-                                  9/10
-                                  ----
-execute_cmd.c
-       - remove check for \n and \r from WHITESPACE macro, since those
-         chars are not whitespace as returned by the whitespace(c) macro
-       - getinterp now takes a `char *' as first arg, not unsigned char *
-       - execute_shell_script now takes a `char *' as first arg, not
-         unsigned char *
-       - fix typo in forward declaration for `initialize_subshell'
-       
-general.[ch]
-       - check_binary_file now takes a (char *) argument, not unsigned char *
-       - pass unsigned char to isspace and isprint because of ISO C fuckup
-       - bash_tilde_expand now takes a `const char *' as its argument
-
-builtins/evalfile.c, shell.c
-       - buffer passed to check_binary_file is char, not unsigned char
-
-parse.y
-       - fix extern declaration for yyerror()
-       - yyerror now takes a `const char *' as first arg
-
-{error,jobs}.c
-       - fixes to printf-style functions to handle pids wider than an int
-
-lib/readline/{isearch,vi_mode}.c
-       - fix call to rl_message in rl_display_search (remove extra arg)
-
-variables.c
-       - fix missing argument to builtin_error in make_local_variable
-
-builtins/getopts.def
-       - since getopts takes no options, change while loop calling
-         internal_getopts to a simple `if' check
-
-builtins/printf.def
-       - since printf takes no options, change while loop calling
-         internal_getopts to a simple `if' check
-
-lib/readline/bind.c
-       - remove _SET_BELL macro, expand code inline
-
-lib/readline/input.c
-       - change _rl_input_available to use either select or FIONREAD,
-         but not both
-
-lib/readline/readline.c
-       - fix rl_digit_loop to remove unreachable code at end of loop
-
-{bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c
-       - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif
-       - remove some unused variables
-
-execute_cmd.c
-       - remove #ifdef'd code that allowed `return' to terminate a select
-         statement
-
-expr.c
-       - remove some extraneous tests from strlong()
-
-array.h
-       - arrayind_t is now a long, since shell arithmetic is performed as
-         longs
-       - remove second declaration of new_array_element
-
-builtins/printf.def
-       - in mklong, xrealloc cannot return NULL, so don't check for it
-       - remove some #if 0 code
-       - fix core dump triggered by a format specification with more than
-         one `*'
-       - remove `foundmod', since its value mirrors `modchar != 0'
-       - include "common.h" for builtin_{error,usage} declarations
-
-Makefile.in,builtins/Makefile.in
-       - updated some dependencies due to new include files
-
-pcomplete.c
-       - include "execute_cmd.h" for declaration of execute_shell_function
-
-arrayfunc.c
-       - include <stdio.h> for printf
-       - include "builtins/common.h" for builtin_error declaration
-
-builtins/evalstring.c
-       - include "../trap.h" for run_trap_cleanup declaration
-
-builtins/help.def
-       - include "common.h" instead of locally declaring builtin_error
-         and builtin_usage
-
-error.h
-       - add extern declaration for itrace()
-       - add prototype to extern declaration of get_name_for_error
-       - file_error now takes a `const char *' as first argument
-
-externs.h
-       - added prototype for sh_setlinebuf declaration, bracketed with
-         NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere
-       - add extern declaration for parse.y:return_EOF()
-
-shell.c
-       - add NEED_SH_SETLINEBUF_DECL before including shell.h
-
-lib/readline/callback.c
-       - include <stdlib.h> or "ansi_stdlib.h" for abort declaration
-
-quit.h
-       - remove declaration of throw_to_top_level
-
-subst.c
-       - remove unused extern declaration for getopts_reset
-
-lib/sh/netopen.c
-       - include <shell.h> for legal_number, etc.
-       - add prototype for inet_aton extern declaration
-
-lib/sh/clock.c
-       - include <stdc.h> for __P declaration
-       - add extern declaration for get_clk_tck
-
-support/mkversion.sh
-       - changed so that extern function declarations for functions in
-         version.c (moved from externs.h) are in the generated version.h
-
-shell.h
-       - include version.h
-
-version.c
-       - various `char *' version variables are now `const char *'
-
-general.h
-       - add prototype for same_file, bracketed with _POSIXSTAT_H
-         #ifdef, since that's what include/posixstat.h defines
-
-builtins/common.[ch]
-       - _evalfile, maybe_execute_file, source_file, and fc_execute_file
-         now take a `const char *' as their first argument
-
-eval.c
-       - removed extern declaration of yyparse; it's in externs.h
-
-parse.y
-       - added prototypes to static forward function declarations
-       - changed local `all_digits' variable in read_token_word () to
-         all_digit_token to avoid clash with all_digits() function in
-         general.c
-
-{bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c
-       - added prototypes for static function declarations
-
-shell.h
-       - add extern declarations for interactive, interactive_shell,
-         changed c files with extern declarations
-
-pcomplete.c
-       - changed it_init_aliases to avoid shadowing global variable
-         `aliases'
-
-bashline.c,pathexp.c,general.h
-       - sh_ignore_func_t is now a pointer to a function taking a
-         `const char *'; users changed
-
-configure.in
-       - test for <strings.h>
-
-config.h.in
-       - add #undef HAVE_STRINGS_H
-
-bashansi.h
-       - change like recommended in autoconf manual
-
-                                  9/11
-                                  ----
-[a date which will live in infamy.  prayers for the victims.]
-
-execute_cmd.c
-       - don't use an absolute index into abuf in mkfmt, use
-         sizeof(abuf) to compute last index
-
-builtins/common.c
-       - fix read_octal to do a better job of detecting overflow while
-         iterating through the string
-
-builtins/umask.def
-       - change octal-print mode to print 4 digits, like other shells
-       - cast umask to unsigned long to avoid problems on systems where
-         it's wider than an int (POSIX doesn't guarantee that mode_t is
-         no wider than an int, but real-world systems use int)
-
-builtins/printf.def
-       - mklong can never return NULL (it uses xrealloc), so the mainline
-         doesn't need to check for NULL returns
-       - new function, getldouble (long double *), to get long doubles
-       - mklong now takes a `char *' as its second argument, the modifier(s)
-         to use
-       - changed use of `modchar' to handle more than a single modifier
-         character
-       - changed to handle `long double' and `L' formats better, rather
-         than discarding long double information
-       - since printf now follows the POSIX.2 rules for conversion errors,
-         we can dispense with the status returns from the get* functions
-       - make the get* functions as similar in structure as possible,
-         removing type casts, etc.
-
-lib/sh/timeval.c,execute_cmd.c
-       - change some instances of `long' to `time_t', for systems where
-         a time_t is bigger than a long
-
-jobs.c
-       - include "posixtime.h" instead of <sys/time.h>
-
-config.h.in
-       - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD,
-         HAVE_DECL_SBRK, HAVE_DECL_PRINTF
-       - remove defines for SBRK_DECLARED and PRINTF_DECLARED
-       - add _GNU_SOURCE define
-
-configure.in
-       - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf
-       - remove call to BASH_FUNC_SBRK_DECLARED
-       - remove call to BASH_FUNC_PRINTF
-
-xmalloc.c, lib/malloc/malloc.c
-       - change check of SBRK_DECLARED to HAVE_SBRK_DECL
-
-print_cmd.c
-       - change PRINTF_DECLARED to HAVE_DECL_PRINTF
-
-builtins/evalstring.c, builtins/common.h
-       - parse_and_execute now takes a `const char *' as its second argument
-
-input.h,parse.y
-       - with_input_from_* functions now take a `const char *' as their
-         second argument
-       - init_yy_io now takes a `const char *' as its fourth argument
-
-parse.y,externs.h
-       - parse_string_to_word_list now takes a `const char *' as its second
-         argument
-
-tests/builtins.right
-       - change output to account for extra digit in umask output
-
-pcomplib.c
-       - free_progcomp now takes a PTR_T argument
-
-builtins/bashgetopt.h
-       - include <stdc.h>
-       - add prototypes to extern declarations
-
-builtins/shopt.def
-       - add prototypes to static function declarations
-
-builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c
-       - include <ctype.h> for isdigit macro (referenced by `digit(x)')
-
-lib/readline/complete.c
-       - added more static function declarations with prototypes
-
-                                  9/12
-                                  ----
-lib/sh/tmpfile.c
-       - use `^' instead of `*' in sh_mktmpname to make filenames a bit
-         more random
-
-include/stdc.h,lib/readline/rldstdc.h
-       - add __attribute__ definition 
-
-builtins/common.h
-       - add printf __attribute__ to declaration of builtin_error
-
-error.h
-       - add printf __attribute__ to declaration of programming_error,
-         report_error, parser_error, fatal_error, sys_error, internal_error,
-         internal_warning
-
-lib/readline/readline.h
-       - add printf __attribute__ to declaration of rl_message
-
-pcomplete.c
-       - add printf __attribute__ to declaration of debug_printf
-
-print_cmd.c
-       - add printf __attribute__ to declarations of cprintf, xprintf
-
-include/chartypes.h
-       - new file, includes <ctype.h> and defines macros that check for
-         safe (ascii) arguments before calling the regular ctype macros
-
-{alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c
-parse.y
-builtins/{bashgetopt,common}.c
-builtins/{fc,printf,umask,wait}.def
-lib/glob/strmatch.c
-lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c
-examples/loadables/{head,sleep}.c
-       - include "chartypes.h" or <chartypes.h> instead of <ctype.h>
-
-Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in
-       - update dependencies to include chartypes.h
-
-lib/sh/inet_aton.c
-       - use `unsigned char' instead of `char' to pass to ctype.h functions
-
-lib/sh/netopen.c
-       - check for '0' <= host[0] <= '9' in _getaddr instead of using
-         isdigit
-
-subst.c,lib/sh/shquote.c
-       - change array subscripts into sh_syntaxtab from `char' to
-         `unsigned char'
-
-{alias,bashline,execute_cmd,expr,general,subst}.c, parse.y
-builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c
-lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c
-examples/loadables/{head,sleep}.c
-       - change to use some of the new macros in chartypes.h
-       - remove old local macro definitions now provided by chartypes.h
-
-general.h
-       - remove definition of isletter, ISOCTAL, digit, digit_value
-       - change legal_variable_starter and legal_variable_char to use
-         chartypes.h macros
-       - change ABSPATH to use chartypes.h macros
-
-lib/readline/util.c
-       - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define
-         function replacements for macros in chardefs.h
-
-lib/readline/chardefs.h
-       - added some of the same macros as in chartypes.h
-       - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
-         _rl_to_upper, _rl_to_lower to use new IS* macros
-       - added _rl_isident macro from vi_mode.c:isident
-
-lib/readline/{bind,complete,nls}.c
-       - change to use some of the new macros from chardefs.h
-
-lib/readline/vi_mode.c
-       - isident -> _rl_isident
-       - remove local defines of macros in chardefs.h
-
-lib/sh/strtol.c
-       - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0.
-         This one can do strtoll and strtoull, if necessary
-
-                                  9/13
-                                  ----
-builtins/ulimit.def
-       - changed get_limit so it retrieves both hard and soft limits
-         instead of one or the other
-       - changed callers of get_limit
-       - changed getmaxvm to take soft limit, hard limit as arguments
-       - changed getmaxuprc to just take a single argument, the value
-       - changed calls to printone() to pass soft limit or hard limit
-         depending on `mode' instead of using old current_limit variable
-       - moved check for out-of-range limits in ulimit_internal into the
-         block that converts a string argument to a value of type rlim_t
-       - changed RESOURCE_LIMITS struct to break the description into a
-         description string and separate scale factor string
-       - changed print_all_limits to print a single error message if
-         get_limit fails, including limits[i].description now that the
-         scale factor has been removed from the description string
-       - removed DESCFMT define, since it's now used only in printone()
-       - changed printone to print the option character associated with a
-         particular limit if we're printing multiple limits
-       - changed calls to builtin_error to print the description associated
-         with a limit if setting or getting the limit fails
-       - added support for new POSIX 1003.1-200x rlim_t values:
-         RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current
-         soft and hard limits, whatever they are
-       - changed printone to print `hard' or `soft' if the current limit is
-         RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively
-       - changed ulimit_internal to handle new `hard' and `soft' arguments
-       - changed help text do describe the special limit arguments `hard',
-         `soft', and `unlimited'
-
-doc/{bash.1,bashref.texi}
-       - documented new `hard' and `soft' limit arguments to `ulimit'
-
-hashlib.[ch]
-       - find_hash_item now takes a `const char *' is its first argument
-       - hash_string now takes a `const char *' is its first argument
-       - remove_hash_item now takes a `const char *' as its first argument
-
-pcomplib.c
-       - removed cast from first argument to find_hash_item in find_compspec
-
-general.[ch]
-       - absolute_program now takes a `const char *' as its argument
-       - absolute_pathname now takes a `const char *' as its argument
-
-lib/glob/glob.[ch]
-       - glob_pattern_p now takes a `const char *' as its argument
-
-bashline.c
-       - removed cast from first argument to absolute_program in
-         command_word_completion_function
-       - removed cast from first argument to glob_pattern_p in
-         attempt_shell_completion
-
-findcmd.[ch]
-       - find_absolute_program, find_user_command, find_path_file,
-         search_for_command, user_command_matches now take a
-         `const char *' as their first argument
-       - file_status, executable_file, is_directory, executable_or_directory
-         now take a `const char *' as their argument
-       - _find_user_command_internal, find_user_command_internal,
-         find_user_command_in_path 
-
-lib/sh/makepath.c, externs.h
-       - changed sh_makepath so it takes `const char *' for its first
-         two arguments
-
-hashcmd.[ch]
-       - find_hashed_filename now takes a `const char *' as its first arg
-       - remove_hashed_filename now takes a `const char *' as its first arg
-
-variables.[ch]
-       - new_shell_variable, var_lookup, shell_var_from_env_string,
-         find_name_in_env_array, bind_function, makunbound,
-         bind_name_in_env_array, bind_tempenv_variable, bind_variable
-         now take a `const char *' as their first arg
-       - find_function, make_new_variable, find_tempenv_variable,
-         find_variable_internal, find_variable, set_func_read_only,
-         set_func_auto_export, all_variables_matching_prefix, assign_in_env,
-         assignment, kill_local_variable, make_local_variable, unbind_variable
-         now take a `const char *' as their arg
-       - mk_env_string now takes `const char *' arguments
-
-arrayfunc.[ch]
-       - skipsubscript now takes a `const char *' as its argument
-
-                                  9/17
-                                  ----
-lib/readline/complete.c
-       - attempt to preserve case of what the user typed in
-         compute_lcd_of_matches if we're ignoring case in completion
-
-builtins/{let,pushd}.def,{execute_cmd,expr}.c
-       - change some 0L constants to 0 and let the compiler sort it out
-
-                                  9/18
-                                  ----
-lib/malloc/alloca.c
-       - alloca now takes a `size_t' argument
-
-include/memalloc.h
-       - if we're providing an extern function declaration for alloca,
-         use `void *' and prototype if __STDC__ is defined
-       - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't
-         define HAVE_ALLOCA
-
-                                  9/19
-                                  ----
-subst.c
-       - do_assignment_internal, do_assignment, and do_assignment_no_expand
-         now take a `const char *' as their first argument
-
-general.h
-       - a `sh_assign_func_t' is now a function taking a `const char *' and
-         returning int
-
-hashcmd.c
-       - free_filename_data now takes a `PTR_T' argument to agree with the
-         typedef for `sh_free_func_t'
-
-lib/sh/snprintf.c
-       - use TYPE_MAXIMUM define like strtol.c instead of huge constants
-
-                                  9/20
-                                  ----
-lib/sh/snprintf.c
-       - don't bother to compile the bulk of the body unless HAVE_SNPRINTF
-         or HAVE_ASPRINTF is not defined
-
-                                  9/24
-                                  ----
-flags.c
-       - ignore `set -n' if the shell was started interactively
-
-lib/readline/readline.c
-       - initialize readline_echoing_p to 0; let the terminal-specific code
-         in rltty.c set it appropriately
-
-lib/malloc/malloc.c
-       - changed internal_memalign() slightly to avoid compiler warnings about
-         negating an unsigned variable (-alignment -> (~alignment + 1))
-
-                                  9/27
-                                  ----
-lib/readline/readline.c
-       - changed rl_newline to set _rl_history_saved_point appropriately
-         for the {previous,next}_history code
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_history_preserve_point
-
-lib/readline/bind.c
-       - new bindable variable, `history-preserve-point', sets value of
-         _rl_history_preserve_point
-
-                                  10/1
-                                  ----
-lib/malloc/table.c
-       - new file, with a map of allocated (and freed) memory for debugging
-         multiple frees, etc.  Indexed by hash on values returned by
-         malloc(); holds size, file and line number info for last alloc or
-         free and a couple of statistics pointers
-
-lib/malloc/malloc.c
-       - a few cleanups; added calls for registering allocations and frees
-         if MALLOC_REGISTER is defined
-       - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define
-       - reordered fields in `struct...minfo' in `union mhead' to restore
-         eight-byte alignment
-       - added explicit checks for underflow in free and realloc since
-         checking mh_magic2 is not sufficient to detect everything (it's
-         no longer the last field in the struct, and thus not the bytes
-         immediately preceding what's returned to the user)
-       - new function, xbotch, for printing file and line number info for
-         the failed assertion before calling botch() (programming_error())
-
-configure.in
-       - replaced call to BASH_C_LONG_LONG with call to
-         AC_CHECK_TYPES([long long])
-       - moved the C compiler tests before the tests for various
-         system types, so we can know whether we have `long long'
-         before testing for 64-bit types
-       - if we have `long long', check for sizeof(long long) and save value
-
-aclocal.m4
-       - changed BASH_TYPE_BITS64_T to check `long long' before `long', but
-         after `double'
-
-                                  10/2
-                                  ----
-lib/malloc/malloc.c
-       - made malloc and realloc both agree on the rounding for a request of
-         size N (round up to nearest multiple of 8 after adjusting for
-         malloc overhead); uses new ALLOCATED_BYTES macro
-       - realloc and free now use new IN_BUCKET macro for underflow checks
-
-execute_cmd.c
-       - fixed time_command() to use `time_t' instead of `long' to hold
-         time stamps
-
-lib/sh/clock.c
-       - clock_t_to_secs now takes a `time_t *' second argument
-       - fixed print_clock_t to call clock_t_to_secs with right arguments
-
-lib/sh/timeval.c
-       - fixed print_timeval to make `minutes' a `long' and make its
-         structure identical to print_clock_t
-
-redir.c
-       - changed redirection_error to check for EBADF and use the file
-         descriptor being redirected from in the error message if it
-         is >= 0
-
-Makefile.in
-       - changed release status to `beta1'
-
-lib/glob/collsyms.h
-       - added a few ASCII symbols to the posix_collsyms array
-
-                                  10/3
-                                  ----
-aclocal.m4
-       - fixed typo in BASH_TYPE_BITS64_T
-
-configure.in
-       - added check for unsigned chars with AC_C_CHAR_UNSIGNED
-
-config.h.in
-       - added PROTOTYPES and __CHAR_UNSIGNED__ #defines
-
-general.h
-       - if CHAR_MAX is not define by <limits.h>, provide a definition
-
-builtins/printf.def
-       - change tescape() to mask \0 and \x escape sequences with 0xFF
-       - change tescape() to process at most two hex digits after a `\x'
-
-lib/sh/strtrans.c
-       - change strtrans() to mask \0 and \x escape sequences with 0xFF
-       - change strtrans() to process at most two hex digits after a `\x'.
-         This affects `echo -e' and $'...' processing
-
-lib/readline/bind.c
-       - changed rl_translate_keyseq() to process at most two hex digits
-         after a `\x'
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - changed documentation for key binding escape sequences to specify
-         that at most two hex digits after \x are translated
-       - changed documentation for key binding to specify that the result
-         of \nnn or \xhh escapes is an eight-bit value, not just ASCII
-
-doc/{bash.1,bashref.texi}
-       - changed documentation of $'...' to specify that at most two hex
-         digits after \x are translated
-       - changed `echo' documentation to specify that at most two hex
-         digits after \x are translated
-       - changed documentation for `echo' and $'...' to specify that the
-         result of \nnn or \xhh escapes is an eight-bit value, not just ASCII
-
-                                  10/4
-                                  ----
-lib/malloc/malloc.c
-       - changed interface for xbotch to pass memory address and error code
-         as two additional arguments
-       - call mregister_describe_mem from xbotch to get the last allocation
-         or free before the botch
-
-configure.in
-       - call AC_CHECK_DECLS([strsignal])
-
-config.h.in
-       - add HAVE_DECL_STRSIGNAL
-
-siglist.h
-       - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL
-
-                                  10/5
-                                  ----
-support/texi2html
-       - upgraded to version 1.64
-
-                                  10/9
-                                  ----
-aclocal.m4
-       - added check for `long long' to BASH_TYPE_PTRDIFF_T
-
-configure.in
-       - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
-
-aclocal.m4
-       - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to
-         AC_CHECK_MEMBER(struct termios.c_line, ...)
-       - replaced body of BASH_STRUCT_TERMIO_LDISC with call to
-         AC_CHECK_MEMBER(struct termios.c_line, ...)
-
-[bash-2.05a-beta1 frozen]
-
-                                  10/10
-                                  -----
-lib/sh/snprintf.c
-       - fixed exponent() to not smash the trailing zeros in the fraction
-         when using %g or %G with an `alternate form'
-       - fixed exponent() to handle the optional precision with %g and %G
-         correctly (number of significant digits before the exponent)
-
-                                  10/11
-                                  -----
-expr.c
-       - fixed strlong() to correct the values of `@' and `_' when
-         translating base-64 constants (64#@ == 62 and 64#_ == 64), for
-         compatibility with ksh
-
-lib/sh/itos.c
-       - added a slightly more flexible fmtlong() function that takes a
-         base argument and flags (for future use)
-       - rewrote itos and inttostr in terms of fmtlong
-
-lib/sh/fmtulong.c
-       - new file, converts unsigned long to string.  hooks for `unsigned
-         long long' in the future.  unused as yet
-
-                                  10/15
-                                  -----
-lib/readline/rltty.c
-       - change the SET_SPECIAL macro to avoid possible (but highly
-         unlikely) negative array subscripts
-
-error.h
-       - add __attribute__ to extern declaration of itrace (even though the
-         function isn't defined in released versions of bash)
-
-bashansi.h
-       - include <strings.h> if HAVE_STRINGS_H is defined, to get any extra
-         function declarations provided therein
-
-copy_cmd.c
-       - fix typo in forward declaration for copy_arith_for_command
-
-lib/malloc/stats.c
-       - make the accumulators in _print_malloc_stats be `unsigned long'
-         instead of `int'
-
-externs.h, sig.h
-       - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level
-         declarations
-
-lib/sh/mailstat.c, support/bashversion.c
-       - include <bashansi.h> for some string function declarations
-
-lib/malloc/shmalloc.h
-       - added extern declarations of functions that do malloc debugging
-
-lib/readline/{isearch,readline,vi_mode}.c
-       - make sure we index into _rl_keymap with a non-negative index
-
-parse.y
-       - make sure we index into sh_syntaxtab with a non-negative index
-
-lib/readline/vi_mode.c
-       - bound the vi_mark_chars array with the number of characters between
-         'a' and 'z' rather than using a fixed amount
-       - don't use _rl_lowercase_p when deciding whether the char read by
-         rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z'
-
-lib/readline/chardefs.h
-       - conditionally include memory.h and strings.h as in general.h
-       - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
-       - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c)
-       - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
-         _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower,
-         and _rl_isident to work on systems with signed chars
-
-include/chartypes.h
-       - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
-
-lib/sh/{strcasecmp,strtod,strtol}.c
-       - don't pass possibly-negative characters to tolower() or toupper()
-
-lib/glob/strmatch.c
-       - don't bother testing for isupper in FOLD; rely on TOLOWER macro
-         from <chartypes.h> to do it
-       - don't use local definitions of isblank, et al.; rely on macros
-         from <chartypes.h>
-
-lib/readline/{display,readline}.c, mksyntax.c
-       - use new ISPRINT macro instead of isprint()
-
-builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c
-       - don't assume that a pid_t fits into an int for printing and other
-         uses
-
-variables.[ch]
-       - the unused put_gnu_argv_flags_into_env now takes a `long' pid
-         argument
-
-configure.in, config.h.in
-       - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found
-       - check for strtoull(), define HAVE_STRTOULL if found
-       - check for uintmax_t, define to `unsigned long' if not found
-
-lib/sh/mailstat.c
-       - don't use st_blocks member of struct stat unless
-         HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink
-         field to return the total number of messages in a maildir-style
-         mail directory
-
-general.h,{alias,expr,general,subst,variables}.c
-builtins/{printf,read}.def
-lib/readline/{bind,complete,nls}.c
-lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c
-       - cast args to ctype macros to unsigned char for systems with signed
-         chars; other fixes for signed chars
-
-lib/sh/{fmtullong,strtoull.c}
-       - new files, more support for `long long'
-
-Makefile.in, lib/sh/Makefile.in
-       - make fmtullong.o and strtoull.o part of libsh
-
-lib/sh/itos.c
-       - remove local copy of fmtlong; use fmtulong instead
-       - new functions: uitos, uinttostr work on `unsigned long'
-
-lib/sh/snprintf.c
-       - fixes to make `unsigned long long' work (%llu)
-       - fixes to make unsigned formats not print the sign when given
-         an unsigned long that is greater than LONG_MAX
-
-externs.h
-       - extern declarations for fmtulong, fmtulloing, strtoull
-       - extern declarations for uitos, uinttostr
-
-                                  10/16
-                                  -----
-configure.in
-       - move header checks before function checks
-       - move c compiler tests before header checks
-       - check for <inttypes.h> with BASH_HEADER_INTTYPES
-       - change type checks for intmax_t, uintmax_t to not attempt to
-         include <stdint.h>
-       - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul
-         with BASH_CHECK_DECL (for declarations in header files) and
-         AC_REPLACE_FUNCS (for availability and LIBOBJS substitution)
-       - remove check for have_long_long around sizeof check for long long
-         (since autoconf will give it a size of 0 if the type isn't found)
-
-config.h.in
-       - add a define for HAVE_INTTYPES_H
-       - add a define for HAVE_UNSIGNED_LONG_LONG
-       - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL
-
-aclocal.m4
-       - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS
-         on <inttypes.h>; separate so it can be AC_REQUIREd
-       - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE
-       - include <inttypes.h> in BASH_CHECK_TYPE if HAVE_INTTYPES_H is
-         defined
-       - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE
-       - new `long long' checking macros:  BASH_TYPE_LONG_LONG and
-         BASH_TYPE_UNSIGNED_LONG_LONG
-       - new BASH_CHECK_DECL 
-
-lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in
-       - new files
-
-externs.h
-       - extern declarations for strtoll, strtoimax, strtoumax
-
-lib/malloc/alloca.c
-       - include <bashtypes.h> for size_t
-
-builtins/printf.def
-       - new functions: getllong, getullong, getintmax, getuintmax; return
-         long long, unsigned long long, intmax_t, uintmax_t respectively
-       - builtin printf now handles `ll' and `j' length modifiers directly
-
-lib/sh/Makefile.in
-       - use LIBOBJS to decide whether or not the strto* functions are
-         needed
-
-                                  10/17
-                                  -----
-configure.in
-       - call AC_REPLACE_FUNCS(rename)
-       - move getcwd, strpbrk, strcasecmp, strerror, strtod
-         from AC_CHECK_FUNCS to AC_REPLACE_FUNCS
-       - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes"
-       - call BASH_CHECK_SYS_SIGLIST
-       - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint)
-
-lib/sh/Makefile.in
-       - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror,
-         strtod, vprint from OBJECTS; picked up from LIBOBJS
-
-aclocal.m4
-       - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc
-         getcwd(3) calls popen(3)
-       - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's
-         not found in libc or as a #define even with the special includes
-       - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT
-       - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR
-       - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING
-       - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
-       - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
-       - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK
-       - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC
-       - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT
-       - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF
-       - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK
-       - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T
-       - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET
-       - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for
-         sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to
-         siglist.o if appropriate
-
-Makefile.in
-       - use SIGLIST_O variable to decide whether or not we need siglist.o
-
-{execute_cmd,subst}.c
-       - change a couple of instances of ISDIGIT to DIGIT, where we really,
-         really only want ascii digits
-
-ansi_stdlib.h
-       - don't need a declaration for atol()
-
-                                  10/18
-                                  -----
-
-aclocal.m4
-       - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support
-         for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT
-         if successful
-
-configure.in
-       - call AC_CHECK_FUNCS for isascii
-       - call BASH_FUNC_PRINTF_A_FORMAT
-
-config.h.in
-       - add a define for HAVE_ISASCII
-       - add a define for HAVE_PRINTF_A_FORMAT
-
-lib/sh/snprintf.c
-       - for long double output, fall back to sprintf using ldfallback()
-         function for floating point formats
-       - support %a, %A using dfallback() or ldfallback() if
-         HAVE_PRINTF_A_FORMAT is defined
-       - fix bug in vasprintf that returned wrong value in its first
-         argument if the buffer holding the result string got reallocated
-       - fixed PUT_CHAR macro to increment the counter even if we've
-         exceeded the buffer size, for the return value from
-         vsnprintf/snprintf
-       - fix vsnprintf_internal to not use counter < length as a loop
-         condition, but always process the entire format string (for
-         the return value from vsnprintf/snprintf)
-
-builtins/printf.def
-       - support %a, %A if HAVE_PRINTF_A_FORMAT is defined
-
-include/typemax.h
-       - new file, with the TYPE_MAXIMUM stuff that's duplicated in several
-         files in lib/sh
-
-lib/sh/{fmtulong,strtol,snprintf}.c
-       - include <typemax.h> instead of having the definitions in each file
-
-lib/sh/Makefile.in
-       - updated dependencies for typemax.h
-
-                                  10/22
-                                  -----
-configure.in
-       - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines
-         in chartypes.h
-
-config.h.in
-       - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT}
-
-include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h
-       - don't redefine some is* ctype macros/functions if HAVE_ISXXX is
-         defined (meaning that an appropriate function, but not a macro,
-         exists)
-
-lib/sh/strtrans.c
-       - new function, ansic_shouldquote, returns 1 if argument string
-         contains non-printing chars that should be quoted with $'...'
-
-externs.h
-       - new declaration for ansic_shouldquote()
-
-variables.c
-       - change print_var_value to ansi C quote the string if we're not in
-         posix mode and the variable's value contains non-printing chars,
-         to use the regular shell single quoting if the value contains
-         shell meta-characters, and to just output the string otherwise
-
-lib/sh/shquote.c
-       - add `break' to `case '~':' to avoid fallthrough and extra test
-
-doc/bashref.texi
-       - note that in POSIX mode, `set' displays variable values that
-         include nonprinting characters without quoting, unless they
-         contain shell metacharacters
-
-builtins/printf.def, lib/sh/snprintf.c
-       - handle `F' conversion specifier as equivalent to 'f'
-
-parse.y, {nojobs,variables}.c
-       - a couple of cleanups for when building a minimal configuration
-
-nojobs.c
-       - new function: stop_making_children(), just sets
-         already_making_children to 0 (like stop_pipeline)
-
-subst.c
-       - call stop_making_children from subst.c:command_substitute if
-         JOB_CONTROL is not defined.  This fixes the bug where the wrong
-         process is waited for (and its status returned) when using
-         command substitution in a null command in a shell function
-
-builtins/printf.def
-       - new variable `tw' used to keep track of the total number of
-         characters written by a single call to `printf' -- to be
-         used for the `%n' conversion, which will be added later.  It
-         gets reset each time we reuse the format string, which is what
-         ksh93 seems to do
-
-                                  10/23
-                                  -----
-variables.c
-       - new function, bind_var_to_int (char *var, long val)
-
-variables.h
-       - extern declaration for bind_var_to_int
-
-lib/sh/netopen.c
-       - use gai_strerror() for error messages when getaddrinfo() fails
-       - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me
-
-Makefile.in
-       - pass DEBUG=${DEBUG} down to makes in some subdirectories
-
-{builtins,lib/{glob,sh}}/Makefile.in
-       - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile
-
-builtins/printf.def
-       - added support for %n format conversion char (number of chars printed
-         so far from current format string)
-
-                                  10/24
-                                  -----
-variables.c
-       - if posixly_correct is set, the default value of $MAILCHECK is 600
-       - use legal_number instead of atoi in adjust_shell_level
-       - treat non-numeric assignments to SECONDS as 0 in assign_seconds
-       - new function, init_funcname_var; sets FUNCNAME as a dynamic variable
-         if it's not set in the initial environment
-       - new function, init_groups_var; sets GROUPS as a dynamic array
-         variable if it's not set in the initial environment
-       - new function, init_dirstack_var; sets DIRSTACK as a dynamic array
-         variable if it's not set in the initial environment
-       - new function, init_seconds_var; sets SECONDS as a dynamic
-         variable using any valid integer value in the initial environment
-         as the initial value, as if an assignment had been performed
-       - call init_funcname_var, init_groups_var, init_dirstack_var,
-         init_seconds_var from initialize_dynamic_variables
-       - non-numeric values assigned to LINENO are treated as 0
-       - change initialize_shell_variables to not auto-export PATH or TERM
-       - change set_home_var to not auto-export HOME
-       - change set_shell_var to not auto-export SHELL
-       - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE
-         out into a separate function, set_machine_vars; none of those
-         variables are auto-exported
-       - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT
-
-shell.c
-       - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if
-         SSH_SOURCE_BASHRC is defined in config-top.h
-
-config-top.h
-       - added a commented-out definition for SSH_SOURCE_BASHRC
-
-                                  10/25
-                                  -----
-
-Makefile.in
-       - changed RELSTATUS to `rc1' (release candidate 1)
-
-                                  10/29
-                                  -----
-locale.c
-       - fixed an `=' vs. `==' typo in set_locale_var when parsing
-         LC_NUMERIC
-
-doc/{bash.1,bashref.texi}
-       - document what bash does with $POSIXLY_CORRECT
-
-doc/builtins.1
-       - some updates
-
-builtins/psize.sh
-       - some mktemp(1) changes
-
-lib/readline/readline.c
-       - change rl_backward to check for rl_point < 0 and reset to 0 if so
-
-lib/readline/util.c
-       - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined
-
-lib/readline/rlprivate.h
-       - remove extern declaration of _rl_strpbrk
-
-lib/readline/rldefs.h
-       - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise
-         add extern declaration of _rl_strpbrk from rlprivate.h
-
-{mailcheck,shell,variables}.c
-       - make sure to include posixtime.h to get any prototype for time(3)
-         in scope
-
-{array,eval,execute_cmd,mksyntax,subst}.c, parse.y
-builtins/common.c
-lib/sh/pathcanon.c
-       - a few changes as the result of `gcc -Wall' patches from solar
-         designer
-
-builtins/read.def, parse.y
-       - change some calls to free() to xfree()
-
-builtins/set.def
-       - make sure unset_builtin() resets unset_array to 0 each time through
-         the loop, because it's set (and used) depending on the current
-         argument
-
-shell.h
-       - new define, USE_VAR, to force the compiler to not put a particular
-         variable in a register -- helpful if registers are not restored
-         by setjmp/longjmp
-
-builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c
-       - use USE_VAR for some variables
-
-subst.c
-       - fixed a case in expand_word_internal where a NULL pointer could
-         have been passed to free() (though free() should ignore it)
-       - fixed a case at the end of expand_word_internal where LIST could
-         have been used uninitialized (it makes gcc happy, though it
-         doesn't happen in practice)
-
-test.c
-       - give test_syntax_error(), beyond(), and integer_expected_error()
-         the `__noreturn__' attribute for gcc
-
-unwind_prot.c
-       - in clear_unwind_protect_list(), convert `flags' to `long' (via
-         assignment to a `long' variable) before casting to `char *', in
-         case pointers and longs are 64 bits and ints are 32 (makes no
-         difference on 32-bit machines)
-
-                                  10/30
-                                  -----
-print_cmd.c
-       - fixed cprintf to avoid gcc warning about assigning const pointer
-         to non-const (discarding type qualifier)
-
-{make_cmd,pcomplete,test}.c,parse.y
-       - some minor changes to shut up gcc warnings
-
-lib/sh/tmpfile.c
-       - fixed sh_mktmpfp to avoid file descriptor leaks in the case that
-         sh_mktmpfd succeeds but fdopen fails for some reason
-       - change sh_mktmpfd to use the same scheme for computing `filenum'
-         as sh_mktmpname
-       - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined
-       - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to
-         `nameroot' if `nameroot == 0' (duh)
-       - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined
-       - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined
-
-support/{fixlinks,mkclone}
-       - use mktemp if it's available for the symlink test
-       - use $TMPDIR instead of hardcoding /tmp; default to /tmp
-       - use a better filename for the symlink test instead of `z'
-
-support/bashbug.sh
-       - more changes inspired by a patch from solar designer
-
-lib/malloc/Makefile.in
-       - new target `alloca', which builds libmalloc.a with alloca.o only
-         (for systems without alloca that are configured --without-bash-malloc)
-
-configure.in
-       - if we don't have a working alloca and are not configured to build
-         the bash malloc library, make a malloc library containing only
-         alloca.o
-
-aclocal.m4
-       - slight change to RL_LIB_READLINE_VERSION to deal with minor version
-         numbers with a letter appended (like 4.2a)
-
-                                  10/31
-                                  -----
-doc/{bash.1,bashref.texi}
-       - slight change to note that only interactive shells resend a SIGHUP
-         to all jobs before exiting
-
-externs.h
-       - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined.  This
-         keeps picky compilers from choking because intmax_t is not defined
-         (MacOS X 10.1)
-
-builtins/printf.def
-       - #define NEED_STRTOIMAX_DECL before including shell.h
-
-                                  11/1
-                                  ----
-general.c
-       - check in bash_tilde_expand() for an unquoted tilde-prefix; don't
-         bother passing the string to tilde_expand unless the prefix is
-         unquoted
-
-shell.c
-       - fix a problem with $LINENO when executing commands supplied with
-         the -c invocation option when ONESHOT is defined
-
-[bash-2.05a-rc1 frozen]
-
-builtins/printf.def
-       - fix the %n conversion to require that the variable name supplied
-         be a valid shell identifier
-
-variables.c
-       - improve random number generator slightly by using the upper 16
-         bits of the running random number instead of the lower 16, which
-         are incrementally more random
-
-                                  11/2
-                                  ----
-configure.in
-       - if RL_INCLUDEDIR ends up being /usr/include, don't put
-         -I$(RL_INCLUDEDIR) into CFLAGS
-
-                                  11/5
-                                  ----
-doc/{bash.1,bashref.texi}
-       - correct description of POSIXLY_CORRECT to note that the shell enters
-         posix mode *before* the startup files are read if POSIXLY_CORRECT
-         is in the initial environment
-
-variables.c
-       - fix function prologues for init_dirstack_var and init_groups_var
-         to agree with caller (no arguments)
-
-jobs.c
-       - fix forward function declarations for pipe_read and pipe_close
-
-subst.c
-       - removed `inline' attribute from skip_double_quoted because it can
-         potentially be called recursively
-
-bashline.c
-       - quick fix to bashline.c:attempt_shell_completion programmable
-         completion code to just punt if the end of the command word found
-         by find_cmd_end is <= the start found by find_cmd_start (the bug
-         is probably in find_cmd_start -- fix later)
-
-pcomplete.c
-       - fix gen_matches_from_itemlist to return if the stringlist is null
-         after any cleaning or initialization, before trying to use it
-       - fix GEN_COMPS to only bother to try to append the STRINGLIST
-         returned by gen_matches_from_itemlist to `glist' if it's non-NULL
-
-lib/sh/stringlist.c
-       - make copy_stringlist return NULL if the STRINGLIST * passed as an
-         argument is NULL
-       - make append_stringlist call copy_stringlist only if M2 is non-NULL;
-         otherwise just return NULL if m1 is NULL
-       - make word_list_to_stringlist return 0 immediately if the passed
-         LIST argument is NULL
-       - make realloc_stringlist call alloc_stringlist if the passed
-         STRINGLIST argument (`sl') is 0, just like realloc calls malloc
-
-subst.c
-       - in skip_to_delim(), if we have an unclosed ${, and it's at the end
-         of the string (string[i] == '{', string[i+1] == '{' and
-         string[i+2] == 0, return si (i + 2) immediately without bothering
-         to call extract_dollar_brace_string or extract_delimited_string
-       - in skip_to_delim(), if string[i] is 0 after a call to
-         extract_dollar_brace_string or extract_delimited_string (meaning we
-         have an unclosed ${ or other expansion, return i immediately without
-         doing a `continue' (which will increment i past the end of string)
-       - in split_at_delims, don't increment te by 1 if it's pointing to a
-         delimiter.  this has the effect of skipping the first delimiter
-         char in a possibly multi-character delimiter, and ignoring
-         single-char delimiters like `>'
-
-configure.in
-       - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to
-         AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test
-         fails
-
-general.c
-       - introduce two new variables: bash_tilde_{prefixes,suffixes}, set
-         to the additional prefixes and suffixes bash wants to pass to the
-         tilde expansion code (reserved for post-bash-2.05a fix)
-
-aclocal.m4
-       - add missing `test' in BASH_CHECK_SYS_SIGLIST
-
-                                  11/7
-                                  ----
-lib/readline/vi_mode.c
-       - fix rl_vi_goto_mark to explicitly check that the desired mark is
-         between 'a' and 'z', since some locales have lowercase letters
-         outside that range, which could cause a negative subscript
-
-include/chartypes.h
-       - remove superfluous `#undef ISASCII'
-
-lib/sh/strto[iu]max.c
-       - changes from Paul Eggert to work around buggy compilers and catch
-         configuration errors at compile time
-
-aclocal.m4
-       - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but
-         with a fix for Irix 5.3 (not called, since I'm not sure it's the
-         right thing to do -- the C standard allows double and long double
-         to be the same size)
-
-lib/sh/snprintf.c
-       - only try to write the trailing NUL in vsnprintf_internal if
-         data->length is >= 0, since if it's not, we probably don't have
-         a buffer
-
-Makefile.in
-       - changed RELSTATUS to `release'
-
-                                  11/8
-                                  ----
-lib/sh/strtol.c
-       - make sure chars passed to toupper are cast to unsigned
-
-unwind_prot.c
-       - change clear_unwind_protect_list to not require a cast from `int'
-         to `char *'
-
-lib/readline/chardefs.h
-       - make _rl_digit_p succeed only for ascii digits, since that's what
-         most callers assume
-
-                                  11/13
-                                  -----
-doc/bashref.texi
-       - added `ERR' trap and [-+]O invocation option to section listing
-         differences from the Bourne shell
-
-                                  11/15
-                                  -----
-[bash-2.05a released]
-
-                                  11/19
-                                  -----
-include/stdc.h
-       - new define, INLINE, defined as `inline' for gcc and empty otherwise
-
-subst.c
-       - make skip_double_quoted, sub_append_string have INLINE attribute
-
-trap.c
-       - use BASH_NSIG as upper limit for signal names in signal_name()
-
-lib/readline/bind.c
-       - use RL_COMMENT_BEGIN_DEFAULT in output for rl-comment-begin value
-
-error.c
-       - fix sys_error to save value of errno around calls to fprintf
-
-doc/Makefile.in
-       - added rules to create PDF files from postscript and dvi input
-
-MANIFEST.doc
-       - added {article,bash,bashref,rose94}.pdf
-
-doc/bash.1
-       - rearranged some `.PD 0' and `.TP' directives so man2html will
-         handle them better (shouldn't affect groff output)
-
-support/man2html.c
-       - small fix to handle quoted string arguments to directives like
-         `.BR' without mangling the output
-
-                                  11/20
-                                  -----
-{arrayfunc,variables}.c
-       - changed calling sequence for dynamic array variable `assign'
-         functions to (SHELL_VAR *self, char *value, arrayind_t ind)
-       - changed calling sequence for dynamic variable assign functions
-         to the same as array variable assign_func.  Now this can be
-         prototyped
-
-variables.h
-       - the assign_func member of a `struct variable' is now of type
-         `sh_var_assign_func_t', which is prototyped
-       - the dynamic_value member of a `struct variable' is now of type
-         `sh_var_value_func_t', which is prototyped
-
-variables.c
-       - changed to use `sh_var_assign_func_t' and `sh_var_value_func_t'
-
-builtins/cd.def
-       - when in posix mode, if the new directory name formed by PWD and
-         the argument passed by the user cannot be canonicalized, and the
-         -P option has not been supplied, return failure immediately
-       - if canonicalization failed, but the fallback to the directory
-         name specified by the user succeeds, reset the current working
-         directory
-
-lib/readline/{input.c,rlprivate.h}
-       - renamed rl_unget_char to _rl_unget_char; made library global
-
-lib/readline/{{bind,readline}.c,{keymaps,rlprivate}.h}
-       - support for `key subsequences'; allows a key sequence and a function
-         mapped to a subsequence of that key sequence.  Primarily to allow
-         arrow keys to be bound in readline vi insert mode, while preserving
-         the ESC function to switch to command mode.
-
-lib/readline/{input.c,rlprivate.h}
-       - new function, _rl_input_queued(T), does a check with select or
-         FIONREAD with a timeout of `T' (which is generally 0)
-
-lib/readline/readline.c
-       - change _rl_dispatch_subseq to test for input in the queue if we
-         get ESC while in vi insertion mode if the keymap entry type for
-         ESC is ISKMAP.  If _rl_input_queued returns non-zero, we assume
-         that an arrow key sequence has been pressed and go ahead with the
-         subsequence.  If it returns zero, we assume that the user pressed
-         ESC to switch into command mode, and dispatch to that right away.
-         This avoids forcing the user to press another key before switching
-         into command mode
-
-                                  11/21
-                                  -----
-lib/readline/readline.c
-       - bind common arrow key sequences in vi insertion keymap
-
-lib/readline/terminal.c
-       - bind termcap definition's arrow keys in vi insertion keymap
-
-lib/readline/bind.c
-       - check for rl_vi_movement_mode in _rl_bind_if_unbound, so
-         binding the arrow keys can work
-
-lib/readline/readline.c
-       - since _rl_bind_if_unbound does the check of what's currently
-         bound to the key sequence, the check in bind_arrow_keys_internal
-         was redundant
-       - bind_arrow_keys_internal now takes a Keymap argument and handles
-         saving and restoring _rl_keymap; changed bind_arrow_keys
-         accordingly
-
-builtins/fc.def
-       - fix from Paul Eggert to substitute the nearest history number in
-         range if an out-of-range value is supplied.  POSIX requires this
-
-lib/sh/pathcanon.c
-       - fix from Corrina Vinschen for the special `cygdrive' prefix on
-         Cygwin
-
-bashhist.c
-       - split the history adding code into more pieces:
-           check_history_control (char *line) checks LINE against the value
-           of HISTCONTROL, returning 1 if LINE should be saved and 0 if not
-
-           check_add_history (char *line) calls check_history_control and
-           history_should_ignore (line) and saves the line with
-           bash_add_history if the checks indicate that it should be saved
-
-           maybe_add_history just calls check_add_history to set the value
-           of first_line_saved
-
-bashhist.h
-       - extern declaration for check_add_history()
-
-shell.c
-       - don't call load_history() from the interactive shell startup
-         code if history_lines_this_session is > 0, indicating that we've
-         already saved some lines in the history and that we probably
-         don't want to overwrite them
-
-builtins/history.def
-       - call check_add_history from push_history, so `history -s xx'
-         works even when in a compound command whose first line has not
-         been saved.  (Caveat:  in a compound command when the first
-         line has been saved, the line supplied to history -s will become
-         part of the compound command's history entry.  Of course, the
-         delete_history call could remove the compound command from the
-         history entirely)
-
-bashline.c
-       - use sh_makepath instead of xmalloc/sprintf in
-         command_word_completion_function
-
-lib/readline/complete.c
-       - get_y_or_n now takes an int FOR_PAGER argument; caller changed
-         If FOR_PAGER is non-zero, get_y_or_n returns appropriate values
-         for a more-like pager:  `newline' or `return' return 2; `q' or
-         `Q' return 0
-       - there is now a mini internal more-like pager for displaying a
-         list of completions that exceeds the screen height (new function
-         _rl_internal_pager, called from rl_display_match_list)
-
-                                  11/24
-                                  -----
-command.h
-       - new flag, W_TILDEEXP, says to do tilde expansion on an
-         assignment word
-
-execute_cmd.c
-       - fix_assignment_words now sets W_TILDEEXP for assignment word
-         arguments to `assignment builtins'
-
-general.c
-       - bash_tilde_expand now takes a second argument indicating whether
-         or not it's being invoked in an `assignment context'
-
-general.h
-       - change extern declaration for bash_tilde_expand
-
-{bashline,execute_cmd,findcmd,general,variables}.c
-builtins/evalfile.c
-lib/sh/makepath.c
-       - fix callers of bash_tilde_expand appropriately
-
-subst.c
-       - fix callers of bash_tilde_expansion appropriately
-       - add (currently commented-out) code that would tilde expand assignment
-         statement arguments to assignment builtins (W_TILDEEXP flag set)
-         even when the shell is in posix mode
-
-bashline.c
-       - fix attempt_shell_completion to turn off
-         rl_filename_completion_desired when doing command name completion,
-         so no slash gets appended to the name if there happens to be a
-         directory with the same name in the current directory
-
-                                  11/26
-                                  -----
-lib/readline/rltech.texinfo
-       - a couple of additions to the rl_stuff_char description
-
-parse.y
-       - turn off echo_input_at_read in parse_string_to_word_list, so `set -v'
-         doesn't give extra lines of output when doing compound array
-         assignment
-
-subst.c
-       - fix split_at_delims to handle skipping over a `\n' if it's a
-         delimiter (use spctabnl(c) instead of whitespace(c))
-
-                                  11/27
-                                  -----
-support/config.{guess,sub}
-       - updated (with bash changes) to latest version from gnu.org
-
-sig.h
-       - add prototype for set_signal_handler declaration
-
-builtins/setattr.def
-       - add prototype to extern declaration of declare_builtin
-
-builtins/times.def
-       - add no_options call, since times takes no options
-
-lib/sh/spell.c
-       - add prototypes to forward declarations for midist and spdist
-
-lib/sh/strtrans.c
-       - add explicit int return type to ansic_shouldquote declaration
-
-lib/readline/rldefs.h, lib/readline/{macro,readline,util,undo}.c
-       - move define for SWAP to rldefs.h, removed from various C files
-
-lib/readline/vi_mode.c
-       - removed define for exchange(), changed to use SWAP instead
-
-lib/readline/bind.c
-       - added some static forward function declarations
-       - find_boolean_var, find_string_var now take a `const char *' argument
-
-lib/readline/signals.c
-       - added static forward declaration for rl_maybe_set_sighandler
-
-lib/readline/readline.c
-       - add some common key bindings for the HOME and END keys in
-         bind_arrow_keys_internal
-
-lib/readline/terminal.c
-       - fetch the `@7' termcap string; it's sent by the END key
-       - attempt to bind the terminal's END key to rl_end_of_line in
-         bind_termcap_arrow_keys; I don't know why I was using `kH'
-         instead of `@7'
-
-doc/builtins.1
-       - remove `case', `for', `if', `until', `while' from NAME section;
-         those are not shell builtins
-
-                                  11/28
-                                  -----
-stringlib.c
-       - new function, find_token_in_alist, takes a token value and an
-         ALIST argument, and returns the string correspoinding to the
-         token if found in the alist
-
-externs.h
-       - new extern declaration for find_token_in_alist()
-
-subst.c
-       - string_list_internal is no longer static
-
-subst.h
-       - new extern declaration for string_list_internal()
-
-parse.y
-       - new alist array of other tokens returned by read_token which are
-         not reserved words in word_token_alist[]
-       - reworked error reporting:  new functions print_offending_line,
-         which prints the line containing the syntax error,
-         error_token_from_token, which takes the current token and tries to
-         figure out its textual representation, and error_token_from_text,
-         which does the old job of finding the bad token by analyzing the
-         text of shell_input_line at the current index
-       - report_syntax_error now tries to figure out the token that caused
-         the syntax error by first looking at current_token and falling
-         back to the old method of textual analysis if that fails
-       - report_syntax_error doesn't say the token resulting from the textual
-         analysis of the input line is an `unexpected token'; it just
-         says there is a `syntax error near xxx'
-       - changed conditional command error reporting to use the value
-         returned by error_token_from_token if it's not null instead of
-         just using the token value in the message, since current_token
-         ends up being set to -1, and the text of the message from
-         report_syntax_error might not be exactly right
-       - change parse_string_to_word_list to set current_token to the
-         offending token returned by read_token before calling yyerror()
-         to make the error reporting do the right thing
-
-aclocal.m4
-       - fixed typo in BASH_CHECK_LIB_TERMCAP
-
-configure.in
-       - add check for isinf(3); define HAVE_ISINF_IN_LIBC if found
-
-config.h.in
-       - add define for HAVE_ISINF_IN_LIBC
-
-lib/sh/snprintf.c
-       - check for Inf and NaN, using isinf and isnan if they're found in
-         libc
-       - use the current locale for thousands separator and decimal point
-       - recognize "'" flag; not implemented yet
-       - fix for snprintf/vsnprintf with length of 0 and string argument of
-         0 with non-zero length
-
-builtins/read.def
-       - TMOUT is now the default timeout for `read' (and select) if set,
-         like ksh93 when reading from the terminal
-       - edit_line (called by read -e) now just does readline's filename
-         completion by setting rl_attempted_completion_function to NULL,
-         since e.g., doing command completion for the first word on the
-         line wasn't really useful
-
-execute_cmd.c
-       - changed select_command to return failure status if select_query
-         returns NULL, indicating that read_builtin returned
-         EXECUTION_FAILURE
-
-doc/{bash.1,bashref.texi}
-       - documented new TMOUT behavior 
-       - slight change to the description of the test `-ef' option
-
-doc/bashref.texi
-       - added item to posix mode section describing failure behavior of
-         cd when invoked in logical mode and the pathname formed by
-         combining $PWD and the directory argument does not refer to an
-         existing directory
-
-                                  11/29
-                                  -----
-execute_cmd.c
-       - fix execute_function to call dispose_function_env after
-         merge_function_env if the shell is in posix mode (fixes debian
-         bash bug #117673)
-
-lib/readline/readline.c
-       - rl_forward -> rl_forward_char; rl_forward function for compatibility
-       - rl_backward -> rl_backward_char; rl_forward function for
-         compatibility
-       - new functions, rl_forward_byte, rl_backward_byte, for future use
-
-lib/readline/readline.h
-       - extern declarations for rl_forward_char, rl_backward_char,
-         rl_forward_byte, rl_backward_byte
-
-lib/readline/{emacs_keymap,funmap,vi_keymap,vi_mode
-       - rl_forward -> rl_forward_char
-       - rl_backward -> rl_backward_char
-
-lib/readline/funmap.c
-       - new bindable names, `backward-byte' and `forward-byte'
-
-aclocal.m4
-       - new function, BASH_CHECK_MULTIBYTE, encapsulates checks for
-         multibyte code
-
-config.h.in
-       - add necessary defines for multibyte include files and functions
-
-configure.in
-       - add call to BASH_CHECK_MULTIBYTE
-
-config-bot.h
-       - add code to define HANDLE_MULTIBYTE if prerequisites are met
-
-lib/sh/xstrchr.c
-       - new file, xstrchr() is strchr(3) that handles multibyte characters
-
-bashhist.c
-       - first_line_saved -> current_command_first_line_saved; variable is
-         now global
-
-bashhist.h
-       - extern declaration for current_command_first_line_saved
-
-                                  11/30
-                                  -----
-bashhist.c
-       - break the code that actually calls add_history out of
-         bash_add_history into a new function, really_add_history;
-         bash_add_history now calls really_add_history
-       - check_add_history takes a second `force' argument telling it
-         whether to call bash_add_history (force == 0) or really_add_history
-         (force != 0)
-
-builtins/history.def
-       - in push_history, call delete_last_history if the current command
-         has more than one line, the first line was saved, and
-         command-oriented history is active.  This takes care of deleting
-         the right history element if `history -s' is used within a
-         compound or multiline command
-       - in push_history, call check_add_history with second argument of 1
-         to skip check of current_command_line_count and add the arguments
-         to history -s as a single separate history entry
-
-                                  12/3
-                                  ----
-lib/readline/complete.c
-       - append a slash to completed names which are symlinks to directories
-         if the new variable _rl_complete_mark_symlink_dirs is non-zero
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_complete_mark_symlink_dirs
-
-lib/readline/bind.c
-       - new bindable variable, `mark-symlinked-directories', mirrors the
-         value of _rl_complete_mark_symlink_dirs
-
-doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
-       - documented new `mark-symlinked-directories' variable
-
-                                  12/4
-                                  ----
-variables.[ch]
-       - set_pipestatus_array now takes a second argument with the number
-         of processes in the array
-       - changed set_pipestatus_array to just modify the value in place if
-         the existing array has one element and the new array has one
-         element, and to modify existing values in place if new array has
-         more elements than existing array
-
-variables.c, jobs.c
-       - changed set_pipestatus_array callers
-
-jobs.c
-       - moved call to setjstatus() from set_job_status_and_cleanup to
-         wait_for, since set_job_status_and_cleanup is part of the SIGCHLD
-         signal handler call path, and race conditions accessing the
-         PIPESTATUS array will result for things like
-
-               while true; do date; done | cat > /dev/null
-
-                                  12/5
-                                  ----
-xmalloc.h
-       - don't redefine xmalloc, xrealloc, and xfree if DISABLE_MALLOC_WRAPPERS
-         is #defined
-
-config.h.in
-       - #undef for DISABLE_MALLOC_WRAPPERS
-
-configure.in
-       - define DISABLE_MALLOC_WRAPPERS if the --with-purify option is
-         supplied
-
-lib/malloc/trace.c
-       - new function, malloc_trace_bin(N), traces allocations and frees
-         to bucket N (uses the same type of bitmap as `busy')
-
-lib/malloc/table.c
-       - fix wraparound search problem in find_entry when searching for a
-         free entry when the table is full
-
-                                  12/6
-                                  ----
-lib/malloc/table.c
-       - keep an `overflow bucket' around to use when the table is full,
-         so find_entry always returns a valid pointer when FIND_ALLOC
-         is set
-       - new static variable to keep a count of the number of MT_ALLOC
-         entries in the mem_table
-
-lib/sh/{oslib,clktck}.c
-       - if HAVE_LIMITS_H is defined, include <limits.h>
-
-lib/sh/oslib.c
-       - new function, getmaxgroups() returns max number of simultaneous
-         groups
-       - new function, getmaxchild(), returns max number of simultaneous
-         user processes
-
-general.c
-       - removed forest of #defines for getmaxgroups()
-
-externs.h
-       - new extern declaration for getmaxgroups()
-       - new extern declaration for getmaxchild()
-       - new extern declaration for isnetconn()
-
-lib/sh/netconn.c,shell.c
-       - new file, isnetconn() from shell.c moved here
-
-Makefile.in, lib/sh/Makefile.in
-       - necessary changes for netconn.c
-
-builtins/ulimit.def
-       - changed getmaxuprc() to just call getmaxchild() and massage the
-         return value appropriately
-
-{jobs,nojobs}.c
-       - use the value returned by getmaxchild() in
-         mark_dead_jobs_as_notified instead of static CHILD_MAX
-
-jobs.c
-       - new function, compact_jobs_list, removes some number of jobs from
-         the jobs table and reallocates the table, copying the jobs that
-         are left from the old table to the new.  Compaction happens from
-         the beginning of the list and removes dead jobs, and we make sure
-         to keep the last CHILD_MAX jobs as POSIX.2 requires
-       - call compact_jobs_list from stop_pipeline if we're in a subshell,
-         there are no free jobs in the jobs table, and the jobs table is
-         at or above some maximum limit
-
-execute_cmd.c
-       - change eval_arith_for_expr to set this_command_name to `((' before
-         calling evalexp, since it might be changed by evaluating the
-         loop body between evalexp calls
-
-trap.c
-       - change reset_signal to turn off the SIG_TRAPPED flag for the
-         given signal, so shell builtins and functions running in command
-         substitutions don't run the signal handlers (traps are not supposed
-         to be inherited by command substitutions)
-
-parse.y
-       - changed parse_string_to_word_list to turn off alias expansion
-         while parsing the array assignment
-
-                                  12/9
-                                  ----
-alias.c
-       - fix add_alias so that redefining an alias's value also resets the
-         EXPANDNEXT flag
-
-                                  12/10
-                                  -----
-parse.y
-       - new function, token_is_assignment, called to check whether the text
-         before `=' makes up a valid assignment token before trying to parse
-         a compound assignment statement
-       - new function, parse_compound_assignment, to parse a compound
-         assignment statement instead of using parse_matched_pair; handles
-         comments and error reporting in the parser instead of waiting until
-         expansion time
-       - changed parse_compound_assignment and parse_string_to_word_list to
-         allow reserved words in compound array assignments
-
-lib/readline/doc/rltech.texinfo
-       - changed the documentation for rl_callback_read_char and
-         rl_callback_handler_remove to say what happens to the terminal
-         settings and what needs to be done to reset them
-
-                                  12/11
-                                  -----
-bashline.c
-       - add emacs_edit_and_execute_command, bound to C-xC-e, like vi-mode
-         `v' command
-       - add bindable command name `edit-and-execute-command', bound to
-         run emacs_edit_and_execute_command()
-
-lib/glob/strmatch.c
-       - add support for ksh93-like [:word:] character class (isalnum + `_')
-
-doc/{bash.1,bashref.texi}
-       - add note to section describing lists to clarify that a sequence of
-         one or more newlines may be used to delimit a command, equivalent
-         to a semicolon
-       - document new [:word:] pattern matching character class
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
-       - document `edit-and-execute-command' and its default emacs-mode
-         binding
-
-include/chartypes.h
-       - add defines for TOCTRL and UNCTRL if they're not already defined
-
-lib/readline/chardefs.h
-       - #undef UNCTRL if it's defined to avoid cpp redefinition warnings
-
-lib/sh/strtrans.c
-       - add \cX (Control-X) escape for $'...' to ansicstr()
-       - change ansic_quote() to allocate at least four chars for each char
-         in the string argument, to account for \0xx octal values
-       - change ansic_quote() to no longer call sprintf for non-printable
-         characters; just translate the string to octal directly
-
-print_cmd.c
-       - change xtrace_print_word_list to call ansic_quote() if
-         ansic_shouldquote() indicates that there are nonprinting characters
-         in a word
-
-builtins/type.def
-       - changed deprecated long option parsing to just replace the word
-         in the list with the equivalent short option (-type -> -t) instead
-         of removing words from the list
-       - changed describe_command to take a single flags argument instead
-         of two int args; changed caller
-       - type now has two new options:  -f suppresses function lookup (like
-         command), and -P forces a PATH search for the name(s)
-
-builtins/common.h
-       - flags for describe_command are here
-       - changed extern declaration of describe_command
-
-builtins/command.def
-       - changed call to describe_command to use flags from common.h, and
-         the right number of arguments
-
-doc/{bash.1,bashref.texi}
-       - documented new -f and -P options to `type'
-
-                                  12/12
-                                  -----
-lib/readline/rldefs.h
-       - fixed prototype for _rl_strnicmp
-
-execute_cmd.c
-       - select_query now takes a new argument, an int flag saying whether
-         or not to print the menu the first time through the loop.  An
-         empty line in response to the prompt will always cause the menu
-         to be reprinted
-       - changed execute_select_command to cause select_query to reprint
-         the menu only if REPLY is set to NULL, if KSH_COMPATIBLE_SELECT
-         is defined
-
-config-top.h
-       - define KSH_COMPATIBLE_SELECT, with a comment about its meaning
-
-lib/readline/readline.c
-       - change rl_insert_comment to toggle if given an explicit numeric
-         argument:  if the first characters on the line don't specify a
-         comment, insert one; if they do, delete the comment text
-
-doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
-       - documented new behavior of insert-comment with a numeric argument
-
-                                  12/13
-                                  -----
-lib/malloc/watch.c
-       - new file, implements watchpoint functions
-
-lib/malloc/watch.h
-       - new file, define some `events' for watchpoints and extern function
-         and variable declarations for watchpoint code
-
-lib/malloc/imalloc.h
-       - #define MALLOC_WATCH if MALLOC_DEBUG is defined
-       - add __P define as in include/stdc.h if not already defined
-
-lib/malloc/malloc.c
-       - remove __P define, now in imalloc.h
-       - include watch.h if MALLOC_WATCH is defined
-       - added calls to _malloc_ckwatch in internal_malloc, internal_free,
-         and internal_realloc
-
-include/stdc.h
-       - augment __P define to allow prototypes if PROTOTYPES is defined
-
-lib/readline/rlstdc.h
-       - augment PARAMS define to allow prototypes if PROTOTYPES is defined
-
-lib/malloc/Makefile.in, Makefile.in
-       necessary changes to include watch.c in libmalloc
-
-lib/readline/readline.c
-       - fix rl_delete_text to make sure that the starting position is >= 0
-       - _rl_init_line_state (called by readline via readline_initialize)
-         now sets rl_mark to 0
-       - rl_get_{next,previous}_history set rl_mark to 0 if rl_point is at
-         the end of the line and rl_end otherwise in emacs mode
-
-lib/readline/kill.c
-       - rl_yank_nth_arg_internal and rl_paste_clipboard now set the mark
-         at point before calling rl_insert_text, like rl_yank
-       - rl_kill_full_line now resets rl_mark to 0
-       - rl_kill_line and rl_backward_kill_line now set rl_mark to the
-         point after the kill in emacs mode
-       - rl_kill_word and rl_backward_kill_word now set rl_mark to the
-         point after the kill in emacs mode
-       - rl_unix_word_rubout and rl_unix_line_discard now set rl_mark to
-         the point after the kill in emacs mode
-
-lib/readline/search.c
-       - noninc_search saves and restores the mark, since it can be changed
-         while reading the search string
-       - noninc_dosearch sets the mark at the end of the line, making the
-         region bound the `inserted' text since rl_point is set to 0
-       - rl_history_search_internal sets the mark at the end of the line,
-         for the same reason
-
-lib/readline/isearch.c
-       - rl_search_history now saves and restores the mark
-       - if no matching lines are found at all when doing an isearch, leave
-         point where it was instead of moving it to the end of the line
-
-                                  12/17
-                                  -----
-lib/readline/rlmbutil.h
-       - new file, place for multi-byte character defines and extern
-         declarations
-
-lib/readline/{bind.c,readline.c,rlprivate.h}
-       - new bindable variable, `byte-oriented', tracks value of
-         rl_byte_oriented variable
-
-lib/readline/mbutil.c
-       - new file, with multibyte char utility functions
-
-lib/readline/{complete,display,readline,util,vi_mode}.c
-       - new code for multibyte characters, derived from IBM patch
-
-                                  12/18
-                                  -----
-lib/sh/tmpfile.c
-       - include posixtime.h for time() extern declaration
-
-support/bashversion.c
-       - include <unistd.h> if it's available
-
-lib/readline/{histexpand,input,isearch,search}.c
-       - new code for multibyte characters, derived from IBM patch
-
-lib/readline/readline.h
-       - include rltypedefs.h
-
-                                  12/19
-                                  -----
-lib/readline/complete.c
-       - slight change to mark-directories code to avoid adding a slash if
-         point is at the end of the line (rl_line_buffer[rl_point] == '\0')
-         and the previous character was a slash
-       - change printable_part to not return empty pathnames, which could
-         happen when completing filenames and a filename with a trailing
-         slash was passed as the argument.  If the portion following the
-         trailing slash is NULL, ignore it and look for a previous slash.
-         If there's no previous slash, just return the filename argument
-       - new variable, rl_completion_mark_symlink_dirs, mirrors the value
-         of (user-settable with a variable) _rl_complete_mark_symlink_dirs
-         but may be modified by application-specific completion functions
-         when appropriate (set in rl_complete_internal and rl_menu_complete)
-
-lib/readline/readline.h
-       - extern declaration for rl_completion_mark_symlink_dirs
-
-pcomplete.c
-       - if one of the actions is CA_DIRECTORY, set
-         rl_completion_mark_symlink_dirs to indicate that we want the
-         trailing slash (might have to relax this)
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_mark_symlink_dirs variable
-
-lib/readline/doc/rluser.texinfo, doc/bash.1
-       - documented the fact that `complete -d' and `complete -o dirnames'
-         force readline to append a slash to symlinks to directories
-
-builtins/enable.def
-       - changed enable_shell_builtin to disallow enabling disabled
-         builtins in a restricted shell
-
-doc/{bash.1,bashref.texi}
-       - documented new enable behavior in restricted shells
-
-doc/Makefile.in
-       - new rule to make an `RBASH' file documenting the restrictions
-         imposed by a restricted shell
-
-expr.c
-       - broke the code that evaluates variables and returns results out
-         of readtok() into a new function: expr_streval()
-       - expr_streval() now performs the standard unset variable error
-         behavior if `set -u' has been executed and it's asked to look
-         up an unset variable
-       - broke the code that frees up the expression context stack into
-         a new function: expr_unwind()
-
-variables.c
-       - fixed bind_int_variable so it handles array element assignment,
-         so expressions like `b[7]++' and `b[0] = 42' work right
-       - new function, get_variable_value, returns the string value of
-         the SHELL_VAR * passed as an argument
-       - get_string_value now calls get_variable_value with a non-null
-         result from find_variable
-
-                                  12/20
-                                  -----
-lib/readline/rlmbutil.h, mbutil.c
-       - combined _rl_find_next_mbchar and _rl_find_next_nonzero_mbchar into
-         a single function
-       - combined _rl_find_prev_mbchar and _rl_find_prev_nonzero_mbchar into
-         a single function
-
-lib/readline/{display,readline,vi_mode}.c
-       - changed callers of _rl_find_next_mbchar and
-         _rl_find_next_nonzero_mbchar
-
-lib/readline/{complete,display,histexpand,readline,vi_mode}.c
-       - changed callers of _rl_find_prev_mbchar and
-         _rl_find_prev_nonzero_mbchar
-
-                                  12/20
-                                  -----
-lib/sh/mktime.c
-       - new file, from glibc/gawk, compiled in if system doesn't have a
-         working mktime(3)
-
-lib/sh/strftime.c
-       - new file, from gawk, compiled in if system doesn't have a
-         working strftime(3)
-
-lib/sh/Makefile.in, Makefile.in
-       - changes for mktime.c, strftime.c
-
-configure.in
-       - call AC_FUNC_MKTIME, AC_STRUCT_TM, AC_STRUCT_TIMEZONE
-       - call AC_REPLACE_FUNC(strftime)
-
-config.h.in
-       - add defines for TM_IN_SYS_TIME, HAVE_TZSET, HAVE_TM_ZONE,
-         HAVE_STRUCT_TM_TM_ZONE, HAVE_STRFTIME
-
-externs.h
-       - provide an extern declaration for strftime if HAVE_STRFTIME is
-         not defined and NEED_STRFTIME_DECL is
-
-lib/tilde/tilde.h
-       - header files should not include <config.h>
-
-parse.y
-       - replace code in decode_prompt_string that chops up value returned
-         by ctime(3) with calls to strftime -- as a result, the expansion
-         of \@ has changed slightly (since it depends on the locale)
-       - added new \D{format} prompt string escape; `format' is passed to
-         strftime(3).  Empty format is the same as `%X' (locale-specific
-         representation of the current time)
-       - combined cases for '\\', '\a', '\e', and '\r' in same case branch
-         in decode_prompt_string
-
-doc/{bash.1,bashref.texi}
-       - documented new \D{format} prompt string expansion
-
-builtins/printf.def
-       - use ISO C PRIdMAX instead of INTMAX_CONV
-       - pass length of format modifiers to mklong instead of computing it
-         with strlen()
-
-lib/sh/{fmtulong,fmtullong}.c
-       - changes from Paul Eggert to make more general
-
-arrayfunc.c
-       - when converting a variable to an array, make sure to unset the
-         dynamic_value and assign_func members of the struct variable,
-         since they're not valid anymore
-
-                                  12/27
-                                  -----
-configure.in
-       - use AC_HELP_STRING in AC_ARG_WITH and AC_ARG_ENABLE 
-       - remove AC_ARG_ENABLE for largefile, since AC_SYS_LARGEFILE adds
-         one
-
-                                1/2/2002
-                                --------
-{alias,bashline,execute_cmd,general,shell,subst,variables,arrayfunc}.c,general.h
-       - changed some calls to strchr to calls to xstrchr for multibyte
-         characters
-
-include/shmbutil.h
-       - add extern declaration for xstrchr to avoid including externs.h
-         where it's not appropriate
-
-{braces,make_cmd,pathexp,subst,arrayfunc}.c, lib/sh/xstrchr.c
-       - include shmbutil.h
-
-{stringlib,subst}.c, {externs,subst}.h
-       - moved substring() from subst.c to stringlib.c, moved declaration
-         from subst.h to externs.h
-
-lib/sh/xmbsrtowcs.c
-       - new file, replacement function for mbsrtowcs
-
-lib/sh/Makefile.in
-       - add entries for xmbsrtowcs.c
-
-Makefile.in
-       - add dependencies on shmbutil.h to appropriate object files
-
-lib/glob/strmatch.c
-       - break character-class testing out into separate function:
-         is_cclass, in prep for multibyte changes
-
-{braces,make_cmd}.c
-       - changes for multibyte characters
-
-builtins/printf.def
-       - changes from Paul Eggert to just use intmax_t everywhere an
-         int/long/quad is needed and print with "%ld" if the number
-         fits in a long and %PRIdMAX otherwise
-       - remove getlong, getulong, getllong, getullong, since they're
-         no longer needed
-       - use a new type `floatmax_t' to print floating point numbers, the
-         widest-available floating point type (like `intmax_t'); new
-         function `getfloatmax' that calls strtold or strtod as appropriate
-       - remove getdouble, getldouble, since they're no longer needed
-
-lib/sh/fmtumax.c
-       - new file, string-to-[u]intmax_t conversion, just includes
-         fmtulong.c with the right defines
-
-Makefile.in, lib/sh/Makefile.in
-       - additions for fmtumax.c
-
-bashtypes.h
-       - include <inttypes.h> if it's available
-
-expr.c
-       - arithmetic is now in intmax_t instead of long
-
-externs.h
-       - extern declaration for fmtumax
-       - change extern declarations for evalexp, itos, inttostr,
-         uitos, uinttostr since they now return or use intmax_t instead
-         of long
-
-{execute_cmd,general,mailcheck,subst,variables}.c, parse.y
-{array,general,subst,test,variables}.h
-lib/sh/{itos,netopen}.c
-builtins/{bashgetopt,common}.c, builtins/common.h
-builtins/{break,fc,history,jobs,let,printf,pushd,read,shift,wait}.def
-       - changes for intmax_t shell arithmetic conversion
-
-doc/{bashref.texi,bash.1}
-       - documented long->intmax_t shell arithmetic conversion
-
-sig.c
-       - in initialize_terminating_signals, if we've already trapped a
-         terminating signal, don't reset the signal handler for it
-
-                                   1/3
-                                   ---
-{arrayfunc,pathexp}.c, parse.y
-       - changes for multibyte chars
-
-parse.y, lib/sh/strtrans.c
-       - moved ansiexpand from parse.y to lib/sh/strtrans.c
-
-parse.y, locale.c
-       - moved mk_msgstr and localeexpand from parse.y to locale.c
-
-parse.y
-       - new function, yy_input_name, returns name of input file from
-         bash_input.name
-       - broke the code that parses ((...)) constructs out of read_token
-         into a new function, parse_dparen()
-
-externs.h
-       - new extern declaration for ansiexpand(), mk_msgstr(), and
-         localeexpand()
-
-input.h
-       - new extern declaration for yy_input_name()
-
-{error,locale}.c
-       - use yy_input_name for error and other messages
-
-execute_cmd.c
-       - change shell_execve to make sure that the file is executable
-         before looking at the interpreter to find out why the execve()
-         failed (avoids misleading error message)
-
-lib/glob/glob.c
-       - move code that matches leading `.' and skips those filenames into
-         a separate function: skipname(), so there can be unibyte and
-         multibyte versions of that function
-
-                                   1/7
-                                   ---
-subst.c
-       - more changes for multibyte characters
-
-print_cmd.c
-       - change semicolon() so it doesn't output a `;' immediately after a
-         newline, since that results in a null command, which is a syntax
-         error
-
-variables.c
-       - fix indirection_level_string to turn off set -x while evaluating
-         PS4
-
-                                   1/8
-                                   ---
-builtins/set.def
-       - make -o options into one struct, instead of separate structs for
-         option names corresponding to flags and non-flag option names.
-         This has the side effect of sorting the option names in output
-
-lib/glob/glob.c
-       - new function, mbskipname(), multibyte char version of skipname()
-       - removed all #ifndef SHELL code, this will never be used outside
-         the shell
-
-include/posixdir.h
-       - move REAL_DIR_ENTRY define here from lib/glob/glob.c
-
-lib/glob/glob_loop.c
-       - new file, included in glob.c for unibyte and multibyte versions of
-         glob_pattern_p
-       - added some forward static function declarations with prototypes
-       - more changes for multibyte character handling
-
-lib/glob/Makefile.in
-       - make glob.c depend on glob_loop.c
-       - changes for xmbsrtowcs.[co]
-
-lib/glob/xmbsrtowcs.c
-       - moved here from lib/sh, since the matching functions use it, and
-         libglob.a is linked after libsh.a
-
-                                   1/9
-                                   ---
-lib/glob/smatch.c
-       - new file, with strmatch (now xstrmatch) and associated functions,
-         with changes for multibyte chars
-
-lib/glob/sm_loop.c
-       - new file, included by smatch.c, with `generic' versions of matching
-         functions that are compiled twice:  once each for single-byte and
-         multibyte characters
-
-lib/glob/strmatch.c
-       - strip out everything except strmatch(), which either calls fnmatch
-         (if HAVE_LIBC_FNM_EXTMATCH is defined) or xstrmatch
-
-lib/glob/collsyms.c
-       - changes for multibyte chars
-
-lib/glob/Makefile.in, Makefile.in
-       - changes for new source files
-
-                                  1/10
-                                  ----
-lib/readline/complete.c
-       - new function, rl_completion_mode (rl_command_func_t *func), returns
-         the appropriate value to pass to rl_complete_internal depending on
-         FUNC and the value of `show-all-if-ambiguous'.  This allows
-         application completion functions to present the same interface as
-         rl_complete
-
-lib/readline/readline.h
-       - new extern declaration for rl_completion_mode()
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_mode
-
-lib/readline/readline.[ch]
-       - bumped the version number to 4.3, changing the relevant cpp defines
-
-configure.in
-       - require that an installed readline version be at least readline-4.3
-
-bashline.c
-       - converted bash-specific completion functions to use
-         rl_completion_mode instead of passing TAB unconditionally
-
-builtins/bashgetopt.c
-       - the `#' option specifier now means a required numeric argument,
-         not an optional one
-
-builtins/type.def
-       - when converting [-]-{path,type,all} to -[pta], don't bother
-         freeing and reallocating the option string; just change opt[1]
-         and null opt[2]
-
-lib/sh/snprintf.c
-       - support %ls/%S and %lc/%C for wide strings and characters,
-         respectively, if HANDLE_MULTIBYTE is defined
-
-mailcheck.c
-       - don't print a message about new mail if the file has not grown,
-         even if the access time is less than the modification time
-
-                                  1/14
-                                  ----
-lib/readline/readline.c
-       - new function, rl_replace_line, to replace the readline line buffer
-         with the text supplied as an argument
-       - new function, rl_replace_from_history, replaces readline line
-         buffer with text from history entry passed as argument (undocumented,
-         not in readline.h because it requires a definition of
-         HIST_ENTRY for the prototype)
-
-lib/readline/readlne.h
-       - new extern declaration for rl_replace_line
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_replace_line
-
-lib/readline/{isearch,readline,search}.c
-       - use rl_replace_line and rl_replace_from_history where appropriate
-
-lib/readline/readline.c
-       - broke the code that sets point after moving through the history
-         (_rl_history_preserve_point and _rl_history_saved_point) out
-         into a separate function, _rl_history_set_point()
-
-lib/readline/{complete.c,rlprivate.h}
-       - find_completion_word -> _rl_find_completion_word
-       - free_match_list -> _rl_free_match_list
-
-lib/readline/complete.c
-       - postprocess_matches and _rl_free_match_list now return immediately
-         if passed a null match list
-
-variables.c
-       - new function, find_local_variable, finds a local variable by name
-         at the current variable context
-       - in find_variable_internal, call find_local_variable before searching
-         any of the temporary environments if variable_context > 0 (meaning
-         we're in a shell function).  This lets a local variable
-         override a variable whose value was passed in the `function
-         environment'
-
-                                  1/15
-                                  ----
-variables.h, execute_cmd.c
-       - declare variables describing the temporary environments in
-         variables.h instead of in C files
-
-findcmd.c, builtins/setattr.def
-       - instead of calling find_tempenv_variable, use find_variable_internal
-         and check whether the returned SHELL_VAR * has the tempvar
-         attribute
-
-variables.c
-       - tentative change to lookup order in find_variable_internal so that
-         function local variables are found before variables in
-         function_env when executing a shell function
-       - change make_local_variable to handle making a local variable when
-         a variable with the same name already appears in one of the
-         temporary environments
-       - broke the body of make_var_array out into a new function:
-               static char **make_env_array_from_var_list (SHELL_VAR **vars)
-       - new function, make_var_array_internal, takes a hash table to look
-         in and a pointer to a mapping function and returns a char **
-         environment-style list
-       - make_var_array now just calls make_var_array_internal
-       - new mapping function, local_and_exported, returns all local variables
-         in the current variable context with the export attribute set
-       - new function, make_local_export_array, returns an environment-style
-         char ** array of exported local variables in current context
-       - change environment creation order in maybe_make_export_env to
-         add variables to the environment in opposite order that
-         find_variable_internal uses.  This means that local variables in
-         shell functions override variables with the same name in the
-         function_env
-       - change make_local_variable to set the initial value of the
-         variable it creates to NULL to make the `is set' and `is null'
-         tests that the expansion code does work right
-       - change make_local_variable to inherit the value of a variable with
-         the same name from the temporary enviroment
-
-                                  1/16
-                                  ----
-Makefile.in
-       - link bashversion with buildversion.o instead of version.o, for
-         cross-compiling.  version.o is for the target system;
-         buildversion.o is for the build system
-
-error.c
-       - add line numbers to internal_error() messages if the shell is
-         not interactive and running a shell script or a -c command
-       - report_error now prints non-zero line numbers for non-interactive
-         shells
-
-test.c
-       - test_syntax_error now calls builtin_error() instead of printing
-         its own messages
-
-builtins/common.c
-       - builtin_error now prints line numbers if a non-interactive shell
-         is running a shell script or a -c command
-
-print_cmd.c
-       - in cprintf, remove free_argp, since it's not used
-
-builtins/history.def
-       - make `history -n' increment the number of history lines in this
-         session by the number of lines read from the history file
-
-arrayfunc.c
-       - fix array_value_internal to expand the subscript even if the
-         variable is unset, so side effects produced by the arithmetic
-         evaluation will take place
-
-lib/readline/doc/{rluser,rltech}.texinfo
-       - some fixes for printing in @smallbook format from Brian
-         Youmans
-
-                                  1/17
-                                  ----
-jobs.h
-       - new PRUNNING, PSTOPPED, PDEADPROC defines for PROCESSes, analogous
-         to RUNNING, STOPPED, and DEADJOB defines for jobs
-
-jobs.c
-       - use PS_RUNNING, PS_DONE, PS_STOPPED values for `running' field
-         of a PROCESS
-       - find_pipeline and find_job now take an additional flags argument
-         that, if non-zero, means to find only running processes; changed
-         all callers
-       - changed calls to find_pipeline and find_job made from waitchld
-         to find only running processes
-       - find_pipeline takes a third argument: an int *.  If it looks in
-         the jobs list to find the pid, and the arg is non-null, it passes
-         the job index back to the caller.  Used to avoid calls to
-         find_pipeline immediately followed by find_job with the same PID
-
-nojobs.c
-       - a couple of changes to make sure that set_pid_status is never
-         called with a pid argument of 0 or -1
-
-trap.c
-       - change trap_handler to longjmp to wait_intr_buf (set by wait_builtin)
-         if a signal is received for which a trap has been set during
-         execution of the wait builtin (need to include builtins.h and
-         builtins/builtext.h and declare some extern variables for the
-         right things to check)
-       - new variable to keep track of which signal caused the longjmp to
-         wait_intr_buf, set by trap_handler (wait_signal_received)
-
-builtins/wait.def
-       - set the return value of wait when a longjmp(wait_intr_buf, 1) is
-         done to 128 + wait_signal_received
-
-{jobs,nojobs}.c
-       - set wait_signal_received to SIGINT in wait_sigint_handler before
-         the longjmp(wait_intr_buf, 1)
-
-                                  1/18
-                                  ----
-bashline.c
-       - turn off rl_filename_completion_desired when completing a command
-         name with a single match only if the first char of that match is
-         not a `/'
-       - if there are multiple identical matches for a command name in
-         attempt_shell_completion, turn off rl_filename_completion_desired
-         if the first char is not a `/' to avoid readline appending a
-         slash if there's a directory with the same name in the current
-         directory
-
-                                  1/22
-                                  ----
-lib/readline/complete.c
-       - new variable, _rl_page_completions, to control whether we want to
-         run the internal pager when listing completions (defaults to 1)
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_page_completions
-
-lib/readline/bind.c
-       - new bindable variable, `page-completions', controls value of
-         _rl_page_completions
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - documented `page-completions' variable
-
-Makefile.in
-       - use $(INSTALL_SCRIPT) instead of $(INSTALL_PROGRAM) to install
-         `bashbug'
-
-aclocal.m4
-       - fix small quoting problem in RL_LIB_READLINE_VERSION macro
-
-lib/readline/terminal.c
-       - fetch and save terminal's `vs' and `ve' cursor control attributes
-       - fetch and save terminal's `kI' attribute (string sent by Insert)
-       - new function, _rl_set_cursor, sets cursor to normal (insert mode)
-         or very visible (overwrite mode)
-
-lib/readline/readline.c
-       - new global variable, rl_insert_mode
-       - new function to toggle overwrite mode, rl_overwrite_mode
-       - each new line starts in insert mode
-       - switching to vi mode or emacs mode resets to insert mode
-       - reset cursor to normal before returning line
-       - _rl_replace_text now returns the number of characters inserted,
-         the return value from rl_insert_text
-       - new function, _rl_insert_or_replace_text (const char *string, int insert),
-         either inserts STRING or replaces the number of chars in STRING
-         with STRING starting at rl_point, depending on value of INSERT
-       - renamed rl_insert to _rl_insert_char, rl_insert just calls
-         _rl_insert_char with the same arguments when in insert mode
-       - new function, _rl_overwrite_char, handles self-insert in overwrite
-         mode.  Does multibyte chars by reading an entire multibyte character
-         before entering overwrite loop
-       - new function, _rl_overwrite_rubout, handles RUBOUT when in
-         overwrite mode, called from rl_rubout
-       - new function, _rl_rubout_char, old body of rl_rubout; rl_rubout
-         calls this when not in overwrite mode 
-
-lib/readline/readline.h
-       - extern declarations for rl_insert_mode and rl_overwrite_mode()
-
-lib/readline/rldefs.h
-       - define constants for values of rl_insert_mode
-
-lib/readline/rlprivate.h
-       - extern declarations for _rl_set_cursor and _rl_set_insert_mode
-       - change type of _rl_replace_text to return int
-       - extern declarations for _rl_insert_char, _rl_rubout_char
-
-lib/readline/funmap.c
-       - new bindable name `overwrite-mode', bound to rl_overwrite_mode
-
-lib/readline/rlconf.h
-       - define CURSOR_MODE if you want the cursor to show insert or
-         overwrite mode (only available if both `vs' and `ve' capabilities
-         are present)
-
-lib/readline/{complete,parens,readline,search,vi_mode}.c
-       - change calls to rl_insert to _rl_insert_char
-
-lib/readline/{readline,search}.c
-       - change calls to rl_rubout to _rl_rubout_char to avoid overwrite
-         mode problems
-
-lib/readline/vi_mode.c
-       - fix rl_vi_overstrike to just call _rl_overwrite_char, which
-         handles multibyte chars
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - document new `overwrite-mode' command
-
-                                  1/23
-                                  ----
-lib/readline/readline.c
-       - return 0 immediately from rl_insert_text if the string to insert
-         is NULL or ""
-
-bashline.c
-       - if a numeric argument is given to one of the bash-specific glob
-         pattern completion functions (including TAB), append a `*' to
-         the word before generating matches
-       - in attempt_shell_completion, when doing glob completion, only
-         set the match list to NULL if rl_completion_type == TAB and
-         there is more than one completion.  This permits listing completions
-         with double tabs and displaying ambiguous completions
-       - new function, bash_glob_complete_word, appends a `*' to the word
-         to be completed and then globs it.  It uses a new filename
-         quoting function (bash_glob_quote_filename) to avoid quoting
-         globbing characters in the filename if there are no matches or
-         multiple matches
-
-lib/readline/complete.c
-       - set completion_changed_buffer to 0 in rl_complete_internal if
-         no matches were produced by the completion generator function
-       - new variable, rl_completion_suppress_append, suppresses appending
-         of rl_completion_append_character.  Settable by application
-         completion functions, always 0 when application completion
-         functions are called (set to 0 by rl_complete_internal and
-         rl_menu_complete)
-       - broke the code that assigns default values to readline completion
-         variables out of rl_complete_internal and rl_menu_complete into
-         a new function, set_completion_defaults (int what_to_do)
-
-lib/readline/readline.h
-       - extern declaration for rl_completion_suppress_append
-
-lib/readline/doc/rluser.texinfo, doc/bash.1
-       - documented behavior of glob-expand-word and glob-list-expansions
-         when supplied a numeric argument
-       - documented glob-complete-word
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_suppress_append
-
-                                  1/24
-                                  ----
-lib/readline/text.c
-       - new file, text and character handling functions from readline.c
-
-lib/readline/misc.c
-       - new file, miscellanous bindable functions and their supporting
-         code from readline.c
-
-Makefile.in, lib/readline/Makefile.in
-       - changes for text.c, misc.c
-
-lib/readline/bind.c
-       - change ISKMAP case of rl_invoking_keyseqs_in_map to output
-         ESC as "\M-" instead of "\e" -- it's closer to the documentation
-       - change _rl_get_keyname to output ESC as \e instead of \C-[
-         (it's easier to understand)
-
-pcomplete.h
-       - new flag, COPT_NOSPACE
-
-builtins/complete.def
-       - new `-o nospace' option for complete and compgen (though it doesn't
-         really do anything for compgen, since that doesn't hand anything
-         off to readline)
-
-bashline.c
-       - if a programmable completion specifies COPT_NOSPACE, set
-         rl_completion_suppress_append = 1
-
-lib/readline/doc/rluser.texinfo
-       - documented new `-o nospace' option to complete and compgen
-
-doc/{bash.1,bashref.texi}
-       - documented $'\cX' escape sequence (forgot to before)
-
-                                  1/28
-                                  ----
-variables.c
-       - make_new_variable now takes the HASH_TABLE * as its second
-         argument; changed callers
-       - new function, bind_variable_in_table, takes the HASH_TABLE * as
-         its third paramter; bind_variable calls bind_variable_in_table
-         with shell_variables as third argument
-
-variables.h
-       - new struct var_context, variable context (per-scope -- global,
-         function local, etc.)
-
-variables.[ch],builtins/common.[ch]
-       - moved functions that push and pop a variable context from
-         builtins/common.c to variables.c; move extern function
-         declarations to variables.h
-       - new function, all_local_variables
-       - variable_in_context is now static, used only by all_local_variables
-
-variables.[ch],execute_cmd.c
-       - push_context now takes the function name as an argument for
-         future use
-       - push_context takes an indication of whether or not the function is
-         executing in a subshell and saves the positional parameters only
-         if not in a subshell
-       - new functions for managing a stack of variable contexts and
-         scopes:  new_var_context, dispose_var_context, push_var_context,
-         pop_var_context, push_scope, pop_scope
-
-builtins/declare.def
-       - call all_local_variables instead of map_over (...) in declare_internal
-       - don't call make_local_variable if we're looking at functions
-         ((flags_on & att_function) != 0), since it's wasted
-       - make sure VAR is set to NULL if check for variable_context fails
-         and we didn't just create or fetch a local variable in
-         declare_internal
-       - in non-function branch of declare_internal, only call find_variable
-         if VAR is NULL -- if it's not null, we just created or fetched a
-         local variable and don't need to do it again
-
-                                  1/29
-                                  ----
-variables.[ch]
-       - the temporary environments (temporary_env, builtin_env, function_env)
-         are now HASH_TABLEs instead of argv-style arrays of strings (this
-         is an intermediate step on the way to the new lcc-inspired symbol
-         table scope structure)
-       - new internal attribute for variables: att_propagate.  This means
-         to propagate the value out of the temporary environment up the
-         (for now implicit) chain of variable scopes when the containing
-         temporary environment is deleted
-
-variables.c
-       - assign_in_env now adds to the HASH_TABLE temporary_env instead
-         of making environment-style strings in an array of strings
-       - changed the way the temporary environments are merged into the
-         shell variable table to account for the new HASH_TABLE temp
-         environments
-       - changed the way the export environment is created due to the new
-         structure of the temporary environments
-       - new function, bind_variable_internal (name, value, table), binds
-         NAME to have VALUE in TABLE without searching the temporary
-         environments
-       - removed: shell_var_from_env_string, bind_name_in_env_array
-       - variable_in_context now checks the att_local attribute and makes
-         sure the variable is not invisible
-       - local_and_exported now makes sure the variable is not invisible
-
-execute_cmd.c
-       - we no longer need to copy the temporary environment to function_env
-         or builtin_env, we can simply use variable assignments
-
-{findcmd,subst,variables}.c, builtins/{declare,setattr}.def
-       - since variables from the temporary environments are no longer turned
-         into SHELL_VARs on the fly, don't dispose the SHELL_VAR returned
-         by find_variable or find_variable_internal
-       - need to savestring() the value returned by find_variable if it has
-         the tempvar attribute before calling bind_variable on it, because
-         bind_variable will search and bind into the temporary environments
-         and will free the old value before binding the new.  For temporary
-         environments, these two pointers will be the same, and
-         bind_tempenv_variable will end up using freed memory
-
-builtins/{declare,setattr}.def
-       - set the att_propagate attribute when exporting or making readonly
-         variables from the temp environment (i.e., `var=value declare -x var'
-         or `var=value export var' sets the propagate attribute on the entry
-         for `var' in the temporary environment HASH_TABLE)
-
-lib/readline/isearch.c
-       - ^W when reading isearch string yanks the current word out of the
-         current line into the search string, skipping the portion already
-         matched
-       - ^Y when reading isearch string yanks the rest of the current line
-         into the search string, skipping the portion already matched
-
-                                  1/30
-                                  ----
-{print_cmd,variables}.c
-       - moved indirection_level_string() from variables.c to print_cmd.c
-
-{externs,variables}.h
-       - moved extern declaration of indirection_level_string to externs.h
-
-{general,variables}.c
-       - moved assignment() from variables.c to general.c
-
-{general,variables}.h
-       - moved extern declaration of assignment() to general.h
-
-{externs,input}.h
-       - moved extern declaration of decode_prompt_string to externs.h
-
-print_cmd.c
-       - include flags.h, don't include stdc.h
-
-variables.c
-       - moved some functions around to group functions better
-       - changed new_shell_variable to explicitly initialize each member
-         of the created struct variable instead of calling bzero()
-       - make_new_variable now just calls new_shell_variable instead
-         of duplicating what it does
-       - removed some code in bind_function that duplicated what
-         new_variable does on the newly-created SHELL_VAR
-       - since there are no local function variables (functions are always
-         made at the global scope), kill_all_local_variables() doesn't
-         need to consider functions
-
-                                  1/31
-                                  ----
-variables.c
-       - sort the array of special variables
-       - short-circuit the search in stupidly_hack_special_variables if
-         the passed name can't be found in the rest of the array
-         (that is, if name[0] < special_vars[i].name[0])
-
-lib/readline/history.c
-       - unstifle_history() was returning values exactly opposite of
-         the documentation
-
-lib/readline/doc/{hsuser.texinfo,history.3}
-       - clarified the unstifle_history() documentation a little
-
-                                   2/4
-                                   ---
-variables.c
-       - in bind_variable, don't call bind_tempenv_variable after a
-         find_tempenv_variable succeeds -- just change the value inline.
-         There's no reason to look it up twice
-       - change makunbound to only call stupidly_hack_special_variables
-         if we're not unsetting a function
-
-variables.[ch]
-       - new function, unbind_function, like makunbound but doesn't mess
-         with previous contexts or calling stupidly_hack_special_variables
-
-builtins/set.def
-       - change unset_builtin to call either unbind_func or unbind_variable
-
-builtins/getopts.def
-       - call unbind_variable(name) instead of makunbound(name, shell_variables)
-
-                                   2/5
-                                   ---
-lib/glob/sm_loop.c
-       - use malloc instead of xmalloc in BRACKMATCH and handle failures
-
-error.c
-       - add extern declaration of executing_line_number with prototype,
-         since execute_cmd.h can't be included without including other
-         files
-
-lib/readline/parens.c
-       - include <unistd.h>
-
-lib/malloc/stats.c
-       - include <unistd.h>
-       - add extern declaration of malloc_free_blocks() with prototype
-
-pathexp.c
-       - added some forward declarations with prototypes for static functions
-
-lib/readline/rlprivate.h
-       - removed declarations of rl_untranslate_keyseq, rl_discard_argument,
-         rl_stop_output, rl_alphabetic since they appear in readline.h
-
-                                   2/6
-                                   ---
-{arrayfunc,execute_cmd,pcomplete,shell}.c
-       - change calls to makunbound(name, shell_variables) to
-         unbind_variable (name)
-
-                                   2/7
-                                   ---
-builtins/getopt.c
-       - don't defer incrementing of OPTIND when an invalid option is
-         encountered until the next call to sh_getopt() -- what if OPTIND
-         is reset before that next call?  This means that OPTIND is always
-         incremented to the next option to be handled when an option is
-         returned, whether it's valid or not.  This is what POSIX-2002
-         says to do.
-
-syntax.h
-       - new #define, CSUBSTOP
-
-mksyntax.c
-       - add "-=?+" with value CSUBSTOP to the syntax table.  These are the
-         valid expansion operators OP in ${param[:]OPword}
-
-subst.c
-       - use table lookup for CSUBSTOP in VALID_PARAM_EXPAND_CHAR
-       - new flags for the string extraction functions:  EX_NOALLOC.  This
-         indicates that the functions are being used only to skip over
-         strings and the result won't be used, so the substring shouldn't
-         be allocated, copied, and freed
-       - new flag for string_extract:  EX_VARNAME.  This serves the same
-         purpose as the old `varname' parameter.  parameter_brace_expand()
-         changed appropriately
-       - extract_delimited_string and extract_dollar_brace_string now take
-         an additional `flags' argument, which may include EX_NOALLOC
-       - changed callers of extract_delimited_string and
-         extract_dollar_brace_string appropriately
-       - string_extract now understands EX_NOALLOC; callers changed
-       - some smaller code cleanups
-       - converted char_is_quoted(), unclosed_pair(), and skip_to_delim()
-         to understand multibyte characters
-
-                                  2/11
-                                  ----
-variables.[ch]
-       - moved to a symbol organization inspired by lcc.  The basic structure
-         is no longer a HASH_TABLE, but a VAR_CONTEXT, which includes a hash
-         table as one of its members.  VAR_CONTEXTs are linked together to do
-         variable scoping.  One nice thing about this is that the entire
-         symbol table doesn't need to be searched at function scope exit to
-         remove local variables.  Fixes problems with only one instance of
-         builtin_env and function_env, even though it really is a stack
-       - shell_variables is now a VAR_CONTEXT *, with a global_variables
-         variable that points to the bottom of the stack for fast access
-       - function-scope local variables (assignments specified on the command
-         line before a function call) and function-local variables (declared
-         with the `local' builtin) have been unified in the same variable
-         context, replacing function_env
-       - assignment statements preceding the `.' and `eval' builtins are now
-         a separate variable scope VAR_CONTEXT, replacing builtin_env
-       - temporary_env (a HASH_TABLE) is now the only separate environment
-       - changes to export environment creation, variable binding, variable
-         lookup, local variable propagation all changed to work with the
-         new symbol table/scope structure
-       - a SHELL_VAR no longer has a `prev_context' member; it's not needed
-
-execute_cmd.c
-       - changes to push_context calls to include any temporary variables in
-         temporary_env; pop_context takes care of propagating any temporary
-         variables if necessary
-       - calls to push_scope if `eval' or `.' is called with a list of
-         preceding variable assignments, and pop_scope called at end of
-         builtin's execution.  pop_scope takes care of merging temporary
-         variables into the shell environment when appropriate
-
-builtins/{setattr,declare}.def
-       - changes to account for variable assignments preceding `local',
-         `export', `readonly', `declare', etc. to work with the new
-         variable scoping implementation
-
-shell.c
-       - since shell_variables is now a VAR_CONTEXT, call
-         delete_all_contexts() when the shell is reinitializing instead of
-         delete_all_variables()
-
-builtins/common.c
-       - new function, get_job_by_name(), used by execute_simple_command()
-         for the `auto_resume' stuff and get_job_spec()
-
-builtins/common.h
-       - new set of #defined constants for flags argument to
-         get_job_by_name()
-
-                                  2/12
-                                  ----
-command.h
-       - new redirection operator: r_reading_string for `here strings'
-
-parse.y
-       - new token, LESS_LESS_LESS, for new redirection `here string'
-         operator: [N]<<< word
-       - recognize LESS_LESS_LESS and create the appropriate redirection
-
-{dispose_cmd,copy_cmd,make_cmd,print_cmd}.c
-       - recognize r_reading_string and do the right thing (dispose_redirects,
-         copy_redirect, print_redirection, and make_redirection, respectively)
-
-redir.c
-       - here_document_to_fd now takes the redirection operator as its
-         second argument
-       - new function, write_here_string, expands a here string and writes it
-         to the here document file descriptor
-       - here_document_to_fd calls write_here_string for r_reading_string
-         operator
-       - handle r_reading_string in do_redirection_internal() and
-         stdin_redirection()
-
-                                  2/18
-                                  ----
-doc/{bash.1,bashref.texi}
-       - documented here strings
-
-{configure,Makefile}.in
-       - bumped version number up to bash-2.05b and the release status
-         to alpha1
-
-expr.c
-       - make expr_streval understand that variables with the `invisible'
-         attribute are really unset, and accessing such a variable when
-         `set -u' is set should be an error
-
-variables.h
-       - new accessor macros: var_isset(var) and var_isnull(var), test
-         whether var->value is NULL
-
-{eval,subst,variables}.c, builtins/{declare,setattr}.def
-       - be more consistent about using value_cell(var) instead of
-         directly referencing var->value
-       - use var_isset and var_isnull where appropriate
-
-builtins/help.def
-       - augmented a couple of help strings with pointers to `info' and
-         `man -k'
-
-                                  2/14
-                                  ----
-variables.h
-       - new macros to use when setting variable values directly instead of
-         through bind_variable and its siblings
-
-{arrayfunc,variables}.c
-       - use var_setarray and other lvalue macros instead of assigning to
-         var->value directly
-
-builtins/setattr.def
-       - change show_var_attributes to show function definitions separately
-         from function attributes.  This allows the output of `declare -f'
-         (with other flags), `export -f', and `readonly -f' to be reused as
-         shell input, instead of the old
-
-               declare -f[flags] func()
-               {
-                       foo
-               }
-
-         which has syntax errors.  When in posix mode, `export -fp' and
-         `readonly -fp' still don't print function definitions
-
-                                  2/16
-                                  ----
-parse.y
-       - comment out calls to discard_parser_constructs; no need to call
-         empty functions
-
-                                  2/18
-                                  ----
-lib/sh/memset.c
-       - replacement function for memset(3)
-
-lib/sh/Makefile.in, Makefile.in
-       - additions for memset.c
-
-configure.in,config.h.in
-       - check for memset, define HAVE_MEMSET if found, add memset.o to
-         LIBOBJS if not
-
-lib/malloc/malloc.c
-       - removed zmemset(), replaced with calls to memset(3)
-
-{subst,execute_cmd,lib/sh/netopen}.c
-       - replaced calls to bzero with calls to memset
-
-subst.c
-       - word_split() now takes a second argument: the value of $IFS, so
-         it doesn't have to look up IFS every time
-       - word_list_split() now calls getifs() and passes the result to
-         each call to word_split() as its second arg
-       - do a quick scan for CTLNUL in remove_quoted_nulls before allocating
-         new string, copying old string to it, copying over original string
-         and freeing new string
-
-eval.c
-       - don't bother calling dispose_used_env_vars if temporary_env is NULL
-
-execute_cmd.c
-       - fix fix_assignment_words to only look up the builtin corresponding
-         to the first word if one of the words in the list is marked as
-         W_ASSIGNMENT
-
-hashlib.c
-       - renamed hash_string to hash_bucket, which better reflects what it
-         does
-       - extracted the portion of hash_bucket that computes the hash out
-         into a new hash_string()
-       - made new body of hash_bucket into a macro HASH_BUCKET; function
-         just calls the macro
-       - calls to hash_bucket in this file now call HASH_BUCKET macro
-       - in add_hash_item, just add a new item at the front of the appropriate
-         bucket list instead of at the end
-
-hashcmd.h
-       - reduced FILENAME_HASH_BUCKETS to 53 from 107
-
-                                  2/19
-                                  ----
-hashlib.[ch]
-       - find_hash_item, remove_hash_item, add_hash_item all take a new
-         third `flags' argument
-       - add_hash_item doesn't call find_hash_item if HASH_NOSRCH passed in
-         flags arg
-       - find_hash_item will create a new hash table entry if HASH_CREATE is
-         passed in flags arg
-       - new function, hash_walk, takes a pointer to a function and a table
-         and calls the function for each item in the table.  If the function
-         returns < 0, the walk is terminated
-       - fixed flush_hash_table to set table->nentries to 0 after freeing
-         all entries
-       - BUCKET_CONTENTS now has a new `khash' member, what key hashes to;
-         set by HASH_BUCKET macro (which calls hash_string), assigned in
-         find_hash_item (HASH_CREATE) and add_hash_item
-       - find_hash_item and remove_hash_item check `khash' against the
-         hash of the string argument before calling strcmp
-
-{alias,hashlib,hashcmd,pcomplib,variables}.c
-       - changed all calls to {find,remove,add}_hash_item
-
-builtins/hash.def
-       - return immediately from print_hashed_commands if there are no
-         entries in the hash table (this eliminates need for `any_printed'
-         variable)
-       - change print_hashed_commands to use hash_walk
-
-alias.c
-       - short-circuit all_aliases and map_over_aliases if
-         HASH_ENTRIES(aliases) == 0
-       - simplify map_over_aliases by just allocating enough room in the
-         returned list for all entries in the aliases hash table, instead
-         of doing the check and xrealloc
-       - add_alias now calls add_hash_item with HASH_NOSRCH argument
-
-pcomplete.h
-       - sh_csprint_func_t is no more; use hash_wfunc instead
-
-pcomplib.c
-       - short-circuit print_all_compspecs if HASH_ENTRIES(prog_completes)
-         is 0
-       - print_all_compspecs now takes a `hash_wfunc *' argument
-       - print_all_compspecs now just calls hash_walk
-
-builtins/complete.def
-       - new function, print_compitem, takes a BUCKET_CONTENTS *, extracts
-         the right info, and calls print_one_completion
-
-variables.c
-       - short-circuit map_over_funcs if HASH_ENTRIES(shell_functions) == 0
-       - short-circuit flatten if the passed table has no entries
-       - bind_variable_internal takes a new fourth argument: `hflags',
-         to pass to hash table functions
-       - make_new_variable now passes HASH_NOSRCH flag to add_hash_item
-       - set_if_not now calls bind_variable_internal and passes
-         HASH_NOSRCH as flags argument
-       - bind_function now calls add_hash_item with HASH_NOSRCH argument
-       - fixed make_local_variable:  old_var == 0 && was_tmpvar can never
-         be true
-       - if we didn't find an old variable in make_local_variable, call
-         bind_variable_internal with HASH_NOSRCH argument
-       - fix push_temp_var to reset variable context to 0 if binding into
-         global_variables->table
-
-parse.y
-       - fix to parse_compound_assignment to avoid core dumps on empty
-         compound array assignments
-
-subst.c
-       - getifs() is now global so read_builtin can call it
-
-subst.h
-       - extern declaration for getifs()
-
-                                  2/20
-                                  ----
-hashlib.c
-       - changed hash_string to use a better hash function
-       - changed HASH_BUCKET to use masking rather than modulus to hash a
-         string to a bucket -- HASH TABLES MUST NOW BE SIZED BY POWERS
-         OF TWO
-
-hashlib.h
-       - DEFAULT_HASH_BUCKETS is now 64
-
-hashcmd.h
-       - FILENAME_HASH_BUCKETS is now 64
-
-pcomplib.c
-       - COMPLETE_HASH_BUCKETS is now 32
-
-variables.c
-       - TEMPENV_HASH_BUCKETS is now 4
-
-alias.c
-       - new define, ALIAS_HASH_BUCKETS, set to 16, used to size alias table
-
-hashlib.c
-       - removed initialize_hash_table; folded code into make_hash_table
-       - fixed copy_bucket_array to copy the `khash' member of an item
-       - renamed functions to be more systematic and easier for me:
-               make_hash_table -> hash_create
-               hash_table_nentries -> hash_size
-               copy_hash_table -> hash_copy
-               find_hash_item -> hash_search
-               remove_hash_item -> hash_remove
-               add_hash_item -> hash_insert
-               flush_hash_table -> hash_flush
-               dispose_hash_table -> hash_dispose
-               print_table_stats -> hash_pstats
-               get_hash_bucket -> hash_items
-       - changed hash_search to short-circuit if table->nentries == 0 and
-         HASH_CREATE has not been passed in the flags argument
-
-{alias,variables,hashcmd,pcomplib}.c
-       - renamed calls to all renamed functions from hashlib.c
-
-builtins/kill.def
-       - don't drop a leading `-' in a pid argument
-       - call kill_pid with an explicit third argument of 1 if the pid
-         argument to kill is < -1, rather than rely on the behavior of
-         kill(2)
-
-                                  2/21
-                                  ----
-subst.c
-       - quoted_strchr is no longer declared `inline'
-       - skip_double_quoted is no longer declared `inline'
-       - string_extract_double_quoted is no longer declared `inline'
-
-lib/readline/input.c
-       - rl_gather_tyi is now an `int' valued function; returns the number
-         of characters read (0 or 1) or -1 on error
-       - if rl_gather_tyi() returns -1 to rl_read_key(), set rl_done to 1
-         and return a newline; something is wrong with the input fd
-
-                                  2/25
-                                  ----
-variables.[ch]
-       - IFS is now a special variable
-       - new special var function, sv_ifs(), called when IFS is set or unset
-       - call setifs() when IFS is first set in initialize_shell_variables
-       - call setifs() from make_local_variable and assign_in_env if
-         appropriate
-       - if assign_in_env() is called with a var assignment like `VAR=',
-         make the value in the new SHELL_VAR created be "" like
-         do_assignment_internal does, since certain parts of the shell use
-         a NULL value as evidence that the variable is unset (though
-         attributes may have been assigned)
-       - if push_temp_var pushes something up to the global_variables table,
-         make sure that the context is set to 0
-       - new function dispose_temporary_env, called by both
-         dispose_used_env_vars and merge_temporary_env with different `free
-         func' function pointers; calls sv_ifs after disposing the temporary
-         environment
-       - push_exported_var now calls bind_variable_internal instead of
-         bind_variable
-       - pop_scope and pop_context now call sv_ifs
-
-subst.[ch]
-       - new global variables used to keep track of IFS state, to avoid
-         having to call find_variable("IFS") all the time:
-
-               ifs_var         the SHELL_VAR for IFS
-               ifs_value       ifs_var ? value_cell (ifs_var) : " \t\n"
-               ifs_cmap        bitmap of characters in ifs_value
-               ifs_firstc      first character in ifs_value
-
-       - new function setifs(), sets the aforementioned ifs variables each
-         time IFS is set or unset, and at nested scope exit
-       - instead of calling getifs() from inside subst.c, use ifs_value
-       - getifs() now just returns ifs_value
-       - use ifs_firstc in string_list_dollar_star()
-       - only call member() in issep() if separators is more than one char
-       - don't cache a bitmap every time expand_word_internal() is called;
-         use ifs_cmap instead
-       - new macro, isifs(c), checks whether C is in ifs_cmap
-
-builtins/read.def
-       - use issep() and isifs() macros instead of looking at $IFS directly
-
-syntax.h
-       - make sure macros that access sh_syntaxtab cast the argument to
-         `unsigned char' before array access
-       - new macros: issyntype(c, type) and notsyntype(c, type), check
-         sh_syntaxtab[c] for a particular flag value `type'
-
-                                  2/26
-                                  ----
-hashlib.h
-       - the `data' member of a `BUCKET_CONTENTS' is now a PTR_T
-
-{hashlib,alias,variables,hashcmd,pcomplib}.c
-       - removed some casts when assigning to and using `data' member of a
-         `BUCKET_CONTENTS'
-
-subst.c
-       - in split_at_delims, call make_word_list instead of allocating and
-         initializing a WORD_LIST * directly
-
-make_cmd.[ch]
-       - add_string_to_list is now just a macro that calls make_word_list
-       - make_simple_command now calls make_word_list instead of allocating
-         a WORD_LIST * directly
-
-                                  2/27
-                                  ----
-copy_cmd.c
-       - copy_word now calls make_bare_word to allocate the copy
-       - copy_word_list now calls make_word_list to allocate the copy
-
-shell.h
-       - include `ocache.h' for simple object caching
-       - call cmd_init() to initialize the WORD_DESC and WORD_LIST object
-         caches
-
-{make,dispose}_cmd.c
-       - allocate WORD_DESC * and WORD_LIST * vars from their respective
-         ocaches, and return them to the cache when disposing
-
-jobs.c
-       - renamed old `waiting_for_job' variable to `queue_sigchld', which
-         better reflects its intent:  sigchld_handler does not call waitchld
-         if `queue_sigchld' is non-zero, it simply increments the count of
-         waiting children
-       - cleanup_dead_jobs now just sets and clears queue_sigchld instead of
-         blocking and unblocking SIGCHLD; it calls waitchld at the end if
-         `sigchld' is non-zero, but that's not really necessary
-       - in setjstatus, only call xrealloc if `statsize' is less than the
-         number of processes passed -- no reason to do it if they're the
-         same
-
-                                  2/28
-                                  ----
-sig.[ch]
-       - reinitialize_signals is no more; initialize_signals takes an
-         argument saying whether or not we are reinitializing
-
-builtins/exec.def
-       - reinitialize_signals() -> initialize_signals(1)
-
-test.c
-       - fix filecomp() to work right when one file has a non-positive
-         timestamp and the other file does not exist
-
-doc/{bash.1,bashref.texi}
-       - document what happens for test's -nt and -ot operators when one
-         file operand exists and the other does not
-
-jobs.c
-       - if we haven't messed with SIGTTOU, just manipulate queue_sigchld
-         in notify_of_job_status instead of calling sigprocmask()
-       - list_one_job now calls pretty_print_job directly instead of going
-         through print_job
-       - pretty_print_job now must be called with SIGCHLD blocked or held
-         instead of blocking SIGCHLD itself
-       - changed start_job so that it doesn't call UNBLOCK_CHILD and then
-         immediately call BLOCK_CHILD again (explicitly or via last_pid()),
-         call find_last_pid instead of last_pid and then UNBLOCK_CHILD
-       - changed wait_for_job the same way
-       - find_last_pid now takes a second argument: block; uses BLOCK_CHILD
-         if `block' is 1, not otherwise.  Changed existing calls:
-               find_last_pid(j) -> find_last_pid(j, 0)
-               last_pid(j) -> find_last_pid(j, 1)
-         `last_pid()' is now gone
-       - rewrote wait_for_background_pids(); it was a little strange
-       
-copy_cmd.c
-       - copy_if_command: don't copy null false_case commands
-       - copy_simple_command: don't copy a null redirection list
-
-subst.c
-       - in get_word_from_string and list_string, just check for " \t\n"
-         directly rather than calling strcmp
-       - in get_word_from_string and strip_trailing_ifs_whitespace, use
-         isifs() instead of issep(), since they're never called with
-         separators != $IFS
-       - change issep() to call isifs if separators is longer than one
-         character, since it's never called with anything but "", " ",
-         or $IFS
-
-                                   3/1
-                                   ---
-sig.h
-       - enclose the BLOCK_SIGNAL macro in a do {...} while (0) loop, at it
-         should have been all along
-
-lib/readline/doc/rltech.texinfo
-       - document that readline defaults to stdin/stdout if rl_instream/
-         rl_outstream are NULL
-
-lib/readline/terminal.c
-       - if an application is using a custom redisplay function,
-         rl_resize_terminal just calls rl_forced_update_display to tell
-         (*rl_redisplay_func) to update the display, otherwise call
-         _rl_redisplay_after_sigwinch
-
-lib/readline/readline.c
-       - change readline_internal_setup() so the change to vi insertion mode
-         happens even if readline_echoing_p is 0
-       - don't print the prompt to rl_outstream in readline_internal_setup
-         if we're not echoing and the caller has defined a custom redisplay
-         function -- let the redisplay function deal with it
-
-configure.in
-       - new option: --enable-mem-scramble, controls memory scrambling on
-         free() (on by default; only affects use of bash malloc)
-
-config.h.in
-       - new option MEMSCRAMBLE, controlled by --enable-mem-scramble
-
-                                   3/5
-                                   ---
-parse.y
-       - added ksh-like behavior of [...] to read_token_word:  if a `[' is
-         seen in an assignment context and the previous characters in the
-         token form a valid identifier, parse the [...] with
-         parse_matched_pair to allow spaces (and newlines) in the subscript
-
-bashline.c
-       - new function bash_servicename_completion_function, for completing
-         service names from /etc/services
-
-bashline.h
-       - new extern declaration for bash_servicename_completion_function
-
-builtins/complete.def
-       - allow new `-s/-A service' option to complete and compgen builtins
-
-pcomplete.h
-       - new CA_SERVICE define, new ITEMLIST variable it_services
-
-pcomplete.c
-       - add callback to bash_servicename_completion_function to generate
-         list of matching service names for completion
-
-doc/bash.1,lib/readline/doc/rluser.texinfo
-       - documented new `-s/-A service' option to complete and compgen
-
-                                   3/6
-                                   ---
-builtins/read.def
-       - change hard-coded `0' to new variable `fd' (initially 0) in
-         preparation for adding `-u fd' option
-
-bashline.c
-       - bash_directory_completion_hook calls expand_prompt_string instead
-         of expand_string (it does the right thing).  This keeps expansion
-         errors from causing a longjmp, which shouldn't happen because of
-         completion
-       - command_subst_completion_function was augmented very slightly to
-         do filename completion on a non-command-word in a command
-         substitution
-       - command_subst_completion_function now skips over the lcd that
-         rl_completion_matches puts in matches[0] if there is more than
-         one possible completion
-
-                                   3/7
-                                   ---
-builtins/read.def
-       - only add the unwind_protect to free `rlbuf' if `edit' is non-zero,
-         since we won't be using readline otherwise
-
-lib/sh/zread.c
-       - renamed zread1 -> zreadintr
-
-redir.c
-       - small change to redirection_error() to make a slightly better
-         guess about the invalid file descriptor if the redirection op is
-         r_duplicating_input or r_duplicating_output
-
-include/stdc.h
-       - new macro, SH_VA_START, to encapsulate the difference between
-         stdarg va_start and varargs va_start
-
-{error,pcomplete,print_cmd}.c,builtins/common.c,lib/sh/snprintf.c
-       - use SH_VA_START
-
-                                   3/8
-                                   ---
-builtins/read.def
-       - support for the ksh-like `-u fd' option
-
-general.c
-       - new function sh_validfd(fd), returns 1 if fd is a valid open file
-         descriptor
-
-general.h
-       - extern decl for sh_validfd
-
-bashline.c
-       - don't call posix_readline_initialize() from initialize_readline();
-         sv_strict_posix() should already have taken care of it
-
-                                  3/11
-                                  ----
-{error,pcomplete,print_cmd}.c, builtins/common.c
-       - removed non-varargs versions of functions
-
-builtins/printf.def
-       - if the string argument to %q has non-printing characters, call
-         ansic_quote to quote it rather than sh_backslash_quote
-
-variables.h
-       - new attribute: att_trace (and corresponding trace_p() macro).
-         Functions with this attribute will inherit the DEBUG trap.
-         Currently ignored for variables
-
-builtins/declare.def
-       - new `-t' option to declare/typeset toggle the `att_trace' attribute
-
-builtins/setattr.def
-       - check for att_trace and output `-t' flag in show_var_attributes
-
-execute_cmd.c
-       - if a function is being traced (it has the `-t' attribute set),
-         don't turn off the DEBUG trap when it executes
-
-doc/{bash.1,bashref.texi}
-       - document the new `-t' option to declare/typeset
-
-                                  3/12
-                                  ----
-execute_cmd.c
-       - don't execute the debug trap in the `cm_simple:' case of
-         execute_command_internal; run it in execute_simple_command so we
-         get the line number information right when executing in a shell
-         function
-       - run a DEBUG trap before executing ((...)) arithmetic commands,
-         like ksh93
-       - run a DEBUG trap before executing [[...]] conditional commands,
-         like ksh93
-
-eval.c
-       - add a static forward declaration for alrm_catcher()
-
-general.c
-       - add static forward declarations for bash_special_tilde_expansions,
-         unquoted_tilde_word, initialize_group_array
-
-variables.h
-       - add extern declarations for sh_get_env_value, map_over_funcs,
-         local_exported_variables
-
-variables.c
-       - add static forward declarations for dispose_temporary_env,
-         make_func_export_array
-
-bashhist.c
-       - add static forward declaration for check_history_control
-
-configure.in
-       - add a call to AC_CHECK_DECLS for strcpy
-
-config.h.in
-       - add placeholder for HAVE_DECL_STRCPY define, set by configure
-
-general.h
-       - don't declare strcpy if HAVE_DECL_STRCPY is defined with a non-zero
-         value
-
-sig.h
-       - add prototype to typedef of SigHandler
-
-lib/readline/histlib.h
-       - removed extern declaration of strcpy()
-       - include string.h/strings.h directly in histlib.h instead of source
-         files
-
-lib/readline/{histexpand,histfile,history,histsearch}.c
-       - don't include string.h/strings.h now that histlib.h includes it
-
-lib/tilde/tilde.c
-       - removed extern declaration of strcpy(), rely on string.h/strings.h
-
-command.h
-       - four new redirection types: r_move_input, r_move_output,
-         r_move_input_word, r_move_output_word, for
-         [N]<&word- and [N]>&word- from ksh93
-
-print_cmd.c
-       - changes to print r_move_input[_word] and r_move_output[_word]
-
-copy_cmd.c
-       - changes to copy r_move_input[_word] and r_move_output[_word]
-
-dispose_cmd.c
-       - changes to dispose r_move_input_word and r_move_output_word
-
-make_cmd.c
-       - changes to make r_move_input[_word] and r_move_output[_word] from
-         r_duplicating_{input,output}_word, which is how the new redirs
-         are passed by the parser
-
-redir.c
-       - changes to make r_move_input[_word] and r_move_output[_word] do
-         the right thing when executed
-
-builtins/read.def
-       - print an error message and return failure immediately if zread/zreadc
-         return < 0
-
-doc/{bash.1,bashref.texi}
-       - documented new [n]<&word- and [n]>&word- redirections
-
-                                  3/13
-                                  ----
-lib/readline/isearch.c 
-       - enabled code to allow chars bound to rl_rubout to delete characters
-         from the incremental search string
-
-shell.c
-       - add `-l' invocation option to parse_shell_options; equivalent to
-         `--login'
-       - fixed set_login_shell to check first char of base pathname of argv0
-         for `-', like other shells
-       - move the check for make_login_shell after the call to
-         parse_shell_options because the `-l' option might set it
-
-doc/{bash.1,bashref.texi}
-       - documented new `-l' invocation option
-
-array.c
-       - new function, array_shift, shifts an array left by a specified
-         number of elements
-       - array_walk is now compiled in by default
-       - array_to_assignment_string now takes a second argument: int quoted.
-         If non-zero, the result is single-quoted before being returned
-       - quoted_array_assignment_string has been removed
-
-array.[ch]
-       - renamed most of the array functions so that all have an array_
-         prefix and are more systematically named
-       - array_slice now preserves the indicies from the original array
-       - change array_to_assign to use a static buffer for expanding the
-         array indices, instead of malloc/free
-
-{arrayfunc,subst,variables}.c, builtins/read.def
-       - changed calls to various array functions to use new names
-
-lib/sh/stringvec.c, externs.h
-       - renamed all of the functions to have a strvec_ prefix and to have
-         a more sensible name scheme
-       - strvec_search's arguments are now supplied in reverse order, so
-         the char **array is first, like the other functions
-       - new function, strvec_resize, xrealloc for strvecs
-
-{alias,array,bracecomp,braces,bashline,execute_cmd,findcmd,general,pathexp,
-pcomplete,variables}.c
-lib/sh/stringlist.c
-builtins/{bind,complete,exec,getopts,pushd,set}.def
-       - change calls to all functions from lib/sh/stringvec.c
-       - use strvec_resize where appropriate
-
-externs.h
-       - only declare dup2() if HAVE_DUP2 is undefined or DUP2_BROKEN is
-         defined
-
-lib/readline/{macro,readline,util}.c, lib/readline/rlprivate.h
-       - _rl_defining_kbd_macro is gone, use RL_ISSTATE(RL_STATE_MACRODEF)
-
-lib/readline/readline.h
-       - new struct readline_state, encapsulates most of readline's internal
-         state in case you need reentrancy or nested calls to readline()
-       - extern declarations for rl_save_state, rl_restore_state
-
-lib/readline/readline.c
-       - add (undocumented) int rl_save_state (struct readline_state *),
-         int rl_restore_state (struct readline_state *)
-
-                                  3/14
-                                  ----
-array.[ch]
-       - new function, array_rshift, shifts an array right by a specified
-         number of elements, optionally inserting a new element 0
-
-examples/bashdb/bashdb
-       - new single-file version of bash debugger, originally modified from
-         version in bash-2.04 by Gary Vaughan (the old debugger still
-         appears in examples/obashdb).  This version has a more gdb-like
-         command set
-
-examples/bashdb/bashdb.el
-       - new emacs bashdb debugger mode from Masatake YAMATO <jet@gyve.org>
-
-execute_cmd.c
-       - don't make $LINENO relative to function start unless the shell is
-         currently interactive -- this is what ksh93 does and what I
-         believe to be the intent of POSIX.2 (this required changing some
-         of the test checks because the output has changed)
-       - run the debug trap for each command in an arithmetic for expression,
-         like ksh93 does
-
-lib/readline/vi_mode.c
-       - redid rl_vi_subst (binding func for `s' and `S') in terms of
-         rl_vi_change_to:  `S' == `cc' and `s' == `c '.  This makes undo
-         work right
-
-                                  3/18
-                                  ----
-hashlib.c
-       - fixed hash_walk to return if the item function returns < 0, instead
-         of breaking out of the current hash chain
-
-array.c
-       - fixed array_walk to return if the item function returns < 0, like
-         hash_walk
-
-lib/sh/stringlist.c, externs.h
-       - new function: strlist_walk, takes a stringlist and a pointer to an
-         item func.  Like other _walk funcs, if item func returns < 0 the
-         walk is cancelled
-       - new function: strlist_flush, frees items in the contained list
-         with strvec_flush
-       - renamed functions to have a strlist_ prefix and be more systematic
-
-pcomplib.c,pcomplete.h
-       - removed redundant `progcomp_initialized' variable
-       - renamed functions to have `progcomp_' or `compspec_' prefixes
-         like the hash library
-
-{bashline,pcomplete}.c,builtins/complete.def
-       - fixed calls to stringlist functions to use new names
-       - fixed calls to functions in pcomplib.c to use new names
-
-pcomplete.c
-       - made the debugging code #ifdef DEBUG -- it should be mature enough
-
-builtins/hash.def,parse.y
-       - use REVERSE_LIST(x, t) instead of (t)reverse_list(x)
-
-list.c,{externs,general}.h
-       - renamed the list functions to have a list_ prefix, changed callers
-
-externs.h,{execute_cmd,stringlib,subst}.c,builtins/common.c,lib/sh/stringvec.c
-       - word_list_to_argv -> strvec_from_word_list
-       - argv_to_word_list -> strvec_to_word_list
-       - moved functions to lib/sh/stringvec.c
-
-lib/sh/stringvec.c
-       - changed name of second argument to strvec_from_word_list from `copy'
-         to `alloc' so the use of `copy' between strvec_from_word_list and
-         strvec_to_word_list isn't as confusing
-       - changed name and sense of second argument to
-         strvec_to_word_list from `copy' to `alloc' for the same reason --
-         now both functions agree on semantics of second argument
-
-lib/sh/stringlist.c
-       - ditto for strlist_from_word_list and strlist_to_word_list
-
-subst.c
-       - changed callers of strvec_to_word_list
-
-                                  3/19
-                                  ----
-builtins/hash.def
-       - added `-l' option to list table or individual targets in reusable
-         format
-       - added `-d' option to remove one or more names from the table of
-         hashed commands (provides `unhash' or `unalias -t' functionality)
-
-doc/{bash.1,bashref.texi}
-       - documented new `-l' and `-d' options to `hash'
-
-hashcmd.[ch]
-       - renamed functions to have a `phash_' prefix and follow new naming
-         convention
-       - phash_remove now returns an int:  1 if command not in hash table,
-         0 if filename removed OK
-
-{findcmd,variables}.c, builtins/{hash,type}.def
-       - changed callers to use new names from hashcmd.c
-
-builtins/common.[ch]
-       - new function, sh_notfound(s), prints standard `not found' message
-       - new function, sh_invalidid(s), prints standard `invalid identifier'
-         message
-       - new function, sh_restricted(s), prints standard `restricted' message
-         for restricted shells
-       - new function, sh_invalidnum(s), prints standard `invalid number'
-         message
-       - renamed bad_option to sh_invalidopt, changed to print
-         `invalid option' instead of `unknown option'
-       - new function, sh_invalidoptname, prints standard `invalid option
-         name' for long options
-       - new function, sh_badjob (s), prints standard `no such job' message
-       - new function, sh_invalidsig (s), prints standard `invalid signal
-         specification' message
-       - new function, sh_nojobs (s), prints standard `no job control' message
-       - new function, sh_needarg (s), prints standard `option requires an
-         argument' message
-       - new function, sh_neednumarg (s), prints standard `numeric
-         argument required' message
-       - new function, sh_badpid(s), prints standard `not a pid...' message
-       - new function, sh_erange (s, desc) prints standard `out of range'
-         message, optionally using `desc' to say what the argument is
-
-builtins/{alias,command,declare,exec,hash,type}.def
-       - call sh_notfound() instead of calling builtin_error directly
-
-builtins/{declare,getopts,read,set,setattr}.def
-       - call sh_invalidid() instead of calling builtin_error directly
-
-builtins/{cd,command,enable,exec,hash,source}.def
-       - call sh_restricted() instead of calling builtin_error directly
-
-builtins/{printf,read,ulimit}.def, builtins/common.c
-       - call sh_invalidnum instead of calling builtin_error directly
-
-builtins/{complete,declare,pushd,set}.def, builtins/bashgetopt.c
-       - call sh_invalidopt instead of bad_option or builtin_error directly
-
-builtins/{complete,set,shopt}.def
-       - call sh_invalidoptname instead of builtin_error directly
-
-builtins/{fg_bg,jobs,kill,wait}.def
-       - call sh_badjob instead of calling builtin_error directly
-
-builtins/common.c, builtins/{kill,signal}.def
-       - call sh_invalidsig instead of calling builtin_error directly
-
-builtins/{fg_bg,suspend,wait}.def
-       - call sh_nojobs instead of calling builtin_error directly
-
-builtins/{common,bashgetopt}.c, builtins/{hash,kill}.def
-       - call sh_neednumarg and sh_needarg where required
-
-builtins/{kill,wait}.def
-       - call sh_badpid where required
-
-builtins/{break,fc,history,pushd,shift,ulimit,umask}.def
-       - call sh_erange where appropriate
-
-builtins/printf.def
-       - new static function, printf_erange, prints standard out-of-range
-         warning message
-
-builtins/set.def
-       - changed so that calls to sh_invalidopt always include the leading
-         `+' or `-'
-
-builtins/shopt.def
-       - changed SHOPT_ERROR macro to shopt_error function
-
-builtins/bind.def
-       - regularized error messages to `bind: object: error string' like
-         other error messages
-
-builtins.h
-       - the `short_doc' member of a `struct builtin' is now of type
-         `const char *'
-       - the strings in `long_doc' array of a struct builtin are now const
-
-builtins/mkbuiltins.c
-       - changes for new `const' members of struct builtin
-
-                                  3/20
-                                  ----
-lib/readline/histfile.c
-       - use pointers instead of indexing into buffer when reading the
-         contents of the history file in read_history_range and
-         history_truncate_file
-
-                                  3/21
-                                  ----
-lib/readline/histfile.c
-       - new file, with code to mmap the history file for reading and
-         writing (depends on HAVE_MMAP, currently nothing checks for that)
-
-                                  3/25
-                                  ----
-error.[ch]
-       - new function, err_badarraysub(s), calls report_error with standard
-         `bad array subscript' message
-       - new function, err_unboundvar(s), calls report_error with standard
-         `unbound variable' message
-       - new function, err_readonly(s), calls report_error with standard
-         `readonly variable' message
-
-{arrayfunc,subst}.c
-       - call err_badarraysub where appropriate
-
-{expr,subst}.c
-       - call err_unboundvar where appropriate
-
-{arrayfunc,variables}.c
-       - call err_readonly where appropriate
-
-shell.c
-       - changed text of bad option error messages to be the same as that
-         printed for builtin errors
-
-builtins/common.c
-       - changed sh_invalidopt to print the invalid option before the rest
-         of the error message (required some tests to be modified)
-       - new function, sh_readonly, calls builtin_error with standard
-         `readonly variable' message
-
-variables.c,builtins/declare.def
-       - call sh_readonly where appropriate
-
-lib/sh/stringvec.c
-       - added strvec_remove (sv, s), removes S from SV and shuffles rest of
-         elements down 1
-
-lib/sh/stringlist.c
-       - added strlist_remove(sl, s), just calls strvec_remove on the
-         component list
-
-externs.h
-       - new extern declarations for strvec_remove and strlist_remove
-       - fixed extern declaration for strvec_search; the arguments were
-         reversed (unimportant, it's not compiled into the shell)
-
-subst.c
-       - change param_expand to call quote_escapes on values retrieved when
-         expanding the positional parameters
-       - change parameter_brace_expand_word to quote escapes on values
-         retrieved when expanding the positional parameters
-       - fix parameter_brace_substring to quote escape characters on unquoted
-         substrings extracted from variable values (needed to separate case
-         VT_VARIABLE from VT_ARRAYMEMBER for this, since, because
-         get_var_and_type calls array_value for VT_ARRAYMEMBER, we need to
-         skip over quoted characters in an already-appropriately-quoted
-         string to find the substring we want)
-       - fix parameter_brace_substring to quote escape characters in the
-         value returned by pos_params when expanding subsets of the
-         positional parameters and not within double quotes (in which case
-         pos_params() quotes the string for us)
-       - fix parameter_brace_substring to quote escape characters in the
-         value returned by array_subrange when expanding subsets of an
-         array and not within double quotes (in which case
-         array_subrange() quotes the string for us)
-       - new function, quoted_strlen(s), does strlen(s) while skipping over
-         characters quoted with CTLESC (#ifdef INCLUDE_UNUSED, since it's
-         not used yet)
-       - changed pos_params() so it always returns a list whose members are
-         quoted strings if (quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0
-
-arrayfunc.c
-       - fix array_value to consistently call quote_escapes, even when a
-         non-array variable is being subscripted with element 0, in which
-         case we return the variable value
-
-lib/sh/strtrans.c
-       - make the for_echo parameter to ansicstr a `flags' parameter that
-         has its old `for echo' meaning if flags&1 is non-zero (which is
-         consistent with the old code)
-       - Added code to the `flags' parameter to ansicstr so that if flags&2
-         is non-zero, CTLESC and CTLNUL are escaped with CTLESC in the
-         expanded string
-       - change ansiexpand() to call ansicstr with a `flags' parameter of 2
-
-                                  3/26
-                                  ----
-lib/readline/histfile.c
-       - when reading and writing the history file, use malloc instead of
-         xmalloc and handle failures gracefully, so the application doesn't
-         abort if the history file or history list is too big
-
-                                  3/27
-                                  ----
-arrayfunc.c
-       - changed array_value_internal to take an additional `int *'
-         parameter, in which is returned the type of array indexing
-         performed (array[@] vs. array or array[index])
-       - changed array_value and get_array_value to take a corresponding
-         extra parameter and pass it to array_value_internal
-       - changed array_value_internal to no longer return newly-allocated
-         memory or quote CTLESC and CTLNUL in the returned string if
-         `simple' array indexing (subscript not `@' or `*') is being
-         performed.  This makes it more like a variable lookup
-
-arrayfunc.h
-       - changed prototypes for array_value and get_array_value
-
-expr.c
-       - added new parameter to call to get_array_value in expr_streval
-       - don't need to free memory returned by get_array_value any more
-
-subst.c
-       - quote_escapes now works with multibyte characters
-       - dequote_string now works with multibyte characters
-       - dequote_escapes is now needed, so it's compiled in, and it
-         now works with multibyte characters
-       - remove_quoted_escapes now just calls dequote_escapes and copies the
-         result over the argument string
-       - remove_quoted_nulls now returns its char * argument, parallels
-         remove_quoted_escapes
-       - parameter_brace_expand_word now passes the new argument to
-         array_value and quotes CTLESC and CTLNUL in the result if it's a
-         `simple' array expansion by calling quote_escapes
-       - get_var_and_type now returns VT_ARRAYMEMBER for references like
-         ${array} where `array' is an array variable (just like ${array[0]}).
-         Documented (in comment) that a VT_VARIABLE return value means that
-         quote_escapes has been called at some point
-       - changed callers of get_var_and_type to no longer free value if
-         VT_ARRAYMEMBER is returned as type
-       - changed parameter_brace_substring and parameter_brace_patsub to
-         call dequote_escapes on the value from get_var_and_type if the
-         type is VT_VARIABLE, since the substring and pattern substitution
-         code doesn't understand CTLESC quoting
-       - parameter_brace_substring no longer needs to call quoted_substring
-         for the VT_ARRAYMEMBER case
-       - changed parameter_brace_patsub to call quote_escapes on the result
-         of pat_subst for the VT_VARIABLE and VT_ARRAYMEMBER cases, and to
-         quote the returned string in the VT_ARRAYVAR and VT_POSPARAMS cases
-         if the `MATCH_QUOTED' flag isn't set (if it is, the pattern
-         substitution functions perform any necessary quoting)
-       - quoted_substring is no longer used; it's now #ifdef INCLUDE_UNUSED
-
-lib/malloc/mstats.h
-       - new member in _malstats: u_bits32_t bytesreq, the total number of
-         bytes requested by the caller via calls to malloc() and realloc()
-
-lib/malloc/stats.c
-       - print bytesreq member in _print_malloc_stats
-       - don't print statistics for buckets for which nmal == 0 (no mallocs)
-
-lib/malloc/malloc.c
-       - modified internal_malloc, internal_realloc to keep running total of
-         number of bytes requested by calling application
-
-shell.c
-       - sh_exit is now compiled in; exit_shell calls sh_exit
-
-error.c
-       - changed fatal_error, report_error, parser_error to call sh_exit
-
-                                  3/28
-                                  ----
-subst.[ch]
-       - changed Q_NOQUOTE to Q_PATQUOTE; it makes the intent more clear
-
-subst.c
-       - moved code from parameter_brace_expand into a new function that
-         dispatches for pattern substitution: parameter_brace_remove_pattern
-       - changed structure of parameter_brace_remove_pattern to be like
-         parameter_brace_patsub and its ilk:  call get_var_and_type to
-         isolate the variable name, move the pattern isolation code out of
-         the various *_remove_pattern functions into
-         parameter_brace_remove_pattern and pass the results to the various
-         functions, use a switch on the return value from get_var_and_type
-         to decide which function to call, regularized the arguments to the
-         separate pattern removal functions
-       - parameter_brace_remove_pattern now properly quotes escape chars in
-         the returned value
-       - changed get_var_and_type to call dequote_escapes on the `value'
-         parameter for case VT_VARIABLE and return the result in *valp,
-         so the calling functions don't have to do it themselves; changed
-         callers appropriately
-       - fixed getpattern() where it broke posix compliance:  if you enclose
-         a pattern removal spec in double quotes, the outer double quotes
-         have no effect on the pattern (POSIX.1-200x 2.6.2).  This uncovered
-         a bug in the test suite (!)
-
-pathexp.c
-       - fixed a problem with quote_string_for_globbing where it would change
-         consecutive CTLESC chars all to \ instead of changing every other
-         quoted char
-
-                                  3/31
-                                  ----
-lib/malloc/{malloc,stats}.c
-       - moved declaration of _mstats to malloc.c so stats.o doesn't get
-         linked into the shell if the stats functions aren't called
-
-                                   4/2
-                                   ---
-lib/glob/smatch.c
-       - introduce `XCHAR' define, which is the type of arguments passed to
-         strcoll/strcmp/strlen and their wide-character equivalents, added
-         appropriate casts
-       - static arrays in single-byte version of rangecmp() are `char', not
-         `unsigned char', so compilers don't complain about calls to strcoll
-
-lib/glob/sm_loop.c
-       - casts for `XCHAR' and `XCHAR *' arguments to libc functions
-       - use prototype declaration for BRACKMATCH if `PROTOTYPES' is defined
-         to avoid problems with type promotion (unsigned char -> int)
-
-lib/glob/collsyms.h
-       - `name' member of struct _COLLSYM is now of type `XCHAR *', since
-         some compilers don't like `unsigned char *' initializers from
-         constant strings
-
-[bash-2.05b-alpha1 released]
-
-                                   4/3
-                                   ---
-builtins/{evalstring.c,common.h}
-       - new flag for parse_and_execute, SEVAL_NOFREE, means to not free
-         the argument string when finished
-
-lib/readline/text.c
-       - fixed a trivial typo in _rl_insert_char when reading multibyte
-         char sequences
-       - replace calls to ding() with rl_ding()
-
-include/chartypes.h
-       - remove SIGN_EXTEND_CHAR and TOASCII macros; they're unused
-
-make_cmd.c
-       - include dispose_cmd.h for extern function declarations
-
-lib/glob/glob.c
-       - include `shmbutil.h' and `xmalloc.h' for extern function declarations
-
-lib/glob/smatch.c
-       - include `xmalloc.h' for extern function declarations
-
-shell.c
-       - fix maybe_make_restricted to use its argument instead of global
-         `shell_name'
-
-version.c
-       - update copyright message to include this year
-
-lib/readline/display.c
-       - fixes from Jiro SEKIBA <jir@yamato.ibm.com> to fix autowrapping
-         when using multibyte characters
-
-lib/glob/sm_loop.c
-       - fixed a problem in BRACKMATCH where not enough memory was allocated
-         to hold a multibyte character when parsing POSIX.2 char class names
-
-support/config.{guess,sub}
-       - updated via patch from Paul Eggert with latest GNU additions
-
-variables.c
-       - var_lookup should use its `vcontext' argument instead of
-         unconditionally using `shell_variables'
-
-                                   4/4
-                                   ---
-builtins/bind.def,doc/{bash.1,bashref.texi}
-       - changed the usage summary and help text to make it clear that any
-         readline command that may appear in ~/.inputrc may be supplied as
-         one of the non-option arguments to `bind'
-
-builtins/mkbuiltins.c
-       - added support for `-H' option, which means to write long documentation
-         for each builtin to a separate file in the `helpfiles' directory
-
-builtins/Makefile.in
-       - new target `helpdoc', just creates long doc files in helpfiles
-         directory
-
-lib/sh/zcatfd.c
-       - new file, with zcatfd(int fd, int ofd, char *fn); dumps data from
-         FD to OFD
-
-Makefile.in,lib/sh/Makefile.in
-       - added zcatfd.c, zcatfd.o member of libsh.a
-
-builtins/evalstring.c
-       - changed cat_file to call zcatfd(fd, 1, fn)
-
-builtins/{shopt,colon}.def
-       - removed the $DOCNAME directive for `shopt', `true', and `false';
-         just use the names
-       - changed $DOCNAME for `:' to just be `colon' instead of
-         `colon_builtin'
-
-builtins/reserved.def
-       - added help entries for ((, [[, `for (('
-
-builtins/let.def
-       - add id++, id--, ++id, --id, ** to help text
-
-                                   4/8
-                                   ---
-builtins/bashgetopt.[ch]
-       - changed to allow options beginning with `+', enabled by a leading
-         `+' in the option string
-       - new variable, list_opttype, set to `-' or `+'
-
-builtins/{common.c,{builtin,eval,exit,fg_bg,let,printf,pushd,return,source,wait}.def
-       - changes to allow a `--' option for every builtin that accepts
-         operands but not options, as per posix.1-2001
-
-builtins/{declare,setattr}.def
-       - use internal_getopt for parsing options, now that it supports `+'
-
-builtins/set.def
-       - use internal_getopt for initial option parse, now that it supports
-         a leading `+'
-
-
-{configure,Makefile}.in, builtins/{Makefile.in,help.def,mkbuiltins.c}
-       - support for a new configure option, ``--enable-separate-helpfiles'',
-         moves the `long' help text to separate help files, installed by
-         default into ${datadir}/bash, one file per builtin.  Off by
-         default -- it saves 47K, but it's only 47K, and it's in the text
-         segment
-
-flags.c
-       - build internal_getopt() option string argument from flags array at
-         runtime in shell.c
-
-shell.c
-       - new variable to control writing malloc stats at exit:
-         malloc_trace_at_exit, 0 by default
-
-lib/malloc/malloc.c
-       - heavily updated:
-               o partial page allocated on first call to malloc to make
-                 subsequent sbrks page-aligned no longer wasted
-               o begin and end range guards are now the same value: the chunk
-                 requested
-               o coalescing code was changed to attempt to coalesce first two
-                 adjacent blocks on the free list; enabled by default
-               o blocks of size 32 are now candidates for larger block
-                 splitting, since 32 is the most popular size
-               o blocks of size 32 are now candidates for smaller block
-                 coalescing
-               o the IN_BUCKET check was changed to just make sure that the
-                 size isn't too big for the bucket, since the `busy block'
-                 checking code may increase the bucket by one or more,
-                 meaning that the old check would fail and cause a panic when
-                 a chunk allocated in such a way was freed
-               o bin sizes are now precomputed and looked up in an array
-                 rather than being computed at runtime
-               o moved the _mstats declaration here to avoid the stats code
-                 being linked in even when no stats functions were called
-                 (only matters if MALLOC_DEBUG is defined)
-               o malloc now keeps track of the address of the top of the heap
-                 and will return large chunks to the system with calls to
-                 sbrk with a negative argument when freeing the top chunk.
-                 Two thresholds:  LESSCORE_FRC means to unconditionally return
-                 memory to the system; LESSCORE_MIN means to return memory if
-                 there's at least one block already on the free list
-
-lib/malloc/mstats.h
-       - stats struct now keeps track of number of block coalesces by bin,
-         and the number of times memory was returned to the system by bin
-
-lib/malloc/stats.c
-       - trace_malloc_stats now takes a second argument: the name of the file
-         to write to.  The first `%p' in the template file name is replaced
-         by the pid
-
-                                   4/9
-                                   ---
-lib/malloc/imalloc.h
-       - added some macros derived from dlmalloc and glibc malloc to inline
-         memcpy and memset if the requested size is <= 32 bytes
-
-lib/malloc/malloc.c
-       - use MALLOC_MEMSET instead of memset in internal_{malloc,free}
-
-include/ocache.h
-       - use OC_MEMSET (variant of MALLOC_MEMSET) in ocache_free
-
-configure.in, config.h.in
-       - check for getservent(), define HAVE_GETSERVENT if found
-
-bashline.c
-       - punt immediately from bash_servicename_completion_function if
-         HAVE_GETSERVENT is not defined (cygwin seems to not define it)
-       - include "input.h" for extern save_token_state() and
-         restore_token_state() declarations
-       - change bash_execute_unix_command to call parse_and_execute with
-         SEVAL_NOHIST flag so the command doesn't get saved on the history
-         list
-       - change bash_execute_unix_command to save and restore the current
-         command line count and the token state (last_read_token, etc.).
-         Everything else is saved by either parse_and_execute directly or
-         the call it makes to push_stream().  The shell_input_line stuff
-         doesn't need to be saved and restored; it's not computed until
-         readline() returns
-
-                                  4/10
-                                  ----
-lib/glob/glob.[ch]
-       - glob_filename and glob_vector now take an additional `flags' arg
-       - define GX_MARKDIRS as possible flag value for glob_filename and
-         glob_vector
-
-lib/sh/snprintf.c
-       - fixed some bugs with handling of `g' and `G' formats
-       - make sure numtoa returns the fractional part correctly when passed 0
-       - implemented thousands grouping for `'' flag character
-
-lib/sh/rename.c
-       - a few changes to make it more bulletproof
-
-                                  4/11
-                                  ----
-lib/glob/glob.c
-       - added the couple of dozen lines of code to glob_dir_to_array to
-         finish implementing GX_MARKDIRS
-
-builtins/set.def
-       - changed unset builtin so that it no longer considers unsetting an
-         unset variable or function to be an error
-
-lib/readline/display.c
-       - fix to rl_redisplay for a problem which caused display to be messed
-         up when the last line of a multi-line prompt (possibly containing
-         invisible characters) was longer than the screen width
-
-                                  4/15
-                                  ----
-aclocal.m4
-       - use AC_DEFINE_UNQUOTED in BASH_SYS_DEFAULT_MAIL_DIR instead of
-         enumerating all of the possible values and using AC_DEFINE
-
-                                  4/16
-                                  ----
-Makefile.in, {builtins,support}/Makefile.in
-       - new variables, CFLAGS_FOR_BUILD and CPPFLAGS_FOR_BUILD, substituted
-         by `configure'
-       - changed CCFLAGS_FOR_BUILD to BASE_CCFLAGS, removing $(CPPFLAGS);
-         CCFLAGS and CCFLAGS_FOR_BUILD now include $(BASE_CCFLAGS) with
-         (possibly) different values for CPPFLAGS and CFLAGS 
-       - GCC_LINT_CFLAGS now includes $(BASE_CCFLAGS) and $(CPPFLAGS)
-         instead of CCFLAGS_FOR_BUILD
-       - new variable, LDFLAGS_FOR_BUILD, right now equivalent to LDFLAGS
-       - remove $(CPPFLAGS) from recipes for buildversion, mksignames, and
-         mksyntax
-
-configure.in
-       - compute and substitute CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and
-         LDFLAGS_FOR_BUILD
-       - changed qnx to use LOCAL_LDFLAGS and LOCAL_LIBS instead of putting
-         everything in LOCAL_LDFLAGS
-
-builtins/Makefile.in
-       - remove $(PROFILE_FLAGS) from recipe for building `mkbuiltins'
-       - use LDFLAGS_FOR_BUILD instead of LDFLAGS in recipe for building
-         `mkbuiltins'
-
-Makefile.in
-       - use $(CC_FOR_BUILD) and $(CCFLAGS_FOR_BUILD) to build auxiliary
-         test programs (printenv, recho, zecho)
-
-support/Makefile.in
-       - use CC_FOR_BUILD and CCFLAGS_FOR_BUILD in recipe for building
-         `man2html'
-
-lib/tilde/Makefile.in
-       - substitute PROFILE_FLAGS, use PROFILE_FLAGS in $(CCFLAGS)
-
-                                  4/25
-                                  ----
-Makefile.in, configure.in
-       - moved RELSTATUS to configure.in; configure substitutes it into
-         the generated Makefile
-
-lib/sh/snprintf.c
-       - fix wchars() to deal with systems where MB_CUR_MAX is not a
-         constant expression
-
-                                   5/2
-                                   ---
-lib/sh/shquote.c
-       - add `,' to list of chars that are backslash-quoted.  It doesn't
-         hurt normal usage and prevents filenames with commas from being
-         inappropriately split by brace expansion after using
-         complete-into-braces
-
-                                   5/6
-                                   ---
-lib/sh/xstrchr.c
-       - we only need the check of MB_CUR_MAX and the slow code for a
-         few encodings, and even then only for a subset of the charset
-
-arrayfunc.c
-       - some speedups for skipsubscript and multibyte chars from Bruno Haible
-
-locale.c
-       - changed set_lang to call setlocale(LC_ALL, ...) if LC_ALL doesn't
-         already have a value, but doesn't change any shell variables
-
-include/shmbutil.h
-       - major speedups from Bruno Haible, mostly concerned with reducing
-         the number of strlen(3) calls
-
-subst.c
-       - change callers of macros in shmbutil.h to add extra argument as
-         necessary
-       - skip_single_quoted and skip_double_quoted take another argument:
-         the length of the string; mostly useful when using multibyte chars
-       - many speedups from precomputing string lengths at function start
-       - fixed a small bug in de_backslash in the midst of rewriting for
-         better efficiency
-
-{braces,make_cmd,pathexp}.c
-       - change callers of macros in shmbutil.h to add extra argument as
-         necessary
-
-pathexp.c
-       - fix a one-too-far problem with multibyte chars in
-         unquoted_glob_pattern_p
-
-braces.c
-       - brace_gobbler takes a new argument, the length of the passed string
-       - expand_amble takes a new argument, the length of the passed string
-
-                                   5/7
-                                   ---
-subst.c
-       - modified remove_quoted_nulls to eliminate the memory allocation and
-         do the copy in place using the same strategy as de_backslash
-
-lib/readline/{rldefs.h,complete.c}
-       - new define RL_QF_OTHER_QUOTE, so _rl_find_completion_word can note
-         that it found a quoting character other than \'" that appears in
-         rl_completer_quote_characters
-
-                                   5/9
-                                   ---
-jobs.c
-       - save and restore old value of jobs_list_frozen when calling trap
-         handlers from set_job_status_and_cleanup to avoid seg faults when
-         running recursive trap handlers
-
-                                  5/10
-                                  ----
-builtins/common.h
-       - new #defines to use for value of changed_dollar_vars (provides
-         information about the caller who wants to blow away the old dollar
-         variables)
-
-builtins/common.c
-       - changed set_dollar_vars_changed to set changed_dollar_vars to one
-         of the ARGS_* values depending on the caller and environment
-
-builtins/source.def
-       - source restores the positional parameters unless the `set' builtin
-         was called to specify a new set while not executing a shell function
-
-                                  5/13
-                                  ----
-POSIX
-       - new file, was in CWRU/POSIX.NOTES
-
-doc/{Makefile.in,Makefile}
-       - changed `posix' rule to modify ../POSIX
-
-doc/mkposix
-       - write to `POSIX' by default
-
-lib/sh/strtrans.c
-       - when ansicstr is parsing a format string for `echo -e' (or the
-         equivalent xpg_echo option is enabled), obey the POSIX-2001/SUSv3
-         standard and accept 0-3 octal digits after a leading `0'
-
-doc/{bash.1,bashref.texi}
-       - updated `echo' description to note that up to three octal digits
-         are now accepted following `\0'
-
-                                  5/16
-                                  ----
-doc/Makefile.in
-       - remove the generated documentation on `make distclean' if the
-         build directory and source directory are not the same
-
-Makefile.in
-       - descend into `support' subdirectory on a `make clean' and
-         `make distclean'
-       - remove parser-built, y.tab[ch] on a `make distclean' if the build
-         directory and source directory are not the same
-
-support/Makefile.in
-       - support various `clean' targets and remove man2html.o and man2html
-
-{configure,Makefile}.in
-       - move values for DEBUG and MALLOC_DEBUG into configure.in; on by
-         default for development versions; off by default for releases
-         (off for profiling, too)
-
-                                  5/21
-                                  ----
-parse.y
-       - modified the grammar to allow a simple_list followed by yacc_EOF
-         to terminate a command.  This fixes problems with things like
-         a backslash-newline at the end of an `eval'd string
-       - change handle_eof_input_unit() to reset the token state before
-         calling prompt_again(), in case the prompt to be evaluated contains
-         a command substitution
-
-                                  5/23
-                                  ----
-lib/readline/vi_mode.c
-       - fix `r' command (rl_vi_change_char) when HANDLE_MULTIBYTE is defined
-         but MB_CUR_MAX == 1
-
-                                  5/24
-                                  ----
-lib/malloc/watch.c
-       - don't try to print `file' argument to _watch_warn if it's null
-
-lib/malloc/malloc.c
-       - changed guard checking code in internal_{malloc,free,realloc} to
-         access memory as (char *) and copy into a union instead of
-         casting and dereferencing a pointer to u_bits32_t, since that
-         results in unaligned accesses which will cause Sparcs to upchuck
-
-                                  5/30
-                                  ----
-[bash-2.05b-beta1 released]
-
-lib/readline/text.c
-       - fixed a problem with rl_transpose_chars on systems supporting
-         multibyte characters with a locale that doesn't have any multibyte
-         chars
-
-                                   6/4
-                                   ---
-expr.c
-       - fix a/=0 and a%=0 to throw evaluation errors rather than core dumps
-
-lib/readline/display.c
-       - fix core dump when line wrapping a multibyte character (line
-         accidentally dropped from the original patch)
-
-lib/readline/mbutil.c
-       - fix reversed return value from _rl_is_mbchar_matched; fixes problem
-         with backward-char-search
-
-                                  6/10
-                                  ----
-lib/sh/getenv.c
-       - fix getenv to not free value returned by find_tempenv_variable
-       - add setenv, putenv, unsetenv for completeness
-
-                                  6/12
-                                  ----
-shell.c
-       - change init_noninteractive to init expand_aliases to the value of
-         posixly_correct
-       - don't initialize expand_aliases to posixly_correct anywhere else.
-         This allows the -O expand_aliases invocation option to work correctly
-
-general.c
-       - fix move_to_high_fd to not try the dup2 unless the fd loop results
-         in an fd > 3; just return the passed file descriptor otherwise
-       - use HIGH_FD_MAX, defined in general.h, instead of hard-coded 256
-         as highest file descriptor to try
-
-subst.c
-       - in process_substitute, call move_to_high_fd with `maxfd' parameter
-         of -1 instead of 64, so move_to_high_fd will use its maximum
-
-                                  6/21
-                                  ----
-lib/malloc/malloc.c
-       - don't bother calling MALLOC_MEMSET if the requested size is 0
-
-builtins/setattr.def
-       - note in short doc that export and readonly can take assignment
-         statements as arguments
-
-error.c
-       - new function, error_prolog(), to capture common error message
-         prefix code (except for parser errors)
-
-                                  6/25
-                                  ----
-aclocal.m4
-       - add tests for standard-conforming declarations for putenv and
-         unsetenv in system header files
-
-{configure,config.h}.in
-       - call BASH_FUNC_STD_PUTENV and BASH_FUNC_STD_UNSETENV, define
-         HAVE_STD_GETENV and HAVE_STD_UNSETENV, respectively, if they
-         succeed
-
-lib/sh/getenv.c
-       - change putenv and unsetenv to take differing prototypes in
-         stdlib.h into account
-
-                                  6/27
-                                  ----
-[bash-2.05b-beta2 released]
-
-                                  6/28
-                                  ----
-builtins/common.c
-       - fix get_job_spec so that %N works when N is the size of the jobs
-         list (%8 means job 8, but the 7th member of the jobs array, so
-         it's OK if N == job_slots because the function returns N-1)
-
-                                   7/1
-                                   ---
-shell.c
-       - turn off line editing if $EMACS is set to `t'
-
-                                  7/10
-                                  ----
-builtins/set.def
-       - remove mention of `-i' from long help doc, since it has no effect
-
-                                  7/17
-                                  ----
-[bash-2.05b released]
-
-                                  7/18
-                                  ----
-
-lib/malloc/malloc.c
-       - make sure that the `free_return' label has a non-empty statement
-         to branch to
-
-                                  7/19
-                                  ----
-locale.c
-       -  only call setlocale() from set_lang() if HAVE_SETLOCALE is defined;
-          otherwise just return 0
-
-lib/readline/mbutil.c
-       - only try to memset `ps' in _rl_get_char_len if it's non-NULL.  Ditto
-         for _rl_adjust_point
-
-                                  7/23
-                                  ----
-execute_cmd.c
-       - fix for executing_line_number() when compiling without conditional
-         commands, dparen arithmetic or the arithmetic for command
-
-                                  
-                                  7/24
-                                  ----
-support/Makefile.in
-       - fix maintainer-clean, distclean, mostlyclean targets
-
-builtins/common.c
-       - fix bug in sh_nojobs where it doesn't pass the right number of args
-         to builtin_error
-
-bashline.c
-       - when using command completion and trying to avoid appending a slash
-         if there's a directory with the same name in the current directory,
-         use absolute_pathname() instead of just checking whether the first
-         char of the match is a slash to catch things like ./ and ../
-
-examples/complete/bashcc-1.0.1.tar.gz
-       - a package of completions for Clear Case, from Richard S. Smith
-         (http://www.rssnet.org/bashcc.html)
-
-input.c
-       - fix check_bash_input to call sync_buffered_stream if the passed fd
-         is 0 and the shell is currently reading input from fd 0 -- all it
-         should cost is maybe an additional read system call, and it fixes
-         the bug where an input redirection to a builtin inside a script
-         which is being read from stdin causes the already-read-and-buffered
-         part of the script to be thrown away, e.g.:
-
-               bash < x1
-
-         where x1 is
-
-               hostname
-               read Input < t.in
-               echo $Input
-               echo xxx
-
-execute_cmd.c
-       - in initialize_subshell(), call unset_bash_input (0) to not mess with
-         fd 0 if that's where bash thinks it's reading input from.  Fixes
-         bug reported by jg@cs.tu-berlin.de on 17 July 2002.  Should be a way
-         to check whether or not the current fd 0 at the time of the call has
-         not been redirected, like in the bug report.  Also might eventually
-         want to throw in a sync_buffered_stream if bash is reading input
-         from fd 0 in a non-interactive shell into a buffered stream, so the
-         stream is sync'd -- might be necessary for some uses
-
-                                  7/25
-                                  ----
-lib/readline/signals.c
-       - make sure rl_catch_sigwinch is declared even if SIGWINCH is not
-         defined, so the readline state saving and restoring functions in
-         readline.c are always the same size even if SIGWINCH is not defined,
-         and undefined references don't occur when SIGWINCH is not defined
-
-                                  7/30
-                                  ----
-bashline.c
-       - augment patch from 7/24 to not disable rl_filename_completion_desired
-         if the first char of the match is `~'
-
-lib/readline/bind.c
-       - when creating `shadow' keymaps `bound' to ANYOTHERKEY, don't bind
-         a key whose type is ISFUNC but whose function is the `fake'
-         rl_do_lowercase_version (fixes debian bash bug #154123)
-
-lib/readline/readline.c
-       - don't call _rl_vi_set_last from _rl_dispatch_subseq if
-         key == ANYOTHERKEY (when truncated to `sizeof(char)', it will be 0,
-         which strchr will find in `vi_textmod')
-
-                                  7/31
-                                  ----
-lib/readline/input.c
-       - fix rl_gather_tyi to only slurp up one line of available input, even
-         if more than one line is available (fixes debian bash bug #144585)
-
-                                   8/3
-                                   ---
-bashline.c
-       - better fix for command completion problem -- test for directory
-         explicitly with test_for_directory before turning off
-         rl_filename_completion_desired, since that's the case we're trying
-         to protect against
-
-                                   8/5
-                                   ---
-include/shmbutil.h
-       - fix ADVANCE_CHAR macro to advance the string pointer if mbrlen
-         returns 0, indicating that the null wide character (wide string
-         terminator) was found (debian bash bug #155436)
-
-lib/readline/mbutil.c
-       - fix _rl_adjust_point to increment the string pointer if mbrlen
-         returns 0
-
-support/shobj-conf
-       - fix for the `-install_name' value in SHLIB_XLDFLAGS assignment for
-         Darwin from the fink folks
-
-                                   8/6
-                                   ---
-builtins/exit.def
-       - broke code that runs ~/.bash_logout out into a separate function:
-         bash_logout()
-
-builtins/common.h
-       - extern declaration for bash_logout()
-
-eval.c
-       - call bash_logout() from alrm_catcher(), so timed-out login shells
-         run ~/.bash_logout before processing the exit trap
-
-lib/sh/strtrans.c
-       - implemented $'\x{hexdigits}' expansion from ksh93
-
-configure.in
-       - define RECYCLES_PIDS in LOCAL_CFLAGS for cygwin; don't bother to
-         link with -luser32
-
-examples/loadables/strftime.c
-       - new loadable builtin, interface to strftime(3)
-
-                                   8/7
-                                   ---
-parse.y
-       - parse_arith_cmd now takes a second argument, a flag saying whether
-         or not to add double quotes to a parsed arithmetic command; changed
-         callers
-       - changed parse_dparen so it tells parse_arith_cmd to not add the
-         double quotes and therefore doesn't need to remove them
-       - change parse_dparen to add W_NOGLOB|W_NOSPLIT|W_QUOTED flags to word
-         created when parsing (( ... )) arithmetic command, since the double
-         quotes are no longer added
-
-make_cmd.c
-       - in make_arith_for_expr, set the flags on the created word to
-         W_NOGLOB|W_NOSPLIT|W_QUOTED
-
-execute_cmd.c
-       - change execute_arith_command to expand the expression with
-         expand_words_no_vars, like the arithmetic for command code does
-       - fix execute_arith_command to handle the case where the expanded
-         expression results in a NULL word without crashing
-
-tests/{arith-for,cprint}.tests
-       - change expected output to account for no longer adding quotes to
-         ((...)) commands
-
-                                   8/8
-                                   ---
-print_cmd.c
-       - take out the space after printing the `((' and before printing the
-         `))' in print_arith_command, print_arith_for_command, and
-         xtrace_print_arith_cmd
-
-tests/{arith-for,cprint}.tests
-       - change expected output to account for no longer adding leading and
-         trailing spaces when printing ((...)) and arithmetic for commands
-
-                                  8/17
-                                  ----
-subst.c
-       - fix issep() define to handle case where separators[0] == '\0', in
-         which case it always returns false
-
-lib/readline/histexpand.c
-       - fix off-by-one error in history_expand_internal when using the `g'
-         modifier that causes it to skip every other match when matching a
-         single character (reported by gjyun90@resl.auto.inha.ac.kr)
-
-doc/{bash.1,bashref.texi}
-       - make sure that the name=word form of argument to declare/typeset,
-         export, and readonly is documented in the description
-
-                                  8/30
-                                  ----
-lib/readline/histexpand.c
-       - make history_expand_internal understand double quotes, because
-         single quotes are not special inside double quotes, according to
-         our shell-like quoting conventions.  We don't want unmatched
-         single quotes inside double-quoted strings inhibiting history
-         expansion
-       - make `a' modifier equivalent to `g' modifier for compatibility with
-         the BSD csh
-       - add a `G' modifier that performs a given substitution once per word
-         (tokenized as the shell would do it) like the BSD csh `g' modifier
-
-                                  8/31
-                                  ----
-braces.c
-       - when compiling for the shell, treat ${...} like \{...} instead of
-         trying to peek backward when we see a `{'.  This makes it easier
-         to handle things like \${, which should be brace expanded because
-         the $ is quoted
-
-                                   9/7
-                                   ---
-aclocal.m4
-       - redirect stdin from /dev/null in BASH_CHECK_DEV_FD before testing
-         the readability of /dev/fd/0, so we're dealing with a known quantity
-
-                                  9/11
-                                  ----
-[prayers for the victims of 9/11/01]
-
-shell.c
-       - fix maybe_make_restricted to handle a restricted login shell with a
-         base pathname of `-rbash' and skip over any leading `-'
-
-                                  9/13
-                                  ----
-builtins/evalstring.c
-       - in parse_and_execute, make sure we don't try to run unwind-protects
-         back to `pe_dispose' after a longjmp back to top_level if the
-         pe_dispose frame hasn't been initialized
-
-lib/readline/display.c
-       - fix problem with prompt overwriting previous output when the output
-         doesn't contain a newline in a multi-byte locale.  This also should
-         fix the problem of bash slowing down drastically on long lines when
-         using a multi-byte locale, because it no longer tries to rewrite the
-         entire line each time.  Patch from Jiro SEKIBA <jir@yamato.ibm.com>
-
-parse.y
-       - move the typedef for alias_t that is compiled in if ALIAS is not
-         defined up before the prototype for push_string, since that takes
-         an alias_t * parameter
-
-lib/readline/terminal.c
-       - bind the termcap description's left and right arrow keys to
-         rl_backward_char and rl_forward_char, respectively,  instead of
-         rl_forward and rl_backward (which are just there for backwards
-         compatibility)
-
-aclocal.m4
-       - when testing readability of /dev/stdin, redirect stdin from /dev/null
-         to make sure it's a readable file
-
-                                  9/17
-                                  ----
-config-bot.h
-       - don't test __STDC__ when deciding whether or not to use stdarg.h;
-         just use it if it's present
-
-tests/read2.sub
-       - redirect from /dev/tty when using `read -t' 
-
-                                  9/20
-                                  ----
-builtins/history.def
-       - when reading `new' entries from the history file with `history -n',
-         fix increment of history_lines_this_session by taking any change
-         in history_base into account
-
-lib/sh/pathphys.c
-       - changes to sh_physpath to deal with pathnames that end up being
-         longer than PATH_MAX without dumping core
-
-lib/readline/doc/{history.3,hsuser.texinfo},doc/ bash.1
-       - documented new `a' and `G' history modifiers
-
-                                  9/25
-                                  ----
-lib/readline/misc.c
-       - when traversing the history list with arrow keys in vi insertion
-         mode, put the cursor at the end of the line (like in emacs mode)
-
-mksyntax.c
-       - don't try to use \a and \v unless __STDC__ is defined; use the
-         ascii integer equivalents otherwise
-       - include "config.h" in the generated syntax.c file for a possible
-         definition of `const'
-
-doc/{bash.1,bashref.texi}
-       - document the meaning of a null directory in $PATH
-
-                                  9/26
-                                  ----
-parse.y
-       - fix set_line_mbstate to handle case where mbrlen() returns 0,
-         indicating the null wide character
-       - fix set_line_mbstate so we don't directly compare a char variable
-         to EOF, since char can (and is) unsigned on some machines
-
-bashline.c
-       - change bash_execute_unix_command to save a little bit more state:
-         last_shell_builtin, this_shell_builtin, last_command_exit_value
-
-                                  9/27
-                                  ----
-execute_cmd.c
-       - tentative change to execute_simple_command to avoid freeing freed
-         memory in the case where bash forks early but still ends up calling
-         execute_disk_command, without passing newly-allocated memory to
-         make_child.  This may fix the core dumps with the linux-from-scratch
-         folks
-
-                                  9/28
-                                  ----
-Makefile.in,{builtins,lib/sh}/Makefile.in      
-       - fix up dependencies, mostly on ${BUILD_DIR}/version.h, so that
-         parallel makes work with GNU and BSD makes
-
-shell.h
-       - new struct to save partial parsing state when doing things like
-         bash_execute_unix_command and other operations that execute
-         commands while a line is being entered and parsed
-
-parse.y
-       - new functions, save_parser_state() and restore_parser_state(), to
-         save and restore partial parsing state 
-
-bashline.c
-       - change bash_execute_unix_command to call {save,restore}_parser_state
-
-builtins/jobs.def
-       - change execute_list_with_replacements to eliminate a run_unwind_frame
-         in favor of calling the cleanup explicitly and discarding the frame
-
-execute_cmd.c
-       - change execute_for_command to avoid a run_unwind_frame in the case
-         where the loop variable is readonly or otherwise not assignable
-       - change execute_select_command and execute_simple_command to use
-         discard_unwind_frame by running the cleanup code explicitly, instead
-         of using run_unwind_frame
-       - make sure execute_select_command decreases loop_level even on error
-
-                                  9/30
-                                  ----
-doc/{bash.1,bashref.texi}
-       - fixed description of `unset' now that unsetting a previously-unset
-         variable is no longer an error
-
-                                  10/3
-                                  ----
-{configure,config.h}.in
-       - augment check for strtold with additional check to detect the
-         horribly broken hp/ux 11.x implementation that returns `long_double';
-         defines STRTOLD_BROKEN if so
-
-builtins/printf.def
-       - define floatmax_t as `double' if STRTOLD_BROKEN is defined
-
-                                  10/5
-                                  ----
-lib/readline/keymaps.c
-       - don't automatically bind uppercase keys to rl_do_lowercase_version
-         in rl_make_bare_keymap
-
-lib/readline/readline.c
-       - explicitly check for ANYOTHERKEY binding to rl_do_lowercase_version
-         and dispatch to lowercase of key when a prefix is not matched
-
-                                  10/12
-                                  -----
-bashline.c
-       - set COMP_WORDBREAKS in enable_hostname_completion to the value
-         of rl_completer_word_break_characters
-
-variables.c
-       - new special variable COMP_WORDBREAKS, controls the value of
-         rl_completer_word_break_characters
-
-variables.h
-       - new extern declaration for sv_comp_wordbreaks()
-
-subst.c
-       - change split_at_delims to behave more like shell word splitting if
-         the passed value for the delimiters is NULL, indicating that the
-         function is to use $IFS to split
-
-{execute_cmd,jobs,test,findcmd,input,make_cmd,redir,shell}.c
-builtins/mkbuiltins.c,builtins/{fc,history,source,umask}.def
-lib/sh/netconn.c
-lib/termcap/termcap.c
-lib/readline/histfile.c
-       - make sure all inclusions of <sys/file.h> are protected by
-         HAVE_SYS_FILE_H
-
-bashline.c
-       - don't turn off rl_filename_completion_desired in
-         attempt_shell_completion if the partial pathname contains a slash.
-         This still doesn't solve the problem of partial pathname completion
-         starting with a directory in the current directory without a
-         leading `./'.  There's no way to tell the difference between that
-         and a file found in $PATH (which may contain `.') at the point that
-         attempt_shell_completion acts
-
-                                  10/18
-                                  -----
-locale.c
-       - don't set lc_all to the default locale when LC_ALL is being unset
-       - new function, reset_locale_vars(), called to recompute the correct
-         locale variable values when LC_ALL is unset
-       - changed set_lang to not set LC_ALL, which it never should have been
-         doing in the first place, and to maintain a local variable `lang'
-         corresponding to $LANG
-       - change get_locale_var to use the precedence posix.2 specifies:
-         LC_ALL overrides individual variables; LANG, if set, is the default
-       - change set_locale_var to call get_locale_var to get the appropriate
-         value for the variable being set or unset
-       - call get_locale_var instead of using passed value in set_locale_var
-         to get the defaulting and precedence right
-
-lib/readline/nls.c
-       - new function, _rl_get_locale_var(), which does the same thing as
-         locale.c:get_locale_var(), with the right precedence and defaulting,
-         using sh_get_env_value to get the right bash variable values
-       - if HAVE_SETLOCALE is defined, _rl_init_eightbit first calls
-         _rl_get_locale_var to get the right value for LC_CTYPE, and uses
-         that in the call to setlocale.  If _rl_get_locale_var returns NULL,
-         call setlocale() to get the current international environment, and,
-         finally, if that returns null, call setlocale with a second argument
-         of "" to force the implementation's `native' environment
-
-pcomplete.c
-       - change gen_wordlist_completions to dequote the text before comparing
-         it against the expanded word list 
-       - changed gen_matches_from_itemlist to do the same thing
-
-bashline.c
-       - new global function, bash_dequote_word, calls bash_dequote_filename
-         on the text passed.  Used by the programmable completion code
-
-lib/readline/histfile.c
-       - make sure that whenever read_history_range returns a non-zero value
-         that it sets errno to some useful value
-
-                                  10/19
-                                  -----
-variables.c
-       - COMP_WORDBREAKS is now a dynamic variable, mirroring value of
-         rl_completer_word_break_characters.  Makes sure that the variable
-         always points to dynamic memory if it's not null or the readline
-         default
-
-bashline.c
-       - change enable_hostname_completion to manage a dynamic value of
-         rl_completer_word_break_characters, since assignments to
-         COMP_WORDBREAKS can change its value unpredictably
-
-lib/readline/{complete.c,readline.h}
-       - rl_completer_word_break_characters no longer has `const' attribute
-
-bashline.c
-       - clean up necessary places due to rl_completer_word_break_characters
-         no longer being `const'
-
-doc/{bash.1,bashref.texi}
-       - document new COMP_WORDBREAKS variable
-
-                                  10/21
-                                  -----
-print_cmd.c
-       - fix indirection_level_string to handle the case where the decoded
-         $PS4 is null without seg faulting
-
-                                  10/22
-                                  -----
-builtins/shift.def
-       - make sure that there is actually an argument when reporting a shift
-         count that exceeds the number of positional paramters and
-         shift_verbose is enabled
-
-lib/readline/rltty.c
-       - change SET_SPECIAL to call a new function, set_special_char, since
-         it contains a block.  It's called infrequently, so the performance
-         impact of making it a function should be negligible, and it helps
-         debugging
-
-                                  10/29
-                                  -----
-bashline.c
-       - make sure the editor in VI_EDIT_COMMAND and EMACS_EDIT_COMMAND is
-         quoted; it might contain spaces (e.g., `emacs -nw')
-
-aclocal.m4
-       - cache ac_cv_rl_version in RL_LIB_READLINE_VERSION macro
-
-configure.in
-       - change logic that sets RL_INCLUDEDIR so that it doesn't try to set
-         a bogus include path if the argument to --with-installed-readline
-         is `yes' -- helps with cross-compiling
-
-lib/readline/histexpand.c
-       - fix history_tokenize_word so that it handles <( and >( better
-
-                                  10/30
-                                  -----
-redir.c
-       - fix write_here_string so it handles the case where `herestr' expands
-         to NULL without seg faulting
-
-                                  10/31
-                                  -----
-mailcheck.c
-       - reverse logic flip from bash-2.05 that handled systems that don't
-         change the atime when the mailbox is accessed; make sure the file
-         is bigger before we report new mail.  This is the case in the vast
-         majority of cases.  Reported by jim@jtan.com
-
-                                  11/5
-                                  ----
-parse.y
-       - change action for `for x; { list; }' and corresponding `select'
-         production to use \"$@\" instead of just $@, as it is with all the
-         other actions
-
-                                  11/9
-                                  ----
-parse.y
-       - new flag for parse_matched_pair: P_DQUOTE, indicating that the
-         pair of characters being matched is between double quotes
-       - parse_matched_pair now passes P_DQUOTE down to recursive calls:
-         if the open char to be matched is a `"' or the passed-in flags
-         include P_DQUOTE, set the local `rflags' variable to P_DQUOTE and
-         pass `rflags' down to recursive calls
-       - if `rflags' includes P_DQUOTE, don't try to ansiexpand $'...' or
-         locale expand $"..."; consistent with other quoting constructs
-
-                                  11/11
-                                  -----
-doc/{bash.1,bashref.texi}
-       - explicitly note that variables referenced in arithmetic expressions
-         without using `$' evaluate to 0 if they are null or unset
-       - note that a null variable value evaluates to 0 when used in an
-         arithmetic context, like when a variable with the `-i' attribute is
-         assigned a null value
-       - document the ${!prefix@} expansion as equivalent to ${!prefix*}
-
-                                  11/12
-                                  -----
-doc/{bash.1,bashref.texi}
-       - note that the value of an arithmetic expression is as in C
-       - change the wording to note that `arithmetic evaluation' (not
-         arithmetic expansion, which has a different meaning) is performed
-         on the value assigned to a variable whose integer attribute is set
-
-                                  11/13
-                                  -----
-execute_cmd.c
-       - fix execute_disk_command so it calls exit() after printing the error
-         message in a restricted shell context if the shell has already forked
-         (nofork != 0 && there are no pipes)
-
-                                  11/19
-                                  -----
-builtins/type.def
-       - don't report on aliases unless expand_aliases is set and the parser
-         is performing alias expansion; changed tests/type.tests and
-         tests/type.right accordingly
-
-                                  11/25
-                                  -----
-general.c
-       - fix for full pathnames including drive letters on cygwin from
-         Corinna (convert to posix-style paths, which the rest of the
-         code handles much better)
-
-lib/readline/text.c
-       - fixes to overwrite mode from jimmy@is-vn.bg:
-               o in _rl_overwrite_char, do the overwrite mode self-insert
-                 as one group, even when overwriting more than 1 char
-               o in _rl_overwrite_char, do the insert before the delete so
-                 that an undo positions the cursor on the character restored,
-                 not to the right of it
-               o in _rl_overwrite_rubout, don't do rl_insert_char(' ') unless
-                 rl_point < rl_end.  Since overwrite-mode self-insert acts as
-                 in insert-mode when at eol, make rubout behave like
-                 insert-mode rubout
-
-                                  11/30
-                                  -----
-lib/readline/misc.c
-       - call rl_replace_line with `1' as second parameter if we're going to
-         immediately overwrite the undo list
-
-lib/readline/search.c
-       - in make_history_line_current, use _rl_replace_text to make the line
-         replacement an undoable operation.  Affects all non-incremental
-         search functions.
-
-parse.y
-       - make behavior introduced on 11/9 dependent on extended_quote
-         variable, controllable by extquote shopt option.  Default setting is
-         on for backwards compatibility
-
-builtins/shopt.def
-       - new `extquote' option to control extended_quote variable
-
-                                  12/3
-                                  ----
-jobs.c
-       - change message printed when attempting to put a background job in
-         the background with `bg' to include the job id and make the
-         statement declarative
-
-                                  12/10
-                                  -----
-bashhist.h
-       - define explicit flag values for history_control
-
-variables.c
-       - change sv_history_control to use new flag values
-       - change sv_history_control to parse $HISTCONTROL as a colon-separated
-         list of values for the history_control variable
-
-bashhist.c
-       - change check_history_control to use new flag values and restructure
-         to remove case statement
-       - new function hc_erasedups(line); removes all entries matching LINE
-         from the history list
-       - call hc_erasedups() from check_add_history after we've determined
-         that we're saving the line
-
-doc/{bash.1,bashref.texi}
-       - documented new options available for $HISTCONTROL and that it can
-         be a colon-separated list of history control options
-
-                                  12/11
-                                  -----
-subst.c
-       - fix pat_subst() to not increment `e' (pointer to the end of the
-         matched portion of the string) until after we're sure we're going
-         around the loop again; fixes problem with empty replacements for
-         a pattern that doesn't match (bug reported by Don Coleman
-         <don@coleman.org>)
-
-                                  12/17
-                                  -----
-lib/readline/display.c
-       - fixes to multibyte redisplay from jir@yamato.ibm.com (Jiro SEKIBA):
-               o speed up calculation of first difference between old and new
-                 lines in the common case
-               o don't try to see if we're in the middle of a multbyte char
-                 in update_line (we'll see how this one works out)
-
-                                  12/18
-                                  -----
-doc/bashref.texi
-       - make it clear that the `command-list' function definition may be
-         terminated by an ampersand before the closing brace
-
-                                  12/28
-                                  -----
-redir.c
-       - set `expanding_redir' flag when expanding words in a redirection
-
-subst.c
-       - new function, exp_jump_to_top_level(), to do any word expansion
-         cleanup before a call to jump_to_top_level from within that file;
-         sets expanding_redir back to 0 before jump_to_top_level
-
-variables.c
-       - in find_variable(), don't call find_variable_internal with a second
-         parameter of 1 if expanding_redir is non-zero
-       - in find_variable_internal(), don't search the temporary env if
-         subshell_environment includes SUBSHELL_FORK (indicating a simple
-         command) and expanding_redir is non-zero
-
-parse.y
-       - increment line_number when we read a \<newline> pair
-
-array.c
-       - added array_unshift_element and array_shift_element (which just call
-         array_shift and array_rshift, respectively), for bash debugger
-         support
-
-                                1/4/2003
-                                --------
-doc/{bash.1,bashref.texi}
-       - note in the section describing the execution environment passed to
-         children that subshells inherit shell functions marked for export
-       - note in the section describing shell functions the possibility
-         that exported functions may result in two entries in the environment
-         with the same name
-
-parse.y
-       - when pushing an alias expansion onto the pushed_string list, append
-         a space to the expanded definition to make the parser's lookahead
-         work without using the `mustpop' hack in shell_getc
-
-                                   1/8
-                                   ---
-shell.c
-       - change calls to exit() with EX_USAGE as a parameter to use
-         EX_BADUSAGE instead, since EX_USAGE is defined as 258 and is
-         technically out of range
-
-                                  1/14
-                                  ----
-aclocal.m4
-       - check for the termcap functions in libc first:  if we don't have
-         to link in another library, let's not do it
-       - change the test for mbstate_t to use AC_TRY_COMPILE instead of
-         AC_TRY_RUN
-
-doc/{bash.1,bashref.texi}
-       - document that bash turns line editing off if environment variable
-         EMACS is set to `t' when it starts up
-
-doc/bash.1
-       - minor change to give the ftp url for the latest version of bash in
-         the bug reports section
-
-lib/readline/histexpand.c
-       - in get_history_event, cast a couple of `const char *' variables to
-         `char *' in function call parameter lists to avoid compiler warnings
-
-                                  1/21
-                                  ----
-builtins/cd.def
-       - change `cd -' so it prints the current working directory after a
-          successful chdir even when the shell is not interactive
-
-                                  1/31
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - clarified exactly what is meant by the term `application-specific
-         completion function', made its use consistent, and documented
-         what variables are changed before such a function is called
-
-lib/readline/input.c
-       - new function, _rl_pushed_input_available(), returns non-zero if
-         there are characters in the input queue managed by rl_get_char
-         and _rl_unget_char
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_pushed_input_available
-
-lib/readline/callback.c
-       - change rl_callback_read_char to check _rl_pushed_input_available
-         and loop if there's something there, so characters don't languish
-         until more keyboard input is read
-
-execute_cmd.c
-       - new variable, last_command_exit_signal, non-zero if
-         last_command_exit_value result from wait_for was result of a signal
-
-nojobs.c
-       - keep track of whether or not a given pid was killed by a signal with
-         a new flag in the pid_list array
-       - new function int find_termsig_by_pid(pid_t pid) to get the
-         terminating signal, if any, for a particular pid
-       - new function int get_termsig(WAIT status) returns the terminating
-         signal corresponding to status
-       - set last_command_exit_signal in wait_for and the various wait_for_xx
-         functions
-
-jobs.c
-       - new functions, process_exit_signal and job_exit_signal, return the
-         signal that killed a given process or job, if a signal caused its
-         death
-       - set last_command_exit_signal in wait_for by calling job_exit_signal
-         or process_exit_signal appropriately
-
-subst.c
-       - don't resend SIGINT to ourselves unless last_command_exit_signal is
-         SIGINT and last_command_exit_value == 128 + SIGINT.  This fixes the
-         $(exit 130) bug reported by Paul Jarc
-
-expr.c
-       - new function, expr_bind_variable, calls bind_int_variable and
-         then stupidly_hack_special_variables.  This fixes the
-         `let OPTIND=1' bug
-
-bashline.c
-       - change history_and_alias_expand_line and shell_expand_line to call
-         history_expand_line_internal so calls to pre_process_line are
-         localized
-       - change history_expand_line_internal and cleanup_expansion_error to
-         temporarily turn off hist_verify before calling pre_process_line
-         to avoid the effects described by teirllm@dms.auburn.edu
-
-parse.y
-       - don't unconditionally turn off PST_ALEXPNEXT in push_string.  This
-         fixes the multiple alias expansion bug reported by Paul Jarc.
-
-lib/readline/vi_mode.c
-       - change rl_vi_subst to push `l' instead of ` ' -- it should be
-         equivalent, but this has been reported to fix a problem in multibyte
-         locales
-
-lib/readline/readline.h
-       - new state flag value RL_STATE_TTYCSAVED, indicates that save_tty_chars
-         has been called.  Since it's only used and visible internally, it's
-         undocumented
-
-lib/readline/rltty.h
-       - changed all of the members of _rl_tty_chars struct to `unsigned char'
-
-lib/readline/rltty.c
-       - set the RL_STATE_TTYCSAVED after save_tty_chars is called
-       - new function, rl_tty_unset_default_bindings(), resets bindings for
-         everything rl_tty_set_default_bindings() messes with back to
-         rl_insert, so rl_tty_set_default_bindings can be called again with
-         possible changes
-       - new function that does the bulk of the work for
-         rltty_set_default_bindings:  _rl_bind_tty_special_chars()
-       - change prepare_terminal_settings so that it can track changes to the
-         terminal special chars made by stty(1):  unset the bindings with
-         rl_tty_unset_default_bindings before calling save_tty_chars, and
-         _rl_tty_set_default_bindings after, with the new values from
-         get_tty_settings().  This implements a long-standing request, most
-         recently made by Tim Waugh of Red Hat.
-
-lib/readline/readline.h
-       - extern declaration for rl_tty_unset_default_bindings()
-
-lib/readline/readline.c
-       - new function, reset_default_bindings, calls
-         rl_tty_unset_default_bindings() to reset the terminal special chars
-         back to rl_insert and then read the new ones
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_tty_unset_default_bindings()
-
-                                   2/1
-                                   ---
-[prayers and condolences to the families of the space shuttle crew members]
-
-aclocal.m4
-       - add checks for mbrtowc and mbrlen in BASH_CHECK_MULTIBYTE
-       - new check, BASH_FUNC_CTYPE_NONASCII, checks whether or not the ctype
-         functions handle non-ascii characters correctly
-
-config.h.in
-       - add HAVE_MBRTOWC and HAVE_MBRLEN
-       - add NO_MULTIBYTE_SUPPORT for new configure argument
-       - add CTYPE_NON_ASCII
-
-config-bot.h, lib/readline/rlmbutil.h
-       - make sure that mbrtowc, mbrlen, and wcwidth are all present before
-         turning on HANDLE_MULTIBYTE
-       - turn off multibyte chars if NO_MULTIBYTE_SUPPORT is defined
-
-configure.in
-       - new argument --enable-multibyte (enabled by default), allows
-         multibyte support to be turned off even on systems that support it
-
-lib/readline/chardefs.h
-       - define NON_NEGATIVE as 1 if CTYPE_NON_ASCII is defined
-
-                                   2/3
-                                   ---
-config.h.in
-       - add HAVE_WCTOMB
-
-aclocal.m4
-       - check for wctomb in BASH_CHECK_MULTIBYTE
-
-                                   2/4
-                                   ---
-lib/readline/vi_mode.c
-       - in _rl_vi_change_mbchar_case, make sure the result from wctomb()
-         is NULL-terminated before trying to insert it with rl_insert_text()
-
-                                   2/5
-                                   ---
-lib/readline/display.c
-       - fix to update_line to avoid problems on systems with multibyte
-         characters when moving between history lines when the new line
-         has more glyphs but fewer bytes (twaugh@redhat.com)
-
-lib/readline/vi_mode.c
-       - use wcrtomb() instead of wctomb() in _rl_vi_change_mbchar_case
-
-pcomplete.c
-       - fix init_itemlist_from_varlist to handle the case where the
-         `varlist' is NULL
-
-doc/{bash.1,bashref.texi}
-       - clarified when a simple command may fail without the shell exiting
-         when -e is set
-
-                                  2/13
-                                  ----
-parse.y
-       - when bash is started with --nolineediting, ignore \[ and \] when
-         decoding the prompt string
-
-subst.c
-       - fix remove_quoted_nulls so that a string with a CTLESC appearing
-         after a CTLNUL (which was removed) does not leave characters in
-         the string inappropriately
-
-                                  2/14
-                                  ----
-builtins/common.h
-       - new flag value for parse_and_execute(): SEVAL_RESETLINE, which
-         allows the caller to specify whether or not the internal idea
-         of the line number should be reset to 1
-
-builtins/evalstring.c
-       - parse_and_execute() now tells push_string to reset the line
-         number only if the SEVAL_RESETLINE flag is set by the caller
-
-                                  2/15
-                                  ----
-builtins/evalfile.c
-       - pass SEVAL_RESETLINE from _evalfile() to parse_and_execute()
-
-subst.c
-       - if the shell is currently interactive, pass SEVAL_RESETLINE to
-         parse_and_execute() when doing command substitution
-
-jobs.c
-       - add SEVAL_RESETLINE to parse_and_execute while running SIGCHLD trap
-
-command.h
-       - add `line' members to case_com, for_com, select_com
-       - rearranged order of members in some of the command structs, so
-         `flags' and `line' are first
-       - added a `source_file' member to the function_def struct; keeps
-         track of where the function was defined
-
-doc/Makefile.in
-       - add some new suffix rules:  .dvi.ps
-
-doc/{bash.1,bashref.texi}
-       - added text to the description of the `trap' builtin tightening up
-         the language describing when the ERR trap will be run
-
-error.c
-       - if $BASH_SOURCE (internally-maintained) exists, use BASH_SOURCE[0]
-         in get_name_for_error if the shell is not interactive
-
-array.h
-       - new convenience defines: array_push and array_pop
-
-variables.c
-       - change get_funcname to return this_shell_function->name only if
-         arrays have not been compiled into the shell
-       - change init_funcname_var to initialize FUNCNAME as an array variable
-         if we have arrays
-       - new function: get_self(SHELL_VAR *self), a degenerate `dynamic_value'
-         function for dynamic variables
-       - new function: init_dynamic_array_var(), a generic dynamic array
-         variable initializer to handle the common case
-       - use init_dynamic_array_var() instead of explicit init_dirstack_var()
-       - use init_dynamic_array_var() instead of explicit init_groups_var()
-       - new dynamic array variables:  BASH_ARGC, BASH_ARGV, BASH_SOURCE,
-         BASH_LINENO, initialized with init_dynamic_array_var
-
-shell.c
-       - initialize BASH_LINENO, BASH_SOURCE, FUNCNAME in open_shell_script
-
-{execute_cmd,trap}.c
-       - take out trap_line_number, since parse_and_execute doesn't reset the
-         line number any more when running the trap commands
-
-make_cmd.c
-       - augment make_function_def to get source file name and call
-         bind_function_def to save the entire FUNCTION_DEF
-
-variables.c
-       - new hash table: shell_function_defs, keeps table of shell function
-         definitions including source file and line number info corresponding
-         to shell_functions table
-       - new functions: find_function_def and bind_function_def to manage
-         the shell_function_defs hash table
-       - new function: unbind_function_def to remove a function definition
-         from the shell_function_defs table (right now uncalled)
-
-variables.h
-       - extern declaration for bind_function_def, find_function_def
-       - new extern declaration for unbind_function_def
-
-execute_cmd.c
-       - in function prologue and epilogue, push and pop FUNCNAME,
-         BASH_SOURCE, and BASH_LINENO information
-
-dispose_cmd.c
-       - broke the code that disposes a FUNCTION_DEF out into two new
-         functions: dispose_function_def and dispose_function_def_contents
-
-dispose_cmd.h
-       - new extern declarations for dispose_function_def_contents and 
-         dispose_function_def
-
-copy_cmd.c
-       - move body of copy_function_def (other than allocating a new
-         FUNCTION_DEF) to copy_function_def_contents
-       - make sure to copy the new source_file member of a function_def in
-         copy_function_def_contents
-       - copy_function_def is no longer static, copy_function_def_contents
-         is not either
-
-command.h
-       - new extern declaration for copy_function_def_contents and
-         copy_function_def
-
-parse.y
-       - keep a stack of line numbers where case, select, and for commands
-         start, with a maximum nesting level of 128; increment when reading
-         word after `for', `select' or `case' in read_token_word; decrement
-         in grammar actions after parsing a complete for, arith_for, select,
-         or case command
-       - create for, case, arith_for, and select commands with an extra
-         line number (word_lineno[word_top]) argument
-
-make_cmd.c
-       - make_for_or_select, make_for_command, make_case_command, and
-         make_select_command all take an extra `line_number' argument
-
-make_cmd.h
-       - corresponding changes to extern declarations for those functions
-
-                                  2/16
-                                  ----
-{execute_cmd,shell,variables}.c
-       - follow each call to remember_args with a call to push_args or
-         pop_args to manage the BASH_ARGV and BASH_ARGC arrays.  Only set
-         when the shell is started to run shell script or runs a shell
-         function.  Doesn't handle `set' or `shift' yet, nor `source'.
-
-execute_cmd.c
-       - keep track of the level of subshells with a new variable, manipulated
-         in execute_in_subshell
-       - set currently_executing_command in execute_command_internal(),
-         even if we're running a trap
-       - better line number management when executing simple commands,
-         conditional commands, for commands in execute_command_internal()
-         and the various functions that implement the commands
-         (execute_cond_command, execute_for_command, execute_etc.)
-
-variables.c
-       - new dynamic variable BASH_SUBSHELL, with new get_subshell and
-         assign_subshell functions to manipulate it
-       - new functions push_args (WORD_LIST *list) and pop_args (void) to
-         manage the BASH_ARGC and BASH_ARGV dynamic array variables
-
-variables.h
-       - new extern declarations for push_args and pop_args
-
-builtins/evalfile.c
-       - in _evalfile, do appropriate things to the FUNCNAME, BASH_ARGV,
-         BASH_ARGC, BASH_SOURCE, and BASH_LINENO variables
-
-support/mksignames.c
-       - add another fake signal for `trap'; make NSIG+2 == `RETURN'
-
-trap.c
-       - _run_trap_internal now returns an int:  the exit value of the command
-         run as the result of the trap
-       - run_debug_trap now returns an int: the exit value of the command
-         run as the result of the trap
-       - RETURN is a new special trap
-       - new function: set_return_trap(char *command) interface for the rest
-         of the shell, like set_{debug,error}_trap
-       - new function: run_return_trap()
-       - command substitution and other child processes don't inherit the
-         return trap
-
-trap.h
-       - new extern declaration for set_return_trap() and run_return_trap
-       - new defines for RETURN_TRAP; increment BASH_NSIG
-       - change extern declaration for run_debug_trap() since it now returns
-         an int
-
-shell.c
-       - new invocation long option:  --debugger, turns on debugging and
-         sets internal `debugging_mode' variable
-
-execute_cmd.c
-       - new code to save return trap when executing a shell function, so
-         shell functions don't inherit it
-       - run debug trap before binding the variable and running the action
-         list in a `for' command
-       - run debug trap before binding the selection variable and running
-         the query in a `select' command
-       - run debug trap before running matcher in a `case' command
-
-builtins/set.def
-       - new `set -o functrace' (set -T), causes DEBUG trap to be inherited
-         by shell functions
-       - new `set -o errtrace' (set -E), causes ERR trap to be inherited
-         by shell functions
-
-flags.c
-       - new flags -E and -T, control error_trace_mode and
-         function_trace_mode respectively
-
-flags.h
-       - new extern declarations for error_trace_mode and function_trace_mode
-
-                                  2/17
-                                  ----
-doc/bashref.texi
-       - changed the `dircategory' as per Karl Berry's suggestion
-
-doc/texinfo.tex
-       - update to version of 2003/02/04 from texinfo.org
-
-support/texi2dvi
-       - update to version 1.14 from texinfo-4.5 distribution
-
-                                  2/20
-                                  ----
-support/config.{guess,sub}
-       - update to versions of 2002/11/30
-
-lib/readline/doc/manvers.texinfo
-       - renamed to version.texi to match other GNU software
-       - UPDATE-MONTH variable is now `UPDATED-MONTH'
-
-lib/readline/doc/{hist,rlman,rluserman}.texinfo
-       - include version.texi
-
-doc/version.texi
-       - new file, with standard stuff matching other GNU distributions
-
-{doc,lib/readline/doc}/Makefile.in
-       - include right stuff for `version.texi'
-
-lib/readline/doc/{rluserman,rlman,hist}.texinfo
-       - use @copying and @insertcopying and @ifnottex instead of @ifinfo
-       - add FDL as an appendix entitled `Copying This Manual'
-
-lib/readline/doc/{rltech,rluser,hstech,hsuser}.texi
-       - changed the suffix from `texinfo' to `texi'
-
-lib/readline/doc/{rlman,rluserman}.texinfo, doc/bashref.texi
-       - include rltech.texi,rluser.texi,hstech.texi, and hsuser.texi
-
-lib/readline/doc/Makefile.in,doc/Makefile.in
-       - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi
-
-lib/readline/doc/{rlman,rluserman}.texinfo
-       - changed the suffix from `texinfo' to `texi'
-
-lib/readline/doc/hist.texinfo
-       - renamed to history.texi
-
-                                  2/25
-                                  ----
-pathnames.h.in
-       - moved pathnames.h here so value of DEBUGGER_START_FILE can be
-         substituted by configure
-
-aclocal.m4
-       - added AM_PATH_LISPDIR for debugger
-
-configure.in
-       - added some variables: `bashvers', `relstatus' to use info in more
-         than one place
-       - call AM_PATH_LISPDIR
-       - new option:  --enable-debugger, sets DEBUGGER cpp option
-       - new option with AC_ARG_VAR:  DEBUGGER_START_FILE
-       - make `pathnames.h' a file generated by configure
-
-Makefile.in
-       - add rule to create pathnames.h
-
-builtins/declare.def
-       - added extra line number and source file name to `declare -F' output
-         if `--debugger' is used at startup
-
-builtins/evalfile.c
-       - call run_return_trap from source_file before returning the result
-         from _evalfile()
-
-execute_cmd.c
-       - call run_return_trap in execute_function before restoring the old
-         context
-
-builtins/source.def
-       - arrange to save and restore DEBUG traps when sourcing files if
-         function_trace_mode (set -o functrace) is not set
-
-print_cmd.c
-       - broke print_for_command, print_select_command, print_case_command
-         into two functions each:  one to print the `header' and one for
-         the body
-       - print_cond_command is no longer static
-       - print_arith_command now takes a WORD_LIST *, since it doesn't
-         actually do anything with the ARITH_COM it's passed except print
-         the enclosed WORD_LIST
-       - print_arith_command is no longer static
-
-externs.h
-       - extern declarations for print_{for,select,case}_command_head,
-         print_cond_command, print_arith_command
-
-{.,builtins,lib/sh}/Makefile.in
-       - corrected dependencies on pathnames.h, since it's now created in
-         the build directory
-
-                                   3/5
-                                   ---
-lib/glob/glob.c
-       - handle alloca() failing (it's supposed to return NULL)
-       - use malloc() (with its attendent bookkeeping) instead of alloca()
-         in glob_filename()
-
-subst.c
-       - check whether shell_glob_filename returns NULL in
-         glob_expand_word_list
-       - change parameter_brace_expand_rhs to handle cases like
-         ${a[2]:=value} by properly creating the array element instead of a
-         variable named `a[2]' (reported by <opengeometry@yahoo.ca>)
-
-variables.c
-       - change bind_int_variable to use valid_array_reference instead
-         of looking for `[' 
-
-lib/readline/vi_mode.c
-       - check for `a' in _rl_vi_done_inserting so the text inserted by an
-         `a' command can be reinserted with a `.'
-
-lib/readline/readline.c
-       - when entering vi insertion mode in readline_internal_setup(), make
-         sure that _rl_vi_last_key_before_insert is set to `i' so that undo
-         groups and redo work better (reported by <opengeometry@yahoo.ca>)
-
-lib/glob/sm_loop.c
-       - handle ?(...) in a pattern immediately following a `*', instead of
-         ignoring the `(' and treating the `?' as a single-char match, as
-         long as FNM_EXTFLAG is set (reported by <anderson110@poptop.llnl.gov>)
-
-aclocal.m4
-       - new test for presence of struct timezone, BASH_STRUCT_TIMEZONE
-
-config.h.in
-       - add HAVE_STRUCT_TIMEZONE
-
-configure.in
-       - call BASH_STRUCT_TIMEZONE
-
-execute_cmd.c
-       - don't try to use `struct timezone' in calls to gettimeofday unless
-         HAVE_STRUCT_TIMEZONE is defined; use (void *)NULL otherwise
-
-                                  3/20
-                                  ----
-execute_cmd.c
-       - new variable, the_printed_command_except_trap, saves the command
-         being executed before a trap is executed, for the debugger
-
-trap.c
-       - if in debugging mode, let command substitutions and other child
-         processes inherit the DEBUG and ERR traps if the `functrace'
-         (which is really a bad name, given this semantic) or `errtrace'
-         options, respectively, have been set
-
-shell.c
-       - local_pending_command renamed to command_execution_string; no longer
-         static
-
-variables.c
-       - new dynamic variable, BASH_COMMAND, set to the command string
-         currently executing, or the one that caused a trap to execute
-         (mapped to the_printed_command_except_trap)
-       - new variable, BASH_EXECUTION_STRING, set to the argument to the
-         -c invocation option, if the shell was started that way
-
-                                  3/22
-                                  ----
-execute_cmd.c
-       - changed execute_for_command, eval_arith_for_expr,
-         execute_select_command, execute_arith_command, execute_cond_command,
-         execute_simple_command to implement new DEBUG trap semantics
-         for the debugger: if the DEBUG trap commands return a non-zero
-         status and debugging_mode is non-zero, we skip the command to be
-         executed
-
-trap.c
-       - change run_debug_trap for the debugger: if we're in the debugger
-         and the DEBUG trap returns 2 while we're in a function or sourced
-         script, we force a `return'
-
-shell.c
-       - new function, start_debugger(), that sources the debugger start file
-         and turns the debugger on
-
-builtins/shopt.def
-       - new settable option, `extdebug', turns on debugging_mode, as if
-         --debugger had been supplied at invocation (but does not source
-         debugger startup file)
-
-trap.c
-       - make sure that run_exit_trap arranges for `returns' to come back
-         there, too, so a `return' executed by an `exit' invoked within a
-         shell function behaves correctly
-
-support/shobj-conf
-       - change darwin/MacOS X stanza based on advice from mac os x developers
-
-lib/sh/mailstat.c
-       - set the atime member of the synthesized stat struct to 0 if `cur/'
-         is empty, rather than leaving it undefined
-
-                                  3/24
-                                  ----
-builtins/caller.def
-       - new builtin to provide a call stack for the debugger
-
-builtins/evalfile.c
-       - added a second `flags' argument to source_file()
-       - new flag value for flags argument to _evalfile():  FEVAL_NOPUSHARGS.
-         If included in flags arg, it means to not manipulate the BASH_ARGV
-         and BASH_ARGC arrays
-
-builtins/common.h
-       - change prototype for source_file()
-
-builtins/source.def
-       - add flag value to call to source_file():  set to 1 if we replaced
-         the positional parameters
-       - add call to push_args if additional arguments supplied to the
-         source builtin
-       - add call to pop_args in maybe_pop_dollar_vars
-
-execute_cmd.c
-       - run the debug trap in execute_function so the debugger can stop
-         before the first command in a function body is executed
-       - modify subshell_level before executing a builtin or function in a
-         subshell
-       - print `for', `select', `case' command heads when set -x is enabled
-
-print_cmd.c
-       - `xtrace_print_word_list' now takes an additional flags argument,
-         which, if non-zero, says to print indirection_level_string()
-       - new functions to print for, select, and case command heads when
-         set -x is enabled
-       - add spaces after `((' and before `))' in xtrace_print_arith_command
-
-externs.h
-       - changed extern declaration for xtrace_print_word_list
-       - new declarations for xtrace_print_{for,case,select}_command_head()
-
-subst.c
-       - modify subshell_level when executing a command substitution
-
-                                  3/25
-                                  ----
-execute_cmd.c
-       - use `line_number' in executing_line_number instead of looking into
-         the current command if it's a simple command; rearrange code to
-         make this simpler to compile in and out
-       - need to save and restore value of currently_executing_command around
-         calls to debug trap and return trap in execute_function
-
-make_cmd.c
-       - make sure make_arith_for_command() disposes the WORD_LIST * it is
-         passed, since nothing else does and it's not used directly
-
-                                  3/28
-                                  ----
-Makefile.in    
-       - fixed dependencies for `error.o' on shell.h and version.h -- makes
-         parallel makes (gmake -j 4) work correctly
-
-doc/{bash.1,bashref.texi}
-       - documented all new features added to support the debugger
-
-                                   4/1
-                                   ---
-lib/sh/shquote.c
-       - make sure CTLESC and CTLNUL characters are escaped with CTLESC
-         by sh_double_quote, sh_backslash_quote and
-         sh_backslash_quote_for_double_quotes
-         Fixes vulnerability reported by svdb@stack.nl
-
-shell.h
-       - new `pipestatus' member of sh_parser_state_t, to save and restore
-         $PIPESTATUS
-
-parse.y
-       - changes to save_parser_state and restore_parser_state to save and
-         restore $PIPESTATUS
-
-builtins/read.def
-       - add a call to word_list_remove_quoted_nulls before assigning the
-         word list read from standard input to an array variable.  Fixes
-         bug reported by holzhey@ppprs1.phy.tu-dresden.de
-
-                                   4/3
-                                   ---
-execute_cmd.c
-       - in execute_null_command, if redirections are supplied, make sure
-         things like 3</etc/passwd are undone immediately, since they're
-         being done in the current shell
-       - functions now inherit the RETURN trap only if function tracing is
-         on for that function or globally
-
-lib/readline/misc.c
-       - in rl_replace_from_history, don't force rl_replace_line to clear
-         the undo_list, since it might point directly at an undo list
-         from a history entry (to which we have no handle)
-
-                                   4/4
-                                   ---
-trap.c
-       - initialize RETURN_TRAP stuff appropriately in initialize_traps()
-       - let command substitutions inherit the RETURN trap if we're in
-         the debugger and function tracing has been enabled
-
-redir.c
-       - do_redirections and do_redirection_internal now take a single
-         flags argument instead of multiple boolean flags
-
-redir.h
-       - new #defines for flags argument to do_redirection{s,_internal}
-
-execute_cmd.c
-       - change all calls to do_redirection to use new flag values
-
-parse.y
-       - new function, free_pushed_string_input(), an external interface to
-         clear the pushed_string list (alias expansion)
-       - new define SHOULD_PROMPT to say when it's OK to call prompt_again
-         (if the shell is currently interactive and is reading input from
-         the terminal or readline)
-       - make sure shell_getc and read_secondary_line only call prompt_again
-         if SHOULD_PROMPT evaluates to true
-       - prompt_again shouldn't do anything if the shell is currently in the
-         middle of expanding a multiline alias, since we won't be printing a
-         prompt anyway
-
-externs.h
-       - new extern declaration for free_pushed_string_input()
-
-execute_cmd.c
-       - command_substitute and process_substitute now call
-         free_pushed_string_input because they shouldn't deal with any
-         partial alias expansion the parent shell may have started
-
-                                   4/5
-                                   ---
-braces.c
-       - added {x..y} brace expansion, shorthand for {x,x+1,x+2,...,y}:
-         x, y can be integers or single characters; the sequence can be
-         ascending or descending; increment is always 1.  Beware that
-         something like {a..A} can lead to non-letters.
-
-                                   4/7
-                                   ---
-subst.c
-       - change extract_delimited_string and extract_dollar_brace_string to
-         return NULL on an expansion error when no_longjmp_on_fatal_error
-         is set, so the calling functions don't assume that the expansion
-         was successful (primarily the prompt expansion and completion code)
-
-doc/{bash.1,bashref.texi}
-       - documented new sequence generation feature of brace expansion
-
-                                   4/8
-                                   ---
-lib/sh/strstr.c
-       - replacement for strstr(3), in case the C library doesn't provide it
-
-configure.in
-       - check for strstr, add to LIBOBJS if not found
-
-array.c
-       - array_walk now takes a third void * argument; it's passed to `func'
-         as its second argument
-
-array.h
-       - change sh_ae_map_func_t prototype to add void * second argument
-
-                                  4/10
-                                  ----
-array.c
-       - new function: array_keys_to_word_list, returns a list of indices for
-         a given array
-
-array.h
-       - new extern declaration for array_keys_to_word_list
-
-arrayfunc.c
-3      - new function: char *array_keys(), returns a string with keys for a
-         given array, with the appropriate quoting
-
-arrayfunc.h
-       - new extern declaration for array_keys
-
-subst.c
-       - code to implement ksh93-like ${!array[@]} expansion (array[*] works,
-         too), which expands to all the keys (indices) of ARRAY
-
-doc/{bash.1,bashref.texi}
-       - documented new ${!array[@]} expansion
-
-                                  4/19
-                                  ----
-builtins/setattr.def
-       - remove any mention of the `-n' option from readonly builtin's short
-         and long documentation
-
-pcomplib.c
-       - fix progcomp_insert to increase the refcount on the `cs' argument
-         before calling hash_insert -- fixes the problem of multiple calls
-         to progcomp_insert with the same compspec
-
-doc/bash.1
-       - add mention of characters that inhibit history expansion when found
-         immediately following an unquoted `!'
-
-bashline.c
-       - convert the code conditionally compiled in by the NO_FORCE_FIGNORE
-         #define to something runtime-tunable with the `force_fignore'
-         variable (opposite sense).  force_fignore is 1 by default
-
-builtins/shopt.def
-       - new tunable `shopt' option: `force_fignore', controls force_fignore
-         variable and behavior of FIGNORE handling
-
-lib/readline/complete.c
-       - new variable, _rl_complete_show_unmodified, causes completer to list
-         possible completions if more than one completion and partial
-         completion cannot be done
-       - new value for what_to_do argument to rl_complete_internal, `@',
-         indicating that we want the show-unmodified behavior
-       - change rl_completion_type to return `@' when appropriate
-
-lib/readline/bind.c
-       - new bindable variable, show-all-if-unmodified, which controls value
-         of _rl_complete_show_unmodified
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_complete_show_unmodified
-
-lib/readline/doc/rluser.texi
-       - documented show-all-if-unmodified
-
-lib/readline/doc/rltech.texi
-       - documented new `@' value for second argument to rl_complete_internal
-       - documented new return value from rl_completion_type
-
-                                  4/22
-                                  ----
-lib/readline/signals.c
-       - in rl_set_signal, set sa_flags to SA_RESTART for SIGWINCH, if we
-         have POSIX signals -- this is what most applications expect, and
-         they're not prepared to deal with EINTR
-
-                                  4/25
-                                  ----
-bashline.c
-       - take out attempts to suppress readline filename completion when
-         attempting command completion and there is a directory with the
-         same name in the current directory.  #if 0'd for now; maybe make
-         it conditional later
-
-error.c
-       - new variable, gnu_error_format, causes non-interactive errors with
-         line numbers to be printed in the `gnu style' (filename:lineno:)
-         instead of the `shell style' (filename: line lineno:) by
-         error_prolog and parser_error
-
-version.h,support/mkversion
-       - don't put extern function declarations into created version.h any
-         more
-
-version.c,externs.h
-       - add extern declarations for show_shell_version() and
-         shell_version_string(), since they're no longer in version.h
-         (this backs out change from 9/10/2001)
-
-shell.h
-       - don't include version.h
-
-Makefile.in
-       - remove unneeded dependencies on version.h -- only version.o
-         needs it now
-
-builtins/shopt.def
-       - new option `gnu_errfmt', changes error messages with line numbers
-         to use the `standard' gnu format
-
-pcomplete.h
-       - new COPT_BASHDEFAULT and COPT_PLUSDIRS defines
-
-bashline.c
-       - if the COPT_BASHDEFAULT flag is set, try the rest of the bash
-         default completions if a compspec with that flag set generates
-         no matches
-       - broke bash completions out into separate function:
-         bash_default_completion(const char *text, int start, int end,
-         int qc, int in_command_position); change attempt_shell_completion
-         to call it
-
-bashline.h
-       - new extern declaration for bash_default_completion
-
-builtins/complete.def
-       - added code to compgen to call bash_default_completion if a compspec
-         with the COPT_BASHDEFAULT flag set generates no matches from the
-         programmable completion options
-
-doc/{bash.1,bashref.texi}
-       - document new `gnu_errfmt' shopt option
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - document new `-o bashdefault' option to complete and compgen
-
-                                  4/26
-                                  ----
-pcomplete.c
-       - if a compspec has the COPT_PLUSDIRS flag set, generate any
-         directory name completions and add them to the set of possible
-         completions as the last thing in gen_compspec_completions
-
-builtins/complete.def
-       - add new `-o plusdirs' option to complete and compgen; means to
-         do directory name completion in addition to other actions
-         specified by the compspec, and do it last
-
-                                  5/12
-                                  ----
-copy_cmd.c
-       - fix copy_{for,select,case}_command to copy the line member
-
-                                  5/13
-                                  ----
-lib/readline/rlmbutil.h,include/shmbutil.h
-       - new #define MB_INVALIDCH, evaluates to true if return value from
-         mbrtowc or mbrlen denotes an invalid multibyte character
-       - new #define MB_NULLWCH, evaluates to true if return value from
-         mbrtowc or mbrlen denotes a null multibyte character
-
-lib/readline/complete.c
-       - new function, fnwidth(), returns printed length of a filename,
-         correctly handling multibyte characters
-       - new function, fnprint(), displays a filename on rl_outstream
-         correctly handling multibyte characters
-       - use fnwidth() instead of simple strlen() for length calculations
-         in display_matches
-
-lib/readline/{display,mbutil}.c
-       - use MB_INVALIDCH and MB_NULLWCH as appropriate
-
-                                  5/21
-                                  ----
-configure.in
-       - turn off the builtin malloc on GNU/FreeBSD systems (GNU userland,
-         FreeBSD kernel)
-
-                                  5/24
-                                  ----
-pcomplete.c
-       - in programmable_completions, copy the compspec before using it to
-         generate the possible completions, allowing the completion for the
-         command to be changed by the compspec itself without causing a
-         core dump because the shell frees freed memory (reported by
-         marcus.harnish@gmx.net)
-
-parse.y
-       - in shell_getc, don't call notify_and_cleanup in an interactive shell
-         unless the shell is currently reading from the terminal and would
-         print a prompt.  This fixes programmable completions printing job
-         notifications (reported by r.d.green@lancaster.ac.uk)
-       - use SHOULD_PROMPT macro consistently
-
-shell.c
-       - use get_string_value instead of getenv when looking up $TERM and
-         $EMACS to see whether the shell is running under emacs
-       - check for `TERM=dumb' as well as `EMACS=t' to decide whether or
-         not to turn off command-line editing in emacs shell windows
-         (reported by jik@kamens.brookline.ma.us)
-
-                                  5/28
-                                  ----
-expr.c
-       - save and restore the `evalbuf' context, since evalexp can be
-         called recursively (e.g. a[b[c]])
-
-                                  5/29
-                                  ----
-builtins/common.c
-       - in display_signal_list, when displaying for `kill -l' in posix mode,
-         display signal names without the `SIG' prefix
-
-doc/bashref.texi
-       - documented changed to posix mode behavior of kill -l
-
-builtins/kill.def
-       - changed the error message printed when argument is not a pid or
-         job id
-
-doc/{bash.1,bashref.texi}
-       - fixed a slight inconsistency in the different sections describing
-         the `promptvars' option
-
-doc/Makefile.in
-       - new rule to create `bash.info' from `bashref.info' by running sed
-         to change the internal references.  This makes the installed
-         bash.info work right
-       - make the install target install bash.info after it's been modified
-         from bashref.info
-
-                                  5/30
-                                  ----
-builtins/cd.def
-       - after testing with ferror(), call clearerr if ferror() evaluates
-         to true
-
-execute_cmd.c
-       - call clearerr(stdout) after executing a builtin or function,
-         before restoring any redirections
-
-bashhist.c
-       - initialize history_comment_char in bash_history_initialize
-
-builtins/alias.def
-       - if posix mode is enabled, and the `-p' option is not supplied, don't
-         list aliases with a preceding `alias ', as POSIX.2 specifies
-
-doc/bashref.texi
-       - note new posix mode behavior of displaying alias names and values
-       - note new posix mode behavior of trap builtin not checking first
-         argument to be a possible signal specification
-       - note new posix mode behavior of `kill' not accepting signal names
-         with a leading `SIG'
-
-include/stdc.h,lib/readline/rlstdc.h
-       - don't check the __STRICT_ANSI__ define when deciding whether or not
-         to #undef __attribute__
-
-trap.[ch]
-       - decode_signal and signal_object_p take an additional flags arg to
-         satisfy POSIX.2 signal name translation requirements
-       - change decode_signal to honor the new DSIG_NOCASE (match case-
-         insensitively) and DSIG_SIGPREFIX (allow signal specifications
-         with the `SIG' prefix) flags
-
-builtins/{common.c,{trap,kill}.def}
-       - change calls to decode_signal to add the new argument with
-         appropriate values.  For kill, POSIX.2 says case-insensitive without
-         the `SIG' prefix.  For trap, POSIX.2 says applications may decode
-         case-insensitively and with the SIG prefix
-
-builtins/trap.def
-       - when in posix mode, don't check for the first argument being a
-         possible signal spec and revert the signal handling to the
-         original disposition
-
-                                   6/1
-                                   ---
-shell.h
-       - new MATCH_STARSUB define, to tell the callers of the various pattern
-         substitution and removal functions that call string_list to treat
-         "$*" and "${array[*]}" appropriately
-subst.c
-       - if get_var_and_type encounters an array variable subscripted by `*'
-         or `$*', return VT_STARSUB or'd into the variable type value
-       - callers of get_var_and_type check for VT_STARSUB in the returned type
-         this will fix problems with ${*...} not being separated with the
-         first character of $IFS when double-quoted
-       - in parameter_brace_patsub, set MATCH_STARSUB if VT_STARSUB is set by
-         get_var_and_type
-       - change pos_params_pat_subst to call string_list_dollar_star if
-         the match flags include MATCH_STARSUB
-       - change parameter_brace_substring to call array_subrange with an
-         additional argument indicating the character indexing the array
-
-array.c
-       - change array_patsub to join the modified array elements with the
-         first character of $IFS if MATCH_STARSUB is set in the match flags
-         passed in
-       - array_subrange now takes an additional argument indicating the
-         index type -- used to separate with first char of $IFS if the
-         index char is `*' and the expression is double-quoted
-
-array.h
-       - change prototype declaration of array_subrange to add additional arg
-
-                                   6/2
-                                   ---
-doc/FAQ
-       - merged in some updates about POSIX from Andrew Josey
-
-                                   6/3
-                                   ---
-bashjmp.h
-       - new value for jump_to_top_level:  ERREXIT
-
-{eval,shell,subst,trap}.c,builtins/evalstring.c
-       - ERREXIT is (for now) equivalent to EXITPROG as a value from
-         jump_to_top_level
-
-                                   6/9
-                                   ---
-doc/bash.1,lib/readline/doc/readline.3
-       - documented new `show-all-if-unmodified' readline variable
-
-                                  6/14
-                                  ----
-lib/readline/history.c
-       - new function, histdata_t free_history_entry (HIST_ENTRY *h),
-         frees H and its line, returning the application-specific data
-       - use free_history_entry where appropriate
-
-lib/readline/history.h
-       - extern declaration for free_history_entry()
-
-lib/readline/doc/{history.3,hstech.texi}
-       - document free_history_entry
-
-                                  6/16
-                                  ----
-lib/readline/readline.[ch]
-       - changed varions defines for readline/history library versions to 5.0
-
-subst.c
-       - pass information about whether or not an indirectly-expanded variable
-         contains ${array[@]}, ${array[*]}, $@, or $*
-       - new function, chk_atstar, performs checks for ${array[@]},
-         ${array[*]}, $@, or $* for the parameter_brace_expand* functions and
-         sets flags (passed as args) to the results
-       - call chk_atstar from parameter_brace_expand_indir and
-         parameter_brace_expand
-
-                                  6/28
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarified that (...) commands are executed in a subshell environment
-
-                                  6/30
-                                  ----
-lib/readline/bind.c
-       - fix a problem with parsing nested if statements in inputrc files
-         (fix from dimakar@yahoo.com)
-
-                                   7/3
-                                   ---
-{jobs,nojobs}.c
-       - fix places that use the return value from strsignal() to check
-         for NULL return values using a new function, j_strsignal()
-
-builtins/kill.def
-       - removed JOB_CONTROL restriction; kill is now available as a builtin
-         when the shell is built without job control
-
-                                  7/10
-                                  ----
-jobs.c
-       - some systems have WIFCONTINUED but not WCONTINUED; separate the
-         #defines
-
-                                  7/14
-                                  ----
-lib/readline/history.h
-       - new `timestamp' member of a HIST_ENTRY
-       - extern declarations for add_history_time and history_get_time
-
-lib/readline/doc/{history.3,hstech.texi}
-       - document add_history_time and history_get_time
-
-lib/readline/history.c
-       - implementations of history_get_time and add_history_time
-       - change add_history to initialize the timestamp information
-       - change free_history_entry to free the timestamp
-       - change replace_history_entry to duplicate the timestamp
-       - change history_total_bytes to add the memory taken by the time
-         stamps
-
-bashhist.c,builtins/history.def
-       - use free_history_entry where appropriate
-
-lib/readline/histfile.c
-       - changes to read_history_range to deal with new history file format
-         including timestamps
-       - changes to history_do_write to write out the timestamp information
-       - changes to history_truncate_file to understand the timestamp
-         information
-
-                                  7/22
-                                  ----
-doc/{bash.1,bashref.texi}
-       - fixed function declaration documentation to specify that any compound
-         command may be used as the function body, not just a group command
-
-                                  7/23
-                                  ----
-lib/readline/histfile.c
-       - don't allocate space for null timestamps in history_do_write, and
-         don't write out null timestamp entries
-
-parse.y
-       - fix CHECK_FOR_RESERVED_WORD to call time_command_acceptable() and
-         return TIME if the token is "time" and `time' is legal in that
-         context
-
-                                  7/29
-                                  ----
-lib/sh/fmtulong.c
-       - include <inttypes.h> for possible definitions of intmax_t, uintmax_t
-         (reported by ro@techfak.uni-bielefeld.de)
-
-                                  7/30
-                                  ----
-parse.y
-       - remove checking for `time' reserved word from special_case_tokens();
-         use regular mechanism in CHECK_FOR_RESERVED_WORD.  This allows `time'
-         to be aliased.  (Reported by Glenn Morris
-         <gmorris+gmane@ast.cam.ac.uk>)
-
-                                  7/31
-                                  ----
-lib/readline/history.h
-       - extern declaration for history_write_timestamps
-
-lib/readline/histfile.c
-       - don't write timestamps to the history file in history_do_write
-         unless history_write_timestamps is set to non-zero by the application
-         (set to 0 by default)
-
-lib/readline/doc/{hstech.texi,history.3}
-       - document history_write_timestamps
-
-variables.[ch]
-       - new special variable function, HISTTIMEFORMAT; special function
-         sets history_write_timestamps to 1 if HISTTIMEFORMAT is set
-
-                                   8/4
-                                   ---
-builtins/history.def
-       - added support for printing time stamps based on the value of the
-         HISTTIMEFORMAT variable when displaying history entries
-
-doc/{bash.1,bashref.texi}
-       - added description of new HISTTIMEFORMAT variable
-
-                                   8/5
-                                   ---
-config-top.h
-       - remove /usr/ucb from any default paths
-
-mailcheck.c
-       - make_default_mailpath now returns NULL if DEFAULT_MAIL_DIRECTORY
-         is not defined
-       - remember_mail_dates now returns if make_default_mailpath returns
-         NULL
-
-config-bot.h
-       - reorganized the sections; provide an explicit placeholder for
-         builders to #undef any feature defines they don't want that
-         configure creates for them, like the default mail path
-
-                                   8/9
-                                   ---
-config.h.in
-       - add HAVE_REGEX_H, HAVE_REGCOMP, HAVE_REGEXEC for detection of POSIX.2
-         regular expression functions
-       - add COND_REGEXP define to enable and disable the =~ operator for
-         matching extended regular expressions in [[...]] commands
-
-configure.in
-       - new option, --enable-cond-regexp, enables =~ and code to perform
-         regular expression matching in [[...]]
-
-config-bot.h
-       - undef COND_REGEXP if the OS doesn't provide posix regexp support
-
-doc/bashref.texi
-       - documnent new --enable-cond-regexp option to configure
-
-                                  8/18
-                                  ----
-support/shobj-conf
-       - support for shared objects on FreeBSD-gnu (from Robert Millan)
-
-                                  8/25
-                                  ----
-lib/sh/shmatch.c
-       - new file, shell interface to posix extended regular expression
-         matching
-
-externs.h
-       - new extern declarations for functions in shmatch.c
-
-execute_cmd.c
-       - incorporate code into execute_cond_node that does extended regular
-         expression matching for the =~ operator
-
-parse.y
-       - add `=~' to the list of binary operators accepted by the conditional
-         command parser
-
-doc/{bash.1,bashref.texi}
-       - documented =~ conditional binary operator and the BASH_REMATCH
-         variable
-
-                                  8/27
-                                  ----
-lib/readline/display.c
-       - take multibyte characters into account when looking for quoted
-         substrings on which to do completion (fix from jir@yamato.ibm.com)
-
-lib/readline/util.c
-       - fix typo in _rl_strpbrk
-
-lib/readline/rldefs.h
-       - use function version of _rl_strpbrk in multibyte locales, because
-         it understands to skip over special characters in multibyte
-         character sequences
-
-                                  8/28
-                                  ----
-jobs.c
-       - in wait_for, check for window size changes if a job that exits due
-         to a signal or is stopped was in the foreground, not just if it's
-         the current job
-
-                                  9/10
-                                  ----
-support/config.{guess,sub}
-       - add support to recognize FreeBSD running on the amd64
-
-subst.c
-       - if the new `fail_glob_expansion' variable is non-zero, globbing that
-         fails to match anything causes an expansion error
-
-builtins/shopt.def
-       - new `failglob' expansion:  if enabled, failed globs cause an error
-
-test/shopt.right
-       - take `failglob' into account
-
-doc/{bash.1,bashref.texi}
-       - documented new `failglob' option and its effects
-
-                                  9/12
-                                  ----
-findcmd.c
-       - fix file_status to treat the mode bits and uid right -- in particular,
-         don't assume the `other' bits always apply.  Bug reported by
-         <moseley@hank.org>; fix inspired by <carlo@alinoe.com>
-
-command.h
-       - new word flag: W_NOCOMSUB, meaning to not perform command
-         substitution on a word
-
-subst.c
-       - new flag for param_expand: PF_NOCOMSUB.  If non-zero, $(...)
-         command substitutions are not expanded, but returned unchanged
-       - change expand_word_internal to pass through `` command substitutions
-         unchanged if (word->flags & W_NOCOMSUB) != 0
-       - change expand_word_internal to pass PF_NOCOMSUB to param_expand
-         if (word->flags & W_NOCOMSUB) != 0
-
-builtins/shopt.def
-       - rename set_interactive_comments to set_shellopts_after_change, which
-         more accurately reflects its purpose
-
-syntax.h
-       - add a define for isblank() in case the system doesn't provide one
-
-jobs.c
-       - change raw_job_exit_status to understand `pipefail', using the new
-         `pipefail_opt' variable
-
-flags.[ch]
-       - declare pipefail_opt
-       - reset pipefail_opt to 0 in reset_shell_flags
-
-builtins/set.def
-       - add `set -o pipefail' and document it in help output
-
-doc/{bash.1,bashref.texi}
-       - document `set -o pipefail' and the effect of the pipefail option
-
-mksyntax.c,syntax.h
-       - sh_syntaxtab is no longer `const'
-       - new generated variable, sh_syntabsiz, set to number of entries in
-         sh_syntaxtab, written to generated syntax.c
-
-locale.c
-       - new function, locale_setblanks(), sets each member of the current
-         locale's <blank> class to have the CSHBRK flag in sh_syntaxtab
-
-                                  9/17
-                                  ----
-arrayfunc.c
-       - change convert_var_to_array to not set array[0] to a NULL value
-         (if the scalar variable had no value; e.g., after being created
-         with `local arrayvar')
-
-lib/readline/display.c
-       - save and restore the value of prompt_invis_chars_first_line in
-         rl_{save,restore}_prompt, and reinitialize it to 0 before printing
-         something in the message area
-
-lib/readline/bind.c
-       - new functions: rl_bind_keyseq_if_unbound_in_map(ks, func, kmap);
-         binds key sequence KS to function FUNC in keymap KMAP, and
-         rl_bind_keyseq_if_unbound (ks, func); binds key sequence KS to
-         function FUNC in the current keymap
-
-lib/readline/readline.h
-       - extern function declarations for rl_bind_keyseq_if_unbound_in_map and
-         rl_bind_keyseq_if_unbound
-
-lib/readline/{readline,terminal}.c
-       - _rl_bind_if_unbound -> rl_bind_keyseq_if_unbound
-
-lib/readline/{bind.c,rlprivate.h}
-       - remove _rl_bind_if_unbound
-
-                                  9/18
-                                  ----
-lib/readline/doc/rltech.texi
-       - document rl_bind_keyseq_if_unbound and
-         rl_bind_keyseq_if_unbound_in_map
-
-                                  9/19
-                                  ----
-lib/readline/bind.c
-       - new functions rl_bind_key_if_unbound_in_map and
-         rl_bind_key_if_unbound; analogous to (and implemented in terms of)
-         keyseq functions
-       - rl_bind_keyseq_in_map: a new function, equivalent to rl_set_key
-         (which remains for backwards compatibility); changed callers to
-         use it
-       - new function, rl_bind_keyseq, equivalent to rl_bind_keyseq_in_map
-         with a third argument of _rl_keymap
-
-lib/readline/readline.h
-       - extern declarations for rl_bind_key_if_unbound_in_map and
-         rl_bind_key_if_unbound
-       - extern declarations for rl_bind_keyseq_in_map and rl_bind_keyseq
-
-lib/readline/doc/rltech.texi
-       - document rl_bind_keyseq and rl_bind_keyseq_in_map
-
-configure.in
-       - require at least readline-5.0
-
-config-bot.h
-       - define SYS_SIGLIST_DECLARED if it's not defined, but
-         HAVE_DECL_SYS_SIGLIST is, to deal with differences between
-         autoconf versions
-
-bashline.c
-       - use rl_bind_key_if_unbound_in_map when binding bash keybindings in
-         initialize_readline(), so inputrc files can override them
-
-                                  9/22
-                                  ----
-lib/readline/histsearch.c
-       - do better bounds checking for history_offset and history_length in
-         history_search_internal
-
-builtins/history.def
-       - in delete_last_history(), make sure we don't leave the history
-         offset longer than the history length after calling delete_histent
-
-                                  9/23
-                                  ----
-jobs.c
-       - small change to notify_of_job_status so job status messages get
-         printed even if the shell was started to run `-c command'.  The
-         old behavior was intentional, but I cannot remember why, so we'll
-         try it the other way for a while (debian bash bug #211693)
-
-                                  9/24
-                                  ----
-jobs.c
-       - slightly modify change from 9/23 so that jobs started to run
-         command substitutions don't print job status messages
-
-                                  9/25
-                                  ----
-lib/readline/search.c
-       - when reading a non-incremental search string from the terminal,
-         use a separate undo list rather than chaining it to the undo list
-         from the rest of the line, since the whole undo list will get
-         freed when the search string is complete
-
-lib/readline/readline.h
-       - changed the defines guarding the stdarg prototype for rl_message to
-         match what's actually used in display.c, where it's defined
-
-                                  9/26
-                                  ----
-[bash-3.0-alpha released]
-
-                                  9/29
-                                  ----
-lib/sh/shmatch.c
-       - fix to build correctly when arrays are not compiled into the shell
-
-subst.c
-       - fix command substitution to run any exit trap defined in the
-         command substitution before returning; the exit trap is not inherited
-         from the calling shell
-
-lib/readline/shell.c
-       - change sh_set_lines_and_columns to free the memory allocated and
-         passed to setenv(), since setenv is specified by POSIX to allocate
-         new memory and copy its arguments
-
-jobs.c
-       - change logic in make_child so that every child process attempts to
-         set the terminal's process group to the pipeline's process group
-         when PGRP_PIPE is defined, just like when it's undefined.  This is
-         reported to fix some tricky synchronization problems on Red Hat
-         Enterprise Linux 3.  Fix from Ernie Petrides <petrides@redhat.com>.
-
-                                  9/30
-                                  ----
-builtins/printf.def
-       - tescape no longer needs a `trans_squote' argument, since it's the
-         same as the `sawc' argument.  The `sawc' argument now means to do
-         the %b argument processing if non-null
-       - fix processing of octal constants for %b arguments (\0 followed by
-         up to three octal digits) and other escape sequences (\ followed by
-         up to three octal digits)
-       - hex constants `\xHHH' are now allowed to contain any positive
-         number of digits; previously they were restricted to two [removed]
-       - allow two new escape sequences: \" and \?, for compatibility with
-         ksh93 and ANSI C
-
-doc/{bash.1,bashref.texi}
-       - documented processing that printf performs for arguments to %b
-         escape sequences
-
-lib/sh/strtrans.c
-       - add \" and \? to escape sequences recognized by `echo -e'
-
-                                  10/1
-                                  ----
-version.c
-       - use snprintf instead of sprintf if configure tells us we have it
-
-                                  10/3
-                                  ----
-subst.c
-       - in list_remove_pattern, take into account the fact that one of the
-         list elements may be NULL, and don't free the result of
-         remove_pattern() without checking
-       - in remove_pattern, return savestring(param) if *param == '\0',
-         since callers expect to free() non-null return values
-
-                                  10/4
-                                  ----
-subst.c
-       - change verify_substring_values to make it clearer that the first
-         offset deals with array indices and the second deals with numbers
-         of elements, when doing array subranges with ${a[@]:e1:e2}
-
-array.c
-       - change array_subrange to make it explicit that the second offset
-         argument is a count of the desired number of elements, not an
-         ending index.  This deals with sparse arrays correctly.
-
-                                  10/6
-                                  ----
-variables.c
-       - fix memory leak in assign_in_env
-
-                                  10/8
-                                  ----
-subst.c
-       - in parameter_brace_expand, check that the last characters are `]}'
-         before checking for ${!array[@]}
-
-execute_cmd.c,builtins/source.def
-       - push and pop the args (BASH_ARGV and BASH_ARGC) when executing a
-         shell function or sourcing a script only when in debugging mode
-
-                                  10/11
-                                  -----
-arrayfunc.c
-       - make sure array_variable_name returns values for the SUBP and LENP
-         arguments if they're non-null, since callers expect to use them
-         even if the array subscript is bad
-
-error.c
-       - call exit_shell instead of sh_exit from parser_error and
-         report_error so the right things happen (running exit trap, doing
-         the right interactive cleanup, etc.)
-
-lib/readline/complete.c
-       - new variable, rl_completion_quote_character, set to any quote char
-         readline thinks it finds before any application completion
-         function is called
-       - new variable, rl_completion_suppress_quote, settable by an
-         application-specific completion function.  If set to non-zero, the
-         completion code does not append a closing quote in append_to_match
-
-lib/readline/readline.h
-       - extern declarations for rl_completion_quote_character and
-         rl_completion_suppress_quote
-
-bashline.c
-       - set rl_completion_suppress_quote in command_subst_completion_function
-         because that would be inserted before any closing "`" or ")", which
-         is somewhat disconcerting
-
-lib/readline/doc/rltech.texi
-       - documented rl_completion_suppress_quote and
-         rl_completion_quote_character
-
-                                  10/13
-                                  -----
-bashhist.c
-       - use sv_histchars instead of setting history_comment_char directly in
-         bash_initialize_history so assignments to $histchars made in
-         ~/.bashrc are honored
-
-                                  10/21
-                                  -----
-trap.c
-       - make sure run_exit_trap sets `running_trap' appropriately
-       - new variable, trap_saved_exit_value, set to last_command_exit_value
-         before running any trap commands; available to the rest of the
-         shell; use trap_saved_exit_value to replace some function-local
-         variables
-
-builtins/exit.def
-       - if the shell is running the exit trap, and no argument is given
-         to `exit', use trap_saved_exit_value as the exit status instead
-         of the last command exit value (which could be the previous command
-         run in the exit trap), as required by POSIX.2
-
-                                  10/25
-                                  -----
-doc/{bash.1,bashref.texi}
-       - add `alias' to the list of documented `assignment statement' builtins
-
-                                  11/1
-                                  ----
-doc/bash.1
-       - remove the `.' from the sample $PATH value
-
-parse.y
-       - make sure parse_compound_assignment prompts with $PS2 if it reads
-         a newline while parsing the compound assignment statement. Bug
-         reported by Stephane Chazelas
-       - parse_string_to_word_list now takes a new second argument: `int flags'
-       - new parser state flag: PST_COMPASSIGN; indicates that the shell is
-         parsing a compound assignment statement
-       - parse_string_to_word_list turns on PST_COMPASSIGN if `flags' arg
-         has low bit set
-       - turn PST_COMPASSIGN on and off in parse_compound_assignment
-
-externs.h
-       - change prototype declaration for parse_string_to_word_list
-
-arrayfunc.c
-       - change call to parse_string_to_word_list to add new flags arg
-
-general.c
-       - assignment() takes a new `flags' second argument
-       - if `flags' is non-zero, accept `[' as a legal assignment statement
-         starter character (for parsing compound array assignments)
-
-general.h
-       - add new argument to prototype declaration for assignment()
-
-parse.y,{subst,variables}.c, builtins/{setattr,declare}.def
-       - change calls to assignment() (parse.y calls with flags == 1 when
-         parser_state inlcudes PST_COMPASSIGN)
-
-arrayfunc.c
-       - in assign_array_var_from_string(), don't treat an expanded word
-         of the form [ind]=value specially unless the W_ASSIGNMENT flag is
-         set.  This means that words that are the result of expansions but
-         happen to have the same format as compound assignment statement
-         words will not be treated as such.  For instance
-
-               v='[12]=foobar'
-               a=( $v )
-
-         will result in a[0]='[12]=foobar' instead of a[12]=foobar.  This
-         is closer to how `regular' assignment statements are treated and
-         compatible with ksh93.  Bug reported by Stephane Chazelas
-
-shell.c
-       - new --protected argument, disables command substitution when used
-         with --wordexp (like --wordexp, it remains undocumented)
-       - change run_wordexp to turn on the W_NOCOMSUB flag in each word
-         to be expanded if protected_mode is set
-
-                                  11/7
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarified the language concerning inherited signal dispositions and
-         when traps are run
-
-support/shobj-conf
-       - slight changes to the darwin (Mac OS X) stanza for MacOS X 10.3
-         (for the readline shared library builds, which shares this script)
-
-lib/readline/histexpand.c
-       - change to make `^' behave as equivalent to word one, as csh does,
-         and as the documentation states
-
-lib/readline/display.c
-       - in update_line, make sure to use col_lendiff in all calculations
-         where the cursor position is concerned (like when calculating
-         the value of _rl_last_c_pos).  Fixes bug reported by Andreas
-         Schwab
-
-                                  11/12
-                                  -----
-trap.c
-       - make _run_trap_internal catch `return' builtin longjmps and clean
-         up before longjmping on to where the return was intended to go
-         (fixes bug with not turning off SIG_INPROGRESS flag when `return'
-         executed in trap command)
-
-                                  11/18
-                                  -----
-builtins/cd.def
-       - in posix mode, set errno to ENOTDIR if canonicalization fails,
-         unless the canonicalization functions leave it set to ENOENT
-
-                                  11/25
-                                  -----
-make_cmd.c
-       - in make_simple_command, don't blindly dereference element.redirect
-
-parse.y
-       - the list_terminator production now has an `int' value so it can be
-         used in other grammar productions
-       - add a rule that makes `time' on a line by itself time a null
-         command (this is iffy)
-
-                                  11/28
-                                  -----
-subst.c
-       - change the pattern substitution code (${var//pat/rep}) to use the
-         same pattern expansion function (getpattern()) as the pattern
-         removal expansions.  This has the effect of no longer performing
-         quote removal on the pattern before trying to match it.  This
-         fixes an incompatibility with ksh93 reported on comp.unix.shell
-
-nojobs.c
-       - add replacement function for siginterrupt on the off chance that a
-         system has posix signals but lacks siginterrrupt
-
-lib/readline/display.c
-       - fix from Tim Waugh at Red Hat to speed up inserting characters into
-         long lines in a UTF-8 environment by optimizing the calculation of
-         the first difference between old and new lines by checking to see
-         whether the old line is a subset of the new
-
-                                  11/29
-                                  -----
-lib/malloc/stats.c
-       - break code that opens file (and interprets %p) into separate function
-         _imalloc_fopen(char *s, char *fn, char *def, char *defbuf, size_t defsiz)
-         for use by rest of library
-       - default stats file is now `stats.PID'
-
-lib/malloc/trace.c
-       - new function, malloc_set_tracefn (char *s, char *fn), sets tracing
-         to the file named by FN (with %p interpolated as the pid), using
-         some default if FN is NULL
-
-lib/malloc/shmalloc.h
-       - new extern declaration for malloc_set_tracefn
-
-                                  12/4
-                                  ----
-execute_cmd.c
-       - combined several common strings from do_piping() into one
-         dup_error() function
-
-builtins/common.[ch]
-       - new function, `sh_notbuiltin(s)' prints error message about s not
-         being a shell builtin
-
-builtins/{builtin,enable}.def
-       - call sh_notbuiltin instead of using literal string
-
-{arrayfunc,expr,error}.c
-       - use one string variable for `bad array subscript' error message; use
-         in calls to various error reporting functions
-
-Makefile.in
-       - add variables for localedir and the PACKAGE_* variables, auto-set
-         by configure
-
-configure.in
-       - un-cache values for gettext, textdomain, and bindtextdomain if they're
-         not in libc but in libintl so the right variables get set
-
-bashintl.h
-       - add necessary defines for marking strings to be translated using
-         gettext
-
-locale.c
-       - set textdomain and directory in set_default_locale
-       - don't call textdomain with the value of $TEXTDOMAIN, since we don't
-         want to override the default domain ("bash")
-       - don't call bindtextdomain unless default_domain already has a value
-       - when translating $"..." strings, use dgettext with the script's
-         default domain (value of $TEXTDOMAIN)
-
-                                  12/9
-                                  ----
-builtins/mkbuiltins.c
-       - include "bashintl.h" in the generated "builtins.c"
-
-support/{config.rpath,mkinstalldirs}
-       - new files to support gettext i18n
-
-ABOUT-NLS
-       - new readme file for gettext internationalization
-
-po/{Makefile.in.in,Rules-quot,boldquot.sed,en@boldquot.header,en@quot.header,insert-header.sin,quot.sed,remove-potcdate.sin}
-po/{POTFILES.in,bash.pot}
-       - new files for gettext
-
-lib/intl
-       - new directory, with libintl stuff from gettext
-
-aclocal.m4
-       - add m4 files from gettext distribution needed by libintl
-
-configure.in
-       - create po/Makefile.in and lib/intl/Makefile in AC_OUTPUT
-       - add call to AM_GNU_GETTEXT to initialize gettext stuff
-
-Makefile.in
-       - use mkinstalldirs instead of mkdirs in the `installdirs' target
-       - changes for intl/ and po/ subdirectories in build and install
-       - changes to have libintl linked in, as determined by configure
-       - changes to have libintl built, just in case it's used (though I'd
-         rather not)
-
-                                  12/10
-                                  -----
-config.h.in
-       - additional #defines required by the libintl library
-       - add ENABLE_NLS define for AM_GNU_GETTEXT
-       - take out defines for HAVE_{BINDTEXTDOMAIN,GETTEXT,TEXTDOMAIN}
-
-configure.in
-       - removed old tests for libintl and gettext/textdomain/bindtextdomain
-
-locale.c
-       - remove HAVE_GETTEXT code; we have gettext unconditionally now
-
-bashintl.h
-       - change to include "gettext.h" and remove the conditional code based
-         on whether or not gettext is present
-
-                                  12/16
-                                  -----
-lib/readline/vi_mode.c
-       - fix problem with rl_vi_eWord that caused it to skip over the last
-         character of a word if invoked while point was on the next-to-last
-         character
-
-                                  12/18
-                                  -----
-{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
-{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
-{subst,test,trap,variables,version,xmalloc}.c
-parse.y
-builtins/{common,evalfile,getopt}.c
-builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
-builtins/{hash,help,history,jobs,kill,printf,pushd,read,return,set,setattr}.def
-builtins/{shift,shopt,source,suspend,type,ulimit,umask}.def
-lib/sh/{fmtulong,netopen}.c
-       - include "bashintl.h" for gettext defines
-
-Makefile.in
-       - add `-DBUILDTOOL' to CFLAGS for buildversion.o
-
-bashintl.h
-       - if `BUILDTOOL' is defined, define ENABLE_NLS to 0 so we don't have
-         to compile and link in the gettext stuff
-
-Makefile.in,lib/sh/Makefile.in,builtins/Makefile.in
-       - update dependencies on bashintl.h and include/gettext.h
-
-                                  12/19
-                                  -----
-{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
-{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
-{subst,test,trap,variables,version,xmalloc}.c
-builtins/{common,evalfile,getopt}.c
-builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
-builtins/{hash,help,history,jobs,kill,let,printf,pushd,read,return,set}.def
-builtins/{setattr,shift,shopt,source,suspend,type,ulimit,umask}.def
-lib/sh/{fmtulong,netopen}.c
-lib/malloc/{malloc,stats,table,watch}.c
-       - mark up strings in source files for gettext processing
-
-lib/malloc/imalloc.h
-       - include "bashintl.h" if SHELL is defined, otherwise make _(x) an
-         identity define
-
-lib/malloc/Makefile.in
-       - add dependencies on ${topdir}/bashintl.h and ${BASHINCDIR}/gettext.h
-
-                                  12/21
-                                  -----
-bashline.c
-       - make sure we index into rl_line_buffer with indexes > 0 in
-         attempt_shell_completion
-
-                                  12/31
-                                  -----
-Makefile.in
-       - descend into `po' and run make recursively for the various clean
-         targets
-
-                                1/4/2004
-                                --------
-include/shmbutil.h
-       - two new macros:  BACKUP_CHAR(str, strsize, i), which backs up one
-         multibyte character in STR starting at index I, and
-         BACKUP_CHAR_P(str, strsize, p), which backs up one multibyte
-         character in STR starting at P, which is a char *
-
-                                   1/6
-                                   ---
-pcomplete.c
-       - in pcomp_filename_completion_function, use the quote character
-         readline found (and assigned to rl_complete_quote_character) when
-         dequoting the filename by a completion call from readline (when
-         rl_dispatching != 0)
-
-bashline.c
-       - ditto for bash_directory_completion_matches
-
-                                   1/7
-                                   ---
-lib/readline/complete.c
-       - new variable,  rl_completion_found_quote, set to non-zero value if
-         readline finds what it thinks is quoting in the word to be completed
-
-lib/readline/readline.h
-       - extern declaration for rl_completion_found_quote
-
-                                   1/8
-                                   ---
-lib/readline/doc/rltech.texi
-       - documented rl_completion_found_quote
-
-lib/readline/complete.c
-       - in compute_lcd_of_matches, if it looks like what the user typed was
-         dequoted before generating filename matches, dequote the user's
-         text again before figuring out the case-insensitive lcd
-
-                                   1/9
-                                   ---
-lib/readline/display.c
-       - fix from Edward Catmur <ed@catmur.co.uk> to logic that handles
-         invisible characters in prompt string.  Original code was wrong
-         about local_prompt_prefix; it gave incorrect results when prompt
-         contained invisible characters after a line break
-
-                                  1/10
-                                  ----
-subst.c
-       - new function, mb_substring(), does character (possibly multibyte)
-         oriented rather than strictly byte-oriented substring extraction.
-         The passed indices, rather than strictly indexing into the string,
-         indicate character positions that need to be calculated.  From
-         Tim Waugh <twaugh@redhat.com>
-       - change parameter_brace_substring to use mb_substring if necessary
-
-included/shmbutil.h
-       - new define SADD_MBQCHAR_BODY, common code for adding a quoted
-         (preceded by CTLESC) multibyte character to an accumulating string
-         in the subst.c expansion code
-
-subst.c
-       - use SADD_MBQCHAR_BODY in expand_word_internal
-       - new static function, mb_getcharlens, allocates and returns an array
-         of character lengths for (possibly multibyte) characters in the
-         argument string
-       - change pattern matching operations to use while loops instead of
-         for loops to handle multibyte characters better (no more simple
-         increment or decrement)
-       - change pattern matching operations to use multibyte character
-         operations instead of simple increments and decrements.  Don't
-         use BACKUP_CHAR_P -- use the mblen array instead, because that
-         avoids the N**2 behavior of having to count from the beginning
-         of the string each time you want to back up one character.  Changes
-         to remove_pattern and match_pattern
-
-                                  1/12
-                                  ----
-lib/readline/display.c
-       - make expand_prompt count multbyte characters in the prompt string
-         by using _rl_find_next_mbchar (and copying possibly more than one
-         byte) instead of a simple increment and single byte copy
-
-                                  1/13
-                                  ----
-lib/readline/display.c
-       - expand_prompt takes a new reference argument -- it returns
-         the actual count of (possibly multibyte) characters displayed
-         on the screen
-       - don't short-circuit in expand_prompt unless we're not going to
-         be using any multibyte characters
-       - change calls  to expand_prompt to pass an argument for the
-         number of physical characters the prompt occupies
-         (prompt_physical_chars)
-       - initialize `lpos' (the physical cursor position) from
-         prompt_physical_chars in rl_redisplay
-
-lib/readline/mbutil.c
-       - in _rl_find_prev_mbchar_internal, if mbrtowc returns -1 or -2, and
-         we assume that the character is a single-byte char, make sure we
-         update `prev' so it doesn't get lost.  Fixes problems encountered
-         when a non-ascii char is the last char on the line and we're moving
-         back past it with ^B, and other display problems caused by the same
-         situation
-
-                                  1/15
-                                  ----
-lib/readline/doc/rltech.texi
-       - document RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE in the
-         description of rl_expand_prompt()
-
-                                  1/20
-                                  ----
-bashline.c
-       - in initialize_readline, make sure M-C-j and M-C-m are still bound to
-         vi-editing-mode before unbinding them -- they may have been rebound
-         in an inputrc
-
-variables.c
-       - in unbind_variable, unset attributes other than `local' and exported
-         (if the variable came from a temporary environment) when unsetting a
-         local variable inside a function
-
-                                  1/21
-                                  ----
-configure.in
-       - add libintl build directory to the list of include directories if
-         it's being built (using INTL_BUILDDIR)
-
-Makefile.in,{builtins,lib/{sh,malloc}}/Makefile.in
-       - substitute LIBBUILD as ${BUILD_DIR}/${LIBSUBDIR}
-       - define INTL_BUILDDIR as ${LIBBUILD}/intl
-
-{builtins,lib/sh}/Makefile.in
-       - make sure INTL_INC is added to  the list of include directories
-       - make sure INTL_LIBSRC is defined with the correct value
-
-{configure,Makefile,{builtins,lib/sh}/Makefile}.in
-       - substitute LIBINTL_H as ${INTL_BUILDDIR}/libintl.h
-
-Makefile.in,builtins/Makefile.iin
-       - all files depending on bashintl.h also depend on ${LIBINTL_H}
-         (which may be empty)
-
-Makefile.in
-       - make a rule telling how to build lib/intl/libintl.h if necessary
-
-                                  1/24
-                                  ----
-builtins/read.def
-       - make sure that the array name supplied as an argument to -a is a
-         valid identifier
-
-parse.y
-       - make the \W expansion abbreviate $HOME with a ~ (seems to be more
-         useful)
-
-doc/{bash.1,bashref.texi}
-       - document new behavior of \W
-
-subst.c
-       - make sure parameter_brace_expand_rhs uses the first character of
-         $IFS when making the string to return from the expanded word
-         (which, in the case of "$@" or $@, contains multiple words that
-         need to be separated)
-
-                                  1/25
-                                  ----
-builtins/common.c
-       - change get_job_spec to make `%' by itself or an empty argument
-         return NO_JOB
-
-jobs.h
-       - new possible value for a job spec return value:  BAD_JOBSPEC
-         (for syntactically invalid specs, like the empty string)
-
-shell.c
-       - in open_shell_script, check to see whether or not we can find and
-         open the filename argument before setting dollar_vars[0] or
-         manipulating BASH_SOURCE, so the error messages come out better
-
-subst.c
-       - in string_list_internal, short-circuit right away to savestring()
-         if the list only has a single element
-
-                                  1/28
-                                  ----
-lib/readline/rltypedefs.h
-       - new set of typedefs for functions returning char * with various
-         arguments (standard set)
-
-lib/readline/complete.c
-       - new function pointer, rl_completion_word_break_hook, called by
-         _rl_find_completion_word, used to set word break characters at
-         completion time, allowing them to be position-based
-
-lib/readline/doc/rltech.texi
-       - documented rl_completion_word_break_hook
-
-lib/readline/kill.c
-       - added new rl_unix_filename_rubout, which deletes one filename
-         component in a Unix pathname backward (delimiters are whitespace
-         and `/')
-
-lib/readline/readline.h
-       - extern declaration for rl_unix_filename_rubout
-
-lib/readline/funmap.c
-       - new bindable readline command `unix-filename-rubout'
-
-lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
-       - documented `unix-filename-rubout'
-
-                                  1/29
-                                  ----
-lib/readline/histexpand.c
-       - change history_tokenize_internal to handle non-whitespace delimiter
-         characters by creating separate fields (like the shell does when
-         splitting on $IFS)
-
-                                  1/30
-                                  ----
-lib/glob/xmbsrtowcs.c
-       - new function, xdupmbstowcs, for convenience:  calls xmbsrtowcs
-         while allocating memory for the new wide character string
-       - some small efficiency improvments to xmbsrtowcs
-
-include/shmbutil.h
-       - extern declaration for xdupmbstowcs
-
-lib/glob/strmatch.h
-       - include config.h for definition of HANDLE_MULTIBYTE
-       - remove the HAVE_LIBC_FNM_EXTMATCH tests
-       - new extern declaration for wcsmatch(whchar_t *, wchar_t *, int)
-
-configure.in
-       - remove call to BASH_FUNC_FNMATCH_EXTMATCH; it's no longer used
-
-lib/glob/smatch.c
-       - simplify xstrmatch() by using xdupmbstowcs() instead of inline code
-
-lib/glob/glob.c
-       - modify mbskipname() to avoid the use of alloca
-       - simplify mbskipname() by using xdupmbstowcs() instead of inline code
-       - simplify glob_pattern_p() by using xdupmbstowcs() instead of
-         inline code
-       - fix memory leak in wdequote_pathname
-       - simplify wdequote_pathname() by using xdupmbstowcs() instead of
-         inline code
-
-lib/glob/strmatch.c
-       - new function, wcsmatch(), `exported' wide-character equivalent of
-         strmatch()
-
-subst.c
-       - old match_pattern is now match_upattern
-       - match_pattern now either calls match_upattern or converts
-         mbstrings to wide chars and calls match_wpattern
-       - match_upattern reverted to old non-multibyte code
-       - new function: match_pattern_wchar, wide character version of
-         match_pattern_char
-
-                                   2/1
-                                   ---
-subst.c
-       - old remove_pattern is now remove_upattern
-       - remove_upattern reverted to old non-multibyte code (pre-Waugh patch)
-       - new multibyte version of remove_pattern: remove_wpattern
-       - remove_pattern now calls either remove_upattern or converts a
-         multibyte string to a wide character string and calls
-         remove_wpattern
-       - new function, wcsdup, wide-character version of strdup(3)
-
-                                   2/4
-                                   ---
-print_cmd.c
-       - temporarily translate a >&filename redirection from
-         r_duplicating_output_word to r_err_and_out (as the expansion code
-         in redir.c does) so it prints without a leading `1' (file
-         descriptor)
-
-                                   2/5
-                                   ---
-aclocal.m4
-       - add a check for wcsdup to BASH_CHECK_MULTIBYTE
-
-config.h.in
-       - add HAVE_WCSDUP define
-
-                                   2/9
-                                   ---
-builtins/shift.def
-       - fix a call to sh_erange that possibly dereferences a NULL pointer
-
-                                  2/12
-                                  ----
-general.c
-       - start at a general set of file property checking functions:
-         file_isdir(), file_iswdir() (is writable directory)
-
-general.h
-       - extern declarations for new functions
-
-lib/sh/tmpfile.c
-       - use file_iswdir() to make sure the temporary directory used for
-         here documents and other temp files is writable in get_sys_tmpdir()
-
-                                  2/17
-                                  ----
-bashline.c
-       - fix conditional binding of emacs-mode M-~ -- there is a default
-         binding for it (rl_tilde_expand), so a straight call to
-         rl_bind_key_if_unbound_in_map doesn't do the right thing
-
-                                  2/27
-                                  ----
-[bash-3.0-beta1 released]
-
-                                  2/29
-                                  ----
-subst.c
-       - fixed expansion so referencing $a, when a is an array variable
-         without an element assigned to index 0, exits the shell when
-         `-u' is enabled
-
-expr.c
-       - make the exponentiation operator (**) associative, so things like
-         2**3**4  work right (change `if' to `while')
-
-                                   3/3
-                                   ---
-lib/sh/strftime.c
-       - SCO Unix 3.2, like Solaris, requires that the system's `timezone'
-         variable be declared as long
-
-lib/readline/{bind,histfile,input,parens}.c
-       - changes for Tandem (including `floss.h' (?))
-
-                                   3/4
-                                   ---
-subst.c
-       - change param_expand to quote the entire expanded string instead
-         of just the escape characters if the expansion appears between
-         double quotes or in a here-document (for simple variable expansions
-         or expansions of positional parameters)
-
-                                   3/8
-                                   ---
-subst.c
-       - analogous changes to parameter_brace_expand_word to fix the same
-         quoting problem as on 3/4; fix callers to understand that  the
-         value returned might be quoted now and should be dequoted if
-         necessary
-       - add a `quoted' argument to get_var_and_type, change callers
-       - change today's fix and fix from 3/4 to not call quote_string if the
-         value is "" (because quote_string turns that into CTLNUL\0)
-
-                                   3/9
-                                   ---
-builtins/cd.def
-       - resetpwd() now takes a `caller' argument so it can be used by pwd
-         as well as cd
-       - change pwd_builtin to call resetpwd() if sh_physpath() fails to
-         return a valid pathname
-
-                                  3/14
-                                  ----
-expr.c
-       - reworked exp0 and readtok() to make post-increment and post-decrement
-         into real tokens, which may be separated from their accompanying
-         variables by whitesapce
-       - made analogous changes to readtok() to make pre-increment and
-         pre-decrement work when separated from their accompanying identifier
-         by whitespace
-
-                                  3/18
-                                  ----
-lib/readline/misc.c
-       - in rl_maybe_unsave_line, don't force rl_replace_line to clear
-         the undo_list, since it might point directly at an undo list
-         from a history entry (to which we have no handle)
-
-                                  3/19
-                                  ----
-lib/readline/display.c
-       - rl_save_prompt and rl_restore_prompt now save and restore the value
-         of prompt_physical_chars
-       - set prompt_physical_chars in rl_redisplay when expand_prompt has
-         not been called (e.g., when rl_display_prompt is set and is not
-         equal to rl_prompt, like when searching)
-
-lib/readline/histexpand.c
-       - don't call add_history in history_expand if the `:p' modifier is
-         supplied; leave that to the calling application.  This means that
-         `history -p', for example, will not add anything to the history
-         list (as documented), nor will history expansions invoked by
-         emacs-mode M-C-e line editing
-
-config-bot.h
-       - check whether HAVE_DECL_SYS_SIGLIST is defined to 1 rather than just
-         defined, to work around newer versions of autoconf defining it to 0
-
-config.h.in
-       - change default status of HAVE_MALLOC to #undef instead of #define
-
-bashhist.c
-       - extern declarations for rl_done and rl_dispatching
-       - don't call re_edit from pre_process_line unless rl_dispatcing is zero,
-         so we don't call it from something like shell-expand-line
-       - change pre_process_line to add an expanded history specification
-         that returned `print only' to the history list, since history_expand
-         no longer does it (and, when using readline, do it only when
-         rl_dispatching is zero)
-
-                                  3/22
-                                  ----
-config.h.in,aclocal.m4
-       - change bash-specific functions that look in struct dirent to define
-         HAVE_STRUCT_DIRENT_xxx, like AC_CHECK_MEMBERS does (though the
-         functions are otherwise the same)
-       - new function, BASH_STRUCT_DIRENT_D_NAMLEN, define
-         HAVE_STRUCT_DIRENT_D_NAMLEN if struct dirent has a `d_namlen' member
-
-configure.in
-       - call BASH_STRUCT_DIRENT_D_NAMLEN
-
-include/posixdir.h
-       - use new and renamed HAVE_STRUCT_DIRENT_D_xxx defines
-
-                                   4/7
-                                   ---
-builtins/cd.def
-       - ensure that we print out a non-null pathname after getting a
-         directory from CDPATH and canonicalizing it (e.g., if the result
-         exceeds PATH_MAX in length and the_current_working_directory is
-         set to NULL)
-
-                                  4/12
-                                  ----
-print_cmd.c
-       - new function to print out assignment statements when `set -x' has
-         been enabled: xtrace_print_assignment
-
-externs.h
-       - extern declaration for xtrace_print_assignment
-
-                                  4/13
-                                  ----
-{subst,variables}.c
-       - call xtrace_print_assignment instead of using inline code
-
-jobs.c
-       - if turning on job control when it was previously off, set
-         pipeline_pgrp to 0 in set_job_control so make_child puts
-         subsequent children in their own process group
-
-                                  4/14
-                                  ----
-general.c
-       - new function, legal_alias_name, called to decide whether an
-         argument to add_alias is a valid alias name -- essentially any
-         character except one which must be quoted to the shell parser
-         and `/'
-
-general.h
-       - new extern declaration for legal_alias_name
-
-builtins/alias.def
-       - `unalias' now returns failure status if no NAME arguments are
-         supplied and -a is not given
-       - call legal_alias_name to make sure alias name is valid before
-         calling add_alias from alias_builtin
-
-                                  4/19
-                                  ----
-include/shmbutil.h
-       - include <config.h> for definition of HANDLE_MULTIBYTE rather than
-         duplicating logic
-
-                                  4/20
-                                  ----
-
-doc/{bash.1,bashref.texi}
-       - make sure $0 is consistently referred to as a `special parameter'
-       - document which characters are now not allowed in alias names
-
-                                  4/23
-                                  ----
-
-builtins/{jobs,kill,wait}.def
-       - removed requirement that job control be enabled to use job control
-         notation, as SUSv3 implies
-
-subst.c
-       - based on a message from David Korn, change param_expand to not call
-         string_list_dollar_star if the only quoting is Q_HERE_DOCUMENT --
-         quoted here documents are like double quoting, but not exactly
-       - analogous changes to list_remove_pattern and pos_params
-
-                                  4/24
-                                  ----
-lib/readline/doc/rluser.texi
-       - fix error in description of emacs-mode C-xC-e command (uses $VISUAL
-         instead of $FCEDIT)
-
-                                  4/28
-                                  ----
-support/bashbug.sh
-       - integrate a patch from Stefan Nordhausen
-         <nordhaus@informatik.hu-berlin.de> that reduces race conditions
-         by using a temporary directory inside $TMPDIR and creating the
-         temp files in that
-
-                                  4/30
-                                  ----
-builtins/common.c
-       - use pathconf(".", _PC_PATH_MAX) where available to size the argument
-         to getcwd() rather than using a straight PATH_MAX
-
-builtins/cd.def
-       - if get_working_directory fails and returns null (causing resetpwd
-         to return NULL), use set_working_directory to set $PWD to the
-         absolute pathname for which chdir just succeeded
-
-                                   5/1
-                                   ---
-lib/readline/vi_mode.c
-       - in rl_vi_change_to, call _rl_vi_set_last with rl_numeric_arg instead
-         of `last', since they're equal at call time and rl_vi_domove can
-         change rl_numeric_arg (which vi apparently updates).  Fixes redo bug
-         of `c2....' reported by Marion Berryman <mwberryman@copper.net>
-
-                                   5/4
-                                   ---
-parse.y
-       - fix decode_prompt_string to properly deal with strftime() returning 0
-
-                                   5/6
-                                   ---
-variables.c
-       - in make_local_array_variable, return an already-existing local array
-         variable immediately rather than creating a new array (causing a
-         memory leak)
-
-                                   5/8
-                                   ---
-lib/readline/vi_mode.c
-       - change rl_vi_domove to set rl_explicit_arg before calling
-         rl_digit_loop1 so that multi-digit numeric arguments work right
-       - _rl_vi_last_command is no longer static
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_vi_last_command
-
-lib/readline/text.c
-       - change rl_newline to only call _rl_vi_reset_last if the last command
-         (_rl_vi_last_command) is not a text modification command.  This lets
-         the last-command and last-argument work across command lines
-
-                                  5/13
-                                  ----
-builtins/common.c
-       - use getcwd(0,0) rather than providing a fixed pathname with a fixed
-         length (PATH_MAX) so getcwd() will allocate sufficient memory
-
-aclocal.m4
-       - change BASH_FUNC_GETCWD to check whether or not getcwd(0,0) will
-         allocate memory for the returned value -- nobody implements that
-         and getcwd-via-popen, so it should capture the old test as well
-
-                                  5/27
-                                  ----
-
-builtins/trap.def
-       - the historical behavior of assuming that a signal's handling should
-         be set to its original disposition is only in effect if a single
-         argument is given, otherwise the first argument is assumed to be a
-         command to execute
-       - when in posix mode, if trap gets a single argument, display an
-         error message and return EX_USAGE
-       - change the help message and usage string to better explain trap's
-         behavior
-
-doc/{bash.1,bashref.texi}
-       - describe the new default behavior when the first argument is a
-         signal spec
-       - note that signal names are case insensitive and the SIG prefix is
-         optional in arguments to `trap'
-       - note that signal name arguments to `kill' are case-insensitive
-
-lib/readline/display.c
-       - make sure rl_on_new_line_with_prompt sets rl_display_prompt to
-         rl_prompt (just to make sure it's set)
-       - have rl_on_new_line_with_prompt use local_prompt if it's set
-
-                                   6/2
-                                   ---
-subst.c
-       - in string_extract_double_quoted, cope with extract_delimited_string
-         returning NULL, as it can when attempting completion on an unclosed
-         command substitution
-
-                                  6/24
-                                  ----
-lib/readline/complete.c
-       - change print_filename to add a `/' to listed directory names if
-         `mark-directories' has been enabled
-
-builtins/umask.def
-       - make sure that the mask passed to parse_symbolic_mode has all but
-         the operative low eight bits masked off, to avoid complementing
-         all 0s to -1, which is the error return code.  This makes things
-         like `a=rwx' and `ugo=rwx' work and turn off the umask
-
-                                  6/26
-                                  ----
-builtins/getopts.def
-       - when `getopts' reaches the end of options, unset OPTARG before
-         returning EOF.  In response to a bug report from Apple
-
-configure.in
-       - when cross-compiling, don't set CPPFLAGS_FOR_BUILD and
-         LDFLAGS_FOR_BUILD from CPPFLAGS and LDFLAGS, respectively, since
-         those are for the target instead of the build platform (report
-         from robert@schwebel.de)
-
-shell.c
-       - a shell whose standard error (but not standard output) is directed
-         to a terminal should be interactive, according to POSIX/SUS.  This
-         means that sh > sh.out will start an interactive shell.  Bug report
-         from llattanzi@apple.com
-
-doc/{bash.1,bashref.texi}
-       - change mention of standard output to standard error in definition
-         of interactive shell
-
-lib/readline/vi_mode.c
-       - new convenience function, rl_vi_start_inserting, calls
-         _rl_vi_set_last to save the last textmod command state and then calls
-         rl_vi_insertion_mode to enter insert mode
-       - change functions to use rl_vi_start_inserting
-
-lib/readline/readline.h
-       - extern declaration for rl_vi_start_inserting
-
-bashline.c
-       - new function for vi-mode completion, bash_vi_complete.  Does
-         filename expansion as POSIX specifies, unlike the default readline
-         bindings (which don't know about globbing).  Bound to `\', `*',
-         and `=' in vi command keymap.  Internals very similar to
-         rl_vi_complete; just calls bash glob expansion functions
-
-lib/readline/vi_mode.c
-       - change rl_vi_change_char so that an entire change is a single
-         undoable event, rather than each individual change in a [count]r
-         command
-       - fix rl_vi_change_char so that replacing characters up to EOL works
-         rather than generating rl_ding
-       - fix rl_vi_change_case so that replacing characters up to EOL works
-         rather than generating rl_ding
-
-                                  6/28
-                                  ----
-builtins/echo.def
-       - call clearerr(stdout) before writing anything and testing its
-         failure or success
-
-                                  6/29
-                                  ----
-bashline.c
-       - only set rl_explicit_arg in bash_glob_complete_word if readline is
-         in emacs mode; let bash_vi_complete take care of setting it in vi
-         mode
-       - fix bash_vi_complete to only set rl_explicit_arg unless the posix
-         conditions are met: no globbing characters in the vi `bigword'
-         being completed
-
-                                  6/30
-                                  ----
-[bash-3.0-rc1 released]
-
-                                   7/1
-                                   ---
-lib/readline/complete.c
-       - make sure `extension_char' is initialized before deciding whether
-         or not the append a `/' to a possible completion when visible-stats
-         is not enabled
-
-                                   7/2
-                                   ---
-subst.c
-       - fix a boundary overrun in string_extract_double_quoted that could
-         occur when the word completion code attempts to expand an incomplete
-         construct (like a quoted unclosed command substitution)
-
-                                   7/4
-                                   ---
-subst.c
-       - set tempenv_assign_error to non-zero if an assignment to the
-         temporary environment fails for some reason (e.g., attempted
-         assignment to a readonly variable)
-
-execute_cmd.c
-       - fix execute_simple_command to force a non-interactive shell in
-         POSIX mode to exit if an assignment to the temporary environment
-         preceding a special builtin fails (bug report from
-         llattanzi@apple.com)
-
-                                   7/5
-                                   ---
-bashline.c
-       - in bash_directory_completion_hook, don't perform word expansions
-         if the filename appears to have been completed from the file
-         system rather than typed in by the user.  Bug reported by Tim
-         Waugh <twaugh@redhat.com>
-
-                                   7/7
-                                   ---
-lib/readline/misc.c
-       - if _rl_maybe_save_line is being asked to save a line other than
-         what's already saved, free up the current saved line and save the
-         current contents of rl_line_buffer.  Bug reported by
-         llattanzi@apple.com
-
-                                  7/12
-                                  ----
-lib/readline/input.c
-       - do better EOF detection in rl_gather_tyi -- if a read returns 0 when
-         the fd is in non-blocking mode, stuff an EOF into the input stream
-         (reported by mattias@virtutech.se)
-
-                                  7/13
-                                  ----
-lib/readline/vi_mode.c
-       - make sure rl_vi_put honors `count' arguments and yanks things
-         multiple times if requested
-
-                                  7/16
-                                  ----
-builtins/umask.def
-       - make sure that the `who' part of the umask symbolic mode argument
-         defaults to `a' if it's missing
-
-flags.c
-       - make sure that maybe_make_restricted only gets called after the
-         shell is initialized, so `bash -r' doesn't result in inappropriate
-         error messages
-
-[bash-3.0 frozen]
-
-                                  7/27
-                                  ----
-doc/Makefile.in
-       - small fixes
-
-[bash-3.0 released]
-
diff --git a/CWRU/old-changelogs/CWRU.chlog.v14 b/CWRU/old-changelogs/CWRU.chlog.v14
deleted file mode 100644 (file)
index 6ae6104..0000000
+++ /dev/null
@@ -1,11049 +0,0 @@
-                                7/27/2004
-                                ---------
-
-[bash-3.0 released]
-
-                                  7/28
-                                  ----
-array.c
-       - in array_insert(), make sure the value to be added is non-NULL before
-         calling savestring() on it
-
-builtins/reserved.def
-       - fix description of `CDPATH'
-
-lib/readline/display.c
-       - when expanding a prompt that spans multiple lines with embedded
-         newlines, set prompt_physical_chars from the portion after the
-         final newline, not the preceding portion.  Bug reported by
-         "Ralf S. Engelschall" <rse@engelschall.com>
-
-make_cmd.c
-       - explicitly declare `lineno' in function prologue for make_case_command
-
-builtins/evalfile.c
-       - include `trap.h' for declaration for run_return_trap
-
-bashline.c
-       - fix a `return' without a value in enable_hostname_completion
-
-general.c
-       - include test.h for extern declaration for test_eaccess
-
-externs.h
-       - add declaration for zcatfd
-
-tests/{history,histexp}.tests
-       - unset HISTFILESIZE to avoid problems if a value of 0 is inherited
-         from the environment
-
-                                  7/30
-                                  ----
-bashline.c
-       - small changes to glob_expand_word to perform tilde expansion before
-         attempting globbing
-
-builtins/Makefile.in
-       - fix the install-help target to not cd into the `helpfiles'
-         subdirectory, so a value of $INSTALL_DATA containing a relative
-         pathname (e.g., .././support/install.sh) remains valid
-
-                                  7/31
-                                  ----
-subst.c
-       - new function, mbstrlen(s), returns length of a multibyte character
-         string
-
-include/shmbutil.h
-       - new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate
-
-builtins/trap.def
-       - small change so that a first argument that's a valid signal number
-         (digits only -- no symbolic names) will be treated as a signal and
-         reverted back to the original handling disposition.  Fixes debian
-         complaints
-
-subst.c
-       - call MB_STRLEN instead of STRLEN where appropriate in
-         parameter_brace_expand_length to handle multibyte characters properly
-       - call MB_STRLEN instead of strlen in verify_substring_values so that
-         negative substrings of strings with multibyte chars work properly
-
-                                   8/1
-                                   ---
-jobs.c
-       - describe_pid needs to write to stderr, not stdout (POSIX)
-       - start_job, since it's only used by builtins (fg/bg), needs to write
-         its output to stdout, not stderr (POSIX)
-
-sig.c
-       - add an `orig_flags' member to struct terminating_signal so the
-         original signal handling flags (SA_RESTART, etc.) can be preserved
-         on POSIX systems
-       - make sure to preserve the signal flags state in
-         initialize_terminating_signals and reset them for child processes
-         in reset_terminating_signals
-
-builtins/fc.def
-       - fixed an off-by-one error that caused `fc -l' to list one too many
-         history entries
-       - in posix mode, `fc' should not list any indication as to whether or
-         not history lines have been modified (POSIX)
-       - when in posix mode, the default editor for `fc' should be `ed' (POSIX)
-
-doc/bashref.texi
-       - updated the description of `trap' behavior when given a first
-         argument that is a valid signal number
-       - noted that `fc -l' won't indicate whether a history entry has been
-         modified if the shell is in posix mode
-
-builtins/command.def
-       - fixed bug: `command -v' is supposed to be silent if a command is not
-         found
-
-builtins/hash.def
-       - `hash' should print its `hash table empty' message to stderr
-
-lib/readline/misc.c
-       - back out 7/7 change to _rl_maybe_save_line; it breaks emacs-mode ^P
-
-general.c
-       - changed base_pathname so that it will return reasonable results for
-         non-absolute pathnames -- this is what is intended by all of its
-         callers
-
-arrayfunc.c
-       - fix array_variable_part to return NULL if it finds an invisible
-         variable in the hash table.  Fixes seg fault caused by referring to
-         unset local variable using array notation
-
-{locale,variables}.c
-       - support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks
-         the current locale
-
-                                   8/2
-                                   ---
-variables.c
-       - fixed small memory leak in makunbound() when a local array variable
-         is unset.  Fix from William Park
-
-lib/readline/display.c
-       - fixed a problem when computing the number of invisible characters on
-         the first line of a prompt whose length exceeds the screen width
-         (should only happen when invisible characters occur after the
-         line wrap).  Bug reported by agriffis@gentoo.org
-
-builtins/command.def
-       - `command -V' passes a new flag, CDESC_ABSPATH, which means to convert
-         to an absolute path
-
-builtins/type.def
-       - in posix mode, `type' and `command -v/-V' should not report
-         non-executable files, even if the execution code will attempt to
-         run them.  Other posix shells do this
-
-doc/bashref.texi
-       - add note to POSIX Mode section describing behavior of type and command
-         when finding a non-executable file
-
-execute_cmd.c
-       - force extended_glob to 1 before calling binary_test in
-         execute_cond_node so that the right extended pattern matching gets
-         performed
-
-                                   8/3
-                                   ---
-braces.c
-       - make sure lhs[0] and rhs[0] are cast to `unsigned char' so chars
-         with values > 128 are handled correctly
-
-builtins/printf.def
-       - change bexpand() and printstr() to handle strings with a leading
-         '\0' whose length is non-zero, since that's valid input for the
-         `%b' format specifier
-
-subst.c
-       - fix a couple of instances of find_variable that didn't check the
-         result for an invisible variable
-
-variables.c
-       - BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as
-         invisible vars
-
-pcomplete.c
-       - make sure COMP_WORDS is not invisible when bind_comp_words returns
-       - ditto for COMPREPLY in gen_shell_function_matches
-
-                                   8/4
-                                   ---
-braces.c
-       - fix problem where ${ was ignored but did not increment the open
-         brace count.  Bug reported by Tim Waugh <twaugh@redhat.com>
-
-variables.c
-       - if make_local_variable finds a variable in the correct context in
-         the right variable scope, make sure it's not invisible before
-         returning it
-
-                                   8/5
-                                   ---
-builtins/trap.def
-       - fixed usage message to show `action' as not optional, though it
-         actually is when not in posix mode (for a single argument)
-
-                                   8/7
-                                   ---
-configure.in
-       - kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs
-         to be configured --without-gnu-malloc
-
-lib/readline/vi_mode.c
-       - in rl_vi_search, free any saved history line before starting the
-         search, so failure leaves you at that line, not the last line in
-         the history (assuming the current line is not the last history line).
-         Fix from llattanzi@apple.com to replace fix of 7/7
-
-                                   8/9
-                                   ---
-support/Makefile.in
-       - renamed `mostly-clean' target to `mostlyclean'
-
-                                  8/11
-                                  ----
-lib/readline/vi_mode.c
-       - make same change for EOL in multibyte character case of
-         rl_vi_change_char
-
-                                  8/12
-                                  ----
-subst.c
-       - in verify_substring_values, fix off-by-one error checking bounds of
-         `offset', esp. in array values (e.g., getting the highest element
-         of an array)
-
-                                  8/16
-                                  ----
-aclocal.m4
-       - change BASH_CHECK_DEV_FD to make sure that file descriptors > 2 are
-         accessible via /dev/fd, unlike FreeBSD 5.x
-
-lib/sh/strftime.c
-       - make sure `zone' is initialized with gettimeofday before it is used
-       - work around HPUX lack of `altzone' and differing definitions of
-         `timezone'
-
-lib/malloc/malloc.c
-       - internal_memalign and memalign now take a `size_t' as their first
-         argument, which seems to be the prevailing standard
-
-lib/malloc/{malloc.c,shmalloc.h}
-       - change sh_memalign to take a `size_t' as its first argument
-
-builtins/echo.def
-       - if posixly_correct and xpg_echo are both set, don't try to interpret
-         any arguments at all, as POSIX/XOPEN requires (fix inspired by Paul
-         Eggert)
-
-doc/bashref.texi
-       - amend description of bash posix mode to include new echo behavior
-
-builtins/fg_bg.def
-       - allow bg to take multiple job arguments, as posix seems to specify,
-         placing them all in the background, returning the status of the last
-         one as the status of `bg'
-
-lib/readline/vi_mode
-       - fix _rl_vi_change_mbchar_case (multibyte-char version of `~'
-         command) to have the right behavior at EOL -- handle case where vi
-         mode backs up at the end of the line
-
-                                  8/18
-                                  ----
-array.c
-       - check for an empty array in array_rshift before shifting elements
-         and adjusting max_index
-       - check for null array in array_subrange
-
-jobs.c
-       - fix raw_job_exit_status to not ignore exit status of the last
-         process in the pipeline when `set -o pipefail' is enabled
-
-                                  8/19
-                                  ----
-lib/readline/mbutil.c
-       - make sure _rl_find_next_mbchar_internal has a valid multibyte
-         character before it checks whether or not it's a zero-width
-         wide character and adjusts point accordingly
-
-                                  8/24
-                                   ----
-bashline.c
-        - new function, bash_directory_expansion, duplicates the expansions
-          performed on the directory name by rl_filename_completion_function
-        - call bash_directory_expansion in command_word_completion_function
-          if we decide we're doing tilde expansion (and any other
-          canonicalization) on the directory name being completed
-
-                                   8/25
-                                   ----
-configure.in
-        - use new-style AC_CHECK_HEADER to check for sys/ptem.h (which requires
-          sys/stream.h).  The correct checks are in the code, but autoconf
-          complains if sys/stream.h is not included, rather than simply
-          checking for the header's presence
-
-                                  8/26
-                                  ----
-builtins/hash.def
-       - fix a bug that prevented `hash -d' from working right (as soon as
-         hash removed a command from the table, the bug caused it to be added
-         right back)
-
-                                  8/27
-                                  ----
-doc/{bash.1,bashref.texi}
-       - explicitly note that conditional primaries that operate on files
-         operate on the targets of symbolic links rather than the links
-         themselves
-
-                                  8/30
-                                  ----
-lib/readline/display.c
-       - fix multibyte calculation of `physchars' in prompt expansion, to
-         handle double-width multibyte characters correctly
-       - changes to rl_redisplay to handle prompts longer than the screenwidth
-         that might contain double-width multibyte characters.  Fixes from
-         Tomohiro Kubota
-
-                                   9/6
-                                   ---
-subst.c
-       - change word_list_split to avoid really bad behavior caused by calling
-         list_append for each split word -- as the list gets long, you have
-         to traverse it every time.  Keep a pointer to the end of the list and
-         and just tack onto it
-
-                                   9/8
-                                   ---
-lib/readline/complete.c
-       - change fnprint to calculate the displayed width of a filename in
-         the same way as fnwidth
-
-subst.c
-       - in verify_substring_values, when expanding ${array[@]:offset}, make
-         sure negative offsets count from one greater than the array's
-         maximum index so things like ${x[@}: -1} work to give the last element
-         (requires fixing array tests)
-
-builtins/common.c
-       - new error function, sh_wrerror(),  for builtins to call when a write
-         error occurs
-
-builtins/common.h
-       - extern declaration for sh_wrerror()
-
-builtins/cd.def
-       - change builtin_error call to use sh_wrerror()
-
-builtins/echo.def
-       - report write errors with sh_wrerror() instead of just returning
-         failure
-
-builtins/printf.def
-       - change printstr to return failure (-1) or success (0) indication
-         rather than void
-       - report write errors when printstr() fails, return failure
-       - if any of the PF/printf calls fail, report write error and return
-         failure
-
-execute_cmd.c
-       - change execute_in_subshell so the subshell command inherits the
-         command timing flags from the enclosing COMMAND *
-
-                                  9/11
-                                  ----
-[prayers for the victims of 9/11/2001]
-
-lib/sh/strnlen.c
-       - new file, implementation of GNU libc extension function strnlen
-
-lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST
-       - changes for strnlen
-
-configure.in
-       - version changed to 3.1-devel
-
-doc/bash.1, lib/readline/doc/rluser.texi
-       - added description of `-o plusdirs' to complete/compgen (thanks,
-         Arnold)
-
-parse.y
-       - new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing
-         arguments to a builtin that accepts assignment statement arguments
-       - turn on PST_ASSIGNOK in read_token_word when appropriate
-       - turn off PST_ASSIGNOK in read_token when appropriate
-       - don't attempt to parse a compound assignment specially unless we're
-         in a position where an assignment statement is acceptable, or
-         PST_ASSIGNOK is set
-
-                                  9/13
-                                  ----
-variables.c
-       - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE
-         non-unsettable, since the shell uses those values internally
-
-expr.c
-       - make exponentiation right-associative, as is apparently correct
-
-                                  9/16
-                                  ----
-arrayfunc.c
-       - make sure convert_var_to_array marks the environment as needing
-         recreation if the converted variable was exported
-
-                                  9/17
-                                  ----
-braces.c
-       - mark ${ as introducing an additional level of braces only if it's
-         not in a quoted string -- quoted strings are handled before brace
-         matching is done
-
-parse.y
-       - fixed an obscure problem in history_delimiting_chars where the `in'
-         in a case statement could have a semicolon added after it, if the
-         `case word' was on a previous line
-
-support/config.guess
-       - support for newest versions of tandem non-stop kernel
-
-lib/readline/display.c
-       - in compute_lcd_of_matches, explicitly cast `text' to `char *' before
-         passing it to rl_filename_dequoting_function
-
-lib/readline/terminal.c
-       - bind the key sequence sent by the keypad `delete' key to delete-char
-         (same as ^D in emacs mode)
-
-builtins/ulimit.def
-       - in print_all_limits, don't print anything if get_limit returns
-         -1/EINVAL, indicating that the kernel doesn't support that particular
-         limit
-       - add -i (max number of pending signals), -q (max size of posix msg
-         queues), -x (max number of file locks) for systems (Linux) that
-         support them
-
-doc/{bash.1,bashref.texi}
-       - fix description of correspondence between FUNCNAME, BASH_LINENO,
-         and BASH_SOURCE indices in description of BASH_LINENO
-
-                                  9/18
-                                  ----
-lib/sh/shquote.c
-       - don't quote CTLESC and CTLNUL with CTLESC in sh_backslash_quote, as
-         long as the resultant string never gets sent to the word expansion
-         functions without going through the shell parser
-
-externs.h
-       - add extern declarations for strnlen and strpbkrk from lib/sh
-
-subst.[ch]
-       - changes to handle case where IFS consists of multibyte characters.
-         Changed: string_extract_verbatim, split_at_delims,
-         string_list_dollar_star, string_list_dollar_at, list_string,
-         get_word_from_string, setifs
-
-                                  9/19
-                                  ----
-mailcheck.c
-       - change file_mod_date_changed to reset the cached mail file data if
-         the file size drops to zero
-
-lib/readline/complete.c
-       - change append_to_match so that a non-zero value for
-         rl_completion_suppress_append will cause no `/' to be appended to a
-         directory name
-
-bashline.c
-       - experimental change to suppress appending a slash for a completed
-         filename that is found in PATH as well as a directory in the current
-         directory under certain circumstances:  a single instance found in
-         $PATH when `.' is not in $PATH, and multiple instances found in the
-         $PATH, even when `.' is in the $PATH
-
-                                  9/24
-                                  ----
-command.h
-       - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement
-       - new word flag: W_NOTILDE, means word is not to be tilde expanded
-       - new word flag (internal): W_ITILDE, means the next character is a
-         tilde that should be expanded
-
-general.c
-       - new set of tilde suffixes for use when parsing the RHS of an
-         assignment statement and =~ should not be subject to tilde expansion
-       - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes
-         for parsing RHS of assignment statement
-
-general.[ch]
-       - new function bash_tilde_find_word, drop-in replacement for
-         tilde_find_word
-
-subst.c
-       - call bash_tilde_expand with secord argument of 2 when expanding rhs
-         of an assignment statement, so tildes after second and subsequent
-         `=' in an assignment are not expanded
-       - new function, expand_string_assignment, to expand the rhs of an
-         assignment statement
-       - add `~' to EXP_CHAR, the characters that will cause the word
-         expansion functions to be called
-       - move tilde expansion into expand_word_internal instead of many
-         different calls to bash_tilde_expand scattered across different
-         functions.  NOTE:  This means that double quotes surrounding a
-         {paramOPword} expansion will cause tilde expansion to NOT be
-         performed on `word'.  I think this is right, what POSIX specifies,
-         and consistent with the behavior of other characters in the rhs
-
-execute_cmd.c
-       - take out calls to bash_tilde_expand before calling word expansion
-         functions
-
-                                  9/26
-                                  ----
-execute_cmd.c
-       - make sure to call UNBLOCK_CHILD before returning on a pipe creation
-         failure in execute_pipeline
-
-                                  9/27
-                                  ----
-variables.c
-       - change get_bash_command to deal with the_printed_command_except_trap
-         being NULL
-
-execute_cmd.c
-       - fix execute_simple_command to deal with the_printed_command being
-         NULL when assigning to the_printed_command_except_trap -- fixes
-         seg fault in savestring()
-
-parse.y
-       - change the parser so that the closing `)' in a compound variable
-         assignment delimits a token -- ksh93 does it this way
-
-doc/{bash.1,bashref.texi}
-       - change description of tilde expansion to note that expansion is
-         attempted only after the first =~ in an assignment statement
-
-builtins/declare.def
-       - when assigning to an array variable with declare -a x=(...), make
-         sure the last character in the rhs  of the variable assignment is
-         `)', not just that it appears somewhere
-
-                                  9/28
-                                  ----
-command.h
-       - add a `W_NOEXPAND' flag to inhibit all expansion except quote removal
-       - add a `W_COMPASSIGN' flag to denote a word is a compound assignment
-         statement
-
-parse.y
-       - set W_COMPASSIGN on words that appear to be compound assignments
-
-subst.c
-       - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal
-
-subst.[ch]
-       - new function, expand_assignment_string_to_string, calls
-         expand_string_assignment and then string_list on the result
-
-variables.c
-       - assign_in_env now calls expand_assignment_string_to_string
-
-                                  9/30
-                                  ----
-builtins/common.c
-       - change get_job_spec so the null job `%' once again means the current
-         job
-
-                                  10/1
-                                  ----
-subst.c
-       - do_assignment_internal now takes a WORD_DESC * as its first
-         argument, and uses its `word' member as the assignment string
-       - change expand_word_list_internal to call do_word_assignment instead
-         of do_assignment, passing it `word' instead of, e.g., `word->word'
-       - change extract_array_assignment_list to just return the passed
-         string minus a trailing `)' if the last character is a right
-         paren
-       - change do_assignment_internal to call extract_array_assignment_list
-
-subst.[ch]
-       - change do_assignment and do_assignment_no_expand to take a `char *'
-         instead of `const char *' first argument; change extern prototypes
-       - new function, do_word_assignment, takes a WORD_DESC * and calls
-         do_assignment_internal on it; add extern declaration with prototype
-
-general.h
-       - new typedef, sh_wassign_func_t, like sh_assign_func_t but takes a
-         WORD_DESC * as its first argument
-
-variables.[ch]
-       - assign_in_env now takes a WORD_DESC * as its first argument
-
-                                  10/2
-                                  ----
-command.h
-       - new word flag, W_ASSNBLTIN, denotes that the word is a builtin
-         command (in a command position) that takes assignment statements
-         as arguments, like `declare'
-       - new word flags, W_ASSIGNARG, denotes that word is an assignment
-         statement given as argument to assignment builtin
-
-execute_cmd.c
-       - set W_ASSNBLTIN flag in fix_assignment_words if necessary (if there
-         are any arguments that are assignment statements)
-       - set W_ASSIGNARG flag in fix_assignment_words if necessary
-
-subst.c
-       - new function, do_compound_assignment, encapsulates the necessary
-         code to perform a compound array assignment (including creation of
-         local variables); called from do_assignment_internal
-       - to fix the double-expansion problem with compound array assignments
-         that are arguments to builtins like `declare', changed
-         shell_expand_word_list to treat those arguments like assignment
-         statements (with proper creation of local variables inside shell
-         functions) and pass the attribute-setting portion of the statement
-         onto the builtin.  This is what ksh93 appears to do, from inspection
-         of the `ksh93 -x' output
-
-execute_cmd.c
-       - fix execute_simple_command:  in case of pipeline or async command,
-         when forking early, set `subshell_environment' so that it can contain
-         both SUBSHELL_PIPE and SUBSHELL_ASYNC -- the two should not be
-         mutually exclusive.  Fixes bug reported by pierre.humblet@ieee.org
-       - remove references to last_pid, old_command_subst_pid; use NO_PID as
-         a sentinel value to decide whether or not a child process has been
-         created and needs to be waited for.  Submitted by
-         pierre.humblet@ieee.org to fix recycling-pid problem on cygwin
-
-doc/{bash.1,bashref.texi}
-       - fixed documentation of `@(pattern)' extended globbing operator --
-         it succeeds if the string matches one of the patterns, not exactly
-         one.  This is what ksh93 does, too
-
-lib/readline/complete.c
-       - fixed rl_menu_complete so that a negative argument cycles backwards
-         through the list
-
-                                  10/3
-                                  ----
-subst.c
-       - use W_COMPASSIGN flag in do_assignment_internal instead of deciding
-         lexically which assignments are compound array assignments
-
-                                  10/6
-                                  ----
-support/shobj-conf
-       - additions for System V.5 from Boyd Gerber <gerberb@zenez.com>
-
-subst.c
-       - in command_substitute, if subshell_environment includes
-         SUBSHELL_ASYNC, call make_child with the `async_p' argument set to
-         non-zero.  This keeps command substitutions for async commands or
-         pipelines from trying to give the terminal back to the shell's
-         pgrp.  make sure to save and restore last_asynchronous_pid.  Fix
-         suggested by <pierre.humblet@ieee.org>
-
-                                  10/7
-                                  ----
-config.h.in
-       - add a placeholder definition for WCONTINUED_BROKEN
-
-                                  10/9
-                                  ----
-aclocal.m4
-       - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is
-         defined but rejected as invalid by waitpid(2)
-
-configure.in
-       - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN
-
-redir.c
-       - experimental change to add_undo_redirect to save manipulations to
-         file descriptors >= SHELL_FD_BASE (10) on the list of redirections
-         to be undone even if `exec' causes the list to be discarded
-
-doc/{bash.1,bashref.texi}
-       - note that redirections using file descriptors > 9 should be used
-         carefully, because they might conflict with file descriptors the
-         shell uses internally
-
-                                  10/11
-                                  -----
-parse.y
-       - fix pipeline_command production to handle case where `pipeline'
-         as `argument' of `!' or `time' is null (e.g., a syntax error not
-         handled by the grammar)
-
-                                  10/13
-                                  -----
-lib/readline/readline.c
-       - new internal variable, _rl_bind_stty_chars; if non-zero, bind the
-         terminal special characters to readline equivalents at startup
-       - change readline_default_bindings() and reset_default_bindings() to
-         understand _rl_bind_stty_chars
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_bind_stty_chars
-
-lib/readline/rltty.c
-       - change rl_prep_terminal to add support for _rl_bind_stty_chars
-
-                                  10/15
-                                  -----
-lib/readline/bind.c
-       - new bindable variable, `bind-tty-special-chars', bound to value of
-         _rl_bind_stty_chars
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - documented new readline variable `bind-tty-special-chars'
-
-builtins/pushd.def
-       - make the first check for option `--' skip the rest of option
-         checking
-
-                                  10/16
-                                  -----
-lib/readline/shell.c
-       - change sh_set_lines_and_columns to prefer setenv, which has
-         predictable memory allocation behavior, to putenv, which does not
-
-                                  10/19
-                                  -----
-variables.c
-       - change push_exported_var so that a tempenv variable has to have the
-         export attribute set (which they all do -- something to look at) and
-         the `propagate' attribute set to be propagated down to the next
-         scope
-
-execute_cmd.c
-       - change execute_builtin so that if CMD_COMMAND_BUILTIN is set in the
-         passed flags argument, call pop_scope with a value that says the
-         builtin is not special, since `command' means that preceding variable
-         assignments don't persist in the environment.  Fixes problem with
-         variable assignments preceding command preceding special builtin
-         keeping those variable assignments around (when in posix mode)
-
-                                  10/20
-                                  -----
-lib/sh/shquote.c
-       - new function, sh_mkdoublequoted, brackets a given string with
-         double quotes and returns a new string.  Flags argument, if non-
-         zero, means to quote embedded double quotes with backslashes
-
-externs.h
-       - new extern declaration for sh_mkdoublequoted
-
-parse.y
-       - use sh_mkdoublequoted after calling localeexpand()
-
-lib/sh/strtrans.c
-       - change ansicstr to understand that  (flags & 4) != 0 means to remove
-         backslash from unrecognized escape sequences
-
-general.c
-       - fix logic problem in assignment() that caused non-variable-starter
-         characters to be allowed, resulting in things like `1=xxx' creating
-         a variable `1' in the hash table
-
-                                  10/21
-                                  -----
-bashline.c
-       - don't call programmable_completions with an assignment statement
-         argument
-
-                                  10/22
-                                  -----
-lib/readline/rltty.c
-       - in prepare_terminal_settings, turn echoing on (readline_echoing_p)
-         if get_tty_settings fails because the input is not a terminal
-
-                                  10/24
-                                  -----
-lib/readline/util.c
-       - include rlmbutil.h for multibyte definitions
-       - new function, _rl_walphabetic, wide char version of rl_alphabetic
-
-lib/readline/mbutil.c
-       - new function, _rl_char_value(buf, ind), returns value of (possibly
-         multibyte) character at buf[ind]
-
-lib/readline/rlmbutil.h
-       - extern defines for _rl_walphabetic and _rl_char_value for when
-         multibyte chars are not being used
-       - new wrapper definitions for _rl_find_next_mbchar (MB_NEXTCHAR) and
-         _rl_find_prev_mbchar (MB_PREVCHAR) that try to avoid unneeded
-         function calls
-
-lib/readline/text.c
-       - fix rl_foward_word to work with multibyte characters (or in a
-         multibyte locale) using above utility functions
-       - fix rl_backward_word to work with multibyte characters (or in a
-         multibyte locale) using above utility functions
-
-                                  10/26
-                                  -----
-parse.y
-       - fix parse_matched_pair so that it doesn't swallow \<newline> when
-         parsing a $'...' construct (call shell_getc with different arg)
-
-                                  10/28
-                                  -----
-lib/glob/glob.c
-       - after some (compiled-in) threshold, glob_vector will stop using
-         alloca to allocate `struct globval's and will switch to using
-         malloc, with appropriate cleanup before returning
-
-subst.c
-       - don't expand tildes after `=' in expand_word_internal, even if the
-         W_TILDEEXP flag is set, unless it's the first tilde in a word
-         marked W_ASSIGNMENT
-
-                                  10/31
-                                  -----
-lib/readline/text.c
-       - make sure rl_point doesn't go below 0 in rl_delete_horizontal_space
-         (from SUSE, but not sent in)
-
-shell.c
-       - make sure shell_is_restricted skips over a single leading `-' in
-         the shell name (from SUSE, but not sent in)
-
-lib/readline/display.c
-       - disable `fast redisplay' at the end of the line if in a locale that
-         supports multibyte characters (from SUSE, but not sent in)
-
-lib/readline/histexpand.c
-       - fix a problem with finding the delimiter of a `?' substring when
-         compiled for multibyte characters (from SUSE, but not sent in)
-
-                                  11/1
-                                  ----
-lib/readline/display.c
-       - correct some assignments to _rl_last_c_pos:  when in a multibyte
-         locale, it's used as an absolute cursor position; when not using
-         multibyte characters, it's a buffer offset.  I should have caught
-         this when the multibyte character support was donated
-
-                                  11/5
-                                  ----
-general.c
-       - change `assignment()' to accept `+=' assignment operator
-
-arrayfunc.[ch]
-       - bind_array_variable and assign_array_element both take a new `flags'
-         argument
-       - assign_array_var_from_string, assign_array_from_string, and
-         assign_array_var_from_word_list now all take a new `flags' argument
-       - change assign_array_var_from_word_list to understand how to append
-         to an array variable
-       - change assign_array_var_from_string to understand how to append
-         to an array variable.  It does not unset the previous value if
-         appending, allowing both old values to be changed and new ones to
-         be added
-
-subst.h
-       - new flag #defines to use for evaluating assignment statements
-
-{subst,variables}.c, builtins/{declare,read}.def
-       - change callers of assign_array_element and bind_array_variable
-       - change do_compound_assignment to understand assignment flags
-       - change do_assignment_internal to set assignment flags and pass them
-         to underlying functions
-
-pcomplete.c,builtins/{declare,read}.def
-       - fix callers of assign_array_var_from_string, assign_array_var_from_word_list
-
-variables.[ch]
-       - make_variable_value now takes a new `flags' argument
-       - make_variable_value now understands how to append to a particular
-         variable, using the old value
-       - bind_variable_value now takes a new `flags' argument
-       - change make_variable_value to understand ASS_APPEND flag
-       - bind_variable now takes a new `flags' argument
-       - bind_variable_internal now takes a new `flags' argument
-
-arrayfunc.c
-       - change callers of make_variable_value to add flags arg
-
-builtins/declare.def
-       - change callers of bind_variable_value to add flags arg
-
-{execute_cmd,mailcheck,pcomplete,shell,subst,variables}.c,parse.y
-builtins/{cd,command,declare,getopts,read,set,setattr}.def
-       - change callers of bind_variable to add flags arg
-
-variables.c
-       - change callers of bind_variable_internal
-       - change bind_variable_internal to pass assignment flags on to
-         make_variable_value
-       - change assign_in_env to treat `var+=value' like `var=value'
-
-arrayfunc.c
-       - break code that actually constructs the new value and assigns it
-         to a particular array index out into a new functions:
-         bind_array_var_internal.  This fakes out make_variable_value by
-         passing a dummy SHELL_VAR * so it can do proper appending and other
-         += processing
-       - changes to assign_array_var_from_string to accept and process as if
-         they were `standalone' assignment statements array assignment words
-         of the form [ind]+=val
-
-                                  11/7
-                                  ----
-builtins/declare.def
-       - added support for `declare [flags] var+=value'.  `Flags' are applied
-         before the assignment is performed, which has implications for things
-         like `-i' -- if -i is supplied, arithmetic evaluation and increment
-         will be performed
-
-builtins/setattr.def
-       - add support for `+=' assignment for rest of `assignment builtins':
-         export, readonly
-
-                                  11/12
-                                  -----
-lib/readline/display.c
-       - make sure prompt_physical_chars and prompt_invis_chars_first_line
-         are reset to 0 if the prompt string passed to rl_expand_prompt is
-         NULL or empty
-
-                                  11/14
-                                  -----
-{configure,config.h}.in
-       - check for `raise', define HAVE_RAISE if available
-
-lib/intl/dcigettext.c
-       - make sure `raise' is defined if HAVE_RAISE is not before
-         eval-plurah.h is included
-
-lib/malloc/trace.c
-       - put extern declaration for imalloc_fopen inside the MALLOC_TRACE
-         #ifdef
-
-                                  11/16
-                                  -----
-lib/intl/Makefile.in
-       - make sure SHELL is defined to cpp
-
-lib/intl/dcigettext.c
-       - make sure we use getcwd() even if HAVE_GETCWD is not defined after
-         including config.h; if SHELL is defined, #define HAVE_GETCWD
-
-                                  11/18
-                                  -----
-trap.[ch]
-       - new function, int signal_in_progress(int sig), returns TRUE if the
-         trap handler for signal SIG is currently executing
-
-                                  11/19
-                                  -----
-redir.c
-       - slightly change do_redirection_internal to set the close-on-exec
-         flag for file descriptors > 2 used to save file descriptors < 2
-         using explicit redirections (e.g., `exec 3>&1').  This keeps file
-         descriptors pointing to pipes from being left open but doesn't
-         change the shell's file descriptor semantics
-
-                                  11/20
-                                  -----
-doc/{bash.1,bashref.texi}
-       - correct some minor typos, forwarded from doko@debian.org
-
-                                  11/22
-                                  -----
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - documented detail that yank-last-arg and yank-nth-arg use the history
-         arg expansion code (and, as a result, are subject to restrictions
-         of the history-comment character)
-
-                                  11/23
-                                  -----
-execute_cmd.c
-       - changes so that BASH_COMMAND preserves its value into a DEBUG trap:
-         for commands, arithmetic for command expressions, select commands,
-         case commands, (( commands, [[ commands, simple commands
-
-                                  11/24
-                                  -----
-doc/{bash.1,bashref.texi}
-       - changed description of `set' builtin slightly so that it is clear
-         that only variables are displayed in posix mode and that read-only
-         variables can't be reset by simply sourcing the output of `set'
-
-lib/sh/strftime.c
-       - don't try to redefine `inline' if it's already defined
-
-                                  11/26
-                                  -----
-execute_cmd.c
-       - fix execute_function to check funcname_a after function execution,
-         since FUNCNAME can be changed or unset within a function
-
-                                  11/27
-                                  -----
-builtins/evalfile.c
-       - make same changes as 11/26, this time to _evalfile
-
-execute_cmd.c
-       - change execute_function to run the return trap after a function
-         completes execution even if the shell is compiled without DEBUGGER
-         defined
-
-trap.c
-       - change reset_or_restore_signal_handlers so that the RETURN trap is
-         not inherited by command substitution when DEBUGGER is not defined
-
-                                  11/30
-                                  -----
-lib/readline/misc.c
-       - fix memory leaks in _rl_free_history_entry and rl_maybe_replace_line
-         caused by not freeing `timestamp' member of history entry
-       - make sure timestamp is initialized to NULL in rl_maybe_save_line
-
-                                  12/1
-                                  ----
-execute_cmd.c
-       - fix execute_function so a function calling `return' will run the
-         RETURN trap, if one's defined
-
-doc/{bash.1,bashref.texi}
-       - fix description of RETURN trap in various places to indicate that it's
-         only inherited by shell functions if function tracing is on globally
-         or has been enabled for that function
-       - fix documentation to indicate that the DEBUG and RETURN traps are
-         inherited under the same conditions
-
-execute_cmd.c
-       - a function does not inherit the RETURN trap if a DEBUG trap is
-         currently running
-
-                                  12/2
-                                  ----
-lib/glob/xmbsrtowcs.c
-       - change xmbsrtowcs to handle the one case where malloc can fail
-         (though it should not matter) -- don't try to free a null pointer
-
-                                  12/9
-                                  ----
-subst.c
-       - fix get_var_and_type to handle var[@], where `var' is a scalar
-         variable, identically to var -- all calling expansions can now
-         handle var[@] like var.  Bug reported by agriffis@gentoo.org
-
-                                  12/10
-                                  -----
-lib/readline/bind.c
-       - make new-style "\M-x" keybindings obey `convert-meta' settings
-         (bug reported by twaugh@redhat.com)
-
-                                  12/14
-                                  -----
-builtins/set.def
-       - added description of `-' option to help text
-
-builtins/shopt.def
-       - fix bug that caused `gnu_errfmt' to not be compiled in unless
-         READLINE is defined
-
-                                  12/16
-                                  -----
-subst.c
-       - fixed a typo in string_extract_verbatim in first call to MBLEN
-         (used `slen - 1' instead of `slen - i')
-
-                                  12/17
-                                  -----
-subst.c
-       - avoid some calls to strlen if the value is only being used for
-         ADVANCE_CHAR and MB_CUR_MAX == 1 (since ADVANCE_CHAR doesn't need
-         it unless multibyte characters are possible)
-       - change string_extract_verbatim so it takes the length of the string
-         as a parameter, so we don't have to recompute the length of the same
-         string over and over again when doing word splitting (that kills if
-         it's a long string)
-
-                                  12/18
-                                  -----
-subst.c
-       - in string_list_dollar_star, make sure to null-terminate the
-         separator if the character is longer than one byte
-
-                                  12/22
-                                  -----
-doc/{bash.1,bashref.texi}
-       - changed text in quoting section explaining that double quotes do
-         not prevent history expansion from taking place, and that backslashes
-         escaping ! are not removed
-
-                                  12/28
-                                  -----
-shell.c
-       - set gnu_error_format to 1 if running under emacs.  This should allow
-         the emacs `next-error' stuff to work, at least for interactive shells
-
-parse.y
-       - change yy_stream_get to set interrupt_immediately before calling
-         getc_with_restart when the shell is interactive.  This avoids the
-         synchronization problem caused by the call to QUIT in read_a_line,
-         which results in the first character after a SIGINT/^C to be
-         dropped
-
-                                  12/30
-                                  -----
-builtins/mkbuiltins.c
-       - changes to write long documentation to arrays as a single string by
-         default, rather than an array of strings -- enabled by default
-       - new option, -S, to restore old behavior of writing multiple strings
-         for long documentation
-       - changes to avoid filenames written when the separate-filenames option
-         (-H) has been supplied being run through gettext
-
-configure.in
-       - new cofiguration option, --enable-single-help-strings (on by default),
-         causes help text to be stored as a single string (or smaller set than
-         one string per line)
-
-builtins/Makefile.in
-       - pass `-S' to mkbuiltins if single-help-strings is turned off
-
-doc/bashref.texi
-       - documented new `single-help-strings' configure option
-
-                                1/3/2005
-                                --------
-jobs.c
-       - make wait_for return a non-zero status if the job or processed
-         waited for is suspended.  Returns 128 + stop signal.  This fixes
-         the problem with `echo one && sleep 5 && echo two' displaying
-         `two' after the sleep is suspended
-
-                                   1/5
-                                   ---
-print_cmd.c
-       - change indirection_level_string so the code duplicates the first
-         character of $PS4 to indicate the indirection level, rather than
-         the first byte
-
-                                   1/8
-                                   ---
-variables.c
-       - new special variable hook function for COMP_WORDBREAKS; sets
-         rl_completer_word_break_characters back to NULL when the variable
-         is unset
-       - change bind_variable_value to understand dynamic variables with
-         assign_function set, and handle them correctly.  If the variable is
-         being appended to, use make_variable_value to create the new
-         value
-       - change bind_variable_internal to understand dynamic variables with
-         assign_function set, and handle them the same way
-       - RANDOM and LINENO now get the integer attribute, so appending works
-         as expected
-       - ditto for HISTCMD, MAILCHECK, OPTIND
-
-lib/readline/display.c
-       - change _rl_make_prompt_for_search to set prompt_physical_chars
-         appropriately
-       - rl_save_prompt and rl_restore_prompt save and restore
-         prompt_prefix_length
-       - change redraw_prompt to use rl_save_prompt and rl_restore_prompt
-       - change rl_restore_prompt to set the `save' variables back to
-         NULL/0 so code can check whether or not the prompt has been saved
-       - change rl_message and rl_clear_message to save and restore the
-         prompt if the caller has not already done it (using a simple
-         semaphore-like variable)
-       - change rl_message to call expand_prompt, so that local_prompt and
-         local_prompt prefix are set before calling the redisplay functions,
-         in case the prompt is longer than a screenwidth (fixes bug
-         reported to debian by epl@unimelb.edu.au)
-
-lib/readline/doc/rltech.texi
-       - make sure to note that rl_save_prompt should be called before
-         rl_message, and rl_restore_prompt before rl_clear_message
-
-pcomplete.c
-       - make sure to save and restore the parser state around the call to
-         execute_shell_function in gen_shell_function_matches.  Fixes bug
-         reported by a050106.1.keeLae3x@captaincrumb.com (cute)
-
-lib/readline/readline.c
-       - fix _rl_dispatch_subseq in the case where we're recursing back up
-         the chain (r == -2) and we encounter a key shadowed by a keymap,
-         but originally bound to self-insert.  Calling rl_dispatch with
-         ANYOTHERKEY as the first argument will call rl_insert, but with
-         ANYOTHERKEY (256) as the char to insert.  Use the shadow keymap
-         and set things up to dispatch to rl_insert with the shadowed key
-         as the argument.  Fixes the bug reported by Thomas Glanzmann
-         (sithglan@stud.uni-erlangen.de)
-
-                                  1/13
-                                  ----
-command.h
-       - new word flag: W_HASQUOTEDNULL
-
-make_cmd.c
-       - new function to allocate a WORD_DESC * without doing anything with a
-         containing string:  alloc_word_desc
-
-make_cmd.h
-       - extern declaration for alloc_word_desc
-
-dispose_cmd.c
-       - new function to just free a WORD_DESC * without freeing the contained
-         string:  dispose_word_desc
-
-dispose_cmd.h
-       - extern declaration for dispose_word_desc
-
-subst.c
-       - change some places to use alloc_word_desc
-       - make same changes to word_list_quote_removal as were made to
-         word_list_split
-       - set W_HASQUOTEDNULL when a word is created with w->word[0] ==
-         CTLNUL and w->word[1] == '\0'
-
-subst.c
-       - parameter_brace_expand_word now returns a WORD_DESC * -- changed
-         callers to understand
-       - parameter_brace_expand_indir now returns a WORD_DESC * -- changed
-         callers to understand
-       - parameter_brace_expand_rhs now returns a WORD_DESC * -- changed
-         callers to understand
-       - remove W_HASQUOTEDNULL from a word's flags when remove_quoted_nulls
-         is called on the word's enclosed string
-
-                                  1/15
-                                  ----
-subst.c
-       - param_expand now returns a WORD_DESC * -- changed callers to
-         understand
-       - parameter_brace_expand now returns a WORD_DESC * -- changed
-         callers to understand
-       - in expand_word_internal, only call remove_quoted_nulls after a word
-         is returned with W_HASQUOTEDNULL
-       - changes to pass W_HASQUOTEDNULL flag out of expand_word_internal;
-         changed callers to call remove_quoted_nulls only if return value has
-         W_HASQUOTEDNULL set.  This is a mostly-complete fix for the
-         long-standing CTLNUL confusion between a quoted null expansion and
-         the expansion of a variable with a literal '\177' in its value
-       - change string_list_dollar_at to compute the separator character the
-         same way as string_list_dollar_star:  using the already-computed
-         values generated in setifs()
-       - when expanding unquoted $*, if $IFS is empty, check whether or not
-         we're eventually going to split the results (e.g., on the rhs of an
-         assignment statement) and concatenate the positional parameters as
-         if the expansion were within double quotes if we're not going to
-         split
-
-tests/iquote.tests
-       - test cases based on old bug reports about the quoted-null vs. 0177
-         problem the recent code fixes
-
-                                  1/16
-                                  ----
-dispose_cmd.c
-       - set w->word to 0 before putting a WORD_DESC * back in the cache in
-         dispose_word_desc; changed callers to delete those assignments
-
-variables.c
-       - change assign_random and get_random_value so that the random number
-         generator only gets re-seeded once in a subshell environment, and
-         assigning a value to RANDOM counts as seeding the generator.  This
-         makes the sequences a little more predictable
-
-                                  1/20
-                                  ----
-lib/readline/history.c
-       - fix replace_history_entry, remove_history to return NULL if
-         passed index is < 0
-
-                                  1/22
-                                  ----
-lib/sh/netconn.c
-       - fix isnetconn() to understand that getpeername can return ENOTCONN
-         to indicate that an fd is not a socket
-
-configure.in
-       - set BUILD_DIR to contain backslashes to escape any spaces in the
-         directory name -- this is what make will accept in targets and
-         prerequisites, so it's better than trying to use double quotes
-       - set SIZE to the appropriate value if some cross-compiling tool
-         chain is being used; `size' by default (can be overridden by
-         SIZE environment variable)
-
-Makefile.in
-       - use $(SIZE) instead of size; set SIZE from configure
-
-                                  1/31
-                                  ----
-arrayfunc.c
-       - in array_value_internal, return NULL right away if the variable's
-         value is NULL, instead of passing a null string to add_string_to_list
-
-                                   2/1
-                                   ---
-jobs.h
-       - new struct to hold stats and counters for child processes and jobs
-       - change some uses of global and static variables to use members of
-         new struct (struct jobstats)
-
-                                   2/2
-                                   ---
-
-jobs.[ch]
-       - change PRUNNING to PALIVE
-       - new define INVALID_JOB
-       - new macro get_job_by_jid(ind), currently expands to jobs[ind]
-       - new define J_JOBSTATE, operates on a JOB * like JOBSTATE operates on
-         a job index
-       - new function, reset_job_indices, called from delete_job if
-         js.j_lastj or js.j_firstj are removed
-       - change various functions to keep counters and stats in struct jobstats
-
-pcomplete.c, builtins/common.c, builtins/{exit,fg_bg,jobs,kill,wait}.def
-       - change global variables (e.g., job_slots) to struct members
-         (e.g., js.j_jobslots)
-       - use INVALID_JOB define where appropriate
-       - use get_job_by_jid and J_JOBSTATE where appropriate
-
-trap.c
-       - change reset_or_restore_signal_handler to not free the exit trap
-         string if the function pointer is reset_signal, which is used when
-         the trap strings shouldn't be freed, like in command substitution
-
-                                   2/4
-                                   ---
-jobs.c
-       - new function, realloc_jobs_list, copies jobs array to newly-allocated
-         memory shrinking (or growing) size to have next multiple of JOB_SLOTS
-         greater than js.j_njobs
-       - change compact_jobs_list to just call reap_dead_jobs and then
-         realloc_jobs_list, simplifying it considerably
-       - discard_pipeline now returns `int':  the number of processes freed
-       - slightly changed the logic deciding whether or not to call
-         compact_jobs_list:  now non-interactive shells will compact the
-         list if it reaches MAX_JOBS_IN_ARRAY in size
-
-parse.y
-       - move test for backslash-newline after pop_string in shell_getc so
-         that things like
-
-               ((echo 5) \
-                (echo 6))
-
-         work right
-
-                                   2/8
-                                   ---
-jobs.h
-       - new structs for holding status of exited background processes, as
-         POSIX specifies
-       - new job flag: J_ASYNC
-
-jobs.c
-       - new functions to manipulate struct holding status of exited
-         background processes
-       - new members in struct jobstats to hold pointer to last created job
-         and last created asynchronous job
-       - initialize js.c_childmax in initialize_job_control
-       - if the `async' arg to stop_pipeline is non-null, set the J_ASYNC
-         flag in the job struct
-       - set js.j_last_made_job and js.j_last_asynchronous_job in
-         stop_pipeline
-       - new function: find_last_proc, returns the PROCESS * to the last proc
-         in a job's pipeline
-       - changed find_last_pid to call find_last_proc
-       - change delete_job to call bgp_add on the last proc of the job being
-         deleted
-       - change delete_all_jobs and wait_for_background_pids to call bgp_clear
-
-                                   2/9
-                                   ---
-jobs.c
-       - change wait_for_single_pid to look for pid in bgpids.list (using
-         bgp_search()) if find_pipeline returns NULL
-
-                                  2/10
-                                  ----
-support/shobj-conf
-       - change the solaris-gcc stanza so that it auto-selects the appropriate
-         options for ld depending on which `ld' gcc says it's going to run
-
-                                  2/11
-                                  ----
-jobs.h
-       - add support for PS_RECYCLED as a process state, add PRECYCLED macro
-         to test it.  Change PALIVE and PRUNNING macros to not count processes
-         in PS_RECYCLED state
-
-execute_cmd.c
-       - restore use of last_pid as sentinel value; use NO_PID as sentinel
-         only if RECYCLES_PIDS is defined
-
-jobs.c
-       - change find_job to return a pointer to the PROCESS the desired pid
-         belongs to, analogous to find_pipeline returning pointer to JOB
-       - change find_job callers to add extra argument
-       - change running_only arguments to find_pipeline and find_job to
-         alive_only, since we don't want recycled pids returned here and it
-         better describes the result
-       - new function find_process, calls find_pipeline and searches the
-         returned pipeline for the PROCESS * describing the desired pid
-       - in make_child, if fork() returns the same pid as the value of
-         last_asynchronous_pid when RECYCLES_PIDS is defined, avoid pid
-         aliasing by resetting last_asynchronous_pid to 1
-       - use PRUNNING instead of child->running, since we, for the most
-         part, don't want to consider recycled pids (e.g., in make_child())
-       - call find_process instead of find_pipeline in waitchld()
-       - use PEXITED(p) instead of testing p->running == PS_DONE
-       - in make_child, call bgp_delete to remove a just-created pid from the
-         last of saved pid statuses
-       - in add_process, check whether or not pid being added is already in
-         the_pipeline or the jobs list (using find_process) and mark it as
-         recycled if so
-       - This set of fixes mostly came from Pierre Humblet
-         <pierre.humblet@ieee.org> to fix pid aliasing and reuse problems on
-         cygwin
-
-variables.c
-       - set $_ from the environment if we get it there, set to $0 by
-         default if not in env
-
-doc/{bashref.texi,bash.1}
-       - a couple of clarifying changes to the description of $_ based on
-         comments from Glenn Morris <gmorris+mail@ast.cam.ac.uk>
-
-                                  2/15
-                                  ----
-shell.c
-       - use strstr instead of strmatch when checking whether $EMACS contains
-         `term' -- simpler and faster
-
-                                  2/18
-                                  ----
-builtins/cd.def
-       - implement posix requirement that `pwd -P' set $PWD to a directory
-         name containing no symlinks
-       - add new function, setpwd(), just sets (and changes exported value)
-         of PWD
-
-doc/bashref.texi
-       - add note to posix mode section about pwd -P setting $PWD
-
-doc{bash.1,bashref.texi}
-       - added note that BASH_ARGC and BASH_ARGV are only set in extended
-         debug mode
-       - expand description of extdebug option to include everything changed
-         by extended debug mode
-
-                                  2/19
-                                  ----
-pathexp.h
-       - new flag macro, FNMATCH_IGNCASE, evaluates to FNM_CASEFOLD if the
-         match_ignore_case variable is non-zero
-
-execute_cmd.c
-       - new variable, match_ignore_case
-       - change call to strmatch() in execute_case_command so it includes
-         FNMATCH_IGNCASE
-
-test.c
-       - change call to strmatch() in patcomp() so that pattern matching
-         calls for [[ ... ]] obey the match_ignore_case variable
-
-lib/sh/shmatch.c
-       - if match_ignore_case is set, enable REG_ICASE in the regexp match
-         flags
-
-builtins/shopt.def
-       - new settable option, `nocasematch', controls the match_ignore_case
-         variable.  Currently alters pattern matching for case and [[ ... ]]
-         commands (==, !=, and =~ operators)
-
-doc/{bashref.texi,bash.1}
-       - updated descriptions of [[ and case to include reference to
-         nocasematch option
-
-                                  2/22
-                                  ----
-builtins/mkbuiltins.c
-       - add `times' to the list of posix special builtins
-
-                                  2/23
-                                  ----
-builtins/cd.def
-       - posix mode no longer turns on effect of -P option on $PWD if a
-         directory is chosen from CDPATH
-
-doc/bashref.texi
-       - clarified that in posix mode, reserved words are not alias expanded
-         only in a reserved word context
-       - removed item about cd, $CDPATH, and -P from posix mode section
-
-                                  2/24
-                                  ----
-builtins/reserved.def
-       - minor cleanups to the description of `if'
-
-                                   3/2
-                                   ---
-subst.c
-       - change list_string and get_word_from_string to explicitly treat an
-         IFS character that is not space, tab, or newline *and any adjacent
-         IFS white space* as a single delimiter, as SUSv3/XPG6 says
-
-builtins/read.def
-       - check whether or not the number of fields is exactly the same as
-         the number of variables instead of just assigning the rest of the
-         line (minus any trailing IFS white space) to the last variable.
-         This parses a field and checks whether or not it consumes all of
-         the input (including any trailing field delimiters), falling back
-         to the previous behavior if it does not.  This is what POSIX.2
-         specifies, I believe (and the consensus of the austin-group list).
-         This requires a few tests in read.tests to be changed: backslashes
-         escaping IFS whitespace characters at the end of input cause the
-         whitespace characters to be preserved in the value assigned to the
-         variable, and the trailing non-whitespace field delimiter issue
-
-                                   3/7
-                                   ---
-configure.in
-       - add -D_POSIX_SOURCE to the LOCAL_CFLAGS for Interix
-
-                                   3/8
-                                   ---
-bashline.c
-       - make bash_directory_expansion a void function, since it doesn't have
-         any return value
-
-                                   3/9
-                                   ---
-builtins/read.def
-       - when testing for a pipe, use `fd' instead of hard-coding 0, since we
-         can read from other file descriptors now
-
-lib/sh/zread.c
-       - in zsyncfd, only set lind and lused to 0 if the lseek succeeds.
-         If the lseek fails, we might steal input from other programs, but
-         a failed lseek won't cause us to erroneously discard input
-
-                                  3/11
-                                  ----
-builtins/evalstring.c
-       - don't allow parse_and_execute to short-circuit and call exec() if
-         the command's return value is being inverted
-
-                                  3/15
-                                  ----
-builtins/printf.def
-       - new macro PC to call putchar and increment number of chars printed -
-         fixes bug in computation of value for %n format char
-       - `tw' is now a global var so printstr can modify it using PC()
-       - convert PF macro to use asprintf into a local buffer
-         Preparation for printf -v var
-       - add code to add the text printed to a `variable buffer' if -v option
-         supplied.  The buffer grows as needed
-       - printf now takes a `-v var' option to put the output into the variable
-         VAR rather than sending it to stdout.  It does not:
-               print partial output on error (e.g., format string error)
-               handle NULs in the variable value, as usual
-
-                                  3/16
-                                  ----
-parse.y
-       - fix bug in prompt string decoding that caused a core dump when PS1
-         contained \W and PWD was unset (null pointer deref)
-
-builtins/printf.def
-       - changed -v var behavior so it stores partial output into the named
-         variable upon an error
-
-                                  3/24
-                                  ----
-lib/readline/bind.c
-       - bool_to_int now takes a `const char *' argument
-
-support/{printenv,recho,zecho}.c
-       - include config.h
-       - include "bashansi.h" for appropriate extern function declarations
-
-configure.in
-       - on MacOS X 10.4, compensate for loader not allowing static library
-         to override existing system dynamic library when compiling -dynamic
-         (affects readline and history libraries); so use absolute pathname
-         instead of -lreadline as library name
-
-lib/glob/{glob,sm_loop,smatch}.c
-       - make sure to cast arguments to (char *)  or (unsigned char *) as
-         appropriate to avoid gcc4 warnings
-
-lib/glob/smatch.c
-       - collsym (single-byte version) now takes a (CHAR *) first argument to
-         match callers; cast argument to strncmp appropriately
-
-lib/sh/snprintf.c
-       - fix ldfallback and dfallback to handle width and precision specs in
-         the format passed to sprintf()
-       - fix STAR_ARGS macro to deal with negative field widths and precisions
-
-                                  3/25
-                                  ----
-builtins/printf.def
-       - since a negative precision in a "x.x[fFgGeE]" format specifier should
-         be allowed but treated as if the precision were missing, let it
-         through
-
-lib/sh/snprintf.c
-       - fix * code to deal with a negative precision by treating it as if
-         the `.' and any digit string in the precision had not been specified
-       - fix format parsing code to deal with a negative inline precision,
-         e.g., "%4.-4f" by treating it as if the `'. and any digit string in
-         the precision had not been specified
-       - a `+' in a format specifier should only act as a flag if it comes
-         before a `.' (otherwise it is ignored)
-
-lib/readline/vi_mode.c
-       - new function, rl_vi_rubout, to rl_rubout as rl_vi_delete is to
-         rl_delete; saves deleted text for possible reinsertion as with any
-         vi-mode `text modification' command (fixes problem with `X' reported
-         by beat.wieland@gmx.ch)
-
-lib/readline/vi_keymap.c
-       - bind `X' in vi command mode to rl_vi_rubout
-
-lib/readline/funmap.c
-       - add a bindable `vi-rubout' command, runs rl_vi_rubout
-
-lib/readline/text.c
-       - rewrote internals of _rl_rubout_char to make structure cleaner
-
-lib/readline/{complete,text}.c
-       - changed code to remove #ifdef HANDLE_MULTIBYTE where possible
-
-                                  3/28
-                                  ----
-lib/readline/examples/rl.c
-       - include <sys/stat.h> instead of posixstat.h if READLINE_LIBRARY not
-         defined
-
-subst.c
-       - fix mbstrlen to treat invalid multibyte sequences as sequences of
-         single-byte characters
-
-                                   4/8
-                                   ---
-configure.in
-       - default SIZE to `:' if cross-compiling and an appropriate size for
-         the target is not found
-
-                                  4/11
-                                  ----
-subst.c
-       - change match_upattern and match_wpattern to check whether or not the
-         supplied pattern matches anywhere in the supplied string, prefixing
-         and appending the pattern with `*' if necessary.  If it doesn't we
-         can short-circuit immediately rather than waste time doing up to
-         N-1 unsuccessful calls to strmatch/wcsmatch (which kills for long
-         strings, even if the pattern is short)
-
-                                  4/12
-                                  ----
-configure.in
-       - make sure the special case for MacOS X 10.4 only kicks in if the
-         `--with-installed-readline' option isn't supplied
-
-lib/readline/{callback,readline,signals}.c
-       - make sure rl_prep_term_function and rl_deprep_term_function aren't
-         dereferenced if NULL (as the documentation says)
-
-builtins/mkbuiltins.c
-       - don't bother with the special HAVE_BCOPY code; just use straight
-         assignments
-
-builtins/ulimit.def
-       - use _POSIX_PIPE_BUF in pipesize() if it's defined and PIPE_BUF is
-         not
-
-                                  4/13
-                                  ----
-execute_cmd.c
-       - add cm_function_def to the list of control structures for which
-         child processes are forked when pipes come in or out
-
-                                  4/14
-                                  ----
-builtins/read.def
-       - make sure the ^As added for internal quoting are not counted as
-         characters read when -n is supplied
-
-                                  4/20
-                                  ----
-redir.c
-       - fix redir_open so that the repeat open on failure that AFS support
-         adds restores the correct value of errno for any error message
-
-                                  4/26
-                                  ----
-
-Makefile.in
-       - make sure mksignames and mksyntax are invoked with the $(EXEEXT)
-         extension
-
-                                  4/28
-                                  ----
-lib/readline/readline.h
-       - new state variable: RL_STATE_CALLBACK, means readline is using the
-         callback interface
-
-lib/readline/callback.c
-       - set RL_STATE_CALLBACK in rl_callback_handler_install, unset in
-         rl_callback_handler_remove
-
-                                  4/29
-                                  ----
-config-top.h
-       - DONT_REPORT_SIGPIPE is now on by default, since it apparently
-         interferes with scripts
-
-configure.in
-       - arrange things so PGRP_PIPE is defined on Linux-2.4+ and version 3
-         kernels (ones that apparently schedule children to run before their
-         parent)
-
-                                  4/30
-                                  ----
-builtins/caller.def
-       - add call to no_options, so it can handle `--' option
-
-doc/{bash.1,bashref.texi}
-       - note explicitly that test, :, true, and false don't understand --
-         as meaning the end of options
-
-                                   5/7
-                                   ---
-support/shobj-conf
-       - darwin 8 needs the same LDFLAGS setting as darwin 7
-
-parse.y
-       - in save_parser_state, make sure we cast the return value from
-         xmalloc() to the right type
-       - remove casts to (char *) in calls to yyerror()
-
-lib/readline/signals.c
-       - make SIGQUIT and SIGALRM code conditional on their definition
-       - use raise() to send a signal if we don't have kill()
-
-lib/readline/display.c
-       - some MS-DOS and MINGW changes from the cygwin and mingw folks
-
-config.h.in
-       - add HAVE_PWD_H for <pwd.h>
-       - add HAVE_FCNTL, HAVE_KILL for respective system calls
-       - add HAVE_GETPW{ENT,NAM,UID} for passwd functions
-
-configure.in
-       - add check for <pwd.h>
-       - add checks for fcntl, kill system calls
-       - add checks for getpw{ent,nam,uid} C library functions
-       - pass a flag indicating we're cross compiling through to
-         CFLAGS_FOR_BUILD in Makefile.in
-
-lib/readline/complete.c
-       - guard inclusion of <pwd.h> with HAVE_PWD_H
-       - don't provide a missing declaration for getpwent if we don't have it
-       - guard calls to {get,end}pwent with HAVE_GETPWENT
-
-lib/readline/shell.c
-       - guard inclusion of <pwd.h> with HAVE_PWD_H
-       - guard inclusion of <fcntl.h> with HAVE_FCNTL_H
-       - don't provide a missing declaration for getpwuid if we don't have it
-       - guard calls to getpwuid with HAVE_GETPWUID
-       - don't bother with body of sh_unset_nodelay_mode if we don't have
-         fcntl
-
-lib/tilde/tilde.c
-       - guard inclusion of <pwd.h> with HAVE_PWD_H
-       - guard calls to getpw{nam,uid} with HAVE_GETPW{NAM,UID}
-       - guard calls to {get,end}pwent with HAVE_GETPWENT
-
-Makefile.in,builtins/Makefile.in
-       - @CROSS_COMPILE@ is substituted into CFLAGS_FOR_BUILD (equal to
-         -DCROSS_COMPILING if bash is being cross-compiled)
-
-                                   5/9
-                                   ---
-aclocal.m4
-       - print version as `0.0' in RL_LIB_READLINE_VERSION if the
-         `rl_gnu_readline_p' variable isn't 1 (accept no imitations)
-
-                                  5/11
-                                  ----
-lib/readline/rlprivate.h
-       - definition of a readline `search context', to be use for incremental
-         search initially and other types of search later.  Original from
-         Bob Rossi as part of work on incremental searching problems when
-         using callback interface
-
-lib/readline/isearch.c
-       - functions to allocate and free search contexts
-       - function to take a search context and a character just read and
-         `dispatch' on it:  change search parameters, add to search string,
-         search further, etc.
-       - isearch is now completely context-driven:  a search context is
-         allocated and passed to the rest of the functions
-
-                                  5/12
-                                  ----
-lib/readline/isearch.c
-       - an additional `isearch cleanup' function that can be called from
-         the callback interface functions when the search is to be terminated
-       - an additional `isearch callback' function that can be called from
-         rl_callback_read_char when input is available
-       - short-circuit from rl_search_history after initialization if
-         the callback interface is being used
-
-lib/readline/callback.c
-       - in rl_callback_read_char(), if RL_STATE_ISEARCH is set, call
-         _rl_isearch_callback to read the character and dispatch on it.
-         If RL_STATE_ISEARCH is unset when that call returns, and there is
-         input pending, call rl_callback_read_char() again so we don't
-         have to wait for new input to pick it up
-
-support/shobj-conf,configure.in
-       - add support for dragonfly bsd, the same as freebsd
-
-                                5/13-5/15
-                                ---------
-lib/readline/callback.c
-       - support for readline functions to `register' a function that will
-         be called when more input is available, with a generic data
-         structure to encapsulate the arguments and parameters.  Primarily
-         intended for functions that read a single additional character,
-         like quoted-insert
-       - support for callback code reading numeric arguments in a loop,
-         using readline state and an auxiliary variable
-       - support for callback code performing non-incremental searches using
-         the same search context struct as the isearch code
-
-lib/readline/{callback,display}.c
-       - if a callback function sets `_rl_redisplay_wanted', the redisplay
-         function will be called as soon as it returns
-
-lib/readline/input.c
-       - changes to _rl_read_mbchar to handle reading the null multibyte
-         character and translating it into '\0'
-
-lib/readline/misc.c
-       - break rl_digit_loop() into component functions that can be called
-         individually from the callback code more easily
-       - share some of the functions with rl_digit_loop1() in vi_mode.c
-
-lib/readline/readline.h
-       - change the version #defines to reflect readline 5.1
-
-lib/readline/search.c
-       - break code into smaller functions that can be composed to work with
-         the callback code more easily
-
-lib/readline/text.c
-       - in rl_quoted_insert(), don't mess around with the tty signals if
-         running in `callback mode'
-
-lib/readline/vi_mode.c
-       - changed set-mark, goto-mark, change-char, and char-search to work
-         when called by callback functions
-
-                                  5/17
-                                  ----
-
-lib/readline/rlprivate.h
-       - new struct declaration for a `reading key sequence' context
-
-lib/readline/readline.c
-       - new variable, _rl_dispatching_keymap, keeps track of which keymap
-         we are currently searching
-       - functions to allocate and deallocate contexts for reading multi-char
-         key sequences
-
-                                  5/18
-                                  ----
-lib/readline/rlprivate.h
-       - new struct defining a context for multiple-key key sequences (the
-         base case is escape-prefixed commands)
-
-lib/readline/readline.c
-       - change structure of _rl_dispatch_subseq to allow for callback code
-         to use it - rudimentary support for supporting the existing
-         recursion using a stack of contexts, each with a reference to the
-         previous
-       - fix so that ^G works when in callback mode
-
-lib/readline/callback.c
-       - call the appropriate multiple-key sequence callback if the state is
-         set
-
-                                  5/19
-                                  ----
-lib/readline/readline.c
-       - broke code from _readline_internal_char after call to rl_dispatch
-         out into separate function:  _rl_internal_char_cleanup, callable by
-         other parts of the code
-       - change _rl_internal_char_cleanup to unset _rl_want_redisplay after
-         it calls (*rl_redisplay_func)
-
-lib/readline/callback.c
-       - call _rl_internal_char_cleanup from rl_callback_read_char when
-         appropriate
-
-                                  5/24
-                                  ----
-lib/readline/callback.c
-       - use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
-         simulate the recursion used to decode multicharacter key sequences
-         (even things like ESC- as meta-prefix)
-       - call setjmp in rl_callback_read_char to give things like rl_abort
-         a place to jump, since the saved location in readline() will not
-         be valid
-       - keep calling _rl_dispatch_callback from rl_callback_read_char while
-         we are still decoding a multi-key key sequence
-       - keep calling readline_internal_char from rl_callback_read_char while
-         we are reading characters from a macro
-
-lib/readline/macro.c
-       - use a slightly different strategy upon encountering the end of a macro
-         when using the callback interface:  when the last character of a
-         macro is read, and we are reading a command, pop the macro off the    
-         stack immediately so the loop in rl_callback_read_char terminates
-         when it should
-
-lib/readline/readline.c
-       - if longjmp() is called and we end up at the saved location while
-         using the callback interface, just return -- don't go back into a
-         blocking read
-       - new function to dispose a chain of rl_keyseq_cxts
-       - only read new input in _rl_dispatch_callback if the KSEQ_DISPATCHED
-         flag is not set in the current keyseq context -- if it is, we are
-         traversing the chain back up and should use what we already saved
-       - use -3 as a magic value from _rl_dispatch_subseq to indicate that
-         we're allocating a new context and moving downward in the chain
-         (a special return value for the benefit of _rl_dispatch_callback)
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_keyseq_chain_dispose
-
-                                   6/1
-                                   ---
-builtins/read.def
-       - fixed a bug that occurred when reading a set number of chars and
-         the nth char is a backslash (read one too many).  Bug reported by
-         Chris Morgan <chmorgan@gmail.com>
-
-execute_cmd.c
-       - fix execute_builtin so the `unset' builtin also operates on the
-         temporary environment in POSIX mode (as well as source and eval),
-         so that unsetting variables in the temporary environment doesn't
-         leave them set when unset completes.  Report by Eric Blake
-         <ebb9@byu.net>
-
-array.c
-       - fix from William Park for array_rshift when shifting right on an
-         empty array -- corrects calculation of array->max_index
-
-builtins/exec.def
-       - if an exec fails and the execfail option is set, don't call
-         restart_job_control unless the shell is interactive or job_control
-         is set
-
-jobs.c
-       - add a run-time check for WCONTINUED being defined in header files
-         but rejected with EINVAL by waitpid().  Fix from Maciej Rozycki
-         <macro@linux-mips.org>
-
-                                  6/20
-                                  ----
-bashhist.c
-       - make sure calls to sv_histchars are protected by #ifdef BANG_HISTORY
-       - ditto for calls to history_expand_line_internal
-
-                                  6/23
-                                  ----
-doc/bashref.texi
-       - remove extra blank lines in @menu constructs
-
-variables.c
-       - assign export_env to environ (extern char **) every time it changes
-         (mostly in add_to_export_env define), so maybe getenv will work on
-         systems that don't allow it to be replaced
-
-                                  6/29
-                                  ----
-bashline.c
-       - in bash_directory_completion_hook, be careful about not turning `/'
-         into `//' and `//' into `///' for benefit of those systems that treat
-         `//' as some sort of `network root'.  Fix from Eric Blake
-         <ebb9@byu.net>
-
-lib/readline/complete.c
-       - in to_print, do the right thing after stripping the trailing slash
-         from full_pathname: // doesn't turn into /, and /// doesn't become
-         //.  Fix from Eric Blake <ebb9@byu.net>
-
-                                  6/30
-                                  ----
-lib/malloc/trace.c
-       - include <unistd.h> if it's available for a definition of size_t
-
-jobs.c
-       - in wait_for, if a child process is marked as running but waitpid()
-         returns -1/ECHILD (e.g., when the bash process is being traced by
-         strace), make sure to increment c_reaped when marking the child as
-         dead
-       - in without_job_control, make sure to close the pgrp pipe after
-         calling start_pipeline
-
-                                   7/1
-                                   ---
-Makefile.in
-       - only remove pathnames.h when the other files created by running
-         configure are removed (e.g., Makefile).  Fix from William Park
-
-lib/sh/shquote.c
-       - since backslash-newline disappears when within double quotes, don't
-         add a backslash in front of a newline in sh_double_quote.  Problem
-         reported by William Park
-
-jobs.c
-       - in notify_of_job_status, don't print status messages about
-         terminated background processes unless job control is active
-
-bashhist.c
-       - new variable, hist_last_line_pushed, set to 0 in really_add_history
-         (used by `history -s' code)
-
-bashhist.h
-       - new extern declaration for history -s
-
-builtins/history.def
-       - don't remove last history entry in push_history if it was added by
-         a call to push_history -- use hist_last_line_pushed as a sentinel
-         and set it after adding history entry.  This allows multiple
-         calls to history -s to work right:  adding all lines to the history
-         rather than deleting all but the last.  Bug reported by Matthias
-         Schniedermeyer <ms@citd.de>
-       - pay attention to hist_last_line_pushed in expand_and_print_history()
-         so we don't delete an entry pushed by history -s
-
-                                   7/4
-                                   ---
-print_cmd.c
-       - fix print_arith_for_command to not print so many blanks between
-         expressions in ((...))
-
-command.h
-       - new word flag: W_DQUOTE.  Means word should be treated as if double
-         quoted
-
-make_cmd.c
-       - add W_DQUOTE to word flags in make_arith_for_expr
-
-parse.y
-       - add W_DQUOTE to word flags for (( ... )) arithmetic commands
-
-subst.c
-       - don't perform tilde expansion on a word with W_DQUOTE flag set
-       - don't perform process substitution on a word with W_DQUOTE flag set
-
-arrayfunc.c
-       - expand an array index within [...] the same way as an arithmetic
-         expansion between (( ... ))
-
-lib/readline/input.c
-       - use getch() instead of read() on mingw
-
-lib/readline/readline.c
-       - add a few key bindings for the arrow keys on mingw
-
-lib/readline/rldefs.h
-       - if on mingw, define NO_TTY_DRIVER
-
-lib/readline/rltty.c
-       - compile in the stub functions for _rl_{disable,restore}_tty_signals
-         if on mingw
-       - compile in stub function for rl_restart_output on mingw
-       - make sure enough functions and macros are defined to compile if
-         NO_TTY_DRIVER is defined (lightly tested - builds on MacOS X, at
-         least)
-
-                                   7/7
-                                   ---
-command.h
-       - add a `flags' member to the PATTERN_LIST structure
-
-make_cmd.c
-       - intialize the `flags' member of a PATTERN_LIST when it's created
-
-builtins/psize.c
-       - protect extern declaration of errno with usual #ifdef errno
-
-configure.in, variables.c
-       - changes for QNX 6.x
-
-                                   7/9
-                                   ---
-parse.y
-       - fix parse_matched_pair to handle single and double quoted strings
-         inside old-style command substitution (``) since they can each
-         quote the ` and embedded $-expansions.  Report by Eric Blake
-         <ebb9@byu.net>
-
-{configure,Makefile}.in
-       - TILDE_LIB is now substituted into Makefile by configure
-
-configure.in
-       - if configuring --with-installed-readline on cygwin, set TILDE_LIB
-         to the empty string to avoid multiply-defined symbols.  Cygwin
-         doesn't allow undefined symbols in dynamic libraries.  Report by
-         Eric Blake <ebb9@byu.net>
-
-                                  7/11
-                                  ----
-input.c
-       - in duplicate_buffered_stream, don't call free_buffered_stream if the
-         two buffered streams share the same b_buffer object (e.g., if they
-         had already been duplicated with a previous call).  Fixes Debian bug
-         reported by eero17@bigfoot.com
-
-                                  7/12
-                                  ----
-shell.c
-       - make set_shell_name more resistant to a NULL argument
-       - in bind_args, use < instead of != when counting the arguments and
-         making the arg list
-       - in main(), make sure arg_index is not initialized to a value greater
-         than argc
-
-                                  7/14
-                                  ----
-lib/readline/display.c
-       - in expand_prompt, don't set the location of the last invisible
-         char if the sequence is zero length  (\[\])
-
-                                  7/15
-                                  ----
-doc/{bash.1,bashref.texi}
-       - document that the shell uses $TMPDIR when creating temporary files
-
-                                  7/20
-                                  ----
-[bash-3.1-alpha1 frozen]
-
-                                  7/29
-                                  ----
-builtins/evalstring.c
-       - make sure that parse_and_execute saves and restores the value of
-         loop_level, so loops in sourced scripts and eval'd strings don't
-         mess up the shell's parser state
-
-bashline.c
-       - change command_subst_completion_function to suppress appending
-         any character to a unique completion, instead of a space, unless
-         the last word in the quoted command substitution completes to a
-         directory name.  In that case we append the expected slash
-
-                                   8/1
-                                   ---
-builtins/printf.def
-       - make sure variables are initialized if their values are tested later
-
-[bash-3.1-alpha1 updated and re-frozen]
-
-                                   8/2
-                                   ---
-variables.c
-       - make sure to call stifle_history with an `int' instead of an intmax_t.
-         Sometimes it makes a difference
-
-                                   8/3
-                                   ---
-[bash-3.1-alpha1 released]
-
-support/mksignames.c
-       - add `SIGSTKFLT' (RHE3)
-       - add `SIGXRES' (Solaris 9)
-
-                                   8/4
-                                   ---
-builtins/ulimit.def
-       - fix typo to make `x' the right option for locks
-       - add new options to short help synopsis
-
-variables.c
-       - use get_variable_value instead of direct reference to value_cell
-         in make_variable_value when appending to the current value, so
-         references to array variables without subscripts will be equivalent
-         to element 0
-
-lib/readline/text.c
-       - rewrote rl_change_case to correctly change the case of multibyte
-         characters where appropriate
-
-                                   8/5
-                                   ---
-configure.in
-       - remove call to obsolete macro AC_ACVERSION
-       - remove special calls to AC_CYGWIN and AC_MINGW32; AC_CANONICAL_HOST
-         takes care of those cases
-
-general.h
-       - include `chartypes.h' for definition of ISALPHA
-       - fix definitions of ABSPATH and RELPATH for cygwin
-       - fix definition of ISDIRSEP for cygwin to allow backslash as a
-         directory name separator
-
-                                   8/9
-                                   ---
-builtins/setattr.def
-       - when setting a variable from the temporary environment in
-         set_var_attribute  (e.g., `LC_ALL=C export LC_ALL'), make sure to
-         call stupidly_hack_special_variables after binding the variable in
-         the current context
-
-builtins/printf.def
-       - make sure to call stupidly_hack_special_variables if using `printf -v'
-         to put formatted output in a shell variable
-
-                                  8/11
-                                  ----
-support/shobj-conf
-       - new variable: SHLIB_LIBPREF, prefix for shared library name (defaults
-         to `lib'
-       - new variable: SHLIB_DLLVERSION, used on Cygwin to set the library
-         version number
-       - new variable: SHLIB_DOT, separator character between library name and
-         suffix and version information (defaults to `.')
-       - new stanza for cygwin to generate windows-compatible dll
-
-                                  8/14
-                                  ----
-variables.c
-       - new special variable function for Cygwin, so the export environment
-         is remade when HOME is changed.  The environment is the only way to
-         get information from the shell to cygwin dlls, for instanace, when
-         bash is compiled to use an already-installed libreadline
-
-variables.h
-       - new extern declaration for sv_home
-
-                                  8/15
-                                  ----
-lib/readline/display.c
-       - call init_line_structures from rl_redisplay if vis_lbreaks == 0
-         to avoid consequences of a poorly-timed SIGWINCH
-
-                                  8/16
-                                  ----
-subst.c
-       - fix logic for performing tilde expansion when in posix mode (don't
-         rely on W_TILDEEXP flag always being set, because it won't be when
-         expanding the RHS of assignment statement).  Use W_TILDEEXP only
-         when deciding to expand a word marked as W_ASSIGNMENT that doesn't
-         precede a command name
-
-                                  8/17
-                                  ----
-execute_cmd.c
-       - in execute_function, when subshell == 1, don't short-cut by using
-         the command contained in the group command -- if you do, any
-         redirections attached to the group command (function) don't get
-         executed
-
-general.h
-       - new #define, FS_READABLE, indicates file is readable by current
-         user
-
-findcmd.c
-       - rewrote file_status to use S_xxx POSIX file mode bits and to add
-         support for FS_READABLE (affects ./source and searching $PATH for
-         scripts whose names are supplied as arguments on the command line)
-       - change find_path_file to look for readable files -- source requires
-         it
-       - change find_in_path_element to do the right thing when FS_READABLE
-         is supplied as a flag
-
-doc/bashref.texi
-       - remove note about posix non-compliance in `.': we now require and
-         look for readable files when searching $PATH
-
-                                  8/20
-                                  ----
-subst.c
-       - fix setifs to handle case where passed variable is non-zero but
-         v->value == 0 (as in an unset local variable); treat IFS as unset
-         in this case
-
-jobs.c
-       - in kill_pid, if asked to killpg a process or pgrp whose pgrp is
-         recorded as the same as the shell's, just call killpg and let the
-         chips fall where they may -- there may be other processes in that
-         pgrp that are not children of the shell, so killing each process
-         in the pipeline will not do a complete job, and killpg'ing each
-         such process will send too many signals in the majority of cases
-
-builtins/cd.def
-       - in posix mode, pwd needs to check that the value it prints and `.'
-         are the same file
-
-builtins/read.def
-       - if reading input from stdin in a non-interactive shell and calling
-         `read', call sync_buffered_stream to seek backward in the input
-         stream if necessary (XXX - should we do this for all shell builtins?)
-
-                                  8/23
-                                  ----
-builtins/cd.def
-       - in posix mode, if canonicalization of the absolute pathname fails
-         because the path length exceeds PATH_MAX, but the length of the passed
-         (non-absolute) pathname does not, attempt the chdir, just as when
-         not in posix mode
-
-builtins/type.def
-       - don't have describe_command call sh_makepath if the full path found
-         is already an absolute pathname (sh_makepath will stick $PWD onto the
-         front of it)
-
-                                  8/24
-                                  ----
-
-jobs.c
-       - in posix mode, don't have start_job print out and indication of
-         whether the job started by `bg' is the current or previous job
-       - change start_job to return success if a job to be resumed in the
-         background is already running.  This means that bg won't fail when
-         asked to bg a background job, as SUSv3/XPG6 requires
-       - new function, init_job_stats, to zero out the global jobstats struct
-
-{jobs,nojobs}.c
-       - change kill_pid to handle pids < -1 by killing process groups
-
-jobs.h
-       - extern declaration for init_job_stats
-
-lib/readline/history.c
-       - check whether or not the history list is null in remove_history
-
-builtins/history.def
-       - delete_last_history is no longer static so fc builtin can use it
-
-builtins/fc.def
-       - use free_history_entry in fc_replhist instead of freeing struct
-         members individually
-       - call delete_last_history from fc_replhist instead of using inline
-         code
-       - if editing (-l not specified), make sure the fc command that caused
-         the editing is removed from the history list, as POSIX specifies
-
-builtins/kill.def
-       - just call kill_pid with any pid argument and let it handle pids < -1
-         This is the only way to let kill_pid know whether a negative pid or
-         a job spec was supplied as an argument to kill
-
-builtins/fg_bg.def
-       - force fg_bg to return EXECUTION_SUCCESS explicitly if called by bg
-         and start_job returns successfully
-       - bg now returns success only if all the specified jobs were resumed
-         successfully
-
-execute_cmd.c
-       - call init_job_stats from initialize_subshell to zero out the global
-         job stats structure
-
-                                  8/25
-                                  ----
-bashline.c
-       - change vi_edit_and_execute_command to just call vi when in posix
-         mode, instead of checking $FCEDIT and $EDITOR
-
-lib/readline/search.c
-       - if in vi_mode, call rl_free_undo_list in make_history_line_current
-         to dispose of undo list accumulated while reading the search string
-         (if this isn't done, since vi mode leaves the current history
-         position at the entry which matched the search, the call to
-         rl_revert_line in rl_internal_teardown will mangle the matched
-         history entry using a bogus rl_undo_list)
-       - call rl_free_undo_list after reading a non-incremental search string
-         into rl_line_buffer -- that undo list should be discarded
-
-lib/readline/rlprivate.h
-       - add UNDO_LIST * member to search context struct
-
-lib/readline/isearch.c
-       - initialize UNDO_LIST *save_undo_list member of search context struct
-
-                                  8/27
-                                  ----
-lib/readline/bind.c
-       - change rl_parse_and_bind to strip whitespace from the end of a
-         variable value assignment before calling rl_variable_bind
-
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
-       - clarified the language concerning parsing values for boolean
-         variables in assignment statements
-
-                                  8/28
-                                  ----
-lib/sh/pathphys.c
-       - fix small memory leak in sh_realpath reported by Eric Blake
-
-                                  8/31
-                                  ----
-doc/bashref.texi
-       - add additional notes to posix mode section
-
-                                   9/3
-                                   ---
-parse.y
-       - if $'...' occurs within a ${...} parameter expansion within
-         double quotes, don't single-quote the expanded result -- the double
-         quotes will cause it to be expanded incorrectly
-
-                                   9/4
-                                   ---
-builtins/fc.def
-       - if STRICT_POSIX is defined, the posix mode default for the editor to
-         use is $FCEDIT, then ed
-
-shell.c
-       - if STRICT_POSIX is defined, initialize `posixly_correct' to 1
-
-config.h.in
-       - add #undef STRICT_POSIX
-
-                                   9/5
-                                   ---
-configure.in
-       - add new option argument, --enable-strict-posix-default, configures
-         bash to be posix-conformant (including defaulting echo to posix
-         conformance) by default
-
-builtins/echo.def
-       - if STRICT_POSIX is defined, default echo to xpg-style
-
-doc/bashref.texi
-       - describe the --enable-strict-posix-default option to configure
-
-                                  9/10
-                                  ----
-builtins/mkbuiltins.c
-       - change to not generate N_(""), because the translated empty string is
-         special to GNU gettext
-
-                                  9/13
-                                  ----
-lib/readline/complete.c
-       - a negative value for rl_completion_query_items means to not ask
-
-lib/readline/doc/{{rltech,rluser}.texi,readline.3}
-       - documented new semantics for rl_completion_query_items/
-         completion-query-items
-
-                                  9/14
-                                  ----
-bashline.c
-       - bind M-TAB in emacs mode to dynamic-complete-history even if the
-         current binding is `tab-insert' (which is what it is by default),
-         not just if it's unbound
-
-                                  9/15
-                                  ----
-eval.c
-       - call QUIT before calling dispose_command on current_command after
-         the  `exec_done' label.  If we dispose current_command first, the
-         longjmp might restore the value of current_command after we've
-         disposed it, and the subsequent call to dispose_command from the
-         DISCARD case will free memory twice
-
-                                  9/16
-                                  ----
-lib/sh/strto[iu]max.c
-       - make sure the function being declared is not a cpp define before
-         defining it -- should fix problems on HP-UX
-
-                                  9/19
-                                  ----
-Makefile.in
-       - make sure the binaries for the tests are at the front of $PATH
-
-                                  9/22
-                                  ----
-parse.y
-       - new flag for parse_matched_pair: P_COMMAND, indicating that the
-         text being parsed is a command (`...`, $(...))
-       - change calls to parse_matched_pair to include P_COMMAND where
-         appropriate
-       - if P_COMMAND flag is set and the text is unquoted, check for comments
-         and don't try to parse embedded quoted strings if in a comment (still
-         not exactly right yet)
-
-                                  9/24
-                                  ----
-builtins/history.def
-       - if running history -n, don't count these new lines as history lines
-         for the current session if the `histappend' shell option is set.
-         If we're just appending to the history file, the issue that caused
-         history_lines_this_session to be recalculated doesn't apply -- the
-         history file won't be missing any entries
-
-lib/readline/isearch.c
-       - fix C-w handler for isearch string reader to handle multibyte chars
-
-lib/readline/rlmbutil.h
-       - new defines for _rl_to_wupper and _rl_to_wlower
-
-lib/readline/text.c
-       - use _rl_to_wupper and _rl_to_wlower as appropriate
-
-                                  9/26
-                                  ----
-execute_cmd.c
-       - in shell_execve, if the exec fails due to E2BIG or ENOMEM, just print
-         the appropriate error message instead of checking out any interpreter
-         specified with #!
-
-                                  9/30
-                                  ----
-bashhist.c
-       - make $HISTCMD available anytime remember_on_history is non-zero,      
-         which indicates that we're saving commands to the history, and
-         let it evaluate to 1 if we're not
-
-                                  10/4
-                                  ----
-lib/sh/snprintf.c
-       - in floating(), make sure d != 0 before calling chkinfnan -- gcc on the
-         version of Solaris 9 I have translates 0 to -inf on the call
-
-[bash-3.1-beta1 frozen]
-
-                                  10/6
-                                  ----
-jobs.c
-       - set the_pipeline to NULL right away in cleanup_the_pipeline, and
-         dispose a copy of the pointer so we don't mess with the_pipeline
-         while we're in the process of destroying it
-       - block and unblock SIGCHLD around manipulating the_pipeline in
-         cleanup_the_pipeline  
-
-                                  10/7
-                                  ----
-[bash-3.1-beta1 released]
-
-lib/readline/isearch.c
-       - when switching directions, make sure we turn off the SF_REVERSE
-         flag in the search context's flags word if we're going from reverse
-         to forward i-search
-
-lib/readline/bind.c
-       - new function, rl_variable_value, returns a string representing a
-         bindable readline variable's value
-       - new auxiliary function, _rl_get_string_variable_value, encapsulates
-         everything needed to get a bindable string variable's value
-       - rewrote rl_variable_dumper to use _rl_get_string_variable_value
-
-lib/readline/readline.h
-       - new extern declaration for rl_variable_value
-
-lib/readline/doc/rltech.texi
-       - documented rl_variable_value
-
-bashline.c
-       - in command_word_completion_function, if readline sets
-         rl_completion_found_quote, but doesn't set rl_completion_quote_character,
-         we have an embedded quoted string or backslash-escaped character in
-         the passed text.  We need to dequote that before calling
-         filename_completion_function.  So far, this is in place only for
-         absolute program names (those containing a `/')
-       - in command_word_completion_function, use rl_variable_value to decide
-         whether or not we should ignore case, and use strncasecmp instead of
-         strncmp where appropriate
-
-                                  10/11
-                                  -----
-builtins/fc.def
-       - fixed a typo when using POSIX_FC_EDIT_COMMAND
-
-redir.h
-       - new flag values for redirections: RX_INTERNAL and RX_USER (currently
-         unused)
-
-redir.c
-       - add_undo_redirect and add_undo_close_redirect now set RX_INTERNAL
-         flag when making new redirects
-       - in do_redirection_internal, only set file descriptors > 2 to CLEXEC
-         if they're marked as RX_INTERNAL
-
-                                  10/12
-                                  -----
-jobs.c
-       - in wait_for_single_pid, if in posix mode, remove the waited-for pid
-         from the list of background pids, forgetting it entirely.  POSIX
-         conformance tests test for this.
-
-lib/readline/{readline.h,vi_mode.c}
-       - new state flag, RL_STATE_VICMDONCE, set after entering vi command
-         mode the first time; reset on each call to readline()
-
-                                  10/13
-                                  -----
-lib/readline/undo.c
-       - in rl_revert_line, make sure that revert-line in vi mode leaves
-         rl_point set to 0 no matter the state of the line buffer
-
-lib/readline/vi_mode.c
-       - when entering vi_command mode for the first time, free any existing
-         undo list so the previous insertions won't be undone by the `U'
-         command.  This is how POSIX.2 says `U' should work (and the test
-         suite tests for it)
-
-lib/readline/bind.c
-       - change rl_parse_and_bind so only `set' commands involving boolean
-         readline variables have trailing whitespace stripped from the value
-         string
-
-                                  10/16
-                                  -----
-lib/glob/sm_loop.c
-       - fix patscan() to correctly scan backslash-escaped characters
-
-                                  10/18
-                                  -----
-lib/sh/{winsize.c,Makefile.in},{jobs,nojobs}.c,Makefile.in,externs.h
-       - moved get_new_window_size from jobs.c/nojobs.c to new file,
-         lib/sh/winsize.c, made function global
-
-{jobs,nojobs,sig}.c,{jobs,sig}.h
-       - moved SIGWINCH handling code to sig.c rather than duplicate it in
-         jobs.c and nojobs.c
-       - call set_sigwinch_handler from sig.c code rather than job control
-         signal initialization
-
-sig.[ch]
-       - new variable, sigwinch_received, acts like interrupt_state for
-         SIGWINCH, set by sigwinch_sighandler.  sigwinch_sighandler no longer
-         calls get_new_window_size
-
-parse.y
-       - add call to get_new_window_size if sigwinch_received at top of
-         shell_getc
-
-                                  10/19
-                                  -----
-lib/malloc/malloc.c
-       - to avoid orphaning memory on free if the right bucket is busy, use a
-         new function xplit(mem, bucket) to split the block into two or more
-         smaller ones and add those to the right bucket (appropriately marking
-         it as busy)
-       - audit bsplit(), bcoalesce(), and xsplit() for proper use of busy[],
-         since they're dealing with two separate buckets
-
-                                  10/22
-                                  -----
-subst.c
-       - new flag for string_extract: EX_REQMATCH, means to return an error
-         if a matching/closing character is not found before EOS
-       - new static flag variables: extract_string_error and extract_string_fatal
-       - change expand_word_internal to check for new error returns from
-         string_extract and return errors if appropriate
-
-                                  10/23
-                                  -----
-builtins/cd.def
-       - make sure we free TDIR in change_to_directory after calling
-         set_working_directory (which allocates new memory) and other places
-         we short-circuit and return
-
-                                  10/24
-                                  -----
-subst.c
-       - modified fix from 10/22 to allow bare ` to pass through (for
-         some backwards compatibility and more correctness)
-
-                                  10/27
-                                  -----
-conftypes.h
-       - make MacOS X use the RHAPSODY code that gets HOSTTYPE, et al.
-         at build rather than configure time, to support universal binaries
-         (fix from llattanzi@apple.com)
-
-                                  10/30
-                                  -----
-builtins/evalstring.c
-       - make sure we don't turn on CMD_NO_FORK in parse_and_execute if
-         we're running a trap command on signal receipt or exit
-
-execute_cmd.c
-       - in shell_execve, improve the error message a little bit if the
-         interpreter name in a #! exec header ends with a ^M (as in a DOS-
-         format file)
-
-                                  11/1
-                                  ----
-lib/readline/vi_mode.c
-       - fix vi-mode `r' command to leave the cursor in the right place
-
-[bash-3.1-rc1 frozen]
-
-                                  11/5
-                                  ----
-execute_cmd.c
-       - make sure a DEBUG trap doesn't overwrite a command string passed to
-         make_child in execute_simple_command
-
-bashline.c
-       - rearrange some code in bash_quote_filename so filenames with leading
-         tildes containing spaces aren't tilde-expanded before being
-         returned to the caller
-
-                                  11/6
-                                  ----
-lib/readline/display.c
-       - when deciding where to move the cursor in rl_redisplay and needing
-         to move the cursor back after moving it vertically and compensate
-         for invisible characters in the prompt string, make sure that
-         _rl_last_c_pos is treated as an absolute cursor position in a
-         multibyte locale and the wrap offset (number of invisible characters)
-         is added explicitly when deciding how many characters to backspace
-
-                                  11/10
-                                  -----
-lib/readline/terminal.c
-       - _rl_set_screen_size now interprets a lines or columns argument < 0
-         as an indication not to change the current value
-
-                                  11/11
-                                  -----
-
-lib/readline/terminal.c
-       - new function, rl_reset_screen_size, calls _rl_get_screen_size to
-         reset readline's idea of the terminal size
-       - don't call _rl_get_screen_size in _rl_init_terminal_io if both        
-         _rl_screenheight and _rl_screenwidth are > 0
-       - don't initialize _rl_screenheight and _rl_screenwidth to 0 in
-         _rl_init_terminal_io; let caller take care of it
-       - set _rl_screenheight and _rl_screenwidth to 0 before calling
-         _rl_init_terminal_io
-
-lib/readline/readline.h
-       - new extern declaration for rl_reset_screen_size
-
-lib/readline/doc/rltech.texi
-       - documented rl_reset_screen_size
-
-variables.c
-       - if readline is being used, compile in a special var function for
-         assignments to LINES and COLUMNS that calls rl_set_screen_size or
-         rl_reset_screen_size as appropriate.  Only do this in posix mode
-         and only when STRICT_POSIX is defined at compile time
-       - new semaphore variable, winsize_assignment, set while doing an
-         assignment to LINES or COLUMNS
-       - new variable, winsize_assigned, says LINES or COLUMNS was assigned
-         to or found in the environment
-       - if in the middle of an assignment to LINES or COLUMNS, make
-         sh_set_lines_and_columns a no-op
-
-lib/sh/winsize.c
-       - get_new_window_size now takes two int * arguments, to return the
-         screen dimensions
-
-externs.h
-       - change extern declaration for get_new_window_size
-
-{jobs,nojobs}.c, parse.y
-       - change callers of get_new_window_size
-
-                                  11/12
-                                  -----
-lib/readline/terminal.c
-       - new variable, rl_prefer_env_winsize, gives LINES and COLUMNS
-         precedence over values from the kernel when computing window size
-
-lib/readline/readline.h
-       - extern declaration for rl_prefer_env_winsize
-
-lib/readline/doc/rltech.texi
-       - document rl_prefer_env_winsize
-
-                                  11/13
-                                  -----
-lib/readline/rltty.c
-       - change rl_prep_terminal to make sure we set and reset the tty
-         special characters in the vi insertion keymap if in vi mode.  This
-         matters if we get accept-line for the previous line while in vi
-         command mode
-
-                                  11/14
-                                  -----
-builtins/pushd.def
-       - make sure any call to cd_builtin includes a leading `--' from the
-         argument list (or constructs one)
-
-                                  11/16
-                                  -----
-pcomplete.c
-       - fix small memory leak in gen_wordlist_matches
-
-[bash-3.1-rc2 frozen]
-
-                                  11/21
-                                  -----
-[bash-3.1-rc2 released]
-
-                                  11/23
-                                  -----
-lib/readline/display.c
-       - changes to rl_redisplay to compensate for update_line updating
-         _rl_last_c_pos without taking invisible characters in the line into
-         account.  Important in multibyte locales where _rl_last_c_pos is an
-         absolute cursor position
-       - changes to _rl_move_cursor_relative to account for _rl_last_c_pos
-         being an absolute cursor position in a multibyte character locale
-       - rewrote _rl_move_cursor_relative to make it a little simpler
-
-                                  11/29
-                                  -----
-lib/readline/display.c
-       - changes to rl_redisplay and update_line for update_line to communicate
-         upward that it took the number of invisible characters on the current
-         line into account when modifying _rl_last_c_pos
-       - in update_line, adjust _rl_last_c_pos by wrap_offset before calling
-         _rl_move_cursor_relative, so we pass correct information about the
-         true cursor position
-
-                                  12/1
-                                  ----
-configure.in
-       - changed release status to `release'
-
-[bash-3.1 frozen]
-
-                                  12/8
-                                  ----
-[bash-3.1 released]
-
-                                  12/9
-                                  ----
-doc/{bash.1,version.texi},lib/readline/doc/version.texi
-       - remove `beta1' from man page footer and texinfo documents
-
-variables.c
-       - make sure winsize_assignment is protected by #ifdef READLINE, so
-         minimal shell will compile
-
-builtins/read.def
-       - make sure error cases free memory and run any unwind-protects to
-         avoid memory leaks
-
-                                  12/10
-                                  -----
-execute_cmd.c
-       - change execute_command_internal to set $PIPESTATUS for ((...)) and
-         [[ ... ]] commands
-
-doc/{bash.1,bashref.texi,version.texi}
-       - add documentation for ulimit -[iqx] and bump revision date
-
-                                  12/12
-                                  -----
-parse.y
-       - make sure parse_compound_assignment saves and restores the
-         PST_ASSIGNOK parser state flag around its calls to read_token.
-         Fixes bug reported by Mike Frysinger
-
-                                  12/13
-                                  -----
-parse.y
-       - change parse_compound_assignment to save and restore the value of
-         last_read_token.  Not sure why it was set unconditionally in the
-         first place after parsing the complete compound assignment
-
-                                  12/14
-                                  -----
-lib/readline/text.c
-       - don't use return value of rl_kill_text (which always succeeds and
-         returns the number of characters killed) in rl_delete as an indication
-         of success or failure
-       - ditto for return value of rl_delete_text
-
-lib/readline/readline.c
-       - don't return the value of the called readline function as the return
-         value from _rl_dispatch_subseq; -1 means something different to the
-         callers (return 0 all the time to indicate that a readline function
-         was found and dispatched).  Fix from Andreas Schwab for <DEL><DEL>
-         bug in callback interface first reported by Mike Frysinger
-
-execute_cmd.c
-       - fixed a typo in execute_case_command
-
-                                  12/15
-                                  -----
-aclocal.m4
-       - add check for wctype() to BASH_CHECK_MULTIBYTE, define HAVE_WCTYPE
-
-config.h.in
-       - add HAVE_WCTYPE #define
-
-config-bot.h
-       - add HAVE_WCTYPE to the set of checks for HANDLE_MULTIBYTE.  This
-         should catch the deficient NetBSD multibyte support
-
-                                  12/16
-                                  -----
-parse.y
-       - use CTLESC instead of literal '\001' when decode_prompt_string
-         prefixes RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE
-
-                                  12/20
-                                  -----
-lib/readline/display.c
-       - don't treat RL_PROMPT_START_IGNORE specially inside a sequence of
-         ignored characters
-       - keep track of the start of the current sequence of ignored
-         characters; make sure that an empty sequence of such characters
-         really is an empty sequence, not one that happens to end with '\001'
-         (RL_PROMPT_START_IGNORE)
-
-                                  12/21
-                                  -----
-subst.c
-       - change expand_word_internal to process rest of `tilde-word' as a
-         regular part of the word if tilde expansion leaves the tilde-word
-         unchanged.  This means that ~$USER expands to ~chet, which seems
-         more intuitive, and is effectively what bash-3.0 did
-
-                                  12/23
-                                  -----
-subst.c
-       - when making a local array variable in do_compound_assignment, make
-         sure that we don't use a variable of the same name from a previous
-         context
-
-doc/bash.1
-       - documented expansions for word and patterns in case statement
-
-builtins/ulimit.def,doc/{bashref.texi,bash.1}
-       - added new -e and -r (nice and rtprio) options to ulimit; documented
-         them
-
-                                  12/26
-                                  -----
-variables.c
-       - use `hmax' instead of `num' in sv_histsize to avoid integer overflow
-         problems with intmax_t
-
-builtins/read.def
-       - add unwind-protect to restore rl_attempted_completion_function in
-         case of a timeout
-
-{bashline,variables}.c
-       - move initialization of HISTSIZE from initialization path to
-         load_history, so it can be overridden by a value assigned in a
-         startup file
-
-lib/readline/misc.c
-       - add a missing `return r' so that rl_digit_loop returns a meaningful
-         value
-
-lib/readline/{bind,callback,display,isearch,rltty,search,text,vi_mode}.c
-       - minor cleanups to satisfy compiler warnings, mostly removing unused
-         variables
-
-                                  12/27
-                                  -----
-support/Makefile.in
-       - add LIBS_FOR_BUILD support; defaults to ${LIBS}
-
-Makefile.in
-       - add LIBS_FOR_BUILD with no default value; use when linking programs
-         using CC_FOR_BUILD (e.g., bashversion)
-
-                                  12/28
-                                  -----
-lib/readline/bind.c
-       - fix rl_translate_keyseq bad translation of \M-\C-x sequences
-
-execute_cmd.c
-       - in execute_arith_command, if the expression expands to more than one
-         word, make sure we join the words into a single string and pass the
-         entire thing to evalexp()
-
-expr.c
-       - new functions: _is_arithop(c), returns true if C is a valid single-
-         character arithmetic operator; _is_multiop(c), returns true if C is
-         a token corresponding to a valid multi-character arithmetic operator
-       - if we encounter a character that isn't a valid arithmetic
-         operator, throw an error.  Try to be intelligent about what type of
-         error message to print
-
-subst.c
-       - new function, expand_arith_string, calls expand_string_if_necessary;
-         used where an arithmetic expression needs to be expanded
-
-subst.h
-       - new extern declaration for expand_arith_string
-
-arrayfunc.c
-       - in array_expand_index, call expand_arith_string to expand the
-         subscript in a fashion consistent with other arithmetic expressions
-
-subst.c
-       - fix parameter_brace_patsub so that we don't try to anchor the pattern
-         at the beginning or end of the string if we're doing global
-         replacement -- that combination doesn't doesn't make sense, and
-         the changed behavior is compatible with ksh93
-
-doc/{bash.1,bashref.texi}
-       - changed description of pattern substitution to match the new
-         semantics
-
-tests/new-exp.tests
-       - change tests to remove all ${pat//#rep} and ${pat//%rep}
-         expansions, since they don't mean the same thing anymore
-
-                                  12/29
-                                  -----
-support/signames.c
-       - new file, initialize_signames() function from old mksignames.c.  This
-         file builds the signal_names array
-
-support/mksignames.c
-       - strip out initialize_signames(), move to signames.c.  This file only
-         writes signames.h
-       - set up to only write a stub signames.h if CROSS_COMPILING is defined,
-         with extern declaration for initialize_signames
-       - if not cross compiling, #define initialize_signames to nothing
-
-Makefile.in
-       - mksignames is now linked from mksignames.o and buildsignames.o
-       - add rules to build signames.o, assuming we're building it as part
-         of the shell (cross-compiling)
-
-trap.c
-       - call initialize_signames from initialize_traps
-
-configure.in
-       - set SIGNAMES_O to nothing (normal) or signames.o (cross-compiling),
-         substitute into Makefile
-       - don't set SIGNAMES_H if cross-compiling any more
-
-                                  12/30
-                                  -----
-command.h
-       - new word flag: W_NOPROCSUB, inhibits process substitution on a word
-
-subst.c
-       - change expand_word_internal to suppress process substitution if the
-         word has the W_NOPROCSUB flag
-
-shell.c
-       - --wordexp turns on W_NOPROCSUB in addition to W_NOCOMSUB
-
-subst.c
-       - change string_list_dollar_at and string_list_dollar_star so that
-         MB_CUR_MAX is used to size an array only when using gcc, since gcc
-         can handle non-constant array sizes using a mechanism like alloca.
-         Other compilers, e.g. Sun's compiler, do not implement that
-         extension
-
-                                  12/31
-                                  -----
-builtins/mkbuiltins.c
-       - when cross-compiling, don't include <config.h>, since it's for the
-         target rather than the host system.  Instead, choose a reasonable
-         set of default #defines based on a minimal POSIX system
-
-jobs.c
-       - change find_process to handle a NULL return value from find_pipeline
-       - return immediately from delete_job if jobs[index] is already NULL or
-         if it has a null pipeline associated with it
-       - in delete_job, if find_last_proc returns NULL, don't try to call
-         bgp_delete
-
-                                1/7/2006
-                                --------
-doc/bash.1
-       - patch from Tim Waugh to replace some literal single quotes with
-         \(aq, the groff special character for it
-
-jobs.c
-       - in realloc_jobs_list, make sure to zero out slots after j_lastj
-         in the new list
-
-                                   1/9
-                                   ---
-support/mksignames.c
-       - make sure to include <signal.h> to get right value of NSIG from
-         (usually) <sys/signal.h>
-
-                                  1/10
-                                  ----
-parse.y
-       - when calling parse_matched_pair on a $(...) command substitution,
-         don't pass the P_DQUOTE flag so that single quotes don't get
-         stripped from $'...' inside the command substitution.  Bug report
-         and fix from Mike Stroyan <mike.stroyan@hp.com>
-
-jobs.c
-       - start maintaining true count of living children in js.c_living
-       - call reset_current in realloc_jobs_list, since old values for current
-         and previous job are most likely incorrect
-       - don't allocate a new list in realloc_jobs_list if the old size and
-         new size are the same; just compact the existing list
-       - make sure realloc_jobs_list updates value of js.j_njobs
-       - add some more itrace messages about non-null jobs after j_lastj in
-         jobs array
-
-                                  1/11
-                                  ----
-bashjmp.h
-       - new value for second argument to longjmp: SIGEXIT.  Reserved for
-         future use
-
-                                  1/12
-                                  ----
-jobs.c
-       - add logic to make_child to figure out when pids wrap around
-       - turn second argument to delete_job into flags word, added flag to
-         prevent adding proc to bgpids list
-
-                                  1/13
-                                  ----
-lib/readline/vi_mode.c
-       - move code that moves forward a character out of rl_vi_append_mode
-         into a separate function, _rl_vi_append_forward
-       - change _rl_vi_append_mode to save `a' as the last command, so it
-         can be redone properly
-       - new function _rl_vi_backup, moves point back a character taking
-         multibyte locales into account
-       - change rl_vi_redo to handle redoing an `a' command specially --
-         it should be redone like `i' but after moving forward a character
-       - change rl_vi_redo to use _rl_vi_backup to move point backward
-         after redoing `i' or `a'
-
-jobs.c
-       - new function, delete_old_job (pid), checks whether or not PID is in
-         a job in the jobs list.  If so, and the job is dead, it just removes
-         the job from the list.  If so, and the job is not dead, it zeros
-         the pid in the appropriate PROCESS so pid aliasing doesn't occur
-       - make_child calls delete_old_job to potentially remove an already-used
-         instance of the pid just forked from the jobs list if pids have
-         wrapped around.  Finally fixes the bug reported by Tim Waugh
-         <twaugh@redhat.com>
-
-trap.c
-       - new define, GETORIGSIG(sig), gets the original handling for SIG and
-         sets SIG_HARD_IGNORE if that handler is SIG_IGN
-       - call GETORIGSIG from initialize_traps, get_original_signal, and
-         set_signal
-
-jobs.c
-       - in wait_for, if the original SIGINT handler is SIG_IGN, don't set
-         the handler to wait_sigint_handler.  This keeps scripts started in
-         the background (and ignoring SIGINT) from dying due to SIGINT while
-         they're waiting for a child to exit.  Bug reported by Ingemar
-         Nilsson <init@kth.se>
-
-lib/readline/vi_mode.c
-       - don't save text to buffer unless undo pointer points to a record of
-         type UNDO_INSERT; zero it out instead.  This fixes bug reported by
-         Craig Turner <craig@synect.com> with redoing `ctd[ESC]' (empty
-         insert after change to)
-
-shell.c
-       - change set_shell_name so invocations like "-/bin/bash" are marked as
-         login shells
-
-doc/bash.1
-       - add note about destroying functions with `unset -f' to the section
-         on shell functions
-
-lib/readline/terminal.c
-       - if readline hasn't been initialized (_rl_term_autowrap == -1, the
-         value it's now initialized with), call _rl_init_terminal_io from
-         _rl_set_screen_size before deciding whether or not to decrement
-         _rl_screenwidth.  Fixes bug from Mike Frysinger <vapier@gentoo.org>
-
-                                  1/14
-                                  ----
-lib/readline/input.c
-       - allow rl_set_keyboard_input_timeout to set the timeout to 0, for
-         applications that want to use select() like a poll without any
-         waiting
-
-lib/readline/doc/rltech.texi
-       - documented valid values for timeout in rl_set_keyboard_input_timeout
-
-jobs.c
-       - in stop_pipeline, don't have the parent shell call give_terminal_to
-         if subshell_environment contains SUBSHELL_ASYNC (no background
-         process should ever give the terminal to anything other than
-         shell_pgrp)
-       - in make_child, don't give the terminal away if subshell_environment
-         contains SUBSHELL_ASYNC
-
-                                  1/15
-                                  ----
-subst.c
-       - in parameter_brace_expand, if extracting ${#varname}, only allow
-         `}' to end the expansion, since none of the other expansions are
-         valid.  Fixes Debian bug reported by Jan Nordhorlz <jckn@gmx.net>
-
-                                  1/17
-                                  ----
-parse.y
-       - in parse_matched_pair, protect all character tests with the MBTEST
-         macro
-       - in parse_dparen, take out extra make_word after call to alloc_word_desc
-         (mem leak)
-
-                                  1/18
-                                  ----
-parse.y
-       - in parse_matched_pair, add P_ALLOWESC to flags passed to recursive
-         parse_matched_pair call when encountering a single or double quote
-         inside a ``-style command substitution
-
-execute_cmd.c
-       - add call to QUIT at beginning of execute_command_internal; better
-         responsiveness to SIGINT
-
-                                  1/21
-                                  ----
-lib/readline/bind.c
-       - change rl_invoking_keyseqs_in_map to honor the setting of
-         convert-meta when listing key bindings, since if convert-meta is off,
-         using '\M-' as the prefix for bindings in, for instance,
-         emacs-escape-keymap, is wrong.  This affects `bind -p' output
-       - change rl_untranslate_keyseq to add '\e' instead of '\C-[' for
-         ESC
-
-execute_cmd.c
-       - add call to QUIT at end of execute_command
-
-                                  1/23
-                                  ----
-lib/readline/display.c
-       - changed two places in update_line where a check of whether the cursor
-         is before the last invisible character in the prompt string to
-         differentiate between the multibyte character case (where
-         _rl_last_c_pos is a physical cursor position) and the single-byte
-         case (where it is a buffer index).  This prevents many unnecessary
-         \r-redraw the line sequences.  Reported by Dan Jacobson.
-
-                                  1/24
-                                  ----
-quit.h
-       - wrap QUIT macro in do...while(0) like other compound statement
-         macros
-       - CHECK_TERMSIG define (placeholder for now); future use will be to
-         handle any received signals that should  cause the shell to
-         terminate (e.g., SIGHUP)
-
-{input,jobs,nojobs}.c
-       - add calls to CHECK_TERMSIG where appropriate (reading input and
-         waiting for children)
-       - include quit.h if necessary
-
-                                  1/25
-                                  ----
-parse.y
-       - undo change that makes `)' in a compound assignment delimit a token.
-         It messes up arithmetic expressions in assignments to `let', among
-         other things
-
-sig.h,{jobs,nojobs,sig,trap}.c,builtins/trap.def
-       - rename termination_unwind_protect to termsig_sighandler
-
-sig.c
-       - split termsig_sighandler into two functions: termsig_sighandler, which
-         runs as a signal handler and sets a flag noting that a terminating
-         signal was received, and termsig_handler, which runs when it is `safe'
-         to handle the signal and exit
-       - new terminate_immediately variable, similar to interrupt_immediately
-       - termsig_sighandler calls termsig_handler immediately if
-         terminate_immediately is non-zero
-
-quit.h
-       - change CHECK_TERMSIG macro to check terminating_signal and call
-         termsig_handler if it's non-zero
-       - add same check of terminating_signal and call to termsig_handler to
-         QUIT macro
-
-{jobs,nojobs}.c
-       - change call to termsig_sighandler to call termsig_handler directly,
-         as was intended
-
-parse.y,builtins/read.def
-       - set terminate_immediately to non-zero value when reading interactive
-         input, as is done with interrupt_immediately
-
-                                  1/26
-                                  ----
-doc/{bash.1,bashref.texi}
-       - reworded the POSIX standard references to remove mention of POSIX.2
-         or 1003.2 -- it's all the 1003.1 standard now.  Recommended by
-         Arnold Robbins
-
-                                  1/27
-                                  ----
-lib/readline/complete.c
-       - move call to filename dequoting function into
-         rl_filename_completion_function; call only if directory completion
-         hook isn't set.  This means that directory-completion-hook now needs
-         to dequote the directory name.  We don't want to dequote the directory
-         name before calling the directory-completion-hook.  Bug reported by
-         Andrew Parker <andrewparker@bigfoot.com>
-
-bashline.c
-       - add necessary directory name dequoting to bash_directory_expansion
-         and bash_directory_completion_hook
-
-lib/readline/doc/rltech.texi
-       - add note to description of rl_directory_completion_hook that it
-         needs to dequote the directory name even if no other expansions are
-         performed
-
-                                  1/28
-                                  ----
-braces.c
-       - make sure that we skip over braces that don't start a valid matched
-         brace expansion construct in brace_expand -- there might be a valid
-         brace expansion after the unmatched `{' later in the string
-       - brace_gobbler now checks that when looking for a `}' to end a brace
-         expansion word, there is an unquoted `,' or `..' that's not inside
-         another pair of braces.  Fixes the a{b{c,d}e}f problem reported by
-         Tim Waugh
-
-builtins/declare.def
-       - when not in posix mode, and operating on shell functions, typeset
-         and declare do not require their variable operands to be valid
-         shell identifiers.  The other `attribute' builtins work this way.
-         Fixes inconsistency reported by Mike Frysinger <vapier@gentoo.org>
-
-{configure,config.h}.in
-       - add test for setregid, define HAVE_SETREGID and HAVE_DECL_SETREGID
-         as appropriate
-       - add test for eaccess, define HAVE_EACCESS if found
-
-lib/sh/eaccess.c
-       - new file, with sh_stat and sh_eaccess functions, moved from test.c
-       - renamed old sh_eaccess as sh_stataccess, since it uses the stat(2)
-         information to determine file accessibility
-       - new function, sh_euidaccess, to call when uid != euid or gid != egid;
-         temporarily swaps uid/euid and gid/egid around call to access
-       - rewrote sh_eaccess to call eaccess, access, sh_euidaccess or
-         sh_stataccess as appropriate.  access(2) will take into account
-         things like ACLs, read-only file systems, file flags, and so on.
-
-lib/sh/Makefile.in,Makefile.in
-       - add necessary entries for eaccess.[co]
-
-test.c
-       - change calls to test_stat to call sh_stat
-
-{test,general}.c
-       - change calls to test_eaccess to call sh_eaccess
-
-externs.h
-       - new extern declaration for sh_eaccess
-
-test.[ch]
-       - remove test_stat and test_eaccess
-
-                                  1/29
-                                  ----
-braces.c
-       - make change from 1/28 dependant on CSH_BRACE_COMPAT not being
-         defined (since old bash behavior is what csh does, defining
-         CSH_BRACE_COMPAT will produce old bash behavior)
-
-                                  1/30
-                                  ----
-bashline.c
-       - last argument of bash_default_completion is now a flags word:
-         DEFCOMP_CMDPOS (in command position) is only current value
-       - attempt_shell_completion now computes flags before calling
-         bash_default_completion
-       - if no_empty_command_completion is set, bash does not attempt command
-         word completion even if not at the beginning of the line, as long
-         as the word to be completed is empty and start == end (catches
-         beginning of line and all whitespace preceding point)
-
-                                   2/4
-                                   ---
-lib/readline/display.c
-       - change _rl_make_prompt_for_search to use rl_prompt and append the
-         search character to it, so the call to expand_prompt in rl_message
-         will process the non-printing characters correctly.  Bug reported
-         by Mike Stroyan <mike.stroyan@hp.com>
-
-                                   2/5
-                                   ---
-lib/readline/display.c
-       - fix off-by-one error when comparing against PROMPT_ENDING_INDEX,
-         which caused a prompt with invisible characters to be redrawn one
-         extra time in a multibyte locale.  Change from <= to < fixes
-         multibyte locale, but I added 1 to single-byte definition of
-         PROMPT_ENDING_INDEX (worth checking) to compensate.  Bug reported
-         by Egmont Koblinger <egmont@uhulinux.hu>
-
-                                   2/8
-                                   ---
-lib/readline/terminal.c
-       - call _emx_get_screensize with wr, wc like ioctl code for consistency
-       - new function, _win_get_screensize, gets screen dimensions using
-         standard Windows API for mingw32 (code from Denis Pilat)
-       - call _win_get_screensize from _rl_get_screen_size on mingw32
-
-lib/readline/rlconf.h
-       - define SYS_INPUTRC (/etc/inputrc) as system-wide default inputrc
-         filename
-
-support/shobj-conf
-       - changes to make loadable builtins work on MacOS X 10.[34]
-
-builtins/pushd.def
-       - changes to make it work as a loadable builtin compiled with gcc4
-
-                                   2/9
-                                   ---
-lib/readline/bind.c
-       - add SYS_INPUTRC as last-ditch default (if DEFAULT_INPUTRC does not
-         exist or can't be read) in rl_read_init_file
-
-lib/readline/doc/rluser.texi
-       - add description of /etc/inputrc as ultimate default startup file
-
-                                  2/10
-                                  ----
-lib/readline/bind.c
-       - fix problem with rl_function_of_keyseq that returns a non-keymap
-         bound to a portion of the passed key sequence without processing
-         the entire thing.  We can bind maps with existing non-map
-         functions using the ANYOTHERKEY binding code.
-
-variables.c
-       - shells running in posix mode do not set $HOME, as POSIX apparently
-         requires
-
-                                  2/15
-                                  ----
-braces.c
-       - mkseq() now takes the increment as an argument; changed callers
-
-                                  2/16
-                                  ----
-builtins/hash.def
-       - print `hash table empty' message to stdout instead of stderr
-
-                                  2/17
-                                  ----
-lib/readline/readline.c
-       - when resetting rl_prompt in rl_set_prompt, make sure rl_display_prompt
-         is set when the function returns
-
-                                  2/18
-                                  ----
-lib/readline/display.c
-       - further fixes to _rl_make_prompt_for_search from Eric Blake to deal
-         with multiple calls to expand_prompt
-
-                                  2/21
-                                  ----
-builtins/hash.def
-       - don't print `hash table empty' message in posix mode
-
-                                  2/27
-                                  ----
-lib/glob/sm_loop.c
-       - change extmatch() to turn off FNM_PERIOD in flags passed to recursive
-         calls to gmatch() when calling it with a substring after the start
-         of the string it receives.  Changed `+', `*', `?, `@', and `!' cases
-         to do the right thing.  Fixes bug reported by Benoit Vila
-         <bvila@free.fr>
-
-braces.c
-       - add QUIT; statements to mkseq to make large sequence generation
-         interruptible
-
-                                  2/28
-                                  ----
-lib/glob/glob.c
-       - initialize nalloca in glob_vector
-
-                                   3/1
-                                   ---
-lib/glob/glob.c
-       - in glob_vector, when freeing up the linked list after some error,
-         make sure to set `tmplink' to 0 if `firstlink' is set to 0, else we
-         get multiple-free errors
-
-                                   3/5
-                                   ---
-trap.c
-       - inheritance of the DEBUG, RETURN, and ERR traps is now dependent
-         only on the `functrace' and `errtrace' shell options, as the
-         documentation says, rather than on whether or not the shell is in
-         debugging mode.  Reported by Philip Susi <psusi@cfl.rr.com>
-
-parse.y
-       - in parse_matched_pair, don't recursively parse ${...} or other
-         ${...} constructs inside ``
-       - in parse_matched_pair, remove special code that recursively parses
-         quoted strings inside `` constructs.  For Bourne shell compatibility
-
-                                   3/6
-                                   ---
-builtins/pushd.def
-       - let get_directory_stack take take an `int flags' argument and convert
-         $HOME to ~ if flags&1 is non-zero
-
-builtins/common.h
-       - change extern declaration for get_directory_stack
-
-variables.c
-       - call get_directory_stack with an arg of 0 to inhibit converting
-         $HOME to  ~ in the result.  Fixes cd ${DIRSTACK[1]} problem
-         reported by Len Lattanzi <llattanzi@apple.com> (cd fails because
-         the tildes won't be expanded after variable expansion)
-
-jobs.c
-       - changed hangup_all_jobs slightly so stopped jobs marked J_NOHUP
-         won't get a SIGCONT
-
-general.c
-       - changed check_binary_file() to check for a NUL byte instead of a
-         non-printable character.  Might at some point want to check
-         entire (possibly multibyte) characters instead of just bytes.  Hint
-         from ksh via David Korn
-
-                                   3/7
-                                   ---
-builtins/reserved.def
-       - changed runs of spaces to tabs in variables help text to make
-         indentation better when displayed
-
-builtins/mkbuiltins.c
-       - changes to avoid the annoying extra space that keeps gettext from
-         being passed an empty string
-
-                                   3/9
-                                   ---
-lib/glob/glob.c
-       - make sure globbing is interrupted if the shell receives a terminating
-         signal
-
-                                  3/14
-                                  ----
-lib/readline/search.c
-       - call rl_message with format argument of "%" in _rl_nsearch_init
-         to avoid `%' characters in the prompt string from being interpreted
-         as format specifiers to vsnprintf/vsprintf
-
-                                  3/19
-                                  ----
-parse.y, eval.c, input.h
-       - change execute_prompt_command to execute_variable_command; takes the
-         variable name as a new second argument
-
-                                  3/25
-                                  ----
-bashline.c
-       - command_word_completion_function keeps track of when it's searching
-         $PATH and doesn't return directory names as matches in that case.
-         Problem reported by Pascal Terjan <pterjan@mandriva.com>
-       - command_word_completion_function returns what it's passed as a
-         possible match if it's the name of a directory in the current
-         directory (only non-absolute pathnames are so tested).
-
-                                  3/27
-                                  ----
-subst.c
-       - expand_arith_string takes a new argument: quoted.  Either 0 (outside
-         subst.c) or Q_DOUBLE_QUOTES (substitution functions); changed callers
-
-subst.h
-       - changed extern declaration for expand_arith_string
-
-arrayfunc.c
-       - changed call to expand_arith_string in array_expand_index
-
-                                  3/31
-                                  ----
-lib/readline/histfile.c
-       - change read_history_range to allow windows-like \r\n line endings
-
-execute_cmd.c
-       - add new variable, line_number_for_err_trap, currently set but not
-         used
-
-                                   4/2
-                                   ---
-lib/sh/strtrans.c
-       - add code to echo -e and echo with xpg_echo enabled to require
-         a leading 0 to specify octal constants
-
-                                   4/3
-                                   ---
-subst.c
-       - slight change to wcsdup() replacement: use memcpy instead of wcscpy
-
-parse.y
-       - before turning on W_COMPASSIGN, make sure the final character in the
-         token is a `(' (avoids problems with things like a=(4*3)/2)
-
-                                   4/4
-                                   ---
-lib/sh/snprintf.c
-       - in number() and lnumber(), turn off PF_ZEROPAD if explicit precision
-         supplied in format
-       - change number() and lnumber() to correctly implement zero-padding
-         specified by a non-zero `.precision' part of the format
-
-subst.c
-       - new flag for extract_delimited_string: EX_COMMAND.  For $(...), so
-         we can do things like skip over delimiters in comments.  Added to
-         appropriate callers
-       - changes to extract_delimited_string to skip over shell comments when
-         extracting a command for $(...) (EX_COMMAND is contained in the
-         flags argument)
-
-                                   4/5
-                                   ---
-subst.c
-       - first argument to skip_single_quoted is now a const char *
-       - new function, chk_arithsub, checks for valid arithmetic expressions
-         by balancing parentheses.  Fix based on a patch from Len Lattanzi
-
-                                   4/6
-                                   ---
-{configure,config.h}.in
-       - add separate test for isnan in libc, instead of piggybacking on
-         isinf-in-libc test
-
-lib/sh/snprintf.c
-       - separate the isnan replacement function so it's guarded by its own
-         HAVE_ISNAN_IN_LIBC define
-
-lib/sh/wcsdup.c
-       - new file, contains replacement wcsdup library function from subst.c
-         with change back to using wcscpy
-
-Makefile.in,lib/sh/Makefile.in
-       - make sure wcsdup.c is compiled and linked in
-
-subst.c
-       - wcsdup now found in libsh; removed static definition
-
-                                  4/10
-                                  ----
-lib/readline/callback.c
-       - loop over body of rl_callback_read_char as long as there is additional
-         input rather than just calling readline_internal_char, which does
-         not handle multi-character key sequences or escape-prefixed chars
-
-lib/readline/macro.c
-       - make sure we turn off RL_STATE_MACROINPUT when the macro stack is
-         empty if we are reading additional input with RL_STATE_MOREINPUT
-
-support/shobj-conf
-       - Mac OS X no longer likes the `-bundle' option to gcc when creating a
-         dynamic shared library
-
-                                  4/11
-                                  ----
-lib/tilde/tilde.c
-       - don't try to dereference user_entry if HAVE_GETPWENT isn't defined
-
-lib/readline/input.c
-       - make sure chars_avail is not used without being assigned a value in
-         rl_gather_tyi
-       - use _kbhit() to check for available input on Windows consoles, in
-         rl_gather_tyi and _rl_input_available
-
-                                  4/21
-                                  ----
-lib/readline/display.c
-       - calculate (in expand_prompt) and keep track of length of local_prompt
-         in local_prompt_len; use where appropriate
-       - when using o_pos to check whether or not we need to adjust
-         _rl_last_c_pos after calling update_line, assume that it's correct
-         (a buffer index in non-multibyte locales and a cursor position in
-         multibyte locales) and adjust with wrap_offset as appropriate
-       - in update_line, set cpos_adjusted to 1 after calling
-         _rl_move_cursor_relative to move to the end of the displayed prompt
-         string
-       - in _rl_move_cursor_relative, check that the multibyte display
-         position is after the last invisible character in the prompt string
-         before offsetting it by the number of invisible characters in the
-         prompt (woff)
-
-                                  4/26
-                                  ----
-lib/readline/doc/{rluser.texi,readline.3}
-       - make sure to note that key bindings don't allow any whitespace
-         between the key name or sequence to be bound and the colon
-
-                                  4/28
-                                  ----
-lib/readline/display.c
-       - in update_line, make sure we compare _rl_last_c_pos as strictly less
-         than PROMPT_ENDING_INDEX, since it's 0-based, to avoid multiple
-         prompt redraws
-
-                                   5/4
-                                   ---
-parse.y
-       - in decode_prompt_string, only prefix the expansion of \[ or \]
-         with CTLESC if the corresponding readline escape character is
-         CTLESC (coincidentally the same as \[) or CTLNUL.  Bug report sent
-         by Mike Frysinger <vapier@gentoo.org> prompted the discovery
-
-aclocal.m4
-       - slight change to test for /dev/fd to compensate for a linux
-         failing; suggested by Mike Frysinger <vapier@gentoo.org>
-
-                                   5/9
-                                   ---
-arrayfunc.c
-       - broke assign_array_var_from_string into two functions:
-         expand_compound_array_assignment and assign_compound_array_list;
-         assign_array_var_from_string just calls those functions now
-
-arrayfunc.h
-       - new extern declarations for expand_compound_array_assignment and
-         assign_compound_array_list
-
-subst.c
-       - in do_compound_assignment, call expand_compound_array_assignment
-         before creating the local variable so a previous inherited
-         value can be used when expanding the rhs of the compound assignment
-         statement
-
-                                  5/11
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarifed `trap' description to make it clear that trapped signals
-         that are not set to SIG_IGN are reset when a subshell is created
-
-                                  5/18
-                                  ----
-locale.c
-       - change reset_locale_vars to call setlocale (LC_ALL, "") if LANG
-         is unset or NULL
-       - if LANG is unset or NULL, reset the export environment before
-         calling setlocale in reset_locale_vars, and trust that it will
-         change the environment setlocale() inspects
-
-                                  5/21
-                                  ----
-lib/readline/history.c
-       - new function, HIST_ENTRY *alloc_history_entry (char *string, char *ts);
-         creates a new history entry with text STRING and timestamp TS (both
-         of which may be NULL)
-       - new function, HIST_ENTRY *copy_history_entry (HIST_ENTRY *hist),
-         which copies the line and timestamp entries to new memory but just
-         copies the data member, since that's an opaque pointer
-       - new function, void replace_history_data (int which, histdata_t *old, histdata_t *new)
-         which replaces the `data' member of specified history entries with
-         NEW, as long as it is OLD.  WHICH says which history entries to
-         modify
-       - add calls to replace_history_data in rl_free_undo_list and
-         rl_do_undo
-
-lib/readline/undo.c
-       - new function, alloc_undo_entry (enum undo_code what, int start, int end, char *text)
-         takes care of allocating and populating a struct for an individual
-         undo list entry
-       - new function: _rl_copy_undo_entry(UNDO_LIST *entry)
-       - new function: _rl_copy_undo_list(UNDO_LIST *head)
-
-lib/readline/rlprivate.h
-       - new extern declarations for _rl_copy_undo_{entry,list}
-
-execute_cmd.c
-       - change execute_cond_node so that quoting the rhs of the =~
-         operator forces string matching, like the == and != operators
-
-                                  5/23
-                                  ----
-redir.c
-       - add_undo_redirect now takes as an additional argument the type of
-         redirection we're trying to undo
-       - don't add a "preservation" redirection for fds > SHELL_FD_BASE if
-         the redirection is closing the fd
-
-                                  5/24
-                                  ----
-subst.c
-       - make sure that parameter_brace_substring leaves this_command_name
-         set to either NULL or its previous value after setting it so that
-         arithmetic evaluation errors while expanding substring values
-         contain meaningful information
-
-                                   6/9
-                                   ---
-execute_cmd.c
-       - make sure that SUBSHELL_ASYNC and SUBSHELL_PIPE are set as flag bits
-         in subshell_environment, rather than setting only a single value
-       - change execute_subshell_builtin_or_function to give the `return'
-         builtin a place to longjmp to when executed in a subshell or pipeline
-         (mostly as the last command in a pipeline).  Bug reported by
-         Oleg Verych <olecom@gmail.com>
-       - in execute_simple_command, make sure to call execute_disk_command
-         with the_printed_command_except_trap to keep DEBUG trap command
-         strings from overwriting the command strings associated with jobs
-         and printed in job control messages.  Bug reported by Daniel Kahn
-         Gillmor <dkg-debian.org@fifthhorseman.net>
-
-[bash-3.2-alpha frozen]
-
-                                  6/22
-                                  ----
-syntax.h
-       - add new CBLANK (for [:blank:] class) flag value for syntax table and
-         shellblank(c) character test macro
-
-mksyntax.c
-       - add support for setting CBLANK flag in the syntax table depending on
-         whether or not isblank(x) returns true for character x
-
-locale.c
-       - change locale_setblanks to set or unset CBLANK flag for each
-         character when locale changes
-
-parse.y
-       - change call to whitespace(c) in lexical analyzer (read_token()) to
-         call shellblank(c) instead, so locale-specific blank characters are
-         treated as white space.  Fixes bug reported by Serge van deb Boom
-         <svdb+bug-bash@stack.nl>
-
-print_cmd.c
-       - when printing redirections, add a space between <, >, and <> and the
-         following word, to avoid conflicts with process substitution.  Bug
-         reported by Ittay Dror <ittyad@qlusters.com>
-
-                                  6/26
-                                  ----
-configure.in
-       - set CROSS_COMPILE to the empty string by default, so we don't inherit
-         a random value from the environment.   Bug reported by
-         Lee Revell <rlrevell@joe-job.com>
-
-                                  6/29
-                                  ----
-lib/glob/xmbsrtowcs.c
-       - make sure destp is non-null before assigning a 0 to *destp in
-         xdupmbstowcs.  Fix from Louiwa Salem <loulwas@us.ibm.com>
-
-execute_cmd.c
-       - fix execute_in_subshell to make sure asynchronous isn't set to 0
-         before subshell_environment is set appropriately and
-         setup_async_signals is run.  Based on report by Louiwa Salem
-         <loulwas@us.ibm.com>
-
-lib/readline/bind.c
-       - in rl_generic_bind(), make sure that the keys array is freed before
-         an error return.  Fix from Louiwa Salem <loulwas@us.ibm.com>
-
-                                   7/1
-                                   ---
-builtins/read.def
-       - make sure all editing code is protected with #ifdef READLINE, esp.
-         unwind-protect that restores the default completion function
-
-lib/readline/display.c
-       - make sure to set local_prompt_len in rl_message() [in bash-3.2-alpha]
-
-                                   7/5
-                                   ---
-builtins/printf.def
-       - add more of echo's write error handling to printf.  Suggested by
-         martin.wilck@fujitsu-siemens.com
-
-                                   7/7
-                                   ---
-lib/readline/display.c
-       - save and restore local_prompt_len in rl_{save,restore}_prompt
-         [in bash-3.2-alpha]
-
-                                   7/8
-                                   ---
-[bash-3.2-alpha released]
-
-                                   7/9
-                                   ---
-lib/readline/display.c
-       - make sure that _rl_move_cursor_relative sets cpos_adjusted when it
-         offsets `dpos' by wrap_offset in a multi-byte locale.  Bug reported
-         by Andreas Schwab and Egmont Koblinger
-
-subst.c
-       - make sure that the call to mbstowcs in string_extract_verbatim is
-         passed a string with enough space for the closing NUL.  Reported
-         by Andreas Schwab
-
-                                  7/18
-                                  ----
-lib/readline/{display,terminal}.c
-       - remove #ifdefs for HACK_TERMCAP_MOTION so we can use
-         _rl_term_forward_char in the redisplay code unconditionally
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_term_forward_char
-
-lib/readline/display.c
-       - in _rl_move_cursor_relative, use `dpos' instead of `new' when
-         deciding whether or not a CR is faster than moving the cursor from
-         its current position
-       - in _rl_move_cursor_relative, we can use _rl_term_forward_char to
-         move the cursor forward in a multibyte locale, if it's available.
-         Since that function doesn't have a handle on where the cursor is in
-         the display buffer, it has to output a cr and print all the data.
-         Fixes rest of problem reported by Egmont Koblinger
-       - change variable denoting the position of the cursor in the line buffer
-         from c_pos (variable local to rl_redisplay) to cpos_buffer_position
-         (variable local to file) for future use by other functions
-
-                                  7/25
-                                  ----
-lib/malloc/{stats,table}.h
-       - include <string.h> for prototypes for memset, strlen
-
-lib/termcap/{termcap,tparam}.c
-       - include <string.h> and provide macro replacement for bcopy if
-         necessary
-
-                                  7/27
-                                  ----
-lib/readline/histexpand.c
-       - add support for `<<<' here-string redirection operator to
-         history_tokenize_word.  Bug reported by agriffis@gentoo.org
-
-externs.h      
-       - don't add prototype for strerror() if HAVE_STRERROR defined
-
-                                  7/29
-                                  ----
-subst.c
-       - in list_string, use `string' instead of `s' -- s is not initialized
-
-                                   8/9
-                                   ---
-subst.c
-       - fix parameter_brace_expand to set W_HASQUOTEDNULL in the WORD_DESC it
-         returns if the result of parameter_brace_substring is a quoted null
-         ("\177").  Fixes bug reported by Igor Peshansky <pechtcha@cs.nyu.edu>
-
-                                  8/16
-                                  ----
-lib/readline/readline.h
-       - new #define, READERR, intended to be used to denote read/input errors
-
-lib/readline/input.c
-       - in rl_getc, if read() returns an error other than EINTR (after the
-         EWOULDBLOCK/EAGAIN cases are handled), return READERR rather than
-         converting return value to EOF if readline is reading a top-level
-         command (RL_STATE_READCMD)
-
-lib/readline/readline.c
-       - if rl_read_key returns READERR to readline_internal_char[loop],
-         abort as if it had read EOF on an empty line, without any conversion
-         to newline, which would cause a partial line to be executed.  This
-         fixes the bug reported by Mathieu Bonnet <mathieu.bonnet@nalkym.org>
-
-aclocal.m4
-       - when testing for validity of /dev/fd/3, use /dev/null instead of
-         standard input, since the standard input fails with linux and `su'.
-         Bug reported by Greg Shafer <gschafer@zip.com.au>
-
-                                  8/17
-                                  ----
-Makefile.in
-       - switch the TAGS and tags targets so TAGS is the output of `etags' and
-         tags is the output of `ctags'.  Suggested by Masatake YAMATO
-
-                                  8/25
-                                  ----
-execute_cmd.c
-       - change code to match documentation: set BASH_COMMAND (which takes its
-         value from the_printed_command_except_trap) only when not running a
-         trap.  Rocky says the debugger is ok with this, and this is what his
-         original diffs did
-
-                                  8/29
-                                  ----
-variables.c
-       - change set_if_not to create shell_variables if it is NULL, since
-         -o invocation options can cause variables to be set before the
-         environment is scanned
-
-[bash-3.2-beta frozen]
-
-                                   9/5
-                                   ---
-[bash-3.2-beta released]
-
-                                   9/8
-                                   ---
-variables.c
-       - change dispose_used_env_vars to call maybe_make_export_env
-         immediately if we're disposing a temporary environment, since
-         `environ' points to the export environment and getenv() will use
-         that on systems that don't allow getenv() to be replaced.  This
-         could cause the temporary environment to affect the shell.  Bug
-         reported by Vasco Pedro <vp@di.uevora.pt>
-
-builtins/echo.def,doc/{bash.1,bashref.texi}
-       - clarify that `echo -e' and echo when the `xpg_echo' shell option is
-         enabled require the \0 to precede any octal constant to be expanded.
-         Reported by Vasco Pedro <vp@di.uevora.pt>
-
-                                  9/12
-                                  ----
-builtins/printf.def
-       - make sure `%q' format specifier outputs '' for empty string arguments
-         Bug reported by Egmont Koblinger <egmont@uhulinux.hu>
-
-make_cmd.c
-       - change make_here_document to echo lines in here-doc if set -v has
-         been executed.  Reported by Eduardo Ochs <eduardoochs@gmail.com>
-
-aclocal.m4
-       - change BASH_CHECK_MULTIBYTE:
-               o replace check for wctomb with check for wcrtomb
-               o add checks for wcscoll, iswctype, iswupper, iswlower,
-                 towupper, towlower
-               o add call to AC_FUNC_MBRTOWC to check for mbrtowc and mbstate_t
-                 define HAVE_MBSTATE_T manually
-               o add checks for wchar_t, wctype_t, wint_t
-
-config.h.in
-       - add defines for wcscoll, iswctype, iswupper, iswlower, towupper,
-         towlower functions
-       - replace define for wctomb with one for wcrtomb
-       - add defines for wchar_t, wint_t, wctype_t types
-
-config-bot.h, lib/readline/rlmbutil.h
-       - add check for HAVE_LOCALE_H before defining HANDLE_MULTIBYTE
-       - add checks for: ISWCTYPE, ISWLOWER, ISWUPPER, TOWLOWER, TOWUPPER
-       - add checks for: WCTYPE_T, WCHAR_T, WCTYPE_T
-
-                                  9/13
-                                  ----
-lib/readline/display.c
-       - when displaying prompts longer than the screenwidth in rl_redisplay,
-         and looking for the index of the last character whose buffer index
-         is <= the screen width to set up the inv_lbreaks array, make sure to
-         catch the case where the index == the screen width (an off-by-one
-         error occurs otherwise with prompts one character longer than the
-         screen width).  Bug reported by Alexey Toptygin <alexeyt@freeshell.org>
-
-configure.in
-       - change DEBUGGER_START_FILE to start with ${ac_default_prefix}/share,
-         like bashdb installs itself.  Reported by Nick Brown
-         <nickbroon@blueyonder.co.uk>
-
-                                  9/14
-                                  ----
-lib/readline/display.c
-       - make multibyte code that computes the buffer indices of line breaks
-         for a multi-line prompt dependent on MB_CUR_MAX, so we don't take
-         the function call hit unless we're in a locale that can have
-         multibyte characters
-
-                                  9/19
-                                  ----
-subst.c
-       - make dequote_list extern so other parts of the shell can use it
-
-subst.h
-       - extern declaration for dequote_list
-
-builtins/read.def
-       - call dequote_list before assigning words read to array variable if
-         we saw an escape character.  Old code left spurious CTLESCs in the
-         string after processing backslashes.  Bug reported by Daniel Dawson
-         <ddawson@icehouse.net>
-
-                                  9/21
-                                  ----
-[bash-3.2 frozen]
-
-                                  10/9
-                                  ----
-support/shobj-coonf
-       - change -fpic to -fPIC for FreeBSD systems (needed for SPARC at least)
-
-                                  10/11
-                                  -----
-[bash-3.2 released]
-
-                                  10/12
-                                  -----
-parse.y
-       - change parse_matched_pair to make sure `` command substitution does
-         not check for shell comments while parsing.  Bug reported against
-         bash-3.2 by Greg Schaefer <gschafer@zip.com.au>
-
-                                  10/14
-                                  -----
-parse.y
-       - add new parser_state flag: PST_REGEXP; means we are parsing a
-         regular expression following the =~ conditional operator
-       - cond_node sets PST_REGEXP after reading the `=~' operator     
-       - change read_token to call read_token_word immediately if the
-         PST_REGEXP bit is set in parser_state
-       - change read_token_word to skip over `(' and `|' if PST_REGEXP is
-         set, since those characters are legitimate regexp chars (but still
-         parse matched pairs of parens)
-
-                                  10/16
-                                  -----
-builtins/ulimit.def
-       - add -e and -r to $SHORT_DOC usage string
-
-po/ru.po
-       - fix encoding; Russian text in the file is actually encoded in KOI8-R
-
-                                  10/23
-                                  -----
-shell.c
-       - make sure that the call to move_to_high_fd in open_shell_script
-         passes 1 for the  `check_new' parameter so open high file descriptors
-         don't get closed and reused.  Bug reported by Mike Stroyan
-         <mike.stroyan@hp.com>
-
-doc/bashref.texi
-       - fixes for typos and misspellings sent in by Brian Gough
-
-                                  10/24
-                                  -----
-support/shobj-conf
-       - make netbsd shared library creation like openbsd's until I hear
-         differently (called using `gcc -shared')
-
-                                  10/26
-                                  -----
-subst.c
-       - fix bug in parameter_brace_patsub so if the first character of the
-         expanded pattern is a `/', it is not taken as a global replacement
-         specifier.  Bug reported on forums.nekochan.net 
-
-                                  10/27
-                                  -----
-builtins/printf.def
-       - if we need an extern declaration for asprintf, make sure we include
-         stdarg.h or varargs.h, whichever is appropriate
-       - if we do not have asprintf, add an extern declaration using
-         stdarg format.  This fixes the bugs with %G on IRIX reported by
-         Matthew Woehlke <mwoehlke@tibco.com> and Stuart Shelton
-         <srcshelton@gmail.com>
-
-
-lib/sh/snprintf.c
-       - add note to not call log_10 with 0 argument -- we don't want to do
-         what real log10 does (-infinity/raise divide-by-zero exception)
-       - make sure numtoa (used by dtoa) takes the precision into account
-         when computing the fractional part with an argument of `0.0'
-       - make sure `g' and `G' formats don't print radix char if there are
-         no characters to be printed after it (change to floating())
-       - change callers of log_10 (exponent, 'g' and 'G' cases in
-         vsnprintf_internal) to not call it with 0 for argument.  This fixes
-         the hang reported on IRIX by Matthew Woehlke <mwoehlke@tibco.com>
-         and Stuart Shelton <mwoehlke@tibco.com>
-
-                                  10/28
-                                  -----
-builtins/{caller,pushd}.def
-       - changed longdoc strings in loadable builtin section to be single
-         strings, as put in the build directory builtins.c file, to aid
-         translators
-
-                                  11/1
-                                  ----
-execute_cmd.c
-       - reset subshell_environment to 0 after make_child() call in
-         execute_null_command.  Fix provided by Roy Marples
-         <uberlord@gentoo.org>
-
-                                  11/7
-                                  ----
-lib/tilde/tilde.c
-lib/readline/{util,undo,callback,input,isearch,kill}.c
-       - make sure that memory allocated with xmalloc is freed with xfree
-
-                                  11/9
-                                  ----
-lib/readline/display.c
-       - make sure that _rl_redisplay_after_sigwinch clears the last displayed
-         line instead of the current line (instead of assuming that the
-         cursor is on the last line).  Fixes bug reported by Egmont
-         Koblinger <egmont@uhulinux.hu>
-
-                                  11/10
-                                  -----
-lib/readline/display.c
-       - make sure that _rl_col_width is never called with MB_CUR_MAX == 1,
-         since it doesn't count invisible characters and they are not
-         compensated for.  Added a warning in _rl_col_width if called when
-         MB_CUR_MAX == 1.  Bug reported and solution suggested by Eric
-         Blake <ebb9@byu.net>
-
-                                  11/11
-                                  -----
-lib/readline/display.c
-       - make sure _rl_wrapped_line is initialized to inv_lbsize int chars.
-         inv_lbsize and vis_lbsize are the same at that point, but it makes
-         the intent clearer.  Fix from jan.kratochvil@redhat.com.
-       - in rl_redisplay, make sure we call memset on _rl_wrapped_line with
-         its full initialized size: inv_lbsize*sizeof(int).  Fix from
-         jan.kratochvil@redhat.com.
-       - wrap the invisible and visible line variables and _rl_wrapped_line
-         into line_state structures, which can be swapped more efficiently.
-         Have to watch the wrapped_line field, since there's now one for
-         each struct.  Changes from jan.kratochvil@redhat.com.
-
-lib/readline/complete.c
-       - in stat_char, check for `//server' on cygwin and return `/', since
-         it will always behave as a directory.  Fix from Eric Blake
-
-lib/readline/histfile.c
-       - Cygwin's mmap() works in recent versions, so don't #undef HAVE_MMAP.
-         Recommendation from Eric Blake
-
-lib/readline/rlwinsize.h
-       - make sure tcflow() is defined on SCO Unix.  Fix from William Bader
-
-aclocal.m4
-       - add check for localeconv to AM_INTL_SUBDIR macro
-
-config.h.in
-       - add HAVE_LOCALECONV
-
-lib/sh/snprintf.c
-       - add check for HAVE_LOCALECONV for GETLOCALEDATA macro
-
-general.[ch]
-       - first argument to legal_number is now `const char *'
-
-                                  11/14
-                                  -----
-lib/readline/{readline,rlprivate}.h
-       - move rl_display_prompt declaration from rlprivate.h to readline.h
-
-lib/readline/util.h
-       - new function: rl_free(void *mem), for use by users of readline dlls
-         on Windows
-
-lib/readline/readline.h
-       - new extern declaration for rl_free
-
-lib/readline/doc/rltech.texi
-       - document rl_free and rl_display_prompt for use by application writers
-
-                                  11/15
-                                  -----
-aclocal.m4
-       - change tests for /dev/fd and /dev/stdin to use constructs of the form
-         (exec test ... ) instead of test ... to avoid bash's /dev/fd and
-         /dev/stdin emulation
-
-                                  11/16
-                                  -----
-jobs.c
-       - in delete_job, reset_current was being called before the job slot
-         was cleared -- moved after job_slots[job] was set to NULL.  Fixes
-         bug reported by Dan Jacobson <jidanni@jidanni.org>
-
-                                  11/19
-                                  -----
-findcmd.c
-       - when the checkhash option is set, fix the check for the hashed
-         pathname being an existing executable file.  Old code required a
-         hash table deletion and re-addition.  Bug reported by Linda
-         Walsh <bash@tlinx.org>
-
-                                  11/21
-                                  -----
-subst.c
-       - in pos_params, handle case of `start' == 0 by making the list of
-         positional parameters begin with $0
-       - in parameter_brace_substring, increment `len' if start == 0, since
-         we will be adding $0 to the beginning of the list when we process it
-
-doc/{bash.1,bashref.texi}
-       - document new behavior of `0' offset when using substring expansion
-         with the positional parameters
-
-support/shobj-conf
-       - changes to shared object creation for loadable builtins on Mac OS X
-         10.4 to use libtool instead of ld by specifying -dynamiclib
-         argument and changing options to be appropriate for libtool.  This
-         winds up creating a dynamic shared library instead of an executable
-
-                                  11/24
-                                  -----
-{jobs,nojobs}.c
-        - don't set last_asynchronous_pid to the child's pid in the child
-          for asynchronous jobs (for compatibility -- all other posix shells
-          seem to do it this way).  This means that (echo $! )& echo $! should
-          display two different pids.  Fix from discussion on the
-          austin-group-l list
-
-builtins/mkbuiltins.c
-       - change builtins.c file generation so short doc strings are marked for
-         gettext and available for subsequent translation.  Suggestion by
-         Benno Schulenberg <bensberg@justemail.net>
-
-builtins/{bind,cd,hash,inlib,printf,pushd,test,times,ulimit}.def
-lib/malloc/malloc.c
-{shell,subst}.c
-       - fix a few strings that were not marked as translatable.  Fix from
-         Benno Schulenberg <bensberg@justemail.net>
-
-lib/readline/misc.c
-       - new function, _rl_revert_all_lines(void).  Goes through history,
-         reverting all entries to their initial state by undoing any undo
-         lists.
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_revert_all_lines
-
-rldefs.h
-       - add #undef HAVE_STRCOLL if STRCOLL_BROKEN is defined, prep to move
-         from config.h.in.  Problem reported by Valerly Ushakov
-         <uwe@ptc.spbu.ru>
-
-                                  11/25
-                                  -----
-lib/readline/readline.c
-       - call _rl_revert_all_lines from readline_internal_teardown if the
-         variable _rl_revert_all_at_newline is non-zero
-       - declare _rl_revert_all_lines initially 0
-
-                                  11/27
-                                  -----
-doc/{bash.1,bashref.texi}
-       - make sure to be explicit that `typeset +r' cannot remove the readonly
-         attribute from a variable
-
-                                  11/28
-                                  -----
-lib/sh/zmapfd.c
-       - new file, implements zmapfd(), which takes a file and returns its
-         contents in a string
-
-externs.h
-       - extern declaration for zmapfd
-
-                                  11/29
-                                  -----
-builtins/evalfile.c
-       - in _evalfile, use zmapfd to read the contents of the file into a
-         string, rather than using the size reported by stat and reading that
-         many characters, if the file is not a regular file (for things like
-         named pipes, stat reports the size as 0)
-
-                                  12/3
-                                  ----
-lib/sh/snprintf.c
-       - make sure number() sets the FL_UNSIGNED flag for %x and %X, so
-         fmtulong treats them as unsigned numbers.  Fixes bug reported by
-         James Botte <James.M.Botte@lowes.com>
-
-                                  12/13
-                                  -----
-lib/readline/util.c
-       - new function, _rl_ttymsg, for internal warning messages -- does
-         redisplay after printing message
-       - new function, _rl_errmsg, for internal warning/error messages --
-         does not do redisplay after printing message
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_ttymsg, _rl_errmsg
-
-lib/readline/{bind,callback,complete,display,rltty}.c
-       - use _rl_ttymsg/_rl_errmsg instead of direct writes to stderr
-
-lib/sh/tmpfile.c
-       - in get_tmpdir(), make sure that $TMPDIR names a writable directory;
-         otherwise skip it.  This catches names longer than PATH_MAX, but in
-         case it doesn't test that the length does not exceed PATH_MAX.  Fixes
-         heap overrun bug reported by Eric Blake <ebb9@byu.net>
-
-                                  12/16
-                                  -----
-builtin/{set,declare,shopt,trap,wait,bind,complete,enable,fc,history,read,setattr}.def
-doc/{bash.1,bashref.texi}
-       - improvements and clarifications to the help text associated with
-         several builtins, in some cases bringing them into line with the
-         man page text.  From Benno Schulenberg <bensberg@justemail.net>
-
-doc/{bash.1,bashref.texi}
-       - add `E' and `T' to the synopsis of the set builtin.
-         From Benno Schulenberg <bensberg@justemail.net>
-
-builtins/{break,exit,fg_bg,hash,jobs,type,ulimit}.def
-builtins/{common,evalfile}.c
-{error,expr,jobs,mksyntax,nojobs,shell,subst,version,siglist}.c
-       - add gettextizing marks to untranslated strings
-         From Benno Schulenberg <bensberg@justemail.net>
-
-                                  12/19
-                                  -----
-builtins/common.c
-       - change display_signal_list (used by `trap -l' and `kill -l') to use
-         five columns instead of 4 to display signal names
-
-builtins/help.def
-       - use the true terminal width instead of assuming 80 when displaying
-         help topics, leaving two characters of whitespace between horizontal
-         descriptions instead of 1
-       - change to print in columns with entries sorted down rather than across
-         (that is, like `ls' rather than `ls -x').  Change inspired by Benno 
-         Schulenberg <bensberg@justemail.net>
-
-jobs.h
-       - give values to the JOB_STATE enumerations so they can be used as
-         bitmasks, too
-
-                                  12/22
-                                  -----
-doc/{bash.1,bashref.texi}
-       - change description of `set' to make it clearer that you can use
-         `+' to turn off options
-       - clarify in the description of word splitting that sequences of
-         IFS whitespace at the beginning or end of the string are ignored
-
-                                  12/26
-                                  -----
-doc/bashref.texi
-       - move `shopt' builtin to its own section; change internal references
-         from `Bash Builtins' to the new shopt builtin
-       - new section for builtins that modify shell behavior in `Shell
-         Builtin Commands'; move set and shopt to new section.  Changes
-         inspired by Benno Schulenberg <bensberg@justemail.net>
-
-{redir,subst}.c
-       - add MT_USETMPDIR flag to calls to sh_mktmpfd and sh_mktmpname.  Bug
-         reported by Eric Blake <ebb9@byu.net>
-
-{configure,Makefile}.in
-       - changes so that the pathname for DEBUGGER_START_FILE is substituted
-         into pathnames.h at make time (allowing more flexibility in setting
-         `prefix' or `datadir') instead of at configure time.  Suggested by
-         Nick Brown <nickbroon@blueyonder.co.uk>
-
-shell.c
-       - declaration for  have_devfd; initialized from HAVE_DEV_FD
-       - declaration for check_jobs_at_exit; initialized to 0
-       - declaration for autocd; initialized to 0
-
-variables.c
-       - new dynamic variable, BASHPID, always set from return value from
-         getpid() (changes even when $$ doesn't change).  Idea from Bruce
-         Korb <bruce.corb@3pardata.com>
-
-builtins/exit.def
-       - if check_jobs_at_exit is non-zero, list jobs if there are any stopped
-         or running background jobs; don't exit shell if any running jobs
-
-execute_cmd.c
-       - in execute_simple_command, if the first word of a simple command is
-         a directory name (after looking for builtins, so `.' isn't caught)
-         that isn't found in $PATH, and `autocd' is non-zero, prefix a "cd"
-         to the command words
-
-builtins/shopt.def
-       - new `checkjobs' option, changes value of check_jobs_at_exit
-       - new `autocd' option, changes value of autocd
-
-pcomplete.c
-       - add COMP_TYPE, set to rl_completion_type, to list of variables set
-         by bind_compfunc_variables and unset by unbind_compfunc_variables
-
-doc/{bash.1,bashref.texi}
-       - document BASHPID
-       - document new shopt `checkjobs' option
-       - document new shopt `autocd' option
-       - document COMP_TYPE completion variable
-
-                                  12/29
-                                  -----
-aclocal.m4
-       - in BASH_SYS_SIGLIST, check HAVE_DECL_SYS_SIGLIST instead of the
-         obsolete and no-longer-supported SYS_SIGLIST_DECLARED
-
-                                  12/30
-                                  -----
-lib/readline/vi_mode.c
-       - add ` (backquote) to the list of vi motion characters
-       - in rl_vi_delete_to, rl_vi_change_to, and rl_vi_yank_to, don't delete
-         character under the cursor if the motion command moves the cursor
-         backward, so add F and T to the commands that don't cause the
-         mark to be adjusted
-       - add ` to the characters that don't cause the mark to be adjusted
-         when used as a motion command, since it's defined to behave that way
-       - when a motion character that may adjust the mark moves point
-         backward, don't adjust the mark so the character under the cursor
-         isn't deleted
-
-lib/readline/complete.c
-       - add variable rl_sort_completion_matches; allows application to
-         inhibit match list sorting
-       - add variable rl_completion_invoking_key; allows applications to
-         discover the key that invoked rl_complete or rl_menu_complete
-
-lib/readline/readline.h
-       - extern declarations for rl_completion_invoking_key and
-         rl_sort_completion_matches
-
-lib/readline/doc/rltech.texi
-       - documented rl_completion_invoking_key and rl_sort_completion_matches
-
-pcomplete.c
-       - export variable COMP_KEY to completion functions; initialized from
-         rl_completion_invoking_key; unset along with rest of completion
-         variables
-
-doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi
-       - document COMP_KEY
-
-[many files]
-       - changes to make variables and function parameters `const' for better
-         text sharing.  Changes originally from Andreas Mohr
-         <andi@rhlx01.fht-esslingen.de>
-
-                                1/4/2007
-                                --------
-lib/intl/Makefile.in
-       - use cmp before copying libgnuintl.h to libintl.h -- maybe save a few
-         rebuilds
-
-lib/builtins/Makefile
-       - fixes to build LIBINTL_H if necessary, dependency on this for
-         mkbuiltins.o prevented `make -j 6' from working correctly
-
-                                   1/8
-                                   ---
-subst.c
-       - new function, fifos_pending(), returns the count of FIFOs in
-         fifo_list (process substitution)
-
-subst.h
-       - extern declaration for fifos_pending()
-
-execute_cmd.c
-       - in execute_simple_command, if CMD_NO_FORK is set before we call
-         execute_disk_command, make sure there are no FIFOs in the expanded
-         words (from process substitution) and turn off CMD_NO_FORK if there
-         are, so they can get unlinked when the command finishes
-
-                                  1/10
-                                  ----
-subst.c
-       - read_comsub now takes a flags parameter and returns appropriate W_*
-         flags in it
-       - command_substitute now returns a WORD_DESC *, with the string it used
-         to return as the `word' and `flags' filled in appropriately
-
-subst.h
-       - changed extern declaration for command_substitute
-
-{pcomplete,subst}.c
-       - changed callers of command_substitute appropriately
-
-subst.c
-       - string_extract_verbatim now takes an additional int flags argument;
-         changed callers
-
-                                  1/11
-                                  ----
-support/texi2html
-       - fix problem that caused index links to not be generated if the first
-         index node had a name different than the node name
-
-doc/bashref.texi
-       - encapsulated all indexes into a single `Indexes' appendix; works
-         around bug fixed in texi2html
-
-                                  1/12
-                                  ----
-subst.c
-       - add call to sv_histtimefmt in initialize_variables so HISTTIMEFORMAT
-         from the environment is honored.  Fix from Ark Submedes (heh)
-         <archimerged@gmail.com>
-
-lib/readline/histfile.c
-       - make sure that the first character following the history comment
-         character at the beginning of a line is a digit before interpreting
-         it as a timestamp for the previous line
-
-doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi
-       - added detail to make it clear exactly how history timestamps are
-         saved to and read from the history file
-
-subst.c
-       - change quote_escapes to add CTLESC before spaces if IFS is null,
-         just in case we have to split on literal spaces later on (e.g., in
-         case of unquoted $@).  Corresponding changes to dequote_escapes.
-         Fixes a couple of problems reported by Brett Stahlman
-         <brettstahlman@comcast.net>
-
-                                  1/14
-                                  ----
-subst.c
-       - make same change to read_comsub to add CTLESC before ' ' if $IFS is
-         null, since we will split on literal spaces later
-
-                                  1/15
-                                  ----
-array.c
-       - new function, array_quote_escapes (ARRAY *a), calls quote_escapes
-         on each element of the array in the same way array_quote calls
-         quote_string
-       - call array_quote_escapes if match is not quoted in array_patsub
-       - array_slice is now used, so remove the #ifdef INCLUDE_UNUSED define
-       - change structure of array_subrange to call array_slice to create a
-         new array with the desired subset of elements, then call array_quote
-         or array_quote_escapes as necessary, like array_patsub.  Convert to
-         a string by calling array_to_string on the sliced-out array
-
-array.h
-       - new extern declaration for array_quote_escapes
-
-subst.c
-       - since array_patsub now calls quote_escapes as necessary, callers
-         don't need to call it after array_patsub returns.  Fixes first bug
-         reported by Brett Stahlman <brettstahlman@comcast.net>
-       - since array_subrange now calls quote_escapes as necessary, callers
-         don't need to call it after array_patsub returns.  Same fix as
-         for array_patsub
-
-                                  1/31
-                                  ----
-configure.in
-       - add -DSOLARIS to LOCAL_CFLAGS for solaris x
-
-config-bot.h
-       - don't #undef HAVE_GETCWD if GETCWD_BROKEN and SOLARIS are both
-         defined.  Solaris's loopback mount implementation breaks some of the
-         file system assumptions the replacement getcwd uses.
-
-builtins/common.c
-       - if GETCWD_BROKEN is defined, call getcwd with PATH_MAX for the size
-         argument, so it will allocate a buffer for the current working dir
-         with that size, instead of one that's `big enough'
-
-config.h.in
-       - add #undef PRI_MACROS_BROKEN for AIX 4.3.3
-
-pathexp.h
-       - new flag value for quote_string_for_globbing: QGLOB_REGEXP (quoting
-         an ERE for matching as a string)
-
-pathexp.c
-        - change quote_string_for_globbing to understand QGLOB_REGEXP
-
-execute_cmd.c
-       - change execute_cond_node to pass 2 (regexp match), 1 (shell pattern
-         match), or 0 (no matching) to cond_expand_word
-
-subst.c
-       - change cond_expand_word to translate SPECIAL==2 into passing
-         QGLOB_REGEXP to quote_string_for_globbing
-
-locale.c
-       - by default, if all else fails, set shell's idea of locale to ""
-         instead of its idea of `default_locale' -- the library functions
-         behave better with that value
-
-                                   2/2
-                                   ---
-builtins/printf.def
-       - if PRI_MACROS_BROKEN is defined, #undef PRIdMAX (AIX 4.3.3 broken)
-
-                                   2/3
-                                   ---
-Makefile.in,{builtins,doc}/Makefile.in,lib/*/Makefile.in
-       - add assignment for datarootdir as per GNU coding standards
-
-Makefile.in,builtins/Makefile.in,lib/intl/Makefile.in,po/Makefile.in.in
-       - use @localedir@ instead of $(datadir)/locale in assignment
-
-                                  2/13
-                                  ----
-jobs.c
-       - fix compact_jobs_list to not return js.j_lastj, since that is in use
-         and should not be overwritten.  Fix from Len Lattanzi
-         <llattanzi@apple.com>
-
-                                  2/16
-                                  ----
-lib/readline/text.c
-       - change rl_forward_char to allow moving to the end of the line when
-         using the arrow keys in vi insertion mode, rather than having the
-         behavior identical between vi command and insertion modes.  Change
-         suggested by Hugh Sasse <hgs@dmu.ac.uk>
-
-                                  2/19
-                                  ----
-CWRU/audit-patch
-       - patch from Steve Grubb of RedHat <sgrubb@redhat.com> to make bash
-         audit root's behavior by logging commands using his audit
-         framework.  Enabled if the shell's name is `aubash'.
-
-                                   3/8
-                                   ---
-jobs.c
-       - use WSTATUS (p->status) instead of bare p->status.  Fix from
-         Jim Brown <jim.brown@rsmas.miami.edu>
-
-                                   3/9
-                                   ---
-lib/readline/{complete,input,isearch,misc,readline,text,vi_mode}.c
-       - make sure cases where rl_read_key returns -1 (usually due to EIO
-         because the controlling tty has gone away) are handled correctly.
-         Prompted by report from Thomas Loeber <ifp@loeber1.de>
-
-                                  3/10
-                                  ----
-sig.c
-       - new function, top_level_cleanup, callable from contexts where some
-         cleanup needs to be performed before a non-fatal call to
-         jump_to_top_level
-
-sig.h
-       - new extern declaration for top_level_cleanup
-
-builtins/common.c
-       - add calls to top_level_cleanup before calls to jump_to_top_level
-         in a builtin command context (no_args(), get_numeric_arg()).  Fixes
-         bug reported by Ian Watson
-
-lib/readline/display.c
-       - in _rl_move_cursor_relative, use `new' when comparing against
-         the last invisible character in the prompt, since they both denote
-         buffer indices when in a multibyte locale, whereas `dpos' is a
-         display position
-
-                                  3/13
-                                  ----
-lib/readline/complete.c
-       - set rl_completion_append_character to the default (' ') in
-         set_completion_defaults().  Fixes bug reported by David Emerson
-         <demerson3x@angelbase.com>
-
-                                  3/23
-                                  ----
-builtins/evalfile.c
-       - make sure read() returns a value >= 0 before using it as an index
-         into string[]
-       - use a variable of type `ssize_t' for return value from read()
-       - only try to read the entire contents of a regular file in one shot
-         if the file size is less than SSIZE_MAX.  These fix problems
-         reported by hooanon05@yahoo.co.jp.
-
-include/typemax.h
-       - define SSIZE_MAX as 32767 if it's not defined
-
-lib/readline/display.c
-       - in rl_redisplay() and update_line(), if redrawing the prompt because
-         it contains invisible characters, make sure we redraw the character
-         indicating a modified history line and take it into account when
-         computing _rl_last_c_pos
-       - in update_line, if deleting characters and redrawing the new text,
-         make sure we adjust _rl_last_c_pos by wrap_offset in a multibyte
-         locale if the text we're drawing starts before or at the last
-         invisible character in the prompt string.  Fixes bug reported on
-         bug-readline by J Pelkey <pelkeyj@gmail.com>
-
-parse.y
-       - when adding at CTLESC character to the current token, do not
-         escape it with CTLESC if pass_next_character indicates that the
-         CTLESC was escaped by a backslash.  Fixes bug reported by
-         Paul Bagshaw <paul.bagshaw@orange-ftgroup.com>.
-
-                                  3/25
-                                  ----
-lib/readline/text.c
-       - in rl_forward_char, short-circuit the loop if in emacs mode and
-         rl_point == rl_end.  Fixes problem with multibyte locales
-         reported by Len Lattanzi <llattanzi@apple.com>
-
-                                  3/29
-                                  ----
-command.h
-       - new flag for subshell_environment: SUBSHELL_PROCSUB, for process
-         substitution
-
-subst.c
-       - add SUBSHELL_PROCSUB to subshell_environment in process_substitute
-
-                                  3/30
-                                  ----
-doc/Makefile.in
-       - fix installation of bash.info to understand that it is in the build
-         directory, not the source directory
-
-mailcheck.c
-       - new function, init_mail_dates, calls remember_mail_dates only if
-         there are no mailboxes in `mailfiles'
-       - new function, init_mail_file, initializes a FILEINFO, using the
-         last time mail was checked as the mtime and atime (or the time the
-         shell was started if last_time_mail_checked is uninitialized)
-       - call init_mail_file instead of update_mail_file in add_mail_file,
-         called from remember_mail_dates (which is supposed to initialize
-         the list of mail files)
-       - new convenience functions, alloc_mail_file and dispose_mail_file to
-         allocate and free FILEINFO structs
-
-mailcheck.h
-       - extern declaration for init_mail_dates
-
-shell.c
-       - call init_mail_dates instead of remember_mail_dates
-
-                                   4/4
-                                   ---
-builtins/read.def
-       - changes to print $PS2 when a line is continued with a backslash in
-         an interactive shell.  This is as POSIX requires
-
-                                   4/5
-                                   ---
-subst.c
-       - make sure quote_escapes is only ever called when the word to be
-         escaped is not marked as double-quoted -- cleaner, and allows us
-         to make certain assumptions
-
-                                   4/6
-                                   ---
-subst.c
-       - change all EX_* defines to begin with SX_
-       - new flag, SX_NOCTLESC, obeyed by string_extract_verbatim, tells it
-         to not obey CTLESC quoting
-       - change quote_escapes to not quote CTLESC with CTLESC if one of the
-         chars in $IFS is CTLESC, since the return value from quote_string
-         will be passed to word splitting and filename generation
-       - change read_comsub to do the same thing for unquoted command
-         substitutions
-       - change list_string to pass SX_NOCTLESC if CTLESC is one of the
-         chars in $IFS, so it will split on CTLESC instead of using it as a
-         quote character
-
-                                   4/7
-                                   ---
-subst.c
-       - slight change to string_extract_verbatim to allow CTLESC to quote
-         CTLNUL even if SX_NOCTLESC is set in the flags passed, to protect
-         the CTLNULs from future calls to remove_quoted_nulls.  Only
-         matters when $IFS contains CTLESC
-       - changes to cope with $IFS containing CTLNUL in the same way as the
-         CTLESC changes
-
-builtins/read.def
-       - changes to cope with $IFS containing CTLNUL in the same way as the
-         CTLESC changes
-
-                                  4/16
-                                  ----
-lib/sh/strftime.c
-       - a couple of fixes to the `%z' code
-
-eval.c
-       - add an fflush after printing the auto-logout message
-
-                                  4/24
-                                  ----
-subst.c
-       - add call to top_level_cleanup in exp_jump_to_top_level to get things
-         like unwind-protects and the loop levels cleaned up
-
-{arrayfunc,expr,variables}.c
-       - add calls to top_level_cleanup before jump_to_top_level() 
-
-                                  4/27
-                                  ----
-builtins/complete.def
-       - make sure the `command' argument to the -C option is printed with
-         single quotes, since multi-word commands will require them.  Bug
-         reported by martin@snowplow.org
-
-execute_cmd.c
-       - change execute_builtin_or_function and execute_subshell_builtin_or_function
-         to call fflush(stdout) after the builtin or function returns, to
-         make sure that all output  is flushed before the call returns.  It
-         matters on cygwin.  Fix suggested by Eric Blake <ebb9@byu.net>
-
-redir.c
-       - in do_redirection_internal, if the file descriptor being acted upon
-         is the same one used by the stdout stream, call fflush(stdout) to
-         make sure all output is flushed before changing the underlying fd
-         out from underneath stdio.  Fix suggested by Eric Blake <ebb9@byu.net>
-
-
-                                  4/30
-                                  ----
-
-builtins/common.c
-       - new function, sh_chkwrite(int), fflushes stdout and checks for error;
-         printing an error message and returning a new exit status if there's
-         an error on stdout.  Takes exit status as argument; returns new exit
-         status (EXECUTION_FAILURE if write error)
-
-builtins/common.h
-       - new extern declaration for sh_chkwrite
-
-builtins/{alias,cd,complete,echo,fc,history,pushd,shopt,times,trap,type,ulimit,umask}.def
-       - change to use sh_chkwrite to report write errors
-
-builtins/fc.def
-       - if an error occurs while writing commands from the history to a file
-         to be executed, report a write error and return failure without
-         attempting to execute any commands
-
-                                   5/1
-                                   ---
-builtins/{bind,declare,set,setattr}.def
-       - change to use sh_chkwrite to report write errors
-
-                                   5/2
-                                   ---
-lib/readline/input.c
-       - fix off-by-one errors in _rl_get_char (pop_index) and rl_stuff_char
-         (push_index) that caused the 511th character in the buffer to be
-         discarded.  Fixes bug reported by Tom Bjorkholm <tom.bjorkholm@ericsson.com>
-
-                                   5/8
-                                   ---
-subst.c
-       - fix parameter_brace_remove_pattern to pass getpattern() newly-allocated
-         memory.  If word expansions (particularly brace expansions) are
-         required, the expansion code will free the string passed to
-         expand_word_internal, and we don't want to free unallocated memory
-         (patstr++) or have duplicate frees (patstr).  Fixes bug reported on
-         Red Hat bugzilla
-
-                                   5/9
-                                   ---
-lib/readline/signals.c
-       - fix bug in rl_set_signals that caught SIGINT twice and didn't catch
-         SIGTERM.  Bug reported by Ed Kwan <ed.kwan@onstor.com>
-
-                                  5/18
-                                  ----
-jobs.c
-       - change compact_jobs_list to return 1 if js.j_lastj == 0 and there is
-         a job in jobs[0]; compact_jobs_list should never return an index
-         already occupied
-       - change reset_job_indices to avoid infinite looping when js.j_firstj
-         == 0 or js.j_firstj == js.j_jobslots upon function entry.  Fixes
-         bug reported by osicka@post.cz
-
-                                  5/20
-                                  ----
-
-execute_cmd.c
-       - new variable, executing_builtin, keeps track of number of "levels"
-         of builtins being executed; incremented by execute_builtin; saved
-         and restored by execute_simple_command
-
-subst.c
-       - new variable, assigning_in_environment, set and unset around calls
-         to assign_in_env by the expansion code
-
-variables.c
-       - use executing_builtin and assigning_in_environment to decide whether
-         or not to look into temporary_env when calling find_variable_internal.
-         Fixes problem reported by Kevin Quinn <kevquinn@gentoo.org>
-
-                                  5/22
-                                  ----
-redir.c
-       - change add_undo_redirect to differentiate between file descriptors
-         greater than SHELL_FD_BASE (currently 10) used internally to save
-         others and then being the targets of user redirection and fds that
-         are just the target of user redirections.  The former need to have
-         an `exec undo' redirect added to undo it in case exec throws away
-         redirections; the latter does not.  We use the close-on-exec flag
-         for this:  if it's set, we assume that the file descriptor is being
-         used internally to save another.  Fixes problem reported by Ian
-         Jackson <ian@davenant.greenend.org.uk>
-
-shell.c
-       - new function, init_interactive_script(), does interactive initialization
-         for a script run with `bash -i script' -- does everything the same
-         as init_interactive except set `interactive == 1', which causes the
-         shell to read from the standard input, after calling
-         init_noninteractive
-       - call init_interactive_script if a script is run as `bash -i script'.
-         Fixes problem reported by Joseph Michaud <jmichaud@sgi.com>
-
-                                  5/24
-                                  ----
-builtins/printf.def
-       - change vbadd to only call FASTCOPY if the passed buffer length is
-         > 1
-       - if the `-v' option is supplied and `vbuf' is already non-null from a
-         previous `printf -v var' call, set vbuf[0]=0 explicitly instead of
-         relying on vbadd to do it -- vbadd may not be called.
-       - fix PRETURN macro to set vbuf[0] == 0 if vbuf is not freed.  These
-         should fix problem reported by Elmar Stellnberger <estellnb@yahoo.de>
-
-lib/readline/display.c
-        - fix update_line to deal with the case where col_lendiff > 0 (meaning
-          the new string takes up more screen real estate than the old) but
-          lendiff < 0 (meaning that it takes fewer bytes to do so).  This can
-          happen when a multibyte prompt string is replaced with a longer one
-          containing only single-byte characters (e.g., when doing a reverse
-          i-search).  Fixes gentoo bug reported by Peter Volkov
-          <torre_cremata@mail.ru>
-
-builtins/read.def
-       - make sure we only print $PS2 if the standard input is a terminal
-       - new function, read_mbchar, to read a multibyte character so we
-         can make sure we read entire multibyte chars when `read -n' is
-         used, rather than bytes.  Only called when -n is supplied.
-         Fixes problem reported by Stanislav Brabec <sbrabec@suse.cz>
-
-                                  5/25
-                                  ----
-externs.h
-       - new #defines for third argument to named_function_string:
-         FUNC_MULTILINE (don't suppress newlines) and FUNC_EXTERNAL (convert
-         to external display form)
-
-subst.h
-       - new extern declaration for remove_quoted_escapes
-
-subst.c
-       - remove_quoted_escapes is now global
-
-print_cmd.c
-       - in named_function_string, if FUNC_EXTERNAL is in the flags argument,
-         call remove_quoted_escapes to convert from internal to external form.
-         Fixes bug reported by Bo Andresen <bo.andresen@zlin.dk>
-
-variables.c,builtins/{declare,setattr,type}.def
-       - use FUNC_MULTILINE in calls to named_function_string as appropriate
-       - add FUNC_EXTERNAL to calls to named_function_string as appropriate
-
-                                  5/27
-                                  ----
-{make_cmd,variables}.c
-       - changes to enable the shell to compile when debugger support is
-         configured out (function_def hash table and access functions).  Fixes
-         bug reported by Horst Wente <horst.wente@acm.org>
-
-builtins/help.def
-       - fix bug in `help' two-column printing to avoid referencing
-         shell_builtins[num_shell_builtins]
-
-error.c
-       - in get_name_for_error, use dollar_vars[0] if the name returned from
-         looking in $BASH_SOURCE[0] is the empty string as well as if it's
-         null
-
-                                  5/31
-                                  ----
-arrayfunc.c
-       - change array_value_internal to set *RTYPE to 1 if the reference is
-         array[*] and 2 if the reference is array[@]
-
-subst.c
-       - in parameter_brace_expand_word, set the flags returned by the word
-         desc to include W_HASQUOTEDNULL if array_value returns QUOTED_NULL
-         for an array reference like x[*] and the word is quoted.  Fixes bug
-         reported by Christophe Martin <schplurtz@free.fr>
-
-                                   6/1
-                                   ---
-jobs.c
-       - several changes to preserve errno if tcgetpgrp/tcgetattr/tcsetattr
-         fail, for subsequent error messages
-       - change initialize_job_control to turn off job control if the terminal
-         pgrp == -1 or is not equal to shell_pgrp (with an error message)
-       - in initialize_job_control, if the shell has been forced interactive
-         with -i, make sure stderr is hooked to a tty before using it as
-         the controlling terminal.  If it's not, try to open /dev/tty and
-         assign it to shell_tty.  Fixes problems reported by Derek Fawcus
-         <dfawcus@cisco.com>
-
-                                  6/13
-                                  ----
-support/shobj-conf
-       - changes to support shared object and shared library creation on AIX
-         5.x and later versions.  From Niklas Edmundsson <nikke@acc.umu.se>
-
-                                  6/17
-                                  ----
-builtins/mkbuiltins.c
-       - new array of builtins, posix_builtins, containing builtins listed
-         as special to the command search order by POSIX
-       - add POSIX_BUILTIN to the builtin flags if the builtin name is one
-         that's special to the posix command search order
-
-builtins.h
-       - new define, POSIX_BUILTIN, means that a builtin is special to the
-         posix command search order
-
-                                  6/22
-                                  ----
-lib/readline/display.c
-       - new macro, WRAP_OFFSET, intended to replace W_OFFSET.  Takes prompt
-         strings longer than one physical line with invisible characters on
-         the second line into account when calculating the number of
-         invisible characters on the current screen line
-       - use WRAP_OFFSET where appropriate (update_line, _rl_move_cursor_relative)
-       - change update_line to deal with adjusting _rl_last_c_pos in a
-         multibyte environment when the prompt has invisible chars on the
-         second line and redisplay has output the invisible characters
-       - change _rl_move_cursor_relative to adjust _rl_last_c_pos in a
-         multibyte environment when the prompt has invisible chars on the
-         second line and the redisplay draws the invisible character.  Fixes
-         redisplay bug reported by Andreas Schwab <schwab@suse.de>
-
-
-                                  7/11
-                                  ----
-
-lib/readline/rltty.c
-       - enable flush-output code for systems other than AIX 4.1.  Problem
-         reported by Jan Kratochvil <jan.kratochvil@redhat.com>
-
-                                  7/12
-                                  ----
-lib/readline/display.c
-       - set prompt_invis_chars_first_line from the portion of the prompt
-         following the final newline, instead of from the prefix.  Fixes
-         bug reported on the Ubuntu bug list by dAniel hAhler
-         <ubuntu@thequod.de>
-
-                                  7/13
-                                  ----
-variables.c
-       - use native __QNX__ and __QNXNTO__ cpp defines instead of qnx and
-         qnx6, respectively.  Patch from Sean Boudreau <seanb@qnx.com>
-
-lib/sh/getcwd.c
-       - #undef HAVE_LSTAT on qnx, so it uses stat instead.  Patch from
-         Sean Boudreau <seanb@qnx.com>
-
-                                  7/21
-                                  ----
-builtins/common.c
-       - change sh_invalidnum to be a little smarter about octal and hex
-         numbers and change the message appropriately.  Bug originally
-         reported on coreutils list by Jürgen Niinre <Jyrgen.Niinre@emt.ee>
-
-                                  7/26
-                                  ----
-test.c
-       - make sure the string passed to test_unop has only a single character
-         following the `-'.  Fixes bug reported by Michael A. Smith
-         <michael@smith-li.com>
-
-parse.y
-       - better input validation: make sure a word looks like a conditional
-         unary operator (-X) before calling test_unop
-
-                                  7/28
-                                  ----
-trap.c
-       - in trap_handler, if it's called directly from the signal handler
-         (e.g., SIGINT sighandler, set by set_sigint_handler), but the
-         trap disposition has been reset to the default between the
-         assignment and receipt of the signal, check that the signal is
-         trapped and issue a warning if the shell was compiled with
-         debugging enabled.  Fixes bug reported by Fergus Henderson
-         <fergus@google.com>
-
-                                   8/1
-                                   ---
-lib/readline/{util,histexpand}.c
-       - fixes for small memory leaks from Michael Snyder <msnyder@sonic.net>
-
-                                  8/18
-                                  ----
-Makefile.in
-       - add dependency on builtins/builtext.h to nojobs.o list.  Fixes
-         `make -j 5' issue reported by Chris MacGregor <chris@bouncingdog.com>
-
-examples/loadables/Makefile.in
-       - add @LDFLAGS@ to SHOBJ_LDFLAGS assignment -- experimental.  Suggested
-         by Mike Frysinger <vapier@gentoo.org>
-
-examples/loadables/{basename,cut,dirname,finfo,head,ln,logname,mkdir,pathchk,print,printenv,push,realpath,rmdir,sleep,tee,truefalse,tty,uname,unlink,whoami}.c
-       - fix up some includes.  Fix from Mike Frysinger <vapier@gentoo.org>
-
-                                  8/21
-                                  ----
-histexpand.c
-       - fix another memory leak in history_find_word.  Bug report originally
-         from Michael Snyder <msnyder@sonic.net>; test case suggested by Jim
-         Blandy <jimb@codesourcery.com>
-
-                                  8/26
-                                  ----
-subst.c
-       - change to do_assignment_internal to make an assignment to a variable
-         with the `noassign' internal attribute not a variable assignment
-         error.
-       - fix do_assignment_internal so assignment to a `noassign' variable
-         does not cause it to suddenly become visible if it's currently
-         invisible
-
-                                   9/3
-                                   ---
-stringlib.c
-       - change strsub to check whether or not temp is non-null before
-         trying to null-terminate it.  Also make sure temp is allocated
-         even if the pattern and replacement strings are empty, and set
-         to a copy of string (like ${foo//})
-         Bug report from Timo Lindfors <timo.lindfors@iki.fi>
-
-                                  9/10
-                                  ----
-{config.h,Makefile,configure}.in,aclocal.m4
-       - new tests for fpurge and __fpurge
-
-lib/sh/fpurge.c, externs.h
-       - new file, fpurge(3) implementation with external decl in externs.h
-
-builtins/common.c
-       - add call to fpurge(stdout) to sh_chkwrite
-
-{redir,execute_cmd}.c
-       - add call to fpurge(stdout) after fflush(stdout) before changing
-         stdout file descriptor and after a builtin or function executes
-
-                                  9/12
-                                  ----
-expr.c
-       - make sure noeval is set to 0 when a longjmp occurs, since it will
-         not be reset otherwise, and it can be set to 1 while processing
-         a {pre,post}-increment or {pre,post}-decrement token
-       - set noeval to 0 at the beginning of evalexp, since it's never
-         called recursively
-
-                                  9/14
-                                  ----
-config-top.h
-       - new builder-modifiable define:  DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS
-         Turning it on will cause errors from EPIPE to not be reported by
-         the normal shell write error message mechanism
-
-builtins/common.c
-       - if DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS is defined, don't print an
-         error message from sh_wrerror if errno == EPIPE.  Suggestion from
-         Petr Sumbera <petr.sumbera@sun.com>
-
-                                  9/19
-                                  ----
-{jobs,nojobs}.c,jobs.h
-       - add code to retry fork() after EAGAIN, with a progressively longer
-         sleep between attempts, up to FORKSLEEP_MAX (16) seconds.  Suggested
-         by Martin Koeppe <mkoeppe@gmx.de>
-
-                                  9/21
-                                  ----
-version.c
-       - change copyright year to 2007
-
-                                  9/25
-                                  ----
-pathexp.c
-       - change quote_string_for_globbing to add a backslash in front of a
-         backslash appearing in the pathname string, since the globbing
-         code will interpret backslashes as quoting characters internally.
-         Bug reported by <herbert@gondor.apana.org.au> on the debian list
-         (443685)
-
-                                  10/8
-                                  ----
-lib/readline/display.c
-       - in update_line, make sure _rl_last_c_pos is > 0 before setting
-         cpos_adjusted (or we actually moved the cursor to column 0 in
-         _rl_move_cursor_relative).  Fixes redisplay bug with prompt with
-         only invisible characters reported by dAniel hAhler
-         <ubuntu@thequod.de>
-
-                                  10/10
-                                  -----
-lib/readline/display.c
-       - in rl_redisplay, when calculating the new physical cursor position
-         in a multibyte locale (`tx'), do not call rl_backspace if tx ends
-         up < 0.  Rest of fix for bug reported by dAniel hAhler
-         <ubuntu@thequod.de>
-
-                                  10/12
-                                  -----
-lib/sh/getcwd.c
-       - fix memory overwrite problem that's possible if buf is NULL and
-         passed size is greater than the pathname length.  Reported by
-         Ian Campbell <ian.campbell@xensource.com>
-
-builtins/ulimit.def
-       - change the multiplier for the -c and -f options (`blocks') to 512,
-         the traditional value (and the one POSIX specifies).  Bug reported
-         by Pete Graner <pgraner@redhat.com>
-
-braces.c
-       - pass process substitution through unchanged the same as command
-         substitution.  Prompted by suggestion from Stephane Chazelas
-         <stephane_chazelas@yahoo.fr>
-
-lib/readline/input.c
-       - in rl_unget_char, fix off-by-one error when resetting pop_index if
-         it's < 0.  Bug reported by Uwe Doering <gemini@geminix.org>
-
-builtins/type.def
-       - change exit status of `type' to not successful if any of the
-         requested commands are not found.  Reported by Stephane Chazleas
-         <stephane_chazelas@yahoo.fr>
-
-pcomplete.c
-       - change command_line_to_word_list to use rl_completer_word_break_characters
-         instead of the shell metacharacters to split words, so programmable
-         completion does the same thing readline does internally.  Reported
-         by Vasily Tarasov <vtaras@sw.ru>
-
-                                  10/16
-                                  -----
-bashline.c
-       - When completing a command name beginning with a tilde and containing
-         escaped specical characters, dequote the filename before prefixing
-         it to the matches, so the escapes are not quoted again.  Reported
-         by neil@s-z.org
-
-                                  10/17
-                                  -----
-expr.c
-       - in readtok(), don't reset lasttp if we've consumed the whitespace
-         at the end of the expression string.  Fixes error message problem
-         reported by <anmaster@tele2.se>
-
-                                  11/1
-                                  ----
-builtins/printf.def
-       - change asciicode() to return intmax_t; add multibyte character
-         support instead of assuming ASCII (depending on behavior of system
-         multibyte support functions).  Fixes bug reported by Rich
-         Felker <dalias@aerifal.cx>
-
-                                  11/5
-                                  ----
-execute_cmd.c
-       - if redirections attached to a compound command fail, make sure to
-         set last_command_exit_value when returning EXECUTION_FAILURE.
-         Fixes bug reported separately by Andreas Schwab <schwab@suse.de>
-         and Paul Eggert <eggert@cs.ucla.edu>
-
-                                  11/9
-                                  ----
-builtins/read.def
-       - make sure the return value from get_word_from_string is freed if
-         non-null.  Fixes memory leak bug reported by Lars Ellenberg
-         <lars.ellenberg@linbit.com>
-
-                                  11/10
-                                  -----
-variables.c
-       - use getpid() as value of seeded_subshell to avoid problems with
-         random number generator not getting re-seeded correctly when
-         subshells are created.  Fix from Tomas Janousek <tjanouse@redhat.com>
-
-lib/readline/display.c
-       - in update_line(), when outputting characters at the end of the line,
-         e.g., when displaying the prompt string, adjust _rl_last_c_pos by
-         wrap_offset if the text we're drawing begins before the last
-         invisible character in the line.  Similar to fix from 5/24.  Fixes
-         bug reported by Miroslav Lichvar <mlichvar@redhat.com>
-
-                                  11/14
-                                  -----
-subst.c
-       - fix $[ expansion case to deal with extract_arithmetic_subst
-         returning NULL (if the `]' is missing) and return the construct
-         unchanged in that case.  Fixes tab completion bug reported by
-         Heikki Hokkanen <hoxu@users.sf.net> (debian bug 451263)
-
-lib/readline/mbutil.c
-       - fix _rl_find_next_mbchar_internal to deal with invalid multibyte
-         character sequences when finding non-zero-length chars.  Fixes
-         bug reported by Morita Sho <morita-pub-en-debian@inz.sakura.ne.jp>
-
-                                  11/15
-                                  -----
-variables.c
-       - add new function `seedrand' to seed the bash random number
-         generator from more random data.  Suggestion from Steve Grubb
-         <sgrubb@redhat.com>
-       - replace the rng in brand() with a slightly better one from FreeBSD
-         (filtered through Mac OS X 10.5).  Replacement suggested by
-         Steve Grubb <sgrubb@redhat.com>
-
-                                  11/21
-                                  -----
-configure.in
-       - darwin 9 also requires linking against libreadline.a and
-         libhistory.a because of Apple's questionable decision to ship a
-         libreadline "replacement" that doesn't provide all functions
-
-doc/{bash.1,bashref.texi}
-       - slight change to the text describing the effect of set -e when
-         in a || or && list
-
-                                  12/5
-                                  ----
-jobs.c
-       - fix raw_job_exit_status to correct mixing of int/WAIT values (need
-         to return a WAIT)
-       - arrange so that children run as part of command substitutions also
-         set the SIGINT handler to wait_sigint_handler, since they effectively
-         don't do job control
-       - in wait_for, if a child run as part of a command substitution exits
-         due to SIGINT, resend the SIGINT to the waiting shell with kill(2).
-         This makes sure the exit status propagates 
-
-doc/{bash.1,bashref.texi}
-       - tighten up the language describing when bash tries to see if its
-         stdin is a socket, so it can run the startup files.  Suggested by
-         Vincent Lefevre <vincent@vinc17.org>
-
-eval.c
-       - in the DISCARD case of a longjmp to top_level, make sure
-         last_command_exit_value is set to EXECUTION_FAILURE if it's 0,
-         but leave existing non-zero values alone
-
-subst.c
-       - in command_substitute, don't reset pipeline_pgrp in the child
-         process -- this means that second and subsequent children spawned by
-         this comsub shell get put into the wrong process group, not the
-         shell's.  Fix for bug reported by Ingo Molnar <mingo@elte.hu>
-
-                                  12/6
-                                  ----
-support/shobj-conf
-       - make sure the cases for darwin8.x (Mac OS X 10.4.x) are extended to
-         darwin9.x (Mac OS X 10.5.x).  Fixes problem originally reported
-         against readline-5.2 by schneecrash@gmail.com
-
-                                  12/8
-                                  ----
-subst.c
-       - make sure to add the results of (successful) tilde expansion as a
-         quoted string, to inhibit pathname expansion and word splitting.
-         From recent Austin Group interpretation.
-
-include/shtty.h, lib/sh/shtty.c
-       - add ttfd_onechar, ttfd_noecho, ttfd_eightbit, ttfd_nocanon, and
-         ttfd_cbreak to set tty attributes associated with a particular
-         file descriptor (which is presumed to point to a terminal).  Support
-         for fix for bug reported by b_bashbug@thebellsplace.com
-
-lib/readline/display.c
-       - make sure we only use rl_invis_chars_first_line when the number of
-         physical characters exceeds the screen width, since that's the
-         only time expand_prompt sets it to a valid value
-
-                                  12/12
-                                  -----
-builtins/set.def
-       - change set_minus_o_option to return EX_USAGE if an invalid option
-         name is supplied.  All callers can handle it.
-       - change set_builtin to return what set_minus_o_option returns if it's
-         not EXECUTION_SUCCESS.  This allows EX_USAGE errors to abort a
-         shell running in posix mode
-
-                                  12/14
-                                  -----
-builtins/read.def
-       - generalize the calls to the tty attribute functions to maintain a
-         local copy of the terminal attributes and use the fd supplied as
-         the argument to the -u option (default 0).  Fix for bug reported
-         by b_bashbug@thebellsplace.com
-
-doc/bashref.texi, lib/readline/doc/{history,rlman,rluser,rluserman}.texi
-       - Slight changes to conform to the latest FSF documentation standards.
-         Patch from Karl Berry <karl@freefriends.org>
-
-                                  12/20
-                                  -----
-execute_cmd.c
-       - after calling clear_unwind_protect_list, make sure we reset
-         parse_and_execute_level to 0, since there's nothing left to
-         restore it if top_level_cleanup tests it.  Fixes bug reported
-         by Len Lattanzi <llattanzi@apple.com>
-
-                                  12/31
-                                  -----
-lib/sh/getcwd.c
-       - new function, _path_checkino, checks whether the inode corresponding
-         to the path constructed from the first two arguments is the same as
-         the inode number passed as the third argument
-       - if BROKEN_DIRENT_D_INO is defined, meaning the d_ino/d_fileno
-         member of struct dirent doesn't contain valid values, use
-         _path_checkino instead of directly comparing against d_fileno.
-         Fixes Interix problem reported by Michael Haubenwallner
-         <haubi@gentoo.org>
-
-                                1/7/2008
-                                --------
-array.c
-       - fix array_subrange to separate elements in returned string with
-         first char of $IFS if QUOTED is non-zero, since this indicates
-         the caller used ${array[@]:foo}.  Fixes bug reported by Lea
-         Wiemann <lewiemann@gmail.com>
-
-                                   1/8
-                                   ---
-subst.c
-       - new function returning a string containing the first character of
-         $IFS: char *ifs_firstchar(int *)
-
-subst.h
-       - extern declaration for ifs_firstchar()
-
-array.c
-       - call ifs_firstchar() to get first character of $IFS when needed
-         (array_subrange() and array_patsub())
-
-                                  1/11
-                                  ----
-lib/readline/display.c
-       - use sentinel variable set at end of init_line_structures to decide
-         whether to call it from rl_redisplay, since early SIGWINCH on
-         Mac OS X that hits during this function can cause _rl_wrapped_line
-         to be referenced before initialization.  Fix for bug reported by
-         Len Lattanzi <llattanzi@apple.com>
-
-subst.[ch]
-       - skip_to_delim is now compiled into the shell all the time, not just
-         when readline is linked in
-
-subst.c
-       - use skip_to_delim to find the `/' denoting the end of a pattern
-         in pattern substitution, since it knows more shell syntax than
-         quoted_strchr and understands multibyte characters.  Fixes bug
-         reported by Dmitry V Golovashkin <Dmitry.Golovashkin@sas.com>
-
-                                  1/15
-                                  ----
-subst.c
-       - add `flags' argument to skip_to_delim telling it whether or not to
-         set no_longjmp_on_fatal_error; set this flag when calling from the
-         readline completion code
-
-subst.h        
-       - update extern declaration for skip_to_delim
-
-                                  1/17
-                                  ----
-subst.c
-       - expand_prompt_string takes a third argument: the initial flags for
-         the WORD
-
-subst.h
-       - change extern declaration for expand_prompt_string to add third arg
-
-bashline.c
-       - pass W_NOCOMSUB as third argment to expand_prompt_string when
-         calling from bash_directory_completion_hook, since we don't want
-         to do command substitution from the completion code
-
-parse.y
-       - change call to expand_prompt_string
-
-                                  1/18
-                                  ----
-doc/Makefile.in
-       - added an `install_builtins' rule to install the builtins.1 man page,
-         preprocessing it with sed to force `.so man1/bash.1', which some
-         versions of man require.  Suggestion from Peter Breitenlohner
-         <peb@mppmu.mpg.de>
-       - new target `install_everything' that will install normal documentation
-         and builtins man page
-       - changed uninstall target to remove bash_builtins page from man
-         directory
-
-lib/readline/vi_mode.c
-       - new function, rl_vi_insert_mode, which calls rl_vi_start_inserting
-         to make sure the value of `last command to repeat' is set correctly.
-         Fix from Thomas Janousek <tjanouse@redhat.com>
-       - add support for redoing inserts made with the `I' command.  Fix
-         from Thomas Janousek <tjanouse@redhat.com>
-       - add support for redoing inserts made with the `A' command
-
-lib/readline/readline.h
-       - new extern declaration for rl_vi_insert_mode
-
-lib/readline/{misc,readline,vi_mode,vi_keymap}.c
-       - change calls to rl_vi_insertion_mode to rl_vi_insert_mode
-
-                                  1/19
-                                  ----
-builtins/read.def
-       - change timeout behavior when not reading from a tty device to save
-         any partial input in the variable list, but still return failure.
-         This also causes variables specified as arguments to read to be
-         set to null when there is no input available.  Fix inspired by
-         Brian Craft <bcboy@thecraftstudio.com>
-
-                                  1/21
-                                  ----
-builtins/fc.def
-       - change computation of last_hist to use remember_on_history instead
-         of a hard-coded `1'.  This keeps fc -l -1 in PROMPT_COMMAND from
-         looking too far back
-
-                                  1/25
-                                  ----
-lib/readline/complete.c
-       - fix fnwidth to use string[pos] instead of *string when testing the
-         current character for a control character or rubout
-
-                                   2/2
-                                   ---
-general.c
-       - change posix_initialize to turn off source/. searching $PWD when
-         the file sourced is not found in $PATH.  Fixes bug reported by
-         Paolo Bonzini <bonzini@gnu.org> and Eric Blake <ebb9@byu.net>
-
-                                   2/9
-                                   ---
-builtins/*.def
-       - changes to text and formatting suggested by Jan Schampera
-         <jan.schampera@web.de>
-
-                                  2/16
-                                  ----
-bashline.c
-       - change command_word_completion_function to use the word completion
-         found by readline, which matters only when ignoring case is on
-         and the completion found in the file system differs in case from
-         the text the user typed (this is what readline does for normal
-         filename completion).  Fixes issue reported by Jian Wang
-         <jwang@a10networks.com.cn>.
-
-                                  2/18
-                                  ----
-builtins/source.def
-       - if the filename passed as an argument contains a `/', don't search
-         $PATH.  Not sure why it wasn't like this before
-
-                                  2/21
-                                  ----
-lib/readline/terminal.c
-       - change rl_crlf so that the MINT system on ATARI systems adds a
-         carriage return before the \n
-
-                                  2/22
-                                  ----
-doc/{bash.1,bashref.texi}
-       - added text to the EXIT STATUS section noting that exit statuses
-         fall between 0 and 255, inclusive
-
-support/mkversion.sh
-       - output a #define for DEFAULT_COMPAT_LEVEL (${major}${minor}; e.g. 32)
-         to version.h
-
-version.c
-       - int variable, shell_compatibility_level, set to DEFAULT_COMPAT_LEVEL
-         by default
-
-builtins/shopt.def
-       - new shopt variable, compat31, sets shell_compatibility_level to 31
-         (or back to default if unset)
-
-execute_cmd.c
-       - in execute_cond_node, restore bash-3.1 behavior of quoted rhs of
-         regexp matches if shell_compatibility_level == 31
-
-                                  2/28
-                                  ----
-lib/readline/rltty.c
-       - set readline_echoing_p = 1 if tcgetattr fails and sets errno to
-         EINVAL, as Linux does when the fd is a pipe.  Reported by Mike
-         Frysinger <vapier@gentoo.org>
-
-                                   3/6
-                                   ---
-{MANIFEST,Makefile.in},lib/sh/{casemod,uconvert,ufuncs}.c
-       - new library sources from bash-4.0-devel tree
-
-lib/sh/spell.c
-       - moved cdspell() here from builtins/cd.def, renamed dirspell()
-
-externs.h
-       - new declarations for extern functions from new library files
-       - new extern declaration for lib/sh/spell.c:dirspell()
-
-builtins/cd.def
-       - call extern library function dirspell(); remove static cdspell()
-
-builtins/read.def
-       - when read times out, make sure input_string is null-terminated before
-         assigning any partial input read to the named variables
-
-                                  3/10
-                                  ----
-lib/glob/xmbsrtowcs.c
-       - cut the number of memory allocations in xdupmbstowcs by not keeping
-         track of the indices if the caller hasn't asked for it
-
-                                  3/17
-                                  ----
-builtins/fc.def
-       - make sure the adjustment to i in fc_gethnum uses the same formula
-         fc_builtin uses to calculate last_hist
-       - make sure that every time fc_gethnum is called, the fc command last
-         in the history list has not yet been deleted, since fc_gethnum
-         assumes that it has not.  Fix from John Haxby <john.haxby@oracle.com>
-
-lib/readline/complete.c
-       - new private library function, _rl_reset_completion_state(), used to
-         reset any completion state internal to the library when a signal
-         is received
-       - call _rl_reset_completion_state() before returning from
-         rl_complete_internal
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_reset_completion_state
-
-lib/readline/signals.c
-       - call _rl_reset_completion_state from rl_signal_handler on SIGINT.
-         This fixes one of the problems identified by Mika Fischer
-         <mf+ubuntu@zoopnet.de>
-
-pcomplete.c
-       - programmable_completions now saves pointer to the compspec it's
-         working with in new global variable CURCS
-       - new function, pcomp_set_readline_variables, that sets or unsets
-         readline variables based on a passed flags value (COPT_FILENAMES,
-         etc.)
-       - new function, pcomp_set_compspec_options, to set or unset bits in
-         the options word of a passed compspec (default CURCS)
-       - only call bash_dequote_filename (via rl_filename_dequoting_function)
-         from pcomp_filename_completion_function if the readline state
-         word indicates word completion is in progress
-
-pcomplete.h
-       - new extern declaration for curcs
-       - new extern declaration for pcomp_set_readline_variables
-       - new extern declaration for pcomp_set_compspec_options
-
-bashline.c
-       - fix bash_dequote_filename to implement shell quoting conventions:
-               1. Inhibit backslash stripping within single quotes
-               2. Inhibit backslash stripping within double quotes only if
-                  the following character is one of the special ones
-       - call pcomp_set_readline_variables from attempt_shell_completion
-         instead of doing the equivalent inline
-
-                                  3/18
-                                  ----
-bracecomp.c
-       - make sure we sort array of matches in byte order (using strcmp). so
-         the brace calculations work correctly even when the locale orders
-         characters like aAbBcC...zZ.  Fixes bug reported by Torsten Nahm
-         <torstennahm@torstennahm.de>
-
-                                  3/20
-                                  ----
-lib/readline/{rltty,signals}.c
-       - move block_sigint and release_sigint from rltty.c to signals.c; add
-         _rl_ prefix to make them public to the library; change callers.
-         From Jan Kratochvil <jan.kratochvil@redhat.com>
-
-lib/readline/rlprivate.h
-       - new extern declarations for _rl_block_sigint and _rl_release_sigint
-
-lib/readline/display.c
-       - add calls to _rl_block_sigint and _rl_release_sigint to rl_redisplay,
-         since it maniupluates global data structures.  Fix from Jan
-         Kratochvil <jan.kratochvil@redhat.com>
-
-builtins/printf.def
-       - change calls to asprintf and manually adding to vbuf to use calls
-         to vsnprintf against vbuf directly -- if the number of characters
-         to be written overflows the buffer, realloc the buffer and use
-         vsnprintf again.  This should reduce the memory used by printf.
-         Idea from Yuya Katayama <yuya999@gmail.com>
-
-lib/readline/doc/rltech.texi
-       - documented rest of readline's state flags, including RL_STATE_CALLBACK
-       - documented rl_save_state and rl_restore_state
-
-                                  3/27
-                                  ----
-lib/readline/{rlprivate.h,{display,readline,rltty,terminal,text}.c}
-       - rename readline_echoing_p to _rl_echoing_p for namespace consistency
-
-lib/readline/{rlprivate.h,{callback,readline,util}.c}
-       - rename readline_top_level to _rl_top_level for namespace consistency
-
-builtins/ulimit.def
-       - new -b (socket buffer size) and -T (number of threads) options
-
-array.c
-       - fix bug in calculation of the array element assignment string length:
-         use length of `is' instead of `indstr'.  Reported as ubuntu bug
-         #202885 by John McCabe-Dansted
-
-builtins/setattr.def
-       - new function, show_all_var_attributes, displays attributes and
-         values for all shell variables (or shell functions) in a reusable
-         format
-
-builtins/common.h
-       - new extern declaration for show_all_var_attributes
-
-builtins/declare.def
-       - change `declare -p' to print out all variable attributes and values,
-         and `declare -fp' to print out all function attributes and
-         definitions.  Inspired by request from John Love-Jensen
-         <eljay@adobe.com>
-
-doc/{bash.1,bashref.texi}
-       - document new -b and -T options to ulimit
-       - tighten up language describing AND and OR lists
-       - add description of new behavior of `declare -p'
-
-                                  3/28
-                                  ----
-pcomplete.c
-       - rename curcs -> pcomp_curcs
-       - new global completion variable, pcomp_curcmd, the current command
-         name being completed
-
-builtins/complete.def
-       - new builtin, compopt, allows completion options for command names
-         supplied as arguments or the current completion being executed to
-         be modified.  Suggested by Mika Fischer <mf+ubuntu@zoopnet.de>
-
-                                  3/30
-                                  ----
-doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi
-       - document new compopt builtin
-
-                                   4/5
-                                   ---
-support/shobj-conf
-       - change solaris10 stanza to use -fPIC to fix 64-bit sparc_v9/solaris10
-         compilations.  Fix from Fabian Groffen <grobian@gentoo.org>
-
-builtins/read.def
-       - added `-i text' option, inserts `text' into line if using readline.
-         Suggested by many, used some ideas from Kevin Pulo <kevin@pulo.com.au>
-
-doc/{bash.1,bashref.texi}
-       - document new `-i text' option to read builtin
-
-                                   4/7
-                                   ---
-lib/readline/bind.c
-       - new settable variable, `history-size', sets the max number of
-         entries in the history list
-
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
-       - document new `history-size' settable readline variable
-
-                                   4/8
-                                   ---
-builtins/complete.def
-       - change build_actions calling sequence to take a struct with `other'
-         (non-action) flag arguments (-p, -r)
-       - add support for `-E' option to build_actions and complete builtin --
-         modifies or displays (internal) `_EmptycmD_' completion spec
-
-bashline.c
-       - change attempt_shell_completion to try programmable completion on an
-         `empty' command line and return the results
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - documented new `-E' option to `complete'
-
-                                   4/9
-                                   ---
-bashhist.c
-       - new variable, `enable_history_list', used to reflect setting of
-         `-o history' option
-       - change bash_history_{enable,disable,reinit} to set enable_history_list
-         as well as remember_on_history
-
-builtins/set.def
-       - use `enable_history_list' instead of `remember_on_history' to keep
-         value of `-o history' option
-
-builtins/evalstring.c
-       - instead of unwind-protecting remember_on_history, use a function to
-         restore it to the value of `enable_history_list' after
-         parse_and_execute runs the commands in the string.  This allows
-         history to be turned off in a startup file, for instance.  Problem
-         reported by Dan Jacobson <jidanni@jidanni.org>
-
-                                  4/11
-                                  ----
-bashline.c
-       - limited support for completing command words with globbing characters
-         (only a single match completed on TAB, absolute or relative
-         pathnames supported, no $PATH searching, some support for displaying
-         possible matches, can be used with menu completion).
-         Suggested by Harald Koenig <h.koenig@science-computing.de>
-
-print_cmd.c
-       - change redirection printing to output r_err_and_out as `&>file',
-         since the man page says that's the preferred form
-
-                                  4/12
-                                  ----
-builtins/*.def
-       - change long doc so the first line is a short description
-       - add `Exit Status:' section to each longdoc describing exit values
-
-builtins/help.def
-       - new `-d' option to print short description of each utility
-       - new `-m' option to print description of each builtin in a
-         pseudo-manpage format (inspired by ksh93)
-
-doc/{bash.1,bashref.texi}
-       - document new `-d' and `-m' options to `help'
-
-builtins/mapfile.def
-       - new builtin, `mapfile', imported from bash-4.0-devel branch
-
-tests/{mapfile.{data,right,tests},run-mapfile}
-       - tests for `mapfile' builtin
-
-doc/{bash.1,bashref.texi}
-       - added description of `mapfile' builtin
-
-MANIFEST,Makefile.in,builtins/Makefile.in
-       - added entries for mapfile source files
-
-arrayfunc.[ch]
-       - new function, bind_array_element, to support mapfile builtin
-
-                                  4/20
-                                  ----
-expr.c
-       - fix operator precendence in expcond():  term after the `:' is
-         a conditional-expression, not a logical-OR-expression (using C
-         terminology).  Bug reported by <archimerged@gmail.com>
-
-                                  4/22
-                                  ----
-bashintl.h
-       - new P_ define for using ngettext to decide on plural forms
-         (currently unused)
-
-                                  4/25
-                                  ----
-execute_cmd.c
-       - in execute_disk_command, if the command is not found, search for
-         a shell function named `command_not_found_handle' and call it
-         with the words in the command as arguments.  Inspired by Debian
-         feature.
-
-doc/{bash.1,bashref.texi}
-       - document new command_not_found_handle behavior in COMMAND EXECUTION
-         section
-
-configure.in
-       - change default version to bash-4.0-devel
-
-                                  4/28
-                                  ----
-variables.c
-       - change push_func_var and push_exported_var to call
-         stupidly_hack_special_variables if the temporary variable is going
-         to be disposed.  This undoes any internal changes caused by a local
-         variable assignment in the environment or in a shell function.  Bug
-         reported by Morita Sho <morita-pub-en-debian@inz.sakura.ne.jp> in
-         http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478096
-
-                                   5/3
-                                   ---
-builtins/fc.def
-       - fixed a problem caused by change of 1/21 to use remember_on_history,
-         since it's turned off by parse_and_execute(), but can cause the
-         last command in history to be deleted and leave last_hist pointing
-         beyond the end of the history list.  edit_and_execute_command can
-         do this.
-
-bashline.c
-       - new define, RL_BOOLEAN_VAR_VALUE, to take a readline boolean variable
-         and get its value as 0 or 1 (consider making readline global)
-       - put tty back into canonical mode before calling parse_and_execute in
-         edit_and_execute_command and then back into raw mode after it
-         returns.  Fixes problem identified by <koersen@gmail.com>.
-
-                                   5/4
-                                   ---
-lib/glob/glob.c
-       - code to support `globstar' option: GX_GLOBSTAR and two internal
-         flags.  Changes to skipname, glob_vector, mbskipname, glob_filename.
-         New function finddirs().
-
-lib/glob/glob.h
-       - new defines to support globstar code
-
-builtins/shopt.def
-       - new shell option, `globstar', enables special handling of `**' in
-         glob patterns -- matches all directories recursively
-
-pathexp.h
-       - extern declaration for glob_star
-
-pathexp.c
-       - break inline code out of quote_globbing_chars into a separate
-         function to decide whether a character is a globbing char:
-         glob_char_p
-       - change shell_glob_filename to call glob_filename with the
-         GX_GLOBSTAR flag if glob_star is set
-
-doc/{bash.1,bashref.texi}
-       - document new `globstar' shell option
-
-arrayfunc.c
-       - new function, broken out of quote_array_assignment_chars:
-         quote_assign; extended from old code to make sure that globbing
-         chars and chars in $IFS are quoted when displaying assignment
-         statements, especially in compound array assignments
-
-                                   5/5
-                                   ---
-bashline.c
-       - new variable, dircomplete_spelling, controls spelling correction
-         of directory names when doing filename completion
-       - change bash_directory_completion_hook to incorporate spelling
-         correction if initial canonicalization of directory name fails
-
-builtins/shopt.def
-       - new shell option, `dirspell', enables and disables spelling
-         correction of directory names during word completion
-
-builtins/read.def
-       - support for fractional timeout values (ival.uval); uses uconvert
-         and falarm/setitimer
-
-config.h.in
-       - new `HAVE_SETITIMER' define
-
-configure.in
-       - look for setitimer(2), define HAVE_SETITIMER if found
-
-doc/{bash.1,bashref.texi}
-       - document new `dirspell' shopt option
-       - document new fractional values to `read -t timeout'
-
-                                   5/6
-                                   ---
-assoc.[ch]
-       - new files, basic support for associative array implementation
-
-general.h
-       - new extern declarations for sh_openpipe, sh_closepipe, trim_pathname
-
-general.c
-        - new functions: sh_openpipe to create a pipe and move the file
-          descriptors to a high range; sh_closepipe, to close pipe fds and
-          clean up, and trim_pathname, to replace portions of a pathname
-          with `...' (for prompting)
-
-jobs.c
-       - don't set last_asynchronous_pid in child shell (messes up $!, among
-         other things)
-
-parse.y,parser.h
-       - moved definitions of parser flags to parser.h
-
-array.c
-       - imported array_modcase (case-changing operations on arrays) from
-         4.0-devel branch
-
-array.h
-       - new extern declaration for array_modcase
-
-lib/readline/complete.c
-       - new variable, rl_menu_completion_entry_function, generator for
-         rl_menu_complete
-       - new menu completion `browsing' implementation, with several
-         improvements over the old code.  Inspired by Sami Pietila
-         <sami.pietila@gmail.com>
-
-lib/readline/readline.h
-       - extern declaration for rl_menu_completion_entry_function
-
-                                   5/8
-                                   ---
-lib/readline/complete.c
-       - add support for a third argument to fnprint and print_filename,
-         which supports replacing a specified portion of the pathnames
-         printed when displaying possible completions with a `...' (or
-         `___', if the prefix would be confused with a portion of the
-         filename)
-       - new variable, _rl_completion_prefix_display_length, sets the
-         number of characters in a common prefix to be replaced with an
-         ellipsis when displaying possible completions
-       - add support to _rl_display_match_list to find the length of the
-         common prefix of all items being displayed, and passing that
-         value to print_filename for possible replacement with an ellipsis
-         if that length is longer than _rl_completion_prefix_display_length
-
-lib/readline/bind.c
-       - add support for retrieving value of history-size variable to
-         _rl_get_string_variable_value
-       - new bindable variable, completion-prefix-display-length.  When
-         displaying possible completions, matches with a common prefix
-         longer than this value have the common prefix replaced with an
-         ellipsis
-       - support for retrieving value of completion-prefix-display-length
-         variable to _rl_get_string_variable_value
-       - new bindable variable, revert-all-at-newline:  if enabled, causes
-         all changes in history lines to be undone before readline returns
-         after processing a newline
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - document new `completion-prefix-display-length' variable
-       - document new `revert-all-at-newline' variable
-
-execute_cmd.c
-       - change execute_builtin to not inherit the `-e' flag into commands
-         executed by the `command' or `source/.' builtins if we are supposed
-         to be ignoring the return value.  This is like `eval'.  Fixes bug
-         reported by Hiroshi Fujishima <hirobo@tonteki.org>
-
-                                  5/10
-                                  ----
-variables.c
-       - when reading the initial environment, don't create variables with
-         names that are not valid shell identifiers.  Fixes bug reported by
-         Stephane Chazleas <stephane_chazelas@yahoo.fr>
-
-                                  5/13
-                                  ----
-subst.c
-       - fix string_quote_removal to gracefully handle the case where a
-         backslash is the final character in the string (leaves the backslash
-         in place).  Fixes bug reported by Ian Robertson
-         <iroberts@u.washington.edu>
-
-                                  5/16
-                                  ----
-support/checkbashisms
-       - Perl script that purports to check for bash-specific features in a
-         shell script.  Lifted from Debian via ubuntu
-
-                                  5/20
-                                  ----
-lib/readline/display.c
-       - in update_line, when deciding whether or not to adjust _rl_last_c_pos
-         in a multibyte environment after printing the last line of a multiline
-         prompt with invisible characters on the first and last lines, use
-         the number of inivisible chars on the first line in the calculation
-         deciding whether or not we're past the last invisible character and
-         need to adjust the cursor position.  Old code used the number of
-         invisible chars on the last prompt line.  Fixes bug reported by
-         stuff@slinkp.com.
-       - in update_line, when fixing _rl_last_c_pos after drawing the first
-         line of the prompt, use the number of invisible chars on the first
-         line as the offset, instead of the total number of invisible chars
-       - use prompt_multibyte_characters, the number of multibyte chars in
-         the prompt string, to short-circuit some relatively expensive
-         multibyte text processing in rl_redisplay
-
-                                  5/21
-                                  ----
-variables.c
-       - new function, reinit_special_variables(), a hook for special
-         vars that need their hook functions called when they're unset as
-         a result of the shell reinitializing itself to run a script
-
-shell.c
-       - shell_reinitialize now calls reinit_special_variables
-       - shell_reinitialize now calls bashline_reset
-
-variables.h
-       - new extern declaration for reinit_special_variables
-
-bashline.c
-       - new function, bashline_reset(), called when the shell reinitializes
-         in shell_reinitialize.  Right now, just resets
-         bash_readline_initialized to 0.
-
-bashline.h
-       - new extern declaration for bashline_reset()
-
-                                  5/23
-                                  ----
-bashhist.c
-       - new function, bash_clear_history, clears the history and resets any
-         associated internal bash state
-
-bashhist.h
-       - extern declaration for bash_clear_history
-
-builtins/history.def
-       - call bash_clear_history instead of clear_history for `history -c'.
-         Fixes part of problem reported by Scott McDermott
-         <scott.m.mcdermott@gmail.com>
-       - decrement history_lines_this_session in delete_histent, called for
-         `history -d'
-
-builtins/history.def,bashhist.[ch]
-       - move delete_histent() to bashhist.c; rename to bash_delete_histent
-       - move delete_last_history() to bashhist.c; rename to
-         bash_delete_last_history()
-
-                                  5/25
-                                  ----
-braces.c
-       - add another parameter to mkseq(), the number of digits to put into
-         each member of a numeric sequence (width), changes to determine
-         any zero-padding go into expand_seqterm
-       - changes to expand_seqterm to allow user-specified increments
-
-bashline.[ch],shell.c,sig.c
-       - switched names of bashline_reinitialize and bashline_reset to better
-         reflect their functions
-       - when searching $PATH for directories to use for command completion,
-         make sure to free `current_path' before going out of scope
-       - new bindable function `dabbrev-expand', which is more or less
-         menu completion using dynamic history completion as the generator
-       - changes to bash_execute_unix_command to set variables for the
-         executed command like programmable completion: READLINE_LINE
-         (rl_line_buffer) and READLINE_POINT (rl_point)
-       - change to bash_execute_unix_command to allow the executed command
-         to change the readline line buffer by modifying the value of
-         READLINE_LINE and to change rl_point by modifying the value of
-         READLINE_POINT
-
-common.h
-       - new SEVAL_ defines for later parse_string changes from 4.0-devel
-         branch
-
-command.h
-       - new defines for new &>> r_append_err_and_out redirection
-
-builtins/evalstring.c
-       - new function, parse_string, parses a command from a passed string
-         and returns the number of characters consumed.  For satisfying
-         Posix rules when parsing command substitutions, from bash-4.0-devel
-         branch
-       - split out common prolog code from parse_string and
-         parse_and_execute into a separate function called from both
-
-parse.y
-       - small changes to add symbols needed for parse_string
-       - parser change to add `|&' as synonym for `2>&1 |'; translation is
-         performed at parse time so |& never shows up in output of
-         print_command, for instance.  Picked up from zsh, merged in from
-         bash-4.0-devel branch
-
-parse.y,{redir,copy_cmd,dispose_cmd,make_cmd,print_cmd}.c
-       - implement new &>> r_append_err_and_out (like >>foo 2>&1); merged
-         in from bash-4.0-devel branch
-
-doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi
-       - document new optional increment in brace expansion
-       - document new zero-padded fixed-width integer brace expansion
-       - document new `dabbrev-expand' bindable readline command
-       - document new effects of `bind -x' setting and reading the values of
-         READLINE_LINE and READLINE_POINT
-       - document new |& synonym for `2>&1 |' pipeline operator
-
-                                  5/26
-                                  ----
-parse.y        - recognize new ;& and ;;& case action list terminator tokens and
-         implement them in the grammar, setting CASEPAT_FALLTHROUGH and
-         CASEPAT_TESTNEXT flags as appropriate
-
-print_cmd.c
-       - print new ;& and ;;& case clause action list terminators as
-         appropriate
-
-execute_cmd.c
-       - implement new case clause action list terminators:
-               ;& - fall through to actions associated with next pattern list
-               ;;& - fall through to tests in next pattern list
-
-doc/{bash.1,bashref.texi}
-       - document new ;& and ;;& case clause action list terminators
-
-                                  5/28
-                                  ----
-jobs.c
-       - change waitchld so it treats SIGCHLD like SIGINT if `wait' is being
-         executed, and allows wait to jump out before running any trap set
-         on SIGCHLD.  Fixes debian bug #483016 reported by Miroslav Rudisin
-         <miero@atrey.karlin.mff.cuni.cz>
-       - run_sigchld_trap is no longer static, so the trap code in trap.c
-         can call it
-       - change run_sigchld_trap to call set_impossible_sigchld_trap instead
-         of just using a call to restore_default_signal
-
-jobs.h
-       - new extern declaration for run_sigchld_trap
-
-trap.c
-       - fix run_pending_traps to run a SIGCHLD trap if the trap handler isn't
-         set to IMPOSSIBLE_TRAP_HANDLER
-       - in trap_handler, don't reset the SIGCHLD trap handler to trap_handler
-         if MUST_REINSTALL_SIGHANDLERS is defined
-       - new function, set_impossible_sigchld_handler, sets the trap string
-         associated with SIGCHLD to IMPOSSIBLE_TRAP_HANDLER; used as a sentinel
-         by run_sigchld_trap and maybe_set_sigchld_handler
-       - change maybe_set_sigchld_handler to set the SIGCHLD trap string only
-         if the current value is IMPOSSIBLE_TRAP_HANDLER.  This ensures that
-         any traps on SIGCHLD set in a SIGCHLD handler will persist.  Fixes
-         debian bug #483016 reported by Miroslav Rudisin
-         <miero@atrey.karlin.mff.cuni.cz>
-
-trap.h
-       - new extern declaration for set_impossible_sigchld_trap
-
-                                  5/31
-                                  ----
-parse.y
-       - new function: parse_comsub(), parses $(...) by parsing command
-         between parens and making sure the next token is `)'.  From
-         the bash-4.0-devel branch
-       - new function: xparse_dolparen, helper function for parsing
-         command substitutions in $(...).  Called from subst.c to extract
-         a command substitution during word expansion.  From bash-4.0-devel
-         branch
-       - new function: rewind_input_stream().  Rewinds bash_input.location.string
-         back to where it was before the shell parsed a $() command
-         substitution.  From bash-4.0-devel branch
-       - changes to parse_matched_pair to combine most of the flag variables
-         (was_dollar, in_comment, and so on) into a local flags word
-
-                                   6/2
-                                   ---
-parse.y
-       - call trim_pathname, which retains only the last $PROMPT_DIRTRIM
-         directories and replaces the intervening characters with `...',
-         when expanding \w and \W
-
-doc/{bash.1,bashref.texi}
-       - document the effect of setting PROMPT_DIRTRIM
-
-                                   6/3
-                                   ---
-builtins/ulimit.def
-       - make the multiplier (block size) for -c and -f 512 bytes only if in
-         Posix mode and 1024 bytes otherwise (as in previous versions).  Uses
-         POSIXBLK and BLOCK_SIZE defines to parameterize size based on value
-         of posixly_correct
-
-doc/bashref.texi
-       - document this addition to posix mode
-
-builtins/common.c
-       - change get_numeric_arg to have a calling sequence and return value
-         more closely mimicking general.c:legal_number(), with the addition
-         of a flags word
-       - add extra value for `fatal' argument to get_numeric_arg to force it
-         to return failure to the caller rather than longjmping
-
-builtins/common.h
-       - change prototype declaration for get_numeric_arg
-
-builtins/{break,shift}.def
-       - change calls to get_numeric_arg to deal with new semantics and calling
-         sequence
-
-builtins/history.def
-       - display_history now returns an int
-       - change calling sequence for get_numeric_arg in display_history
-       - display_history now returns failure to the caller if get_numeric_arg
-         detects an invalid number, rather than jumping back to the top level
-       - use value returned by display_history as return status of history
-         builtin, filtered through sh_chkwrite
-       - history no longer aborts compound commands on invalid arguments.
-         fixes problem reported by Chu Li <chul@cn.fujitsu.com>
-
-{braces,subst}.c
-      - extract_command_subst now takes a third flags argument; passed flags
-       are ORd into flags passed to other functions; changed callers
-
-subst.h
-       - move SX_* defines here from subst.c so parse.y:xparse_dolparen can
-         see them and behave appropriately
-       - extract_command_subst now takes a third flags argument; change
-         prototype
-
-subst.c
-       - change extract_command_subst to call xparse_dolparen when extracting
-         a $() construct
-       - change calls to extract_delimited_string to extract_command_subst
-         as appropriate
-       - if command_substitute returns a NULL word desc, don't call
-         dispose_word_desc on it
-
-parse.y
-       - change xparse_dolparen to use the SX_* flags now in subst.h
-
-                                  6/16
-                                  ----
-subst.c
-       - in quote_list, set W_HASQUOTEDNULL flag in the word if quote_string
-         turns "" into CTLNUL
-       - in dequote_list, turn off W_HASQUOTEDNULL flag in the word if
-         dequote_string turns CTLNUL into ""
-       - new function, string_list_pos_params, encapsulates everything
-         needed to turn the positional parameters or an array indexed with
-         '@' or '*' into a string, including taking care of quoting and
-         using the first char of $IFS, when used in another expansion like
-         pattern removal or pattern substitution
-       - change list_remove_pattern, pos_params, pos_params_pat_subst to
-         call string_list_pos_params.  Fixes problems reported by
-         Stephane Chazelas <stephane_chazelas@yahoo.fr>
-
-                                  6/22
-                                  ----
-variables.h
-       - include assoc.h for associative arrays
-       - defines for case-modifying expansions and associative array variables
-       - sh_var_assign_func_t functions now take an extra char * parameter
-
-                                  6/25
-                                  ----
-variables.c
-       - change declarations and definitions of sh_var_assign_func_t functions
-         to add the extra char * parameter: null_assign, null_array_assign,
-         assign_seconds, assign_random, assign_lineno, assign_subshell,
-         assign_dirstack
-       - change calls to var->assign_func to add extra char * argument
-       - broke part of body of dispose_variable out into a new function,
-         dispose_variable_value, which knows how to free all kinds of shell
-         variable data
-       - changes to deal with variables with the internal `nofree' attribute
-
-arrayfunc.c
-       - change calls to var->assign_func to add extra char * argument
-       - bind_array_var_internal now takes an extra `char *key' argument
-       - additions for associative array implementation; from bash-4.0-devel
-         tree
-
-arrayfunc.[ch],subst.c
-       - expand_compound_array_assignment now takes the variable as the first
-         argument (SHELL_VAR *); changed function definition and callers
-
-builtins/set.def
-       - changes to handle associative arrays in `unset'
-
-{execute_cmd,command}.h
-       - definitions for coproc implementation; from bash-4.0-devel tree
-
-variables.c
-       - new functions for associative arrays: make_new_assoc_variable,
-         make_local_assoc_variable
-
-                                  6/26
-                                  ----
-variables.c
-       - more infrastructure for associative arrays; from bash-4.0-devel tree
-       - infrastructure for handling assignments to variables with
-         case-modifying attributes; from bash-4.0-devel tree
-
-config.h.in
-       - add #defines controlling case-modifying variable attributes and word
-         expansions
-
-configure.in
-       - add enable options for case-modifying variable attributes and word
-         expansions (--enable-casemod-attributes and --enable-casemod-expansions,
-         respectively); from bash-4.0-devel tree
-
-execute_cmd.c
-       - add code to fix_assignment_words to handle assignment statements to
-         "assignment builtins" that seem to be associative arrays.  Imperfect
-
-subst.c
-       - array_remove_pattern now takes a SHELL_VAR * as its first argument
-         instead of an ARRAY *; from the bash-4.0-devel tree
-       - changes to array_length_reference for associative arrays; from the
-         bash-4.0-devel tree
-       - changes to get_var_and_type for associative arrays; from the
-         bash-4.0-devel tree
-       - changes to parameter_brace_substring for associative arrays; from the
-         bash-4.0-devel tree
-       - changes to param_expand for associative arrays; from the
-         bash-4.0-devel tree
-
-builtins/declare.def
-       - changes for associative arrays: new `-A' option, changes to make
-         local and global associative array variables; from the bash-4.0-devel
-         tree
-
-                                  6/27
-                                  ----
-execute_cmd.c
-       - in execute_command_internal, when short-circuiting execution
-         because `breaking' or `continuing' is non-zero, preserve the exit
-         status by returning `last_command_exit_value' instead of an
-         unconditional EXECUTION_SUCCESS.  Fixes bug reported by Roman
-         Rakus <rrakus@redhat.com>
-
-                                  6/28
-                                  ----
-variables.c
-       - fix get_var_and_type to appropriately handle references like
-         ${varname[0]}, where `varname' is a scalar variable
-
-make_cmd.[ch],parse.y
-       - make_here_document now takes a second argument: the current line
-         number; changed caller (gather_here_documents)
-
-builtins/setattr.def
-       - added support for associative arrays and the `-A' variable attribute
-         option; from the bash-4.0-devel tree
-
-subst.c
-       - change code that transforms `declare -A xxx=(yyy)' to perform the
-         internal `declare -A xxx' before doing the variable assignment,
-         because associative arrays have to be declared before being assigned
-         to as such; uses new function make_internal_declare
-
-                                  6/30
-                                  ----
-subst.[ch]
-       - dequote_escapes is now external; add declaration in subst.h
-       - remove_quoted_nulls is now external; add declaration in subst.h
-
-array.[ch]
-       - new functions for completeness:  array_dequote, array_dequote_escapes,
-         array_remove_quoted_nulls
-       - array_subrange now calls array_remove_quoted_nulls for "${array[*]}".
-         Fixes bug reported by Vitor De Araujo <ux386@yahoo.com.br>
-       - array_patsub now calls array_remove_quoted_nulls for "${array[*]}"
-       - array_modcase now calls array_remove_quoted_nulls for "${array[*]}"
-       - array_patsub now handles the mflags&MATCH_QUOTED case appropriately
-         (that implies "${array[@]}")
-
-subst.c
-       - new functions for case-modifying word expansion suppport:
-         pos_params_casemod, parameter_brace_casemod; from bash-4.0-devel branch
-
-assoc.c
-       - new functions for completeness: assoc_remove_quoted_nulls
-       - assoc_patsub now calls assoc_remove_quoted_nulls for "${assoc[*]}"
-       - assoc_modcase now calls assoc_remove_quoted_nulls for "${array[*]}"
-       - assoc_patsub now handles the mflags&MATCH_QUOTED case appropriately
-         (that implies "${assoc[@]}")
-
-                                   7/1
-                                   ---
-assoc.[ch]
-       - new function, assoc_subrange: takes a hash table, converts it to a
-         word list, and performs the subrange and indexing on that list
-       - new functions for completeness: assoc_dequote, assoc_dequote_escapes
-
-subst.c
-       - verify_substring_values now takes the variable SHELL_VAR * as its
-         new first argument; changed callers
-       - change verify_substring_values to handle associative arrays using the
-         number of elements as the upper bound
-       - brought in code to do case-modifying word expansions from
-         bash-4.0-devel branch, conditional on CASEMOD_EXPANSIONS
-
-input.c
-       - if the read(2) in getc_with_restart returns -1/EAGAIN, turn off
-         non-blocking mode on the file descriptor and try again.  Fixes
-         problem reported by Glynn Clements <glynn@clements.plus.com>
-
-                                   7/2
-                                   ---
-doc/{bash.1,bashref.texi}
-       - documented new case-modifying word expansions
-
-make_cmd.c
-       - change make_here_document to display a warning message including the
-         start line of a here document if it ends up delimited by EOF.
-         Addresses issue raised by Richard Neill <rn214@hermes.cam.ac.uk>
-
-subst.c
-       - in do_assignment_internal, make sure the `invisible' attribute is
-         unset before returning success
-
-                                   7/3
-                                   ---
-config-top.h
-       - add `CASEMOD_CAPCASE' define to include or exclude the ~[~] word
-         expansion and the `capcase' variable attribute (declare -c)
-
-builtins/declare.def
-       - add support for manipulating the case-modifying attributes (new
-         declare -clu); from bash-4.0-devel branch
-
-builtins/setattr.def
-       - add support for reporting case-modifying attributes (-clu attributes);
-         from bash-4.0-devel branch
-
-doc/{bash.1,bashref.texi}
-       - specify that the read builtin timing out results in a return value
-         greater than 128
-       - document new `-l' and `-u' options to declare/typeset/local.  Leave
-         `-c' undocumented for now
-
-                                   7/4
-                                   ---
-make_cmd.[ch]
-       - make_coproc_command: construct a coproc; from bash-4.0-devel tree
-
-dispose_cmd.c
-       - dispose coproc command; from bash-4.0-devel tree
-
-copy_cmd.c
-       - copy a coproc command; from bash-4.0-devel tree
-
-print_cmd.c
-       - print a coproc command; from bash-4.0-devel tree
-
-shell.c
-       - dispoe the current coproc on shell exit; from bash-4.0-devel tree
-
-redir.c
-       - when closing redirects as part of user redirections, check whether
-         or not active coprocess fds are being closed and close the coproc
-         if so; from bash-4.0-devel tree
-
-config.h.in
-       - add define for COPROCESS_SUPPORT to include coprocesses
-
-configure.in
-       - add support for configuring coprocesses into and out of the build
-
-jobs.c
-       - in waitchld, check whether or not a coproc processs has exited;
-         from the bash-4.0-devel tree
-
-                                   7/5
-                                   ---
-doc/bashref.texi
-       - document new --enable-coprocesses option that includes coprocess
-         support
-
-execute_cmd.c
-       - add functions for coprocess support, including execute_coproc and
-         code to call it when command->type == cm_coproc; from
-         bash-4.0-devel tree
-
-lib/sh/fdprintf.c
-       - new library function fdprintf(int fd, const char *format, ...);
-         printf to a file descriptor
-
-{configure,config.h}.in
-       - support for detecting fdprintf and compiling in replacement
-
-Makefile.in,lib/sh/Makefile.in
-       - add rules to include fdprintf.o
-
-doc/{bash.1,bashref.texi}
-       - documented coprocesses and `coproc' reserved word
-
-                                   7/7
-                                   ---
-subst.c
-       - fix array_length_reference to use MB_STRLEN instead of STRLEN, so
-         multibyte characters in array values are computed correctly.  Fixes
-         bug reported by Wang Xin <wxinee@gmail.com>
-
-                                  7/10
-                                  ----
-jobs.c
-       - new function, maybe_give_terminal_to (old, new, flags), sets the
-         terminal pgrp to NEW if and only if it's currently set to OLD
-       - call maybe_give_terminal_to when the parent sets the terminal pgrp
-         to the pipeline pgrp in stop_pipeline, so we don't give the
-         terminal to the new job's pgrp unless it's currently owned by the
-         shell.  Fixes race condition described by Joe Peterson
-         <joe@skyrush.com>, where parent bash may change tty pgrp after a
-         grandchild (interactive bash child of su) has changed it to
-         something else.  The call to maybe_give_terminal_to makes explicit
-         a previously-implicit assumption
-
-aclocal.m4
-       - remove dependency on writable /tmp by creating directories in
-         build directory
-
-shell.c
-       - make changes to how bash sets no_line_editing and running_under_emacs
-         to deal with various emacs terminal emulators; use better check
-         for `eterm', since bash sends $PWD to eterm with control sequences
-         that confuse other programs.  Problem reported by Micah Cowan
-         <micah@cowan.name>
-
-
-                                  7/12
-                                  ----
-print_cmd.c
-       - break code that prints here-documents into two functions:
-         print_heredoc_header, which prints the operator and delimiter, and
-         print_heredoc_body, which prints the body text and closing delimiter
-       - change print_redirection to call print_heredoc_{header,body}
-       - sentinel variable, printing_connection, used when printing a command
-         of type `connection' (|, &&, ||, etc.)
-       - change print_redirection_list to save any here documents it finds
-         while printing a connection and save them in `deferred_heredocs'
-       - new function, print_deferred_heredocs, called from print_redirection
-         in the cm_connection case, calls print_heredoc_header for all the
-         here documents, then prints the operator (|, &&, ||, etc.), then
-         the here-document body.  This preserves syntactic correctness; the
-         old code printed the control operator after the body of the here
-         document.  Fixes bug reported by <buport@figpost.com>
-
-                                  7/16
-                                  ----
-locale.c
-       - in set_locale_var, print a warning message if setlocale() fails any
-         time it's called -- required some code restructuring
-
-                                  7/19
-                                  ----
-support/shobj-conf
-       - support for mingw32, contributed by Carlo Bramix
-         <carlo.bramix@libero.it>
-
-                                  7/23
-                                  ----
-execute_cmd.c
-       - added support (currently unused) to manage a list of coprocs
-
-                                  7/25
-                                  ----
-bashline.c
-       - add extern declarations for literal_history and force_append_history
-
-builtins/shopt.def
-       - include "bashhist.h" instead of having extern declarations for the
-         appropriate history variables
-
-parser.h
-       - new parser_state value: PST_HEREDOC, set when reading body of here-
-         document in parse.y:read_secondary_line
-
-parse.y
-       - set PST_HEREDOC bit in parser_state when reading a secondary line
-         for the body of a here-document
-       - change read_secondary_line to save lines in the body of a here-
-         document in the shell history list if remember_on_history is
-         set.  Fixes bug reported by Gene Golub <gene_golub@hotmail.com>
-
-                                   8/4
-                                   ---
-configure.in
-       - changed to 4.0-alpha
-
-lib/readline/readline.h
-       - changed constants to reflect readline-6.0 version
-
-                                  8/11
-                                  ----
-lib/readline/signals.c
-       - make sure we don't use SIGWINCH without checking whether or not it's
-         defined.  Fix from Pedro Alves <pedro@codesourcery.com>
-
-                                  8/12
-                                  ----
-
-COPYING
-       - updated to GPLv3; edits in every file with a copyright or license
-         declaration to update to gpl3
-
-version.c
-       - update extended version info to latest gnu standard
-
-                                  8/17
-                                  ----
-subst.c
-       - change exp_jump_to_top_level to only call top_level_cleanup if
-         parse_and_execute_level is 0.  If it's not, the longjmp to
-         parse_and_execute will run the unwind-protect stack.  Fixes bug
-         most recently reported by Roman Rakus <rrakus@redhat.com>
-
-                                  8/18
-                                  ----
-support/config.{guess,sub}
-       - updated to newer versions from autoconf-2.62 distribution
-
-                                  8/20
-                                  ----
-subst.c
-       - fixed parameter_brace_substring to differentiate between indexed and
-         associative arrays when computing second offset, instead of
-         assuming indexed array
-
-                                  8/21
-                                  ----
-support/xcase.c
-       - simple program to convert input from lower to uppercase and vice
-         versa.  Now used by coproc test suite, since `tr -u' is not
-         portable.
-
-                                  8/22
-                                  ----
-doc/bash.1
-       - fixed description of the bindable edit-and-execute commands to note
-         they check $VISUAL first, instead of $FCEDIT.  Fixed bug reported
-         by
-
-[bash-4.0-alpha frozen]
-
-                                  8/28
-                                  ----
-[bash-4.0-alpha released]
-
-                                   9/1
-                                   ---
-builtins/evalstring.c
-       - fixed typo in parse_string (ostring used uninitialized).  Bug
-         reported by Andreas Schwab <schwab@suse.de>
-
-subst.c
-       - fix return value of parameter_brace_expand to set the
-         W_HASQUOTEDNULL flag in the returned WORD_DESC * if the return value
-         from parameter_brace_remove_pattern is a quoted null string.  Fixes
-         bug reported by Andreas Schwab <schwab@suse.de>
-       - set the W_HASQUOTEDNULL flag in the return value from
-         parameter_brace_expand if the return value from parameter_brace_patsub
-         is a quoted null string
-
-                                   9/6
-                                   ---
-builtins/read.def
-       - change read -t 0 to return success if there is input available to be
-         read -- allows scripts to poll for input.  Uses input_avail libsh
-         function
-
-                                   9/9
-                                   ---
-externs.h
-       - fix extern fpurge declaration -- use HAVE_DECL_FPURGE instead of
-         NEED_FPURGE_DECL, since the former is set by `configure'
-
-jobs.h
-       - add extern declaration for close_pgrp_pipe
-       - add a new job state JNONE (-1) to the enum
-
-jobs.c
-       - include execute_cmd.h for extern declarations for coproc functions
-
-subst.c
-       - include builtins/builtext.h for extern declarations for functions
-         implementing builtins (e.g., declare_builtin)
-
-arrayfunc.c
-       - include "pathexp.h" for extern declaration for glob_char_p
-
-braces.c
-       - add extern declaration for `asprintf'
-
-lib/readline/rlprivate.h
-       - add extern declarations for _rl_trace, _rl_tropen
-
-lib/sh/zgetline.c
-       - add extern declarations for zread, zreadc
-
-lib/sh/mktime.c
-       - include "bashansi.h" for string function declarations
-
-builtins/common.h
-       - add extern declaration for parse_string
-
-trap.c
-       - include jobs.h for extern declaration for run_sigchld_trap
-
-general.c
-       - fix call to strtoimax in legal_number; if ep == string when function
-         returns, the number was not converted, even if errno is not set.
-         Fix from Paul Jarc <prj@case.edu>
-
-                                  9/11
-                                  ----
-[prayers for the victims of 9/11/2001]
-
-builtins/return.def
-       - call no_options, as Posix requires.  This also has the effect of
-         disallowing negative return values unless they're prefixed by `--'
-
-                                  9/13
-                                  ----
-builtins/bind.def
-       - add an error message when bind is used without line editing active,
-         instead of just returning an error status
-
-variables.c
-       - make sure make_local_variable never creates visible variables with
-         a value, whether or not a variable with the same name existed in a
-         previous context.  This is consistent with ksh93.  Fix from
-         <neil@s-z.org>
-
-                                  9/16
-                                  ----
-execute_cmd.c
-       - add call to CHECK_TERMSIG in shell_execve after the call to execve
-         returns.  Recommended by Roman Rakus <rrakus@redhat.com>
-       - add QUIT check in execute_connection after executing first command
-         in a `&' connection
-
-                                  9/22
-                                  ----
-execute_cmd.c
-       - new semaphore variable, executing_list, incremented every time a
-         list (command1;command2 or command1 || command2 or command1 &&
-         command2) is executed; used as sentinel for rest of shell
-
-sig.c,builtins/evalstring.c
-       - set executing_list to 0 when throwing execution back to top level;
-         make sure to unwind-protect it in appropriate places
-
-jobs.c
-       - if a pipeline is killed by SIGINT while executing a list (when
-         executing_list is non-zero), make sure the shell acts as if an
-         interrupt occurred.  The behavior is dependent on the shell
-         compatibility level being > 32 (bash-4.0 and above)
-
-                                  9/23
-                                  ----
-redir.c
-       - don't bother reporting an error with a file descriptor, even if
-         the errno is EBADF, if the redirection error (e.g., NOCLOBBER)
-         can't have anything to do with the fd.  Fixes bug reported by
-         "David A. Harding" <dave@dtrt.org>, debian bug #499633.
-
-                                  9/24
-                                  ----
-builtins/declare.def
-       - make `declare [option] var' (and the `typeset' equivalent) create
-         invisible variables, instead of assigning the null string to a
-         visible variable.  Fixes bug reported by Bernd Eggink <monoped@sudrala.de>
-
-                                  9/25
-                                  ----
-builtins/common.[ch]
-       - new function, builtin_warning(), like builtin_error but for warning
-         messages
-
-builtins/bind.def
-       - experimental: print a warning, but go on, if line editing not active
-         when bind is invoked.  Suggested by Rocky Bernstein
-         <rocky.bernstein@gmail.com>
-
-                                  10/3
-                                  ----
-test.c
-       - use same_file instead of directly comparing st_dev and st_ino when
-         comparing files in filecomp().  From mingw32 patches submitted
-         by Hector Chu <hkcc2@cantab.net>
-
-                                  10/4
-                                  ----
-
-redir.c
-       - in redirection_error(), use `error' instead of errno when comparing
-         against EBADF.  From mingw32 patches submitted by Hector Chu
-         <hkcc2@cantab.net>
-
-shell.c
-       - in unset_bash_input(), reset bash_input.type to st_none after
-         closing the default buffered fd.  From mingw32 patches submitted
-         by Hector Chu <hkcc2@cantab.net>
-
-builtins/cd.def
-       - ignore CDPATH when in privileged mode.  Suggested by Paul Jarc
-         <prj@po.cwru.edu>
-
-variables.c
-       - change sv_globignore to only act if privileged mode is not enabled.
-         Suggested by Paul Jarc <prj@po.cwru.edu>
-
-doc/bash.1,bashref.texi
-       - document new treatment of CDPATH and GLOBIGNORE when privileged
-         mode is enabled
-
-builtins/read.def
-       - change prompt printing to occur after terminal is set to no-echo
-         mode.  Based on suggestion from Stephane Chazelas
-         <stephane_chazelas@yahoo.fr>
-
-lib/readline/signals.c
-       - new variables to keep track of special characters corresponding to
-         SIGINT, SIGQUIT, and SIGTSTP
-       - new variable to keep track of whether tty is echoing control
-         characters corresponding to SIGINT, SIGQUIT, and SIGTSTP
-       - new function, _rl_echo_signal_char(int sig) to display the tty
-         special char generating SIGINT, SIGQUIT, or SIGTSTP.  Based on
-         idea and code from Joe Peterson <joe@skyrush.com>
-       - call rl_echo_signal_char in rl_signal_handler: if the terminal
-         settings indicate it, readline will echo characters that generate
-         keyboard signals
-
-lib/readline/rltty.c
-       - set _rl_intr_char, _rl_quit_char, and _rl_susp_char to special
-         characters that generate signals from keyboard
-       - set _rl_echoctl if ECHOCTL tty flag is set
-
-lib/readline/rlprivate.h
-       - extern declarations for _rl_intr_char, _rl_quit_char, and
-         _rl_susp_char
-       - extern declaration for _rl_echoctl
-
-lib/readline/readline.h
-       - extern declaration for rl_echo_signal_char()
-
-lib/readline/doc/rltech.texi
-       - document rl_echo_signal_handler(): available for applications
-         that install their own signal handlers
-
-                                  10/5
-                                  ----
-execute_cmd.c
-       - fix errexit logic to not cause the shell to exit when a command in
-         a pipeline fails.  Fixes bug reported by Marcin Owsiany
-         <marcin@owsiany.pl>
-
-                                  10/14
-                                  -----
-builtins/evalstring.c
-       - don't short-circuit execution in parse_and_execute if we want to
-         run an exit trap.  Fixes bug reported by Steffen Kiess
-         <s-kiess@web.de>
-
-                                  10/18
-                                  -----
-parse.y
-       - fix error production to only call YYACCEPT if the shell is currently
-         interactive and not in parse_and_execute (so parser errors in
-         things like eval will correctly set $?).  Fixes bug reported by
-         marco-oweber@gmx.de
-
-execute_cmd.c
-       - make sure variable name errors in execute_for_command and non-
-         identifier function names in execute_intern_function set the
-         return status to EX_BADUSAGE (2), not EX_USAGE (258)
-
-parser.h
-       - new parser state, PST_REPARSE
-
-parse.y
-       - turn PST_REPARSE on in parse_string_to_word_list
-       - in parse_matched_pair, if parsing a single-quoted string and
-         PST_REPARSE is set, don't requote CTLESC or CTLNUL.  Fixes bug with
-         compound array assignment using $'\x7f' reported by Antonio Macchi
-         <antonio_macchi@alice.it>
-
-                                  10/23
-                                  -----
-configure.in
-       - define LOCAL_LDFLAGS as `-z interpose' on Solaris 8, 9, and 10 to
-         allow the bash malloc to interpose the libc malloc when called by
-         library functions pre-bound to the libc malloc.  Suggested by
-         Serge Dussud <Serge.Dussud@Sun.COM>
-
-                                  10/26
-                                  -----
-doc/bash.1
-       - add single-sentence descriptions to rest of parameter expansions.
-         Suggested by Ken Irving <fnkci@uaf.edu>
-
-                                  10/27
-                                  -----
-subst.c
-       - rearrange code in skip_to_delims to allow quote characters and other
-         shell expansion characters to be delimiters
-       - add new flags value for inverting search: skip to the next character
-         NOT in the set of delimiters passed as an argument
-
-subst.h
-       - define for new SD_INVERT flag value for skip_to_delims
-
-                                  10/28
-                                  -----
-bashline.c
-       - new bindable functions: shell-forward-word and shell-backward-word.
-         Like forward-word and backward-word, but understand shell quoting
-         and use shell metacharacters and whitespace as delimiters.
-         Suggested by Andre Majorel <amajorel@teaser.fr>
-       - new bindable functions: shell-kill-word and shell-backward-kill-word.
-         Like kill-word and backward-kill-word, but understand shell quoting
-         and  use shell metacharacters and whitespace as delimiters.
-         Suggested by Andre Majorel <amajorel@teaser.fr>
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - documented shell-forward-word and shell-backward-word
-       - documented shell-kill-word and shell-backward-kill-word
-
-                                  11/1
-                                  ----
-redir.c
-       - add extra argument to add_undo_redirect: fdbase.  FD used to save
-         a file descriptor must be > fdbase if fdbase >= SHELL_FD_BASE.  A
-         value of -1 for fdbase means to just use SHELL_FD_BASE.  Fixes bug
-         with 0<&10 reported by Clark Jian Wang <dearvoid@gmail.com>
-
-                                  11/5
-                                  ----
-unwind_prot.c
-       - new function: have_unwind_protects(); returns 1 if unwind_protect_list
-         is not empty
-
-unwind_prot.h
-       - extern declaration for have_unwind_protects
-
-builtins/evalstring.c
-       - in parse_and_execute_cleanup, make sure that we don't call
-         run_unwind_frame and expect it to decrement parse_and_execute_level
-         if there's no unwind_protect_list, since there's a while loop in
-         throw_to_top_level that calls parse_and_execute_cleanup as long as
-         parse_and_execute_level is non-zero
-
-                                  11/9
-                                  ----
-variables.c
-       - fix the assign function for COMP_WORDBREAKS to allocate new memory
-         to store as the variable's value, to avoid freeing memory twice
-         if the variable is unset after rl_completer_word_break_characters
-         is freed and reallocated.  Fix from Mike Stroyan <mike@stroyan.net
-
-                                  11/11
-                                  -----
-bashline.c
-       - new function to reset the value of rl_completer_word_break_characters
-         while honoring setting of `hostcomplete': reset_completer_word_break_chars.
-
-bashline.h
-       - new extern declaration for reset_completer_word_break_chars.
-
-variables.c
-       - call reset_completer_word_break_chars in sv_comp_wordbreaks when the
-         variable is unset
-
-[bash-4.0-beta frozen]
-
-                                  11/16
-                                  -----
-subst.c
-       - call set_pipestatus_from_exit in exp_jump_to_top_level so that
-         failed expansions that set $? will set $PIPESTATUS.  Fixes bug
-         reported by Eric Blake <ebb9@byu.net>
-
-                                  11/20
-                                  -----
-general.c
-       - new 'file_exists(fn)' primitive; just calls stat(2)
-
-general.h
-       - new extern declaration for file_exists
-
-bashline.c
-       - add `~' to rl_filename_quote_characters so make_quoted_replacement
-         will call bash_quote_filename for words containing `~'.  Then
-         bash_quote_filename can make choices based on that
-       - change quote_word_break_chars to backslash-quote the tilde in a
-         filename with a leading tilde that exists in the current directory,
-         since we want to inhibit tilde expansion in this case
-
-execute_cmd.c
-       - call file_isdir from shell_execve instead of stat(2) directly
-
-bashhist.c
-       - use file_exists and file_isdir primitives instead of calling stat
-
-                                  11/21
-                                  -----
-redir.c
-       - When undoing saving of non-standard file descriptors (>=3) using
-         file descriptors >= SHELL_FD_BASE, we set the saving fd to be
-         close-on-exec and use a flag (RX_SAVCLEXEC) to decide how to set
-         close-on-exec when the fd is restored.  Set flag in add_undo_redirect,
-         check in do_redirection_internal.  Fixes problem reported by Andreas
-         Schwab <schwab@suse.de>
-
-                                  11/26
-                                  -----
-subst.c
-       - fix param_expand to have expansions of $@ and $* exit the shell if
-         there are no positional parameters and `set -u' is enabled.  Fixes
-         bug reported by Dan Jacobson <jidanni@jidanni.org>
-
-                                  11/27
-                                  -----
-lib/readline/display.c
-       - fix update_line to not call space_to_eol if current cursor position
-         (_rl_last_c_pos) indicates that we're already at end of line.
-         Partial fix for bug reported by Mike Frysinger <vapier@gentoo.org>
-       - in update_line, don't call insert_some_chars if that will start
-         before the last invisible character in the prompt string and not
-         draw the entire prompt string.  More of the partial fix for bug
-         reported by Mike Frysinger <vapier@gentoo.org>
-       - fix update_line to adjust _rl_last_c_pos by wrap_offset when adding
-         characters beginning before the last invisible character in the
-         prompt.  New code is same as previously existed in a different code
-         path.  Rest of fix for bug from Mike Frysinger <vapier@gentoo.org>
-       - fix assignment of newline breaks (inv_lbreaks) to correctly account
-         for prompts longer than two screen lines containing invisible
-         characters.  The assumption is that part of the invisible characters
-         are on the first line (prompt_invis_chars_first_line) and the
-         remainder are on the last (wrap_offset - prompt_invis_chars_first_line).
-         Fix is in rl_redisplay.  part of fix for bug reported by
-         "Wesley J. Landaker" <wjl@icecavern.net> in
-         http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=265182
-         [TENTATIVE]
-       - fix _rl_move_cursor_relative to correctly offset `dpos' by `woff'
-         when there are invisible characters on lines after the second by
-         using (_rl_screenwidth*_rl_last_v_pos) when seeing whether or not
-         we just wrote some invisible characters.  Rest of fix for bug
-         reported in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=265182
-         [TENTATIVE]
-
-                                  12/11
-                                  -----
-sig.c
-       - reset the execution context before running the exit trap in
-         termsig_handler
-
-general.c
-       - set and unset terminate_immediately like interrupt_immediately in
-         bash_tilde_expand
-
-builtins/read.def
-       - change terminate_immediately to a counter instead of a flag, as
-         interrupt_immediately is used
-
-lib/readline/display.c
-       - slight change to fix from 11/27 to deal with prompts longer than a
-         screen line where the invisible characters all appear after the
-         line wrap.  Fixes bug reported by Andreas Schwab <schwab@suse.de>
-
-builtins/{echo,printf}.def
-       - increment terminate_immediately at entry; decrement before returning.
-         Fix for bug reported by Ralf.Wildenhues@gmx.de
-
-                                  12/16
-                                  -----
-subst.c
-       - fix off-by-one error in /dev/fd version of add_fifo_list; make
-         sure we add to totfds when it is == fd, not just when fd > totfds.
-         Fixes bug reported by marciso@gmail.com
-
-[bash-4.0-beta2 frozen]
-
-                                  12/29
-                                  -----
-doc/{bash.1,bashref.texi}
-       - document more clearly that when not in Posix mode, command
-         substitution does not inherit the -e option.  From bug report from
-         Freddy Vulto <fvulto@gmail.com>
-
-{execute_cmd,sig,builtins/evalstring}.c
-       - sentinel variable to keep track of whether or not we're supposed to
-         ignore the failure status of a command executed in a command
-         substitution even if the `-e' option is set: comsub_ignore_return
-       - increment and decrement comsub_ignore_return in execute_simple_command
-         before calling expand_words
-       - in parse_and_execute, if comsub_ignore_return is non-zero and the
-         SUBSHELL_COMSUB bit is set in subshell_environment, enable the
-         CMD_IGNORE_RETURN flag in every command executed from the passed
-         string.  Fixes problem reported by Freddy Vulto <fvulto@gmail.com>
-       - make sure to reset comsub_ignore_return every time we throw to the
-         top level, like executing_list flag
-
-                                1/2/2009
-                                --------
-parse.y
-       - fix to rewind_input_stream to handle case of $(...) command
-         substitution followed by a quoted literal newline.  Report and fix
-         from Andreas Schwab <schwab@suse.de>
-
-                                   1/7
-                                   ---
-
-subst.c
-       - fix match_wpattern and match_upattern to prefix a `*' to the
-         pattern even if it starts with a `*(' (if extglob is enabled)
-         before checking whether or not it can match anywhere in the
-         string.  Fixes bug reported by os@sernet.de.
-
-[bash-4.0-rc1 frozen]
-
-                                   1/9
-                                   ---
-locale.c
-       - since setlocale() doesn't set errno to anything meaningful,
-         don't include the strerror() result in the error message if
-         it fails
-       - make sure the error messages printed when setlocale fails are
-         localizable
-
-                                  1/11
-                                  ----
-lib/readline/histexpand.c
-       - make sure that every time history_no_expand_chars is tested, we
-         also call the history_inhibit_expansion_function if it's set.
-         Fixes bug reported by Yang Zhang <yanghatespam@gmail.com>
-
-                                  1/12
-                                  ----
-trap.c
-       - make sure to call parse_and_execute with the SEVAL_RESETLINE bit
-         set in the flags so it will reset the line number when running
-         the trap commands.  Partial fix for bug reported by
-         peter360@fastmail.us
-
-                                  1/14
-                                  ----
-builtins/reserved.def
-       - document `coproc' so it can be used with `help' builtin.  Pointed
-         out by Pierre Gaston <pgas@freeshell.org>
-
-lib/sh/casemod.c
-       - added two new flags: CASE_UPFIRST and CASE_LOWFIRST to casemod
-         the first character of the passed string and pass the rest
-         through unchanged.  Fixes bug reported by Jan Schampera
-         <jan.schampera@web.de>
-
-externs.h
-       - new defines for CASE_UPFIRST and CASE_LOWFIRST
-
-subst.c
-       - use CASE_UPFIRST for ^ and CASE_LOWFIRST for , casemod operators
-
-builtins/mapfile.def
-       - call zreset() before calling first zgetline(), to clean out any
-         remaining data in local buffer used by zreadc.  Fixes bug
-         reported by Pierre Gaston <pierre.gaston@gmail.com>
-
-                                  1/15
-                                  ----
-lib/sh/zread.c
-       - renamed zreadintr to zreadretry -- not perfect, but better
-       - new functions: zreadintr, which just calls read so it can be
-         interruptible, and zreadcintr, which is like zreadc but uses
-         zreadintr to fill the buffer
-
-lib/sh/zgetline.c
-       - in zgetline, when zread/zreadc return <= 0, make sure line is
-         non-null before assigning to line[nr]
-
-builtins/mapfile.def
-       - return an error right away if the supplied array variable name
-         refers to a readonly or noassign array
-       - set interrupt_immediately so calls to zgetline can be
-         interrupted.  Fixes bug reported by Pierre Gaston
-         <pierre.gaston@gmail.com>
-       - if interactive, pass the SEVAL_INTERACT and SEVAL_NOHIST flags
-         to parse_and_execute when calling callbacks.  Fixes bug reported
-         by Pierre Gaston <pierre.gaston@gmail.com>
-       - add `readarray' as a synonym for mapfile
-
-doc/{bash.1,bashref.texi}
-       - document behavior of mapfile builtin adding index of array element
-         to be assigned as additional argument to callback string.  Reported
-         by Pierre Gaston <pierre.gaston@gmail.com>
-       - document readarray as synonym for mapfile
-
-builtins/common.c
-       - new error function, sh_ttyerror(set), prints an error message having
-         to do with setting or getting terminal attributes
-
-builtins/read.def
-       - print error message if read fails to set terminal attributes
-
-                                  1/16
-                                  ----
-execute_cmd.c
-       - new function, coproc_reap, calls coproc_dispose if sh_coproc is
-         marked as COPROC_DEAD
-       - new function, cpl_reap, disposes coprocs marked as COPROC_DEAD
-         from coproc list
-       - change coproc_pidchk to just mark the coproc as dead instead of
-         calling coproc_dispose, so we don't call unsafe functions from
-         a signal handler.  Fixes bug reported by Andreas Schwab
-         <schwab@suse.de>
-
-execute_cmd.h
-       - new extern declaration for coproc_reap
-
-command.h
-       - new flags for c_flags member of a struct coproc
-
-{jobs,nojobs}.c
-       - add call to coproc_reap in cleanup_dead_jobs, which will do the
-         right queueing or blocking of SIGCHLD
-
-trap.c
-       - modify change from 1/12 to not reset the line number when running
-         the DEBUG and RETURN traps
-
-                                  1/18
-                                  ----
-lib/sh/casemod.c
-       - change default operations to work on entire passed string instead
-         of breaking into words at non-alpha-numerics.  Use new
-         CASE_USEWORDS flag to enable by-word behavior.  Fixes bug reported
-         by Jan Schampera <jan.schampera@web.de>
-
-builtins/printf.def
-       - in vbprintf, bracket each call to vsnprintf (which uses the args
-         passed to vbprintf) with SH_VA_START and va_end, so we can
-         reninitialize the argument list for each call.  This is actually
-         what the C standard requires.  Fixes bug that caused printf -b
-         to `ignore' first % format specifier if it came first in the
-         string.  Reported by David Leverton <levertond@googlemail.com>
-
-builtins/mapfile.def
-       - start the line count at 1, since it doesn't get incremented before
-         (or after) reading the first line, so things like
-         `mapfile -n 5 -c 1 -C 'echo foo' array < file' work right and call
-         the callback after the first line is read.  Fixes bug reported by
-         Pierre Gaston <pierre.gaston@gmail.com>
-
-                                  1/22
-                                  ----
-lib/readline/complete.c
-       - set _rl_interrupt_immediately non-zero before reading from the file
-         system or calling an application-defined completion function
-
-lib/readline/signals.c
-       - renamed rl_signal_handler to _rl_handle_signal; new version of
-         rl_signal_handler that just calls _rl_handle_signal (for now)
-       - new function _rl_signal_handler that calls _rl_handle_signal without
-         any checking
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_signal_handler
-       - new define, RL_CHECK_SIGNALS, checks whether or not _rl_caught_signal
-         is set and calls _rl_signal_handler if so
-
-lib/readline/{bind,input,readline}.c
-       - add RL_CHECK_SIGNALS in appropriate places
-
-lib/readline/signals.c
-       - change rl_signal_handler to set a flag and return rather than
-         run through the entire signal handling process.  If
-         _rl_interrupt_immediately is set, call the signal handling code
-         right away instead of setting the flag.  Initial fix for crash
-         bug reported by Roman Rakus <rrakus@redhat.com>
-
-aclocal.m4
-       - new macro, BASH_TYPE_SIG_ATOMIC_T, tests for sig_atomic_t in
-         <signal.h>, defines as int if not defined
-
-configure.in
-       - call BASH_TYPE_SIG_ATOMIC_T
-       - call AC_C_VOLATILE
-
-config.h.in
-       - empty define for sig_atomic_t
-       - empty define for volatile
-
-                                  1/27
-                                  ----
-subst.c
-       - audit calls to add_character and change to add_ifs_character (which
-         quotes characters in $IFS).  Affects primarily `:', `=', and `~'.
-         Fixes bug reported by Jan Schampera <jan.schampera@web.de>; fix
-         suggested by Stephane Chazelas <stephane_chazelas@yahoo.fr>
-
-                                   2/1
-                                   ---
-configure.in
-       - call AC_C_RESTRICT
-
-config.h.in
-       - add empty defintion for `restrict'
-
-pcomplete.c
-       - use unwind_protects around call to execute_shell_function in
-         gen_shell_function_matches to prevent data corruption if
-         throw_to_top_level is called.  Bug report and fix from
-         werner@suse.de.
-
-execute_cmd.c
-       - don't clamp CPU usage at 100% in print_formatted_time.  Bug reported
-         by Linda Walsh <bash@tlinx.org>
-
-                                   2/5
-                                   ---
-locale.c
-       - in set_locale_var, set errno to 0 before calling setlocale(), and
-         print strerror (errno) if setlocale fails and errno ends up non-zero
-
-                                   2/6
-                                   ---
-configure.in
-       - backed out of solaris change from 10/23/2008 (adding `-z interpose'
-         to LDFLAGS) due to solaris updates to fix a linker problem.
-         Updatted by Serge Dussud <Serge.Dussud@Sun.COM>
-
-                                  2/12
-                                  ----
-execute_cmd.c
-       - change execute_connection so failure of a pipeline will cause the
-         shell to exit if -e is on.  From discussion on austin-group
-         mailing list
-       - change execute_command_internal so failure of a user-specified
-         subshell will cause the shell to exit if -e is on.  From discussion
-         on austin-group mailing list
-
-                                  2/13
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarified description of set -e option to accurately reflect current
-         implementation
-
-                                  2/19
-                                  ----
-print_cmd.c
-       - fix print_deferred_heredocs to not print a space if the separator
-         string is null
-       - change print_deferred_heredocs to set `was_heredoc' after printing
-         something
-       - change connection printing code to only print the `;' separator
-         if we haven't just printed a here-document
-       - change connection printing code to print any deferred here
-         documents after the rhs of the connection.  Fixes bug reported by
-         Bo Andresen <bo.andresen@zlin.dk>
-
-[bash-4.0 frozen]
-
-                                  2/20
-                                  ----
-
-[bash-4.0 released]
-
-                                  2/22
-                                  ----
-
-parse.y
-       - fix parse_comsub to not test a character for being a possible shell
-         metacharacter if LEX_PASSNEXT flag is set.  Fixes bug reported by
-         Mike Frysinger <vapier@gentoo.org>
-
-pcomplete.c
-       - add call to save_parser_state (accidentally dropped from patch) to
-         gen_shell_function_matches.  Fixes bug with bash_completion and
-         file/directory completion reported by phil@Arcturus.universe
-
-Makefile.in
-       - fix assignment to LDFLAGS_FOR_BUILD to match those in subdir
-         Makefiles.  Fixes bug reported by Mike Frysinger <vapier@gentoo.org>
-
-builtins/mapfile.def
-       - make sure the callback quantum (-c option argument) is > 0.  Fixes
-         bug reported by Stephane Chazleas <stephane_chazelas@yahoo.fr>
-
-                                  2/23
-                                  ----
-parse.y
-       - fix save_token_state and restore_token_state to save and restore
-         current_token.  Fixes bug reported by Bernd Eggink
-         <monoped@sudrala.de>
-
-builtins/exit.def
-       - check jobs[i] before checking whether or not it's running when
-         the checkjobs option is set and we're looking for running jobs
-         at exit.  Fixes bug reported by Mike Frysinger <vapier@gentoo.org>
-
-                                  2/24
-                                  ----
-siglist.c
-       - include bashintl.h for definition of _.  Fixes bug reported by
-         Greg Wooledge <wooledg@eeg.ccf.org>
-
-                                  2/25
-                                  ----
-subst.c
-       - new function, skip_matched_pair.  Similar to skip_to_delim and
-         the extract_XXX family
-       - move skipsubscript here from arrayfunc.c; re-implement in terms of
-         skip_matched_pair.  Fixes bugs reported by <anmaster@tele2.se>
-
-arrayfunc.c
-       - remove skipsubscript; moved to subst.c
-
-parse.y
-       - change reset_parser to set current_token to '\n'.  Rest of fix for
-         bug reported by Bernd Eggink <monoped@sudrala.de>; earlier fix on
-         2/23
-
-                                  2/26
-                                  ----
-builtins/declare.def
-       - when given something like array[x]=y (which sets making_array_special
-         to 1), don't convert an associative array to an indexed array (line
-         493).  Part of fix for bug reported by Pierre Gaston
-         <pierre.gaston@gmail.com>
-       - if offset == 0, indicating that we do not have a valid assignment,
-         make sure any `name' containing a `[' is a valid array reference
-         before trying to go on.  Not doing this leads to creating crazy
-         variables like `name[foo[bar]=bax'.  Rest of fix for bug reported
-         by Pierre Gaston <pierre.gaston@gmail.com>
-
-assoc.c
-       - change assoc_to_assign to single-quote the array keys if `quoted' is
-         non-zero.  Makes things easier to read with weird characters in the
-         key
-
-parse.y
-       - fix parse_comsub to not set LEX_HEREDELIM when it sees "<<<".  Fixes
-         bug reported by Mike Frysinger <vapier@gentoo.org>
-
-                                  2/27
-                                  ----
-parse.y
-       - fix report_syntax_error to set last_command_exit_value to
-         EX_BADUSAGE (2) instead of EX_USAGE (258), since there's nothing
-         that will translate that to something < 128 before reading the
-         next command.  Partial fix for bug reported by Mike Frysinger
-         <vapier@gentoo.org>
-
-sig.c
-       - fix sigint_sighandler to set last_command_exit_value to sig+128
-         before calling throw_to_top_level.  Rest of fix for bug reported
-         by Mike Frysinger <vapier@gentoo.org>
-
-jobs.c
-       - if fork() fails, set last_command_exit_value to 126 before calling
-         throw_to_top_level
-
-execute_cmd.c
-       - defer calling unlink_fifo_list in parent branch of
-         execute_disk_command if we're executing in a shell function
-       - change execute_function to call unlink_fifo_list before returning
-         if it's the top-level function
-
-                                   3/2
-                                   ---
-builtins/read.def
-       - if read times out, make sure we remove the top element from the
-         unwind-protect stack (the free of input_string) and run the rest,
-         to reset the tty and readline and alarm states.  Then we jump to
-         assigning the variables to any partial input.  Fixes bug reported
-         by Christopher F. A. Johnson <cfajohnson@gmail.com>
-
-                                   3/3
-                                   ---
-parse.y
-       - break comment checking code into a common COMMENT_BEGIN define so
-         we can use it in multiple places in parse_comsub
-       - in parse_comsub, don't alter the LEX_RESWDOK flag if we read a
-         `#' and we're checking comments, even though `#' isn't a `shell break'
-         character.  Fixes bug reported by Mike Frysinger  <vapier@gentoo.org>
-
-braces.c
-       - in expand_seqterm, decrease the total length of the rhs by the length
-         of any (optional) increment, so we don't end up with unwanted zero
-         padding because the rhs length is wrong.  Fixes bug reported by
-         Carl Albing <albing@comcast.net>
-
-                                   3/4
-                                   ---
-doc/{bash.1,bashref.texi}
-       - changes to clean up some of the language describing the effects of
-         terminal process groups on the ability to read from and write to
-         the terminal
-
-                                   3/5
-                                   ---
-support/shobj-conf
-       - add host_vendor to string tested in switch to handle things like
-         gentoo/freebsd
-       - beginning with version 7, FreeBSD no longer has /usr/bin/objformat
-         or a.out binaries and libraries.  It's always ELF.  Fix from
-         Timothy Redaelli <drizzt@gentoo.org>
-
-parse.y
-       - in parse_comsub, allow comments if we are ready to read a
-         reserved word (tflags & LEX_RESWDOK), haven't read anything from
-         one yet (lex_rwlen == 0) and the current character is a '#'
-
-                                   3/6
-                                   ---
-parse.y
-       - new lex flag for parse_comsub: LEX_INWORD.  Turn it off when
-         we see a shell break character; turn it on or keep it on when
-         not a break character.  Keep track of word length (reset to 0
-         when we turn on LEX_INWORD when it was off).
-       - don't use COMMENT_BEGIN in parse_comsub any more; test
-         whether or not LEX_INWORD is set and lex_wlen == 0 in addition
-         to tests for LEX_RESWDOK and lex_rwlen.  Comments are valid
-         when at the start of a word
-       - move LEX_PASSNEXT code to the top of parse_comsub, so the rest
-         of the function doesn't have to check for the flag at different
-         places
-
-                                   3/7
-                                   ---
-parse.y
-       - in parse_comsub, when looking for a reserved word (LEX_RESWDOK
-         non-zero), and in a case statement, we can see either an esac
-         or a pattern list.  We handle an esac separately.  We should
-         turn off LEX_RESWDOK if we see anything but a newline, since
-         we'll be reading a pattern list.  Other part of fix for bug
-         reported by Mike Frysinger <vapier@gentoo.org> (rest of fix
-         on 3/3)
-
-                                  3/10
-                                  ----
-{.,lib/readline}/doc/fdl.texi
-       - updated to FDL version 1.3
-
-                                  3/11
-                                  ----
-parse.y
-       - when using the |& construct with a simple command preceding it, add
-         the implicit redirection to the simple command's redirection list,
-         since the redirections associated with the command struct are never
-         executed.  Fixes bug reported by Matt Zyzik <Matt@ice.filescope.com>
-
-                                  3/14
-                                  ----
-execute_cmd.c
-       - in execute_case_command, if ;& is used with no following pattern
-         list, make sure we don't reference a NULL pointer.  Bug report and
-         fix from Clark Jian Wang <dearvoid@gmail.com>
-
-parse.y
-       - make parser_state global, so other files can use it
-       - command_word_acceptable now returns non-zero if PST_REDIRLIST bit
-         set in parser_state, so we accept assignment statements and
-         perform alias expansion.  Fix for bug reported by Vincent
-         Lefevre <vincent@vinc17.org> (2/24/2009)
-
-parser.h
-       - add PST_REDIRLIST flag, notes that parser is currently parsing a
-         redirection list preceding a simple command
-
-make_cmd.c
-       - make_simple_command now turns on PST_REDIRLIST in parser_state when
-         creating a new simple command
-       - make_simple_command turns off PST_REDIRLIST in parser_state if it
-         adds a non-redirection to the command it's building
-       - clean_simple_command turns off PST_REDIRLIST to make sure it's off
-
-subst.c
-       - new flag for param_expand: PF_IGNUNBOUND, means to not exit if the
-         variable is unbound even if `set -u' is enabled
-       - change param_expand to not call err_unboundvar if the `pflags'
-         argument has the PF_IGNUNBOUND bit set
-       - parameter_brace_expand_word now takes an extra `pflags' argument to
-         pass down to param_expand; changed callers
-       - changed call to parameter_brace_expand_word in parameter_brace_expand
-         to add PF_IGNUNBOUND flag so ${@:-foo} doesn't cause the shell to
-         exit (but ${@} does) when there are no positional parameters.  Fixes  
-         Debian bug 519165 from Dan Jacobson <jidanni@jidanni.org>
-
-parse.y
-       - add code to parse_comsub to allow here-documents within command
-         substitutions to be delimited by the closing right paren, with the
-         usual warning about here documents delimited by EOF on execution.
-         Fixes regression from bash-3.2 noted in Red Hat bugzilla 485664 by
-         Ralf Corsepius
-
-                                  3/15
-                                  ----
-subst.c
-       - string_list_dollar_at now checks for Q_PATQUOTE, which getpattern()
-         uses to denote Q_DOUBLE_QUOTES (?).  Fixes a=abcd echo "${a#$*}"
-         when IFS= and args are `a b' as noted by Stephane Chazleas
-         <stephane_chazelas@yahoo.fr>
-       - param_expand now checks for Q_PATQUOTE and treats it identically
-         to Q_DOUBLE_QUOTES when expanding $*
-       - expand_word_unsplit now sets W_NOSPLIT in the flags of the word it
-         passes to expand_word_internal if $IFS is NULL
-       - expand_word_leave_quoted now sets expand_no_split_dollar_star and
-         the W_NOSPLIT bit in the word flags before calling
-         expand_word_internal if $IFS is NULL, just like expand_word_unsplit.
-         It is now virtually identical to expand_word_unsplit.  Rest of fix for
-         problems reported by Stephane Chazleas <stephane_chazelas@yahoo.fr>
-
-                                  3/20
-                                  ----
-trap.c
-       - in _run_trap_internal, don't pass SEVAL_RESETLINE as flag to
-         parse_and_execute if running the ERR trap (further modification
-         of change from 1/12)
-
-execute_cmd.c
-       - in execute_simple_command, set line_number to line_number_for_err_trap
-         before calling run_error_trap.  Part of fix for bug reported by
-         Brian J. Murrell <brian@interlinx.bc.ca>
-       - change other places calling run_error_trap() to set and use
-         line_number_for_err_trap
-
-                                  3/21
-                                  ----
-builtins/fc.def
-       - Even though command substitution through parse_and_execute turns 
-         off remember_on_history, command substitution in a shell when
-         set -o history has been enabled (interactive or not) should use it
-         in the last_hist calculation as if it were on.  Same calculation
-         in fc_gethnum and fc_builtin.  Fixes bug reported by
-         Ian Kelling <smallnow@gmail.com> 
-
-sig.c
-       - change termsig_sighandler to terminate immediately if it gets called
-         twice with the same signal before termsig_handler gets called.  This
-         fixes the `looping on SIGSEGV' phenomenon reported by Linux users.
-
-parse.y
-       - in read_secondary_line, don't try to add NULL lines to the history
-         list.  Report and patch from Lubomir Rintel <lkundrak@v3.sk>
-
-                                  3/22
-                                  ----
-sig.c
-       - Augment change from 3/21 with explicit check for signals we *don't*
-         want this to happen for.  Patch from Lubomir Rintel <lkundrak@v3.sk>
-
-                                  3/28
-                                  ----
-array.c
-       - in array_reference, return NULL immediately if the desired index
-         is larger than the maximum
-       - add cache of last array referenced and last array element referenced;
-         use in array_reference to optimize case of sequential access;
-         invalidated where necessary in other functions
-       - array_rshift needs to set max_index to 0 if the array was empty
-         before shifting in the new element 0
-       - array_shift needs to use element_index(a->head->prev) to set the
-         max_index, not a simple decrement, to deal with sparse arrays
-
-                                   4/1
-                                   ---
-bashline.c
-       - in bash_dequote_filename, return right away after copying the
-         backslash if the last character in the string to be expanded
-         is a backslash.  The old code copied an extra NUL and overwrote
-         the bounds checking.  Fixes bug reported by Shawn Starr
-         https://bugzilla.redhat.com/show_bug.cgi?id=488649
-
-                                   4/3
-                                   ---
-subst.c
-       - in pat_subst.c, make sure to copy one character from the input
-         string in the case of a null pattern match, since we substitute
-         on the null match and then increment past the current character.
-         Not doing this means that each character of the original string
-         is replaced because of the null matches.  Fixes debian bug
-         reported bhy Louis-David Mitterrand <ldm@apartia.fr>
-         http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=522160
-
-lib/sh/winsize.c
-       - incorporate contents of readline/rlwinsize.h to get all the various
-         system dependencies right when trying to find TIOCGWINSZ.  Fixes
-         bug reported by Dan Price <dp@eng.sun.com>
-
-                                   4/6
-                                   ---
-doc/{bash.1,bashref.texi}
-       - fix description of conditional `>' and `<' to remove statement that
-         the comparison pays attention to the current locale -- it has
-         always used strcmp
-
-lib/glob/glob.c
-       - fixed a bug in glob_filename that caused glob_dir_to_array to be
-         called to prepend a (globbed) directory name onto the results from
-         glob_vector, which, if we were globbing `**', glob_vector has
-         already done.  Effect is to have the directory name(s) on there
-         twice.  Fixes "dir*/**" bug reported by Matt Zyzik
-         <Matt@ice.filescope.com>
-
-                                   4/8
-                                   ---
-doc/{bash.1,bashref.texi}
-       - fix short syntax summary of for command to reflect full bash
-         syntax (which is a superset of Posix syntax).  Fixes bug reported
-         by Reuben Thomas <rrt@sc3d.org>
-
-                                  4/10
-                                  ----
-{expr,subst}.c
-       - make sure last_command_exit_value is set to EXECUTION_FAILURE
-         before calling err_unboundvar, in case set -e is enabled and
-         the shell exits from there.  Fixes bug reported by Freddy
-         Vulto <fvulto@gmail.com> and Piotr Zielinski
-         <piotr.zielinski@gmail.com>
-
-                                  4/11
-                                  ----
-jobs.c
-       - in restore_pipeline, don't call discard_pipeline with a NULL
-         argument
-
-trap.c
-       - in run_debug_trap, make sure to save and restore the pipeline,
-         pipeline_pgrp, and state of the pipeline around running the debug
-         trap, then remove any job created by running the debug trap from
-         the jobs table when it completes.  Fixes for two bugs reported
-         by lex@upc.ua
-
-                                  4/12
-                                  ----
-lib/readline/signals.c
-       - new functions to block and release SIGWINCH like the SIGINT blocking
-         and releasing functions
-
-lib/readline/rlprivate.h
-       - new extern declarations for _rl_block_sigwinch and _rl_release_sigwinch
-
-lib/readline/display.c
-       - block SIGWINCH during redisplay like SIGINT.  Should fix bug reported
-         by Nicolai Lissner <nlissne@linux01.org>
-
-                                  4/13
-                                  ----
-lib/readline/readline.h
-       - new readline state variable: RL_STATE_REDISPLAYING
-
-lib/readline/display.c
-       - in rl_redisplay, don't block SIGWINCH during redisplay; just set
-         the REDISPLAYING state
-
-lib/readline/terminal.c
-       - in rl_resize_terminal, don't call rl_redisplay_after_sigwinch() if
-         we're already in the middle of redisplay (RL_STATE_REDISPLAYING).
-         Fix for bug reported by Nicolai Lissner <nlissne@linux01.org>
-
-                                  4/15
-                                  ----
-parse.y
-       - fix parse_comsub to add check for \n when seeing whether the current
-         character can change to a state where a reserved word is legal,
-         since it is not a shell meta character.  Fixes bug reported by
-         Bernd Eggink <monoped@sudrala.de>.
-
-                                  4/17
-                                  ----
-jobs.c
-       - new functions to save and restore the pgrp_pipe (since there's only
-         one): save_pgrp_pipe and restore_pgrp_pipe
-
-trap.c
-       - run_debug_trap now saves and restores the pgrp_pipe before and
-         after calling the debug trap
-       - run_debug_trap now makes sure the terminal is owned by the pipeline
-         pgrp after the debug trap runs.  Rest of fix for bug reported by
-         Oleksly Melnyk <o.melnyk@upc.ua> (lex@upc.ca)
-
-                                  4/19
-                                  ----
-include/posixselect.h
-       - new include file, encapsulates select(2) includes and defines for
-         bash and readline.  Inspired by patch from Mike Frysinger
-         <vapier@gentoo.org>
-
-lib/sh/input_avail.c
-        - include "posixselect.h"
-
-lib/readline/{input,parens}.c
-       - include "posixselect.h" instead of using inline includes
-       - use new USEC_TO_TIMEVAL define to make sure that values for timeouts
-         greater than one second are handled properly
-
-lib/sh/fpurge.c
-       - updated implementation, taken from gnulib
-
-                                  4/21
-                                  ----
-lib/glob/glob.c
-       - in finddirs, don't try to free a return value of glob_error_return
-         from glob_vector.  Bug and fix from werner@suse.de
-
-lib/readline/signals.c
-       - in rl_echo_signal_char, check that SIGQUIT and SIGTSTP are defined
-         before trying to use them.  Bug report and fix from Volker Grabsch
-         <vog@notjusthosting.com>
-
-                                  4/24
-                                  ----
-aclocal.m4
-       - add conditional inclusion of <stdint.h> to BASH_CHECK_TYPE
-
-bashtypes.h,lib/sh/strto[iu]max.c
-       - include <stdint.h> if present for any existing declaration of
-         intmax_t and uintmax_t.  Fixes Interix problem reported by
-         Markus Duft <mduft@gentoo.org>
-
-lib/sh/strindex.c,externs.h,builtins/common.h
-       - renamed strindex to strcasestr to agree with other implementations
-         (e.g., BSD, MacOS X, gnulib); changed callers
-
-lib/sh/{strindex.c,Makefile.in},Makefile.in
-       - renamed strindex.c to strcasestr.c
-
-configure.in
-       - add strcasestr to call to AC_REPLACE_FUNCS, take advantage of
-         existing libc implementations
-
-config.h.in
-       - add define for HAVE_STRCASESTR
-
-lib/sh/mbscmp.c
-       - fix mbscmp to return correct values when the strings do not contain
-         valid multibyte characters.  Ideas from gnulib
-
-xstrchr.c
-       - only compare current character against C if mblength == 1
-
-{shell,variables}.c
-       - changed some xstrchr calls back to strchr when the arguments cannot
-         contain multibyte characters
-
-lib/sh/{xstrchr.c,Makefile.in},Makefile.in
-       - renamed xstrchr to mbschr; renamed file to mbschr.c
-
-aclocal.m4
-       - change BASH_CHECK_MULTIBYTE to use AC_REPLACE_FUNCS(mbschr)
-
-externs.h
-       - extern declarations for mbscmp and mbschr, conditional on the usual
-         HAVE_MBSCMP and HAVE_MBSCHR defines
-
-general.h,{alias,arrayfunc,bashline,general,execute_cmd,subst}.c
-       - changed calls to xstrchr to mbschr
-
-doc/bash.1
-       - use `pathname expansion' consistently, not `filename expansion' or
-         `filename generation'
-
-doc/bashref.texi
-       - use the phrase `filename expansion' consistently (since this is
-         what the Gnu people prefer) instead of `pathname expansion' or
-         `filename generation'
-
-aclocal.m4,config.h.in
-       - check for mbscasecmp in BASH_CHECK_MULTIBYTE, define HAVE_MBSCASECMP
-         if found
-
-lib/sh/{mbscasecmp.c,Makefile.in}
-       - new file, case-insensitive multibyte string comparison
-
-externs.h
-       - extern declaration for mbscasecmp
-
-                                  4/25
-                                  ----
-lib/readline/display.c
-       - in _rl_move_cursor_relative, don't adjust dpos by woff if it's
-         already less than woff (don't want it less than 0)
-       - in _rl_move_cursor_relative, short-circuit right away if the cursor
-         is at columns 0 and `new' is 0 (doesn't matter if it's a multibyte
-         locale or not, or whether there are invisible chars in the prompt)
-       - in _rl_move_cursor_relative, go ahead and adjust dpos if
-         prompt_physical_chars >= _rl_screenwidth (previous check was just > )
-         Fixes bug reported by Andreas Schwab <schwab@linux-m68k.org>
-
-                                  4/28
-                                  ----
-lib/glob/glob.c
-       - in glob_vector, don't add an empty pathname ("") if we're adding the
-         currect directory to the dirlist and GX_NULLDIR is set -- we can just
-         ignore it, since the passed directory name (".") was created by
-         the caller.  Fixes bug reported by Matt Zyzik <matt.zyzik@nyu.edu>
-
-                                   5/5
-                                   ---
-subst.c
-       - make expansion of $@ and $* when set -u is in effect and there are
-         no positional parameters be a non-fatal error.  This is the
-         consensus of the austin group, though it is not historical practice.
-         Message from Geoff Clare <20090505091501.GA10097@squonk.masqnet> of
-         5 May 2009 and http://austingroupbugs.net/view.php?id=155
-
-
-                                  5/20
-                                  ----
-lib/glob/glob.c
-       - tentative fix to glob_filename to compensate for glob_vector putting
-         null pathname at front of result vector when dflags&GX_NULLDIR.
-         Current fix manually removes empty string element from front of
-         result vector; a better fix would be to use a flag so glob_vector
-         doesn't add it at all.  Augments patch from 4/28, which appears to
-         have broken some things.  Fixes bug reported by Matt Zyzik
-         <matt.zyzik@nyu.edu>
-
-                                  5/22
-                                  ----
-
-lib/glob/glob.c
-       - better fix for glob_filename; supersedes patch of 5/20.  Now the
-         code does not set GX_ADDCURDIR if directory_len == 0 and the
-         function has not been called recursively ((flags & GX_ALLDIRS) == 0).
-         Better fix for bug reported by Matt Zyzik <matt.zyzik@nyu.edu>
-
-Makefile.in
-       - fix build race condition that occurs in some makes caused by
-         libreadline.a and libhistory.a containing some of the same files
-         (e.g., xmalloc.o) and conflicting when trying to build both at
-         the same time.  Reported by Mike Frysinger <vapier@gentoo.org>
-
-                                  5/25
-                                  ----
-lib/readline/vi_mode.c
-       - fix _rl_vi_initialize_line so that the loop counter is not
-         unsigned (it doesn't matter, but it eliminates a compiler warning).
-         Bug reported by Dave Caroline <dave.thearchivist@gmail.com>
-
-                                  5/26
-                                  ----
-doc/{bash.1,bashref.texi}
-       - add text to the description of array variables making it clear
-         that an array variable is not considered set until a subscript
-         has been assigned a value
-
-                                  5/29
-                                  ----
-lib/readline/text.c
-       - fix rl_change_case to handle case where mbrtowc doesn't find a
-         valid multibyte character
-
-lib/readline/vi_mode.c
-       - fix _rl_vi_change_mbchar_case to handle case where mbrtowc doesn't
-         find a valid multibyte character
-
-lib/sh/casemod.c
-       - fix sh_modcase to handle case where mbrtowc doesn't find a valid
-         multibyte character
-
-lib/readline/mbutil.c
-       - fix _rl_find_next_mbchar_internal to not call mbrtowc at the end of
-         the string, since implementations return different values -- just
-         break the loop immediately
-
-lib/readline/display.c
-       - fix rl_redisplay to make same sort of cursor position adjustments
-         based on multibyte locale and _rl_last_c_pos when performing
-         horizontal scrolling rather than line wrapping.  Probably still
-         more to do.  Fixes bug reported by jim@jim.sh
-
-                                   6/5
-                                   ---
-doc/{bash.1,bashref.texi}
-       - added some more explanation of the inheritance of the ERR trap at
-         the suggestion of Thomas Pospisek <tpo@sourcepole.ch>
-
-findcmd.c
-       - use eaccess(2) if available in file_status to take other file
-         access mechanisms such as ACLs into account.  Patch supplied
-         by werner@suse.de
-
-                                  6/12
-                                  ----
-xmalloc.c
-       - also calculate lowest brk() value the first time xmalloc/xrealloc
-         (and their sh_ counterparts) are called
-       - error messages consolidated into a single function (allocerr/
-         sh_allocerr) to avoid string duplication
-
-                                  6/16
-                                  ----
-variables.c
-       - changes to allow variables.c to be compiled if ALIAS is not defined.
-         Bug and fix from John Gatewood Ham <uraphalinuxserver@gmail.com>
-
-lib/sh/getcwd.c
-       - fix so systems defining BROKEN_DIRENT_D_INO have the necessary
-         defines.  Fix from Jay Krell <jay.krell@cornell.edu>
-
-configure.in
-       - add -D_ALL_SOURCE to interix CFLAGS for struct timezone definition.
-         Bug and fix from John Gatewood Ham <uraphalinuxserver@gmail.com>
-
-                                  6/29
-                                  ----
-variables.c
-       - change initialize_shell_variables to add environment variables with
-         invalid names to the variables hash table, but marking them as
-         invisible and imported
-       - new function, export_environment_candidate.  Used when creating the
-         export environment for commands to include variables with invalid
-         names inherited from the initial environment.  Apparently this
-         behavior is widespread
-       - change make_var_export_array to use export_environment_candidate
-         rather than visible_and_exported to test variables for inclusion
-         in the export environment
-
-                                   7/1
-                                   ---
-builtins/read.def
-       - fix a memory leak where the number of fields is not the same as
-         the number of variables passed to `read'.  Bug report from
-         werner@suse.de
-
-builtins/command.def
-       - move section of code that sets PATH from -p option before the
-         verbose-handling section, so command -v and command -V honor
-         the PATH set by command -p.  Bug report and fix from
-         ohki@gssm.otsuka.tsukuba.ac.jp
-
-                                   7/9
-                                   ---
-subst.c
-       - change brace_expand_word_list to defer brace expansion on compound
-         array assignments that are arguments to builtins like `declare',
-         deferring the expansion until the assignment statement is processed.
-         Fixes inconsistency reported by agriffis@n01se.net
-
-                                  7/16
-                                  ----
-bashline.c
-       - fix bash_execute_unix_command to set rl_point correctly based on
-         READLINE_POINT.  The old method of using save_point will not
-         work because maybe_make_readline_line will change rl_point.  Bug
-         reported by Henning Bekel <h.bekel@googlemail.com>
-
-trap.c
-       - fix _run_trap_internal and run_pending_traps to save and restore
-         value of subst_assign_varlist so the dispose_words on it doesn't
-         leave dangling pointers after the trap handler runs.  Fixes bug
-         reported by Marc Herbert <marc.herbert@gmail.com>
-
-                                  7/22
-                                  ----
-subst.c
-       - fix off-by-one error in pos_params when computing positional
-         parameters beginning with index 0.  Bug and fix from Isaac Good
-         <isaacgood@gmail.com>
-
-                                  7/24
-                                  ----
-lib/readline/display.c
-       - add code to _rl_move_cursor_relative and _rl_col_width to short-
-         circuit a few special cases: prompt string and prompt string plus
-         line contents, both starting from 0.  Saves a bunch of calls to
-         multibyte character functions using already-computed information.
-         As a side effect, fixes bug reported by Lasse Karkkainen
-         <tronic+8qug@trn.iki.fi>
-
-subst.c
-       - fixed a problem in split_at_delims that could leave *cwp set to -1
-         if the line ends in IFS whitespace and SENTINEL is one of those
-         whitespace characters.  Fixes problem with setting COMP_CWORD for
-         programmable completion reported by Ville Skytta <ville.skytta@iki.fi>
-
-bashline.c
-       - change bash_execute_unix_command to clear the current line (if the
-         terminal supplies the "ce" attribute) instead of moving to a new
-         line.  Inspired by report from Henning Bekel <h.bekel@googlemail.com>
-
-builtins/printf.def
-       - changes to allow printf -v var to assign to array indices, the way
-         the read builtin can.  Suggested by Christopher F. A. Johnson
-         <cfajohnson@gmail.com>
-
-lib/readline/complete.c
-       - fix rl_old_menu_complete and rl_menu_complete to appropriately set
-         and unset RL_STATE_COMPLETING while generating the list of matches.
-         Fixes debian bug #538013 reported by Jerome Reybert
-         <jreybert@gmail.com>
-
-                                  7/25
-                                  ----
-execute_cmd.c
-       - change execute_builtin to temporarily turn off and restore the ERR
-         trap for the eval/source/command builtins in the same way as we
-         temporarily disable and restore the setting of the -e option.
-         Fixes bug reported by Henning Garus <henning.garus@googlemail.com>
-
-                                  7/27
-                                  ----
-shell.c
-       - add fflush(stdout) and fflush(stderr) to exit_shell before closing
-         any file descriptors at exit time (e.g., coproc pipes)
-
-                                  7/30
-                                  ----
-lib/readline/complete.c
-       - new function rl_backward_menu_complete, just passes negative count
-         argument to rl_menu_complete
-       - change rl_menu_complete to act appropriately if rl_last_command is
-         rl_backward_menu_complete, so we can cycle forward and backward
-         through the list of completions
-
-lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
-       - document new "menu-complete-backward" bindable readline function.
-         Suggested by Jason Spiro <jasonspiro04@gmail.com>
-
-lib/readline/vi_keymap.c
-       - add binding of C-n to menu-complete and C-p to menu-complete-backward
-         in vi-insert keymap, as suggested by Jason Spiro
-         <jasonspiro04@gmail.com>
-
-pcomplete.c
-       - fixed a bug in programmable_completions: the options it returned from
-         the compspec it found were set before generating the completions,
-         which meant that any changes made by "compopt" were overridden and
-         only in effect for the duration of the executing shell function
-         rather than the entire completion.  Fixes bug reported by Ville
-         Skytta <ville.skytta@iki.fi>
-
-                                  7/31
-                                  ----
-lib/readline/keymaps.c
-       - fixed memory leak in rl_discard_keymap by freeing storage associated
-         with hierarchical keymaps
-       - new convenience function, rl_free_keymap, that calls rl_discard_keymap
-         and frees the keymap passed as an argument
-
-lib/readline/util.c
-       - new bindable keymap function, _rl_null_function, to be used internally
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_null_function
-
-lib/readline/bind.c
-       - fix rl_generic_bind in the case where we are trying to override a
-         keymap with a null function (e.g., when trying to unbind it).  We
-         can't use a NULL function pointer in ANYOTHERKEY since that's
-         indistinguishable from the keymap not having been overridden at all.
-         We use  _rl_null_function instead, which simply does nothing.  We
-         could add an rl_ding to it later.  Fixes problem with hitting ESC
-         repeatedly while in vi command mode reported by James Rowell
-         <jrjimmy801-misc1@yahoo.com>
-
-builtins/bind.def
-       - call rl_bind_keyseq instead of rl_set_key for -r option
-
-lib/readline/readline.c
-       - Set vi_movement_keymap[ESC] to _rl_null_function after binding the
-         arrow keys in bind_arrow_keys() to allow vi-mode users to hit ESC
-         multiple times in vi command mode while still allowing the arrow
-         keys to work
-
-                                   8/2
-                                   ---
-bashline.c
-       - fix clear_hostname_list by setting hostname_list_initialized to 0
-         after freeing all list members.  Fixes bug reported by Freddy
-         Vulto <fvulto@gmail.com>
-
-lib/readline/display.c
-       - in update_line, if we copy data from one line to another because we
-         are wrapping a multibyte character from, say, the first line to the
-         second, we need to update OMAX and the line indices to account for
-         the moved data.  Bug report and fix from Martin Hamrle
-         <martin.hamrle@gmail.com>
-
-                                   8/3
-                                   ---
-pcomplete.h
-       - defines for EMPTYCMD ("_EmptycmD_") and DEFAULTCMD ("_DefaultCmD_")
-
-builtins/complete.def
-       - change compopt_builtin to make -E work on the "empty" command
-         completion
-       - fix print_compitem and print_compopts to replace EMPTYCMD with -E
-       - added -D (default) option to complete/compgen/compopt.  No supporting
-         code yet
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - document new -D, -E options to compopt
-       - document new -D option to complete/compgen
-
-shell.h
-       - new define, EX_WEXPCOMSUB, value of 125
-       - new define, EX_RETRYFAIL, value of 124 (for programmable completion)
-
-subst.c
-       - use EX_WEXPCOMSUB instead of literal 125 as exit status when a shell
-         invoked to run wordexp(3) with the -n option supplied attempts a
-         command substitution
-
-pcomplete.c
-       - new define, PCOMP_RETRYFAIL, used to indicate a "failure, retry with
-         next completion" status to the programmable completion code
-
-                                   8/4
-                                   ---
-pcomplete.c
-       - changed gen_shell_function_matches to take an extra parameter
-         indicating whether the specified shell function was not found or
-         returned the special "fail/retry" status, and, if it was either,
-         to not bother returning any matches list
-       - changed gen_compspec_completions to take an extra parameter to pass
-         through the "found" status from gen_shell_function_completions
-       - new function gen_progcomp_completions to take care of searching for
-         and evaluating a compspec for a particular word, saving its status,
-         and returning to its caller (programmable_completions) whether or
-         not to retry completion.  This function also checks whether a
-         retry changed the compspec associated with a command and short-
-         circuits the retry if it has not
-       - changed programmable_completions to try default completion (if set)
-         if a specific completion was not found for a command
-       - changed programmable_completions to implement "fail/retry" semantics
-         for a shell function that returns 124 and changes the compspec
-         associated with the command.  All based on proposal and changes from
-         Behdad Esfahbod (Red Hat bugzilla 475229)
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - documented new dynamic programmable completion functionality
-
-                                   8/5
-                                   ---
-stringlib.c
-       - first argument to substring() is now `const char *'
-
-externs.h
-       - changed extern declaration for substring()
-
-subst.c
-       - skipsubscript now takes a third FLAGS argument, passes to
-         skip_matched_pair
-       - skip_matched_pair now interprets flags&1 to mean not to parse
-         matched pairs of quotes, backquotes, or shell word expansion
-         constructs
-
-{subst,general,expr}.c
-       - changed skipsubscript() callers
-
-assoc.c
-       - changed assoc_to_assign to double-quote the key if it contains any
-         shell metacharacters
-
-arrayfunc.c
-       - use skipsubscript in quote_assign rather than quote any glob
-         characters in the subscript of an array assignment
-       - in assign_compound_array_list, call skipsubscript with a flags
-         argument of 1 if assigning an associative array to avoid trying
-         to re-parse quoted strings
-
-redir.c
-       - set expanding_redir before expanding body of here documents and
-         here strings to avoid looking for variables in temporary env
-
-                                   8/7
-                                   ---
-lib/readline/readline.c
-       - in _rl_dispatch_callback, return value of -3 means that we have
-         added to a key sequence, but there are previous matches in the
-         sequence.  Don't call _rl_subseq_result if we get a -3 from a
-         previous context in the chain; just go back up the chain.  Report
-         and fix from <freehaha@gmail.com>
-
-bashline.c
-       - fixes to history_completion_generator and bash_dabbrev_expand to
-         make dabbrev-expand inhibit suppressing of appending space char
-         to matches.  Have to do it with the generator too because
-         rl_menu_complete turns off suppressing the appended space in
-         set_completion_defaults().  Suggestion from Dan Nicolaescu
-         <dann@ics.uci.edu>
-       - suppress completion match sorting in bash_dabbrev_expand by
-         setting rl_sort_completion_matches = 0.  Suggestion from Dan
-         Nicolaescu <dann@ics.uci.edu>
-       - don't qsort history match list in build_history_completion_array
-         if dabbrev_expand_active == 1
-       - start the loop in build_history_completion_array that gathers words
-         from history for possible completions from the end of the list
-         rather than the beginning.  It doesn't matter where you start if
-         the results are sorted, and dabbrev-expand is supposed to offer
-         the most recent completions first
-
-                                  8/12
-                                  ----
-execute_cmd.c
-       - change to execute_command_internal to make [[ ... ]] conditional
-         command subject to settings of `set -e' and the ERR trap
-
-                                  8/14
-                                  ----
-execute_cmd.c
-       - change to execute_command_internal to make (( ... )) arithmetic
-         command subject to settings of `set -e' and the ERR trap
-
-lib/readline/text.c
-       - new bindable function, rl_skip_csi_sequence, reads the characters
-         that make up a control sequence as defined by ECMA-48.  Sequences
-         are introduced by the Control Sequence Indicator (CSI) and
-         contain a defined set of characters.  Insert, End, Page Up and so
-         on are CSI sequences.  Report and code from Andy Koppe
-         <andy.koppe@gmail.com>
-
-lib/readline/readline.h
-       - extern declaration for rl_skip_csi_sequence
-
-lib/readline/funmap.c
-       - new bindable command "skip-csi-sequence", runs rl_skip_csi_sequence
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - documented new bindable command "skip-csi-sequence", unbound by
-         default
-
-builtins/evalfile.c
-       - fix _evalfile to remove embedded null bytes from the file read
-         into the string.  Report and proposed fix from Roman Rakus
-         <rrakus@redhat.com>
-
-{configure,config.h}.in
-       - check for syslog(3), define HAVE_SYSLOG
-       - check for syslog.h, define HAVE_SYSLOG_H
-
-config-top.h
-       - new define SYSLOG_HISTORY, disabled by default
-
-config-bot.h
-       - if HAVE_SYSLOG or HAVE_SYSLOG_H are not defined, undef SYSLOG_HISTORY
-
-bashhist.c
-       - if SYSLOG_HISTORY is defined, call bash_syslog_history with the
-         line added to the history in bash_add_history.
-       - new function, bash_syslog_history(line), sends line to syslog at
-         user.info.  The line is truncated to send no more than 600
-         (SYSLOG_MAXLEN) bytes to syslog. Feature requested by many, and
-         required by some national laws
-
-sig.c
-       - in termsig_handler, resend SIGHUP to children if subshell_environment
-         indicates we're a shell performing command or process substitution
-
-jobs.c
-       - add CHECK_TERMSIG calls to wait_for in addition to the ones in
-         waitchld()
-
-builtins/shopt.def
-       - new functions set_bashopts, parse_bashopts, and initialize_bashopts
-         to manage new environment variable $BASHOPTS, like $SHELLOPTS but
-         for shopt options
-       - change toggle_shopts to call set_bashopts after setting options, so
-         $BASHOPTS reflects new values
-
-shell.c
-       - call initialize_bashopts after calling initialize_shell_options at
-         shell startup
-
-configure.in
-       - new configure `enable' option --enable-exended-glob-default, to
-         set the initial default value of the `extglob' shell option
-
-config.h
-       - new define, EXTGLOB_DEFAULT, controlled by the `extended-glob-default'
-         configure option
-
-pathexp.c
-        - initialize extended_glob variable to EXTGLOB_DEFAULT
-
-doc/{bash.1,bashref.texi}
-       - document new $BASHOPTS variable and its behavior
-
-doc/bashref.texi
-       - document new --enable-extended-glob-default configure option
-
-                                  8/16
-                                  ----
-print_cmd.c
-       - new variables: xtrace_fd and xtrace_fp, the file descriptor and
-         FILE * to which we send `set -x' tracing output.  If fd == -1
-         then fp == STDERR, the default mode
-       - new function xtrace_init, sets xtrace_fd == -1 and xtrace_fp = stderr
-       - new function xtrace_set (fd, fp), sets xtrace_fd and xtrace_fp
-         to the arguments
-       - new function xtrace_reset, handles closing old xtrace fd/fp and
-         moving them back to -1/stderr
-       - new function xtrace_fdchck, calls xtrace_reset if the fd passed as
-         an argument is xtrace_fd
-       - change xtrace functions to fprintf to xtrace_fp instead of stderr
-
-shell.c
-       - call xtrace_init() very early in main()
-
-variables.c
-       - new special variable, BASH_XTRACEFD, holds file descriptor used for
-         set -x trace output.  Inspired by suggestion from Bruce Korb
-         <bruce.korb@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - added description of new BASH_XTRACEFD variable
-
-redir.c
-       - add calls to xtrace_fdchk to the redirections that close file
-         descriptors, so we notice if we close BASH_XTRACEFD and compensate
-         accordingly (same places that call coproc_fdchk())
-
-                                  8/18
-                                  ----
-lib/readline/text.c
-       - change to _rl_replace_text to add error checks: start must be <=
-         end, and we don't call rl_insert_text if passed the empty string
-
-config.h.in
-       - add define for HAVE_ICONV, already found by intl autoconf macros
-       - add define for HAVE_LOCALE_CHARSET
-
-aclocal.m4
-       - add check for locale_charset() to BASH_CHECK_MULTIBYTE
-
-lib/sh/fnxform.c
-       - new file with two public function: fnx_tofs and fnx_fromfs.
-         Primarily intended for use on MacOS X, they use iconv to convert
-         between whatever the current locale encoding is and "UTF-8-MAC",
-         a special encoding on OS X in which all characters are
-         decomposed unicode, as the HFS+ filesystem stores them.  These
-         functions return a pointer to a local buffer, allocated once and
-         resized as necessary, to avoid too many allocations; callers
-         should not free the return value, since it may be the string
-         passed
-
-Makefile.in
-       - make sure LIBICONV is set by autoconf (@LIBICONV@) and added to
-         list of link libraries
-
-externs.h
-       - new extern declarations for fnx_fromfs and fnx_tofs
-
-lib/glob/glob.c
-       - convert the filename read using readdir() in glob_vector() using
-         fnx_fromfs and use that value in the call to strmatch.  This
-         ensures that we're using the precomposed Unicode value of the
-         filename rather than the native decomposed form.  Original bug
-         report from Len Lattanzi <llatanzi@apple.com>; fix inspired by
-         Guillaume Outters <guillaume.outters@free.fr>
-
-                                  8/19
-                                  ----
-lib/readline/complete.c
-       - new completion hook: rl_filename_rewrite_hook, can rewrite or modify
-         filenames read from the filesystem before they are compared to the
-         word to be completed
-
-lib/readline/readline.h
-       - extern declaration for rl_filename_rewrite_hook
-
-lib/readline/doc/rltech.texi
-       - document rl_filename_rewrite_hook
-
-bashline.c
-       - new function, bash_filename_rewrite_hook, assigned to
-         rl_filename_rewrite_hook.  Calls fnx_fromfs to convert from
-         filesystem format to "input" format.  This makes completing
-         filenames with accented characters work on Mac OS X
-
-                                  8/20
-                                  ----
-lib/readline/bind.c
-       - new bindable variable "skip-completed-text", bound to
-         _rl_skip_completed_text.  If enabled, it means to note when
-         completing before the end of a word and skipping over characters
-         after rl_point that match in both the completion to be inserted
-         and the word being completed.  It means that completing
-         `Makefile' with the cursor after the `e' results in `Makefile'
-         instead of `Makefilefile'.  Inspired by an idea from Jared
-         Yanovich <phierunner@comcast.net> from back in 2004
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_skip_completed_text
-
-lib/readline/complete.c
-       - implement semantics of _rl_skip_completed_text in insert_match:
-         skip characters in `replacement' that match chars in rl_line_buffer
-         from the start of the word to be completed
-
-                                  8/21
-                                  ----
-error.c
-       - change parser_error to set last_command_exit_value to 2 before
-         calling exit_shell (if set -e is enabled), so any exit or ERR
-         trap gets the right value of $?.  Suggestion from Stefano
-         Lattarini <stefano.lattarini@gmail.com>
-
-braces.c
-       - fix expand_seqterm so that a non-zero-prefixed term that's longer
-         than a zero-prefixed term determines the length of each term
-         in the brace-expanded sequence.  This means that things like
-         {01..100} will have three digits in all the elements of the
-         expanded list.  Fixes bug reported by Jeff Haemer
-         <jeffrey.haemer@gmail.com>
-
-                                  8/24
-                                  ----
-{arrayfunc,variables}.c
-       - when inserting a value into an associative array using syntax like
-         T=v where T is an already-declared associative array using key "0",
-         make sure the key is in newly-allocated memory so it can be freed
-         when the variable is unset.  Fixes bug reported as redhat 518644
-         by Jon Fairbairn
-
-                                  8/26
-                                  ----
-lib/readline/funmap.c
-       - add "old-menu-complete" binding for rl_old_menu_complete
-
-lib/readline/readline.h
-       - add extern declaration for rl_old_menu_complete
-
-subst.c
-       - fix memory leak when processing ${!prefix@}.  Need to dispose all
-         words in the word list created from all matching variable.  Fixes
-         bug reported by muszi@muszi.kite.hu.
-
-                                  8/29
-                                  ----
-execute_cmd.c
-       - add fflush(stdout) and fflush(stderr) to child coproc code before
-         calling exit after execute_in_subshell
-
-                                  8/31
-                                  ----
-lib/readline/{{bind,readline}.c,rlprivate.h}
-       - new bindable variable, "echo-control-characters", enabled by default.
-         This controls whether or not readline honors the tty ECHOCTL bit
-         and displays characters corresponding to keyboard-generated signals.
-         Controlled by _rl_echo_control_chars variable, declared in readline.c
-
-lib/readline/signals.c
-       - if _rl_echo_control_chars == 0, don't go through _rl_echo_signal_char
-
-
-lib/readline/doc/{readline.3,rluser.texi}
-       - document "echo-control-characters" bindable variable
-
-                                   9/1
-                                   ---
-lib/readline/histexpand.c
-       - hist_string_extract_single_quoted now takes an additional argument:
-         a flags word.  The only defined value (flags & 1) allows backslash
-         to quote the single quote.  This is to inhibit history expansion
-         inside $'...' containing an escaped single quote.
-       - change history_expand to call hist_string_extract_single_quoted
-         with flags == 1 if it sees $'.  Fixes bug reported by Sean
-         Donner <sean.donner@gmail.com>
-
-                                   9/2
-                                   ---
-builtins/printf.def
-       - add a call to sh_wrerror if ferror() succeeds in the PRETURN macro,
-         to print an error message in the case that the final fflush fails
-         (for instance, because it attempts to write data that didn't have a
-         trailing newline).  Fixes bug reported by Stefano Lattarini
-         <stefano.lattarini@gmail.com>
-
-                                   9/7
-                                   ---
-arrayfunc.c
-       - some fixes to assign_compound_array_list to avoid null pointer
-         dereferences pointed out by clang/scan-build
-
-lib/glob/glob.c
-       - fixes to udequote_pathname and wdequote_pathname to avoid possible
-         null pointer dereferences pointed out by clang/scan-build
-
-lib/readline/undo.c
-       - fix to _rl_copy_undo_list (function unused) to avoid deref of
-         uninitialized pointer pointed out by clang/scan-build
-
-general.c
-       - fix string_to_rlimtype so it works if passed a null pointer (though
-         it never is)
-
-builtins/mapfile.def
-       - fix to mapfile() to avoid possible null pointer dereference pointed   
-         out by clang/scan-build
-
-variables.c
-       - fix to valid_exportstr to avoid possible null pointer dereferences
-         pointed out by clang/scan-build
-
-bashline.c
-       - fix to bash_execute_unix_command to avoid possible null pointer
-         dereference if READLINE_LINE or READLINE_POINT is not bound
-
-                                  9/11
-                                  ----
-[Prayers for the victimes of 9/11/2001]
-
-command.h
-       - add `rflags' member to struct redirect to hold private flags and
-         state information
-       - change redirector to a REDIRECTEE instead of int to prepare for
-         possible future changes
-
-{copy_cmd,dispose_cmd,make_cmd,print_cmd,redir}.c
-       - changes resulting from type change of `redirector' member of struct
-         redirect: change x->redirector to x->redirector.dest and add code
-         where appropriate to deal with x->redirector.filename
-
-make_cmd.h
-       - change extern declaration for make_redirection
-
-make_cmd.c
-       - first argument of make_redirection is now a `REDIRECTEE' to prepare
-         for possible future changes.  First arg is now assigned directly to
-         redirector member instead of assigning int to redirector.dest
-
-{make_cmd,redir}.c,parse.y
-       - changes resulting from type change of first argument to
-         make_redirection from int to REDIRECTEE.  In general, changes are
-         using REDIRECTEE sd and assigning old argument to sd.dest, then
-         passing sd to make_redirection
-
-make_cmd.[ch],parse.y
-       - add fourth argument to make_redirection: flags.  Sets initial value
-         of `rflags' member of struct redirect
-       - changed all callers of make_redirection to add fourth argument of 0
-
-                                  9/15
-                                  ----
-parse.y
-       - change read_token_word to return REDIR_WORD for tokens of the form
-         {var} where `var' is a valid shell identifier and the character
-         following the } is a `<' or `>'
-       - add REDIR_WORD versions of all input and output file redirections
-         and here documents
-
-print_cmd.c
-       - change input and output file redirection direction and here
-         document cases of print_redirection to print a varname
-         specification of the form {var} when appropriate.  Still need
-         to fix rest of cases
-
-redir.c
-       - implement REDIR_VARASSIGN semantics for file input and output
-         redirections and here documents
-
-                                  9/16
-                                  ----
-parse.y
-       - added REDIR_WORD versions of remaining redirection constructs except
-         for err_and_out ones
-
-redir.c
-       - handle REDIR_VARASSIGN semantics for rest of redirection constructs 
-       - accommodate REDIR_VARASSIGN when translating redirections
-       - new function, redir_varvalue, does variable lookup for {v} when
-         redirection needs the value (e.g., r_close_this)
-
-print_cmd.c
-       - fix rest of cases to print {varname} when REDIR_VARASSIGN is set in
-         redirect->rflags
-
-doc/{bash.1,bashref.texi}
-       - document new {varname} REDIR_VARASSIGN form of redirections
-
-tests/vredir.{right,tests},vredir[1-5].sub
-       - tests for new {varname} REDIR_VARASSIGN form of redirections
-
-                                  9/18
-                                  ----
-subst.c
-       - new flags argument to split_at_delims: these flags are ORd with
-         SD_NOJMP and passed to skip_to_delim
-       - change skip_to_delim to honor new SD_NOQUOTEDELIM flag by not
-         checking whether or not single and double quotes are delimiters
-         if it's set in passed flags until after skipping quoted strings.
-
-subst.h
-       - change extern declaration for split_at_delims
-       - new define for SD_NOQUOTEDELIM flag
-
-pcomplete.c
-       - pass SD_NOQUOTEDELIM in flags argument to split_at_delims so single
-         and double quotes, even though they're in
-         rl_completer_word_break_characters, don't act as word delimiters
-         for programmable completion.  Fixes bug reported by Freddy
-         Vulto <fvulto@gmail.com>
-
-lib/glob/glob.c
-       - in glob_filename, after recursively scanning a directory specified
-         with `**', turn off GX_ALLDIRS|GX_ADDCURDIR before calling
-         glob_vector on the rest of the pathname, since it may not apply to
-         the rest of the pattern.  Turned back on if the filename makes it
-         appropriate.  Fixes bug reported by Anders Kaseorg <andersk@mit.edu>
-
-redir.c
-       - change execute_null_command to fork a child to execute if any of
-         the commands redirections have the REDIR_VARASSIGN flag set, since
-         those commands are not supposed to have side effects
-
-test.c
-       - < and > binary operators will obey the locale by using strcoll if
-         the TEST_LOCALE flag is passed to binary_test
-
-test.h
-       - new define for TEST_LOCALE
-
-execute_cmd.c
-       - execute_cond_node sets TEST_LOCALE so [[ str1 < str2 ]] (and >)
-         obey the locale.  Fixes bug/incompatibility reported by Greg
-         Wooledge <wooledg@eeg.ccf.org>
-
-doc/{bash.1,bashref.texi}
-       - documented [[ command new locale-sensitive treatment of < and >
-
-                                  9/24
-                                  ----
-configure.in
-       - add "darwin10" cases like darwin8 and darwin9 to handle linking with
-         included readline and history libraries
-
-                                  9/26
-                                  ----
-lib/readline/display.c
-       - modify change of 7/24 to use prompt_physical_chars instead of
-         prompt_visible_length to account for visible multibyte characters in
-         the line (usually in the prompt).  Fixes debian bug #547264
-         reported by Pietro Battiston <toobaz@email.it>
-       - add flags argument to _rl_col_width; changed callers.  flags > 0
-         means that it's ok to use the already-computed prompt information;
-         flags == 0 means that we're expanding the prompt and we should not
-         short-circuit
-
-parse.y
-       - in decode_prompt_string, when expanding \w and \W on Mac OS X,
-         use fnx_fromfs to convert from "filesystem" form to "input" form.
-         This makes $PWD with multibyte characters work in the prompt
-         string on Mac OS X
-
-lib/sh/fnxform.c
-       - in fnx_fromfs and fnx_tofs, use templen instead of outlen as last
-         argument in calls to iconv, since outlen is used to keep track of
-         the size of the buffer, and iconv potentially modifies its
-         `outbytesleft' argument
-
-                                  9/29
-                                  ----
-subst.c
-       - make skip_to_delim understand how to skip over process substitution
-         constructs the way it skips $(...) command substitution
-
-                                  9/30
-                                  ----
-lib/readline/terminal.c
-       - don't set the `terminal has meta key' flag if the `MT' capability is
-         available; that means something completely different
-
-                                  10/1
-                                  ----
-builtins/help.def
-       - make sure width is at least 7, since we pass `width/2 - 3' to strncpy
-         as the length argument.  Terminal widths <= 6 are converted to 80.
-         Fixes bug reported by Chris Hall <c@pobox.co.uk>
-
-configure.in
-       - changed version to 4.1-alpha
-
-subst.h
-       - new flag for skip_to_delim: SD_NOSKIPCMD, which means to not skip
-         over embedded command and process substitutions, but rather to look
-         for delimiters within them
-
-subst.c
-       - implement semantics of SD_NOSKIPCMD in skip_to_delim
-
-bashline.c
-       - call skip_to_delim with SD_NOSKIPCMD from find_cmd_start, so
-         programmable completion can use the completion defined for `b' for
-         command lines like "a $(b c".  Fixes inconsistency/bug reported by
-         Freddy Vulto <fvulto@gmail.com>
-
-parser.h
-       - replace unused PST_CMDTOKEN parser state value with PST_EXTPAT,
-         means currently parsing an extended glob pattern (extglob)
-
-parse.y
-       - fix cond_node() so that extended_glob is set before parsing the
-         rhs of the `==' or `!=' operators.  For ksh93 compatibility.
-       - reset extended_glob to global value (saved in parse_cond_command())
-         in reset_parser()
-
-                                  10/5
-                                  ----
-jobs.c
-       - change waitchld() to only interrupt the wait builtin when the shell
-         receives SIGCHLD in Posix mode.  It's a posix requirement, but
-         makes easy things hard to do, like run a SIGCHLD trap for every
-         exiting child.  Change prompted by question from Alex Efros
-         <powerman@powerman.name>
-
-doc/bashref.texi
-       - document new posix mode behavior about SIGCHLD arriving while the
-         wait builtin is executing when a trap on SIGCHLD has been set
-
-                                  10/6
-                                  ----
-lib/readline/histexpand.c
-       - fix hist_expand to keep from stopping history expansion after the
-         first multibyte character (a `break' instead of a `continue').
-         Fixes debian bug (#549933) reported by Nikolaus Schulz
-         <microschulz@web.de>
-
-                                  10/8
-                                  ----
-builtins/read.def
-       - implement new `-N nchars' option: read exactly NCHARS characters,
-         ignoring any delimiter, and don't split the result on $IFS.
-         Feature requested by Richard Stallman <rms@gnu.org>
-
-doc/{bash.1,bashref.texi}
-       - document new `read -N' option
-
-                                  10/9
-                                  ----
-lib/readline/bind.c
-       - new bindable variable, "enable-meta-key", controls whether or not
-         readline enables any meta modifier key the terminal claims to
-         support.  Suggested by Werner Fink <werner@suse.de>
-
-lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
-       - document new readline "enable-meta-key" bindable variable
-
-                                  10/10
-                                  -----
-trap.c
-       - new function, free_trap_string(), does what it says and turns off
-         SIG_TRAPPED flag without changing signal disposition
-
-[bash-4.1-alpha frozen]
-
-                                  10/16
-                                  -----
-builtins/mapfile.def
-       - return an error if the variable passed is not an indexed array.
-         Fixes bug reported by Nick Hobson <nick.hobson@yahoo.com>
-       - change help text to make it clear that an indexed array is required
-
-doc/{bash.1,bashref.texi}
-       - changed description of mapfile to note that the array variable
-         argument must be an indexed array, and mapfile will return an
-         error if it is not
-
-subst.c
-       - change expand_string_unsplit and expand_string_leave_quoted to
-         add the (previously unused) W_NOSPLIT2 flag to the created word
-       - change expand_word_internal to understand W_NOSPLIT2 to mean that
-         we're not going to split on $IFS, so we should not quote any
-         characters in IFS that we add to the result string.  Fixes bug
-         reported by Enrique Perez-Terron <enrio@online.no>
-       - change cond_expand_word similarly.  Fixes rest of bug reported by
-         Enrique Perez-Terron <enrio@online.no>
-
-parse.y
-       - save and restore value of last_command_subst_pid around call to
-         expand_prompt_string in decode_prompt_string.  Fixes bug that causes
-         $? to be set wrong when using a construct like false || A=3 when
-         set -x is enabled and $PS4 contains a command substitution.  Reported
-         by Jeff Haemer <jeffrey.haemer@gmail.com>
-
-                                  10/17
-                                  -----
-execute_cmd.c
-       - in execute_in_subshell, make sure we set setjmp(return_catch) before
-         running the command, in case the command or its word expansion
-         calls jump_to_top_level.  Fixes bug reported by Nils Bernhard
-         <nils.bernhard@yahoo.de>
-
-subst.c
-       - new PF_NOSPLIT2 flag for param_expand
-       - parameter_brace_expand takes a new `pflags' argument, before the
-         `output' parameters; passes to param_expand as necessary
-       - change parameter_brace_expand to call parameter_brace_expand_word
-         with the PF_NOSPLIT2 flag if the pflags argument to
-         parameter_brace_expand has it set
-
-parse.y
-       - change report_syntax_error to set last_command_exit_value to
-         EX_BADSYNTAX if parse_and_execute_level is > 0, indicating a
-         syntax error while we're executing a dot script, eval string,
-         trap command, etc.
-
-builtins/evalstring.c
-       - in parse_and_execute, if parse_command() returns non-zero,
-         indicating a parse error, print a warning message if the conditions
-         would require  a posix-mode shell to abort (parse error in a `.'
-         script or eval string)
-
-                                  10/19
-                                  -----
-builtins/evalfile.c
-       - even if the `check binary' flag is not passed to _evalfile, return an
-         error after reading 128 null characters if called by `source', on
-         the assumption that it's probably a binary file.  [This will be in
-         bash-4.1-beta]
-
-                                  10/24
-                                  -----
-[bash-4.1-alpha released]
-
-bashline.c
-       - don't call command_substitution_completion_function if we're
-         completing a substring delimited by a single quote.  Fixes bug
-         reported by bash-bugs@atu.cjb.net
-
-lib/readline/complete.c
-       - make sure _rl_skip_completed_text defaults to 0, as the
-         documentation states (incorrect in bash-4.1-alpha)
-       - in insert_match, skip over a close quote in the replacement text if
-         the character at point when completion is invoked is a single
-         quote.  Fixes complaint from bash-bugs@atu.cjb.net
-
-                                  10/26
-                                  -----
-shell.c
-       - in main, make sure "$EMACS" is non-null before calling strstr on its
-         value.  Fixes Red Hat bug 530911 submitted by Mitchell Berger
-
-builtins/mapfile.def
-       - don't save callback commands in shell history.  Suggested by
-         Jan Schampera <jan.schampera@web.de>
-
-mailcheck.c
-       - in file_mod_date_changed, make sure the modification time is later
-         than the saved modification date, not just that it's not equal.
-         Fix from Evgeniy Dushistov <dushistov@mail.ru>
-       - in file_access_date_changed, make sure the access time is later
-         than the saved access time, not just that it's not equal
-
-                                  10/27
-                                  -----
-builtins/shopt.def
-       - added new `compat40' compatibility variable, with associated changes
-         to shell_compatibility_level(), since the default compatibility level
-         is now 41
-
-test.c
-       - make the < and > operators to [[ use strcoll() only if the shell
-         compatibility level is greater than 40 (it is 41 by default in
-         bash-4.1)
-
-                                  10/28
-                                  -----
-support/shobj-conf
-       - decrease the default version of FreeBSD that creates shared libraries
-         to 4.x.  Advice from Peter Jeremy <peterjeremy@acm.org>
-
-                                  11/2
-                                  ----
-parse.y
-       - change parse_comsub to free `heredelim' and set it to 0 whenever the
-         comsub scanner finds the end of a here document.  Really need to
-         implement a stack of here doc delimiters like in the parser (can we
-         use redir_stack here, too?)
-       - fix parse_comsub to not attempt to read another here doc delimiter
-         after seeing a shell break character (that is not newline) if we
-         already have one.  Fixes Debian bash bug #553485, submitted by
-         Samuel Hym <samuel.hym@gmail.com>
-
-                                  11/3
-                                  ----
-variables.c
-       - fix bind_variable_internal to call a variable's dynamic 'set function'
-         with the right arguments depending on whether it's an associative
-         array, an indexed array, or a scalar.  Fixes Ubuntu bug #471504
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/471504 reported
-         by AJ Slater <aj.slater@gmail.com>
-
-[bash-4.1-beta frozen]
-
-                                  11/11
-                                  -----
-builtins/printf.def
-       - in getintmax(), in the case of a conversion error, return the partial
-         value accumulated so far, which is suppose to be what
-         strtoimax/strtoll/strtol returns
-
-                                  11/17
-                                  -----
-[bash-4.1-beta released]
-
-                                  11/18
-                                  -----
-builtins/{common.h,shopt.def},shell.c
-       - changed shopt variable "set functions" to take the option name as
-         the first argument; changed function prototypes and callers
-
-builtins/shopt.def
-       - change set_compatibility_level() to turn off other compatNN options
-         when one is set -- enforce mutual exclusivity.  Fixes problem noted
-         by Jan Schampera <jan.schampera@web.de>
-
-                                  11/19
-                                  -----
-lib/readline/rltty.c
-       - make sure prepare_terminal_settings() tests for the presence of
-         ECHOCTL before using it.  Fixes bug reported by Joachim Schmitz
-         <schmitz@hp.com>
-
-config-top.h
-       - new WORDEXP_OPTION define (off by default)
-
-shell.c
-       - don't include the --wordexp option or the supporting function
-         (run_wordexp) if WORDEXP_OPTION is not defined.  Suggested by
-         Aharon Robbins <arnold@skeeve.com>
-
-execute_cmd.c
-       - in execute_cond_node, turn on comsub_ignore_return if the flags
-         indicate we're ignoring the return value before calling
-         cond_expand_word.  Fixes bug reported by Anirban Sinha
-         <asinha@zeugmasystems.com>
-
-                                  11/20
-                                  -----
-lib/sh/snprintf.c,builtins/printf.def
-       - change check for HAVE_ASPRINTF and HAVE_SNPRINTF to check if value
-         is 1 or 0 rather than whether they are defined or not.  This allows
-         a value of 0 to enable function replacement
-
-configure.in,aclocal.m4
-       - new autoconf macro, BASH_FUNC_SNPRINTF, checks for snprintf present
-         and working as C99 specifies with a zero length argument.  Idea
-         from Greg Wooledge <wooledg@eeg.ccf.org>
-       - new macro BASH_FUNC_VSNPRINTF, does same thing for vsnprintf
-
-                                  11/25
-                                  -----
-subst.c
-       - in command_substitute, only tell parse_and_execute to reset the line
-         number in an interactive shell if sourcelevel == 0 -- we'll use the
-         line numbers from the sourced file
-
-execute_cmd.c
-       - in execute_simple_command, only subtract function_line_number from
-         line_number if sourcelevel == 0.  If sourcing, we'll use the line
-         numbers from the sourced file.  Fixes bug reported by Hugo
-         Mildenberger <Hugo.Mildenberger@namir.de>
-
-builtins/declare.def
-       - in declare_internal, call bind_assoc_variable instead of
-         bind_array_variable in the case of declare -A foo=bar.  Fixes bug
-         reported by Bernd Eggink <monoped@sudrala.de>.
-
-                                  11/27
-                                  -----
-lib/readline/util.c
-       - change declaration for _rl_walphabetic to use prototype, assuming
-         that any system with multibyte characters has a compiler that can
-         handle prototypes.  Fix for AIX compilation problem reported by
-         Nick Hillman <nick_hillman@neverbox.com>
-
-                                  11/28
-                                  -----
-execute_cmd.c
-       - make funcnest file-scope static and unwind-protect its value in
-         execute_function, so it can be used as a real measure of function
-         call nesting
-
-general.c
-       - fix off-by-one error in trim_pathname that caused it to short-circuit 
-         when PROMPT_DIRTRIM == number of directories - 1.  Fixes bug
-         reported by Dennis Williamson <dennistwilliamson@gmail.com>
-
-                                  11/29
-                                  -----
-jobs.c
-       - when fork() returns -1/EAGAIN, call waitchld(-1, 0) so the shell can
-         reap any dead jobs before trying fork again.  Currently disabled
-         until bash-4.2 development starts
-
-lib/readline/complete.c
-       - when incrementing _rl_interrupt_immediately, make sure it's greater
-         than 0 before decrementing it.  In practice, not a problem, but
-         the right way to do it.  Suggested by Jan Kratochvil
-         <jan.kratochvil@redhat.com>
-
-lib/readline/signals.c
-       - make sure rl_signal_handler doesn't set rl_caught_signal if
-         _rl_interrupt_immediately is set, so RL_CHECK_SIGNALS doesn't
-         cause it to be processed twice.  Suggested by Jan Kratochvil
-         <jan.kratochvil@redhat.com>
-       - if the callback interface is being used, use the code path that
-         immediately handles signals.  This restores the readline-5.2
-         behavior.  Fixes GDB readline bug reported by Jan Kratochvil
-         <jan.kratochvil@redhat.com>
-
-                                  12/18
-                                  -----
-[bash-4.1-rc1 released]
-
-                                  12/22
-                                  -----
-config-top.h
-       - don't have SYSLOG_HISTORY enabled by default
-
-lib/sh/Makefile.in
-       - add explicit dependency on pathnames.h for parallel make support
-
-externs.h
-       - add extern declaration for xtrace_fdchk
-
-lib/sh/snprintf.c
-       - add local prototype declarations for isinf, isnan if we are providing
-         local definitions
-
-lib/sh/fnxform.c
-       - add extern declaration for get_locale_var if HAVE_LOCALE_CHARSET not
-         defined
-
-execute_cmd.c
-       - define NEED_FPURGE_DECL so we pick up any extern declaration for
-         fpurge (e.g., if the system doesn't provide it)
-
-builtins/shopt.def
-       - correct prototype and declaration for set_shellopts_after_change so
-         it's the correct type for shopt_set_func_t
-       - add new function shopt_enable_hostname_completion that is the correct
-         type for shopt_set_func_t; just calls enable_hostname_completion and
-         returns its result
-
-                                  12/26
-                                  -----
-doc/{bash.1,bashref.texi}
-       - add \E and \" escape sequences to ANSI-C quoting description.
-         Suggested by Aharon Robbins <arnold@skeeve.com>
-
-                                  12/29
-                                  -----
-doc/bash.1
-       - make sure shell and environment variable names are always in
-         `small caps' bold.  Suggested by Aharon Robbins <arnold@skeeve.com>
-
-                                  12/30
-                                  -----
-{execute_cmd.c,parse.y,Makefile}
-       - changes for building minimal configuration from Matthias Klose
-         <doko@debian.org>
-
-[bash-4.1 frozen]
-
-                                  12/31
-                                  -----
-[bash-4.1 released]
-
-                                1/5/2010
-                                --------
-doc/bashref.texi
-       - document compat32 and compat40 shopt options.  Omission pointed out
-         by Dilyan Palauzov <Dilyan.Palauzov@aegee.org>
-
-                                   1/6
-                                   ---
-lib/readline/complete.c
-       - use `convfn' (converted filename) instead of entry->d_name (filename
-         read from file system) when adding partial or full completions to
-         the command line.  Bug and fix from Guillaume Outters
-         <guillaume.outters@free.fr>
-
-                                   1/7
-                                   ---
-builtins/printf.def
-       - fix prototype in extern declaration for vsnprintf.  Fix for bug
-         reported by Yann Rouillard <yann@pleiades.fr.eu.org>
-
-                                   1/9
-                                   ---
-parse.y
-       - fix shell_getc to handle alias expansions containing quoted
-         newlines.  Problems in bash-4.1 with aliases containing quoted
-         newlines in the middle of and at the end of their expansion.
-         Fix for bug reported by Jonathan Claggett
-         <jonathan@claggett.org>
-       - change mk_alexpansion to not append a space to an alias
-         expansion ending with a newline.  Works with shell_getc
-
-                                  1/11
-                                  ----
-lib/glob/Makefile.in
-       - add dependencies on shell.h and pathnames.h.  From Mike Frysinger
-         <vapier@gentoo.org>
-
-                                  1/15
-                                  ----
-doc/{bash.1,{bashref,version}.texi},lib/readine/doc/rluser.texi
-       - some typo fixes from Aharon Robbins <arnold@skeeve.com>
-       - added descriptions of ENV, COPROC, and MAPFILE variables
-       - added descriptions of READLINE_LINE and READLINE_POINT
-
-                                  1/21
-                                  ----
-arrayfunc.c
-       - free `akey', the word-expanded index into the assoc array to avoid
-         mem leak in array_value_internal
-       - free index into assoc array in unbind_array_element
-       - change array_value_internal to take an additional argument: an
-         arrayind_t *.  If not null, an index to an indexed array is
-         returned there.  If not an indexed array or subscript is @ or
-         *, the value is unchanged
-
-                                  1/22
-                                  ----
-builtins/ulimit.def
-       - include <ulimit.h> if we found it during configure and we don't
-         have resources.  Fixes omission reported by Joachim Schmitz
-         <jojo@schmitz-digital.de>
-
-{configure,config.h}.in
-       - check for <ulimit.h>, define HAVE_ULIMIT_H if found
-
-lib/sh/oslib.c
-       - include <signal.h> for extern declaration for kill(2) if
-         HAVE_KILLPG not defined
-
-jobs.c
-       - if HAVE_KILLPG is not defined, add an extern prototype decl for
-         killpg()
-
-                                  1/24
-                                  ----
-print_cmd.c
-       - when printing here-string redirections, don't quote the string.  The
-         original quotes, if any, are still in place and don't need to be
-         requoted.  Fixes bug reported by Arfrever Frehtes Taifersar Arahesis
-         <arfrever.fta@gmail.com>
-
-subst.c
-       - fix array_length_reference to return 0 for variables that have not
-         been assigned a value.  Fixes bug reported by Mart Frauenlab
-         <mart.frauenlob@chello.at>, but is not backwards compatible
-
-arrayfunc.[ch]
-       - change array_value to take a new arrayind_t *indp parameter like
-         get_array_value; changed extern prototype declaration
-
-subst.c
-       - changed callers of array_value to add extra parameter
-
-expr.c
-       - change expr_streval to set a new `lvalue' parameter with information
-         about the string being evaluated: string, value, array index (if
-         any), variable evaluated (if set).
-       - saving and restoring current context now saves and restores the
-         current `lvalue'
-       - new function expr_bind_array_element, binds an array element with an
-         already-computed index to a specified value
-       - anywhere we set the current token to a string (STR), save and set
-         the current lvalue
-       - change calls to expr_bind_variable to check whether or not the
-         current lvalue indicates an indexed array was evaluated, and, if so,
-         call expr_bind_array_element using the already-computed index
-         (curlval.ind).  Fixes problems with dynamic variables (e.g., RANDOM)
-         in array indices with {pre,post}-{inc,dec}rement and op=
-         operators reported by <dennis@netstrata.com>
-
-                                  1/25
-                                  ----
-expr.c
-       - fix subexpr() to initialize curlval and lastlval when resetting all
-         of the rest of the expression-parsing variables
-
-                                  1/26
-                                  ----
-builtins/setattr.def
-       - in show_var_attributes, if the variable is not set (value == 0),
-         don't print `name=""', just print `name'.  Pointed out by
-         Mart Frauenlab <mart.frauenlob@chello.at>
-
-arrayfunc.c
-       - fix array_keys to return NULL if the variable is not set or
-         invisible.  Pointed out by Mart Frauenlab <mart.frauenlob@chello.at>
-       - change array_value_internal to return NULL for variable which has
-         not been set
-
-                                  1/30
-                                  ----
-bashline.c
-       - in command_word_completion_function, don't call glob_pattern_p
-         on hint -- use the already-computed `globpat'.  At this point,
-         hint might contain an already-dequoted globbing character, but
-         glob_matches will be NULL.  Fixes bug reported by
-         coyote@wariat.org.pl
-
-                                   2/5
-                                   ---
-builtins/exec.def
-       - set extern variable "exec_argv0" to the argument to -a
-
-shell.c
-       - if exec_argv0 is set, set dollar_vars[0] to it and set it to NULL,
-         assuming it was set by `exec -a'.  `exec -a foo' now sets $0 to
-         foo in an executable shell script without a leading `#!' (fixes
-         longstanding bug)
-
-                                   2/8
-                                   ---
-variables.c
-       - in push_func_var, if a variable is in a special builtin's temporary
-         environment and needs to be propagated because we're in Posix mode,
-         or we just need to propagate a variable, and we are executing in a
-         function without any local variables (so the function-local variable
-         context has no variable hash table), make sure we create a hash
-         table so we have a place to save the variable to be propagated.
-         Fixes bug reported by Crestez Dan Leonard <cdleonard@gmail.com>.
-
-                                  2/18
-                                  ----
-builtins/hash.def
-       - change add_hashed_command to remove the command being looked up from
-         the hash table before trying to add it.  That way, if it's not found,
-         there won't be anything remaining in the hash table
-
-                                  2/26
-                                  ----
-trap.[ch]
-       - move IMPOSSIBLE_TRAP_HANDLER define to trap.h so other parts of the
-         shell can use it
-
-parse.y
-       - change yy_readline_get to use IMPOSSIBLE_TRAP_HANDER instead of NULL
-         as a sentinel value for the SIGINT signal handler
-       - make sure yy_readline_get resets interrupt_immediately to 0 after
-         calling readline() using the same criteria it used to set it to 1
-         before the call -- make the code symmetric.  Suggested by Werner
-         Fink <werner@suse.de>
-
-builtins/read.def
-       - move assignment to `retval' before decrement of interrupt_immediately
-         and terminate_immediately and call to discard_unwind_frame
-       - move assign_vars label before decrement of interrupt_immediately and
-         terminate_immediately so those variables get reset appropriately
-         if read -t times out
-
-subst.h
-       - new define for Q_DOLBRACE, indicates double-quoted ${...}
-
-subst.c
-       - in parameter_brace_expand, before calling parameter_brace_expand_rhs,
-         add Q_DOLBRACE to `quoted' if we're within double quotes.
-       - in expand_word_internal, if the Q_DOLBRACE flag is set, remove a
-         backslash escaping a }.  Result of a Posix discussion on the
-         austin-group list
-
-                                  2/27
-                                  ----
-variables.c
-       - new functions to save and restore the PIPESTATUS variable's internal
-         array: save_pipestatus_array and restore_pipestatus_array
-
-variables.h
-       - new extern declarations for save_pipestatus_array and
-         restore_pipestatus_array
-
-trap.c
-       - in run_pending_traps, _run_trap_internal, and run_exit_trap, save
-         and restore $PIPESTATUS while traps are running.  Fixes bug
-         reported by Florian Bruhin <me@the-compiler.org>
-
-parse.y
-       - use save_pipestatus_array and restore_pipestatus_array in
-         save_parser_state and restore_parser_state, respectively, replacing
-         inline code
-
-lib/readline/histfile.c
-       - fix callers of history_filename to be prepared to cope with it
-         returning NULL
-       - change history_filename to return NULL if $HOME is not set, rather
-         than trying to write the history file in the current directory.
-         This is the default directory, used only if the application does
-         not specify a history filename.  Changed due to long-ago (unsent)
-         bug report from OpenBSD
-
-{Makefile,config.h,configure}.in,externs.h,lib/sh/{dprintf.c,Makefile.in}
-       - change fdprintf to dprintf, which is the Posix standard interface,
-         look for it with configure, replace it if not available
-
-                                  2/28
-                                  ----
-command.h
-       - add new subshell flag, SUBSHELL_RESETTRAP.  Indicates to the trap
-         builtin that the shell is executing a command substitution and
-         should free the trap strings we left unfreed by reset_signal_handlers()
-
-trap.c
-       - free_trap_string() and free_trap_strings() are now compiled in
-
-builtins/trap.def
-       - if changing a signal disposition and the SUBSHELL_RESETTRAP flag is
-         set in subshell_environment, free the trap strings left unfreed by
-         reset_signal_handlers
-
-subst.c
-       - in command_substitute, set the SUBSHELL_RESETTRAP flag.  This change
-         is for Austin Group Posix interpretation 53
-         (http://austingroupbugs.net/view.php?id=53)
-
-                                   3/7
-                                   ---
-lib/sh/{Makefile.in,strchrnul.c},Makefile.in
-       - implementation of strchrnul, from gnulib
-
-configure.in,config.h.in
-       - look for strchrnul and compile in version in lib/sh/strchrnul.c if
-         not available
-       - look for mbsnrtowcs and define HAVE_MBSNRTOWCS if available
-
-lib/sh/xmbsrtowcs.c
-       - new function, xdupmbstowcs2, fast version of xdupmbstowcs used when
-         mbsnrtowcs is available and the indices are not required.  Called
-         from xdupmbstowcs as required.  Initial patch from
-         <0xe2.0x9a.0x9b@gmail.com>
-
-                                  3/22
-                                  ----
-print_cmd.c
-       - call print_deferred_heredocs virtually every time a recursive call
-         to make_command_string_internal is made so here documents get
-         printed correctly when they are attached to commands inside compound
-         commands such as for and while.  Fixes bug reported by Mike
-         Frysinger <vapier@gentoo.org>
-
-                                  3/25
-                                  ----
-builtins/printf.def
-       - fix have_precision case in PF macro to call printf with precision
-         instead of fieldwidth argument.  Fixes bug reported by Rob Robason
-         <rob@robason.net>
-
-                                  3/26
-                                  ----
-trap.[ch]
-       - new function, signal_is_hard_ignored, returns true if the shell
-         inherited SIG_IGN as a signal's disposition
-       - new function, set_original_signal (sig, handler), provides interface
-         for rest of shell to set original_signals[sig] = handler
-
-execute_cmd.c
-       - execute_disk_command needs to call reset_terminating_signals in the
-         child process before resetting traps with restore_original_signals
-
-builtins/trap.def
-       - call initialize_terminating_signals before calling display_traps for
-         trap -p or trap without any other arguments.  Possible future use
-
-lib/readline/complete.c
-       - rl_filename_completion_function needs to call
-         rl_filename_dequoting_function with `dirname' (which has already
-         been tilde-expanded) instead of `users_dirname', because it calls
-         opendir with `dirname'.  Fixes bug reported by Stefan H. Holek 
-         <stefan@jarn.com>
-
-                                  3/27
-                                  ----
-sig.c
-       - experimental change to set_signal_handler: when setting the SIGCHLD
-         handler, set the SA_RESTART flag so that interruptible system calls
-         get restarted after a child dies.  Fixes bug reported by Tomas
-         Trnka <tomastrnka@gmx.com>, but needs further evaluation
-
-lib/sh/eaccess.c
-       - eaccess(2) apparently does only half the job: it does not check that
-         the permission bits on a file actually allow, for instance, execution.
-         Need to augment with a call to sh_stataccess if eaccess returns
-         success on FreeBSD.  Fixes FreeBSD problem reported by Johan Hattne
-         <johan.hattne@utsouthwestern.edu>
-
-                                  3/28
-                                  ----
-parse.y,bashline.c,externs.h
-       - history_delimiting_chars now takes a const char * as an argument:
-         the line being added to the history.  Changed callers
-
-parse.y
-       - bash_add_history should not add a semicolon separator if the current
-         history entry already ends in a newline.  It can introduce syntax
-         errors (e.g., when it results in a null command before a close brace).
-         Fixes bug reported by Andreas Schwab <schwab@linux-m68k.org>
-
-parse.y
-       - history_delimiting_chars needs to return a newline instead of a
-         semicolon if it thinks the current line starts a here document
-         (if it contains `<<').  Also keeps track of the fact with a new
-         static variable, LAST_WAS_HEREDOC, so it can return the right
-         sequence of newlines later for the here-document body.  Fixes bug
-         reported by Andreas Schwab <schwab@linux-m68k.org>
-
-                                  3/29
-                                  ----
-lib/sh/eaccess.c
-       - if the system has faccessat, sh_eaccess will now use it in
-         preference to all other options
-
-                                  3/30
-                                  ----
-subst.h
-       - new string_extract and extract_dollar_brace_string flag value:
-         SX_POSIXEXP, set if the shell is expanding one of the new Posix
-         pattern removal word expansions
-
-parser.h
-       - new definitions for "word expansion state", shared between parse.y
-         and subst.c
-
-subst.c
-       - include parser.h
-
-                                   4/9
-                                   ---
-builtins/declare.def
-       - make sure declare_internal calls bind_assoc_variable with newly-
-         allocated memory for the key argument when using an implicit key
-         of "0".  Bug report and fix from Andreas Schwab
-         <schwab@linux-m68k.org>
-
-                                  4/14
-                                  ----
-lib/readline/input.c
-       - restructure the rl_event_hook loop in rl_read_key to call the
-         event hook after rl_gather_tyi() returns and rl_get_char has
-         a chance to collect the input.  Previous behavior was to call
-         the event hook before attempting to read input.  Problem
-         reported by Anant Shankar <anantshankar17@gmail.com>
-
-                                  4/15
-                                  ----
-builtins/fc.def
-       - fc_builtin needs to check whether the calculation of last_hist
-         leaves hlist[last_hist] == 0, and keep decrementing it until it
-         leaves a non-null history entry or goes < 0.  Currently only
-         does this if saved_command_line_count > 0, indicating we're
-         trying to edit a multi-line command.  Fixes bug reported by
-         Roman Rakus <rrakus@redhat.com>
-
-                                  4/17
-                                  ----
-subst.c
-       - new process substitution helper functions:
-               unlink_fifo - closes a single FD or FIFO
-               num_fifos - returns number of open FDs or active FIFOs
-               copy_fifo_list - returns a bitmap of open FDs or active FIFOs
-                 by index into appropriate list (dev_fd_list or fifo_list)
-               close_new_fifos - take a bitmap saved by copy_fifo_list and
-                 call unlink_fifo on any FD or FIFO open at the time of the
-                 call that is not marked as active in list
-
-execute_cmd.c
-       - execute_builtin_or_function: use new framework to close process
-         substitution FDs or FIFOs created by a shell builtin or shell
-         function.  Fixes bug reported by Charles Duffy <charles@dyfis.net>
-
-doc/{bash.1,bashref.texi}
-       - document 'C and "C constants for printf builtin
-
-                                  4/22
-                                  ----
-lib/readline/complete.c
-       - new function to return screenwidth for use when displaying possible
-         matches: complete_get_screenwidth; changed uses of _rl_screenwidth
-         to use complete_get_screenwidth().
-       - change complete_get_screenwidth to query (readline-private)
-         _rl_completion_colums, $COLUMNS, then _rl_screenwidth in that order
-       - change rl_display_match_list to deal with limit < 0 (which implies
-         that cols == 0) when _rl_screenwidth > 0
-
-lib/readline/bind.c
-       - new bindable variable: completion-display-width, controls the
-         number of columns used when displaying completions with new
-         sv_compwidth function to call when value is set or unset
-
-lib/readline/doc/{readline.3,rltech.texi}
-       - documented completion-display-width variable
-
-                                  4/23
-                                  ----
-execute_cmd.c
-       - change execute_in_subshell to reset trap handlers without freeing
-         the trap strings and set SUBSHELL_RESETTRAP.  In line with Austin
-         Group interp #53 (trap in a subshell).
-       - ditto for execute_simple_command where it can be determined that
-         the shell is going to run a builtin or function in a subshell
-
-trap.c
-       - new function, get_all_original_signals, retrieves the original
-         signal disposition for all signals
-
-trap.h
-       - extern declaration for get_all_original_signals
-
-builtins/trap.def
-       - change showtrap to display signals that are "hard ignored" as
-         trap commands to ignore them, even though that trap command would
-         be a no-op.  Partial fix for feature request from Siddhesh
-         Poyarekar <siddhesh.poyarekar@gmail.com>
-       - change trap_builtin to call get_all_original_signals before displaying
-         traps.  This will show inherited ignored signals.  Rest of feature
-         request from Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
-
-lib/readline/histexpand.c
-       - fix history_tokenize_word so that it understands $(...) and the
-          <(...) and >(...) expansions as a single word
-       - change history_tokenize_word so that it understands extended shell
-         globbing patterns as a single word.  Code is very similar to
-         $(...) code above.  Bug reported by Rajeev V. Pillai
-         <rajeevvp@gmail.com>
-
-                                  4/24
-                                  ----
-lib/readline/vi_mode.c
-       - add checks to rl_vi_char_search to make sure we've already done a
-         search if the command is `;' or `,', and return immediately if we
-         have not.  Fixes bug reported by Eric Ho <ericmho@shaw.ca>
-
-lib/readline/text.c
-       - make sure `dir' is in the valid range before searching in
-         _rl_char_search_internal.  Range checks in the code depend on it
-         being non-zero
-
-                                   5/3
-                                   ---
-lib/readline/complete.c
-       - in rl_complete_internal, if show-all-if-ambiguous or
-         show-all-if-unmodified are set (what_to_do == '!' or '@',
-         respectively), and the common match prefix is shorter than the
-         text being completed, inhibit inserting the match.
-         The guess is that replacing text with a shorter match will not
-         be wanted
-
-                                  5/20
-                                  ----
-lib/sh/unicode.c
-       - new file, with unicode character conversion-related code.  Will be
-         used to implement \u and \U escapes where appropriate, and for
-         other unicode-related functions in the future
-
-                                  5/21
-                                  ----
-builtins/printf.def
-       - add code to handle \u and \U escapes in format strings and arguments
-         processed by the %b format specifier
-
-lib/sh/strtrans.c
-       - add code to handle \u and \U escapes as unicode characters, works for
-         both `echo -e' and $'...'
-
-doc/{bash.1,bashref.texi}
-       - document new \u and \U escape sequences for $'...' and echo (printf
-         defers to the system's man page or Posix)
-
-                                  5/24
-                                  ----
-execute_cmd.c
-       - change execute_disk_command to return a status, instead of just
-         leaving it in `last_command_exit_value', since the parent's return
-         value is sometimes used (e.g., when a restricted shell refuses to
-         run a command with a `/').  Fixes bug reported by David Pitt
-         <David.Pitt@anz.com>
-
-                                  5/25
-                                  ----
-bashline.c
-       - change bash completion functions to save and restore the value of
-         rl_ignore_some_completions_function, and set it to the bash default
-         of filename_completion_ignore where appropriate.  Fixes bug
-         reported by Henning Bekel <h.bekel@googlemail.com>
-
-variables.c
-       - new convenience function: find_global_variable (name).  Looks for
-         NAME in the global variables table, skipping any local and
-         temporary environment variables
-
-builtins/declare.def
-       - add new -g option to declare/typeset/local, forces variables to be
-         created or modified at the global scope when executing inside a
-         shell function.  Requested by many, most recently by
-         konsolebox@gmail.com
-
-                                  5/27
-                                  ----
-test.c
-       - added new `-v var' unary test operator; returns TRUE if var is set
-         (i.e., has been assigned a value).  Works in both test builtin and
-         [[ conditional command
-
-doc/{bash.1,bashref.texi}
-       - documented new `-v var' unary conditional operator
-
-tests/test.tests
-       - added tests for new -v var operator
-
-builtins/kill.def
-       - change kill builtin so -PID (pgrp specification) following a
-         -s sig or -n sig option is not interpreted as a signal specification.
-         Fixes bug reported by Roman Rakus <rrakus@redhat.com>
-
-builtins/evalstring.c
-       - in parse_and_execute, if parse_command() returns non-zero,
-         indicating a parse error, exit the shell if the conditions require
-         a posix-mode non-interactive shell to abort (parse error in a `.'
-         script or eval string).  Bash-4.1 only printed a warning.  This is
-         from Austin Group interp 114
-
-doc/bashref.texi
-       - add note to the posix mode section of the texinfo manual noting
-         the changed behavior for `.' and `eval'
-
-parse.y
-       - change time_command_acceptable to allow TIME token to appear after
-         BANG token (to allow `! time foo', which is supposed to be valid)
-       - change pipeline_command production to allow multiple instances of
-         `!' (which toggle inverting the return status) and `time' (which
-         have no effect)
-
-execute_cmd.c
-       - In posix mode, `time' without a following pipeline prints the
-         elapsed user, system, and real time for the shell and its
-         children since the shell was invoked.
-         It's like `times' but obeys the setting of TIMEFORMAT.  A future
-         revision of Posix will require this
-
-doc/{bashref.texi,bash.1}
-       - document new posix mode use of `time' 
-
-parse.y
-       - add production to pipeline_command that permits `!' by itself to
-         be equivalent to `false' (and, with the changes above, permits
-         `! !' to be roughly equivalent to `true').  A future revision of
-         Posix will require this
-
-                                  5/28
-                                  ----
-parse.y
-       - fix \W prompt expansion to use memmove instead of strcpy, since the
-         source and target strings overlap (though you think it wouldn't
-         matter, since the overlapping regions are never touched at the same
-         time).  Fixes bug reported by Stéphane Jourdoi
-         <sjourdois@gmail.com>
-
-parse.y
-       - Posix interp 217 states that $(( must be parsed first as an
-         arithmetic expansion, so avoid attempting to parse it as a nested
-         command substitution.  Fixes bug reported by several, most recently
-         <jwm@horde.net>
-
-subst.c
-       - change extract_delimited_string to process nested $( as a possible
-         command substitution, but only if already parsing an arithmetic
-         expansion.  Rest of fix for Posix interp 217
-       - change parameter_brace_expand_rhs to make the := expansion operator
-         perform quote removal and both assign the result to the variable and
-         return it as the result of the expansion, rather than assign the
-         value after quote removal but return the value before quote removal.
-         Posix interp 221
-       - introduce new internal quoting flag: Q_DOLBRACE.  Denotes a double-
-         quoted ${...} expansion.  In this case, Posix interp 221 requires
-         that a backslash quoting an embedded `}' be removed, even though it's
-         not one of the characters marked as special inside double quotes.
-         Set in parameter_brace_expand, used by expand_word_internal.
-
-parse.y
-       - introduce new parsing state, P_DOLBRACE, set when parsing a ${...}
-         expansion
-       - set a "dolbrace operator state" in parse_matched_pair to decide
-         whether the lexer is reading the param, op, or word in
-         ${paramOPword}.  Will be used to decide whether or not to treat
-         single quotes specially in a double-quoted "${...}
-
-                                  5/29
-                                  ----
-parse.y
-       - change parse_matched_pair so that a single quote appearing in a
-         double-quoted ${...} expansion is not special unless the expansion
-         operator is `#[#]' or `%[%]'.  Posix interp 221
-
-subst.c
-       - change string_extract_double_quoted so that a single quote appearing
-         in a double-quoted ${...} expansion is not special unless the
-         expansion operator is `#[#]' or `%[%]'.  Posix interp 221
-
-doc/bashref.texi
-       - document posix-mode effects of Posix interp 221
-       - add section describing GNU parallel as requested by Stallman
-
-lib/readline/complete.c
-       - broke code that compares filenames read from the file system (and
-         possibly converted) to words being completed out into a separate
-         function: complete_fncmp
-       - augment complete_fncmp to treat hyphen and underscore as equivalent
-         when comparing filenames if _rl_completion_case_map is set
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_completion_case_map
-
-lib/readline/util.c
-       - change _rl_strnicmp to return the difference between the characters,
-         like strcasecmp, and not modify the pointers it is passed
-       - change _rl_stricmp to not modify the pointers it is passed
-
-lib/readline/bind.c
-       - new bindable variable, "completion-case-map", toggles value of
-         _rl_completion_case_map
-
-lib/readline/doc/{rluser.texi,readline.3}
-       - document new bindable readline variable "completion-case-map"
-
-execute_cmd.c
-       - change execute_function to reset funcnest and jump back to top level
-         if funcnest exceeds funcnest_max
-       - use funcnest_max as a max function nesting level, if set to numeric
-         value greater than 0 (defaults to 0, so inactive)
-
-variables.c
-       - new variable FUNCNEST, controls funcnest_max value if set to numeric
-         value > 0
-sig.c
-       - reset funcnest to 0 when throw_to_top_level occurs
-
-doc/{bash.1,bashref.texi}
-       - document FUNCNEST variable and its effect on function execution
-
-lib/readline/funmap.c
-       - add new bindable command names to avoid case-insensitive matching
-         problems between, for instance, vi-fword and vi-fWord:
-
-               vi-forward-word
-               vi-forward-bigword
-               vi-backward-word
-               vi-backward-bigword
-               vi-end-word
-               vi-end-bigword
-
-         Suggested in a different form in 2006 (!) by Servatius Brandt
-         <servatius.brandt@arcor.de>
-
-builtins/mapfile.def
-       - run_callback now takes a new third argument: curline, the line
-         currently being read and about to be assigned
-       - the callback function/command now takes an additional argument:
-         the line to be assigned to the array index.  Feature suggested by
-         Dennis Williamson <dennistwilliamson@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - document new additional `line' argument to mapfile callback
-
-                                  5/30
-                                  ----
-builtins/printf.def
-       - add new %(fmt)T format specifier, where FMT is a strftime format.
-         Argument is number of seconds since the epoch, with -1 meaning
-         current time (roughly date +%s) and -2 meaning shell start time
-         (roughly $SECONDS, unless it's been assigned a value or unset).
-         Fieldwidth and precision are preserved, strftime result is printed
-         as with %[-][[fieldwidth][.[precision]]]s
-
-doc/{bash.1,bashref.texi}
-       - document new %(datefmt)T printf format specifier and special
-         arguments
-
-builtins/hash.def
-       - don't permit programs with slashes to be entered into the hash table
-         at all, even with the -p option.  Inconsistency pointed out by
-         Jan Schampera <jan.schampera@web.de>
-
-builtins/shopt.def
-       - add `compat41' option in preparation for bash-4.2
-
-                                   6/6
-                                   ---
-lib/readline/vi_mode.c
-       - finish restructuring rl_vi_domove and the functions that call it so
-         it works in callback mode, including numeric arguments.  Requested
-         a long time ago by Bob Rossi 
-
-lib/readline/callback.c
-       - arrange to call appropriate callback when readline state indicates
-         RL_STATE_VIMOTION, so vi motion commands like `cw' and `d2w' are
-         handled in callback mode
-
-lib/sh/wcswidth.c
-       - replacement wcswidth implementation
-
-aclocal.m4
-       - add REPLACE_FUNCS(wcswidth) to BASH_CHECK_MULTIBYTE
-
-execute_cmd.c
-       - fix select_query and print_index_and_element to compute correct
-         display width of select list elements in presence of multibyte
-         characters.  Bug reported by Bernd Eggink <monoped@sudrala.de>
-
-builtins/cd.def
-       - add posix-mandated -e option; currently ignored in most circumstances
-
-doc/{bash.1,bashref.texi}
-       - document new `cd -e' option
-
-                                  6/12
-                                  ----
-arrayfunc.c
-       - change array_value_internal to treat negative subscripts to indexed
-         arrays, offset from array_max_index(x) + 1, so foo[-1] is the last
-         element of $foo
-
-subst.c
-       - Change verify_substring_values to allow negative length specifications
-         when using string variables or array members.  Negative lengths
-         mean to return characters from OFFSET until (${#var} - N) for
-         {var:offset:-N}.  Feature requested by Richard Neill
-         <rn214@hermes.cam.ac.uk>
-
-doc/{bash.1,bashref.texi}
-       - document new behavior of negative subscripts to indexed arrays
-       - document new behavior of negative LENGTH in substring expansion
-
-configure.in
-       - change version to bash-4.2-devel
-
-variables.c
-       - make sure initialize_shell_variables calls sv_xtracefd if
-         BASH_XTRACEFD is inherited in the shell environment.  Fixes but
-         reported by <jsunx1@bellsouth.net>
-
-                                  6/13
-                                  ----
-lib/readline/complete.c
-       - change get_y_or_n to always return 1 when in callback mode, so we
-         don't do a blocking read.  Have to wait until readline-7.0 to add
-         a state so we can use callbacks, since that will change public
-         interface
-
-                                  6/17
-                                  ----
-subst.c
-       - fix memory leak in parameter_brace_expand: when performing pattern
-         removal with parameter_brace_remove_pattern, make sure `name' is
-         freed.  Fixes bug reported by oyvindh@dhampir.no
-
-                                  6/23
-                                  ----
-{parse.y,subst.c}
-       - make the ${param//pat/rep}, ${param^pat}, and ${param,pat} expansions
-         require single quotes and double quotes to match when within double
-         quotes.  This way every expansion except the Posix ones behaves as
-         bash has always behaved
-
-subst.c
-       - change remove_upattern and remove_wpattern to return their first
-         argument if nothing matches, change callers to allocate memory
-         appropriately
-       - change remove_pattern to short-circuit and return copy of PARAM
-         if remove_wpattern returns its first argument (indicating no match)
-         rather than convert back to multibyte string, allocating new memory
-         twice and calling wcsrtombs
-
-                                  6/24
-                                  ----
-execute_cmd.c
-       - add missing initializers for sh_coproc to eliminate a compiler
-         warning.  Patch from Werner Fink <werner@suse.de>
-
-                                  6/27
-                                  ----
-parse.y
-       - add `TIMEIGN' token to handle `time -p -- ...'.  Pointed out by
-         Laszlo Ersek <lacos@caesar.elte.hu> on austin-group list
-
-                                  6/28
-                                  ----
-jobs.c
-       - treat a shell with (subshell_environment&SUBSHELL_PIPE) != 0 like
-         a command substitution in wait_for and act like we received a
-         SIGINT if a job we're waiting for dies of SIGINT.  Fixes bug
-         reported by Ilya Basin <basinilya@gmail.com>
-
-                                   7/2
-                                   ---
-jobs.c
-       - if fork() fails in make_child, try to reap some dead children before
-         retrying
-
-execute_cmd.c
-       - change execute_pipeline to run the last command of a non-asynchronous
-         pipeline in the current shell environment if the `lastpipe' shell
-         option is enabled and job control is not active.  Code from
-         Werner Fink <werner@suse.de>
-
-parse.y
-       - Posix says (issue 267) that time is not recognized as a keyword
-         if the next token begins with a `-'
-
-doc/{bash.1,bashref.texi}
-       - changed the descriptions of BASH_SOURCE, BASH_LINENO, and FUNCNAME
-         as proposed in Ubuntu bug 591677.
-       - document new `lastpipe' shell option that runs last command of a
-         pipeline in the current shell environment
-       - document new posix-mode behavior with `time -p'
-
-                                   7/5
-                                   ---
-aclocal.m4
-       - new autoconf test WEXITSTATUS_OFFSET, bit offset in status word
-         returned by wait() of the process's exit status
-
-jobs.[ch]
-       - change stop_pipeline to return the actual index of the job just
-         created and added to the jobs table, instead of the current job
-       - job_exit_status and job_exit_signal are now global functions, with
-         extern declarations in jobs.h
-       - append_process: new utility function for use by the lastpipe code,
-         takes info, creates a PROCESS from them, and adds it to the end of
-         the passed job id's pipeline.  lastpipe code uses it to add a dummy
-         process for the last command in the pipeline
-       - freeze_jobs_list: new utility function so rest of shell can freeze
-         the jobs list.  Used by the lastpipe code
-
-execute_cmd.c
-       - changes to lastpipe code to make `pipefail' option, $PIPESTATUS, and
-         $? work correctly.  Uses append_process and job_exit_status
-
-                                  7/10
-                                  ----
-subst.c
-       - when performing pattern substitution word expansions, a `&' in the
-         replacement string is replaced by the text matched by the pattern.
-         The `&' can be quoted with a backslash to inhibit the expansion.
-         CURRENTLY DISABLED
-
-                                  7/13
-                                  ----
-pcomplib.[ch]
-       - new member for struct compspec: lcommand.  for future use
-
-                                  7/15
-                                  ----
-parse.y
-       - fix problem in parse_comsub where extra space was added to here-doc
-         delimiter if the first word in the comsub contained a `/'.  Fixes
-         bug reported by Alex Khesin <alexk@google.com>
-
-                                  7/20
-                                  ----
-parse.y
-       - change reserved_word_acceptable to return success if the last two
-         tokens read were `function WORD'.  Allows function definitions like
-         function good [[ -x foo ]];.  Fixes bug reported by Linda Walsh
-         <bash@tlinx.org>
-
-doc/{bash.1,bashref.texi}
-       - change function definition meta-syntax to make it clearer, rather
-         than let the text note the optional portions
-
-                                  7/24
-                                  ----
-bashhist.c
-       - change bash_history_inhibit_expansion() to suppress history expansion
-         for $! parameter expansion.  Fixes debian bug #589745 submitted by
-         Frank Heckenbach <f.heckenbach@fh-soft.de>
-
-lib/readline/terminal.c
-       - change rl_resize_terminal to always fetch the new terminal size and
-         only force the redisplay if _rl_echoing_p is non-zero.  Fixes bug
-         reported by Balazs Kezes <rlblaster@gmail.com>
-
-                                  7/25
-                                  ----
-lib/readline/xfree.c
-       - new file, contains definition of xfree moved from xmalloc.c
-
-                                  7/28
-                                  ----
-variables.c
-       - check suspect return values from bind_variable before trying to use
-         the returned SHELL_VAR *.  Changes to: initialize_shell_variables,
-         bind_int_variable, FIND_OR_MAKE_VARIABLE.  Fixes bug reported by
-         Roman Rakus <rrakus@redhat.com>
-
-                                  7/31
-                                  ----
-lib/readline/rltty.c
-       - fix rl_prep_terminal and rl_deprep_terminal to use fileno(stdout)
-         if rl_instream is NULL.  Fixes bug reported by Otto Allmendinger
-         otto.allmendinger@googlemail.com
-
-                                   8/2
-                                   ---
-lib/sh/casemod.c
-       - if the passed string is NULL or empty, return it immediately.  Fixes
-         bug reported by Dennis Williamson <dennistwilliamson@gmail.com>
-
-subst.c
-       - fix pat_subst to cope with the passed string being NULL
-
-arrayfunc.h
-       - added flag values for array_value_internal and its callers; converted
-         array_value_internal `allow_all' parameter into a general flags word
-       - get_array_value now takes a flags value
-       - changed array_value internal to use *indp as an index to use if the
-         AV_USEIND flag is set, rather than recomputing it
-
-subst.c
-       - get_var_and_type takes two new parameters: a flags word and an index
-         that represents an already-computed index for an array reference
-         (just indexed arrays so far).  Index is used and passed to array_value
-         if flags includes AV_USEIND
-       - parameter_brace_expand_word takes a new argument: the already-
-         computed index; returns W_ARRAYIND if word expanded is being used
-         as an array index
-       - changed parameter_brace_casemod, parameter_brace_patsub,
-         parameter_brace_substring, parameter_brace_remove_pattern to take new
-         flags and index arguments from parameter_brace_expand_word.  They
-         pass the new parameters along to get_var_and_type to use an
-         already-computed array index if necessary.  Fixes bug where array
-         indexes are computed twice reported by Andrew Benton
-         <b3nton@gmail.com>
-
-doc/bash.1,lib/readline/doc/{history.3,hsuser.texi}
-       - modified description of history event designators to clarify that
-         all non-absolute event designators are relative to the current
-         position in the history list.  Question raised by Frank
-         Heckenbach <f.heckenbach@fh-soft.de> as debian bash bug 590012
-
-                                   8/5
-                                   ---
-subst.c
-       - remove code that does not add a quoted null when the input string
-         is partially quoted; subsequent word splitting may require it.
-         Fixes bug reported by Eric Blake <eblake@redhat.com>
-
-                                  8/12
-                                  ----
-lib/glob/gmisc.c
-       - move match_pattern_wchar and match_pattern_char to new file in
-         glob library
-       - new functions: wmatchlen(pat, max) and umatchlen(pat, max), computes
-         number of characters PAT will match.  Returns the number of chars
-         that will be matched or -1 if the match length is indeterminate
-         (i.e., contains a `*')
-
-subst.c
-       - use umatchlen/wmatchlen in match_upattern/match_wpattern to bound
-         the number of match attempts in large strings to (usually) one,
-         depending on match length.  Fixes performance problems with
-         pattern substitution in large strings noted by Yi Yan
-         <yiyan97@hotmail.com>.  Can be applied to remove_[uw]pattern also
-
-                                  8/13
-                                  ----
-bashhist.c
-       - in maybe_append_history, change check for history_lines_this_session
-         so that we append the lines to the file if it's equal to the value
-         returned by where_history().  This means that without this change,
-         the history won't be appended if all the lines in the history list
-         were added in the current session since the last time the history
-         file was read or written.  Fixes bug reported by Bruce Korb
-         <bruce.korb@gmail.com>
-
-shell.h,parse.y
-       - add prompt_string_pointer to the parser_state struct saved and
-         restored by {save,restore}_parser_state.  Fixes both bugs exposed
-         by bash_completion and completion of open backquotes reported by
-         Egmont Koblinger <egmont@gmail.com>
-
-subst.h
-       - new flag for skip_to_delim: SD_EXTGLOB.  Skip extended globbing
-         patterns while looking for ending delimiter
-
-subst.c
-       - when passed the SD_EXTGLOB flag, skip_to_delim skips over extended
-         globbing patterns (when extended_glob is set) while looking for a
-         character in the delimiter set
-
-pathexp.c
-       - split_ignorespec: new function to replace calls to extract_colon_unit
-         in setup_ignore_patterns.  uses skip_to_delim with the SD_EXTGLOB
-         flag to skip over extended globbing patterns in variables like
-         HISTIGNORE and GLOBIGNORE.  Fixes bug reported by Dimitar DIMITROV
-         <mitkofr@yahoo.fr> and Greg Wooledge <wooledg@eeg.ccf.org>
-
-                                  8/28
-                                  ----
-lib/readline/rlprivate.h
-       - add members to search_cxt to save _rl_keymap
-       - new flag for isearch context: SF_CHGKMAP, set if we changed the
-         keymap while reading a character for the search string that
-         translated to a command
-
-lib/readline/isearch.c
-       - save current readline keymap in cxt->keymap and cxt->okeymap
-         in _rl_scxt_alloc
-       - in _rl_isearch_dispatch, only check for cxt->lastc as a member of
-         cxt->search_terminators if it's > 0 (i.e., not an isearch opcode)
-
-                                   9/3
-                                   ---
-support/signames.c
-       - add Solaris SIGJVM1 and SIGJVM2.  Update from Stefan Teleman
-         <stefan.teleman@oracle.com>
-
-shell.c
-       - instead of closing all fds 3-20 at shell startup, just set them to
-         be close-on-exec.  Report from Rainer Mülle <raimue@macports.org>
-
-lib/readline/isearch.c
-       - in _rl_isearch_dispatch, if the current character maps to ISKMAP,
-         move to the indicated keymap (using cxt->keymap) and go on to
-         read another character.  Fixes problem reported by Davor
-         Cubranic <cubranic@stat.ubc.ca>
-       - in _rl_isearch_dispatch, after translating key to possible opcode,
-         restore _rl_keymap from cxt->okeymap if necessary
-       - in _rl_isearch_dispatch, use key sequences that map to default
-         functions that ^G, ^W, and ^Y map to as equivalent to those chars
-
-lib/readline/complete.c
-       - new variable, _rl_menu_complete_prefix_first, zero by default
-       - change menu_complete to display common prefix (matches[0]) first
-         before cycling through rest of match list if
-         _rl_menu_complete_prefix_first is non-zero.  Suggested by Sami
-         Pietila <sami.pietila@gmail.com>
-
-lib/readline/bind.c
-       - new bindable readline variable, "menu-complete-display-prefix",
-         controls setting of _rl_menu_complete_prefix_first
-
-doc/{bash.1,bashref.texi},lib/readline/doc/{readline.3,rluser.texi}
-       - added description of menu-complete-display-prefix bindable
-         readline variable
-
-                                  9/17
-                                  ----
-configure.in
-       - remove AM_PATH_LISPDIR call since we don't use that bash debugger
-         any more.  Suggested by Mike Frysinger <vapier@gentoo.org>
-
-                                  10/6
-                                  ----
-findcmd.c
-       - change executable_file to set errno to EISDIR if the passed name
-         is a directory
-
-builtins/exec.def
-       - change exec_builtin to report appropriate error message if the
-         file argument is a directory.  Noted by Eric Blake <eblake@redhat.com>
-         in a message to austin-group
-
-builtins/source.def
-       - change source_builtin to make sure the shell exits if the file is
-         not found when in a non-interactive shell running in  posix mode
-         and source_searches_cwd == 0 (as posix mode makes it by default).
-         Pointed out in http://thread.gmane.org/gmane.comp.shells.dash/291/focus=392
-         by Jilles Tjoelker <jilles@stack.nl>
-
-execute_cmd.c
-       - set executing_command_builtin in execute_builtin if the builtin is
-         command_builtin.  Unwind-protected in execute_function_or_builtin
-         (like executing_builtin variable).  Available for rest of shell
-
-builtins/{source.def,evalfile.c}
-       - make sure that non-interactive posix mode shells exit if the file
-         argument to `.' is not found only if they are not being executed
-         by the command builtin (executing_command_builtin == 0).  This is
-         how `command' can cancel effects of special builtin exit properties
-         in the case of `dot file not found'
-
-                                  10/13
-                                  -----
-lib/sh/strtrans.c
-       - pass \c through unchanged if not escaping for `echo -e' and they are
-         the final two characters in the string
-
-                                  10/15
-                                  -----
-subst.c
-       - extract_dollar_brace_string: fix problem with single quotes
-         in unquoted ${...} for Posix compliance
-
-                                  10/16
-                                  -----
-builtins/exec.def
-       - catch return value from shell_execve; don't print duplicate error
-         message if return value is EX_NOTFOUND.  Make sure exit status
-         from exec is 127 if command is not found
-
-execute_cmd.c
-       - fix typo (`saved_redirects' should be `saved redirects') in
-         execute_function_or_builtin `command exec' case.  Typo caused
-         too much of the unwind-protect stack to be discarded
-       - in same execute_function_or_builtin case, don't discard the
-         `saved redirects' frame unconditionally; only discard it if
-         saved_redirects is non-null in the `command exec' case.  Fixes
-         sh -c 'command exec; exit 1' hanging bug uncovered by FreeBSD
-         sh test cases
-
-                                  10/18
-                                  -----
-subst.c
-       - when in posix mode, shell should not exit if a variable assignment
-         error (e.g., assigning to readonly variable) occurs preceding a
-         command that is not a special builtin.  Fixes bug uncovered by
-         FreeBSD sh test cases
-       - when in posix mode, the ${!?} and ${!#} expansions are not indirect
-         expansions, but posix word expansions involving the `!' variable
-
-parse.y
-       - fix parse_comsub so that it does not skip backslash-newline when
-         parsing a comment
-
-                                  10/19
-                                  -----
-subst.c
-       - fix parameter_brace_expand so that an attempt to use the % or #
-         expansions on an unset variable with -u set will cause a non-
-         interactive shell to abort.  Posix change
-       - fix parameter_brace_expand so that an attempt to use pattern
-         substitution or case modification expansions on an unset variable
-         with -u set will cause and unbound variable error and make a
-         non-interactive shell abort
-       - change parameter_brace_expand_length to return INTMAX_MIN if a
-         positional parameter is unset and -u is set
-       - if parameter_brace_expand_length returns INTMAX_MIN when -u is set,
-         treat it as an unbound variable error and make a non-interactive
-         shell abort.  Posix change
-       - change parameter_brace_expand_length to return INTMAX_MIN if an
-         implicit reference to array[0] is made ${#array} and array[0] is
-         not set when -u is set
-
-                                  10/20
-                                  -----
-builtins/cd.def
-       - Posix 2008 says that if no matching directories are found in $CDPATH,
-         use the directory name passed as an operand and go on.  Posix change
-
-doc/bashref.texi
-       - change Posix mode section with latest additions and removals
-
-                                  11/4
-                                  ----
-lib/readline/complete.c
-       - fix rl_menu_complete and rl_old_menu_complete to keep incrementing
-         match_list_index by match_list_size as long as it's < 0.  Fixes
-         bug reported by jeenuv@gmail.com
-
-braces.c
-       - make mkseq() take intmax_t arguments for sequence start and end
-         and make sure it's passed intmax_t values.  Fixes bug reported by
-         Pete Gregory <pg@bushlitt.org>
-
-sig.c
-       - if termsig_handler is called when terminate_immediately == 1,
-         assume we're being called as a signal handler and set
-         history_lines_this_session to 0 to inhibit history file being
-         written on shell exit.  Fixes long-standing bug most recently
-         observed by Andreas Schwab <schwab@linux-m68k.org>
-
-                                  11/5
-                                  ----
-redir.c
-       - add_undo_close_redirect now returns int, 0 on success, non-zero on
-         failure.  Currently always succeeds
-       - new macro REDIRECTION_ERROR to make do_redirection_internal return
-         value of errno
-       - change do_redirection_internal to call REDIRECTION_ERROR after
-         saving file descriptor and make do_redirection_internal return error
-         if add_undo_redirect or add_undo_close redirect fails.  This makes
-         failure to save a file descriptor a redirection error and the shell
-         behaves appropriately.  Fixes bug reported by Eric Blake
-         <eblake@redhat.com>
-
-bashline.c
-       - modify bash_forward_shellword to correctly handle quoted strings,
-         especially if point is in a quoted string when function is invoked.
-         Fixes bug reported by Daniel Colascione <dan.colascione@gmail.com>
-
-configure.in
-       - change version to 4.2-alpha
-
-                                  11/7
-                                  ----
-lib/readline/text.c
-       - in rl_insert, if we're not in the multibyte code path, don't try to
-         optimize and insert all of the available typeahead input if we're
-         reading input from a macro.  Fixes bug reported by Andre Majorel
-         <aym-ung@teaser.fr>
-
-lib/readline/text.c
-       - break out multibyte guts of rl_forward_char into a separate function
-         _rl_forward_char_internal that does nothing but calculate the new
-         value of point
-       - change rl_forward_char to call _rl_forward_char_internal instead of
-         having equivalent code inline
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_forward_char_internal
-
-lib/readline/vi_mode.c
-       - change _rl_vi_append_forward to call _rl_forward_char_internal to
-         set rl_point, instead of calling rl_forward_char.  When at the end
-         of the line, rl_forward_char will ring the bell.  Fixes debian
-         bash bug 601042, reported by Alan J. Greenberger <alanjg@ptd.net>
-
-                                  11/14
-                                  -----
-subst.c
-       - fix match_upattern to use correct test to immediately break out of
-         loop (when potential match length is greater than number of chars
-         remaining in the string) in MATCH_ANY case
-
-                                  11/15
-                                  -----
-subst.c
-       - include "typemax.h" to make sure we have a definition of INTMAX_MIN
-
-                                  11/16
-                                  -----
-lib/sh/unicode.c
-       - make sure `localconv' isn't declared on machines without iconv
-       - add stub_charset for systems that don't have locale_charset: looks
-         up LC_CTYPE, returns everything after last `.', "UTF-8" if the
-         value is exactly "UTF-8", and "ASCII" otherwise
-
-                                  11/20
-                                  -----
-lib/readline/vi_mode.c
-       - in rl_domove_motion_callback, make sure to use m->key instead of
-         key, which is not initialized and should not be used.  Bug report
-         from Andreas Schwab <schwab@linux-m68k.org>
-       - in rl_vi_domove, make assignment to `m' explicit instead of
-         relying on evaluation order semantics, since the C standard leaves
-         them unspecified.  Bug report from Andreas Schwab
-         <schwab@linux-m68k.org>
-
-                                  11/21
-                                  -----
-lib/sh/shquote.c
-       - sh_single_quote and sh_double_quote now take a const char *
-         argument.  Fixes problem pointed out by Joachim Schmitz
-         <jojo@schmitz-digital.de>
-
-externs.h
-       - change extern declarations for sh_single_quote and sh_double_quote
-
-lib/sh/strchrnul.c
-       - make sure that return value is cast to (char *) if we're using a
-         part of the passed (const char *) argument.  Fixes problem pointed
-         out by Joachim Schmitz <jojo@schmitz-digital.de>
-
-lib/glob/gmisc.c
-       - fix a typo that mixed up defines for LPAREN and RPAREN.  Bug and
-         fix from Andreas Schwab <schwab@linux-m68k.org>
-       - use WLPAREN and WRPAREN in multibyte character environments
-       - fixed typos using L'cc' in a non-wide-char environment
-
-lib/readline/complete.c
-       - fix rl_filename_completion_function to dequote users_dirname if
-         there is a filename dequoting function (as well as dirname), since
-         users_dirname gets tacked back onto the beginning of the possible
-         completions and then requoted.  Bug reported by Andreas Schwab
-         <schwab@linux-m68k.org>
-
-                                  11/22
-                                  -----
-lib/readline/parens.c
-       - the `blink-matching-paren' variable should default to off
-
-                                  11/23
-                                  -----
-subst.h
-       - add extern declaration for close_new_fifos()
-
-lib/sh/fnxform.c
-       - fix curencoding to return the character past the `.', not a string
-         beginning with `.'
-
-lib/sh/unicode.c
-       - fix stub_charset to do the same cut-off at `@' as curencoding().
-         These two functions should be combined
-
-builtins/printf.def
-       - document new %(datefmt)T modifier in help text
-
-                                  11/24
-                                  -----
-parse.y
-       - fix `W' case in decode_prompt_string: memmove was copying one too
-         few bytes and missed the closing NUL.  Bug report from Tim Mooney
-         <Tim.Mooney@ndsu.edu>
-
-                                  11/26
-                                  -----
-subst.c
-       - in expand_word_internal, don't add quoted nulls to partially-
-         quoted strings if the word will not be subjected to word splitting
-         later (which will remove the quoted null).  Fixes bug reported by
-         Rocky Bernstein <rocky.bernstein@gmail.com>
-
-                                  11/28
-                                  -----
-subst.c
-       - change multibyte case of match_pattern to revert to match_upattern
-         if neither the pattern nor the string has any multibyte characters
-
-alias.c
-       - fix tests of backslash-escaped characters in skipquotes, skipws,
-         rd_token to check for backslash at EOS and not go past the end.
-         Fixes debian bug 603696 reported by Tim Small <tim@buttersideup.com>
-
-include/shmbchar.h
-       - new file, mbchar.h from gnulib minus the <stdbool.h> include
-
-lib/sh/shmbchar.c
-       - new file, mbchar.c from gnulib with additions
-       - moved mbstrlen from subst.c to here, changed initialization of mbs
-       - change mbstrlen to use is_basic to avoid calls to mbrlen for ASCII
-         chars; code hints from gnulib
-       - don't copy mbs and mbsbak if we're not calling mbrlen
-
-                                  11/29
-                                  -----
-lib/glob/smatch.c
-       - change xstrmatch to use internal_strmatch() if the pattern and
-         string don't have any multibyte characters
-
-                                  11/30
-                                  -----
-include/shmbutil.h
-       - change ADVANCE_CHAR and ADVANCE_CHAR_P macros to use is_basic and
-         only call mbrlen and copy state and state_bak if is_basic returns
-         false (non-ASCII).  Called all over the place.
-       - change rest of macros except BACKUP_CHAR and BACKUP_CHAR_P in the
-         same way
-
-                                  12/2
-                                  ----
-subst.c
-       - audit all calls to string_list and make sure caller can handle a
-         NULL return value.  Fixes bug reported by David Rochberg
-         <rochberg@google.com>
-
-general.h
-       - change sh_wassign_func_t to take an additional argument: an int
-         flags word
-
-subst.c
-       - change do_word_assignment to take an additional argument to match
-         wassign_func_t; change callers
-       - change call to (*assign_func) in expand_word_list_internal to match
-         new wassign_func_t prototype
-       - (*assign_func) passes 1 as additional arg if the simple command is
-         a builtin or function, in which case the assignment to the
-         temporary env should take effect
-
-variables.c
-       - change assign_in_env to take an additional argument to match
-         wassign_func_t; change callers
-       - move call to sv_ifs from dispose_temporary_env to
-         dispose_used_env_vars; we don't need to do it if called from
-         merge_temporary_env
-
-                                  12/3
-                                  ----
-variables.c
-       - change dispose_temporary_env to maintain a list (tempvar_list) of
-         variables that need to be handled specially.  If a variable that
-         gets freed by push_temp_var or propagate_temp_var is one of the
-         variables that the shell handles specially (IFS, LANG, etc.), it's
-         stored on the list.  For each variable in this list,
-         dispose_temp_var calls stupidly_hack_special_variables.
-       - assign_in_env calls stupidly_hack_special_variables if flags arg
-         is non-zero, so variable assignments affect current shell
-         execution environment if a builtin or function is being executed.
-         Fixes bug reported by Bruno Haible <bruno@clisp.org>
-
-                                  12/5
-                                  ----
-subst.c
-       - use mbsmbchar on both string and pattern in match_pattern instead
-         of strlen and mbstrlen; only go through the strings once
-
-                                  12/6
-                                  ----
-lib/readline/kill.c
-       - in rl_yank_last_arg, only switch directions if the `count'
-         argument is < 0, not < 1.  This makes explicit count arguments of
-         0 work as expected.  Fixes bug reported by Dennis Williamson
-         <dennistwilliamson@gmail.com>
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - fix documentation for yank-last-arg to make it clear how the count
-         argument is set and how second and subsequent calls treat any
-         numeric argument
-
-doc/{bash.1,bashref.texi}
-       - slight changes to the description of test
-       - change \(bv to `|'; it seems that many `internationalized' versions
-         of groff don't render that as a vertical bar.  Fixes Debian bug
-         603805
-
-                                  12/10
-                                  -----
-configure.in
-       - changed release status to 4.2-beta
-
-                                  12/14
-                                  -----
-[bash-4.2-beta frozen]
-
-                                  12/18
-                                  -----
-redir.c
-       - change REDIRECTION_ERROR macro to accept a third argument: an
-         additional file descriptor to close before returning and error (pass
-         -1 to do nothing)
-       - change calls to REDIRECTION_ERROR to close appropriate file
-         descriptors.  Fixes bug reported by Andreas Schwab
-         <schwab@linux-m68k.org>
-       - make sure to close any file descriptors opened for REDIR_VARASSIGN
-         before returning an error
-
-                                  12/19
-                                  -----
-expr.c
-       - move processing of unary `-' and `+' to exp1 from exp0 to avoid
-         precedence problems.  Fixes bug reported by <12bric@gmail.com>
-
-                                  12/22
-                                  -----
-lib/sh/fpurge.c
-       - updated version from gnulib, inlined gnulib stdio-impl.h
-
-                                  12/24
-                                  -----
-doc/bash.1
-       - change the description of while and until to use `list-1' and
-         `list-2', similar to the Posix description.  Suggested by
-         Jeff Haemer <jeffrey.haemer@gmail.com>
-
-                                  12/27
-                                  -----
-execute_cmd.c
-       - slight changes to execute_command_internal and how it captures the
-         exit status of (command) and shell control structures with pipes to
-         avoid multiple variable assignments to last_command_exit_value
-       - change to execute_simple_command so that parent branches of shells
-         forked to execute commands in pipelines don't change $? to 0
-         (if (pipe_out != NO_PIPE) result = last_command_exit_value).  Fixes
-         bug reported by Damien Nadà<dnade.ext@orange-ftgroup.com>
-
-                                  12/28
-                                  -----
-configure.in
-       - changed version to bash-4.2-rc1
-
-                                1/2/2011
-                                --------
-lib/readline/complete.c
-       - fix rl_filename_completion_function to dequote and save users_dirname
-         before calling any function to transform the directory name passed
-         to opendir().  Fix from Andreas Schwab <schwab@linux-m68k.org>
-
-lib/readline/doc/
-       - make sure to note that rl_directory_completion_hook cannot modify
-         the directory name argument if it returns 0
-
-bashline.c
-       - make sure that bash_directory_completion_hook consistently returns
-         non-zero whenever it modifies its directory name argument 
-
-lib/readline/terminal.c
-       - don't bother with the declarations (extern or not) for PC, BS, and
-         UP if NCURSES_VERSION is defined, since ncurses defines local
-         versions of those symbols in the library.  Fixes bug most recently
-         reported by Kevin Scott <kscott@eznet.net> against Mac OS X
-
-include/filecntl.h
-       - make sure O_TEXT and O_BINARY are defined to avoid Windows-specific
-         (or cygwin-specific) code.  This and the following changes from
-         Eric Blake <eblake@redhat.com> for current cygwin systems
-
-input.h
-       - add a B_TEXT flag to note when the underlying file descriptor is
-         opened in O_TEXT mode
-
-lib/sh/tmpfile.c
-       - make sure temporary files are opened in binary mode (O_BINARY) on
-         systems where it matters
-
-input.c
-       - make sure to set the B_TEXT flag if the file descriptor has O_TEXT
-         in its flags (returned by fcntl)
-       - change b_fill_buffer to compensate for lseek() and read() returning
-         different offsets on files opened in O_TEXT mode
-       - cygwin now is able to lseek on files and set the unbuffered and text
-         flags appropriately, so can use the general test for a seekable fd
-       - now that cygwin uses O_TEXT or O_BINARY appropriately, we no longer
-         have to manually translate \r\n to \n
-
-redir.c
-       - remove the Cygwin-1.1 code from here_document_to_fd; cygwin is now
-         up to version 1.7 and can unlink an open file descriptor
-       - make sure temporary files used for here documents are opened in
-         binary mode (O_BINARY) on systems where it matters
-
-execute_cmd.c,parse.y
-       - make sure error messages use all printable characters in filenames
-         and strings
-
-{builtins/evalfile,shell,subst}.c
-       - remove cygwin-specific calls to setmode to force file descriptors
-         into text mode, since we're using text or binary mode according to
-         the mode of the mount point
-
-execute_cmd.c
-       - when creating pipes and making them stdin and stdout, make sure to
-         tell stdio that the mode of the underlying file descriptor may have
-         changed from text to binary
-
-subst.c
-       - when creating pipes for command substitution, make sure to
-         tell stdio that the mode of the underlying file descriptor may have
-         changed from text to binary
-
-                                   1/3
-                                   ---
-doc/{bash.1,bashref.texi}
-       - changes to the readonly documentation suggested by Jan Schampera
-         <jan.schampera@web.de>
-
-                                   1/4
-                                   ---
-builtins/read.def
-       - change bind_read_variable to consistently return NULL if there is some
-         kind of variable assignment error (e.g., assigning to a readonly or
-         noassign var)
-       - change read builtin to only call stupidly_hack_special_variables if
-         bind_read_variable returns non-NULL
-       - change read_builtin to return EXECUTION_FAILURE if there is an
-         assignment error (e.g., assigning to a readonly or noassign var).
-         Fixes bug reported by Jan Schampera <jan.schampera@web.de>
-
-                                   1/5
-                                   ---
-builtins/{help.def,common.c}
-       - change uses of a builtin's `short_doc' member to go through gettext
-         for possible translation before being displayed.  Suggestion from
-         <goeran@uddeborg.se>
-
-                                   1/6
-                                   ---
-shell.h
-       - new exit status define: EX_MISCERROR (2)
-
-builtins/getopts.def
-       - change getopts_bind_variable to return error if an attempt is made
-         to assign to a variable with the `noassign' attribute
-       - change getopts_bind_variable to return EX_MISCERROR if attempt is
-         made to assign to readonly or noassign variable
-
-builtins/cd.def
-       - change setpwd to return an int and return failure when PWD is
-         readonly; success otherwise
-       - change bindpwd to return failure if setpwd returns EXECUTION_FAILURE.
-         Inspired by message from Eric Blake <eblake@redhat.com>
-       - change pwd builtin to return failure if PWD is readonly (and setpwd
-         returns EXECUTION_FAILURE)
-
-                                   1/8
-                                   ---
-lib/sh/eaccess.c
-       - on FreeBSD and Solaris, check the result of access(2) with mode X_OK
-         for root by checking sh_stataccess().  Same code as was added to
-         check result of eaccess().  Fixes Solaris 11 problem reported by
-         <cloyce@headgear.org>
-
-                                  1/10
-                                  ----
-builtins/set.def
-       - add description of `--' to help text
-
-[bash-4.2-rc1 released]
-
-                                  1/14
-                                  ----
-lib/readline/readline.h
-       - fix/update description of rl_directory_rewrite_hook
-
-lib/readline/complete.c
-       - if there are no directory rewrite or completion hooks, set dirname
-         to a duplicate copy of users_dirname instead of calling the
-         dequoting function again
-
-bashline.c
-       - use rl_directory_rewrite_hook instead of rl_directory_completion_hook
-         to avoid changing the directory name the user typed, other than
-         dequoting it.  Fixes bug introduced by changes to directory
-         completion hook, pointed out first by William Bader
-         <william.bader@gmail.com>
-
-                                  1/16
-                                  ----
-lib/sh/strftime.c
-       - portability and other (int->long) updates from Aharon Robbins
-         <arnold@skeeve.com>
-
-configure.in
-       - change release level to rc2
-
-                                  1/17
-                                  ----
-execute_cmd.c
-       - short-circuit select builtin if read_builtin returns anything but
-         EXECUTION_SUCCESS, not just EXECUTION_FAILURE.  Fixes bug reported
-         by Pierre Gaston <pierre.gaston@gmail.com>
-
-                                  1/19
-                                  ----
-execute_cmd.c
-       - change execute_simple_command to save and restore the values of
-         executing_builtin and executing_command_builtin before discarding
-         the unwind-protect frame.  Bug and fix from Werner Fink
-         <werner@suse.de>
-
-                                  1/24
-                                  ----
-variables.c
-       - change brand to set rseed to a known, constant value if it's 0,
-         so the sequence is known.  Fixes issue reported by Olivier
-         Mehani <shtrom@ssji.net>
-
-                                   2/2
-                                   ---
-braces.c
-       - make sure to pass an `int' argument to asprintf in mkseq.  Fixes
-         bug reported by Mike Frysinger <vapier@gentoo.org>
-
-                                   2/5
-                                   ---
-lib/glob/gmisc.c
-       - fix wmatchlen and umatchlen to initialize all state variables.  Fix
-         from Andreas Schwab <schwab@linux-m68k.org>
-
-jobs.c
-       - change wait_for to call restore_sigint_handler right after exiting
-         the wait loop, instead of right before function returns.  Reduces
-         the window for a SIGINT to be lost because a child does not exit      
-         due to SIGINT
-
-                                   2/7
-                                   ---
-configure.in
-       - changed release status to `release'
-
-                                   2/9
-                                   ---
-execute_cmd.c
-       - make sure some variables are declared as volatile if necessary.  Bug
-         report and fix from Eric Blake <eblake@redhat.com>
-
-[bash-4.2 frozen]
-
-                                  2/11
-                                  ----
-print_cmd.c
-       - in indirection_level_string, change to simpler test of result of
-         MBLEN (< 0 instead of MB_INVALIDCH)
-
diff --git a/CWRU/old-changelogs/CWRU.chlog.v2 b/CWRU/old-changelogs/CWRU.chlog.v2
deleted file mode 100644 (file)
index a494dd3..0000000
+++ /dev/null
@@ -1,584 +0,0 @@
-
-This documents the changes between the first `public' release of CWRU bash
-and this, its second release.  It summarizes, without going into detail,
-the changes that have been made. 
-
-NEW FEATURES
-
-       o `getopts' builtin, as specified by Posix.2
-
-       o new configuration variable HAVE_UNISTD_H, used to include
-         <unistd.h> and test for Posix features
-
-       o `ulimit' has new -p and -n options to report the pipe buffer size
-         and number of available file descriptors, respectively
-
-       o allow SIGCHLD to be trapped and useful behavior to result if it is
-
-       o Posix termios and signal code for readline and the shell itself
-
-       o can optionally use the GNU termcap library
-
-       o new output for `times' builtin that looks like ksh:
-
-               shell-user shell-sys
-               child-user child-sys
-
-       o `ulimit' limits now apply to both shell and its children
-
-       o new machines.h entries
-
-       o no longer does the costly `close file descriptors 3-NOFILE'
-         each time it exec's a program -- now uses the close-on-exec
-         flag for the files it fiddles with
-
-NOTABLE BUG FIXES
-
-       o jobs.c only sets and gets the tty state in an interactive shell
-
-       o bash does better process group checking on Posix systems, eliminating
-         some error messages
-
-       o fix for `infinite login' bug on System V machines when executing a
-         script from a .bash_profile
-
-       o the `trap' command now behaves as 1003.2 specifies, as of draft 9
-
-       o restore original terminal process group upon exit, so as to not
-         confuse a parent Bourne shell
-
-       o `bash file', where `file' is a binary file, now reports an error
-
-       o shells started with `-s' now execute the .bashrc file
-
-
-CHANGES (by date and files affected)
-                                9/20 - 9/30
-                                -----------
-
-builtins.c, builtins.c.posix
-       - added getopts help text
-       - removed extra "let" from `let' error message
-       - added correct extern definition for list_rest_of_args() to shift
-         builtin
-
-jobs.c, jobs.c.posix
-       - removed bogus call to set_process_resource_limits() from
-         make_child() as a consequence of redoing `ulimit'
-       - initialize shell_tty to -1
-       - only get or set the tty state after a command completes if the shell
-         is interactive
-       - use shell_tty in get_tty_state() and set_tty_state() instead of
-         reopening /dev/tty every time
-
-jobs.c.posix
-       - do better pgrp checking in initialize_jobs() to avoid error message
-         about not being able to setpgid(2) on startup
-       - changed tcsetattr() error messages slightly
-
-expr.c
-       - avoid advancing beyond the end of the expression when reporting an
-         error
-       - NULL expressions now return 0 ($[], for example)
-
-mailcheck.c
-       - #ifdef redundant definition of NOW, which is also defined in
-         general.h
-
-variables.c
-       - initialize $OPTIND and $OPTERR to 1 for getopts
-       - add correct extern definition for itos()
-
-subst.c
-       - if $IFS is unset, it defaults to " \t\n"
-       - add special variable hack functions for $OPTIND, $OPTERR
-
-builtins.h
-       - add definition for getopts_builtin()
-
-getopts.c
-       - new file, source for `getopts' builtin command
-
-ulimit.c
-       - remove the `struct ResourceLimit' stuff; limits now apply to both
-         the shell and its children
-       - took out set_process_resource_limits(), let ulimit(2) or
-         setrlimit(2) do the work
-       - changed error messages to use builtin_error() instead of
-         report_error()
-       - changed the block factor for RLIMIT_CPU from 1000 (milliseconds)
-         to 1 (seconds)
-
-
-                                   10/1
-                                   ----
-
-builtins.c, builtins.c.posix
-       - changed `test' help text for -ef option
-       - made `trap -' reset all signals to their original values
-
-machines.h
-       - added a new configuration variable, HAVE_UNISTD_H, which should
-         be defined if /usr/include/unistd.h exists
-
-cpp-Makefile
-       - make HAVE_UNISTD_H show though from machines.h to the bash code
-       - add an explicit build line for ulimit.o so `psize.sh' is run
-         each time ulimit.o is remade.  This is kind of flaky.
-config.h
-       - include <unistd.h> if HAVE_UNISTD_H is defined, use it to test
-         for various Posix features (job control, signals, termios)
-
-jobs.c, jobs.c.posix
-       - restore original signals to child process in make_child()
-       - keep count of number of children that exit or stop in flush_child(),
-         and call a trap handler for SIGCHLD that many times.  This allows
-         SIGCHLD to be trapped without disaster occurring.
-
-shell.c
-       - If we're on a Posix system, initialize signals the Posix way
-       - clear signal mask in initialize_signals() if on Posix system
-       - set login_shell and make_login_shell to 0 upon entry to main(),
-         solving the System V infinite login bug
-
-trap.c
-       - preserve value of $? when running traps
-       - don't allow a signal ignored upon entry to the shell to be trapped
-         or reset to the default
-       - do not allow trapping SIGCHLD to change the signal handler, but
-         save the commands to be executed.  Run these commands from the
-         SIGCHLD signal handler for each child that exits or stops
-       - don't allow SIGCHLD signal handler to be overridden or have SIGCHLD
-         ignored
-       - new function added to restore all trapped signals to their original
-         values
-
-ulimit.c
-       - add new -p option to report pipe buffer size.  This is flaky on 
-         all non-Posix systems (those that do not define PIPE_BUF).
-
-readline/readline.c
-       - add Posix termios and signal code
-
-                                   10/2
-                                   ----
-
-jobs.c, jobs.c.posix
-       - only fetch terminal state in initialize_jobs() if the shell is
-         interactive
-
-                                   10/3
-                                   ----
-
-machines.h
-       - new entry for Stardent
-       - new variable USE_TERMCAP_EMULATION, for those systems that have the
-         termcap(3) functions in the curses library, but have not linked 
-         /usr/lib/libtermcap.a to libcurses.a
-
-cpp-Makefile
-       - use USE_TERMCAP_EMULATION to set TERMCAP and TERMLIB
-
-siglist.c, alias.h, general.c
-       - declare the return values of xmalloc() and malloc() for the benefit
-         of machines which cannot cope with simply casting the return value
-
-shell.c, execute_cmd.c
-       - change the re-execution of main() when executing a shell script to
-         use setjmp/longjmp
-
-builtins.c
-       - add code to change the shell level in exec_builtin(), decrementing
-         it before trying the execve(2) and incrementing it again if that
-         fails
-
-variables.c
-       - new function adjust_shell_level() to change shell level by a
-         specified increment
-       - initialize `noclobber' in shell_initialize(), if we have inherited
-         the `noclobber' variable from a parent shell
-
-ulimit.c
-       - add new option -n, which reports the max number of available file
-         descriptors as reported by getdtablesize().  On SunOS 4.1, this
-         can be set, too, with setrlimit(RLIM_NOFILE, ...).
-
-                                   10/4
-                                   ----
-
-readline/readline.c
-       - Ultrix turns off system call restart when executing in `Posix mode'
-         (when sigaction(3) is used to set signal handling), so make it use
-         the System V version of shell_getc()
-
-jobs.c.posix
-       - fix a bug in start_job() where `oset' was not initialized in the first
-         call to sigprocmask(), yet was used in subsequent calls
-       - remove the `shadow' instance of shell_tty_info in the code that sets
-         the line discipline in initialize_jobs()
-
-shell.c
-       - if job control is being used, restore the tty pgrp to its original
-         value so as to not screw the parent
-
-builtins.c, builtins.c.posix
-       - make the output of `times' look more like ksh
-
-                                   10/5
-                                   ----
-
-jobs.c.posix
-       - HP/UX no longer needs the signal handler for SIGCHLD reset via a
-         call to signal() in flush_child() -- this breaks job control
-
-machines.h
-       - add HAVE_VPRINTF to HP/UX entry
-
-siglist.c
-       - include <stdio.h>, sprintf(3) requires it on some systems
-
-                                   10/8
-                                   ----
-
-execute_cmd.c
-       - make $LINENO in a function count the number of simple commands
-         executed
-
-                                   10/9
-                                   ----
-
-termcap, cpp-Makefile
-       - new GNU termcap library, cribbed from Emacs.  #define
-         USE_GNU_TERMCAP in machines.h entry to use it.  Small changes
-         required to cpp-Makefile to make it work.  This works on
-         4.3 BSD, at least.
-
-machines.h
-       - add new entry for AIX/370
-
-general.c
-       - sysv_getc() is also needed for Ultrix machines running in Posix
-         mode, so change the #ifdef accordingly (Ultrix passes the
-         SV_INTERRUPT flag to sigvec(2) in sigaction(3)).
-
-subst.c
-       - use sysv_getc() for Ultrix machines running in Posix mode for
-         command subsitution pipe reading
-
-                                   10/10
-                                   -----
-
-shell.c, execute_cmd.c
-       - if the `file' portion of `bash file' is a binary file, report an
-         error and do not attempt to execute it
-
-jobs.c, jobs.c.posix
-       - the code that does the guts of `kill' now sends the SIGCONT to a
-         stopped job after it sends the specified signal, not before
-
-                                   10/11
-                                   -----
-
-parse.y
-       - set +H also turned off putting commands into the history list
-
-shell.c
-       - make shells started with -s read .bashrc
-
-       
-                                   10/14
-                                   -----
-
-expr.c
-       - changed calls to `report_error' to call `builtin_error'.  I don't
-         know if this is exactly right, but it seems to me that an error
-         in an expression shouldn't kill the shell if -e is set.
-
-fc.c
-       - changed `report_error' to `builtin_error'
-
-                                   10/16
-                                   -----
-
-readline/vi_mode.c
-       - repeat count to rl_vi_subst() was incorrectly being ignored
-       - don't call rl_vi_change_case() on an empty line; two calls in
-         a row can cause a seg fault
-
-
-                                   10/17
-                                   -----
-
-execute_cmd.c
-       - give builtins run in pipes a useful setting of top_level to
-         longjmp(2) to on errors
-
-
-builtins.c, builtins.c.posix
-       - replace some occurrences of longjmp (top_level, ...) with simple
-         calls to return (EXECUTION_FAILURE)
-
-                                   10/18
-                                   -----
-
-readline/readline.c
-       - Make O_NDELAY be the same as O_NONBLOCK on Posix systems
-       - Don't use IXANY if it's not defined (some strict Posix systems do
-         not define it)
-       - Posix systems need NOFLSH for c_lflag to avoid flushing the input
-         buffer after a SIGINT, SIGQUIT, or SIGSUSP.  This is still wrong,
-         though.
-
-execute_cmd.c, test.c, general.h
-       - use the Posix S_IS* macros to test file formats instead of explicitly
-         masking with S_IFMT and testing the result.  Macros are provided
-         for those systems that do not have them (like 4.3 BSD).
-
-parse.y
-       - fix expansion of \W in the prompt string so that it works when
-         you're in the root directory
-
-machines.h
-       - add machine description for concurrent in UCB universe
-
-Makefile
-       - make sure $(MFLAGS) is passed to the recursive make of bash-Makefile
-
-                                   10/22
-                                   -----
-
-jobs.c.posix
-       - make sure the NOFLSH bit is turned on in the termios c_lflag word
-         so that typeahead doesn't get flushed on receipt of signals. THIS
-         HAS BEEN TAKEN OUT.
-
-                                   10/23
-                                   -----
-
-execute_cmd.c
-       - change extract_colon_unit() to increment the path index past a
-         colon when it is called, before it tries to get the next component
-         from the path.  Without doing this, `.' was always found as the
-         second component in the path, whether it was actually there or not.
-
-trap.c, shell.c
-       - made SIGINT trap handling act the same as that of ksh and the BSD
-         sh.  As a side effect (really the reason for doing this in the
-         first place), `read' is now interruptible.
-Makefile
-       - made the CPPFLAGS definition useful by passing it to cpp when
-         making bash-Makefile from cpp-Makefile
-       - made the `echo' line when creating bash-Makefile really echo by
-         quoting the redirection to bash-Makefile
-
-general.c
-       - make fcntl.h be included only if NO_DUP2 is defined
-
-                                   10/24
-                                   -----
-cpp-Makefile
-       - make libreadline.a depend on the objects, not the sources.  Without
-         this, you could delete on of the .o files to try to force a library
-         rebuild and have it not happen.
-
-                                   10/25
-                                   -----
-
-shell.c
-       - make a flag of `-' signal the end of option arguments, like the
-         4.3 BSD sh, and in accordance with the Posix command line syntax
-         standard
-
-shell.c, builtins.c, builtins.c.posix
-       - shuffle some code around so -o option can be given on the command
-         line -- there's no reason why it shouldn't be allowed.
-
-variables.c, variables.h, execute_cmd.c, builtins.c, builtins.c.posix, shell.c,
-subst.c, bashline.c, hash.h, variables.h
-       - change the implementation of shell function and variable storage to
-         a hash table instead of a singly-linked list
-
-make_cmd.c, shell.c
-       - bug reports only get mailed out if MAIL_BUG_REPORTS is defined
-
-                                   10/29
-                                   -----
-
-bashline.c
-       - some random cleanups from bfox
-       - make sure alias expansion is attempted in shell_expand_line () only
-         if ALIAS is defined
-
-hash.c
-       - add default case to make_hash_table to force the number of buckets
-         in the table to be the default if 0 is passed as the number of
-         buckets
-
-variables.c
-       - make initialize_shell_variables () call make_hash_table () with an
-         argument of 0 again (see previous entry).
-
-
-variables.c, builtins.c, builtins.c.posix
-       - cleanups because map_over(), all_vars(), all_shell_variables(), and
-         all_shell_functions () can possibly return NULL lists, and such
-         lists should not be sorted or freed
-
-trap.c
-       - make sure we declare `extern int last_command_exit_value' in
-         run_interrupt_trap ().
-
-variables.c
-       - Don't override a HOSTTYPE variables that comes in from the
-         environment
-
-                                   10/30
-                                   -----
-
-variables.c
-       - Fix a bug in variables.c: make_var_array () where it called
-         array_len on a NULL list
-
-builtins.c, builtins.c.posix
-       - Add a description of `-m' to the help for the `set' builtin
-         command
-
-                                   11/1
-                                   ----
-
-general.c
-       - added a definition of bzero() for USG machines, because
-         there is a reference to it in the new variable hashing code
-
-                                   11/2
-                                   ----
-
-shell.c
-       - set forced_interactive to 0 in shell_reinitialize(), otherwise
-         shell scripts get marked as interactive
-
-                                   11/6
-                                   ----
-
-execute_cmd.c
-       - eliminated the costly loop from 3 to NOFILE closing all file
-         descriptors each time we exec a command by setting all file
-         descriptors > 2 opened as the result of a redirection and internal
-         to the shell to be close-on-exec, as well as all file descriptors
-         opened to save others in add_undo_redirect().  `internal to the
-         shell' means that the redirections were attached to shell builtin.
-         Other `internal' redirections include while, for, and until
-         loops, and shell functions.  I got scared after reading that
-         s5r4 provides 2048 fd's per process -- 2045 (mostly useless)
-         close() calls on *each executed program*?  No way, no how.
-
-         This caused the other fixes for this file to be discovered.
-
-         Unfortunately (there always seems to be a catch), 4.3 BSD up to
-         4.3-tahoe leaves a file descriptor open in setpwent() if you're
-         using dbm password files.  4.3+NFS does this if you're not using
-         YP.  Arghhhhhhh...  I haven't decided yet what to do about this;
-         probably just set fd 3 to close-on-exec when the shell is
-         initialized.
-
-execute_cmd.c
-       - removed the call to `add_undo_redirect()' when a file is being
-         closed with the redirection operators [n]<&- and [n]>&-.  The
-         effect was to make those operators useless.  Sad to say, I was
-         probably the dummy who put it in there...
-
-execute_cmd.c
-       - when calling fcntl(redirector, F_GETFD, 0) in do_redirection() to
-         find out if a file descriptor is active, do it only if redirector
-         is not the same as `fd', which you've just opened.  This has
-         spectacularly bad consequences if you do something like
-
-               exec 3</dev/tty 4>/tmp/foo 5</dev/null
-
-         I'm probably to blame for this, too...
-
-execute_cmd.c
-       - when saving a file descriptor in add_undo_redirect, make sure we
-         save the state of the close-on-exec flag, and restore it when
-         dup2'ing the saved fd back to the orignal.
-
-execute_cmd.c
-       - when performing a redirection that causes us to open a file, make
-         sure we at least add an undo record to close the file, even if
-         the file descriptor is not already active
-
-execute_cmd.c
-       - when duplicating a file descriptor as the result of a redirection
-         instruction, make sure to manually duplicate the state of the
-         close-on-exec flag
-
-                                   11/13
-                                   -----
-
-execute_cmd.c
-       - finally tracked down and stamped out the persistant bug that caused
-         the shell to hang when doing a command like "history | more" when
-         there was more than a pipeful of text to send to `more' and you quit
-         out of `more'after the first screenful.  An extra read end of the
-         pipe was being left open in the shell started to run `history', the
-         consequence being that that shell at the beginning of the pipeline
-         would never get the SIGPIPE that would cause it to exit.  The fix
-         is kind of strange: pass around a file descriptor to close whenever
-         a child process is created in either execute_command_internal or
-         execute_simple_command.  We just pass the file descriptor that we
-         want closed to the instance of execute_command_internal that runs
-         the first half of the pipeline, and it gets closed just like we
-         want.
-
-         In the future, this can (and probably should) be made into a bitmap
-         of file descriptors to close.  It wouldn't have to be big, 16 should
-         be enough given the ability to do close-on-exec.
-
-builtins.c, builtins.c.posix
-       - changed the one call to execute_command_internal to add the extra
-         parameter needed by the above fix.
-
-unwind_prot.c
-       - make without_interrupts() block SIGINT on capable systems (Posix
-         and systems with BSD sigs) instead of ignoring it, which causes
-         interrupts to be dropped.  Blocking is what you want, anyway.
-
-execute_cmd.c
-       - add an unwind_protect for the redirections for a function or
-         builtin.  To see why this is needed, define a function shcat:
-
-               shcat()
-               {
-                       while read line
-                       do
-                               echo "$line"
-                       done
-               }
-
-         Now execute "shcat < INSTALL" and try to interrupt it.  Bash will
-         keep reading the lines from INSTALL and trying to execute them
-         until EOF, at which point the shell exits.
-
-                                   11/14
-                                   -----
-
-execute_cmd.c
-       - a subshell spawned to execute a function or a builtin with a pipe
-         or an asynchronous function or builtin should have login_shell and
-         interactive set to 0.  That way, if someone is stupid enough to
-         pipe to `exit' from a login shell, the subshell won't try to exec
-         .bash_logout.
-
-                                   11/16
-                                   -----
-builtins.c, builtins.c.posix
-       - exit status of `type' was wrong for executable files, hashed and
-         unhashed
-
-bashline.c
-       - Made bash_complete_filename_internal take just about everything
-         as a possible filename character.  It still can't do completion
-         of a filename containing blanks if you type one of the blanks,
-         though -- it needs the blanks-as-word-separators logic to work
-         at all.
diff --git a/CWRU/old-changelogs/CWRU.chlog.v3 b/CWRU/old-changelogs/CWRU.chlog.v3
deleted file mode 100644 (file)
index 932586d..0000000
+++ /dev/null
@@ -1,1119 +0,0 @@
-This documents the changes between the second `public' release of CWRU bash
-and this, its third release.  It summarizes, without going into detail, the
-changes that have been made. 
-
-NEW FEATURES
-
-       o Some performance work was done.  Scripts are now somewhat faster.
-         Bash will never be a speed demon -- it allocates, frees, and
-         copies way too many times.
-
-       o Added a new readline variable `prefer-visual-bell'.  If this is
-         set, and the `vb' termcap capability exists, visual rather than
-         audible bells will be used.
-
-       o `bash file' will now search the $PATH for `file' if it is not
-         found in the current directory.
-
-       o new machines.h variables: HAVE_MULTIPLE_GROUPS, HAVE_RESOURCE
-
-       o new machines.h entries: AIX/PS2, System V.4 on 386, AIX/370, Ardent
-         Titan, DG AViiON, Harris Nighthawk, SGI Iris
-
-       o all filenames are now fewer than 14 characters
-
-       o The FIGNORE variable was implemented
-
-NOTABLE BUG FIXES
-
-       o When expanding commands, word splitting is no longer performed on
-         all words, but only the output of command, arithmetic, and variable
-         and parameter substitution
-
-       o The close-on-exec code now also passes around a bitmap of file
-         descriptors to close in child processes.  This is necessary
-         because of the way bash does pipes.  Details on request.
-
-       o Fixed readline to do correct cursor motion when using Sun's
-         shelltool or cmdtool.
-
-       o Fixed command substitution so that old-style substitution (``)
-         passes the characters between the backquotes through verbatim.
-
-       o Fixed reading here documents to obey newline quoting
-
-                                   11/19
-                                   -----
-nojobs.c
-       - removed bogus call to set_process_resource_limits
-
-test.c
-       - changed references to SYSV to USG
-
-readline/readline.c
-       - added support for visible bells, turned on by the startup file
-         variable "prefer-visible-bell"
-       - changed rl_signal_handler() so that sigsetmask() is not called
-         on vanilla SYSV machines
-       - made include declarations correct for USG machines that define
-         TIOCGWINSZ in sys/ioctl.h
-
-variables.c
-       - s5r3 invokes getenv() before main() in some cases.  Make sure
-         that the variable hash table is created there if it does not
-         exist.  (BSD systems using gprof also do this, by the way.)
-
-                                   11/20
-                                   -----
-readline/readline.c
-       - Make sure HACK_TERMCAP_MOTION is not defined.  It's faster to
-         print a character than an escape sequence for a non-destructive
-         space, and it screws up on OpenWindows shelltool and cmdtool.
-
-subst.c
-       - Finally fixed the word splitting bug.  Bash now splits only the
-         results of command, parameter, and arithmetic expansion that do
-         not appear in double quotes.  As currently implemented, the change
-         has expand_word_internal return a flag indicating whether or not
-         it expanded something.  If not, the word is not split.  This is
-         only noticed by expand_words_1; all other functions that call
-         expand_word_internal ignore the result -- they are either supposed
-         to or not supposed to do word splitting and they take care of it
-         themselves.  This latter bit may have to be changed later.
-
-readline/emacs_keymap.c
-       - Make M-TAB insert a tab.  The binding had been inadvertently
-         omitted.
-
-builtins.c, builtins.c.posix
-       - make read_builtin() call string_list_dollar_star when more words
-         are read than variables specified, because Posix specifies that in
-         this case, the intervening separators are preserved in the
-         remaining words (``the leftover words and their intervening
-         separators are assigned to the last var'').  This allows the
-         following to work correctly:
-
-               while read line
-               do
-                       echo "$line"
-               done < /etc/passwd
-
-subst.c
-       - remove from list_string the requirement that the word be quoted to
-         make sequences of characters in $IFS expand to separate arguments.
-         I can't remember why it was there.
-
-builtins.c, builtins.c.posix
-       - both ksh and the s5r3 sh remove the trailing newline from a line
-         input to `read', so now bash does, too.
-
-                                   11/21
-                                   -----
-execute_cmd.c
-       - Finally do things the *right* way, and pass around a bitmap of
-         file descriptors to close when forking.  The way bash does
-         pipes forces this.
-
-builtins.c, builtins.c.posix
-       - change the call to execute_command_internal in parse_and_execute
-         to call it with an empty bitmap of file descriptors to close.
-
-shell.c
-       - make the fd that we open to read a script argument be close-on-exec
-
-shell.c, variables.c, readline/readline.c
-       - add endpwent() everywhere getpwnam or getpwuid is called -- they
-         leave an open file descriptor on systems with YP code derived
-         from Sun's 3.x release.
-
-
-                                   11/25
-                                   -----
-builtins.c, builtins.c.posix
-       - use the same logic for locating a program when in the exec builtin as
-         when finding a program normally -- pathnames with slashes in them
-         anywhere are not looked up via $PATH.
-
-shell.c
-       - when invoked as `bash file', use $PATH to look up `file', using the
-         same logic as the `.' builtin.  (Said logic is possibly faulty --
-         files with slashes in their names are still looked up in the path.
-         This is different from ksh86, at least.)  Do this only if `file'
-         is not found in the current directory.
-       - when invoked as an interactive login shell, close all file
-         descriptors < 20 first thing.  There is a fairly common bug in the
-         Sun NFS code that leaves an open file descriptor when you use one
-         of the getpw* C library functions. 
-
-                                   11/28
-                                   -----
-shell.c
-       - make sure history_expansion is set to 0 if interactive is set to 0.
-         This fix makes rn's mbox.saver run correctly, rather than report
-         the famous `Event not found' error.
-
-                                   11/29
-                                   -----
-variables.c
-       - make sure the hash table is created in getenv if necessary on all
-         systems; gprof requires it.
-
-builtins.c, builtins.c.posix
-       - make read return 1 only on EOF
-
-shell.c
-       - make `bash file' look through $PATH only if ./file does not exist.
-         (bug fix for previous improvement)
-
-readline/readline.c
-       - need to turn off CRMOD when using the BSD tty driver so that extra
-         carriage returns are not generated
-
-subst.c, parse.y
-       - changes so that characters between backquotes in double quotes are
-         passed through verbatim, so this will work: echo "ab `echo "hi"` cd"
-         echoes ab hi cd.  The fixes are to string_extract_double_quoted and
-         read_token.
-
-subst.c
-       - small change in command substitution error message printed when
-         pipe(2) fails -- `backquote' --> `command'
-
-                                   12/1
-                                   ----
-parse.y, shell.c, builtins.c, builtins.c.posix, make_cmd.c
-       - changed the way parsing of here documents works in the presence
-         of continued lines (unquoted backslash-newline pair or via quoting).
-         Now the shell reads up to an unquoted newline before trying to
-         read the contents of the here-document (that's the way sh works).
-         The changes are spread out over multiple files.
-
-         The cases that this fixes are these:
-
-               cat << EOF | sed -n \
-                       -e 'blah blah...' \
-                       -e 'more more...'
-               input
-               to
-               cat
-               for
-               sed
-               EOF
-
-               cat << EOF | echo 'a b c
-               d e f
-               g h i'
-               EOF
-
-         Previously, the yacc-generated bash parser would resolve the
-         `<< EOF' redirection and immediately try to create the here
-         document, and the rest of the command would become part of
-         the here document.
-
-         Changes by file:
-               parse.y:
-                       added two new variables, need_here_doc, and
-                       redirection_needing_here_doc.  The yacc actions
-                       associated with the here-document productions
-                       were modified to set these variables appropriately.
-                       Changed read_token to read the text of any pending
-                       here-documents just before it returns an unquoted
-                       newline to the parser.
-               make_cmd.c:
-                       moved the code that reads the text of the
-                       here-document out of make_redirection into a new
-                       function named make_here_document.  The cases in
-                       make_redirection don't do anything now; they just
-                       set the EOF marker and return
-               shell.c:
-                       added a wrapper function around yyparse called
-                       parse_command that initializes the above variables,
-                       calls parse_command, then makes the here-document
-                       if necessary by calling make_here_document (usually
-                       it doesn't need to; read_token has already done it).
-               builtins.c.posix:
-               builtins.c:
-                       changed the call to yyparse to a call to parse_command
-                       (in parse_and_execute)
-
-subst.c
-       - for some reason which I have not yet fully divined, a shell whose
-         standard output (file descriptor 1) is closed cannot perform
-         backquote substitution if the child closes both sides of the pipe
-         after dup2(fildes[1], 1).  The obvious fix is to not close 
-         fildes[0] in the child, but it's not intuitive.  I got the example
-         from the Dec Ultrix 4.0 release notes:
-
-               exec >&-
-               echo `echo hi` >&2
-
-         The 4.3 BSD sh has the same problem.  I'm stumped.
-
-         (LATER NOTE:  I'm not stumped anymore.)
-
-                                   12/2
-                                   ----
-shell.c
-       - shells started to execute scripts (`bash file') should set
-         remember_on_history and history_expansion to 0.
-       - redid maybe_execute_file to eliminate a possibly unnecessary
-         call to stat.  Just open the file immediately and call fstat
-         to get the size.  Return if the open fails.
-
-execute_cmd.c
-       - redid same_file to eliminate some calls to stat().  Added two
-         new parameters, which, if non-null, are pointers to status
-         information about the pathnames passed.  This required changes
-         to find_user_command_in_path.
-       - eliminated some calls to strlen in find_user_command_in_path
-
-builtins.c, builtins.c.posix
-       - changed calls to same_file to pass the two extra parameters
-
-parse.y
-       - only call pre_process_line in shell_getc if the shell is
-         interactive, because history expansion and remembering lines
-         on the history are not done for script shells
-       - make the shell echo comment lines (lines whose first character
-         is `#') by moving the after_pre_process label to just before 
-         that code
-       - eliminated several calls to xrealloc in shell_getc when the
-         shell is non-interactive by correcting confusing uses of
-         shell_input_line_size -- after pre_process_line is called, it
-         must be set to strlen(shell_input_line) because we don't know
-         what the `true' allocated size of that block is, but not if
-         pre_process_line is never called.  This became apparent
-         as a result of the previous two changes.
-
-readline/history.c
-       - make history_do_write abort on write errors instead of ignoring
-         them.
-
-                                   12/3
-                                   ----
-general.c
-       - defined bcopy in terms of memcpy for USG systems
-       - changed the USG getwd to return the result of getcwd
-
-                                   12/4
-                                   ----
-readline/vi_keymap.c, readline/funmap.c
-       - changed #ifdef FILE to #ifdef BUFSIZ as the test for a
-         previous inclusion of stdio.h
-
-general.c
-       - changed USG getwd emulation to return an error message in the
-         buffer if the getcwd fails
-
-subst.c
-       - fixed extern declaration of copy_word
-
-variables.c
-       - set_var_auto_export does a complete new lookup of the variable
-         it's setting.  Most of the time in initialize_shell_variables
-         it's called immediately after bind_variable or set_if_not on
-         the same variable.  Made set_if_not return a SHELL_VAR * like
-         bind_variable, then replaced the calls to set_var_auto_export
-         with calls to a new function set_auto_export that is passed a
-         SHELL_VAR * and skips the lookup.
-
-execute_cmd.c
-       - don't call print_simple_command in execute_simple_command if the
-         shell is not interactive, since the only place that's ever used
-         is pretty_print_job, which is never called if the shell is not
-         interactive.  This might need to be changed.
-
-                                   12/5
-                                   ----
-parse.y
-       - made read_token call atoi(3) instead of using sscanf("%d") when
-         reading numbers
-
-variables.c
-       - changed a call to sprintf in put_command_name_into_env into two
-         assignment statements and a call to strcpy
-
-variables.c
-       - changed a call to sprintf in make_var_array into two calls to
-         strcpy and an assignment statement
-
-execute_cmd.c
-       - only call geteuid() once in executable_file and cache the result
-
-general.h
-       - added definitions for STREQ and STREQN, which are replacements for
-         strcmp(a, b) == 0 and strncmp(a, b, n) == 0 that check the first
-         character to possibly save a function call.  From C News.
-
-variables.c
-       - changed add_or_supercede to use STREQN 
-
-parse.y
-       - changed most instances of strcmp() in read_token to use STREQ.
-         Rearranged some code to reduce the number of times this is called.
-         The idea is to rewrite code like
-
-               if ((this token is xx) && (certain conditions hold))
-
-         to be
-
-               if ((certain conditions hold) && (this token is xx))
-
-         to take advantage of left-to-right evaluation done by many (most?)
-         C compilers.
-
-subst.c
-       - changed instance of strcmp() in stupidly_hack_special_variables
-         to STREQ
-
-alias.c
-       - changed instance of strcmp() in find_alias to STREQ
-
-hash.c
-       - changed instance of strcmp() in find_hash_item to STREQ
-
-execute_cmd.c
-       - changed instance of strcmp() in find_shell_builtin to STREQ
-
-unwind_prot.c
-       - changed instance of strcmp() in unwind_frame_discard_internal
-         to STREQ
-
-                                   12/6
-                                   ----
-readline/readline.c
-       - In rl_complete_internal, when listing all completion possibilities,
-         if the length of the longest item to be listed is greater than the
-         screen width, a divide-by-0 exception can result.  Fix is to always
-         make sure `limit' is at least 1.
-
-                                   12/7
-                                   ----
-readline/readline.c
-       - Add a new #define, HAVE_BSD_SIGNALS.  This is for hybrid systems
-         like HP-UX (pre-Posix) that have both termio and the BSD reliable
-         signal mechanism (sigmask, sigblock, sigsetmask, etc.).  This
-         allows better use of `critical sections' when changing the terminal
-         parameters.
-
-readline/history.c
-       - Need to #include <fcntl.h> for System V.4
-
-makeargs.sh
-       - If we are on System V.4, define USGr4 and make it show through to
-         the rest of the build process
-
-machines.h
-       - changed the i386 entry to add support for recognizing System V.4
-         machines
-
-                                   12/8
-                                   ----
-shell.c
-       - made the TMOUT code be executed only for interactive shells
-       - .bashrc should not be run if the standard input and standard
-         output are not ttys
-
-machines.h
-       - reorganized the `i386' section so that all defines for a single
-         machine/OS combination are now grouped
-
-                                   12/9
-                                   ----
-shell.c
-       - make the -s flag force interactive use only if all the other
-         conditions for interactive use are met
-       - since the same conditions are used to mark the shell as
-         interactive and to decide whether or not to execute the .bashrc,
-         only execute the .bashrc if we are interactive, and use the
-         value of `interactive' in the test
-       - only test if `file' in `bash file' is a binary file if the file
-         descriptor obtained by opening it is not a tty.  An argument of
-         /dev/fd/xx is always a tty, and we can't read on it and seek
-         back to the beginning.
-
-variables.c
-       - replaced the random number generator functions with the simple
-         linear congruential generator from the ANSI C standard
-
-                                   12/10
-                                   -----
-machines.h
-       - added new defines: HAVE_MULTIPLE_GROUPS for systems that allow
-         multiple simultaneous group membership and support getgroups(2),
-         and HAVE_RESOURCE for systems that define struct rusage and
-         have getrlimit(2) and setrlimit(2)
-
-execute_cmd.c
-       - changed executable_file and group_member to obey the new
-         HAVE_MULTIPLE_GROUPS define
-
-ulimit.c
-       - allow the full range of options for systems that define
-         HAVE_RESOURCE
-
-builtins.c, builtins.c.posix
-       - make systems that have HAVE_RESOURCE defined use the getrusage
-         code in times_builtin
-
-                                   12/11
-                                   -----
-cpp-Makefile
-       - make ulimit.o dependent on `psize' so that psize can use 
-         the same #ifdefs and #defines as the rest of the code
-
-psize.c
-       - added definition of memset for those machines that don't have
-         it
-
-psize.sh
-       - removed the compilation of psize.c
-
-shell.c
-       - save and restore the SIGALRM catcher around the TMOUT code in
-         read_command, in case it's trapped
-
-trap.c, execute_cmd.c, shell.c
-       - redid the way traps were done slightly.  Now, instead of calling
-         parse_and_execute out of a signal handler (!), the signal handler
-         just sets a flag that the rest of the code checks at appropriate
-         times.  This means traps are kind of like interrupts, but serviced
-         far fewer times.  It also means a bit of a loss of immediacy.
-
-                                   12/12
-                                   -----
-
-shell.c
-       - fixed a bug in read_command that caused the handler for SIGALRM
-         to be reset to garbage each time through.
-
-variables.c
-       - change makunbound to call stupidly_hack_special_variables so
-         that things like `noclobber' and such can be reset properly
-         on function exit or when a `special' variable is unset.
-
-                                   12/14
-                                   -----
-parse.y
-       - made `<>' without a number specifying the file descriptor open
-         the named file for both standard input and standard output.
-
-cpp-Makefile, jobs.h, endian.c, endian.h, endian.sh
-       - made jobs.h include a file `endian.h' if NO_WAIT_H is defined.
-         This file defines either BIG_ENDIAN or LITTLE_ENDIAN, and is
-         automatically generated by `endian' and `endian.sh'.
-
-execute_cmd.c
-       - aa && bb & was being executed incorrectly -- the subshell was
-         not being forced for the `aa && bb' portion.  Same for aa || bb &.
-         Of course, if the sh `grammar' was regular `aa && bb &' would
-         be treated the same way as `aa ; bb &'.
-
-cpp-Makefile, psize.sh, ulimit.c
-       - changed the `psize' stuff so that ulimit.c includes a file
-         `pipesize.h', which contains a #define for PIPESIZE.
-         pipesize.h depends on psize, which is still made via the standard
-         `make' rules.  It's exactly like the `endian' stuff.
-
-parse.y
-       - pre_process_line can return NULL, so we have to take that into
-         account in shell_getc
-
-glob.c
-       - fixed glob_pattern_p to only return TRUE for a pattern containing
-         a `[' if there is at least one `]' to match it.  It produces wrong
-         results if allow_null_glob_expansion is set, and is inefficient
-         otherwise (wasted calls to glob_filename).
-
-         For instance, if some twisted soul sets allow_null_glob_expansion,
-         the following would produce an error without this fix:
-
-               if [ a = a ] ; then echo hi ; fi
-
-                                   12/16
-                                   -----
-execute_cmd.c, parse.y, shell.h
-       - the `subshell bit' in the command struct is being used for two
-         purposes: to signal that the user requested that this command be
-         done in a subshell via `()' and to force some portions of a
-         command to be executed in a subshell, like `{ xx } &'.  We need
-         to differentiate between the two so that the command printed when
-         reporting job status is correct and so the code is clearer.
-
-         Define two `states' for that value, if non-zero: WANT_SUBSHELL is
-         used when the user requests a subshell, and FORCE_SUBSHELL is used
-         internally by the command execution code.
-
-parse.y
-       - clean up some casts, and make sure function arguments are coerced
-         to the correct type
-
-subst.c
-       - comment out some unnecessary `break' statements in case statement
-         clauses that immediately follow `goto' statements.  It makes the
-         compilation output cleaner on a compiler that complains about such
-         things, like the IBM/4.3 compiler (High-C).
-
-make_cmd.c
-       - move all the error reporting code to the end of the file, so that
-         picky compilers that like to report about mismatches in the number
-         of arguments won't complain about the varargs code.
-       - it's not allows to pass a va_list from one function to another, so
-         expand the body of fatal_error to be the same as report_error in
-         the varargs case
-
-                                   12/17
-                                   -----
-readline/readline.c
-       - Use TCXONC in rl_restart_output, if it's defined.
-
-make_cmd.c, builtins.c, builtins.c.posix, shell.c
-       - Make all the non-varargs versions of the various error reporting
-         functions take 5 arguments
-
-                                   12/18
-                                   -----
-builtins.c, builtins.c.posix
-       - made the builtins that accept option arguments report errors when
-         they get a bad option, and make these error messages consistent.
-         The builtins affected are: export, hash, history, read, readonly,
-         dirs, jobs, declare, typeset, local, and type.
-
-shell.c
-       - make the function that displays the version number of the shell
-         indicate that it's the CWRU version.
-
-readline/readline.c
-       - On machines without BSD signals, do a signal(SIGINT, SIG_IGN) in
-         rl_signal_handler if an interrupt is received.  This will take
-         the place of blocking it while in the handler.
-
-jobs.c, jobs.c.posix
-       - change the setting of the job control signals SIGTSTP, SIGTTOU,
-         and SIGTTIN to SIG_DFL in make_child when job control is not
-         active
-
-                                   12/19
-                                   -----
-builtins.c, builtins.c.posix
-       - corrected some spelling errors and other mistakes in the help
-         documentation
-
-readline/readline.c
-       - Made the inclusion of sys/ptem.h dependent on the definition of
-         USGr4
-
-                                   12/20
-                                   -----
-machines.h
-       - Added -DUSGr4 to SYSDEP_CFLAGS in the System V.4 machines.h entry
-         for the i386 so it will get passed to readline.
-       - new entry for Ardent Titan
-
-                                   12/22
-                                   -----
-general.c
-       - added two new functions to print time values in a standard way:
-         print_timeval, which prints the contents of a struct timeval,
-         and print_time_in_hz, which prints a time_t scaled by the value
-         of HZ (which is system-dependent).
-
-builtins.c, builtins.c.posix
-       - made times_builtin call the new functions for printing time
-
-                                   12/30
-                                   -----
-general.h
-       - made the definition of `sighandler' as `void' or `int' depend
-         on the definition of VOID_SIGHANDLER; provide the definition
-         for those systems already using that code
-
-machines.h
-       - new entry for AIX/PS2 1.2
-
-                                   12/31
-                                   -----
-mailcheck.c
-       - When reporting that a mail file has been read, take into account
-         changes in the file size as well, and only report the change if
-         the file has gotten larger.  This help for systems like USG that
-         don't change the access time of /usr/mail/$USER to be the same
-         as the modification time after the mail in the file is manipulated.
-
-                                    1/2
-                                    ---
-builtins.c, builtins.c.posix
-       - the `command' builtin should not reparse its arguments; it screws
-         up quoting (consider "command echo 'foo &'"), so instead of making
-         a string and calling parse_and_execute, make a new simple command
-         struct, put the arguments to `command' in it as its words, and
-         call execute_command recursively.
-       - added a correct extern declaration for copy_word_list () in
-         remember_args
-
-make_cmd.c
-       - new function: make_bare_simple_command() to support the changes to
-         the command builtin
-
-                                    1/3
-                                    ---
-builtins.c.posix, jobs.c.posix, jobs.h.posix
-       - renamed these to be `.px' to help out systems with short file names
-
-CWRU.changelog, CWRU.changelog.v2
-       - renamed these to CWRU.chlog and CWRU.chlog.v2 for the same reason
-
-longest_signal_desc.c
-       - renamed to longest_sig.c
-
-enable-posix
-       - changed to recognize and use the `.px' suffix
-
-termcap/termcap.texinfo
-       - renamed to termcap.tex
-
-makeargs.sh
-       - change instance of `uuname' to `uuname -l' for compatibility with
-         more systems
-       - look for uuname in /bin as well as /usr/bin
-
-cpp-Makefile
-       - always define HAVE_ALLOCA if HAVE_GCC is defined
-
-bashline.c
-       - declare functions referred to in several places at the start of
-         the file
-
-jobs.c, jobs.c.px
-       - signal handlers should take one argument to be portable
-
-jobs.c.px
-       - hack around SCO Unix broken sigsuspend() and the fact that it
-         can't do job control on /dev/tty
-
-variables.c
-       - add declaration for sbrand before it is used
-
-machines.h
-       - define USGr3 for generic System V.3 entry; it is used in
-         readline/readline.c to conditionally include sys/ptem.h for the
-         `struct winsize' definition.  I'm about to say screw it and
-         define one myself.
-
-readline/readline.c
-       - include sys/ptem.h for both system V.3 and V.4 (USGr3 and USGr4)
-
-                                    1/4
-                                    ---
-shell.h
-       - some USG systems have a definition for MAXPATHLEN, so only define
-         it if there is no existing definition
-
-bashline.c
-       - changed operate_and_get_next to realize when it is at the end of
-         the stifled history list and to adjust the history pointer to the
-         `next' line appropriately
-
-readline/history.c
-       - made three variables needed by the above change to bashline.c
-         public: history_stifled, max_input_history, and history_length
-
-parse.y
-       - reset last_read_token and current_token in handle_eof_input_unit
-         so that an alias expansion on the next command entered will be
-         handled correctly.  If these are not reset, last_read_token ends
-         up being `yacc_EOF', which is not something that that will cause
-         command_token_position to return TRUE.
-
-                                    1/7
-                                    ---
-execute_cmd.c
-       - changed the test for matching jobs when testing for auto-resume
-         to make `exact' work as documented
-
-builtins.c, builtins.c.px
-       - Change exit_builtin so an interactive shell prints a message
-         when it exits: `logout' if it is a login shell, `exit' otherwise
-
-general.c
-       - include <sys/time.h> and compile in print_timeval if HAVE_RESOURCE
-         is defined
-
-readline/readline.c, readline/readline.h, bashline.c
-       - added a new readline function to call on filename completion, after
-         the match list has been generated:
-         rl_filename_completion_ignore_function().
-         It gets to munge the list of matches to its satisfaction.  It is
-         used to implement FIGNORE, a colon-separated list of filename
-         suffixes to ignore when doing filename completion
-
-jobs.c, jobs.c.px
-       - rewrote pretty_print_job to fix this bug:
-
-               thor$ { sleep 2 ; exit 1 ;} | sleep 10 &
-               [1] 11854
-               thor$ j
-               [1]+  Running                 { sleep 2; exit 1 } | sleep 10 &
-               thor$ j
-               [1]+  Exit 1                  { sleep 2; exit 1 } | sleep 10 &
-               thor$
-               [1]+  Exit 1                  { sleep 2; exit 1 } | sleep 10
-               thor$ echo $?
-               0
-
-         (since it's the exit status of the last job in the pipeline that
-         bash cares about, make it the one whose status is displayed.)  Also,
-         print "Running" if any processes in the job are still running,
-         instead of the status of the process group leader.  The code was
-         rearranged a bit as well.
-
-                                    1/8
-                                    ---
-fc.c
-       - changed fc_replhist to call history_get with a parameter offset by
-         history_base, like it should have been in the first place
-
-execute_cmd.c
-       - call dispose_used_env_vars () after any call to
-         execute_simple_command, because the temporary environment should be
-         in force only for the simple command immediately following it.
-         This fixes the
-               a=c printenv a | printenv a
-         bug, which should print nothing, but used to print `c'.
-       - added form feed ('\f') to the list of acceptable control characters
-         in check_binary_file
-
-                                    1/9
-                                    ---
-make_cmd.c
-       - fix to make_simple_command to make <> work.  We need to follow the
-         chain of redirections passed as element.redirect to the end, since
-         there might be more than a single redirection there.
-
-                                   1/14
-                                   ----
-machines.h
-        - redid the DEC, Mips, and Sony entries to get rid of the individual
-          MIPSEL and MIPSEB entries.  The goal is to isolate everything into
-          manufacturer-specific blocks.
-
-                                   1/18
-                                   ----
-builtins.c, builtins.c.px
-       - added call to QUIT to history_builtin, to allow the display of
-         history entries to be interruptible
-
-variables.c
-       - made find_variable return the dynamic value for a variable only
-         if this variable is in the current context.  This is to avoid
-         an `extra' value of RANDOM, for instance, being `wasted' in the
-         call to find_variable in make_local_variable
-
-execute_cmd.c, builtins.c, builtins.c.px, shell.h
-       - changed the bitmap holding the file descriptors to be closed in
-         the child to be a structure holding a bitmap and a size, rather
-         than use a char * bitmap with a fixed size, which will inevitably
-         be too small.  You'd probably run out of processes before you
-         ran out of file descriptors, though.  Pipe errors now call
-         throw_to_top_level () rather than return an error, because it's
-         no use continuing with the current pipeline.  Not doing so can
-         cause a call to wait_for () for the remainder of the pipeline,
-         which is just going to sit there in a stopped state with no user
-         feedback.
-
-                                   1/20
-                                   ----
-subst.c
-       - increased the amount of memory allocated when adding a number to
-         the string currently being expanded from 10 to 16.  10 characters
-         will not hold the result of 32767 * 32767, for instance.  16
-         should be plenty, but 32 would be better.
-
-                                   1/21
-                                   ----
-bashline.c
-       - added a new emacs-mode readline command to display the shell version
-         (kind of like Korn's C-V, but it displays on a separate line).  It's
-         on C-X C-V.
-
-                                   1/22
-                                   ----
-shell.c
-       - make termination_unwind_protect save the history only for an
-         interactive shell
-       - consolidated the loading and saving of the history file into
-         two functions: load_history () and save_history ()
-       - changed the history writing behavior so that interactive shells
-         will always try to append the history from the current session
-         to this history file instead of rewriting it every time.
-
-                                   1/23
-                                   ----
-general.h
-       - Posix systems have void signal handlers
-
-ulimit.c, ulimit.c.new, jobs.c.px, jobs.c, general.c
-       - moved the getdtablesize() emulation for non-BSD systems to
-         general.c, removing the private copies held by jobs.c.px, jobs.c,
-         ulimit.c, and ulimit.c.new
-
-execute_cmd.c, general.c
-       - replaced all references to NOFILE with references to
-         getdtablesize ()
-
-machines.h
-       - new entries for DG AViiON and Harris Nighthawk
-
-general.h
-       - split the replacement Posix stat definitions into their own
-         header file, `posixstat.h'
-
-test.c
-       - removed the Posix S_IS* macro definitions and added an include of
-         posixstat.h to pick them up
-
-general.c
-       - added an inclusion of posixstat.h for the replacement Posix stat
-         definitions
-
-posixstat.h
-       - this file should be included only after <sys/stat.h>
-       - some Posix-wannabe systems do not define the S_IS* macros, and
-         do not define the S_IF macros in favor of _S_IF* macros.
-
-shell.c
-       - make all signals in the terminating_signals array be conditionally
-         compiled it -- no signals are assumed to be present
-
-glob.c
-       - some Posix systems do not have a member d_ino in struct dirent.
-         Its use is now compiled out if _POSIX_SOURCE is defined.  I don't
-         think the check is necessary anyway; isn't readdir guaranteed to
-         return only active directory entries?
-
-cpp-Makefile
-       - added various entries for posixstat.h
-
-subst.c
-       - changed the code by add_number in expand_word_internal to call
-         itos() when translating an int to a string
-
-misc.c
-       - enlarged MAX_INT_LEN to 32
-
-                                   1/25
-                                   ----
-shell.c
-       - made bash, when invoked with the -c command option, save the rest
-         of the arguments as the positional parameters
-
-                                   1/29
-                                   ----
-
-misc.c
-       - made itos() handle negative numbers correctly
-
-posixstat.h
-       - include <sys/stat.h>, now can be included as a replacement for
-         stat.h
-
-builtins.c, builtins.c.px, execute_cmd.c, mailcheck.c, shell.c, test.c
-       - changed to include posixstat.h instead of <sys/stat.h>
-
-                                   1/30
-                                   ----
-
-lots of changes to nearly every file as the result of a merge with Brian's
-version of this code
-
-                                   1/31
-                                   ----
-
-parse.y
-       - correctly cast NULL pointer arguments passed to the command
-         construction functions in make_cmd.c
-
-test.c
-       - change uses of access(2) to call a new function eaccess(), which
-         performs a stat(2) call and checks the permission bits itself.
-         This means that root no longer finds that /etc/passwd is an
-         executable file.
-
-                                    2/3
-                                    ---
-test.c
-        - make eaccess() use group_member() from execute_cmd.c to test group
-          membership against all groups a user is in.  Do this if the system
-         supports multiple groups.
-
-                                    2/5
-                                    ---
-shell.c
-       - bash always executes .bashrc unless it's a login shell or acting
-         like sh.  Brian wants it this way.
-
-parse.y
-       - build a stack of tokens that have been alias expanded during a 
-         single call to read_token(), and use it to stop alias loops
-
-                                    2/6
-                                    ---
-make_cmd.c
-       - if redirection_expand returns NULL, it means that the word being
-         expanded expanded into multiple words.  In this case, abort the
-         here-document processing.  Specifically:
-
-               cat << $(date)
-
-         no longer dumps core calling strlen with a null argument.
-
-                                    2/8
-                                    ---
-readline/vi_mode.c
-       - some changes to rl_vi_eWord to make completion on `*' work
-         right
-
-builtins.c, builtins.c.px
-       - made history_builtin add a newline at the end of the history
-         expansions done when the -s option is specified
-
-                                    2/9
-                                    ---
-
-variables.c
-       - backed out of 1/18 change to find_variable().  It has the effect
-        of making this function always return the same value:
-
-              rand()
-              {
-                      echo $RANDOM
-              }
-
-                                  2/10
-                                  ----
-parse.y
-       - save the value of eof_encountered around execution of
-         PROMPT_COMMAND, otherwise ignoreeof will not work
-
-documentation/bash.1
-       - Add descriptions of the keybindings to go from emacs editing mode
-         to vi and vice versa
-
-                                  2/11
-                                  ----
-shell.c
-       - added tests for running shell scripts and for stdin being a tty
-         to the test for reading and executing .bashrc.  This means that
-         bash -c command still runs .bashrc (that's next :-).
-
-parse.y
-       - added test for interactive to disable alias expansion for
-         non-interactive shells
-
-builtins.c, builtins.c.px
-       - history -s is now gone
-
-                                   2/12
-                                   ----
-shell.c
-       - implemented a better (hopefully the final) test for executing
-         ~/.bashrc at shell startup
-
-general.c
-       - made dup2() emulation better, based on ideas from Usenet
-
-fc.c
-       - made fc_gethnum treat 0 the same as a negative number (an offset
-         from the current command number) so that fc -l -30 0 works
-         correctly
-       - make sure history_base is ignored in all calculations, but use it
-         when reporting the command number with the -l flag
-       - make `last' default to the current command when the -l flag is
-         given so that fc -l -20 works as it does in ksh
-
-                                   2/20
-                                   ----
-
-Many changes from a merge with bfox's version 1.07
-
-                                     2/25
-                                     ----
-
-jobs.c.px, jobs.h.px, builtins.c.px
-       - These files are no more, having been merged with jobs.c, jobs.h
-         and builtins.c
-
-jobs.c, jobs.h, builtins.c, shell.c, make_cmd.c, subst.c, execute_cmd.c,
-nojobs.c
-       - Adopted pid_t and WAIT_T as `native' types
-       - Propagated pid_t definition around to all necessary files
-
-readline/readline.c
-       - Some systems need the USG code without being USG (like HPUX and
-         AIX, for instance)
-
-                                     2/27
-                                     ----
-
-fc.c
-       - fixed up a few remaining bugs
-       - added code that lets options be grouped behind a single `-'
-       - added fencepost code that prevents overflow errors
-
-Another merge with Brian's almost-1.07
-
-                                    3/1
-                                    ---
-
-A final merge with Brian's 1.07
-
-                                     3/2
-                                     ---
-
-execute_cmd.c
-       - fixed a problem with asynchronous commands started from `.'
-         scripts (run with parse_and_execute) being waited for
-         inappropriately on systems without job control.  For example,
-         `. foo' where foo contains
-
-               . bar
-               echo bar done
-
-         and bar contains
-
-               sleep 300 &
-               sleep 300 &
-
-         would not echo `bar done' until 5 minutes had passed and both
-         `sleep' processes had exited.  Badness.
-
-nojobs.c
-       - fixed up so that bash can be built without job control on BSD
-         systems -- God forbid.
-
-                                    3/7
-                                    ---
-
-jobs.c
-       - Added code to initialize_jobs () to handle the broken NeXT 2.0
-         rlogind, which starts bash so that the terminal still belongs
-         to the rlogind process and getpgrp () returns 0 (?).  Looks like
-         a setpgrp(0, 0) is being done somewhere, and NeXT is not handling
-         it like 4.3 BSD does.
-
-                                   3/11
-                                   ----
-shell.c
-       - $0 is now initialized to `bash' for interactive shells when there
-         is no argv[0]
-
-                                   3/12
-                                   ----
-
-jobs.c
-       - Make set_new_line_discipline return 0 when on a termio system
-         without NTTYDISC defined (like HP/UX 6.x)
-
-                                   3/13
-                                   ----
-                     BASELINE FOR NETWORK WIDE RELEASE
diff --git a/CWRU/old-changelogs/CWRU.chlog.v4 b/CWRU/old-changelogs/CWRU.chlog.v4
deleted file mode 100644 (file)
index dade714..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-This file documents changes to CWRU bash following its first network-wide
-release.
-
-                                   3/15
-                                   ----
-Makefile
-       - change the declaration of $CPP_ARGS so that CPP_CC can have
-         embedded blanks, by adding quotes
-
-bashline.c
-       - some cosmetic changes to the FIGNORE support functions
-
-glob.c
-       - don't define USGr3 if it's already defined
-
-variables.c
-       - a declaration for the argument to put_command_name_into_env was
-         missing
-
-builtins.c
-       - only print the command name in builtin_error if this_command_name
-         is non-null
-
-expr.c
-       - catch something % 0 as an error
-
-subst.c
-       - make sure this_command_name is set to NULL before calling evalexp,
-         because evalexp uses builtin_error
-
-                                   3/18
-                                   ----
-
-variables.c
-       - changed getenv() to search the inherited environment if the hash
-         table of shell variables does not exist or has not been created
-
-                                   3/19
-                                   ----
-
-subst.c
-       - when doing command substitution, strip only the trailing newlines.
-         This is in accordance with Posix.2.
-
-general.c
-       - strip_trailing () has aquired a new flag telling whether to strip
-         all white space or just trailing newlines.
-
-variables.c
-       - since some places in the code rely on bind_variable returning a
-         valid value, the dynamic variable assignment functions have been
-         changed to take a pointer to themselves as the first parameter:
-
-               return ((*(entry->assign_func)) (entry, value));
-
-         and then return that value after doing whatever they need to
-
-                                     3/30
-                                     ----
-
-bashline.c
-       - disabled builtin commands should not be returned to the readline
-         completion functions as legal command alternatives
-
-flags.c
-       - do not redefine NULL; check only after including all needed
-         .h files
-
-nojobs.c
-       - fix unconditional reference to status.w_*
-       - fix typo after call to WIFCORED in wait_for
-
-readline/readline.c
-       - make sure all calls to BSD signal mechanism are protected by test
-         for HAVE_BSD_SIGNALS define
-       - make sure declaration of struct ltchars variable is protected by
-         test for definition of TIOCGLTC
-       - change #include file from sys/errno.h to errno.h
-       - added a new function rl_stop_output (), the non-emacs version of
-         ^S, to go with rl_restart_output.  Haven't done anything with it
-         yet.
-       - added Posix support in the form of tcflow() calls to 
-         rl_restart_output and rl_stop_output
-
-readline/readline.h
-       - change the declaration of rl_filename_completion_ignore_function
-         to extern.  It was coming up as multiply defined on some systems
-
-siglist.c
-       - change #include file from sys/signal.h to signal.h
-       - some systems define _NSIG but not NSIG.  Define NSIG in terms of
-         _NSIG on those systems
-
-ulimit.c
-       - change #include file from sys/errno.h to errno.h
-
-subst.c
-       - string_extract_double_quoted() needs to ignore "" inside `` pair,
-         but this code should be executed only if the ` is not backslash-
-         escaped.
-       - changed sv_uids() to give UID, EUID the integer attribute
-         automatically
-
-machines.h
-       - check for the DG AViiON defining either __DGUX__ or DGUX, make
-         sure DGUX is defined in any case
-
-trap.c
-       - change run_pending_traps to loop from 1 to NSIG instead of 0 to
-         NSIG
-
-execute_cmd.c
-       - For a command run explicitly in a subshell via (), run_exit_trap ()
-         needs to be called after that command has executed for /bin/sh
-         compatibility
-
-variables.c
-       - make $PPID have the integer attribute when it is intialized
-
-                                    4/2
-                                    ---
-
-subst.c
-       - make string_extract_double_quoted handle backslash-escaped
-         ` correctly when parsing a `` pair
-
-                                    4/3
-                                    ---
-
-jobs.c
-       - make sure job_control is set to 1 before the first time
-         give_terminal_to is called, so that it does its job and the
-         process groups are correct.
-
-subst.c
-       - make string_extract_double_quoted() not turn \\ into \ inside
-         quoted strings.  The translations will be taken care of later.
-
-nojobs.c
-       - make sure we get the tty state in initialize_jobs(), and don't
-         try to set it in set_tty_state until we know we have saved
-         valid settings.
-
-                                     4/6
-                                     ---
-
-shell.c, execute_cmd.c, shell.h
-       - shell now exits with status 127 when asked to execute a binary        
-         file as a shell script
-
-builtins.c
-       - `local' is once again an error outside a function
-       - `trap' now formats output differently when given no arguments;
-         the new format is suitable for feeding back to the shell as
-         input to `trap'
-       - cleaned up a contradiction in the help text for the `export'
-         builtin
-       - `export' and `readonly' now accept a -p flag for Posix.2 compliance
-         that acts the same as if no flags had been specified, and take a
-         `--' option to disable further option processing
-       - `unset' takes a `--' argument to disable further option
-         processing
-       - when given the -f flag, unset will now try to unset a variable
-         if no function is found for the name supplied
-       - `kill' now takes a -s signal argument as equivalent to -signal
-       - `kill' takes a `--' argument to disable further option processing,
-         since a negative number may be used to denote a process group
-       - `kill -l' now takes arguments and lists the names for individual
-         signals by number.  If the number given as argument is > 128, it
-         is assumed to be an exit status, and 128 is subtracted before
-         further processing
-
-builtins.c, variables.c
-       - `set +' is no more; print_vars_no_values() is no longer needed
-
-flags.c, builtins.c
-       - `set -C' is now an alias for noclobber
-
-trap.c
-       - SIGNULL is no longer a valid name for signal 0
-
-getopts.c, subst.c
-       - resetopts () --> getopts_reset ()
-       - rewrote getopt() per Brian's request
-
-builtins.c
-       - `return' is now valid when executing a file with the `.' builtin
-         and causes the execution to be aborted
-
-execute_cmd.c
-       - file descriptors > 2 manipulated via `exec' are no longer set to
-         close-on-exec
-
-                                    4/8
-                                    ---
-
-cpp-Makefile
-       - fixed the bad definition of RANLIB if RANLIB_LOCATION was defined
-       - pass the correct definition of ranlib through to the make of
-         readline
-
-readline/readline.c
-       - make sure some defaults for screen size are defined in the case
-         of a dumb terminal
-
-builtins.c
-       - `return' now works for aborting files executed with the `.'
-         builtin
-
-parse.y
-       - a `"' before a closing ) in a $( ) construct within double
-         quotes is no longer an error
-
-subst.c
-       - string_extract_double_quoted now passes everything between $(
-         and ) through verbatim, without scanning it for double quotes.
-         This way, `echo "$(echo "*")"' will echo `*' like it should.
-
-documentation/bash.1
-       - updated to reflect the changes from Posix.2 draft 11.
-
-                                   4/10
-                                   ----
-
-execute_cmd.c, builtins.c
-       - changed some instances of absolute_pathname to absolute_program
-         (like doing PATH, CDPATH searching, the `type' builtin,  and
-         filename hashing)
-
-readline/readline.c
-       - made rl_deprep_terminal do a little sanity checking on the
-         values in otio that it is restoring
-
-       Minor update of tar files available for FTP from CWRU
diff --git a/CWRU/old-changelogs/CWRU.chlog.v5 b/CWRU/old-changelogs/CWRU.chlog.v5
deleted file mode 100644 (file)
index 55b994c..0000000
+++ /dev/null
@@ -1,1492 +0,0 @@
-
-                                  4/11
-                                  ----
-
-machines.h, general.c, cpp-Makefile
-       - wrapped the definition of strerror() inside a new machines.h
-         variable, HAVE_STRERROR
-
-machines.h
-       - new machine definition for the Encore series 91
-       - removed definitions of NO_WAIT_H; let makeargs.sh decide for us
-
-builtins.c
-       - the test used in cd_builtin () to decide whether or not to use
-         CDPATH was incorrect.  It now uses CDPATH unless the directory
-         name begins with a slash.
-
-cpp-Makefile, machines.h
-       - added SYSDEP_LDFLAGS for flags to ld, analogous to SYSDEP_CFLAGS
-
-                                  4/13
-                                  ----
-
-machines.h
-       - more changes to Encore entries from pierson@encore.com
-       - added -Wf,-XNl3072 to SYSDEP_CFLAGS for all machines that use the
-         MIPS chip and compilers.  This increases the maximum size of a
-         string constant, which some of the help strings in builtins.c
-         were exceeding
-
-jobs.c
-       - include trap.h only if JOB_CONTROL is defined, since nojobs.c
-         does not use its facilities
-
-                                    4/14
-                                    ----
-
-getopts.c
-       - changed error handling so that it obeys the Posix.2 draft 11 spec
-         (which is like ksh-88)
-
-                                  4/16
-                                  ----
-
-execute_cmd.c
-       - only run the exit trap in a subshell when command_subshell ==
-         USER_SUBSHELL, which means the user forced a subshell with ( )
-
-cpp-Makefile
-       - updated the dependency information
-
-quit.h
-       - changed the definition of throw_to_top_level to `extern' -- it
-         sometimes matters
-
-readline/vi_mode.c
-       - fix to make the vi-mode `b' command work when you type it twice
-         in a row
-
-                                  4/17
-                                  ----
-
-readline/vi_mode.c
-       - more fixes for vi `b' and `B' commands
-       - fixes for vi `w' and `W' commands
-       - fixed `_' command to yank the correct arg from the previous history
-         line
-
-readline/{vi_{mode,keymap}.c,readline.h}
-       - added a new function, rl_vi_fetch_history(), to implement the `G'
-         command.  It's not totally right, but it's better than having none
-         at all.
-
-                                  4/18
-                                  ----
-
-builtins.c
-       - only call the with_input_from_* functions in set_minus_o_option
-         if the shell is interactive when doing set -o emacs or set -o vi
-         (this prevents core dumps when doing a "set -o emacs" from a
-         startup file, because none of that stuff is initialized when the
-         startup files are run)
-
-bashline.c
-       - make sure all of the bindings are done to explicit keymaps, so
-         as to not randomly change the keymap the user has chosen with
-         a set -o in a .bashrc file.  The original ones all assumed the
-         current keymap was the emacs keymap, and this will screw up a
-         vi keymap seriously.
-
-readline.c
-       - .inputrc file parsing now recognizes the `$if mode=emacs' or
-         `$if mode=vi' construct in parser_if()
-
-trap.c
-       - make sure the jmp_buf stored in top_level is valid during the
-         execution of run_exit_trap, or we may jump off into never-never
-         land.
-
-         For example, consider a script that runs until it reads eof, and
-         has an exit trap set that contains a call to `exit'.
-         parse_and_execute will be called after reader_loop (and hence the
-         valid definition of top_level) is already off the stack and
-         invalid, and the longjmp in exit_builtin will seg fault.
-
-machines.h
-       - for MIPS machines in the BSD universe (-systype bsd), make sure
-         HAVE_UNISTD_H is undefined -- the compiler doesn't let us get to
-         it, even if it is there (wierd)
-
-config.h
-       - made the HELP_TEXT define that enables the inclusion of the huge
-         documentation strings for builtins a configurable parameter defined
-         here.  It's undefined by default, which means the long text is
-         not compiled in.
-
-general.c
-       - rewrote strip_trailing() to make it handle all cases where the
-         entire string should be stripped (e.g. "\n\n\n\n" when newlines
-         only are to be stripped)
-
-subst.c
-       - quoted results of command substitutions should have trailing
-         newlines stripped, not just the last newline as it was doing
-
-builtins.c
-       - aliases are no longer required to be legal identifiers, as
-         defined by Posix.2.  This originally came from 1003.2a,
-         draft 5, but I think it's on its way out
-
-                                  4/19
-                                  ----
-
-shell.c
-       - fixed a typo in the code that decides whether or not to source
-         ~/.bashrc, so now it sources it when we expect it to (no more
-         sourcing .bashrc for `echo ls | bash').  It was a misplaced
-         paren.
-
-parse.y, subst.c
-       - when parsing and evaluating $() and $[] constructs, bash needs
-         to take into account instances of `(' and `[' respectively
-         inside the delimiting characters and adjust the number of closing
-         parens or brackets that need to be read before the construct is
-         complete.  This is so things like $( (pwd) ) or $((pwd)) will
-         work as expected.
-
-                                    4/21
-                                    ----
-parse.y
-       - consolidated two grammar rules for `function f { echo foo; }'
-         into one -- there was no real difference between the two
-
-variables.c
-       - deleted inclusion of version.h.  It was not used.
-
-cpp-Makefile
-       - removed dependence of variables.o on version.h.  This caused
-         variables.c to be unnecessarily recompiled each time
-         version.h changed.
-
-trap.h
-       - changed the definition of IGNORE_SIG to be SIG_IGN, because
-         defining it as 0 made it the same as SIG_DFL, and hence
-         DEFAULT_SIG
-
-jobs.c, nojobs.c
-       - changed the restoration of signals altered by traps to be
-         after SIGINT, SIGQUIT, and SIGTERM are restored to their
-         default state so that ignored signals remain ignored in
-         children
-
-jobs.c
-       - SIGINT and SIGQUIT should be ignored by default for asynchronous
-         children
-       - changed all calls to signal (s, SIG_DFL) in make_child for SIGINT,
-         SIGQUIT, and SIGTERM to call restore_default_signal() instead
-         (which should really be called restore_original_signal()), because
-         what you really want is for children to have the values for these
-         signals that the shell started with.
-
-trap.c
-       - make sure signals set to be ignored in the shell are set to SIG_IGN
-         in the child by calling ignore_signal in restore_original_signals()
-       - make the loop that records the original values of the signals for
-         the shell in initialize_traps() run from 1 to NSIG-1
-
-                                  4/22
-                                  ----
-
-shell.c
-       - make sure the `i' flag is turned on (so that it appears in $-)
-         before the startup scripts are run
-
-                                  4/23
-                                  ----
-
-general.c
-       - changed pathname_backup to not back up past the start of the
-         path it is passed looking for a `/'.  It causes core dumps on
-         a lot of systems.
-
-config.h
-       - Ultrix does dup2() wrong, so make it use the dup2() emulation
-         implemented with fcntl() by making sure NO_DUP2 is defined
-
-jobs.c
-       - fixed a posix race condition by making the first process in a
-         pipeline wait for all of the processes to be created and have
-         their process group set correctly before returning from
-         make_child().  The synchronization is done around a shared pipe.
-       - added a function close_pgrp_pipe() that other files can call to
-         have the pgrp pipe closed for them
-
-subst.c
-       - added call to close_pgrp_pipe from the parent half of the command
-         substitution code, since this code will not call start_pipeline
-         or stop_pipeline.  Otherwise the child waits forever trying to
-         read the pipe.
-
-readline/vi_mode.c
-       - more changes to the vi mode code, this time to rl_vi_eWord for the
-         `E' command
-
-                                  4/24
-                                  ----
-
-execute_cmd.c
-       - only restart an auto-resume job if the job is marked as JSTOPPED.
-         This fixes the `for i in 1 2 3; do who; done | sort' only running
-         `who' once bug.
-
-parse.y
-       - removed extern declarations of index(), rindex(); they should be
-         taken care of in general.h
-
-machines.h
-       - some changes to the mips and sgi entries
-
-readline/readline.c
-       - change rl_redisplay so DEL is echoed as C-?
-
-                                  4/25
-                                  ----
-
-makeargs.sh
-       - a new implementation from Brian
-
-jobs.h
-       - changed the sense of the test for the presence of sys/wait.h to
-         test HAVE_WAIT_H rather than NO_WAIT_H.  HAVE_WAIT_H is set by
-         makeargs.sh
-
-jobs.c
-       - don't bother calling tcsetpgrp() in give_terminal_to() if the
-         process group already owns the terminal
-
-test.c
-       - change eaccess() so that root requires execute permission for
-         anyone in order to be able to execute a file
-
-execute_cmd.c
-       - change executable_file() so that root can execute a file if any
-         of the u, g, o x-bits are turned on
-
-documentation/features.texinfo
-       - fixed a typo on line 352 ({ -> })
-
-documentation/bash.1
-       - some cosmetic changes to the manual page
-
-                                  4/26
-                                  ----
-
-parse.y
-       - made read_a_line handle a null character being returned from
-         yy_getc () in a reasonable fashion instead of falling out of
-         a loop and returning garbage to its caller
-
-                                  4/27
-                                  ----
-
-shell.c
-       - make the file descriptor from which we are reading the text of
-         a script be set to close-on-exec
-
-execute_cmd.c
-       - now that Ultrix uses the dup2() emulation in general.c, the code
-         that sets file descriptors to open-on-exec on Ultrix systems
-         can be disabled
-       - fixed up the test for root in executable_file()
-
-test.c
-       - fixed up the test for root in eaccess() so that root can read or
-         write any file, but only execute executable files
-
-                                    4/28
-                                    ----
-braces.c
-       - if the text between braces does not contain a comma, just return
-         the text with braces intact.  This is for greater /bin/sh
-         compatibility
-
-                                  4/29
-                                  ----
-
-bashline.c
-       - some changes from a merge with bfox bash-1.07
-
-execute_cmd.c
-       - added an extern declaration for make_command_string()
-
-general.c
-       - made itos() use unsigned arithmetic so that $[ 32768*65536] works
-         right
-
-                                  4/30
-                                  ----
-
-readline/readline.c
-       - fixed typo for sys5 termio version of rl_prep_terminal() that
-         called ioctl with the wrong number of parameters
-       - made readline handle SIGALRM and clean up after itself when
-         it hits
-
-ulimit.c, ulimit.c.new
-       - fixed up return value for -f on HP/UX -- the man page for
-         ulimit(2) lies about its return value
-
-makeargs.sh
-       - need to initialize SYSDEF and SHLIB so we don't pick up any
-         values from the environment
-
-readline/history.c
-       - fixed typo in `mode' argument in call to open(): 066 -> 0666
-
-builtins.c
-       - mark HP/UX as not having resources even though it has
-         /usr/include/sys/resource.h
-
-cpp-Makefile, Makefile, makeargs.sh, config.h
-       - changes from bfox bash-1.07
-
-machines.h, builtins.c, general.c
-       - changes for bfox port to cadmus
-
-posixstat.h
-       - added definitions for Posix file modes for those systems that do
-         not have them
-
-                                   5/1
-                                   ---
-
-subst.c
-       - added a function remove_quoted_nulls to do quote removal when we're
-         not doing word splitting.  It's called from expand_string_unsplit
-
-fc.c
-       - removed the code that handled EOF from fc_readline
-       - fixed possible memory leaks in fc_builtin (line returned from
-         fc_readline()) and fc_readline()
-       - fixed calls to builtin_error so they no longer include a literal
-         "fc" in the error string
-
-execute_cmd.c
-       - fixed execute_simple_command so that commands called from the
-         command builtin do not have arguments re-expanded by another
-         call to expand_words()
-
-readline/readline.c
-       - disable the ONLCR bit in the termio and termios version of
-         rl_prep_terminal so that pesky extra ^M is no longer sent
-
-readline/vi_mode.c
-       - fixed a typo that caused a test to be reversed in rl_vi_bword()
-
-                                   5/2
-                                   ---
-
-shell.c
-       - preserve leading `-' in argv[0] (and $0) when bash is invoked
-         this way.  Ensure that we do not infinitely recurse executing
-         .bash_profile if there is a shell script that bash executes or
-         a command substitution by incrementing shell_name past a leading
-         `-' when main() is invoked a second time.  Initialize $0 to
-         "bash" if it is null or equal to "-".
-
-builtins.c
-       - added symbolic mode printing and arguments (like chmod) to umask.
-         Now, "umask 002" and "umask a=rx,ug+w" are equivalent
-       - removed change to unset from Posix.2 draft 11; it is required to
-         use -f if trying to unset a function and it unsets a variable
-         otherwise
-
-bashline.c
-       - make sure display_shell_version leaves the cursor at column 0
-         before calling rl_on_new_line()
-
-                                   5/3
-                                   ---
-
-jobs.c
-       - defined a `unifying' way to get the process group of an arbitrary
-         process: getpgid(p).  Constructed a bunch of #defines to get it
-         defined correctly in terms of getpgrp().  Used in initialize_jobs
-
-execute_cmd.c
-       - converted a call to statmode & S_IFDIR (which was wrong in the
-         first place, should have been (statmode & S_IFMT) == S_IFDIR)
-         into a call to S_ISDIR (statmode) in executable_file
-       - for systems with broken (4.2 BSD-style) dup2() calls, which do
-         not set the new descriptor to be open across execs, define
-         DUP2_BROKEN and do the explicit setting ourselves.  Ordinarily,
-         setting NO_DUP2 and using the fcntl emulation is sufficient, but
-         on some systems (Sequent Dynix), fcntl(fd, F_DUPFD, fd2) is
-         broken this way, too.
-
-expr.c, fc.c
-       - make sure NULL is defined as 0, redefining it if necessary
-
-                                    5/3
-                                    ---
-
-execute_cmd.c
-       - in execute_case_command(), make sure we call expand_word on the
-         case statement pattern with quoting set to Q_KEEP_BACKSLASH, so
-         backslashes are not treated specially depending on the character
-         that follows them.  Here's the comment from the relevant section
-         of the code:
-
-         /* expand_word calls expand_word_internal, then performs word
-            splitting and dequotes the result.  This causes parameter
-            expansion, command substitution, arithmetic expansion, and
-            quote removal to occur.  What we *really* want is only
-            parameter expansion and " and ' removal.  Calling expand_word
-            with Q_KEEP_BACKSLASH is the way to do part of this.  The
-            command substitution part is still done, but that's OK. */
-
-subst.c
-       - break the command substitution code off into its own function,
-         command_substitute()
-
-shell.h, subst.c, execute_cmd.c
-       - enumerated the possible values for the `quoted' argument to the
-         expansion functions: Q_DOUBLE_QUOTES, which means expand as if
-         the string were in double quotes, Q_HERE_DOCUMENT, which means
-         expand the string according to the rules for expanding here-
-         documents, and Q_KEEP_BACKSLASH, which means to not treat back-
-         slashes specially at all.
-
-readline/vi_keymap.c
-       - bound `*', `=', and `\' in the vi movement keymap to rl_vi_complete
-
-readline/vi_mode.c
-       - If the command is cw or cW, we don't want whitespace after the
-         end of the word eaten, so change the w or W to e or E,
-         respectively
-       - made rl_vi_complete handle all three kinds of vi_mode completion
-       - changed rl_vi_char_search to check boundary conditions and avoid
-         going off the end or start of the current line searching for a 
-         character
-       - changed rl_vi_domove to implement the `yy' command
-
-                                   5/6
-                                   ---
-subst.c
-       - check the return value from expand_string_internal in
-         expand_string_unsplit; make sure we don't try to dereference a
-         null value
-
-machines.h
-       - new entry for NCR tower 32 running System V.3
-       - changes to IBM AIX entries
-
-               Changes from a merge with bfox 1.07 sources
-
-                                   5/7
-                                   ---
-
-cpp-Makefile
-       - take out some explicit `touch' commands that are taken care of
-         by the dependencies
-       - added the files created in the build process (endian, psize,
-         sysdefs) to the `make clean' target
-
-nojobs.c
-       - don't print a message if a command was terminated by SIGINT
-       - removed the call to QUIT from wait_for; the builtin `wait'
-         command does not go through this function
-       - added siginterrupt calls so we can run this on a 4.2+ BSD
-         system without job control and interrupt `wait'
-
-Makefile
-       - make the command to run to remove runs of blank lines from the
-         cpp output configurable (`cat -s' means nothing on System V;
-         there are some alternatives: ssp on HP/UX, for example)
-
-                                   5/8
-                                   ---
-test.c
-       - added a `posixtest()' function that implements a proposal to the
-         Posix.2 shell working group by David Korn.  Broke the code that
-         handles unary and binary operators out into individual functions.
-         Added functions that will check whether a string is a valid test
-         unary or binary operator.
-       - changed eaccess so that the test for root and X_OK works for
-         both files and directories
-       - added a new unary operator, -a, which is true if its argument
-         simply exists in the file system
-
-shell.c
-       - changed the test for whether or not we are running under an emacs
-         shell buffer to test if TERM = "emacs", rather than for the
-         presence of the environment variable EMACS
-
-general.c
-       - added a function unset_nodelay_mode that will unset either flavor
-         of no-delay mode (O_NONBLOCK or O_NDELAY) for a given file
-         descriptor.  This is called from shell.c$main() for the standard
-         input.
-
-glob.c
-       - added code to check that a directory is really a directory before
-         calling opendir on it.  Some systems do not check, and core dump
-         in readdir() (e.g. MIPS)
-
-expr.c
-       - allow underscores in the names that the token reader recognizes
-         as variables
-       - set a maximum recursion level of 1024 calls to pushexp()
-
-builtins.c
-       - parse_and_execute has to setjmp (top_level) (saving the old value,
-         of course) so that bad substitutions and the like that call
-         (longjmp (top_level, DISCARD)) don't jump to the `real' top level,
-         which leaves input still coming from the string passed to
-         parse_and_execute, and sometimes core dumps
-
-shell.c
-       - made an option -- signal the end of the options list, as Posix
-         specifies
-
-getopt.c
-       - a slightly modified version of the GNU getopt().  The changes
-         are:
-               o the addition of a variable optopt, which holds the option
-                 character last processed
-               o The value of optarg is now specified in the case of
-                 return values: if an illegal option is given, optarg
-                 is NULL; if a required option argument is missing,
-                 optarg[0] == 0
-               o a function to programmatically set the option order that
-                 getopt will handle to the Posix option order:
-                 set_posix_option_order
-               o changed the error messages printed to be those that
-                 Posix.2 specifies
-
-getopts.c
-       - deleted private version of getopt()
-       - changes to work with the modified GNU getopt as described above
-
-                                   5/9
-                                   ---
-builtins.c
-       - added -v option to `unset'; changed it to comply with Hal
-         Jesperson's latest Posix.2 draft
-
-machines.h
-       - picked up a machine description for a 386 box running ISC 2.2 from
-         bfox
-       - add -DDUP2_BROKEN to the entries for Sequents running Dynix because
-         Dynix does not set the new file descriptor created with dup2() or
-         fcntl(fd, F_DUPFD, ...) to be open across execs
-
-make_cmd.c
-       - Make sure all the arguments to make_command are cast to the correct
-         values
-
-general.h, jobs.c, execute_cmd.c
-       - moved the definition of FD_CLOEXEC to general.h, which should be
-         included *after* <fcntl.h>
-
-shell.c
-       - timeouts should happen only when the shell is interactive, so just
-         move all the code in read_command that deals with it inside an
-         if (interactive) statement.
-       - changed message printed by show_shell_version to be that same as
-         that put into the $BASH_VERSION variable
-
-readline/readline.c
-       - don't destroy the value of the tty flags when trying to read with
-         O_NDELAY turned off in rl_gather_tyi()
-
-Makefile, squish.awk
-       - For systems that do not have a -s option to cat that compresses
-         runs of blank lines to a single blank line, there is an awk script
-         supplied that will do it
-
-parse.y
-       - made yy_stream_unget and yy_readline_unget return values, not
-         garbage
-
-                                  5/10
-                                  ----
-variables.c
-       - don't deallocate the old value in bind_variable until any needed
-         arithmetic evaluation has been done.  If we're performing an
-         assignment statment like `even=even+2' where even has the integer
-         attribute, we'll need the old value to evaluate the RHS
-
-shell.c
-       - make throw_to_top_level call bashline_reinitialize so all the
-         function pointers are restored to their correct values on an
-         interrupt (problem observed on a Sun running SunOS 4.1)
-
-                                    5/11
-                                    ----
-jobs.c
-       - replaced literal `bash:' in error messages with the name of the
-         shell, as given in shell_name
-
-                                  5/13
-                                  ----
-nojobs.c
-       - make sure the pid passed to wait_for is valid before calling
-         wait() by doing a kill(pid, 0)
-
-test.c
-       - test -e should return true if a file exists in the file system,
-         according to Posix.2.  Make it equivalent to -a, document it in
-         the man page and help text, and make -a undocumented
-       - all variables global to test.c should be declared as static
-         (e.g. test_exit_status, test_exit_buf)
-       - make test -f behave as Posix.2 mandates (file exists and is a
-         regular file) instead of trying to please both BSD and System V
-
-makeargs.sh
-       - if the file /etc/xlc.cfg exists and contains the string _IBMR2,
-         assume we're on an RS/6000 and define RISC6000
-
-builtins.c
-       - Print traps in trap_builtin only if trap_list[i] is neither of
-         DEFAULT_SIG or IGNORE_SIG
-
-jobs.c
-       - run trap on SIGCHLD only if it is neither of DEFAULT_SIG or
-         IGNORE_SIG
-
-trap.c
-       - make it an error if trap_handler catches a signal for which the
-         trap_list holds IGNORE_SIG or DEFAULT_SIG
-
-                                  5/14
-                                  ----
-
-execute_cmd.c
-       - make redirection_expand return (char *)NULL in the case where the
-         word expands to nothing
-
-jobs.c
-       - added two functions: terminate_stopped_jobs, which walks the job
-         list and sends SIGTERM and SIGCONT to each stopped job, and
-         hangup_all_jobs, which walks the job list and sends SIGHUP and,
-         if necessary, SIGCONT to all jobs
-
-shell.c
-       - added call to terminate_stopped_jobs() after reader_loop exits,
-         before the shell is about to exit
-       - added call to hangup_all_jobs if the shell receives a SIGHUP that
-         causes it to exit
-
-test.c
-       - removed remaining vestiges of the special-casing of the -f operator
-         between System V and BSD
-
-                                    5/18
-                                    ----
-
-builtins.c
-       - traps should be printed if trap_list[i] == IGNORE_SIG
-       - fixed a typo in fg_bg() that would cause a seg fault when
-         decode_job_spec returned DUP_JOB
-
-trap.c
-       - don't run a trap on EXIT if set to IGNORE_SIG
-
-shell.c
-       - the initialization of traps must be done before we initialize
-         signals, because the shell needs to know that values of signals
-         that it inherited from its parent
-
-execute_cmd.c
-       - broke all the stuff bash does after execve into a new function,
-         bash_execve, called exactly like execve.  If it returns, it
-         returns EXECUTION_FAILURE, so the execute_simple_command code can
-         just do exit (bash_execve (command, argv, envp))
-
-builtins.c
-       - made the exec builtin call bash_execve so executable shell scripts
-         can be the target of exec
-
-                                    5/19
-                                    ----
-subst.c
-       - added new functions that will perform quote removal only on
-         strings, WORD_DESCs, and WORD_LISTs.
-
-make_cmd.c
-       - quote removal is the only expansion that should be performed on
-         the delimiter of a here document, so call the new quote removal
-         functions in subst.c instead of redirection_expand()
-
-subst.c, shell.h
-       - changed expand_word_internal to do the right thing when given
-         a `quoted' argument of Q_KEEP_BACKSLASH; it means to preserve
-         backslashes unconditionally.
-
-         This causes a flag to be set inside expand_word_internal that it
-         passes to recursive invocations (like when expanding "string").
-         The values for the `quoted' argument have been changed to be
-         distinct bit values so that they can be masked and OR'd together.
-
-execute_cmd.c
-         execute_cmd.c now calls expand_word with an argument of 
-         Q_KEEP_BACKSLASH, so that only parameter expansions and "" and ''
-         removal are performed
-
-                                    5/22
-                                    ----
-
-                     Another big merge with bfox source
-
-builtins.c
-       - restore the original values of signals before calling bash_execve
-         in exec_builtin
-
-                                  5/23
-                                  ----
-test.c
-       - Brian's change to `unop' broke it -- the function now has an
-         integer passed to it, not a string of the form -x
-       - ! with 4 arguments should not fall through to the default case;
-         a `break' statement was missing
-
-config.h, machines.h, cpp-Makefile
-       - change NO_DUP2 to !HAVE_DUP2
-
-general.c
-       - change NO_DUP2 to !HAVE_DUP2
-       - add a call to SET_OPEN_ON_EXEC for the new file descriptor in our
-         dup2() emulation using fcntl
-
-execute_cmd.c
-       - removed the calls to SET_OPEN_ON_EXEC that were enabled by defining
-         DUP2_BROKEN; now undef HAVE_DUP2 and use the dup2 emulation in
-         general.c for those machines
-
-                                  5/24
-                                  ----
-subst.c
-       - Even if no expansion is performed in expand_word_internal, and
-         therefore no word splitting is done, the quoted null characters
-         still need to be removed from the WORD_LIST.  Add a new function
-         word_list_remove_quoted_nulls to do the removal for each element
-         of the list, and call it from expand_words_1
-
-bashline.c
-       - call tilde_expand on the returned $PATH components in
-         command_word_completion_function
-
-More fixes and changes from a merge with bfox's source
-
-                                    5/25
-                                    ----
-execute_cmd.c
-       - changed some `pid' declarations to be pid_t instead of int
-
-variables.c
-       - dollar_dollar_pid is still an int, so cast the return value
-         of getpid() when assigning to it
-
-                                  5/28
-                                  ----
-subst.c
-       - more quoted null character fixes -- {de,}quote_string needs to
-         handle quoted null strings, and list_string has to do the
-         right thing with them
-
-builtins.c, execute_cmd.c
-       - bash_execve -> shell_execve
-
-makeargs.sh
-       - typo fix: elc.cfg -> xlc.cfg
-
-cat-s
-       - change the length($0) == 0 to NF == 0 so that lines with only white
-         space are deleted as well as blank lines
-
-subst.c
-       - quote_string and dequote_string now return char * and allocate a
-         new string for the return value
-
-expr.c
-       - have evalexp() save and restore the old value of evalbuf around
-         possible recursive calls
-
-cpp-Makefile
-       - the failure of a `touch' command is no longer a fatal error
-
-readline/readline.c
-       - only try to use ONLCR if it is defined
-
-machines.h
-       - fixes to the AT&T 3B2 and IBM AIX (RT, 370) descriptions
-
-readline/vi_mode.c
-       - now `p' is allowed at the end of a line
-       - yank-to (yw, ye) yanked one-too-few characters -- fix in
-         rl_vi_yank_to
-       - `r' command should not advance the cursor to the right
-       - `cw' now works like ce (and cW like cE) in that the white space
-         after the deleted word is not deleted
-       - cw now deletes the last character on the line, when point is the
-         last character on the line when it is executed
-
-                                  5/29
-                                  ----
-subst.c
-       - fixed a seg fault when trying to do parameter substitution assignment
-         (${a=b}) with a null string:  ${UnDeFiNeD=`false`}
-
-machines.h
-       - new entry for Sequent Symmetry running Dynix/ptx (System V.3.2)
-
-builtins.c
-       - parse_and_execute needs to handle longjmp(top_level, EXITPROG)
-         (FORCE_EOF, too) by restoring the old value of top_level and
-         doing another longjmp.  This is needed so that an exit inside a
-         `.' script will actually exit the shell
-       - make `typeset -f foo' print the definition of the function foo,
-         if one exists.
-
-jobs.h
-       - defined NO_PID as -1, a value that cannot possibly be a pid
-
-jobs.c
-       - all pid and pgrp variables are initialized to (pid_t) NO_PID
-
-subst.c
-       - reorganized the ${} code into several functions
-       - make the brace-counting code that gathers the RHS of a ${}
-         parameter substitution use extract_delimited_string
-       - if no asynchronous commands have been executed, $! should echo
-         nothing
-       - make ${#} work like $#
-       - make ${#-foo} a bad substitution
-       - test for len_alt_opener == 0 in extract_delimited_string before
-         comparing the string with alt_opener
-       - ${special_var?} should echo the standard message ``parameter
-         null or not set''
-       - plugged some memory leaks -- memory was not freed before longjmp
-         calls after bad substitutions
-
-                                  5/30
-                                  ----
-
-subst.c
-       - more radical reorganization
-
-cpp-Makefile
-       - redid the dependencies so that it's no longer required to `touch'
-         a .h file if another .h file changes
-
-glob.c
-       - statbuf -> finfo
-
-readline/tilde.c
-       - new file that handles the tilde expansion for the shell and readline
-
-readline/readline.c
-       - tilde_expand removed from this file; now in tilde.c
-
-general.c
-       - new function tilde_initialize to initialize the tilde expansion
-         code
-       - bash_tilde_expand is now in general.c, since it should work even
-         if readline is turned off for some reason
-
-shell.c
-       - tilde_initialize called as part of shell initialization
-
-                                  5/31
-                                  ----
-
-parse.y
-       - aliases consisting entirely of digits are now allowed; simply
-         commented out the !all_digits test
-
-documentation/bash.1
-       - the PROMPTING section should make clear the difference between
-         \w and \W
-
-machines.h
-       - small fix to isc386 entry -- we still have alloca if we're using
-         gcc
-       - add -D_DGUX_SOURCE to the SYSDEP_CFLAGS for the DG/UX entries
-       - add -DNLS to the RS6000 SYSDEP_CFLAGS
-
-cppmagic.sh
-       - improved the test for gcc-cpp by also looking for the word
-         `recognized' in the error message
-
-readline/readline.c
-       - don't declare getpwuid() and getpwnam() if we're on an ISC 386
-         machine
-
-machines.h, posixstat.h, execute_cmd.c
-       - changes from Saul Lubkin for Posix bash on ISC 2.2
-
-                                   6/1
-                                   ---
-
-jobs.c
-       - make the behavior of jobs started when job control is not active
-         be the following:
-
-               if the shell is interactive, set SIGTSTP, SIGTTIN, and
-               SIGTTOU to SIG_IGN.  This way, typing ^Z to a running
-               process will not do anything
-
-               if the shell is  non-interactive, set SIGTSTP, SIGTTIN,
-               and SIGTTOU to SIG_DFL, so jobs started from scripts
-               will stop when the script shell gets a SIGTSTP
-
-         It might work to simply not change the values of the signals if
-         job_control == 0, since this is how they *should* be, but that
-         seems too chancy.
-
-execute_cmd.c
-       - make && and || constructs unstoppable, because there's no other
-         way to prevent the second process from executing immediately
-         if the first one is stopped (this is what ksh appears to do).
-         Make sure that we add an unwind_protect call to restore the
-         value of job_control if the command is interrupted.
-
-                                   6/3
-                                   ---
-
-subst.c
-       - tilde expansion should be performed if there is an unquoted tilde
-         anywhere in the word, so we can check for `=~' and `:~'
-
-                                   6/4
-                                   ---
-
-subst.c
-       - tilde expansion should be performed in do_assignment_internal
-         only if the `expand' argument is 1 and we do the other expansions
-       - pass the word to tilde_expand in expand_words_internal even if
-         its quoted bit (tlist->word->quoted) is set
-
-jobs.c
-       - make set_job_control return the old value of job_control, so you
-         can say `old_job_control = set_job_control (0);'
-
-unwind_prot.c
-       - added a structure to save the value of an integer variable.  Two
-         new functions use it: unwind_protect_var (&var) allocates this
-         structure, fills it in, then calls add_unwind_protect specifying
-         restore_variable as the function to execute.  restore_variable takes
-         this structure as an argument, restores the specified variable,
-         and frees the structure it gets
-
-builtins.c, execute_cmd.c
-       - changes to use unwind_protect_var to restore variables
-
-                                   6/5
-                                   ---
-
-readline/readline.c
-       - readline now enables 8-bit input by default for termio, termios
-         systems (c_iflag &= ~ISTRIP)
-
-shell.c, builtins.c
-       - special_source_interrupt was renamed to parse_and_execute_level
-
-builtins.c
-       - parse_and_execute now uses unwind-protects to clean up after itself,
-         allowing these to be run from another place in the code if necessary
-       - special_buf is no longer used as a cleanup mechanism
-       - new function parse_and_execute_cleanup that can be called from
-         anywhere that encapsulates all the necessary unwind protects for
-         parse_and_execute
-       - period_builtin now calls parse_and_execute_cleanup to have
-         parse_and_execute clean up if the `return' builtin is executed
-         while in the middle of a `.' command and not inside a function
-
-trap.c
-       - run_interrupt_trap now prevents recursive calls to itself by
-         making trap_list[SIGINT] null while it is executing
-
-shell.c
-       - reorganized throw_to_top_level: run_interrupt_trap is now called
-         as the first thing, and throw_to_top_level calls
-         parse_and_execute_cleanup to make parse_and_execute clean up
-         after itself
-
-subst.c
-       - fixed a bug caused by string_rest_of_args returning NULL, which
-         caused parameter_brace_expand_length to get a seg fault because
-         it didn't check the return value when expanding ${#*} with no
-         dollar variables
-
-machines.h
-       - fixed up the HP/UX entry.  HP/UX 7.0 and above (the Posix versions)
-         define __hpux to cpp, giving us a way to automatically tell the
-         difference between Posix and non-Posix implementations (whether or
-         not to link with -lBSD)
-
-trap.c
-       - save the value of last_command_exit_value while running the exit
-         trap.  This way any exit trap will not change the value of
-         `exit 5', for instance
-
-subst.c
-       - added a function unquoted_member (c, s), which behaves like
-         member but tests whether or not c occurs in an unquoted portion
-         of the string
-       - made the test for calling tilde expansion be
-               ((first character is a tilde) ||
-                (tilde appears && word not quoted) ||
-                (tilde appears && tilde is unquoted))
-         this uses unquoted_member (c, s)
-
-shell.c
-       - Xenix has the middle two arguments to setvbuf different from
-         every other implementation in the world.  Add #ifdef'd code
-
-machines.h
-       - the Xenix 386 definition has to have M_OS and SYSDEP_CFLAGS
-         undefined because they might have already been set if i386
-         is defined
-
-cpp-Makefile
-       - make the gcc line for making malloc.o include a -o $@, since we
-         know gcc can handle it
-
-builtins.c
-       - preserve the value of last_command_exit_value around the
-         execution of ~/.bash_logout
-
-                                   6/6
-                                   ---
-subst.c
-       - generalized unquoted_member to unquoted_substring, and changed
-         the tilde expansion tests to call unquoted_substring with the
-         full tilde prefixes as the substrings (:~, =~)
-
-builtins.c
-       - `read' now accepts a `--' argument to signal the end of the
-         options
-
-                                   6/7
-                                   ---
-documentation/bash.1
-       - added description of the `silent' error reporting mechanism of
-         getopts that is enabled when the first character of the option
-         string is a `:'
-       - added description of the new features of tilde expansion (:~
-         and =~)
-
-subst.c
-       - fixed sv_optind to call getopts_reset with the value of $OPTIND
-         rather than resetting it to 1
-
-getopt.c
-       - commented out the code executed when optind is reset to 0 that
-         decides on the option order.  We always want REQUIRE_ORDER
-
-getopts.c
-       - only call set_posix_option_order once
-
-builtins.c
-       - `type' gets a -- option to signal the end of the option arguments
-       - `typeset/declare' gets a -- option to signal the end of the
-         option arguments
-       - `hash' gets a -- option to signal the end of the option arguments,
-         and gets rewritten to boot
-       - redid `umask' option processing code to be more regular -- fixed
-         the bug where `umask --' would print nothing
-       - added Posix.2 `-p' option to `command' builtin, also added a
-         `--' argument with the standard meaning
-       - `trap' gets a -- option to signal the end of the option arguments,
-         and gets rewritten to structure it like other builtins
-       - set_or_show_attributes was changed so that you can't just make a
-         read-only variable read-write by saying `readonly -n var'
-
-                                    6/8
-                                    ---
-variables.c
-       - if bash is executing a function (variable_context > 0), then look
-         in the temporary environment for a variable's value first
-
-machines.h
-       - new entry for Honeywell Bull X20 from lele@idea.sublink.org
-       - for hp/ux versions < 7.0, we still need to link with -lPW to
-         get alloca
-
-                                   6/11
-                                   ----
-subst.c
-       - include <sys/types.h>
-
-machines.h
-       - change the `catch-all' entries for things like MIPS to use
-         #if defined (mips) && !defined (M_MACHINE)
-
-builtins.c
-       - took out the readonly -n change.  Enable it for strict sh
-         compatibility
-
-unwind_prot.c
-       - extended the saved variable code to full generality by adding a
-         size field to the struct.  Variables bigger than a char * will
-         be copied into a block of memory allocated to hold their value
-         and restored from there
-
-builtins.c, trap.c, execute_cmd.c
-       - changes to unwind_protect_var calls to add value, size arguments
-
-shell.c, jobs.c
-       - only catch SIGINT with sigint_sighandler if the shell is
-         interactive; otherwise let termination_unwind_protect get it
-
-shell.c
-       - startup files may now be aborted by using the `return' builtin
-       - set SIGTERM to SIG_IGN if the shell is interactive, not just if
-         it's a login shell.  Without this, `kill 0' will kill an
-         interactive shell
-
-                                   6/12
-                                   ----
-jobs.c
-       - replace instances of M_UNIX with the more descriptive SCO
-
-machines.h
-       - gather all 386 machines into one block, stop #undef'ing i386
-
-builtins.c
-       - make exec_builtin not completely expand the command name and
-         stick it in argv[0] if the `-' flag is supplied -- instead,
-         tack a `-' on the front of whatever the user typed
-
-                                   6/13
-                                   ----
-jobs.c
-       - don't change SIGQUIT's signal handler at all in
-         initialize_job_signals
-
-execute_cmd.c
-       - change execute_case_command to do string_list on the result of
-         expand_word (word) instead of just taking the first word and
-         assuming no splitting was done
-       - in execute_simple_command, make sure the call to bind_lastarg
-         is done before the dispose_words, because lastarg just points
-         at the last word, which is invalid after the dispose_words
-
-machines.h, jobs.c
-       - new machine-specific variables: BSD_GETPGRP, TERMIOS_MISSING
-
-glob.c
-       - make an incomplete character class (e.g. [X-]) behave as if
-         no class were specified instead of giving an error
-
-filecntl.h
-       - new include file that encapsulates fcntl.h and the declarations
-         for close-on-exec stuff
-
-execute_cmd.c, builtins.c, shell.c
-       - new arg for execute*command* functions that tells whether or not
-         to obey the -e flag and exit when a simple command exits with a
-         non-zero exit status
-       - fixed exit status of while to be success if no commands are
-         executed
-       - fixed exit status of until to be success if no commands are
-         executed
-
-                                     6/15
-                                     ----
-execute_cmd.c
-       - since while and until commands are so similar, combined the bodies
-         into execute_while_or_until (), which takes a type argument to
-         decide which one it is.  execute_{while,until}_command just call
-         this function
-       - added unwind protect calls to execute_for_command to free up the
-         list (for word in list)
-       - eliminated a possible call to find_function in execute_simple_command
-       - added unwind protect calls to execute_simple_command
-       - plugged a couple of memory leaks in execute_simple_command:
-               o freeing the expanded command words when executing a function
-                 or builtin with a pipe in or out
-               o the name of the command (`command') when executing from a
-                 disk file
-
-subst.c
-       - implemented the Posix.2-style $(( )) arithmetic substitution.  I
-         think we'll let this remain mercifully undocumented
-
-variables.c
-       - removed support for old Posix.2-style exported functions, since
-         Posix.2 no longer specifies exported functions
-
-                                     6/17
-                                     ----
-nojobs.c
-       - make wait_for_single_pid () check the validity of its pid
-         argument before calling wait(2), returning 127 if the pid is
-         invalid
-
-jobs.c
-       - if wait_for_single_pid () is called with an argument that does
-         not match a child of the shell, return 127 as Posix.2 specifies
-
-
-builtins.c
-       - made `set' treat `set -' and `set +xv' as equivalent, like the
-         Posix.2 spec mandates (though it does mark the construct as
-         obsolescent)
-       - made the strings output by `export' and `readonly' when showing
-         variable definitions match those specified by Posix.2
-       - if STRICT_POSIX_COMPATIBILITY is #defined when compiling the
-         shell, the shell will exit in the event that it cannot find the
-         file specified as the first argument to `.'
-
-variables.c
-       - turned set_auto_export(var) into a two-statement macro, saving a
-         number of function calls
-
-                                     6/19
-                                     ----
-execute_cmd.c
-       - split the different parts of execute_simple_command into different
-         functions: execute_builtin_or_function, execute_disk_command, and
-         execute_subshell_builtin_or_function to make the whole mess
-         easier to understand
-
-                                     6/21
-                                     ----
-builtins.c
-       - make sure that `type' does not report directories as executable.
-         Call executable_file to make sure.
-       - have the `set' builtin check the validity of its flags arguments
-         before actually doing anything with them.  This prevents things
-         like `set -help' from exiting the shell
-
-flags.h
-       - added declarations for the functions exported by flags.c
-       - added #if defined (_FLAGS_H) protection against multiple inclusion
-
-shell.c
-       - don't do the .bashrc if we're a login shell, even if we're not
-         doing the .profile
-
-general.c
-       - uts -> ut, since UTS compilers define uts for the C preprocessor
-
-makeargs.sh
-       - better treatment of machines that do not have the `hostname'
-         command
-
-                                   6/22
-                                   ----
-readline/readline.c
-       - on termio and termios systems, turn off NL -> CR and CR -> NL
-         input translation so bash will see the two characters distinctly
-
-                                     6/23
-                                     ----
-ulimit.c
-       - cleaned up the shell_ulimit code so there was not so much code
-         duplication (cut 70K from binary!)
-       - added -H, -S to use hard, soft BSD resource limits
-       - ulimit now allows multiple options: -d -t -c or -dtc
-       - ulimit can print multiple options in the same format it uses for
-         -a
-       - USG systems can use -p, -n, -a -- there is no longer a ulimit.c.new
-       - -n uses RLIMIT_NOFILE for getting as well as setting, and so can
-         use hard and soft limits
-       - `ulimit limit' now behaves like `ulimit -f limit'
-
-                                     6/25
-                                     ----
-execute_cmd.c
-       - since do_redirection () is the only place where we have the value
-         of the expanded redirection word, report open () failures there
-
-       - broke the #! emulation code out into a separate function and made
-         it handle the single argument that you can give interpreters
-
-builtins.c
-       - make `command -p' use the Posix.2 configuration variable _CS_PATH
-         (with confstr()) or the #define CS_PATH to find the path that will
-         pick up all the standard utilities before falling back to using
-         COMMAND_MINUS_P_PATH
-
-                                   6/26
-                                   ----
-builtins.c
-       - make sure we include `-o' in the list of legal flags when checking
-         for illegal ones in the set builtin
-
-                                   6/29
-                                   ----
-fc.c
-       - parse and execute the entire edited file of commands when doing
-         `fc -e' so that compound commands work
-
-readline/readline.c
-       - allow leading whitespace in lines passed to rl_parse_and_bind()
-
-machines.h
-       - MIPS machines cannot handle the inclusion of /usr/include/sys/wait.h,
-         so #undef HAVE_WAIT_H
-
-cpp-Makefile
-       - pass only a subset of the CFLAGS down to the make in readline,
-         because some make programs and cc's get overloaded
-
-                                     6/30
-                                     ----
-ulimit.c
-       - rewrote to do the 6/23 changes right
-       - added -- to mean end of options
-
-execute_cmd.c
-       - made a number of functions static
-       - changed do_redirection to do_redirection_internal
-
-cpp-Makefile, config.h, builtins.h, builtins.c, subst.c
-       - made the inclusion of the getopts code dependent on the definition
-         of GETOPTS_BUILTIN
-
-vprint.c
-       - new name for misc.c, since all that it contains now are definitions
-         for v[fs]printf()
-
-builtins.c
-       - made help for history_builtin include -s only if HISTORY_DASH_S
-         is defined, to match the code
-       - made the help for the ulimit builtin match the code, depending on
-         HAVE_RESOURCE being defined
-       - make the help builtin interruptible by adding calls to QUIT in
-         the loop
-       - `cd -' now prints the name of the directory it's changing to
-       - change the help text for the wait builtin to show that job specs
-         are allowed only on systems which support job control
-       - changed an fprintf(stdout, ...) to printf(...) in history_builtin
-
-jobs.c
-       - make kill_pid kill the correct pid when walking through all the
-         pids in a job
-
-test.c
-       - don't call strlen when we just want to know whether or not a string
-         is null; it suffices to test the first character
-
-bashline.c
-       - fixed a typo in the comment text for the FIGNORE code
-
-documentation/bash.1
-       - some typo fixes
-
-documentation/features.texi
-       - fixed some typos
-
-glob/glob.c
-       - if we're not globbing dot filenames, and the first character of the
-         pathname is a `.', make sure the pattern matches it exactly before
-         we call glob_match in glob_vector()
-
-                                    7/1
-                                    ---
-fc.c
-       - use maybe_execute_file instead of calling parse_and_execute
-         when re-executing the file of commands
-
-builtins.c
-       - removed the help text #define; the savings is too small to bother
-
-ulimit.c
-       - set `verbose_print' after a group of specific options is given,
-         so `ulimit -pdt -m' prints everything verbosely
-
-                                     7/3
-                                     ---
-getopts.c
-       - made it include the Gnu `getopt.h' instead of declaring its
-         variables as extern
-
-getopt.c
-       - added a function getopt_set_posix_option_order() to set the
-         default option ordering to that required by Posix.2
-       - added a variable default_ordering to hold the default style
-         of option ordering that getopt() handles.  Usually it is
-         PERMUTE, but it can be set to REQUIRE_ORDER
-
-cpp-Makefile
-       - made all of the getopts files depend on GETOPTS_BUILTIN being
-         defined; changed some variable names for the getopts files
-
-builtins.c
-       - made exit_builtin and logout_builtin return the value of
-         exit_and_logout() instead of expecting exit_and_logout not to
-         return
-       - the `type' builtin now prints `keyword' instead of `reserved word'
-         when given the `-type' option
-
-jobs.c
-       - removed the final default #else clause for set_new_tty_driver();
-         if none of NEW_TTY_DRIVER, TERMIO_TTY_DRIVER, or TERMIOS_TTY_DRIVER
-         is defined, the compilation is hopeless anyway
-
-                                     7/4
-                                     ---
-jobs.c
-       - added support for another format for pretty_print_job: print the
-         information only of the job is marked as not having been notified,
-         then set the job as having been notified so there will not be
-         multiple lines of information about the same job.  flush_child ()
-         resets this flag to 0 when a job's status changes
-       - made a number of private functions static
-
-builtins.c
-       - added a Posix.2a-like `-n' flag to the jobs builtin to print only
-         those jobs that have changed status since they were last printed
-
-documentation/bash.1
-       - added description of -n option to `jobs' builtin section
-
-                                    7/5
-                                    ---
-shell.c
-       - test help file name for nullness and emptyness (hf && *hf) before
-         trying to read the history from it.  Make the same changes when
-         saving the history.
-
-shell.c, jobs.c, quit.h
-       - changed the type of throw_to_top_level from type `sighandler' to
-         void
-
-execute_cmd.c, builtins.c
-       - make sure all int-valued functions return some value
-
-readline/readline.c
-       - if S_ISDIR is defined, then use it, otherwise use S_IFDIR
-         (Posix vs. traditional Unix)
-
-                                     7/6
-                                     ---
-builtins.c
-       - made the exit status of the kill builtin agree with the Posix.2
-         specification
-
-documentation/bash.1
-       - added specifications of the return values of most of the builtins
-         likely to be used in scripts
-
-                                    7/8
-                                    ---
-execute_cmd.c
-       - set this_shell_builtin and last_shell_builtin each time we
-         execute a simple command.  This means that this_shell_builtin
-         being non-null will indicate we are running a builtin
-
-variables.c
-       - if we're executing a builtin, look in the temp environment first
-         for a variable before looking in the variable hash table
-
-                                   7/11
-                                   ----
-test.c
-       - fixed precedence bug by making bash adhere to traditional sh
-         grammar for -a and -o
-
-readline/readline.c
-       - fixed a bug that would cause core dumps when trying to use ^P
-         to get to a line longer than rl_line_buffer_len, then trying
-         to insert something.
-
-
-
-[Radical reorganization of the shell sources, inclusion of builtins/*]
diff --git a/CWRU/old-changelogs/CWRU.chlog.v6 b/CWRU/old-changelogs/CWRU.chlog.v6
deleted file mode 100644 (file)
index 3fb0fb1..0000000
+++ /dev/null
@@ -1,1010 +0,0 @@
-[Beginning of work with version 1.10]
-
-                                    7/14
-                                    ----
-documentation/bash.1
-       - added description of the `bind' builtin
-       - fixed typo in description of the `command' builtin
-
-builtins/bind.def
-       - fixed up the error message printed when rl_read_init_file fails
-
-builtins/alias.def
-       - print_alias should be a static function
-
-builtins/history.def
-       - added support for `--'
-
-builtins/break.def
-       - added the glue for the `continue' builtin, which had been left out
-
-builtins/common.c
-       - changed find_shell_builtin to use a binary search.  This eliminates
-         40 calls to `strcmp' each time `test' is called, for instance
-       - added a function initialize_shell_builtins () that sorts the array
-         of shell builtins so the binary search will work
-
-shell.c
-       - added call to initialize_shell_variables in shell_initialize()
-
-builtins/mkbuiltins.c
-       - added a footer to the text written to builtins.c that initializes
-         the variable num_shell_builtins to the number of shell builtins in
-         the shell_builtins array
-
-builtins.h
-       - added an extern declaration of num_shell_builtins
-
-builtins/enable.def, builtins/help.def
-       - changed to use num_shell_builtins
-
-cpp-Makefile
-       - make the copy of builtins/builtext.h happen only if builtext.h
-         has changed, using `cmp'.  This keeps bashline.c from being
-         recompiled every time something in the builtins directory
-         changes
-
-                                  7/15
-                                  ----
-builtins/history.def
-       - fixed up the help text to reflect reality
-
-documentation/bash.1
-       - more changes to the `alias' builtin text
-
-                                  7/16
-                                  ----
-builtins/Makefile
-       - added a .SUFFIXES line to define .def as a suffix; old versions of
-         make require it
-
-getcppsyms.c
-       - corrected spelling error: MTPSEL -> MIPSEL
-       - added more defines: mc68020, m68k, bsd4_2, bsd4_3, ibmrt, ns32000,
-         hp9000s800, hp9000s500, hp9000s300, hp9000s200
-
-readline/readline.c
-       - fixed a typo on rl_prep_terminal for BSD tty driver systems that
-         caused ^J and ^M to both be mapped to ^M on input.  The net
-         effect was that it was impossible to get a literal ^M into a line,
-         like into an `ed' here document
-
-                                  7/17
-                                  ----
-
-cpp-Makefile
-       - make sure CPPFLAGS is passed to sub-makes
-
-machines.h
-       - Pyramid's don't have alloca(), so #undef HAVE_ALLOCA in the
-         machines.h entry
-
-builtins/history.def
-       - cleaned up the option parsing a little bit; corrected support
-         for the `--' option
-
-                                  7/18
-                                  ----
-variables.c
-       - don't inherit IFS from the environment anymore
-
-machines.h
-       - fix the definition of SYSDEP_CFLAGS for ultrix machines
-
-cpp-Makefile
-       - make builtins/libbuiltins.a depend on pipesize.h, because ulimit.def
-         includes it
-       - shell.o needs to depend on endian.h
-
-getcppsyms.c
-       - more HP symbols for the 9000 series
-
-subst.c
-       - if command_substitute is passed a null or empty string, then just
-         return ((char *)NULL) immediately, without forking a child
-
-parse.y, subst.c, shell.c, execute_cmd.c
-       - added ksh-like process substitution using FIFOs (named pipes)
-
-                                  7/19
-                                  ----
-
-config.h
-       - made PROCESS_SUBSTITUTION a configurable option
-
-cpp-Makefile
-       - made y.tab.c depend on files included by shell.h
-
-                                    7/20
-                                    ----
-subst.c
-       - make sure we call close_pgrp_pipe from the process substitution
-         code in the parent
-
-                                  7/24
-                                  ----
-subst.c
-       - no longer unconditionally tilde-expand `:~' in words (but still
-         do it in assignments)
-
-test.c
-       - trim trailing blanks from integer expressions so isint() does not
-         choke on them
-
-                                  7/25
-                                  ----
-makeargs.sh
-       - remove the -D from the SYSDEF definition of USGr4
-
-builtins/history.def
-       - include "../filecntl.h" instead of sys/file.h
-
-make_cmd.c
-       - add declaration of reverse_list ()
-
-subst.c
-       - add cast to return value from strlen() in sub_append_string ();
-         ANSI C makes the return value a size_t, which can be unsigned
-
-builtins/suspend.def
-       - add argument to suspend_continue(), since it's a signal handler
-
-readline/readline.c
-       - make rl_handle_sigwinch have only one argument: int sig
-       - make rl_signal_handler have only one argument: int sig
-       - add extern char *getenv() declaration at top level
-       - add extern char *index(), *rindex() declarations at top level, if
-         these are not already #defines
-       - add cast to d_namlen area of struct dirent, because it's an
-         unsigned short
-
-test.c
-       - change isint to:
-               take a string as first argument
-               accept a NULL second argument, meaning toss the value
-               work correctly with leading - and +
-               compute the value on the fly, rather than calling atol
-       - change age_of to:
-               take a string as first argument
-               accept a NULL second argument
-       - int_expt_err -> integer_expected_error
-       - changed all calls to stat to call a new function test_stat, which
-         immediately returns an error when given a null pathname.  This is
-         what Posix.1 says
-       - changed eaccess, age_of to disallow null pathnames as well
-
-builtins/ulimit.def
-       - System V.4 does not define RLIMIT_RSS, so disable the `m' option
-
-builtins/mkbuiltins.c
-       - need to include "../filecntl.h"
-
-builtins/source.def
-       - need to include "../filecntl.h"
-
-builtins/times.def
-       - System V.4 does not define a struct rusage, so use times(2) instead
-         of getrusage(2)
-
-                                    7/26
-                                    ----
-readline/readline.c
-       - output a \r in crlf() only if we're running under the BSD tty
-         driver (NEW_TTY_DRIVER) -- the Posix (termios) and System V
-         (termio) drivers do not disable output nl->crnl mapping
-       - if read returns 0 in rl_getc, return EOF to the caller
-
-cpp-Makefile
-       - make sure we pass -DHAVE_UNISTD_H down to the make in readline
-         so that the proper tty driver is used (BSD, termio, or termios)
-
-                                    7/27
-                                    ----
-config.h, parse.y
-       - made csh-style `!' history expansion and prompt string decoding
-         configurable, based on the definition of CSH_HISTORY_EXPANSION
-         and PROMPT_STRING_DECODE, respectively.  Both can be enabled
-         and disabled in config.h
-
-readline/readline.c
-       - reformatted maybe_unsave_line and maybe_replace_line
-       - if we use ^R to find a history line longer than rl_line_buffer_len,
-         we can't simply do a strcpy(the_line, line_found).  We have to use
-         xrealloc to increase the length of rl_line_buffer in
-         rl_search_history
-       - do the same xrealloc trick in maybe_unsave_line, rl_get_next_history
-
-execute_cmd.c
-       - changed the way pipes are created.  Now, SIGCHLD is blocked before
-         anything is done, and pipelines are created in a tight while loop
-
-parse.y
-       - changed pipelines to be right associative rather than left.  This
-         way, the process tree is right-heavy rather than left -- there will
-         never be a command with a pipeline in cmd->value.Connection->first
-
-jobs.c
-       - removed all references to the pgrp_pipe process group synchronization
-         hack, including the functions pipe_read, pipe_close, and
-         close_pgrp_pipe
-
-subst.c
-       - removed calls to close_pgrp_pipe for command and process
-         substitution
-
-execute_cmd.c
-       - obey_minus_e_flag -> check_exit_on_error
-
-                                  7/30
-                                  ----
-builtins/command.def
-       - HP/UX 7.x defines _CS_PATH, but does not have the getconf() function
-         to support it.  Need a special #define to work around.
-
-                                  7/31
-                                  ----
-
-shell.h, parse.y, make_cmd.c, copy_cmd.c, print_cmd.c, execute_cmd.c
-       - consolidated the command->subshell and command->invert_pipeline
-         members into a single command->flags
-
-execute_cmd.c, shell.c, builtins/common.c, builtins/command.def
-       - removed the check_exit_on_error parameter to the execute_*
-         functions; the functionality is now one of the flag bits attached
-         to each command.
-
-shell.h, make_cmd.c
-       - each command type now has a `flags' member associated with it,
-         initialized to 0 in make_XXX_command
-
-                                    8/3
-                                    ---
-jobs.c
-       - wrap the system dependencies for waiting for children inside a
-         WAIT_FOR_CHILD macro, whose syntax matches the Posix waitpid()
-         function
-
-readline/readline.c
-       - make sure all definitions for XON/XOFF are wrapped inside the
-         USE_XON_XOFF cpp define
-
-subst.c
-       - make string_list and string_list_dollar_star use a common base
-         function: string_list_internal (list, separator)
-
-                                   8/5
-                                   ---
-builtins/mkbuiltins.c
-       - build the new builtins.c as a temp file, then rename it when
-         it's done
-
-shell.c
-       - when on an Apollo, turn off line editing if executing in a pad
-
-                                   8/6
-                                   ---
-inlib.def
-       - new builtin for use on Apollo machines
-
-lib/readline/vi_mode.c
-       - fixed `blind strcpy into the_line' bug in rl_vi_dosearch
-       - made ~ vi change case command take a numeric argument, like ksh-88
-       - made vi character search commands (t, T, f, F, ;) take arguments
-       - made vi `_' directive unconditionally append a space before
-         inserting the last arg
-       - make rl_vi_replace only create vi_replace_keymap once
-
-                                   8/7
-                                   ---
-lib/readline/{Makefile, readline.c, vi_mode.c}
-       - finally made vi_mode.c standalone and not included by readline.c
-         so I don't have to wait so long for recompiles each time I change
-         something in either file
-
-lib/readline/vi_mode.c
-       - made rl_vi_change_char (vi `r' command) accept an argument count
-       - if user has bound ^H to erase, make ^H erase when in overstrike
-         mode (vi `R' command)
-       - `cl' deletes one too many characters, so don't advance rl_mark an
-         extra character in rl_vi_change_to if the command is `l'
-       - readline thinks that the first word on a line is the 0th, while vi
-         thinks the first word on a line is the 1st.  Compensate.  This is
-         for the vi `_' command
-       - `dl' deletes one too many characters, make fix to rl_vi_delete_to
-         analogous to that made to rl_vi_change_to to not move mark forward
-       - fixed handling of numeric args in rl_vi_domove so that the correct
-         numeric arg was displayed, the digit read was used to initialize
-         rl_numeric_arg, and the non-digit key stuffed back by rl_digit_loop1
-         was re-read, executed, and passed back as the value of the
-         movement command (makes d5l work right, for instance)
-       - made rl_vi_fetch_history treat a numeric argument correctly -- an
-         argument of n means we want the command that `history' would have
-         labeled as the nth command in its output
-       - extended the vi search commands `/' and `?' to accept a string
-         starting with `^' and find only matches that are prefixes of
-         history lines.  Used a new function vi_history_search_pos that
-         acts like history_search_pos but understands `^'
-       - use rl_line_buffer instead of the_line so the_line can be static
-         and private to readline.c
-
-lib/readline/history.c
-       - fixed the calculation of how much of the history line to test when
-         searching forward in the history list for a string.  Previously,
-         the absolute value of the difference in length was not used.
-       - generalized history_search into history_search_internal, which
-         takes a third parameter that tells whether or not the string must
-         match at the beginning of a history line.  A new function
-         history_search_prefix uses it, and get_history_event now uses it.
-         history_search (string, dir) now simply calls
-         history_search_internal (string, dir, 0)
-
-lib/readline/readline.c
-       - fixed rl_yank_nth_arg to always move point forward and append a
-         space if in vi mode
-
-bashline.c
-       - added a function to implement the vi movement mode `v' command,
-         which runs `fc -e ${VISUAL:-${EDITOR:-vi}}' on either the 
-         command being entered or a command from the history corresponding
-         to the numeric argument given to the command.  This is commented
-         out, because currently there's no way for the shell to know
-         whether or not vi-mode has been compiled into readline
-
-                                    8/8
-                                    ---
-shell.h, execute_cmd.c, parse.y, print_cmd.c
-       - CMD_INVERT_PIPELINE -> CMD_INVERT_RETURN
-         CMD_IGNORE_EXIT_VALUE -> CMD_IGNORE_RETURN
-
-execute_cmd.c
-       - changes from bfox
-       - need to initialize lastarg to NULL at start of
-         execute_simple_command.  For a command that's just an assignment
-         statement, `words' is nil and lastarg never gets set, binding
-         garbage and possibly stepping on memory
-       - lastarg now can be a variable local to execute_simple_command,
-         and it works better that way (e.g. it gets set to garbage when
-         executing a `.' command)
-
-builtins/exec.def
-       - after testing for `-' as argument, make sure there are more
-         arguments before doing anything else.  Return if no more args
-
-                                   8/9
-                                   ---
-builtins/trap.def
-       - make sure the shell always ignores SIGQUIT, especially after a
-         call to trap that restores the default value of the signal handler.
-         The same thing needs to happen for SIGTERM if interactive, and
-         SIGTTIN, SIGTTOU, and SIGTSTP if job control is active
-
-parse.y
-       - call run_pending_traps () immediately after calling readline
-
-                                    8/10
-                                    ----
-jobs.c
-       - only declare sys_siglist once, at top of file, rather than have
-         three or four separate extern declarations
-
-                                  8/13
-                                  ----
-subst.c
-       - rewrote string_extract_double_quoted as a state machine to fix a
-         quoting bug and implement the Posix.2 draft 11 quoting rules
-
-lib/readline/vi_mode.c
-       - don't go back into insertion mode after performing completion in
-         command mode
-
-                                  8/15
-                                  ----
-subst.c
-       - rewrote list_string to implement the Posix.2 draft 11 field
-         splitting rules
-
-                                  8/16
-                                  ----
-builtins/alias.def
-       - make sure single_quote() adds terminating alias
-
-parse.y
-       - make sure we turn off expand_next_token when returning tokens that
-         are not words, like `>'
-
-lib/readline/readline.c
-       - make the termio and termios versions of rl_prep_terminal and
-         rl_deprep_terminal use the static flag terminal_prepped to tell
-         whether or not they should do anything
-
-test.c
-       - removed unused definition of test_io_error
-
-                                  8/18
-                                  ----
-lib/readline/readline.c
-       - fixed the BSD/v7 terminal driver versions of rl_prep_terminal and
-         rl_deprep_terminal to mimic the structure of the sys5/Posix versions
-         with respect to terminal_prepped
-       - fixed a possible call to malloc(0) when allocating space for
-         macro_keys in rl_macro_bind
-       - made rl_variable_bind ring the bell if asked to set the editing mode
-         to vi when vi mode has not been compiled into libreadline
-
-test.c
-       - fixed term() so that -l string is recognized correctly as the LHS
-         of a binary operator
-       - made enough changes so that test.c compiles standalone on the RT
-         running 4.3 and can be installed as /bin/test
-
-                                   8/20
-                                   ----
-parse.y
-       - fixed turning off alias expansion so aliases are still expanded
-         after || and &&, for instance
-
-execute_cmd.c
-       - should only add an unwind-protect to restore the signal mask if
-         job control is in effect
-
-builtins/suspend.def
-       - should only be compiled in if job control is in effect
-
-builtins/alias.def
-       - make sure we free the string allocated and returned by single_quote()
-         in print_alias()
-
-builtins/reserved.def
-       - fix help text for `for' loop to indicate that the semicolon is
-         required only if the `in words' portion is present
-
-                                     8/21
-                                     ----
-documentation/bash.1
-       - fixed the description of tilde expansion to indicate that it is
-         performed on the RHS of assignment statements, and that =~ and
-         :~ are expanded in such cases
-
-machines.h
-       - updated Ultrix MIPS machines entry to undefine HAVE_ALLOCA_H.
-         Ultrix 4.2 on Decstations has /usr/include/alloca.h, which defines
-         alloca as __builtin_alloca, but this version of alloca is severely
-         limited and unusable
-
-jobs.c, subst.c
-       - some Posix systems (e.g. SGI) can't even handle a call to setpgid
-         when the only other member of the process group is a zombie.
-         Restored the old pgrp_pipe synchronization code, #ifdef'd on
-         PGRP_PIPE
-
-machines.h
-       - added -DPGRP_PIPE to the SGI SYSDEP_CFLAGS
-
-trap.c
-       - need to re-install signal handler on USG machines without BSD
-         signals (in trap_handler).  There's still the USG signal race
-         condition, though
-       - if interrupt_immediately is set, run a trap handler directly
-         from trap_handler, instead of just setting the flag
-
-                                   8/26
-                                   ----
-subst.c
-       - changed parameter_brace_expand_rhs to perform tilde expansion on
-         the value it's expanding
-
-parse.y
-       - declared shell_pgrp as extern pid_t, need to include jobs.h on
-         job control systems to make sure it's defined
-
-jobs.c
-       - make a job that is suspended show the signal that caused the
-         suspension in the exit status (128 + WSTOPSIG(s))
-
-jobs.c, execute_cmd.c, builtins/fg_bg.def
-       - make start_job return -1 on error, 0 when starting a background
-         job, and the return value from wait_for when starting a fore-
-         ground job
-
-lib/readline/vi_mode.c
-       - there was an off-by-one error in rl_vi_domove.  We are not at
-         the end of the line if rl_point <= rl_end - 1, not just <.
-         This messed up things like `dw' to the end of the line
-
-                                   8/28
-                                   ----
-subst.c
-       - forgot to malloc space for tresult before trying to use it in
-         word_list_quote_removal
-
-                                   8/29
-                                   ----
-lib/readline/Makefile
-       - make sure that ../glob/tilde_expand.o is linked into the readline
-         library
-       - make sure that xmalloc.o is linked into the readline library
-
-lib/readline/xmalloc.c
-       - new file, linked into readline library for those applications that
-         do not define their own versions
-
-nojobs.c
-       - removed redundant call to signal(SIGQUIT, SIG_IGN)
-       - rearranged code in make_child so signals get the right values
-         in children of the shell
-
-jobs.c
-       - don't call restore_default_signal -- let restore_original_signals
-         do the work, because signals ignored in the shell with trap '' sig
-         are supposed to be ignored in children
-
-trap.c
-       - make sure restore_original_signals restores the values of SIGINT,
-         SIGQUIT, and SIGTERM, unless there has been a trap command called
-         on them
-
-                                    9/4
-                                    ---
-builtins/exec.def
-       - make sure that all signals are restored to their original values
-         before execing the new program
-
-bashline.c
-       - make shell_expand_line output an extra \r after pre_process_line
-         runs
-
-                                     9/5
-                                     ---
-lib/readline/readline.[ch]
-       - new function rl_tilde_expand, which attempts to perform
-         tilde expansion on the word under the cursor
-       - readline now recognizes a new variable, `expand-tilde', which
-         controls whether the tilde expansion functions are called
-         when bash does completion (default is off).  The internal
-         form of this variable is rl_complete_with_tilde_expansion
-
-lib/readline/vi_mode.c
-       - new function rl_vi_tilde_expand, which performs tilde expansion
-         on the word under the cursor when in movement mode, then enters
-         vi insertion mode.
-
-lib/readline/{vi,emacs}_keymap.c
-       - bind rl_tilde_expand to M-& in emacs mode, and rl_vi_tilde_expand
-         to & in vi command (movement) mode
-
-                                    9/6
-                                    ---
-subst.c
-       - fix string_extract_double_quoted to malloc the correct amount of
-         space for the returned string
-
-execute_cmd.c
-       - add an undo redirection to do_redirection_internal for the `close
-         descriptor' case
-
-                                     9/7
-                                     ---
-lib/readline/vi_mode.c
-       - the first character of the string inserted into the command line
-         when the vi mode `#' command is executed is now controlled by the
-         internal variable `rl_vi_comment_character'
-
-lib/readline/readline.c
-       - the readline user-settable variable `vi-comment-character' now
-         controls the value of rl_vi_comment_character
-
-                                   9/10
-                                   ----
-test.c
-       - fixed problems in binary_operator() caused by -l.  Made sure that
-         bash always dereferences a valid member of argv.  Check that the
-         (new) operator is a valid binary operator after a leading -l arg
-         is processed.
-
-lib/readline/vi_mode.c
-       - changed rl_vi_comment_character to rl_vi_comment_begin, which is
-         a character string
-
-lib/realine/readline.c
-       - changed the name of the variable controlling the vi comment
-         string to comment-begin
-
-                                   9/11
-                                   ----
-subst.c
-       - changed ${#@} and ${#*} to return the number of arguments, for
-         sh and ksh compatibility, since the latest Posix.2 draft has
-         left it unspecified
-
-shell.c
-       - added a workaround for a bug in the NeXT 2.1 rlogind, which causes
-         the shell to start with no control terminal -- just open(2) the
-         result of ttyname(3), which causes it to become a controlling
-         terminal
-
-                                   9/13
-                                   ----
-parse.y
-       - added the reserved words that can precede a list of commands to
-         the list of command word predecessors in command_token_position
-
-builtins/kill.def
-       - added support for negative process specifications to kill
-         process groups
-
-                                   9/17
-                                   ----
-builtins/read.def
-       - turn off att_invisible when binding a variable to the results of
-         read
-
-subst.c
-       - don't expand invisible variables in the $VAR expansion code
-
-                                     9/18
-                                     ----
-lib/readline/readline.c
-       - changed the use of _POSIX_VERSION to use HAVE_POSIX_SIGNALS and
-         TERMIOS_TTY_DRIVER
-
-                                   9/24
-                                   ----
-shell.h, execute_cmd.c, builtins/command.def
-       - replaced two global variables, inhibit_command_word_expansion
-         and ignore_function_references, and replaced them with flags
-         in the simple command structure
-
-jobs.c
-       - make sure current_job and previous_job are reset to NO_JOB in
-         delete_all_jobs()
-       - stop_pipeline allocates an extra slot in the jobs array
-
-                                   9/27
-                                   ----
-builtins/wait.def
-       - make the wait builtin use interrupt_immediately to get immediate
-         trap execution while waiting for commands
-
-subst.c
-       - when IFS is set to the null string (IFS=""), "$*" should
-         concatenate the positional parameters into a single word
-
-builtins/break.def
-       - if the argument to `break' or `continue' is not >= 1, Posix.2
-         says the builtin should return EXECUTION_FAILURE
-
-shell.h
-       - Posix.2 has specified that the shell should exit with status
-         126 when asked to execute a file that is not executable.  This
-         changes the definition of EX_BINARY_FILE
-
-builtins/trap.def
-       - the format of the command string printed out when trap has
-         no arguments has changed to "trap -- %s %s" in the latest
-         version of Posix.2
-
-                                   9/30
-                                   ----
-builtins/alias.def
-       - make sure single_quote allocates space for the opening and closing
-         quotes by allocating 3 + (2 * strlen(s)) bytes
-
-nojobs.c
-       - Under certain circumstances, when set_tty_state is called
-         without a successful get_tty_state, the file descriptor
-         opened on /dev/tty could be left unclosed
-
-                                   10/2
-                                   ----
-execute_cmd.c
-       - with redirections of type r_close_this, we don't need to check
-         if redirectee != redirector, since redirectee is not being used
-         there
-
-parse.y
-       - in yy_readline_get, we should only worry about shell_pgrp and
-         job_control if JOB_CONTROL is defined
-
-builtins/enable.def
-       - make enable_shell_command skip over entries with null values
-         for `function'
-
-subst.c
-       - fixed a typo: S_ISFIFO -> S_IFIFO
-
-                                   10/3
-                                   ----
-builtins/ulimit.def
-       - some machines have a setdtablesize() system call, the `set'
-         analog of getdtablesize().  If HAVE_SETDTABLESIZE is defined,
-         call it when ulimit -n newlim is used.
-
-machines.h
-       - Sequent symmetry machines have setdtablesize(), add a
-         -DHAVE_SETDTABLESIZE to SYSDEP_CFLAGS
-
-parse.y
-       - made reserved_word_acceptable() static
-       - rearranged tests for reserved words so that in_case_pattern_list
-         test is performed first
-       - turned command_token_position into a #define, since it was almost
-         identical to reserved_word_acceptable
-
-                                   10/4
-                                   ----
-shell.c
-       - for Ultrix Decstations or machines using Gwyn's alloca() emulation,
-         call alloca(0) in reader_loop after executing each command to try
-         and reclaim outstanding storage
-
-                                   10/7
-                                   ----
-bashline.c
-       - fixed a bug that caused the internal index into the shell builtins
-         array to be incremented by one too many before returning matches
-         for command completion
-
-jobs.c
-       - if PGRP_PIPE is not defined, have each child process give the
-         terminal to the pipeline process group
-
-                                   10/8
-                                   ----
-support/mksysdefs
-       - make Xenix machines call /bin/uname instead of the one found in
-         $PATH
-
-subst.c
-       - added a declaration for unquoted_substring at the top of the
-         file
-
-maxpath.h
-       - include <limits.h> rather than <sys/limits.h>, since that is the
-         Posix-specified include file
-
-bashline.c
-       - make ` be a command separator for purposes of command completion
-         Now `ch[TAB] will attempt command completion
-
-lib/readline/readline.c
-       - don't compile in the termios code if TERMIOS_MISSING is defined
-
-machines.h
-       - since Ultrix typeahead is broken using the termios code, define
-         TERMIOS_MISSING in SYSDEP_CFLAGS
-
-                                   10/9
-                                   ----
-
-general.c
-       - add a pathname canonicalization routine canonicalize_pathname to
-         remove sequences of > 1 slash, remove . and ./, munge the
-         passed pathname to handle .. and ../, and remove trailing /
-         characters
-
-builtins/cd.def
-       - call canonicalize_pathname after making the pathname absolute
-         with make_absolute
-
-                                   10/10
-                                   -----
-builtins/source.def
-       - check that the file being sourced is not a binary file
-
-builtins/ulimit.def
-       - added a new flag -v that reports the current and maximum limits
-         on the amount of virtual memory allocated to a process.  This is
-         implemented using RLIMIT_VMEM on those machines that have it
-         (svr4) and as the sum of RLIMIT_DATA and RLIMIT_STACK on other
-         machines with the BSD resource limits
-
-                                   10/11
-                                   -----
-general.c, parse.y
-       - unified #defines surrounding sysv_getc () declaration and use
-
-shell.c
-       - have first setjmp before startup files are executed test the
-         return code from setjmp to decide whether or not to exit the
-         shell or to skip the startup files
-
-                                    10/13
-                                    -----
-expr.c
-       - need to initialize tokval and tokstr each time evalexp() is
-         executed
-
-execute_cmd.c
-       - make sure that functions executed in the background set up a
-         valid place to return to (using return_catch) so that trying
-         to execute `return' doesn't result in a longjmp botch
-
-                                   10/14
-                                   -----
-lib/readline/vi_mode.c
-       - make rl_vi_ccmment insert a space after inserting `:' as the
-         comment character
-
-builtins/getopt.c
-       - make string.h be included #if defined (USG) || defined (hpux)
-
-                                   10/15
-                                   -----
-bashline.c
-       - fix bug that causes bash to get a seg fault on attempting
-         completion after FIGNORE=
-
-test.c
-       - test -foobar was the same as test -f.  Make sure an operator is
-         only two characters long
-
-                                   10/16
-                                   -----
-shell.c
-       - interactive shells should call get_tty_state after reading the
-         startup files, so that any stty commands therein are not lost
-
-support/mksysdefs
-       - for a machine to be an `isc386', it must have both
-         /etc/conf/kconfig.d and /usr/include/sys/limits.h
-
-                                   10/17
-                                   -----
-subst.c
-       - re-implemented ${#xx} in parameter_brace_expand_length to
-         call expand_string on $xx and take the length of the result.
-         If no result (e.g. if xx is undefined variable), return 0
-
-execute_cmd.c
-       - remove the attempt to put commands on both sides of && and ||
-         in a non-job-control environment
-
-                                  10/18
-                                  -----
-lib/readline/history.c
-       - If we are compiling for the shell, allow quotes to inhibit
-         history expansion
-
-test.c
-       - A new version from djm@eng.umd.edu
-
-subst.c
-       - If we don't get all of the name when we go to expand ${#xx},
-         where `name' is the stuff inside the braces, it's a bad
-         expansion error
-       - the ${xx} code advanced `sindex' one too many, so the character
-         immediately following the close brace was skipped
-
-                                  10/21
-                                  -----
-type.def
-       - the state variable used in calls to user_command_matches when
-         looking up disk files was not being reset to 0 for each item
-         looked up
-
-nojobs.c
-       - reversed the sense of the first test for _POSIX_VERSION
-         vs. USG to determine what time of terminal handling code to
-         use
-
-                                  10/22
-                                  -----
-lib/glob/fnmatch.[ch]
-       - Roland McGrath's implementation of the Posix.2 pattern matching
-         function fnmatch()
-
-subst.c
-       - removed emulation of fnmatch, declaration of FNM_NOMATCH
-       - include <fnmatch.h>
-
-execute_cmd.c
-       - removed declaration of FNM_NOMATCH, now includes <fnmatch.h>
-       - case pattern expansion now calls fnmatch(pat, str, FNM_NOESCAPE)
-         to disable backslash escaping.  Still not sure this is the
-         right thing.
-
-cpp-Makefile
-       - changes so that ./lib/glob (actually $(GLIBSRC)) is in the include
-         file search path
-       - make sure fnmatch.c gets put into lib/glob/libglob.a
-
-machines.h
-       - isc386 needs -DPGRP_PIPE added to SYSDEP_CFLAGS
-
-make_cmd.c
-       - <<- means kill leading TAB characters, not all whitespace
-
-                                  10/24
-                                  -----
-builtins/type.def
-       - make sure we note that we found something if a file is found in
-         the hash table, so a successful exit status is returned
-
-                                  10/25
-                                  -----
-machines.h
-       - for Convex machines, also check for __convex__ and __convexc__
-         being defined by cpp
-
-                                   10/27
-                                   -----
-lib/glob/glob.c
-       - Posix systems should always use the `dirent' style of reading
-         directories, for portability
-
-lib/readline/readline.c
-       - restructured the maze of defines and include files for the
-         directory reading code to default to Posix-style if
-         _POSIX_VERSION is defined, regardless of whether the system is
-         BSD or System V
-       - in readline_internal, lastc should be initialized to -1, because
-         0 can be a valid input character (some people use ^@ (NUL) as
-         the eof character, for instance, because it's easy to type)
-       - readline should bind eof_char for the termios and termio ttyio
-         systems
-       - make sure _POSIX_VDISABLE is defined for termio and termios
-         systems
-       - readline should check against _POSIX_VDISABLE rather than -1 to
-         decide whether a special character is disabled
-       - if VLNEXT is defined, termios systems should bind c_cc[VLNEXT] to
-         rl_quoted_insert
-       - if VWERASE is defined, termios systems should bind c_cc[VWERASE]
-         to rl_unix_word_rubout
-       - readline should always call readline_default_bindings each time,
-         so changes made by `stty' are obeyed.  Move the call from
-         readline_initialize_everything to readline_initialize so any new
-         settings are recognized each time readline is called.  This is
-         for erase, kill, literal-next, and word erase characters
-
-lib/readline/funmap.c
-       - added a funmap entry for rl_call_last_kbd_macro in default_funmap
-         (as "call-last-kbd-macro")
-
-execute_cmd.c
-       - when executing a ()-subshell command with redirections,
-         execute_command_internal performs the redirections associated with
-         the entire subshell command itself, but then forgets to dispose of
-         and clear command->redirects before calling itself recursively
-
-subst.c
-       - ${#-} and ${#?} are not illegal, and should expand to the lengths
-         of $- and $?, respectively
-
-                                  10/28
-                                  -----
-variables.c
-       - fix from bfox: change bind_variable to call var_lookup rather
-         than find_variable, because find_variable will look in the
-         temporary environment under some circumstances
-
-subst.c
-       - ${#:} should be (and is now) an error
-
-                                  10/29
-                                  -----
-lib/readline/readline.c
-       - readline_default_bindings is again called from
-         readline_initialize_everything, so it is only called once
-
-                                  10/30
-                                  -----
-test.c
-       - make sure uid_t and gid_t are defined on non-Posix USG systems
-         (this may be overkill)
-
-machines.h
-       - Ardent has a non-functional vfprintf??
-
-lib/malloc/gmalloc.c
-       - new Gnu malloc, written by Mike Haertel, snagged from gdb 4.2
-       - define the code that tries to intuit getpagesize
-
-builtins/ulimit.def
-       - make sure all calls to getmaxvm are protected by HAVE_RESOURCE
-
-builtins/times.def
-       - protect the getrusage calls with #if defined (HAVE_RESOURCE) &&
-         defined (RUSAGE_SELF) rather than some system specific
-         identifiers
-
-[end of work with version 1.10]
diff --git a/CWRU/old-changelogs/CWRU.chlog.v7 b/CWRU/old-changelogs/CWRU.chlog.v7
deleted file mode 100644 (file)
index be260f0..0000000
+++ /dev/null
@@ -1,671 +0,0 @@
-[Beginning of work with version 1.11]
-
-                                   10/31
-                                   -----
-Makefile
-       - changed instances of $(AWK) to $(GAWK) -- political correctness from
-         bfox
-
-builtins.h, builtins/help.def, builtins/mkbuiltins.c
-       - changed representation of long_doc from a single string to an
-         array of strings
-
-execute_cmd.c
-       - only call __setostype() if on isc386 and _POSIX_SOURCE is
-         defined
-
-general.c
-       - only define functions for index and rindex if index and rindex
-         are not already cpp defines
-
-jobs.c
-       - #undef some things that clash between <sys/ioctl.h> and <termios.h>
-         on Posix suns
-
-machines.h
-       - make isc386 machines links with the shared C library explicitly
-         (-lc_s)
-       - new entry for a MagicStation (?) from bfox
-
-variables.c
-       - use a cpp define _CONST_HACK to determine whether the parameter to
-         getenv() is a char const * (yes for _STDC_, no otherwise)
-
-builtins/type.def
-       - make found_file local to the block that searches for executable
-         disk files
-
-                                  11/4
-                                  ----
-execute_cmd.c
-       - make execute_function_or_builtin use unwind protects to protect
-         the `return catch' variables
-
-support/getcppsyms.c
-       - added definitions for M_UNIX, M_XENIX, and _AIX
-
-                                  11/5
-                                  ----
-bashline.c
-       - fix a call to savestring in command_word_completion_function with
-         a post-incremented int parameter, since savestring is a macro that
-         evaluates its argument twice (builtin completion)
-
-lib/glob/fnmatch.c
-       - add `^' as a character that negates a character class ([])
-
-                                  11/6
-                                  ----
-subst.c
-       - add a new variable last_command_subst_pid to keep track of the
-         pid of the last child created for command substitution.  Used
-         to determine whether or not command substitution has taken
-         place.
-
-execute_cmd.c
-       - made the exit status of a command that has only assignments and
-         redirections obey the Posix spec
-
-unwind_prot.c, trap.c
-       - make sure all sigset_t variables are initialized with sigemptyset
-         before use
-
-lib/glob/fnmatch.c
-       - fixed a couple of bugs with [] classes in fnmatch: not checking
-         whether or not we've hit the ']' and not incrementing the string
-         argument in the right place
-
-                                  11/7
-                                  ----
-braces.c
-       - Make backquotes inhibit brace expansion -- defer it until the
-         subshell runs
-       - Ditto for $( )
-
-subst.c
-       - since braces.c now calls unquoted_member and unquoted_substring,
-         they can no longer be static functions
-
-config.h
-       - two new configuration options: ALLOW_RIGID_POSIX_COMPLIANCE and
-         DISABLED_BUILTINS
-
-shell.c, jobs.c
-       - define and use top_level_signal_mask, restored on longjmps to
-         top_level by throw_to_top_level
-
-builtins/builtin.def
-       - use builtin_address to find the function (if so configured) so
-         that `builtin foo' still works after `enable -n foo'
-
-builtins/common.c
-       - have both find_shell_builtin, which never finds disabled builtins,
-         and builtin_address, which does
-
-                                  11/8
-                                  ----
-general.c
-       - the getdtablesize emulation should ensure that _SC_OPEN_MAX is
-         defined on Posix systems before trying to use it in a call to
-         sysconf()
-
-
-                                   11/10
-                                   -----
-lib/glob/fnmatch.c
-       - fixes from Roland McGrath for some of the more egregious bugs
-       - naturally, Roland missed a few
-
-lib/readline/readline.c
-       - add missing calls to sigemptyset(), since Posix specifies that
-         all sigset_t variables be initialized before use using it
-       - only turn off ISTRIP and INPCK in the termio(s) code if the
-         character size is 8 bits ((otio.c_cflag & CSIZE) == CS8)
-       - Sequents running Dynix/ptx should include <sys/pte.h> rather
-         that <sys/ptem.h>
-
-builtins/type.def
-       - change a call to printf to builtin_error when printing a
-         diagnostic that something is not found
-
-builtins/times.def
-       - changed file inclusion code to include <sys/time.h> and
-         <sys/resource.h> if HAVE_RESOURCE is defined, then to include
-         <sys/times.h> if !HAVE_RESOURCE and RUSAGE_SELF is not defined.
-         This catches systems with deficient <sys/resource.h> files
-
-                                   11/11
-                                   -----
-lib/readline/readline.c
-       - Don't try to dereference funmap in rl_named_function() if it's
-         null (as it is before rl_initialize_funmap is called)
-
-                                  11/12
-                                  -----
-lib/readline/readline.c
-       - backed out of change of 11/11 to rl_named_function
-
-bashline.c
-       - add a state variable bash_readline_initialized to keep track of
-         whether or not readline has been initialized with a call to
-         initialize_readline()
-
-builtins/bind.def
-       - if readline has not been initialized the first time this is
-         called, call initialize_readline
-
-                                  11/13
-                                  -----
-execute_cmd.c
-       - execute_subshell_builtin_or_function would only let the output
-         of `jobs' be piped if pipe_in and pipe_out were both != NO_PIPE
-         (?).  Obviously a typo.
-
-builtins/command.def
-       - add an unwind_protect to dispose of the new command created
-         by the call to make_bare_simple_command
-
-builtins/jobs.def
-       - add the `jobs -x command args' form from the System V.4 sh
-         All job specs in `args' are replaced with the appropriate
-         job's process group id and `command' is executed
-
-builtins/getopt.c
-       - if getopt() finds that optind > argc when it is called, it
-         sets optind = argc and returns EOF
-
-builtins/times.def
-       - backed out of 11/10 change.  Some systems, most notably
-         HP/UX have all the correct includes and defines and simply
-         do not implement getrusage().  At all.
-
-subst.c
-       - if sv_optind finds that OPTIND has been unset or set to an
-         empty string, call getopts_reset (0).  The Gnu getopt
-         resets its internal state when optind == 0.
-       - call getopts_reset(0) if OPTIND=1, because that's what the
-         Posix spec says to use to reset
-
-                                  11/14
-                                  -----
-builtins/alias.def
-       - fixed a typo in the SHORT_DOC for the unalias builtin
-
-builtins/shift.def
-       - allowed the shift count to be 0
-
-                                  11/15
-                                  -----
-lib/readline/readline.c
-       - turn on 8 bit characters if NO_EIGHT_BIT_CHARACTERS is not
-         defined and the Posix termios code path is being taken
-
-[The following two entries describe what's needed for an initial
-implementation of the vi mode `.' command]
-
-lib/readline/vi_mode.c
-       - new variables:
-               vi_last_command: last command that modified text in
-                                the buffer
-               vi_last_repeat: the repeat count to vi_last_command
-               vi_last_arg_sign: arg sign for vi_last_repeat
-               vi_last_motion: the last motion qualifier for the
-                               text modification commands that use one
-               vi_redoing: state variable, if 1 we're re-doing a
-                           command
-               vi_textmod: list of commands that modify text
-                           (initially "_*\\AaIiCcDdPpYyRrSsXx~")
-
-       - new functions:
-               rl_vi_redo: an initial implementation of the vi mode
-                           `.' command
-               rl_vi_set_last: initialize the state of the new variables
-                               described above
-               rl_vi_textmod_command: return true if command passed is
-                                      a text modification command
-       - changed rl_vi_domove to save the movement command information in
-         vi_last_motion
-       - changed rl_vi_movement_mode to call rl_vi_set_last to initialize
-         the `last command' state
-
-lib/readline/readline.c
-       - changed rl_dispatch to save vi_last_command, vi_last_repeat,
-         and vi_last_arg_sign
-       - changed rl_newline to call vi_set_last
-
-lib/readline/readline.h
-       - new function rl_vi_redo
-
-lib/readline/vi_keymap.c
-       - bind rl_vi_redo to `.'
-
-                                  11/20
-                                  -----
-posixstat.h
-       - make isc386 defines for S_IFDIR and S_IFMT be used if they
-         do not already appear, no matter whether or not gcc is being
-         used for the compile
-
-machines.h
-       - new entry for Omron Luna 88k running Mach 2.5 (nice machines)
-
-lib/readline/vi_mode.c
-       - fixed a bug with rl_vi_domove and the last word on the line.
-         If rl_point ended up > rl_end, it was being set to rl_end - 1
-         rather than to rl_end.
-
-cpp-Makefile
-       - quote the values of RANLIB and AR passed to makes in
-         subdirectories
-
-shell.c
-       - instead of making all Xenix systems swap the second and third
-         arguments to setvbuf, make that behavior dependent on the
-         definition of REVERSED_SETVBUF_ARGS
-
-                                  11/21
-                                  -----
-lib/readline/readline.c
-       - fixed an error in rl_forward that caused vi-mode to walk off
-         the end of the line after executing `l' in command mode on an
-         empty line
-
-                                  11/22
-                                  -----
-support/getcppsyms.c
-       - added the `luna88k' define
-
-                                   11/24
-                                   -----
-execute_cmd.c
-       - all calls to dup2 in do_redirection_internal should be checked
-         for errors and the redirection should fail if the dup2 fails
-
-shell.h, parse.y, execute_cmd.c, print_cmd.c, make_cmd.c
-       - replaced the single redirection operator `r_duplicating' with
-         r_duplicating_input and r_duplicating_output to avoid the
-         read 1<&7 getting printed as read 1>&7 problem:
-               foo()
-               {
-                       exec 9</dev/tty
-                       read 1<&9
-                       exec 9<&-
-               }
-         is printed wrong when `type foo' is executed
-
-shell.h
-       - added two new redirection_operators, r_duplicating_input_word and
-         r_duplicating_output_word to implement true sh semantics for
-         [n]<&word and [n]>&word
-parse.y
-       - eliminated the old yacc production for >& word, meaning put stdout
-         and stderr into `word'
-       - added productions for [n]<&word and [n]>&word that use the new
-         redirection operators
-execute_cmd.c
-       - the first thing done in do_redirection_internal is now a check for
-         r_duplicating_input_word and r_duplicating_output_word.  If the
-         redirection is one of those two, `word' is expanded and a new
-         redirection is made
-print_cmd.c
-       - new code to print the [n]<&word and [n]>&word redirections
-         (r_duplicating_input_word and r_duplicating_output_word)
-make_cmd.c
-       - new code for make_redirection to handle r_duplicating_input_word
-         and r_duplicating_output_word
-
-documentation/bash.1
-       - added documentation for the -x option to `jobs' + minor cleanups
-         and corrections
-
-                                  11/25
-                                  -----
-cpp-Makefile
-       - added GCC_EXTRAS for gcc-specific compiler flags
-
-execute_cmd.c
-       - removed some unused functions (close_all_files) and variables
-         (file_exists_p)
-
-parse.y
-       - added new command-oriented-style history: all lines of a multiple
-         line command will be added to the same history line
-       - new variable current_command_line_count to keep track of the
-         number of lines in the current command.  If > 1, a line is appended
-         to the current history line to implement command-oriented history
-       - new function bash_add_history
-
-shell.c
-       - added code to reset current_command_line_count to 0 before calling
-         parse_command and yyparse
-
-subst.c
-       - the command-oriented history is controlled by the setting of the
-         variable command_oriented_history
-
-builtins/reserved.def
-       - a new help topic: `variables', giving help on some common shell
-         variables
-
-                                  11/26
-                                  -----
-lib/glob/glob.c
-       - if the filename portion of the pathname to be matched is null
-         (e.g. a*/), do not call glob_vector to attempt to match each
-         file in the expanded directories against the null string.
-
-                                  11/27
-                                  -----
-lib/glob/glob.c
-       - force globbing of directory names even if the metacharacters
-         contained therein are protected by backslashes.  The globbing
-         strips the quotes correctly
-
-shell.c
-       - make sure current_command_line_count is declared everywhere
-         it's used
-
-parse.y
-       - remove declaration of history_lines_this_session from
-         pre_process_line
-       - add extern declaration of history_lines_this_session to
-         bash_add_history
-
-                                  12/2
-                                  ----
-trap.h
-       - removed inclusion of <sys/types.h> because most files include it
-         themselves, and this is dangerous on systems that do not protect
-         against multiple inclusion of header files
-
-trap.c
-       - include <sys/types.h> before "trap.h" since it was the only file
-         in the distribution not to do so
-
-shell.c
-       - Install the SIGINT sighandler the Posix way on machines with
-         _POSIX_VERSION defined
-
-                                  12/3
-                                  ----
-dispose_cmd.c
-       - make sure dispose_redirects properly handles r_duplicating_input_word
-         and r_duplicating_output_word by freeing the `filename'
-
-execute_cmd.c
-       - fix do_redirection_internal to copy new_redirect->redirectee.filename
-         using alloca() so no memory has to be freed at function exit
-
-                                  12/4
-                                  ----
-parse.y
-       - expand \n in PS1 or PS2 into \r\n only if line editing is enabled
-
-shell.c
-       - define top_level_mask if _POSIX_VERSION defined
-
-newversion.c
-       - made it write a definition of SCCSVERSION to version.h -- an SCCS
-         string so the `what' command will be useful
-
-version.c
-       - new variable `sccsversion' set to SCCSVERSION
-
-                                  12/5
-                                  ----
-builtins/fc.def
-       - make fc_gethist check that the history list is non-null before
-         trying to access its members
-
-                                  12/6
-                                  ----
-lib/readline/readline.c
-       - changed the ISTRIP code (again) to force bash to disable ISTRIP
-         only if the tty driver guarantees eight bits (cflag & CSIZE == CS8)
-
-                                  12/9
-                                  ----
-lib/readline/readline.c
-       - tgetent returns 0 if it can't find the terminal name in /etc/termcap,
-         so we failed if it returns <= 0, not < 0.
-
-                                  12/11
-                                  -----
-machines.h
-       - Sony machines running NEWS-OS 4.0 (V.4) should have strerror(),
-         so define HAVE_STRERROR
-       - Pyramids running BSD do not all have the vprintf family of functions,
-         so remove the definition of HAVE_VPRINTF
-
-                                  12/12
-                                  -----
-parse.y
-       - make sure that shell_getc always checks that shell_input_line is
-         valid before trying to reference shell_input_line[0]
-
-                                  12/13
-                                  -----
-mailcheck.c
-       - Since `dollar_underscore' saves the value of $_ in a local variable,
-         it's possible that bind_variable can free and reallocate the cell
-         for $_, leaving dollar_underscore pointing at freed storage.  The
-         fix is to copy it into freshly-allocated memory.
-       - ensure that when saving and restoring dollar_underscore that we do
-         not try to call strlen on a null string
-
-                                   12/15
-                                   -----
-general.c, execute_cmd.c
-       - moved the utility function `all_digits' from execute_cmd.c to
-         general.c
-
-builtins/kill.def
-       - remove use of sscanf, used calls to all_digits and atoi instead
-
-machines.h
-       - if not using gcc, need to make SYSDEP_LDFLAGS = -Xp for Posix
-         on isc386
-
-                                  12/16
-                                  -----
-machines.h
-       - isc386 has multiple groups
-
-execute_cmd.c
-       - add a QUIT to the while loop in find_user_command_in_path that
-         searches the path, so users can interrupt a lengthy path search
-
-                                  12/17
-                                  -----
-builtins/alias.def
-       - added the Posix-specified -a option to unalias, made unalias obey
-         the getopt argument syntax guidelines
-
-builtins/jobs.def
-       - made `jobs' handle the -- option to signal the end of arguments
-
-flags.c
-       - Posix.2a has specified that the -b flag stand for asynchronous
-         notification, so move the definition of asynchronous_notification
-         here and add a new entry to the `flags' struct if JOB_CONTROL is
-         defined
-
-flags.h
-       - add an extern declaration of asynchronous_notification
-
-jobs.c
-       - change the definition of asynchronous_notification to extern, since
-         it's now declared in flags.c
-
-builtins/set.def
-       - change documentation strings to add -b option, note that
-         set -o notify is now the same as set -b
-       - change the code to make set -o notify the same as set -b
-         (list_long_opts(), take the special case out of set_minus_o_option)
-
-                                  12/19
-                                  -----
-lib/readline/readline.c
-       - added support for $LINES, $COLUMNS.  The variables are read after
-         the ioctl(TIOCGWINSZ) and before calls to tgetent
-
-builtins/fc.def
-       - made the fc output format correspond to that specified by Posix.2a 
-         ("%d\t%s\n")
-
-                                  12/20
-                                  -----
-execute_cmd.c
-       - user_command_matches did not properly handle a null $PATH element,
-         which should be the same as ".".  Changed the code to mirror
-         find_user_command_in_path ()
-
-
-                                   12/23
-                                   -----
-execute_cmd.c
-       - added a new function get_next_path_element, which calls
-         extract_colon_unit and interprets the result, translating
-         "" to "."
-
-builtins/cd.def
-       - added description of -l option to dirs short_doc
-       - fixed the bug that caused `dirs' to always print an extra
-         trailing space
-
-documentation/bash.1
-       - added description of -l option to dirs
-
-parse.y
-       - added optional leading ( for case clause, as per Posix.2
-
-                                  12/30
-                                  -----
-lib/readline/vi_mode.c
-       - removed unused variable `added_blank'
-
-bashline.c
-       - added dynamic completion from bfox
-
-execute_cmd.c
-       - redirections must be performed in a child before execution of
-         the command is attempted or aborted (because it's not found
-         by a hash table or $PATH search), according to Posix.2
-
-getcwd.c
-       - new file, from the Gnu C library, for systems that don't do
-         this right -- they use popen("/bin/pwd", "r") instead
-
-                                  12/31
-                                  -----
-builtins/type.def
-       - the type builtin would not report a name as not found if any name
-         had previously been found because the flag variable used to report
-         this (found_something) was not reset each time through the loop.
-         Added a variable `found_any' to be global and reset found_something
-         to 0 each time through the loop
-
-                                    1/4
-                                    ---
-builtins/jobs.def
-       - make sure that the call to add_unwind_protect in
-         execute_list_with_replacements is made after the new command
-         struct is completely initialized
-
-support/mksysdefs
-       - look for /dev/fd, define HAVE_DEV_FD if present
-
-cpp-Makefile
-       - pass HAVE_DEV_FD through to make in SYSTEM_FLAGS
-
-shell.c, execute_cmd.c
-       - call unlink_fifo_list only if HAVE_DEV_FD is not defined and
-         PROCESS_SUBSTITUTION is defined
-
-subst.c
-       - new function make_dev_fd_filename to return /dev/fd/xx, where
-         xx corresponds to the parent end of the pipe
-       - all the named pipe utility functions should be #if !defined
-         (HAVE_DEV_FD)
-       - change process_subsitute to do the following on systems with /dev/fd:
-               1.  Make a pipe in the parent
-               2.  if (open_for_read_in_child)
-                       parent_pipe_fd = fildes[1]
-                       child_pipe_fd = fildes[0]
-                   else
-                       parent_pipe_fd = fildes[0]
-                       child_pipe_fd = fildes[1]
-               3.  pathname = make_dev_fd_filename (parent_pipe_fd);
-               4.  fork
-               5.  In parent, close child_pipe_fd and return pathname
-               6.  In child, turn off job control, dup child_pipe_fd to
-                   either fd 0 or 1 depending on OPEN_FOR_READ_IN_CHILD,
-                   close parent_pipe_fd, parse and execute the string,
-                   and exit
-
-shell.c
-       - added call to unlink_fifo_list in reader_loop so that all fifos
-         get closed, even after builtin commands are executed
-
-                                   1/6
-                                   ---
-machines.h, make_cmd.c, print_cmd.c, shell.c, cpp-Makefile
-       - HAVE_VPRINTF --> HAVE_VFPRINTF
-
-cpp-Makefile, machines.h, test.c
-       - HAVE_MULTIPLE_GROUPS --> HAVE_GETGROUPS
-
-cpp-Makefile, machines.h
-       - HAVE_SIGLIST --> HAVE_SYS_SIGLIST
-
-parse.y
-       - add if_command production
-
-builtins/echo.def
-       - validate all arguments before using them so that -nanything != -n
-       - document the -E option and its use
-
-builtins/umask.def
-       - allow other arguments to be used with -S
-
-subst.c
-       - make sure to close all files in the child created to run a
-         process substutition to avoid holding write file descriptors
-         to pipes that will cause the shell to hang
-
-                                   1/7
-                                   ---
-cpp-Makefile
-       - fixed a typo: SEARCHLIB -> SEARCH_LIB
-
-machines.h
-       - new description for Amiga 3000 running System V.4
-
-shell.c
-       - default secondary prompt is now "> "
-
-builtins/bashgetopt.c
-       - more internal cleanups and bug fixes
-
-support/mksysdefs
-       - detect the amiga by the presence of /usr/amiga
-
-                                   1/9
-                                   ---
-general.c
-       - canonicalize_pathname should remove ./ only if it's at the
-         beginning of the pathname, or immediately preceded by a `/'
-
-                                  1/10
-                                  ----
-documentation/bash.1
-       - clean up the documentation for test -t, since according to
-         Posix, it always requires an argument
-
-general.c
-       - don't build index and rindex for DG machines
-
-
-machines.h
-       - description for System V.4 on IBM 370 architecture
-       - fixed up DG/UX machine description
diff --git a/CWRU/old-changelogs/CWRU.chlog.v8 b/CWRU/old-changelogs/CWRU.chlog.v8
deleted file mode 100644 (file)
index 2aa1437..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-[ Work begins after network release of version 1.11 ]
-
-                                    1/11
-                                    ----
-nojobs.c
-       - Posix systems now reap zombie children and retry a fork() once if
-         it fails
-       - Posix systems should use waitpid() rather than wait() wherever
-         possible
-       - Posix systems do not need to validate a pid before calling waitpid()
-         in wait_for_single_pid(); waitpid takes a pid argument
-
-                                  1/13
-                                  ----
-execute_cmd.c
-       - get_next_path_element can return NULL, so the code that calls it
-         must take that possibility into account
-
-jobs.c
-       - there was an extra parameter in the select() call
-
-builtins/type.def
-       - successful_finds needed to be initialized to 0
-
-machines.h
-       - fixed a typo (_D -> -D) in the DG/UX machine description
-
-                                  1/14
-                                  ----
-execute_cmd.c
-       - fixed extract_colon_unit to return "" in the case of a trailing
-         colon in the path
-
-INSTALL
-       - note that on SCO Xenix 386 one must use cc -E rather than /lib/cpp
-         to process cpp-Makefile
-
-cpp-Makefile
-       - fixed the problem of a single quote in a makefile comment
-
-machines.h
-       - Xenix 386 machines need -DUSG in SYSDEP_CFLAGS
-
-lib/readline/readline.c
-       - changed the includes around so that the Xenix 386 support is
-         in the same section as the USGr3 code, and the Xenix 286
-         support is in the same section as the plain USG code
-
-shell.c
-       - split the `int code = setjmp (top_level)' statement in
-         reader_loop into two statements -- some compilers don't like
-         it
-
-parse.y
-       - changed the overloaded `yy_input_dev' to a `union STREAM',
-         where a `union STREAM' is
-
-               typedef union STREAM {
-                       FILE    *s_file;
-                       char    *s_string;
-               } STREAM;
-
-         and changed the parameter to init_yy_io and all the functions
-         that call it to use a STREAM argument instead of casting back
-         and forth between a (char *) and a (FILE *)
-
-builtins/times.def
-       - If hpux or USGr4, #undef HAVE_RESOURCE, rather than try to fit
-         all the special cases onto a single line deciding whether or
-         not to include <sys/resource.h>
-
-                                  1/15
-                                  ----
-bashline.c
-       - changed the bindable name for the ksh-style ^O function from
-         operate_and_get_next to operate-and-get-next
-
-execute_cmd.c
-       - some systems (e.g SGI) allow the result of alloca to be assigned
-         only to a `simple' variable, so I introduced a dummy one instead
-         of assigning to redirectee->word directly
-
-shell.c
-       - fixed a typo: PENDANTIC -> PEDANTIC
-
-machines.h
-       - took -DREVERESED_SETVBUF_ARGS out of the entries for Xenix 386
-
-cpp-Makefile
-       - added double quotes around the RHS of the assignment to
-         SYSTEM_NAME to avoid further cpp processing if the system name
-         happens to be a cpp define
-
-bashline.c
-       - added `search-forward', `search-backward' functions that perform
-         non-incremental history searches using the vi-mode code
-
-                                  1/16
-                                  ----
-builtins/ulimit.def
-       - fixed a typo in a comment
-       - added parens around the object in an #if defined preprocessor
-         statement
-
-machines.h
-       - the Xenix 386 machine descriptions need to #undef HAVE_GETWD
-
-builtins/read.def
-       - Fixed read to treat backslash as an escape character unless
-         -r is given, as per Posix.2
-
-lib/readline/readline.c
-       - Fixed up the maze of dire[cn]t includes and defines so that
-         they're correct for Xenix (finally)
-
-lib/glob/glob.c
-       - ditto.  Now the defines/includes are correct for Xenix 386
-
-execute_cmd.c
-       - a loop of the form
-                       while : ; do echo -n 1; done
-         can run a machine using Gwyn's alloca() emulation out of memory
-         because alloca() keeps getting called at the same stack level
-         and never frees anything up.  Added a call to alloca(0) after
-         the call to execute_simple_command in execute_command_internal
-       - added Karl Kleinpaste's workaround for the AFS file creation
-         bug, dependent on AFS_CREAT_BUG
-
-parse.y
-       - \s in a prompt string needs to decode to the shell basename, as
-         per the documentation, rather than the full shell name
-
-                                  1/17
-                                  ----
-nojobs.c
-       - fixed a typo in one of the WAITPID calls, thanks to Bruce Evans
-
-[At this point, all of these fixes were sent along to bfox]
-
-support/getcppsyms.c
-       - now recognizes cpp symbol __hppa for use on HP precision
-         architecture machines
-
-machines.h
-       - M_MACHINE is now `hppa' for HP Precision Architecture machines, so
-         to make sure hpux is defined, it's now in SYSDEP_CFLAGS
-       - Make sure that the RS6000/AIXv3 description defines M_OS as AIX,
-         not "AIX".  The quotes are added in cpp-Makefile
-
-                                  1/27
-                                  ----
-parser.h
-       - new file, contains structures necessary to parse commands
-
-input.h
-       - new file, contains definitions and structures used to read input
-
-bashline.c
-       - removed the definitions for search-backward, search-forward
-
-cpp-Makefile
-       - removed the definition of DESTDIR; now passed down from Makefile
-
-error.c, error.h
-       - new files to isolate the error-handling functions
-
-command.h
-       - new file including structures used internally to represent
-         commands
-
-parse.y
-       - include input.h, parser.h
-       - changed all the code that deals with input streams to fit the
-         new framework defined in input.h
-
-make_cmd.c
-       - moved the error reporting code to error.c
-       - added cpp code to ensure that alloca is defined correctly
-
-shell.h
-       - removed the code that was moved to input.h, parser.h, command.h
-
-builtins/common.c
-       - moved a call to setjmp out of an if statement
-       - changed the input code to work with the new input framework
-
-builtins/getopt.c
-       -include config.h if compiling for the shell
-
-lib/readline/readline.c
-       - change representation of characters > 127 to octal
-         rather than M-c
-       - changed representation of characters < ' ' to ^X rather
-         than C-x
-       - fixed a memory leak in parser_if () by freeing `tname'
-
-machines.h
-       - removed MIPS_CFLAGS from the ultrix Decstation entry, since the
-         limit no longer needs increasing
-
-variables.c
-       - move the initialization of PWD before the environment is read, so
-         an exported version of PWD takes precedence
-
-readline.c, funmap.c, emacs_keymap.c
-       - removed support for rl_arrow_keys -- it should now be done by the
-         inputrc file
-
-documentation/bash.1
-       - only non-job-control shells start background jobs ignoring SIGINT
-         and SIGQUIT
-
-builtins/umask.def
-       - don't print the octal representation of the umask if the symbolic
-         representation has already been displayed
-       - a bad option to umask should return EXECUTION_FAILURE, not -1
-
-shell.c
-       - new function, init_signal_handler (sig), to initialize the SIG
-         signal hander, call it in main loop
-
-nojobs.c
-       - call init_signal_handler (SIGINT, sigint_sighandler) so the correct
-         thing happens on Posix systems
-
-general.c
-       - updated the comment above the fallback implemenation of killpg()
-
-machines.h
-       - machine entry for the Unix PC
-       - new variable HAVE_DIRENT
-
-                                  1/28
-                                  ----
-machines.h
-       - SCO needs to #undef HAVE_GETCWD so that the getcwd() function
-         supplied with bash is used
-
-subst.c
-       - USG machines should include <string.h>, others <strings.h>
-       - sub_append_number should use itos() rather than xmalloc and
-         sprintf
-
-builtins/ulimit.def
-       - changed the resource limit struct to one that has no explicit
-         size to account for systems with differing numbers of resource
-         limits
-
-lib/readline/readline.c
-       - there was an off-by-one error in the code that counts the number
-         of items to list when doing completion listing
diff --git a/CWRU/old-changelogs/CWRU.chlog.v9 b/CWRU/old-changelogs/CWRU.chlog.v9
deleted file mode 100644 (file)
index d1474fb..0000000
+++ /dev/null
@@ -1,5062 +0,0 @@
-[work begins on post-netwide-1.12 release.]
-
-                                  1/30
-                                  ----
-machines.h, general.c, nojobs.c
-       - changes for AIX/RT 2.2.1
-
-lib/readline/vi_mode.c
-       - fixed a bug with vi mode, `cw' and whitespace that removed the
-         last character of the previous word
-
-lib/readline/readline.c
-       - readline did not correctly save the value of last_readline_init_file
-         across things like `bind'.  Now it does the following:
-
-               last_readline_init_file initialized to NULL
-               readline_initialize_everything calls rl_read_init_file with
-               an explicit argument of ~/.inputrc
-               rl_read_init_file sets last_readline_init_file to
-               savestring(filename) so it saves a fresh copy
-
-getcwd.c
-       - new version from Roland McGrath, with changes for the bash build
-         environment
-
-execute_cmd.c, variables.c
-       - bash was not looking for $PATH in the temp environment when
-         looking up a command.  Now, find_variable looks in the temp
-         environment if subshell_environment is set.  This will be
-         set when bash is looking a command up in the path (it's set in
-         find_user_command_internal while looking up the path string to
-         pass to find_user_command_in_path)
-
-                                  1/31
-                                  ----
-make_cmd.c
-       - removed useless call to alloca, replaced with a static array
-         definition
-
-                                   2/3
-                                   ---
-machines.h
-       - Cray machine description
-
-                                   2/4
-                                   ---
-builtins/getopt.[ch]
-       - upgraded to a more recent version from the Gnu C library
-
-jobs.c
-       - added a call to init_signal_handler to replace equivalent in-line
-         code in initialize_jobs
-
-trap.c
-       - new function: maybe_call_trap_handler (sig) calls a trap function
-         for signal SIG if one exists
-
-jobs.c
-       - bash now (effectively) ignores SIGINT while waiting for a job run
-         from a script.  We don't want to die if a SIGINT is received while
-         running another process, only if that job dies due to SIGINT.  This
-         lets interactive processes run from scripts that want to catch
-         SIGINT and handle it do so without disturbing the shell that's
-         interpreting the script.  All other versions of sh behave this way.
-
-         The implementation is fairly straightforward.  In wait_for, the
-         parent shell sets the SIGINT handler to wait_sigint_handler, which
-         allows the wait builtin to be interrupted and sloughs off everything
-         else.  flush_child controls the behavior when a `foreground' process
-         dies due to SIGINT: it calls a trap handler if one exists;
-         otherwise it calls either sigint_sighandler (interactive) or
-         termination_unwind_protect (non-interactive).  It then resets the
-         SIGINT signal handler to what it was before wait_for changed it.
-         wait_for does reset the sighandler before returning if flush_child
-         does not, so the SIGINT does not stay ignored.
-
-         There is a race condition between the time that make_child creates
-         a child and sets it to run and the time the parent calls wait_for.
-         This is handled by having old_sigint_handler, which holds the
-         value of the `real' SIGINT signal handler, be NULL except when the
-         shell is in wait_for, and only operate on the SIGINT handler state
-         if this variable is non-null.
-
-         Should the stuff be unwind-protected?  I don't think so; u-p gets
-         run on interrupts, and we're controlling the interrupt handler.
-
-                                   2/5
-                                   ---
-trap.c
-       - new function signal_is_trapped (sig) returns 1 if a trap handler
-         has been established for SIG
-
-shell.c
-       - have throw_to_top_level call longjmp(top_level, DISCARD) if the
-         shell is non-interactive and a SIGINT occurred and was trapped
-
-cpp-Makefile, machines.h
-       - instead of running `basename ...` to discover the name of the
-         alloca object file, use a new variable $ALLOCA_OBJECT.  It's set
-         to alloca.o if we're using the C emulation, and to ALLOCA_OBJ,
-         which must be defined in the machines.h entry, for an
-         architecture defining ALLOCA_ASM
-
-cpp-Makefile
-       - BSD make of 4.3-tahoe and later already defines MACHINE and does
-         not allow it to be overridden, so replace it with Machine.
-
-endian.c
-       - added changes from Cray to configure endianness correctly on
-         machines with 8-byte longs
-
-parse.y
-       - added '&' to no_semi_successors in bash_add_history so bash will
-         not add a semicolon after it appears
-
-                                   2/6
-                                   ---
-subst.c
-       - since string_extract_verbatim was overloaded, added a new function
-         string_extract_single_quoted to call when extracting strings in
-         ''
-
-lib/readline/history.c
-       - changed call to string_extract_verbatim to a call to
-         string_extract_single_quoted
-
-lib/readline/vi_mode.c
-       - rl_vi_subst was not calling rl_end_undo_group properly (i.e. at all)
-
-execute_cmd.c
-       - On systems without job control, async commands (`&') have an
-         extra redirection added before calling execute_command_internal
-         that redirects /dev/null to standard input.  This redirection
-         must be removed right after execute_command_internal returns,
-         because the loop functions call execute_command_internal multiple
-         times with the same command struct.  If we keep tacking redirections
-         onto the front of it, eventually we'll run out of file descriptors
-         on a big enough loop.
-
-jobs.c
-       - some functions were not correctly blocking SIGCHLD while running:
-         delete_all_jobs, map_over_jobs, start_job when it calls
-         reset_current
-
-                                   2/7
-                                   ---
-print_cmd.c
-       - an extra space was being printed at the end of a redirection list.
-         This caused exporting of functions with embedded here-documents to
-         fail, since the end marker would not be matched
-
-                                    2/8
-                                    ---
-nojobs.c
-       - change reap_zombie_children to keep calling waitpid while it returns
-         something > 0 (a valid pid)
-       - add a call to reap_zombie_children if we get a valid pid after
-         waiting in wait_for
-
-variables.c
-       - include pwd.h after sys/types.h.  It matters on some systems.
-
-shell.c
-       - added a function to encapsulate the differences between systems
-         in setting a file pointer to line-buffered: line_buffer_file
-
-                                   2/9
-                                   ---
-shell.c
-       - unbuffer stdin when it's not a tty and bash is reading a script
-         from stdin
-
-                                  2/10
-                                  ----
-
-machines.h, cpp-Makefile
-       - a new machine description variable HAVE_DIRENT, passed down to
-         makes in libraries
-
-support/mksysdefs
-       - check for the existance of /usr/include/dirent.h, define
-         HAVE_DIRENT_H if there
-
-                                  2/11
-                                  ----
-machines.h
-       - add #define USE_TERMCAP_EMULATION to HP-UX machine description
-       - added #define HAVE_DIRENT to a number of entries
-
-jobs.h
-       - added missing definitions for WSTOPSIG, WTERMSIG, WEXITSTATUS
-         for Posix systems that do not have them and do not have the
-         `union wait' defined
-
-builtins/suspend.def, unwind_prot.c, longest_sig.c
-       - include <sys/types.h> before <signal.h> -- some systems require
-         it
-
-support/mksysdefs
-       - For HP machines running HPUX, SYSDEF is set to one of hpux8, hpux7,
-         hpux6, or hpux, corresponding to different releases of HP-UX.
-       - if `uname -m' returns something starting with XD88, the machine is
-         a Tektronix XD88
-
-                                  2/12
-                                  ----
-variables.c
-       - stop core dumping on startup if SHLVL is not set
-
-lib/glob/glob.c
-       - make sure we always recurse and glob the entire filename so the
-         quoting characters added in shell_glob_filename get removed
-         correctly
-
-jobs.c
-       - new function end_job_control to terminate stopped jobs and
-         give the terminal back to the original pgrp
-       - new function restart_job_control to re-initialize the job
-         control state
-
-builtins/exec.def
-       - call end_job_control before we try to execve the command so
-         we're back in the original process group for the new process
-         and restart_job_control if the shell_execve fails and we're
-         not exiting
-
-shell.c
-       - change the code that resets the pgrp just before exiting to
-         call end_job_control instead
-
-lib/readline/chardefs.h
-       - new define, MACRO_CHAR
-
-lib/readline/readline.c
-       - changed rl_generic bind to correctly handle binding keys > 128
-         by using the appropriate meta keymap (map[ESC].function as a
-         keymap)
-       - changed rl_dispatch, rl_show_char, and rl_bind_key to use
-         UNMETA instead of substracting 128 and to use META_CHAR to
-         check for a character's `meta-ness'
-
-                                  2/13
-                                  ----
-lib/readline/readline.c, lib/glob/glob.c
-       - define HAVE_DIRENT if it's not defined but HAVE_DIRENT_H is
-
-lib/readline/history.c
-       - instead of calling write(2) twice for each history line, build
-         a big buffer of all the history data to write, fill it, and
-         call write(2) once
-
-subst.c
-       - wrapped up the eight-bit changes by making the single-quoted
-         strings and double-quoted strings code in expand_word_internal
-         simply discard a word if it's "" or '' and that's not the
-         entire word.  This preserves sh semantics.
-
-parse.y
-       - If process substitution is compiled into the shell, there was
-         a mistake by which <[ and >[ were treated the same as $[
-
-lib/glob/glob.c, lib/readline/readline.c
-       - Reorganized the twisty maze of defines for HAVE_DIRENT
-
-                                  2/14
-                                  ----
-posixstat.h
-       - removed lines consisting of only a single #.  Some ANSI cpps
-         don't like lines like that
-
-execute_cmd.c
-       - added a call to QUIT between commands in cmd1 ; cmd2 sequence
-
-test.c
-       - removed redundant declaration of expr() in test_command()
-
-                                    2/16
-                                    ----
-builtins/Makefile
-       - added dependencies on the header files in the main shell directory
-
-jobs.c, jobs.h, builtins/fg_bg.def, builtins/kill.def
-       - replaced the notified, foreground, and job_control members of the
-         job structure with a flags field and bits J_NOTIFIED, J_FOREGROUND,
-         and J_JOBCONTROL
-
-subst.c
-       - fixed a typo (result[0] == '\0') in EIGHT_BIT version of
-         dequote_string
-
-cpp-Makefile
-       - added dependencies for the builtin object files
-
-execute_cmd.c
-       - complete fix from 2/14 -- add QUIT calls to &&, ||, and `;' when
-         executing a command and ignoring the return value
-
-jobs.c
-       - if a job is suspended while running in a loop, break out of the
-         loop
-
-nojobs.c
-       - made the same wait_sigint_handler and wait_for changes as those
-         made to jobs.c
-
-shell.c
-       - moved the code that adds 128 to last_command_exit_value before
-         any SIGINT trap handler is run
-
-subst.c
-       - if a word is enclosed completely in "" or '', set the quoted
-         flag when the word is returned from expand_word_internal. This
-         keeps the globbing routines from being called
-
-                                  2/17
-                                  ----
-shell.c
-       - use shell_name instead of (++argv[0]) when testing for a
-         restricted shell
-
-                                  2/18
-                                  ----
-general.c
-       - redid the defines for index and rindex to define and use
-         HAVE_INDEX and HAVE_RINDEX, respectively
-
-machines.h
-       - added HAVE_DIRENT to the AIXRT machine description
-
-jobs.c
-       - define and use INVALID_SIGNAL_HANDLER as something old_sigint_handler
-         cannot be set to
-
-                                  2/19
-                                  ----
-
-config.h
-       - made restricted shell mode configurable, #define RESTRICTED_SHELL
-
-shell.c, flags.c, execute_cmd.c, builtins/cd.def
-       - add code to implement ksh/sh restricted shell mode
-
-shell.c
-       - new function maybe_make_restricted (name) which turns the shell
-         into a restricted shell if name == `rbash'
-
-lib/readline/readline.c
-       - fixed rl_key_sequence_length problem when meta-ized characters are
-         read (one too short).  This left extra characters in macros when
-         end-kbd-macro was bound to a meta-ized character
-
-builtins/common.c
-       - added set_working_directory (name) as analog of
-         get_working_directory
-
-variables.h
-       - added `imported' variable attribute
-
-                                  2/20
-                                  ----
-Makefile
-       - DESTDIR -> bindir
-       - aix-Makefile -> ansi-Makefile because an ANSI C compiler like that
-         in SunOS5 (hah!) need not accept /**/# as a directive
-
-bashline.c
-       - added code from bfox to do completion into brace expansions
-       - use BUILTIN_ENABLED flag
-
-builtins.h
-       - added a flags field to struct builtin to replace the `enabled'
-         structure member
-
-cpp-Makefile
-       - set SHELL=MAKE_SHELL if MAKE_SHELL is defined
-       - added support for the LD_HAS_NO_DASH_L definition from machines.h
-       - PROGRAM -> Program
-       - support for the new LD_HAS_NO_DASH_L machine defintion variable
-
-execute_cmd.c
-       - removed the subshell_environment variable
-       - find_user_command_internal now calls find_variable_internal
-
-general.c
-       - moved init_signal_handler here, changed name to set_signal_handler
-
-general.h
-       - added definition for set_signal_handler for non-Posix systems
-
-jobs.c
-       - now print `Done' when a background job exits with status 0
-
-machines.h
-       - combined all of the Sun machine descriptions into one
-       - new descriptions for SunOS5, Alliant, Motorola Delta 68k
-       - completely redid the HPUX description, making M_MACHINE much more
-         specific rather than just `hpux'
-
-nojobs.c
-       - change all instances of signal() to set_signal_handler()
-
-shell.c
-       - removed definition of init_signal_handler
-       - changed more instances of signal to set_signal_handler
-
-subst.c
-       - monster reformat
-
-variables.c
-       - added a function find_variable_internal that can be explictly told
-         to search the temporary environment, changed find_variable to call
-         it
-       - changed all variables and functions from the initial shell
-         environment to have the `imported' attribute
-       - made set_func_auto_export return the pointer to the function struct
-
-builtins/Makefile
-       - ar clq --> ar cq
-
-builtins/cd.def
-       - `pushd_silent' is gone
-
-builtins/common.c
-       - there is no more `enabled' member of a builtin struct;
-         test with BUILTIN_ENABLED instead
-
-builtins/enable.def, builtins/help.def
-       - use BUILTIN_ENABLED bitmask
-
-builtins/mkbuiltins.c
-       - initialize all builtins to be BUILTIN_ENABLED | STATIC_BUILTIN
-
-lib/glob/Makefile
-       - ar clq -> ar cq
-
-lib/glob/glob.c
-       - added another shell interruption point
-       - reorganized the twisty maze of dirent defines to use HAVE_DIRENT_H
-
-lib/readline/readline.c, lib/readline/funmap.c
-       - put rl_arrow_keys back in
-
-lib/readline/Makefile
-       - ar clq -> ar cq
-
-lib/readline/readline.c
-       - reorganized the twisty maze of dirent defines to use HAVE_DIRENT_H
-       - made the search string for i-searches dynamically allocated and
-         expandable rather than using alloca
-       - turned on USE_XON_XOFF again
-       - RL_DEFAULT_INPUT_FILE -> DEFAULT_INPUTRC
-
-support/cppmagic
-       - added `legal' to the list of unknown flags
-
-support/getcppsyms
-       - now recognizes _M88KBCS_TARGET
-
-support/mksysdefs
-       - code to distinguish SunOS5 from SunOS4
-       - aix-Makefile -> ansi-Makefile
-
-lib/readline/vi_mode.c
-       - after completing with `*' or `\', Posix.2a says to go into
-         insertion mode
-       - for c[wW], don't move back any farther than we started to
-         emulate c[eE] -- Posix.2 says the cursor position should not
-         change
-
-variables.c
-       - if we get PWD from the environment, and it's the same directory
-         as `.' (calling same_file) set the_current_working_directory
-         to that value
-
-builtins.h
-       - added a #define for SPECIAL_BUILTIN
-
-mksysdefs
-       - Xenix systems now have one of XENIX_22, XENIX_23, or XENIX_32
-         defined based on the OS release level
-       - test for /dev/fd being a directory and /dev/fd/0 being readable
-         to decide whether or not we have the /dev/fd way of naming open
-         files
-
-                                  2/24
-                                  ----
-builtins/common.c
-       - set_working_directory is now a void
-
-general.c
-       - new implementation of canonicalize_pathname from bfox
-         (+ bug fixes, of course)
-
-bashline.c
-       - make bash_symbolic_link_hook call canonicalize_pathname
-
-variables.c
-       - set_func_auto_export no longer returns a SHELL_VAR *
-
-lib/readline/readine.c
-       - added code to determine whether or not the terminal has a
-         meta key and to use it while editing if one is available
-
-subst.c
-       - minor bug fix to remove_quoted_escapes (logic bomb :-)
-
-                                  2/25
-                                  ----
-machines.h
-       - cleaned up the hpux section.  Cannot define M_OS as HPUX_X,
-         because HPUX_X is already defined as expanding to nothing;
-         this results in a blank M_OS
-
-       - attempted to rationalize Xenix support.  Depending on the
-         XENIX_nn define provided by support/mksysdefs, configure in
-         -DREVERSED_SETVBUF_ARGS, -xenix, -lx, -ldir, and HAVE_DIRENT
-
-               Xenix 2.2: -DREVERSED_SETVBUF_ARGS
-                          cc -lx
-
-               Xenix 2.3: HAVE_DIRENT
-                          cc -ldir
-
-               Xenix 3.2: HAVE_DIRENT
-                          cc -xenix -ldir
-
-                                  2/26
-                                  ----
-builtins/source.def
-       - POSIX_PENDANTIC -> POSIX_PEDANTIC
-
-                                  2/27
-                                  ----
-support/getcppsyms.c
-       - consolidated HP definitions to be of the form
-
-               #if defined (__hp9000s300) || defined (hp9000s300)
-                 printf (" -Dhp9000s300")
-               #endif /* __hp9000s300 || hp9000s300 */
-
-machines.h
-       - changed the way the hp9000s300 tests for hp9000s200 being defined
-
-support/mksysdefs
-       - changed the XENIX_nn defines a little bit
-
-input.c
-       - new input buffering package -- like stdio but allows syncing with
-         the underlying file descriptor when creating child processes, and
-         provides a fd-stream mapping.
-
-input.h, shell.c, jobs.c
-       - changes for the input buffering package, using default_buffered_input
-         in place of default_input
-
-general.c
-       - fix canonicalize_pathname to keep from running off the end of the
-         result string (check result[i] before assigning start = i++)
-
-jobs.c
-       - change some calls to signal to call set_signal_handler instead
-
-                                    2/29
-                                    ----
-shell.c
-       - only initialize default_buffered_input to the input file
-         descriptor if the shell is not interactive
-
-builtins/getopt.c
-       - cast the arguments properly in calls to my_bcopy
-
-execute_cmd.c
-       - added code to do_redirection_internal to change buffered streams
-         if one of the file descriptors corresponding to a buffered input
-         stream is modified.  This lets the shell do proper buffering if
-         the file descriptor from which the shell is reading input is
-         modified by a redirection (e.g., exec 0</etc/passwd)
-
-input.c, shell.c, parse.y, jobs.c, nojobs.c
-       - changed default_buffered_input to an integer file descriptor that
-         is mapped to a buffered stream via the `buffers' array
-
-input.c
-       - the `buffers' array is now lazily dynamically allocated
-       - added functions to duplicate buffered streams so that things like
-         exec 0<&4 will work right
-       - added functions to access the buffered stream functionality given
-         a file descriptor argument, indexed through the `buffers' array.
-       - unbuffered streams now have bp->b_size == 1, so that no special-
-         case code is needed when reads are done.
-
-input.h
-       - the member of the BASH_INPUT union in effect if it describes a
-         buffered stream is now a file descriptor
-
-jobs.c
-       - SCO 3.2.4 has fixed the sigsuspend() bug, so don't execute the
-         hack workaround if SCOv4 is defined
-
-                                    3/1
-                                    ---
-builtins/common.c
-       - made shell_builtin_compare perform some tests itself before
-         calling strcmp to cut down the number of strcmp calls
-       - did the same thing for builtin_address_internal
-
-parse.y
-       - removed calls to strcmp from read_token, just test if token[0] == }
-         and !token[1]
-       - only call clearerr if bash_input.type == st_stream in shell_getc
-       - removed a call to strcpy from shell_getc that only added a newline;
-         changed it to two assignment statements
-       - used token_index instead of a call to strlen at the end of
-         read_token where the word is being constructed and returned
-
-unwind_prot.c
-       - changed a strcmp to a STREQ in unwind_frame_run_internal
-
-variables.c
-       - removed some dead code that had been #if'd out
-       - added a variable to avoid a call to strlen in
-         initialize_shell_variables
-       - change a call to strncmp to a STREQN in initialize_shell_variables
-       - changed strcmp to STREQ in non_unsettable
-
-                                   3/2
-                                   ---
-jobs.c
-       - rearranged the code that calls flush_child (0) for SCO so it is
-         easier to do something like SCO && !SCOv4
-       - changed flush_child so that the loop is performed in a blocking
-         fashion only if SCO && !SCOv4
-
-                                   3/3
-                                   ---
-signames.c
-       - new standalone program to create a signames.h file that contains
-         the initialization code for the signal_names array
-
-trap.h
-       - removed the signal_names array initialization code
-       - include "signames.h"
-
-cpp-Makefile
-       - make sure signames.aux builds signames.h correctly
-
-input.c
-       - changed fd_is_seekable and bufstream_getc into macros
-
-mksysdefs
-       - changes to define SCOv4 if uname returns the right info
-
-machines.h
-       - changes to define BROKEN_SIGSUSPEND and NO_DEV_TTY_JOB_CONTROL
-         for various SCO systems
-
-jobs.c
-       - check for BROKEN_SIGSUSPEND and NO_DEV_TTY_JOB_CONTROL instead
-         of using SCO
-
-                                   3/4
-                                   ---
-general.c
-       - make set_signal_handler return the old signal handler again
-
-shell.c
-       - set SIGINT handler to sigint_sighandler for non-interactive shells
-       - remove SIGQUIT from list of terminating signals
-
-                                   3/5
-                                   ---
-builtins/trap.def
-       - added special SIGINT handling for the case of reverting a signal
-         handler to the default
-
-shell.c
-       - added SIGINT back to the list of terminating signals for
-         non-interactive shells
-
-variables.c
-       - initialize mail variables in initialize_shell_variables only if
-         interactive_shell is true
-       - only check for command_oriented_history if interactive shell
-       - only initialize the history variables if history expansion is
-         being performed (remember_on_history == 1)
-       - only make PS1 and PS2 non-unsettable if the shell is interactive
-
-                                   3/6
-                                   ---
-variables.c
-       - set up a new temporary environment, FUNCTION_ENV, which is the
-         temporary environment provided to a function
-       - make find_tempenv_variable search both temporary_env and
-         function_env, searching function_env if variable_context > 0
-       - change maybe_make_export_env to add variables from function_env
-         to the environment
-       - new function dispose_function_env to deallocate the temporary
-         function environment and cause a new export_env to be made
-       - added code to qsort_string_compare to compare the first
-         characters of the strings passed before calling strcmp
-
-general.c
-       - new function copy_array (char **array) returns a newly-allocated
-         copy of ARRAY
-
-execute_cmd.c
-       - added code to execute_builtin_or_function that initializes the
-         temporary function environment and takes care of disposing of
-         it on normal or abnormal exit
-       - dispose of temporary environment after we initialize the function
-         environment
-       - added same code to execute_subshell_builtin_or_function
-       - since the trap code now restores the SIGCHLD handler to the
-         original, any time make_child is called and the shell needs to
-         run in the child process, set_sigchld_handler should be called
-         to reinstall the proper SIGCHLD handler
-
-jobs.c
-       - new function set_sigchld_handler to reinstall flush_child as the
-         SIGCHLD signal handler
-
-                                   3/9
-                                   ---
-bashline.c
-       - swapped code around to avoid calling savestring (this_fignore)
-         when this_fignore is null
-
-                                  3/10
-                                  ----
-jobs.c
-       - make sure the code in flush_child that calls the SIGCHLD trap
-         handler saves last_made_pid and the_pipeline using unwind-protects
-
-lib/readline/readline.c
-       - make sure the code that uses VLNEXT is protected by #ifdef
-         TERMIOS_TTY_DRIVER
-
-shell.c
-       - add a `beenhere' flag to avoid executing $ENV more than once
-
-parse.y
-       - added a new token ASSIGNMENT_WORD
-       - made read_token return ASSIGNMENT_WORD if in a simple command
-         position, token contains `=', the `=' is not the first character,
-         and the characters before `=' are a legal identifier (as Posix.2
-         specifies)
-       - a simple_command_element can now also be an ASSIGNMENT_WORD
-       - alias expansion is attempted if the last token was an
-         ASSIGNMENT_WORD, as Posix.2a specifies
-
-                                  3/11
-                                  ----
-execute_cmd.c
-       - moved the code that checks command words for `/' down into
-         execute_disk_command, and made it check only the first command
-         word, like sh and ksh
-        - vfree() is no longer static, so other code that needs to add 
-          unwind-protects that use free can use it
-
-trap.c
-       - added a function set_sigchld_trap (command) to set the SIGCHLD
-         trap handler to `command', because unwind-protects cannot take
-         two arguments
-
-jobs.c
-       - changed the code in flush_child to set up and use and unwind-protect
-         frame to protect the things it needs to while running the SIGCHLD
-         trap commands
-
-                                  3/12
-                                  ----
-nojobs.c
-       - added the BUFFERED_INPUT code to make_child
-
-subst.c
-       - folded the test and increment of the string pointer into
-         string_extract_double_quoted and string_extract_single_quoted
-       - made string_extract_verbatim and string_extract static
-
-lib/readline/history.c
-       - changed code that calls string_extract_single_quoted to not
-         increment the string pointer after the call
-
-variables.c
-       - added code to qsort_var_comp to compare the first character of
-         the variable names before calling strcmp
-
-                                  3/13
-                                  ----
-parse.y
-       - include string.h or strings.h
-
-lib/readline/readline.c, lib/glob/glob.c
-       - removed the code that defined HAVE_DIRENT_H if _POSIX_VERSION
-         was defined -- it breaks on apollos, and is a bad idea
-         anyway
-
-input.c
-       - make sure close_buffered_fd closes the fd, whether or not it
-         was a buffered stream
-
-                                  3/16
-                                  ----
-machines.h
-       - added a #define LD_HAS_NO_DASH_L to the Sequent Dynix entries
-
-trap.c
-       - made trap_list[SIGINT] == IMPOSSIBLE_TRAP_HANDLER while running
-         the interrupt trap, so we can tell if the trap handler sets
-         another trap and not restore the original handler if so
-
-                                  3/17
-                                  ----
-trap.c
-       - a new function set_sigint_handler, which subshells doing `shellsy'
-         things like command substitution and ( cmd ) call to make sure
-         they handle interrupts right
-
-execute_cmd.c, subst.c
-       - added calls to set_sigint_handler in the appropriate spots
-
-                                  3/18
-                                  ----
-hash.c
-       - replaced the old hash function with the one from Gnu cpp, which has
-         a much better distribution
-
-jobs.c
-       - make end_job_control call setpgid to reset the pgrp to the original
-         only if original_pgrp >= 0
-
-builtins/exec.c
-       - remove the calls to restore_default_signal; restore_original_signals
-         now does all the necessary work
-
-                                  3/19
-                                  ----
-jobs.c, nojobs.c
-       - make sure that make_child resets default_buffered_input to -1
-         after closing it with close_buffered_fd
-
-                                  3/23
-                                  ----
-lib/glob/tilde.c
-       - had an extern declaration for malloc rather than xmalloc
-
-general.h
-       - added #define for REVERSE_LIST, a macro which calls reverse_list
-         on a list only if the pointer is valid and there is more than one
-         element
-
-parse.y
-       - removed calls to legal_assignment in read_token; assignment()
-         already does those checks
-
-general.c
-       - reformatted reverse_list
-
-copy_cmd.c
-       - changed calls to reverse_list in copy_word_list and copy_redirects
-         to calls to REVERSE_LIST
-
-subst.c
-       - changed a call to reverse_list in expand_word_internal to one to
-         REVERSE_LIST
-
-                                  3/24
-                                  ----
-builtins/common.c
-       - replaced a call to sscanf with code to skip leading whitespace and
-         calls to all_digits and atoi
-
-mailcheck.c
-       - did the same for a call to sscanf in time_to_check_mail
-
-                                  3/26
-                                  ----
-variables.c
-       - made find_variable_internal call find_tempenv_variable only if
-         temporary_env or function_env exists
-[gprof.int.4]
-
-alias.c, alias.h
-       - rewrote the alias code so that it now uses a hash table instead
-         of looking things up in a linear list
-
-subst.c
-       - removed the inclusion of alias.h
-
-parse.y
-       - added inclusion of alias.h
-
-cpp-Makefile
-       - removed alias.h from subst.o's dependencies
-       - added alias.h to y.tab.o's dependencies
-
-bashline.c, builtins/alias.def
-       - rewrote code that knew about the internal alias data structure
-         to use an array of alias structures to search, match, and print
-
-                                  3/27
-                                  ----
-test.c
-       - group_member() needs to check against gid and egid regardless
-         of whether or not the system has getgroups(2); Posix.1 does not
-         require that the primary group id show up in the group list,
-         and some systems do not put it there
-
-                                  3/30
-                                  ----
-parse.y
-       - add `|' to the list of tokens that should not have a semicolon
-         following them when adding a line to the history when command-
-         oriented history is active
-
-lib/readline/readline.c
-       - fixed up the control character display by making the code print
-         c ^ 0x40
-
-support/cppmagic
-       - add support for recognizing the s5r4 c pre-processor,
-         /usr/ccs/lib/cpp
-
-lib/readline/vi_mode.c
-       - made rl_vi_delete_to pay attention to whether or not we're redoing,
-         and to use the last motion key if we are
-       - made rl_vi_char_search use the last char searched for if we're
-         redoing
-
-                                  3/31
-                                  ----
-parse.y
-       - removed the check for non-interactive-ness when doing shell
-         comments
-
-                                   4/1
-                                   ---
-lib/readline/readline.c
-       - completion with tilde expansion needs to have any `/' present at
-         the end of the user's directory name re-inserted manually, because
-         pathname canonicalization strips any trailing `/', before tacking
-         on the expanded filename
-
-subst.c
-       - fixed a bug in dequote_string that caused reading beyond the end
-         of the string if the last character in the string was an (unquoted)
-         CTLESC
-       - made list_string obey the setting of `quoted' and not do the
-         initial strip of whitespace from the beginning and end of the
-         word if it was set
-       - expand_word_internal calls list_string with quoting == 1 if splitting
-         a word after expanding "$@"
-
-error.c
-       - new function itrace for interactive traces
-
-subst.c
-       - command_substitute should give the terminal back to pipeline_pgrp
-         only if the shell is interactive
-
-execute_cmd.c
-       - execute_disk_command should turn off interactive while performing
-         redirections for an asynchronous command.  The problem was a race
-         condition with command_subst.  A command like
-               date > `hostname` &
-
-         would leave the subshell begun to run date and the primary shell
-         fighting over the terminal.  After the subshell did the command
-         substitution, it wanted to give the terminal back to pipeline_pgrp,
-         which was its own pid.  Since it was in the background, though,
-         that was wrong, and ended up taking the terminal away from the
-         primary (interactive) shell, which thought it had the thing.
-
-lib/readline/readline.c
-       - if SYSTEM_CALL_RESTART is not defined, declare c as an integer
-
-                                   4/3
-                                   ---
-bashline.c
-       - put code into command_word_completion_func to skip all but pathname
-         completion checks if the hint given is an absolute pathname
-       - fix strncmp of basename against hint text (??); this always failed
-         unless there was no pathname given
-
-                                   4/7
-                                   ---
-bashline.c
-       - fixed the cases where the simple `last character is a command
-         separator' test fails for distinguishing between program name
-         completion and filename completion: the tokens >&, >|, and <&.
-       - corrected fix of 4/3 to handle command word completion with and
-         without leading paths
-
-                                   4/8
-                                   ---
-lib/readline/readline.c
-       - break the declaration and initialization of a variable with a call
-         to setjmp into a declaration and separate assignment statement (for
-         Cray)
-
-                                  4/10
-                                  ----
-subst.c
-       - A word that uses both "" and '' to do quoting will not be marked
-         as fully quoted by expand_word_internal.  Wrote a
-         fully_quoted_word () predicate function to solve that.
-       - Quoted patterns with globbing characters are sent to the
-         globbing functions because glob_pattern_p doesn't understand
-         shell quoting.  Wrote a new function unquoted_glob_pattern_p,
-         to fix that.
-
-                                  4/13
-                                  ----
-shell.c
-       - make sure default_input is valid and being used for an interactive
-         shell started without line editing
-
-                                  4/15
-                                  ----
-builtins/common.c
-       - redid part of the new get_numeric_argument code to avoid a call to
-         atoi and just do everything ourselves
-
-variables.c
-       - only call set_if_not on PS1 and PS2 in initialize_shell_variables
-         if the shell is not interactive
-       - check the variable returned by looking up PWD to make sure it's
-         non-null before trying to use it in initialize_shell_variables
-
-jobs.c
-       - add a descriptive tag to the call to get_working_directory in
-         job_working_directory
-
-                                  4/17
-                                  ----
-test.c
-       - fixed a typo in group_member: gid -> pgid in assignment statement
-       - in the normal Sun compilation environment, getgroups returns an
-         array of ints, not gid_ts.  getgid and getegid also return ints.
-         stat structures contain a gid_t, though.
-
-         Need to reorder the includes so that stat.h is included first, then
-         uid_t and gid_t are redefined to int, then the rest of the files
-         are included.
-
-         Also need to cast the values from a stat structure to gid_t and
-         uid_t before comparing them to the results of getgid and getuid
-         when implementing -O and -G
-
-                                    4/21
-                                    ----
-lib/readline/readline.c
-       - added code to rl_getc to handle EWOULDBLOCK/EAGAIN and turning off
-         no-delay mode
-
-                                  4/22
-                                  ----
-
-builtins/cd.def
-       - made change_to_directory canonicalize the pathname before attempting
-         to chdir(2) if follow_symbolic_links is set
-
-                                  4/23
-                                  ----
-builtins/type.def
-       - made type handle absolute program names by just echoing the name
-
-builtins/alias.def
-       - made single_quote correctly handle single quotes in aliases
-
-                                  4/28
-                                  ----
-trap.c
-       - made ignore_sig and restore_default_signal check that the value
-         of the original signal handler (in original_signals) was valid
-         before trying to use it.  Bug noticed with `trap "" 1 2 3' as
-         first line in script.
-
-                                  4/29
-                                  ----
-lib/readline/readline.c
-       - made rl_signal_handler only unblock the signal it just received
-         on BSD and Posix systems
-
-                                   5/5
-                                   ---
-builtins/type.def
-       - don't look up the function with find_function until we actually
-         need the info
-
-execute_cmd.c
-       - in do_redirection_internal, don't do unnecessary work.  For instance,
-         >&1 ends up duplicating fd 1 as itself (then adding a close for it,
-         which is a bug)
-
-                                   5/8
-                                   ---
-general.h
-       - don't attempt to declare index and rindex if `index' is defined
-         (with #define)
-
-lib/readline/vi_mode.c
-       - fixed the `c' command so that cl and c<space> are equivalent --
-         formerly the c<space> changed two characters instead of one.
-         The same fix was made to rl_vi_change_to, rl_vi_delete_to, and
-         rl_vi_yank_to
-
-parse.y
-       - bash_add_history did not correctly handle lines that ended with
-         an escaped newline.  It would insert semicolons in the locations
-         where the line breaks occurred.
-
-                                    5/12
-                                    ----
-documentation/bash.1
-       - removed references to pushd_silent
-       - added setion on process substitution
-
-subst.c
-       - fixed a bug in expand_word_internal that caused $xxx"" to expand
-         to nothing when `xxx' was unset.  The code now explicitly turns
-         a partially quoted string that expands to nothing (istring[0] == 0)
-         into a QUOTED_NULL (istring[0] = CTLNUL) before returning the
-         word list.
-
-                                  5/15
-                                  ----
-documentation/bash.1
-       - added a missing .PD in the builtins section after the line
-         summarizing `:'
-       - added text describing the effect of additional arguments to the
-         `.' command
-
-subst.c, general.c, jobs.c, nojobs.c, error.c, getcwd.c
-       - only declare errno as `extern int' if it's not #defined
-
-builtins/{bind,exec,fc,kill,source}.def, lib/readline/{readline,history}.c
-       - ditto with errno
-
-lib/glob/fnmatch.c
-       - ditto with errno
-
-                                    5/17
-                                    ----
-execute_cmd.c
-       - shells compiled with job control active should perform the implicit
-         `</dev/null' redirection for asynchronous commands when it is not
-         active
-
-builtins/mkbuiltins.c
-       - added a `-nodocument' option to inhibit the output of the `xxx_doc'
-         array that is a builtin's long documentation.  Saves between 26
-         and 27K in the bash executable on the RT, 32K on the Sun-4
-
-                                  5/22
-                                  ----
-print_cmd.c
-       - added code to make group commands print better
-
-builtins/common.c
-       - new function remove_hashed_filename to remove a filename from the
-         table of hashed commands
-
-execute_cmd.c
-       - make sure the filename found in the hash table actually exists and
-         is executable.  If not, remove it from the hash table and look it
-         up in $PATH.
-
-general.c
-       - make sure to #include <signal.h> before defining set_signal_handler
-         (on Posix systems)
-
-builtins/command.def
-       - change HPUX_7 to hpux_7
-
-                                  5/27
-                                  ----
-builtins/times.def
-       - added USGr3 to the list of systems that should have HAVE_RESOURCE
-         undefined even though <sys/resource.h> exists
-
-                                  5/28
-                                  ----
-machines.h
-       - added a description for 386/486 boxes running BSDI BSD/386
-
-support/mksysdefs
-       - looks for <limits.h> and writes a define to sysdefs.h if it's
-         found
-
-maxpath.h
-       - rewritten -- now includes limits.h if HAVE_LIMITS_H is defined,
-         then tries to define MAXPATHLEN as PATH_MAX
-
-                                  5/29
-                                  ----
-lib/readline/history.c
-       - added definition for rl_string_extract_single_quoted so the
-         code inhibiting history expansion inside quotes does not depend
-         on the shell
-       - change to use rl_string_extract_single_quoted
-       - removed code that would have inhibited history expansion in
-         double-quoted strings
-
-subst.c
-       - make string_extract_{single,double}_quoted static again
-
-                                   6/1
-                                   ---
-trap.c
-       - systems with _POSIX_VERSION defined need not reset the signal handler
-         inside trap_handler
-       - set_signal should use set_signal_handler() to install the signal
-         handler rather than signal()
-       - initialize_traps needs to use set_signal_handler for SIGINT and
-         SIGQUIT rather than signal()
-       - restore_default_signal needs to use set_signal_handler
-
-parse.y
-       - the readline interface code needs to use set_signal_handler to
-         install the SIGINT handler
-
-lib/readline/readline.c
-       - new function rl_set_sighandler, which is the readline analogue of
-         the bash set_signal_handler
-       - rl_set_signals and rl_clear_signals need to use rl_set_sighandler
-         for SIGINT and SIGALRM
-
-                                   6/2
-                                   ---
-signames.c
-       - fixed a typo (signame_names -> signal_names)
-
-                                   6/3
-                                   ---
-subst.c, general.c
-       - AIX machines need to use sysv_getc rather than getc when reading
-         from the command substitution pipe -- read(2) is not restarted
-         automatically when interrupted by a signal and returns EINTR
-
-                                   6/5
-                                   ---
-documentation/bash.1
-       - removed documentation of M-C-j command in emacs editing mode
-       - added description of M-{ (complete-into-braces)
-       - added description of M-! and C-x ! command completion
-       - added description of M-TAB dynamic history completion
-
-lib/readline/search.c
-       - new file containing code to perform non-incremental history
-         searches.  Functions to call are rl_noninc_forward_search
-         and rl_noninc_backward_search
-
-lib/readline/emacs_keymap.c
-       - bound M-^R to non-incremental-search-backward, M-^S to
-         non-incremental-search-forward
-
-lib/readline/readline.h
-       - extern defintions for rl_noninc_{forward,backward}_search
-
-lib/readline/funmap.c
-       - added names `non-incremental-forward-search-history' and
-         `non-incremental-reverse-search-history'
-
-lib/readline/vi_mode.c
-       - rl_vi_yank_arg should put readline into insertion mode when
-         it is done
-
-lib/readline/vi_keymap.c
-       - ^I should just insert when in vi insertion mode, rather than
-         attempt completion
-
-                                    6/6
-                                    ---
-
-lib/readline/funmap.c
-       - removed the `vi-dosearch' bindable string, since rl_vi_dosearch
-         is really a private function for vi_mode.c.  It does not fit
-         the calling conventions of the bindable readline functions
-         (and I've since removed it)
-
-lib/readline/readline.h
-       - removed the extern definition for rl_vi_dosearch
-
-lib/readline/search.c
-       - added new functions rl_noninc_forward_search_again and
-         rl_noninc_backward_search_again to search for the last saved
-         search string from the current `noninc' history position
-
-lib/readline/vi_mode.c
-       - removed the vi history search code and changed rl_vi_search
-         and rl_vi_search_again to call the non-incremental search code
-         from search.c
-
-                                   6/8
-                                   ---
-
-[changes from bfox version dated 5/10]
-
-bashline.c
-       - changed the conditional clause that decides whether a token is
-         in a command position for command name completion to be a little
-         simpler
-
-bracecomp.c
-       - new version from bfox
-
-config.h
-       - moved BUFFERED_INPUT define here
-
-flags.c
-       - new flag for interactive comments
-       - reformatted find_flag
-
-flags.h
-       - added interactive_comments and an extern declaration of restricted
-
-machines.h
-       - new cray definition from bfox
-
-maxpath.h
-       - don't include limits.h if BUILDING_MAKEFILE is defined
-
-shell.c
-       - moved the check for restricted to immediately after the sourcing
-         or .profile
-
-test.c
-       - now includes shell.h in the initial block of includes
-
-trap.c
-       - new function get_original_signal to take care of the bookkeeping
-         of correctly setting up original_signals[sig]
-
-trap.h
-       - signal_decode -> decode_signal
-
-builtins/exec.def
-       - adjusted the help text to make it clear that only non-interactive
-         shells check the no_exit_on_failed_exec variable and exit if the
-         execve fails
-
-builtins/set.def
-       - added description and code to implement set -o interactive_comments
-
-lib/glob/glob.c
-       - if PAT is empty when glob_vector is called, skip the loop and
-         return one empty filename.  This is how to make echo */ echo
-         only directory names
-
-lib/readline/parens.c
-       - new file from bfox implementing parenthesis matching for readline
-
-lib/readline/emacs_keymap.c
-       - if PAREN_MATCHING is defined, perform `show-matching' on `)', `}',
-         and `]'
-
-lib/readline/history.c
-       - add `$' to the list of separating characters in history_tokenize
-         so that two-character `$' tokens ($$, $!, $() are parsed correctly
-
-lib/readline/readline.c
-       - Make an argument of 1 to rl_rubout and rl_delete work the same
-         as if any other argument had been given by saving the text on
-         the kill ring
-       - in rl_getc, check that the value returned from read == sizeof
-         unsigned char
-
-lib/readline/readline.h
-       - added declaration of rl_event_hook, which is the address of a
-         function to call periodically while readline is awaiting
-         character input
-
-support/cppmagic
-       - new implementation from bfox, now returns a full cpp specification,
-         complete with system dependent flags
-
-support/mksysdefs
-       - added a variable MAKE_ANSI which, if set to true, causes the
-         ansi Makefile to be generated
-       - added code to recognize various types of cray/unicos machines
-
-[end of fixes from bfox]
-
-getcwd.c
-       - integrated changes that allow getcwd to handle paths longer
-         than PATH_MAX by shifting to using a dynamically-allocated
-         buffer
-
-builtins/set.def
-       - make the check for emacs or vi check to make sure the shell is
-         interactive
-
-                                  6/10
-                                  ----
-builtins/common.c
-       - the dollar_arg_stack was never being reallocated in push_dollar_vars
-         because of a stray `if (!dollar_arg_stack)' before the realloc call
-
-                                    6/12
-                                    ----
-cpp-Makefile
-       - added some missing $(RM) $@ in explicit targets for objects (the
-         ones that don't go through the default rules) as well as the
-         targets for the auxiliary programs
-
-subst.c
-       - redid the way bash handles assignment statements on command lines
-         to fix two bugs:
-
-               1) variable assignments are not supposed to affect expansion
-                  performed on the same line, if a command is to be run
-               2) if the words left after removing the variable and environment
-                  assignments don't expand to a command word, the assignments
-                  should affect the shell's environment
-
-         new function: separate_out_assignments
-               removes variable assignments that precede other words and puts
-               them on VARLIST
-               removes environment assignments in the rest of the words, if
-               set -k is in effect, and puts them on ENVLIST
-
-         just before expand_words_internal returns, it checks varlist and
-         envlist (if it is doing expansion) and performs the assignments, if
-         any.  If it's returning a null list, these assignments affect the
-         shell's environment
-
-                                    6/13
-                                    ----
-subst.c
-       - eliminated ENVLIST; VARLIST can serve for both variable and
-         environment assignments
-
-       - sped up expand_words_internal's section for brace expansion by
-         eliminating unnecessary copies -- original word is used unless brace
-         expansion occurred, in which case the original word is linked to
-         a list of words to dispose when brace expansion is completed
-
-       - sped up the word expansions section of expand_words_internal by
-         (possibly) eliminating a call to reverse_list on the results of
-         word expansion and splitting on $IFS, because the most common
-         case will expand to only a single word
-       - `expanded' needs to be freed only if expansion and word splitting
-         took place, no moving the call to dispose_words up after the call
-         to word_list_split means that the common case no longer needs to
-         copy the list
-
-       - sped up globbing by eliminating copying as was done for brace
-         expansion -- keeping a list of `disposable' words and using the
-         original list contents if expansion failed or was not performed
-       - in the case that we're not globbing a word because it has no
-         unquoted globbing characters, eliminated the copy and creation of
-         a brand new list
-       - added a define GLOB_FAILED that handles the cases of using and
-         not using the GNU libc Posix.2 globbing library
-       - moved the code that dequotes the original word so it's executed
-         only if the glob fails
-       - wrapped the code that performs globbing inside an if (new_list)
-         clause
-       - call REVERSE_LIST only if we're actually doing globbing; otherwise
-         dequote the list and go on to performing assignments
-
-                                  6/15
-                                  ----
-lib/glob/glob.c
-       - if the directory portion of a pathname to be globbed contains
-         quoted globbing characters, the quotes (backslashes) need to be
-         removed before the code tries to open and read that directory
-
-                                  6/17
-                                  ----
-execute_cmd.c
-       - index -> indx in extract_colon_unit
-
-nojobs.c
-       - make wait_for_single_pid return the status of the pid it's waited
-         for, instead of throwing it away
-       - added a simple pid-status array to avoid multiple calls to
-         wait_for and calling wait on dead processes.  make_child adds
-         pids to this array, and the status of a pid is updated when
-         it's returned from wait(2) or waitpid(2)
-       - removed the checks for whether or not the pid is valid (using
-         kill(2)) in favor of using the information in the pid_list
-
-parse.y
-       - call cleanup_dead_jobs on non-job-control systems to clean up the
-         pid_list
-
-                                  6/18
-                                  ----
-subst.c
-       - include config.h before trying to include string.h or strings.h
-         so USG is properly defined
-
-                                    6/19
-                                    ----
-support/mksysdefs
-       - look for /usr/include/string.h and define HAVE_STRING_H if
-         found.  This is the file mandated by ANSI C.
-
-cpp-Makefile
-       - look for the HAVE_STRING_H definition from sysdefs.h and define
-         it as part of SYSTEM_FLAGS if found
-       - added the HAVE_STRING_H to LIBRARY_CFLAGS, so readline can
-         decide what to include
-
-general.c, parse.y, subst.c
-       - use the HAVE_STRING_H define in deciding which flavor of the
-         include file to use
-
-builtins/common.c
-       - include strings.h or string.h, depending on the definition of
-         HAVE_STRING_H
-       - added extern declaration of rindex and index at file scope
-       - removed extern declaration of rindex in find_hashed_filename
-
-lib/readline/rldefs.h
-       - removed the messy #ifdef clauses and such from readline.c and
-         moved them to this new file
-       - added a section on string functions (string.h vs. strings.h,
-         whether or not index and rindex need to be defined)
-
-lib/readline/readline.c
-       - removed the messy #ifdef clauses that attempt to parameterize
-         things and define constants on a system-specific basis
-       - removed the definition of the unused variable xoff_state
-
-flags.c
-       - corrected a typo in the comment describing jobs_m_flag
-
-jobs.c
-       - new function, current_working_directory (), which returns the
-         cwd without calling malloc to allocate memory, even indirectly.
-         This can safely be called from a signal handler, like when
-         flush_child calls notify_of_job_status if async notification is on
-       - changed call to job_working_directory in pretty_print_job to call
-         current_working_directory
-       - moved assignment to DIR in notify_of_job_status after the calls
-         to sigprocmask to block SIGCHLD and SIGTTOU
-       - in notify_of_job_status, DIR is now assigned via a call to
-         current_working_directory and hence does not need to be freed
-       - notify_of_job_status now initializes DIR to NULL and calls
-         current_working_directory only if it needs to
-       - changed a call to reverse_list in stop_pipeline to REVERSE_LIST,
-         because most pipelines will be only one process long
-
-builtins/jobs.def
-       - make an illegal jobspec cause a failure instead of returning 0 all
-         the time
-
-builtins/times.def
-       - times now ignores any arguments for sh and ksh compatibility
-
-                                    6/20
-                                    ----
-execute_cmd.c
-       - fixed execute_until_or_while to actually return the status of the
-         last command executed in the body rather than
-         last_command_exit_value, which is the status of the test (which
-         has just failed)
-
-                                    6/23
-                                    ----
-execute_cmd.c
-       - fixed execute_subshell_builtin_or_function to exit with 
-         last_command_exit_value if a builtin longjmps to top_level
-         with value EXITPROG, rather than with EXITPROG (3)
-
-                                  6/25
-                                  ----
-cpp-Makefile
-       - added rldefs.h to READLINE_SOURCE
-
-builtins/type.def
-       - `type' now returns 0 if no arguments are given
-
-jobs.c
-       - make wait_sigint_handler obey interrupt_immediately as well
-         as whether the wait builtin is the current command (XXX - in
-         the future remove the check for wait_builtin entirely and
-         just use interrupt_immediately, because this_shell_builtin
-         could be changed by the code that runs from a SIGCHLD trap)
-       - make the code that runs commands from SIGCHLD traps set
-         interrupt_immediately to 1 each time through the loop
-
-                                  6/26
-                                  ----
-builtins/common.c
-       - declare extern void vfree and use it in the add unwind protect
-         call, to avoid having to declare what type free returns
-
-execute_cmd.c, builtins/common.c
-       - removed all references to builtin_pipe_in_hack, which is no
-         longer used
-
-parse.y
-       - removed all references to current_token_being_expanded and
-         pending_token_being_expanded, since their function is subsumed
-         by expanded_token_stack.  Also no need to save this on the
-         pushed string stack, so that element is removed from the
-         struct.
-         (current_token_being_expanded == expanded_token_stack->saved_token)
-
-builtin/jobs.def
-       - removed immediate return if job_control == 0.  This makes it work
-         in command substitution subshells
-
-                                    6/29
-                                    ----
-expr.c
-       - added unary `+'
-       - added bitwise not (`~') at same precedence as logical not (`!')
-       - added left and right shifts (<<, >>) between +,- and the comparisons
-       - added bitwise and, or, xor (&, |, ^)
-       - added logical and, or (&&, ||)
-       - changed exp1 to allow multiple consecutive ! and ~ (in the same way
-         that exp0 allows multiple consecutive leading - and +
-
-lib/readline/history.c
-       - close memory leak -- in history_do_write, free the output filename
-         before returning
-       - close same memory leak in read_history_range
-
-builtins/enable.def
-       - make `enable' with no arguments print only the enabled builtins, and
-         `enable -n' with no other arguments print only the disabled builtins
-
-builtins/setattr.def
-       - make readonly and export return failure when given -f with an
-         argument that is not a function name
-       - added -n to the documentation for readonly
-
-execute_cmd.c
-       - cleaned up the code that checks for #! and binary files some: made
-         sure the file descriptor was always closed, made sure sample_len
-         was > 0 before checking the first two characters, collapsed two
-         if statements into one
-
-jobs.c
-       - changed call to job_working_directory in start_job to call to
-         current_working_directory
-       - changed input_tty to a macro
-       - changed the call to QUIT in wait_for after the wait_loop
-         label to depend on whether job_control is enabled; the test
-         against the terminal process group is superfluous now that
-         we use wait_sigint_handler
-
-builtins/fg_bg.def
-       - Posix.2a specifies that fg and bg should return failure if
-         run when job control is disabled
-
-                                   7/2
-                                   ---
-variables.c
-       - when an existing variable is given a new value by bind_variable,
-         turn off the invisible attribute
-
-shell.c
-       - dup default_buffered_input using fcntl(fd, F_DUPFD, 10) to put
-         it above the shell's user-manipulatable range
-
-execute_cmd.c
-       - in add_undo_redirect, make the redirection added a
-         r_duplicating_input so buffered streams get duplicated as
-         necessary.  It makes no difference for the non-buffered-stream
-         code
-
-                                   7/3
-                                   ---
-subst.c
-       - command_substitute needs to set interactive = 0 and leave
-         interactive_shell reflecting the interactive state of the
-         parent shell
-
-signames.c
-       - prevent SIGGRANT and SIGRETRACT from overriding other already-defined
-         signal names, since, on the RT at least, they override SIGUSR2
-         and SIGEMT, respectively, which are much more common
-
-jobs.c
-       - in notify_of_job_status, if job control is not enabled, do not
-         print the status messages.  Mark dead jobs as notified so they
-         get cleaned up properly
-
-braces.c
-       - when checking for `,' if a closing brace was not found, make
-         sure the , is unquoted
-       - make sure we found an unquoted , before attempting to perform
-         the expansion -- since brace_gobbler purports to understand
-         quoting with \, the rest of the code should support it
-       - disabled the code that caused a failure longjmp if a matching
-         closing brace was not found -- the pattern should be left
-         unchanged, as with any other failed expansion
-
-trap.c
-       - new function maybe_set_sigchld_trap, which sets the trap on
-         SIGCHLD if and only if the signal is not currently trapped
-
-jobs.c
-       - call maybe_set_sigchld_trap after running SIGCHLD trap commands
-         on the death of a child to restore the trap handler, so if the
-         trap handler calls `trap xxx CHLD' it will not be overwritten
-
-lib/glob/fnmatch.c
-       - fnmatch must treat [ without a matching ] as a `regular' character
-         to be matched against the string so that the Posix.2 rules for
-         case command matching are not broken
-
-shell.c
-       - change the call to fcntl that sets default_buffered_input to one
-         to dup2(fd, getdtablesize() - 1) to hopefully get the highest
-         file descriptor
-
-                                   7/6
-                                   ---
-parse.y
-       - if read_token reads a character that matches the current delimiter
-         character, it should make sure the character is `"' before
-         checking delimited_paren_level and blindly accepting it.  There
-         are other values for `delimiter' besides `"'.
-
-shell.c
-       - turn on no_line_editing for non-interactive shells
-
-builtins/set.def
-       - removed test against interactive_shell when deciding whether or
-         not emacs or vi is `on' [backed out of fix from 6/8]
-
-                                   7/8
-                                   ---
-lib/readline/history.c
-       - changed get_history_event so that shell metacharacters (;&()|<>)
-         can terminate an event spec
-
-subst.c
-       - the TERM and TERMCAP variables need special handling only if
-         READLINE is defined
-       - ditto for history_completion_file
-
-machines.h
-       - new description for HPs running OSF/1
-
-                                   7/9
-                                   ---
-lib/readline/readline.c
-       - new variable `eight-bit-input'.  If this is on, readline disables
-         ISTRIP for the Posix or sysv tty drivers
-
-execute_cmd.c, variables.c
-       - new variable `subshell_environment' set in children right after
-         forking and reset in shell_reinitialize.  It means to look in
-         the temporary environment first when looking up variables and
-         functions
-
-                                  7/13
-                                  ----
-config.h, parse.y
-       - changed CSH_HISTORY_EXPANSION to BANG_HISTORY_EXPANSION
-
-shell.c
-       - made all the history-related code #ifdef HISTORY
-       - made maybe_save_shell_history be called only if the shell is
-         interactive and we're remembering history lines
-
-parse.y, flags.c, flags.h, subst.c, variables.c
-       - made all the history-related code #ifdef HISTORY
-       - assignment_acceptable and command_token_position no longer are
-         dependent on ALIAS being defined, since they are used to return
-         ASSIGNMENT_WORD tokens
-
-builtins/bind.def
-       - removed inclusion of readline/history.h
-
-builtins/exec.def, builtins/common.c
-       - made all the history-related code #ifdef HISTORY
-
-builtins/fc.def, builtins/history.def
-       - added a $DEPENDS_ON HISTORY line
-
-builtins/mkbuitins.c
-       - line_error should not try to print error_directory without checking
-         to see whether it is NULL
-
-builtins/Makefile
-       - add $(DIRECTDEFINE) to the command line that builds builtins.c
-
-lib/glob/tilde.c
-       - use getpwuid(getuid()) to look up the home directory of the user
-         executing the shell for tilde expansion ~/foo if $HOME unset
-
-cpp-Makefile, subst.c, config.h
-       - Fixes to make brace expansion a configuration option, on by default
-
-                                  7/14
-                                  ----
-builtins/set.def
-       - fixed unset so an attempt to unset a readonly variable or function
-         is an error (as Posix.2 specifies)
-
-general.h
-       - removed extern declarations of index, rindex
-       - added extern declarations for strchr, strrchr
-       - changed `member' to use strchr
-
-subst.c, general.c, bashline.c, execute_cmd.c, parse.y, test.c
-       - changed calls to index to calls to strchr, calls to rindex to calls
-         to strrchr
-
-builtins/echo.def, builtins/fc.def, builtins/common.c
-       - changed calls to index to calls to strchr, calls to rindex to calls
-         to strrchr
-
-lib/glob/glob.c
-       - changed calls to index to calls to strchr, calls to rindex to calls
-         to strrchr
-
-lib/readline/history.c, lib/readline/readline.c, lib/readline/vi_mode.c
-       - changed calls to index to calls to strchr, calls to rindex to calls
-         to strrchr
-
-lib/readline/vi_mode.c
-       - changed calls to strchr to inline checks, since we're only checking
-         for two characters
-
-                                  7/15
-                                  ----
-variables.c
-       - If PPID is imported, turn off export status
-
-                                  7/17
-                                  ----
-general.h
-       - for USG and Posix systems, define NO_READ_RESTART_ON_SIGNAL
-
-
-general.c
-       - sysv_getc --> getc_with_restart
-       - compile in getc_with_restart if NO_READ_RESTART_ON_SIGNAL is
-         defined
-
-subst.c
-       - call getc_with_restart in command_substitute if on a system
-         with NO_READ_RESTART_ON_SIGNAL defined
-
-parse.y
-       - call getc_with_restart in yy_stream_get if NO_READ_RESTART_ON_SIGNAL
-         is defined
-
-input.c
-       - change b_fill_buffer to restart reads on EINTR
-
-general.h
-       - wrap the declarations of strchr and strrchr inside an #ifdef strchr
-         because some ANSI C compilers (e.g., RS/6000) make them defines in
-         /usr/include/string.h
-
-                                  7/20
-                                  ----
-lib/readline/readline.c
-       - wrap the declarations of strchr and strrchr inside an #ifdef strchr
-         because some ANSI C compilers (e.g., RS/6000) make them defines in
-         /usr/include/string.h
-
-                                  7/21
-                                  ----
-lib/readline/parens.c
-       - wrap all parameters and variables associated with the select call
-         into #ifdef FD_SET
-
-execute_cmd.c
-       - added tilde expansion to the pattern list members of case statement
-         clauses, as specified by Posix.2 d11.3
-
-lib/readline/readline.c
-       - when comparing members of the c_cc array directly against
-         _POSIX_VDISABLE, cast both sides to unsigned char
-
-support/getcppsyms.c
-       - recognized __svr4__
-
-machines.h
-       - for Sun machines, if __svr4__ is defined and USGr4 is not, define
-         USGr4
-
-shell.c
-       - some machines need sys/types.h included before stdio.h (mostly for
-         size_t)
-
-lib/malloc/malloc.c
-       - add SunOS5 to the list of systems that do no redefine valloc (?)
-
-                                  7/22
-                                  ----
-make_cmd.c
-       - save and restore the value of line_number around reading a
-         here-document
-
-lib/glob/glob.c
-       - change to use HAVE_STRING_H to decide which version of the
-         header files to include
-
-                                    7/25
-                                    ----
-execute_cmd.c
-       - fixed execute_command_internal so that failure to perform
-         redirections attached to a shell compound command like if
-         or while causes the command to return failure right away
-       - eliminated use of redir_result in execute_builtin_or_function
-       - changed execute_while_or_until so that body_status is
-         initialized to EXECUTION_SUCCESS, and then directly returned
-         without a check for commands_executed, so that the Posix.2
-         behavior of returning success when no body commands are
-         executed is preserved
-
-                                  7/27
-                                  ----
-jobs.c
-       - make sure that trap_list[SIGCHLD] is not set to IGNORE_SIG
-         before trying to run commands when a SIGCHLD is caught
-
-test.c
-       - define and use UID_T and GID_t, which are equivalent to uid_t
-         and gid_t on all systems but SunOS 4.1.?, because SunOS makes
-         `int' the return value of all the uid and gid functions (except
-         stat!)
-
-                                  7/28
-                                  ----
-shell.c
-       - call end_job_control in termination_unwind_protect
-
-variables.c
-       - if PWD is imported from the environment and it is wrong (i.e.,
-         not the same as the current directory), rebind it to the current
-         directory (as obtained by get_working_directory)
-
-                                  7/29
-                                  ----
-lib/readline/history.c
-       - do not history expand ! when immediately preceded by [, assuming
-         it's the globbing pattern negation character
-
-execute_cmd.c
-       - plug some memory leaks -- redirectee_word needs to be freed
-         before returning from do_redirection_internal
-       - changed the noclobber code to open the file with O_EXCL after
-         verifying that it's not there with stat to shorted possible
-         race conditions (this doesn't help over NFS)
-
-                                  7/30
-                                  ----
-lib/readline/history.c
-       - treat a negative arg to stifle_history as 0
-
-lib/readline/readline.c
-       - #undef PC before declaring it as a variable because some systems
-         (Solaris2) define it in system header files
-       - changed type of insert_some_chars, update_line, and delete_chars
-         to void
-       - added a check when doing filename completion in
-         filname_completion_function to see if the first characters of the
-         filename and directory entry match before calling strncmp
-         (inline expansion of STREQN)
-
-                                  7/31
-                                  ----
-lib/readline/vi_keymap.c
-       - Make arrow keys work for history in vi command mode by binding
-         `o' and `[' in vi_escape keymap to rl_arrow_keys
-
-                                   8/6
-                                   ---
-subst.c
-       - broke the code that quotes strings for the globbing functions
-         into a separate function: quote_string_for_globbing (), so
-         there are not two copies of it
-       
-execute_cmd.c
-       - rewrote execute_case_command so that quote_string_for_globbing
-         is called for the patterns in a pattern list and reordered some
-         other code for clarity
-       - execute_case_command now turns quoted null strings into empty
-         strings because quote_string_for_globbing does not do it
-
-                                   8/7
-                                   ---
-lib/readline/readline.c
-       - added generic code to init_terminal_io to fetch the termcap
-         codes for the arrow keys (ku, kd, kl, kr) and bind the right
-         functions to them
-
-lib/readline/vi_keymap.c, lib/readline/emacs_keymap.c
-       - removed bindings to `rl_arrow_keys' from all keymaps
-
-                                  8/13
-                                  ----
-subst.c
-       - command_substitute: only close fildes[1] if it's > 2
-
-                                  8/26
-                                  ----
-lib/readline/readline.c
-       - rewrote get_y_or_n to get rid of label and goto
-       - added code to the completion listing function that makes it
-         skip padding the line out with blanks after writing what will
-         be the last filename on the line
-
-machines.h
-       - added -DHAVE_SETDTABLESIZE to SYSDEP_CFLAGS for Sequents
-         running Dynix/ptx
-
-                                  8/28
-                                  ----
-machines.h
-       - added a machine description for the BBN Butterfly from
-         Kaveh Ghazi
-
-variables.c
-       - HPOSF1 machines cannot redefine getenv()
-
-support/getcppsyms.c
-       - recognize __hp_osf
-
-parse.y
-       - allow reserved word recognition after done, fi, and esac
-         Posix.2 section 3.4 seems to allow this
-
-lib/readline/readline.c
-       - include <sys/ioctl.h> on OSF/1 machines for TIOCGWINSZ
-
-subst.c
-       - in command_substitute, when checking to see that we're not
-         overflowing `istring', allow for the insertion of two characters
-         in the check to account for possible quoting
-
-                                   9/3
-                                   ---
-builtins/bashgetopt.c
-       - force reset_internal_getopt to set loptend to NULL
-       - force internal_getopt to set loptend to NULL when the list it
-         gets is NULL, and when it detects that it's been called with
-         a different word list
-
-                                   9/8
-                                   ---
-variables.c
-       - make adjust_shell_level clamp the value of $SHLVL at 1
-
-[Fixes from bfox 1.13]
-
-bashline.c
-       - remove `%' from list of readline special prefixes
-
-config.h
-       - BANG_HISTORY_EXPANSION -> BANG_HISTORY
-
-cpp-Makefile
-       - add HAVE_STRCHR
-       - changes to macros that build libraries
-       - reorganized library declarations and support
-
-execute_cmd.c
-       - indx -> p_index in extract_colon_unit
-
-general.c
-       - provide definitions of strchr, strrchr for systems that do not
-         have them
-
-machines.h
-       - define `Solaris' for Suns running Solaris 2.x
-       - turn all the definitions of M_OS into strings
-
-parse.y
-       - replace delimiter and old_delimiter with a stack of delimiters
-         encountered while parsing the current token
-
-subst.c
-       - removed all traces of EIGHT_BIT
-
-variables.c
-       - new function dispose_temporary_vars, for both dispose_used_env_vars
-         and dispose_function_env
-
-lib/readline/readline.c
-       - `eight-bit-input' -> `meta-flag'
-
-lib/tilde
-       - new directory for the tilde expansion library code
-
-[end of bfox changes]
-
-cpp-Makefile
-       - pass $(RM) down to makes in libraries
-
-                                  9/10
-                                  ----
-parse.y
-       - remove the bfox change that set CMD_FORCE_SUBSHELL for async
-         commands
-
-                                  9/14
-                                  ----
-builtins/bind.def
-       - surround the code with #ifdef READLINE
-
-builtins/fg_bg.def
-       - surround the body of the code with #ifdef JOB_CONTROL
-
-builtins/getopts.def
-       - surround the body of the code with #ifdef GETOPTS_BUILTIN
-
-builtins/alias.def
-       - surround the body of the code with #ifdef ALIAS
-
-                                  9/15
-                                  ----
-lib/readline/emacs_keymap.c
-       - bind rl_noninc_reverse_search to M-P and rl_noninc_forward_search
-         to M-N, respectively
-
-lib/readline/readline.c
-       - made name_key_alist struct static
-       - added new functions to manipulate keymaps:
-               rl_get_keymap_by_name()
-               rl_get_keymap()
-               rl_set_keymap()
-
-lib/readline/keymaps.h
-       - added declarations for the new keymap functions
-
-builtins/bind.def
-       - added -m map option to allow bind commands to specify the keymap
-         to be used when binding key sequences to readline commands
-
-                                  9/16
-                                  ----
-builtins/alias.def
-       - in single_quote, allocate a new string three times as big as the
-         old to handle the possible quoting characters
-
-bashline.c
-       - set last_fignore to null after freeing it in setup_ignore_patterns
-
-                                  9/17
-                                  ----
-parse.y
-       - added code to handle the functionality of `ignoreboth' as a
-         value for history_control (ignore both lines beginning with
-         spaces and duplicates of the last history entry)
-       - don't use history_control for the second and subsequent lines
-         of a multi-line command when command_oriented_history is in
-         effect
-
-                                  9/18
-                                  ----
-bashline.c
-       - fix attempt_shell_completion to call command_word_completion_function
-         even if the supplied text begins with `/'
-       - fix command_word_completion_function to make sure that absolute
-         program names passed are executable before returning them as
-         possible matches
-
-                                  9/20
-                                  ----
-parse.y
-       - If we read a blank line (shell_input_line[0] == 0) and we have
-         reached EOF (shell_input_line_terminator == EOF) then don't echo
-         the line, even if -v has been turned on
-
-                                  9/23
-                                  ----
-lib/malloc/malloc.c
-       - changed to use USG rather than SYSV
-       - changed BSD42 to BSD4_2 like emacs malloc.c
-       - removed conditional compilation code dealing with VMS
-       - include getpagesize.h only if BSD4_2 is not defined
-       - changed conditionally compiled code dealing with BSD, since
-         BSD is not defined by bash and malloc.c does not include
-         sys/param.h, which defines BSD on 4.x BSD systems
-
-lib/malloc/getpagesize.h
-       - new implementation, inspired by gdb 4.6
-               uses _SC_PAGESIZE, if present
-               defaults to 4096
-
-lib/readline/vi_keymap.c
-       - when in insert mode, Posix.2a says that \ is quoted-insert
-       - remove the binding to vi_escape_keymap; Posix.2a says that
-         ESC in movement mode does nothing (vi description)
-
-                                  9/24
-                                  ----
-shell.c
-       - shell should send SIGHUP to all it's jobs when it receives
-         SIGHUP only if it is an interactive login shell
-
-execute_cmd.c
-       - systems running the Andrew File System don't use the Unix file
-         mode bits to decide whether or not a file is executable (they're
-         unused, since AFS as ACLs), so executable_file needs to call
-         access (file, X_OK) if running on AFS
-
-                                  9/25
-                                  ----
-jobs.c
-       - make sure a non-interactive shell initializes original_pgrp to
-         NO_PID, so it does not attempt to give the terminal back to that
-         pgrp when it exits or calls the `exec' builtin
-
-                                  10/3
-                                  ----
-machines.h
-       - add -DHAVE_RESOURCE to the NeXT machine description as SYSDEP_CFLAGS
-       - add -DHAVE_GETDTABLSIZE and -DHAVE_SETDTABLESIZE to Dynix/ptx
-         description
-
-shell.c
-       - make a non-interactive script shell call dup2 on the fd it has
-         open to the script file to move the descriptor to one that hopefully
-         user programs will not attempt to use
-
-general.c
-       - make the definition of getdtablesize() depend on HAVE_GETDTABLESIZE
-         not being defined.  Auto-define that for non-USG systems (or HPUX).
-         This allows a SYSDEP_CFLAGS entry to override it
-
-builtins/ulimit.def
-       - new function canraise(cmd, curlim, newlim) to call on systems
-         without HAVE_RESOURCE to decide whether or not the limit can be
-         raised.  Maybe we should remove the test altogether and let the
-         system call fail instead
-
-                                  10/8
-                                  ----
-execute_cmd.c
-       - If a command is not found, make the exit status 127 like Posix.2
-         says
-
-                                  10/14
-                                  -----
-print_cmd.c
-       - changed cprintf(s) to cnprintf(args_length, s) and made cnprintf
-         malloc the buffer it uses for vsprintf to avoid overrun of the
-         5000-character temp buffer used previously.  args_length is the
-         expected total length of all the arguments
-
-                                  10/15
-                                  -----
-jobs.c
-       - set last_command_exit_value before calling a trap handler for
-         SIGINT: new function process_exit_status(), changes to use it
-
-                                  10/18
-                                  -----
-print_cmd.c
-       - removed `cnprintf' changes
-       - re-implemented cprintf as a miniature vsprintf interpreting %s,
-         %d, and %c and using a dynamically-allocated buffer
-
-support/mksysdefs
-       - look for /usr/include/varargs.h and define HAVE_VARARGS_H if
-         found
-
-cpp-Makefile
-       - pass HAVE_VARARGS_H down to the makes in the various libraries
-
-                                  10/26
-                                  -----
-lib/glob/glob.c
-       - free `result' before using temp_results to return the value
-         of glob_dir_to_array -- plugs a small memory leak
-
-                                  11/2
-                                  ----
-[Fixes from bfox version dated 10/18]
-
-bashline.c
-       - separated definitions of BRACE_COMPLETION and the extern declaration
-         of the brace completion functions
-
-config.h
-       - make PROCESS_SUBSTITUTION depend on the value of MKFIFO_MISSING
-
-cpp-Makefile
-       - add posixstat.h, tilde.[ch], xmalloc.c to the readline library
-         sources (also the corresponding object files)
-       - make the definition of HAVE_TILDE_SOURCE depend on the definition
-         of HAVE_READLINE_SOURCE
-
-lib/posixheaders
-       - new directory, for posix support functions and header files
-       - various cleanups to the library support rules
-
-execute_cmd.c
-       - make the practice of checking hashed filenames for executability
-         dependent on $POSIXLY_CORRECT
-
-general.c
-       - The `hppa' running hpux-8 does not have `getdtablesize'
-
-general.h
-       - make the extern declaration of strchr and strrchr go away if
-         __STDC__ is defined
-jobs.h
-       - test for and define all of the W* macros individually
-
-machines.h
-       - completely new alliant description from bfox
-       - add -DMKFIFO_MISSING to NeXT SYSDEP_CFLAGS
-       - add description for Siemens MX500 running `sinix'
-
-builtins/common.c
-       - move code that depends on BANG_HISTORY being defined inside #ifdef
-         HISTORY blocks, since you can't have BANG_HISTORY without HISTORY
-
-builtins/echo.def
-       - make -E work all the time, not just on sys5 systems
-
-builtins/enable.def
-       - add -all option (with synonym of -a)
-       - change `DISABLED' to 2 and make argument to list_some_builtins a
-         bitmask
-
-builtins/kill.def
-       - it is an error if `signum' == NSIG
-
-documentation/bash.1
-       - added -E flag to `echo'
-       - added description of -all to enable
-
-lib/readline/tilde.c, lib/readline/xmalloc.c
-       - links to these files for standalone readline lib
-
-lib/readline/{funmap.c,history.c,keymaps.c,readline.c}
-       - make xmalloc and xrealloc static again and dependent on the
-         definition of STATIC_MALLOC
-
-lib/readline/readline.c
-       - include <sys/file.h> only if NO_SYS_FILE is not defined
-       - add support for a `stat' char after filenames when listing completion
-         alternatives if VISIBLE_STATS is defined
-       - add support for _GO32_ definition (PC)
-       - add LibraryVersion internal variable
-       - initialize rl_instream and rl_outstream to NULL, because all of a
-         sudden stdin and stdout may no longer be constants
-       - make readline_default_bindings `static void'
-       - add support for quoting a portion of the input line to make it
-         immune from completion
-
-support/getcppsyms.c
-       - recognize `alliant'
-
-support/mksysdefs
-       - presence of /bin/fxc.info indicates that the machine is an alliant
-
-support/{FAQ,PORTING,mklinks,fixdist}
-       - new files
-
-[end of changes from bfox]
-
-machines.h
-       - added support for HP-UX 9.0 (hpux_9)
-
-                                  11/12
-                                  -----
-machines.h
-       - added -lsocket to the REQUIRED_LIBRARIES define for ICL RS6000
-       - removed the `#undef HAVE_WAIT_H' from the isc386 description
-
-lib/readline/rltty.c
-       - split off almost all tty-related code from readline.c to this file
-
-                                  11/13
-                                  -----
-lib/readline/rltty.c
-       - changed the way the bsd tty code works to use a `struct bsdtty'
-         that encapsulates all of the bsd tty state into a single structure
-         that can be passed around by reference
-       - changed the bsd tty setup and teardown code to be more like the
-         ce version of things
-lib/readline/rldefs.h
-       - added code to define HAVE_USG_SIGHOLD for svr3 machines.  The
-         prepping and deprepping code uses them to block SIGINT while
-         getting and setting the tty attributes
-
-                                  11/14
-                                  -----
-lib/readline/rltty.c
-       - encapsulated the system-specific code for setting up the terminal
-         into a function: `prepare_terminal_settings'.  This means that the
-         code for rl_prep_terminal and rl_deprep_terminal is basically
-         identical between tty driver versions
-       - changed the BSD version of rltty_set_default_bindings to use a
-         struct bsdtty and get_tty_settings
-       - rl_prep_terminal and rl_deprep terminal are now non tty-driver
-         specific -- there is only one version of each function.  The
-         tty-driver specific code is now in {set,get}_tty_settings and
-         prepare_terminal_settings
-
-                                  11/24
-                                  -----
-
-general.c
-       - make the function definitions for bcopy and bzero depend on a
-         HAVE_BCOPY define
-
-machines.h
-       - define HAVE_BCOPY for RS/6000s, RTs running AIX, and Linux
-       - new description for Linux
-
-shell.c, variables.c
-       - don't declare getpwuid for Linux systems
-
-support/getcppsyms.c
-       - recognize `linux' and `__linux__'
-
-builtins/psize.c
-       - don't redefine memset() for USG machines
-
-general.c
-       - add extern declaration of getdtablesize() to dup2() replacement
-       - don't compile in bcopy and bzero on Linux machines
-
-test.c
-       - don't declare getgid, getegid, or geteuid on Linux
-
-lib/readline/rldefs.h
-       - don't try to include <sys/stream.h> on Linux machines
-
-lib/readline/readline.c
-       - only call rl_parse_and_bind on non-empty lines when reading
-         ~/.inputrc
-       - allow backslash to quote characters in the key sequence to be
-         bound, which allows you to bind C-x \ for example
-       - allow delimiter characters in the body of a macro, quoted with
-         a backslash
-       - changed rl_function_dumper so that it outputs backslash-quoted
-         " and \ when called by bind -d
-
-lib/readline/funmap.c
-       - fixed a typo in the entry for `vi-replace'
-
-subst.c
-       - make sure the $(( xxx )) case sets this_command_name to NULL so
-         there are no confusing garbled error messages
-       - fix a memory leak in $[ xxx ] code (free temp)
-       - make $(( xxx )) case do the same variable expansion that the
-         $[ xxx ] case does
-
-                                  11/25
-                                  -----
-parse.y
-       - removed CMD_FORCE_SUBSHELL assignments
-
-command.h
-       - add a new flag for commands: CMD_NO_FORK
-
-shell.c
-       - added a function run_one_command for -c shells that just sets up
-         the top_level stuff for longjmp and calls parse_and_exec.  This
-         is controlled by the definition of ONESHOT
-
-execute_cmd.c
-       - execute_disk_command takes an extra argument: nofork.  If non-zero,
-         this tells it to not fork for a command without pipes in or out
-       - set NO_FORK for a simple command run in a subshell with
-         want_subshell ( `( xxx )' )
-
-builtins/common.c
-       - if the from_file argument to parse_and_execute is "-c", then
-         assume this is a one-shot -c command and set NO_FORK for simple
-         commands.  This is controlled by the definition of ONESHOT
-
-                                  12/1
-                                  ----
-support/getcppsyms.c
-       - add defines for bsdi and __386BSD__
-
-machines.h
-       - add a section for 386bsd
-
-                                  12/2
-                                  ----
-input.c
-       - added a new function check_bash_input (fd) which checks whether
-         or not file descriptor fd is the buffered fd which bash is using
-         to read a script, and, if so, swaps the buffered fd to a new
-         file descriptor and reinits bash_input
-       - input buffering now solves these problems:
-               parent-child synchronization
-               using the script fd in a user redirection
-               auto-restart of interrupted reads on all systems
-               speed
-
-execute_cmd.c
-       - call check_bash_input from do_redirection_internal before a call
-         to dup2 and a call to duplicate_buffered_fd
-
-                                  12/3
-                                  ----
-builtins/getopt.c
-       - only redefine `const' if it is not already #defined
-
-lib/readline/rltty.c
-       - make sure HANDLE_SIGNALS is defined here as it is in readline.c
-
-                                  12/7
-                                  ----
-lib/malloc/malloc.c
-       - change the conditional around get_lim_data to be HAVE_RESOURCE
-         (ulimit if not defined, getrlimit if it is)
-       - removed the 4.1BSD version of get_lim_data
-       - conditionalize the inclusion of sys/resource.h on the definition
-         of HAVE_RESOURCE
-
-                                  12/11
-                                  -----
-lib/readline/readline.c
-       - changed the name of strpbrk to rl_strpbrk to avoid any conflicts
-         with OS include files and libraries
-
-                                  12/15
-                                  -----
-
-bashline.c
-       - changed initialize_readline to type void
-
-execute_cmd.c
-       - execute_for_command called expand_words with an extra argument
-
-jobs.c
-       - changed stop_pipeline to use xrealloc instead of realloc
-
-lib/readline/readline.c
-       - changed rl_complete_internal to call xmalloc instead of malloc
-
-variables.c
-       - dispose_used_env_vars, non_unsettable declared void
-
-builtins/common.c
-       - include <sys/stat.h> because we cast things to struct stat *
-
-builtins/exit.def
-       - change exit_or_logout to be declared static
-
-builtins/psize.c
-       - removed call to memset and therefore the need to #ifdef it's
-         definition
-
-builtins/bind.def, builtins/ulimit.def
-       - add extern declaration for strerror()
-
-builtins/exec.def
-       - add extern declaration for strerror()
-       - add extern declaration for full_pathname() and remove casts to
-         char *
-       - add extern declaration for make_word_array() and remove casts to
-         char **
-
-builtins/fc.def, copy_cmd.c, shell.c, parse.y
-       - add extern declaration for reverse_list()
-
-builtins/read.def
-       - change free to vfree so systems don't complain about the extern
-         declaration (type clashes, etc.)
-
-lib/tilde/tilde.c
-       - include string.h or strings.h as appropriate to get the correct
-         declaration of strcpy before the savestring macro uses it
-
-parse.y
-       - add extern declaration for sub_append_string and remove casts to
-         char *
-       - add extern declaration for add_string_to_list and remove casts to
-         WORD_LIST *
-
-                                  12/16
-                                  -----
-lib/malloc/malloc.c
-       - move the check for RLIMIT_DATA after the inclusion of
-         <sys/resource.h> (duh!)
-
-bashline.c
-       - added extern declaration for get_working_directory
-
-jobs.c
-       - added extern declaration for polite_directory_format
-
-execute_cmd.c
-       - added extern declaration for copy_redirects
-
-subst.c
-       - added extern declaration for reverse_list
-
-machines.h
-       - new entry for KSR1 running KSROS (OSF/1)
-
-support/getcppsyms.c
-       - recognize `ksr1'
-
-general.h
-       - make sure that strcpy is declared before the definition of
-         savestring
-
-alias.c, bashline.c, bracecomp.c, braces.c, copy_cmd.c, execute_cmd.c,
-expr.c, general.c, hash.c, jobs.c, mailcheck.c, make_cmd.c, print_cmd.c,
-trap.c, variables.c, parse.y
-        - make sure that string.h or strings.h is included before general.h
-          (which is included by shell.h)
-        
-builtins/mkbuiltins.c
-        - add extern declaration of strcpy if __STDC__ and strcpy not defined
-        - include <string.h> or <strings.h> as needed
-
-builtins/cd.def, builtins/shift.def, builtins/source.def, builtins/test.def,
-builtins/command.def, builtins/declare.def, builtins/fc.def,
-builtins/getopts.def, builtins/hash.def
-       - include <string.h> or <strings.h> before definition of savestring
-
-lib/tilde/tilde.c, lib/readline/chardefs.h
-       - include <string.h> or <strings.h> before definition of savestring
-
-lib/readline/readline.c
-       - made glean_key_from_name cast NAME to unsigned char * before
-         dereferencing it to better handle 8-bit character sets
-
-                                  12/17
-                                  -----
-subst.c
-       - made command_substitute set up top_level with setjmp so that shells
-         running command substitution won't longjmp all the way back to
-         main() if they're interrupted and call throw_to_top_level
-
-                                  12/18
-                                  -----
-lib/readline/readline.c
-       - split the code that handles setting the screen size off into a new
-         function: set_screen_size
-       - changed init_terminal_io to call set_screen_size
-       - changed rl_handle_sigwinch to call set_screen_size instead of
-         totally reinitializing the world on each SIGWINCH
-       - added a new function cr() that simply puts the cursor at physical
-         column 0
-       - changed rl_handle_sigwinch to call cr() and
-         rl_forced_update_display() after resetting its idea of the screen
-         size
-
-                                  12/20
-                                  -----
-lib/readline/history.c
-       - changed the way history_expand treats `\' to make it a general
-         quoting character like the shell treats it so that allows single
-         quotes to be quoted
-
-                                  12/23
-                                  -----
-machines.h
-       - changed M_OS define in BSDI description to BSD386, since cpp
-         doesn't like BSD/386
-
-                                  12/28
-                                  -----
-execute_cmd.c
-       - changed execute_case_command so that expand_word_no_split is called
-         on the `word', as Posix.2 specifies
-
-                                   1/5
-                                   ---
-machines.h
-       - new machine description for Dec Alpha running Dec OSF/1
-
-support/getcppsyms.c
-       - recognize alpha, __alpha, osf, and __osf__
-
-                                   1/7
-                                   ---
-lib/readline/readline.c
-       - removed definition of HANDLE_SIGNALS
-       - changed rl_signal_handler so that systems with HAVE_POSIX_SIGNALS
-         defined will not set the SIGINT handler to SIG_IGN
-       - include <sys/ioctl.h> for _386BSD and BSD386 for TIOCGWINSZ
-
-lib/readline/rldefs.h
-       - added definition of HANDLE_SIGNALS
-
-lib/readline/rltty.c
-       - added GETATTR and SETATTR macros for termios/termio systems for
-         use by get_tty_settings and set_tty_settings
-
-                                   1/9
-                                   ---
-shell.c
-       - new variable: startup_state.  Set to 0 for scripts, 1 for
-         interactive shells, and 2 for -c command shells.  Superset of
-         the functionality provided by the `interactive_shell' variable
-
-builtins/common.c
-       - changed parse_and_execute to use startup_state to detect that
-         it's being called as a result of -c command, rather than the
-         ad-hoc method previously employed
-
-                                  1/11
-                                  ----
-support/getcppsyms.c
-       - recognize `m88k'
-
-machines.h
-       - new description for Motorola M88K Delta running SVR4
-
-support/mksysdefs
-       - moved the defaulting of `SYSDEF' to `cadmus' until just before
-         the definition is written out
-
-shell.c
-       - changed ambiguous assignment to `login_shell' by introducing a
-         dummy variable (~line 400: login_shell = -++login_shell)
-
-lib/malloc/malloc.c
-       - moved the code that decides whether or not to define USG or
-         BSD4_2 inside checks for USG and USGr4, since USGr4 passes
-         the tests for the various signals
-
-alias.c
-       - changed a call to index() to strchr()
-
-                                  1/12
-                                  ----
-lib/readline/readline.c
-       - moved inclusion of posixstat.h before inclusion of rldefs.h
-         (rldefs.h requires that stat.h be included before it)
-       - don't test whether or not a file is a symlink or a socket
-         in stat_char unless S_ISLNK and S_ISSOCK are defined,
-         respectively
-
-                                  1/13
-                                  ----
-machines.h
-       - added -I/usr/ucbinclude to SYSDEP_CFLAGS and a #define 
-         USE_GNU_TERMCAP for the ICL DRS6000 description
-
-support/bashbug.c
-       - added definition for gethostname() for systems that do not have
-         it (USG except for SGI and HP)
-
-                                  1/14
-                                  ----
-test.c
-       - made the #define of uid_t also dependent on HAVE_UID_T being
-         undefined.  That way, hosts which have trouble can add a
-         -DHAVE_UID_T to SYSDEP_CFLAGS in the machines.h entry
-       - made the extern declaration of getgid() be conditionalized out
-         on Sony non-Posix machines
-
-machines.h
-       - added -DHAVE_UID_T to SYSDEP_CFLAGS in the Sony/BSD entry
-
-                                  1/15
-                                  ----
-parse.y
-       - made type of `report_syntax_error' be static void
-       - made type of `handle_eof_input_unit' be static void
-       - added an error message when EOF is reached unexpectedly
-         (if EOF_Reached is 1 when report_syntax_error is called)
-       - added `extern void make_here_document ();'
-
-make_cmd.c
-       - made type of make_here_document be void
-
-execute_cmd.c
-       - added declarations of set_clexec to function prologues for
-         do_redirection and do_redirection_internal
-
-variables.c
-       - added `extern long atol()' to assign_seconds ()
-
-jobs.c
-       - changed type of `making_children ()' to void
-       - removed unused label `wait_exit' in wait_for()
-       - changed `sigset_t set' to `sigset_t suspend_set' inside the
-         BROKEN_SIGSUSPEND definition because `set' shadows the
-         definition used in BLOCK_CHILD and UNBLOCK_CHILD
-
-mailcheck.c
-       - changed type of add_mail_file to void
-
-alias.c
-       - changed type of delete_all_aliases to void
-       - changed block-local declaration of `tl' to `tlen', because
-         `tl' shadows a function-scope variable
-
-input.c
-       - made duplicate_buffered_stream return new fd (like dup2) when
-         it finishes
-       - made free_buffered_stream() a void-valued function
-
-bashline.c
-       - cleaned up the precedence of the expression that checks whether
-         or not the ignore patterns have changed in setup_ignore_patterns
-
-lib/readline/readline.c
-       - made rl_gather_tyi a void-valued function
-       - made rl_dispatch a void-valued function
-       - made rl_redisplay a void-valued function
-       - made free_history_entry a void-valued function
-       - removed unused label `some_matches' from rl_complete_internal
-
-lib/readline/vi_mode.c
-       - removed check of return value from rl_dispatch in rl_vi_redo,
-         since rl_dispatch never returned one anyway
-
-lib/readline/history.c
-       - removed unused label `search_won' in get_history_event
-       - removed unused label `read_which' in get_history_event
-       - removed unused label `bad_word_spec' in history_expand
-       - removed unused label `error_exit' in history_expand
-       - changed block-local declaration of `len' to `slen' in
-         history_expand because len shadows a function-local variable
-       - changed block-local declaration of `l' to `ll' in
-         history_expand because len shadows a function-local variable
-       - removed unused label `get_first' in get_history_word_specifier
-
-                                  1/18
-                                  ----
-parse.y
-       - fixed up the support for `unexpected EOF' errors by making
-         read_token set `EOF_Reached' to 1 before returning yacc_EOF
-         when it reads EOF while looking for the start of a token
-       - added better messages for unexpected eof to report_syntax_error
-       - added better messages for unexpected tokens to report_syntax_error
-       - made handle_eof_input_unit reset EOF_Reached to 0 if the
-         shell is interactive
-       - made report_syntax_error reset EOF_Reached to 0 if the
-         shell is interactive
-       - changed the non-interactive error messages to add `line' before
-         printing the line number rather than simply use filename:digit:
-
-                                  1/19
-                                  ----
-builtins/type.def
-       - changed code so that simple `type' (-all not specified) takes
-         the same path as a regular command search (find_user_command()
-         rather than user_command_matches())
-
-                                  1/20
-                                  ----
-shell.c
-       - new variable `passwd_shell' set from the pw_shell field in the
-         password file
-       - new variable `passwd_dir' set from the pw_dir field in the
-         password file
-
-variables.c
-       - used passwd_shell and passwd_dir to eliminate the calls to the
-         getpw* functions
-       - if $SHELL is unset at shell startup, it is set to the value of
-         passwd_shell
-
-                                  1/21
-                                  ----
-support/mksysdefs
-       - look for sys/ptem.h, define HAVE_SYS_PTEM_H if found
-       - look for sys/pte.h, define HAVE_SYS_PTE_H if found
-
-cpp-Makefile
-       - pass HAVE_SYS_PTEM_H and HAVE_SYS_PTE_H to the readline make
-
-lib/readline/rldefs.h
-       - include sys/ptem.h and sys/pte.h depending on the above two
-         definitions
-
-lib/readline/readline.c
-       - include <sys/ioctl.h> if on an AIX system to get TIOCGWINSZ and
-         struct winsize
-
-machines.h
-       - added #undef HAVE_ALLOCA to hpux_6 description.  alloca seems
-         to have problems when passing alloca'd memory to other functions
-         (esp. in the globbing code, passing directory_name)
-
-                                  1/22
-                                  ----
-machines.h
-       - make the cadmus definition active only of M_MACHINE is not defined
-         when the code gets there
-
-                                   2/1
-                                   ---
-builtins/set.def
-       - changed the reference to $9 in the help string
-       - added `-' to the help string listing the options
-
-documentation/bash.1
-       - changed the reference to $9 in the set builtin description
-       - added `-' to the set builtin synopsis listing the options
-
-                                   2/2
-                                   ---
-machines.h
-       - added REQUIRED_LIBARIES = -lPW -lc_s to SCO unix description
-         when not using gcc
-
-variables.c
-       - new variable builtin_env; builtin analogue of function_env
-       - new function dispose_builtin_env to free up all strings in
-         builtin_env
-       - find_tempenv_variable now looks in builtin_env after the
-         temporary environment
-
-execute_cmd.c
-       - execute_builtin_or_function and execute_subshell_builtin_or_function
-         now set up builtin_env for the `source' builtin so that things like
-         this work:
-               foo contains:
-                       echo XXX=$XXX
-                       echo XXX=$XXX
-               and you run
-                       XXX=aaa . foo
-               which should output
-                       XXX=aaa
-                       XXX=aaa
-         (bug report by mfg@castle.ed.ac.uk)
-
-                                   2/3
-                                   ---
-execute_cmd.c
-       - when a command is forced into a subshell with ( ), turn off its
-         INVERT_RETURN bit in the flags so the exit status of the subshell
-         is not inverted.  In execute_command_internal
-
-                                   2/5
-                                   ---
-[work to make readline configurably 8-bit clean]
-
-lib/readline/readline.c
-       - added variable convert_meta_chars_to_ascii, which controls
-         whether meta characters are converted into ESC-prefixed
-         key sequences.  Set to 1 by default
-       - added a readline variable `convert-meta', settable in a
-         .inputrc, that controls the value of convert_meta_chars_to_ascii
-
-lib/readline/keymaps.h
-       - changed the hard-coded keymap size of 128 to a #define
-         of KEYMAP_SIZE, which is initially 128
-
-lib/readline/keymaps.c
-       - changed all instances of 128 to KEYMAP_SIZE
-       - changed rl_make_keymap to initialize positions 128-256 to
-         rl_insert if KEYMAP_SIZE > 128
-
-lib/readline/chardefs.h
-       - properly define _CHARDEFS_ to protect against multiple inclusion
-
-documentation/bash.1
-       - documented new `convert-meta' readline variable
-
-                                   2/7
-                                   ---
-lib/readline/keymaps.h
-       - increased KEYMAP_SIZE to 256
-
-lib/readline/emacs_keymap.c
-       - added entries to make the keymaps 256 entries.  The entries in
-         emacs_standard_keymap are the ISO Latin-1 characters
-
-lib/readline/vi_keymap.c
-       - added entries to make the keymaps 256 entries.  The entries in
-         vi_insertion_keymap are the ISO Latin-1 characters
-
-                                   2/8
-                                   ---
-lib/readline/readline.c
-       - make sure that rl_display checks that there is room for 8 more
-         characters when deciding whether or not to realloc the line,
-         since we might have to insert a tab
-       - rl_display_search should not use MESSAGE as a printf format
-         string, since it might contain %
-       - reversed arguments in calls to rl_kill_text in
-         rl_unix_word_rubout so that killed text is prepended to the
-         undo data rather than appended
-
-                                   2/9
-                                   ---
-builtins/alias.def
-       - moved single_quote() to builtins/common.c and made it global
-
-builtins/trap.def
-       - made sure that the output of `trap' is suitable for re-input
-         to the shell as a trap definition by using proper single-quoting
-         of the command
-
-lib/readline/readline.c
-       - new readline variable `completion-query-items' to control the
-         value of rl_completion_query_items (initially and by default
-         100)
-       - new function rl_insert_completions which performs a call to
-         rl_complete_internal ('*')
-
-lib/readline/readline.h
-       - added extern declaration for rl_insert_completions ()
-
-lib/readline/funmap.c
-       - added bindable command name `insert-completions' that maps to a
-         call to rl_insert_completions ()
-
-documentation/bash.1
-       - added documentation for new `completion-query-items' readline
-         variable
-       - added documentation for new `insert-completions' readline
-         command
-
-                                  2/10
-                                  ----
-subst.c
-       - made ${xxx} behave correctly when the -u option was on and xxx
-         was not set
-       - made $xxx with -u enabled and xxx unset set $? to 1
-
-lib/malloc/malloc.c
-       - made free() a void function, like ANSI and Posix say to
-
-support/mksydefs
-       - look for /usr/include/stdlib.h and define HAVE_STDLIB_H if found
-
-cpp-Makefile
-       - pass HAVE_STDLIB_H to all makes
-
-ansi_stdlib.h
-       - new file containing the extern function declarations that ANSI
-         puts into <stdlib.h> that bash uses; really a link to
-         lib/posixheaders/ansi_stdlib.h
-
-lib/posixheaders/ansi_stdlib.h
-       - real copy of ansi_stdlib.h
-
-alias.c, bashline.c, variables.c, shell.c, error.c, hash.c, signames.c,
-expr.c, general.c, input.c, builtins/mkbuiltins.c, builtins/fc.def,
-lib/glob/glob.c, lib/tilde/tilde.c, lib/malloc/xmalloc.c
-       - include <stdlib.h> if HAVE_STDLIB_H is defined, include
-         ansi_stdlib.h if not
-
-general.h, alias.h
-       - removed extern declarations for malloc and realloc
-
-lib/readline/{readline,history,funmap,keymaps,vi_mode}.c
-       - include <stdlib.h> or ansi_stdlib.h
-       - remove extern char *getenv() declarations
-
-cpp-Makefile
-       - added dependencies on ansi_stdlib.h
-
-support/fixdist
-       - changes to make things work with ansi_stdlib.h (basically just
-         dupliating the lines for posixstat.h)
-
-alias.h, braces.c, expr.c, general.h, hash.h, vprint.c,
-builtins/fc.def, builtins/getopts.def, lib/glob/glob.c,
-lib/tilde/tilde.c
-       - define NULL as ((void *)0) if NULL undefined and compiling in an
-         ANSI C environment (__STDC__)
-
-                                  2/11
-                                  ----
-lib/readline/readline.c
-       - moved declaration of convert_meta_chars_to_ascii into the `forward'
-         declarations section, before its first use
-
-                                  2/13
-                                  ----
-expr.c
-       - if x is a char *, don't compare *x to NULL, use '\0' instead
-
-                                  2/15
-                                  ----
-lib/readline/readline.c
-       - add a call to rl_initialize_funmap at the beginning of
-         rl_named_function to make sure all of the function names will
-         be found
-
-                                  2/16
-                                  ----
-parse.y
-       - handle double-quoted ${...} words like the Posix.2 spec says --
-         count braces and skip command substitutions and quoted strings
-         to find the end of the pattern: new variables delimited_brace_level
-         and dollar_brace_level
-       - add new variable embedded_quoted_string so that the parser can
-         skip embedded quoted strings while parsing $() and ${}
-         constructs
-
-subst.c
-       - new function: extract_dollar_brace_string () which implements
-         the Posix.2 rules about ${...} extraction: counting braces while
-         skipping quoted strings and command substitutions.  Called from
-         extract_string_double_quoted and expand_word_internal
-       - changed the way pattern removal was done: the pattern is now
-         run through tilde expansion, parameter expansion, command
-         substitution, and arithmetic substitution, then quoted in a
-         way acceptable to fnmatch with quote_string_for_globbing
-       - add code so that expansions like ${HOME:`xxxx`} are errors, as
-         they should be, and put the full expansion string in the error
-         message
-
-                                  2/17
-                                  ----
-
-subst.c
-       - changed expand_word_internal to call parameter_brace_expand_rhs
-         with the `quoted' parameter set to 0 except when the separator
-         between PARAM and WORD is `+'.  This makes things like
-
-               echo "${undef-"foo bar"}"
-         echo `foo bar' without the quotes.  I'm still not sure this is
-         right, but it is compatible with other versions of sh
-
-                                  2/18
-                                  ----
-parse.y
-       - add code to reserved_word_acceptable so that bash will parse a
-         reserved word after a `}'
-
-getcwd.c
-       - make it compilable on machines without dirent.h and struct direct
-         or unistd.h (like the NeXT) using the proper conditional inclusion
-         with HAVE_DIRENT_H and HAVE_UNISTD_H
-
-general.c
-       - moved the getwd() replacement out from inside #ifdef USG and just
-         protected it with #ifdef HAVE_GETWD
-
-machines.h
-       - added #undef HAVE_GETWD and #undef HAVE_GETCWD to the NeXT
-         machine description
-
-subst.c
-       - added `forward' declarations for tilde_expand and
-         expand_string_unsplit and removed the function-local extern
-         declarations
-
-                                  2/19
-                                  ----
-getcwd.c
-       - changed to do conditional inclusion of limits.h, stdlib.h, string.h
-
-                                  2/22
-                                  ----
-builtins/cd.def
-       - if the chdir to the canonicalized form of the pathname in
-         change_to_directory fails, try what the user passed.  If that
-         succeeds, reinitialize the_current_working_directory to what
-         getwd() returns, and return success.  Fix for pathological
-         cases like
-
-               mkdir x
-               cd x
-               ( cd .. ; mv x y )
-               cd .
-
-                                  2/24
-                                  ----
-command.h
-       - added extern declarations for make_word_array, make_command,
-         make_bare_simple_command, and make_here_document
-       - added extern declarations for functions in copy_command.c:
-         copy_command, copy_word, copy_word_list, copy_redirect,
-         copy_redirects
-
-copy_cmd.c
-       - made all functions not used outside this file static
-
-execute_cmd.c
-       - removed extern declaration of make_word_array
-
-                                  2/25
-                                  ----
-shell.c
-       - made non-interactive shell look for $BASH_ENV startup file rather
-         than $ENV (conflict with Posix.2)
-
-command.h
-       - broke the `union redirectee' out of the struct redirect, made
-         the union it's own typedef (REDIRECTEE), then added
-         REDIRECTEE redirectee to the struct redirect
-       - made the `dest' member of a REDIRECTEE a long.  It matters on
-         some machines (sizeof(long) == sizeof(pointer) != sizeof(int)
-         and works on those machines with all those sizes being 32 bits
-         (this should really be a typedef rather than a long)
-
-execute_cmd.c, parse.y
-       - changed all calls to make_redirection to pass a WORD_DESC * or
-         a long as the third argument to make_redirection
-[this should conclude the changes needed for the alpha]
-
-                                   3/2
-                                   ---
-subst.c, variables.c
-       - moved some function-scope extern function declarations to file
-         scope
-
-subst.c
-       - changed paramter_brace_expand_pattern to call expand_string_internal
-         on the removal pattern, since we do not want word splitting
-
-jobs.c
-       - call get_tty_state or set_tty_state in wait_for() depending on
-         a job's exit status when interactive_shell is set, rather
-         than testing interactive.  This makes stty commands in scripts
-         executed with `.' `stick'
-
-nojobs.c
-       - make sure we only call {set,get}_tty_state when interactive_shell
-         is set
-
-                                   3/3
-                                   ---
-unwind_prot.c
-       - make sure there is actually something on unwind_protect_list
-         before calling without_interrupts to run something on it or
-         delete something from it
-
-jobs.c
-       - make sure job_slots is not empty in cleanup_dead_jobs and
-         delete_all_jobs before actually doing something
-
-                                   3/4
-                                   ---
-machines.h
-       - add #undef HAVE_GETWD to Xenix286 machine description
-
-lib/readline/history.c
-       - fixed an off-by-one error in the history expansion code: if
-         the length of the result string after adding the current piece
-         is (allocated_len - 1), the strcpy will write over the first
-         marker placed there by the malloc debugging code.
-       - changed the history realloc code to work in 256-character chunks
-         rather than 255-character ones
-
-                                   3/8
-                                   ---
-execute_cmd.c
-       - new variable exec_redirection_undo_list that holds redirections
-         that must be undone even when `exec' throws away
-         redirection_undo_list.  These are copies of open files for
-         constructs like 7<&1.  Set in add_undo_redirect and used in
-         execute_builtin_or_function.  Disposed of otherwise.
-
-                                   3/9
-                                   ---
-execute_cmd.c
-       - fixed a memory leak in execute_builtin_or_function by adding an
-         unwind_protect to dispose of saved_undo_list
-       - anywhere do_redirections is called with INTERNAL==1 (which means
-         we make redirection_undo_list), arrange to clean up 
-         exec_redirection_undo_list
-
-print_cmd.c
-       - massive namespace cleanups -- made almost all functions static
-       - new function `colon' to be called in place of `cprintf(";")'
-         to ensure that we don't print a `;' right after a `&' from 
-         compound command printing functions (if, while, until, for)
-
-[put code out for FTP on 3/10]
-
-                                  3/11
-                                  ----
-documentation/bash.1
-       - removed the description of >&word as a way to redirect both
-         standard output and standard error
-
-endian.c
-       - moved new-endian.c to this.  This handles 64-bit machines
-         directly
-
-lib/readline/readline.c
-       - rl_copy -> rl_copy_text to avoid clashes with Sun's libraries
-       - moved the completion code to a new file
-
-lib/readline/complete.c
-       - new file with the completion code from readline
-
-lib/readline/Makefile, cpp-Makefile
-       - added complete.c and complete.o to the necessary make variables
-
-subst.c
-       - added an entry to special_vars to make a change to $TERMINFO
-         cause readline to reset itself (sv_terminal())
-
-                                  3/12
-                                  ----
-builtins/exec.def
-       - free `command' if the exec fails
-
-machines.h
-       - change sgi machine description to define HAVE_GETWD
-
-lib/readline/history.c
-       - fixed a memory leak in read_history_range -- need to free
-         `buffer' before returning
-       - if read(2) returns <= 0 in history_truncate_file, then
-         immediately exit
-       - start checking at buffer[chars_read - 1] for newlines
-
-lib/readline/readline.c
-       - fixed a memory leak in rl_read_init_file -- `buffer' must
-         be freed before we return
-       - rearranged code in update_line so that we check for ols and
-         nls being in bounds before trying to compare their values
-
-parse.y
-       - fixed memory leak in read_token -- don't need to save `token'
-         into a fresh variable before calling push_string because
-         push_string does its own savestring in save_expansion
-
-subst.c
-       - fixed memory leak in expand_words_internal -- the word_list
-         allocated by the `@' case when expanding $@ needs to
-         be freed after turning it into a string with string_list
-       - fixed memory leak in expand_word_internal -- the string
-         returned by extract_dollar_brace_string needs to be freed
-       - fixed memory leak in expand_word_internal -- the string
-         returned by substring() in the `default:' case needs to be
-         freed
-
-variables.c
-       - fixed a free-memory reference in makunbound -- have to save the
-         value of `name' before calling dispose_variable, because it
-         might directly reference old_var->name.  If so, then
-         stupidly_hack_special_variables will refer to freed memory
-
-dispose_cmd.c
-       - fixed a memory leak in dispose_command: if a group_command is
-         being disposed, need to free command->value.Group after
-         calling dispose_command (command->value.Group->command);
-       - fixed a memory leak in dispose_command: if a case command is
-         being disposed, need to free command->value.Case after
-         freeing everything else
-
-mailcheck.c
-       - fixed memory leak in remember_mail_dates -- need to
-         free the value returned by get_mailpaths()
-       - fixed memory leak in remember_mail_dates -- need to
-         free the value returned by extract_colon_unit()
-
-                                  3/13
-                                  ----
-bashline.c
-       - fixed memory leak in bash_symbolic_link_hook -- 
-         get_working_directory always returns newly-allocated memory
-         that must be freed
-       - fixed memory leak in bash_symbolic_link_hook -- 
-         if `*dirname' is going to be replaced, the current contents
-         have to be freed (if non-null)
-       - make bash_symbolic_link_hook call get_working_directory with
-         a non-empty string for the value of `for_whom'
-
-execute_cmd.c
-       - make sure that execute_command cleans up after itself by
-         disposing the fd_bitmap it allocates
-
-shell.c
-       - fixed memory leak in reader_loop -- if throw_to_top_level is
-         called with DISCARD, the current command needs to be disposed
-
-lib/readline/complete.c
-       - when we return NULL to indicate the end of a set of completion
-         matches, free dirname, filename, and users_dirname -- there's
-         no reason to let them persist between calls, consuming memory
-
-                                  3/16
-                                  ----
-shell.c
-       - when moving the `script' fd to the highest available fd, check
-         for getdtablesize returning -1 and default to 20 in that case
-
-jobs.c
-       - if getdtablesize returns something < 0, default to 20 
-       - check that getdtablesize() leaves `nds' set to something valid
-         before trying to dup2 shell_tty to it
-
-machines.h
-       - changed M_OS in KSR/1 description to OSF1
-
-maxpath.h
-       - include sys/param.h if __ksr1__ defined
-
-parse.y
-       - changed declaration of the_time from long to time_t
-
-lib/readline/readline.c
-       - changed extern declarations for rl_basic_word_break_characters
-         and rl_completer_word_break_characters to file scope rather
-         than block scope
-       - changed declaration of chars_avail (param to FIONREAD ioctl) to
-         int, which it should have been all along
-
-                                  3/17
-                                  ----
-jobs.c
-       - clamp nfds in initialize_jobs at 256
-
-shell.c
-       - clamp the value returned by getdtablesize() to 256
-
-                                  3/19
-                                  ----
-execute_cmd.c
-       - make find_user_command_in_path return a pathname if it exists
-         and the caller wants FS_EXISTS files.  This affects the `.'
-         builtin and files as script arguments to the shell (shell.c)
-       - clamp the highest-numbered file descriptior at 256 in
-         close_all_files().
-
-jobs.c
-       - make get_tty_info print error message on tcgetattr failure only
-         if interactive != 0 (that is, we're really interactive now)
-
-lib/readline/rltty.c
-       - changed SETATTR macro to call tcsetattr with TCSANOW flag, since
-         this call is being used to affect an input file descriptor.
-         Ditto for the sys5 tty driver code and TCSETA (was TCSADRAIN and
-         TCSETAW, respectively)
-       - added a flag for ksr1 machines `ksrflow' which is the state of
-         suspended output for this process.  If 1, this process has called
-         tcflow (tty, TCOOFF) to suspend output and tcflow(tty, TCOON)
-         may be called safely
-       - temporarily (?) disabled the code that simulates at ^Q at the end
-         of set_tty_settings.  Let's see if it makes any difference
-
-                                  3/22
-                                  ----
-execute_cmd.c
-       - new global variable (yucch) `current_fds_to_close' that is set to
-         the fd_bitmap passed to execute_simple_command while expand_words
-         is being executed so that this information is available to the
-         process substitution code
-       - set current_fds_to_close to NULL at start of execute_command
-
-subst.c
-       - change call to close_all_files in process_substitute to call
-         close_fd_bitmap (current_fds_to_close)
-       - fixed memory leak in parameter_brace_expand_length() -- need to
-         free the memory used to expand the PS1 in something like ${#PS1}
-       - fixed memory leak in expand_word_internal ${3:+posix} did not
-         free the memory used to expand the $3
-
-documentation/bash.1
-       - && and || have equal precedence; fixed up man page to reflect
-         this
-
-                                  3/23
-                                  ----
-[fixes from bfox version of 1.13 dated 3/21/93 from eos.ucsb.edu]
-
-config.h
-       - #undef alloca before redefining it as __builtin_alloca
-
-cpp-Makefile
-       - compile newversion.c with $(CFLAGS) instead of $(DEBUG_FLAGS)
-
-general.h
-       - new #define: maybe_free(x)
-
-jobs.c
-       - alliant has same problem as NeXT wrt /usr/etc/rlogind and /dev/tty
-       - make delete_all_jobs be static void
-
-builtins/cd.def
-       - use maybe_free define
-
-builtins/common.c
-       - HAVE_VPRINTF --> HAVE_VFPRINTF
-
-builtins/test.def
-       - document -h as a synonym for -L
-
-lib/readline/history.c, lib/readline/rldefs.h
-       - #undef alloca before redefining it as __builtin_alloca
-
-lib/readline/history.c
-       - new functions history_get_state and history_set_state
-
-lib/readline/tilde.c
-       - put in #pragma alloca if on AIX machine
-
-support/getcppsyms.c
-       - recognize __GNUC__ and __STDC__ and pass them along as output
-
-                                  3/24
-                                  ----
-
-subst.c
-       - removed fully_quoted_word(), since it was unused
-
-execute_cmd.c
-       - added extern declarations for functions in dispose_cmd.c
-       - removed extern declaration of atol()
-
-parse.y
-       - added extern declaration for dispose_words()
-
-documentation/bash.1
-       - re-added the description of >&filename as a way to redirect
-         both stdout and stderr to filename
-
-machines.h
-       - slight changes to the alpha description
-
-shell.c
-       - moved all the extern function declarations to have file scope
-
-print_cmd.c
-       - colon --> semicolon
-
-parse.y
-       - in read_token, if we're parsing an embedded quoted string, don't
-         bother with special processing of `$' and characters following
-
-                                  3/25
-                                  ----
-print_cmd.c
-       - added a new function the_printed_command_resize to expand the
-         printed command buffer in cprintf()
-
-builtins/bind.def
-       - removed the unwind-protect code, because unwind_protect_pointer
-         is not guaranteed to work on a FILE *
-
-lib/readline/readline.c
-       - assign in_stream and out_stream immediately, because they may
-         be used before readline_internal is called
-
-                                  3/26
-                                  ----
-cpp-Makefile
-       - allow for use of different compress programs with the use of
-         $(COMPRESS) and $(COMPRESS_EXT)
-
-                                  3/29
-                                  ----
-
-general.c
-       - new function set_lines_and_columns to set $LINES and $COLUMNS in
-         response to a SIGWINCH
-
-lib/readline/readline.c
-       - call set_lines_and_columns() in set_screen_size() to set the
-         right environment variables on a SIGWINCH (code needed to be
-         rearranged a bit to make this happen)
-
-jobs.c
-       - add a SIGWINCH handler to set $LINES and $COLUMNS if readline is
-         not being compiled into the shell and TIOCGWINSZ and SIGWINCH
-         are defined
-
-subst.c
-       - made dequote_string extern so `read' can use it
-
-builtins/read.def
-       - added CTLESC characters to represent escapes instead of doing
-         backslash processing internally
-
-braces.c
-       - fixed the brace expansion code so that backslash can correctly
-         act as an escape character, and escape `"' in a double-quoted
-         string
-
-                                  3/31
-                                  ----
-make_cmd.c
-       - the `<>' redirection needs to open the file O_RDWR|O_CREAT
-         for Posix.2 compatibility
-
-                                   4/1
-                                   ---
-parse.y
-       - the function read_a_line was changed to take a flag telling it
-         whether or not to remove quoted newlines
-       - read_secondary_line was changed to call read_a_line with an arg
-         of 1, telling it to strip \<newline> pairs
-
-         These two changes fix two bugs with here documents:
-               1.  delimiter check occurs after \<newline> stripping
-               2.  leading tab deletion occurs after \<newline> stripping
-
-lib/readline/rldefs.h
-       - include <termcap.h> if on Linux
-
-lib/readline/readline.c
-       - don't declare PC, BC, and UP if on Linux (??)
-       - change the conditional parsing code that handles the `$if term='
-         construct to test the name given in the if command against both
-         the `long' and `short' forms of rl_terminal_name.  For instance,
-         if `rl_terminal_name' were `sun-cmd', it would be tested with
-         stricmp against both `sun' and `sun-cmd'
-
-machines.h
-       - add HAVE_VFPRINTF to the Linux description
-
-unwind_prot.h
-       - change the unwind_protect_int macro to cast the second argument to
-         unwind_protect_var to a (char *), which is what unwind_protect_var
-         expects
-
-unwind_prot.c
-       - change unwind_protect_var to allocate memory and do a bcopy if the
-         size of the variable passed to save is not sizeof(int).  That's
-         what restore_variable expects
-
-lib/readline/complete.c
-       - fixed rl_complete_internal so that it pays attention to the value
-         of rl_completer_quote_characters and quotes a match if the match
-         contains a word break character
-
-bashline.c
-       - set rl_completer_quote_characters to ' and "
-
-                                   4/5
-                                   ---
-lib/readline/complete.c
-       - changed rl_complete_internal so that an `attempted completion
-         function' may tell readline not to perform filename completion
-         if it fails by returning (char **) -1
-
-bashline.c
-       - attempt_shell_completion should return (char **) -1 if doing
-         command word completion and no matches are found.  This will
-         tell readline not to perform filename completion
-
-                                   4/6
-                                   ---
-builtins/common.c
-       - fixed the error message printer by get_working_directory:
-         `for_whom', shell_name, or `bash: ' is printed first; the
-         first non-empty one being printed.  Explanatory text is
-         added to the error message
-
-                                   4/7
-                                   ---
-machines.h
-       - in the Sun section, define Solaris of either `USGr4' or __svr4__
-         is defined
-       - Solaris 2 systems have sys_siglist, so don't #undef HAVE_SYS_SIGLIST
-
-jobs.c
-       - don't declare sys_siglist if on Solaris 2
-
-                                   4/8
-                                   ---
-lib/readline/rldefs.h
-       - do not define USE_XON_XOFF.  This causes output to be swallowed
-         when using bash over a relatively slow line (like a modem line).
-         This means that ^S and ^Q don't work on termio/termios systems;
-         use ^V to quote characters instead
-
-variables.c
-       - don't perform a get_working_directory on startup unless we did
-         not inherit $PWD or the inherited value of $PWD is wrong
-
-trap.c
-       - new functions: free_trap_strings and reset_original_signals.
-         Together they do the same thing as restore_original_signals()
-
-jobs.c, nojobs.c
-       - removed call to restore_original_signals from make_child.  Now
-         callers have to handle this themselves
-
-execute_cmd.c
-       - added a call to restore_original_signals after make_child in the
-         child process everywhere make_child is called
-
-subst.c
-       - added call to restore_original_signals after make_child in
-         process_substitute
-       - added call to reset_signal_handlers after make_child in
-         command_substitute for the child process
-
-         [THERE IS A PROBLEM WITH A TRAP on `0' -- it is inherited in the
-          child process started to run the command substitution]
-
-[These are fixes to make savetraps="$(trap)" work as Posix.2 specifies]
-
-                                  4/11
-                                  ----
-bashline.c
-       - supply a value for rl_completer_word_break_characters; `$' is
-         not a shell word break character
-
-                                  4/13
-                                  ----
-lib/readline/complete.c
-       - only look at adding quote characters to completion matches if
-         we're doing filename completion
-
-bashline.c
-       - don't supply a value for rl_completer_word_break_characters
-
-                                  4/14
-                                  ----
-documentation/bash.1
-       - clarify what the readline function shell-expand-line does
-
-jobs.c
-       - clean up dead jobs in wait_for even in non-interactive shells
-         rather than waiting for the next call to the parser
-
-                                  4/15
-                                  ----
-bashline.c
-       - reorganized the shell_expand_line code; broke it up into several
-         discrete functions
-       - added new functions: history_and_alias_expand_line,
-         history_expand_line
-       - added a new emacs-mode command, M-!, bound to history-expand-line
-
-                                  4/18
-                                  ----
-unwind_prot.c
-       - more fixes to the save-variable and restore-variable code,
-         mostly to make things work better on machines like the alpha
-         where sizeof(int) != sizeof(char *):
-
-               save and restore now use identical logic and nearly
-               identical code to decide whether or not to use malloc and
-               bcopy or assignment
-
-builtins/common.c
-       - new functions to manage the state of the dollar variables:
-
-               dollar_vars_changed - return 1 if the dollar variables have
-                                     been changed
-               set_dollar_vars_changed - set the state of dollar variable
-                                         modification to `changed'
-               set_dollar_vars_unchanged - set the state of dollar variable
-                                         modification to `unchanged'
-
-builtins/source.def
-       - new function: maybe_pop_dollar_vars.  This is called so that the
-         `.' command will restore the dollar variables only if the script
-         run with . has not changed them.  If the script changed $@, the
-         new values should stay in place
-       - changes to source_builtin to set the state of the dollar
-         variables to `unchanged' before executing the script, and calling
-         maybe_pop_dollar_vars() to decide whether or not to restore the
-         dollar variables and to do so if warranted
-
-machines.h
-       - new description for NEC EWS4800, from m-hirano@sra.co.jp via
-         hikichi@sra.co.jp
-
-                                  4/19
-                                  ----
-support/mksysdefs
-       - check for both /hp-ux and /bin/uname before deciding a machine
-         should be checked for an HP/UX revision level
-
-                                  4/22
-                                  ----
-input.h, general.h, lib/readline/readline.h, lib/tilde/tilde.h
-       - added typedefs for CPFunction (pointer to function returning
-         pointer to char) and CPPFunction (pointer to function returning
-         pointer to pointer to char)
-
-execute_cmd.c
-       - replaced all instances of (int)redirectee in do_redirection_internal
-         with a variable redir_fd, which is set to redirectee.dest
-
-print_cmd.c
-       - replaced all instances of (int)redirectee in print_redirection
-         with a variable redir_fd, which is set to redirectee.dest
-
-maxpath.h
-       - #include <sys/param.h> on OSF/1 systems
-
-subst.c
-       - added extern declaration for list_append
-       - changed sv_allow_null_glob_expansion to compare the return value
-         from find_variable to NULL to set the value of
-         allow_null_glob_expansion
-
-parse.y
-       - fix the assignment_acceptable macro so we cannot return
-         ASSIGNMENT_WORD while in the middle of a case statement pattern
-         list (in_case_pattern_list != 0)
-
-general.c
-       - Linux has gethostname() and does not need the emulation
-
-jobs.c
-       - Linux has a declaration for sys_siglist that conflicts with the
-         extern declaration; use the one from the standard include file
-       - the sigprocmask emulation did not handle NULL arguments in
-         oldset and newset; check them before using
-
-                                  4/23
-                                  ----
-lib/readline/complete.c
-       - use single_quote() to quote a completion replacement with
-         embedded occurrences of characters from rl_completer_quote_characters
-
-                                  4/26
-                                  ----
-print_cmd.c
-       - redid cprintf() for systems without varargs to be what bfox has
-         (using char * where bfox has void *)
-
-parse.y
-       - make read_secondary_line take an argument telling it whether or
-         not to have read_a_line remove quoted newlines
-
-make_cmd.c
-       - pass an argument to read_secondary_line saying whether or not to
-         remove quoted newlines, set to 1 if the delimiter of a here
-         document is unquoted
-
-                                  4/28
-                                  ----
-builtins/ulimit.def
-       - added -u option to set and get the max number of processes
-         available to a user; available on systems which define
-         RLIMIT_NPROC
-       - added better handling of getrlimit failures to ulimit_builtin
-
-cpp-Makefile
-       - made $(HOSTTYPE_DECL) appear on the cc command line before the
-         $(CPPFLAGS) when making variables.o
-
-                                  4/29
-                                  ----
-lib/readline/complete.c
-       - added an extern declaration for getpwent() for isc386 machines
-         where __STDC__ is not defined and _POSIX_SOURCE is
-
-                                  4/30
-                                  ----
-general.c
-       - new function legal_identifier, which returns 1 if a string
-         passed is a legal shell identifier and 0 otherwise.  Used
-         to decide what is and is not a legal variable name for the
-         expansion functions
-
-subst.c
-       - make expand_word_internal check that a ${ } expression
-         that starts with a digit is composed of all digits before
-         deciding that a variable starting with a digit is special
-         (setting var_is_special to 1)
-       - new function valid_brace_expansion_word (name, var_is_special)
-         returns 1 if name is a legal lhs of a brace expansion
-         expression
-       - make expand_word_internal check an identifier for validity
-         before passing it off to parameter_brace_expand_word by calling
-         valid_brace_expansion_word ()
-       - new function valid_length_expression (name) returns 1 if NAME is
-         something that can be passed to parameter_brace_expand_length();
-         called from expand_word_internal before calling
-         parameter_brace_expand_length()
-
-
-       These fix the following:
-               ${#<digit><alpha>} was treated as x=$<digit><alpha>, ${#x}
-               ${<digit><alpha>} was treated as ${<digit>}<alpha>
-               ${<illegal-id>} was not flagged as an error
-               ${#<illegal-id>} was not flagged as an error
-
-                                   5/2
-                                   ---
-input.c
-       - make check_bash_input change the value of default_buffered_fd
-         if it moves the input fd to a new fd as the result of a 
-         redirection
-
-execute_cmd.c
-       - don't make do_piping try the dup2 and close if pipe_out ==
-         REDIRECT_BOTH (-2) -- it's useless work
-       - add error checking to do_piping to see if the dup2 calls fail
-         and why
-
-error.c
-       - new function internal_error for shell internal error messages
-
-jobs.c
-       - changed some fprintf(stderr, ...) calls to internal_error()
-         calls
-
-                                   5/3
-                                   ---
-execute_cmd.c
-       - do not change the buffered stream associated with a file descriptor
-         when processing an r_inputa_direction redirection in
-         do_redirection_internal
-
-jobs.c, nojobs.c
-       - don't sync the buffered stream associated with default_buffered_input
-         in make_child if the shell is reading input from fd 0 and running an
-         asynchronous command
-
-                                   5/4
-                                   ---
-
-execute_cmd.c
-       - if the shell is not interactive, clean up the dead jobs each time
-         we call execute_command ()
-
-jobs.c
-       - new function, mark_dead_jobs_as_notified
-       - if the shell is not interactive, mark all dead jobs as notified in
-         notify_and_cleanup so that cleanup_dead_jobs frees up the slot in
-         the jobs array
-
-nojobs.c
-       - make cleanup_dead_jobs call reap_zombie_children on Posix systems,
-         so the shell doesn't keep growing in size as more jobs accumulate
-         before a call to wait_for()
-
-                                   5/6
-                                   ---
-jobs.c
-       - take the code that resets the signal handler out of flush_child;
-         it should be done in wait_for
-       - new function reap_dead_jobs to be run by non-interactive shells
-         that marks all dead jobs as notified and cleans up the job list
-       - removed the code from notify_and_cleanup that marks dead jobs as
-         notified if the shell is not interactive
-
-execute_cmd.c
-       - took the code that cleaned up dead jobs out of execute_command
-         There is a problem when this is run as the result of a trap on
-         SIGINT and the trap command is called directly from flush_child --
-         a job slot can disappear out from underneath flush_child and
-         wait_for and cause the shell to abort
-       - added a new define REAP that causes a non-interactive shell to
-         clean out the job table by calling reap_dead_jobs or
-         cleanup_dead_jobs
-       - added calls to reap to execute_for_command and
-         execute_until_or_while
-
-nojobs.c
-       - changed wait_sigint_handler to not do anything when it is called,
-         not even run a signal handler
-       - changed wait_for to call the old sigint handler if a foreground
-         process exits due to a SIGINT
-
-         [these make nojobs.c behave like jobs.c when waiting for a job in
-         a non-interactive shell]
-
-config.h.mini
-       - new `minimal' configuration file
-
-                                   5/7
-                                   ---
-subst.c
-       - make sure that command_substitute closes the pipe file descriptors
-         if there is a goto error_exit
-
-                                  5/10
-                                  ----
-nojobs.c
-       - add a SIGWINCH handler to set $LINES and $COLUMNS if readline is
-         not being compiled into the shell and TIOCGWINSZ and SIGWINCH
-         are defined
-
-[code put out for FTP on slc2.ins.cwru.edu]
-
-                                  5/11
-                                  ----
-
-braces.c
-       - commas within backquotes inside matching braces are now treated as
-         quoted (e.g., echo {`echo foo:bar | sed s/:/,/`})
-
-lib/readline/search.c
-       - added extern declarations for xmalloc, xrealloc
-
-                                  5/12
-                                  ----
-lib/malloc/malloc.c
-       - added a #define wrapper around the sbrk() declaration so that it's
-         not declared as char * if hpux_8 or VOID_STAR_SBRK are defined
-
-subst.c
-       - changed sense of #ifdef so that unless KSH_INCOMPATIBLE is defined
-         ${#@} and ${#*} are equivalent to $#
-
-                                  5/13
-                                  ----
-execute_cmd.c
-       - don't create the export env unless we are running a command with
-         shell_execve (in execute_disk_command)
-
-jobs.c, nojobs.c
-       - don't create the export env in make_child (why were we doing this
-         in the first place?)
-
-hash.c
-       - removed declaration of initialize_hashed_filenames, which is unused
-
-subst.c
-       - make list_rest_of_args, list_string, and the brace expansion code
-         in expand_words_internal use the REVERSE_LIST macro rather than a
-         call to reverse_list()
-
-make_cmd.c, copy_cmd.c
-       - change uses of reverse_list to REVERSE_LIST
-
-                                  5/17
-                                  ----
-execute_cmd.c
-       - make execute_disk_command look in the temp environment for an
-         assignment to PATH, and disable hash lookup for the command if
-         such an assignment is present
-
-                                  5/18
-                                  ----
-parse.y
-       - changed read_a_line so that a backslash can quote a \<newline>
-         pair and prevent its removal when remove_quoted_newline is 1
-
-                                  5/19
-                                  ----
-siglist.h
-       - new file, to encapsulate the declarations of sys_siglist and
-         provide a `strsignal' macro
-
-jobs.h, siglist.c, longest_sig.c
-       - include siglist.h
-
-jobs.c, nojobs.c
-       - removed declaration of sys_siglist
-
-                                  5/20
-                                  ----
-execute_cmd.c
-       - don't set up the loop_redirections unwind-protect unless there
-         are actually some redirections
-       - combined the AND_AND and OR_OR cases of execute_command_internal
-         to remove some duplicated code
-       - folded two tests together in the simple command case of
-         execute_command_internal to remove a layer of indentation and
-         braces
-       - don't set up the unwind_protect in execute_simple_command unless
-         the command actually expands to something
-       - broke the code that executes functions and builtins out into new
-         functions (execute_function and execute_builtin) and changed
-         execute_builtin_or_function and execute_subshell_builtin_or_function
-         to call them
-       - replaced the async_redirections unwind-protect in
-         execute_disk_command, since there's no reason to do it if we're
-         already in a subshell and simply going to exit if the redirections
-         fail
-       - set up the unwind-protect on saved_undo_list in 
-         execute_builtin_or_function only if there are redirections saved
-         in saved_undo_list
-       - only call do_redirections in execute_disk_command if there are
-         redirections to perform -- no need for the side effects since
-         we're in a subshell
-
-                                  5/21
-                                  ----
-parse.y
-       - make read_a_line, shell_getc, decode_prompt_string, prompt_again,
-         bash_add_history, reset_readline_prompt, read_token, discard_until,
-         shell_ungetc static functions
-       - eliminated the after_preprocess label in shell_getc
-       - broke the prompt command execution code out into a separate
-         function: execute_prompt_command
-
-subst.c
-       - combined some common code in extract_string_double_quoted for the
-         $( ) and ${ } cases
-       - changed the allocation scheme in string_list_internal to hopefully
-         reduce the number of allocations
-       - added a new define SET_INT_VAR and changed all of the sv_*
-         functions that set a variable depending on whether or not a
-         variable exists to use it
-
-variables.c
-       - declare argument to getenv as `const char *' on Linux
-
-machines.h
-       - Linux has the fixed include files if gcc is being used to compile
-         the shell
-
-                                  5/23
-                                  ----
-subst.c
-       - only call rl_reset_terminal in sv_term if no_line_editing is 0
-         (which means we're actually using readline)
-
-                                  5/25
-                                  ----
-execute_cmd.c
-       - changed execute_for_command to explicitly call the functions that
-         were to be called by the unwind-protect code (e.g., dispose_words),
-         and changed the run_unwind_frame call to a call to
-         dispose_unwind_frame.  This is to avoid using the kernel to block
-         interrupts as much as possible
-       - did the same for execute_case_command and execute_builtin
-
-jobs.c
-       - only run traps on SIGCHLD if job_control != 0
-
-                                   6/3
-                                   ---
-unwind_prot.c
-       - have without_interrupts call QUIT only if interrupt_immediately
-         is set to 1
-
-                                   6/7
-                                   ---
-machines.h, jobs.h, lib/readline/chardefs.h, maxpath.h
-       - changes for Solaris 2 with gcc from Greg Onufer
-
-lib/malloc/malloc.c
-       - define NO_SBRK_DECL if hpux_8 or Solaris
-       - declare sbrk as extern char * unless NO_SBRK_DECL is defined.
-         VOID_STAR_SBRK has been removed
-
-lib/readline/readline.c
-       - changed a call to alloca to a call to xmalloc to avoid problems
-         on the DEC alpha (can't pass memory allocated with alloca to
-         another function)
-       - moved key binding and startup file code to bind.c
-
-lib/readline/rldefs.h
-       - created common definitions for emacs_mode and vi_mode
-
-lib/readline/bind.c
-       - new file containing the key binding and startup file code.
-
-                                   6/8
-                                   ---
-lib/readline/readline.c
-       - changed rl_message to use varargs, if HAVE_VARARGS_H is defined
-
-lib/readline/rldefs.h
-       - include <varargs.h> if HAVE_VARARGS_H is defined
-
-lib/readline/{readline.c,bind.c,rltty.c,vi_mode.c,search.c}
-       - cleaned up the namespace by prefixing all pseudo-global readline
-         variables (variables private to the library but used in multiple
-         files) with _rl_
-
-                                  6/10
-                                  ----
-[changes from bfox]
-
-bashansi.h
-       - new file, including both string.h and ansi_stdlib.h
-
-dispose_cmd.h, make_cmd.h, subst.h
-       - new files containing extern function declarations
-
-endian.c
-       - for machines with sizeof(long)==8, shift by 31, then 1 to fake
-         out gcc 2.4, which complains when you shift by 32
-
-general.h
-       - added an include of string.h or strings.h
-       - changed the declarations of the savestring() and member() macros
-
-shell.c
-       - changed the structure of the long_args struct to be more portable
-
-subst.c
-       - made dequote_string and dequote_list static
-
-[end of changes from bfox]
-
-general.h
-       - added extern declarations for all of the non-int functions
-         defined in general.c
-
-<most files>
-       - removed extern declarations that appear in one of the bash header
-         files
-
-                                  6/15
-                                  ----
-lib/readline/readline.c
-       - incorporated a patch to rl_transpose_chars from Tom Tromey
-         which allows C-t to be undone
-       - fixed rl_rubout so the fast screen fixup when deleting the
-         last character on the line handles characters that are more
-         than one screen position wide by erasing the right number of
-         physical characters
-
-                                  6/16
-                                  ----
-siglist.h
-       - don't declare sys_siglist on 4.4 BSD
-
-builtins/mkbuiltins.c, lib/readline/history.c
-       - include <unistd.h> if HAVE_UNISTD_H is defined
-
-                                  6/19
-                                  ----
-machines.h
-       - new description for the Intel Paragon running OSF/1
-
-support/getcppsyms.c
-       - new variables for the paragon (__i860__, __PARAGON__, etc.)
-
-documentation/bash.1
-       - make it clear the the -noprofile switch disables the sourcing
-         of ~/.bash_login and ~/.profile as well as /etc/profile and
-         ~/.bash_profile
-
-                                  6/23
-                                  ----
-shell.c
-       - instead of calling maybe_execute_file on "/etc/profile",
-         use a #define for SYS_PROFILE, which is initially defined
-         to be "/etc/profile" by default
-
-lib/readline/isearch.c
-       - new file, with the isearch code
-
-lib/readline/display.c
-       - new file, with the incremental redisplay code
-
-lib/readline/readline.c
-       - removed the isearch, display code
-
-                                  6/24
-                                  ----
-lib/readline/readline.c
-       - removed the signal-handling code
-
-lib/readline/signals.c
-       - new file with the signal-handling  code
-
-                                   7/1
-                                  ----
-test.c
-       - changed the `advance' macro to get around some picky compilers
-
-machines.h
-       - machine description for hp9000 running 4.4 BSD
-
-support/getcppsyms.c
-       - recognize __BSD_4_4__ for 4.4 BSD machines
-
-builtins/souirce.def
-       - cast the st_size stat struct member to int because it's
-         64 bits on 4.4 BSD
-
-lib/readline/signals.c
-       - include <sys/ioctl.h> if compiling on a 4.4 BSD machine
-
-                                   7/2
-                                   ---
-builtins/read.def
-       - if $IFS is unset it defaults to "" when splitting the line
-         read into words (so no splitting is performed)
-
-                                   7/5
-                                   ---
-shell.c
-       - remove SIGKILL from terminating_signals[] -- it can't be caught
-         or ignored
-       - make terminating_signals[] static
-       - make terminating_signals[] an array of structs that hold the signal
-         number and the original handler
-       - change initialize_terminating_signals to use the new struct termsig
-         and to set the original handlers for all the terminating_signals
-       - new function reset_terminating_signals to restore original handlers
-         for all terminating signals in terminating_signals[]
-
-trap.c
-       - new function signal_is_special, returns 1 if a signal is one of
-         the signals the shell treats specially
-       - call reset_terminating_signals from restore_original_signals
-
-getcwd.c
-       - changed call to `stat' to call `lstat' to keep symlinks that
-         point to non-existant files from causing getcwd to fail
-       - if S_ISLNK is not defined after inclusing `posixstat.h', use
-         a cpp #define lstat stat
-
-machines.h
-       - new entry for Symmetric 375 running 4.2 BSD
-
-support/getcppsyms.c
-       - recognize and pass along `scs' for the Symmetric 375
-
-lib/readline/bind.c
-       - new function: rl_set_keymap_from_edit_mode, which sets the
-         keymap appropriately depending on the editing mode as if we
-         were about to edit a command line
-
-                                   7/6
-                                   ---
-lib/termcap
-       - new code from the GNU termcap library distribution 1.02
-
-endian.c
-       - include bashansi.h
-
-shell.c
-       - fall back to sourcing $ENV if $BASH_ENV is not found
-
-variables.c
-       - make add_or_supercede search `array' only if it is non-null
-
-                                   7/7
-                                   ---
-subst.c
-       - made do_assignment_internal an int function that returns 1 if
-         the assignment was made correctly and 0 if it was not
-       - do_assignment and do_assignment_no_expand now return the value
-         from do_assignment_internal
-
-variables.c
-       - made assign_in_env return 1 if everything appeared to go
-         successfully (which it always does)
-
-cpp-Makefile
-       - add variables.c as an explicit dependency for variables.o; there
-         appears to be a bug in Gnu make
-
-braces.c
-       - removed static version of copy_array since there's already one
-         in general.c, declared extern in general.h
-
-lib/malloclib
-       - updated to sources from Gnu libc 1.06
-
-                                   7/9
-                                   ---
-shell.h
-       - new struct: user_info, containing uid, gid and passwd file info
-         about the current user
-
-shell.c
-       - new variable current_user of type struct user_info
-       - eliminated passwd_shell, passwd_dir, and current_user_name
-
-subst.c
-       - rewrote sv_uids to use the info in current_user.uid and .euid
-         and to use itos rather than sprintf
-
-variables.c, mailcheck.c, test.c, execute_cmd.c, parse.y
-       - changed to use current_user.user_name rather than current_user_name
-         and to use current_user.shell and current_user.home_dir instead of
-         passwd_shell and passwd_dir, respectively
-
-flags.c, flags.h
-       - new flag, `-p' for `privileged', a la ksh.  This is set automatically
-         if uid != euid || gid != egid
-       - if +p, set the real and effective uids and gids to the real uid and
-         gid
-
-flags.c
-       - include shell.h for the current_user struct and don't explicitly
-         include header files included by shell.h
-
-builtins/set.def
-       - code to handle -p and -o privileged
-
-documentation/bash.1
-       - added documentation for set -p/set -o privileged
-       - added documentation for bind -m keymap
-       - added documentation to readline section for non-inc search bindings
-
-builtins/bind.def
-       - documented the -m keymap option
-
-                                  7/10
-                                  ----
-machines.h
-       - new description for NeXTstep running on intel 486
-
-lib/tilde/tilde.c
-       - fixed up definition of savestring macro
-
-bashline.c
-       - changed attempt_shell_completion so that when completing command
-         words and no matches are found, it tells readline to perform
-         filename completion but sets the completion ignore function
-         to one that will ignore all filenames matched, leaving only
-         directories in the list of matches
-       - generalized the ignore processing, breaking the body of the
-         existing ignore function into a generic function that takes as an
-         argument a pointer to a function used to test each filename in the
-         match list for `acceptability'
-       - added a new ignore function to support the `ignore filenames'
-         behavior described above
-
-                                  7/12
-                                  ----
-
-machines.h
-       - add #undef HAVE_GETCWD to Motorola M88100 description
-[put code out for FTP on slc2.ins.cwru.edu]
-
-                                  7/13
-                                  ----
-builtins/type.def
-       - broke the code that does the work of the type builtin out into a
-         separate function and added a couple of other display options,
-         for eventual use by command -v and -V
-
-builtins/bashgetopt.c
-       - added a new function `report_bad_option'
-
-builtins/jobs.def, bultins/histctl.def
-       - changed to use report_bad_option
-
-builtins/command.def
-       - added the Posix.2 -v and -V options
-
-                                  7/14
-                                  ----
-execute_cmd.c
-       - make sure that execute_command_internal sets redirection_undo_list
-         and exec_redirection_undo_list to NULL after making local copies
-         so things don't get undone twice.  This can happen as the result
-         of an `fc' redoing a command with redirections:
-                       wc subst.c > xxx &
-                       r
-         [bug report from Ian Watson]
-
-builtins/setattr.def
-       - converted to use internal_getopt, so export and readonly both use
-         it
-
-builtins/bashgetopt.c
-       - changed the default error messages a little bit
-
-shell.h
-       - new exit values:  EX_NOEXEC, for when a command name is not
-         executable (126), and EX_NOTFOUND, for when a command is not
-         found (127)
-
-execute_cmd.c
-       - change to use EX_NOEXEC and EX_NOTFOUND
-
-parse.y
-       - broke function definitions off into their own production,
-         function_def
-
-                                  7/15
-                                  ----
-builtins/kill.def
-       - added code so that signals are listed by kill -l in the manner
-         specified by Posix.2 if the POSIXLY_CORRECT variable exists in
-         the environment
-       - Posix.2 UPE says kill can take % job control arguments even if
-         job control is disabled, so let interactive shells use them
-
-parse.y
-       - decode_prompt_string now performs the Posix.2 ! expansion for
-         $PS1 and $PS2, if POSIXLY_CORRECT is turned on
-
-builtins/exec.def
-       - changed exit status to be in line with Posix.2 specification
-         (127 for not found, 126 for not executable)
-
-builtins/wait.def
-       - unknown jobs should cause wait to return 127
-
-shell.c
-       - change the behavior of sh -c so that if POSIXLY_CORRECT is in the
-         environment, the first argument after -c command is assigned to
-         $0, and the rest of the arguments, if any, are bound to $1 ... $n
-         Posix.2 4.56.3 specifies this behavior
-       - move the code that does -c command out of the !local_skip_execution
-         block.  I can't see why it was there in the first place
-       - made some of the private variables static to clean up the name
-         space
-       - moved the code that runs the startup files into a separate
-         function: run_startup_files.  This is called with an argument
-         telling it whether or not to use the Posix.2 startup file sequence
-         ($ENV).  This argument is 1 if POSIXLY_CORRECT is found in the
-         environment at startup
-
-builtins/fg_bg.def
-       - bg needs to set last_asynchronous_pid when restarting a job in
-         the background, as per Posix.2, 5.4.2
-
-jobs.c
-       - make sure the status of exited jobs is printed as Done(n) where
-         `n' is the exit status, if POSIXLY_CORRECT is specified
-
-                                  7/16
-                                  ----
-general.c
-       - fixed a problem with canonicalize_pathname which made it get
-         confused with xxx/./yyy if yyy was `.' or `..'
-
-parse.y
-       - broke the code in read_token that checked for reserved words
-         into a macro: CHECK_FOR_RESERVED_WORD
-       - if posixly_correct is 1, read_token does not allow reserved words
-         to be aliased (checks for reserved words before doing alias
-         expansion).  See Posix.2 3.3.1
-       - changed the function_def production to make redirections
-         specified with a function definition bind to the function
-         rather than to the definition.  This introduced 66 (!)
-         bison shift/reduce conflicts.  From Posix.2 3.9.5
-       - if `posixly_correct' is set, <>word will open word for read/write
-         on fd 0, rather than fd 0 and fd 1 as normal
-
-builtins/source.def
-       - removed the ALLOW_RIGID_POSIX_COMPLIANCE define; the check for
-         POSIXLY_CORRECT will always be performed
-
-shell.c
-       - new long option: -posix, sets posixly_correct to 1
-       - posixly_correct set to 1 in main if POSIXLY_CORRECT found in
-         shell environment
-
-subst.c
-       - new function sv_strict_posix, sets value of posixly_correct
-         depending on $POSIXLY_CORRECT
-       - if posixly_correct is set, don't do tilde expansion on 
-         =~ in words that are not shell assignment statements
-
-execute_cmd.c, jobs.c
-       - removed calls to getenv("POSIXLY_CORRECT") with checks of
-         posixly_correct
-       - if posixly_correct is set, don't translate >&x into >x 2>&1
-
-expr.c
-       - implemented the OP= Posix.2 arithmetic assignment operators
-         (see Posix.2 table 2.15, section 2.9.2.1, and section 3.6.4)
-
-documentation/bash.1
-       - added documentation of new arithmetic evaluation assignment
-         operators
-       - documented the new -posix long option
-
-                                  7/17
-                                  ----
-builtins/setattr.def
-       - made set_or_show_attributes correctly quote the values of shell
-         variables it prints so the output of `export' or `readonly' can
-         be used as input to the shell
-
-builtins/fc.def
-       - made fc write its output as Posix.2 5.12.6.1 specifies: when not
-         numbering, the command should still be output with a leading tab
-
-variables.c
-       - if `posixly_correct' is true, bash uses ~/.sh_history as the
-         default value of $HISTFILE
-
-shell.c, subst.c
-       - if posixly_correct is true, turn on interactive comments, since
-         that's what Posix.2 says to do
-
-                                  7/20
-                                  ----
-lib/malloclib/{malloc.c,free.c,malloc.h}
-       - bug fix from Mike Haertel
-
-builtins/mkbuiltins.c
-       - added code so that the Posix.2 `special' builtins have
-         SPECIAL_BUILTIN added to the flags in their entry in the
-         builtins array defined in builtins.c
-
-shell.c
-       - declare `restricted' as `extern int', since it's already
-         declared in flags.c
-
-lib/readline/bind.c
-       - only try to set the keymap to vi_insertion_keymap in
-         rl_set_keymap_from_edit_mode if VI_MODE is #defined
-
-lib/malloc/malloc.c
-       - define NO_SBRK_DECL for hpux_9
-
-machines.h
-       - hpux_9 needs to link with libPW.a to pick up alloca(), which
-         has reportedly been fixed
-
-lib/tilde/Makefile
-       - add a definition for RM to the makefile
-
-                                  7/21
-                                  ----
-documentation/Makefile
-       - added info, dvi targets
-       - changed `squeaky-clean' to `distclean'
-       - use $(MAKEINFO) in recipes rather than `makeinfo'
-
-bashline.c
-       - fixed memory leak in cleanup_expansion_error
-       - fixed up some extern declarations of pre_process_line
-
-cpp-Makefile
-       - define HAVE_FIXED_INCLUDES by default if we're using gcc
-
-                                  7/27
-                                  ----
-machines.h
-       - add -ldgc to the DG/UX description if we're not building an
-         `M88KBCS_TARGET'
-
-                                  7/28
-                                  ----
-shell.c
-       - always initialize top_level_mask from what the shell inherits,
-         even for login shells
-
-lib/tilde/tilde.c
-       - declare the getpw functions only for USG systems
-
-                                  7/30
-                                  ----
-lib/readline/readline.c
-       - new function: _rl_kill_kbd_macro () to cancel any keyboard
-         macros being defined on a SIGINT
-
-lib/readline/signals.c
-       - call _rl_kill_kbd_macro on a SIGINT
-
-bashline.c
-       - don't bind anything with a META via rl_add_defun; change those to
-         add the definition unbound, then explicitly bind it into
-         emacs_meta_keymap
-
-                                   8/3
-                                   ---
-bashline.c
-       - save and restore the value of rl_startup_hook when using it in
-         special editing functions
-
-                                   8/4
-                                   ---
-general.c
-       - new global variable: global_error_list, returned instead of -1
-         from functions returning lists
-       - changed delete_element to return &global_error_list instead of
-         (char **)-1
-
-braces.c, general.c, expr.c
-       - removed the conditional definition of NULL; it should be defined
-         in general.h
-
-lib/glob/glob.c
-       - new global variable: glob_error_return, returned instead of
-         (char **)-1 to signal a glob error
-       - changed functions to return &glob_error_return instead of
-         (char **)-1
-
-subst.c
-       - fix the GLOB_FAILED macro to test against &glob_error_return
-         rather than (char **)-1
-
-builtins/ulimit.def
-       - cleaned up the casts like (long) -1; changed to -1L, which is
-         equivalent and more correct
-
-lib/readline/complete.c
-       - use the address of a new local variable `dead_slot' to mark
-         dead slots in the list of completion matches rather than
-         (char *)-1, which doesn't work everywhere
-
-lib/readline/history.c
-       - have get_history_word_specifier return the address of a static
-         variable `error_pointer' in case of error, rather than (char *)-1
-
-lib/readline/signals.c
-       - if SHELL is defined, don't mess with SIGTSTP, SIGTTIN, or SIGTTOU
-
-lib/readline/vi_mode.c
-       - make rl_vi_change_case skip over characters that are neither
-         upper nor lower case
-
-                                   8/5
-                                   ---
-lib/readline/funmap.c
-       - made qsort_string_compare compare the first characters of the
-         two strings before calling strcmp()
-
-builtins/bind.def
-       - rewrote to use internal_getopt
-       - map specifications made with -m now affect all other options
-         and binding specifications
-       - no processing is done until all the options have been processed
-       - the -q option is now limited to a single argument, as the
-         documentation has always stated
-
-lib/readline/vi_mode.c
-       - fixed the `r' command so that the replacement is saved, and it
-         is redoable
-
-command.h
-       - add `line' members to the simple_command and command structs to
-         keep track of the line number the command appears on for $LINENO
-
-make_cmd.c
-       - save line number when making a `bare' simple command to the value
-         of line_number
-       - save the first line of a function definition in make_function_def
-
-copy_cmd.c
-       - make sure that the line number information is copied with a command
-
-execute_cmd.c
-       - use the line number attached to the start of a function definition
-         and the line number of commands to update line_number while a
-         function is executing
-
-                                   8/6
-                                   ---
-config.h, config.h.mini, cpp-Makefile
-       - made ONESHOT a configuration option rather than a cpp define in
-         cpp-Makefile
-
-builtins/fc.def, builtins/getopts.def
-       - removed the code that defines NULL if undefined -- these files
-         include general.h, which already does that
-
-lib/posixheaders/stdc.h
-       - new file containing macros so that functions can be defined with
-         prototypes using the __P macro and compile on both ANSI C and
-         `traditional' C compilers
-
-lib/malloc/malloc.c
-       - changed the ASSERT macro to use a new __STRING define when calling
-         botch(), so that ANSI C systems see the correct error string
-         rather than `p' (unfortunately, the MAGICx constants are expanded
-         in the string passed to botch())
-
-                                   8/7
-                                   ---
-bashline.c, execute_cmd.c, variables.c, parse.y, make_cmd.c, jobs.c
-       - removed extern declarations of functions already declared as extern
-         in bash header files
-
-execute_cmd.c
-       - include lib/tilde/tilde.h
-       - include builtins/common.h
-       - include builtins/builtext.h for the extern declarations for the
-         shell builtins
-       - moved vfree() to general.c
-
-builtins/common.c
-       - made dotted_filename static
-       - made builtin_address_internal static
-
-builtins/common.h
-       - new file with extern declarations for all functions defined in
-         common.c
-
-variables.h
-       - added extern declaration of qsort_string_compare, assign_in_env
-
-mailcheck.c
-       - removed full_pathname (), since it is a function of general use
-
-general.c
-       - moved full_pathname () here from mailcheck.c
-       - moved vfree() here from execute_cmd.c
-
-general.h
-       - added extern declaration for full_pathname
-
-subst.h
-       - added extern declaration for dequote_string
-
-jobs.h
-       - added external declarations for wait_for_background_pids and
-         wait_for_single_pid
-
-parse.y
-       - new function: find_reserved_word
-
-builtins/{alias,builtin,cd,exec,exit,hash,read,setattr,shift,trap,wait}.def
-       - removed extern declarations, replaced with inclusion of common.h
-
-builtins/type.def
-       - include common.h, remove extraneous extern declarations
-       - call find_reserved_word instead of searching word_token_alist
-
-builtins/bashgetopt.h
-       - new file, extern declarations for stuff defined in bashgetopt.c
-
-builtins/{bind,command,fc,histctl,jobs,setattr}.def
-       - include bashgetopt, removed internal getopt extern declarations
-
-cpp-Makefile, builtins/Makefile
-       - add dependencies on bashgetopt.h to builtins
-       - add dependencies on common.h to builtins
-
-nojobs.c
-       - wait_for_background_pids should be void
-
-                                   8/9
-                                   ---
-builtins/common.c
-       - new function, double_quote(), to double-quote strings
-
-documentation/bash.1
-       - added text specifying return value of `command -[vV]'
-       - added description of the -E option to echo
-       - added text specifying that `enable' accepts -a in place of -all
-
-                                  8/10
-                                  ----
-shell.c
-       - since non-Posix systems with job control use top_level_mask,
-         it needs to be initialized correctly by
-         initialize_terminating_signals
-
-mailcheck.c
-       - fixed mailpath-parsing code to correctly handle backslash-quoted
-         `?' and `%' in the $MAILPATH entries by adding a function
-         parse_mailpath_spec to return a pointer to the first unquoted
-         `?' or `%' and having remember_mail_dates and check_mail call it
-
-documentation/bash_builtins.1
-       - new man page for bash builtins, from jaws@pangaea.dme.nt.gov.au
-         (implemented by using number registers as flags and sourcing
-         bash.1)
-
-                                  8/16
-                                  ----
-bashline.c
-       - have maybe_make_readline_line use rl_delete_text rather than
-         rl_kill_text because the text need not be saved on the kill
-         ring
-
-                                  8/17
-                                  ----
-jobs.h
-       - don't include extern declarations for fork(), getpid(), or
-         getpgrp() if __SVR4_2__ is defined (Unixware, SVR4.2).
-         __SVR4_2__ used as in siglist.h
-
-test.c
-       - don't include extern declarations for getegid(), getgid(),
-         or geteuid() if __SVR4_2__ is defined (Unixware, SVR4.2)
-
-                                  8/18
-                                  ----
-execute_cmd.c
-       - don't check that the current directory in the path is `.' if
-         we've already found `.' in the path in find_user_command_internal
-       - new function make_full_pathname, to glue `path' and `name'
-         together in find_user_command_internal rather than using sprintf,
-         which is very slow
-
-                                  8/19
-                                  ----
-
-support/mksysdefs
-       - packaged all of the uname calls into one block at the top of the
-         script; uname sets up some script variables:
-
-               UNAME
-               UNAME_R
-               UNAME_M
-               RELEASE
-               LEVEL
-       - make sure machines running SVR4.2 have __SVR4_2__ defined
-
-machines.h
-       - for i386 machines running SVR4.2, make sure that __SVR4_2__ is
-         added to SYSDEP_CFLAGS
-
-test.c
-       - changed the test_exit define to use the do { ... } while(0) idiom
-       - made GID_T and UID_T be int for BSD/386, since that's what
-         getgroups() returns
-       - cast both sides of a test to UID_T or GID_T to make sure we're
-         on the same page when testing
-
-lib/readline/bind.c, lib/readline/readline.c
-       - fixes to deal with the Cray's pointers of different sizes --
-         pointers to functions are a different size than pointers to
-         structs
-
-                                  8/20
-                                  ----
-machines.h, test.c, jobs.h, siglist.h, support/mksysdefs
-       - changed __SVR4_2__ to USGr4_2
-
-support/getcppsyms.c
-       - added support for recognizing __SVR4_2__ and USGr4_2
-
-                                  8/23
-                                  ----
-
-variables.c
-       - added a static variable that keeps track of whether or not
-         function local variables have been created with the `local'
-         or `typeset' builtins and short-circuits the call to
-         kill_all_local_variables if none have been created
-
-lib/readline/vi_mode.c
-       - extern declaration for rl_vi_check and rl_digit_loop1
-       - declare `count' argument to rl_vi_delete
-       - made rl_vi_set_last a void function
-
-lib/readline/bind.c
-       - declare `count' argument to strnicmp
-
-lib/readline/readline.c
-       - made rl_add_undo, free_undo_list void functions
-
-lib/readline/readline.c, lib/readline/bind.c, lib/readline/search.c,
-lib/readline/vi_mode.c
-       - changed return; to return 0; and added explicit returns to many
-         `int' returning functions that didn't return a value
-
-                                  8/24
-                                  ----
-builtins/ulimit.def
-       - check for RLIMIT_RSS being defined before trying to use it
-
-machines.h
-       - fixes to cray machine description from Bill Jones
-
-builtins/common.c
-       - make all of the dollar_arg_stack stuff static
-
-lib/malloc/alloca.c
-       - new version, from emacs 19
-
-                                  8/26
-                                  ----
-lib/readline/complete.c
-       - use double quotes to quote replacement text with word breaks
-         rather than single quotes, which inhibit tilde expansion
-
-lib/readline/vi_keymap.c
-       - changed TAB to default to completion for the VI insert keymap
-
-bashline.c
-       - new function: posix_readline_initialize to make any changes
-         to the readline keymaps when switching into and out of Posix.2
-         mode
-       - call posix_readline_initialize from initialize_readline
-
-subst.c
-       - call posix_readline_initialize from sv_strict_posix
-
-                                  8/27
-                                  ----
-subst.c
-       - changed USE_GLOB_LIBRARY to USE_POSIX_GLOB_LIBRARY to make the
-         intent clear
-
-shell.c
-       - new function, issock(fd) returns 1 if FD is a socket according
-         to fstat(2) -- note that this only works if S_ISSOCK is defined
-         in posixstat.h
-       - run_startup_files calls issock to see whether or not to run
-         the .bashrc
-
-input.c
-       - include general.h for declarations of xmalloc, xrealloc
-
-lib/tilde/tilde.c, lib/tilde/tilde.h
-       - tilde_expansion_failure_hook is now a pointer to a CPFunction,
-         since that's how it's used
-
-lib/readline/history.c
-       - include <string.h> or <strings.h> as appropriate
-
-                                  8/29
-                                  ----
-machines.h
-       - avoid `M_MACHINE redefined' messages in the hpux description
-
-                                  8/30
-                                  ----
-jobs.h
-       - added #defines for sigfillset, sigdelset, and sigismember to fill
-         out the Posix.1 signal functions
-
-general.h
-       - add an extern declaration for getwd()
-
-general.c
-       - NeXT machines already have a vfree() with a declaration in stdlib.h,
-         so don't define our vfree() on those systems
-
-cpp-Makefile
-       - NeXT machines don't have a link to `gcc', so make sure that
-         HAVE_GCC is not defined on those machines, even if __GNUC__ is
-
-lib/readline/readline.h, lib/readline/complete.c
-       - rl_attempted_completion_function is now declared as a pointer to
-         a CPPFunction, since that's how it is used
-
-bashline.c, bracecomp.c
-       - fixed assignments to rl_attempted_completion_function, since it's
-         now a pointer to a CPPFunction
-
-lib/readline/keymaps.h
-       - fleshed out declarations of function types inside __FUNCTION_DEF
-         macro to match other files
-
-lib/readline/readline.h
-       - removed typedefs for function pointer types, since they are now
-         declared in keymaps.h
-
-                                  8/31
-                                  ----
-
-lib/readline/complete.c
-       - if there is more than one match, don't quote the replacement
-         text unless the matching prefix has a word break character.  The
-         old code quoted the replacement if any of the possible replacements
-         had a word break character
-
-builtins/alias.def
-       - fixed memory leak -- free the array returned by all_aliases when
-         alias is called without arguments
-
-builtins/read.def
-       - fixed memory leak -- need to free return value from
-         string_list_dollar_star
-
-builtins/fc.def
-       - fixed memory leak -- need to free return value from fc_readline
-
-builtins/hash.def
-       - fixed memory leak -- need to free return value from
-         find_user_command
-
-builtins/alias.def
-       - fixed memory leak -- remove_alias needs to free the key in the
-         hash table entry it deletes
-
-execute_cmd.c
-       - fixed memory leak in find_user_command_in_path: if we're not
-         returning full_path, we need to free it
-
-lib/readline/bind.def
-       - fixed memory leak -- need to free the returned arrays from
-         recursive calls to invoking_keyseqs_in_map
-
-                                   9/1
-                                   ---
-builtins/bind.def
-       - return failure immediately if no_line_editing is set
-
-builtins/shift.def
-       - fixed memory leak -- make sure all of the word list element from
-         rest_of_args is freed when shifting it into dollar_vars[9]
-
-builtins/hash.def
-       - fixed memory leak -- only need to save the key for a particular
-         hash item once in remember_filename
-
-expr.c
-       - fixed memory leak -- free `tokstr' after performing the assignment
-         statement and before assigning to it with savestring
-
-execute_cmd.c
-       - fixed memory leak -- need to free the copy of the command line
-         passed to make_child in execute_disk_command if the command is
-         not found
-
-lib/readline/display.c
-       - fixed call to tgoto in delete_chars -- caused the delete to fail
-         when using term_DC on some systems
-
-[code made available via ftp -- first redistributable version]
diff --git a/CWRU/old-conf/Makefile b/CWRU/old-conf/Makefile
deleted file mode 100644 (file)
index 5331319..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-# Hey Emacs, this Makefile is in -*- makefile -*- mode!
-#
-# Makefile for Bash.
-# If your cpp doesn't like -P, just get rid of it (the -P, not cpp).
-# If you wish to use Gcc, then type `make CC=gcc CPPNAME='$(CC) -E''.
-# If you wish to use GNU's Make, then change `MAKE'.
-# If you don't like the destination, then change `bindir'.
-# The file that you most likely want to look at is cpp-Makefile.
-#
-# If you haven't read README, now might be a good time.
-
-# Include some boilerplate Gnu makefile definitions.
-prefix = /usr/local
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-srcdir = .
-VPATH = $(srcdir)
-
-# MAKE    = make
-RM      = rm -f
-SHELL   = /bin/sh
-GAWK     = awk
-# GAWK     = gawk
-
-# Force CPPNAME to be the name of your C preprocesor if Bash can't
-# find it.  For instance, `CPPNAME=/usr/libexec/cpp' on 4.4 BSD.
-# If all else fails, set CPPNAME=$(CC) -E
-CPPNAME =
-CPP     = `/bin/sh $(CPPMAGIC) $(GETCPPSYMS) "$(CPPNAME)"` -P
-
-CPP_MAKEFILE = $(srcdir)/cpp-Makefile
-ANSI_MAKEFILE = ansi-Makefile
-
-# CPPFLAGS = $(SYSTEM) $(CPP_DEFINES)
-CPPFLAGS = $(CPP_DEFINES) -I. -I$(srcdir)
-CPP_ARGS = -DCPP_CC="$(CC)"
-
-SUPPORTDIR     = ./support/
-SUPPORTSRC     = $(srcdir)/support/
-
-MKSYSDEFS      = $(SUPPORTSRC)mksysdefs
-CPPMAGIC       = $(SUPPORTSRC)cppmagic
-CAT_S          = $(SUPPORTSRC)cat-s
-GETCPPSYMS     = $(SUPPORTDIR)getcppsyms
-GETCPPSYMS_SRC = $(SUPPORTSRC)getcppsyms.c
-
-# Here is a command which compresses runs of multiple blank lines to a
-# single blank line.  "cat -s" works for BSD systems, but not for USG
-# systems.  You can use an awk script if you like.  If you have too
-# much trouble with this, just forget it.  It is for making
-# bash-Makefile pretty and readable; something that isn't strictly
-# necessary.
-# SQUASH_BLANKS = cat -s
-#
-SQUASH_BLANKS = $(GAWK) -f $(CAT_S)
-
-all:   .notified bash-Makefile
-       $(MAKE) -f bash-Makefile $(MFLAGS) $(MAKEARGS) srcdir=$(srcdir) \
-               prefix=$(prefix)
-
-bash-Makefile: $(CPP_MAKEFILE) Makefile machines.h sysdefs.h config.h
-       @-if [ -f ansi-Makefile ]; then \
-           echo "cp ansi-Makefile tmp-Makefile.c"; \
-           cp ansi-Makefile tmp-Makefile.c; else \
-           echo "cp $(CPP_MAKEFILE) tmp-Makefile.c"; \
-           cp $(CPP_MAKEFILE) tmp-Makefile.c; \
-         fi
-       $(RM) $(GETCPPSYMS)
-       $(SHELL) $(SUPPORTSRC)mkdirs support
-       $(CC) -o $(GETCPPSYMS) $(GETCPPSYMS_SRC)
-       rm -f bash-Makefile
-       @$(SHELL) -c 'echo $(CPP) $(CPPFLAGS) $(CPP_ARGS) tmp-Makefile.c \| $(SQUASH_BLANKS) \> bash-Makefile'
-       @$(SHELL) -c '$(CPP) $(CPPFLAGS) $(CPP_ARGS) tmp-Makefile.c | $(SQUASH_BLANKS) >bash-Makefile'
-       rm -f tmp-Makefile.c
-       @test -s bash-Makefile || { rm -f bash-Makefile ; exit 1; }
-
-sysdefs.h: $(MKSYSDEFS)
-       $(SHELL) $(MKSYSDEFS) -s $(srcdir)
-
-# This is also performed by support/mksysdefs, but there's no way to change
-# it if cpp-Makefile is changed without changing anything else, since there
-# are no dependencies.  This lets you run `make ansi-Makefile'.
-ansi-Makefile: $(CPP_MAKEFILE)
-       grep -v '/\*\*/' $(CPP_MAKEFILE) > $@
-
-# Subsequent lines contain targets that are correctly handled by an
-# existing bash-Makefile.
-
-install uninstall newversion architecture: bash-Makefile
-       $(MAKE) -f bash-Makefile $(MFLAGS) $(MAKEARGS) bindir=$(bindir) \
-               prefix=$(prefix) $@
-
-tests DEFINES tags documentation: bash-Makefile directory-frob
-       $(MAKE) -f bash-Makefile $(MFLAGS) $(MAKEARGS) bindir=$(bindir) $@
-
-clean distclean realclean: bash-Makefile directory-frob
-       rm -f .notified
-       $(MAKE) -f bash-Makefile $(MFLAGS) $(MAKEARGS) bindir=$(bindir) $@
-
-directory-frob:
-
-.NOEXPORT:
-
-.notified:
-       @echo ""
-       @echo "   You are about to make this version of GNU Bash for"
-       @echo "   this architecture for the first time.  If you haven't"
-       @echo "   yet read the README file, you may want to do so.  If"
-       @echo "   you wish to report a bug in Bash, or in the installation"
-       @echo "   procedure, please run the bashbug script and include:"
-       @echo ""
-       @echo " * a description of the bug,"
-       @echo " * a recipe for recreating the bug reliably,"
-       @echo " * a fix for the bug if you have one!"
-       @echo ""
-       @touch .notified
diff --git a/CWRU/old-conf/Makefile.builtins b/CWRU/old-conf/Makefile.builtins
deleted file mode 100644 (file)
index 1d486e9..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-# This Makefile for building libbuiltins.a is in -*- text -*- for Emacs.
-#
-MKBUILTINS = mkbuiltins
-RANLIB = ranlib
-CFLAGS = -g -I.. -I.
-SHELL = /bin/sh
-# CC = cc
-AR = ar
-RM = rm -f
-CP = cp
-
-srcdir = .
-VPATH = .:$(srcdir)
-
-.SUFFIXES:
-.SUFFIXES: .def .c .o
-# How to make a .o file from a .def file.
-.def.o:
-       $(RM) $@
-       ./$(MKBUILTINS) $(DIRECTDEFINE) $<
-       $(CC) -c $(CFLAGS) $(CPPFLAGS) $*.c || ( $(RM) $*.c ; exit 1 )
-       $(RM) $*.c
-
-# How to make a .c file from a .def file.
-.def.c:
-       $(RM) $@
-       ./$(MKBUILTINS) $(DIRECTDEFINE) $<
-
-# Here is a rule for making .o files from .c files that does not
-# force the type of the machine (like -M_MACHINE) into the flags.
-.c.o:
-       $(RM) $@
-       $(CC) -c $(CFLAGS) $(CPPFLAGS) $<
-
-DEFS =  $(srcdir)/alias.def $(srcdir)/bind.def $(srcdir)/break.def \
-       $(srcdir)/builtin.def $(srcdir)/cd.def $(srcdir)/colon.def \
-       $(srcdir)/command.def $(srcdir)/declare.def $(srcdir)/echo.def \
-       $(srcdir)/enable.def $(srcdir)/eval.def $(srcdir)/getopts.def \
-       $(srcdir)/exec.def $(srcdir)/exit.def $(srcdir)/fc.def \
-       $(srcdir)/fg_bg.def $(srcdir)/hash.def $(srcdir)/help.def \
-       $(srcdir)/history.def $(srcdir)/jobs.def $(srcdir)/kill.def \
-       $(srcdir)/let.def $(srcdir)/read.def $(srcdir)/return.def \
-       $(srcdir)/set.def $(srcdir)/setattr.def $(srcdir)/shift.def \
-       $(srcdir)/source.def $(srcdir)/suspend.def $(srcdir)/test.def \
-       $(srcdir)/times.def $(srcdir)/trap.def $(srcdir)/type.def \
-       $(srcdir)/ulimit.def $(srcdir)/umask.def $(srcdir)/wait.def \
-       $(srcdir)/reserved.def $(srcdir)/pushd.def $(srcdir)/shopt.def
-
-STATIC_SOURCE = common.c getopt.c bashgetopt.c getopt.h 
-
-OFILES = builtins.o \
-       alias.o bind.o break.o builtin.o cd.o colon.o command.o \
-       common.o declare.o echo.o enable.o eval.o exec.o exit.o \
-       fc.o fg_bg.o hash.o help.o history.o jobs.o kill.o let.o \
-       pushd.o read.o return.o set.o setattr.o shift.o source.o \
-       suspend.o test.o times.o trap.o type.o ulimit.o umask.o \
-       wait.o getopts.o shopt.o getopt.o bashgetopt.o 
-
-THINGS_TO_TAR = $(DEFS) $(STATIC_SOURCE) Makefile ChangeLog
-
-CREATED_FILES = builtext.h builtins.c psize.aux pipesize.h
-
-all: $(MKBUILTINS) libbuiltins.a
-
-libbuiltins.a: $(MKBUILTINS) $(OFILES)
-       $(RM) $@
-       $(AR) cq $@ $(OFILES)
-       -$(RANLIB) $@
-
-builtext.h builtins.c: $(MKBUILTINS) $(DEFS)
-       $(RM) builtext.h builtins.c
-       ./$(MKBUILTINS) -externfile builtext.h -structfile builtins.c \
-       -noproduction $(DIRECTDEFINE) $(DEFS)
-
-mkbuiltins: $(srcdir)/mkbuiltins.c ../config.h
-       $(CC) $(CFLAGS) -o $(MKBUILTINS) $(srcdir)/mkbuiltins.c
-
-ulimit.o: ulimit.def pipesize.h
-
-pipesize.h:    psize.aux
-       $(SHELL) $(srcdir)/psize.sh > pipesize.h
-
-psize.aux:     psize.c
-       $(CC) $(CFLAGS) -o $@ $(srcdir)/psize.c
-
-documentation: builtins.texi
-
-$(OFILES):     $(MKBUILTINS) ../config.h
-
-builtins.texi: $(MKBUILTINS)
-       ./$(MKBUILTINS) -documentonly $(DEFS)
-
-clean:
-       $(RM) $(OFILES) $(CREATED_FILES) $(MKBUILTINS) libbuiltins.a
-
-alias.o: alias.def
-bind.o: bind.def
-break.o: break.def
-builtin.o: builtin.def
-cd.o: cd.def
-colon.o: colon.def
-command.o: command.def
-declare.o: declare.def
-echo.o: echo.def
-enable.o: enable.def
-eval.o: eval.def
-exec.o: exec.def
-exit.o: exit.def
-fc.o: fc.def
-fg_bg.o: fg_bg.def
-hash.o: hash.def
-help.o: help.def
-history.o: history.def
-jobs.o: jobs.def
-kill.o: kill.def
-let.o: let.def
-pushd.o: pushd.def
-read.o: read.def
-return.o: return.def
-set.o: set.def
-setattr.o: setattr.def
-shift.o: shift.def
-source.o: source.def
-suspend.o: suspend.def
-test.o: test.def
-times.o: times.def
-trap.o: trap.def
-type.o: type.def
-umask.o: umask.def
-wait.o: wait.def
-getopts.o: getopts.def
-reserved.o: reserved.def
-
-common.o: ../shell.h ../command.h ../config.h ../memalloc.h ../general.h
-common.o: ../variables.h ../input.h hashcom.h ../bashhist.h
-common.o: ../quit.h  ../unwind_prot.h ../maxpath.h ../jobs.h ../builtins.h
-common.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-common.o: ../execute_cmd.h ../error.h
-alias.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-alias.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-alias.o: ../shell.h ../unwind_prot.h ../variables.h common.h ../maxpath.h
-bind.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-bind.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-bind.o: ../maxpath.h ../bashline.h
-bind.o: ../shell.h ../unwind_prot.h ../variables.h bashgetopt.h
-break.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-break.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-break.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-builtin.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-builtin.o: ../quit.h common.h ../maxpath.h
-builtin.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-builtin.o: ../shell.h ../unwind_prot.h ../variables.h 
-cd.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-cd.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-cd.o: ../shell.h ../unwind_prot.h ../variables.h common.h ../maxpath.h
-command.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-command.o: ../quit.h bashgetopt.h ../maxpath.h
-command.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-command.o: ../shell.h ../unwind_prot.h ../variables.h 
-declare.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-declare.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-declare.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-echo.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-echo.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-echo.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-enable.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-enable.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-enable.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-eval.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-eval.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-eval.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-exec.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-exec.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-exec.o: ../shell.h ../unwind_prot.h ../variables.h common.h ../execute_cmd.h
-exec.o: ../maxpath.h ../flags.h
-exit.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-exit.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-exit.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-fc.o: ../builtins.h ../command.h bashgetopt.h ../bashhist.h
-fc.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-fc.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-fc.o: ../flags.h ../unwind_prot.h ../variables.h ../shell.h ../maxpath.h
-fg_bg.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-fg_bg.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-fg_bg.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-getopts.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-getopts.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-getopts.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-hash.o: ../builtins.h ../command.h ../quit.h ../execute_cmd.h
-hash.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-hash.o: ../shell.h ../unwind_prot.h ../variables.h common.h ../maxpath.h
-help.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-help.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-help.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-history.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-history.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-history.o: ../filecntl.h ../shell.h ../unwind_prot.h ../variables.h
-history.o: ../bashhist.h ../maxpath.h
-inlib.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-inlib.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-inlib.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-jobs.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-jobs.o: ../quit.h bashgetopt.h ../maxpath.h
-jobs.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-jobs.o: ../shell.h ../unwind_prot.h ../variables.h 
-kill.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-kill.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-kill.o: ../shell.h ../trap.h ../unwind_prot.h ../variables.h ../maxpath.h
-let.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-let.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-let.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-pushd.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-pushd.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-pushd.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h common.h
-read.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-read.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-read.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-return.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-return.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-return.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-set.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-set.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-set.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-setattr.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-setattr.o: ../quit.h common.h bashgetopt.h ../maxpath.h
-setattr.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-setattr.o: ../shell.h ../unwind_prot.h ../variables.h 
-shift.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-shift.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-shift.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-source.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-source.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-source.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-suspend.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-suspend.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-suspend.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-test.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-test.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-test.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-times.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-times.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-times.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-trap.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-trap.o: ../quit.h common.h ../maxpath.h
-trap.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-trap.o: ../shell.h ../unwind_prot.h ../variables.h ../execute_cmd.h
-type.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-type.o: ../quit.h common.h ../maxpath.h
-type.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-type.o: ../shell.h ../unwind_prot.h ../variables.h 
-ulimit.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-ulimit.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-ulimit.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-umask.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-umask.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-umask.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-wait.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-wait.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-wait.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-shopt.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h
-shopt.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h
-shopt.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h
-shopt.o: common.h bashgetopt.h
-bashgetopt.o: ../bashansi.h ../ansi_stdlib.h
-mkbuiltins.o: ../bashansi.h ../ansi_stdlib.h
-fc.o: ../bashansi.h ../ansi_stdlib.h
-
-#bind.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h
diff --git a/CWRU/old-conf/Makefile.documentation b/CWRU/old-conf/Makefile.documentation
deleted file mode 100644 (file)
index 3096a51..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-# This Makefile is for the Bash/documentation directory -*- text -*-.
-#
-CP         = cp
-RM         = rm -f
-
-INSTALL_DATA = install -c -m 644
-
-DOC_SUPPORT = ../lib/doc-support/
-TEXINDEX    = $(DOC_SUPPORT)texindex
-TEXINDSRC   = $(DOC_SUPPORT)texindex.c
-TEX        = tex
-QUIETPS            = #set this to -q to shut up dvips
-DVIPS      = dvips -D 300 $(QUIETPS) -o $@     # tricky
-TEXINPUTS   = ./../lib/readline/doc
-MAKEINFO    = makeinfo
-
-# Change to groff -Tascii if you don't have nroff
-NROFF      = nroff
-
-# This should be a program that converts troff to postscript
-GROFF      = groff
-
-HSUSER      = ./../lib/readline/doc/hsuser.texinfo
-RLUSER      = ./../lib/readline/doc/rluser.texinfo
-
-.SUFFIXES:     .0 .1 .3 .ms .ps .txt .dvi
-
-.1.ps:
-       $(RM) $@
-       -${GROFF} -man $< > $@
-
-.1.0:
-       $(RM) $@
-       -${NROFF} -man $< > $@
-
-.ms.ps:
-       $(RM) $@
-       -${GROFF} -ms $< > $@
-
-.ms.txt:
-       $(RM) $@
-       -${NROFF} -ms $< > $@
-
-.3.ps:
-       $(RM) $@
-       -${GROFF} -man $< > $@
-
-.3.0:
-       $(RM) $@
-       -${NROFF} -man $< > $@
-
-all: ps info dvi text
-
-ps: bash.ps builtins.ps readline.ps article.ps
-dvi: features.dvi features.ps 
-info: features.info
-text: bash.0 builtins.0 readline.0
-
-features.dvi: features.texi $(HSUSER) $(RLUSER)
-       TEXINPUTS=.:$(TEXINPUTS):$$TEXINPUTS $(TEX) features.texi
-       $(TEXINDEX) features.??
-       TEXINPUTS=.:$(TEXINPUTS):$$TEXINPUTS $(TEX) features.texi
-
-features.ps: features.dvi
-       $(RM) $@
-       $(DVIPS) features.dvi
-
-features.info: features.texi $(HSUSER) $(RLUSER)
-       $(MAKEINFO) --no-split -I$(TEXINPUTS) features.texi
-
-bash.dvi: $(TEXINDEX) bash.texinfo $(HSUSER) $(RLUSER)
-       TEXINPUTS=.:$(TEXINPUTS):$$TEXINPUTS $(TEX) bash.texinfo
-       $(TEXINDEX) bash.??
-       TEXINPUTS=.:$(TEXINPUTS):$$TEXINPUTS $(TEX) bash.texinfo
-
-bashman.ps: bash.dvi
-       rm -f $@
-       $(DVIPS) bash.dvi
-
-bash.txt: bash.1
-bash.ps: bash.1
-builtins.ps: builtins.1 bash.1
-builtins.txt: builtins.1 bash.1
-readline.txt: readline.3
-readline.ps: readline.3
-article.ps: article.ms
-
-$(TEXINDEX): $(TEXINDSRC)
-       (cd $(DOC_SUPPORT); $(MAKE) $(MFLAGS) texindex)
-
-hsuser.texinfo: ../lib/readline/doc/hsuser.texinfo
-       ln -s ../lib/readline/doc/hsuser.texinfo .
-
-rluser.texinfo: ../lib/readline/doc/rluser.texinfo
-       ln -s ../lib/readline/doc/rluser.texinfo .
-
-clean:
-       rm -f *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
-       *.fns *.kys *.tps *.vrs *.o core texindex rluser.texinfo hsuser.texinfo
-
-distclean:
-       rm -f *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
-       *.dvi *.info *.info-* *.fns *.kys *.tps *.vrs *.o core texindex \
-       rluser.texinfo hsuser.texinfo
-
-realclean:     clean
-
-install: all
-       -[ -d $(mandir) ] || mkdir $(mandir)
-       $(INSTALL_DATA) bash.1 $(mandir)
-       sed 's:so bash.1:so man1/bash.1:' < builtins.1 > $(mandir)/bash_builtins.1
-       -[ -d $(man3dir) ] || mkdir $(man3dir)
-       $(INSTALL_DATA) readline.3 $(man3dir)
-       -[ -d $(infodir) ] || mkdir $(infodir)
-       $(INSTALL_DATA) features.info $(infodir)/bash.info
-
-uninstall:
-       $(RM) $(mandir)/bash.1 $(mandir)/bash_builtins.1
-       $(RM) $(man3dir)/readline.3 $(infodir)/bash.info
diff --git a/CWRU/old-conf/Makefile.lib.glob b/CWRU/old-conf/Makefile.lib.glob
deleted file mode 100644 (file)
index 467a510..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-## -*- text -*- ####################################################
-#                                                                 #
-# Makefile for the GNU Glob Library.                              #
-#                                                                 #
-####################################################################
-
-# This Makefile is hand made from a template file, found in
-# ../template.  Each library must provide several Makefile
-# targets: `all', `clean', `documentation', `install', and
-# `what-tar'.  The `what-tar' target reports the names of the
-# files that need to be included in a tarfile to build the full
-# code and documentation for this library.
-
-# Please note that the values for INCLUDES, CC, AR, RM, CP,
-# RANLIB, and selfdir are passed in from ../Makefile, and do
-# not need to be defined here.
-srcdir = .
-VPATH = .:$(srcdir)
-
-# Here is a rule for making .o files from .c files that doesn't force
-# the type of the machine (like -sun3) into the flags.
-.c.o:
-       $(CC) -c $(CFLAGS) $(INCLUDES) $(LOCAL_DEFINES) $(CPPFLAGS) $<
-
-# LOCAL_DEFINES are flags that are specific to this library.
-# Define -DUSG if you are using a System V operating system.
-LOCAL_DEFINES = $(LOCAL_INCLUDES) #-DUSG
-
-# For libraries which include headers from other libraries.
-LOCAL_INCLUDES = -I..
-
-# The name of the library target.
-LIBRARY_NAME = libglob.a
-
-# The C code source files for this library.
-CSOURCES = $(srcdir)glob.c $(srcdir)fnmatch.c
-
-# The header files for this library.
-HSOURCES = $(srcdir)fnmatch.h
-
-OBJECTS = glob.o fnmatch.o
-
-# The texinfo files which document this library.
-DOCSOURCE = doc/glob.texi
-DOCOBJECT = doc/glob.dvi
-DOCSUPPORT = doc/Makefile
-DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT)
-
-SUPPORT = Makefile ChangeLog $(DOCSUPPORT)
-
-SOURCES  = $(CSOURCES) $(HSOURCES) $(DOCSOURCE)
-
-THINGS_TO_TAR = $(SOURCES) $(SUPPORT)
-
-######################################################################
-
-all: $(LIBRARY_NAME)
-
-$(LIBRARY_NAME): $(OBJECTS)
-       $(RM) -f $@
-       $(AR) cq $@ $(OBJECTS)
-       -[ -n "$(RANLIB)" ] && $(RANLIB) $@
-
-what-tar:
-       @for file in $(THINGS_TO_TAR); do \
-         echo $(selfdir)$$file; \
-       done
-
-documentation: force
-       -(cd doc; $(MAKE) $(MFLAGS))
-force:
-
-# The rule for 'includes' is written funny so that the if statement
-# always returns TRUE unless there really was an error installing the
-# include files.
-install:
-       -$(MV) $(bindir)/$(LIBRARY_NAME) $(bindir)/$(LIBRARY_NAME)-old
-       $(CP) $(LIBRARY_NAME) $(bindir)/$(LIBRARY_NAME)
-       -[ -n "$(RANLIB)" ] && $(RANLIB) -t $(bindir)/$(LIBRARY_NAME)
-
-clean:
-       rm -f $(OBJECTS) $(LIBRARY_NAME)
-       -(cd doc; $(MAKE) $(MFLAGS) clean)
-
-
-######################################################################
-#                                                                   #
-#  Dependencies for the object files which make up this library.     #
-#                                                                   #
-######################################################################
-
-fnmatch.o: fnmatch.c fnmatch.h
diff --git a/CWRU/old-conf/Makefile.lib.malloc b/CWRU/old-conf/Makefile.lib.malloc
deleted file mode 100644 (file)
index c6a7b0e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-# Skeleton Makefile for the GNU malloc code
-#
-# Maybe this should really create a library instead of just compiling
-# source files
-
-srcdir = .
-VPATH = .:$(srcdir)
-
-.c.o:
-       $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
-
-.s.o:
-       $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
-
-MALLOC_SOURCE = malloc.c
-
-ALLOCA_SOURCE = alloca.c
-ALLOCA_OBJECT = alloca.o
-
-libmalloc.a:   malloc.o $(ALLOCA)
-       rm -f $@
-       ar cq $@ malloc.o $(ALLOCA)
-       -[ -n "$(RANLIB)" ] && $(RANLIB) $@
-
-malloc.o: malloc.c getpagesize.h
-
-$(ALLOCA_OBJECT): $(ALLOCA_SOURCE)
-
-alloca.o:      $(ALLOCA_SOURCE)
-       $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
-       @- if [ "$(ALLOCA_OBJECT)" != alloca.o ]; then \
-               mv $(ALLOCA_OBJECT) alloca.o >/dev/null 2>&1 ; \
-       fi
diff --git a/CWRU/old-conf/Makefile.lib.readline b/CWRU/old-conf/Makefile.lib.readline
deleted file mode 100644 (file)
index 7a12a1f..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-## -*- text -*- ####################################################
-#                                                                 #
-# Makefile for the GNU Readline and History Libraries.            #
-#                                                                 #
-####################################################################
-
-srcdir = .
-VPATH = .:$(srcdir)
-
-INSTALL = install -c
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_DATA = ${INSTALL} -m 644
-
-RANLIB = ranlib
-AR = ar
-RM = rm
-CP = cp
-MV = mv
-
-# See the file STANDALONE for the -D defines that readline understands
-DEFS =
-# For libraries which include headers from other libraries.
-LOCAL_INCLUDES = -I. -I..
-
-CPPFLAGS = $(DEFS) $(LOCAL_INCLUDES)
-
-# Here is a rule for making .o files from .c files that doesn't force
-# the type of the machine (like -sun3) into the flags.
-.c.o:
-       $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
-
-# The name of the main library target.
-LIBRARY_NAME = libreadline.a
-
-# The C code source files for this library.
-CSOURCES = $(srcdir)readline.c $(srcdir)funmap.c $(srcdir)keymaps.c \
-          $(srcdir)vi_mode.c $(srcdir)parens.c $(srcdir)rltty.c \
-          $(srcdir)complete.c $(srcdir)bind.c $(srcdir)isearch.c \
-          $(srcdir)display.c $(srcdir)signals.c $(srcdir)emacs_keymap.c \
-          $(srcdir)vi_keymap.c $(srcdir)util.c $(srcdir)kill.c \
-          $(srcdir)undo.c $(srcdir)macro.c $(srcdir)input.c \
-          $(srcdir)callback.c $(srcdir)xmalloc.c \
-          $(srcdir)history.c $(srcdir)histsearch.c $(srcdir)histexpand.c \
-          $(srcdir)histfile.c \
-          $(srcdir)tilde.c \
-
-# The header files for this library.
-HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \
-          posixstat.h tilde.h rlconf.h
-
-HISTOBJ = history.o histexpand.o histfile.o histsearch.o
-TILDEOBJ= tilde.o
-OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \
-         rltty.o complete.o bind.o isearch.o display.o signals.o \
-         util.o kill.o undo.o macro.o input.o callback.o xmalloc.o \
-         $(HISTOBJ) $(TILDEOBJ)
-
-# The texinfo files which document this library.
-DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo
-DOCOBJECT = doc/readline.dvi
-DOCSUPPORT = doc/Makefile
-DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT)
-
-SUPPORT = Makefile ChangeLog $(DOCSUPPORT) examples/[-a-z.]*
-
-SOURCES  = $(CSOURCES) $(HSOURCES) $(DOCSOURCE)
-
-THINGS_TO_TAR = $(SOURCES) $(SUPPORT)
-
-INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h
-
-##########################################################################
-
-all: libreadline.a libhistory.a
-
-libreadline.a: $(OBJECTS)
-       $(RM) -f $@
-       $(AR) cq $@ $(OBJECTS)
-       -[ -n "$(RANLIB)" ] && $(RANLIB) $@
-
-libhistory.a: $(HISTOBJ) xmalloc.o
-       $(RM) -f $@
-       $(AR) cq $@ $(HISTOBJ) xmalloc.o
-       -[ -n "$(RANLIB)" ] && $(RANLIB) $@
-
-documentation: force
-       [ ! -d doc ] && mkdir doc
-       (if [ -d doc ]; then cd doc; $(MAKE) $(MFLAGS); fi)
-
-force:
-
-# The rule for 'includes' is written funny so that the if statement
-# always returns TRUE unless there really was an error installing the
-# include files.
-install: installdirs libreadline.a
-       for file in $(INSTALLED_HEADERS) ; do \
-               $(INSTALL_DATA) $(srcdir)/$$file $(incdir)/readline ; \
-       done
-       ${INSTALL_DATA} readline.h keymaps.h chardefs.h history.h \
-               $(incdir)/readline
-       -${MV} $(libdir)/libreadline.a $(libdir)/libreadline.old
-       ${INSTALL_DATA} libreadline.a $(bindir)/libreadline.a
-       -[ -n "$(RANLIB)" ] && $(RANLIB) -t $(bindir)/libreadline.a
-
-installdirs:
-       -[ ! -d $(incdir)/readline ] && { \
-         mkdir $(incdir)/readline && chmod 755 $(incdir)/readline; }
-       -[ ! -d $(libdir) ] && mkdir $(libdir)
-
-uninstall:
-       cd $(incdir)/readline && ${RM} -f ${INSTALLED_HEADERS}
-       cd $(libdir) && ${RM} -f libreadline.a libreadline.old
-
-clean:
-       rm -f $(OBJECTS) *.a
-       (if [ -d doc ]; then cd doc; $(MAKE) $(MFLAGS) $@; fi)
-
-tags:  force
-       etags $(CSOURCES) $(HSOURCES)
-
-TAGS:  force
-       ctags -x $(CSOURCES) $(HSOURCES) > $@
-
-readline: readline.h rldefs.h chardefs.h
-readline: $(OBJECTS)
-       $(CC) $(CFLAGS) $(CPPFLAGS) $(READLINE_DEFINES) \
-         $(LOCAL_INCLUDES) -DTEST -o readline readline.c vi_mode.o funmap.o \
-         keymaps.o -ltermcap
-
-realclean distclean mostlyclean: clean
-
-# Dependencies
-readline.o: readline.c readline.h rldefs.h rlconf.h chardefs.h
-readline.o: keymaps.h history.h
-vi_mode.o: rldefs.h rlconf.h readline.h history.h
-funmap.o: funmap.c readline.h rlconf.h
-keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c keymaps.h chardefs.h rlconf.h
-history.o: history.h histlib.h
-histexpand.o: history.h histlib.h
-histsearch.o: history.h histlib.h
-histfile.o: history.h histlib.h
-isearch.o: readline.h history.h
-search.o: readline.h history.h
-display.o: readline.h history.h rldefs.h rlconf.h
-complete.o: readline.h rldefs.h rlconf.h
-rltty.o: rldefs.h rlconf.h readline.h
-bind.o: rldefs.h rlconf.h readline.h history.h
-signals.o: rldefs.h rlconf.h readline.h history.h
-parens.o: readline.h
-kill.o: rldefs.h rlconf.h readline.h history.h
-macro.o: rldefs.h rlconf.h readline.h history.h
-undo.o: rldefs.h rlconf.h readline.h history.h
-input.o: rldefs.h rlconf.h readline.h history.h
-callback.o: rlconf.h rldefs.h readline.h
diff --git a/CWRU/old-conf/Makefile.lib.termcap b/CWRU/old-conf/Makefile.lib.termcap
deleted file mode 100644 (file)
index bbdf99f..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-## -*- text -*- ####################################################
-#                                                                 #
-# Makefile for termcap replacement libbrary.                      #
-#                                                                 #
-####################################################################
-
-# Here is a rule for making .o files from .c files that doesn't force
-# the type of the machine (like -sun3) into the flags.
-.c.o:
-       $(CC) -c $(CFLAGS) $(LOCAL_INCLUDES) $(CPPFLAGS) $*.c
-
-# Destination installation directory.  The libraries are copied to DESTDIR
-# when you do a `make install'.
-DESTDIR = /usr/local/lib
-
-DEBUG_FLAGS = -g
-#OPTIMIZE_FLAGS = -O
-LDFLAGS = $(DEBUG_FLAGS) 
-CFLAGS = $(DEBUG_FLAGS) $(OPTIMIZE_FLAGS)
-
-SHELL = /bin/sh
-
-# A good alternative is gcc -traditional.
-#CC = gcc -traditional
-CC = cc
-RANLIB = /usr/bin/ranlib
-AR = ar
-RM = rm
-CP = cp
-
-CSOURCES = termcap.c tparam.c
-
-SOURCES  = $(CSOURCES)
-
-OBJECTS = termcap.o tparam.o
-
-DOCUMENTATION = termcap.texinfo
-
-THINGS_TO_TAR = $(SOURCES) $(DOCUMENTATION)
-
-##########################################################################
-
-all: libtermcap.a
-
-libtermcap.a:  $(OBJECTS)
-               $(RM) -f $@
-               $(AR) clq $@ $(OBJECTS)
-               -[ -n "$(RANLIB)" ] && $(RANLIB) $@
-
-termcap.tar:   $(THINGS_TO_TAR)
-               tar -cf $@ $(THINGS_TO_TAR)
-
-termcap.tar.Z: termcap.tar
-               compress -f termcap.tar
-
-install:       $(DESTDIR)/libtermcap.a
-
-clean:
-               rm -f *.o *.a *.log *.cp *.tp *.vr *.fn *.aux *.pg *.toc
-
-$(DESTDIR)/libtermcap.a: libtermcap.a
-               -mv $(DESTDIR)/libtermcap.a $(DESTDIR)/libtermcap.old
-               cp libtermcap.a $@
-               -[ -n "$(RANLIB)" ] && $(RANLIB) -t $@
diff --git a/CWRU/old-conf/Makefile.lib.tilde b/CWRU/old-conf/Makefile.lib.tilde
deleted file mode 100644 (file)
index b3f4c26..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-## -*- text -*- ####################################################
-#                                                                 #
-# Makefile for the GNU Tilde Library.                             #
-#                                                                 #
-####################################################################
-
-# This Makefile is hand made from a template file, found in
-# ../template.  Each library must provide several Makefile
-# targets: `all', `clean', `documentation', `install', and
-# `what-tar'.  The `what-tar' target reports the names of the
-# files that need to be included in a tarfile to build the full
-# code and documentation for this library.
-
-# Please note that the values for INCLUDES, CC, AR, RM, CP,
-# RANLIB, and selfdir are passed in from ../Makefile, and do
-# not need to be defined here.
-RM = rm
-
-srcdir = .
-VPATH = .:$(srcdir)
-
-# Here is a rule for making .o files from .c files that doesn't force
-# the type of the machine (like -sun3) into the flags.
-.c.o:
-       $(CC) -c $(CFLAGS) $(INCLUDES) $(LOCAL_DEFINES) $(CPPFLAGS) $<
-
-# LOCAL_DEFINES are flags that are specific to this library.
-# Define -DUSG if you are using a System V operating system.
-LOCAL_DEFINES = $(LOCAL_INCLUDES) #-DUSG
-
-# For libraries which include headers from other libraries.
-LOCAL_INCLUDES = -I..
-
-# The name of the library target.
-LIBRARY_NAME = libtilde.a
-
-# The C code source files for this library.
-CSOURCES = $(srcdir)/tilde.c
-
-# The header files for this library.
-HSOURCES = $(srcdir)/tilde.h
-
-OBJECTS = tilde.o
-
-# The texinfo files which document this library.
-DOCSOURCE = doc/tilde.texi
-DOCOBJECT = doc/tilde.dvi
-DOCSUPPORT = doc/Makefile
-DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT)
-
-SUPPORT = Makefile ChangeLog $(DOCSUPPORT)
-
-SOURCES  = $(CSOURCES) $(HSOURCES) $(DOCSOURCE)
-
-THINGS_TO_TAR = $(SOURCES) $(SUPPORT)
-
-######################################################################
-
-all: $(LIBRARY_NAME)
-
-$(LIBRARY_NAME): $(OBJECTS)
-       $(RM) -f $@
-       $(AR) cq $@ $(OBJECTS)
-       -[ -n "$(RANLIB)" ] && $(RANLIB) $@
-
-what-tar:
-       @for file in $(THINGS_TO_TAR); do \
-         echo $(selfdir)$$file; \
-       done
-
-documentation: force
-       -(cd doc; $(MAKE) $(MFLAGS))
-force:
-
-# The rule for 'includes' is written funny so that the if statement
-# always returns TRUE unless there really was an error installing the
-# include files.
-install:
-       -$(MV) $(bindir)/$(LIBRARY_NAME) $(bindir)/$(LIBRARY_NAME)-old
-       $(CP) $(LIBRARY_NAME) $(bindir)/$(LIBRARY_NAME)
-       -[ -n "$(RANLIB)" ] && $(RANLIB) -t $(bindir)/$(LIBRARY_NAME)
-
-clean:
-       $(RM) -f $(OBJECTS) $(LIBRARY_NAME)
-       -(cd doc; $(MAKE) $(MFLAGS) clean)
-
-
-######################################################################
-#                                                                   #
-#  Dependencies for the object files which make up this library.     #
-#                                                                   #
-######################################################################
-
-tilde.o: tilde.h tilde.c
diff --git a/CWRU/old-conf/config.h b/CWRU/old-conf/config.h
deleted file mode 100644 (file)
index b805d0d..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-/* config.h -- Configuration file for bash. */
-
-/* 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. */
-
-#if !defined (_CONFIG_H_)
-#define _CONFIG_H_
-
-#if !defined (BUILDING_MAKEFILE)
-#include "memalloc.h"
-#endif
-
-#if defined (HAVE_UNISTD_H) && !defined (BUILDING_MAKEFILE)
-#  ifdef CRAY
-#    define word __word
-#  endif
-#include <unistd.h>
-#  ifdef CRAY
-#    undef word
-#  endif
-#endif
-
-/* Define JOB_CONTROL if your operating system supports
-   BSD-like job control. */
-#define JOB_CONTROL
-
-/* Note that vanilla System V machines don't support BSD job control,
-   although some do support Posix job control. */
-#if defined (USG) || defined (MINIX) || defined (Minix)
-#  if !defined (_POSIX_JOB_CONTROL)
-#    undef JOB_CONTROL
-#  endif /* !_POSIX_JOB_CONTROL */
-#endif /* USG || Minix || MINIX */
-
-/* Define ALIAS if you want the alias features. */
-#define ALIAS
-
-/* Define PUSHD_AND_POPD if you want those commands to be compiled in.
-   (Also the `dirs' commands.) */
-#define PUSHD_AND_POPD
-
-/* Define BRACE_EXPANSION if you want curly brace expansion a la Csh:
-   foo{a,b} -> fooa foob.  Even if this is compiled in (the default) you
-   can turn it off at shell startup with `-nobraceexpansion', or during
-   shell execution with `set +o braceexpand'. */
-#define BRACE_EXPANSION
-
-/* Define READLINE to get the nifty/glitzy editing features.
-   This is on by default.  You can turn it off interactively
-   with the -nolineediting flag. */
-#define READLINE
-
-/* Define BANG_HISTORY if you want to have Csh style "!" history expansion.
-   This is unrelated to READLINE. */
-#define BANG_HISTORY
-
-/* Define HISTORY if you want to have access to previously typed commands.
-
-   If both HISTORY and READLINE are defined, you can get at the commands
-   with line editing commands, and you can directly manipulate the history
-   from the command line.
-
-   If only HISTORY is defined, the `fc' and `history' builtins are
-   available. */
-#define HISTORY
-
-#if defined (BANG_HISTORY) && !defined (HISTORY)
-   /* BANG_HISTORY requires HISTORY. */
-#  define HISTORY
-#endif /* BANG_HISTORY && !HISTORY */
-
-#if defined (READLINE) && !defined (HISTORY)
-#  define HISTORY
-#endif
-
-/* Define this if you want completion that puts all alternatives into
-   a brace expansion shell expression. */
-#if defined (BRACE_EXPANSION) && defined (READLINE)
-#  define BRACE_COMPLETION
-#endif /* BRACE_EXPANSION */
-
-/* The default value of the PATH variable. */
-#define DEFAULT_PATH_VALUE \
-  "/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:."
-
-/* The value for PATH when invoking `command -p'.  This is only used when
-   the Posix.2 confstr () function, or CS_PATH define are not present. */
-#define STANDARD_UTILS_PATH \
-  "/bin:/usr/bin:/usr/ucb:/usr/sbin:/etc:/usr/etc"
-
-/* Define V9_ECHO if you want to give the echo builtin backslash-escape
-   interpretation using the -e option, in the style of the Bell Labs 9th
-   Edition version of echo. */
-#define V9_ECHO
-
-/* Define DEFAULT_ECHO_TO_USG if you want the echo builtin to interpret
-   the backslash-escape characters by default, like the System V echo.
-   This requires that V9_ECHO be defined. */
-/* #define DEFAULT_ECHO_TO_USG */
-#if !defined (V9_ECHO)
-#  undef DEFAULT_ECHO_TO_USG
-#endif
-
-/* Define CONTINUE_AFTER_KILL_ERROR if you want the kill command to
-   continue processing arguments after one of them fails. */
-#define CONTINUE_AFTER_KILL_ERROR
-
-/* Define BREAK_COMPLAINS if you want the non-standard, but useful
-   error messages about `break' and `continue' out of context. */
-#define BREAK_COMPLAINS
-
-/* Define HELP_BUILTIN if you want the `help' shell builtin and the long
-   documentation strings compiled into the shell. */
-#define HELP_BUILTIN
-
-/* Define RESTRICTED_SHELL if you want the generated shell to have the
-   ability to be a restricted one.  The shell thus generated can become
-   restricted by being run with the name "rbash", or by setting the -r
-   flag. */
-#define RESTRICTED_SHELL
-
-/* If the shell is called by this name, it will become restricted. */
-#if defined (RESTRICTED_SHELL)
-#define RESTRICTED_SHELL_NAME "rbash"
-#endif
-
-/* Define DISABLED_BUILTINS if you want "builtin foo" to always run the
-   shell builtin "foo", even if it has been disabled with "enable -n foo". */
-/* #define DISABLED_BUILTINS */
-
-/* Define PROCESS_SUBSTITUTION if you want the K*rn shell-like process
-   substitution features "<(file)". */
-/* Right now, you cannot do this on machines without fully operational
-   FIFO support.  This currently include NeXT and Alliant. */
-#if !defined (MKFIFO_MISSING) || defined (HAVE_DEV_FD)
-#  define PROCESS_SUBSTITUTION
-#endif /* !MKFIFO_MISSING */
-
-/* Define PROMPT_STRING_DECODE if you want the backslash-escaped special
-   characters in PS1 and PS2 expanded.  Variable expansion will still be
-   performed. */
-#define PROMPT_STRING_DECODE
-
-/* Define BUFFERED_INPUT if you want the shell to do its own input
-   buffering. */
-#define BUFFERED_INPUT
-
-/* Define ONESHOT if you want sh -c 'command' to avoid forking to execute
-   `command' whenever possible. */
-#define ONESHOT
-
-/* Default primary and secondary prompt strings. */
-#define PPROMPT "\\s\\$ "
-#define SPROMPT "> "
-
-/* Define SELECT_COMMAND if you want the Korn-shell style `select' command:
-       select word in word_list; do command_list; done */
-#define SELECT_COMMAND
-
-/* Define ARRAY_VARS if you want ksh-style one-dimensional array variables. */
-#define ARRAY_VARS
-
-#endif /* !_CONFIG_H_ */
diff --git a/CWRU/old-conf/config.h.mini b/CWRU/old-conf/config.h.mini
deleted file mode 100644 (file)
index 3c967ac..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/* config.h -- Configuration file for bash. */
-
-/* This is a `minimal' configuration file.  It will create a shell without:
-       job control
-       aliases
-       pushd and popd
-       readline
-       history
-       restricted shell mode
-       `disabled' builtins (builtin xxx finds xxx even after enable -n xxx)
-       process substitution
-       prompt string decoding (though variable expansion is still done)
-       the `select' command
-       the `help' builtin
-*/
-       
-/* 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. */
-
-#if !defined (_CONFIG_H_)
-#define _CONFIG_H_
-
-#include "memalloc.h"
-
-#if defined (HPUX) || defined (UNIXPC) || defined (Xenix)
-#  if !defined (USG)
-#    define USG
-#  endif
-#endif
-
-#if defined (HAVE_UNISTD_H) && !defined (BUILDING_MAKEFILE)
-#include <unistd.h>
-#endif
-
-/* Define JOB_CONTROL if your operating system supports
-   BSD-like job control. */
-/* #define JOB_CONTROL */
-
-/* Note that vanilla System V machines don't support BSD job control,
-   although some do support Posix job control. */
-#if defined (USG) && !defined (_POSIX_JOB_CONTROL)
-#  undef JOB_CONTROL
-#endif /* USG && !_POSIX_JOB_CONTROL */
-
-/* Define ALIAS if you want the alias features. */
-/* #define ALIAS */
-
-/* Define PUSHD_AND_POPD if you want those commands to be compiled in.
-   (Also the `dirs' commands.) */
-/* #define PUSHD_AND_POPD */
-
-/* Define BRACE_EXPANSION if you want curly brace expansion a la Csh:
-   foo{a,b} -> fooa foob.  Even if this is compiled in (the default) you
-   can turn it off at shell startup with `-nobraceexpansion', or during
-   shell execution with `set +o braceexpand'. */
-/* #define BRACE_EXPANSION */
-
-/* Define READLINE to get the nifty/glitzy editing features.
-   This is on by default.  You can turn it off interactively
-   with the -nolineediting flag. */
-/* #define READLINE */
-
-/* Define BANG_HISTORY if you want to have Csh style "!" history expansion.
-   This is unrelated to READLINE. */
-/* #define BANG_HISTORY */
-
-/* Define HISTORY if you want to have access to previously typed commands.
-
-   If both HISTORY and READLINE are defined, you can get at the commands
-   with line editing commands, and you can directly manipulate the history
-   from the command line.
-
-   If only HISTORY is defined, the `fc' and `history' builtins are
-   available. */
-/* #define HISTORY */
-
-#if defined (BANG_HISTORY) && !defined (HISTORY)
-   /* BANG_HISTORY requires HISTORY. */
-#  define HISTORY
-#endif /* BANG_HISTORY && !HISTORY */
-
-#if defined (READLINE) && !defined (HISTORY)
-#  define HISTORY
-#endif
-
-/* Define this if you want completion that puts all alternatives into
-   a brace expansion shell expression. */
-#if defined (BRACE_EXPANSION) && defined (READLINE)
-#  define BRACE_COMPLETION
-#endif /* BRACE_EXPANSION */
-
-/* The default value of the PATH variable. */
-#define DEFAULT_PATH_VALUE \
-  "/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:."
-
-/* The value for PATH when invoking `command -p'.  This is only used when
-   the Posix.2 confstr () function, or CS_PATH define are not present. */
-#define STANDARD_UTILS_PATH \
-  "/bin:/usr/bin:/usr/ucb:/usr/sbin:/etc:/usr/etc"
-
-/* The default directory in which to look for mail files when
-   checking mail.  The trailing slash is required. */
-#if defined (USG)
-#  define DEFAULT_MAIL_PATH "/usr/mail/"
-#else
-#  define DEFAULT_MAIL_PATH "/usr/spool/mail/"
-#endif
-
-/* Define V9_ECHO if you want to give the echo builtin backslash-escape
-   interpretation using the -e option, in the style of the Bell Labs 9th
-   Edition version of echo. */
-#define V9_ECHO
-
-/* Define DEFAULT_ECHO_TO_USG if you want the echo builtin to interpret
-   the backslash-escape characters by default, like the System V echo.
-   This requires that V9_ECHO be defined. */
-/* #define DEFAULT_ECHO_TO_USG */
-#if !defined (V9_ECHO)
-#  undef DEFAULT_ECHO_TO_USG
-#endif
-
-/* Define CONTINUE_AFTER_KILL_ERROR if you want the kill command to
-   continue processing arguments after one of them fails. */
-#define CONTINUE_AFTER_KILL_ERROR
-
-/* Define BREAK_COMPLAINS if you want the non-standard, but useful
-   error messages about `break' and `continue' out of context. */
-#define BREAK_COMPLAINS
-
-/* Define HELP_BUILTIN if you want the `help' shell builtin and the long
-   documentation strings compiled into the shell. */   
-/* #define HELP_BUILTIN */
-
-/* Define RESTRICTED_SHELL if you want the generated shell to have the
-   ability to be a restricted one.  The shell thus generated can become
-   restricted by being run with the name "rbash", or by setting the -r
-   flag. */
-/* #define RESTRICTED_SHELL */
-
-/* Define DISABLED_BUILTINS if you want "builtin foo" to always run the
-   shell builtin "foo", even if it has been disabled with "enable -n foo". */
-/* #define DISABLED_BUILTINS */
-
-/* Define PROCESS_SUBSTITUTION if you want the K*rn shell-like process
-   substitution features "<(file)". */
-/* Right now, you cannot do this on machines without fully operational
-   FIFO support.  This currently include NeXT and Alliant. */
-#if !defined (MKFIFO_MISSING)
-#  define PROCESS_SUBSTITUTION
-#endif /* !MKFIFO_MISSING */
-
-/* Define PROMPT_STRING_DECODE if you want the backslash-escaped special
-   characters in PS1 and PS2 expanded.  Variable expansion will still be
-   performed. */
-/* #define PROMPT_STRING_DECODE */
-
-/* Define BUFFERED_INPUT if you want the shell to do its own input
-   buffering. */
-#define BUFFERED_INPUT
-
-/* Define ONESHOT if you want sh -c 'command' to avoid forking to execute
-   `command' whenever possible. */
-#define ONESHOT
-
-/* Default primary and secondary prompt strings. */
-#define PPROMPT "\\s\\$ "
-#define SPROMPT "> "
-
-/* Define SELECT_COMMAND if you want the Korn-shell style `select' command:
-       select word in word_list; do command_list; done */
-/* #define SELECT_COMMAND */
-
-/* Define ARRAY if you want ksh-style one-dimensional arrays. */
-/* #define ARRAY_VARS */
-
-#endif /* !_CONFIG_H_ */
diff --git a/CWRU/old-conf/configure b/CWRU/old-conf/configure
deleted file mode 100755 (executable)
index 53e10b6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-#
-# This shell script does nothing since Bash doesn't require
-# configuration to be forced on it; it auto-configures.  You can
-# change the location of the source directory with +srcdir.
-#
-echo "Bash is configured to auto configure."
-exit 0
diff --git a/CWRU/old-conf/cpp-Makefile b/CWRU/old-conf/cpp-Makefile
deleted file mode 100644 (file)
index 3e8887a..0000000
+++ /dev/null
@@ -1,1379 +0,0 @@
-/* This -*- C -*- file (cpp-Makefile) is run through the C preprocessor
-   to produce bash-Makefile which is machine specific.
-
-   If you have Gcc and/or Bison, you might wish to mention that right
-   below here.
-
-   Since this is to become a Makefile, blank lines which appear outside
-   of comments may not contain a TAB character.
-
-   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. */
-
-/**/# This Makefile is automagically made from cpp-Makefile.  You should
-/**/# not be editing this file; edit cpp-Makefile, machines.h, or
-/**/# support/mksysdefs instead.  Then, assuming the edits were required
-/**/# to compile Bash on your system, mail the changes you had to make to
-/**/# bash-maintainers@prep.ai.mit.edu.  We will do our best to incorporate
-/**/# them into the next release.
-
-/**/# Make sure the first target in the makefile is the right one
-all: .made
-
-/* **************************************************************** */
-/*                                                                 */
-/*                     Which compiler are you using?               */
-/*                                                                 */
-/* **************************************************************** */
-
-/* Define HAVE_GCC if you have the GNU C compiler. */
-/* #define HAVE_GCC */
-
-#if defined (__GNUC__) && !defined (HAVE_GCC) && !defined (GCC_STANDARD)
-#  define HAVE_GCC
-#endif
-
-/* Undefine HAVE_FIXED_INCLUDES if you are not using GCC with the fixed
-   header files. */
-#if defined (HAVE_GCC) && !defined (HAVE_FIXED_INCLUDES)
-#  define HAVE_FIXED_INCLUDES
-#endif /* HAVE_GCC && !HAVE_FIXED_INCLUDES */
-
-/* Include some boilerplate Gnu makefile definitions. */
-prefix = /usr/local
-
-/**/#prefix = @prefix@
-
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-libdir = $(exec_prefix)/lib
-
-manroot = $(prefix)/man
-
-man1ext = 1
-man1dir = $(manroot)/man$(man1ext)
-man3ext = 3
-man3dir = $(manroot)/man$(man3ext)
-mandir = $(man1dir)
-manext = $(man1ext)
-
-infodir = $(prefix)/info
-
-srcdir = .
-/**/#srcdir = @srcdir@
-
-VPATH = .:$(srcdir)
-
-incdir = $(prefix)/include
-/**/#incdir = @incdir@
-
-/* If you have purify, and want to use it, uncomment this definition or
-   run the make as `make -f bash-Makefile bash PURIFY=purify'. */
-PURIFY = # purify
-
-/* This includes the appropriate description for the machine that you are
-   using (we hope).  If the compilation doesn't work correctly, then you
-   will have to edit the file `machines.h' to include a description for the
-   machine that your Cpp uniquely identifies this as.  For example, Sun 4's
-   are recognized by the Cpp identifier `sparc', Vax is recognized with `vax',
-   etc.  The order of these files is very important.  Config.h must come last,
-   since it is capable of undef'ing various things. */
-#define BUILDING_MAKEFILE   /* Tell config.h to avoid #including anything. */
-#include "sysdefs.h"
-#include "machines.h"
-#include "config.h"
-
-/**/# Here is a rule for making .o files from .c files that does not
-/**/# force the type of the machine (like -M_MACHINE) into the flags.
-.c.o:
-       $(RM) $@
-       $(CC) $(CCFLAGS) $(CPPFLAGS) -c $<
-
-YACC = YACC_PROG
-
-#if defined (HAVE_GCC)
-#  if defined (GCC_FLAGS)
-GCC_EXTRAS = GCC_FLAGS
-#  endif /* GCC_FLAGS */
-#  if !defined (HAVE_FIXED_INCLUDES)
-/* This is guaranteed to work, even if you have the fixed includes!
-   (Unless, of course, you have the fixed include files installed in
-   /usr/include.  Then it will break.) */
-CC = gcc -traditional -I/usr/include $(GCC_EXTRAS)
-#  else /* HAVE_FIXED_INCLUDES */
-CC = gcc $(GCC_EXTRAS)
-#  endif /* HAVE_FIXED_INCLUDES */
-#else /* !HAVE_GCC */
-CC = CPP_CC
-#endif /* !HAVE_GCC */
-
-SHELL=/bin/sh
-CP = cp
-RM = rm -f
-AR = ar
-#if defined (RANLIB_LOCATION)
-RANLIB = RANLIB_LOCATION
-#else
-RANLIB = ranlib
-#endif /* RANLIB_LOCATION */
-
-INSTALL_PROGRAM = $(SUPPORT_SRC)install.sh -c -s
-INSTALL_DATA = $(SUPPORT_SRC)install -c -m 644
-
-COMPRESS = gzip
-COMPRESS_EXT = .gz
-
-Machine = M_MACHINE
-OS = M_OS
-
-/**/# PROFILE_FLAGS is either -pg, to generate profiling info for use
-/**/# with gprof, or nothing (the default).
-PROFILE_FLAGS=
-
-/* These are defined in machines.h or sysdefs.h */
-#if defined (SYSDEP_CFLAGS)
-/**/# This system has some peculiar flags that must be passed to the
-/**/# the C compiler (or to cpp).
-SYSDEP = SYSDEP_CFLAGS
-#endif /* SYSDEP_CFLAGS */
-
-#if defined (SYSDEP_LDFLAGS)
-/**/# This system has some peculiar flags that must be passed to the
-/**/# link editor (ld).
-SYSDEP_LD = SYSDEP_LDFLAGS
-#endif /* SYSDEP_LDFLAGS */
-
-#if defined (HAVE_SETLINEBUF)
-/**/# This system has the setlinebuf () call.
-LINEBUF = -DHAVE_SETLINEBUF
-#endif
-
-#if defined (HAVE_VFPRINTF)
-/**/# This system has the vprintf () and vfprintf () calls.
-VPRINTF = -DHAVE_VFPRINTF
-#endif /* HAVE_VFPRINTF */
-
-#if defined (USE_VFPRINTF_EMULATION)
-VPRINTF = -DHAVE_VFPRINTF -DUSE_VFPRINTF_EMULATION
-#endif /* USE_VFPRINTF_EMULATION */
-
-#if defined (VOID_SIGHANDLER)
-/**/# The signal () call provided by the system returns a pointer to
-/**/# a function returning void.  The signal handlers themselves are
-/**/# thus void functions.
-SIGHANDLER = -DVOID_SIGHANDLER
-#endif
-
-#if defined (HAVE_STRERROR)
-/**/# This system has the strerror () function.
-STRERROR = -DHAVE_STRERROR
-#endif
-
-#if defined (HAVE_GETGROUPS)
-/**/# This system has multiple groups.
-GROUPS = -DHAVE_GETGROUPS
-#endif
-
-#if defined (HAVE_GETWD)
-/**/# This system has the getwd () call.
-GETWD = -DHAVE_GETWD
-#endif
-
-#if defined (HAVE_GETCWD)
-/**/# This system has the getcwd () call.
-GETCWD = -DHAVE_GETCWD
-#endif
-
-#if defined (HAVE_DUP2)
-/**/# This system has a working version of dup2 ().
-DUP2 = -DHAVE_DUP2
-#endif /* HAVE_DUP2 */
-
-#if defined (HAVE_DIRENT)
-/**/# This system uses struct dirent for reading directories with readdir.
-DIRENT = -DHAVE_DIRENT
-#endif /* HAVE_DIRENT */
-
-#if defined (HAVE_STRCHR)
-/**/# This system has strchr () and strrchr () string functions.
-STRCHR = -DHAVE_STRCHR
-#endif /* HAVE_STRCHR */
-
-#if defined (HAVE_STRCASECMP)
-STRCASE = -DHAVE_STRCASECMP
-#endif /* HAVE_STRCASECMP */
-
-#if defined (HAVE_SYS_SIGLIST)
-SIGLIST = -DHAVE_SYS_SIGLIST
-#endif /* HAVE_SYS_SIGLIST */
-
-#if defined (HAVE_DLOPEN)
-DLOPEN = -DHAVE_DLOPEN
-#endif
-
-#if defined (HAVE_DLSYM)
-DLSYM = -DHAVE_DLSYM
-#endif
-
-#if defined (HAVE_DLCLOSE)
-DLCLOSE = -DHAVE_DLCLOSE
-#endif
-
-#if defined (HAVE_ALLOCA)
-ALLOCA_DEFINE = -DHAVE_ALLOCA
-#else
-ALLOCA_DEFINE =
-#endif /* HAVE_ALLOCA */
-
-#if defined (HAVE_SYS_STREAM_H)
-/**/# This system has <sys/stream.h>
-STREAM = -DHAVE_SYS_STREAM_H
-#endif /* HAVE_SYS_STREAM_H */
-
-#if defined (HAVE_SYS_PTEM_H)
-/**/# This system has <sys/ptem.h>
-PTEM = -DHAVE_SYS_PTEM_H
-#endif /* HAVE_SYS_PTEM_H */
-
-#if defined (HAVE_SYS_PTE_H)
-/**/# This system has <sys/pte.h>
-PTE = -DHAVE_SYS_PTE_H
-#endif /* HAVE_SYS_PTE_H */
-
-/**/# This system has <unistd.h>.
-#if defined (HAVE_UNISTD_H)
-UNISTD = -DHAVE_UNISTD_H
-#endif
-
-/**/# This system has <stdlib.h>
-#if defined (HAVE_STDLIB_H)
-STDLIB = -DHAVE_STDLIB_H
-#endif
-
-/**/# This system has <limits.h>
-#if defined (HAVE_LIMITS_H)
-LIMITSH = -DHAVE_LIMITS_H
-#endif
-
-/**/# This system has <locale.h>
-#if defined (HAVE_LOCALE_H)
-LOCALE = -DHAVE_LOCALE_H
-#endif
-
-#if defined (HAVE_ALLOCA_H)
-ALLOCA_H_DEFINE = -DHAVE_ALLOCA_H
-#else
-ALLOCA_H_DEFINE =
-#endif /* HAVE_ALLOCA_H */
-
-#if defined (HAVE_RESOURCE)
-/**/# This system has <sys/resource.h>
-RESOURCE = -DHAVE_RESOURCE
-#endif
-
-#if defined (HAVE_SYS_PARAM)
-/**/# This system has <sys/param.h>
-PARAM = -DHAVE_SYS_PARAM
-#endif
-
-#if defined (HAVE_WAIT_H)
-/**/# This system has <sys/wait.h>
-WAITH = -DHAVE_WAIT_H
-#endif
-
-#if defined (HAVE_DIRENT_H)
-/**/# This system has /usr/include/dirent.h
-DIRENTH = -DHAVE_DIRENT_H
-#endif /* HAVE_DIRENT_H */
-
-#if defined (HAVE_STRING_H)
-/**/# This system has /usr/include/string.h
-STRINGH = -DHAVE_STRING_H
-#endif /* HAVE_STRING_H */
-
-#if defined (HAVE_VARARGS_H)
-/**/# This system has /usr/include/varargs.h
-VARARGSH = -DHAVE_VARARGS_H
-#endif /* HAVE_VARARGS_H */
-
-#if defined (HAVE_DEV_FD)
-/**/# This system has the /dev/fd directory for naming open files.
-DEVFD = -DHAVE_DEV_FD
-#endif /* HAVE_DEV_FD */
-
-/**/# The GNU coding standards don't recognize the possibility that
-/**/# other information besides optimization and debugging might be
-/**/# passed to cc.  A different name should have been used.
-CFLAGS = -O -g
-
-SYSTEM_FLAGS = $(LINEBUF) $(VPRINTF) $(UNISTD) $(STDLIB) $(LIMITSH) $(LOCALE) \
-       $(GROUPS) $(RESOURCE) $(PARAM) $(SIGHANDLER) $(SYSDEP) $(WAITH) \
-       $(GETWD) $(GETCWD) $(DUP2) $(STRERROR) $(DIRENT) $(DIRENTH) $(STRINGH) \
-       $(VARARGSH) $(STRCHR) $(STRCASE) $(DEVFD) $(DLOPEN) $(DLSYM) \
-       $(DLCLOSE) $(SIGLIST) -D$(Machine) -D$(OS) -DPROGRAM='"$(Program)"' \
-       -DHOSTTYPE='$(Machine)' -DOSTYPE='$(OS)'
-
-/* Compilation flags to use in the shell directory and to pass to builds
-   in subdirectories (readline, termcap) to ensure that alloca is treated
-   in a consistent fashion. */
-ALLOCA_CFLAGS = $(ALLOCA_DEFINE) $(ALLOCA_H_DEFINE)
-
-LDFLAGS        = $(NOSHARE) $(SYSDEP_LD) $(EXTRA_LD_PATH) $(PROFILE_FLAGS) $(CFLAGS)
-CCFLAGS        = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) -DSHELL $(ALLOCA_CFLAGS) \
-         $(MALLOC_CFLAGS) $(CFLAGS)
-CPPFLAGS= -I. -I$(srcdir) -I$(LIBSRC) -I$(incdir)
-GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
-                -Wwrite-strings -Werror -Wstrict-prototypes \
-                -Wmissing-prototypes
-GCC_LINT_CFLAGS = $(CCFLAGS) $(GCC_LINT_FLAGS)
-
-/* It is conceivable that you wish to edit some things beyond this point,
-   but I guess that it is highly unlikely, and may give you a headache. */
-
-/* **************************************************************** */
-/*                                                                 */
-/*                 How to Build the support libraries.             */
-/*                                                                 */
-/* **************************************************************** */
-
-/**/# The location of sources for the support libraries.
-LIBPATH = ./lib/
-LIBSRC = $(srcdir)/$(LIBPATH)
-
-/**/# Preface building with the full path of the current library source.
-LIBINC_DECL  = topdir=`sh $(srcdir)/support/srcdir $(srcdir)`; export topdir
-LIBINC_USAGE = "-I$${topdir} -I$${topdir}/$(LIBPATH) -I$(LIBSRC)"
-
-/* Defines used when building libraries. */
-#define LIBMAKE_FLAGS CFLAGS='$(LIBRARY_CFLAGS) '$(LIBINC_USAGE) \
-       CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' \
-       RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' RM='$(RM)' \
-
-/**/# Flags used when building libraries.
-LIBRARY_CFLAGS  = $(PROFILE_FLAGS) $(CFLAGS) $(SIGHANDLER) $(ALLOCA_CFLAGS) \
-                 $(SYSDEP) $(DIRENT) $(DIRENTH) $(STRINGH) $(VARARGSH) \
-                 $(PTEM) $(PTE) $(STREAM) $(STRERROR) $(RESOURCE) \
-                 $(STRCHR) -D$(Machine) -D$(OS) $(UNISTD) $(LIMITSH) \
-                 $(STRCASE) $(STDLIB) -DSHELL
-
-/* Macro used to build a library. */
-#define build_lib_in_dir(directory, target, srcdef, makefile) \
-       @echo "Building in " directory "..."; \
-       sh $(SUPPORT_SRC)mkdirs directory ; \
-       ($(LIBINC_DECL); cd directory; \
-        if [ ! -f Makefile ]; then cp makefile Makefile; fi; \
-        $(MAKE) target $(MFLAGS) LIBMAKE_FLAGS srcdef)
-
-BUILTIN_CFLAGS = $(CCFLAGS)
-BUILTIN_LIBFLAGS = "-I. -I$${topdir} -I$${topdir}/$(LIBPATH) -I$(incdir)"
-
-/* The builtins are somewhat special in that more information is needed
-   to compile them correctly. */
-#define build_builtins(target) \
-       @sh $(SUPPORT_SRC)mkdirs $(DEFDIR) ; \
-       ($(LIBINC_DECL); cd $(DEFDIR); \
-        if [ ! -f Makefile ]; then \
-               cp $(BUILTIN_ABSSRC)/Makefile Makefile; \
-        fi; \
-        $(MAKE) $(MFLAGS) target \
-        srcdir=$(BUILTIN_ABSSRC) CPPFLAGS='' \
-        CFLAGS='$(CCFLAGS) -I$(BUILTIN_ABSSRC) '$(BUILTIN_LIBFLAGS) \
-        LDFLAGS='$(LDFLAGS)' RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' \
-        RM='$(RM)' RL_LIBSRC='$(RL_ABSSRC)' \
-        DIRECTDEFINE='-D '$(BUILTIN_SRCDIR))
-
-/**/# The name of this program.
-Program = bash
-
-/* **************************************************************** */
-/*                                                                  */
-/*                 Support for desired libraries.                   */
-/*    This includes Termcap, Glob, Tilde, History, and Readline.    */
-/*                                                                  */
-/* **************************************************************** */
-
-/* Does this machine's linker need a space after -L? */
-#if defined (HAVE_GCC)
-#  undef SEARCH_LIB_NEEDS_SPACE
-#endif /* HAVE_GCC */
-
-#if defined (SEARCH_LIB_NEEDS_SPACE)
-/**/# The native compiler for this machines requires a space after '-L'.
-SEARCH_LIB = -L $(UNSET_VARIABLE_CREATES_SPACE)
-#else
-/**/# The compiler being used to build Bash can handle -L/library/path.
-SEARCH_LIB = -L
-#endif /* !SEARCH_LIB_NEEDS_SPACE */
-
-#if defined (EXTRA_LIB_SEARCH_PATH)
-/**/# Additional instructions to the linker telling it how to find libraries.
-LOCAL_LD_PATH = EXTRA_LIB_SEARCH_PATH
-EXTRA_LD_PATH = $(SEARCH_LIB)$(LOCAL_LD_PATH)
-#endif /* EXTRA_LIB_SEARCH_PATH */
-
-/* Right now we assume that you have the full source code to Bash.  If
-   you simply have the library and header files installed, then
-   undefine HAVE_READLINE_SOURCE. */
-#define HAVE_READLINE_SOURCE
-
-#if defined (HAVE_READLINE_SOURCE)
-
-RL_LIBSRC = $(LIBSRC)readline/
-RL_LIBDOC = $(RL_LIBSRC)doc/
-RL_LIBDIR = $(LIBPATH)readline/
-RL_ABSSRC = $${topdir}/$(RL_LIBDIR)
-
-READLINE_LIBRARY = $(RL_LIBDIR)libreadline.a
-
-/**/# The source, object and documentation of the GNU Readline library.
-READLINE_SOURCE        = $(RL_LIBSRC)rldefs.h $(RL_LIBSRC)rlconf.h \
-                 $(RL_LIBSRC)readline.h \
-                 $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)keymaps.h \
-                 $(RL_LIBSRC)history.h $(RL_LIBSRC)histlib.h \
-                 $(RL_LIBSRC)posixstat.h $(RL_LIBSRC)tilde.h \
-                 $(RL_LIBSRC)funmap.c $(RL_LIBSRC)emacs_keymap.c \
-                 $(RL_LIBSRC)search.c $(RL_LIBSRC)vi_keymap.c \
-                 $(RL_LIBSRC)keymaps.c $(RL_LIBSRC)parens.c \
-                 $(RL_LIBSRC)vi_mode.c $(RL_LIBSRC)callback.c \
-                 $(RL_LIBSRC)readline.c $(RL_LIBSRC)tilde.c \
-                 $(RL_LIBSRC)rltty.c $(RL_LIBSRC)complete.c \
-                 $(RL_LIBSRC)bind.c $(RL_LIBSRC)isearch.c \
-                 $(RL_LIBSRC)display.c $(RL_LIBSRC)signals.c \
-                 $(RL_LIBSRC)util.c $(RL_LIBSRC)kill.c \
-                 $(RL_LIBSRC)undo.c $(RL_LIBSRC)macro.c \
-                 $(RL_LIBSRC)input.c $(RL_LIBSRC)xmalloc.c \
-                 $(RL_LIBSRC)histexpand.c $(RL_LIBSRC)history.c \
-                 $(RL_LIBSRC)histsearch.c $(RL_LIBSRC)histfile.c
-       
-READLINE_OBJ   = $(RL_LIBDIR)readline.o $(RL_LIBDIR)funmap.o \
-                 $(RL_LIBDIR)parens.o $(RL_LIBDIR)search.o \
-                 $(RL_LIBDIR)keymaps.o $(RL_LIBDIR)xmalloc.o \
-                 $(RL_LIBDIR)rltty.o $(RL_LIBDIR)complete.o \
-                 $(RL_LIBDIR)bind.o $(RL_LIBDIR)isearch.o \
-                 $(RL_LIBDIR)display.o $(RL_LIBDIR)signals.o \
-                 $(RL_LIBDIR)tilde.o $(RL_LIBDIR)util.o \
-                 $(RL_LIBDIR)kill.o $(RL_LIBDIR)undo.o \
-                 $(RL_LIBDIR)macro.o $(RL_LIBDIR)input.o \
-                 $(RL_LIBDIR)callback.o \
-                 $(RL_LIBDIR)history.o $(RL_LIBDIR)histexpand.o \
-                 $(RL_LIBDIR)histsearch.o $(RL_LIBDIR)histfile.o
-
-READLINE_DOC   = $(RL_LIBDOC)rlman.texinfo $(RL_LIBDOC)rluser.texinfo \
-                 $(RL_LIBDOC)rltech.texinfo
-
-READLINE_DOC_SUPPORT  = $(RL_LIBDOC)Makefile $(RL_LIBDOC)readline.dvi \
-                 $(RL_LIBDOC)readline.info
-
-/**/# This has to be written funny to avoid looking like a C comment starter.
-READLINE_EXAMPLES = $(RL_LIBSRC)examples/[a-zA-Z]*.[ch] \
-                   $(RL_LIBSRC)examples/Makefile $(RL_LIBSRC)examples/Inputrc
-
-/**/# Support files for GNU Readline.
-READLINE_SUPPORT = $(RL_LIBSRC)Makefile $(RL_LIBSRC)ChangeLog \
-                  $(RL_LIBSRC)COPYING $(READLINE_EXAMPLES) \
-                  $(READLINE_DOC_SUPPORT)
-
-#else /* !HAVE_READLINE_SOURCE */
-
-#  if defined (READLINE)
-READLINE_LIBRARY = -lreadline
-#  endif /* READLINE */
-RL_LIBDIR = $(srcdir)/$(LIBSRC)readline/
-
-#endif /* !HAVE_READLINE_SOURCE */
-
-#if defined (READLINE)
-/**/# You wish to compile with the line editing features installed.
-READLINE_LIB = -lreadline
-
-/**/# You only need termcap (or curses) if you are linking with GNU Readline.
-#  if defined (USE_TERMCAP_EMULATION)
-TERMCAP_LIB = -lcurses
-#  else  /* !USE_TERMCAP_EMULATION */
-TERMCAP_LIB = -ltermcap
-#  endif /* !USE_TERMCAP_EMULATION */
-
-/**/# Directory list for -L so that the link editor (ld) can find -lreadline.
-#  if !defined (LD_HAS_NO_DASH_L)
-#    if defined (HAVE_READLINE_SOURCE)
-READLINE_LDFLAGS = $(SEARCH_LIB)$(RL_LIBDIR) $(TERMCAP_LDFLAGS)
-#    else
-READLINE_LDFLAGS = $(TERMCAP_LDFLAGS) $(SEARCH_LIB)$(libdir) \
-                  $(SEARCH_LIB)/usr/local/lib
-#    endif /* HAVE_READLINE_SOURCE */
-#  endif /* LD_HAS_NO_DASH_L */
-#endif /* READLINE */
-
-/* Right now we assume that you have the full source code to Bash,
-   including the source code to the history library.  If you only have
-   the library and header files installed, then you can undefine
-   HAVE_HISTORY_SOURCE. */
-#define HAVE_HISTORY_SOURCE
-
-#  if defined (HISTORY) && !defined (READLINE)
-/**/# You are compiling with history features but without line editing.
-HISTORY_LIB = -lhistory
-#  endif /* HISTORY && !READLINE */
-
-#if defined (HAVE_HISTORY_SOURCE)
-
-HIST_LIBSRC = $(LIBSRC)readline/
-HIST_LIBDOC = $(HIST_LIBSRC)doc/
-HIST_LIBDIR = $(LIBPATH)readline/
-HIST_ABSSRC = $${topdir}/$(HIST_LIBDIR)/
-
-/* If you are building with readline, then you do not explicitly need the
-   history library. */
-#  if defined (READLINE)
-HISTORY_LIBRARY = 
-#  else
-HISTORY_LIBRARY = $(HIST_LIBDIR)libhistory.a
-#  endif /* !READLINE */
-
-/**/# The source, object and documentation of the history library.
-HISTORY_SOURCE = $(HIST_LIBSRC)history.c $(HIST_LIBSRC)histexpand.c \
-                 $(HIST_LIBSRC)histsearch.c $(HIST_LIBSRC)histfile.c \
-                 $(HIST_LIBSRC)history.h $(HIST_LIBSRC)histlib.h
-HISTORY_OBJ    = $(HIST_LIBDIR)history.o $(HIST_LIBDIR)histexpand.o \
-                 $(HIST_LIBDIR)histsearch.o $(HIST_LIBDIR)histfile.o
-HISTORY_DOC    = $(HIST_LIBDOC)hist.texinfo $(HIST_LIBDOC)hsuser.texinfo \
-                 $(HIST_LIBDOC)hstech.texinfo
-
-/**/# Directory list for -L so that the link editor (ld) can find -lhistory.
-#  if defined (HISTORY) && !defined (READLINE)
-#    if !defined (LD_HAS_NO_DASH_L)
-HISTORY_LDFLAGS = $(SEARCH_LIB)$(HIST_LIBDIR)
-#    endif /* LD_HAS_NO_DASH_L */
-#  endif /* HISTORY && !READLINE */
-#else /* !HAVE_HISTORY_SOURCE */
-#  if defined (HISTORY) && !defined (READLINE)
-HISTORY_LIBRARY = -lhistory
-HISTORY_LDFLAGS = $(SEARCH_LIB)$(libdir) $(SEARCH_LIB)/usr/local/lib
-#  endif /* HISTORY && !READLINE */
-#endif /* !HAVE_HISTORY_SOURCE */
-
-#if defined (USE_GNU_TERMCAP)
-#  define HAVE_TERMCAP_SOURCE
-TERM_LIBSRC = $(LIBSRC)termcap/
-TERM_LIBDIR = $(LIBPATH)termcap/
-TERM_ABSSRC = $${topdir}/$(TERM_LIBDIR)
-
-/**/# The source, object and documentation for the GNU Termcap library.
-TERMCAP_LIBRARY = $(TERM_LIBDIR)libtermcap.a
-
-TERMCAP_SOURCE = $(TERM_LIBSRC)termcap.c $(TERM_LIBSRC)tparam.c
-TERMCAP_OBJ    = $(TERM_LIBDIR)termcap.o $(TERM_LIBDIR)tparam.o
-TERMCAP_DOC    = $(TERM_LIBSRC)termcap.texinfo
-TERMCAP_SUPPORT = $(TERM_LIBSRC)Makefile $(TERM_LIBSRC)ChangeLog
-
-#  if !defined (LD_HAS_NO_DASH_L)
-TERMCAP_LDFLAGS = $(SEARCH_LIB)$(TERM_LIBDIR)
-#  endif /* !LD_HAS_NO_DASH_L */
-#else /* !USE_GNU_TERMCAP */
-
-/* Guessed at symbol for LIBRARIES, below. */
-#  if defined (USE_TERMCAP_EMULATION)
-TERMCAP_LIBRARY = -lcurses
-#  else /* !USE_TERMCAP_EMULATION */
-TERMCAP_LIBRARY = -ltermcap
-#  endif /* !USE_TERMCAP_EMULATION */
-#endif /* !USE_GNU_TERMCAP */
-
-/* The glob library is always used. */
-#define USE_GLOB_LIBRARY
-
-#if defined (USE_GLOB_LIBRARY)
-GLOB_LIBSRC = $(LIBSRC)glob/
-GLOB_LIBDIR = $(LIBPATH)glob/
-GLOB_ABSSRC = $${topdir}/$(GLOB_LIBDIR)
-
-GLOB_LIBRARY = $(GLOB_LIBDIR)libglob.a
-
-GLOB_SOURCE = $(GLOB_LIBSRC)glob.c $(GLOB_LIBSRC)fnmatch.c \
-             $(GLOB_LIBSRC)glob.h $(GLOB_LIBSRC)fnmatch.h
-GLOB_OBJ    = $(GLOB_LIBDIR)glob.o $(GLOB_LIBDIR)fnmatch.o
-GLOB_DOC    = $(GLOB_LIBSRC)doc/glob.texi $(GLOB_LIBSRC)doc/Makefile
-GLOB_SUPPORT= $(GLOB_LIBSRC)Makefile $(GLOB_LIBSRC)ChangeLog
-
-#  if !defined (LD_HAS_NO_DASH_L)
-GLOB_LDFLAGS = $(SEARCH_LIB)$(GLOB_LIBDIR)
-#  endif /* !LD_HAS_NO_DASH_L */
-GLOB_LIB     = -lglob
-#endif /* USE_GLOB_LIBRARY */
-
-/* The source code for the tilde expansion library. */
-#if defined (HAVE_READLINE_SOURCE)
-#  define HAVE_TILDE_SOURCE
-#endif /* HAVE_READLINE_SOURCE */
-
-#if defined (HAVE_TILDE_SOURCE)
-/**/# The source, object and documentation for the GNU Tilde library.
-TILDE_LIBSRC = $(LIBSRC)tilde/
-TILDE_LIBDIR = $(LIBPATH)tilde/
-TILDE_ABSSRC = $${topdir}/$(TILDE_LIBDIR)
-
-TILDE_LIBRARY = $(TILDE_LIBDIR)libtilde.a
-
-TILDE_SOURCE   = $(TILDE_LIBSRC)tilde.c $(TILDE_LIBSRC)tilde.h
-TILDE_OBJ      = $(TILDE_LIBDIR)tilde.o
-TILDE_DOC      = $(TILDE_LIBSRC)doc/tilde.texi $(TILDE_LIBSRC)doc/Makefile
-TILDE_SUPPORT  = $(TILDE_LIBSRC)Makefile $(TILDE_LIBSRC)ChangeLog
-
-TILDE_LIB = -ltilde
-
-#  if !defined (LD_HAS_NO_DASH_L)
-TILDE_LDFLAGS = $(SEARCH_LIB)$(TILDE_LIBDIR)
-#  endif /* !LD_HAS_NO_DASH_L */
-
-#else /* !HAVE_TILDE_SOURCE */
-/**/# Guessed at location of the tilde 
-TILDE_LIBRARY = $(libdir)/libtilde.a
-#endif /* !HAVE_TILDE_SOURCE */
-
-/**/# The directory which contains the source for malloc.  The name must
-/**/# end in a slash, as in "./lib/malloc/".
-ALLOC_LIBSRC = $(LIBSRC)malloc/
-ALLOC_LIBDIR = $(LIBPATH)malloc/
-ALLOC_ABSSRC = $${topdir}/$(ALLOC_LIBDIR)
-
-/**/# Our malloc.
-#if defined (USE_GNU_MALLOC)
-
-MALLOC_OBJ = $(ALLOC_LIBDIR)malloc.o
-MALLOC_SRC = $(ALLOC_LIBSRC)malloc.c
-MALLOC_FLAGS = -Drcheck -Dbotch=programming_error
-
-MALLOC_LIBRARY = $(ALLOC_LIBDIR)libmalloc.a
-
-#  if !defined (LD_HAS_NO_DASH_L)
-MALLOC_LDFLAGS = $(SEARCH_LIB)$(ALLOC_LIBDIR)
-#  endif /* !LD_HAS_NO_DASH_L */
-MALLOC_LIB     = -lmalloc
-
-MALLOC_DEP = $(MALLOC_LIBRARY)
-#endif /* USE_GNU_MALLOC */
-
-/* If this user doesn't have alloca (), then we must try to supply them
-   with a working one. */
-#if !defined (HAVE_ALLOCA)
-ALLOCA = alloca.o
-#  if defined (ALLOCA_ASM)
-ALLOCA_SOURCE = ALLOCA_ASM
-ALLOCA_OBJECT = ALLOCA_OBJ
-#  else
-ALLOCA_SOURCE = alloca.c
-ALLOCA_OBJECT = alloca.o
-#  endif /* ALLOCA_ASM */
-ALLOCA_DEP = $(ALLOC_LIBSRC)$(ALLOCA_SOURCE)
-#endif /* !HAVE_ALLOCA */
-
-/* Protect the `i386' used in the definition of ALLOC_FILES. */
-#if defined (i386)
-#  undef i386
-#  define i386_defined
-#endif /* i386 */
-
-ALLOC_HEADERS = $(ALLOC_LIBSRC)getpagesize.h
-ALLOC_FILES = $(ALLOC_LIBSRC)malloc.c $(ALLOC_LIBSRC)alloca.c \
-             $(ALLOC_LIBSRC)i386-alloca.s $(ALLOC_LIBSRC)x386-alloca.s \
-             $(ALLOC_LIBSRC)xmalloc.c
-
-/* Perhaps restore the `i386' define. */
-#if defined (i386_defined)
-#  define i386
-#  undef i386_defined
-#endif /* i386_defined */
-
-#if defined (USE_GNU_MALLOC)
-$(ALLOC_LIBDIR)libmalloc.a: $(MALLOC_SRC) $(ALLOCA_DEP)
-               @sh $(SUPPORT_SRC)mkdirs $(ALLOC_LIBDIR)
-               @$(RM) $@
-               @($(LIBINC_DECL); cd $(ALLOC_LIBDIR) ; \
-                if [ ! -f Makefile ]; then cp $(ALLOC_ABSSRC)Makefile Makefile ; fi; \
-                $(MAKE) $(MFLAGS) CC=$(CC) \
-                CFLAGS='$(LIBRARY_CFLAGS) $(MALLOC_FLAGS)' \
-                CPPFLAGS='$(CPPFLAGS)' MALLOC_SOURCE=$(MALLOC_SRC) \
-                ALLOCA=$(ALLOCA) RANLIB=$(RANLIB) \
-                ALLOCA_SOURCE=$(ALLOCA_SOURCE) \
-                ALLOCA_OBJECT=$(ALLOCA_OBJECT) \
-                srcdir=$(ALLOC_ABSSRC) libmalloc.a )
-#endif /* USE_GNU_MALLOC */
-
-BASHPOSIX_LIB     = $(LIBSRC)posixheaders/
-BASHPOSIX_SUPPORT = $(BASHPOSIX_LIB)posixstat.h $(BASHPOSIX_LIB)ansi_stdlib.h \
-                   $(BASHPOSIX_LIB)memalloc.h $(BASHPOSIX_LIB)stdc.h
-
-/**/# Declare all of the sources for the libraries that we have.
-LIBRARY_SOURCE  = $(READLINE_SOURCE) $(HISTORY_SOURCE) $(TERMCAP_SOURCE) \
-                 $(GLOB_SOURCE) $(TILDE_SOURCE) $(MALLOC_SOURCE)
-LIBRARY_DOC    = $(READLINE_DOC) $(HISTORY_DOC) $(TERMCAP_DOC) $(GLOB_DOC) \
-                 $(TILDE_DOC) $(MALLOC_DOC)
-LIBRARY_SUPPORT = $(READLINE_SUPPORT) $(HISTORY_SUPPORT) $(TERMCAP_SUPPORT) \
-                 $(GLOB_SUPPORT) $(TILDE_SUPPORT) $(MALLOC_SUPPORT)
-LIBRARY_TAR     = $(LIBRARY_SOURCE) $(LIBRARY_DOC) $(LIBRARY_SUPPORT)
-
-/**/# The order is important.  Most dependent first.
-#if defined (LD_HAS_NO_DASH_L)
-/**/# This linker does not know how to grok the -l flag, or perhaps how
-/**/# to grok the -L flag, or both.
-LIBRARIES = $(READLINE_LIBRARY) $(HISTORY_LIBRARY) $(TERMCAP_LIBRARY) \
-           $(GLOB_LIBRARY) $(TILDE_LIBRARY) $(MALLOC_LIBRARY) $(LOCAL_LIBS)
-#else /* !LD_HAS_NO_DASH_L */
-LIBRARIES = $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \
-           $(TILDE_LIB) $(MALLOC_LIB) $(LOCAL_LIBS)
-#endif /* !LD_HAS_NO_DASH_L */
-
-#if defined (READLINE)
-#  if defined (HAVE_TERMCAP_SOURCE)
-TERMCAP_DEP = $(TERMCAP_LIBRARY)
-#  endif /* HAVE_TERMCAP_SOURCE */
-#  if defined (HAVE_READLINE_SOURCE)
-READLINE_DEP = $(READLINE_LIBRARY)
-#  endif /* HAVE_READLINE_SOURCE */
-#endif /* READLINE */
-
-#if defined (HISTORY) && defined (HAVE_HISTORY_SOURCE) && !defined (READLINE)
-HISTORY_DEP = $(HISTORY_LIBRARY)
-#endif
-
-#if defined (USE_GLOB_LIBRARY)
-GLOB_DEP = $(GLOB_LIBRARY)
-#else
-GLOBC = glob.c fnmatch.c
-GLOBO = glob.o fnmatch.o
-#endif /* USE_GLOB_LIBRARY */
-
-#if defined (HAVE_TILDE_SOURCE)
-TILDE_DEP = $(TILDE_LIBRARY)
-#endif
-
-/**/# Source files for libraries that Bash depends on.
-LIBDEP = $(READLINE_DEP) $(TERMCAP_DEP) $(GLOB_DEP) $(HISTORY_DEP) \
-        $(TILDE_DEP) $(MALLOC_DEP)
-
-/**/# Rules for cleaning the readline and termcap sources.
-#if defined (HAVE_READLINE_SOURCE)
-CLEAN_READLINE = (cd $(RL_LIBDIR); $(MAKE) $(MFLAGS) clean)
-#else
-CLEAN_READLINE = :
-#endif /* !HAVE_READLINE_SOURCE */
-
-#if defined (HAVE_HISTORY_SOURCE)
-#  if !defined (READLINE)
-CLEAN_HISTORY = (cd $(HIST_LIBDIR); $(MAKE) $(MFLAGS) clean)
-#  else
-CLEAN_HISTORY = :
-#  endif /* READLINE */
-#endif /* !HAVE_HISTORY_SOURCE */
-
-#if defined (HAVE_TERMCAP_SOURCE)
-CLEAN_TERMCAP = (cd $(TERM_LIBDIR); $(MAKE) $(MFLAGS) clean)
-#else
-CLEAN_TERMCAP = :
-#endif /* !HAVE_TERMCAP_SOURCE */
-
-#if defined (USE_GLOB_LIBRARY)
-CLEAN_GLOB = (cd $(GLOB_LIBDIR); $(MAKE) $(MFLAGS) clean)
-#else
-CLEAN_GLOB = :
-#endif /* !USE_GLOB_LIBRARY */
-
-#if defined (HAVE_TILDE_SOURCE)
-CLEAN_TILDE = (cd $(TILDE_LIBDIR); $(MAKE) $(MFLAGS) clean)
-#else
-CLEAN_TILDE = :
-#endif /* !HAVE_TILDE_SOURCE */
-
-CLEAN_MALLOC = (cd $(MALLOC_LIBDIR); $(MAKE) $(MFLAGS) clean)
-
-LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(TILDE_LDFLAGS) \
-                 $(GLOB_LDFLAGS) $(MALLOC_LDFLAGS)
-
-#if defined (REQUIRED_LIBRARIES)
-/**/# Locally required libraries.
-LOCAL_LIBS = REQUIRED_LIBRARIES
-#endif /* REQUIRED_LIBRARIES */
-
-BUILTINS_LIB = builtins/libbuiltins.a
-
-/**/# The main source code for the Bourne Again SHell.
-CSOURCES = shell.c parse.y general.c make_cmd.c print_cmd.c y.tab.c \
-          dispose_cmd.c execute_cmd.c variables.c $(GLOBC) version.c \
-          expr.c copy_cmd.c flags.c subst.c hash.c mailcheck.c \
-          test.c trap.c jobs.c nojobs.c $(ALLOC_FILES) braces.c \
-          vprint.c input.c bashhist.c array.c sig.c \
-          unwind_prot.c siglist.c getcwd.c $(RL_SUPPORT_SRC) error.c
-
-HSOURCES = shell.h flags.h trap.h hash.h jobs.h builtins.h alias.c y.tab.h \
-          general.h variables.h config.h $(ALLOC_HEADERS) alias.h maxpath.h \
-          quit.h machines.h posixstat.h filecntl.h unwind_prot.h parser.h \
-          command.h input.h error.h bashansi.h dispose_cmd.h make_cmd.h \
-          subst.h externs.h siglist.h bashhist.h bashline.h bashtypes.h \
-          array.h sig.h mailcheck.h
-
-SOURCES         = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS)
-
-/**/# Matching object files.
-OBJECTS         = shell.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \
-          dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o \
-          expr.o flags.o jobs.o subst.o hash.o mailcheck.o test.o \
-          trap.o input.o unwind_prot.o sig.o version.o \
-          alias.o array.o braces.o bracecomp.o bashhist.o bashline.o \
-          getcwd.o siglist.o vprint.o \
-          $(BUILTINS_LIB)
-
-/**/# Where the source code of the shell builtins resides.
-BUILTIN_SRCDIR=$(srcdir)/builtins/
-DEFSRC=$(BUILTIN_SRCDIR)
-/**/# The trailing slash was left off this definition on purpose
-BUILTIN_ABSSRC=$${topdir}/builtins
-DEFDIR = builtins/
-BUILTIN_DEFS = $(DEFSRC)alias.def $(DEFSRC)bind.def $(DEFSRC)break.def \
-              $(DEFSRC)builtin.def $(DEFSRC)cd.def $(DEFSRC)colon.def \
-              $(DEFSRC)command.def $(DEFSRC)declare.def \
-              $(DEFSRC)echo.def $(DEFSRC)enable.def $(DEFSRC)eval.def \
-              $(DEFSRC)exec.def $(DEFSRC)exit.def $(DEFSRC)fc.def \
-              $(DEFSRC)fg_bg.def $(DEFSRC)hash.def $(DEFSRC)help.def \
-              $(DEFSRC)history.def $(DEFSRC)jobs.def $(DEFSRC)kill.def \
-              $(DEFSRC)let.def $(DEFSRC)read.def $(DEFSRC)return.def \
-              $(DEFSRC)set.def $(DEFSRC)setattr.def $(DEFSRC)shift.def \
-              $(DEFSRC)source.def $(DEFSRC)suspend.def $(DEFSRC)test.def \
-              $(DEFSRC)times.def $(DEFSRC)trap.def $(DEFSRC)type.def \
-              $(DEFSRC)ulimit.def $(DEFSRC)umask.def $(DEFSRC)wait.def \
-              $(DEFSRC)getopts.def $(DEFSRC)reserved.def $(DEFSRC)pushd.def \
-              $(DEFSRC)shopt.def
-BUILTIN_C_SRC  = $(DEFSRC)mkbuiltins.c $(DEFSRC)common.c \
-                 $(DEFSRC)hashcom.h $(DEFSRC)/bashgetopt.c $(GETOPT_SOURCE)
-BUILTIN_C_OBJ  = $(DEFDIR)common.o $(DEFDIR)bashgetopt.o
-BUILTIN_OBJS = $(DEFDIR)alias.o $(DEFDIR)bind.o $(DEFDIR)break.o \
-              $(DEFDIR)builtin.o $(DEFDIR)cd.o $(DEFDIR)colon.o \
-              $(DEFDIR)command.o $(DEFDIR)declare.o \
-              $(DEFDIR)echo.o $(DEFDIR)enable.o $(DEFDIR)eval.o \
-              $(DEFDIR)exec.o $(DEFDIR)exit.o $(DEFDIR)fc.o \
-              $(DEFDIR)fg_bg.o $(DEFDIR)hash.o $(DEFDIR)help.o \
-              $(DEFDIR)history.o $(DEFDIR)jobs.o $(DEFDIR)kill.o \
-              $(DEFDIR)let.o $(DEFDIR)pushd.o $(DEFDIR)read.o \
-              $(DEFDIR)return.o $(DEFDIR)shopt.o \
-              $(DEFDIR)set.o $(DEFDIR)setattr.o $(DEFDIR)shift.o \
-              $(DEFDIR)source.o $(DEFDIR)suspend.o $(DEFDIR)test.o \
-              $(DEFDIR)times.o $(DEFDIR)trap.o $(DEFDIR)type.o \
-              $(DEFDIR)ulimit.o $(DEFDIR)umask.o $(DEFDIR)wait.o \
-              $(DEFDIR)getopts.o $(BUILTIN_C_OBJ)
-GETOPT_SOURCE   = $(DEFSRC)getopt.c $(DEFSRC)getopt.h
-PSIZE_SOURCE   = $(DEFSRC)psize.sh $(DEFSRC)psize.c
-BUILTIN_SUPPORT = $(DEFSRC)Makefile $(PSIZE_SOURCE) $(BUILTIN_C_SRC)
-
-/**/# Documentation for the shell.
-DOCDIR = $(srcdir)/documentation/
-
-ENDIAN_SUPPORT = $(SUPPORT_SRC)endian.c
-#if !defined (HAVE_WAIT_H)
-ENDIAN_HEADER = bash_endian.h
-#endif
-
-SIGNAMES_SUPPORT = $(SUPPORT_SRC)mksignames.c
-
-SUPPORT_SRC = $(srcdir)/support/
-SDIR = ./support/
-EXAMPLES = ./examples/
-TEST_SUITE = ./test-suite/
-
-CREATED_SUPPORT = bash_endian.h signames.h sysdefs.h \
-                 $(SDIR)getcppsyms recho tests/recho
-
-/**/# Keep GNU Make from exporting the entire environment for small machines.
-.NOEXPORT:
-
-.made: $(Program) bashbug
-       cp .machine .made
-
-$(Program):  .build $(OBJECTS) $(LIBDEP) $(srcdir)/.distribution
-       $(RM) $@
-       $(PURIFY) $(CC) $(LDFLAGS) $(LIBRARY_LDFLAGS) -o $(Program) $(OBJECTS) $(LIBRARIES)
-       ls -l $(Program)
-       size $(Program)
-
-.build:        $(SOURCES) cpp-Makefile mkversion
-       if ./mkversion -dir $(srcdir) -build; then mv -f newversion.h version.h; fi
-       @echo
-       @echo "   ***************************************************"
-       @echo "   *                                                 *"
-       @echo "   * Making Bash-`cat $(srcdir)/.distribution`.`cat $(srcdir)/.patchlevel` for a $(Machine) running $(OS)"
-       @echo "   *                                                 *"
-       @echo "   ***************************************************"
-       @echo
-       @echo "$(Program) last made for a $(Machine) running $(OS)" >.machine
-
-bashbug: $(SUPPORT_SRC)bashbug.sh cpp-Makefile mkversion
-       @sed -e "s:@MACHINE@:$(Machine):" -e "s:@OS@:$(OS):" \
-            -e "s:@CFLAGS@:$(CCFLAGS):" -e "s:@CC@:$(CC):" \
-            -e "s:@RELEASE@:`cat $(srcdir)/.distribution`:" \
-            -e "s:@PATCHLEVEL@:`cat $(srcdir)/.patchlevel`:" \
-            $(SUPPORT_SRC)bashbug.sh > $@
-       @chmod a+rx bashbug
-
-version.h:     mkversion
-       if ./mkversion -dir $(srcdir) -build; then mv -f newversion.h version.h; fi
-
-y.tab.c: parser-built
-y.tab.h: parser-built
-parser-built:  parse.y parser.h command.h stdc.h input.h
-       $(RM) $@
-       -if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi
-       $(YACC) -d $(srcdir)/parse.y
-       -if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; fi
-       touch $@
-
-#if defined (READLINE) && defined (HAVE_READLINE_SOURCE)
-$(READLINE_LIBRARY): $(READLINE_SOURCE)
-       build_lib_in_dir ($(RL_LIBDIR), libreadline.a, srcdir=$(RL_ABSSRC), $(RL_ABSSRC)Makefile)
-#endif /* READLINE && HAVE_READLINE_SOURCE */
-
-#if defined (HISTORY) && defined (HAVE_HISTORY_SOURCE) && !defined (READLINE)
-$(HISTORY_LIBRARY): $(HISTORY_SOURCE)
-       build_lib_in_dir ($(HIST_LIBDIR), libhistory.a, srcdir=$(HIST_ABSSRC), $(HIST_ABSSRC)Makefile)
-#endif /* HISTORY && HAVE_HISTORY_SOURCE && !READLINE */
-
-#if defined (HAVE_TERMCAP_SOURCE)
-$(TERMCAP_LIBRARY): $(TERMCAP_SOURCE)
-       build_lib_in_dir ($(TERM_LIBDIR), libtermcap.a, srcdir=$(TERM_ABSSRC), $(TERM_ABSSRC)Makefile)
-#endif /* HAVE_TERMCAP_SOURCE */
-
-#if defined (USE_GLOB_LIBRARY)
-$(GLOB_LIBRARY): $(GLOB_SOURCE)
-       build_lib_in_dir ($(GLOB_LIBDIR), libglob.a, srcdir=$(GLOB_ABSSRC), $(GLOB_ABSSRC)Makefile)
-#endif /* USE_GLOB_LIBRARY */
-
-#if defined (HAVE_TILDE_SOURCE)
-$(TILDE_LIBRARY): $(TILDE_SOURCE)
-       build_lib_in_dir ($(TILDE_LIBDIR), libtilde.a, srcdir=$(TILDE_ABSSRC), $(TILDE_ABSSRC)Makefile)
-#endif /* HAVE_TILDE_SOURCE */
-
-mkendian:      $(SUPPORT_SRC)endian.c
-       $(CC) $(CCFLAGS) $(CPPFLAGS) -o $@ $(SUPPORT_SRC)endian.c
-
-bash_endian.h:     mkendian
-       $(RM) $@
-       ./mkendian $@
-
-mksignames:    $(SUPPORT_SRC)mksignames.c
-               $(CC) $(CCFLAGS) $(CPPFLAGS) -o $@ $(SUPPORT_SRC)mksignames.c
-
-signames.h:   mksignames
-       $(RM) $@
-       ./mksignames $@
-
-builtins/libbuiltins.a: $(BUILTIN_OBJS) config.h memalloc.h
-       build_builtins (libbuiltins.a)
-
-builtins/common.o:     $(BUILTIN_SRCDIR)common.c
-       build_builtins (common.o)
-builtins/bashgetopt.o: $(BUILTIN_SRCDIR)bashgetopt.c
-       build_builtins (bashgetopt.o)
-
-builtins/builtext.h: builtins/libbuiltins.a
-
-/* Dependencies for the main bash source. */
-copy_cmd.o: shell.h sig.h command.h stdc.h hash.h
-copy_cmd.o: general.h variables.h config.h memalloc.h quit.h
-copy_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h
-dispose_cmd.o: shell.h sig.h command.h stdc.h
-dispose_cmd.o: general.h variables.h config.h memalloc.h quit.h
-dispose_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h
-error.o: error.h
-execute_cmd.o: shell.h sig.h command.h stdc.h y.tab.h posixstat.h flags.h jobs.h
-execute_cmd.o: general.h variables.h config.h memalloc.h quit.h hash.h
-execute_cmd.o: unwind_prot.h siglist.h builtins/builtext.h 
-execute_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h bashtypes.h
-expr.o: shell.h sig.h command.h stdc.h hash.h
-expr.o: general.h variables.h config.h memalloc.h quit.h
-expr.o: dispose_cmd.h make_cmd.h subst.h externs.h
-flags.o: flags.h stdc.h config.h memalloc.h general.h quit.h
-general.o: shell.h sig.h command.h stdc.h maxpath.h
-general.o: general.h variables.h config.h memalloc.h quit.h machines.h
-general.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-hash.o: shell.h sig.h command.h stdc.h hash.h
-hash.o: general.h variables.h config.h memalloc.h quit.h
-hash.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-jobs.o: shell.h sig.h command.h stdc.h hash.h trap.h jobs.h siglist.h
-jobs.o: general.h variables.h config.h memalloc.h quit.h
-jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h builtins/builtext.h
-mailcheck.o: posixstat.h maxpath.h variables.h
-mailcheck.o: hash.h quit.h mailcheck.h
-make_cmd.o: shell.h sig.h command.h stdc.h flags.h input.h bashtypes.h
-make_cmd.o: general.h variables.h config.h memalloc.h quit.h
-make_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h
-y.tab.o: shell.h sig.h command.h stdc.h flags.h maxpath.h alias.h
-y.tab.o: general.h variables.h config.h memalloc.h quit.h mailcheck.h
-y.tab.o: dispose_cmd.h make_cmd.h subst.h externs.h bashtypes.h bashline.h
-print_cmd.o: shell.h sig.h command.h stdc.h y.tab.h
-print_cmd.o: general.h variables.h config.h memalloc.h quit.h
-print_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h
-shell.o: shell.h sig.h command.h stdc.h flags.h machines.h stdc.h parser.h
-shell.o: general.h variables.h config.h memalloc.h quit.h
-shell.o: dispose_cmd.h make_cmd.h subst.h externs.h mailcheck.h
-shell.o: posixstat.h filecntl.h jobs.h input.h $(ENDIAN_HEADER)
-subst.o: shell.h sig.h command.h stdc.h flags.h jobs.h siglist.h bashtypes.h
-subst.o: general.h variables.h config.h memalloc.h quit.h
-subst.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h
-subst.o: builtins/getopt.h $(GLOB_LIBSRC)glob.h bashline.h
-test.o: posixstat.h
-trap.o: trap.h shell.h sig.h command.h stdc.h hash.h unwind_prot.h signames.h
-trap.o: general.h variables.h config.h memalloc.h quit.h
-trap.o: dispose_cmd.h make_cmd.h subst.h externs.h
-unwind_prot.o: config.h memalloc.h general.h unwind_prot.h sig.h
-variables.o: shell.h sig.h command.h stdc.h hash.h flags.h mailcheck.h
-variables.o: config.h memalloc.h general.h variables.h quit.h
-variables.o: execute_cmd.h dispose_cmd.h make_cmd.h subst.h externs.h
-sig.o: shell.h sig.h command.h stdc.h hash.h flags.h
-sig.o: config.h memalloc.h general.h variables.h quit.h
-sig.o: bashtypes.h jobs.h bashline.h
-version.o: version.h .build
-
-alias.o: ansi_stdlib.h
-bashline.o: ansi_stdlib.h
-variables.o: ansi_stdlib.h
-shell.o: ansi_stdlib.h
-error.o: ansi_stdlib.h
-hash.o: ansi_stdlib.h
-signames.o: ansi_stdlib.h
-expr.o: ansi_stdlib.h
-general.o: ansi_stdlib.h
-input.o: ansi_stdlib.h
-
-#if !defined (JOB_CONTROL)
-jobs.o: nojobs.c
-#endif /* !JOB_CONTROL */
-
-array.o: general.h shell.h sig.h variables.h quit.h config.h memalloc.h
-array.o: command.h error.h maxpath.h unwind_prot.h dispose_cmd.h
-array.o: make_cmd.h subst.h externs.h
-array.o: array.h stdc.h builtins/common.h
-
-braces.o: general.h shell.h sig.h variables.h quit.h config.h memalloc.h
-braces.o: dispose_cmd.h make_cmd.h subst.h externs.h
-braces.o: maxpath.h unwind_prot.h command.h stdc.h
-
-bracecomp.o: bracecomp.c
-bracecomp.o: shell.h sig.h command.h hash.h builtins.h general.h variables.h
-bracecomp.o: quit.h alias.h config.h
-bracecomp.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-#if defined (HAVE_READLINE_SOURCE)
-bracecomp.o: $(RL_LIBSRC)readline.h
-#endif /* HAVE_READLINE_SOURCE */
-
-bashline.o: shell.h sig.h command.h stdc.h hash.h builtins.h execute_cmd.h
-bashline.o: general.h variables.h config.h memalloc.h quit.h alias.h
-bashline.o: dispose_cmd.h make_cmd.h subst.h externs.h config.h bashline.h
-bashline.o: $(GLOB_LIBSRC)glob.h
-
-bashhist.o: config.h bashansi.h posixstat.h filecntl.h
-bashhist.o: shell.h sig.h command.h stdc.h hash.h builtins.h execute_cmd.h
-bashhist.o: general.h variables.h memalloc.h quit.h alias.h
-bashhist.o: dispose_cmd.h make_cmd.h subst.h externs.h flags.h
-
-/* Dependencies which rely on the user using the source to READLINE. */
-#if defined (READLINE) && defined (HAVE_READLINE_SOURCE)
-bashline.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h
-y.tab.o: $(RL_LIBSRC)keymaps.h $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h
-#endif /* READLINE && HAVE_READLINE_SOURCE */
-
-#if defined (HISTORY) && defined (HAVE_HISTORY_SOURCE)
-subst.o: $(HIST_LIBSRC)history.h
-bashline.o: $(HIST_LIBSRC)history.h
-bashhist.o: $(HIST_LIBSRC)history.h
-y.tab.o: $(HIST_LIBSRC)history.h
-#endif /* HISTORY && HAVE_HISTORY_SOURCE */
-
-#if defined (USE_GLOB_LIBRARY)
-subst.o: $(GLOB_LIBSRC)fnmatch.h
-execute_cmd.o: $(GLOB_LIBSRC)fnmatch.h
-bashhist.o: $(GLOB_LIBSRC)fnmatch.h
-#endif /* USE_GLOB_LIBRARY */
-
-#if defined (HAVE_TILDE_SOURCE)
-execute_cmd.o: $(TILDE_LIBSRC)tilde.h
-general.o: $(TILDE_LIBSRC)tilde.h
-mailcheck.o: $(TILDE_LIBSRC)tilde.h
-shell.o: $(TILDE_LIBSRC)tilde.h
-subst.o: $(TILDE_LIBSRC)tilde.h
-variables.o: $(TILDE_LIBSRC)tilde.h
-#endif /* HAVE_TILDE_SOURCE */
-
-/* Dependencies for the shell builtins. */
-builtins/common.o: shell.h sig.h command.h config.h memalloc.h general.h error.h
-builtins/common.o: variables.h input.h $(DEFDIR)hashcom.h siglist.h
-builtins/common.o: quit.h unwind_prot.h maxpath.h jobs.h builtins.h
-builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h
-builtins/common.o: execute_cmd.h stdc.h
-builtins/alias.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/alias.o: quit.h builtins/common.h
-builtins/alias.o: shell.h sig.h command.h stdc.h unwind_prot.h variables.h 
-builtins/alias.o: dispose_cmd.h make_cmd.h subst.h externs.h
-builtins/bind.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/bind.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/bind.o: shell.h sig.h unwind_prot.h variables.h quit.h
-builtins/bind.o: $(DEFDIR)bashgetopt.h
-builtins/break.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/break.o: shell.h sig.h unwind_prot.h variables.h quit.h
-builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/builtin.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/builtin.o: quit.h $(DEFDIR)common.h
-builtins/builtin.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/cd.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h 
-builtins/cd.o: shell.h sig.h unwind_prot.h variables.h $(DEFDIR)common.h
-builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/command.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/command.o: quit.h $(DEFDIR)bashgetopt.h
-builtins/command.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/command.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/declare.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/declare.o: shell.h sig.h unwind_prot.h variables.h quit.h
-builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/echo.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/echo.o: shell.h sig.h unwind_prot.h variables.h quit.h
-builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/enable.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/enable.o: shell.h sig.h unwind_prot.h variables.h quit.h
-builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/eval.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h 
-builtins/eval.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/exec.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h 
-builtins/exec.o: shell.h sig.h unwind_prot.h variables.h $(DEFDIR)common.h stdc.h
-builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h
-builtins/exec.o: flags.h
-builtins/exit.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/exit.o: shell.h sig.h unwind_prot.h variables.h quit.h
-builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/fc.o: builtins.h command.h stdc.h 
-builtins/fc.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h 
-builtins/fc.o: flags.h unwind_prot.h variables.h shell.h sig.h 
-builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/fc.o: $(DEFDIR)bashgetopt.h bashhist.h
-builtins/fg_bg.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/fg_bg.o: shell.h sig.h unwind_prot.h variables.h quit.h
-builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/getopts.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/getopts.o: shell.h sig.h unwind_prot.h variables.h quit.h 
-builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/hash.o: builtins.h command.h execute_cmd.h stdc.h
-builtins/hash.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/hash.o: shell.h sig.h unwind_prot.h variables.h $(DEFDIR)common.h quit.h 
-builtins/help.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/help.o: shell.h sig.h unwind_prot.h variables.h quit.h
-builtins/help.o: $(GLOB_LIBSRC)glob.h
-builtins/history.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/history.o: filecntl.h shell.h sig.h unwind_prot.h variables.h 
-builtins/history.o: bashhist.h
-builtins/inlib.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/inlib.o: shell.h sig.h unwind_prot.h variables.h quit.h 
-builtins/inlib.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/jobs.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/jobs.o: quit.h $(DEFDIR)bashgetopt.h
-builtins/jobs.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/kill.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/kill.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/kill.o: shell.h sig.h trap.h unwind_prot.h variables.h 
-builtins/let.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/let.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/let.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/pushd.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/pushd.o: shell.h sig.h unwind_prot.h variables.h $(DEFDIR)common.h
-builtins/read.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/read.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/return.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/return.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/set.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h
-builtins/set.o: shell.h sig.h unwind_prot.h variables.h flags.h stdc.h
-builtins/setattr.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/setattr.o: quit.h $(DEFDIR)common.h $(DEFDIR)bashgetopt.h
-builtins/setattr.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/shift.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/shift.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/shift.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/source.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/source.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/suspend.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/suspend.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/test.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/test.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/times.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/times.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/trap.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/trap.o: quit.h $(DEFDIR)common.h
-builtins/trap.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/trap.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/type.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/type.o: quit.h $(DEFDIR)common.h
-builtins/type.o: shell.h sig.h unwind_prot.h variables.h execute_cmd.h
-builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/ulimit.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/ulimit.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/umask.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/umask.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/umask.o: shell.h sig.h unwind_prot.h variables.h 
-builtins/wait.o: command.h config.h memalloc.h error.h general.h maxpath.h
-builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h
-builtins/wait.o: shell.h sig.h unwind_prot.h variables.h
-builtins/shopt.o: command.h config.h memalloc.h error.h general.h
-builtins/shopt.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h
-builtins/shopt.o: shell.h unwind_prot.h variables.h maxpath.h
-builtins/shopt.o: builtins/common.h builtins/bashgetopt.h
-
-builtins/bashgetopt.o: bashansi.h ansi_stdlib.h
-builtins/mkbuiltins.o: bashansi.h ansi_stdlib.h
-builtins/fc.o: bashansi.h ansi_stdlib.h
-
-#if defined (READLINE) && defined (HAVE_READLINE_SOURCE)
-builtins/bind.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h
-#endif /* READLINE && HAVE_READLINE_SOURCE */
-
-#if defined (HISTORY) && defined (HAVE_HISTORY_SOURCE)
-builtins/bind.o: $(HIST_LIBSRC)history.h
-builtins/fc.o: $(HIST_LIBSRC)history.h
-builtins/history.o: $(HIST_LIBSRC)history.h
-#endif /* HISTORY && HAVE_HISTORY_SOURCE */
-
-#if defined (HAVE_TILDE_SOURCE)
-builtins/common.o: $(TILDE_LIBSRC)tilde.h
-builtins/cd.o: $(TILDE_LIBSRC)tilde.h 
-#endif /* HAVE_TILDE_SOURCE */
-
-builtins/alias.o: builtins/alias.def
-builtins/bind.o: builtins/bind.def
-builtins/break.o: builtins/break.def
-builtins/builtin.o: builtins/builtin.def
-builtins/cd.o: builtins/cd.def
-builtins/colon.o: builtins/colon.def
-builtins/command.o: builtins/command.def
-builtins/declare.o: builtins/declare.def
-builtins/echo.o: builtins/echo.def
-builtins/enable.o: builtins/enable.def
-builtins/eval.o: builtins/eval.def
-builtins/exec.o: builtins/exec.def
-builtins/exit.o: builtins/exit.def
-builtins/fc.o: builtins/fc.def
-builtins/fg_bg.o: builtins/fg_bg.def
-builtins/getopts.o: builtins/getopts.def
-builtins/hash.o: builtins/hash.def
-builtins/help.o: builtins/help.def
-builtins/history.o: builtins/history.def
-builtins/inlib.o: builtins/inlib.def
-builtins/jobs.o: builtins/jobs.def
-builtins/kill.o: builtins/kill.def
-builtins/let.o: builtins/let.def
-builtins/pushd.o: builtins/pushd.def
-builtins/read.o: builtins/read.def
-builtins/reserved.o: builtins/reserved.def
-builtins/return.o: builtins/return.def
-builtins/set.o: builtins/set.def
-builtins/setattr.o: builtins/setattr.def
-builtins/shift.o: builtins/shift.def
-builtins/shopt.o: builtins/shopt.def
-builtins/source.o: builtins/source.def
-builtins/suspend.o: builtins/suspend.def
-builtins/test.o: builtins/test.def
-builtins/times.o: builtins/times.def
-builtins/trap.o: builtins/trap.def
-builtins/type.o: builtins/type.def
-builtins/ulimit.o: builtins/ulimit.def
-builtins/umask.o: builtins/umask.def
-builtins/wait.o: builtins/wait.def
-
-install:       .made
-               $(INSTALL_PROGRAM) $(Program) $(bindir)/$(Program)
-               $(INSTALL_PROGRAM) bashbug $(bindir)/bashbug
-               $(RM) installed-$(Program)
-               -ln -s $(bindir)/$(Program) installed-$(Program)
-               ( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) mandir=$(mandir) \
-                       man3dir=$(man3dir) infodir=$(infodir) \
-                       INSTALL_PROGRAM="${INSTALL_PROGRAM}" \
-                       INSTALL_DATA="${INSTALL_DATA}" $@ )
-
-uninstall:     .made
-               $(RM) $(bindir)/$(Program) installed-$(Program) $(bindir)/bashbug
-               ( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) mandir=$(mandir) man3dir=$(man3dir) infodir=$(infodir) $@ )
-               
-.distribution:
-               ./mkversion -dir $(srcdir) -dist `$(Program) -c 'echo $$BASH_VERSION'`
-
-mkversion:     $(SUPPORT_SRC)mkversion.c
-               $(CC) $(CCFLAGS) $(CPPFLAGS) -I$(srcdir) -I.. -o $@ $(SUPPORT_SRC)mkversion.c
-
-newversion:    mkversion
-               $(RM) .build
-               ./mkversion -dir $(srcdir) -dist
-               mv -f newversion.h version.h
-               $(MAKE) -f $(srcdir)/Makefile $(MFLAGS) srcdir=$(srcdir)
-
-texindex:      force
-               build_lib_in_dir($(LIBPATH)doc-support, texindex, $${topdir}/lib/doc-support, $${topdir}/lib/doc-support/Makefile)
-
-documentation:  force texindex
-               (cd $(DOCDIR); $(MAKE) $(MFLAGS) CFLAGS='$(CCFLAGS)')
-
-force:
-
-tags:          $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
-               etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
-
-TAGS:          $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
-               ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@
-
-clean:
-               $(RM) $(OBJECTS) $(Program) bashbug ansi-Makefile *.aux
-               $(RM) .build .made .machine version.h
-               $(RM) $(CREATED_SUPPORT) bash-Makefile tags TAGS
-               (cd $(DOCDIR); $(MAKE) $(MFLAGS) clean)
-               (cd builtins; $(MAKE) $(MFLAGS) clean)
-               $(CLEAN_READLINE) ;
-               $(CLEAN_HISTORY) ;
-               $(CLEAN_TERMCAP) ;
-               $(CLEAN_GLOB) ;
-               $(CLEAN_TILDE) ;
-               $(CLEAN_MALLOC) ;
-
-distclean:     clean
-               $(RM) installed-bash
-
-realclean:     clean
-               $(RM) y.tab.c y.tab.h parser-built installed-bash
-
-recho:         $(SUPPORT_SRC)recho.c
-       @$(CC) -o $@ $(SUPPORT_SRC)recho.c
-
-tests:         force $(Program) recho
-       -[ -d tests ] || mkdir tests
-       @cp recho $(SUPPORT_SRC)printenv tests
-       ( cd tests ; sh run-all )
diff --git a/CWRU/old-conf/machines.h b/CWRU/old-conf/machines.h
deleted file mode 100644 (file)
index 3a66338..0000000
+++ /dev/null
@@ -1,2314 +0,0 @@
-/* machines.h --
-   Included file in the makefile that gets run through Cpp.  This file
-   tells which machines have what features based on the unique machine
-   identifier present in Cpp. */
-
-/* Copyright (C) 1993 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, 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. */
-
-/* **************************************************************** */
-/*                                                                  */
-/*                Global Assumptions (true for most systems).       */
-/*                                                                  */
-/* **************************************************************** */
-
-/* We make some global assumptions here.  This can be #undef'ed in
-   various machine specific entries. */
-
-/* If this file is being processed with Gcc, then the user has Gcc. */
-#if defined (__GNUC__) && !defined (NeXT) && !defined (__FreeBSD__)
-#  if !defined (HAVE_GCC)
-#    define HAVE_GCC
-#  endif /* HAVE_GCC */
-#endif /* __GNUC__ && !NeXT && !__FreeBSD__ **/
-
-/* Assume that all machines have the getwd () system call.  We unset it
-   for USG systems. */
-#define HAVE_GETWD
-
-/* Assume that all systems have a working getcwd () call.  We unset it for
-   ISC systems. */
-#define HAVE_GETCWD
-
-/* Most (but not all) systems have a good, working version of dup2 ().
-   For systems that don't have the call (HP/UX), and for systems
-   that don't set the open-on-exec flag for the dup'ed file descriptors,
-   (Sequents running Dynix, Ultrix), #undef HAVE_DUP2 in the machine
-   description. */
-#define HAVE_DUP2
-
-/* Every machine that has Gcc has alloca as a builtin in Gcc.  If you are
-   compiling Bash without Gcc, then you must have alloca in a library,
-   in your C compiler, or be able to assemble or compile the alloca source
-   that we ship with Bash. */
-#define HAVE_ALLOCA
-
-/* We like most machines to use the GNU Malloc routines supplied in the
-   source code because they provide high quality error checking.  On
-   some machines, our malloc () cannot be used (because of library
-   conflicts, for example), and for those, you should specifically
-   #undef USE_GNU_MALLOC in the machine description. */
-#define USE_GNU_MALLOC
-
-/* This causes the Gnu malloc library (from glibc) to be used. */
-/* #define USE_GNU_MALLOC_LIBRARY */
-
-/* Assume that every operating system supplies strchr () and strrchr ()
-   in a standard library until proven otherwise. */
-#define HAVE_STRCHR
-
-/* Hardware-dependent CFLAGS. */
-#define MACHINE_CFLAGS
-
-/* **************************************************************** */
-/*                                                                 */
-/*                     Sun Microsystems Machines                   */
-/*                                                                 */
-/* **************************************************************** */
-
-/* NetBSD running on a sparc. */
-#if defined (sparc) && defined (__NetBSD__)
-#  define M_MACHINE "sun4"
-#  define M_OS "NetBSD"
-#  define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
-                       -DRLIMTYPE=quad_t
-#  define SYSDEP_LDFLAGS -static
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#  define HAVE_VPRINTF
-#  define HAVE_STRERROR
-#  define VOID_SIGHANDLER
-#  define HAVE_DIRENT
-#  define HAVE_STRCASECMP
-#endif /* sparc && __NetBSD__ */
-
-#if defined (sun) && !defined (M_MACHINE)
-/* We aren't currently using GNU Malloc on Suns because of a bug in Sun's
-   YP which bites us when Sun free ()'s an already free ()'ed address.
-   When Sun fixes their YP, we can start using our winning malloc again. */
-/* #undef USE_GNU_MALLOC */
-
-/* Most Sun systems have signal handler functions that are void. */
-#  define VOID_SIGHANDLER
-
-/* Most Sun systems have the following. */
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define HAVE_GETGROUPS
-
-/* Check for SunOS4 or greater. */
-#  if defined (SunOS5)
-#    define M_OS "SunOS5"
-#    define SYSDEP_CFLAGS -DUSGr4 -DUSG -DSolaris -DOPENDIR_NOT_ROBUST \
-                         -DSBRK_DECLARED -DINT_GROUPS_ARRAY
-#    define EXTRA_LIB_SEARCH_PATH /usr/ccs/lib
-#    if !defined (HAVE_GCC)
-#      define REQUIRED_LIBRARIES -ldl
-#      define SYSDEP_LDFLAGS -Bdynamic
-#    endif /* !HAVE_GCC */
-#    define HAVE_STRERROR
-#    undef HAVE_GETWD
-#    undef HAVE_SETLINEBUF
-#  endif /* SunOS5 */
-
-#  if defined (SunOS4)
-#    define M_OS "SunOS4"
-#    define SYSDEP_CFLAGS -DHAVE_BSD_PGRP -DOPENDIR_NOT_ROBUST -DTERMIOS_LDISC \
-                         -DINT_GROUPS_ARRAY
-#    define HAVE_DIRENT
-#    define HAVE_DLOPEN
-#    define HAVE_DLSYM
-#    define HAVE_DLCLOSE
-#    define REQUIRED_LIBRARIES -ldl
-#    if !defined (HAVE_GCC)
-#      define SYSDEP_LDFLAGS -Bdynamic
-#    endif
-#  endif /* SunOS4 */
-
-#  if !defined (SunOS4) && !defined (SunOS5)
-#    define M_OS "SunOS3"
-#    if !defined (sparc) && !defined (__sparc__)
-#      undef VOID_SIGHANDLER
-#    endif /* !sparc */
-#  endif /* !SunOS4 && !SunOS5 */
-
-#  if defined (mc68010)
-#    define sun2
-#    define M_MACHINE "sun2"
-#  endif
-#  if defined (mc68020)
-#    define sun3
-#    define M_MACHINE "sun3"
-#  endif
-#  if defined (sparc) || defined (__sparc__)
-#    define sun4
-#    define M_MACHINE "sparc"
-#  endif
-#  if defined (i386)
-#    define done386
-#    if !defined (SunOS5)
-#      define Sun386i
-#      define M_MACHINE "Sun386i"
-#    else
-#      define M_MACHINE "i386"
-#    endif
-#  endif /* i386 */
-
-#endif /* sun && !M_MACHINE */
-
-/* **************************************************************** */
-/*                                                                 */
-/*                     DEC Machines (vax, decstations)             */
-/*                                                                 */
-/* **************************************************************** */
-
-/* ************************ */
-/*                          */
-/*     Alpha with OSF/1     */
-/*                          */
-/* ************************ */
-#if defined (__alpha) || defined (alpha)
-#  define M_MACHINE "alpha"
-#  define M_OS "OSF1"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define HAVE_STRERROR
-#  define HAVE_GETGROUPS
-#  define VOID_SIGHANDLER
-#  define HAVE_DLOPEN
-#  define HAVE_DLSYM
-#  define HAVE_DLCLOSE
-#  define USE_TERMCAP_EMULATION
-#  if !defined (__GNUC__)
-#    define SYSDEP_CFLAGS -DNLS -D_BSD
-#  endif /* !__GNUC__ */
-#  undef HAVE_ALLOCA
-#  undef USE_GNU_MALLOC
-#endif /* __alpha || alpha */
-
-/* ************************ */
-/*                         */
-/*         Ultrix          */
-/*                         */
-/* ************************ */
-#if defined (ultrix)
-#  if defined (MIPSEL)
-#    undef HAVE_ALLOCA_H
-#    define M_MACHINE "MIPSEL"
-#  else /* !MIPSEL */
-#    define M_MACHINE "vax"
-#  endif /* !MIPSEL */
-#  define SYSDEP_CFLAGS -DHAVE_BSD_PGRP -DTERMIOS_MISSING -DTERMIOS_LDISC \
-                       -DINT_GROUPS_ARRAY
-#  define M_OS "Ultrix"
-#  define HAVE_DIRENT
-#  define VOID_SIGHANDLER
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define HAVE_GETGROUPS
-#  undef HAVE_DUP2
-#endif /* ultrix */
-
-/* ************************ */
-/*                         */
-/*     VAX 4.3 BSD         */
-/*                         */
-/* ************************ */
-#if defined (vax) && !defined (ultrix)
-#  define M_MACHINE "vax"
-#  define M_OS "Bsd"
-#  define HAVE_SETLINEBUF
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_GETGROUPS
-#  define USE_VFPRINTF_EMULATION
-#endif /* vax && !ultrix */
-
-/* ************************ */
-/*                         */
-/*     Tahoe 4.3 BSD       */
-/*                         */
-/* ************************ */
-#if defined (tahoe)
-#  define M_MACHINE "tahoe"
-#  define M_OS "Bsd"
-#  define HAVE_SETLINEBUF
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_GETGROUPS
-#  define HAVE_VPRINTF
-#endif /* tahoe */
-
-/* **************************************************************** */
-/*                                                                 */
-/*             Machines with MIPSco processors                     */
-/*                                                                 */
-/* **************************************************************** */
-
-/* **************************************** */
-/*                                         */
-/*             SGI Iris/IRIX               */
-/*                                         */
-/* **************************************** */
-#if defined (sgi)
-#  if defined (Irix3)
-#    define M_OS "Irix3"
-#    if !defined (HAVE_GCC)
-#      undef MACHINE_CFLAGS
-#      define MACHINE_CFLAGS -real_frameptr -Wf,-XNl3072
-#    endif
-#    undef HAVE_ALLOCA
-#  endif /* Irix3 */
-#  if defined (Irix4)
-#    define M_OS "Irix4"
-#    if !defined (HAVE_GCC)
-#      undef MACHINE_CFLAGS
-#      define MACHINE_CFLAGS -Wf,-XNl3072
-#    endif
-#  endif /* Irix4 */
-#  if defined (Irix5)
-#    define M_OS "Irix5"
-#    if !defined (HAVE_GCC)
-#      undef MACHINE_CFLAGS
-#      define MACHINE_CFLAGS -Wf,-XNl3072
-#    endif
-#  endif /* Irix5 */
-#  if defined (Irix6)
-#    define M_OS "Irix6"
-#    if !defined (HAVE_GCC)
-#      undef MACHINE_CFLAGS
-#      define MACHINE_CFLAGS -mips2
-#    endif /* !HAVE_GCC */
-#  endif /* Irix6 */
-#  define M_MACHINE "sgi"
-#  define HAVE_GETGROUPS
-#  define VOID_SIGHANDLER
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  if !defined (Irix6)
-#    define REQUIRED_LIBRARIES -lsun
-#  endif /* !Irix6 */
-   /* SGI cc uses ansi c features *without* defining __STDC__ */
-#  if defined (__EXTENSIONS__) && !defined (__STDC__)
-#    define ANSIC -D__STDC__
-#  else
-#    define ANSIC
-#  endif /* !__EXTENSIONS__ || __STDC__ */
-#  if defined (Irix5) || defined (Irix6)
-#    define SGI_CFLAGS -DUSG -DPGRP_PIPE -DHAVE_BCOPY -DHAVE_GETPW_DECLS \
-                      -DHAVE_SOCKETS -DSBRK_DECLARED
-#  else
-#    define SGI_CFLAGS -DUSG -DPGRP_PIPE -DHAVE_BCOPY -DHAVE_GETPW_DECLS \
-                      -DHAVE_SOCKETS
-#  endif /* !Irix5 */
-#  define SYSDEP_CFLAGS SGI_CFLAGS MACHINE_CFLAGS ANSIC
-#endif  /* sgi */
-
-/* ************************ */
-/*                         */
-/*       NEC EWS 4800      */
-/*                         */
-/* ************************ */
-#if defined (nec_ews)
-#  if defined (SYSTYPE_SYSV) || defined (USGr4)
-#    define M_MACHINE "ews4800"
-#    define M_OS "USG"
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-#    define HAVE_STRERROR
-#    define HAVE_DUP2
-#    undef HAVE_GETWD
-#    undef HAVE_RESOURCE /* ? */
-     /* Alloca requires either Gcc or cc with -lucb. */
-#    if !defined (HAVE_GCC)
-#      define EXTRA_LIB_SEARCH_PATH /usr/ucblib
-#      define REQUIRED_LIBRARIES -lc -lucb
-#    endif /* !HAVE_GCC */
-#    if defined (MIPSEB)
-#      if !defined (HAVE_GCC)
-#        undef MACHINE_CFLAGS
-#        define MACHINE_CFLAGS -Wf,-XNl3072
-#      endif
-#      define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4 -DUSGr3 -D_POSIX_JOB_CONTROL
-#    else /* !MIPSEB */
-#      define SYSDEP_CFLAGS -DUSGr4
-#    endif /* MIPSEB */
-#  else /* !SYSTYPE_SYSV && !USGr4 */
-#    define M_OS "Bsd"
-#  endif /* !SYSTYPE_SYSV && !USGr4 */
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#endif /* nec_ews */
-
-/* ************************ */
-/*                         */
-/*  Generic MIPS SVR4, 4.2  */
-/*                         */
-/* ************************ */
-#if defined (MIPSEB) && defined (USGr4)
-#  define M_MACHINE "MIPSEB"
-#  define M_OS "USG"
-#  if defined (sony) && !defined (HAVE_GCC)
-#    undef MACHINE_CFLAGS
-#    define MACHINE_CFLAGS -Wf,-XNl3072
-#  endif
-/* XXX - os/svr4.h -- for the future -- XXX */
-#  undef HAVE_GETWD
-#  define HAVE_DIRENT
-#  define HAVE_STRERROR
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-/* alloca */
-#  if !defined (HAVE_GCC)
-#    define EXTRA_LIB_SEARCH_PATH /usr/ucblib
-#    define REQUIRED_LIBRARIES -lc -lucb
-#  endif /* !HAVE_GCC */
-#  if defined (USGr4_2)
-#    define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4 -DUSGr4_2
-#  else
-#    define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4
-#  endif /* !USGr4_2 */
-#endif
-
-/* ************************ */
-/*                         */
-/*         Sony            */
-/*                         */
-/* ************************ */
-#if defined (sony) && !defined (M_MACHINE)
-#  if defined (MIPSEB)
-#    define M_MACHINE "MIPSEB"
-#  else /* !MIPSEB */
-#    define M_MACHINE "sony"
-#  endif /* !MIPSEB */
-
-#  if defined (SYSTYPE_SYSV) || defined (USGr4)
-#    define M_OS "USG"
-#    undef HAVE_GETWD
-#    define HAVE_DIRENT
-#    define HAVE_STRERROR
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-     /* Alloca requires either Gcc or cc with -lucb. */
-#    if !defined (HAVE_GCC)
-#      define EXTRA_LIB_SEARCH_PATH /usr/ucblib
-#      define REQUIRED_LIBRARIES -lc -lucb
-#    endif /* !HAVE_GCC */
-#    if defined (MIPSEB)
-#      if !defined (HAVE_GCC)
-#        undef MACHINE_CFLAGS
-#        define MACHINE_CFLAGS -Wf,-XNl3072
-#      endif
-#      define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4
-#    else /* !MIPSEB */
-#      define SYSDEP_CFLAGS -DUSGr4
-#    endif /* !MIPSEB */
-#  else /* !SYSTYPE_SYSV && !USGr4 */
-#    define M_OS "Bsd"
-#    define SYSDEP_CFLAGS -DHAVE_UID_T
-#  endif /* !SYSTYPE_SYSV && !USGr4 */
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#endif /* sony */
-
-/* ******************************* */
-/*                                */
-/*  Ardent Titan OS v2.2 and later */
-/*                                */
-/* ******************************* */
-#if defined (ardent)
-#  define M_MACHINE "Ardent Titan"
-#  define M_OS "Bsd"
-#  if defined (titan)
-#    undef HAVE_GETGROUPS
-#  else
-#    define HAVE_GETGROUPS
-#  endif /* !titan */
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define SYSDEP_CFLAGS -43 -w
-#  define SYSDEP_LDFLAGS -43
-#  undef HAVE_ALLOCA
-#  undef USE_GNU_MALLOC
-#  undef HAVE_VPRINTF
-#  undef HAVE_DIRENT_H
-#endif /* ardent */
-
-/* ************************ */
-/*                         */
-/*       Stardent          */
-/*                         */
-/* ************************ */
-#if defined (stardent) && !defined (M_MACHINE)
-#  define M_MACHINE "Stardent"
-#  define M_OS "USG"
-#  define HAVE_SYS_SIGLIST
-#  define USE_TERMCAP_EMULATION
-#  define VOID_SIGHANDLER
-#  undef HAVE_GETWD
-#  undef HAVE_ALLOCA
-#endif /* stardent */
-
-/* ******************************** */
-/*                                 */
-/*        MIPS RISC/os             */
-/*                                 */
-/* ******************************** */
-
-/* Notes on compiling with "make":
-
-   * Place /bsd43/bin in your PATH before /bin.
-   * Use `$(CC) -E' instead of `/lib/cpp' in Makefile.
-*/
-#if defined (mips) && (!defined (M_MACHINE) || defined (RiscOS))
-
-#  if defined (MIPSEB)
-#    define M_MACHINE "MIPSEB"
-#  else /* !MIPSEB */
-#    if defined (MIPSEL)
-#      define M_MACHINE "MIPSEL"
-#    else /* !MIPSEL */
-#      define M_MACHINE "mips"
-#    endif /* !MIPSEL */
-#  endif /* !MIPSEB */
-
-#  define M_OS "Bsd"
-
-   /* Special things for machines from MIPS Co. */
-#  define MIPS_CFLAGS -DOPENDIR_NOT_ROBUST -DPGRP_PIPE
-
-#  if !defined (HAVE_GCC)
-#    undef MACHINE_CFLAGS
-#    define MACHINE_CFLAGS -Wf,-XNl3072 -systype bsd43
-#  endif /* !HAVE_GCC */
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define HAVE_GETGROUPS
-#  undef HAVE_UNISTD_H
-#  if !defined (HAVE_RESOURCE)
-#    define HAVE_RESOURCE
-#  endif /* !HAVE_RESOURCE */
-#  if defined (bsd4_4)
-#    define VOID_SIGHANDLER
-#    define HAVE_UNISTD_H      /* ??? atsuo@harl.hitachi.co.jp */
-#    define SYSDEP_CFLAGS MACHINE_CFLAGS MIPS_CFLAGS -D__BSD_4_4__
-#  else
-     /* /usr/include/sys/wait.h appears not to work correctly, so why use it? */
-#    undef HAVE_WAIT_H
-#    define SYSDEP_CFLAGS MACHINE_CFLAGS MIPS_CFLAGS
-#  endif
-#endif /* mips */
-
-/* ************************ */
-/*                         */
-/*       Pyramid           */
-/*                         */
-/* ************************ */
-#if defined (pyr)
-#  define M_MACHINE "Pyramid"
-#  define M_OS "Bsd"
-#  if !defined (HAVE_GCC)
-#    undef HAVE_ALLOCA
-#  endif /* HAVE_GCC */
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#endif /* pyr */
-
-/* ************************ */
-/*                         */
-/*         IBMRT           */
-/*                         */
-/* ************************ */
-#if defined (ibm032)
-#  define M_MACHINE "IBMRT"
-#  define M_OS "Bsd"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define USE_VFPRINTF_EMULATION
-   /* Alloca requires either gcc or hc or pcc with -ma in SYSDEP_CFLAGS. */
-#  if !defined (HAVE_GCC)
-#    define SYSDEP_CFLAGS -ma -U__STDC__
-#  endif /* !HAVE_GCC */
-#  define HAVE_GETGROUPS
-/* #define USE_GNU_TERMCAP */
-#endif /* ibm032 */
-
-/* **************************************************************** */
-/*                                                                 */
-/*       All Intel 386 Processor Machines are Defined Here!        */
-/*                                                                 */
-/* **************************************************************** */
-
-#if defined (i386)
-
-/* Sequent Symmetry running Dynix/ptx 2.x */
-#  if !defined (done386) && defined (_SEQUENT_)
-#    define done386
-#    define M_MACHINE "Symmetry"
-#    define M_OS "Dynix"
-#    define DYNIX_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_SETDTABLESIZE \
-                        -DHAVE_GETPW_DECLS -DHAVE_SOCKETS
-#    define SYSDEP_CFLAGS -DUSG -DUSGr3 DYNIX_CFLAGS
-#    define HAVE_DIRENT
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-/* Might need to add -lsocket -linet -lnsl to the list of libraries. */
-#    define REQUIRED_LIBRARIES -lPW -lseq
-#    undef HAVE_GETWD
-#    undef HAVE_RESOURCE
-#    undef HAVE_ALLOCA
-#  endif /* _SEQUENT_ */
-
-/* Sequent Symmetry running Dynix (4.2 BSD) */
-#  if !defined (done386) && defined (sequent)
-#    define done386
-#    define M_MACHINE "Symmetry"
-#    define M_OS "Bsd"
-#    define SYSDEP_CFLAGS -DCPCC -DHAVE_SETDTABLESIZE
-#    define HAVE_SETLINEBUF
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_GETGROUPS
-#    define LD_HAS_NO_DASH_L
-#    undef HAVE_DUP2
-#  endif /* Sequent 386 */
-
-/* NeXT 3.x on i386 */
-#  if !defined (done386) && defined (NeXT)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "NeXTstep"
-#    define HAVE_VPRINTF
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_GETGROUPS
-#    define HAVE_STRERROR
-#    define VOID_SIGHANDLER
-#    if !defined (HAVE_RESOURCE)
-#      define HAVE_RESOURCE
-#    endif
-#    define HAVE_STRCASECMP
-#    define GCC_STANDARD
-#    undef HAVE_GETWD
-#    undef HAVE_GETCWD
-#    undef USE_GNU_MALLOC
-#    undef HAVE_DIRENT_H
-#    define SYSDEP_CFLAGS -DNeXT -DMKFIFO_MISSING -DRLOGIN_PGRP_BUG
-#  endif
-
-/* Generic 386 clone running Mach (4.3 BSD-compatible). */
-#  if !defined (done386) && defined (MACH)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "Bsd"
-#    define HAVE_SETLINEBUF
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_GETGROUPS
-#  endif /* i386 && MACH */
-
-/* AIX PS/2 1.[23] for the [34]86. */
-#  if !defined (done386) && defined (aixpc)
-#    define done386
-#    define M_MACHINE "aixpc"
-#    define M_OS "AIX"
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-#    if defined (AIX_13)       /* AIX PS/2 1.3 */
-#      define SYSDEP_CFLAGS -DTERMIOS_LDISC
-#      define REQUIRED_LIBRARIES -lc_s
-#    else
-#      define SYSDEP_CFLAGS -D_BSD -DTERMIOS_LDISC
-#      define REQUIRED_LIBRARIES -lbsd -lc_s
-#    endif /* !AIX_13 */
-#    define HAVE_GETGROUPS
-#    if !defined (HAVE_GCC)
-#      undef HAVE_ALLOCA
-#      undef HAVE_ALLOCA_H
-#    endif /* !HAVE_GCC */
-#    define USE_TERMCAP_EMULATION
-#  endif /* AIXPC i386 */
-
-/* System V Release 4 on the 386 */
-#  if !defined (done386) && defined (USGr4)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "USG"
-#    define HAVE_DIRENT
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-     /* Alloca requires either Gcc or cc with -lucb. */
-#    if !defined (HAVE_GCC)
-#      define EXTRA_LIB_SEARCH_PATH /usr/ucblib
-#      define REQUIRED_LIBRARIES -lc -lucb
-#    endif /* !HAVE_GCC */
-#    define HAVE_GETGROUPS
-#    if defined (USGr4_2)
-#      define SYSDEP_CFLAGS -DUSGr4 -DUSGr4_2 -DSBRK_DECLARED
-#    else
-#      define SYSDEP_CFLAGS -DUSGr4
-#    endif /* ! USGr4_2 */
-#    undef HAVE_GETWD
-#  endif /* System V Release 4 on i386 */
-
-/* 386 box running Interactive Unix 2.2 or greater. */
-#  if !defined (done386) && defined (isc386)
-#    define done386
-#    define M_MACHINE "isc386"
-#    define M_OS "USG"
-#    define HAVE_DIRENT
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-#    define HAVE_GETGROUPS
-#    define USE_TERMCAP_EMULATION
-#    if defined (HAVE_GCC)
-#      define SYSDEP_LDFLAGS -posix
-#      define ISC_POSIX
-#    else
-#      define REQUIRED_LIBRARIES -lPW
-#      define SYSDEP_LDFLAGS -Xp
-#      define ISC_POSIX -Xp
-#    endif
-#    define ISC_SYSDEPS -DUSGr3 -DPGRP_PIPE -DHAVE_GETPW_DECLS -D_POSIX_SOURCE -DOPENDIR_NOT_ROBUST -DMEMMOVE_MISSING
-#    if defined (__STDC__)
-#      if defined (HAVE_GCC)
-#        define ISC_EXTRA -DO_NDELAY=O_NONBLOCK
-#      else
-#        define ISC_EXTRA -Dmode_t="unsigned short" -DO_NDELAY=O_NONBLOCK
-#      endif /* HAVE_GCC */
-#    else
-#      define ISC_EXTRA
-#    endif /* __STDC__ */
-#    define SYSDEP_CFLAGS ISC_SYSDEPS ISC_POSIX ISC_EXTRA
-#    undef HAVE_GETWD
-#    if !defined (ISC_4)
-#      undef HAVE_GETCWD
-#    else /* ISC_4 */
-#      undef HAVE_RESOURCE
-#    endif /* ISC_4 */
-#  endif /* isc386 */
-
-/* Xenix386 machine (with help from Ronald Khoo <ronald@robobar.co.uk>). */
-#  if !defined (done386) && defined (Xenix386)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "Xenix"
-#    define XENIX_CFLAGS -DUSG -DUSGr3 -DMEMMOVE_MISSING
-
-#    if defined (XENIX_22)
-#      define XENIX_EXTRA -DSETVBUF_REVERSED
-#      define REQUIRED_LIBRARIES -lx
-#    else /* !XENIX_22 */
-#      define HAVE_DIRENT
-#      if defined (XENIX_23)
-#        define XENIX_EXTRA -DLD_HAS_NO_DASH_L
-#        define REQUIRED_LIBRARIES -ldir
-#      else /* !XENIX_23 */
-#        define XENIX_EXTRA -xenix
-#        define SYSDEP_LDFLAGS -xenix
-#        define REQUIRED_LIBRARIES -ldir -l2.3
-#      endif /* !XENIX_23 */
-#    endif /* !XENIX_22 */
-
-#    define SYSDEP_CFLAGS XENIX_CFLAGS XENIX_EXTRA
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-#    define ALLOCA_ASM x386-alloca.s
-#    define ALLOCA_OBJ x386-alloca.o
-#    undef HAVE_ALLOCA
-#    undef HAVE_GETWD
-#    undef HAVE_RESOURCE
-#  endif /* Xenix386 */
-
-/* SCO UNIX 3.2 chip@count.tct.com (Chip Salzenberg) */
-#  if !defined (done386) && defined (M_UNIX)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "SCO"
-#    define SCO_CFLAGS -DUSG -DUSGr3 -DNO_DEV_TTY_JOB_CONTROL -DPGRP_PIPE
-#    if defined (SCOv4)
-#      define SYSDEP_CFLAGS SCO_CFLAGS -DWAITPID_BROKEN
-#    else /* !SCOv4 */
-#      define SYSDEP_CFLAGS SCO_CFLAGS -DMUST_UNBLOCK_CHLD -DOPENDIR_NOT_ROBUST
-#    endif /* !SCOv4 */
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-#    define HAVE_GETGROUPS
-#    undef HAVE_GETWD
-#    undef HAVE_RESOURCE
-/* advice from wbader@cess.lehigh.edu and Eduard.Vopicka@vse.cz */
-#    if !defined (HAVE_GCC)
-#      define REQUIRED_LIBRARIES -lc_s -lc -lPW
-#    else
-#      define REQUIRED_LIBRARIES -lc_s -lc
-#    endif /* !HAVE_GCC */
-#  endif /* SCO Unix on 386 boxes. */
-
-#  if !defined (done386) && defined (__OSF1__)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "OSF1"
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_SETLINEBUF
-#    define HAVE_VPRINTF
-#    define HAVE_STRERROR
-#    define HAVE_GETGROUPS
-#    define VOID_SIGHANDLER
-#    define HAVE_BCOPY
-#    define USE_TERMCAP_EMULATION
-#    define SYSDEP_CFLAGS -D_BSD
-#    define REQUIRED_LIBRARIES -lbsd
-#  endif /* OSF/1 */
-
-/* BSDI BSD/OS running on a 386 or 486. */
-#  if !defined (done386) && defined (__bsdi__)
-#    define done386
-#    define M_MACHINE "i386"
-#    if defined (BSDI2)
-#      define M_OS "BSD_OS"
-#      define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DRLIMTYPE=quad_t
-#    else
-#      define M_OS "BSD386"
-#      define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY
-#    endif
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_SETLINEBUF
-#    define HAVE_GETGROUPS
-#    define HAVE_VPRINTF
-#    define HAVE_STRERROR
-#    define VOID_SIGHANDLER
-#    define HAVE_DIRENT
-#    define HAVE_STRCASECMP
-#  endif /* !done386 && bsdi */
-
-/* NetBSD running on a 386 or 486. */
-#  if !defined (done386) && defined (__NetBSD__)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "NetBSD"
-#    define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
-                         -DRLIMTYPE=quad_t
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_SETLINEBUF
-#    define HAVE_GETGROUPS
-#    define HAVE_VPRINTF
-#    define HAVE_STRERROR
-#    define VOID_SIGHANDLER
-#    define HAVE_DIRENT
-#    define HAVE_STRCASECMP
-#  endif /* !done386 && __NetBSD__ */
-
-/* FreeBSD running on a 386 or 486. */
-#  if !defined (done386) && defined (__FreeBSD__)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "FreeBSD"
-#    if __FreeBSD__ > 1
-#      define SYSDEP_CFLAGS -D__BSD_4_4__ -DRLIMTYPE=quad_t
-#    else
-#      define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY
-#    endif
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_SETLINEBUF
-#    define HAVE_GETGROUPS
-#    define HAVE_VPRINTF
-#    define HAVE_STRERROR
-#    define VOID_SIGHANDLER
-#    define HAVE_DIRENT
-#    define HAVE_STRCASECMP
-#    define GCC_STANDARD
-#  endif /* !done386 && __FreeBSD__ */
-
-/* Jolitz 386BSD running on a 386 or 486. */
-#  if !defined (done386) && defined (__386BSD__)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "_386BSD"
-#    define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_SETLINEBUF
-#    define HAVE_GETGROUPS
-#    define HAVE_VPRINTF
-#    define HAVE_STRERROR
-#    define VOID_SIGHANDLER
-#    define HAVE_DIRENT
-#    define HAVE_STRCASECMP
-#  endif /* !done386 && __386BSD__ */
-
-#  if !defined (done386) && (defined (__linux__) || defined (linux))
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "Linux"
-#    define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY \
-                         -DHAVE_GETPW_DECLS -DHAVE_GETHOSTNAME
-#    define REQUIRED_LIBRARIES
-#    define HAVE_GETGROUPS
-#    define HAVE_STRERROR
-#    define VOID_SIGHANDLER
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_VPRINTF
-#    define HAVE_VARARGS_H
-#    define SEARCH_LIB_NEEDS_SPACE
-#    if defined (__GNUC__)
-#      define HAVE_FIXED_INCLUDES
-#    endif /* __GNUC__ */
-#    undef USE_GNU_MALLOC
-#    undef HAVE_SETLINEBUF
-#    undef HAVE_GETWD
-#  endif  /* !done386 && __linux__ */
-
-/* QNX 4.2 with GCC pt@flard.ocunix.on.ca (Paul Trunley) */
-#  if !defined (done386) && defined (qnx)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "QNX"
-#    define SYSDEP_CFLAGS -D_POSIX_SOURCE -O2 -DUSG
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-#    define HAVE_GCC
-#    define HAVE_FIXED_INCLUDES
-#    define HAVE_STRERROR
-#    define HAVE_GETGROUPS
-#    undef USE_GNU_MALLOC
-#  endif /* QNX 4.2 with GCC */
-
-/* Lynx 2.1.0 (Mike Brennen <mbrennen@maverick.intecom.com>) */
-#  if !defined (done386) && (defined (__Lynx__) || defined (Lynx))
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "Lynx"
-#    define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY
-#    define REQUIRED_LIBRARIES -lc_p
-#    define HAVE_GETGROUPS
-#    define VOID_SIGHANDLER
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_VPRINTF
-#    define HAVE_VARARGS_H
-#    if defined (__GNUC__)
-#      define HAVE_FIXED_INCLUDES
-#    endif /* __GNUC__ */
-/* Actually, Lynx does have unistd.h, but it defines _POSIX_VERSION,
-   and doesn't supply a fully compatible job control package.  We just
-   pretend that it doesn't have it. */
-#  undef HAVE_UNISTD_H
-/* Lynx's wait structure reverses w_Stopval and w_Stopsig - don't use it */
-#  undef HAVE_WAIT_H
-#  undef HAVE_DIRENT_H
-#  endif  /* !done386 && __Lynx__ */
-
-/* Assume a generic 386 running Sys V Release 3. */
-#  if !defined (done386)
-#    define done386
-#    define M_MACHINE "i386"
-#    define M_OS "USG"
-#    define SYSDEP_CFLAGS -DUSGr3
-#    define HAVE_VPRINTF
-#    define VOID_SIGHANDLER
-     /* Alloca requires either Gcc or cc with libPW.a */
-#    if !defined (HAVE_GCC)
-#      define REQUIRED_LIBRARIES -lPW
-#    endif /* !HAVE_GCC */
-#    undef HAVE_GETWD
-#  endif /* Generic i386 Box running Sys V release 3. */
-#endif /* All i386 Machines with an `i386' define in cpp. */
-
-/* **************************************************************** */
-/*                                                                 */
-/*                      Alliant FX/800                             */
-/*                                                                 */
-/* **************************************************************** */
-/* Original descs flushed.  FX/2800 machine desc 1.13 bfox@ai.mit.edu.
-   Do NOT use -O with the stock compilers.  If you must optimize, use
-   -uniproc with fxc, and avoid using scc. */
-#if defined (alliant)
-#  define M_MACHINE "alliant"
-#  define M_OS "Concentrix"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#  define HAVE_VPRINTF
-#  define HAVE_RESOURCE
-#  define VOID_SIGHANDLER
-#  define HAVE_STRERROR
-#  define USE_GNU_MALLOC
-#  define LD_HAS_NO_DASH_L
-#  define SYSDEP_CFLAGS -DTERMIOS_MISSING -DMKFIFO_MISSING \
-       -DHAVE_BSD_PGRP -DRLOGIN_PGRP_BUG -w
-   /* Actually, Alliant does have unistd.h, but it defines _POSIX_VERSION,
-      and doesn't supply a fully compatible job control package.  We just
-      pretend that it doesn't have it. */
-#  undef HAVE_UNISTD_H
-#  undef HAVE_ALLOCA
-#endif /* alliant */
-
-/* **************************************************************** */
-/*                                                                  */
-/*            Motorola Delta series running System V R3V6/7         */
-/*                                                                  */
-/* **************************************************************** */
-/* Contributed by Robert L. McMillin (rlm@ms_aspen.hac.com).  */
-
-#if defined (m68k) && defined (sysV68)
-#  define M_MACHINE "Delta"
-#  define M_OS "USG"
-#  define SYSDEP_CFLAGS -DUSGr3
-#  define VOID_SIGHANDLER
-#  define HAVE_VPRINTF
-#  define REQUIRED_LIBRARIES -lm881
-#  undef HAVE_GETWD
-#  undef HAVE_RESOURCE
-#  undef HAVE_DUP2
-#  undef HAVE_ALLOCA
-#endif /* Delta series */
-
-/* **************************************************************** */
-/*                                                                  */
-/*            Motorola m68k system running Linux                    */
-/*                                                                  */
-/* **************************************************************** */
-
-#if defined (mc68020) && (defined (__linux__) || defined (linux))
-#    define M_MACHINE "m68k"
-#    define M_OS "Linux"
-#    define SYSDEP_CFLAGS -DUSG -DUSGr3 -DHAVE_GETDTABLESIZE -DHAVE_BCOPY \
-                        -DHAVE_GETPW_DECLS -DHAVE_GETHOSTNAME
-#    define REQUIRED_LIBRARIES
-#    define HAVE_GETGROUPS
-#    define HAVE_STRERROR
-#    define VOID_SIGHANDLER
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_VPRINTF
-#    define HAVE_VARARGS_H
-#    define SEARCH_LIB_NEEDS_SPACE
-#    if defined (__GNUC__)
-#      define HAVE_FIXED_INCLUDES
-#    endif /* __GNUC__ */
-#    undef USE_GNU_MALLOC
-#    undef HAVE_SETLINEBUF
-#    undef HAVE_GETWD
-#  endif  /* m68k && __linux__ */
-
-/* **************************************************************** */
-/*                                                                 */
-/*                   Gould 9000 - UTX/32 R2.1A                     */
-/*                                                                 */
-/* **************************************************************** */
-#if defined (gould)            /* Maybe should be GOULD_PN ? */
-#  define M_MACHINE "gould"
-#  define M_OS "Bsd"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#endif /* gould */
-
-/* ************************ */
-/*                         */
-/*         NeXT            */
-/*                         */
-/* ************************ */
-#if defined (NeXT) && !defined (M_MACHINE)
-#  define M_MACHINE "NeXT"
-#  define M_OS "NeXTstep"
-#  define HAVE_VPRINTF
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  define VOID_SIGHANDLER
-#  if !defined (HAVE_RESOURCE)
-#    define HAVE_RESOURCE
-#  endif
-#  define HAVE_STRCASECMP
-#  define GCC_STANDARD
-#  undef HAVE_GETWD
-#  undef HAVE_GETCWD
-#  undef HAVE_DIRENT_H
-#  define SYSDEP_CFLAGS -DMKFIFO_MISSING -DRLOGIN_PGRP_BUG
-#  undef USE_GNU_MALLOC
-#endif /* NeXT */
-
-/* ********************** */
-/*                        */
-/*       m68k NetBSD      */
-/*                        */
-/* ********************** */
-#if defined (m68k) && defined (__NetBSD__)
-#  include <machine/param.h>
-#  define M_MACHINE MACHINE
-#  define M_OS "NetBSD"
-/* os/netbsd.h */
-#  define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
-                       -DRLIMTYPE=quad_t
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#  define HAVE_VPRINTF
-#  define HAVE_STRERROR
-#  define VOID_SIGHANDLER
-#  define HAVE_DIRENT
-#  define HAVE_STRCASECMP
-#endif /* m68k && __NetBSD__ */
-
-/* ************************ */
-/*                         */
-/*     hp9000 4.4 BSD      */
-/*                         */
-/* ************************ */
-#if defined (hp9000) && defined (__BSD_4_4__)
-#  define M_MACHINE "hp9000"
-#  define M_OS "BSD_4_4"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_STRCASECMP
-#  define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY -DHAVE_RESOURCE
-#  undef HAVE_ALLOCA
-#endif /* hp9000 && __BSD_4_4__ */
-
-/* ************************ */
-/*                         */
-/*     hp9000 4.3 BSD      */
-/*                         */
-/* ************************ */
-#if defined (hp9000) && !defined (hpux) && !defined (M_MACHINE)
-#  define M_MACHINE "hp9000"
-#  define M_OS "Bsd"
-#  undef HAVE_ALLOCA
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#  define USE_VFPRINTF_EMULATION
-#endif /* hp9000 && !hpux */
-
-/* ************************ */
-/*                          */
-/*          hpux            */
-/*                          */
-/* ************************ */
-#if defined (hpux)
-
-/* HPUX comes in several different flavors, from pre-release 6.2 (basically
-   straight USG), to Posix compliant 9.0. */
-
-   /* HP machines come in several processor types.
-      They are distinguished here. */
-#  if defined (hp9000s200) && !defined (hp9000s300)
-#    define M_MACHINE "hp9000s200"
-#  endif /* hp9000s200 */
-#  if defined (hp9000s300) && !defined (M_MACHINE)
-#    define M_MACHINE "hp9000s300"
-#  endif /* hp9000s300 */
-#  if defined (hp9000s500) && !defined (M_MACHINE)
-#    define M_MACHINE "hp9000s500"
-#  endif /* hp9000s500 */
-#  if defined (hp9000s700) && !defined (M_MACHINE)
-#    define M_MACHINE "hp9000s700"
-#  endif /* hp9000s700 */
-#  if defined (hp9000s800) && !defined (M_MACHINE)
-#    define M_MACHINE "hp9000s800"
-#  endif /* hp9000s800 */
-#  if defined (hppa) && !defined (M_MACHINE)
-#    define M_MACHINE "hppa"
-#  endif /* hppa */
-
-/* Define the OS as the particular type that we are using. */
-/* This is for HP-UX systems earlier than HP-UX 6.2 -- no job control. */
-#  if defined (HPUX_USG)
-#    define M_OS "USG"
-#    define HPUX_CFLAGS -Dhpux
-#    define REQUIRED_LIBRARIES -lPW -lBSD
-#    undef HAVE_WAIT_H
-#    define HPUX_EXTRA
-#  else /* !HPUX_USG */
-
-/* All of the other operating systems need HPUX to be defined. */
-#    define HPUX_EXTRA -DHPUX -Dhpux -DHAVE_GETHOSTNAME -DUSG
-
-     /* HPUX 6.2 .. 6.5 require -lBSD for getwd (), and -lPW for alloca (). */
-#    if defined (HPUX_6)
-#      define M_OS "hpux_6"
-#      define REQUIRED_LIBRARIES -lPW -lBSD
-#      undef HAVE_ALLOCA
-#      undef HAVE_WAIT_H
-#    endif /* HPUX_6 */
-
-     /* On HP-UX 7.x, we do not link with -lBSD, so we don't have getwd (). */
-#    if defined (HPUX_7)
-#      define M_OS "hpux_7"
-#      define REQUIRED_LIBRARIES -lPW
-#      define HPUX_CFLAGS -DHAVE_SOCKETS
-#      undef HAVE_GETWD
-#      undef USE_GNU_MALLOC
-#    endif /* HPUX_7 */
-
-     /* HP-UX 8.x systems do not have a working alloca () on all platforms.
-       This can cause us problems, especially when globbing.  HP has the
-       same YP bug as Sun, so we #undef USE_GNU_MALLOC. */
-#    if defined (HPUX_8)
-#      define M_OS "hpux_8"
-#      if !defined (__GNUC__)
-#        undef HAVE_ALLOCA
-#       define HPUX_ANSI +O3 -Aa -D_HPUX_SOURCE
-#      else
-#       define HPUX_ANSI
-#      endif
-#      undef HAVE_GETWD
-#      undef USE_GNU_MALLOC
-#      define HPUX_CFLAGS -DSBRK_DECLARED -DHAVE_SOCKETS HPUX_ANSI
-#    endif /* HPUX_8 */
-
-     /* HP-UX 9.0 reportedly fixes the alloca problems present in the 8.0
-        release.  If so, -lPW is required to include it. */
-#    if defined (HPUX_9)
-#      define M_OS "hpux_9"
-#      if !defined (__GNUC__)
-#        undef HAVE_ALLOCA
-#       define HPUX_ANSI +O3 -Ae
-#      else
-#       define HPUX_ANSI
-#      endif
-#      undef HAVE_GETWD
-#      undef USE_GNU_MALLOC
-#      undef HAVE_RESOURCE
-#      define HPUX_CFLAGS -DSBRK_DECLARED -DHAVE_SOCKETS -DHAVE_GETHOSTNAME HPUX_ANSI
-#    endif /* HPUX_9 */
-
-#  endif /* !HPUX_USG */
-
-   /* All of the HPUX systems that we have tested have the following. */
-#  define HAVE_DIRENT
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  define USE_TERMCAP_EMULATION
-#  define SEARCH_LIB_NEEDS_SPACE
-
-#  if defined (HPUX_CFLAGS)
-#    define SYSDEP_CFLAGS HPUX_CFLAGS HPUX_EXTRA
-#  else /* !HPUX_CFLAGS */
-#    define SYSDEP_CFLAGS HPUX_EXTRA
-#  endif /* !HPUX_CFLAGS */
-
-#endif /* hpux */
-
-/* ************************ */
-/*                          */
-/*        MIPS OSF/1        */
-/*                          */
-/* ************************ */
-#  if defined (MIPSEL) && defined (__OSF1__)
-#    define M_MACHINE "mips"
-#    define M_OS "OSF1"
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_SETLINEBUF
-#    define HAVE_VPRINTF
-#    define HAVE_STRERROR
-#    define HAVE_GETGROUPS
-#    define VOID_SIGHANDLER
-#    define HAVE_BCOPY
-#    define USE_TERMCAP_EMULATION
-#    define SYSDEP_CFLAGS -D_BSD
-#    define REQUIRED_LIBRARIES -lbsd
-#  endif /* MIPSEL && __OSF1__ */
-
-/* ************************ */
-/*                          */
-/*        HP OSF/1          */
-/*                          */
-/* ************************ */
-#if defined (__hp_osf)
-#  define M_MACHINE "HPOSF1"
-#  define M_OS "OSF1"
-#  define SYSDEP_CFLAGS -q no_sl_enable
-#  define SYSDEP_LDFLAGS -q lang_level:classic
-#  define REQUIRED_LIBRARIES -lPW
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  undef HAVE_ALLOCA
-#endif /* __hp_osf */
-
-/* ************************ */
-/*                          */
-/*        KSR1 OSF/1        */
-/*                          */
-/* ************************ */
-#if defined (__ksr1__)
-#  define M_MACHINE "KSR1"
-#  define M_OS "OSF1"
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY -DHAVE_UID_T
-#  undef HAVE_ALLOCA
-#  undef USE_GNU_MALLOC
-#endif /* ksr1 */
-
-/* ************************ */
-/*                          */
-/*   Intel Paragon - OSF/1  */
-/*                          */
-/* ************************ */
-#if defined (__i860) && defined (__PARAGON__)
-#  define M_MACHINE "Paragon"
-#  define M_OS "OSF1"
-#  define HAVE_GETGROUPS
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_STRERROR
-#  define HAVE_SYS_SIGLIST
-#endif /* __i860 && __PARAGON__ */
-
-/* ************************ */
-/*                          */
-/* IBM AIX/ESA (OSF/1)      */
-/*                          */
-/* ************************ */
-#if defined(AIXESA) || (defined(__ibmesa) && defined(_AIX))
-#  define M_MACHINE "IBMESA"
-#  define M_OS "OSF1"
-#  define HAVE_GETGROUPS
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_STRERROR
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_ALLOCA_H                /* hack for AIX/ESA, which has malloc.h */
-#  undef USE_GNU_MALLOC
-#endif /* AIXESA || (__ibmesa && _AIX) */
-
-/* ************************ */
-/*                          */
-/*   Intel i860  -- SVR4    */
-/*                          */
-/* ************************ */
-#if defined (__i860) && defined (USGr4) && !defined (M_MACHINE)
-#  define M_MACHINE "i860"
-#  define M_OS "USG"
-#  define HAVE_DIRENT
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_GETGROUPS
-#  if !defined (HAVE_GCC) && !defined (HAVE_ALLOCA_H)
-#    undef HAVE_ALLOCA
-#  endif /* !HAVE_GCC && !HAVE_ALLOCA_H */
-#  if defined (USGr4_2)
-#    define SYSDEP_CFLAGS -DUSGr4 -DUSGr4_2
-#  else
-#    define SYSDEP_CFLAGS -DUSGr4
-#  endif /* ! USGr4_2 */
-#  undef HAVE_GETWD
-#endif /* __i860 && USGr4 */
-
-/* ************************ */
-/*                         */
-/*         Xenix286        */
-/*                         */
-/* ************************ */
-#if defined (Xenix286)
-#  define M_MACHINE "i286"
-#  define M_OS "Xenix"
-
-#  define XENIX_CFLAGS -DUSG -DUSGr3 -DMEMMOVE_MISSING
-
-#  if defined (XENIX_22)
-#    define XENIX_EXTRA -DSETVBUF_REVERSED
-#    define REQUIRED_LIBRARIES -lx
-#  else /* !XENIX_22 */
-#    define HAVE_DIRENT
-#    if defined (XENIX_23)
-#      define XENIX_EXTRA -DLD_HAS_NO_DASH_L
-#      define REQUIRED_LIBRARIES -ldir
-#    else /* !XENIX_23 */
-#      define XENIX_EXTRA -xenix
-#      define SYSDEP_LDFLAGS -xenix
-#      define REQUIRED_LIBRARIES -ldir -l2.3
-#    endif /* !XENIX_23 */
-#  endif /* !XENIX_22 */
-
-#  define SYSDEP_CFLAGS XENIX_CFLAGS XENIX_EXTRA
-#  undef HAVE_ALLOCA
-#  undef HAVE_GETWD
-#  undef HAVE_RESOURCE
-#endif /* Xenix286 */
-
-/* ************************ */
-/*                         */
-/*         convex          */
-/*                         */
-/* ************************ */
-#if defined (convex)
-#  define M_MACHINE "convex"
-#  define M_OS "Bsd"
-#  undef HAVE_ALLOCA
-#  define HAVE_SETLINEBUF
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_GETGROUPS
-#endif /* convex */
-
-/* ************************ */
-/*                          */
-/*          AIX/RT          */
-/*                          */
-/* ************************ */
-#if defined (aix) && !defined (aixpc)
-#  define M_MACHINE "AIXRT"
-#  define M_OS "USG"
-#  define HAVE_DIRENT
-#  define HAVE_VPRINTF
-#  define HAVE_SYS_SIGLIST
-#  define VOID_SIGHANDLER
-#  define HAVE_GETGROUPS
-#  define USE_TERMCAP_EMULATION
-#  if !defined (HAVE_GCC)
-#    undef MACHINE_CFLAGS
-#    define MACHINE_CFLAGS -a
-#  endif /* !HAVE_GCC */
-#  define SYSDEP_CFLAGS MACHINE_CFLAGS -DNLS -DUSGr3 -DHAVE_BCOPY
-#  undef USE_GNU_MALLOC
-#  undef HAVE_ALLOCA
-#  undef HAVE_RESOURCE
-#endif /* aix && !aixpc */
-
-/* **************************************** */
-/*                                         */
-/*             IBM RISC 6000               */
-/*                                         */
-/* **************************************** */
-#if defined (RISC6000) || defined (_IBMR2)
-#  define M_MACHINE "RISC6000"
-#  define M_OS "AIX"
-#  define HAVE_DIRENT
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define USE_TERMCAP_EMULATION
-#  define HAVE_GETGROUPS
-#  define SYSDEP_CFLAGS -DNLS -DUSGr3 -DHAVE_BCOPY
-#  undef HAVE_ALLOCA
-#  undef HAVE_GETWD
-#  undef USE_GNU_MALLOC
-#endif /* RISC6000 */
-
-/* **************************************** */
-/*                                         */
-/*     u370 IBM AIX/370                    */
-/*                                         */
-/* **************************************** */
-#if defined (u370)
-#  if defined (_AIX370)
-#    define M_MACHINE "AIX370"
-#    define M_OS "Bsd"
-#    define REQUIRED_LIBRARIES -lbsd
-#    define HAVE_SETLINEBUF
-#    define HAVE_VPRINTF
-#    define SYSDEP_CFLAGS -D_BSD
-#    define HAVE_GETGROUPS
-#    define USE_TERMCAP_EMULATION
-#    undef USE_GNU_MALLOC
-#  endif /* _AIX370 */
-#  if defined (USGr4) /* System V Release 4 on 370 series architecture. */
-#    define M_MACHINE "uxp"
-#    define M_OS "USG"
-#    define HAVE_DIRENT
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_VPRINTF
-#    define USE_GNU_MALLOC
-#    define VOID_SIGHANDLER
-#    if !defined (HAVE_GCC)
-#      undef HAVE_ALLOCA
-#      define EXTRA_LIB_SEARCH_PATH /usr/ucblib
-#      define REQUIRED_LIBRARIES -lc -lucb
-#    endif /* !HAVE_GCC */
-#    define HAVE_GETGROUPS
-#    define HAVE_RESOURCE
-#    define SYSDEP_CFLAGS -DUSGr4 -DSBRK_DECLARED
-#    endif /* USGr4 */
-#endif /* u370 */
-
-/* ************************ */
-/*                         */
-/*         ATT 3B          */
-/*                         */
-/* ************************ */
-#if defined (att3b) || defined (u3b2)
-#  if defined (att3b)
-#    define M_MACHINE "att3b"
-#    define HAVE_SYS_SIGLIST
-#  else /* !att3b */
-#    define M_MACHINE "u3b2"
-#  endif /* !att3b */
-#  define M_OS "USG"
-#  undef HAVE_GETWD
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-   /* For an AT&T Unix before V.3 take out the -DUSGr3 and the HAVE_DIRENT. */
-#  define SYSDEP_CFLAGS -DUSGr3
-#  define HAVE_DIRENT
-   /* Alloca requires either Gcc or cc with libPW.a. */
-#  if !defined (HAVE_GCC)
-#    define REQUIRED_LIBRARIES -lPW
-#  endif /* !HAVE_GCC */
-#endif /* att3b */
-
-/* ************************ */
-/*                         */
-/*         ATT 386         */
-/*                         */
-/* ************************ */
-#if defined (att386)
-#  define M_MACHINE "att386"
-#  define M_OS "USG"
-#  undef HAVE_GETWD
-   /* Alloca requires either Gcc or cc with libPW.a. */
-#  if !defined (HAVE_GCC)
-#    define REQUIRED_LIBRARIES -lPW
-#  endif /* HAVE_GCC */
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-   /* For an AT&T Unix before V.3 take out the -DUSGr3 and the HAVE_DIRENT. */
-#  define SYSDEP_CFLAGS -DUSGr3
-#  define HAVE_DIRENT
-#endif /* att386 */
-
-/* ************************ */
-/*                         */
-/*      ATT UNIX PC        */
-/*                         */
-/* ************************ */
-#if defined (unixpc)
-#  define M_MACHINE "unixpc"
-#  define M_OS "USG"
-#  define HAVE_VPRINTF
-#  define HAVE_DIRENT
-#  if defined (HAVE_GCC)
-#    define REQUIRED_LIBRARIES -ldirent -shlib
-#  else /* !HAVE_GCC */
-#    define REQUIRED_LIBRARIES -ldirent
-#  endif /* !HAVE_GCC */
-#  undef HAVE_GETWD
-#  undef HAVE_DUP2
-#  undef VOID_SIGHANDLER
-#  undef HAVE_WAIT_H
-#endif /* unixpc */
-
-/* ************************ */
-/*                         */
-/*         Encore          */
-/*                         */
-/* ************************ */
-#if defined (MULTIMAX)
-#  if defined (n16)
-#    define M_MACHINE "Multimax32k"
-#  else
-#    define M_MACHINE "Multimax"
-#  endif /* n16 */
-#  if defined (UMAXV)
-#    define M_OS "USG"
-#    define REQUIRED_LIBRARIES -lPW
-#    define SYSDEP_CFLAGS -DUSGr3
-#    define HAVE_DIRENT
-#    define HAVE_VPRINTF
-#    define USE_TERMCAP_EMULATION
-#    define VOID_SIGHANDLER
-#  else
-#    if defined (CMU)
-#      define M_OS "Mach"
-#    else
-#      define M_OS "Bsd"
-#    endif /* CMU */
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_STRERROR
-#    define HAVE_SETLINEBUF
-#  endif /* UMAXV */
-#  define HAVE_GETGROUPS
-#endif  /* MULTIMAX */
-
-/* ******************************************** */
-/*                                             */
-/*   Encore Series 91 (88K BCS w Job Control)  */
-/*                                             */
-/* ******************************************** */
-#if defined (__m88k) && defined (__UMAXV__)
-#  define M_MACHINE "Gemini"
-#  define M_OS "USG"
-#  define REQUIRED_LIBRARIES -lPW
-#  define USE_TERMCAP_EMULATION
-#  define HAVE_DIRENT
-#  define HAVE_GETGROUPS
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define SYSDEP_CFLAGS -q ext=pcc -D_POSIX_JOB_CONTROL -D_POSIX_VERSION \
-                       -Dmalloc=_malloc -Dfree=_free -Drealloc=_realloc
-#endif  /* m88k && __UMAXV__ */
-
-/* ******************************************** */
-/*                                             */
-/*    System V Release 4 on the ICL DRS6000     */
-/*                                             */
-/* ******************************************** */
-#if defined (drs6000)
-#  define M_MACHINE "drs6000"
-#  define M_OS "USG"
-#  define SYSDEP_CFLAGS -Xa -DUSGr4
-#  define SEARCH_LIB_NEEDS_SPACE
-#  define HAVE_DIRENT
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_VPRINTF
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  define VOID_SIGHANDLER
-#  define USE_GNU_TERMCAP
-#  if !defined (__GNUC__)
-#    undef HAVE_ALLOCA
-#  endif
-#  undef HAVE_ALLOCA_H
-#  undef USE_GNU_MALLOC
-#endif /* drs6000 */
-
-/* ******************************************** */
-/*                                             */
-/*   System V Release 4 on the Sparc (generic)  */
-/*                                             */
-/* ******************************************** */
-#if defined (sparc) && defined (__svr4__) && !defined (M_MACHINE)
-#  define M_MACHINE "sparc"
-#  define M_OS "SVR4"
-#  define SYSDEP_CFLAGS -DUSG -DUSGr4 -DHAVE_UID_T
-#  define HAVE_DIRENT
-#  define HAVE_VPRINTF
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  define VOID_SIGHANDLER
-#  define USE_GNU_TERMCAP
-#  if !defined (__GNUC__)
-#    undef HAVE_ALLOCA
-#  endif
-#  undef HAVE_BCOPY
-#  undef HAVE_GETWD
-#  undef USE_GNU_MALLOC
-#endif /* sparc && __svr4__ */
-
-/* ******************* */
-/*                    */
-/*   Commodore Amiga   */
-/*                    */
-/* ******************* */
-#if defined (amiga) && defined (__NetBSD__)
-#  define M_MACHINE "amiga"
-#  define M_OS "NetBSD"
-#  define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
-                       -DRLIMTYPE=quad_t
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#  define HAVE_VPRINTF
-#  define HAVE_STRERROR
-#  define VOID_SIGHANDLER
-#  define HAVE_DIRENT
-#  define HAVE_STRCASECMP
-#endif /* amiga && __NetBSD__ */
-
-#if defined (amiga) && !defined (M_MACHINE)
-#  define M_MACHINE "amiga"
-#  define M_OS "USG"
-#  define SYSDEP_CFLAGS -DUSGr4
-#  if !defined (HAVE_GCC)
-#    define EXTRA_LIB_SEARCH_PATH /usr/ucblib
-#    define REQUIRED_LIBRARIES -lc -lucb
-#  endif /* !HAVE_GCC */
-#  define HAVE_DIRENT
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  undef HAVE_GETWD
-#  undef USE_GNU_MALLOC
-#endif /* System V Release 4 on amiga */
-
-/* ************************ */
-/*                         */
-/*         clipper         */
-/*                         */
-/* ************************ */
-/* This is for the Orion 1/05 (A BSD 4.2 box based on a Clipper processor) */
-#if defined (clipper) && !defined (M_MACHINE)
-#  define M_MACHINE "clipper"
-#  define M_OS "Bsd"
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#endif  /* clipper */
-
-/* ******************************** */
-/*                                 */
-/*    Integrated Solutions 68020?   */
-/*                                 */
-/* ******************************** */
-#if defined (is68k)
-#  define M_MACHINE "is68k"
-#  define M_OS "Bsd"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#  define USE_VFPRINTF_EMULATION
-#  undef HAVE_ALLOCA
-#endif /* is68k */
-
-/* ******************************** */
-/*                                 */
-/*        Omron Luna/Mach 2.5      */
-/*                                 */
-/* ******************************** */
-#if defined (luna88k)
-#  define M_MACHINE "Luna88k"
-#  define M_OS "Bsd"
-#  define HAVE_SYS_SIGLIST
-#  define USE_GNU_MALLOC
-#  define HAVE_SETLINEBUF
-#  define HAVE_VPRINTF
-#  define HAVE_GETGROUPS
-#  define HAVE_VPRINTF
-#endif /* luna88k */
-
-/* ************************ */
-/*                         */
-/*   BBN Butterfly GP1000   */
-/*   Mach 1000 v2.5        */
-/*                         */
-/* ************************ */
-#if defined (butterfly) && defined (BFLY1)
-#define M_MACHINE "BBN Butterfly"
-#define M_OS "Mach 1000"
-#define HAVE_SETLINEBUF
-#define HAVE_SYS_SIGLIST
-#define HAVE_GETGROUPS
-#define HAVE_VPRINTF
-#  ifdef BUILDING_MAKEFILE
-MAKE = make
-#  endif /* BUILDING_MAKEFILE */
-#endif /* butterfly */
-
-/* **************************************** */
-/*                                         */
-/*         Apollo/SR10.2/BSD4.3            */
-/*                                         */
-/* **************************************** */
-/* This is for the Apollo DN3500 running SR10.2 BSD4.3 */
-#if defined (apollo)
-#  define M_MACHINE "apollo"
-#  define M_OS "Bsd"
-#  define SYSDEP_CFLAGS -D_POSIX_VERSION -D_INCLUDE_BSD_SOURCE \
-                       -D_INCLUDE_POSIX_SOURCE -DTERMIOS_MISSING \
-                       -DHAVE_BSD_PGRP -Dpid_t=int
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#endif /* apollo */
-
-/* ************************ */
-/*                         */
-/*     DG AViiON           */
-/*                         */
-/* ************************ */
-/* This is for the DG AViiON box (runs DG/UX with both AT&T & BSD features.) */
-/* DG/UX comes standard with Gcc. */
-#if defined (__DGUX__) || defined (DGUX)
-#  define M_OS "DGUX"
-#  if !defined (_M88KBCS_TARGET)
-#    define M_MACHINE "AViiON"
-#    define REQUIRED_LIBRARIES -ldgc
-#  else /* _M88KBCS_TARGET */
-#    define M_MACHINE "m88kBCS_AV"
-#    undef MACHINE_CFLAGS
-#    define MACHINE_CFLAGS -D_M88K_SOURCE
-#    undef HAVE_RESOURCE
-#  endif /* _M88KBCS_TARGET */
-#  define SYSDEP_CFLAGS MACHINE_CFLAGS -D_DGUX_SOURCE -DPGRP_PIPE -DUSG
-#  define HAVE_GCC
-#  define HAVE_FIXED_INCLUDES
-#  define HAVE_STRERROR
-#  define HAVE_GETGROUPS
-#  define VOID_SIGHANDLER
-#  undef HAVE_GETWD
-#  undef USE_GNU_MALLOC
-
-/* If you want to build bash for M88K BCS compliance on a DG/UX 5.4
-   or above system, do the following:
-     - If you have built in this directory before run "make clean" to
-       endure the Bash directory is clean.
-     - Run "eval `sde-target m88kbcs`" to set the software development
-       environment to build BCS objects.
-     - Run "make".
-     - Do "eval `sde-target default`" to reset the SDE. */
-#endif /* __DGUX__ */
-
-/* ************************ */
-/*                         */
-/*    Harris Night Hawk            */
-/*                         */
-/* ************************ */
-/* This is for the Harris Night Hawk family. */
-#if defined (_CX_UX)
-#  if defined (_M88K)
-#    define M_MACHINE "nh4000"
-#  else /* !_M88K */
-#    if defined (hcx)
-#      define M_MACHINE "nh2000"
-#    else /* !hcx */
-#      if defined (gcx)
-#        define M_MACHINE "nh3000"
-#      endif /* gcx */
-#    endif /* !hcx */
-#  endif /* !_M88K */
-#  define M_OS "USG"
-#  define SYSDEP_CFLAGS -g -Xa -v -Dgetwd=bash_getwd -D_POSIX_SOURCE \
-                       -D_POSIX_JOB_CONTROL
-#  define USE_TERMCAP_EMULATION
-#  define HAVE_VPRINTF
-#  define HAVE_GETGROUPS
-#  define VOID_SIGHANDLER
-#  undef USE_GNU_MALLOC
-#  undef HAVE_GETWD
-#endif /* _CX_UX */
-
-/* **************************************** */
-/*                                         */
-/*             Tektronix                   */
-/*                                         */
-/* **************************************** */
-/* These are unproven as yet. */
-#if defined (Tek4132)
-#  define M_MACHINE "Tek4132"
-#  define M_OS "Bsd"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#endif /* Tek4132 */
-
-#if defined (Tek4300)
-#  define M_MACHINE "Tek4300"
-#  define M_OS "Bsd"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#endif /* Tek4300 */
-
-/* ************************ */
-/*                          */
-/*     Tektronix XD88       */
-/*                          */
-/* ************************ */
-#if defined (m88k) && defined (XD88)
-#  define M_MACHINE "XD88"
-#  define M_OS "USG"
-#  define HAVE_DIRENT
-#  define HAVE_VPRINTF
-#  define HAVE_GETCWD
-#  define VOID_SIGHANDLER
-#  define HAVE_GETGROUPS
-#  undef HAVE_GETWD
-#  undef HAVE_ALLOCA
-#endif /* m88k && XD88 */
-
-/* ************************ */
-/*                          */
-/*     Motorola M88100      */
-/*                          */
-/* ************************ */
-#if defined (m88k) && (defined (M88100) || defined (USGr4))
-#  define M_MACHINE "M88100"
-#  define M_OS "USG"
-#  if defined (USGr4)
-#    define SYSDEP_CFLAGS -DUSGr4 -D_POSIX_JOB_CONTROL
-#  else
-#    define SYSDEP_CFLAGS -D_POSIX_JOB_CONTROL
-#  endif
-#  define HAVE_DIRENT
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define HAVE_GETGROUPS
-#  undef HAVE_GETWD
-#  if !defined (USGr4)
-#    undef HAVE_GETCWD
-#  endif
-#  undef HAVE_ALLOCA
-#endif /* m88k && M88100 */
-
-/* ************************ */
-/*                         */
-/*     Sequent Balances     */
-/*       (Dynix 3.x)       */
-/* ************************ */
-#if defined (sequent) && !defined (M_MACHINE)
-#  define M_MACHINE "Sequent"
-#  define M_OS "Bsd"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_SETLINEBUF
-#  define HAVE_GETGROUPS
-#  define LD_HAS_NO_DASH_L
-#  undef HAVE_DUP2
-#endif /* sequent */
-
-/* ****************************************** */
-/*                                           */
-/*    NCR Tower 32, System V Release 3       */
-/*                                           */
-/* ****************************************** */
-#if defined (tower32)
-#  define M_MACHINE "tower32"
-#  define M_OS "USG"
-#  if !defined (HAVE_GCC)
-#    define REQUIRED_LIBRARIES -lPW
-     /* Disable stack/frame-pointer optimization, incompatible with alloca */
-#    undef MACHINE_CFLAGS
-#    define MACHINE_CFLAGS -W2,-aat
-#  endif /* !HAVE_GCC */
-#  define SYSDEP_CFLAGS -DUSGr3 MACHINE_CFLAGS
-#  define HAVE_VPRINTF
-#  define USE_TERMCAP_EMULATION
-#  define VOID_SIGHANDLER
-#  undef HAVE_GETWD
-#endif /* tower32 */
-
-/* ************************ */
-/*                         */
-/*     Concurrent          */
-/*                         */
-/* ************************ */
-#if defined (concurrent)
-#  define M_MACHINE "Concurrent"
-#  if defined (USE_BSD_UNIVERSE)
-     /* Use the BSD universe (`universe ucb') */
-#    define M_OS "Bsd"
-#    define HAVE_SYS_SIGLIST
-#    define HAVE_SETLINEBUF
-#    define HAVE_GETGROUPS
-#  else /* !USE_BSD_UNIVERSE */
-   /* Concurrent 7000 with RTU 6.1A using the ATT universe (`universe att') */
-#    define M_OS "USG"
-#    define SYSDEP_CFLAGS -DHAVE_BCOPY -DHAVE_UID_T -DHAVE_GETDTABLESIZE -Dmc7000
-#    define REQUIRED_LIBRARIES -ljobs
-#    define HAVE_VPRINTF
-#    define HAVE_GETGROUPS
-#    define HAVE_DUP2
-#    define HAVE_DIRENT
-#    define HAVE_SYS_SIGLIST
-#  endif /* !USE_BSD_UNIVERSE */
-#endif /* concurrent */
-
-/* **************************************************************** */
-/*                                                                  */
-/*             Honeywell Bull X20 (lele@idea.sublink.org)          */
-/*                                                                  */
-/* **************************************************************** */
-#if defined (hbullx20)
-#  define M_MACHINE "Honeywell"
-#  define M_OS "USG"
-#  define SYSDEP_CFLAGS -DUSG
-   /* Bull x20 needs -lposix for struct dirent. */
-#  define REQUIRED_LIBRARIES -lPW -lposix
-#  define HAVE_DIRENT
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define USE_TERMCAP_EMULATION
-#  undef HAVE_GETWD
-#endif  /* hbullx20 */
-
-/* **************************************************************** */
-/*                                                                  */
-/*             Bull DPX2 (F.Pierresteguy@frcl.bull.fr)              */
-/*                                                                  */
-/* **************************************************************** */
-#if defined (DPX2)
-#  define M_MACHINE "DPX2"
-#  define M_OS "USG"
-#  define SYSDEP_CFLAGS -DUSG -DUSGr3 -DHAVE_BCOPY -DHAVE_UID_T -D_POSIX_JOB_CONTROL
-/* #  define REQUIRED_LIBRARIES -lPW -lposix */
-#  define HAVE_DIRENT
-#  define VOID_SIGHANDLER
-#  define HAVE_POSIX_SIGNALS
-#  define HAVE_VPRINTF
-#  define HAVE_SETVBUF
-#  define HAVE_STRERROR
-#  define HAVE_GETGROUPS
-#  define HAVE_GETDTABLESIZE
-#  define USE_TERMCAP_EMULATION
-#endif  /* DPX2 */
-
-/* ************************ */
-/*                         */
-/*         CRAY            */
-/*                         */
-/* ************************ */
-#if defined (cray)
-#  include <sys/param.h>
-#  if defined (Cray1) || defined (Cray2)
-#    define M_MACHINE "Cray"
-#    define CRAY_STACK
-#  endif
-#  if defined (CrayXMP) && !defined (M_MACHINE)
-#    define M_MACHINE "CrayXMP"
-#    define CRAY_STACK -DCRAY_STACKSEG_END=getb67
-#  endif
-#  if defined (CrayYMP) && !defined (M_MACHINE)
-#    define M_MACHINE "CrayYMP"
-#    if RELEASE_LEVEL >= 7000
-#      define CRAY_STACK -DCRAY_STACKSEG_END=_getb67
-#    else
-#      define CRAY_STACK -DCRAY_STACKSEG_END=getb67
-#    endif /* RELEASE_LEVEL < 7000 */
-#  endif
-#  if !defined (M_MACHINE)
-#    define M_MACHINE "Cray"
-#    define CRAY_STACK
-#  endif
-#  define M_OS "Unicos"
-#  define SYSDEP_CFLAGS -DUSG -DPGRP_PIPE -DOPENDIR_NOT_ROBUST \
-                       -DHAVE_BCOPY CRAY_STACK
-#  define HAVE_VPRINTF
-#  define HAVE_MULTIPLE_GROUPS
-#  define VOID_SIGHANDLER
-#  define USE_TERMCAP_EMULATION
-#  undef HAVE_ALLOCA
-#  undef HAVE_RESOURCE
-#  undef USE_GNU_MALLOC
-#endif /* cray */
-
-/* ************************ */
-/*                         */
-/*     MagicStation        */
-/*                         */
-/* ************************ */
-#if defined (MagicStation)
-#  define M_MACHINE "MagicStation"
-#  define M_OS "USG"
-#  define SYSDEP_CFLAGS -DUSGr4
-#  define HAVE_DIRENT
-#  define HAVE_GETGROUPS
-#  define HAVE_STRERROR
-#  define VOID_SIGHANDLER
-#  undef HAVE_ALLOCA
-#  undef HAVE_GETWD
-#endif /* MagicStation */
-
-/* ************************ */
-/*                         */
-/*        Plexus           */
-/*                         */
-/* ************************ */
-#if defined (plexus)
-#  define M_MACHINE "plexus"
-#  define M_OS "USG"
-#  define REQUIRED_LIBRARIES -lndir
-#  define USE_TERMCAP_EMULATION
-#  undef HAVE_DUP2
-#  undef HAVE_GETWD
-#  define HAVE_VPRINTF
-#  undef HAVE_ALLOCA           /* -lPW doesn't work w/bash-cc? */
-#endif /* plexus */
-
-/* ************************ */
-/*                         */   
-/*     Siemens MX500        */
-/*      (SINIX 5.2x)       */
-/* ************************ */
-#if defined (sinix)
-#define M_MACHINE "Siemens MX500"
-#define M_OS "SINIX V5.2x"
-#define USG
-#define HAVE_GETCWD
-#define VOID_SIGHANDLER
-#define HAVE_STRERROR
-#define HAVE_GETGROUPS
-#define HAVE_VPRINTF
-#define HAVE_POSIX_SIGNALS
-#define HAVE_RESOURCE
-#define USE_GNU_MALLOC
-#define SYSDEP_CFLAGS -DUSGr3 -DUSG
-#define REQUIRED_LIBRARIES syscalls.o
-#undef HAVE_ALLOCA
-#undef HAVE_GETWD
-#endif /* sinix */
-
-/* ************************ */
-/*                         */
-/*  Symmetric 375 (4.2 BSD) */
-/*                         */
-/* ************************ */
-#if defined (scs) && !defined (M_MACHINE)
-#  define M_MACHINE "Symmetric_375"
-#  define M_OS "Bsd"
-#  define HAVE_SYS_SIGLIST
-#  define HAVE_GETGROUPS
-#  define HAVE_SETLINEBUF
-#  define USE_VFPRINTF_EMULATION
-#  define USE_GNU_MALLOC
-#  undef HAVE_STRCHR
-#endif /* scs */
-
-/* ************************ */
-/*                         */
-/*    Tandem running SVR3   */
-/*                         */
-/* ************************ */
-#if defined (tandem) && !defined (M_MACHINE)
-#  define M_MACHINE "tandem"
-#  define M_OS "USG"
-#  define SYSDEP_CFLAGS -DUSGr3
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-   /* Alloca requires either Gcc or cc with libPW.a */
-#  if !defined (HAVE_GCC)
-#    define REQUIRED_LIBRARIES -lPW
-#  endif /* !HAVE_GCC */
-#  undef HAVE_GETWD
-#endif /* Tandem running SVR3 */
-
-/* ****************** */
-/*                    */
-/*     Amdahl UTS     */
-/*                    */
-/* ****************** */
-
-#if defined (UTS)
-#  define M_MACHINE "uts"
-#  define M_OS "systemV"
-#  define SYSDEP_CFLAGS -DUSG -DMEMMOVE_MISSING
-#  define REQUIRED_LIBRARIES
-#  undef HAVE_SYS_SIGLIST
-#  undef HAVE_GETWD
-#  undef HAVE_ALLOCA
-#  define HAVE_VPRINTF
-#  define HAVE_DIRENT
-#  undef HAVE_RESOURCE
-#endif  /* UTS */
-
-/* ************************ */
-/*                         */
-/*    PCS Cadmus System            */
-/*                         */
-/* ************************ */
-#if defined (cadmus) && !defined (M_MACHINE)
-#  define M_MACHINE "cadmus"
-#  define M_OS "BrainDeath"
-#  define SYSDEP_CFLAGS -DUSG
-#  define HAVE_DIRENT
-#  define HAVE_VPRINTF
-#  define VOID_SIGHANDLER
-#  define USE_TERMCAP_EMULATION
-#  undef HAVE_GETWD
-#  undef HAVE_ALLOCA
-#  undef HAVE_WAIT_H
-#endif /* cadmus */
-
-/* **************************************************************** */
-/*                                                                 */
-/*                     Generic Entry                               */
-/*                                                                 */
-/* **************************************************************** */
-
-/* Use this entry for your machine if it isn't represented here.  It
-   is loosely based on a Vax running 4.3 BSD. */
-
-#if !defined (M_MACHINE)
-#  define UNKNOWN_MACHINE
-#endif
-
-#if defined (UNKNOWN_MACHINE)
-#  define M_MACHINE "UNKNOWN_MACHINE"
-#  define M_OS "UNKNOWN_OS"
-
-/* Required libraries for building on this system. */
-#  define REQUIRED_LIBRARIES
-
-/* Define HAVE_SYS_SIGLIST if your system has sys_siglist[]. */
-#  define HAVE_SYS_SIGLIST
-
-/* Undef HAVE_GETWD if your C library does not provide a working version
-   of getwd(). */
-/* #  undef HAVE_GETWD */
-
-/* Undef HAVE_GETCWD if your C library does not provide a working version
-   of getcwd(). */
-/* #  undef HAVE_GETCWD */
-
-/* Undef HAVE_ALLOCA if you are not using Gcc, and neither your library
-   nor compiler has a version of alloca ().  In that case, we will use
-   our version of alloca () in alloca.c */
-/* #  undef HAVE_ALLOCA */
-
-/* Undef USE_GNU_MALLOC if there appear to be library conflicts, or if you
-   especially desire to use your OS's version of malloc () and friends.  We
-   reccommend against this because GNU Malloc has debugging code built in. */
-/* #  undef USE_GNU_MALLOC */
-
-/* Define USE_GNU_TERMCAP if you want to use the GNU termcap library
-   instead of your system termcap library. */
-/* #  define USE_GNU_TERMCAP */
-
-/* Define HAVE_SETLINEBUF if your machine has the setlinebuf ()
-   stream library call.  Otherwise, setvbuf () will be used.  If
-   neither of them work, you can edit in your own buffer control
-   based upon your machines capabilities. */
-#  define HAVE_SETLINEBUF
-
-/* Define HAVE_VPRINTF if your machines has the vfprintf () library
-   call.  Otherwise, printf will be used.  */
-#  define HAVE_VPRINTF
-
-/* Define USE_VFPRINTF_EMULATION if you want to use the BSD-compatible
-   vfprintf() emulation in vprint.c. */
-/* #  define USE_VFPRINTF_EMULATION */
-
-/* Define HAVE_GETGROUPS if your OS allows you to be in multiple
-   groups simultaneously by supporting the `getgroups' system call. */
-#  define HAVE_GETGROUPS
-
-/* Define SYSDEP_CFLAGS to be the flags to cc that make your compiler
-   work.  For example, `-ma' on the RT makes alloca () work. */
-/* This is a summary of the semi-machine-independent definitions that
-   can go into SYSDEP_CFLAGS:
-
-       AFS     -       The Andrew File System is being used
-       AFS_CREATE_BUG - AFS has a bug with file creation if O_CREAT is
-                        specified
-       BROKEN_SIGSUSPEND - sigsuspend(2) does not work to wake up processes
-                           on SIGCHLD
-       HAVE_BSD_PGRP - getpgrp(2) takes a pid argument, a la 4.3 BSD
-       HAVE_BCOPY -    bcopy(3) exists and works as in BSD
-       HAVE_GETDTABLESIZE - getdtablesize(2) exists and works correctly
-       HAVE_GETHOSTNAME - gethostname(2) or gethostname(3) is present and
-                          works as in BSD
-       HAVE_GETPW_DECLS - USG machines with the getpw* functions defined in
-                          <pwd.h> that cannot handle redefinitions in the
-                          bash source
-       HAVE_RESOURCE - <sys/resource.h> and [gs]rlimit exist and work
-       HAVE_SETDTABLESIZE - setdtablesize(2) exists and works correctly
-       HAVE_SOCKETS - this system has BSD sockets added to a System V base
-       HAVE_UID_T -    Definitions for uid_t and gid_t are in <sys/types.h>
-       INT_GROUPS_ARRAY - the second argument to getgroups(3) is an array
-                          of integers
-       MEMMOVE_MISSING - the system does not have memmove(3)
-       MKFIFO_MISSING - named pipes do not work or mkfifo(3) is missing
-       NO_DEV_TTY_JOB_CONTROL - system can't do job control on /dev/tty
-       SBRK_DECLARED - don't declare sbrk as extern char *sbrk() in
-                      lib/malloc/malloc.c
-       OPENDIR_NOT_ROBUST - opendir(3) allows you to open non-directory files
-       PGRP_PIPE -     Requires parent-child synchronization via pipes to
-                       make job control work right
-       SETVBUF_REVERSED - brain-damaged implementation of setvbuf that
-                               has args 2 and 3 reversed from the SVID and
-                               ANSI standard
-       RLOGIN_PGRP_BUG - processes started by rlogind have a process group
-                         of 0
-       TERMIOS_LDISC - system has a c_line line discipline member in struct
-                       termios
-       TERMIOS_MISSING - the termios(3) functions are not present or don't
-                         work, even though _POSIX_VERSION is defined
-       USG     -       The machine is running some sort of System V Unix
-       USGr3   -       The machine is running SVR3.x
-       USGr4   -       The machine is running SVR4
-       USGr4_2 -       The machine is running SVR4.2
-
-       Some other machine-dependent options:
-       CPCC    -       Dynix
-       NLS     -       Alpha, AIX
-       _BSD    -       Alpha
-       _DGUX_SOURCE -  DG/UX
-       _INCLUDE_BSD_SOURCE - Apollo
-       _INCLUDE_POSIX_SOURCE - Apollo
-
-       Posix.1 options that are normally set in <unistd.h>:
-       _POSIX_VERSION -        Encore, Apollo
-       _POSIX_SOURCE - ISC, QNX, Harris
-       _POSIX_JOB_CONTROL - NEC EWS, Encore, Harris, Motorola, Bull
-*/
-#  define SYSDEP_CFLAGS
-
-/* Define HAVE_STRERROR if your system supplies a definition for strerror ()
-   in the C library, or a macro in a header file. */
-/* #  define HAVE_STRERROR */
-
-/* Define HAVE_STRCASECMP if your system supplies definitions for the
-   casel-insensitive string comparison functions strcasecmp and strncasemp
-   in the C library or one of the system header files. */
-/* #  define HAVE_STRCASECMP */
-
-/* Define HAVE_DIRENT if you have the dirent library and a definition of
-   struct dirent.  If not, the BSD directory reading library and struct
-   direct are assumed. */
-/* #  define HAVE_DIRENT */
-
-/* If your system does not supply /usr/lib/libtermcap.a, but includes
-   the termcap routines as a part of the curses library, then define
-   this.  This is the case on some System V machines. */
-/* #  define USE_TERMCAP_EMULATION */
-
-/* Define VOID_SIGHANDLER if your system's signal () returns a pointer to
-   a function returning void. */
-/* #  define VOID_SIGHANDLER */
-
-/* Define EXTRA_LIB_SEARCH_PATH if your required libraries (or standard)
-   ones for that matter) are not normally in the ld search path.  For
-   example, some machines require /usr/ucblib in the ld search path so
-   that they can use -lucb. */
-/* #  define EXTRA_LIB_SEARCH_PATH /usr/ucblib */
-
-/* Define SEARCH_LIB_NEEDS_SPACE if your native ld requires a space after
-   the -L argument, which gives the name of an alternate directory to search
-   for libraries specified with -llib.  For example, the HPUX ld requires
-   this:
-       -L lib/readline -lreadline
-   instead of:
-       -Llib/readline -lreadline
- */
-/* #  define SEARCH_LIB_NEEDS_SPACE */
-
-/* Define LD_HAS_NO_DASH_L if your ld can't grok the -L flag in any way, or
-   if it cannot grok the -l<lib> flag, or both. */
-/* #  define LD_HAS_NO_DASH_L */
-
-/* Define GCC_STANDARD if the standard `cc' is gcc and you don't want
-   to use the compiler named `gcc' for some reason. */
-/* #  define GCC_STANDARD */
-   
-#  if defined (LD_HAS_NO_DASH_L)
-#   undef SEARCH_LIB_NEEDS_SPACE
-#  endif /* LD_HAS_NO_DASH_L */
-
-#endif  /* UNKNOWN_MACHINE */
diff --git a/CWRU/old-conf/support/cat-s b/CWRU/old-conf/support/cat-s
deleted file mode 100644 (file)
index 87ba163..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# This awk script is called from within Makefile to strip multiple blank
-# lines from stdin.
-BEGIN { newlines = 0 }
-{
-  if (NF == 0)
-    newlines = 1;
-  else
-    {
-      if (newlines)
-       {
-         printf "\n";
-         newlines = 0;
-       }
-      print $0;
-    }
-}
diff --git a/CWRU/old-conf/support/cppmagic b/CWRU/old-conf/support/cppmagic
deleted file mode 100755 (executable)
index b0a951c..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/sh
-# Return a full cpp specification, complete with system dependent flags.
-#
-# Syntax: cppmagic [ program-to-generate-flags [ guessed-cpp ]]
-#
-# If only one arg is present it is the name of a program to invoke
-# which should generate -Dfoo defines.
-#
-# If two args are present the second arg is the name of the C
-# preprocessor to use.
-#
-# Invoked with no args, provides a C preprocessor name and
-# -traditional flag if that is appropriate.
-#
-#  ../Makefile calls this file thusly: "cppmagic getcppsyms".
-#
-#  Typical output:
-#
-#    /lib/cpp -Dunix -Dm68k
-#
-
-Cpp=
-
-if [ "$2" ]; then
-   Cpp=$2
-else
-   for cpp in /lib/cpp /usr/lib/cpp /usr/ccs/lib/cpp; do
-      if [ -f $cpp ]; then
-        Cpp=$cpp
-      fi
-   done
-   if [ "$Cpp" = "" ]; then
-      Cpp=cpp
-   fi
-fi
-
-TRADITIONAL=
-FLAGS=
-
-# First flag might be `-traditional' if this is Gnu Cpp.
-unknown_flag=`$Cpp -traditional /dev/null 2>&1 |
-               egrep 'known|recognized|valid|bad|legal'`
-if [ "$unknown_flag" = "" ]; then
-  TRADITIONAL=-traditional
-fi
-
-if [ "$1" ]; then
-   FLAGS=`$1`
-fi
-
-echo $Cpp $TRADITIONAL $FLAGS
diff --git a/CWRU/old-conf/support/getcppsyms.c b/CWRU/old-conf/support/getcppsyms.c
deleted file mode 100644 (file)
index e4cb044..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-/* getcppsyms.c - Find unique compiler symbols. */
-
-/* Copyright (C) 1993 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, 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. */
-
-/* Some cpp's do not define any symbols, but instead let /bin/cc do it
-   for them.  For such machines, running this file may prove useful.  It
-   outputs the list of symbols which /bin/cc or /lib/cpp define and which
-   we had the foresight to guess at. */
-
-#include <stdio.h>
-
-int
-main ()
-{
-#if defined (__BSD_4_4__)
-  printf ("-D__BSD_4_4__");
-#endif /* __BSD_4_4__ */
-#if defined (CMU)
-  printf (" -DCMU");
-#endif /* CMU */
-#if defined (_COFF)
-  printf (" -D_COFF");
-#endif /* _COFF */
-#if defined (DGUX)
-  printf (" -DDGUX");
-#endif /* DGUX */
-#if defined (GOULD_PN)
-  printf (" -DGOULD_PN");
-#endif /* GOULD_PN */
-#if defined (MACH)
-  printf (" -DMACH");
-#endif /* MACH */
-#if defined (MIPSEB)
-  printf (" -DMIPSEB");
-#endif /* MIPSEB */
-#if defined (MIPSEL)
-  printf (" -DMIPSEL");
-#endif /* MIPSEL */
-#if defined (MULTIMAX)
-  printf (" -DMULTIMAX");
-#endif /* MULTIMAX */
-#if defined (M_UNIX)
-  printf (" -DM_UNIX");
-#endif /* M_UNIX */
-#if defined (M_XENIX)
-  printf (" -DM_XENIX");
-#endif /* M_XENIX */
-#if defined (_M_XENIX)
-  printf (" -D_M_XENIX");
-#endif /* _M_XENIX */
-#if defined (NeXT)
-  printf (" -DNeXT");
-#endif /* NeXT */
-#if defined (__PARAGON__)
-  printf (" -D__PARAGON__");
-#endif /* __PARAGON__ */
-#if defined (_PGC_)
-  printf (" -D_PGC_");
-#endif /* _PGC_ */
-#if defined (__PGC__)
-  printf (" -D__PGC__");
-#endif /* __PGC__ */
-#if defined (RES)
-  printf (" -DRES");
-#endif /* RES */
-#if defined (RISC6000)
-  printf (" -DRISC6000");
-#endif /* RISC6000 */
-#if defined (RT)
-  printf (" -DRT");
-#endif /* RT */
-#if defined (SYSTYPE_BSD)
-  printf (" -DSYSTYPE_BSD");
-#endif /* SYSTYPE_BSD */
-#if defined (SYSTYPE_SYSV)
-  printf (" -DSYSTYPE_SYSV");
-#endif /* SYSTYPE_SYSV */
-#if defined (Sun386i)
-  printf (" -DSun386i");
-#endif /* Sun386i */
-#if defined (Tek4132)
-  printf (" -DTek4132");
-#endif /* Tek4132 */
-#if defined (Tek4300)
-  printf (" -DTek4300");
-#endif /* Tek4300 */
-#if defined (UMAXV)
-  printf (" -DUMAXV");
-#endif /* UMAXV */
-#if defined (USGr4)
-  printf (" -DUSGr4");
-#endif /* USGr4 */
-#if defined (USGr4_2)
-  printf (" -DUSGr4_2");
-#endif /* USGr4_2 */
-#if defined (__SVR4_2__)
-  printf (" -D__SVR4_2__");
-#endif /* __SVR4_2__ */
-#if defined (Xenix286)
-  printf (" -DXenix286");
-#endif /* Xenix286 */
-#if defined (_AIX)
-  printf (" -D_AIX");
-#endif /* _AIX */
-#if defined (_AIX370)
-  printf (" -D_AIX370");
-#endif /* _AIX370 */
-#if defined (_IBMESA)
-  printf (" -D_IBMESA");
-#endif /* _IBMESA */
-#if defined (__ibmesa)
-  printf (" -D__ibmesa");
-#endif /* __ibmesa */
-#if defined (_U370)
-  printf (" -D_U370");
-#endif /* _U370 */
-#if defined (_NLS)
-  printf (" -D_NLS");
-#endif /* _NLS */
-#if defined (_CX_UX)
-  printf (" -D_CX_UX");
-#endif /* _CX_UX */
-#if defined (_IBMR2)
-  printf (" -D_IBMR2");
-#endif /* _IBMR2 */
-#if defined (_M88K)
-  printf (" -D_M88K");
-#endif /* _M88K */
-#if defined (_M88KBCS_TARGET)
-  printf (" -D_M88KBCS_TARGET");
-#endif /* _M88KBCS_TARGET */
-#if defined (__DGUX__)
-  printf (" -D__DGUX__");
-#endif /* __DGUX__ */
-#if defined (__UMAXV__)
-  printf (" -D__UMAXV__");
-#endif /* __UMAXV__ */
-#if defined (__m88k)
-  printf (" -D__m88k");
-#endif /* __m88k */
-#if defined (__uxpm__)
-  printf (" -DUSGr4 -Du370 -D__uxpm__");
-#endif /* __uxpm__ */
-#if defined (__uxps__)
-  printf (" -D__svr4__ -D__uxps__");
-#endif /* __uxps__ */
-#if defined (alliant)
-  printf (" -Dalliant");
-#endif /* alliant */
-#if defined (alpha)
-  printf (" -Dalpha");
-#endif /* alpha */
-#if defined (__alpha)
-  printf (" -D__alpha");
-#endif /* __alpha */
-#if defined (aix)
-  printf (" -Daix");
-#endif /* aix */
-#if defined (aixpc)
-  printf (" -Daixpc");
-#endif /* aixpc */
-#if defined (apollo)
-  printf (" -Dapollo");
-#endif /* apollo */
-#if defined (ardent)
-  printf (" -Dardent");
-#endif /* ardent */
-#if defined (att386)
-  printf (" -Datt386");
-#endif /* att386 */
-#if defined (att3b)
-  printf (" -Datt3b");
-#endif /* att3b */
-#if defined (bsd4_2)
-  printf (" -Dbsd4_2");
-#endif /* bsd4_2 */
-#if defined (bsd4_3)
-  printf (" -Dbsd4_3");
-#endif /* bsd4_3 */
-#if defined (__bsdi__)
-  printf (" -D__bsdi__");
-#endif /* __bsdi__ */
-#if defined (bsdi)
-  printf (" -Dbsdi");
-#endif /* bsdi */
-#if defined (__386BSD__)
-  printf (" -D__386BSD__");
-#endif /* __386BSD__ */
-#if defined (cadmus)
-  printf (" -Dcadmus");
-#endif /* cadmus */
-#if defined (clipper)
-  printf (" -Dclipper");
-#endif /* clipper */
-#if defined (concurrent)
-  printf (" -Dconcurrent");
-#endif /* concurrent */
-#if defined (convex) || defined (__convex__) || defined (__convexc__)
-#  if !defined (__GNUC__)
-  printf (" -pcc");
-#  endif /* !__GNUC__ */
-  printf (" -Dconvex");
-#endif /* convex */
-#if defined (dmert)
-  printf (" -Ddmert");
-#endif /* dmert */
-#if defined (gcos)
-  printf (" -Dgcos");
-#endif /* gcos */
-#if defined (gcx)
-  printf (" -Dgcx");
-#endif /* gcx */
-#if defined (gould)
-  printf (" -Dgould");
-#endif /* gould */
-#if defined (hbullx20)
-  printf (" -Dhbullx20");
-#endif /* hbullx20 */
-#if defined (hcx)
-  printf (" -Dhcx");
-#endif /* hcx */
-#if defined (host_mips)
-  printf (" -Dhost_mips");
-#endif /* host_mips */
-#if defined (hp9000) || defined (__hp9000)
-  printf (" -Dhp9000");
-#endif /* hp9000 || __hp9000 */
-#if defined (hp9000s200) || defined (__hp9000s200)
-  printf (" -Dhp9000s200");
-#endif /* hp9000s200 || __hp9000s200 */
-#if defined (hp9000s300) || defined (__hp9000s300)
-  printf (" -Dhp9000s300");
-#endif /* hp9000s300 || __hp9000s300 */
-#if defined (hp9000s500) || defined (__hp9000s500)
-  printf (" -Dhp9000s500");
-#endif /* hp9000s500 || __hp9000s500 */
-#if defined (hp9000s700) || defined (__hp9000s700)
-  printf (" -Dhp9000s700");
-#endif /* hp9000s700 || __hp9000s700 */
-#if defined (hp9000s800) || defined (__hp9000s800)
-  printf (" -Dhp9000s800");
-#endif /* hp9000s800 || __hp9000s800 */
-#if defined (hppa) || defined (__hppa)
-  printf (" -Dhppa");
-#endif /* hppa || __hppa */
-#if defined (hpux) || defined (__hpux)
-  printf (" -Dhpux");
-#endif /* hpux */
-#if defined (__hp_osf)
-  printf (" -D__hp_osf");
-#endif /* __hp_osf */
-#if defined (i386)
-  printf (" -Di386");
-#endif /* i386 */
-#if defined (__i386__)
-  printf (" -D__i386__");
-#endif
-#if defined (__i860)
-  printf(" -D__i860");
-#endif /* __i860 */
-#if defined (__i860__)
-  printf(" -D__i860__");
-#endif /* __i860__ */
-#if defined (ibm)
-  printf (" -Dibm");
-#endif /* ibm */
-#if defined (ibm032)
-  printf (" -Dibm032");
-#endif /* ibm032 */
-#if defined (ibmrt)
-  printf (" -Dibmrt");
-#endif /* ibmrt */
-#if defined (interdata)
-  printf (" -Dinterdata");
-#endif /* interdata */
-#if defined (is68k)
-  printf (" -Dis68k");
-#endif /* is68k */
-#if defined (ksr1)
-  printf (" -Dksr1");
-#endif /* ksr1 */
-#if defined (__ksr1__)
-  printf (" -D__ksr1__");
-#endif /* __ksr1__ */
-#if defined (linux)
-  printf (" -Dlinux");
-#endif /* linux */
-#if defined (__linux__)
-  printf (" -D__linux__");
-#endif /* __linux__ */
-#if defined (luna88k)
-  printf (" -Dluna88k");
-#endif /* luna88k */
-#if defined (m68k)
-  printf (" -Dm68k");
-#endif /* m68k */
-#if defined (m88k)
-  printf (" -Dm88k");
-#endif /* m88k */
-#if defined (mc68010)
-  printf (" -Dmc68010");
-#endif /* mc68010 */
-#if defined (mc68020)
-  printf (" -Dmc68020");
-#endif /* mc68020 */
-#if defined (mc68030)
-  printf (" -Dmc68030");
-#endif /* mc68030 */
-#if defined (mc68040)
-  printf (" -Dmc68040");
-#endif /* mc68040 */
-#if defined (mc68k32)
-  printf (" -Dmc68k32");
-#endif /* mc68k32 */
-#if defined (mips)
-  printf (" -Dmips");
-#endif /* mips */
-#if defined (n16)
-  printf (" -Dn16");
-#endif /* n16 */
-#if defined (ns32000)
-  printf (" -Dns32000");
-#endif /* ns32000 */
-#if defined (os)
-  printf (" -Dos");
-#endif /* os */
-#if defined (osf)
-  printf (" -Dosf");
-#endif /* osf */
-#if defined (__osf__)
-  printf (" -D__osf__");
-#endif /* __osf__ */
-#if defined (__OSF1__)
-  printf(" -D__OSF1__");
-#endif /* __OSF1__ */
-#if defined (pdp11)
-  printf (" -Dpdp11");
-#endif /* pdp11 */
-#if defined (plexus)
-  printf (" -Dplexus")
-#endif /* plexus */
-#if defined (pyr)
-  printf (" -Dpyr");
-#endif /* pyr */
-#if defined (scs)
-  printf (" -Dscs");
-#endif /* scs */
-#if defined (sequent)
-  printf (" -Dsequent");
-#endif /* sequent */
-#if defined (sgi)
-  printf (" -Dsgi");
-#endif /* sgi */
-#if defined (sony)
-  printf (" -Dsony");
-#endif /* sony */
-#if defined (sparc)
-  printf (" -Dsparc");
-#endif /* sparc */
-#if defined (stardent)
-  printf (" -Dstardent");
-#endif /* stardent */
-#if defined (sun)
-  printf (" -Dsun");
-#endif /* sun */
-#if defined (sun2)
-  printf (" -Dsun2");
-#endif /* sun2 */
-#if defined (sun3)
-  printf (" -Dsun3");
-#endif /* sun3 */
-#if defined (sun4)
-  printf (" -Dsun4");
-#endif /* sun4 */
-#if defined (__svr4__)
-  printf (" -D__svr4__");
-#endif /* __svr4__ */
-#if defined (tower32)
-  printf (" -Dtower32");
-#endif /* tower32 */
-#if defined (tss)
-  printf (" -Dtss");
-#endif /* tss */
-#if defined (u370)
-  printf (" -Du370");
-#endif /* u370 */
-#if defined (u3b)
-  printf (" -Du3b");
-#endif /* u3b */
-#if defined (u3b2)
-  printf (" -Du3b2");
-#endif /* u3b2 */
-#if defined (u3b20d)
-  printf (" -Du3b20d");
-#endif /* u3b20d */
-#if defined (u3b5)
-  printf (" -Du3b5");
-#endif /* u3b5 */
-#if defined (ultrix)
-  printf (" -Dultrix");
-#endif /* ultrix */
-#if defined (unix)
-  printf (" -Dunix");
-#endif /* unix */
-#if defined (vax)
-  printf (" -Dvax");
-#endif /* vax */
-
-  printf ("\n");
-  exit (0);
-}
diff --git a/CWRU/old-conf/support/inpath b/CWRU/old-conf/support/inpath
deleted file mode 100755 (executable)
index 95f28bc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /bin/sh
-#
-# Search $PATH for a file the same name as $1; return TRUE if found.
-#
-
-command=$1
-[ -n "$command" ] || exit 1
-
-set `echo $PATH | sed 's/^:/.:/
-                       s/::/:.:/g
-                       s/:$/:./
-                       s/:/ /g'`
-       
-while [ $# -ne 0 ] ; do
-       [ -f $1/$command ] && exit 0    # test -x not universal
-       shift
-done
-
-exit 1
diff --git a/CWRU/old-conf/support/mkmachtype b/CWRU/old-conf/support/mkmachtype
deleted file mode 100755 (executable)
index b2bc5ca..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-#!/bin/sh
-# This script attempts to guess a canonical system name.
-#   Copyright (C) 1992, 1993 Free Software Foundation, Inc.
-#
-# 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, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#
-# 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.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
-
-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
-    alpha:OSF1:1.*:*)
-       # 1.2 uses "1.2" for uname -r.
-       echo alpha-dec-osf${UNAME_RELEASE}
-        exit 0 ;;
-    alpha:OSF1:V1.*:*)
-       # 1.3 uses "V1.3" for uname -r.
-       echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^V//'`
-       exit 0 ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
-       exit 0;;
-    sun4*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit 0 ;;
-    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 0 ;;
-    sun4*:SunOS:*:*)
-       echo sparc-sun-sunos${UNAME_RELEASE}
-       exit 0 ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
-       exit 0 ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
-       exit 0 ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
-       exit 0 ;;
-    mips:*:5*:RISCos)
-       echo mips-mips-riscos${UNAME_RELEASE}
-       exit 0 ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit 0 ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit 0 ;;
-    AViiON:dgux:*:*)
-       echo m88k-dg-dgux${UNAME_RELEASE}
-       exit 0 ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit 0 ;;
-    *:IRIX:*:*)
-       echo mips-sgi-irix${UNAME_RELEASE}
-       exit 0 ;;
-    i[34]86:AIX:*:*)
-       echo i386-ibm-aix
-       exit 0 ;;
-    *:AIX:2:3)
-       echo rs6000-ibm-aix3.2
-       exit 0 ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit 0 ;;
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit 0 ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit 0 ;;
-    9000/31?:HP-UX:*:*)
-       echo m68000-hp-hpux
-       exit 0 ;;
-    9000/[34]??:HP-UX:*:*)
-       echo m68k-hp-hpux
-       exit 0 ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit 0 ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit 0 ;;
-    9000/7??:HP-UX:*:* | 9000/8?7:HP-UX:*:* )
-       echo hppa1.1-hp-hpux
-       exit 0 ;;
-    9000/8??:HP-UX:*:*)
-       echo hppa1.0-hp-hpux
-       exit 0 ;;
-    3050*:HI-UX:*:*)
-       sed 's/^        //' << EOF >dummy.c
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else 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 puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-       rm -f dummy.c dummy
-       echo unknown-hitachi-hiuxwe2
-       exit 0 ;;
-    9000/7??:4.3bsd:*:* | 9000/8?7:4.3bsd:*:* )
-       echo hppa1.1-hp-bsd
-       exit 0 ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit 0 ;;
-    C1*:ConvexOS:*:*)
-       echo c1-convex-bsd
-        exit 0 ;;
-    C2*:ConvexOS:*:*)
-       echo c2-convex-bsd
-        exit 0 ;;
-    CRAY*X-MP:UNICOS:*:*)
-       echo xmp-cray-unicos
-        exit 0 ;;
-    CRAY*Y-MP:UNICOS:*:*)
-       echo ymp-cray-unicos
-        exit 0 ;;
-    CRAY-2:UNICOS:*:*)
-       echo cray2-cray-unicos
-        exit 0 ;;
-    hp3[0-9][05]:NetBSD:*:*)
-       echo m68k-hp-netbsd${UNAME_RELEASE}
-       exit 0 ;;
-    i[34]86:NetBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-netbsd${UNAME_RELEASE}
-       exit 0 ;;
-    amiga:NetBSD:*:*)
-       echo m68k-cbm-netbsd{$UNAME_RELEASE}
-       exit 0 ;;
-    i[34]86:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux
-       exit 0 ;;
-    i[34]86:UNIX_SV:4.*:*)
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
-       else
-               echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}
-       fi
-       exit 0 ;;
-    i[34]86:*:3.2:*)
-       if /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-               echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL
-       else
-               echo ${UNAME_MACHINE}-unknown-sysv3.2
-       fi
-       exit 0 ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit 0 ;;
-    M680[234]0:*:R3V[567]*:*)
-       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[34]??:*:4.0:*)
-       uname -p 2>/dev/null | grep 86 >/dev/null \
-         && echo i486-ncr-sysv4 && exit 0 ;;
-    m680[234]0:LynxOS:2.2*:*)
-       echo m68k-lynx-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-    i[34]86:LynxOS:2.2*:*)
-       echo i386-lynx-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-    TSUNAMI:LynxOS:2.2*:*)
-       echo sparc-lynx-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-cat >dummy.c <<EOF
-main()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-#else
-  printf("m68k-sony-newsos\n"); exit(0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined(hp300) && !defined(hpux)
-  printf("m68k-hp-bsd\n"); exit(0);
-#endif
-
-#if defined(NeXT)
-  printf("m68k-next-bsd\n"); 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__) || (defined(__bsdi__) && defined(__i386__))
-  printf("i386-unknown-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_)
-  printf("i386-sequent-ptx\n"); exit(0);
-#endif
-
-  exit (1);
-}
-EOF
-
-${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
-
-#echo '(Unable to guess system type)' 1>&2
-
-exit 1
diff --git a/CWRU/old-conf/support/mksysdefs b/CWRU/old-conf/support/mksysdefs
deleted file mode 100755 (executable)
index 05040d1..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-#!/bin/sh
-#
-# This file creates a file called "sysdefs.h" which contains CPP defines
-# helping to describe the operating system features.  We just take guesses
-# by looking at random files.
-
-# Removes any inherited definitions.
-SYSDEF=
-MAKE_ANSI=
-
-while [ $# -gt 0 ]; do
-       case "$1" in
-       -s)     shift; srcdir=$1; shift ;;
-       -i)     shift; incdir="$1"; shift ;;
-       -A)     shift; MAKE_ANSI=true ;;
-       *)      break ;;
-       esac
-done
-
-sysdefs=${1-./sysdefs.h}
-: ${srcdir=.}
-
-rm -f $sysdefs
-
-echo "/* sysdefs.h -- #defines for your system created by $0."    >>$sysdefs
-echo "   Do NOT EDIT this file, since any changes will disappear." >>$sysdefs
-echo "   Instead, edit $0, or config.h, or machines.h. */"        >>$sysdefs
-echo ""                                                                   >>$sysdefs
-echo "#if !defined (_SYSDEFS_H_)"                                 >>$sysdefs
-echo "#  define _SYSDEFS_H_"                                      >>$sysdefs
-
-# was if [ -f /usr/bin/uname ] || [ -f /bin/uname ]
-if ( uname >/dev/null 2>&1 ) 2>/dev/null
-then
-       UNAME=`uname`                   # SunOS
-       UNAME_R=`uname -r 2>/dev/null`  # 4.1.2
-       UNAME_M=`uname -m 2>/dev/null`  # sun4m
-       UNAME_V=`uname -v 2>/dev/null`  # 13
-       UNAME_S=`uname -s 2>/dev/null`  # SunOS
-       RELEASE=`expr "$UNAME_R" : '[^0-9]*\([0-9]*\)'` # 4
-       case "$RELEASE" in
-       "")     RELEASE=0 ;;
-       *)      RELEASE=`expr "$RELEASE" + 0` ;;
-       esac
-       LEVEL=`expr "$UNAME_R" : '[^0-9]*[0-9]*.\([0-9]*\)'`    # 1
-       SUBLEVEL=`expr "$UNAME_R" : '[^0-9]*[0-9]*.[0-9]*.\([0-9]*\)'` # 2
-fi
-
-# check for versions of SunOS and BSD/OS
-case "${UNAME}${RELEASE}" in
-SunOS4*) SYSDEF=SunOS4 ;;
-SunOS5*) SYSDEF=SunOS5 ;;
-BSD/OS2*) SYSDEF=BSDI2 ;;
-esac
-
-# Test for NeXT
-if [ -d /NextLibrary ]; then
-       MAKE_ANSI=true
-fi
-
-# Intel Paragon
-case "$UNAME_M" in
-paragon) MAKE_ANSI=true ;;
-esac
-
-# Test for shared libraries (this is pretty sVr4ish).
-if [ -f /usr/ccs/lib/libc.so ]; then
-       SYSDEF=USGr4
-fi
-
-# Some versions of i386 SVR4.2 make `uname' equivalent to `uname -n', which
-# is contrary to all other versions of uname
-if [ -n "$UNAME" ] && [ "$UNAME_S" != "$UNAME" ] && [ "$UNAME_S" = UNIX_SV ]; then
-       UNAME=UNIX_SV
-fi
-
-# another check for SVR4 on 386 or 486 machines
-case "${UNAME_M}:${UNAME}:${UNAME_R}" in
-i[34]86:UNIX_SV:4.*)   SYSDEF=USGr4 ;;
-esac
-
-# A check for Mips RISCos
-case "$UNAME_V" in
-UMIPS|RISCos) SYSDEF=RISCos_${RELEASE}_${LEVEL} ;;
-esac
-
-# A check for Amdahl UTS
-case "$UNAME" in
-uts) SYSDEF=UTS ;;
-esac
-
-# Look for an error message when trying to exec bison.  If we find
-# what we're looking for, then we don't have it.  If we get something
-# else (like an error message about no grammar file), then we have
-# it.
-YACC=yacc
-if ( cd /tmp ; bison /dev/null 2>&1 >/dev/null | grep 'no input grammar' >/dev/null 2>&1 ) 2>/dev/null; then
-       YACC="bison -y"
-elif ( cd /tmp ; byacc /dev/null 2>&1 >/dev/null | grep 'unexpected ' >/dev/null 2>&1) 2>/dev/null; then
-       YACC=byacc
-fi
-
-# Try to locate ranlib.  I think this is a bad idea.
-if sh ${srcdir}/support/inpath ranlib; then
-       RANLIB_LOCATION=ranlib
-elif [ -f /usr/bin/ranlib ]; then
-       RANLIB_LOCATION=/usr/bin/ranlib;
-elif [ -f /bin/ranlib ]; then
-       RANLIB_LOCATION=/bin/ranlib;
-elif [ -f /usr/local/bin/ranlib ]; then
-       RANLIB_LOCATION=/usr/local/bin/ranlib;
-elif [ -f /usr/gnu/bin/ranlib ]; then
-       RANLIB_LOCATION=/usr/gnu/bin/ranlib
-elif [ -f /usr/local/gnubin/ranlib ]; then
-       RANLIB_LOCATION=/usr/local/gnubin/ranlib;
-else
-       RANLIB_LOCATION=:       # XXX
-fi
-
-if [ -n "${RANLIB_LOCATION}" ]; then
-  echo ""                                              >>$sysdefs
-  echo "#if !defined (RANLIB_LOCATION)"                >>$sysdefs
-  echo "#  define RANLIB_LOCATION ${RANLIB_LOCATION}"  >>$sysdefs
-  echo "#endif /* RANLIB_LOCATION */"                  >>$sysdefs
-fi
-
-#
-# Is this a Xenix system?
-#
-if [ -f /xenix ]; then
-  SYSDEF="Xenix"
-  case "`/bin/uname -p`" in
-    *286) SYSDEF="Xenix286" ;;
-    *386) SYSDEF="Xenix386" ;;
-  esac
-
-  # make sure that `i386' is defined for machines.h
-  if [ "$SYSDEF" = "Xenix386" ]; then
-    echo ""                            >>$sysdefs
-    echo "#if !defined (i386)"         >>$sysdefs
-    echo "#  define i386"              >>$sysdefs
-    echo "#endif /* !i386 */"          >>$sysdefs      
-  fi
-
-  # Pass the release number of the OS through to the machine descriptions
-  # in machines.h.
-  if [ -f /etc/perms/soft ]; then
-    rel=`grep rel= /etc/perms/soft`
-    case "$rel" in
-      *2.2.*) XREL=XENIX_22 ;;
-      *2.3.*) XREL=XENIX_23 ;;
-      *3.2.*) XREL=XENIX_32 ;;
-      *) XREL= ;;
-    esac
-
-    if [ "$XREL" ]; then
-      echo ""                          >>$sysdefs
-      echo "#if !defined ($XREL)"      >>$sysdefs
-      echo "#  define $XREL"           >>$sysdefs
-      echo "#endif /* !$XREL */"       >>$sysdefs
-    fi
-  fi
-fi
-
-#
-# Is this some kind of Sys Vish system?
-#
-if [ -f /unix ]; then
-  if [ -d /generic ]; then   # This is an AIX system.
-    SYSDEF="aixpc"
-    MAKE_ANSI=true
-  elif [ -d /etc/conf/kconfig.d ] && [ -f /usr/include/sys/limits.h ]; then
-    SYSDEF="isc386"                    # This is a 386 running ISC?
-    ISCREL="ISC_$RELEASE"
-    echo "#if !defined ($ISCREL)"      >>$sysdefs
-    echo "#  define $ISCREL"           >>$sysdefs
-    echo "#endif /* $ISCREL */"                >>$sysdefs
-  elif [ -f /etc/xlc.cfg ]; then
-    if fgrep _IBMR2 /etc/xlc.cfg >/dev/null 2>&1; then
-      SYSDEF=RISC6000
-      MAKE_ANSI=true
-    fi
-  elif [ -f /bin/4d -a -f /bin/uname ]; then
-    case "$UNAME_R" in
-      3.*) SYSDEF="Irix3" ;;
-      4.*) SYSDEF="Irix4" ;;
-      5.*) SYSDEF="Irix5" ;;
-      6.*) SYSDEF="Irix6" ;;
-      *)   SYSDEF="Irix3" ;;
-    esac
-  elif [ -d /usr/amiga ]; then
-    SYSDEF="amiga"             # An Amiga running V.4.
-  elif [ -f /bin/fxc.info ]; then
-    SYSDEF="alliant"
-  fi
-fi
-
-# Is this a Unicos system?
-if [ -f /unicos ]; then
-   MAKE_ANSI=true
-   UnicosMachine=
-
-   # Test for the variaous flavors of Cray machines.
-   if [ -x /bin/cray1 ] && /bin/cray1 2>/dev/null; then
-      UnicosMachine=Cray1
-   fi
-
-   if [ -x /bin/cray2 ] && /bin/cray2 2>/dev/null; then
-      UnicosMachine=Cray2
-   fi
-
-   if [ -x /bin/crayxmp ] && /bin/crayxmp 2>/dev/null; then
-      UnicosMachine=CrayXMP
-   fi
-   if [ -x /bin/crayymp ] && /bin/crayymp 2>/dev/null; then
-      UnicosMachine=CrayYMP
-   fi
-
-   if [ "$UnicosMachine" ]; then
-      echo "#if !defined ($UnicosMachine)"     >>$sysdefs
-      echo "#  define $UnicosMachine"          >>$sysdefs
-      echo "#endif /* !$UnicosMachine */"      >>$sysdefs
-   fi
-fi
-
-# Is this (and what kind of) a HPUX system?
-if [ -f /hp-ux ]; then
-  SYSDEF=HPUX_${RELEASE}
-  if [ "$RELEASE" = 6 -a "$LEVEL" -lt 2 ]; then
-    SYSDEF=HPUX_USG
-  fi
-fi
-
-if [ "$SYSDEF" = "" ]; then
-       case "$UNAME_M" in
-       ESA) SYSDEF=AIXESA ;;    
-       XD88*) SYSDEF=XD88 ;;
-       M88100) SYSDEF=M88100 ;;        # Motorola Delta 88K
-       esac
-fi
-
-# What release of SCO Unix is this?
-if [ "$SYSDEF" = "" -a -f /bin/uname ]; then
-  case `/bin/uname -X 2>/dev/null | grep '^Release' 2>/dev/null` in
-    *3.2v4.*) SYSDEF=SCOv4 ;;
-          *) SYSDEF=SCO ;;
-  esac
-fi
-
-#
-# Default to cadmus for unknown SysVish systems
-#
-if [ -f /unix ] && [ "$SYSDEF" = "" ]; then
-  SYSDEF="cadmus"
-fi
-
-if [ "$SYSDEF" != "" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined ($SYSDEF)"                        >>$sysdefs
-  echo "#  define $SYSDEF"                     >>$sysdefs
-  echo "#endif /* $SYSDEF */"                  >>$sysdefs
-fi
-
-# Now look for certain include files in a list of directories
-# Poor substitute for autoconf
-
-# Add any other directories where include files are found to this list or
-# create another case
-if [ -n "$incdir" ]; then
-       dirlist="$incdir"
-else
-       case "$SYSDEF" in
-       RISCos*) dirlist="/bsd43/usr/include";;
-       *) dirlist="/usr/include /usr/include/bsd /usr/include/ansi" ;;
-       esac
-fi
-
-# Code fragment to be executed to find a particular include file.  Make sure
-# to set `file' to the pathname of the file you want, relative to /usr/include,
-# before calling `eval $findf'.
-findf="
-found='';
-for d in \$dirlist;
-do
-       if test -f \$d/\$file;
-       then
-               found=yes;
-               break;
-       fi;
-done
-"
-
-file=sys/stream.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_SYS_STREAM_H)"      >>$sysdefs
-  echo "#  define HAVE_SYS_STREAM_H"           >>$sysdefs
-  echo "#endif /* HAVE_SYS_STREAM_H */"                >>$sysdefs
-fi
-
-file=sys/ptem.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_SYS_PTEM_H)"                >>$sysdefs
-  echo "#  define HAVE_SYS_PTEM_H"             >>$sysdefs
-  echo "#endif /* HAVE_SYS_PTEM_H */"          >>$sysdefs
-fi
-
-file=sys/pte.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_SYS_PTE_H)"         >>$sysdefs
-  echo "#  define HAVE_SYS_PTE_H"              >>$sysdefs
-  echo "#endif /* HAVE_SYS_PTE_H */"           >>$sysdefs
-fi
-
-file=sys/wait.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_SYS_WAIT_H)"                >>$sysdefs
-  echo "#  define HAVE_SYS_WAIT_H"             >>$sysdefs
-  echo "#endif /* HAVE_SYS_WAIT_H */"          >>$sysdefs
-fi
-
-file=sys/resource.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_RESOURCE)"          >>$sysdefs
-  echo "#  define HAVE_RESOURCE"               >>$sysdefs
-  echo "#endif /* HAVE_RESOURCE */"            >>$sysdefs
-fi
-
-file=sys/param.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_SYS_PARAM_H)"       >>$sysdefs
-  echo "#  define HAVE_SYS_PARAM_H"            >>$sysdefs
-  echo "#endif /* HAVE_SYS_PARAM_H */"         >>$sysdefs
-fi
-
-file=unistd.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_UNISTD_H)"          >>$sysdefs
-  echo "#  define HAVE_UNISTD_H"               >>$sysdefs
-  echo "#endif /* HAVE_UNISTD_H */"            >>$sysdefs
-fi
-
-file=stdlib.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_STDLIB_H)"          >>$sysdefs
-  echo "#  define HAVE_STDLIB_H"               >>$sysdefs
-  echo "#endif /* HAVE_STDLIB_H */"            >>$sysdefs
-fi
-
-file=limits.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_LIMITS_H)"          >>$sysdefs
-  echo "#  define HAVE_LIMITS_H"               >>$sysdefs
-  echo "#endif /* HAVE_LIMITS_H */"            >>$sysdefs
-fi
-
-file=locale.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_LOCALE_H)"          >>$sysdefs
-  echo "#  define HAVE_LOCALE_H"               >>$sysdefs
-  echo "#endif /* HAVE_LOCALE_H */"            >>$sysdefs
-fi
-
-file=alloca.h
-eval $findf
-if [ -f /usr/include/alloca.h ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_ALLOCA_H)"          >>$sysdefs
-  echo "#  define HAVE_ALLOCA_H"               >>$sysdefs
-  echo "#endif /* HAVE_ALLOCA_H */"            >>$sysdefs
-fi
-
-file=dirent.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_DIRENT_H)"          >>$sysdefs
-  echo "#  define HAVE_DIRENT_H"               >>$sysdefs
-  echo "#endif /* HAVE_DIRENT_H */"            >>$sysdefs
-fi
-
-file=string.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_STRING_H)"          >>$sysdefs
-  echo "#  define HAVE_STRING_H"               >>$sysdefs
-  echo "#endif /* HAVE_STRING_H */"            >>$sysdefs
-fi
-
-file=varargs.h
-eval $findf
-if [ -n "$found" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_VARARGS_H)"         >>$sysdefs
-  echo "#  define HAVE_VARARGS_H"              >>$sysdefs
-  echo "#endif /* HAVE_VARARGS_H */"           >>$sysdefs
-fi
-
-# Does the system have a /dev/fd directory?
-if [ -d /dev/fd ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (HAVE_DEV_FD)"            >>$sysdefs
-  echo "#  define HAVE_DEV_FD"                 >>$sysdefs
-  echo "#endif /* HAVE_DEV_FD */"              >>$sysdefs
-fi
-
-# Is this SVR4.2?  It's subtly different from USGr4
-if [ "$UNAME" = "UNIX_SV" ] && [ "$UNAME_R" = "4.2" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (USGr4_2)"                >>$sysdefs
-  echo "#  define USGr4_2"             >>$sysdefs
-  echo "#endif /* USGr4_2 */"          >>$sysdefs
-fi
-
-# Is this AIX PS/2 1.3?  Yuck.
-if [ "$UNAME" = "AIX" ] && [ "$UNAME_V" = "1" ] && [ "$RELEASE" = "3" ]; then
-  case "$UNAME_M" in
-  i386|i486)
-       echo ""                                 >>$sysdefs
-       echo "#if !defined (AIX_13)"            >>$sysdefs
-       echo "#  define AIX_13"                 >>$sysdefs
-       echo "#endif /* AIX_13 */"              >>$sysdefs
-       ;;
-  esac
-fi
-
-if [ -n "$YACC" ]; then
-  echo ""                                      >>$sysdefs
-  echo "#if !defined (YACC_PROG)"              >>$sysdefs
-  echo "#  define YACC_PROG $YACC"             >>$sysdefs
-  echo "#endif /* YACC_PROG */"                        >>$sysdefs
-fi
-
-# Functions to test for a la autoconf
-#      getwd
-#      getcwd
-#      strchr
-#      strcasecmp
-#      getgroups
-#      setlinebuf
-#      strerror
-#      vfprintf
-#      bcopy
-#      getdtablesize
-#      setdtablesize
-#      alloca
-#      gethostname
-#      memmove (missing)
-#      mkfifo (missing)
-#
-# Other things to test
-#      opendir robustness
-#      dup2 working
-#      void sighandler
-#      sys_siglist[]
-#      uid_t, gid_t
-#      have_getpw_decls
-#      reversed setvbuf args
-#      int getgroups
-
-# If this system's cpp might not like `/**/#' in cpp-Makefile, make an
-# alternate ansi-style cpp-Makefile.
-if [ -n "$MAKE_ANSI" ]; then
-   grep -v '/\*\*/' ${srcdir}/cpp-Makefile >ansi-Makefile
-fi
-
-# These should be the last 2 lines in this file!
-echo ""                                                >>$sysdefs
-echo "#endif /* _SYSDEFS_H_ */"                        >>$sysdefs
diff --git a/CWRU/old-conf/support/srcdir b/CWRU/old-conf/support/srcdir
deleted file mode 100755 (executable)
index 9d8ccd7..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#! /bin/sh
-#
-# srcdir - print out the absolute pathname of the top of the bash source
-#         tree.  Used for getting the right value to makes in subdirectories
-#
-
-case "$1" in
-'.'|./)        pwd ;;
-./*|..*)       echo `pwd`/"$1" ;;
-*)     echo "$1" ;;
-esac
-
-exit 0
diff --git a/CWRU/old/KSH.README b/CWRU/old/KSH.README
deleted file mode 100644 (file)
index 8d19d88..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-
-This is a description of the changes made to bash for increased ksh
-compatibility.
-
-1.  $SECONDS
-
-       "Each time this parameter is referenced, the number of seconds
-        since shell invocation is returned.  If this parameter is assigned
-        a value, then the value returned will be the value that was 
-        assigned plus the number of seconds since the assignment."
-
-       Files changed:  variables.c
-                       variables.h
-                       subst.c
-                       general.c
-                       shell.c
-                       general.h
-
-2.  $TMOUT
-
-       "If set to a value greater than 0, the shell will terminate if a
-        command is not entered within the prescribed number of seconds
-        after issuing the PS1 prompt."
-
-       Files changed:  shell.c  (the implementation is not perfect)
-
-3.  $RANDOM
-
-       "Each time this parameter is referenced, a random integer is 
-        generated.  The sequence of random numbers can be initialized
-        by assigning a numeric value to RANDOM."
-
-       Files changed:  subst.c
-                       variables.c
-
-4.  $REPLY
-
-       "This parameter is set by the `read' special command when no 
-        arguments are supplied."
-
-       Files changed:  builtins.c
-
-5.  integer variables
-
-       `declare -i' (also export) makes a variable an integer (turns on
-       the integer attribute).  When assignment is made to a variable with
-       the -i attribute, arithmetic expression evaluation is done on the
-       value before it is assigned to the variable.
-
-       Files changed:  variables.h
-                       variables.c
-                       builtins.c
-
-6.  Arithmetic expression evaluation.
-
-       Here is the comment at the beginning of the new file `expr.c':
-
-
-       ksh-style expression evaluation.
-
-       All arithmetic is done as long integers with no checking for overflow
-       (though division by 0 is caught and flagged as an error).
-
-       The following operators are handled, grouped into a set of levels in
-       order of decreasing precedence.
-
-       "-"                     [level 0 (unary negation)]
-       "!"                     [level 1]
-       "*", "/", "%"           [level 2]
-       "+", "-"                [level 3]
-       "<=", ">=", "<", ">"    [level 4]
-       "==", "!="              [level 5]
-       "="                     [level 6 (assignment)]
-
-       (Note that most of these operators have special meaning to bash, and an
-       entire expression should be quoted, e.g. "a=$a+1" or "a=a+1" to ensure
-       that it is passed intact to the evaluator).
-
-       Sub-expressions within parentheses have a precedence level greater than
-       all of the above levels and are evaluated first.  Within a single prece-
-       dence group, evaluation is left-to-right, except for the arithmetic
-       assignment operator (`='), which is evaluated right-to-left (as in C).
-
-       The expression evaluator returns the value of the expression (assignment
-       statements have as a value what is returned by the RHS).  The `let'
-       builtin, on the other hand, returns 0 if the last expression evaluates to
-       a non-zero, and 1 otherwise.
-
-       Implementation is a recursive-descent parser.
-
-       Files added:    expr.c
-
-7. `let' builtin
-
-       Parameters may be assigned numeric values via the `let' builtin.
-       Each of its arguments is an expression to be evaluated.  `let'
-       returns 0 if the value of the last expression is non-zero, and
-       1 otherwise.
-
-       Note that the "((...))" form of this command has not yet been
-       implemented; it requires changes to the parsing functions.
-
-       Files changed:  builtins.c
-
-8.  $_
-
-       $_ is set to the last argument of the previous command line, after
-       expansion.  It is still used as before when checking for mail.
-       Two new keybindings have been added to insert this into the current
-       command line (M-_ and M-.).
-
-       Files changed:  mailcheck.c
-                       execute_cmd.c
-                       bashline.c
-
-9.  `cd -'
-
-       Equivalent to 'cd $OLDPWD'
-
-       Files changed:  builtins.c
-
-10.  "ulimit -a"
-
-       "List all of the current resource limits (BSD only)."
-
-       Files changed:  builtins.c
-
-11.  ${#@} and ${#*}
-
-       These expand to the number of positional parameters.
-
-       Files changed: subst.c
-
-Chet Ramey
-Information Network Services, Case Western Reserve University
-chet@ins.CWRU.Edu
diff --git a/CWRU/old/RELEASE.113 b/CWRU/old/RELEASE.113
deleted file mode 100644 (file)
index f38e5f2..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-This file details the changes between the previous release of CWRU bash
-(07/11/93) and this release.
-
-1. Bugs Fixed
-
-Readline's vi-mode once again has TAB bound to completion; entering `posix
-mode' changes it to self-insert
-
-Bash now binds its special emacs-mode functions directly into
-emacs_meta_keymap so that eight-bit character handling does not interfere
-
-Some source restructuring: more extern functions are defined in header files
-and not in C source files
-
-The handling of `line number' inside functions is now more correct and
-closer to reality
-
-Some functions of `general use' were moved to general.c (vfree,
-full_pathname)
-
-A bug that caused some redirections to be applied twice was fixed in
-execute_command_internal (dispose of redirection_undo_list after copying it;
-ditto for exec_redirection_undo_list)
-
-The exit status of a command that is not found is 126, as Posix.2 specifies
-
-More speed improvements -- bash now runs as fast as the SunOS sh on
-Haertel's `shell benchmark'
-
-Instead of returning pointers to -1, bash and the readline, history, and
-glob libraries now return pointers to special `error pointers', which the
-calling code checks for in place of -1
-
-Fixed a problem with canonicalize_pathname which made it get
-confused with xxx/./yyy if yyy was `.' or `..'
-
-Fixes to make bash recognize SVR4.2 and set USGr4_2 for SVR4.2 systems
-
-Fixes to the HP/UX machine descriptions to make alloca work on HPUX_9
-and to avoid `M_MACHINE redefined' warnings
-
-Fixes to the CRAY machine description
-
-Fixes to the mailpath code to make it Posix.2-compliant -- backslash
-may now quote `%' and `?' 
-
-The namespace was further cleaned up, and more functions and variables
-were made static
-
-On systems with S_IFSOCK or S_ISSOCK defined in sys/stat.h, bash checks
-whether fd 0 is a socket to decide whether or not it's being started by
-rshd and to run the startup files
-
-Bash now gives the signal mask it inherits to its children -- previously,
-login shells cleared the signal mask
-
-cpp-Makefile and subst.c both used the `USE_GLOB_LIBRARY' define, but
-with different meanings; subst.c now uses `USE_POSIX_GLOB_LIBRARY'
-
-Fixed pattern substitution so that ${a%%$b}, where b was unset, no longer
-causes a core dump
-
-Changed the `test_exit' define in test.c to no longer use `longjmp' as
-the rhs or a comma-ized expression; this causes core dumps on some
-optimizer/machine combinations
-
-A speed hack in variables.c: if no local variables are defined for a level
-of shell context, kill_all_local_variables does not need to search the
-whole variable hash table when popping a context
-
-Fixed the `bind' builtin so that -m now changes the keymap for all of the
-subsequent operations
-
-Changed some more builtins to use internal_getopt: bind, command, export,
-readonly, declare, typeset
-
-Fixed fc to use the Posix.2 format for listing commands in the
-history list
-
-Changed bg to set `!', as Posix.2 specifies
-
-Fixed ulimit.def to compile if RLIMIT_RSS is not defined,
-as some systems seem to have it
-
-Replaced lib/malloc/alloca.c with the version from emacs 19.  The old one
-lives in alloca.c.old
-
-malloc.c now uses the ANSI C features to `stringize' macro arguments if
-__STDC__ is defined
-
-Fixes to the GNU malloc library from glibc 1.06 and Mike Haertel
-
-Fixes to readline key binding and lookup for Cray systems, which don't
-like the casting that readline does
-
-Fixes to all readline library source files to clean up the code: make sure
-`int'-returning functions use `return x;' rather than `return;', declare all
-arguments, even the `int' ones, and make some functions void.  Cleaned up
-the code formatting a little, too.
-
-The readline completer now double-quotes filenames with special word-break
-characters, so that tilde expansion still works
-
-^C now breaks out of keyboard macros
-
-If being compiled as part of the shell, readline no longer attempts to
-handle SIGTTIN, SIGTTOU, or SIGTSTP
-
-tilde_expansion_failure_hook is now a CPFunction rather than a Function,
-since that's how it's used
-
-Readline vi-mode `change case' function now skips over characters which
-are neither upper nor lower case
-
-Readline vi-mode now allows replacement to be redoable with `.'
-
-2. New Features
-
-A `strict Posix.2' mode, enabled with the -posix startup option or
-setting the POSIXLY_CORRECT variable (see CWRU/POSIX.NOTES for a 
-description of the changed behavior)
-
-`ONESHOT' is now an option in config.h
-
-cpp-Makefile assumes that fixed header files are present if gcc is being
-used
-
-The redirections attached to a function declaration are now part of that
-function, applied when the function is executed, as specified by Posix.2.
-This caused a change to parse.y that resulted in 66 shift/reduce
-conflicts(!)
-
-All of the OP= functions that Posix.2 specifies are now implemented for
-both `let' and arithmetic substitution
-
-The `command' builtin has acquired the Posix.2 `-v' and `-V' options
-(this shares code with the `type' builtin)
-
-A new `bash_builtins' man page, like the `csh_builtins' page on some
-systems
diff --git a/CWRU/old/RSH.README b/CWRU/old/RSH.README
deleted file mode 100644 (file)
index 6a3498b..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-
-This is a description of the changes made to bash to provide a `restricted'
-shell, `rbash', organized by changes to various source files.
-
-1.  shell.c
-
-       Moved the declaration of restricted to flags.c; it is now declared
-       extern here.  Changed the detection of a restricted shell; now, any
-       instance of the shell for which *(basename(argv[0])) == 'r' (where
-       basename returns either everything after the last '/' in its 
-       argument or its argument is restricted.  Also, if SHELL is set on
-       entry to the shell, and it's basename is "rbash", the shell is
-       restricted.
-
-       This paragraph applies only to CWRU, or to those who have compiled
-       the shell with "CWRU" defined.  When a shell is determined to be
-       restricted, and it is a login shell, the file "/etc/rprofile" (and
-       only that file) is executed.  There is no execution of ~/.profile
-       or ~/.bash_profile.  The .bashrc file is executed, but after the
-       restrictions have been turned on (users may customize their instances
-       of the shell in this file while not compromising any kind of security
-       arrangements set up by the administrator).
-
-2.  builtins.c
-
-       cd_builtin was modified to return failure if bash is operating in
-       `restricted mode', so changing directories is not allowed.
-
-3.  variables.c
-
-       initialize_shell_variables () was modified to make PATH and SHELL
-       read-only when restricted == 1.  These variables may not be unset
-       in a restricted shell.
-
-4.  flags.c
-
-       The variable `restricted' is now declared here.  A new flag `-r',
-       to turn on restricted mode, has been added.  `change_flag' has 
-       been modified to disallow `set +r' if restricted == 1.
-
-5.  execute_cmd.c
-
-       execute_simple_command () was modified to disallow commands and
-       file names that contain a slash.
-
-       Code was added to do_redirections () and do_redirection() to
-       disallow output file redirection specifications if restricted is
-       1.
-
-Chet Ramey
-Information Network Services, Case Western Reserve University
-chet@ins.CWRU.Edu
-
-(I took almost all of this stuff out again after putting it in.)
diff --git a/CWRU/old/array.doc b/CWRU/old/array.doc
deleted file mode 100644 (file)
index 1bd14b5..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-This describes how bash users create, destroy, assign, and reference array
-variables.  Array variables are variables whose values are arrays of strings,
-and whose elements may be referenced individually.
-
-CREATING
-       - any variable may be declared as an array using `typeset -a'
-       - an ordinary variable may be converted to an array using
-         `typeset -a'; the value becomes array[0]
-
-       - there is a question of notation used to simultaneously declare
-         an array variable and populate it with values sequentially,
-         like ksh does with `set -A'.  `set -A' is a horrible choice;
-         it should be discarded immediately.
-
-               - we can use `typeset -a array [values...]'
-
-DESTROYING
-       - `unset name' will destroy the array `name'
-       - how to treat `typeset +a array'?
-               - I think we should keep the variable, convert it from an
-                 array to an `ordinary' variable, and make the value at
-                 the smallest index of the array the value of the new
-                 variable
-
-ASSIGNING
-       - array[index]=value will serve to assign values to individual
-         elements of the array
-       - the subscript can be an arbitrary arithmetic expression; it
-         will be run through the expression evaluator
-       - this can create arrays, too
-               - this is analogous to defining a variable by simply
-                 assigning to it
-
-REFERENCING
-       - $array will expand to all elements of the array, just like $*
-         expands to all the positional parameters
-       - "$array" is like "$@"
-       - ${array[index]} is used to reference array element `index', where
-         `index' can be an arbitrary arithmetic expression
-               - two special values for `index': * and @ expand to all
-                 elements of the array, just like $* and $@.  Quoting
-                 behavior is the same, too
-       - using a subscript is an error if a variable has not been declared
-         as an array (is this wise?)
-       - ${#variable}, if `variable' is an array, expands to the number of
-         elements in the array
-               - ${#variable[n]} expands to the length of variable[n].  n
-                 may be an arbitrary arithmetic expression
-               - ${#variable[*]} and ${#variable[@]} expand to the number of
-                 elements in the array
-
-OPEN QUESTIONS
-       - should we allow them to be exported?  Ksh does not, but rc does
diff --git a/CWRU/old/fixlib b/CWRU/old/fixlib
deleted file mode 100755 (executable)
index 7d74c08..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-
-# This script is for bash-maintainers only!  It takes a freshly unpacked Bash,
-# and reorganizes it so that there is exactly one version of any given
-# source file.
-#
-
-if [ "$0" != "./fixdist" ]; then
-   echo "You must run 'fixdist' from the 'support' directory!"
-   exit 1
-fi
-
-cd ../lib
-must_exist="posixheaders/posixstat.h posixheaders/ansi_stdlib.h"
-must_exist="$must_exist tilde/tilde.c tilde/tilde.h"
-must_exist="$must_exist malloc/xmalloc.c"
-
-for filename in $must_exist; do
-   if [ ! -f $filename ]; then
-      echo "The file lib/$filename doesn't exist, but it must!"
-      exit 1
-   fi
-done
-
-echo -n "Relinking neccessary files in lib/readline..."
-cd readline
-for filename in tilde.c tilde.h; do
-   rm $filename
-   ln -s ../tilde/$filename .
-done
-
-rm posixstat.h && ln -s ../posixheaders/posixstat.h .
-rm ansi_stdlib.h && ln -s ../posixheaders/ansi_stdlib.h .
-rm xmalloc.c && ln -s ../malloc/xmalloc.c .
-echo "done."
-
-echo -n "Linking files in . ..."
-cd ../..
-rm posixstat.h && ln -s lib/posixheaders/posixstat.h .
-rm ansi_stdlib.h && ln -s lib/posixheaders/ansi_stdlib.h .
-echo "done."
-
-echo "Should I move the \"lib\" directory to \"../lib\" if I wouldn't"
-echo -n "clobber anything by doing so (y/n)? "
-read reply
-if [ "$reply" != 'y' ]; then
-   echo "You said no, so in that case I'm all done."
-   exit 0
-fi
-
-# Try as hard as we can to move the lib directory to ../lib.
-#
-if [ -d ../lib ]; then
-   echo "The directory $(cd ../lib; pwd) already exists.  It looks like:"
-   echo $(cd ../lib; ls -ldg .; ls -lF)
-   echo "I can:"
-   echo "  1) Move the directory to another name,"
-   echo "  2) Delete matching directories from within it,"
-   echo "  3) Copy files into existing directories, or"
-   echo "  4) Quit now, while you are ahead."
-   echo ""
-   echo -n "Which will it be? "
-   read reply
-   case "$reply" in
-     1)
-       echo "I would be moving the directory to lib-old now"
-       ;;
-     2)
-       echo "I would be deleting the matching directories now"
-       ;;
-     3)
-       echo "I would just go ahead and copy the directories now"
-       ;;
-     4)
-       echo "Probably a good move.  Look at the script support/mklinks."
-       ;;
-   esac
-else
-   echo -n "Moving lib to ../lib, and relinking lib in this directory..."
-   mv lib ../lib
-   mkdir lib
-   cd lib
-   ../support/mklinks ../../lib
-   echo "done."
-fi
-
-echo "That concludes this fixing of the distribution."
-exit 0
diff --git a/CWRU/old/histctl.def b/CWRU/old/histctl.def
deleted file mode 100644 (file)
index f319a71..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-This file is histctl.def, from which is created histctl.c.
-It implements the builtin "histctl" in Bash.
-
-Copyright (C) 1987, 1989, 1991, 1992 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.
-
-$PRODUCES histctl.c
-
-$BUILTIN histctl
-$FUNCTION histctl_builtin
-$DEPENDS_ON HISTORY
-$SHORT_DOC histctl [-cC] [-iI space|dups|both|none]
-Control how lines are saved into the command history.  An option
-of -c enables command-oriented history, in which all lines of a
-compound command are saved as a single history entry.  The -i
-option permits certain lines to be discarded without being stored
-in the history: SPACE means to ignore lines beginning with a space;
-DUPS means to ignore lines the same as the last command entered
-into the history; BOTH enables SPACE and DUPS; and NONE means to
-store all lines.
-$END
-
-#include "../shell.h"
-
-#if defined (HISTORY)
-#include "bashgetopt.h"
-#include "../bashhist.h"
-
-#define HIGNORE_NONE   0x0
-#define HIGNORE_SPACE  0x01
-#define HIGNORE_DUPS   0x02
-#define HIGNORE_BOTH   (HIGNORE_SPACE | HIGNORE_DUPS)
-
-int
-histctl_builtin (list)
-     WORD_LIST *list;
-{
-  int opt;
-  char *spec;
-
-  reset_internal_getopt ();
-  while ((opt = internal_getopt (list, "CcI:i:")) != -1)
-    {
-      switch (opt)
-       {
-       case 'c':
-         command_oriented_history++;
-         break;
-       case 'C':
-         command_oriented_history = 0;
-         break;
-       case 'i':
-         spec = list_optarg;
-         if (strcmp (spec, "none") == 0)
-           history_control = HIGNORE_NONE;
-         else if (strcmp (spec, "space") == 0)
-           history_control |= HIGNORE_SPACE;
-         else if (strcmp (spec, "dups") == 0)
-           history_control |= HIGNORE_DUPS;
-         else if (strcmp (spec, "both") == 0)
-           history_control |= HIGNORE_BOTH;
-         else
-           {
-             builtin_error ("invalid argument to -i: %s", spec);
-             builtin_error ("usage: histctl [-cC] [-iI space|dups|both|none]");
-             return (EX_USAGE);
-           }
-         break;
-       case 'I':
-         spec = list_optarg;
-         if (strcmp (spec, "none") == 0)
-           history_control = HIGNORE_NONE;
-         else if (strcmp (spec, "space") == 0)
-           history_control &= ~HIGNORE_SPACE;
-         else if (strcmp (spec, "dups") == 0)
-           history_control &= ~HIGNORE_DUPS;
-         else if (strcmp (spec, "both") == 0)
-           history_control &= ~HIGNORE_BOTH;
-         else
-           {
-             builtin_error ("invalid argument to -I: %s", spec);
-             builtin_error ("usage: histctl [-cC] [-iI space|dups|both|none]");
-             return (EX_USAGE);
-           }
-         break;
-       default:
-         report_bad_option ();
-         builtin_error ("usage: histctl [-cC] [-iI space|dups|both|none]");
-         return (EX_USAGE);
-       }
-    }
-
-  return (EXECUTION_SUCCESS);
-}
-#endif /* HISTORY */
diff --git a/CWRU/old/longsig.c b/CWRU/old/longsig.c
deleted file mode 100644 (file)
index 56ec91c..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* The answer to this question is 24. */
-#include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#include "siglist.h"
-
-/* 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. */
-
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  int longest, length = 0;
-  int i;
-
-  for (i = 0; i < NSIG; i++)
-    {
-      printf ("%2d) %s\n", i, sys_siglist[i]);
-      if (strlen (sys_siglist[i]) > length)
-       {
-         longest = i;
-         length = strlen (sys_siglist[i]);
-       }
-    }
-
-  printf ("The longest name is %d:\"%s\", which is %d chars in length.\n",
-         longest, sys_siglist[longest], length);
-}
-\f
-/*
- * Local variables:
- * compile-command: "cc -o longest_sig longest_sig.c"
- * end:
- */
diff --git a/CWRU/old/mklinks b/CWRU/old/mklinks
deleted file mode 100755 (executable)
index 612aa99..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-
-# Yet another script which requires an already built Bash.
-#
-# This makes links in the current directory to the directory specified as
-# the first argument.
-#
-
-topdir=$1
-
-if [ ! "$topdir" ]; then
-  echo "No directory specified.  Read the script $0."
-  exit 1
-fi
-
-function clone_files ()
-{
-  local dir=$1;
-  local files;
-
-  files=$(cd $dir; echo *);
-
-  if [ ! "$files" ]; then
-    return 0;
-  fi
-
-  for filename in $files; do
-    if [ -d $dir/$filename ]; then
-      # If the file to clone is this directory, then skip it.
-      if [ $(cd $dir/$filename; pwd) = $(pwd) ]; then
-       continue;
-      fi
-      mkdir $filename;
-      (cd $filename; clone_files ../$dir/$filename)
-    else
-      ln -s $dir/$filename .;
-    fi
-  done
-  rm -f \#* *~ .*~ *.bak .*.bak  *.tmp .*.tmp *.o core a.out;
-}
-
-clone_files $topdir
diff --git a/CWRU/old/mktarfile b/CWRU/old/mktarfile
deleted file mode 100755 (executable)
index 88097f5..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/sh
-# How to make a distribution tarfile.
-#
-# $1 is the name of the program.
-# $2 is the version number.
-# Remaining args are files to tar.
-# Optional argument of "~+notar" means don't create the actual tar file,
-# just create the symlinked directory.
-
-tar_inhibited=""
-if [ "$1" = "+notar" ]; then
-  tar_inhibited=yes
-  shift
-fi
-
-PROGRAM=$1
-VERSION=$2
-
-if [ "$PROGRAM" = "" -o "$VERSION" = "" ]; then
-  echo "Usage: mktarfile [+notar] <progname> <version> <file ...>"
-  echo "Using the \`+notar' option causes a clone directory to be made."
-  exit 2;
-fi
-
-shift; shift
-
-TARFILE=$PROGRAM.tar
-TARDIR=$PROGRAM-$VERSION
-
-# Delete the tarfile if we are to create it.
-if [ ! "tar_inhibited" ]; then
-  rm -rf $TARFILE
-fi
-
-# Delete the destination directory if it already exists.
-rm -rf $TARDIR
-
-# Make the destination directory.
-echo "Making directory $TARDIR..."
-mkdir $TARDIR
-
-topdir=`pwd`
-where_I_am=$TARDIR
-
-trap "cd $topdir" 3
-
-for i in $*; do
-  filename=$i
-  while [ "$filename" ]; do
-    remainder=`echo $filename | sed 's@[-_a-zA-Z~0-9.]*/@@'`
-    dir=`echo $filename | sed "s@$remainder\\\$@@" | sed "s@/@@"`
-    if [ "$dir" ]; then
-       if [ ! -d $where_I_am/$dir ]; then
-         echo "Making directory $where_I_am/$dir..."
-         mkdir $where_I_am/$dir
-       fi
-       cd $where_I_am/$dir; where_I_am=`pwd`
-       filename=$remainder
-    else
-       break
-    fi
-  done
-  cd $topdir; where_I_am=$TARDIR
-  ln -s $topdir/$i $TARDIR/$i
-done
-
-if [ ! "$tar_inhibited" ]; then
-  echo "tar -chf $TARFILE $TARDIR"
-  tar -chf $TARFILE $TARDIR
-  echo "rm -rf $TARDIR"
-  rm -rf $TARDIR
-fi
-
-exit 0
diff --git a/CWRU/old/mkversion.c b/CWRU/old/mkversion.c
deleted file mode 100644 (file)
index 8164a8f..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/* Simple program to make new version numbers for the shell.
-   Big deal, but it was getting out of hand to do everything
-   in the makefile. */
-
-/* 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 "config.h"
-
-#include <sys/types.h>
-#include "posixstat.h"
-#include <stdio.h>
-#include "bashansi.h"
-
-char *progname;
-char *dir;
-char *status;
-
-FILE *must_open ();
-
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  FILE *file;
-  float distver = 0.0;
-  int buildver = 0, patchlevel = 0;
-  int dist = 0, build = 0, patch = 0;
-  int dist_inc = 0, build_inc = 0, patch_inc = 0;
-  int dot_dist_needs_making = 0;
-  int arg_index = 1;
-  struct stat sb;
-
-  progname = argv[0];
-
-  status = dir = (char *)0;
-  while (arg_index < argc && argv[arg_index][0] == '-')
-    {
-      if (strcmp (argv[arg_index], "-dist") == 0)
-        {
-         dist++;
-         dist_inc++;
-        }
-      else if (strcmp (argv[arg_index], "-build") == 0)
-        {
-         build++;
-         build_inc++;
-        }
-      else if (strcmp (argv[arg_index], "-patch") == 0)
-        {
-          patch++;
-         patch_inc++;
-        }
-      else if (strcmp (argv[arg_index], "-dir") == 0)
-       {
-         dir = argv[++arg_index];
-         if (dir == 0)
-           {
-             fprintf (stderr, "%s: `-dir' requires an argument\n", progname);
-             exit (1);
-           }
-         if (stat (dir, &sb) < 0)
-           {
-             fprintf (stderr, "%s: cannot stat %s\n", progname, dir);
-             exit (1);
-           }
-         if ((sb.st_mode & S_IFMT) != S_IFDIR)
-           {
-             fprintf (stderr, "%s: not a directory\n", progname);
-             exit (1);
-           }
-       }
-      else if (strcmp (argv[arg_index], "-status") == 0)
-        {
-          status = argv[++arg_index];
-         if (status == 0)
-           {
-             fprintf (stderr, "%s: `-status' requires an argument\n", progname);
-             exit (1);
-           }
-        }
-      else
-       {
-         fprintf (stderr, "%s: unknown option: %s\n", progname, argv[arg_index]);
-         fprintf (stderr, "usage: %s [-dist|-patch|-build] [-dir directory]\n", progname);
-         exit (1);
-       }
-      arg_index++;
-    }
-
-  if (get_float_from_file (".distribution", &distver, 1) == 0)
-    dot_dist_needs_making++;
-
-  if (get_int_from_file (".patchlevel", &patchlevel, 1) == 0)
-    {
-      patchlevel = 0;
-      patch_inc = 0;
-    }
-
-  if (get_int_from_file (".build", &buildver, 0) == 0)
-    buildver = 0;
-
-  /* Setting distribution version. */
-  if (dist && arg_index < argc)
-    if (sscanf (argv[arg_index], "%f", &distver) != 1)
-      {
-       fprintf (stderr, "%s: Bad input `%s'.  Expected float value for -dist.\n",
-                progname, argv[arg_index]);
-       exit (1);
-      }
-    else
-      {
-       arg_index++;
-       dist_inc = 0;
-      }
-
-  /* Setting patchlevel via argument. */
-  if (patch && arg_index < argc)
-    if (sscanf (argv[arg_index], "%d", &patchlevel) != 1)
-      {
-       fprintf (stderr, "%s: Bad input `%s'.  Expected int value for -patch.\n",
-                progname, argv[arg_index]);
-       exit (1);
-      }
-    else
-      {
-       arg_index++;
-       patch_inc = 0;
-      }
-    
-  if (build && arg_index < argc)
-    if (sscanf (argv[arg_index], "%d", &buildver) != 1)
-      {
-       fprintf (stderr, "%s: Bad input `%s'.  Expected int value for -build.\n",
-                progname, argv[arg_index]);
-       exit (1);
-      }
-    else
-      {
-       arg_index++;
-       build_inc = 0;
-      }
-
-  if (dot_dist_needs_making && !distver)
-    {
-      fprintf (stderr, "%s: There is no `.distribution' file to infer from.\n", progname);
-      exit (1);
-    }
-
-  if (dist_inc)
-    distver = distver + 0.01;
-
-  if (patch_inc)
-    patchlevel++;
-
-  if (build_inc)
-    buildver++;
-
-  file = must_open ("newversion.h", "w");
-
-  /* Output the leading comment. */
-  fprintf (file, 
-"/* Version control for the shell.  This file gets changed when you say\n\
-   `make newversion' to the Makefile.  It is created by mkversion. */\n");
-
-  fprintf (file, "\n/* The distribution version number of this shell. */\n");
-  fprintf (file, "#define DISTVERSION \"%.2f\"\n", distver);
-
-  fprintf (file, "\n/* The patch level of this version of the shell. */\n");
-  fprintf (file, "#define PATCHLEVEL %d\n", patchlevel);
-
-  fprintf (file, "\n/* The last built version of this shell. */\n");
-  fprintf (file, "#define BUILDVERSION %d\n", buildver);
-
-  if (status)
-    {
-      fprintf (file, "\n/* The release status of this shell. */\n");
-      fprintf (file, "#define RELSTATUS \"%s\"\n", status);
-    }
-
-  fprintf (file, "\n/* A version string for use by sccs and the what command. */\n\n");
-  if (status)
-    fprintf (file, "#define SCCSVERSION \"@(#)Bash version %.2f.%d(%d) %s GNU\"\n\n",
-      distver, patchlevel, buildver, status);
-  else
-    fprintf (file, "#define SCCSVERSION \"@(#)Bash version %.2f.%d(%d) GNU\"\n\n",
-      distver, patchlevel, buildver);
-
-  fclose (file);
-
-  file = must_open (".build", "w");
-  fprintf (file, "%d\n", buildver);
-  fclose (file);
-
-  /* Making a new distribution. */
-  if (dist)
-    {
-      file = must_open (".distribution", "w");
-      fprintf (file, "%.2f\n", distver);
-      fclose (file);
-    }
-
-  /* Releasing a new patch level. */
-  if (patch)
-    {
-      file = must_open (".patchlevel", "w");
-      fprintf (file, "%d\n", patchlevel);
-      fclose (file);
-    }
-
-  exit (0);
-}
-
-char *
-makename (fn, from_srcdir)
-     char *fn;
-{
-  char *ret;
-  int dlen;
-
-  dlen = (from_srcdir && dir) ? strlen (dir) + 1 : 0;
-  ret = (char *)malloc (dlen + strlen (fn) + 1);
-  if (ret == 0)
-    {
-      fprintf (stderr, "%s: malloc failed\n", progname);
-      exit (1);
-    }
-  if (from_srcdir && dir)
-    sprintf (ret, "%s/%s", dir, fn);
-  else
-    (void)strcpy (ret, fn);
-
-  return ret;
-}
-
-get_float_from_file (filename, var, from_srcdir)
-     char *filename;
-     float *var;
-     int from_srcdir;
-{
-  FILE *stream;
-  int result;
-  char *name;
-
-  name = makename (filename, from_srcdir);
-  stream = fopen (name, "r");
-  free (name);
-  if (stream == (FILE *)NULL)
-    return (0);
-  result = fscanf (stream, "%f\n", var);
-  fclose (stream);
-  return (result == 1);
-}
-
-get_int_from_file (filename, var, from_srcdir)
-     char *filename;
-     int *var, from_srcdir;
-{
-  FILE *stream;
-  int result;
-  char *name;
-
-  name = makename (filename, from_srcdir);
-  stream = fopen (name, "r");
-  free (name);
-  if (stream == (FILE *)NULL)
-    return (0);
-  result = fscanf (stream, "%d\n", var);
-  fclose (stream);
-  return (result == 1);
-}
-
-FILE *
-must_open (name, mode)
-     char *name, *mode;
-{
-  FILE *temp = fopen (name, mode);
-
-  if (!temp)
-    {
-      fprintf (stderr, "%s: Cannot open `%s' for mode `%s'.\n",
-              progname, name, mode);
-      fprintf
-       (stderr,
-        "Perhaps you don't have %s permission to the file or directory.\n",
-        (strcmp (mode, "w") == 0) ? "write" : "read");
-      exit (3);
-    }
-  return (temp);
-}
diff --git a/CWRU/old/pagesize.c b/CWRU/old/pagesize.c
deleted file mode 100644 (file)
index ee2baa3..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * getpagesize - print the system pagesize
- *
- * Chet Ramey
- * chet@ins.cwru.edu
- */
-
-#include <stdio.h>
-
-/*
- * I know these systems have getpagesize(2)
- */
-
-#if defined (Bsd) || defined (Ultrix) || defined (sun)
-#  define HAVE_GETPAGESIZE
-#endif
-
-#if !defined (HAVE_GETPAGESIZE)
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#  if defined (_SC_PAGESIZE)
-#    define getpagesize() sysconf(_SC_PAGESIZE)
-#  endif /* _SC_PAGESIZE */
-#endif
-
-#if !defined (getpagesize)
-#  include <sys/param.h>
-#  if defined (PAGESIZE)
-#     define getpagesize() PAGESIZE
-#  else /* !PAGESIZE */
-#    if defined (EXEC_PAGESIZE)
-#      define getpagesize() EXEC_PAGESIZE
-#    else /* !EXEC_PAGESIZE */
-#      if defined (NBPG)
-#        if !defined (CLSIZE)
-#          define CLSIZE 1
-#        endif /* !CLSIZE */
-#        define getpagesize() (NBPG * CLSIZE)
-#      else /* !NBPG */
-#        if defined (NBPC)
-#          define getpagesize() NBPC
-#        endif /* NBPC */
-#      endif /* !NBPG */
-#    endif /* !EXEC_PAGESIZE */
-#  endif /* !PAGESIZE */
-#endif /* !getpagesize */
-
-#if !defined (getpagesize)
-#  define getpagesize() 4096  /* Just punt and use reasonable value */
-#endif
-
-#endif /* no EXEC_PAGESIZE */
-
-#endif /* not HAVE_GETPAGESIZE */
-
-main()
-{
-#if defined (HAVE_GETPAGESIZE) || defined (getpagesize)
-  printf ("%ld\n", getpagesize ());
-#else
-  puts ("1024");
-#endif
-}
diff --git a/CWRU/old/pagesize.sh b/CWRU/old/pagesize.sh
deleted file mode 100755 (executable)
index 08a2935..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#! /bin/sh
-#
-# pagesize.sh -- determine this system's page size, and write a define to
-#               lib/malloc/pagesize.h for the Gnu malloc's valloc().
-
-echo "/*"
-echo " * pagesize.h"
-echo " *"
-echo " * This file is automatically generated by pagesize.sh"
-echo " * Do not edit!"
-echo " */"
-echo ""
-
-if [ -x /bin/pagesize ]; then
-       echo "#define getpagesize() `/bin/pagesize`"
-else
-       echo "#define getpagesize() `./support/pagesize.aux`"
-fi
-
-exit 0
diff --git a/CWRU/old/parse.y.noctlnul b/CWRU/old/parse.y.noctlnul
deleted file mode 100644 (file)
index 1e8921a..0000000
+++ /dev/null
@@ -1,3163 +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 "config.h"
-
-#include "bashtypes.h"
-#include "bashansi.h"
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include <signal.h>
-
-#include "shell.h"
-#include "trap.h"
-#include "flags.h"
-#include "input.h"
-#include "mailcheck.h"
-#include "builtins/common.h"
-#include "builtins/builtext.h"
-
-#if defined (READLINE)
-#  include "bashline.h"
-#  include <readline/readline.h>
-#endif /* READLINE */
-
-#if defined (HISTORY)
-#  include "bashhist.h"
-#  include <readline/history.h>
-#endif /* HISTORY */
-
-#if defined (JOB_CONTROL)
-#  include "jobs.h"
-#endif /* JOB_CONTROL */
-
-#if defined (ALIAS)
-#  include "alias.h"
-#endif /* ALIAS */
-
-#if defined (PROMPT_STRING_DECODE)
-#include <sys/param.h>
-#include <time.h>
-#include "maxpath.h"
-#endif /* PROMPT_STRING_DECODE */
-
-#define RE_READ_TOKEN  -99
-#define NO_EXPANSION   -100
-
-#define YYDEBUG 1
-extern int eof_encountered;
-extern int no_line_editing, running_under_emacs;
-extern int current_command_number;
-extern int interactive, interactive_shell, login_shell;
-extern int posixly_correct;
-extern int last_command_exit_value;
-extern int interrupt_immediately;
-extern char *shell_name, *current_host_name;
-extern Function *last_shell_builtin, *this_shell_builtin;
-#if defined (BUFFERED_INPUT)
-extern int bash_input_fd_changed;
-#endif
-
-/* **************************************************************** */
-/*                                                                 */
-/*                 "Forward" declarations                          */
-/*                                                                 */
-/* **************************************************************** */
-
-static int reserved_word_acceptable ();
-static int read_token ();
-static int yylex ();
-static int read_token_word ();
-static void discard_parser_constructs ();
-
-static void report_syntax_error ();
-static void handle_eof_input_unit ();
-static void prompt_again ();
-static void reset_readline_prompt ();
-static void print_prompt ();
-
-/* 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;
-
-/* If non-zero, the decoded prompt string undergoes parameter and
-   variable substitution, command substitution, arithmetic substitution,
-   string expansion, process substitution, and quote removal in
-   decode_prompt_string. */
-int promptvars = 1;
-
-/* The decoded prompt string.  Used if READLINE is not defined or if
-   editing is turned off.  Analogous to current_readline_prompt. */
-static char *current_decoded_prompt;
-
-/* The number of lines read from input while creating the current command. */
-int current_command_line_count;
-
-/* Variables to manage the task of reading here documents, because we need to
-   defer the reading until after a complete command has been collected. */
-static REDIRECT *redir_stack[10];
-int need_here_doc;
-
-/* Where shell input comes from.  History expansion is performed on each
-   line when the shell is interactive. */
-static char *shell_input_line = (char *)NULL;
-static int shell_input_line_index = 0;
-static int shell_input_line_size = 0;  /* Amount allocated for shell_input_line. */
-static int shell_input_line_len = 0;   /* strlen (shell_input_line) */
-
-/* Either zero or EOF. */
-static int shell_input_line_terminator = 0;
-
-static REDIRECTEE redir;
-%}
-
-%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;
-}
-
-/* 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 SELECT WHILE UNTIL DO DONE FUNCTION
-%token IN BANG TIME
-
-/* More general tokens. yylex () knows how to make these. */
-%token <word> WORD ASSIGNMENT_WORD
-%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
-
-/* The types that the various syntactical units return. */
-
-%type <command> inputunit command pipeline pipeline_command
-%type <command> list list0 list1 compound_list simple_list simple_list1
-%type <command> simple_command shell_command
-%type <command> for_command select_command case_command group_command
-%type <command> function_def if_command elif_clause subshell
-%type <redirect> redirection redirection_list
-%type <element> simple_command_element
-%type <word_list> word_list pattern 
-%type <pattern> pattern_list case_clause_sequence case_clause
-
-%start inputunit
-
-%left '&' ';' '\n' yacc_EOF
-%left AND_AND OR_OR
-%right '|'
-%%
-
-inputunit:     simple_list '\n'
-                       {
-                         /* Case of regular command.  Discard the error
-                            safety net,and return the command just parsed. */
-                         global_command = $1;
-                         eof_encountered = 0;
-                         discard_parser_constructs (0);
-                         YYACCEPT;
-                       }
-       |       '\n'
-                       {
-                         /* Case of regular command, but not a very
-                            interesting one.  Return a NULL command. */
-                         global_command = (COMMAND *)NULL;
-                         YYACCEPT;
-                       }
-       |
-               error '\n'
-                       {
-                         /* 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;
-                       }
-       ;
-
-word_list:     WORD
-                       { $$ = make_word_list ($1, (WORD_LIST *)NULL); }
-       |       word_list WORD
-                       { $$ = make_word_list ($2, $1); }
-       ;
-
-redirection:   '>' WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (1, r_output_direction, redir);
-                       }
-       |       '<' WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (0, r_input_direction, redir);
-                       }
-       |       NUMBER '>' WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection ($1, r_output_direction, redir);
-                       }
-       |       NUMBER '<' WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection ($1, r_input_direction, redir);
-                       }
-       |       GREATER_GREATER WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (1, r_appending_to, redir);
-                       }
-       |       NUMBER GREATER_GREATER WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection ($1, r_appending_to, redir);
-                       }
-       |       LESS_LESS WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (0, r_reading_until, redir);
-                         redir_stack[need_here_doc++] = $$;
-                       }
-       |       NUMBER LESS_LESS WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection ($1, r_reading_until, redir);
-                         redir_stack[need_here_doc++] = $$;
-                       }
-       |       LESS_AND NUMBER
-                       {
-                         redir.dest = $2;
-                         $$ = make_redirection (0, r_duplicating_input, redir);
-                       }
-       |       NUMBER LESS_AND NUMBER
-                       {
-                         redir.dest = $3;
-                         $$ = make_redirection ($1, r_duplicating_input, redir);
-                       }
-       |       GREATER_AND NUMBER
-                       {
-                         redir.dest = $2;
-                         $$ = make_redirection (1, r_duplicating_output, redir);
-                       }
-       |       NUMBER GREATER_AND NUMBER
-                       {
-                         redir.dest = $3;
-                         $$ = make_redirection ($1, r_duplicating_output, redir);
-                       }
-       |       LESS_AND WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (0, r_duplicating_input_word, redir);
-                       }
-       |       NUMBER LESS_AND WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection ($1, r_duplicating_input_word, redir);
-                       }
-       |       GREATER_AND WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (1, r_duplicating_output_word, redir);
-                       }
-       |       NUMBER GREATER_AND WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection ($1, r_duplicating_output_word, redir);
-                       }
-       |       LESS_LESS_MINUS WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection
-                           (0, r_deblank_reading_until, redir);
-                         redir_stack[need_here_doc++] = $$;
-                       }
-       |       NUMBER LESS_LESS_MINUS WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection
-                           ($1, r_deblank_reading_until, redir);
-                         redir_stack[need_here_doc++] = $$;
-                       }
-       |       GREATER_AND '-'
-                       {
-                         redir.dest = 0L;
-                         $$ = make_redirection (1, r_close_this, redir);
-                       }
-       |       NUMBER GREATER_AND '-'
-                       {
-                         redir.dest = 0L;
-                         $$ = make_redirection ($1, r_close_this, redir);
-                       }
-       |       LESS_AND '-'
-                       {
-                         redir.dest = 0L;
-                         $$ = make_redirection (0, r_close_this, redir);
-                       }
-       |       NUMBER LESS_AND '-'
-                       {
-                         redir.dest = 0L;
-                         $$ = make_redirection ($1, r_close_this, redir);
-                       }
-       |       AND_GREATER WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (1, r_err_and_out, redir);
-                       }
-       |       NUMBER LESS_GREATER WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection ($1, r_input_output, redir);
-                       }
-       |       LESS_GREATER WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (0, r_input_output, redir);
-                       }                         
-       |       GREATER_BAR WORD
-                       {
-                         redir.filename = $2;
-                         $$ = make_redirection (1, r_output_force, redir);
-                       }
-       |       NUMBER GREATER_BAR WORD
-                       {
-                         redir.filename = $3;
-                         $$ = make_redirection ($1, r_output_force, redir);
-                       }
-       ;
-
-simple_command_element: WORD
-                       { $$.word = $1; $$.redirect = 0; }
-       |       ASSIGNMENT_WORD
-                       { $$.word = $1; $$.redirect = 0; }
-       |       redirection
-                       { $$.redirect = $1; $$.word = 0; }
-       ;
-
-redirection_list: redirection
-                       {
-                         $$ = $1;
-                       }
-       |       redirection_list redirection
-                       { 
-                         register REDIRECT *t;
-
-                         for (t = $1; t->next; t = t->next)
-                           ;
-                         t->next = $2; 
-                         $$ = $1;
-                       }
-       ;
-
-simple_command:        simple_command_element
-                       { $$ = make_simple_command ($1, (COMMAND *)NULL); }
-       |       simple_command simple_command_element
-                       { $$ = make_simple_command ($2, $1); }
-       ;
-
-command:       simple_command
-                       { $$ = clean_simple_command ($1); }
-       |       shell_command
-                       { $$ = $1; }
-       |       shell_command redirection_list
-                       {
-                         COMMAND *tc;
-
-                         tc = $1;
-                         /* According to Posix.2 3.9.5, redirections
-                            specified after the body of a function should
-                            be attached to the function and performed when
-                            the function is executed, not as part of the
-                            function definition command. */
-                         if (tc->type == cm_function_def)
-                           {
-                             tc = tc->value.Function_def->command;
-                             if (tc->type == cm_group)
-                               tc = tc->value.Group->command;
-                           }
-                         if (tc->redirects)
-                           {
-                             register REDIRECT *t;
-                             for (t = tc->redirects; t->next; t = t->next)
-                               ;
-                             t->next = $2;
-                           }
-                         else
-                           tc->redirects = $2;
-                         $$ = $1;
-                       }
-       ;
-
-shell_command: for_command
-                       { $$ = $1; }
-       |       case_command
-                       { $$ = $1; }
-       |       WHILE list DO list DONE
-                       { $$ = make_while_command ($2, $4); }
-       |       UNTIL list DO list DONE
-                       { $$ = make_until_command ($2, $4); }
-       |       select_command
-                       { $$ = $1; }
-       |       if_command
-                       { $$ = $1; }
-       |       subshell
-                       { $$ = $1; }
-       |       group_command
-                       { $$ = $1; }
-       |       function_def
-                       { $$ = $1; }
-       ;
-
-for_command:   FOR WORD newline_list DO list DONE
-                       { $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5); }
-       |       FOR WORD newline_list '{' list '}'
-                       { $$ = make_for_command ($2, add_string_to_list ("$@", (WORD_LIST *)NULL), $5); }
-       |       FOR WORD ';' newline_list DO list DONE
-                       { $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6); }
-       |       FOR WORD ';' newline_list '{' list '}'
-                       { $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6); }
-       |       FOR WORD newline_list IN word_list list_terminator newline_list DO list DONE
-                       { $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9); }
-       |       FOR WORD newline_list IN word_list list_terminator newline_list '{' list '}'
-                       { $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9); }
-       ;
-
-select_command:        SELECT WORD newline_list DO list DONE
-                       {
-                         $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5);
-                       }
-       |       SELECT WORD newline_list '{' list '}'
-                       {
-                         $$ = make_select_command ($2, add_string_to_list ("$@", (WORD_LIST *)NULL), $5);
-                       }
-       |       SELECT WORD ';' newline_list DO list DONE
-                       {
-                         $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6);
-                       }
-       |       SELECT WORD ';' newline_list '{' list '}'
-                       {
-                         $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6);
-                       }
-       |       SELECT WORD newline_list IN word_list list_terminator newline_list DO list DONE
-                       {
-                         $$ = make_select_command ($2, (WORD_LIST *)reverse_list ($5), $9);
-                       }
-       |       SELECT WORD newline_list IN word_list list_terminator newline_list '{' list '}'
-                       {
-                         $$ = make_select_command ($2, (WORD_LIST *)reverse_list ($5), $9);
-                       }
-       ;
-
-case_command:  CASE WORD newline_list IN newline_list ESAC
-                       { $$ = make_case_command ($2, (PATTERN_LIST *)NULL); }
-       |       CASE WORD newline_list IN case_clause_sequence newline_list ESAC
-                       { $$ = make_case_command ($2, $5); }
-       |       CASE WORD newline_list IN case_clause ESAC
-                       { $$ = make_case_command ($2, $5); }
-       ;
-
-function_def:  WORD '(' ')' newline_list group_command
-                       { $$ = make_function_def ($1, $5); }
-
-       |       FUNCTION WORD '(' ')' newline_list group_command
-                       { $$ = make_function_def ($2, $6); }
-
-       |       FUNCTION WORD newline_list group_command
-                       { $$ = make_function_def ($2, $4); }
-       ;
-
-subshell:      '(' compound_list ')'
-                       { $2->flags |= CMD_WANT_SUBSHELL; $$ = $2; }
-       ;
-       
-if_command:    IF list THEN list FI
-                       { $$ = make_if_command ($2, $4, (COMMAND *)NULL); }
-       |       IF list THEN list ELSE list FI
-                       { $$ = make_if_command ($2, $4, $6); }
-       |       IF list THEN list elif_clause FI
-                       { $$ = make_if_command ($2, $4, $5); }
-       ;
-
-
-group_command: '{' list '}'
-                       { $$ = make_group_command ($2); }
-       ;
-
-elif_clause:   ELIF list THEN list
-                       { $$ = make_if_command ($2, $4, (COMMAND *)NULL); }
-       |       ELIF list THEN list ELSE list
-                       { $$ = make_if_command ($2, $4, $6); }
-       |       ELIF list THEN list elif_clause
-                       { $$ = make_if_command ($2, $4, $5); }
-       ;
-
-case_clause:   pattern_list
-       |       case_clause_sequence pattern_list
-                       { $2->next = $1; $$ = $2; }
-       ;
-
-pattern_list:  newline_list pattern ')' compound_list
-                       { $$ = make_pattern_list ($2, $4); }
-       |       newline_list pattern ')' newline_list
-                       { $$ = make_pattern_list ($2, (COMMAND *)NULL); }
-       |       newline_list '(' pattern ')' compound_list
-                       { $$ = make_pattern_list ($3, $5); }
-       |       newline_list '(' pattern ')' newline_list
-                       { $$ = make_pattern_list ($3, (COMMAND *)NULL); }
-       ;
-
-case_clause_sequence:  pattern_list SEMI_SEMI
-       |       case_clause_sequence pattern_list SEMI_SEMI
-                       { $2->next = $1; $$ = $2; }
-       ;
-
-pattern:       WORD
-                       { $$ = make_word_list ($1, (WORD_LIST *)NULL); }
-       |       pattern '|' WORD
-                       { $$ = make_word_list ($3, $1); }
-       ;
-
-/* A list allows leading or trailing newlines and
-   newlines as operators (equivalent to semicolons).
-   It must end with a newline or semicolon.
-   Lists are used within commands such as if, for, while.  */
-
-list:          newline_list list0
-                       {
-                         $$ = $2;
-                         if (need_here_doc)
-                           gather_here_documents ();
-                        }
-       ;
-
-compound_list: list
-       |       newline_list list1
-                       {
-                         $$ = $2;
-                       }
-       ;
-
-list0:         list1 '\n' newline_list
-       |       list1 '&' newline_list
-                       {
-                         if ($1->type == cm_connection)
-                           $$ = connect_async_list ($1, (COMMAND *)NULL, '&');
-                         else
-                           $$ = command_connect ($1, (COMMAND *)NULL, '&');
-                       }
-       |       list1 ';' newline_list
-
-       ;
-
-list1:         list1 AND_AND newline_list list1
-                       { $$ = command_connect ($1, $4, AND_AND); }
-       |       list1 OR_OR newline_list list1
-                       { $$ = command_connect ($1, $4, OR_OR); }
-       |       list1 '&' newline_list list1
-                       {
-                         if ($1->type == cm_connection)
-                           $$ = connect_async_list ($1, $4, '&');
-                         else
-                           $$ = command_connect ($1, $4, '&');
-                       }
-       |       list1 ';' newline_list list1
-                       { $$ = command_connect ($1, $4, ';'); }
-       |       list1 '\n' newline_list list1
-                       { $$ = command_connect ($1, $4, ';'); }
-       |       pipeline_command
-                       { $$ = $1; }
-       ;
-
-list_terminator:'\n'
-       |       ';'
-       |       yacc_EOF
-       ;
-
-newline_list:
-       |       newline_list '\n'
-       ;
-
-/* A simple_list is a list that contains no significant newlines
-   and no leading or trailing newlines.  Newlines are allowed
-   only following operators, where they are not significant.
-
-   This is what an inputunit consists of.  */
-
-simple_list:   simple_list1
-                       {
-                         $$ = $1;
-                         if (need_here_doc)
-                           gather_here_documents ();
-                       }
-       |       simple_list1 '&'
-                       {
-                         if ($1->type == cm_connection)
-                           $$ = connect_async_list ($1, (COMMAND *)NULL, '&');
-                         else
-                           $$ = command_connect ($1, (COMMAND *)NULL, '&');
-                         if (need_here_doc)
-                           gather_here_documents ();
-                       }
-       |       simple_list1 ';'
-                       {
-                         $$ = $1;
-                         if (need_here_doc)
-                           gather_here_documents ();
-                       }
-       ;
-
-simple_list1:  simple_list1 AND_AND newline_list simple_list1
-                       { $$ = command_connect ($1, $4, AND_AND); }
-       |       simple_list1 OR_OR newline_list simple_list1
-                       { $$ = command_connect ($1, $4, OR_OR); }
-       |       simple_list1 '&' simple_list1
-                       {
-                         if ($1->type == cm_connection)
-                           $$ = connect_async_list ($1, $3, '&');
-                         else
-                           $$ = command_connect ($1, $3, '&');
-                       }
-       |       simple_list1 ';' simple_list1
-                       { $$ = command_connect ($1, $3, ';'); }
-
-       |       pipeline_command
-                       { $$ = $1; }
-       ;
-
-pipeline_command: pipeline
-                       { $$ = $1; }
-       |       BANG pipeline
-                       {
-                         $2->flags |= CMD_INVERT_RETURN;
-                         $$ = $2;
-                       }
-       |       TIME pipeline
-                       {
-                         $2->flags |= CMD_TIME_PIPELINE;
-                         $$ = $2;
-                       }
-       |       TIME BANG pipeline
-                       {
-                         $3->flags |= CMD_TIME_PIPELINE|CMD_INVERT_RETURN;
-                         $$ = $3;
-                       }
-       |       BANG TIME pipeline
-                       {
-                         $3->flags |= CMD_TIME_PIPELINE|CMD_INVERT_RETURN;
-                         $$ = $3;
-                       }
-       ;
-
-pipeline:
-               pipeline '|' newline_list pipeline
-                       { $$ = command_connect ($1, $4, '|'); }
-       |       command
-                       { $$ = $1; }
-       ;
-%%
-
-/* Initial size to allocate for tokens, and the
-   amount to grow them by. */
-#define TOKEN_DEFAULT_GROW_SIZE 512
-
-/* Shell meta-characters that, when unquoted, separate words. */
-#define shellmeta(c)   (strchr ("()<>;&|", (c)) != 0)
-#define shellbreak(c)  (strchr ("()<>;&| \t\n", (c)) != 0)
-#define shellquote(c)  ((c) == '"' || (c) == '`' || (c) == '\'')
-
-/* The token currently being read. */
-static int current_token = 0;
-
-/* The last read token, or NULL.  read_token () uses this for context
-   checking. */
-static int last_read_token = 0;
-
-/* The token read prior to last_read_token. */
-static int token_before_that = 0;
-
-/* The token read prior to token_before_that. */
-static int two_tokens_ago;
-
-/* 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.  This
-   is reset by read_token.  If token_to_read == WORD or
-   ASSIGNMENT_WORD, yylval.word should be set to word_desc_to_read. */
-static int token_to_read;
-static WORD_DESC *word_desc_to_read;
-
-/* 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, type, location) makes the function GET the
-   installed function for getting the next character, makes UNGET the
-   installed function for un-getting a character, sets the type of stream
-   (either string or file) from TYPE, and makes LOCATION point to where
-   the input is coming from. */
-
-/* Unconditionally returns end-of-file. */
-int
-return_EOF ()
-{
-  return (EOF);
-}
-
-/* Variable containing the current get and unget functions.
-   See ./input.h for a clearer description. */
-BASH_INPUT bash_input;
-
-/* Set all of the fields in BASH_INPUT to NULL. */
-void
-initialize_bash_input ()
-{
-  bash_input.type = st_none;
-  bash_input.name = (char *)NULL;
-  bash_input.location.file = (FILE *)NULL;
-  bash_input.location.string = (char *)NULL;
-  bash_input.getter = (Function *)NULL;
-  bash_input.ungetter = (Function *)NULL;
-}
-
-/* Set the contents of the current bash input stream from
-   GET, UNGET, TYPE, NAME, and LOCATION. */
-void
-init_yy_io (get, unget, type, name, location)
-     Function *get, *unget;
-     int type;
-     char *name;
-     INPUT_STREAM location;
-{
-  bash_input.type = type;
-  FREE (bash_input.name);
-
-  if (name)
-    bash_input.name = savestring (name);
-  else
-    bash_input.name = (char *)NULL;
-
-  /* XXX */
-#if defined (CRAY)
-  memcpy((char *)&bash_input.location.string, (char *)&location.string, sizeof(location));
-#else
-  bash_input.location = location;
-#endif
-  bash_input.getter = get;
-  bash_input.ungetter = unget;
-}
-
-/* Call this to get the next character of input. */
-int
-yy_getc ()
-{
-  return (*(bash_input.getter)) ();
-}
-
-/* Call this to unget C.  That is, to make C the next character
-   to be read. */
-int
-yy_ungetc (c)
-     int c;
-{
-  return (*(bash_input.ungetter)) (c);
-}
-
-#if defined (BUFFERED_INPUT)
-int
-input_file_descriptor ()
-{
-  switch (bash_input.type)
-    {
-    case st_stream:
-      return (fileno (bash_input.location.file));
-    case st_bstream:
-      return (bash_input.location.buffered_fd);
-    case st_stdin:
-    default:
-      return (fileno (stdin));
-    }
-}
-#endif /* BUFFERED_INPUT */
-
-/* **************************************************************** */
-/*                                                                 */
-/*               Let input be read from readline ().               */
-/*                                                                 */
-/* **************************************************************** */
-
-#if defined (READLINE)
-char *current_readline_prompt = (char *)NULL;
-char *current_readline_line = (char *)NULL;
-int current_readline_line_index = 0;
-
-static int
-yy_readline_get ()
-{
-  SigHandler *old_sigint;
-  int line_len, c;
-
-  if (!current_readline_line)
-    {
-      if (!bash_readline_initialized)
-       initialize_readline ();
-
-#if defined (JOB_CONTROL)
-      if (job_control)
-       give_terminal_to (shell_pgrp);
-#endif /* JOB_CONTROL */
-
-      if (signal_is_ignored (SIGINT) == 0)
-       {
-         old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler);
-         interrupt_immediately++;
-       }
-
-      current_readline_line = readline (current_readline_prompt ?
-                                         current_readline_prompt : "");
-
-      if (signal_is_ignored (SIGINT) == 0)
-       {
-         interrupt_immediately--;
-         set_signal_handler (SIGINT, old_sigint);
-       }
-
-      /* Reset the prompt to the decoded value of prompt_string_pointer. */
-      reset_readline_prompt ();
-
-      if (!current_readline_line)
-       return (EOF);
-
-      current_readline_line_index = 0;
-      line_len = strlen (current_readline_line);
-
-      current_readline_line = xrealloc (current_readline_line, 2 + line_len);
-      current_readline_line[line_len++] = '\n';
-      current_readline_line[line_len] = '\0';
-    }
-
-  if (!current_readline_line[current_readline_line_index])
-    {
-      free (current_readline_line);
-      current_readline_line = (char *)NULL;
-      return (yy_readline_get ());
-    }
-  else
-    {
-      c = current_readline_line[current_readline_line_index++];
-      return (c);
-    }
-}
-
-static int
-yy_readline_unget (c)
-     int c;
-{
-  if (current_readline_line_index && current_readline_line)
-    current_readline_line[--current_readline_line_index] = c;
-  return (c);
-}
-
-void  
-with_input_from_stdin ()
-{
-  INPUT_STREAM location;
-
-  if (bash_input.type != st_stdin && stream_on_stack (st_stdin) == 0)
-    {
-      location.string = current_readline_line;
-      init_yy_io (yy_readline_get, yy_readline_unget,
-                 st_stdin, "readline stdin", location);
-    }
-}
-
-#else  /* !READLINE */
-
-void
-with_input_from_stdin ()
-{
-  with_input_from_stream (stdin, "stdin");
-}
-#endif /* !READLINE */
-
-/* **************************************************************** */
-/*                                                                 */
-/*   Let input come from STRING.  STRING is zero terminated.       */
-/*                                                                 */
-/* **************************************************************** */
-
-static int
-yy_string_get ()
-{
-  register char *string;
-  register int c;
-
-  string = bash_input.location.string;
-  c = EOF;
-
-  /* If the string doesn't exist, or is empty, EOF found. */
-  if (string && *string)
-    {
-      c = *string++;
-      bash_input.location.string = string;
-    }
-  return (c);
-}
-
-static int
-yy_string_unget (c)
-     int c;
-{
-  *(--bash_input.location.string) = c;
-  return (c);
-}
-
-void
-with_input_from_string (string, name)
-     char *string, *name;
-{
-  INPUT_STREAM location;
-
-  location.string = string;
-  init_yy_io (yy_string_get, yy_string_unget, st_string, name, location);
-}
-
-/* **************************************************************** */
-/*                                                                 */
-/*                  Let input come from STREAM.                    */
-/*                                                                 */
-/* **************************************************************** */
-
-static int
-yy_stream_get ()
-{
-  int result = EOF;
-
-  if (bash_input.location.file)
-#if !defined (HAVE_RESTARTABLE_SYSCALLS)
-    result = getc_with_restart (bash_input.location.file);
-#else /* HAVE_RESTARTABLE_SYSCALLS */
-    result = getc (bash_input.location.file);
-#endif /* HAVE_RESTARTABLE_SYSCALLS */
-  return (result);
-}
-
-static int
-yy_stream_unget (c)
-     int c;
-{
-  return (ungetc (c, bash_input.location.file));
-}
-
-void
-with_input_from_stream (stream, name)
-     FILE *stream;
-     char *name;
-{
-  INPUT_STREAM location;
-
-  location.file = stream;
-  init_yy_io (yy_stream_get, yy_stream_unget, st_stream, name, location);
-}
-
-typedef struct stream_saver {
-  struct stream_saver *next;
-  BASH_INPUT bash_input;
-  int line;
-#if defined (BUFFERED_INPUT)
-  BUFFERED_STREAM *bstream;
-#endif /* BUFFERED_INPUT */
-} STREAM_SAVER;
-
-/* The globally known line number. */
-int line_number = 0;
-
-STREAM_SAVER *stream_list = (STREAM_SAVER *)NULL;
-
-void
-push_stream ()
-{
-  STREAM_SAVER *saver = (STREAM_SAVER *)xmalloc (sizeof (STREAM_SAVER));
-
-  xbcopy ((char *)&bash_input, (char *)&(saver->bash_input), sizeof (BASH_INPUT));
-
-#if defined (BUFFERED_INPUT)
-  saver->bstream = (BUFFERED_STREAM *)NULL;
-  /* If we have a buffered stream, clear out buffers[fd]. */
-  if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0)
-    {
-      saver->bstream = buffers[bash_input.location.buffered_fd];
-      buffers[bash_input.location.buffered_fd] = (BUFFERED_STREAM *)NULL;
-    }
-#endif /* BUFFERED_INPUT */
-
-  saver->line = line_number;
-  bash_input.name = (char *)NULL;
-  saver->next = stream_list;
-  stream_list = saver;
-  EOF_Reached = line_number = 0;
-}
-
-void
-pop_stream ()
-{
-  if (!stream_list)
-    EOF_Reached = 1;
-  else
-    {
-      STREAM_SAVER *saver = stream_list;
-
-      EOF_Reached = 0;
-      stream_list = stream_list->next;
-
-      init_yy_io (saver->bash_input.getter,
-                 saver->bash_input.ungetter,
-                 saver->bash_input.type,
-                 saver->bash_input.name,
-                 saver->bash_input.location);
-
-#if defined (BUFFERED_INPUT)
-      /* If we have a buffered stream, restore buffers[fd]. */
-      /* If the input file descriptor was changed while this was on the
-        save stack, update the buffered fd to the new file descriptor and
-        re-establish the buffer <-> bash_input fd correspondence. */
-      if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0)
-        {
-          if (bash_input_fd_changed)
-           {
-             bash_input_fd_changed = 0;
-             if (default_buffered_input >= 0)
-               {
-                 bash_input.location.buffered_fd = default_buffered_input;
-                 saver->bstream->b_fd = default_buffered_input;
-               }
-           }
-         buffers[bash_input.location.buffered_fd] = saver->bstream;
-        }
-#endif /* BUFFERED_INPUT */
-
-      line_number = saver->line;
-
-      FREE (saver->bash_input.name);
-      free (saver);
-    }
-}
-
-/* Return 1 if a stream of type TYPE is saved on the stack. */
-int
-stream_on_stack (type)
-     enum stream_type type;
-{
-  register STREAM_SAVER *s;
-
-  for (s = stream_list; s; s = s->next)
-    if (s->bash_input.type == type)
-      return 1;
-  return 0;
-}
-
-/*
- * This is used to inhibit alias expansion and reserved word recognition
- * inside case statement pattern lists.  A `case statement pattern list' is:
- *
- *     everything between the `in' in a `case word in' and the next ')'
- *     or `esac'
- *     everything between a `;;' and the next `)' or `esac'
- */
-static int in_case_pattern_list = 0;
-
-#if defined (ALIAS)
-
-#define END_OF_ALIAS 0
-
-/*
- * Pseudo-global variables used in implementing token-wise alias expansion.
- */
-
-static int expand_next_token;
-
-/*
- * Pushing and popping strings.  This works together with shell_getc to 
- * implement alias expansion on a per-token basis.
- */
-
-typedef struct string_saver {
-  struct string_saver *next;
-  int expand_alias;  /* Value to set expand_alias to when string is popped. */
-  char *saved_line;
-  alias_t *expander;   /* alias that caused this line to be pushed. */
-  int saved_line_size, saved_line_index, saved_line_terminator;
-} STRING_SAVER;
-
-STRING_SAVER *pushed_string_list = (STRING_SAVER *)NULL;
-
-#if 0
-static void push_expansion ();
-static void pop_expansion ();
-static int token_is_being_expanded ();
-#endif
-
-/*
- * Push the current shell_input_line onto a stack of such lines and make S
- * the current input.  Used when expanding aliases.  EXPAND is used to set
- * the value of expand_next_token when the string is popped, so that the
- * word after the alias in the original line is handled correctly when the
- * alias expands to multiple words.  TOKEN is the token that was expanded
- * into S; it is saved and used to prevent infinite recursive expansion.
- */
-static void
-push_string (s, expand, ap)
-     char *s;
-     int expand;
-     alias_t *ap;
-{
-  STRING_SAVER *temp = (STRING_SAVER *) xmalloc (sizeof (STRING_SAVER));
-
-  temp->expand_alias = expand;
-  temp->saved_line = shell_input_line;
-  temp->saved_line_size = shell_input_line_size;
-  temp->saved_line_index = shell_input_line_index;
-  temp->saved_line_terminator = shell_input_line_terminator;
-  temp->expander = ap;
-  temp->next = pushed_string_list;
-  pushed_string_list = temp;
-
-  ap->flags |= AL_BEINGEXPANDED;
-#if 0
-  push_expansion (ap->name);
-#endif
-
-  shell_input_line = s;
-  shell_input_line_size = strlen (s);
-  shell_input_line_index = 0;
-  shell_input_line_terminator = '\0';
-  expand_next_token = 0;
-}
-
-/*
- * Make the top of the pushed_string stack be the current shell input.
- * Only called when there is something on the stack.  Called from shell_getc
- * when it thinks it has consumed the string generated by an alias expansion
- * and needs to return to the original input line.
- */
-static void
-pop_string ()
-{
-  STRING_SAVER *t;
-
-  FREE (shell_input_line);
-  shell_input_line = pushed_string_list->saved_line;
-  shell_input_line_index = pushed_string_list->saved_line_index;
-  shell_input_line_size = pushed_string_list->saved_line_size;
-  shell_input_line_terminator = pushed_string_list->saved_line_terminator;
-  expand_next_token = pushed_string_list->expand_alias;
-
-  t = pushed_string_list;
-  pushed_string_list = pushed_string_list->next;
-
-  t->expander->flags &= ~AL_BEINGEXPANDED;
-
-  free((char *)t);
-}
-
-static void
-free_string_list ()
-{
-  register STRING_SAVER *t, *t1;
-
-  for (t = pushed_string_list; t; )
-    {
-      t1 = t->next;
-      FREE (t->saved_line);
-      t->expander->flags &= ~AL_BEINGEXPANDED;
-      free ((char *)t);
-      t = t1;
-    }
-  pushed_string_list = (STRING_SAVER *)NULL;
-}
-
-#if 0
-/* XXX - NO LONGER USED - XXX */
-/* This is a stack to save the values of all tokens for which alias
-   expansion has been performed during the current call to read_token ().
-   It is used to prevent alias expansion loops:
-
-      alias foo=bar
-      alias bar=baz
-      alias baz=foo
-
-   Ideally this would be taken care of by push and pop string, but because
-   of when strings are popped the stack will not contain the correct
-   strings to test against.  (The popping is done in shell_getc, so that when
-   the current string is exhausted, shell_getc can simply pop that string off
-   the stack, restore the previous string, and continue with the character
-   following the token whose expansion was originally pushed on the stack.)
-
-   What we really want is a record of all tokens that have been expanded for
-   aliases during the `current' call to read_token().  This does that, at the
-   cost of being somewhat special-purpose (OK, OK vile and unclean). */
-
-typedef struct _exp_saver {
-      struct _exp_saver *next;
-      char *saved_token;
-} EXPANSION_SAVER;
-
-EXPANSION_SAVER *expanded_token_stack = (EXPANSION_SAVER *)NULL;
-
-static void
-push_expansion (s)
-     char *s;
-{
-  EXPANSION_SAVER *t;
-
-  t = (EXPANSION_SAVER *)xmalloc (sizeof (EXPANSION_SAVER));
-  t->saved_token = savestring (s);
-  t->next = expanded_token_stack;
-  expanded_token_stack = t;
-}
-
-/* Return 1 if TOKEN has already been expanded in the current `stack' of
-   expansions.  If it has been expanded already, it will appear as the value
-   of saved_token for some entry in the stack of expansions created for the
-   current token being expanded. */
-static int
-token_has_been_expanded (token)
-     char *token;
-{
-  register EXPANSION_SAVER *t;
-
-  for (t = expanded_token_stack; t; t = t->next)
-    {
-      if (STREQ (token, t->saved_token))
-       return (1);
-    }
-
-  return (0);
-}
-
-static void
-free_expansion_stack ()
-{
-  register EXPANSION_SAVER *t, *t1;
-
-  for (t = expanded_token_stack; t; )
-    {
-      t1 = t->next;
-      free (t->saved_token);
-      free (t);
-      t = t1;
-    }
-  expanded_token_stack = (EXPANSION_SAVER *)NULL;
-}
-
-static void
-pop_expansion ()
-{
-  EXPANSION_SAVER *t;
-
-  if (expanded_token_stack == NULL)
-    return;
-
-  t = expanded_token_stack;
-  expanded_token_stack = t->next;
-
-  free (t->saved_token);
-  free (t);
-}
-#endif /* 0 */
-#endif /* ALIAS */
-
-/* Return a line of text, taken from wherever yylex () reads input.
-   If there is no more input, then we return NULL.  If REMOVE_QUOTED_NEWLINE
-   is non-zero, we remove unquoted \<newline> pairs.  This is used by
-   read_secondary_line to read here documents. */
-static char *
-read_a_line (remove_quoted_newline)
-     int remove_quoted_newline;
-{
-  static char *line_buffer = (char *)NULL;
-  static int buffer_size = 0;
-  int indx = 0, c, peekc, pass_next;
-
-  pass_next = 0;
-  while (1)
-    {
-      c = yy_getc ();
-
-      /* Allow immediate exit if interrupted during input. */
-      QUIT;
-
-      if (c == 0)
-       continue;
-
-      /* If there is no more input, then we return NULL. */
-      if (c == EOF)
-       {
-         if (indx == 0)
-           return ((char *)NULL);
-         c = '\n';
-       }
-
-      /* `+2' in case the final character in the buffer is a newline. */
-      if (indx + 2 > buffer_size)
-       line_buffer = xrealloc (line_buffer, buffer_size += 128);
-
-      /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a
-        here document with an unquoted delimiter.  In this case,
-        the line will be expanded as if it were in double quotes.
-        We allow a backslash to escape the next character, but we
-        need to treat the backslash specially only if a backslash
-        quoting a backslash-newline pair appears in the line. */
-      if (pass_next)
-        {
-         line_buffer[indx++] = c;
-         pass_next = 0;
-        }
-      else if (c == '\\' && remove_quoted_newline)
-       {
-         peekc = yy_getc ();
-         if (peekc == '\n')
-           continue;   /* Make the unquoted \<newline> pair disappear. */
-         else
-           {
-             yy_ungetc (peekc);
-             pass_next = 1;
-             line_buffer[indx++] = c;          /* Preserve the backslash. */
-           }
-       }
-      else
-       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.  This is used to read the lines of a here
-   document.  REMOVE_QUOTED_NEWLINE is non-zero if we should remove
-   newlines quoted with backslashes while reading the line.  It is
-   non-zero unless the delimiter of the here document was quoted. */
-char *
-read_secondary_line (remove_quoted_newline)
-     int remove_quoted_newline;
-{
-  prompt_string_pointer = &ps2_prompt;
-  prompt_again ();
-  return (read_a_line (remove_quoted_newline));
-}
-
-/* **************************************************************** */
-/*                                                                 */
-/*                             YYLEX ()                            */
-/*                                                                 */
-/* **************************************************************** */
-
-/* Reserved words.  These are only recognized as the first word of a
-   command. */
-STRING_INT_ALIST word_token_alist[] = {
-  { "if", IF },
-  { "then", THEN },
-  { "else", ELSE },
-  { "elif", ELIF },
-  { "fi", FI },
-  { "case", CASE },
-  { "esac", ESAC },
-  { "for", FOR },
-#if defined (SELECT_COMMAND)
-  { "select", SELECT },
-#endif
-  { "while", WHILE },
-  { "until", UNTIL },
-  { "do", DO },
-  { "done", DONE },
-  { "in", IN },
-  { "function", FUNCTION },
-#if defined (COMMAND_TIMING)
-  { "time", TIME },
-#endif
-  { "{", '{' },
-  { "}", '}' },
-  { "!", BANG },
-  { (char *)NULL, 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.  This is called by read_token when the shell is
-   processing normal command input. */
-
-static int
-shell_getc (remove_quoted_newline)
-     int remove_quoted_newline;
-{
-  register int i;
-  int c;
-  static int mustpop = 0;
-
-  QUIT;
-
-#if defined (ALIAS)
-  /* If shell_input_line[shell_input_line_index] == 0, but there is
-     something on the pushed list of strings, then we don't want to go
-     off and get another line.  We let the code down below handle it. */
-
-  if (!shell_input_line || ((!shell_input_line[shell_input_line_index]) &&
-                           (pushed_string_list == (STRING_SAVER *)NULL)))
-#else /* !ALIAS */
-  if (!shell_input_line || !shell_input_line[shell_input_line_index])
-#endif /* !ALIAS */
-    {
-      line_number++;
-
-    restart_read:
-
-      /* Allow immediate exit if interrupted during input. */
-      QUIT;
-
-      i = 0;
-      shell_input_line_terminator = 0;
-
-#if defined (JOB_CONTROL)
-      /* This can cause a problem when reading a command as the result
-        of a trap, when the trap is called from flush_child.  This call
-        had better not cause jobs to disappear from the job table in
-        that case, or we will have big trouble. */
-      notify_and_cleanup ();
-#else /* !JOB_CONTROL */
-      cleanup_dead_jobs ();
-#endif /* !JOB_CONTROL */
-
-#if defined (READLINE)
-      if (interactive && bash_input.type != st_string && no_line_editing)
-#else
-      if (interactive && bash_input.type != st_string)
-#endif
-       print_prompt ();
-
-      if (bash_input.type == st_stream)
-       clearerr (stdin);
-
-      while (c = yy_getc ())
-       {
-         /* Allow immediate exit if interrupted during input. */
-         QUIT;
-
-         if (i + 2 > shell_input_line_size)
-           {
-             shell_input_line_size += 256;
-             shell_input_line = xrealloc (shell_input_line, shell_input_line_size);
-           }
-
-         if (c == EOF)
-           {
-             if (bash_input.type == st_stream)
-               clearerr (stdin);
-
-             if (i == 0)
-               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 defined (HISTORY)
-#if 0
-      if (interactive && shell_input_line && shell_input_line[0])
-#else
-      if (remember_on_history && shell_input_line && shell_input_line[0])
-#endif
-       {
-         char *expansions;
-
-         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;
-         if (!shell_input_line_len)
-           current_command_line_count--;
-
-         /* 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;
-       }
-#endif /* HISTORY */
-
-      if (shell_input_line)
-       {
-         /* Lines that signify the end of the shell's input should not be
-            echoed. */
-         if (echo_input_at_read && (shell_input_line[0] ||
-                                    shell_input_line_terminator != EOF))
-           fprintf (stderr, "%s\n", shell_input_line);
-       }
-      else
-       {
-         shell_input_line_size = 0;
-         prompt_string_pointer = &current_prompt_string;
-         prompt_again ();
-         goto restart_read;
-       }
-
-      /* 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)
-       {
-         if (shell_input_line_len + 3 > shell_input_line_size)
-           shell_input_line = xrealloc (shell_input_line,
-                                       1 + (shell_input_line_size += 2));
-
-         shell_input_line[shell_input_line_len] = '\n';
-         shell_input_line[shell_input_line_len + 1] = '\0';
-       }
-    }
-  
-  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 ();
-       line_number++;
-       goto restart_read;
-    }
-
-#if defined (ALIAS)
-  /* If C is NULL, we have reached the end of the current input string.  If
-     pushed_string_list is non-empty, it's time to pop to the previous string
-     because we have fully consumed the result of the last alias expansion.
-     Do it transparently; just return the next character of the string popped
-     to. */
-  if (!c && (pushed_string_list != (STRING_SAVER *)NULL))
-    {
-      if (mustpop)
-        {
-          pop_string ();
-          c = shell_input_line[shell_input_line_index];
-         if (c)
-           shell_input_line_index++;
-         mustpop--;
-        }
-      else
-        {
-          mustpop++;
-          c = ' ';
-        }
-    }
-#endif /* ALIAS */
-
-  if (!c && shell_input_line_terminator == EOF)
-    return ((shell_input_line_index != 0) ? '\n' : EOF);
-
-  return ((unsigned char)c);
-}
-
-/* Put C back into the input for the shell. */
-static void
-shell_ungetc (c)
-     int c;
-{
-  if (shell_input_line && shell_input_line_index)
-    shell_input_line[--shell_input_line_index] = c;
-}
-
-static void
-shell_ungetchar ()
-{
-  if (shell_input_line && shell_input_line_index)
-    shell_input_line_index--;
-}
-
-/* Discard input until CHARACTER is seen, then push that character back
-   onto the input stream. */
-static void
-discard_until (character)
-     int character;
-{
-  int c;
-
-  while ((c = shell_getc (0)) != EOF && c != character)
-    ;
-
-  if (c != EOF)
-    shell_ungetc (c);
-}
-
-void
-execute_prompt_command (command)
-     char *command;
-{
-  Function *temp_last, *temp_this;
-  char *last_lastarg;
-  int temp_exit_value, temp_eof_encountered;
-
-  temp_last = last_shell_builtin;
-  temp_this = this_shell_builtin;
-  temp_exit_value = last_command_exit_value;
-  temp_eof_encountered = eof_encountered;
-  last_lastarg = get_string_value ("_");
-  if (last_lastarg)
-    last_lastarg = savestring (last_lastarg);
-
-  parse_and_execute (savestring (command), "PROMPT_COMMAND", 0);
-
-  last_shell_builtin = temp_last;
-  this_shell_builtin = temp_this;
-  last_command_exit_value = temp_exit_value;
-  eof_encountered = temp_eof_encountered;
-
-  bind_variable ("_", last_lastarg);
-  FREE (last_lastarg);
-
-  if (token_to_read == '\n')   /* reset_parser was called */
-    token_to_read = 0;
-}
-
-/* Place to remember the token.  We try to keep the buffer
-   at a reasonable size, but it can grow. */
-static char *token = (char *)NULL;
-
-/* Current size of the token buffer. */
-static 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.  */
-static int
-yylex ()
-{
-  if (interactive && (current_token == 0 || current_token == '\n'))
-    {
-      /* Before we print a prompt, we might have to check mailboxes.
-        We do this only if it is time to do so. Notice that only here
-        is the mail alarm reset; nothing takes place in check_mail ()
-        except the checking of mail.  Please don't change this. */
-      if (prompt_is_ps1 && time_to_check_mail ())
-       {
-         check_mail ();
-         reset_mail_timer ();
-       }
-
-      /* Avoid printing a prompt if we're not going to read anything, e.g.
-        after resetting the parser with read_token (RESET). */
-      if (token_to_read == 0 && interactive)
-       prompt_again ();
-    }
-
-  two_tokens_ago = token_before_that;
-  token_before_that = last_read_token;
-  last_read_token = current_token;
-  current_token = read_token (READ);
-  return (current_token);
-}
-
-/* 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;
-
-/* DELIMITERS is a stack of the nested delimiters that we have
-   encountered so far. */
-static char *delimiters = (char *)NULL;
-
-/* Offset into the stack of delimiters. */
-int delimiter_depth = 0;
-
-/* How many slots are allocated to DELIMITERS. */
-static int delimiter_space = 0;
-  
-void
-gather_here_documents ()
-{
-  int r = 0;
-  while (need_here_doc)
-    {
-      make_here_document (redir_stack[r++]);
-      need_here_doc--;
-    }
-}
-
-/* Macro for accessing the top delimiter on the stack.  Returns the
-   delimiter or zero if none. */
-#define current_delimiter() \
-  (delimiter_depth ? delimiters[delimiter_depth - 1] : 0)
-
-#define push_delimiter(character) \
-  do \
-    { \
-      if (delimiter_depth + 2 > delimiter_space) \
-       delimiters = xrealloc \
-         (delimiters, (delimiter_space += 10) * sizeof (char)); \
-      delimiters[delimiter_depth] = character; \
-      delimiter_depth++; \
-    } \
-  while (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;
-
-#define command_token_position(token) \
-  (((token) == ASSIGNMENT_WORD) || \
-   ((token) != SEMI_SEMI && reserved_word_acceptable(token)))
-
-#define assignment_acceptable(token) command_token_position(token) && \
-                                       (in_case_pattern_list == 0)
-
-/* Check to see if TOKEN is a reserved word and return the token
-   value if it is. */
-#define CHECK_FOR_RESERVED_WORD(tok) \
-  do { \
-    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 (tok, 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++; \
-             return (word_token_alist[i].token); \
-           } \
-      } \
-  } while (0)
-
-#if defined (ALIAS)
-
-    /* OK, we have a token.  Let's try to alias expand it, if (and only if)
-       it's eligible.
-
-       It is eligible for expansion if the shell is in interactive mode, and
-       the token is unquoted and the last token read was a command
-       separator (or expand_next_token is set), and we are currently
-       processing an alias (pushed_string_list is non-empty) and this
-       token is not the same as the current or any previously
-       processed alias.
-
-       Special cases that disqualify:
-        In a pattern list in a case statement (in_case_pattern_list). */
-static int
-alias_expand_token (token)
-     char *token;
-{
-  char *expanded;
-  int c, expand_next;
-  alias_t *ap;
-
-  if (expand_next_token || command_token_position (last_read_token) && !in_case_pattern_list)
-    {
-      ap = find_alias (token);
-
-#if 0
-      /* Currently expanding this token. */
-      if ((expanded_token_stack && token_has_been_expanded (token)))
-       return (NO_EXPANSION);
-#else
-      if (ap && (ap->flags & AL_BEINGEXPANDED))
-       return (NO_EXPANSION);
-#endif
-
-      expanded = ap ? savestring (ap->value) : (char *)NULL;
-      if (expanded)
-       {
-         push_string (expanded, ap->flags & AL_EXPANDNEXT, ap);
-         return (RE_READ_TOKEN);
-       }
-      else
-       /* This is an eligible token that does not have an expansion. */
-       return (NO_EXPANSION);
-    }
-  return (NO_EXPANSION);
-}
-#endif /* ALIAS */
-
-/* Handle special cases of token recognition:
-       IN is recognized if the last token was WORD and the token
-       before that was FOR or CASE or SELECT.
-
-       DO is recognized if the last token was WORD and the token
-       before that was FOR or SELECT.
-
-       ESAC is recognized if the last token caused `allow_esac_as_next'
-       to be set
-
-       `{' is recognized if the last token as WORD and the token
-       before that was FUNCTION.
-
-       `}' is recognized if there is an unclosed `{' prsent.
-*/
-
-static int
-special_case_tokens (token)
-     char *token;
-{
-  if ((last_read_token == WORD) &&
-#if defined (SELECT_COMMAND)
-      ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) &&
-#else
-      ((token_before_that == FOR) || (token_before_that == CASE)) &&
-#endif
-      (token[0] == 'i' && token[1] == 'n' && !token[2]))
-    {
-      if (token_before_that == CASE)
-       {
-         in_case_pattern_list = 1;
-         allow_esac_as_next++;
-       }
-      return (IN);
-    }
-
-  if (last_read_token == WORD &&
-#if defined (SELECT_COMMAND)
-      (token_before_that == FOR || token_before_that == SELECT) &&
-#else
-      (token_before_that == FOR) &&
-#endif
-      (token[0] == 'd' && token[1] == 'o' && !token[2]))
-    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);
-       }
-    }
-
-  if (allow_open_brace)
-    {
-      allow_open_brace = 0;
-      if (token[0] == '{' && !token[1])
-       {
-         open_brace_awaiting_satisfaction++;
-         return ('{');
-       }
-    }
-
-  if (open_brace_awaiting_satisfaction && token[0] == '}' && !token[1])
-    {
-      open_brace_awaiting_satisfaction--;
-      return ('}');
-    }
-
-  return (-1);
-}
-
-/* Called from shell.c when Control-C is typed at top level.  Or
-   by the error rule at top level. */
-void
-reset_parser ()
-{
-  delimiter_depth = 0; /* No delimiters found so far. */
-  open_brace_awaiting_satisfaction = 0;
-  in_case_pattern_list = 0;
-
-#if defined (ALIAS)
-  if (pushed_string_list)
-    {
-      free_string_list ();
-      pushed_string_list = (STRING_SAVER *)NULL;
-    }
-
-#if 0
-  if (expanded_token_stack)
-    {
-      free_expansion_stack ();
-      expanded_token_stack = (EXPANSION_SAVER *)NULL;
-    }
-#endif
-
-  expand_next_token = 0;
-#endif /* ALIAS */
-
-  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 = '\n';
-  token_to_read = '\n';
-}
-
-/* Read the next token.  Command can be READ (normal operation) or 
-   RESET (to normalize state). */
-static int
-read_token (command)
-     int command;
-{
-  int character;               /* Current character. */
-  int peek_char;               /* Temporary look-ahead character. */
-  int result;                  /* The thing to return. */
-
-  if (command == RESET)
-    {
-      reset_parser ();
-      return ('\n');
-    }
-
-  if (token_to_read)
-    {
-      result = token_to_read;
-      if (token_to_read == WORD || token_to_read == ASSIGNMENT_WORD)
-       yylval.word = word_desc_to_read;
-      token_to_read = 0;
-      return (result);
-    }
-
-#if defined (ALIAS)
-  /* If we hit read_token () and there are no saved strings on the
-     pushed_string_list, then we are no longer currently expanding a
-     token.  This can't be done in pop_stream, because pop_stream
-     may pop the stream before the current token has finished being
-     completely expanded (consider what happens when we alias foo to foo,
-     and then try to expand it). */
-#if 0
-  if (!pushed_string_list && expanded_token_stack)
-    {
-      free_expansion_stack ();
-      expanded_token_stack = (EXPANSION_SAVER *)NULL;
-    }
-#endif
-
-  /* This is a place to jump back to once we have successfully expanded a
-     token with an alias and pushed the string with push_string () */
- re_read_token:
-#endif /* ALIAS */
-
-  /* Read a single word from input.  Start by skipping blanks. */
-  while ((character = shell_getc (1)) != EOF && whitespace (character))
-    ;
-
-  if (character == EOF)
-    {
-      EOF_Reached = 1;
-      return (yacc_EOF);
-    }
-
-  if (character == '#' && (!interactive || interactive_comments))
-    {
-      /* A comment.  Discard until EOL or EOF, and then return a newline. */
-      discard_until ('\n');
-      shell_getc (0);
-      character = '\n';        /* this will take the next if statement and return. */
-    }
-
-  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)
-       gather_here_documents ();
-
-#if defined (ALIAS)
-      expand_next_token = 0;
-#endif /* ALIAS */
-
-      return (character);
-    }
-
-  /* Shell meta-characters. */
-  if (shellmeta (character))
-    {
-#if defined (ALIAS)
-      /* Turn off alias tokenization iff this character sequence would
-        not leave us ready to read a command. */
-      if (character == '<' || character == '>')
-       expand_next_token = 0;
-#endif /* ALIAS */
-
-      peek_char = shell_getc (1);
-      if (character == peek_char)
-       {
-         switch (character)
-           {
-           case '<':
-             /* If '<' then we could be at "<<" or at "<<-".  We have to
-                look ahead one more character. */
-             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;
-#if defined (ALIAS)
-             expand_next_token = 0;
-#endif /* ALIAS */
-             return (SEMI_SEMI);
-
-           case '&':
-             return (AND_AND);
-
-           case '|':
-             return (OR_OR);
-           }
-       }
-      else if (character == '<' && peek_char == '&')
-       return (LESS_AND);
-      else if (character == '>' && peek_char == '&')
-       return (GREATER_AND);
-      else if (character == '<' && peek_char == '>')
-       return (LESS_GREATER);
-      else if (character == '>' && peek_char == '|')
-       return (GREATER_BAR);
-      else 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 defined (ALIAS)
-         expand_next_token = 0;
-#endif /* ALIAS */
-       }
-
-      if (in_case_pattern_list && character == ')')
-       in_case_pattern_list = 0;
-
-#if defined (PROCESS_SUBSTITUTION)
-      /* Check for the constructs which introduce process substitution.
-        Shells running in `posix mode' don't do process substitution. */
-      if (posixly_correct ||
-         ((character != '>' && character != '<') || peek_char != '('))
-#endif /* PROCESS_SUBSTITUTION */
-       return (character);
-    }
-
-  /* Hack <&- (close stdin) case. */
-  if (character == '-' && (last_read_token == LESS_AND || last_read_token == 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. */
-  result = read_token_word (character);
-#if defined (ALIAS)
-  if (result == RE_READ_TOKEN)
-    goto re_read_token;
-#endif
-  return result;
-}
-
-static int
-read_token_word (character)
-     int character;
-{
-  /* The value for YYLVAL when a WORD is read. */
-  WORD_DESC *the_word;
-
-  /* Index into the token that we are building. */
-  int token_index;
-
-  /* ALL_DIGITS becomes zero when we see a non-digit. */
-  int all_digits;
-
-  /* DOLLAR_PRESENT becomes non-zero if we see a `$'. */
-  int dollar_present;
-
-  /* QUOTED becomes non-zero if we see one of ("), ('), (`), or (\). */
-  int quoted;
-
-  /* Non-zero means to ignore the value of the next character, and just
-     to add it no matter what. */
- int pass_next_character;
-
-  /* Non-zero means parsing a dollar-paren construct.  It is the count of
-     un-quoted close parens we need to see. */
-  int dollar_paren_level;
-
-  /* Another level variable.  This one is for dollar_parens inside of
-     double-quotes. */
-  int delimited_paren_level;
-
-  /* Non-zero means parsing a dollar-bracket construct ($[...]).  It is
-     the count of un-quoted `]' characters we need to see. */
-  int dollar_bracket_level;
-
-  /* Non-zero means parsing a `${' construct.  It is the count of
-     un-quoted `}' we need to see. */
-  int dollar_brace_level;
-
-  /* A level variable for parsing '${ ... }' constructs inside of double
-     quotes. */
-  int delimited_brace_level;
-
-  /* A boolean variable denoting whether or not we are currently parsing
-     a double-quoted string embedded in a $( ) or ${ } construct. */
-  int embedded_quoted_string;
-
-  /* The current delimiting character. */
-  int cd;
-  int result, peek_char;
-
-  if (token_buffer_size < TOKEN_DEFAULT_GROW_SIZE)
-    {
-      FREE (token);
-      token = xmalloc (token_buffer_size = TOKEN_DEFAULT_GROW_SIZE);
-    }
-
-  token_index = 0;
-  all_digits = digit (character);
-  dollar_present = quoted = 0;
-  embedded_quoted_string = pass_next_character = 0;
-  dollar_paren_level = delimited_paren_level = 0;
-  dollar_brace_level = delimited_brace_level = dollar_bracket_level = 0;
-
-  for (;;)
-    {
-      if (character == EOF)
-       goto got_token;
-
-      if (pass_next_character)
-       {
-         pass_next_character = 0;
-         goto got_character;
-       }
-
-      cd = current_delimiter ();
-
-      if (cd && character == '\\' && cd != '\'')
-       {
-         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_depth == 0 || cd != '\''))
-       {
-         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 (cd == 0 || cd == '`' ||
-                 (cd == '"' && 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_depth && (cd == '"') && (character == '`'))
-       {
-         push_delimiter (character);
-         goto got_character;
-       }
-
-      /* cd = current_delimiter (); */         /* XXX - may not need */
-      if (delimiter_depth)
-       {
-         if (character == cd)
-           {
-             /* If we see a double quote while parsing a double-quoted
-                $( ) or ${ }, and we have not seen ) or }, respectively,
-                 note that we are in the middle of reading an embedded
-                 quoted string. */
-             if ((delimited_paren_level || delimited_brace_level) &&
-                 (character == '"'))
-               {
-                 embedded_quoted_string = 1 - embedded_quoted_string;
-                 goto got_character;
-               }
-               
-             delimiter_depth--;
-             goto got_character;
-           }
-       }
-
-      /* If the delimiter character is not single quote, parse some of
-        the shell expansions that must be read as a single word. */
-      if (cd != '\'')
-       {
-#if defined (PROCESS_SUBSTITUTION)
-         if (character == '$' || character == '<' || character == '>')
-#else
-         if (character == '$')
-#endif /* !PROCESS_SUBSTITUTION */
-           {
-             /* If we're in the middle of parsing a $( ) or ${ }
-                construct with an embedded quoted string, don't
-                bother looking at this character any further. */
-             if (embedded_quoted_string)
-               goto got_character;
-
-             peek_char = shell_getc (1);
-             shell_ungetc (peek_char);
-             if (peek_char == '(')
-               {
-                 if (!delimiter_depth)
-                   dollar_paren_level++;
-                 else
-                   delimited_paren_level++;
-
-                 pass_next_character++;
-                 goto got_character;
-               }
-             else if (peek_char == '[' && character == '$')
-               {
-                 if (!delimiter_depth)
-                   dollar_bracket_level++;
-
-                 pass_next_character++;
-                 goto got_character;
-               }
-             /* This handles ${...} constructs. */
-             else if (peek_char == '{' && character == '$')
-               {
-                 if (!delimiter_depth)
-                   dollar_brace_level++;
-                 else
-                   delimited_brace_level++;
-
-                 pass_next_character++;
-                 goto got_character;
-               }
-           }
-
-#if defined (ARRAY_VARS)
-         if (character == '=')
-           {
-             if (embedded_quoted_string)
-               goto got_character;
-
-             peek_char = shell_getc (1);
-             shell_ungetc (peek_char);
-             if (peek_char == '(')
-               {
-                 if (!delimiter_depth)
-                   dollar_paren_level++;
-                 else
-                   delimited_paren_level++;
-
-                 pass_next_character++;
-                 goto got_character;
-               }
-           }
-#endif
-
-/* Generally, delim_xxx counts occurrences of xxx inside double quotes, while
-   dollar_xxx counts unquoted occurrences.  These macros take care of
-   incrementing and decrementing both appropriately. */
-#define INC_DELIM(delim, dol) \
-  do \
-    { \
-      if (delimiter_depth && delim) \
-       delim++; \
-      if (!delimiter_depth && dol) \
-       dol++; \
-    } \
-  while (0)
-
-#define DEC_DELIM(delim, dol) \
-  do \
-    { \
-      if (delimiter_depth && delim) \
-       delim--; \
-      if (!delimiter_depth && dol) \
-       { \
-         dol--; \
-         goto got_character; \
-       } \
-    } \
-  while (0)
-
-         /* 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 == '(' && !embedded_quoted_string)
-           INC_DELIM (delimited_paren_level, dollar_paren_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. */
-         else if (character == ')' && !embedded_quoted_string)
-           DEC_DELIM (delimited_paren_level, dollar_paren_level);
-
-         else if (character == '[' && !delimiter_depth && dollar_bracket_level)
-           dollar_bracket_level++;
-
-         else if (character == ']' && !delimiter_depth && dollar_bracket_level)
-           {
-             dollar_bracket_level--;
-             goto got_character;
-           }
-
-         else if (character == '{' && embedded_quoted_string == 0)
-           INC_DELIM (delimited_brace_level, dollar_brace_level);
-
-         else if (character == '}' && embedded_quoted_string == 0)
-           DEC_DELIM (delimited_brace_level, dollar_brace_level);
-       }
-
-      /* When not parsing a multi-character word construct, shell meta-
-        characters break words. */
-      if (!dollar_paren_level && !dollar_bracket_level &&
-         !dollar_brace_level && !delimiter_depth &&
-         shellbreak (character))
-       {
-         shell_ungetc (character);
-         goto got_token;
-       }
-
-      /* If we see a delimiter, remember it. */
-      if (!delimiter_depth && shellquote (character))
-       {
-         push_delimiter (character);
-         quoted = 1;
-         goto got_character;
-       }
-
-#if 0
-      all_digits = all_digits ? digit (character) : 0;
-#else
-      all_digits &= digit (character);
-#endif
-      dollar_present |= character == '$';
-
-    got_character:
-
-      if (character == CTLESC /* || character == CTLNUL */)
-       token[token_index++] = CTLESC;
-
-      token[token_index++] = character;
-
-      if (token_index == (token_buffer_size - 1))
-       {
-         token_buffer_size += TOKEN_DEFAULT_GROW_SIZE;
-         token = xrealloc (token, token_buffer_size);
-       }
-    next_character:
-      if (character == '\n' && interactive && bash_input.type == st_stream)
-       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). */
-      cd = current_delimiter ();
-      character = shell_getc (cd != '\'' && !pass_next_character);
-    }  /* end for (;;) */
-
-got_token:
-
-  token[token_index] = '\0';
-
-  /* EOF while reading a multi-char word construct generates an error. */      
-  if ((delimiter_depth || dollar_paren_level || dollar_bracket_level) &&
-      character == EOF)
-    {
-      char reporter = '\0';
-
-      if (delimiter_depth == 0)
-       {
-         if (dollar_paren_level)
-           reporter = ')';
-         else if (dollar_bracket_level)
-           reporter = ']';
-       }
-
-      if (reporter == 0)
-       reporter = current_delimiter ();
-
-      report_error ("unexpected EOF while looking for `%c'", reporter);
-      return (-1);
-    }
-
-  /* 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 (all_digits && (character == '<' || character == '>' ||
-                   last_read_token == LESS_AND ||
-                   last_read_token == GREATER_AND))
-      {
-       yylval.number = atoi (token);
-       return (NUMBER);
-      }
-
-  /* Check for special case tokens. */
-  result = special_case_tokens (token);
-  if (result >= 0)
-    return result;
-
-#if defined (ALIAS)
-  /* Posix.2 does not allow reserved words to be aliased, so check for all
-     of them, including special cases, before expanding the current token
-     as an alias. */
-  if (posixly_correct)
-    CHECK_FOR_RESERVED_WORD (token);
-
-  /* Aliases are expanded in interactive shells only, and quoting inhibits
-     alias expansion. */
-  if (interactive_shell && quoted == 0)
-    {
-      result = alias_expand_token (token);
-      if (result == RE_READ_TOKEN)
-       return (RE_READ_TOKEN);
-      else if (result == NO_EXPANSION)
-       expand_next_token = 0;
-    }
-
-  /* If not in Posix.2 mode, check for reserved words after alias
-     expansion. */
-  if (!posixly_correct)
-#endif
-    CHECK_FOR_RESERVED_WORD (token);
-
-  the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC));
-  the_word->word = xmalloc (1 + token_index);
-  the_word->flags = 0;
-  strcpy (the_word->word, token);
-  if (dollar_present)
-    the_word->flags |= W_HASDOLLAR;
-  if (quoted)
-    the_word->flags |= W_QUOTED;
-  if (assignment (token))
-    the_word->flags |= W_ASSIGNMENT;
-
-  yylval.word = the_word;
-
-  /* A word is an assignment if it appears at the beginning of a
-     simple command, or after another assignment word.  This is
-     context-dependent, so it cannot be handled in the grammar. */
-  result = (assignment_acceptable (last_read_token) &&
-           (the_word->flags & W_ASSIGNMENT)) ? ASSIGNMENT_WORD : WORD;
-
-  if (last_read_token == FUNCTION)
-    allow_open_brace = 1;
-
-  return (result);
-}
-
-/* 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 (token == '\n' || token == ';' || token == '(' || token == ')' ||
-      token == '|' || token == '&' || token == '{' ||
-      token == '}' ||                  /* XXX */
-      token == AND_AND ||
-      token == BANG ||
-      token == TIME ||
-      token == DO ||
-      token == ELIF ||
-      token == ELSE ||
-      token == FI ||
-      token == IF ||
-      token == OR_OR ||
-      token == SEMI_SEMI ||
-      token == THEN ||
-      token == UNTIL ||
-      token == WHILE ||
-      token == DONE ||         /* XXX these two are experimental */
-      token == ESAC ||
-      token == 0)
-    return (1);
-  else
-    return (0);
-}
-
-/* Return the index of TOKEN in the alist of reserved words, or -1 if
-   TOKEN is not a shell reserved word. */
-int
-find_reserved_word (token)
-     char *token;
-{
-  int i;
-  for (i = 0; word_token_alist[i].word; i++)
-    if (STREQ (token, word_token_alist[i].word))
-      return i;
-  return -1;
-}
-
-#if defined (READLINE)
-/* Called after each time readline is called.  This insures that whatever
-   the new prompt string is gets propagated to readline's local prompt
-   variable. */
-static void
-reset_readline_prompt ()
-{
-  char *temp_prompt;
-
-  if (prompt_string_pointer)
-    {
-      temp_prompt = (*prompt_string_pointer)
-                       ? decode_prompt_string (*prompt_string_pointer)
-                       : (char *)NULL;
-
-      if (temp_prompt == 0)
-        {
-          temp_prompt = xmalloc (1);
-          temp_prompt[0] = '\0';
-        }
-
-      FREE (current_readline_prompt);
-      current_readline_prompt = temp_prompt;
-    }
-}
-#endif /* READLINE */
-
-#if defined (HISTORY)
-/* A list of tokens which can be followed by newlines, but not by
-   semi-colons.  When concatenating multiple lines of history, the
-   newline separator for such tokens is replaced with a space. */
-static int no_semi_successors[] = {
-  '\n', '{', '(', ')', ';', '&', '|',
-  CASE, DO, ELSE, IF, SEMI_SEMI, THEN, UNTIL, WHILE, AND_AND, OR_OR,
-  0
-};
-
-/* If we are not within a delimited expression, try to be smart
-   about which separators can be semi-colons and which must be
-   newlines.  Returns the string that should be added into the
-   history entry. */
-char *
-history_delimiting_chars ()
-{
-  if (delimiter_depth == 0)
-    {
-      register int i;
-
-      /* First, handle some special cases. */
-      /*(*/
-      /* If we just read `()', assume it's a function definition, and don't
-        add a semicolon.  If the token before the `)' was not `(', assume
-        it's a parenthesized command and add the semicolon. */
-      /*)(*/
-      if (token_before_that == ')')
-       return ((two_tokens_ago == '(') ? " " : "; "); /*)*/
-
-      for (i = 0; no_semi_successors[i]; i++)
-       {
-         if (token_before_that == no_semi_successors[i])
-           return (" ");
-       }
-      return ("; ");
-    }
-  else
-    return ("\n");
-}
-#endif /* HISTORY */
-
-/* Issue a prompt, or prepare to issue a prompt when the next character
-   is read. */
-static void
-prompt_again ()
-{
-  char *temp_prompt;
-
-  if (!interactive)    /* XXX */
-    return;
-
-  ps1_prompt = get_string_value ("PS1");
-  ps2_prompt = get_string_value ("PS2");
-
-  if (!prompt_string_pointer)
-    prompt_string_pointer = &ps1_prompt;
-
-  temp_prompt = *prompt_string_pointer
-                       ? decode_prompt_string (*prompt_string_pointer)
-                       : (char *)NULL;
-
-  if (temp_prompt == 0)
-    {
-      temp_prompt = xmalloc (1);
-      temp_prompt[0] = '\0';
-    }
-
-  current_prompt_string = *prompt_string_pointer;
-  prompt_string_pointer = &ps2_prompt;
-
-#if defined (READLINE)
-  if (!no_line_editing)
-    {
-      FREE (current_readline_prompt);
-      current_readline_prompt = temp_prompt;
-    }
-  else
-#endif /* READLINE */
-    {
-      FREE (current_decoded_prompt);
-      current_decoded_prompt = temp_prompt;
-    }
-}
-
-static void
-print_prompt ()
-{
-  fprintf (stderr, "%s", current_decoded_prompt);
-  fflush (stderr);
-}
-
-/* Return a string which will be printed as a prompt.  The string
-   may contain special characters which are decoded as follows:
-   
-       \a      bell (ascii 07)
-       \e      escape (ascii 033)
-       \d      the date in Day Mon Date format
-       \h      the hostname
-       \H      the hostname up to the first `.'
-       \n      CRLF
-       \s      the name of the shell
-       \t      the time in 24-hour hh:mm:ss format
-       \T      the time in 12-hour hh:mm:ss format
-       \@      the time in 12-hour am/pm format
-       \w      the current working directory
-       \W      the last element of $PWD
-       \u      your username
-       \#      the command number of this command
-       \!      the history number of this command
-       \$      a $ or a # if you are root
-       \nnn    character code nnn in octal
-       \\      a backslash
-       \[      begin a sequence of non-printing chars
-       \]      end a sequence of non-printing chars
-*/
-#define PROMPT_GROWTH 50
-char *
-decode_prompt_string (string)
-     char *string;
-{
-  WORD_LIST *list;
-  char *result, *t;
-#if defined (PROMPT_STRING_DECODE)
-  int result_size, result_index;
-  int c, n;
-  char *temp, octal_string[4];
-  time_t the_time;
-
-  result = xmalloc (result_size = PROMPT_GROWTH);
-  result[result_index = 0] = 0;
-  temp = (char *)NULL;
-
-  while (c = *string++)
-    {
-      if (posixly_correct && c == '!')
-       {
-         if (*string == '!')
-           {
-             temp = savestring ("!");
-             goto add_string;
-           }
-         else
-           {
-#if !defined (HISTORY)
-               temp = savestring ("1");
-#else /* HISTORY */
-               temp = itos (history_number ());
-#endif /* HISTORY */
-               string--;       /* add_string increments string again. */
-               goto add_string;
-           }
-       } 
-      if (c == '\\')
-       {
-         c = *string;
-
-         switch (c)
-           {
-           case '0':
-           case '1':
-           case '2':
-           case '3':
-           case '4':
-           case '5':
-           case '6':
-           case '7':
-             strncpy (octal_string, string, 3);
-             octal_string[3] = '\0';
-
-             n = read_octal (octal_string);
-             temp = xmalloc (3);
-
-             if (n == CTLESC || n == CTLNUL)
-               {
-                 string += 3;
-                 temp[0] = CTLESC;
-                 temp[1] = n;
-                 temp[2] = '\0';
-               }
-             else if (n == -1)
-               {
-                 temp[0] = '\\';
-                 temp[1] = '\0';
-               }
-             else
-               {
-                 string += 3;
-                 temp[0] = n;
-                 temp[1] = '\0';
-               }
-
-             c = 0;
-             goto add_string;
-         
-           case 't':
-           case 'd':
-           case 'T':
-           case '@':
-             /* Make the current time/date into a string. */
-             the_time = time (0);
-             temp = ctime (&the_time);
-
-             temp = (c != 'd') ? savestring (temp + 11) : savestring (temp);
-             temp[(c != 'd') ? 8 : 10] = '\0';
-
-             /* quick and dirty conversion to 12-hour time */
-             if (c == 'T' || c == '@')
-               {
-                 if (c == '@')
-                   {
-                     temp[5] = 'a';    /* am/pm format */
-                     temp[6] = 'm';
-                     temp[7] = '\0';
-                   }
-                 c = temp[2];
-                 temp[2] = '\0';
-                 n = atoi (temp);
-                 temp[2] = c;
-                 n -= 12;
-                 if (n > 0)
-                   {
-                     temp[0] = (n / 10) + '0';
-                     temp[1] = (n % 10) + '0';
-                     if (temp[5] == 'a') temp[5] = 'p';
-                   }
-               }
-             goto add_string;
-
-           case 'n':
-             temp = xmalloc (3);
-             temp[0] = no_line_editing ? '\n' : '\r';
-             temp[1] = no_line_editing ? '\0' : '\n';
-             temp[2] = '\0';
-             goto add_string;
-
-           case 's':
-             temp = base_pathname (shell_name);
-             temp = savestring (temp);
-             goto add_string;
-       
-           case 'w':
-           case 'W':
-             {
-               /* Use the value of PWD because it is much more efficient. */
-               char t_string[MAXPATHLEN];
-
-               temp = get_string_value ("PWD");
-
-               if (temp == 0)
-                 getwd (t_string);
-               else
-                 strcpy (t_string, temp);
-
-               if (c == 'W')
-                 {
-                   t = strrchr (t_string, '/');
-                   if (t && t != t_string)
-                     strcpy (t_string, t + 1);
-                   temp = savestring (t_string);
-                 }
-               else
-                 temp = savestring (polite_directory_format (t_string));
-               goto add_string;
-             }
-      
-           case 'u':
-             temp = savestring (current_user.user_name);
-             goto add_string;
-
-           case 'h':
-           case 'H':
-             temp = savestring (current_host_name);
-             if (c == 'H' && (t = (char *)strchr (temp, '.')))
-               *t = '\0';
-             goto add_string;
-
-           case '#':
-             temp = itos (current_command_number);
-             goto add_string;
-
-           case '!':
-#if !defined (HISTORY)
-             temp = savestring ("1");
-#else /* HISTORY */
-             temp = itos (history_number ());
-#endif /* HISTORY */
-             goto add_string;
-
-           case '$':
-             temp = xmalloc (2);
-             temp[0] = current_user.euid == 0 ? '#' : '$';
-             temp[1] = '\0';
-             goto add_string;
-
-#if defined (READLINE)
-           case '[':
-           case ']':
-             temp = xmalloc (3);
-             temp[0] = '\001';
-             temp[1] = (c == '[') ? RL_PROMPT_START_IGNORE : RL_PROMPT_END_IGNORE;
-             temp[2] = '\0';
-             goto add_string;
-#endif /* READLINE */
-
-           case '\\':
-             temp = xmalloc (2);
-             temp[0] = c;
-             temp[1] = '\0';
-             goto add_string;
-
-           case 'a':
-           case 'e':
-             temp = xmalloc (2);
-             temp[0] = (c == 'a') ? '\07' : '\033';
-             temp[1] = '\0';
-             goto add_string;
-
-           default:
-             temp = xmalloc (3);
-             temp[0] = '\\';
-             temp[1] = c;
-             temp[2] = '\0';
-
-           add_string:
-             if (c)
-               string++;
-             result =
-               sub_append_string (temp, result, &result_index, &result_size);
-             temp = (char *)NULL; /* Freed in sub_append_string (). */
-             result[result_index] = '\0';
-             break;
-           }
-       }
-      else
-       {
-         if (result_index > result_size - 3)
-           {
-             while (result_index > result_size - 3)
-               result_size += PROMPT_GROWTH;
-             result = xrealloc (result, result_size);
-           }
-
-         result[result_index++] = c;
-         result[result_index] = '\0';
-       }
-    }
-#else /* !PROMPT_STRING_DECODE */
-  result = savestring (string);
-#endif /* !PROMPT_STRING_DECODE */
-
-  /* Perform variable and parameter expansion and command substitution on
-     the prompt string. */
-  if (promptvars)
-    {
-      list = expand_string_unsplit (result, Q_DOUBLE_QUOTES);
-      free (result);
-      result = string_list (list);
-      dispose_words (list);
-    }
-  else
-    {
-      t = dequote_string (result);
-      free (result);
-      result = t;
-    }
-
-  return (result);
-}
-
-/* Report a syntax error, and restart the parser.  Call here for fatal
-   errors. */
-int
-yyerror ()
-{
-  report_syntax_error ((char *)NULL);
-  reset_parser ();
-  return (0);
-}
-
-/* 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. */
-static void
-report_syntax_error (message)
-     char *message;
-{
-  char *name, *msg, *t;
-  int token_end, i;
-
-  if (message)
-    {
-      if (!interactive)
-       {
-         name = bash_input.name ? bash_input.name : "stdin";
-         report_error ("%s: line %d: `%s'", name, line_number, message);
-       }
-      else
-       {
-         if (EOF_Reached)
-           EOF_Reached = 0;
-         report_error ("%s", message);
-       }
-
-      last_command_exit_value = EX_USAGE;
-      return;
-    }
-
-  if (shell_input_line && *shell_input_line)
-    {
-      t = shell_input_line;
-      i = shell_input_line_index;
-      token_end = 0;
-
-      if (i && t[i] == '\0')
-       i--;
-
-      while (i && (whitespace (t[i]) || t[i] == '\n'))
-       i--;
-
-      if (i)
-       token_end = i + 1;
-
-      while (i && (member (t[i], " \n\t;|&") == 0))
-       i--;
-
-      while (i != token_end && (whitespace (t[i]) || t[i] == '\n'))
-       i++;
-
-      if (token_end)
-       {
-         msg = xmalloc (1 + (token_end - i));
-         strncpy (msg, t + i, token_end - i);
-         msg[token_end - i] = '\0';
-
-         report_error ("syntax error near unexpected token `%s'", msg);
-         free (msg);
-       }
-      else if ((i == 0) && (token_end == 0))   /* a 1-character token */
-       {
-         report_error ("syntax error near unexpected token `%c'", t[i]);
-       }
-
-      if (!interactive)
-       {
-         msg = savestring (shell_input_line);
-         token_end = strlen (msg);
-         name = bash_input.name ? bash_input.name : "stdin";
-
-         while (token_end && msg[token_end - 1] == '\n')
-           msg[--token_end] = '\0';
-
-         report_error ("%s: line %d: `%s'", name, line_number, msg);
-         free (msg);
-       }
-    }
-  else
-    {
-      msg = EOF_Reached ? "syntax error: unexpected end of file" : "syntax error";
-      if (!interactive)
-        {
-         name = bash_input.name ? bash_input.name : "stdin";
-         report_error ("%s: line %d: %s", name, line_number, msg);
-        }
-      else
-       {
-         /* This file uses EOF_Reached only for error reporting
-            when the shell is interactive.  Other mechanisms are 
-            used to decide whether or not to exit. */
-         EOF_Reached = 0;
-         report_error (msg);
-       }
-    }
-  last_command_exit_value = EX_USAGE;
-}
-
-/* ??? 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. */
-static void
-discard_parser_constructs (error_p)
-     int error_p;
-{
-}
-   
-/* Do that silly `type "bye" to exit' stuff.  You know, "ignoreeof". */
-
-/* A flag denoting whether or not ignoreeof is set. */
-int ignoreeof = 0;
-
-/* The number of times that we have encountered an EOF character without
-   another character intervening.  When this gets above the limit, the
-   shell terminates. */
-int eof_encountered = 0;
-
-/* The limit for eof_encountered. */
-int eof_encountered_limit = 10;
-
-/* If we have EOF as the only input unit, this user wants to leave
-   the shell.  If the shell is not interactive, then just leave.
-   Otherwise, if ignoreeof is set, and we haven't done this the
-   required number of times in a row, print a message. */
-static void
-handle_eof_input_unit ()
-{
-  if (interactive)
-    {
-      /* shell.c may use this to decide whether or not to write out the
-        history, among other things.  We use it only for error reporting
-        in this file. */
-      if (EOF_Reached)
-       EOF_Reached = 0;
-
-      /* If the user wants to "ignore" eof, then let her do so, kind of. */
-      if (ignoreeof)
-       {
-         if (eof_encountered < eof_encountered_limit)
-           {
-             fprintf (stderr, "Use \"%s\" to leave the shell.\n",
-                      login_shell ? "logout" : "exit");
-             eof_encountered++;
-             /* Reset the prompt string to be $PS1. */
-             prompt_string_pointer = (char **)NULL;
-             prompt_again ();
-             last_read_token = current_token = '\n';
-             return;
-           } 
-       }
-
-      /* In this case EOF should exit the shell.  Do it now. */
-      reset_parser ();
-      exit_builtin ((WORD_LIST *)NULL);
-    }
-  else
-    {
-      /* We don't write history files, etc., for non-interactive shells. */
-      EOF_Reached = 1;
-    }
-}
diff --git a/CWRU/old/read.def.stdio b/CWRU/old/read.def.stdio
deleted file mode 100644 (file)
index 6811384..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-This file is read.def, from which is created read.c.
-It implements the builtin "read" in Bash.
-
-Copyright (C) 1987, 1989, 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.
-
-$PRODUCES read.c
-
-$BUILTIN read
-$FUNCTION read_builtin
-$SHORT_DOC read [-r] [-p prompt] [-a array] [name ...]
-One line is read from the standard input, and the first word is
-assigned to the first NAME, the second word to the second NAME, etc.
-with leftover words assigned to the last NAME.  Only the characters
-found in $IFS are recognized as word delimiters.  The return code is
-zero, unless end-of-file is encountered.  If the -r option is given,
-this signifies `raw' input, and backslash processing is disabled.  If
-the `-p' option is supplied, the string supplied as an argument is
-output without a trailing newline before attempting to read.  If -a
-is supplied, the words read are assigned to sequential indices of ARRAY,
-starting at zero.
-$END
-
-#include <stdio.h>
-#include "../shell.h"
-#include "common.h"
-#include "bashgetopt.h"
-
-static int stream_close ();
-
-extern int interrupt_immediately;
-
-/* Read the value of the shell variables whose names follow.
-   The reading is done from the current input stream, whatever
-   that may be.  Successive words of the input line are assigned
-   to the variables mentioned in LIST.  The last variable in LIST
-   gets the remainder of the words on the line.  If no variables
-   are mentioned in LIST, then the default variable is $REPLY. */
-read_builtin (list)
-     WORD_LIST *list;
-{
-  register char *varname;
-  int size, c, i, fildes, raw_mode, pass_next, saw_escape, opt, retval;
-  char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
-  FILE *input_stream;
-  SHELL_VAR *ifs;
-#if defined (ARRAY_VARS)
-  SHELL_VAR *v;
-  WORD_LIST *alist;
-#endif
-
-  i = 0;               /* Index into the string that we are reading. */
-  raw_mode = 0;                /* Not reading raw input be default. */
-  arrayname = prompt = (char *)NULL;
-
-  reset_internal_getopt ();
-  while ((opt = internal_getopt (list, "rp:a:")) != -1)
-    {
-      switch (opt)
-        {
-        case 'r':
-         raw_mode = 1;
-         break;
-       case 'p':
-         prompt = list_optarg;
-         break;
-#if defined (ARRAY_VARS)
-       case 'a':
-         arrayname = list_optarg;
-         break;
-#endif
-       default:
-         builtin_usage ();
-         return (EX_USAGE);
-       }
-    }
-  list = loptend;
-
-  /* We need unbuffered input from stdin.  So we make a new stream with
-     the same file descriptor as stdin, then unbuffer it. */
-  fildes = dup (fileno (stdin));
-
-  if (fildes == -1)
-    return (EXECUTION_FAILURE);
-
-  input_stream = fdopen (fildes, "r");
-
-  if (!input_stream)
-    {
-      close (fildes);
-      return (EXECUTION_FAILURE);
-    }
-
-  ifs = find_variable ("IFS");
-  if (ifs == 0)
-    ifs_chars = " \t\n";
-  else
-    ifs_chars = value_cell (ifs);
-
-  input_string = xmalloc (size = 128);
-
-  setbuf (input_stream, (char *)NULL);
-
-  begin_unwind_frame ("read_builtin");
-  add_unwind_protect (xfree, input_string);
-  add_unwind_protect (stream_close, input_stream);
-  interrupt_immediately++;
-
-  if (prompt && isatty (0))
-    {
-      fprintf (stderr, "%s", prompt);
-      fflush (stderr);
-    }
-
-  pass_next = 0;       /* Non-zero signifies last char was backslash. */
-  saw_escape = 0;      /* Non-zero signifies that we saw an escape char */
-
-  while ((c = getc (input_stream)) != EOF)
-    {
-      if (i + 2 >= size)
-       input_string = xrealloc (input_string, size += 128);
-
-      /* If the next character is to be accepted verbatim, a backslash
-        newline pair still disappears from the input. */
-      if (pass_next)
-       {
-         if (c == '\n')
-           i--;                /* back up over the CTLESC */
-         else
-           input_string[i++] = c;
-         pass_next = 0;
-         continue;
-       }
-
-      if (c == '\\' && !raw_mode)
-       {
-         pass_next++;
-         saw_escape++;
-         input_string[i++] = CTLESC;
-         continue;
-       }
-
-      if (c == '\n')
-       break;
-
-      if (c == CTLESC || c == CTLNUL)
-       input_string[i++] = CTLESC;
-
-      input_string[i++] = c;
-    }
-  input_string[i] = '\0';
-
-  interrupt_immediately--;
-  discard_unwind_frame ("read_builtin");
-
-  fclose (input_stream);
-
-  if (c == EOF)
-    {
-      retval = EXECUTION_FAILURE;
-      input_string[0] = '\0';
-    }
-  else
-    retval = EXECUTION_SUCCESS;
-
-#if defined (ARRAY_VARS)
-  /* If -a was given, take the string read, break it into a list of words,
-     an assign them to `arrayname' in turn. */
-  if (arrayname)
-    {
-      v = find_variable (arrayname);
-      if (v == 0)
-        v = make_new_array_variable (arrayname);
-      else if (array_p (v) == 0)
-        v = convert_var_to_array (v);
-
-      alist = list_string (input_string, " \t\n", 0);
-      if (alist)
-       {
-         assign_word_list (array_cell (v), alist);
-         dispose_words (alist);
-       }
-      free (input_string);
-      return (retval);
-    }
-#endif /* ARRAY_VARS */ 
-
-  if (!list)
-    {
-      SHELL_VAR *var;
-      char *t;
-
-      if (saw_escape)
-       {
-         t = dequote_string (input_string);
-         var = bind_variable ("REPLY", t);
-         free (t);
-       }
-      else
-       var = bind_variable ("REPLY", input_string);
-      var->attributes &= ~att_invisible;
-      free (input_string);
-    }
-  else
-    {
-      SHELL_VAR *var;
-      char *t;
-      /* This code implements the Posix.2 spec for splitting the words
-        read and assigning them to variables.  If $IFS is unset, we
-        use the default value of " \t\n". */
-      if (!ifs_chars)
-       ifs_chars = "";
-
-      orig_input_string = input_string;
-      while (list->next)
-       {
-         char *e, *t1;
-
-         varname = list->word->word;
-
-         /* If there are more variables than words read from the input,
-            the remaining variables are set to the empty string. */
-         if (*input_string)
-           {
-             /* This call updates INPUT_STRING. */
-             t = get_word_from_string (&input_string, ifs_chars, &e);
-             if (t)
-               *e = '\0';
-             /* Don't bother to remove the CTLESC unless we added one
-                somewhere while reading the string. */
-             if (t && saw_escape)
-               {
-                 t1 = dequote_string (t);
-                 var = bind_variable (varname, t1);
-                 free (t1);
-               }
-             else
-               var = bind_variable (varname, t);
-           }
-         else
-           {
-             t = (char *)0;
-             var = bind_variable (varname, "");
-           }
-
-         stupidly_hack_special_variables (varname);
-         var->attributes &= ~att_invisible;
-
-         if (t)
-           free (t);
-
-         list = list->next;
-       }
-
-      if (saw_escape)
-       {
-         t = dequote_string (input_string);
-         var = bind_variable (list->word->word, t);
-         free (t);
-       }
-      else
-       var = bind_variable (list->word->word, input_string);
-      stupidly_hack_special_variables (list->word->word);
-      var->attributes &= ~att_invisible;
-      free (orig_input_string);
-    }
-
-  return (retval);
-}
-
-/* This way I don't have to know whether fclose () is a
-   function or a macro. */
-static int
-stream_close (file)
-     FILE *file;
-{
-  return (fclose (file));
-}
diff --git a/CWRU/old/subst.c.noctlnul b/CWRU/old/subst.c.noctlnul
deleted file mode 100644 (file)
index b6621c0..0000000
+++ /dev/null
@@ -1,5659 +0,0 @@
-/* subst.c -- The part of the shell that does parameter, command, and
-   globbing substitutions. */
-
-/* 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 2, 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 "config.h"
-
-#include "bashtypes.h"
-#include <stdio.h>
-#include <pwd.h>
-#include <signal.h>
-#include <errno.h>
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#endif
-
-#include "bashansi.h"
-#include "posixstat.h"
-
-#include "shell.h"
-#include "flags.h"
-#include "jobs.h"
-#include "execute_cmd.h"
-#include "filecntl.h"
-#include "trap.h"
-#include "pathexp.h"
-
-#include "builtins/getopt.h"
-#include "builtins/common.h"
-
-#if defined (READLINE)
-#  include "bashline.h"
-#  include <readline/readline.h>
-#else
-#  include <tilde/tilde.h>
-#endif
-
-#if defined (HISTORY)
-#  include "bashhist.h"
-#  include <readline/history.h>
-#endif
-
-#include <glob/fnmatch.h>
-
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-/* The size that strings change by. */
-#define DEFAULT_ARRAY_SIZE 128
-
-/* How to quote character C. */
-static char *make_quoted_char ();
-
-/* Process ID of the last command executed within command substitution. */
-pid_t last_command_subst_pid = NO_PID;
-
-/* Extern functions and variables from different files. */
-extern int last_command_exit_value, interactive, interactive_shell;
-extern int subshell_environment, startup_state;
-extern int dollar_dollar_pid;
-extern int posixly_correct;
-extern int eof_encountered, eof_encountered_limit, ignoreeof;
-extern char *this_command_name;
-extern struct fd_bitmap *current_fds_to_close;
-#if defined (READLINE)
-extern int no_line_editing;
-extern int hostname_list_initialized;
-#endif
-
-/* Non-zero means to allow unmatched globbed filenames to expand to
-   a null file. */
-int allow_null_glob_expansion;
-
-static WORD_LIST expand_word_error, expand_word_fatal;
-static char expand_param_error, expand_param_fatal;
-
-static WORD_LIST *expand_string_internal ();
-static WORD_LIST *expand_word_internal (), *expand_word_list_internal ();
-static WORD_LIST *expand_string_leave_quoted ();
-static WORD_LIST *expand_string_for_rhs ();
-static WORD_LIST *word_list_split ();
-static WORD_LIST *quote_list (), *dequote_list ();
-static int unquoted_substring (), unquoted_member ();
-static int do_assignment_internal ();
-static char *string_extract_verbatim (), *string_extract ();
-static char *string_extract_double_quoted (), *string_extract_single_quoted ();
-static int skip_single_quoted (), skip_double_quoted ();
-static char *extract_delimited_string ();
-static char *extract_dollar_brace_string ();
-
-/* **************************************************************** */
-/*                                                                 */
-/*                     Utility Functions                           */
-/*                                                                 */
-/* **************************************************************** */
-
-/* Cons a new string from STRING starting at START and ending at END,
-   not including END. */
-char *
-substring (string, start, end)
-     char *string;
-     int start, end;
-{
-  register int len;
-  register char *result;
-
-  len = end - start;
-  result = xmalloc (len + 1);
-  strncpy (result, string + start, len);
-  result[len] = '\0';
-  return (result);
-}
-
-/* Conventions:
-
-     A string with s[0] == CTLNUL && s[1] == 0 is a quoted null string.
-     The parser passes CTLNUL as CTLESC CTLNUL. */
-
-/* The parser passes us CTLESC as CTLESC CTLESC and CTLNUL as CTLESC CTLNUL.
-   This is necessary to make unquoted CTLESC and CTLNUL characters in the
-   data stream pass through properly.
-   Here we remove doubled CTLESC characters inside quoted strings before
-   quoting the entire string, so we do not double the number of CTLESC
-   characters. */
-static char *
-remove_quoted_escapes (string)
-     char *string;
-{
-  register char *s;
-  int docopy;
-  char *t, *t1;
-
-  if (string == NULL)
-    return (string);
-
-  t1 = t = xmalloc (strlen (string) + 1);
-  for (docopy = 0, s = string; *s; s++, t1++)
-    {
-#if 0
-      if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL))
-#else
-      if (*s == CTLESC && s[1] == CTLESC)
-#endif
-       {
-         s++;
-         docopy = 1;
-       }
-      *t1 = *s;
-    }
-  *t1 = '\0';
-  if (docopy)
-    strcpy (string, t);
-  free (t);
-  return (string);
-}
-
-/* Quote escape characters in string s, but no other characters.  This is
-   used to protect CTLESC and CTLNUL in variable values from the rest of
-   the word expansion process after the variable is expanded. */
-static char *
-quote_escapes (string)
-     char *string;
-{
-  register char *s, *t;
-  char *result;
-
-  result = xmalloc ((strlen (string) * 2) + 1);
-  for (s = string, t = result; *s; )
-    {
-      if (*s == CTLESC /* || *s == CTLNUL */)
-       *t++ = CTLESC;
-      *t++ = *s++;
-    }
-  *t = '\0';
-  return (result);
-}
-
-static char *
-dequote_escapes (string)
-     char *string;
-{
-  register char *s, *t;
-  char *result;
-
-  result = xmalloc (strlen (string) + 1);
-  for (s = string, t = result; *s; )
-    {
-#if 0
-      if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL))
-#else
-      if (*s == CTLESC && s[1] == CTLESC)
-#endif
-       {
-         s++;
-         if (*s == '\0')
-           break;
-       }
-      *t++ = *s++;
-    }
-  *t = '\0';
-  return result;
-}
-
-/* Extract a substring from STRING, starting at SINDEX and ending with
-   one of the characters in CHARLIST.  Don't make the ending character
-   part of the string.  Leave SINDEX pointing at the ending character.
-   Understand about backslashes in the string.  If VARNAME is non-zero,
-   and array variables have been compiled into the shell, everything
-   between a `[' and a corresponding `]' is skipped over. */
-static char *
-string_extract (string, sindex, charlist, varname)
-     char *string, *charlist;
-     int *sindex, varname;
-{
-  register int c, i;
-  char *temp;
-
-  for (i = *sindex; c = string[i]; i++)
-    {
-      if (c == '\\')
-       if (string[i + 1])
-         i++;
-       else
-         break;
-#if defined (ARRAY_VARS)
-      else if (varname && c == '[')
-       {
-         int ni;
-         /* If this is an array subscript, skip over it and continue. */
-         ni = skipsubscript (string, i);
-         if (string[ni] == ']')
-           i = ni;
-       }
-#endif
-      else if (MEMBER (c, charlist))
-         break;
-    }
-  c = i - *sindex;
-  temp = xmalloc (1 + c);
-  strncpy (temp, string + *sindex, c);
-  temp[c] = '\0';
-  *sindex = i;
-  return (temp);
-}
-
-/* Extract the contents of STRING as if it is enclosed in double quotes.
-   SINDEX, when passed in, is the offset of the character immediately
-   following the opening double quote; on exit, SINDEX is left pointing after
-   the closing double quote.  If STRIPDQ is non-zero, unquoted double
-   quotes are stripped and the string is terminated by a null byte.
-   Backslashes between the embedded double quotes are processed.  If STRIPDQ
-   is zero, an unquoted `"' terminates the string. */
-static inline char *
-string_extract_double_quoted (string, sindex, stripdq)
-     char *string;
-     int *sindex, stripdq;
-{
-  int c, j, i, t;
-  char *temp, *ret;            /* The new string we return. */
-  int pass_next, backquote, si;        /* State variables for the machine. */
-  int dquote;
-
-  pass_next = backquote = dquote = 0;
-  temp = xmalloc (1 + strlen (string) - *sindex);
-
-  for (j = 0, i = *sindex; c = string[i]; i++)
-    {
-      /* Process a character that was quoted by a backslash. */
-      if (pass_next)
-       {
-         /* Posix.2 sez:
-
-            ``The backslash shall retain its special meaning as an escape
-            character only when followed by one of the characters:
-               $       `       "       \       <newline>''.
-
-            If STRIPDQ is zero, we handle the double quotes here and let
-            expand_word_internal handle the rest.  If STRIPDQ is non-zero,
-            we have already been through one round of backslash stripping,
-            and want to strip these backslashes only if DQUOTE is non-zero,
-            indicating that we are inside an embedded double-quoted string. */
-
-            /* If we are in an embedded quoted string, then don't strip
-               backslashes before characters for which the backslash
-               retains its special meaning, but remove backslashes in
-               front of other characters.  If we are not in an
-               embedded quoted string, don't strip backslashes at all.
-               This mess is necessary because the string was already
-               surrounded by double quotes (and sh has some really weird
-               quoting rules).
-               The returned string will be run through expansion as if
-               it were double-quoted. */
-         if ((stripdq == 0 && c != '"') ||
-             (stripdq && ((dquote && strchr (slashify_in_quotes, c)) || dquote == 0)))
-           temp[j++] = '\\';
-         temp[j++] = c;
-         pass_next = 0;
-         continue;
-       }
-
-      /* A backslash protects the next character.  The code just above
-        handles preserving the backslash in front of any character but
-        a double quote. */
-      if (c == '\\')
-       {
-         pass_next++;
-         continue;
-       }
-
-      /* Inside backquotes, ``the portion of the quoted string from the
-        initial backquote and the characters up to the next backquote
-        that is not preceded by a backslash, having escape characters
-        removed, defines that command''. */
-      if (backquote)
-       {
-         if (c == '`')
-           backquote = 0;
-         temp[j++] = c;
-         continue;
-       }
-
-      if (c == '`')
-       {
-         temp[j++] = c;
-         backquote++;
-         continue;
-       }
-
-      /* Pass everything between `$(' and the matching `)' or a quoted
-        ${ ... } pair through according to the Posix.2 specification. */
-      if (c == '$' && ((string[i + 1] == '(') || (string[i + 1] == '{')))
-       {
-         si = i + 2;
-         if (string[i + 1] == '(')
-           ret = extract_delimited_string (string, &si, "$(", "(", ")");
-         else
-           ret = extract_dollar_brace_string (string, &si, 1);
-
-         temp[j++] = '$';
-         temp[j++] = string[i + 1];
-
-         for (t = 0; ret[t]; t++, j++)
-           temp[j] = ret[t];
-         temp[j++] = string[si];
-
-         i = si;
-         free (ret);
-         continue;
-       }
-
-      /* Add any character but a double quote to the quoted string we're
-         accumulating. */
-      if (c != '"')
-       {
-         temp[j++] = c;
-         continue;
-       }
-
-      /* c == '"' */   
-      if (stripdq)
-       {
-         dquote ^= 1;
-         continue;
-       }
-
-      break;
-    }
-  temp[j] = '\0';
-
-  /* Point to after the closing quote. */
-  if (c)
-    i++;
-  *sindex = i;
-
-  return (temp);
-}
-
-/* This should really be another option to string_extract_double_quoted. */
-static inline int
-skip_double_quoted (string, sind)
-     char *string;
-     int sind;
-{
-  int c, j, i;
-  char *ret;
-  int pass_next, backquote, si;
-
-  pass_next = backquote = 0;
-
-  for (j = 0, i = sind; c = string[i]; i++)
-    {
-      if (pass_next)
-       {
-         pass_next = 0;
-         continue;
-       }
-      else if (c == '\\')
-       {
-         pass_next++;
-         continue;
-       }
-      else if (backquote)
-       {
-         if (c == '`')
-           backquote = 0;
-         continue;
-       }
-      else if (c == '`')
-       {
-         backquote++;
-         continue;
-       }
-      else if (c == '$' && ((string[i + 1] == '(') || (string[i + 1] == '{')))
-       {
-         si = i + 2;
-         if (string[i + 1] == '(')
-           ret = extract_delimited_string (string, &si, "$(", "(", ")");
-         else
-           ret = extract_dollar_brace_string (string, &si, 0);
-         i = si;
-         free (ret);
-         continue;
-       }
-      else if (c != '"')
-       continue;
-      else
-       break;
-    }
-
-  if (c)
-    i++;
-
-  return (i);
-}
-
-/* Extract the contents of STRING as if it is enclosed in single quotes.
-   SINDEX, when passed in, is the offset of the character immediately
-   following the opening single quote; on exit, SINDEX is left pointing after
-   the closing single quote. */
-static inline char *
-string_extract_single_quoted (string, sindex)
-     char *string;
-     int *sindex;
-{
-  register int i, j;
-  char *temp;
-
-  for (i = *sindex; string[i] && string[i] != '\''; i++)
-    ;
-
-  j = i - *sindex;
-  temp = xmalloc (1 + j);
-  strncpy (temp, string + *sindex, j);
-  temp[j] = '\0';
-
-  if (string[i])
-    i++;
-  *sindex = i;
-
-  return (temp);
-}
-
-static inline int
-skip_single_quoted (string, sind)
-     char *string;
-     int sind;
-{
-  register int i;
-
-  for (i = sind; string[i] && string[i] != '\''; i++)
-    ;
-  if (string[i])
-    i++;
-  return i;
-}
-
-/* Just like string_extract, but doesn't hack backslashes or any of
-   that other stuff.  Obeys quoting.  Used to do splitting on $IFS. */
-static char *
-string_extract_verbatim (string, sindex, charlist)
-     char *string, *charlist;
-     int *sindex;
-{
-  register int i = *sindex;
-  int c;
-  char *temp;
-
-  if (charlist[0] == '\'' && charlist[1] == '\0')
-    return (string_extract_single_quoted (string, sindex));
-
-  for (i = *sindex; c = string[i]; i++)
-    {
-      if (c == CTLESC)
-       {
-         i++;
-         continue;
-       }
-
-      if (MEMBER (c, charlist))
-       break;
-    }
-
-  c = i - *sindex;
-  temp = xmalloc (1 + c);
-  strncpy (temp, string + *sindex, c);
-  temp[c] = '\0';
-  *sindex = i;
-
-  return (temp);
-}
-
-/* Extract the $( construct in STRING, and return a new string.
-   Start extracting at (SINDEX) as if we had just seen "$(".
-   Make (SINDEX) get the position just after the matching ")". */
-char *
-extract_command_subst (string, sindex)
-     char *string;
-     int *sindex;
-{
-  return (extract_delimited_string (string, sindex, "$(", "(", ")"));
-}
-
-/* Extract the $[ construct in STRING, and return a new string.
-   Start extracting at (SINDEX) as if we had just seen "$[".
-   Make (SINDEX) get the position just after the matching "]". */
-char *
-extract_arithmetic_subst (string, sindex)
-     char *string;
-     int *sindex;
-{
-  return (extract_delimited_string (string, sindex, "$[", "[", "]"));
-}
-
-#if defined (PROCESS_SUBSTITUTION)
-/* Extract the <( or >( construct in STRING, and return a new string.
-   Start extracting at (SINDEX) as if we had just seen "<(".
-   Make (SINDEX) get the position just after the matching ")". */
-char *
-extract_process_subst (string, starter, sindex)
-     char *string;
-     char *starter;
-     int *sindex;
-{
-  return (extract_delimited_string (string, sindex, starter, "(", ")"));
-}
-#endif /* PROCESS_SUBSTITUTION */
-
-#if defined (ARRAY_VARS)
-char *
-extract_array_assignment_list (string, sindex)
-     char *string;
-     int *sindex;
-{
-  return (extract_delimited_string (string, sindex, "(", "(", ")"));
-}
-#endif
-
-/* Extract and create a new string from the contents of STRING, a
-   character string delimited with OPENER and CLOSER.  SINDEX is
-   the address of an int describing the current offset in STRING;
-   it should point to just after the first OPENER found.  On exit,
-   SINDEX gets the position just after the matching CLOSER.  If
-   OPENER is more than a single character, ALT_OPENER, if non-null,
-   contains a character string that can also match CLOSER and thus
-   needs to be skipped. */
-
-#define INC_NEST \
-  do \
-    { \
-      if (delimiter == 0) \
-       nesting_level++; \
-      else \
-       delimited_nesting_level++; \
-    } \
-  while (0)
-
-/* Cannot use the do...while(0) idiom because of the `break' in the
-   macro body. */
-#define DEC_NEST \
-      if (delimiter && delimited_nesting_level) \
-       delimited_nesting_level--; \
-      if (delimiter == 0) \
-       { \
-         nesting_level--; \
-         if (nesting_level == 0) \
-           break; \
-       }
-
-static char *
-extract_delimited_string (string, sindex, opener, alt_opener, closer)
-     char *string;
-     int *sindex;
-     char *opener, *alt_opener, *closer;
-{
-  register int i, c, l;
-  int pass_character, nesting_level;
-  int delimiter, delimited_nesting_level;
-  int len_closer, len_opener, len_alt_opener;
-  char *result;
-
-  len_opener = STRLEN (opener);
-  len_alt_opener = STRLEN (alt_opener);
-  len_closer = STRLEN (closer);
-
-  pass_character = delimiter = delimited_nesting_level = 0;
-
-  nesting_level = 1;
-
-  for (i = *sindex; c = string[i]; i++)
-    {
-      if (pass_character)
-       {
-         pass_character = 0;
-         continue;
-       }
-
-      if (c == CTLESC)
-       {
-         pass_character++;
-         continue;
-       }
-
-      if (c == '\\' && delimiter == '"' &&
-             (member (string[i + 1], slashify_in_quotes)))
-       {
-         pass_character++;
-         continue;
-       }
-
-      if (!delimiter || delimiter == '"')
-       {
-         if (STREQN (string + i, opener, len_opener))
-           {
-             INC_NEST;
-             i += len_opener - 1;
-             continue;
-           }
-
-         if (len_alt_opener && STREQN (string + i, alt_opener, len_alt_opener))
-           {
-             INC_NEST;
-             i += len_alt_opener - 1;
-             continue;
-           }
-
-         if (STREQN (string + i, closer, len_closer))
-           {
-             i += len_closer - 1;
-             DEC_NEST;
-           }
-       }
-
-      if (delimiter)
-       {
-         if (c == delimiter || delimiter == '\\')
-           delimiter = 0;
-         continue;
-       }
-      else if (c == '"' || c == '\'' || c == '\\')
-       delimiter = c;
-    }
-
-  l = i - *sindex;
-  result = xmalloc (1 + l);
-  strncpy (result, string + *sindex, l);
-  result[l] = '\0';
-  *sindex = i;
-
-  if (c == 0 && (delimiter || nesting_level))
-    {
-      report_error ("bad substitution: no `%s' in %s", closer, string);
-      free (result);
-      jump_to_top_level (DISCARD);
-    }
-  return (result);
-}
-
-/* Extract a parameter expansion expression within ${ and } from STRING.
-   Obey the Posix.2 rules for finding the ending `}': count braces while
-   skipping over enclosed quoted strings and command substitutions.
-   SINDEX is the address of an int describing the current offset in STRING;
-   it should point to just after the first `{' found.  On exit, SINDEX
-   gets the position just after the matching `}'.  QUOTED is non-zero if
-   this occurs inside double quotes. */
-/* XXX -- this is very similar to extract_delimited_string -- XXX */
-static char *
-extract_dollar_brace_string (string, sindex, quoted)
-     char *string;
-     int *sindex, quoted;
-{
-  register int i, c, l;
-  int pass_character, nesting_level, si;
-  int delimiter, delimited_nesting_level;
-  char *result, *t;
-
-  pass_character = delimiter = delimited_nesting_level = 0;
-
-  nesting_level = 1;
-
-  for (i = *sindex; c = string[i]; i++)
-    {
-      if (pass_character)
-       {
-         pass_character = 0;
-         continue;
-       }
-
-      if (c == CTLESC)
-       {
-         pass_character++;
-         continue;
-       }
-
-      /* Backslashes quote the next character. */
-      if (c == '\\')
-       {
-         if ((delimiter == '"') &&
-             (member (string[i + 1], slashify_in_quotes)))
-           {
-             pass_character++;
-             continue;
-           }
-       }
-
-      if (!delimiter || delimiter == '"')
-       {
-         if (string[i] == '$' && string[i+1] == '{')
-           {
-             INC_NEST;
-             i++;
-             continue;
-           }
-
-         /* Pass the contents of old-style command substitutions through
-            verbatim. */
-         if (string[i] == '`')
-           {
-             si = i + 1;
-             t = string_extract (string, &si, "`", 0);
-             i = si;
-             free (t);
-             continue;
-           }
-
-         /* Pass the contents of new-style command substitutions through
-            verbatim. */
-         if (string[i] == '$' && string[i+1] == '(')
-           {
-             si = i + 2;
-             t = extract_delimited_string (string, &si, "$(", "(", ")");
-             i = si;
-             free (t);
-             continue;
-           }
-
-         if (string[i] == '{')
-           {
-             INC_NEST;
-             continue;
-           }
-
-         if (string[i] == '}')
-           {
-             DEC_NEST;
-           }
-       }
-
-      if (delimiter)
-       {
-         if (c == delimiter || delimiter == '\\')
-           delimiter = 0;
-         continue;
-       }
-      else if (c == '"' || c == '\'' || c == '\\')
-       delimiter = c;
-    }
-
-  l = i - *sindex;
-  result = xmalloc (1 + l);
-  strncpy (result, string + *sindex, l);
-  result[l] = '\0';
-  *sindex = i;
-
-  if (c == 0 && (delimiter || nesting_level))
-    {
-      report_error ("bad substitution: no ending `}' in %s", string);
-      free (result);
-      jump_to_top_level (DISCARD);
-    }
-  return (result);
-}
-
-/* Remove backslashes which are quoting backquotes from STRING.  Modifies
-   STRING, and returns a pointer to it. */
-char *
-de_backslash (string)
-     char *string;
-{
-  register int i, l;
-
-  for (i = 0, l = strlen (string); i < l; i++)
-    if (string[i] == '\\' && (string[i + 1] == '`' || string[i + 1] == '\\' ||
-                             string[i + 1] == '$'))
-      strcpy (string + i, string + i + 1);     /* XXX - should be memmove */
-  return (string);
-}
-
-#if 0
-/* Replace instances of \! in a string with !. */
-void
-unquote_bang (string)
-     char *string;
-{
-  register int i, j;
-  register char *temp;
-
-  temp = xmalloc (1 + strlen (string));
-
-  for (i = 0, j = 0; (temp[j] = string[i]); i++, j++)
-    {
-      if (string[i] == '\\' && string[i + 1] == '!')
-       {
-         temp[j] = '!';
-         i++;
-       }
-    }
-  strcpy (string, temp);
-  free (temp);
-}
-#endif
-
-#if defined (READLINE)
-/* Return 1 if the portion of STRING ending at EINDEX is quoted (there is
-   an unclosed quoted string), or if the character at EINDEX is quoted
-   by a backslash. */
-int
-char_is_quoted (string, eindex)
-     char *string;
-     int eindex;
-{
-  int i, pass_next, quoted;
-
-  for (i = pass_next = quoted = 0; i <= eindex; i++)
-    {
-      if (pass_next)
-       {
-         pass_next = 0;
-         if (i >= eindex)      /* XXX was if (i >= eindex - 1) */
-           return 1;
-         continue;
-       }
-      else if (string[i] == '\'' || string[i] == '"')
-       {
-         i = (string[i] == '\'') ? skip_single_quoted (string, ++i)
-                                 : skip_double_quoted (string, ++i);
-         if (i > eindex)
-           return 1;
-       }
-      else if (string[i] == '\\')
-       {
-         pass_next = 1;
-         continue;
-       }
-    }
-  return (0);
-}
-
-int
-unclosed_pair (string, eindex, openstr)
-     char *string;
-     int eindex;
-     char *openstr;
-{
-  int i, pass_next, openc, olen;
-
-  olen = strlen (openstr);
-  for (i = pass_next = openc = 0; i <= eindex; i++)
-    {
-      if (pass_next)
-       {
-         pass_next = 0;
-         if (i >= eindex)      /* XXX was if (i >= eindex - 1) */
-           return 0;
-         continue;
-       }
-      else if (STREQN (string + i, openstr, olen))
-       {
-         openc = 1 - openc;
-         i += olen - 1;
-       }
-      else if (string[i] == '\'' || string[i] == '"')
-       {
-         i = (string[i] == '\'') ? skip_single_quoted (string, i)
-                                 : skip_double_quoted (string, i);
-         if (i > eindex)
-           return 0;
-       }
-      else if (string[i] == '\\')
-       {
-         pass_next = 1;
-         continue;
-       }
-    }
-  return (openc);
-}
-#endif /* READLINE */
-
-#if 0
-/* UNUSED */
-/* Extract the name of the variable to bind to from the assignment string. */
-char *
-assignment_name (string)
-     char *string;
-{
-  int offset;
-  char *temp;
-
-  offset = assignment (string);
-  if (offset == 0)
-    return (char *)NULL;
-  temp = xmalloc (offset + 1);
-  strncpy (temp, string, offset);
-  temp[offset] = '\0';
-  return (temp);
-}
-#endif
-
-/* Return a single string of all the words in LIST.  SEP is the separator
-   to put between individual elements of LIST in the output string. */
-static char *
-string_list_internal (list, sep)
-     WORD_LIST *list;
-     char *sep;
-{
-  register WORD_LIST *t;
-  char *result, *r;
-  int word_len, sep_len, result_size;
-
-  if (list == 0)
-    return ((char *)NULL);
-
-  /* This is nearly always called with either sep[0] == 0 or sep[1] == 0. */
-  sep_len = STRLEN (sep);
-  result_size = 0;
-
-  for (t = list; t; t = t->next)
-    {
-      if (t != list)
-       result_size += sep_len;
-      result_size += strlen (t->word->word);
-    }
-
-  r = result = xmalloc (result_size + 1);
-
-  for (t = list; t; t = t->next)
-    {
-      if (t != list && sep_len)
-       {
-         if (sep_len > 1)
-           {
-             FASTCOPY (sep, r, sep_len);
-             r += sep_len;
-           }
-         else
-           *r++ = sep[0];
-       }
-
-      word_len = strlen (t->word->word);
-      FASTCOPY (t->word->word, r, word_len);
-      r += word_len;
-    }
-
-  *r = '\0';    
-  return (result);
-}
-
-/* Return a single string of all the words present in LIST, separating
-   each word with a space. */
-char *
-string_list (list)
-     WORD_LIST *list;
-{
-  return (string_list_internal (list, " "));
-}
-
-/* Return a single string of all the words present in LIST, obeying the
-   quoting rules for "$*", to wit: (P1003.2, draft 11, 3.5.2) "If the
-   expansion [of $*] appears within a double quoted string, it expands
-   to a single field with the value of each parameter separated by the
-   first character of the IFS variable, or by a <space> if IFS is unset." */
-char *
-string_list_dollar_star (list)
-     WORD_LIST *list;
-{
-  char *ifs, sep[2];
-
-  ifs = get_string_value ("IFS");
-  if (ifs == 0)
-    sep[0] = ' ';
-  else if (*ifs == '\0')
-    sep[0] = '\0';
-  else
-    sep[0] = *ifs;
-
-  sep[1] = '\0';
-
-  return (string_list_internal (list, sep));
-}
-
-/* Return the list of words present in STRING.  Separate the string into
-   words at any of the characters found in SEPARATORS.  If QUOTED is
-   non-zero then word in the list will have its quoted flag set, otherwise
-   the quoted flag is left as make_word () deemed fit.
-
-   This obeys the P1003.2 word splitting semantics.  If `separators' is
-   exactly <space><tab><newline>, then the splitting algorithm is that of
-   the Bourne shell, which treats any sequence of characters from `separators'
-   as a delimiter.  If IFS is unset, which results in `separators' being set
-   to "", no splitting occurs.  If separators has some other value, the
-   following rules are applied (`IFS white space' means zero or more
-   occurrences of <space>, <tab>, or <newline>, as long as those characters
-   are in `separators'):
-
-       1) IFS white space is ignored at the start and the end of the
-          string.
-       2) Each occurrence of a character in `separators' that is not
-          IFS white space, along with any adjacent occurrences of
-          IFS white space delimits a field.
-       3) Any nonzero-length sequence of IFS white space delimits a field.
-   */
-
-/* BEWARE!  list_string strips null arguments.  Don't call it twice and
-   expect to have "" preserved! */
-
-/* Perform quoted null character removal on STRING.  We don't allow any
-   quoted null characters in the middle or at the ends of strings because
-   of how expand_word_internal works.  remove_quoted_nulls () simply
-   turns STRING into an empty string iff it only consists of a quoted null. */
-#define remove_quoted_nulls(string) \
-  do { if (QUOTED_NULL (string)) string[0] ='\0'; } while (0)
-
-/* Perform quoted null character removal on each element of LIST.
-   This modifies LIST. */
-void
-word_list_remove_quoted_nulls (list)
-     WORD_LIST *list;
-{
-  register WORD_LIST *t;
-
-  for (t = list; t; t = t->next)
-    remove_quoted_nulls (t->word->word);
-}
-
-/* This performs word splitting and quoted null character removal on
-   STRING. */
-#define issep(c)       (member ((c), separators))
-
-WORD_LIST *
-list_string (string, separators, quoted)
-     register char *string, *separators;
-     int quoted;
-{
-  WORD_LIST *result;
-  WORD_DESC *t;
-  char *current_word, *s;
-  int sindex, sh_style_split;
-
-  if (!string || !*string)
-    return ((WORD_LIST *)NULL);
-
-  sh_style_split =
-    separators && *separators && (STREQ (separators, " \t\n"));
-
-  /* Remove sequences of whitespace at the beginning of STRING, as
-     long as those characters appear in IFS.  Do not do this if
-     STRING is quoted or if there are no separator characters. */
-  if (!quoted || !separators || !*separators)
-    {
-      for (s = string; *s && spctabnl (*s) && issep (*s); s++);
-
-      if (!*s)
-       return ((WORD_LIST *)NULL);
-
-      string = s;
-    }
-
-  /* OK, now STRING points to a word that does not begin with white space.
-     The splitting algorithm is:
-       extract a word, stopping at a separator
-       skip sequences of spc, tab, or nl as long as they are separators
-     This obeys the field splitting rules in Posix.2. */
-  for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; )
-    {
-      current_word = string_extract_verbatim (string, &sindex, separators);
-      if (current_word == 0)
-       break;
-
-      /* If we have a quoted empty string, add a quoted null argument.  We
-        want to preserve the quoted null character iff this is a quoted
-        empty string; otherwise the quoted null characters are removed
-        below. */
-#if 0
-      if (QUOTED_NULL (current_word))
-       {
-         t = make_bare_word ("");
-         t->flags |= W_QUOTED;
-         free (t->word);
-         t->word = make_quoted_char ('\0');
-         result = make_word_list (t, result);
-       }
-      else if (current_word[0] != '\0')
-#else
-      if (current_word[0] != '\0')
-#endif
-       {
-         /* If we have something, then add it regardless.  However,
-            perform quoted null character removal on the current word. */
-#if 0
-         remove_quoted_nulls (current_word);
-#endif
-         result = make_word_list (make_word (current_word), result);
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-           result->word->flags |= W_QUOTED;
-       }
-
-      /* If we're not doing sequences of separators in the traditional
-        Bourne shell style, then add a quoted null argument. */
-      else if (!sh_style_split && !spctabnl (string[sindex]))
-       {
-         t = make_bare_word ("");
-         t->flags |= W_QUOTED;
-         free (t->word);
-         t->word = make_quoted_char ('\0');
-         result = make_word_list (t, result);
-       }
-
-      free (current_word);
-
-      /* Move past the current separator character. */
-      if (string[sindex])
-       sindex++;
-
-      /* Now skip sequences of space, tab, or newline characters if they are
-        in the list of separators. */
-      while (string[sindex] && spctabnl (string[sindex]) && issep (string[sindex]))
-       sindex++;
-    }
-  return (REVERSE_LIST (result, WORD_LIST *));
-}
-
-/* Parse a single word from STRING, using SEPARATORS to separate fields.
-   ENDPTR is set to the first character after the word.  This is used by
-   the `read' builtin.
-   XXX - this function is very similar to list_string; they should be
-        combined - XXX */
-char *
-get_word_from_string (stringp, separators, endptr)
-     char **stringp, *separators, **endptr;
-{
-  register char *s;
-  char *current_word;
-  int sindex, sh_style_split;
-
-  if (!stringp || !*stringp || !**stringp)
-    return ((char *)NULL);
-    
-  s = *stringp;
-
-  sh_style_split =
-    separators && *separators && (STREQ (separators, " \t\n"));
-
-  /* Remove sequences of whitespace at the beginning of STRING, as
-     long as those characters appear in IFS. */
-  if (sh_style_split || !separators || !*separators)
-    {
-      for (; *s && spctabnl (*s) && issep (*s); s++);
-
-      /* If the string is nothing but whitespace, update it and return. */
-      if (!*s)
-       {
-         *stringp = s;
-         if (endptr)
-           *endptr = s;
-         return ((char *)NULL);
-       }
-    }
-
-  /* OK, S points to a word that does not begin with white space.
-     Now extract a word, stopping at a separator, save a pointer to
-     the first character after the word, then skip sequences of spc,
-     tab, or nl as long as they are separators.
-     
-     This obeys the field splitting rules in Posix.2. */
-  sindex = 0;
-  current_word = string_extract_verbatim (s, &sindex, separators);
-
-  /* Set ENDPTR to the first character after the end of the word. */
-  if (endptr)
-    *endptr = s + sindex;
-
-  /* Move past the current separator character. */
-  if (s[sindex])
-    sindex++;
-
-  /* Now skip sequences of space, tab, or newline characters if they are
-     in the list of separators. */
-  while (s[sindex] && spctabnl (s[sindex]) && issep (s[sindex]))
-    sindex++;
-
-  /* Update STRING to point to the next field. */
-  *stringp = s + sindex;
-  return (current_word);
-}
-
-/* Remove IFS white space at the end of STRING.  Start at the end
-   of the string and walk backwards until the beginning of the string
-   or we find a character that's not IFS white space and not CTLESC.
-   Only let CTLESC escape a white space character if SAW_ESCAPE is
-   non-zero.  */
-char *
-strip_trailing_ifs_whitespace (string, separators, saw_escape)
-     char *string, *separators;
-     int saw_escape;
-{
-  char *s;
-  
-  s = string + STRLEN (string) - 1;
-  while (s > string && ((spctabnl (*s) && issep (*s)) ||
-                       (saw_escape && *s == CTLESC && spctabnl (s[1]))))
-    s--;
-  *++s = '\0';
-  return string;
-}
-
-#if defined (ARRAY_VARS)
-WORD_LIST *
-list_string_with_quotes (string)
-     char *string;
-{
-  WORD_LIST *list;
-  char *token, *s;
-  int c, i, tokstart, len;
-
-  for (s = string; s && *s && spctabnl (*s); s++)
-    ;
-  if (s == 0 || *s == 0)
-    return ((WORD_LIST *)NULL);
-
-  tokstart = i = 0;
-  list = (WORD_LIST *)NULL;
-  while (1)
-    {
-      c = s[i];
-      if (c == '\\')
-       {
-         i++;
-         if (s[i])
-           i++;
-       } 
-      else if (c == '\'')
-        i = skip_single_quoted (s, ++i);
-      else if (c == '"')
-       i = skip_double_quoted (s, ++i);
-      else if (c == 0 || spctabnl (c))
-       {
-         /* We have found the end of a token.  Make a word out of it and
-            add it to the word list. */
-         len = i - tokstart;
-         token = xmalloc (len + 1);
-         strncpy (token, s + tokstart, len);
-         token[len] = '\0';
-         list = make_word_list (make_word (token), list);
-         free (token);
-         while (spctabnl (s[i]))
-           i++;
-         if (s[i])
-           tokstart = i;
-         else
-           break;
-       }
-      else
-       i++;    /* normal character */
-    }
-  return (REVERSE_LIST (list, WORD_LIST *));
-}
-#endif /* ARRAY_VARS */
-
-#if defined (PROCESS_SUBSTITUTION)
-#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC)
-#else
-#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC)
-#endif
-
-/* If there are any characters in STRING that require full expansion,
-   then call FUNC to expand STRING; otherwise just perform quote
-   removal if necessary.  This returns a new string. */
-static char *
-maybe_expand_string (string, quoted, func)
-     char *string;
-     int quoted;
-     WORD_LIST *(*func)();
-{
-  WORD_LIST *list;
-  int i, saw_quote;
-  char *ret;
-     
-  for (i = saw_quote = 0; string[i]; i++)
-    {
-      if (EXP_CHAR (string[i]))
-       break;
-      else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"')
-       saw_quote = 1;
-    }
-
-  if (string[i])
-    {    
-      list = (*func) (string, quoted);
-      if (list)
-       {
-         ret = string_list (list);
-         dispose_words (list);
-       }
-      else
-       ret = (char *)NULL;
-    }
-  else if (saw_quote && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
-    ret = string_quote_removal (string, quoted);
-  else
-    ret = savestring (string);
-  return ret;
-}
-
-#if defined (ARRAY_VARS)
-SHELL_VAR *
-do_array_element_assignment (name, value)
-     char *name, *value;
-{
-  char *t;
-  int ind, ni;
-  SHELL_VAR *entry;
-
-  t = strchr (name, '[');
-  if (t == 0)
-    return ((SHELL_VAR *)NULL);
-  ind = t - name;
-  ni = skipsubscript (name, ind);
-  if ((ALL_ELEMENT_SUB (t[1]) && t[2] == ']') || (ni <= ind + 1))
-    {
-      report_error ("%s: bad array subscript", name);
-      return ((SHELL_VAR *)NULL);
-    }
-  *t++ = '\0';
-  ind = array_expand_index (t, ni - ind);
-  if (ind < 0)
-    {
-      t[-1] = '[';             /* restore original name */
-      report_error ("%s: bad array subscript", name);
-      return ((SHELL_VAR *)NULL);
-    }
-  entry = bind_array_variable (name, ind, value);
-  t[-1] = '[';         /* restore original name */
-  return (entry);
-}
-#endif /* ARRAY_VARS */
-
-/* Given STRING, an assignment string, get the value of the right side
-   of the `=', and bind it to the left side.  If EXPAND is true, then
-   perform parameter expansion, command substitution, and arithmetic
-   expansion on the right-hand side.  Perform tilde expansion in any
-   case.  Do not perform word splitting on the result of expansion. */
-static int
-do_assignment_internal (string, expand)
-     char *string;
-     int expand;
-{
-  int offset;
-  char *name, *value;
-  SHELL_VAR *entry;
-#if defined (ARRAY_VARS)
-  char *t;
-  int ni, assign_list = 0;
-#endif
-
-  offset = assignment (string);
-  name = savestring (string);
-  value = (char *)NULL;
-
-  if (name[offset] == '=')
-    {
-      char *temp;
-
-      name[offset] = 0;
-      temp = name + offset + 1;
-
-#if defined (ARRAY_VARS)
-      if (expand && temp[0] == '(' && strchr (temp, ')'))
-       {
-         assign_list = ni = 1;
-         value = extract_delimited_string (temp, &ni, "(", "(", ")");
-       }
-      else
-#endif
-      if (expand && temp[0])
-       {
-         temp = (strchr (temp, '~') && unquoted_member ('~', temp))
-                  ? bash_tilde_expand (temp)
-                  : savestring (temp);
-
-         value = maybe_expand_string (temp, 0, expand_string_unsplit);
-         free (temp);
-       }
-      else
-       value = savestring (temp);
-    }
-
-  if (value == 0)
-    value = savestring ("");
-
-  if (echo_command_at_execute)
-#if defined (ARRAY_VARS)
-    if (assign_list)
-      fprintf (stderr, "%s%s=(%s)\n", indirection_level_string (), name, value);
-    else
-#endif
-    fprintf (stderr, "%s%s=%s\n", indirection_level_string (), name, value);
-
-#define ASSIGN_RETURN(r)       FREE (value); free (name); return (r);
-
-#if defined (ARRAY_VARS)
-  if (t = strchr (name, '['))
-    {
-      if (assign_list)
-       {
-         report_error ("%s: cannot assign list to array member", name);
-         ASSIGN_RETURN (0);
-       }
-      entry = do_array_element_assignment (name, value);
-      if (entry == 0)
-        ASSIGN_RETURN (0);
-    }
-  else if (assign_list)
-    entry = assign_array_from_string (name, value);
-  else
-#endif /* ARRAY_VARS */
-  entry = bind_variable (name, value);
-
-  stupidly_hack_special_variables (name);
-
-  if (entry)
-    entry->attributes &= ~att_invisible;
-
-  /* Return 1 if the assignment seems to have been performed correctly. */
-  ASSIGN_RETURN (entry ? ((entry->attributes & att_readonly) == 0) : 0);
-}
-
-/* Perform the assignment statement in STRING, and expand the
-   right side by doing command and parameter expansion. */
-int
-do_assignment (string)
-     char *string;
-{
-  return do_assignment_internal (string, 1);
-}
-
-/* Given STRING, an assignment string, get the value of the right side
-   of the `=', and bind it to the left side.  Do not do command and
-   parameter substitution on the right hand side. */
-int
-do_assignment_no_expand (string)
-     char *string;
-{
-  return do_assignment_internal (string, 0);
-}
-
-/* Most of the substitutions must be done in parallel.  In order
-   to avoid using tons of unclear goto's, I have some functions
-   for manipulating malloc'ed strings.  They all take INDX, a
-   pointer to an integer which is the offset into the string
-   where manipulation is taking place.  They also take SIZE, a
-   pointer to an integer which is the current length of the
-   character array for this string. */
-
-/* Append SOURCE to TARGET at INDEX.  SIZE is the current amount
-   of space allocated to TARGET.  SOURCE can be NULL, in which
-   case nothing happens.  Gets rid of SOURCE by freeing it.
-   Returns TARGET in case the location has changed. */
-inline char *
-sub_append_string (source, target, indx, size)
-     char *source, *target;
-     int *indx, *size;
-{
-  if (source)
-    {
-      int srclen, n;
-
-      srclen = strlen (source);
-      if (srclen >= (int)(*size - *indx))
-       {
-         n = srclen + *indx;
-         n = (n + DEFAULT_ARRAY_SIZE) - (n % DEFAULT_ARRAY_SIZE);
-         target = xrealloc (target, (*size = n));
-       }
-
-      FASTCOPY (source, target + *indx, srclen);
-      *indx += srclen;
-      target[*indx] = '\0';
-
-      free (source);
-    }
-  return (target);
-}
-
-#if 0
-/* UNUSED */
-/* Append the textual representation of NUMBER to TARGET.
-   INDX and SIZE are as in SUB_APPEND_STRING. */
-char *
-sub_append_number (number, target, indx, size)
-     int number, *indx, *size;
-     char *target;
-{
-  char *temp;
-
-  temp = itos (number);
-  return (sub_append_string (temp, target, indx, size));
-}
-#endif
-
-/* Return the word list that corresponds to `$*'. */
-WORD_LIST *
-list_rest_of_args ()
-{
-  register WORD_LIST *list, *args;
-  int i;
-
-  /* Break out of the loop as soon as one of the dollar variables is null. */
-  for (i = 1, list = (WORD_LIST *)NULL; i < 10 && dollar_vars[i]; i++)
-    list = make_word_list (make_bare_word (dollar_vars[i]), list);
-
-  for (args = rest_of_args; args; args = args->next)
-    list = make_word_list (make_bare_word (args->word->word), list);
-
-  return (REVERSE_LIST (list, WORD_LIST *));
-}
-
-int
-number_of_args ()
-{
-  register WORD_LIST *list;
-  int n;
-
-  for (n = 0; n < 9 && dollar_vars[n+1]; n++)
-    ;
-  for (list = rest_of_args; list; list = list->next)
-    n++;
-  return n;
-}
-
-/* Make a single large string out of the dollar digit variables,
-   and the rest_of_args.  If DOLLAR_STAR is 1, then obey the special
-   case of "$*" with respect to IFS. */
-char *
-string_rest_of_args (dollar_star)
-     int dollar_star;
-{
-  register WORD_LIST *list;
-  char *string;
-
-  list = list_rest_of_args ();
-  string = dollar_star ? string_list_dollar_star (list) : string_list (list);
-  dispose_words (list);
-  return (string);
-}
-
-/***************************************************
- *                                                *
- *        Functions to Expand a String            *
- *                                                *
- ***************************************************/
-/* Call expand_word_internal to expand W and handle error returns.
-   A convenience function for functions that don't want to handle
-   any errors or free any memory before aborting. */
-static WORD_LIST *
-call_expand_word_internal (w, q, c, e)
-     WORD_DESC *w;
-     int q, *c, *e;
-{
-  WORD_LIST *result;
-
-  result = expand_word_internal (w, q, c, e);
-  if (result == &expand_word_error)
-    jump_to_top_level (DISCARD);
-  else if (result == &expand_word_fatal)
-    jump_to_top_level (FORCE_EOF);
-  else
-    return (result);
-}
-
-/* Perform parameter expansion, command substitution, and arithmetic
-   expansion on STRING, as if it were a word.  Leave the result quoted. */
-static WORD_LIST *
-expand_string_internal (string, quoted)
-     char *string;
-     int quoted;
-{
-  WORD_DESC td;
-  WORD_LIST *tresult;
-
-  if (string == 0 || *string == 0)
-    return ((WORD_LIST *)NULL);
-
-  bzero (&td, sizeof (td));
-  td.word = string;
-  tresult = call_expand_word_internal (&td, quoted, (int *)NULL, (int *)NULL);
-  return (tresult);
-}
-
-/* Expand STRING by performing parameter expansion, command substitution,
-   and arithmetic expansion.  Dequote the resulting WORD_LIST before
-   returning it, but do not perform word splitting.  The call to
-   remove_quoted_nulls () is in here because word splitting normally
-   takes care of quote removal. */
-WORD_LIST *
-expand_string_unsplit (string, quoted)
-     char *string;
-     int quoted;
-{
-  WORD_LIST *value;
-
-  if (!string || !*string)
-    return ((WORD_LIST *)NULL);
-
-  value = expand_string_internal (string, quoted);
-  if (value)
-    {
-#if 0
-      if (value->word)
-       remove_quoted_nulls (value->word->word);
-#endif
-      dequote_list (value);
-    }
-  return (value);
-}
-
-/* Expand STRING just as if you were expanding a word, but do not dequote
-   the resultant WORD_LIST.  This is called only from within this file,
-   and is used to correctly preserve quoted characters when expanding
-   things like ${1+"$@"}.  This does parameter expansion, command
-   subsitution, arithmetic expansion, and word splitting. */
-static WORD_LIST *
-expand_string_leave_quoted (string, quoted)
-     char *string;
-     int quoted;
-{
-  WORD_LIST *tlist;
-  WORD_LIST *tresult;
-
-  if (string == 0 || *string == '\0')
-    return ((WORD_LIST *)NULL);
-
-  tlist = expand_string_internal (string, quoted);
-
-  if (tlist)
-    {
-      tresult = word_list_split (tlist);
-      dispose_words (tlist);
-      return (tresult);
-    }
-  return ((WORD_LIST *)NULL);
-}
-
-/* This does not perform word splitting or dequote the WORD_LIST
-   it returns. */
-static WORD_LIST *
-expand_string_for_rhs (string, quoted, dollar_at_p, has_dollar_at)
-     char *string;
-     int quoted, *dollar_at_p, *has_dollar_at;
-{
-  WORD_DESC td;
-  WORD_LIST *tresult;
-
-  if (string == 0 || *string == '\0')
-    return (WORD_LIST *)NULL;
-
-  bzero (&td, sizeof (td));
-  td.word = string;
-  tresult = call_expand_word_internal (&td, quoted, dollar_at_p, has_dollar_at);
-  return (tresult);
-}
-    
-/* Expand STRING just as if you were expanding a word.  This also returns
-   a list of words.  Note that filename globbing is *NOT* done for word
-   or string expansion, just when the shell is expanding a command.  This
-   does parameter expansion, command substitution, arithmetic expansion,
-   and word splitting.  Dequote the resultant WORD_LIST before returning. */
-WORD_LIST *
-expand_string (string, quoted)
-     char *string;
-     int quoted;
-{
-  WORD_LIST *result;
-
-  if (!string || !*string)
-    return ((WORD_LIST *)NULL);
-
-  result = expand_string_leave_quoted (string, quoted);
-  return (result ? dequote_list (result) : result);
-}
-
-/***************************************************
- *                                                *
- *     Functions to handle quoting chars          *
- *                                                *
- ***************************************************/
-
-static WORD_LIST *
-dequote_list (list)
-     WORD_LIST *list;
-{
-  register char *s;
-  register WORD_LIST *tlist;
-
-  for (tlist = list; tlist; tlist = tlist->next)
-    {
-      s = dequote_string (tlist->word->word);
-      free (tlist->word->word);
-      tlist->word->word = s;
-    }
-  return list;
-}
-
-static char *
-make_quoted_char (c)
-     int c;
-{
-  char *temp;
-
-  temp = xmalloc (3);
-  if (c == 0)
-    {
-#if 0
-      temp[0] = CTLNUL;
-      temp[1] = '\0';
-#else
-      temp[0] = '\0';
-#endif
-    }
-  else
-    {
-      temp[0] = CTLESC;
-      temp[1] = c;
-      temp[2] = '\0';
-    }
-  return (temp);
-}
-
-/* Quote STRING.  Return a new string. */
-char *
-quote_string (string)
-     char *string;
-{
-  register char *t;
-  char *result;
-
-  if (*string == 0)
-    {
-      result = xmalloc (2);
-#if 0
-      result[0] = CTLNUL;
-      result[1] = '\0';
-#else
-      result[0] = '\0';
-#endif
-    }
-  else
-    {
-      result = xmalloc ((strlen (string) * 2) + 1);
-
-      for (t = result; *string; )
-       {
-         *t++ = CTLESC;
-         *t++ = *string++;
-       }
-      *t = '\0';
-    }
-  return (result);
-}
-
-/* De-quoted quoted characters in STRING. */
-char *
-dequote_string (string)
-     char *string;
-{
-  register char *t;
-  char *result;
-
-  result = xmalloc (strlen (string) + 1);
-
-#if 0
-  if (QUOTED_NULL (string))
-    {
-      result[0] = '\0';
-      return (result);
-    }
-#endif
-
-  /* If no character in the string can be quoted, don't bother examining
-     each character.  Just return a copy of the string passed to us. */
-  if (strchr (string, CTLESC) == NULL)         /* XXX */
-    {                                          /* XXX */
-      strcpy (result, string);                 /* XXX */
-      return (result);                         /* XXX */
-    }
-
-  for (t = result; *string; string++, t++)
-    {
-      if (*string == CTLESC)
-       {
-         string++;
-
-         if (!*string)
-           break;
-       }
-
-      *t = *string;
-    }
-
-  *t = '\0';
-  return (result);
-}
-
-/* Quote the entire WORD_LIST list. */
-static WORD_LIST *
-quote_list (list)
-     WORD_LIST *list;
-{
-  register WORD_LIST *w;
-  char *t;
-
-  for (w = list; w; w = w->next)
-    {
-      t = w->word->word;
-      w->word->word = quote_string (t);
-      free (t);
-      w->word->flags |= W_QUOTED;
-    }
-  return list;
-}
-
-/* **************************************************************** */
-/*                                                                 */
-/*                 Functions for Removing Patterns                 */
-/*                                                                 */
-/* **************************************************************** */
-
-/* Remove the portion of PARAM matched by PATTERN according to OP, where OP
-   can have one of 4 values:
-       RP_LONG_LEFT    remove longest matching portion at start of PARAM
-       RP_SHORT_LEFT   remove shortest matching portion at start of PARAM
-       RP_LONG_RIGHT   remove longest matching portion at end of PARAM
-       RP_SHORT_RIGHT  remove shortest matching portion at end of PARAM
-*/
-
-#define RP_LONG_LEFT   1
-#define RP_SHORT_LEFT  2
-#define RP_LONG_RIGHT  3
-#define RP_SHORT_RIGHT 4
-
-static char *
-remove_pattern (param, pattern, op)
-     char *param, *pattern;
-     int op;
-{
-  register int len;
-  register char *end;
-  register char *p, *ret, c;
-
-  if (param == NULL || *param == '\0')
-    return (param);
-  if (pattern == NULL || *pattern == '\0')     /* minor optimization */
-    return (savestring (param));
-
-  len = STRLEN (param);
-  end = param + len;
-
-  switch (op)
-    {
-      case RP_LONG_LEFT:       /* remove longest match at start */
-       for (p = end; p >= param; p--)
-         {
-           c = *p; *p = '\0';
-           if (fnmatch (pattern, param, 0) != FNM_NOMATCH)
-             {
-               *p = c;
-               return (savestring (p));
-             }
-           *p = c;
-         }
-       break;
-
-      case RP_SHORT_LEFT:      /* remove shortest match at start */
-       for (p = param; p <= end; p++)
-         {
-           c = *p; *p = '\0';
-           if (fnmatch (pattern, param, 0) != FNM_NOMATCH)
-             {
-               *p = c;
-               return (savestring (p));
-             }
-           *p = c;
-         }
-       break;
-
-      case RP_LONG_RIGHT:      /* remove longest match at end */
-       for (p = param; p <= end; p++)
-         {
-           if (fnmatch (pattern, p, 0) != FNM_NOMATCH)
-             {
-               c = *p; *p = '\0';
-               ret = savestring (param);
-               *p = c;
-               return (ret);
-             }
-         }
-       break;
-
-      case RP_SHORT_RIGHT:     /* remove shortest match at end */
-       for (p = end; p >= param; p--)
-         {
-           if (fnmatch (pattern, p, 0) != FNM_NOMATCH)
-             {
-               c = *p; *p = '\0';
-               ret = savestring (param);
-               *p = c;
-               return (ret);
-             }
-         }
-       break;
-    }
-  return (savestring (param)); /* no match, return original string */
-}
-
-/* Return 1 of the first character of STRING could match the first
-   character of pattern PAT.  Used to avoid n2 calls to fnmatch(). */
-static int
-match_pattern_char (pat, string)
-     char *pat, *string;
-{
-  register char *np;
-  int neg;
-  char c, c1;
-
-  if (*string == 0)
-    return (0);
-
-  switch (c = *pat++)
-    {
-    default:
-      return (*string == c);
-    case '\\':
-      return (*string == *pat);
-    case '?':
-    case '*':
-      return (1);
-    case '[':
-      for (np = pat; *np != ']'; np++);
-      if (*np == 0)
-        return (*string == '[');
-      if (neg = (*pat == '!' || *pat == '^'))
-       pat++;
-      for ( ; (c1 = *pat++) != ']'; )
-       {
-         if (c1 == '\\')
-           c1 = *pat++;
-         if (c1 == 0)
-           return (0);
-         if (*pat != '-' || pat[1] == '\0' || pat[1] == ']')
-           return (neg ? *string != c1 : *string == c1);
-         if (c1 <= *string && *string <= pat[1])
-           return (1);
-         pat += 2;
-       }
-    }
-}
-
-/* Match PAT anywhere in STRING and return the match boundaries.
-   This returns 1 in case of a successful match, 0 otherwise.  SP
-   and EP are pointers into the string where the match begins and
-   ends, respectively.  MTYPE controls what kind of match is attempted.
-   MATCH_BEG and MATCH_END anchor the match at the beginning and end
-   of the string, respectively.  The longest match is returned. */
-static int
-match_pattern (string, pat, mtype, sp, ep)
-     char *string, *pat;
-     int mtype;
-     char **sp, **ep;
-{
-  int c;
-  register char *p, *p1;
-  char *end;
-
-  if (string == 0 || *string == 0 || pat == 0 || *pat == 0)
-    return (0);
-
-  end = string + STRLEN (string);
-
-  switch (mtype)
-    {
-    case MATCH_ANY:
-      for (p = string; p <= end; p++)
-       {
-         if (match_pattern_char (pat, p))
-           {
-             for (p1 = end; p1 >= p; p1--)
-               {
-                 c = *p1; *p1 = '\0';
-                 if (fnmatch (pat, p, 0) == 0)
-                   {
-                     *p1 = c;
-                     *sp = p;
-                     *ep = p1;
-                     return 1;
-                   }
-                 *p1 = c;
-               }
-           }
-       }
-      return (0);
-
-    case MATCH_BEG:
-      if (match_pattern_char (pat, string) == 0)
-        return (0);
-      for (p = end; p >= string; p--)
-       {
-         c = *p; *p = '\0';
-         if (fnmatch (pat, string, 0) == 0)
-           {
-             *p = c;
-             *sp = string;
-             *ep = p;
-             return 1;
-           }
-         *p = c;
-       }
-      return (0);
-
-    case MATCH_END:
-      for (p = string; p <= end; p++)
-       if (fnmatch (pat, p, 0) == 0)
-         {
-           *sp = p;
-           *ep = end;
-           return 1;
-         }
-      return (0);
-    }
-
-  return (0);
-}
-
-/*******************************************
- *                                        *
- *     Functions to expand WORD_DESCs     *
- *                                        *
- *******************************************/
-
-/* Expand WORD, performing word splitting on the result.  This does
-   parameter expansion, command substitution, arithmetic expansion,
-   word splitting, and quote removal. */
-
-WORD_LIST *
-expand_word (word, quoted)
-     WORD_DESC *word;
-     int quoted;
-{
-  WORD_LIST *result, *tresult;
-
-  tresult = call_expand_word_internal (word, quoted, (int *)NULL, (int *)NULL);
-  result = word_list_split (tresult);
-  dispose_words (tresult);
-  return (result ? dequote_list (result) : result);
-}
-
-/* Expand WORD, but do not perform word splitting on the result.  This
-   does parameter expansion, command substitution, arithmetic expansion,
-   and quote removal. */
-WORD_LIST *
-expand_word_no_split (word, quoted)
-     WORD_DESC *word;
-     int quoted;
-{
-  WORD_LIST *result;
-
-  result = call_expand_word_internal (word, quoted, (int *)NULL, (int *)NULL);
-  return (result ? dequote_list (result) : result);
-}
-
-/* Perform shell expansions on WORD, but do not perform word splitting or
-   quote removal on the result. */
-WORD_LIST *
-expand_word_leave_quoted (word, quoted)
-     WORD_DESC *word;
-     int quoted;
-{
-  return (call_expand_word_internal (word, quoted, (int *)NULL, (int *)NULL));
-}
-
-/* Return the value of a positional parameter.  This handles values > 10. */
-char *
-get_dollar_var_value (ind)
-     int ind;
-{
-  char *temp;
-  WORD_LIST *p;
-
-  if (ind < 10)
-    temp = dollar_vars[ind] ? savestring (dollar_vars[ind]) : (char *)NULL;
-  else /* We want something like ${11} */
-    {
-      ind -= 10;
-      for (p = rest_of_args; p && ind--; p = p->next)
-        ;
-      temp = p ? savestring (p->word->word) : (char *)NULL;
-    }
-  return (temp);
-}
-
-#if defined (PROCESS_SUBSTITUTION)
-
-/* **************************************************************** */
-/*                                                               */
-/*                 Hacking Process Substitution                    */
-/*                                                               */
-/* **************************************************************** */
-
-#if !defined (HAVE_DEV_FD)
-/* Named pipes must be removed explicitly with `unlink'.  This keeps a list
-   of FIFOs the shell has open.  unlink_fifo_list will walk the list and
-   unlink all of them. add_fifo_list adds the name of an open FIFO to the
-   list.  NFIFO is a count of the number of FIFOs in the list. */
-#define FIFO_INCR 20
-extern char *mktemp ();
-
-static char **fifo_list = (char **)NULL;
-static int nfifo = 0;
-static int fifo_list_size = 0;
-
-static void
-add_fifo_list (pathname)
-     char *pathname;
-{
-  if (nfifo >= fifo_list_size - 1)
-    {
-      fifo_list_size += FIFO_INCR;
-      fifo_list = (char **)xrealloc (fifo_list,
-                                    fifo_list_size * sizeof (char *));
-    }
-
-  fifo_list[nfifo++] = savestring (pathname);
-}
-
-void
-unlink_fifo_list ()
-{
-  if (nfifo == 0)
-    return;
-
-  while (nfifo--)
-    {
-      unlink (fifo_list[nfifo]);
-      free (fifo_list[nfifo]);
-      fifo_list[nfifo] = (char *)NULL;
-    }
-  nfifo = 0;
-}
-
-static char *
-make_named_pipe ()
-{
-  char *tname;
-
-  tname = mktemp (savestring ("/tmp/sh-np-XXXXXX"));
-  if (mkfifo (tname, 0666) < 0)
-    {
-      free (tname);
-      return ((char *)NULL);
-    }
-
-  add_fifo_list (tname);
-  return (tname);
-}
-
-#else /* HAVE_DEV_FD */
-
-/* DEV_FD_LIST is a bitmap of file descriptors attached to pipes the shell
-   has open to children.  NFDS is a count of the number of bits currently
-   set in DEV_FD_LIST.  TOTFDS is a count of the highest possible number
-   of open files. */
-static char *dev_fd_list = (char *)NULL;
-static int nfds = 0;
-static int totfds;     /* The highest possible number of open files. */
-
-static void
-add_fifo_list (fd)
-     int fd;
-{
-  if (!dev_fd_list || fd >= totfds)
-    {
-      int zero;
-
-      totfds = getdtablesize ();
-      if (totfds < 0 || totfds > 256)
-       totfds = 256;
-      if (fd > totfds)
-       totfds = fd + 2;
-
-      zero = dev_fd_list == (char *) NULL;
-      dev_fd_list = xrealloc (dev_fd_list, totfds);
-      if (zero)
-       bzero (dev_fd_list, totfds);
-      /* XXX - should zero out new portion of list here - XXX */
-    }
-
-  dev_fd_list[fd] = 1;
-  nfds++;
-}
-
-void
-unlink_fifo_list ()
-{
-  register int i;
-
-  if (nfds == 0)
-    return;
-
-  for (i = 0; nfds && i < totfds; i++)
-    if (dev_fd_list[i])
-      {
-       close (i);
-       dev_fd_list[i] = 0;
-       nfds--;
-      }
-
-  nfds = 0;
-}
-
-#if defined (NOTDEF)
-print_dev_fd_list ()
-{
-  register int i;
-
-  fprintf (stderr, "pid %d: dev_fd_list:", getpid ());
-  fflush (stderr);
-
-  for (i = 0; i < totfds; i++)
-    {
-      if (dev_fd_list[i])
-       fprintf (stderr, " %d", i);
-    }
-  fprintf (stderr, "\n");
-}
-#endif /* NOTDEF */
-
-static char *
-make_dev_fd_filename (fd)
-     int fd;
-{
-  char *ret;
-
-  ret = xmalloc (16);
-  sprintf (ret, "/dev/fd/%d", fd);
-  add_fifo_list (fd);
-  return (ret);
-}
-
-#endif /* HAVE_DEV_FD */
-
-/* Return a filename that will open a connection to the process defined by
-   executing STRING.  HAVE_DEV_FD, if defined, means open a pipe and return
-   a filename in /dev/fd corresponding to a descriptor that is one of the
-   ends of the pipe.  If not defined, we use named pipes on systems that have
-   them.  Systems without /dev/fd and named pipes are out of luck.
-
-   OPEN_FOR_READ_IN_CHILD, if 1, means open the named pipe for reading or
-   use the read end of the pipe and dup that file descriptor to fd 0 in
-   the child.  If OPEN_FOR_READ_IN_CHILD is 0, we open the named pipe for
-   writing or use the write end of the pipe in the child, and dup that
-   file descriptor to fd 1 in the child.  The parent does the opposite. */
-
-static char *
-process_substitute (string, open_for_read_in_child)
-     char *string;
-     int open_for_read_in_child;
-{
-  char *pathname;
-  int fd, result;
-  pid_t old_pid, pid;
-#if defined (HAVE_DEV_FD)
-  int parent_pipe_fd, child_pipe_fd;
-  int fildes[2];
-#endif /* HAVE_DEV_FD */
-#if defined (JOB_CONTROL)
-  pid_t old_pipeline_pgrp;
-#endif  
-
-  if (!string || !*string)
-    return ((char *)NULL);
-
-#if !defined (HAVE_DEV_FD)
-  pathname = make_named_pipe ();
-#else /* HAVE_DEV_FD */
-  if (pipe (fildes) < 0)
-    {
-      internal_error ("can't make pipes for process substitution: %s",
-       strerror (errno));
-      return ((char *)NULL);
-    }
-  /* If OPEN_FOR_READ_IN_CHILD == 1, we want to use the write end of
-     the pipe in the parent, otherwise the read end. */
-  parent_pipe_fd = fildes[open_for_read_in_child];
-  child_pipe_fd = fildes[1 - open_for_read_in_child];
-  pathname = make_dev_fd_filename (parent_pipe_fd);
-#endif /* HAVE_DEV_FD */
-
-  if (!pathname)
-    {
-      internal_error ("cannot make pipe for process subsitution: %s",
-       strerror (errno));
-      return ((char *)NULL);
-    }
-
-  old_pid = last_made_pid;
-
-#if defined (JOB_CONTROL)
-  old_pipeline_pgrp = pipeline_pgrp;
-  pipeline_pgrp = shell_pgrp;
-  cleanup_the_pipeline ();
-#endif /* JOB_CONTROL */
-
-  pid = make_child ((char *)NULL, 1);
-  if (pid == 0)
-    {
-      reset_terminating_signals ();    /* XXX */
-      /* Cancel traps, in trap.c. */
-      restore_original_signals ();
-      setup_async_signals ();
-      subshell_environment++;
-    }
-
-#if defined (JOB_CONTROL)
-  set_sigchld_handler ();
-  stop_making_children ();
-  pipeline_pgrp = old_pipeline_pgrp;
-#endif /* JOB_CONTROL */
-
-  if (pid < 0)
-    {
-      internal_error ("cannot make a child for process substitution: %s",
-       strerror (errno));
-      free (pathname);
-#if defined (HAVE_DEV_FD)
-      close (parent_pipe_fd);
-      close (child_pipe_fd);
-#endif /* HAVE_DEV_FD */
-      return ((char *)NULL);
-    }
-
-  if (pid > 0)
-    {
-      last_made_pid = old_pid;
-
-#if defined (JOB_CONTROL) && defined (PGRP_PIPE)
-      close_pgrp_pipe ();
-#endif /* JOB_CONTROL && PGRP_PIPE */
-
-#if defined (HAVE_DEV_FD)
-      close (child_pipe_fd);
-#endif /* HAVE_DEV_FD */
-
-      return (pathname);
-    }
-
-  set_sigint_handler ();
-
-#if defined (JOB_CONTROL)
-  set_job_control (0);
-#endif /* JOB_CONTROL */
-
-#if !defined (HAVE_DEV_FD)
-  /* Open the named pipe in the child. */
-  fd = open (pathname, open_for_read_in_child ? O_RDONLY : O_WRONLY);
-  if (fd < 0)
-    {
-      internal_error ("cannot open named pipe %s for %s: %s", pathname,
-       open_for_read_in_child ? "reading" : "writing", strerror (errno));
-      exit (127);
-    }
-#else /* HAVE_DEV_FD */
-  fd = child_pipe_fd;
-#endif /* HAVE_DEV_FD */
-
-  if (dup2 (fd, open_for_read_in_child ? 0 : 1) < 0)
-    {
-      internal_error ("cannot duplicate named pipe %s as fd %d: %s",
-       pathname, open_for_read_in_child ? 0 : 1, strerror (errno));
-      exit (127);
-    }
-
-  close (fd);
-
-  /* Need to close any files that this process has open to pipes inherited
-     from its parent. */
-  if (current_fds_to_close)
-    {
-      close_fd_bitmap (current_fds_to_close);
-      current_fds_to_close = (struct fd_bitmap *)NULL;
-    }
-
-#if defined (HAVE_DEV_FD)
-  /* Make sure we close the parent's end of the pipe and clear the slot
-     in the fd list so it is not closed later, if reallocated by, for
-     instance, pipe(2). */
-  close (parent_pipe_fd);
-  dev_fd_list[parent_pipe_fd] = 0;
-#endif /* HAVE_DEV_FD */
-
-  result = parse_and_execute (string, "process substitution", 0);
-
-#if !defined (HAVE_DEV_FD)
-  /* Make sure we close the named pipe in the child before we exit. */
-  close (open_for_read_in_child ? 0 : 1);
-#endif /* !HAVE_DEV_FD */
-
-  exit (result);
-  /*NOTREACHED*/
-}
-#endif /* PROCESS_SUBSTITUTION */
-
-/* Perform command substitution on STRING.  This returns a string,
-   possibly quoted. */
-static char *
-command_substitute (string, quoted)
-     char *string;
-     int quoted;
-{
-  pid_t pid, old_pid, old_pipeline_pgrp;
-  char *istring;
-  int istring_index, istring_size, c, result, fildes[2];
-  FILE *istream;
-
-  istring_index = istring_size = 0;
-
-  /* Don't fork () if there is no need to.  In the case of no command to
-     run, just return NULL. */
-  if (!string || !*string || (string[0] == '\n' && !string[1]))
-    return ((char *)NULL);
-
-  /* Pipe the output of executing STRING into the current shell. */
-  if (pipe (fildes) < 0)
-    {
-      internal_error ("Can't make pipes for command substitution!");
-      goto error_exit;
-    }
-
-  old_pid = last_made_pid;
-#if defined (JOB_CONTROL)
-  old_pipeline_pgrp = pipeline_pgrp;
-  pipeline_pgrp = shell_pgrp;
-  cleanup_the_pipeline ();
-#endif
-
-  istring= (char *)NULL;
-  pid = make_child ((char *)NULL, 0);
-  if (pid == 0)
-    /* Reset the signal handlers in the child, but don't free the
-       trap strings. */
-    reset_signal_handlers ();
-
-#if defined (JOB_CONTROL)
-  set_sigchld_handler ();
-  stop_making_children ();
-  pipeline_pgrp = old_pipeline_pgrp;
-#endif /* JOB_CONTROL */
-
-  if (pid < 0)
-    {
-      internal_error ("Can't make a child for command substitution: %s",
-       strerror (errno));
-    error_exit:
-
-      FREE (istring);
-      close (fildes[0]);
-      close (fildes[1]);
-      return ((char *)NULL);
-    }
-
-  if (pid == 0)
-    {
-      set_sigint_handler ();   /* XXX */
-#if defined (JOB_CONTROL)
-      set_job_control (0);
-#endif
-      if (dup2 (fildes[1], 1) < 0)
-       {
-         internal_error
-           ("command_substitute: cannot duplicate pipe as fd 1: %s",
-            strerror (errno));
-         exit (EXECUTION_FAILURE);
-       }
-
-      /* If standard output is closed in the parent shell
-        (such as after `exec >&-'), file descriptor 1 will be
-        the lowest available file descriptor, and end up in
-        fildes[0].  This can happen for stdin and stderr as well,
-        but stdout is more important -- it will cause no output
-        to be generated from this command. */
-      if ((fildes[1] != fileno (stdin)) &&
-         (fildes[1] != fileno (stdout)) &&
-         (fildes[1] != fileno (stderr)))
-       close (fildes[1]);
-
-      if ((fildes[0] != fileno (stdin)) &&
-         (fildes[0] != fileno (stdout)) &&
-         (fildes[0] != fileno (stderr)))
-       close (fildes[0]);
-
-      /* The currently executing shell is not interactive. */
-      interactive = 0;
-
-      /* Command substitution does not inherit the -e flag. */
-      exit_immediately_on_error = 0;
-
-      remove_quoted_escapes (string);
-
-      startup_state = 2;       /* see if we can avoid a fork */
-      /* Give command substitution 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 (parse_and_execute (string, "command substitution", -1));
-    }
-  else
-    {
-      istream = fdopen (fildes[0], "r");
-
-#if defined (JOB_CONTROL) && defined (PGRP_PIPE)
-      close_pgrp_pipe ();
-#endif /* JOB_CONTROL && PGRP_PIPE */
-
-      close (fildes[1]);
-
-      if (!istream)
-       {
-         internal_error ("Can't reopen pipe to command substitution (fd %d): %s",
-                       fildes[0], strerror (errno));
-         goto error_exit;
-       }
-
-      /* Read the output of the command through the pipe. */
-      while (1)
-       {
-#if !defined (HAVE_RESTARTABLE_SYSCALLS)
-         c = getc_with_restart (istream);
-#else
-         c = getc (istream);
-#endif /* HAVE_RESTARTABLE_SYSCALLS */
-
-         if (c == EOF)
-           break;
-
-         /* Add the character to ISTRING. */
-         if (istring_index + 2 >= istring_size)
-           {
-             while (istring_index + 2 >= istring_size)
-               istring_size += DEFAULT_ARRAY_SIZE;
-             istring = xrealloc (istring, istring_size);
-           }
-
-         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC /* || c == CTLNUL */)
-           istring[istring_index++] = CTLESC;
-
-         istring[istring_index++] = c;
-       }
-
-      if (istring)
-       istring[istring_index] = '\0';
-
-      fclose (istream);
-      close (fildes[0]);
-
-      last_command_exit_value = wait_for (pid);
-      last_command_subst_pid = pid;
-      last_made_pid = old_pid;
-
-#if defined (JOB_CONTROL)
-      /* If last_command_exit_value > 128, then the substituted command
-        was terminated by a signal.  If that signal was SIGINT, then send
-        SIGINT to ourselves.  This will break out of loops, for instance. */
-      if (last_command_exit_value == (128 + SIGINT))
-       kill (getpid (), SIGINT);
-
-      /* wait_for gives the terminal back to shell_pgrp.  If some other
-        process group should have it, give it away to that group here. */
-      if (interactive && pipeline_pgrp != (pid_t)0)
-       give_terminal_to (pipeline_pgrp);
-#endif /* JOB_CONTROL */
-
-      /* If we read no output, just return now and save ourselves some
-        trouble. */
-      if (istring_index == 0)
-       goto error_exit;
-
-      /* Strip trailing newlines from the output of the command. */
-      if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-       {
-         while (istring_index > 0)
-           {
-             if (istring[istring_index - 1] == '\n')
-               {
-                 --istring_index;
-
-                 /* If the newline was quoted, remove the quoting char. */
-                 if (istring[istring_index - 1] == CTLESC)
-                   --istring_index;
-               }
-             else
-               break;
-           }
-         istring[istring_index] = '\0';
-       }
-      else
-       strip_trailing (istring, 1);
-
-      return (istring);
-    }
-}
-
-/********************************************************
- *                                                     *
- *     Utility functions for parameter expansion       *
- *                                                     *
- ********************************************************/
-
-static int
-getpatspec (c, value)
-     int c;
-     char *value;
-{
-  if (c == '#')
-    return ((*value == '#') ? RP_LONG_LEFT : RP_SHORT_LEFT);
-  else /* c == '%' */
-    return ((*value == '%') ? RP_LONG_RIGHT : RP_SHORT_RIGHT);
-}
-
-/* Posix.2 says that the WORD should be run through tilde expansion,
-   parameter expansion, command substitution and arithmetic expansion.
-   This leaves the result quoted, so quote_string_for_globbing () has
-   to be called to fix it up for fnmatch ().  If QUOTED is non-zero,
-   it means that the entire expression was enclosed in double quotes.
-   This means that quoting characters in the pattern do not make any
-   special pattern characters quoted.  For example, the `*' in the
-   following retains its special meaning: "${foo#'*'}". */
-static char *
-getpattern (value, quoted, expandpat)
-     char *value;
-     int quoted, expandpat;
-{
-  char *pat, *tword;
-  WORD_LIST *l;
-  int i;
-
-  tword = strchr (value, '~') ? bash_tilde_expand (value) : savestring (value);
-
-  /* expand_string_internal () leaves WORD quoted and does not perform
-     word splitting. */
-  if (expandpat && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *tword)
-    {
-      i = 0;
-      pat = string_extract_double_quoted (tword, &i, 1);
-      free (tword);
-      tword = pat;
-    }
-
-  /* There is a problem here:  how to handle single or double quotes in the
-     pattern string when the whole expression is between double quotes? */
-#if 0
-  l = *tword ? expand_string_for_rhs (tword, quoted, (int *)NULL, (int *)NULL)
-#else
-  l = *tword ? expand_string_for_rhs (tword,
-                                     (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_NOQUOTE : quoted,
-                                     (int *)NULL, (int *)NULL)
-#endif
-            : (WORD_LIST *)0;
-  free (tword);
-  pat = string_list (l);
-  dispose_words (l);
-  if (pat)
-    {
-      tword = quote_string_for_globbing (pat, 1);
-      free (pat);
-      pat = tword;
-    }
-  return (pat);
-}
-
-/* Handle removing a pattern from a string as a result of ${name%[%]value}
-   or ${name#[#]value}. */
-static char *
-parameter_brace_remove_pattern (value, temp, c, quoted)
-     char *value, *temp;
-     int c, quoted;
-{
-  int patspec;
-  char *pattern, *tword;
-
-  patspec = getpatspec (c, value);
-  if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT)
-    value++;
-
-  pattern = getpattern (value, quoted, 1);
-
-  tword = remove_pattern (temp, pattern, patspec);
-
-  FREE (pattern);
-  return (tword);
-}
-
-static char *
-list_remove_pattern (list, pattern, patspec, type, quoted)
-     WORD_LIST *list;
-     char *pattern;
-     int patspec, type, quoted;
-{
-  WORD_LIST *new, *l;
-  WORD_DESC *w;
-  char *tword;
-
-  for (new = (WORD_LIST *)NULL, l = list; l; l = l->next)
-    {
-      tword = remove_pattern (l->word->word, pattern, patspec);
-      w = make_bare_word (tword);
-      new = make_word_list (w, new);
-    }
-
-  l = REVERSE_LIST (new, WORD_LIST *);
-  if (type == '*')
-    tword = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l);
-  else
-    tword = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l);
-
-  dispose_words (l);
-  return (tword);
-}
-
-static char *
-parameter_list_remove_pattern (value, type, c, quoted)
-     char *value;
-     int type, c, quoted;
-{
-  int patspec;
-  char *pattern;
-
-  patspec = getpatspec (c, value);
-  if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT)
-    value++;
-
-  pattern = getpattern (value, quoted, 1);
-
-  return (list_remove_pattern (list_rest_of_args (), pattern, patspec, type, quoted));
-}
-
-#if defined (ARRAY_VARS)
-static char *
-array_remove_pattern (value, aspec, c, quoted)
-     char *value, *aspec;
-     int c, quoted;
-{
-  SHELL_VAR *var;
-  int len, ind, patspec;
-  char *ret, *t, *pattern;
-  WORD_LIST *l;
-
-  var = array_variable_part (aspec, &t, &len);
-  if (var == 0)
-    return ((char *)NULL);
-
-  patspec = getpatspec (c, value);
-  if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT)
-    value++;
-
-  pattern = getpattern (value, quoted, 1);
-
-  if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
-    {
-      if (array_p (var) == 0)
-        {
-          report_error ("%s: bad array subscript", aspec);
-          return ((char *)NULL);
-        }
-      l = array_to_word_list (array_cell (var));
-      if (l == 0)
-        return ((char *)NULL);
-      ret = list_remove_pattern (l, pattern, patspec, t[0], quoted);
-      dispose_words (l);
-    }
-  else
-    {
-      ind = array_expand_index (t, len);
-      if (ind < 0)
-       {
-         report_error ("%s: bad array subscript", aspec);
-         return ((char *)NULL);
-       }
-      if (array_p (var) == 0 && ind != 0)
-       return ((char *)NULL);
-
-      t = array_p (var) ? array_reference (array_cell (var), ind) : value_cell (var);
-      ret = remove_pattern (t, pattern, patspec);
-      if (ret)
-       quote_escapes (ret);
-    }
-  return ret;
-}
-
-int
-valid_array_reference (name)
-     char *name;
-{
-  char *t;
-  int r, len;
-
-  t = strchr (name, '[');
-  if (t)
-    {
-      *t = '\0';
-      r = legal_identifier (name);
-      *t = '[';
-      if (r == 0)
-       return 0;
-      /* Check for a properly-terminated non-blank subscript. */
-      len = skipsubscript (t, 0);
-      if (t[len] != ']' || len == 1)
-       return 0;
-      for (r = 1; r < len; r++)
-       if (whitespace (t[r]) == 0)
-         return 1;
-      return 0;
-    }
-  return 0;
-}
-
-/* Expand the array index beginning at S and extending LEN characters. */
-int
-array_expand_index (s, len)
-     char *s;
-     int len;
-{
-  char *exp, *t;
-  int val;
-
-  exp = xmalloc (len);
-  strncpy (exp, s, len - 1);
-  exp[len - 1] = '\0';
-  t = maybe_expand_string (exp, 0, expand_string);
-  this_command_name = (char *)NULL;
-  val = evalexp (t);
-  free (t);
-  free (exp);
-  return val;
-}
-
-/* Return the variable specified by S without any subscript.  If non-null,
-   return the index of the start of the subscript in *SUBP.  If non-null,
-   the length of the subscript is returned in *LENP. */
-SHELL_VAR *
-array_variable_part (s, subp, lenp)
-     char *s, **subp;
-     int *lenp;
-{
-  char *t;
-  int ind, ni;
-  SHELL_VAR *var;
-
-  t = strchr (s, '[');
-  ind = t - s;
-  ni = skipsubscript (s, ind);
-  if (ni <= ind + 1 || s[ni] != ']')
-    {
-      report_error ("%s: bad array subscript", s);
-      return ((SHELL_VAR *)NULL);
-    }
-
-  *t = '\0';
-  var = find_variable (s);
-  *t++ = '[';
-
-  if (subp)
-    *subp = t;
-  if (lenp)
-    *lenp = ni - ind;
-  return var;
-}
-
-static char *
-array_value_internal (s, quoted, allow_all)
-     char *s;
-     int quoted, allow_all;
-{
-  int len, ind;
-  char *retval, *t;
-  WORD_LIST *l;
-  SHELL_VAR *var;
-
-  var = array_variable_part (s, &t, &len);
-
-  if (var == 0)
-    return (char *)NULL;
-
-  if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
-    {
-      if (array_p (var) == 0 || allow_all == 0)
-        {
-          report_error ("%s: bad array subscript", s);
-          return ((char *)NULL);
-        }
-      l = array_to_word_list (array_cell (var));
-      if (l == (WORD_LIST *)NULL)
-       return ((char *) NULL);
-
-      if (t[0] == '*')         /* ${name[*]} */
-       retval = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l);
-      else                     /* ${name[@]} */
-       retval = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l);
-
-      dispose_words (l);
-    }
-  else
-    {
-      ind = array_expand_index (t, len);
-      if (ind < 0)
-       {
-         report_error ("%s: bad array subscript", var->name);
-         return ((char *)NULL);
-       }
-      if (array_p (var) == 0)
-        return (ind == 0 ? value_cell (var) : (char *)NULL);
-      retval = array_reference (array_cell (var), ind);
-      if (retval)
-       retval = quote_escapes (retval);
-    }
-
-  return retval;
-}
-
-static char *
-array_value (s, quoted)
-     char *s;
-     int quoted;
-{
-  return (array_value_internal (s, quoted, 1));
-}
-
-/* Return the value of the array indexing expression S as a single string.
-   If ALLOW_ALL is 0, do not allow `@' and `*' subscripts.  This is used
-   by other parts of the shell such as the arithmetic expression evaluator
-   in expr.c. */
-char *
-get_array_value (s, allow_all)
-     char *s;
-     int allow_all;
-{
-  return (array_value_internal (s, 0, allow_all));
-}
-
-static int
-array_length_reference (s)
-     char *s;
-{
-  int ind, len;
-  char *t;
-  ARRAY *array;
-  SHELL_VAR *var;
-
-  var = array_variable_part (s, &t, &len);
-
-  if (var == 0 || array_p (var) == 0)
-    return (0);
-
-  array = array_cell (var);
-
-  if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
-    return (array_num_elements (array));
-
-  ind = array_expand_index (t, len);
-  if (ind < 0)
-    {
-      report_error ("%s: bad array subscript", t);
-      return (0);
-    }
-  t = array_reference (array, ind);
-  len = STRLEN (t);
-
-  return (len);
-}
-#endif /* ARRAY_VARS */
-
-static int
-valid_brace_expansion_word (name, var_is_special)
-     char *name;
-     int var_is_special;
-{
-  if (digit (*name) && all_digits (name))
-    return 1;
-  else if (var_is_special)
-    return 1;
-#if defined (ARRAY_VARS)
-  else if (valid_array_reference (name))
-    return 1;
-#endif /* ARRAY_VARS */
-  else if (legal_identifier (name))
-    return 1;
-  else
-    return 0;
-}
-
-/* Parameter expand NAME, and return a new string which is the expansion,
-   or NULL if there was no expansion.
-   VAR_IS_SPECIAL is non-zero if NAME is one of the special variables in
-   the shell, e.g., "@", "$", "*", etc.  QUOTED, if non-zero, means that
-   NAME was found inside of a double-quoted expression. */
-static char *
-parameter_brace_expand_word (name, var_is_special, quoted)
-     char *name;
-     int var_is_special, quoted;
-{
-  char *temp, *tt;
-  int arg_index;
-  SHELL_VAR *var;
-  WORD_LIST *l;
-
-  /* Handle multiple digit arguments, as in ${11}. */
-  if (digit (*name))
-    {
-      arg_index = atoi (name);
-      temp = get_dollar_var_value (arg_index);
-    }
-  else if (var_is_special)      /* ${@} */
-    {
-      tt = xmalloc (2 + strlen (name));
-      tt[0] = '$';
-      strcpy (tt + 1, name);
-      l = expand_string_leave_quoted (tt, quoted);
-      free (tt);
-      temp = string_list (l);
-      dispose_words (l);
-    }
-#if defined (ARRAY_VARS)
-  else if (valid_array_reference (name))
-    {
-      temp = array_value (name, quoted);
-    }
-#endif
-  else if (var = find_variable (name))
-    {
-      if (var && invisible_p (var) == 0)
-        {
-#if defined (ARRAY_VARS)
-         temp = array_p (var) ? array_reference (array_cell (var), 0) : value_cell (var);
-#else
-         temp = value_cell (var);
-#endif
-
-         if (temp)
-           temp = quote_escapes (temp);
-        }
-      else
-       temp = (char *)NULL;
-    }
-  else
-    temp = (char *)NULL;
-
-  return (temp);
-}
-
-/* Expand an indirect reference to a variable: ${!NAME} expands to the
-   value of the variable whose name is the value of NAME. */
-static char *
-parameter_brace_expand_indir (name, var_is_special, quoted)
-     char *name;
-     int var_is_special, quoted;
-{
-  char *temp, *t;
-
-  t = parameter_brace_expand_word (name, var_is_special, quoted);
-  if (t == 0)
-    return (t);
-  temp = parameter_brace_expand_word (t, t[0] == '@' && t[1] == '\0', quoted);
-  free (t);
-  return temp;
-}
-
-/* Expand the right side of a parameter expansion of the form ${NAMEcVALUE},
-   depending on the value of C, the separating character.  C can be one of
-   "-", "+", or "=".  QUOTED is true if the entire brace expression occurs
-   between double quotes. */
-static char *
-parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat)
-     char *name, *value;
-     int c, quoted, *qdollaratp, *hasdollarat;
-{
-  WORD_LIST *l;
-  char *t, *t1, *temp;
-  int hasdol;
-
-  temp = (*value == '~' || (strchr (value, '~') && unquoted_substring ("=~", value)))
-        ? bash_tilde_expand (value)
-       : savestring (value);
-
-  /* If the entire expression is between double quotes, we want to treat
-     the value as a double-quoted string, with the exception that we strip
-     embedded unescaped double quotes. */
-  if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *temp)
-    {
-      hasdol = 0;
-      t = string_extract_double_quoted (temp, &hasdol, 1);
-      free (temp);
-      temp = t;
-    }
-    
-  hasdol = 0;
-  /* XXX was 0 not quoted */
-  l = *temp ? expand_string_for_rhs (temp, quoted, &hasdol, (int *)NULL)
-           : (WORD_LIST *)0;
-  if (hasdollarat)
-    *hasdollarat = hasdol || (l && l->next);
-  free (temp);
-  if (l)
-    {
-      /* The expansion of TEMP returned something.  We need to treat things
-         slightly differently if HASDOL is non-zero. */
-      temp = string_list (l);
-      /* If l->next is not null, we know that TEMP contained "$@", since that
-        is the only expansion that creates more than one word. */
-      if ((hasdol && quoted) || l->next)
-       *qdollaratp = 1;
-      dispose_words (l);
-    }
-  else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && hasdol)
-    {
-      /* The brace expansion occurred between double quotes and there was 
-        a $@ in TEMP.  It does not matter if the $@ is quoted, as long as
-        it does not expand to anything.  In this case, we want to return
-        a quoted empty string. */
-      temp = xmalloc (2);
-#if 0
-      temp[0] = CTLNUL;
-      temp[1] = '\0';
-#else
-      temp[0] = '\0';
-#endif
-    }
-  else
-    temp = (char *)NULL;
-
-  if (c == '-' || c == '+')
-    return (temp);
-
-  /* c == '=' */
-  t = temp ? savestring (temp) : savestring ("");
-  t1 = dequote_string (t);
-  free (t);
-  bind_variable (name, t1);
-  free (t1);
-  return (temp);
-}
-
-/* Deal with the right hand side of a ${name:?value} expansion in the case
-   that NAME is null or not set.  If VALUE is non-null it is expanded and
-   used as the error message to print, otherwise a standard message is
-   printed. */
-static void
-parameter_brace_expand_error (name, value)
-     char *name, *value;
-{
-  WORD_LIST *l;
-  char *temp;
-
-  if (value && *value)
-    {
-      l = expand_string (value, 0);
-      temp =  string_list (l);
-      report_error ("%s: %s", name, temp ? temp : value);
-      FREE (temp);
-      dispose_words (l);
-    }
-  else
-    report_error ("%s: parameter null or not set", name);
-
-  /* Free the data we have allocated during this expansion, since we
-     are about to longjmp out. */
-  free (name);
-  FREE (value);
-}
-
-/* Return 1 if NAME is something for which parameter_brace_expand_length is
-   OK to do. */
-static int
-valid_length_expression (name)
-     char *name;
-{
-  return (!name[1] ||                                          /* ${#} */
-         ((name[1] == '@' || name[1] == '*') && !name[2]) ||   /* ${#@}, ${#*} */
-         (digit (name[1]) && all_digits (name + 1)) ||         /* ${#11} */
-#if defined (ARRAY_VARS)
-         valid_array_reference (name + 1) ||                   /* ${#a[7]} */
-#endif
-         legal_identifier (name + 1));                         /* ${#PS1} */
-}
-
-/* Handle the parameter brace expansion that requires us to return the
-   length of a parameter. */
-static int
-parameter_brace_expand_length (name)
-     char *name;
-{
-  char *t, *newname;
-  int number;
-  WORD_LIST *list;
-#if defined (ARRAY_VARS)
-  SHELL_VAR *var;
-#endif
-
-  if (name[1] == '\0')                 /* ${#} */
-    number = number_of_args ();
-#if defined (ARRAY_VARS)
-  else if (valid_array_reference (name + 1))
-    number = array_length_reference (name + 1);
-#endif /* ARRAY_VARS */
-  else if (name[1] != '*' && name[1] != '@')
-    {
-      number = 0;
-
-      if (digit (name[1]))             /* ${#1} */
-       {
-         t = get_dollar_var_value (atoi (name + 1));
-         number = STRLEN (t);
-         FREE (t);
-       }
-#if defined (ARRAY_VARS)
-      else if ((var = find_variable (name + 1)) && array_p (var))
-       {
-         t = array_reference (array_cell (var), 0);
-         number = STRLEN (t);
-       }
-#endif
-      else                             /* ${#PS1} */
-       {
-         newname = savestring (name);
-         newname[0] = '$';
-         list = expand_string (newname, 0);
-         t = list ? string_list (list) : (char *)NULL;
-         free (newname);
-         if (list)
-           dispose_words (list);
-
-         number = STRLEN (t);
-         FREE (t);
-       }
-    }
-  else                                 /* ${#@} and ${#*} */
-    number = number_of_args ();
-
-  return (number);
-}
-
-/* Verify and limit the start and end of the desired substring.  If
-   VTYPE == 0, a regular shell variable is being used; if it is 1,
-   then the positional paramters are being used; if it is 2, then
-   VALUE is really a pointer to an array variable that should be used. */
-static int
-verify_substring_values (value, substr, vtype, e1p, e2p)
-     char *value, *substr;
-     int vtype, *e1p, *e2p;
-{
-  char *t, *temp1; 
-  int len;
-#if defined (ARRAY_VARS)
- ARRAY *a;
-#endif  
-
-  t = strchr (substr, ':');
-  if (t)
-    *t = '\0';
-  temp1 = maybe_expand_string (substr, 1, expand_string);
-  *e1p = evalexp (temp1);
-  free (temp1);
-
-  switch (vtype)
-    {
-    case 0:
-      len = strlen (value);
-      break;
-    case 1:
-      len = number_of_args () + 1;
-      break;
-#if defined (ARRAY_VARS)
-    case 2:
-      a = (ARRAY *)value;
-      len = array_num_elements (a) + 1;
-      break;
-#endif
-    }
-
-  if (*e1p < 0)                /* negative offsets count from end */
-    *e1p += len;
-
-  if (t)
-    {
-      t++;
-      temp1 = maybe_expand_string (t, 1, expand_string);
-      t[-1] = ':';
-      *e2p = evalexp (temp1);
-      free (temp1);
-      if (*e2p < 0)
-        {
-          internal_error ("%s: substring expression < 0", t);
-         return (0);
-        }
-      *e2p += *e1p;            /* want E2 chars starting at E1 */
-      if (*e2p > len)
-        *e2p = len;
-    }
-  else
-    *e2p = len;
-
-  return (1);
-}
-
-/* Return a string containing the positional parameters from START to
-   END, inclusive. */
-static char *
-pos_params (start, end, quoted)
-     int start, end, quoted;
-{
-  WORD_LIST *save, *params, *h, *t;
-  char *ret;
-  int i;
-
-  save = params = list_rest_of_args ();
-  if (save == 0)
-    return ((char *)NULL);
-
-  for (i = 1; params && i < start; i++)
-    params = params->next;
-  if (params == 0)
-    return ((char *)NULL);
-  for (h = t = params; params && i < end; i++)
-    {
-      t = params;
-      params = params->next;
-    }
-
-  t->next = (WORD_LIST *)NULL;
-  ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (h) : h);
-  t->next = params;
-
-  dispose_words (save);
-  return (ret);
-}
-
-#define VT_VARIABLE    0
-#define VT_POSPARMS    1
-#define VT_ARRAYVAR    2
-
-/* Return the type of variable specified by VARNAME (simple variable,
-   positional param, or array variable.  Also return the value specified
-   by VARNAME (value of a variable or a reference to an array element). */
-static int
-get_var_and_type (varname, value, varp, valp)
-     char *varname, *value;
-     SHELL_VAR **varp;
-     char **valp;
-{
-  int vtype;
-  char *temp;
-#if defined (ARRAY_VARS)
-  SHELL_VAR *v;
-#endif
-  
-  vtype = varname[0] == '@' && varname[1] == '\0';     /* VT_POSPARMS */
-  *varp = (SHELL_VAR *)NULL;
-
-#if defined (ARRAY_VARS)
-  if (valid_array_reference (varname))
-    {
-      v = array_variable_part (varname, &temp, (int *)0);
-      if (v && array_p (v))
-       {
-         if (temp[0] == '@' && temp[1] == ']')
-           {
-             vtype = VT_ARRAYVAR;
-             *valp = (char *)array_cell (v);
-           }
-         else
-           {
-             vtype = VT_VARIABLE;
-             *valp = array_value (varname, 1);
-           }
-         *varp = v;
-       }
-      else
-       return -1;
-    }
-  else if ((v = find_variable (varname)) && array_p (v))
-    {
-      vtype = VT_VARIABLE;
-      *varp = v;
-      *valp = array_reference (array_cell (v), 0);
-    }
-  else
-#endif
-  *valp = value;
-
-  return vtype;
-}
-
-/* Process a variable substring expansion: ${name:e1[:e2]}.  If VARNAME
-   is `@', use the positional parameters; otherwise, use the value of
-   VARNAME.  If VARNAME is an array variable, use the array elements. */
-
-static char *
-parameter_brace_substring (varname, value, substr, quoted)
-     char *varname, *value, *substr;
-     int quoted;
-{
-  int e1, e2, vtype;
-  char *temp, *val;
-  SHELL_VAR *v;
-
-  if (value == 0)
-    return ((char *)NULL);
-
-  this_command_name = varname;
-
-  vtype = get_var_and_type (varname, value, &v, &val);
-  if (vtype == -1)
-    return ((char *)NULL);
-
-  if (verify_substring_values (val, substr, vtype, &e1, &e2) == 0)
-    return (&expand_param_error);
-
-  switch (vtype)
-    {
-    case VT_VARIABLE:
-      temp = substring (value, e1, e2);
-      break;
-    case VT_POSPARMS:
-      temp = pos_params (e1, e2, quoted);
-      break;
-#if defined (ARRAY_VARS)
-    case VT_ARRAYVAR:
-      temp = array_subrange (array_cell (v), e1, e2, quoted);
-      break;
-#endif
-    }
-
-  return temp;
-}
-
-char *
-pat_subst (string, pat, rep, mflags)
-     char *string, *pat, *rep;
-     int mflags;
-{
-  char *ret, *s, *e, *str;
-  int rsize, rptr, l, replen, mtype;
-
-  ret = xmalloc (rsize = 64);
-  ret[0] = '\0';
-
-  mtype = mflags & MATCH_TYPEMASK;
-
-  for (replen = STRLEN (rep), rptr = 0, str = string;;)
-    {
-      if (match_pattern (str, pat, mtype, &s, &e) == 0)
-       break;
-      l = s - str;
-      if ((rptr + l + replen) >= rsize)
-       {
-         while ((rptr + l + replen) >= rsize)
-           rsize += 64;
-         ret = xrealloc (ret, rsize);
-       }
-      /* OK, now copy the leading unmatched portion of the string (from
-        str to s) to ret starting at rptr (the current offset).  Then copy
-         the replacement string at ret + rptr + (s - str).  Increment
-         rptr (if necessary) and str and go on. */
-      if (l)
-       {
-         strncpy (ret + rptr, str, l);
-         rptr += l;
-       }
-      if (replen)
-       {
-         strncpy (ret + rptr, rep, replen);
-         rptr += replen;
-       }
-      str = e;         /* e == end of match */
-      if (((mflags & MATCH_GLOBREP) == 0) || mtype != MATCH_ANY)
-        break;
-    }
-
-  /* Now copy the unmatched portion of the input string */
-  if (*str)
-    strcpy (ret + rptr, str);
-  else
-    ret[rptr] = '\0';
-
-  return ret;
-}
-
-/* Do pattern match and replacement on the positional parameters. */
-static char *
-pos_params_pat_subst (string, pat, rep, mflags)
-     char *string, *pat, *rep;
-     int mflags;
-{
-  WORD_LIST *save, *params;
-  WORD_DESC *w;
-  char *ret;
-
-  save = params = list_rest_of_args ();
-  if (save == 0)
-    return ((char *)NULL);
-
-  for ( ; params; params = params->next)
-    {
-      ret = pat_subst (params->word->word, pat, rep, mflags);
-      w = make_bare_word (ret);
-      dispose_word (params->word);
-      params->word = w;
-      FREE (ret);
-    }
-
-  ret = string_list ((mflags & MATCH_QUOTED) ? quote_list (save) : save);
-  dispose_words (save);
-
-  return (ret);
-}
-
-static char *
-parameter_brace_patsub (varname, value, patsub, quoted)
-     char *varname, *value, *patsub;
-     int quoted;
-{
-  int vtype, mflags;
-  char *val, *temp, *pat, *rep, *p;
-  SHELL_VAR *v;
-
-  if (value == 0)
-    return ((char *)NULL);
-
-  this_command_name = varname;
-
-  vtype = get_var_and_type (varname, value, &v, &val);
-  if (vtype == -1)
-    return ((char *)NULL);
-
-  mflags = 0;
-  if (*patsub == '/')
-    {
-      mflags |= MATCH_GLOBREP;
-      patsub++;
-    }
-
-  if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-    mflags |= MATCH_QUOTED;
-
-  if (rep = strchr (patsub, '/'))
-    *rep++ = '\0';
-  else
-    rep = (char *)NULL;
-
-  if (rep && *rep == '\0')
-    rep = (char *)NULL;
-
-  /* Expand PAT and REP for command, variable and parameter, arithmetic,
-     and process substitution.  Also perform quote removal.  Do not
-     perform word splitting or filename generation. */
-  pat = maybe_expand_string (patsub, quoted, expand_string_unsplit);
-  if (rep)
-    rep = maybe_expand_string (rep, quoted, expand_string_unsplit);
-
-  p = pat;
-  if (pat[0] == '#')
-    {
-      mflags |= MATCH_BEG;
-      p++;
-    }
-  else if (pat[0] == '%')
-    {
-      mflags |= MATCH_END;
-      p++;
-    }
-  else
-    mflags |= MATCH_ANY;
-
-  /* OK, we now want to substitute REP for PAT in VAL.  If GLOBAL is 1,
-     the substitution is done everywhere, otherwise only the first
-     occurrence of PAT is replaced. */
-  switch (vtype)
-    {
-    case VT_VARIABLE:
-      temp = pat_subst (val, p, rep, mflags);
-      break;
-    case VT_POSPARMS:
-      temp = pos_params_pat_subst (val, p, rep, mflags);
-      break;
-#if defined (ARRAY_VARS)
-    case VT_ARRAYVAR:
-      temp = array_pat_subst (array_cell (v), p, rep, mflags);
-      break;
-#endif
-    }
-
-  FREE (pat);
-  FREE (rep);
-
-  return temp;
-}
-
-/* ${[#][!]name[[:]#[#]%[%]-=?+[word][:e1[:e2]]]} */
-static char *
-parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_dollar_at)
-     char *string;
-     int *indexp, quoted, *quoted_dollar_atp, *contains_dollar_at;
-{
-  int check_nullness, var_is_set, var_is_null, var_is_special;
-  int want_substring, want_indir, want_patsub;
-  char *name, *value, *temp, *temp1;
-  int t_index, sindex, c, number;
-
-  sindex = *indexp;
-  t_index = ++sindex;
-  name = string_extract (string, &t_index, "#%:-=?+/}", 1);
-  value = (char *)NULL;
-  var_is_set = var_is_null = var_is_special = check_nullness = 0;
-  want_substring = want_indir = want_patsub = 0;
-
-  /* If the name really consists of a special variable, then
-     make sure that we have the entire name.  Handle indirect
-     references to special variables here, too. */
-  if ((sindex == t_index ||
-      ((sindex == t_index - 1) && string[sindex] == '!')) &&
-       (string[t_index] == '-' ||
-        string[t_index] == '?' ||
-        string[t_index] == '#'))
-    {
-      t_index++;
-      free (name);
-      temp1 = string_extract (string, &t_index, "#%:-=?+/}", 0);
-      name = xmalloc (3 + (strlen (temp1)));
-      *name = string[sindex];
-      if (string[sindex] == '!')
-       {
-         /* indirect ref. of special variable */
-         name[1] = string[sindex + 1];
-         strcpy (name + 2, temp1);
-       }
-      else
-       strcpy (name + 1, temp1);
-      free (temp1);
-    }
-  sindex = t_index;
-
-  /* Find out what character ended the variable name.  Then
-     do the appropriate thing. */
-  if (c = string[sindex])
-    sindex++;
-
-  /* If c is followed by one of the valid parameter expansion
-     characters, move past it as normal.  If not, assume that
-     a substring specification is being given, and do not move
-     past it. */
-  if (c == ':' && member (string[sindex], "-=?+"))
-    {
-      check_nullness++;
-      if (c = string[sindex])
-       sindex++;
-    }
-  else if (c == ':')
-    want_substring = 1;
-  else if (c == '/')
-    want_patsub = 1;
-
-  want_indir = *name == '!';
-
-  /* Determine the value of this variable. */
-
-  /* Check for special variables, directly and indirectly
-     referenced. */
-  if ((digit (*name) && all_digits (name)) ||
-      (name[1] == '\0' && member (*name, "#-?$!@*")) ||
-      (want_indir && name[2] == '\0' && member (name[1], "#-?$!@*")))
-    var_is_special++;
-
-  /* Check for special expansion things. */
-  if (*name == '#')    /* length of a parameter */
-    {
-      /* Take the lengths of some of the shell's special
-         parameters. */
-      if (string[sindex] == '}' && name[1] == '\0' &&
-         check_nullness == 0 && member (c, "-?$!#"))
-       {
-         free (name);
-         switch (c)
-           {
-           case '-':
-             temp1 = which_set_flags ();
-             break;
-           case '?':
-             temp1 = itos (last_command_exit_value);
-             break;
-           case '$':
-             temp1 = itos (dollar_dollar_pid);
-             break;
-           case '!':
-             if (last_asynchronous_pid == NO_PID)
-               temp1 = (char *)NULL;
-             else
-               temp1 = itos ((int)last_asynchronous_pid);
-             break;
-           case '#':
-             temp1 = itos (number_of_args ());
-             break;
-           }
-         number = STRLEN (temp1);
-         FREE (temp1);
-         *indexp = ++sindex;   /* { string[sindex] == '}' */
-         return (itos (number));
-       }
-
-      /* Don't allow things like ${#:-foo} to go by; they are
-         errors.  If we are not pointing at the character just
-         after the closing brace, then we haven't gotten all of
-         the name.  Since it begins with a special character,
-         this is a bad substitution.  Explicitly check for ${#:},
-         which the rules do not catch.  Also check NAME for
-         validity before trying to go on. */
-      if (string[sindex - 1] != '}' ||
-         member (c, "?-=+") ||
-         (name[1] == '\0' && c == '}' && check_nullness) ||
-         (valid_length_expression (name) == 0))
-       {
-         temp = (char *)NULL;
-         goto bad_substitution;
-       }
-
-      number = parameter_brace_expand_length (name);
-      free (name);
-
-      *indexp = sindex;
-      return (itos (number));
-    }
-
-  /* ${@} is identical to $@. */
-  if (name[0] == '@' && name[1] == '\0')
-    {
-      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
-       *quoted_dollar_atp = 1;
-
-      if (contains_dollar_at)
-       *contains_dollar_at = 1;
-    }
-
-  /* Make sure that NAME is valid before trying to go on. */
-  if (valid_brace_expansion_word (want_indir ? name + 1 : name,
-                                       var_is_special) == 0)
-    {
-      temp = (char *)NULL;
-      goto bad_substitution;
-    }
-
-  if (want_indir)
-    temp = parameter_brace_expand_indir (name + 1, var_is_special, quoted);
-  else
-    temp = parameter_brace_expand_word (name, var_is_special, quoted);
-
-#if defined (ARRAY_VARS)
-  if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && valid_array_reference (name))
-    {
-      temp1 = strchr (name, '[');
-      if (temp1 && temp1[1] == '@' && temp1[2] == ']')
-        {
-         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
-           *quoted_dollar_atp = 1;
-         if (contains_dollar_at)
-           *contains_dollar_at = 1;
-       }
-    }
-#endif
-
-  var_is_set = temp != (char *)0;
-  var_is_null = check_nullness && (var_is_set == 0 || *temp == 0);
-
-  /* Get the rest of the stuff inside the braces. */
-  if (c && c != '}')
-    {
-      /* Extract the contents of the ${ ... } expansion
-         according to the Posix.2 rules. */
-      value = extract_dollar_brace_string (string, &sindex, quoted);
-      /*{*/
-      if (string[sindex] == '}')
-        sindex++;
-      else
-       goto bad_substitution;
-    }
-  else
-    value = (char *)NULL;
-
-  *indexp = sindex;
-  
-  /* If this is a substring spec, process it and add the result. */
-  if (want_substring)
-    {
-      temp1 = parameter_brace_substring (name, temp, value, quoted);
-      FREE (name);
-      FREE (value);
-      FREE (temp);
-      return (temp1);
-    }
-  else if (want_patsub)
-    {
-      temp1 = parameter_brace_patsub (name, temp, value, quoted);
-      FREE (name);
-      FREE (value);
-      FREE (temp);
-      return (temp1);
-    }          
-                   
-  /* Do the right thing based on which character ended the variable name. */
-  switch (c)
-    {
-    default:
-    case '\0':
-    bad_substitution:
-      report_error ("%s: bad substitution", string ? string : "??");
-      FREE (value);
-      FREE (temp);
-      free (name);
-      return &expand_param_error;
-
-    /*{*/
-    case '}':
-      if (var_is_set == 0 && unbound_vars_is_error)
-        {
-         report_error ("%s: unbound variable", name);
-         FREE (value);
-         FREE (temp);
-         free (name);
-         last_command_exit_value = 1;
-         return &expand_param_error;
-       }
-      break;
-
-    case '#':  /* ${param#[#]pattern} */
-    case '%':  /* ${param%[%]pattern} */
-      if (value == 0 || *value == '\0' || temp == 0 || *temp == '\0')
-        {
-          FREE (value);
-         break;
-        }
-      if ((name[0] == '@' || name[0] == '*') && name[1] == '\0')
-       temp1 = parameter_list_remove_pattern (value, name[0], c, quoted);
-#if defined (ARRAY_VARS)
-      else if (valid_array_reference (name))
-       temp1 = array_remove_pattern (value, name, c, quoted);
-#endif
-      else
-       temp1 = parameter_brace_remove_pattern (value, temp, c, quoted);
-      free (temp);
-      free (value);
-      temp = temp1;
-      break;
-
-    case '-':
-    case '=':
-    case '?':
-    case '+':
-      if (var_is_set && var_is_null == 0)
-        {
-         /* We don't want the value of the named variable for
-            anything, just the value of the right hand side. */
-         if (c == '+')
-           {
-             FREE (temp);
-             if (value)
-               {
-                 temp = parameter_brace_expand_rhs (name, value, c,
-                                                    quoted,
-                                                    quoted_dollar_atp,
-                                                    contains_dollar_at);
-                 if (temp && *temp == '\0' && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
-                   quoted |= Q_QUOTEDNULL;
-                 free (value);
-               }
-             else
-               temp = (char *)NULL;
-           }
-         else
-           {
-             FREE (value);
-           }
-         /* Otherwise do nothing; just use the value in TEMP. */
-       }
-      else     /* VAR not set or VAR is NULL. */
-        {
-         FREE (temp);
-         temp = (char *)NULL;
-         if (c == '=' && var_is_special)
-           {
-             report_error ("$%s: cannot assign in this way", name);
-             free (name);
-             free (value);
-             return &expand_param_error;
-           }
-         else if (c == '?')
-           {
-             parameter_brace_expand_error (name, value);
-             return (interactive ? &expand_param_error : &expand_param_fatal);
-           }
-         else if (c != '+')
-           {
-             temp = parameter_brace_expand_rhs (name, value, c, quoted,
-                                              quoted_dollar_atp,
-                                              contains_dollar_at);
-             if (temp && *temp == '\0' && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
-               quoted |= Q_QUOTEDNULL;
-           }
-         free (value);
-       }
-      break;
-    }
-  free (name);
-  return (temp);
-}
-
-/* Make a word list which is the parameter and variable expansion,
-   command substitution, arithmetic substitution, and quote removed
-   expansion of WORD.  Return a pointer to a WORD_LIST which is the
-   result of the expansion.  If WORD contains a null word, the word
-   list returned is also null.
-
-   QUOTED contains flag values defined in shell.h.
-
-   CONTAINS_DOLLAR_AT and EXPANDED_SOMETHING are return values; when non-null
-   they point to an integer value which receives information about expansion.
-   CONTAINS_DOLLAR_AT gets non-zero if WORD contained "$@", else zero.
-   EXPANDED_SOMETHING get non-zero if WORD contained any parameter expansions,
-   else zero.
-
-   This only does word splitting in the case of $@ expansion.  In that
-   case, we split on ' '. */
-
-/* Values for the local variable quoted_state. */
-#define UNQUOTED        0
-#define PARTIALLY_QUOTED 1
-#define WHOLLY_QUOTED    2
-
-static WORD_LIST *
-expand_word_internal (word, quoted, contains_dollar_at, expanded_something)
-     WORD_DESC *word;
-     int quoted;
-     int *contains_dollar_at;
-     int *expanded_something;
-{
-  WORD_LIST *list;
-  WORD_DESC *tword;
-  SHELL_VAR *var;
-
-  /* The intermediate string that we build while expanding. */
-  char *istring;
-
-  /* The current size of the above object. */
-  int istring_size;
-
-  /* Index into ISTRING. */
-  int istring_index;
-
-  /* Temporary string storage. */
-  char *temp, *temp1;
-
-  /* The text of WORD. */
-  register char *string;
-
-  /* The index into STRING. */
-  int sindex;
-
-  /* This gets 1 if we see a $@ while quoted. */
-  int quoted_dollar_at;
-
-  /* One of UNQUOTED, PARTIALLY_QUOTED, or WHOLLY_QUOTED, depending on
-     whether WORD contains no quoting characters, a partially quoted
-     string (e.g., "xx"ab), or is fully quoted (e.g., "xxab"). */
-  int quoted_state;
-
-  register int c;              /* Current character. */
-  int number;                  /* Temporary number value. */
-  int t_index;                 /* For calls to string_extract_xxx. */
-
-  istring = xmalloc (istring_size = DEFAULT_ARRAY_SIZE);
-  istring[istring_index = 0] = '\0';
-
-  quoted_dollar_at = 0;
-  quoted_state = UNQUOTED;
-
-  string = word->word;
-  if (string == 0)
-    goto finished_with_string;
-
-  if (contains_dollar_at)
-    *contains_dollar_at = 0;
-
-  /* Begin the expansion. */
-
-  for (sindex = 0; ;)
-    {
-      c = string[sindex];
-
-      /* Case on toplevel character. */
-      switch (c)
-       {
-       case '\0':
-         goto finished_with_string;
-
-       case CTLESC:
-         temp = xmalloc (3);
-         temp[0] = CTLESC;
-         temp[1] = c = string[++sindex];
-         temp[2] = '\0';
-
-         if (string[sindex])
-           sindex++;
-
-         goto add_string;
-
-#if defined (PROCESS_SUBSTITUTION)
-         /* Process substitution. */
-       case '<':
-       case '>':
-         {
-           if (string[++sindex] != '(' || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || posixly_correct)
-             {
-               sindex--;
-               goto add_character;
-             }
-           else
-             t_index = sindex + 1; /* skip past both '<' and '(' */
-
-           temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index);
-           sindex = t_index;
-
-           /* If the process substitution specification is `<()', we want to
-              open the pipe for writing in the child and produce output; if
-              it is `>()', we want to open the pipe for reading in the child
-              and consume input. */
-           temp = temp1 ? process_substitute (temp1, (c == '>')) : (char *)0;
-
-           FREE (temp1);
-
-           goto dollar_add_string;
-         }
-#endif /* PROCESS_SUBSTITUTION */
-
-       /* See about breaking this into a separate function:
-           char *
-           param_expand (string, sindex, quoted, expanded_something,
-                         contains_dollar_at, quoted_dollar_at)
-           char *string;
-           int *sindex, quoted, *expanded_something, *contains_dollar_at;
-           int *quoted_dollar_at;
-       */
-       case '$':
-
-         if (expanded_something)
-           *expanded_something = 1;
-
-         c = string[++sindex];
-
-         /* Do simple cases first. Switch on what follows '$'. */
-         switch (c)
-           {
-             /* $0 .. $9? */
-           case '0':
-           case '1':
-           case '2':
-           case '3':
-           case '4':
-           case '5':
-           case '6':
-           case '7':
-           case '8':
-           case '9':
-             temp1 = dollar_vars[digit_value (c)];
-             if (unbound_vars_is_error && temp1 == (char *)NULL)
-               {
-                 report_error ("$%c: unbound variable", c);
-                 free (string);
-                 free (istring);
-                 last_command_exit_value = 1;
-                 return (&expand_word_error);
-               }
-             temp = temp1 ? savestring (temp1) : (char *)NULL;
-             goto dollar_add_string;
-
-             /* $$ -- pid of the invoking shell. */
-           case '$':
-             number = dollar_dollar_pid;
-
-           add_number:
-             temp = itos (number);
-           dollar_add_string:
-             if (string[sindex]) sindex++;
-
-             /* Add TEMP to ISTRING. */
-           add_string:
-             if (temp)
-               {
-                 istring = sub_append_string
-                   (temp, istring, &istring_index, &istring_size);
-                 temp = (char *)0;
-               }
-             
-             break;
-
-             /* $# -- number of positional parameters. */
-           case '#':
-             number = number_of_args ();
-             goto add_number;
-
-             /* $? -- return value of the last synchronous command. */
-           case '?':
-             number = last_command_exit_value;
-             goto add_number;
-
-             /* $- -- flags supplied to the shell on invocation or
-                by `set'. */
-           case '-':
-             temp = which_set_flags ();
-             goto dollar_add_string;
-
-             /* $! -- Pid of the last asynchronous command. */
-           case '!':
-             number = (int)last_asynchronous_pid;
-
-             /* If no asynchronous pids have been created, expand
-                to nothing. */
-             if (number == (int)NO_PID)
-               {
-                 if (string[sindex])
-                   sindex++;
-                 if (expanded_something)
-                   *expanded_something = 0;
-                 break;
-               }
-             goto add_number;
-
-             /* The only difference between this and $@ is when the
-                arg is quoted. */
-           case '*':           /* `$*' */
-             temp = string_rest_of_args (quoted);
-
-             /* If there are no command-line arguments, this should just
-                disappear if there are other characters in the expansion,
-                even if it's quoted. */
-             if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && temp && *temp == '\0')
-               {
-                 free (temp);
-                 temp = (char *)NULL;
-               }
-             /* In the case of a quoted string, quote the entire arg-list.
-                "$1 $2 $3". */          
-             if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && temp)
-               {
-                 temp1 = temp;
-                 temp = quote_string (temp);
-                 free (temp1);
-               }
-             goto dollar_add_string;
-
-             /* When we have "$@" what we want is "$1" "$2" "$3" ... This
-                means that we have to turn quoting off after we split into
-                the individually quoted arguments so that the final split
-                on the first character of $IFS is still done.  */
-           case '@':           /* `$@' */
-             list = list_rest_of_args ();
-
-             /* We want to flag the fact that we saw this.  We can't turn
-                off quoting entirely, because other characters in the
-                string might need it (consider "\"$@\""), but we need some
-                way to signal that the final split on the first character
-                of $IFS should be done, even though QUOTED is 1. */
-             if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-               quoted_dollar_at = 1;
-             if (contains_dollar_at)
-               *contains_dollar_at = 1;
-             temp = string_list (((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && list) ? quote_list (list) : list);
-             dispose_words (list);
-             goto dollar_add_string;
-
-           /* $'...' ANSI-C expand text between quotes and add the result. */
-           case '\'':
-             t_index = sindex + 1;
-             temp1 = string_extract_single_quoted (string, &t_index);
-             sindex = t_index;
-             temp = ansicstr (temp1, (int *)NULL);
-             free (temp1);
-             if (temp)
-               {
-                 temp1 = temp;
-                 temp = quote_string (temp1);
-                 free (temp1);
-                 if (*temp == '\0' && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
-                   quoted |= Q_QUOTEDNULL;
-               }
-             else
-               {
-                 temp = xmalloc (2);
-#if 0
-                 temp[0] = CTLNUL;
-                 temp[1] = '\0';
-#else
-                 temp[0] = '\0';
-#endif
-                 quoted |= Q_QUOTEDNULL;
-               }
-             goto add_string;
-
-           case '{':   /*}*/
-             temp = parameter_brace_expand (string, &sindex, quoted,
-                                            &quoted_dollar_at,
-                                            contains_dollar_at);
-             if (temp == &expand_param_error || temp == &expand_param_fatal)
-               {
-                 free (string);
-                 free (istring);
-                 return (temp == &expand_param_error) ? &expand_word_error
-                                                      : &expand_word_fatal;
-               }
-             if (temp && *temp == '\0' && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
-               quoted |= Q_QUOTEDNULL;
-             goto add_string;
-             /* break; */
-
-             /* Do command or arithmetic substitution. */
-           case '(':   /*)*/
-             /* We have to extract the contents of this paren substitution. */
-             t_index = sindex + 1;
-             temp = extract_command_subst (string, &t_index);
-             sindex = t_index;
-
-             /* For Posix.2-style `$(( ))' arithmetic substitution,
-                extract the expression and pass it to the evaluator. */
-             if (temp && *temp == '(')
-               {
-                 temp1 = temp + 1;
-                 t_index = strlen (temp1) - 1;
-
-                 if (temp1[t_index] != ')')
-                   {
-                     report_error ("%s: bad arithmetic substitution", temp);
-                     free (temp);
-                     free (string);
-                     free (istring);
-                     return &expand_word_error;
-                   }
-
-                 /* Cut off ending `)' */
-                 temp1[t_index] = '\0';
-
-                 /* Expand variables found inside the expression. */
-                 temp1 = maybe_expand_string (temp1, 1, expand_string);
-
-                 /* No error messages. */
-                 this_command_name = (char *)NULL;
-                 number = evalexp (temp1);
-                 free (temp);
-                 free (temp1);
-
-                 goto add_number;
-               }
-
-             temp1 = command_substitute (temp, quoted);
-             FREE (temp);
-             temp = temp1;
-             goto dollar_add_string;
-
-             /* Do straight arithmetic substitution. */
-           case '[':
-             /* We have to extract the contents of this
-                arithmetic substitution. */
-             t_index = sindex + 1;
-             temp = extract_arithmetic_subst (string, &t_index);
-             sindex = t_index;
-
-              /* Do initial variable expansion. */
-             temp1 = maybe_expand_string (temp, 1, expand_string);
-
-             /* No error messages. */
-             this_command_name = (char *)NULL;
-             number = evalexp (temp1);
-             free (temp1);
-             free (temp);
-
-             goto add_number;
-
-           default:
-             /* Find the variable in VARIABLE_LIST. */
-             temp = (char *)NULL;
-
-             for (t_index = sindex;
-                  (c = string[sindex]) && legal_variable_char (c);
-                  sindex++);
-             temp1 = substring (string, t_index, sindex);
-
-             /* If this isn't a variable name, then just output the `$'. */
-             if (temp1 == 0 || *temp1 == '\0')
-               {
-                 FREE (temp1);
-                 temp = xmalloc (2);
-                 temp[0] = '$';
-                 temp[1] = '\0';
-                 if (expanded_something)
-                   *expanded_something = 0;
-                 goto add_string;
-               }
-
-             /* If the variable exists, return its value cell. */
-             var = find_variable (temp1);
-
-             if (var && invisible_p (var) == 0 && value_cell (var))
-               {
-#if defined (ARRAY_VARS)
-                 if (array_p (var))
-                   {
-                     temp = array_reference (array_cell (var), 0);
-                     if (temp)
-                       temp = quote_escapes (temp);
-                   }
-                 else
-#endif
-                 temp = quote_escapes (value_cell (var));
-                 free (temp1);
-                 goto add_string;
-               }
-
-             temp = (char *)NULL;
-
-             if (unbound_vars_is_error)
-               report_error ("%s: unbound variable", temp1);
-             else
-               {
-                 free (temp1);
-                 goto add_string;
-               }
-
-             free (temp1);
-             free (string);
-             last_command_exit_value = 1;
-             free (istring);
-             return &expand_word_error;
-           }
-         break;                /* End case '$': */
-
-       case '`':               /* Backquoted command substitution. */
-         {
-           sindex++;
-
-           if (expanded_something)
-             *expanded_something = 1;
-
-           temp = string_extract (string, &sindex, "`", 0);
-           de_backslash (temp);
-           temp1 = command_substitute (temp, quoted);
-           FREE (temp);
-           temp = temp1;
-           goto dollar_add_string;
-         }
-
-       case '\\':
-         if (string[sindex + 1] == '\n')
-           {
-             sindex += 2;
-             continue;
-           }
-
-         c = string[++sindex];
-
-         if (quoted & Q_HERE_DOCUMENT)
-           temp1 = slashify_in_here_document;
-         else if (quoted & Q_DOUBLE_QUOTES)
-           temp1 = slashify_in_quotes;
-         else
-           temp1 = "";
-
-         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && member (c, temp1) == 0)
-           {
-             temp = xmalloc (3);
-             temp[0] = '\\'; temp[1] = c; temp[2] = '\0';
-           }
-         else
-           /* This character is quoted, so add it in quoted mode. */
-           temp = make_quoted_char (c);
-
-         if (c)
-           sindex++;
-         else
-           quoted |= Q_QUOTEDNULL;
-         goto add_string;
-
-       case '"':
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_NOQUOTE))
-           goto add_character;
-
-         t_index = ++sindex;
-         temp = string_extract_double_quoted (string, &sindex, 0);
-
-         /* If the quotes surrounded the entire string, then the
-            whole word was quoted. */
-         quoted_state = (t_index == 1 && string[sindex] == '\0')
-                           ? WHOLLY_QUOTED
-                           : PARTIALLY_QUOTED;
-
-         if (temp && *temp)
-           {
-             int dollar_at_flag;
-
-             tword = make_word (temp);         /* XXX */
-             free (temp);
-             temp = (char *)NULL;
-
-             list = expand_word_internal (tword, Q_DOUBLE_QUOTES, &dollar_at_flag, (int *)NULL);
-
-             if (list == &expand_word_error || list == &expand_word_fatal)
-               {
-                 free (istring);
-                 free (string);
-                 /* expand_word_internal has already freed temp_word->word
-                    for us because of the way it prints error messages. */
-                 tword->word = (char *)NULL;
-                 dispose_word (tword);
-                 return list;
-               }
-
-             dispose_word (tword);
-
-             /* "$@" (a double-quoted dollar-at) expands into nothing,
-                not even a NULL word, when there are no positional
-                parameters. */
-             if (list == 0 && dollar_at_flag)
-               {
-                 quoted_dollar_at++;
-                 break;
-               }
-
-             /* If we get "$@", we know we have expanded something, so we
-                need to remember it for the final split on $IFS.  This is
-                a special case; it's the only case where a quoted string
-                can expand into more than one word.  It's going to come back
-                from the above call to expand_word_internal as a list with
-                a single word, in which all characters are quoted and
-                separated by blanks.  What we want to do is to turn it back
-                into a list for the next piece of code. */
-             if (list)
-               dequote_list (list);
-
-             if (dollar_at_flag)
-               {
-                 quoted_dollar_at++;
-                 if (expanded_something)
-                   *expanded_something = 1;
-               }
-           }
-         else
-           {
-             /* What we have is "".  This is a minor optimization. */
-             free (temp);
-             list = (WORD_LIST *)NULL;
-             quoted |= Q_QUOTEDNULL;
-           }
-
-         /* The code above *might* return a list (consider the case of "$@",
-            where it returns "$1", "$2", etc.).  We can't throw away the
-            rest of the list, and we have to make sure each word gets added
-            as quoted.  We test on tresult->next:  if it is non-NULL, we
-            quote the whole list, save it to a string with string_list, and
-            add that string. We don't need to quote the results of this
-            (and it would be wrong, since that would quote the separators
-            as well), so we go directly to add_string. */
-         if (list)
-           {
-             if (list->next)
-               {
-                 temp = string_list (quote_list (list));
-                 dispose_words (list);
-                 goto add_string;
-               }
-             else
-               {
-                 temp = savestring (list->word->word);
-                 dispose_words (list);
-               }
-           }
-         else
-           temp = (char *)NULL;
-
-         /* We do not want to add quoted nulls to strings that are only
-            partially quoted; we can throw them away. */
-         if (!temp && (quoted_state == PARTIALLY_QUOTED))
-           continue;
-
-       add_quoted_string:
-
-         if (temp)
-           {
-             temp1 = temp;
-             temp = quote_string (temp);
-             if (*temp1 == '\0')
-               quoted |= Q_QUOTEDNULL;
-             free (temp1);
-           }
-         else
-           {
-             /* Add NULL arg. */
-             temp = xmalloc (2);
-#if 0
-             temp[0] = CTLNUL;
-             temp[1] = '\0';
-#else
-             temp[0] = '\0';
-#endif
-             quoted |= Q_QUOTEDNULL;
-           }
-         goto add_string;
-         /* break; */
-
-       case '\'':
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_NOQUOTE))
-           goto add_character;
-
-         t_index = ++sindex;
-         temp = string_extract_single_quoted (string, &sindex);
-
-         /* If the entire STRING was surrounded by single quotes,
-            then the string is wholly quoted. */
-         quoted_state = (t_index == 1 && string[sindex] == '\0')
-                           ? WHOLLY_QUOTED
-                           : PARTIALLY_QUOTED;
-
-         /* If all we had was '', it is a null expansion. */
-         if (*temp == '\0')
-           {
-             free (temp);
-             temp = (char *)NULL;
-             quoted |= Q_QUOTEDNULL;
-           }
-         else
-           remove_quoted_escapes (temp);
-
-         /* We do not want to add quoted nulls to strings that are only
-            partially quoted; such nulls are discarded. */
-         if (temp == 0 && (quoted_state == PARTIALLY_QUOTED))
-           continue;
-
-         goto add_quoted_string;
-         /* break; */
-
-       default:
-         /* This is the fix for " $@ " */
-         if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-           {
-             temp = make_quoted_char (c);
-             if (c == 0)
-               quoted |= Q_QUOTEDNULL;
-             goto dollar_add_string;
-           }
-
-       add_character:
-         if (istring_index + 1 >= istring_size)
-           {
-             while (istring_index + 1 >= istring_size)
-               istring_size += DEFAULT_ARRAY_SIZE;
-             istring = xrealloc (istring, istring_size);
-           }
-         istring[istring_index++] = c;
-         istring[istring_index] = '\0';
-
-         /* Next character. */
-         sindex++;
-       }
-    }
-
-finished_with_string:
-  /* OK, we're ready to return.  If we have a quoted string, and
-     quoted_dollar_at is not set, we do no splitting at all; otherwise
-     we split on ' '.  The routines that call this will handle what to
-     do if nothing has been expanded. */
-
-  /* Partially and wholly quoted strings which expand to the empty
-     string are retained as an empty arguments.  Unquoted strings
-     which expand to the empty string are discarded.  The single
-     exception is the case of expanding "$@" when there are no
-     positional parameters.  In that case, we discard the expansion. */
-
-  /* Because of how the code that handles "" and '' in partially
-     quoted strings works, we need to make ISTRING into a QUOTED_NULL
-     if we saw quoting characters, but the expansion was empty.
-     "" and '' are tossed away before we get to this point when
-     processing partially quoted strings.  This makes "" and $xxx""
-     equivalent when xxx is unset. */
-
-  /* If we expand to nothing and there were no single or double quotes
-     in the word, we throw it away.  Otherwise, we return a NULL word.
-     The single exception is for $@ surrounded by double quotes when
-     there are no positional parameters.  In that case, we also throw
-     the word away. */
-
-  if (*istring == '\0')
-    {
-      if (quoted_state == PARTIALLY_QUOTED && quoted_dollar_at == 0)
-       {
-#if 0
-         istring[0] = CTLNUL;
-         istring[1] = '\0';
-#else
-         istring[0] = '\0';
-#endif
-         tword = make_bare_word (istring);
-         list = make_word_list (tword, (WORD_LIST *)NULL);
-         if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES|Q_QUOTEDNULL))
-           tword->flags |= W_QUOTED;
-       }
-      /* According to sh, ksh, and Posix.2, if a word expands into nothing
-        and a double-quoted "$@" appears anywhere in it, then the entire
-        word is removed. */
-      else  if (quoted_state == UNQUOTED || quoted_dollar_at)
-       list = (WORD_LIST *)NULL;
-      else
-       {
-         tword = make_bare_word (istring);
-         list = make_word_list (tword, (WORD_LIST *)NULL);
-         if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES|Q_QUOTEDNULL))
-           tword->flags |= W_QUOTED;
-       }
-    }
-  else if (word->flags & W_ASSIGNMENT)
-    {
-      tword = make_bare_word (istring);
-      list = make_word_list (tword, (WORD_LIST *)NULL);
-      tword->flags |= W_ASSIGNMENT;    /* XXX */
-      if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-        tword->flags |= W_QUOTED;
-    }
-  else
-    {
-      char *ifs_chars;
-
-      if (quoted_dollar_at)
-       {
-         var = find_variable ("IFS");
-         ifs_chars = var ? value_cell (var) : " \t\n";
-       }
-      else
-       ifs_chars = (char *)NULL;
-
-      /* According to Posix.2, "$@" expands to a single word if
-        IFS="" and the positional parameters are not empty. */
-      if (quoted_dollar_at && ifs_chars && *ifs_chars)
-       {
-         list = list_string (istring, " ", 1);
-       }
-      else
-       {
-         tword = make_bare_word (istring);
-         list = make_word_list (tword, (WORD_LIST *)NULL);
-         if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
-           tword->flags |= W_QUOTED;
-         if (word->flags & W_ASSIGNMENT)
-           tword->flags |= W_ASSIGNMENT;
-       }
-    }
-
-  free (istring);
-  return (list);
-}
-
-/* **************************************************************** */
-/*                                                                 */
-/*                Functions for Quote Removal                      */
-/*                                                                 */
-/* **************************************************************** */
-
-/* Perform quote removal on STRING.  If QUOTED > 0, assume we are obeying the
-   backslash quoting rules for within double quotes. */
-char *
-string_quote_removal (string, quoted)
-     char *string;
-     int quoted;
-{
-  char *r, *result_string, *temp;
-  int sindex, tindex, c, dquote;
-
-  /* The result can be no longer than the original string. */
-  r = result_string = xmalloc (strlen (string) + 1);
-
-  for (dquote = sindex = 0; c = string[sindex];)
-    {
-      switch (c)
-       {
-       case '\\':
-         c = string[++sindex];
-         if (((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote) && member (c, slashify_in_quotes) == 0)
-           *r++ = '\\';
-         /* FALLTHROUGH */
-
-       default:
-         *r++ = c;
-         sindex++;
-         break;
-
-       case '\'':
-         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote)
-           {
-             *r++ = c;
-             sindex++;
-             break;
-           }
-         tindex = sindex + 1;
-         temp = string_extract_single_quoted (string, &tindex);
-         if (temp)
-           {
-             strcpy (r, temp);
-             r += strlen (r);
-             free (temp);
-           }
-         sindex = tindex;
-         break;
-
-       case '"':
-         dquote = 1 - dquote;
-         sindex++;
-         break;
-       }
-    }
-    *r = '\0';
-    return (result_string);
-}
-
-#if 0
-/* UNUSED */
-/* Perform quote removal on word WORD.  This allocates and returns a new
-   WORD_DESC *. */
-WORD_DESC *
-word_quote_removal (word, quoted)
-     WORD_DESC *word;
-     int quoted;
-{
-  WORD_DESC *w;
-  char *t;
-
-  t = string_quote_removal (word->word, quoted);
-  w = make_bare_word (t);
-  return (w);
-}
-
-/* Perform quote removal on all words in LIST.  If QUOTED is non-zero,
-   the members of the list are treated as if they are surrounded by
-   double quotes.  Return a new list, or NULL if LIST is NULL. */
-WORD_LIST *
-word_list_quote_removal (list, quoted)
-     WORD_LIST *list;
-     int quoted;
-{
-  WORD_LIST *result, *t, *tresult;
-
-  for (t = list, result = (WORD_LIST *)NULL; t; t = t->next)
-    {
-      tresult = (WORD_LIST *)xmalloc (sizeof (WORD_LIST));
-      tresult->word = word_quote_removal (t->word, quoted);
-      tresult->next = (WORD_LIST *)NULL;
-      result = (WORD_LIST *) list_append (result, tresult);
-    }
-  return (result);
-}
-#endif
-
-/* Return 1 if CHARACTER appears in an unquoted portion of
-   STRING.  Return 0 otherwise. */
-static int
-unquoted_member (character, string)
-     int character;
-     char *string;
-{
-  int sindex, c;
-
-  for (sindex = 0; c = string[sindex]; )
-    {
-      if (c == character)
-       return (1);
-
-      switch (c)
-       {
-       default:
-         sindex++;
-         break;
-
-       case '\\':
-         sindex++;
-         if (string[sindex])
-           sindex++;
-         break;
-
-       case '\'':
-         sindex = skip_single_quoted (string, ++sindex);
-         break;
-
-       case '"':
-         sindex = skip_double_quoted (string, ++sindex);
-         break;
-       }
-    }
-  return (0);
-}
-
-/* Return 1 if SUBSTR appears in an unquoted portion of STRING. */
-static int
-unquoted_substring (substr, string)
-     char *substr, *string;
-{
-  int sindex, c, sublen;
-
-  if (substr == 0 || *substr == '\0')
-    return (0);
-
-  sublen = strlen (substr);
-  for (sindex = 0; c = string[sindex]; )
-    {
-      if (STREQN (string + sindex, substr, sublen))
-       return (1);
-
-      switch (c)
-       {
-       case '\\':
-         sindex++;
-
-         if (string[sindex])
-           sindex++;
-         break;
-
-       case '\'':
-         sindex = skip_single_quoted (string, ++sindex);
-         break;
-
-       case '"':
-         sindex = skip_double_quoted (string, ++sindex);
-         break;
-
-       default:
-         sindex++;
-         break;
-       }
-    }
-  return (0);
-}
-
-/*******************************************
- *                                        *
- *    Functions to perform word splitting  *
- *                                        *
- *******************************************/
-
-/* This splits a single word into a WORD LIST on $IFS, but only if the word
-   is not quoted.  list_string () performs quote removal for us, even if we
-   don't do any splitting. */
-WORD_LIST *
-word_split (w)
-     WORD_DESC *w;
-{
-  WORD_LIST *result;
-  SHELL_VAR *ifs;
-  char *ifs_chars;
-  WORD_DESC *tw;
-
-  if (w)
-    {
-      ifs = find_variable ("IFS");
-      /* If IFS is unset, it defaults to " \t\n". */
-      ifs_chars = ifs ? value_cell (ifs) : " \t\n";
-
-      if ((w->flags & W_QUOTED) || !ifs_chars)
-       ifs_chars = "";
-
-      result = list_string (w->word, ifs_chars, w->flags & W_QUOTED);
-      /* If the word expands to nothing, but is quoted, make a null word. */
-      if (result == 0 && (w->flags & W_QUOTED))
-        {
-          tw = make_bare_word ("");
-          tw->flags |= W_QUOTED;
-          result = make_word_list (tw, (WORD_LIST *)NULL);
-        }
-    }
-  else
-    result = (WORD_LIST *)NULL;
-
-  return (result);
-}
-
-/* Perform word splitting on LIST and return the RESULT.  It is possible
-   to return (WORD_LIST *)NULL. */
-static WORD_LIST *
-word_list_split (list)
-     WORD_LIST *list;
-{
-  WORD_LIST *result, *t, *tresult;
-
-  for (t = list, result = (WORD_LIST *)NULL; t; t = t->next)
-    {
-      tresult = word_split (t->word);
-      result = (WORD_LIST *) list_append (result, tresult);
-    }
-  return (result);
-}
-
-/**************************************************
- *                                               *
- *     Functions to expand an entire WORD_LIST   *
- *                                               *
- **************************************************/
-
-static WORD_LIST *varlist = (WORD_LIST *)NULL;
-
-/* Separate out any initial variable assignments from TLIST.  If set -k has
-   been executed, remove all assignment statements from TLIST.  Initial
-   variable assignments and other environment assignments are placed
-   on VARLIST. */
-static WORD_LIST *
-separate_out_assignments (tlist)
-     WORD_LIST *tlist;
-{
-  register WORD_LIST *vp, *lp;
-
-  if (!tlist)
-    return ((WORD_LIST *)NULL);
-
-  varlist = (WORD_LIST *)NULL;
-  vp = lp = tlist;
-
-  /* Separate out variable assignments at the start of the command.
-     Loop invariant: vp->next == lp
-     Loop postcondition:
-       lp = list of words left after assignment statements skipped
-       tlist = original list of words
-  */
-  while (lp && (lp->word->flags & W_ASSIGNMENT))
-    {
-      vp = lp;
-      lp = lp->next;
-    }
-
-  /* If lp != tlist, we have some initial assignment statements. */
-  /* We make VARLIST point to the list of assignment words and
-     TLIST point to the remaining words.  */
-  if (lp != tlist)
-    {
-      varlist = tlist;
-      /* ASSERT(vp->next == lp); */
-      vp->next = (WORD_LIST *)NULL;    /* terminate variable list */
-      tlist = lp;                      /* remainder of word list */
-    }
-
-  /* vp == end of variable list */
-  /* tlist == remainder of original word list without variable assignments */
-  if (!tlist)
-    /* All the words in tlist were assignment statements */
-    return ((WORD_LIST *)NULL);
-
-  /* ASSERT(tlist != NULL); */
-  /* ASSERT((tlist->word->flags & W_ASSIGNMENT) == 0); */
-
-  /* If the -k option is in effect, we need to go through the remaining
-     words, separate out the assignment words, and place them on VARLIST. */
-  if (place_keywords_in_env)
-    {
-      WORD_LIST *tp;   /* tp == running pointer into tlist */
-
-      tp = tlist;
-      lp = tlist->next;
-
-      /* Loop Invariant: tp->next == lp */
-      /* Loop postcondition: tlist == word list without assignment statements */
-      while (lp)
-       {
-         if (lp->word->flags & W_ASSIGNMENT)
-           {
-             /* Found an assignment statement, add this word to end of
-                varlist (vp). */
-             if (!varlist)
-               varlist = vp = lp;
-             else
-               {
-                 vp->next = lp;
-                 vp = lp;
-               }
-
-             /* Remove the word pointed to by LP from TLIST. */
-             tp->next = lp->next;
-             /* ASSERT(vp == lp); */
-             lp->next = (WORD_LIST *)NULL;
-             lp = tp->next;
-           }
-         else
-           {
-             tp = lp;
-             lp = lp->next;
-           }
-       }
-    }
-  return (tlist);
-}
-
-/* Take the list of words in LIST and do the various substitutions.  Return
-   a new list of words which is the expanded list, and without things like
-   variable assignments. */
-
-WORD_LIST *
-expand_words (list)
-     WORD_LIST *list;
-{
-  return (expand_word_list_internal (list, 1));
-}
-
-/* Same as expand_words (), but doesn't hack variable or environment
-   variables. */
-WORD_LIST *
-expand_words_no_vars (list)
-     WORD_LIST *list;
-{
-  return (expand_word_list_internal (list, 0));
-}
-
-/* The workhorse for expand_words () and expand_words_no_vars ().
-   First arg is LIST, a WORD_LIST of words.
-   Second arg DO_VARS is non-zero if you want to do environment and
-   variable assignments, else zero.
-
-   This does all of the substitutions: brace expansion, tilde expansion,
-   parameter expansion, command substitution, arithmetic expansion,
-   process substitution, word splitting, and pathname expansion.  Words
-   with the W_QUOTED or W_ASSIGNMENT bits set, or for which no expansion
-   is done, do not undergo word splitting.  Words with the W_ASSIGNMENT
-   bit set do not undergo pathname expansion. */
-static WORD_LIST *
-expand_word_list_internal (list, do_vars)
-     WORD_LIST *list;
-     int do_vars;
-{
-  WORD_LIST *tlist, *new_list, *next, *temp_list, *orig_list, *disposables;
-  char *temp_string;
-
-  if (list == 0)
-    return ((WORD_LIST *)NULL);
-
-  tlist = copy_word_list (list);
-
-  if (do_vars)
-    {
-      tlist = separate_out_assignments (tlist);
-      if (tlist == 0)
-       {
-         if (varlist)
-           {
-             /* All the words were variable assignments, so they are placed
-                into the shell's environment. */
-             for (new_list = varlist; new_list; new_list = new_list->next)
-               do_assignment (new_list->word->word);
-             dispose_words (varlist);
-             varlist = (WORD_LIST *)NULL;
-           }
-         return ((WORD_LIST *)NULL);
-       }
-    }
-
-  /* Begin expanding the words that remain.  The expansions take place on
-     things that aren't really variable assignments. */
-
-#if defined (BRACE_EXPANSION)
-  /* Do brace expansion on this word if there are any brace characters
-     in the string. */
-  if (brace_expansion && tlist)
-    {
-      register char **expansions;
-      WORD_LIST *braces;
-      int eindex;
-
-      for (braces = disposables = (WORD_LIST *)NULL; tlist; tlist = next)
-       {
-         next = tlist->next;
-
-         /* Only do brace expansion if the word has a brace character.  If
-            not, just add the word list element to BRACES and continue.  In
-            the common case, at least when running shell scripts, this will
-            degenerate to a bunch of calls to `strchr', and then what is
-            basically a reversal of TLIST into BRACES, which is corrected
-            by a call to reverse_list () on BRACES when the end of TLIST
-            is reached. */
-         if (strchr (tlist->word->word, '{'))
-           {
-             expansions = brace_expand (tlist->word->word);
-
-             for (eindex = 0; temp_string = expansions[eindex]; eindex++)
-               {
-                 braces = make_word_list (make_word (temp_string), braces);
-                 free (expansions[eindex]);
-               }
-             free (expansions);
-
-             /* Add TLIST to the list of words to be freed after brace
-                expansion has been performed. */
-             tlist->next = disposables;
-             disposables = tlist;
-           }
-         else
-           {
-             tlist->next = braces;
-             braces = tlist;
-           }
-       }
-
-      dispose_words (disposables);
-      tlist = REVERSE_LIST (braces, WORD_LIST *);
-    }
-#endif /* BRACE_EXPANSION */
-
-  /* We do tilde expansion all the time.  This is what 1003.2 says. */
-  for (orig_list = tlist, new_list = (WORD_LIST *)NULL; tlist; tlist = next)
-    {
-      WORD_LIST *expanded;
-      int expanded_something, has_dollar_at;
-
-      temp_string = tlist->word->word;
-
-      next = tlist->next;
-
-      /* Posix.2 section 3.6.1 says that tildes following `=' in words
-        which are not assignment statements are not expanded.  We do
-        this only if POSIXLY_CORRECT is enabled. */
-      if (temp_string[0] == '~' ||
-         (posixly_correct == 0 && strchr (temp_string, '~') &&
-          unquoted_substring ("=~", temp_string)))
-       {
-         tlist->word->word = bash_tilde_expand (temp_string);
-         free (temp_string);
-       }
-
-      expanded_something = 0;
-      expanded = expand_word_internal
-       (tlist->word, 0, &has_dollar_at, &expanded_something);
-
-      if (expanded == &expand_word_error || expanded == &expand_word_fatal)
-       {
-         /* By convention, each time this error is returned,
-            tlist->word->word has already been freed. */
-         tlist->word->word = (char *)NULL;
-         
-         /* Dispose our copy of the original list. */
-         dispose_words (orig_list);
-         /* Dispose the  new list we're building. */
-         dispose_words (new_list);
-
-         if (expanded == &expand_word_error)
-           jump_to_top_level (DISCARD);
-         else
-           jump_to_top_level (FORCE_EOF);
-       }
-
-      /* Don't split assignment words, even when they do not precede a
-        command name. */
-      if (expanded_something && (tlist->word->flags & W_ASSIGNMENT) == 0)
-       {
-         temp_list = word_list_split (expanded);
-         dispose_words (expanded);
-       }
-      else
-       {
-         /* If no parameter expansion, command substitution, process
-            substitution, or arithmetic substitution took place, then
-            do not do word splitting.  We still have to remove quoted
-            null characters from the result. */
-#if 0
-         word_list_remove_quoted_nulls (expanded);
-#endif
-         temp_list = expanded;
-       }
-
-      /* In the most common cases, t will be a list containing only one
-        element, so the call to reverse_list would be wasted. */
-      expanded = REVERSE_LIST (temp_list, WORD_LIST *);
-      new_list = (WORD_LIST *)list_append (expanded, new_list);
-    }
-
-  new_list = REVERSE_LIST (new_list, WORD_LIST *);
-
-  dispose_words (orig_list);
-
-  /* Okay, we're almost done.  Now let's just do some filename
-     globbing. */
-  if (new_list)
-    {
-      char **glob_array;
-      register int glob_index;
-      WORD_LIST *glob_list;
-      WORD_DESC *tword;
-
-      orig_list = disposables = (WORD_LIST *)NULL;
-      tlist = new_list;
-
-      /* orig_list == output list, despite the name. */
-      if (!disallow_filename_globbing)
-       {
-         glob_array = (char **)NULL;
-         while (tlist)
-           {
-             /* For each word, either globbing is attempted or the word is
-                added to orig_list.  If globbing succeeds, the results are
-                added to orig_list and the word (tlist) is added to the list
-                of disposable words.  If globbing fails and failed glob
-                expansions are left unchanged (the shell default), the
-                original word is added to orig_list.  If globbing fails and
-                failed glob expansions are removed, the original word is
-                added to the list of disposable words.  orig_list ends up
-                in reverse order and requires a call to reverse_list to
-                be set right.  After all words are examined, the disposable
-                words are freed. */
-             next = tlist->next;
-
-             /* If the word isn't quoted and there is an unquoted pattern
-                matching character in the word, then glob it. */
-             if ((tlist->word->flags & (W_QUOTED|W_ASSIGNMENT)) == 0 &&
-                 unquoted_glob_pattern_p (tlist->word->word))
-               {
-                 glob_array = shell_glob_filename (tlist->word->word);
-
-                 /* Handle error cases.
-                    I don't think we should report errors like "No such file
-                    or directory".  However, I would like to report errors
-                    like "Read failed". */
-
-                 if (GLOB_FAILED (glob_array))
-                   {
-                     glob_array = (char **) xmalloc (sizeof (char *));
-                     glob_array[0] = (char *)NULL;
-                   }
-
-                 /* Dequote the current word in case we have to use it. */
-                 if (glob_array[0] == NULL)
-                   {
-                     temp_string = dequote_string (tlist->word->word);
-                     free (tlist->word->word);
-                     tlist->word->word = temp_string;
-                   }
-
-                 /* Make the array into a word list. */
-                 glob_list = (WORD_LIST *)NULL;
-                 for (glob_index = 0; glob_array[glob_index]; glob_index++)
-                   {
-                     tword = make_bare_word (glob_array[glob_index]);
-                     glob_list = make_word_list (tword, glob_list);
-                   }
-
-                 if (glob_list)
-                   {
-                     orig_list = (WORD_LIST *)list_append (glob_list, orig_list);
-                     tlist->next = disposables;
-                     disposables = tlist;
-                   }
-                 else if (allow_null_glob_expansion == 0)
-                   {
-                     /* Failed glob expressions are left unchanged. */
-                     tlist->next = orig_list;
-                     orig_list = tlist;
-                   }
-                 else
-                   {
-                     /* Failed glob expressions are removed. */
-                     tlist->next = disposables;
-                     disposables = tlist;
-                   }
-               }
-             else
-               {
-                 /* Dequote the string. */
-                 temp_string = dequote_string (tlist->word->word);
-                 free (tlist->word->word);
-                 tlist->word->word = temp_string;
-                 tlist->next = orig_list;
-                 orig_list = tlist;
-               }
-
-             free_array (glob_array);
-             glob_array = (char **)NULL;
-
-             tlist = next;
-           }
-
-         if (disposables)
-           dispose_words (disposables);
-
-         new_list = REVERSE_LIST (orig_list, WORD_LIST *);
-       }
-      else
-       {
-         /* Dequote the words, because we're not performing globbing. */
-         for (temp_list = new_list; temp_list; temp_list = temp_list->next)
-           {
-             temp_string = dequote_string (temp_list->word->word);
-             free (temp_list->word->word);
-             temp_list->word->word = temp_string;
-           }
-       }
-    }
-
-  if (do_vars)
-    {
-      Function *assign_func;
-
-      /* If the remainder of the words expand to nothing, Posix.2 requires
-        that the variable and environment assignments affect the shell's
-        environment. */
-      assign_func = new_list ? assign_in_env : do_assignment;
-
-      for (temp_list = varlist; temp_list; temp_list = temp_list->next)
-       (*assign_func) (temp_list->word->word);
-
-      dispose_words (varlist);
-      varlist = (WORD_LIST *)NULL;
-    }
-
-  return (new_list);
-}
-
-/*************************************************
- *                                              *
- *     Functions to manage special variables    *
- *                                              *
- *************************************************/
-
-/* An alist of name.function for each special variable.  Most of the
-   functions don't do much, and in fact, this would be faster with a
-   switch statement, but by the end of this file, I am sick of switch
-   statements. */
-
-#define SET_INT_VAR(name, intvar)  intvar = find_variable (name) != 0
-
-struct name_and_function {
-  char *name;
-  VFunction *function;
-} special_vars[] = {
-  { "PATH", sv_path },
-  { "MAIL", sv_mail },
-  { "MAILPATH", sv_mail },
-  { "MAILCHECK", sv_mail },
-
-  { "POSIXLY_CORRECT", sv_strict_posix },
-  { "GLOBIGNORE", sv_globignore },
-
-  /* Variables which only do something special when READLINE is defined. */
-#if defined (READLINE)
-  { "TERM", sv_terminal },
-  { "TERMCAP", sv_terminal },
-  { "TERMINFO", sv_terminal },
-  { "HOSTFILE", sv_hostfile },
-#endif /* READLINE */
-
-  /* Variables which only do something special when HISTORY is defined. */
-#if defined (HISTORY)
-  { "HISTIGNORE", sv_histignore },
-  { "HISTSIZE", sv_histsize },
-  { "HISTFILESIZE", sv_histsize },
-  { "HISTCONTROL", sv_history_control },
-#  if defined (BANG_HISTORY)
-  { "histchars", sv_histchars },
-#  endif /* BANG_HISTORY */
-#endif /* HISTORY */
-
-  { "IGNOREEOF", sv_ignoreeof },
-  { "ignoreeof", sv_ignoreeof },
-
-  { "OPTIND", sv_optind },
-  { "OPTERR", sv_opterr },
-
-  { (char *)0, (VFunction *)0 }
-};
-
-/* The variable in NAME has just had its state changed.  Check to see if it
-   is one of the special ones where something special happens. */
-void
-stupidly_hack_special_variables (name)
-     char *name;
-{
-  int i;
-
-  for (i = 0; special_vars[i].name; i++)
-    {
-      if (STREQ (special_vars[i].name, name))
-       {
-         (*(special_vars[i].function)) (name);
-         return;
-       }
-    }
-}
-
-/* What to do just after the PATH variable has changed. */
-void
-sv_path (name)
-     char *name;
-{
-  /* hash -r */
-  flush_hashed_filenames ();
-}
-
-/* What to do just after one of the MAILxxxx variables has changed.  NAME
-   is the name of the variable.  This is called with NAME set to one of
-   MAIL, MAILCHECK, or MAILPATH.  */
-void
-sv_mail (name)
-     char *name;
-{
-  /* If the time interval for checking the files has changed, then
-     reset the mail timer.  Otherwise, one of the pathname vars
-     to the users mailbox has changed, so rebuild the array of
-     filenames. */
-  if (name[4] == 'C')  /* if (strcmp (name, "MAILCHECK") == 0) */
-    reset_mail_timer ();
-  else
-    {
-      free_mail_files ();
-      remember_mail_dates ();
-    }
-}
-
-/* What to do when GLOBIGNORE changes. */
-void
-sv_globignore (name)
-     char *name;
-{
-  setup_glob_ignore (name);
-}
-
-#if defined (READLINE)
-/* What to do just after one of the TERMxxx variables has changed.
-   If we are an interactive shell, then try to reset the terminal
-   information in readline. */
-void
-sv_terminal (name)
-     char *name;
-{
-  if (interactive_shell && no_line_editing == 0)
-    rl_reset_terminal (get_string_value ("TERM"));
-}
-
-void
-sv_hostfile (name)
-     char *name;
-{
-  hostname_list_initialized = 0;
-}
-#endif /* READLINE */
-
-#if defined (HISTORY)
-/* What to do after the HISTSIZE or HISTFILESIZE variables change.
-   If there is a value for this HISTSIZE (and it is numeric), then stifle
-   the history.  Otherwise, if there is NO value for this variable,
-   unstifle the history.  If name is HISTFILESIZE, and its value is
-   numeric, truncate the history file to hold no more than that many
-   lines. */   
-void
-sv_histsize (name)
-     char *name;
-{
-  char *temp;
-  long num;
-
-  temp = get_string_value (name);
-
-  if (temp && *temp)
-    {
-      if (legal_number (temp, &num))
-        {
-         if (name[4] == 'S')
-           {
-             stifle_history (num);
-             num = where_history ();
-             if (history_lines_this_session > num)
-               history_lines_this_session = num;
-           }
-         else
-           {
-             history_truncate_file (get_string_value ("HISTFILE"), (int)num);
-             if (num <= history_lines_in_file)
-               history_lines_in_file = num;
-           }
-       }
-    }
-  else if (name[4] == 'S')
-    unstifle_history ();
-}
-
-/* What to do after the HISTIGNORE variable changes. */
-void
-sv_histignore (name)
-     char *name;
-{
-  setup_history_ignore (name);
-}
-
-/* What to do after the HISTCONTROL variable changes. */
-void
-sv_history_control (name)
-     char *name;
-{
-  char *temp;
-
-  history_control = 0;
-  temp = get_string_value (name);
-
-  if (temp && *temp && STREQN (temp, "ignore", 6))
-    {
-      if (temp[6] == 's')      /* ignorespace */
-       history_control = 1;
-      else if (temp[6] == 'd') /* ignoredups */
-       history_control = 2;
-      else if (temp[6] == 'b') /* ignoreboth */
-       history_control = 3;
-    }
-}
-
-#if defined (BANG_HISTORY)
-/* Setting/unsetting of the history expansion character. */
-void
-sv_histchars (name)
-     char *name;
-{
-  char *temp;
-
-  temp = get_string_value (name);
-  if (temp)
-    {
-      history_expansion_char = *temp;
-      if (temp[0] && temp[1])
-       {
-         history_subst_char = temp[1];
-         if (temp[2])
-             history_comment_char = temp[2];
-       }
-    }
-  else
-    {
-      history_expansion_char = '!';
-      history_subst_char = '^';
-      history_comment_char = '#';
-    }
-}
-#endif /* BANG_HISTORY */
-#endif /* HISTORY */
-
-/* If the variable exists, then the value of it can be the number
-   of times we actually ignore the EOF.  The default is small,
-   (smaller than csh, anyway). */
-void
-sv_ignoreeof (name)
-     char *name;
-{
-  SHELL_VAR *tmp_var;
-  char *temp;
-
-  eof_encountered = 0;
-
-  tmp_var = find_variable (name);
-  ignoreeof = tmp_var != 0;
-  temp = tmp_var ? value_cell (tmp_var) : (char *)NULL;
-  if (temp)
-    eof_encountered_limit = (*temp && all_digits (temp)) ? atoi (temp) : 10;
-}
-
-void
-sv_optind (name)
-     char *name;
-{
-  char *tt;
-  int s;
-
-  tt = get_string_value ("OPTIND");
-  if (tt && *tt)
-    {
-      s = atoi (tt);
-
-      /* According to POSIX, setting OPTIND=1 resets the internal state
-        of getopt (). */
-      if (s < 0 || s == 1)
-       s = 0;
-    }
-  else
-    s = 0;
-  getopts_reset (s);
-}
-
-void
-sv_opterr (name)
-     char *name;
-{
-  char *tt;
-
-  tt = get_string_value ("OPTERR");
-  sh_opterr = (tt && *tt) ? atoi (tt) : 1;
-}
-
-void
-sv_strict_posix (name)
-     char *name;
-{
-  SET_INT_VAR (name, posixly_correct);
-  posix_initialize (posixly_correct);
-#if defined (READLINE)
-  posix_readline_initialize (posixly_correct);
-#endif /* READLINE */
-}
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/CWRU/usleep.c b/CWRU/usleep.c
deleted file mode 100644 (file)
index 5d269a8..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <limits.h>
-
-char *progname;
-
-int
-main(int argc, char **argv)
-{
-       unsigned long int length;
-
-       length = 0;
-       progname = argv[0];
-
-       if (argc != 2) {
-               fprintf(stderr, "%s: must be given a duration\n", progname);
-               return 1;
-       }
-
-       length = strtol(argv[1], NULL, 10);
-       if (length == LONG_MAX) {
-               fprintf(stderr, "%s: number is too large: %s\n", progname, argv[1]);
-                       return 1;
-        }
-
-       usleep(length);
-
-       return 0;
-}
diff --git a/MANIFEST.doc b/MANIFEST.doc
deleted file mode 100644 (file)
index ab9507c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Master Manifest file for documentation-only distribution
-#
-doc    d
-MANIFEST.doc   f
-doc/article.ps f
-doc/rose94.ps  f
-doc/bash.ps            f
-doc/bashbug.ps f
-doc/builtins.ps        f
-doc/rbash.ps   f
-doc/bashref.ps f
-doc/bashref.dvi        f
-doc/bash.0             f
-doc/bashbug.0          f
-doc/builtins.0 f
-doc/rbash.0    f
-doc/article.txt        f
-doc/bash.html          f
-doc/bashref.html       f
-doc/article.pdf        f
-doc/bash.pdf   f
-doc/bashref.pdf        f
-doc/rose94.pdf f
-doc/aosa-bash.pdf      f
diff --git a/NEWS-4.4 b/NEWS-4.4
deleted file mode 100644 (file)
index a2cd986..0000000
--- a/NEWS-4.4
+++ /dev/null
@@ -1,131 +0,0 @@
-This is a terse description of the new features added to bash-4.4 since
-the release of bash-4.3.  As always, the manual page (doc/bash.1) is
-the place to look for complete descriptions.
-
-1.  New Features in Bash
-
-a.  There is now a settable configuration #define that will cause the shell
-    to exit if the shell is running setuid without the -p option and setuid
-    to the real uid fails.
-
-b.  Command and process substitutions now turn off the `-v' option when
-    executing, as other shells seem to do.
-
-c.  The default value for the `checkhash' shell option may now be set at
-    compile time with a #define.
-
-d.  The `mapfile' builtin now has a -d option to use an arbitrary character
-    as the record delimiter, and a -t option  to strip the delimiter as
-    supplied with -d.
-
-e.  The maximum number of nested recursive calls to `eval' is now settable in
-    config-top.h; the default is no limit.
-
-f.  The `-p' option to declare and similar builtins will display attributes for
-    named variables even when those variables have not been assigned values
-    (which are technically unset).
-
-g.  The maximum number of nested recursive calls to `source' is now settable
-    in config-top.h; the default is no limit.
-
-h.  All builtin commands recognize the `--help' option and print a usage
-    summary.
-
-i.  Bash does not allow function names containing `/' and `=' to be exported.
-
-j.  The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options.
-
-k.  The shell now allows `time ; othercommand' to time null commands.
-
-l.  There is a new `--enable-function-import' configuration option to allow
-    importing shell functions from the environment; import is enabled by
-    default.
-
-m.  `printf -v var ""' will now set `var' to the empty string, as if `var=""'
-    had been executed.
-
-n.  GLOBIGNORE, the pattern substitution word expansion, and programmable
-    completion match filtering now honor the value of the `nocasematch' option.
-
-o.  There is a new ${parameter@spec} family of operators to transform the
-    value of `parameter'.
-
-p.  Bash no longer attempts to perform compound assignment if a variable on the
-    rhs of an assignment statement argument to `declare' has the form of a
-    compound assignment (e.g., w='(word)' ; declare foo=$w); compound
-    assignments are accepted if the variable was already declared as an array,
-    but with a warning.
-
-q.  The declare builtin no longer displays array variables using the compound
-    assignment syntax with quotes; that will generate warnings when re-used as
-    input, and isn't necessary.
-
-r.  Executing the rhs of && and || will no longer cause the shell to fork if
-    it's not necessary.
-
-s.  The `local' builtin takes a new argument: `-', which will cause it to save
-    and the single-letter shell options and restore their previous values at
-    function return.
-
-t.  `complete' and `compgen' have a new `-o nosort' option, which forces
-    readline to not sort the completion matches.
-
-u.  Bash now allows waiting for the most recent process substitution, since it
-    appears as $!.
-
-v.  The `unset' builtin now unsets a scalar variable if it is subscripted with
-    a `0', analogous to the ${var[0]} expansion.
-
-w.  `set -i' is no longer valid, as in other shells.
-
-x.  BASH_SUBSHELL is now updated for process substitution and group commands
-    in pipelines, and is available with the same value when running any exit
-    trap.
-
-y.  Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or
-    not bash is being run in a GNU Emacs shell window.
-
-z.  Bash now treats SIGINT received when running a non-builtin command in a
-    loop the way it has traditionally treated running a builtin command:
-    running any trap handler and breaking out of the loop.
-
-aa. New variable: EXECIGNORE; a colon-separate list of patterns that will
-    cause matching filenames to be ignored when searching for commands.
-
-bb. Aliases whose value ends in a shell metacharacter now expand in a way to
-    allow them to be `pasted' to the next token, which can potentially change
-    the meaning of a command (e.g., turning `&' into `&&').
-
-2.  New Features in Readline
-
-a.  The history truncation code now uses the same error recovery mechansim as
-    the history writing code, and restores the old version of the history file
-    on error.  The error recovery mechanism handles symlinked history files.
-
-b.  There is a new bindable variable, `enable-bracketed-paste', which enables
-    support for a terminal's bracketed paste mode.
-
-c.  The editing mode indicators can now be strings and are user-settable
-    (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string'
-    variables).  Mode strings can contain invisible character sequences.
-    Setting mode strings to null strings restores the defaults.
-
-d.  Prompt expansion adds the mode string to the last line of a multi-line
-    prompt (one with embedded newlines).
-
-e.  There is a new bindable variable, `colored-completion-prefix', which, if
-    set, causes the common prefix of a set of possible completions to be
-    displayed in color.
-
-f.  There is a new bindable command `vi-yank-pop', a vi-mode version of emacs-
-    mode yank-pop.
-
-g.  The redisplay code underwent several efficiency improvements for multibyte
-    locales.
-
-h.  The insert-char function attempts to batch-insert all pending typeahead
-    that maps to self-insert, as long as it is coming from the terminal.
-
-i.  rl_callback_sigcleanup: a new application function that can clean up and
-    unset any state set by readline's callback mode.  Intended to be used
-    after a signal.
diff --git a/builtins/-i b/builtins/-i
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/builtins/ChangeLog b/builtins/ChangeLog
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/builtins/psize-posix.c b/builtins/psize-posix.c
deleted file mode 100644 (file)
index e5840e4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* psize-posix - display the pipe size on a Posix system. */
-
-/* Copyright 2008,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 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 <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-main(c, v)
-int    c;
-char   **v;
-{
-       char    *p;
-       long    l;
-
-       p = v[1] ? v[1] : "/";
-       l = pathconf (p, _PC_PIPE_BUF);
-       printf ("%ld\n", l);
-       exit(0);
-}
diff --git a/configure.mk b/configure.mk
deleted file mode 100644 (file)
index d6ff428..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# Make sure the first target in the makefile is the right one
-configure:     configure.ac aclocal.m4 config.h.in
-       autoconf
diff --git a/cross-build/beos-sig.h b/cross-build/beos-sig.h
deleted file mode 100644 (file)
index ea82f85..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* This file is used when cross compiling bash to run native on BeOS. */
-
-#ifndef __GNUC__
-# error cross compiling requires gcc
-#endif
-
-/* A translation list so we can be polite to our users.
-   Use gcc labelled initializers to set up the array.  Note that
-   some entries might wind up being NULL. */
-
-char *signal_names[NSIG + 3] = {
-  [0]         "EXIT",
-  [SIGHUP]    "SIGHUP",
-  [SIGINT]    "SIGINT",
-  [SIGQUIT]   "SIGQUIT",
-  [SIGILL]    "SIGILL",
-  [SIGCHLD]   "SIGCHLD",
-  [SIGABRT]   "SIGABRT",
-  [SIGPIPE]   "SIGPIPE",
-  [SIGFPE]    "SIGFPE",
-  [SIGKILL]   "SIGKILL",
-  [SIGSTOP]   "SIGSTOP",
-  [SIGSEGV]   "SIGSEGV",
-  [SIGCONT]   "SIGCONT",
-  [SIGTSTP]   "SIGTSTP",
-  [SIGALRM]   "SIGALRM",
-  [SIGTERM]   "SIGTERM",
-  [SIGTTIN]   "SIGTTIN",
-  [SIGTTOU]   "SIGTTOU",
-  [SIGUSR1]   "SIGUSR1",
-  [SIGUSR2]   "SIGUSR2",
-  [SIGWINCH]  "SIGWINCH",
-  [SIGKILLTHR]        "SIGKILLTHR",
-  [NSIG]      "DEBUG",
-  [NSIG + 1]  "ERR",
-  [NSIG + 2]  (char *)0x0,
-};
diff --git a/cross-build/win32sig.h b/cross-build/win32sig.h
deleted file mode 100644 (file)
index 41e6182..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/* This file is used when cross-compiling for the CYGWIN32 environment on
-   a Unix machine.  It gets copied to signames.h in the build directory. */
-#include <sys/types.h>
-#include <signal.h>
-
-#ifndef __GNUC__
-# error cross compiling requires gcc
-#endif
-
-/* A translation list so we can be polite to our users.  Use gcc
-   labelled initializers to set up the array.  Note that some entries
-   might wind up being NULL.  */
-
-char *signal_names[NSIG + 3] = {
-  [0]          "EXIT",
-
-#ifdef SIGLOST
-  [SIGLOST]    "SIGLOST",
-#endif
-
-#ifdef SIGMSG
-  [SIGMSG]     "SIGMSG",
-#endif
-
-#ifdef SIGDANGER
-  [SIGDANGER]  "SIGDANGER",
-#endif
-
-#ifdef SIGMIGRATE
-  [SIGMIGRATE] "SIGMIGRATE",
-#endif
-
-#ifdef SIGPRE
-  [SIGPRE]     "SIGPRE",
-#endif
-
-#ifdef SIGVIRT
-  [SIGVIRT]    "SIGVIRT",
-#endif
-
-#ifdef SIGALRM1
-  [SIGALRM1]   "SIGALRM1",
-#endif
-
-#ifdef SIGWAITING
-  [SIGWAITING] "SIGWAITING",
-#endif
-
-#ifdef SIGGRANT
-  [SIGGRANT]   "SIGGRANT",
-#endif
-
-#ifdef SIGKAP
-  [SIGKAP]     "SIGKAP",
-#endif
-
-#ifdef SIGRETRACT
-  [SIGRETRACT] "SIGRETRACT",
-#endif
-
-#ifdef SIGSOUND
-  [SIGSOUND]   "SIGSOUND",
-#endif
-
-#ifdef SIGSAK
-  [SIGSAK]     "SIGSAK",
-#endif
-
-#ifdef SIGLWP
-  [SIGLWP]     "SIGLWP",
-#endif
-
-#ifdef SIGFREEZE
-  [SIGFREEZE]  "SIGFREEZE",
-#endif
-
-#ifdef SIGTHAW
-  [SIGTHAW]    "SIGTHAW",
-#endif
-
-#ifdef SIGCANCEL
-  [SIGCANCEL]  "SIGCANCEL",
-#endif
-
-#ifdef SIGDIL
-  [SIGDIL]     "SIGDIL",
-#endif
-
-#ifdef SIGCLD
-#ifndef SIGCHLD
-  [SIGCLD]     "SIGCLD",
-#else
-#if SIGCHLD != SIGCLD
-  [SIGCLD]     "SIGCLD",
-#endif
-#endif
-#endif
-
-#ifdef SIGPWR
-  [SIGPWR]     "SIGPWR",
-#endif
-
-#ifdef SIGPOLL
-#ifndef SIGIO
-  [SIGPOLL]    "SIGPOLL",
-#else
-#if SIGIO != SIGPOLL
-  [SIGPOLL]    "SIGPOLL",
-#endif
-#endif
-#endif
-
-#ifdef SIGWINDOW
-  [SIGWINDOW]  "SIGWINDOW",
-#endif
-
-#ifdef SIGHUP
-  [SIGHUP]     "SIGHUP",
-#endif
-
-#ifdef SIGINT
-  [SIGINT]     "SIGINT",
-#endif
-
-#ifdef SIGQUIT
-  [SIGQUIT]    "SIGQUIT",
-#endif
-
-#ifdef SIGILL
-  [SIGILL]     "SIGILL",
-#endif
-
-#ifdef SIGTRAP
-  [SIGTRAP]    "SIGTRAP",
-#endif
-
-#ifdef SIGIOT
-#ifndef SIGABRT
-  [SIGIOT]     "SIGIOT",
-#else
-#if SIGABRT != SIGIOT
-  [SIGIOT]     "SIGIOT",
-#endif
-#endif
-#endif
-
-#ifdef SIGABRT
-  [SIGABRT]    "SIGABRT",
-#endif
-
-#ifdef SIGEMT
-  [SIGEMT]     "SIGEMT",
-#endif
-
-#ifdef SIGFPE
-  [SIGFPE]     "SIGFPE",
-#endif
-
-#ifdef SIGKILL
-  [SIGKILL]    "SIGKILL",
-#endif
-
-#ifdef SIGBUS
-  [SIGBUS]     "SIGBUS",
-#endif
-
-#ifdef SIGSEGV
-  [SIGSEGV]    "SIGSEGV",
-#endif
-
-#ifdef SIGSYS
-  [SIGSYS]     "SIGSYS",
-#endif
-
-#ifdef SIGPIPE
-  [SIGPIPE]    "SIGPIPE",
-#endif
-
-#ifdef SIGALRM
-  [SIGALRM]    "SIGALRM",
-#endif
-
-#ifdef SIGTERM
-  [SIGTERM]    "SIGTERM",
-#endif
-
-#ifdef SIGURG
-  [SIGURG]     "SIGURG",
-#endif
-
-#ifdef SIGSTOP
-  [SIGSTOP]    "SIGSTOP",
-#endif
-
-#ifdef SIGTSTP
-  [SIGTSTP]    "SIGTSTP",
-#endif
-
-#ifdef SIGCONT
-  [SIGCONT]    "SIGCONT",
-#endif
-
-#ifdef SIGCHLD
-  [SIGCHLD]    "SIGCHLD",
-#endif
-
-#ifdef SIGTTIN
-  [SIGTTIN]    "SIGTTIN",
-#endif
-
-#ifdef SIGTTOU
-  [SIGTTOU]    "SIGTTOU",
-#endif
-
-#ifdef SIGIO
-  [SIGIO]      "SIGIO",
-#endif
-
-#ifdef SIGXCPU
-  [SIGXCPU]    "SIGXCPU",
-#endif
-
-#ifdef SIGXFSZ
-  [SIGXFSZ]    "SIGXFSZ",
-#endif
-
-#ifdef SIGVTALRM
-  [SIGVTALRM]  "SIGVTALRM",
-#endif
-
-#ifdef SIGPROF
-  [SIGPROF]    "SIGPROF",
-#endif
-
-#ifdef SIGWINCH
-  [SIGWINCH]   "SIGWINCH",
-#endif
-
-#ifdef SIGINFO
-  [SIGINFO]    "SIGINFO",
-#endif
-
-#ifdef SIGUSR1
-  [SIGUSR1]    "SIGUSR1",
-#endif
-
-#ifdef SIGUSR2
-  [SIGUSR2]    "SIGUSR2",
-#endif
-
-  [NSIG]       "DEBUG",
-
-  [NSIG + 1]   "ERR",
-
-  [NSIG + 2]   (char *)0x0
-};
diff --git a/doc/-i b/doc/-i
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/doc/FAQ-2.05a b/doc/FAQ-2.05a
deleted file mode 100644 (file)
index 3d96577..0000000
+++ /dev/null
@@ -1,1676 +0,0 @@
-This is the Bash FAQ, version 3.19, for Bash version 2.05a.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet@po.cwru.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX 1003.2 standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 2.05a?
-B2) Are there any user-visible incompatibilities between bash-2.05a and
-    bash-1.14.7?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why does bash-2.05a fail to compile `printf.def' on HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 2.05a, first made available on Thursday, 15
-November, 2001.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 2.05a:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05a.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-2.05a.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05a.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05a.tar.gz
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of UNIX.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of UNIX you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions as part of their CYGWIN
-project.  For more information about the project, look at the URLs
-
-http://www.cygwin.com/
-http://sourceware.cygnus.com/cygwin
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done a
-port of bash-2.05 to the CYGWIN environment, and it is available as
-part of their current release.
-
-Bash-2.05a should require no local Cygnus changes to build and run under
-CYGWIN.
-
-The Cygnus port works only on Intel machines.  There is a port of bash
-(I don't know which version) to the alpha/NT environment available from
-
-ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark has begun to work with bash-2.05, but I don't know the status.
-
-Ports of bash-1.12 and bash-2.0 are available for OS/2 from
-
-ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip
-ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip
-
-I haven't looked at either, but the second appears to be a binary-only
-distribution.  Beware.
-
-I have received word that Bash (I'm not sure which version, but I
-believe that it's at least bash-2.02.1) is the standard shell on
-BeOS.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-        [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX 1003.2 standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard has been developed by IEEE
-Working Group 1003.2 (POSIX.2).  It concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  An initial version of the
-standard has been approved and published by the IEEE, and work is
-currently underway to update it. 
-
-Bash is concerned with the aspects of the shell's behavior
-defined by POSIX.2.  The shell command language has of course
-been standardized, including the basic flow control and program
-execution constructs, I/O redirection and pipelining, argument
-handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX.2 not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX.2 also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The Open Group has made an older version of its Single Unix
-Specification (version 2), which is very similar to POSIX.2,
-available on the web at
-
-http://www.opengroup.org/onlinepubs/007908799/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX.2 shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix option or
-executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file CWRU/POSIX.NOTES in the bash
-distribution.  They are also listed in a section in the Bash
-Reference Manual.
-
-Section B:  The latest version
-
-B1) What's new in version 2.05a?
-
-The raison d'etre for bash-2.05a is to make an intermediate release
-containing principally bug fixes (some very good work was done and
-contributed after bash-2.05 was released) available before I start to
-work on the major new features to be available in the next release
-(bash-2.06 or bash-3.0 or whatever I tag it).  As such, there are
-only a few relatively minor new features.
-
-Bash-2.05a contains the following new features (see the manual page for
-complete descriptions and the CHANGES and NEWS files in the bash-2.05a
-distribution):
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-A short feature history dating from bash-2.0:
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-2.05a and
-    bash-1.14.7?
-
-There are a few incompatibilities between version 1.14.7 and version 2.05a.
-They are detailed in the file COMPAT in the bash-2.05a distribution.  That
-file is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -m/-p/-u,
-                 type -a/-p/-t, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr)
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt,
-                 disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, fc -e -, newgrp, print,
-                 read -p/-s/-u/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-2.05a:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       set -o pipefail
-       `+=' variable assignment operator
-       TMOUT is default timeout for `read' and `select'
-       <&N- and >&N- redirections (combination dup and close)
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       DEBUG trap now executed before each simple command, instead of after
-       printf %H, %P, %T, %Z modifiers, output base for %d
-
-New things in ksh-93 present in bash-2.05a:
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias fc=hist
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-You can build a version of bash that will not report SIGPIPE errors
-by uncommenting the definition of DONT_REPORT_SIGPIPE in the file
-config-top.h.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline runs in a separate process, a child of
-the shell running the pipeline.  A subprocess cannot affect its
-parent's environment.  When the `read' command sets the variable
-to the input, that variable is set only in the subshell, not the
-parent shell.  When the subshell exits, the value of the variable
-is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt' that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest drafts of the updated POSIX standard have changed this:  the
-word list is no longer required.  Bash versions 2.05a and later accept
-the new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.05 and later versions have reverted to the bash-2.03 behavior of
-honoring the current locale setting when processing ranges within pattern
-matching bracket expressions ([A-Z]).  This is what POSIX.2 and SUSv3/XPG6
-specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash-2.05a distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why does bash-2.05a fail to compile `printf.def' on HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-is 1-56592-147-X.  Look for it in fine bookstores near you.  This book
-covers bash-1.14, but has an appendix describing some of the new features
-in bash-2.0.  
-
-A second edition of this book is available, published in January, 1998.
-The ISBN number is 1-56592-347-2.  Look for it in the same fine bookstores
-or on the web.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-a better bash debugger (a minimally-tested version is included with bash-2.05a)
-associative arrays
-changes to the DEBUG trap to be compatible with ksh93 (which runs the
-trap before each simple command, instead of after each one like previous
-versions)
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-better internationalization using GNU `gettext'
-an option to use external files for the long `help' text
-date-stamped command history
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `+=' variable assignment operator
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2002.  Never make predictions. 
-
-
-This document is Copyright 1995-2001 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-2.05b b/doc/FAQ-2.05b
deleted file mode 100644 (file)
index f0f3d1b..0000000
+++ /dev/null
@@ -1,1771 +0,0 @@
-This is the Bash FAQ, version 3.26, for Bash version 2.05b.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet@po.cwru.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 2.05b?
-B2) Are there any user-visible incompatibilities between bash-2.05b and
-    bash-1.14.7?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 2.05b, first made available on Wednesday, 17
-July, 2002.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 2.05b:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of UNIX.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of UNIX you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions as part of their CYGWIN
-project.  For more information about the project, look at the URLs
-
-http://www.cygwin.com/
-http://sourceware.cygnus.com/cygwin
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done a
-port of bash-2.05 to the CYGWIN environment, and it is available as
-part of their current release.
-
-Bash-2.05b should require no local Cygnus changes to build and run under
-CYGWIN.
-
-The Cygnus port works only on Intel machines.  There is a port of bash
-(I don't know which version) to the alpha/NT environment available from
-
-ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark has begun to work with bash-2.05, but I don't know the status.
-
-Ports of bash-1.12 and bash-2.0 are available for OS/2 from
-
-ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip
-ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip
-
-I haven't looked at either, but the second appears to be a binary-only
-distribution.  Beware.
-
-I have received word that Bash (I'm not sure which version, but I
-believe that it's at least bash-2.02.1) is the standard shell on
-BeOS.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2003 Edition incorporating the
-Technical Corrigendum 1), as part of the Single UNIX Specification
-Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 2.05b?
-
-The raison d'etre for bash-2.05b is to make a second intermediate
-release containing the first of the new features to be available
-in bash-3.0 and get feedback on those features before proceeding.
-The major new feature is multibyte character support in both Bash
-and Readline.
-
-Bash-2.05b contains the following new features (see the manual page for
-complete descriptions and the CHANGES and NEWS files in the bash-2.05b
-distribution):
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-
-A short feature history dating from Bash-2.0:
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-2.05b and
-    bash-1.14.7?
-
-There are a few incompatibilities between version 1.14.7 and version 2.05b.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -m/-p/-u,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt,
-                 disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, fc -e -, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-2.05b:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       set -o pipefail
-       `+=' variable assignment operator
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       DEBUG trap now executed before each simple command, instead of after
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-2.05b:
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-You can build a version of bash that will not report SIGPIPE errors
-by uncommenting the definition of DONT_REPORT_SIGPIPE in the file
-config-top.h.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline runs in a separate process, a child of
-the shell running the pipeline.  A subprocess cannot affect its
-parent's environment.  When the `read' command sets the variable
-to the input, that variable is set only in the subshell, not the
-parent shell.  When the subshell exits, the value of the variable
-is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest drafts of the updated POSIX standard have changed this:  the
-word list is no longer required.  Bash versions 2.05a and later accept
-the new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash-2.05a distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-is 1-56592-147-X.  Look for it in fine bookstores near you.  This book
-covers bash-1.14, but has an appendix describing some of the new features
-in bash-2.0.  
-
-A second edition of this book is available, published in January, 1998.
-The ISBN number is 1-56592-347-2.  Look for it in the same fine bookstores
-or on the web.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003).  It covers
-bash-2.0 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-a better bash debugger (a minimally-tested version is included with bash-2.05b)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-better internationalization using GNU `gettext'
-date-stamped command history
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `+=' variable assignment operator
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2003.  Never make predictions. 
-
-
-This document is Copyright 1995-2003 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-20090219 b/doc/FAQ-20090219
deleted file mode 100644 (file)
index 29d453a..0000000
+++ /dev/null
@@ -1,2060 +0,0 @@
-This is the Bash FAQ, version 4.01, for Bash version 4.0.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 4.0?
-B2) Are there any user-visible incompatibilities between bash-4.0,
-    bash-3.2, and bash-2.05b?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 4.0, first made available on 20 February, 2009.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 4.0:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-4.0.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.0.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-4.0.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-4.0-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-2.05b and bash-3.2 to the CYGWIN environment, and both
-are available as part of their current release.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-4.0, but will gladly accept any patches that are needed.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 4.0?
-
-Bash-4.0 is the fourth major release of bash.  There are numerous new features,
-some experimental.  Depending on community reception, the experimental
-features will evolve.
-
-Bash-4.0 contains the following new features (see the manual page for
-complete descriptions and the CHANGES and NEWS files in the bash-4.0
-distribution):
-
-o   When using substring expansion on the positional parameters, a starting
-    index of 0 now causes $0 to be prefixed to the list.
-
-o   There is a new variable, $BASHPID, which always returns the process id of
-    the current shell.
-
-o   There is a new `autocd' option that, when enabled, causes bash to attempt
-    to `cd' to a directory name that is supplied as the first word of a
-    simple command.
-
-o   There is a new `checkjobs' option that causes the shell to check for and
-    report any running or stopped jobs at exit.
-
-o   The programmable completion code exports a new COMP_TYPE variable, set to
-    a character describing the type of completion being attempted.
-
-o   The programmable completion code exports a new COMP_KEY variable, set to
-    the character that caused the completion to be invoked (e.g., TAB).
-
-o   The programmable completion code now uses the same set of characters as
-    readline when breaking the command line into a list of words.
-
-o   The block multiplier for the ulimit -c and -f options is now 512 when in
-    Posix mode, as Posix specifies.
-
-o   Changed the behavior of the read builtin to save any partial input received
-    in the specified variable when the read builtin times out.  This also
-    results in variables specified as arguments to read to be set to the empty
-    string when there is no input available.  When the read builtin times out,
-    it returns an exit status greater than 128.
-
-o   The shell now has the notion of a `compatibility level', controlled by
-    new variables settable by `shopt'.  Setting this variable currently
-    restores the bash-3.1 behavior when processing quoted strings on the rhs
-    of the `=~' operator to the `[[' command.
-
-o   The `ulimit' builtin now has new -b (socket buffer size) and -T (number
-    of threads) options.
-
-o   There is a new `compopt' builtin that allows completion functions to modify
-    completion options for existing completions or the completion currently
-    being executed.
-
-o   The `read' builtin has a new -i option which inserts text into the reply
-    buffer when using readline.
-
-o   A new `-E' option to the complete builtin allows control of the default
-    behavior for completion on an empty line.
-
-o   There is now limited support for completing command name words containing
-    globbing characters.
-
-o   The `help' builtin now has a new -d option, to display a short description,
-    and a -m option, to print help information in a man page-like format.
-
-o   There is a new `mapfile' builtin to populate an array with lines from a
-    given file.
-
-o   If a command is not found, the shell attempts to execute a shell function
-    named `command_not_found_handle', supplying the command words as the
-    function arguments.
-
-o   There is a new shell option: `globstar'.  When enabled, the globbing code
-    treats `**' specially -- it matches all directories (and files within
-    them, when appropriate) recursively.
-
-o   There is a new shell option: `dirspell'.  When enabled, the filename
-    completion code performs spelling correction on directory names during
-    completion.
-
-o   The `-t' option to the `read' builtin now supports fractional timeout
-    values.
-
-o   Brace expansion now allows zero-padding of expanded numeric values and
-    will add the proper number of zeroes to make sure all values contain the
-    same number of digits.
-
-o   There is a new bash-specific bindable readline function: `dabbrev-expand'.
-    It uses menu completion on a set of words taken from the history list.
-
-o   The command assigned to a key sequence with `bind -x' now sets two new
-    variables in the environment of the executed command:  READLINE_LINE_BUFFER
-    and READLINE_POINT.  The command can change the current readline line
-    and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
-    respectively.
-
-o   There is a new >>& redirection operator, which appends the standard output
-    and standard error to the named file.
-
-o   The parser now understands `|&' as a synonym for `2>&1 |', which redirects
-    the standard error for a command through a pipe.
-
-o   The new `;&' case statement action list terminator causes execution to
-    continue with the action associated with the next pattern in the
-    statement rather than terminating the command.
-
-o   The new `;;&' case statement action list terminator causes the shell to
-    test the next set of patterns after completing execution of the current
-    action, rather than terminating the command.
-
-o   The shell understands a new variable: PROMPT_DIRTRIM.  When set to an
-    integer value greater than zero, prompt expansion of \w and \W  will
-    retain only that number of trailing pathname components and replace
-    the intervening characters with `...'.
-
-o   There are new case-modifying word expansions: uppercase (^[^]) and
-    lowercase (,[,]).  They can work on either the first character or
-    array element, or globally.  They accept an optional shell pattern
-    that determines which characters to modify.  There is an optionally-
-    configured feature to include capitalization operators.
-
-o   The shell provides associative array variables, with the appropriate
-    support to create, delete, assign values to, and expand them.
-
-o   The `declare' builtin now has new -l (convert value to lowercase upon
-    assignment) and -u (convert value to uppercase upon assignment) options.
-    There is an optionally-configurable -c option to capitalize a value at
-    assignment.
-
-o   There is a new `coproc' reserved word that specifies a coprocess: an
-    asynchronous command run with two pipes connected to the creating shell.
-    Coprocs can be named.  The input and output file descriptors and the
-    PID of the coprocess are available to the calling shell in variables
-    with coproc-specific names.
-
-o   A value of 0 for the -t option to `read' now returns success if there is
-    input available to be read from the specified file descriptor.
-
-o   CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
-    mode.
-
-o   New bindable readline functions shell-forward-word and shell-backward-word,
-    which move forward and backward words delimited by shell metacharacters
-    and honor shell quoting.
-
-o   New bindable readline functions shell-backward-kill-word and shell-kill-word
-    which kill words backward and forward, but use the same word boundaries
-    as shell-forward-word and shell-backward-word.
-
-A short feature history dating from Bash-2.0:
-
-Bash-3.2 contained the following new features:
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-4.0, bash-3.2,
-    and bash-2.05b?
-
-There are a few incompatibilities between version 4.0 and version 3.2.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASHPID, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume, PROMPT_DIRTRIM
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-, >>&
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u/-i,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf, compopt, mapfile
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>&
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen, compopt, mapfile
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (bash uses different syntax)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-This list is current through ksh93t (11/04/2008)
-
-New things in ksh-93 not in bash-4.0:
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching (match all instead of any)
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-       $''  \C[.collating-element.] escape sequence
-       -C/-I invocation options
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       getopts -a
-       printf %B, %H, %P, %R, %T, %Z modifiers, output base for %d, `=' flag
-       read -N (read -n differs, too)/-v
-       set -o showme/-o multiline (bash default)
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       typeset -C/-S/-T/-X/-h/-s
-       experimental `type' definitions (a la typedef) using typeset
-       negative subscripts for indexed array variables
-       array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]}
-       associative array assignments using `;' as element separator
-       command substitution $(n<#) expands to current byte offset for fd N
-       new '${ ' form of command substitution, executed in current shell
-       new >;/<#pat/<##pat/<#/># redirections
-       redirection operators preceded with {varname} to store fd number in varname
-       brace expansion printf-like formats 
-
-New things in ksh-93 present in bash-4.0:
-       associative arrays
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       brace expansion and set -B
-       changes to kill builtin
-       `command', `builtin', `disown' builtins
-       echo -e
-       exec -c/-a
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       `.' restores the positional parameters when it completes
-       set -o notify/-C
-       set -o pipefail
-       set -G (-o globstar) and **
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion, TAB displaying possible completions
-       ENV processed only for interactive shells
-       The `+=' assignment operator
-       the `;&' case statement "fallthrough" pattern list terminator
-       csh-style history expansion and set -H
-       negative offsets in ${param:offset:length}
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Bash-4.0 introduces the concept of a `compatibility level', controlled by
-several options to the `shopt' builtin.  If the `compat31' option is enabled,
-bash reverts to the bash-3.1 behavior with respect to quoting the rhs of
-the =~ operator.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.  It's a variant of
-
-       echo .[!.]* ..?* *
-
-(The ..?* catches files with names of three or more characters beginning
-with `..')
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-4.0)
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2009.  Never make predictions. 
-
-This document is Copyright 1995-2009 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-3.0 b/doc/FAQ-3.0
deleted file mode 100644 (file)
index 1eb1162..0000000
+++ /dev/null
@@ -1,1788 +0,0 @@
-This is the Bash FAQ, version 3.31, for Bash version 3.0.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet@po.cwru.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 3.0?
-B2) Are there any user-visible incompatibilities between bash-3.0 and
-    bash-1.14.7?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 3.0, first made available on 27 July, 2004.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 3.0:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-3.0.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-3.0.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.0.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-3.0.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-3.0-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done a
-port of bash-2.05b to the CYGWIN environment, and it is available as
-part of their current release.  Bash-3.0 is currently being tested and
-should be available soon.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 3.0?
-
-Bash-3.0 is the third major release of bash.  The features introduced
-in the intermediate releases following bash-2.05 have been completed.
-Support for the bash debugger (a separate project) has been integrated.
-
-Bash-3.0 contains the following new features (see the manual page for
-complete descriptions and the CHANGES and NEWS files in the bash-3.0
-distribution):
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-A short feature history dating from Bash-2.0:
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-3.0 and
-    bash-1.14.7?
-
-There are a few incompatibilities between version 1.14.7 and version 3.0.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -m/-p/-u,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt,
-                 disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-3.0:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       `+=' variable assignment operator
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-3.0:
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-       set -o pipefail
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-You can build a version of bash that will not report SIGPIPE errors
-by uncommenting the definition of DONT_REPORT_SIGPIPE in the file
-config-top.h.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-is 1-56592-147-X.  Look for it in fine bookstores near you.  This book
-covers bash-1.14, but has an appendix describing some of the new features
-in bash-2.0.  
-
-A second edition of this book is available, published in January, 1998.
-The ISBN number is 1-56592-347-2.  Look for it in the same fine bookstores
-or on the web.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003).  It covers
-bash-2.0 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-3.0)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `+=' variable assignment operator
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2005.  Never make predictions. 
-
-This document is Copyright 1995-2005 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-3.1 b/doc/FAQ-3.1
deleted file mode 100644 (file)
index 7170265..0000000
+++ /dev/null
@@ -1,1806 +0,0 @@
-This is the Bash FAQ, version 3.33, for Bash version 3.1.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet@po.cwru.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 3.1?
-B2) Are there any user-visible incompatibilities between bash-3.1 and
-    bash-2.05b?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 3.1, first made available on 09 December, 2005.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 3.1:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-3.1.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-3.1.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.1.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-3.1.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-3.1-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both
-are available as part of their current release.  Bash-3.1 is currently
-being tested and should be available soon.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-3.1.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 3.1?
-
-Bash-3.1 is the first maintenance release of the third major release of
-bash.  It contains the following significant new features (see the manual
-page for complete descriptions and the CHANGES and NEWS files in the
-bash-3.1 distribution).
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-A short feature history dating from Bash-2.0:
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-3.1 and
-    bash-2.05b?
-
-There are a few incompatibilities between version 2.05b and version 3.1.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-3.0:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-3.0:
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-       set -o pipefail
-       The `+=' assignment operator
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash will not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003).  It covers
-bash-2.0 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-3.0)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2006.  Never make predictions. 
-
-This document is Copyright 1995-2005 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-3.2 b/doc/FAQ-3.2
deleted file mode 100644 (file)
index 4cebba0..0000000
+++ /dev/null
@@ -1,1878 +0,0 @@
-This is the Bash FAQ, version 3.36, for Bash version 3.2.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 3.2, first made available on 12 October, 2006.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 3.2:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both
-are available as part of their current release.  Bash-3.2 is currently
-being tested and should be available soon.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-3.1 or bash-3.2.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-
-Bash-3.2 is the second maintenance release of the third major release of
-bash.  It contains the following significant new features (see the manual
-page for complete descriptions and the CHANGES and NEWS files in the
-bash-3.2 distribution).
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-A short feature history dating from Bash-2.0:
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-There are a few incompatibilities between version 2.05b and version 3.2.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-3.2:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-3.2:
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-       set -o pipefail
-       The `+=' assignment operator
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.  It's a variant of
-
-       echo .[!.]* ..?* *
-
-(The ..?* catches files with names of three or more characters beginning
-with `..')
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-3.0)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2007.  Never make predictions. 
-
-This document is Copyright 1995-2006 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-4.0 b/doc/FAQ-4.0
deleted file mode 100644 (file)
index 59a2531..0000000
+++ /dev/null
@@ -1,2041 +0,0 @@
-This is the Bash FAQ, version 3.37, for Bash version 4.0.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 4.0?
-B2) Are there any user-visible incompatibilities between bash-4.0,
-    bash-3.2, and bash-2.05b?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 4.0, first made available on XXX YYYYY, 2008.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 4.0:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-4.0.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.0.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-4.0.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-4.0-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-2.05b and bash-3.2 to the CYGWIN environment, and both
-are available as part of their current release.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-4.0, but will gladly accept any patches that are needed.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 4.0?
-
-Bash-4.0 is the fourth major release of bash.  There are numerous new features,
-some experimental.  Depending on community reception, the experimental
-features will evolve.
-
-Bash-4.0 contains the following new features (see the manual page for
-complete descriptions and the CHANGES and NEWS files in the bash-4.0
-distribution):
-
-o   When using substring expansion on the positional parameters, a starting
-    index of 0 now causes $0 to be prefixed to the list.
-
-o   There is a new variable, $BASHPID, which always returns the process id of
-    the current shell.
-
-o   There is a new `autocd' option that, when enabled, causes bash to attempt
-    to `cd' to a directory name that is supplied as the first word of a
-    simple command.
-
-o   There is a new `checkjobs' option that causes the shell to check for and
-    report any running or stopped jobs at exit.
-
-o   The programmable completion code exports a new COMP_TYPE variable, set to
-    a character describing the type of completion being attempted.
-
-o   The programmable completion code exports a new COMP_KEY variable, set to
-    the character that caused the completion to be invoked (e.g., TAB).
-
-o   The programmable completion code now uses the same set of characters as
-    readline when breaking the command line into a list of words.
-
-o   The block multiplier for the ulimit -c and -f options is now 512 when in
-    Posix mode, as Posix specifies.
-
-o   Changed the behavior of the read builtin to save any partial input received
-    in the specified variable when the read builtin times out.  This also
-    results in variables specified as arguments to read to be set to the empty
-    string when there is no input available.  When the read builtin times out,
-    it returns an exit status greater than 128.
-
-o   The shell now has the notion of a `compatibility level', controlled by
-    new variables settable by `shopt'.  Setting this variable currently
-    restores the bash-3.1 behavior when processing quoted strings on the rhs
-    of the `=~' operator to the `[[' command.
-
-o   The `ulimit' builtin now has new -b (socket buffer size) and -T (number
-    of threads) options.
-
-o   There is a new `compopt' builtin that allows completion functions to modify
-    completion options for existing completions or the completion currently
-    being executed.
-
-o   The `read' builtin has a new -i option which inserts text into the reply
-    buffer when using readline.
-
-o   A new `-E' option to the complete builtin allows control of the default
-    behavior for completion on an empty line.
-
-o   There is now limited support for completing command name words containing
-    globbing characters.
-
-o   The `help' builtin now has a new -d option, to display a short description,
-    and a -m option, to print help information in a man page-like format.
-
-o   There is a new `mapfile' builtin to populate an array with lines from a
-    given file.
-
-o   If a command is not found, the shell attempts to execute a shell function
-    named `command_not_found_handle', supplying the command words as the
-    function arguments.
-
-o   There is a new shell option: `globstar'.  When enabled, the globbing code
-    treats `**' specially -- it matches all directories (and files within
-    them, when appropriate) recursively.
-
-o   There is a new shell option: `dirspell'.  When enabled, the filename
-    completion code performs spelling correction on directory names during
-    completion.
-
-o   The `-t' option to the `read' builtin now supports fractional timeout
-    values.
-
-o   Brace expansion now allows zero-padding of expanded numeric values and
-    will add the proper number of zeroes to make sure all values contain the
-    same number of digits.
-
-o   There is a new bash-specific bindable readline function: `dabbrev-expand'.
-    It uses menu completion on a set of words taken from the history list.
-
-o   The command assigned to a key sequence with `bind -x' now sets two new
-    variables in the environment of the executed command:  READLINE_LINE_BUFFER
-    and READLINE_POINT.  The command can change the current readline line
-    and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
-    respectively.
-
-o   There is a new >>& redirection operator, which appends the standard output
-    and standard error to the named file.
-
-o   The parser now understands `|&' as a synonym for `2>&1 |', which redirects
-    the standard error for a command through a pipe.
-
-o   The new `;&' case statement action list terminator causes execution to
-    continue with the action associated with the next pattern in the
-    statement rather than terminating the command.
-
-o   The new `;;&' case statement action list terminator causes the shell to
-    test the next set of patterns after completing execution of the current
-    action, rather than terminating the command.
-
-o   The shell understands a new variable: PROMPT_DIRTRIM.  When set to an
-    integer value greater than zero, prompt expansion of \w and \W  will
-    retain only that number of trailing pathname components and replace
-    the intervening characters with `...'.
-
-o   There are new case-modifying word expansions: uppercase (^[^]) and
-    lowercase (,[,]).  They can work on either the first character or
-    array element, or globally.  They accept an optional shell pattern
-    that determines which characters to modify.  There is an optionally-
-    configured feature to include capitalization operators.
-
-o   The shell provides associative array variables, with the appropriate
-    support to create, delete, assign values to, and expand them.
-
-o   The `declare' builtin now has new -l (convert value to lowercase upon
-    assignment) and -u (convert value to uppercase upon assignment) options.
-    There is an optionally-configurable -c option to capitalize a value at
-    assignment.
-
-o   There is a new `coproc' reserved word that specifies a coprocess: an
-    asynchronous command run with two pipes connected to the creating shell.
-    Coprocs can be named.  The input and output file descriptors and the
-    PID of the coprocess are available to the calling shell in variables
-    with coproc-specific names.
-
-o   A value of 0 for the -t option to `read' now returns success if there is
-    input available to be read from the specified file descriptor.
-
-o   CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
-    mode.
-
-o   New bindable readline functions shell-forward-word and shell-backward-word,
-    which move forward and backward words delimited by shell metacharacters
-    and honor shell quoting.
-
-o   New bindable readline functions shell-backward-kill-word and shell-kill-word
-    which kill words backward and forward, but use the same word boundaries
-    as shell-forward-word and shell-backward-word.
-
-A short feature history dating from Bash-2.0:
-
-Bash-3.2 contained the following new features:
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-4.0, bash-3.2,
-    and bash-2.05b?
-
-There are a few incompatibilities between version 4.0 and version 3.2.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASHPID, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume, PROMPT_DIRTRIM
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-, >>&
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u/-i,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf, compopt, mapfile
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>&
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen, compopt, mapfile
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (bash uses different syntax)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-4.0:
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-4.0:
-       associative arrays
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-       set -o pipefail
-       The `+=' assignment operator
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Bash-4.0 introduces the concept of a `compatibility level', controlled by
-several options to the `shopt' builtin.  If the `compat31' option is enabled,
-bash reverts to the bash-3.1 behavior with respect to quoting the rhs of
-the =~ operator.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.  It's a variant of
-
-       echo .[!.]* ..?* *
-
-(The ..?* catches files with names of three or more characters beginning
-with `..')
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-3.0)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2007.  Never make predictions. 
-
-This document is Copyright 1995-2006 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-4.1 b/doc/FAQ-4.1
deleted file mode 100644 (file)
index bb2c35d..0000000
+++ /dev/null
@@ -1,2200 +0,0 @@
-This is the Bash FAQ, version 4.12, for Bash version 4.1.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 4.1?
-B2) Are there any user-visible incompatibilities between bash-4.1 and
-    previous bash versions?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-E15) Tell me more about the shell compatibility level.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 4.1, first made available on 31 December, 2009.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 4.1:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-4.1.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-4.1.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.1.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-4.1.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-4.1-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-3.2 and bash-4.0 to the CYGWIN environment, and both
-are available as part of their current release.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-4.1, but will gladly accept any patches that are needed.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 4.1?
-
-Bash-4.1 is the first revision to the fourth major release of bash.
-
-Bash-4.1 contains the following new features (see the manual page for
-complete descriptions and the CHANGES and NEWS files in the bash-4.1
-distribution):
-
-o   Here-documents within $(...) command substitutions may once more be
-    delimited by the closing right paren, instead of requiring a newline.
-
-o   Bash's file status checks (executable, readable, etc.) now take file
-    system ACLs into account on file systems that support them.
-
-o   Bash now passes environment variables with names that are not valid
-    shell variable names through into the environment passed to child
-    processes.
-
-o   The `execute-unix-command' readline function now attempts to clear and
-    reuse the current line rather than move to a new one after the command
-    executes.
-
-o   `printf -v' can now assign values to array indices.
-
-o   New `complete -E' and `compopt -E' options that work on the "empty"
-    completion: completion attempted on an empty command line.
-
-o   New complete/compgen/compopt -D option to define a `default' completion:
-    a completion to be invoked on command for which no completion has been
-    defined.  If this function returns 124, programmable completion is
-    attempted again, allowing a user to dynamically build a set of completions
-    as completion is attempted by having the default completion function
-    install individual completion functions each time it is invoked.
-
-o   When displaying associative arrays, subscripts are now quoted.
-
-o   Changes to dabbrev-expand to make it more `emacs-like': no space appended
-    after matches, completions are not sorted, and most recent history entries
-    are presented first.
-
-o   The [[ and (( commands are now subject to the setting of `set -e' and the
-    ERR trap.
-
-o   The source/. builtin now removes NUL bytes from the file before attempting
-    to parse commands.
-
-o   There is a new configuration option (in config-top.h) that forces bash to
-    forward all history entries to syslog.
-
-o   A new variable $BASHOPTS to export shell options settable using `shopt' to
-    child processes.
-
-o   There is a new confgure option that forces the extglob option to be
-    enabled by default.
-
-o   New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
-    output to that file descriptor.
-
-o   If the optional left-hand-side of a redirection is of the form {var}, the
-    shell assigns the file descriptor used to $var or uses $var as the file
-    descriptor to move or close, depending on the redirection operator.
-
-o   The < and > operators to the [[ conditional command now do string
-    comparison according to the current locale.
-
-o   Programmable completion now uses the completion for `b' instead of `a'
-    when completion is attempted on a line like: a $(b c.
-
-o   Force extglob on temporarily when parsing the pattern argument to
-    the == and != operators to the [[ command, for compatibility.
-
-o   Changed the behavior of interrupting the wait builtin when a SIGCHLD is
-    received and a trap on SIGCHLD is set to be Posix-mode only.
-
-o   The read builtin has a new `-N nchars' option, which reads exactly NCHARS
-    characters, ignoring delimiters like newline.
-
-o   The mapfile/readarray builtin no longer stores the commands it invokes via
-    callbacks in the history list.
-
-o   There is a new `compat40' shopt option.
-
-o   The < and > operators to [[ do string comparisons using the current locale
-    only if the compatibility level is greater than 40 (set to 41 by default).
-
-o   New bindable readline function: menu-complete-backward.
-
-o   In the readline vi-mode insertion keymap, C-n is now bound to menu-complete
-    by default, and C-p to menu-complete-backward.
-
-o   When in readline vi command mode, repeatedly hitting ESC now does nothing,
-    even when ESC introduces a bound key sequence.  This is closer to how
-    historical vi behaves.
-
-o   New bindable readline function: skip-csi-sequence.  Can be used as a
-    default to consume key sequences generated by keys like Home and End
-    without having to bind all keys.
-
-o   New bindable readline variable: skip-completed-text, active when
-    completing in the middle of a word.  If enabled, it means that characters
-    in the completion that match characters in the remainder of the word are
-    "skipped" rather than inserted into the line.
-
-o   The pre-readline-6.0 version of menu completion is available as
-    "old-menu-complete" for users who do not like the readline-6.0 version.
-
-o   New bindable readline variable: echo-control-characters.  If enabled, and
-    the tty ECHOCTL bit is set, controls the echoing of characters
-    corresponding to keyboard-generated signals.
-
-o   New bindable readline variable: enable-meta-key.  Controls whether or not
-    readline sends the smm/rmm sequences if the terminal indicates it has a
-    meta key that enables eight-bit characters.
-
-A short feature history dating from Bash-2.0:
-
-Bash-4.0 contained the following new features:
-
-o   When using substring expansion on the positional parameters, a starting
-    index of 0 now causes $0 to be prefixed to the list.
-
-o   There is a new variable, $BASHPID, which always returns the process id of
-    the current shell.
-
-o   There is a new `autocd' option that, when enabled, causes bash to attempt
-    to `cd' to a directory name that is supplied as the first word of a
-    simple command.
-
-o   There is a new `checkjobs' option that causes the shell to check for and
-    report any running or stopped jobs at exit.
-
-o   The programmable completion code exports a new COMP_TYPE variable, set to
-    a character describing the type of completion being attempted.
-
-o   The programmable completion code exports a new COMP_KEY variable, set to
-    the character that caused the completion to be invoked (e.g., TAB).
-
-o   The programmable completion code now uses the same set of characters as
-    readline when breaking the command line into a list of words.
-
-o   The block multiplier for the ulimit -c and -f options is now 512 when in
-    Posix mode, as Posix specifies.
-
-o   Changed the behavior of the read builtin to save any partial input received
-    in the specified variable when the read builtin times out.  This also
-    results in variables specified as arguments to read to be set to the empty
-    string when there is no input available.  When the read builtin times out,
-    it returns an exit status greater than 128.
-
-o   The shell now has the notion of a `compatibility level', controlled by
-    new variables settable by `shopt'.  Setting this variable currently
-    restores the bash-3.1 behavior when processing quoted strings on the rhs
-    of the `=~' operator to the `[[' command.
-
-o   The `ulimit' builtin now has new -b (socket buffer size) and -T (number
-    of threads) options.
-
-o   There is a new `compopt' builtin that allows completion functions to modify
-    completion options for existing completions or the completion currently
-    being executed.
-
-o   The `read' builtin has a new -i option which inserts text into the reply
-    buffer when using readline.
-
-o   A new `-E' option to the complete builtin allows control of the default
-    behavior for completion on an empty line.
-
-o   There is now limited support for completing command name words containing
-    globbing characters.
-
-o   The `help' builtin now has a new -d option, to display a short description,
-    and a -m option, to print help information in a man page-like format.
-
-o   There is a new `mapfile' builtin to populate an array with lines from a
-    given file.
-
-o   If a command is not found, the shell attempts to execute a shell function
-    named `command_not_found_handle', supplying the command words as the
-    function arguments.
-
-o   There is a new shell option: `globstar'.  When enabled, the globbing code
-    treats `**' specially -- it matches all directories (and files within
-    them, when appropriate) recursively.
-
-o   There is a new shell option: `dirspell'.  When enabled, the filename
-    completion code performs spelling correction on directory names during
-    completion.
-
-o   The `-t' option to the `read' builtin now supports fractional timeout
-    values.
-
-o   Brace expansion now allows zero-padding of expanded numeric values and
-    will add the proper number of zeroes to make sure all values contain the
-    same number of digits.
-
-o   There is a new bash-specific bindable readline function: `dabbrev-expand'.
-    It uses menu completion on a set of words taken from the history list.
-
-o   The command assigned to a key sequence with `bind -x' now sets two new
-    variables in the environment of the executed command:  READLINE_LINE_BUFFER
-    and READLINE_POINT.  The command can change the current readline line
-    and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
-    respectively.
-
-o   There is a new >>& redirection operator, which appends the standard output
-    and standard error to the named file.
-
-o   The parser now understands `|&' as a synonym for `2>&1 |', which redirects
-    the standard error for a command through a pipe.
-
-o   The new `;&' case statement action list terminator causes execution to
-    continue with the action associated with the next pattern in the
-    statement rather than terminating the command.
-
-o   The new `;;&' case statement action list terminator causes the shell to
-    test the next set of patterns after completing execution of the current
-    action, rather than terminating the command.
-
-o   The shell understands a new variable: PROMPT_DIRTRIM.  When set to an
-    integer value greater than zero, prompt expansion of \w and \W  will
-    retain only that number of trailing pathname components and replace
-    the intervening characters with `...'.
-
-o   There are new case-modifying word expansions: uppercase (^[^]) and
-    lowercase (,[,]).  They can work on either the first character or
-    array element, or globally.  They accept an optional shell pattern
-    that determines which characters to modify.  There is an optionally-
-    configured feature to include capitalization operators.
-
-o   The shell provides associative array variables, with the appropriate
-    support to create, delete, assign values to, and expand them.
-
-o   The `declare' builtin now has new -l (convert value to lowercase upon
-    assignment) and -u (convert value to uppercase upon assignment) options.
-    There is an optionally-configurable -c option to capitalize a value at
-    assignment.
-
-o   There is a new `coproc' reserved word that specifies a coprocess: an
-    asynchronous command run with two pipes connected to the creating shell.
-    Coprocs can be named.  The input and output file descriptors and the
-    PID of the coprocess are available to the calling shell in variables
-    with coproc-specific names.
-
-o   A value of 0 for the -t option to `read' now returns success if there is
-    input available to be read from the specified file descriptor.
-
-o   CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
-    mode.
-
-o   New bindable readline functions shell-forward-word and shell-backward-word,
-    which move forward and backward words delimited by shell metacharacters
-    and honor shell quoting.
-
-o   New bindable readline functions shell-backward-kill-word and shell-kill-word
-    which kill words backward and forward, but use the same word boundaries
-    as shell-forward-word and shell-backward-word.
-
-Bash-3.2 contained the following new features:
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-4.1 and
-    previous bash versions?
-
-There are a few incompatibilities between version 4.1 and previous
-versions.  They are detailed in the file COMPAT in the bash distribution.
-That file is not meant to be all-encompassing; send mail to
-bash-maintainers@gnu.org (or bug-bash@gnu.org if you would like
-community discussion) if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASHPID, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume, PROMPT_DIRTRIM, BASHOPTS, BASH_XTRACEFD
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-, >>&
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u/-i/-N,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf, compopt, mapfile
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-       shell assignment of a file descriptor used in a redirection to a variable
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>&
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s/-N, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen, compopt, mapfile
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-       shell assignment of a file descriptor used in a redirection to a variable
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (bash uses different syntax)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-This list is current through ksh93t+ (05/05/2009)
-
-New things in ksh-93 not in bash-4.1:
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching (match all instead of any)
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-       $''  \C[.collating-element.] escape sequence
-       -C/-I invocation options
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       getopts -a
-       printf %B, %H, %P, %R, %T, %Z modifiers, output base for %d, `=' flag
-       read -n/-N differ/-v
-       set -o showme/-o multiline (bash default)
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       [[ -R name ]] (checks whether or not name is a nameref)
-       typeset -C/-S/-T/-X/-h/-s
-       experimental `type' definitions (a la typedef) using typeset
-       negative subscripts for indexed array variables
-       array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]}
-       associative array assignments using `;' as element separator
-       command substitution $(n<#) expands to current byte offset for fd N
-       new '${ ' form of command substitution, executed in current shell
-       new >;/<>;/<#pat/<##pat/<#/># redirections
-       brace expansion printf-like formats 
-       [[ -v var ]] operators (checks whether or not var is set)
-
-New things in ksh-93 present in bash-4.1:
-       associative arrays
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       brace expansion and set -B
-       changes to kill builtin
-       `command', `builtin', `disown' builtins
-       echo -e
-       exec -c/-a
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       `.' restores the positional parameters when it completes
-       set -o notify/-C
-       set -o pipefail
-       set -G (-o globstar) and **
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion, TAB displaying possible completions
-       ENV processed only for interactive shells
-       The `+=' assignment operator
-       the `;&' case statement "fallthrough" pattern list terminator
-       csh-style history expansion and set -H
-       negative offsets in ${param:offset:length}
-       redirection operators preceded with {varname} to store fd number in varname
-       DEBUG can force skipping following command
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Bash-4.0 introduces the concept of a `compatibility level', controlled by
-several options to the `shopt' builtin.  If the `compat31' option is enabled,
-bash reverts to the bash-3.1 behavior with respect to quoting the rhs of
-the =~ operator.
-
-E15) Tell me more about the shell compatibility level.
-
-Bash-4.0 introduced the concept of a `shell compatibility level', specified
-as a set of options to the shopt builtin (compat31, compat32, compat40 at
-this writing).  There is only one current compatibility level -- each
-option is mutually exclusive.  This list does not mention behavior that is
-standard for a particular version (e.g., setting compat32 means that quoting
-the rhs of the regexp matching operator quotes special regexp characters in
-the word, which is default behavior in bash-3.2 and above).
-
-compat31 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-       - quoting the rhs of the regexp matching operator (=~) has no
-         special effect
-
-compat32 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-
-compat40 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-       - interrupting a command list such as "a ; b ; c" causes the execution
-         of the entire list to be aborted (in versions before bash-4.0,
-         interrupting one command in a list caused the next to be executed)
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.  It's a variant of
-
-       echo .[!.]* ..?* *
-
-(The ..?* catches files with names of three or more characters beginning
-with `..')
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-4.0)
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2010.  Never make predictions. 
-
-This document is Copyright 1995-2010 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-4.2 b/doc/FAQ-4.2
deleted file mode 100644 (file)
index 33ca3d3..0000000
+++ /dev/null
@@ -1,2273 +0,0 @@
-This is the Bash FAQ, version 4.12, for Bash version 4.2.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 4.2?
-B2) Are there any user-visible incompatibilities between bash-4.2 and
-    previous bash versions?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-E15) Tell me more about the shell compatibility level.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 4.2, first made available on 14 February, 2011.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 4.2:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-4.2.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-4.2.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-4.2-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-3.2 and bash-4.0 to the CYGWIN environment, and both
-are available as part of their current release.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-4.2, but will gladly accept any patches that are needed.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 4.2?
-
-Bash-4.2 is the second revision to the fourth major release of bash.
-
-Bash-4.2 contains the following new features (see the manual page for
-complete descriptions and the CHANGES and NEWS files in the bash-4.2
-distribution):
-
-o   `exec -a foo' now sets $0 to `foo' in an executable shell script without a
-    leading #!.
-
-o   Subshells begun to execute command substitutions or run shell functions or
-    builtins in subshells do not reset trap strings until a new trap is
-    specified.  This allows $(trap) to display the caller's traps and the
-    trap strings to persist until a new trap is set.
-
-o   `trap -p' will now show signals ignored at shell startup, though their
-    disposition still cannot be modified.
-
-o   $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
-
-o   declare/typeset has a new `-g' option, which creates variables in the
-    global scope even when run in a shell function.
-
-o   test/[/[[ have a new -v variable unary operator, which returns success if
-    `variable' has been set.
-
-o   Posix parsing changes to allow `! time command' and multiple consecutive
-    instances of `!' (which toggle) and `time' (which have no cumulative
-    effect).
-
-o   Posix change to allow `time' as a command by itself to print the elapsed
-    user, system, and real times for the shell and its children.
-
-o   $((...)) is always parsed as an arithmetic expansion first, instead of as
-    a potential nested command substitution, as Posix requires.
-
-o   A new FUNCNEST variable to allow the user to control the maximum shell
-    function nesting (recursive execution) level.
-
-o   The mapfile builtin now supplies a third argument to the callback command:
-    the line about to be assigned to the supplied array index.
-
-o   The printf builtin has as new %(fmt)T specifier, which allows time values
-    to use strftime-like formatting.
-
-o   There is a new `compat41' shell option.
-
-o   The cd builtin has a new Posix-mandated `-e' option.
-
-o   Negative subscripts to indexed arrays, previously errors, now are treated
-    as offsets from the maximum assigned index + 1.
-
-o   Negative length specifications in the ${var:offset:length} expansion,
-    previously errors, are now treated as offsets from the end of the variable.
-
-o   Parsing change to allow `time -p --'.
-
-o   Posix-mode parsing change to not recognize `time' as a keyword if the
-    following token begins with a `-'.  This means no more Posix-mode
-    `time -p'.  Posix interpretation 267.
-
-o   There is a new `lastpipe' shell option that runs the last command of a
-    pipeline in the current shell context.  The lastpipe option has no
-    effect if job control is enabled.
-
-o   History expansion no longer expands the `$!' variable expansion.
-
-o   Posix mode shells no longer exit if a variable assignment error occurs
-    with an assignment preceding a command that is not a special builtin.
-
-o   Non-interactive mode shells exit if -u is enabled an an attempt is made
-    to use an unset variable with the % or # expansions, the `//', `^', or
-    `,' expansions, or the parameter length expansion.
-
-o   Posix-mode shells use the argument passed to `.' as-is if a $PATH search
-    fails, effectively searching the current directory.  Posix-2008 change.
-
-A short feature history dating back to Bash-2.0:
-
-Bash-4.1 contained the following new features:
-
-o   Here-documents within $(...) command substitutions may once more be
-    delimited by the closing right paren, instead of requiring a newline.
-
-o   Bash's file status checks (executable, readable, etc.) now take file
-    system ACLs into account on file systems that support them.
-
-o   Bash now passes environment variables with names that are not valid
-    shell variable names through into the environment passed to child
-    processes.
-
-o   The `execute-unix-command' readline function now attempts to clear and
-    reuse the current line rather than move to a new one after the command
-    executes.
-
-o   `printf -v' can now assign values to array indices.
-
-o   New `complete -E' and `compopt -E' options that work on the "empty"
-    completion: completion attempted on an empty command line.
-
-o   New complete/compgen/compopt -D option to define a `default' completion:
-    a completion to be invoked on command for which no completion has been
-    defined.  If this function returns 124, programmable completion is
-    attempted again, allowing a user to dynamically build a set of completions
-    as completion is attempted by having the default completion function
-    install individual completion functions each time it is invoked.
-
-o   When displaying associative arrays, subscripts are now quoted.
-
-o   Changes to dabbrev-expand to make it more `emacs-like': no space appended
-    after matches, completions are not sorted, and most recent history entries
-    are presented first.
-
-o   The [[ and (( commands are now subject to the setting of `set -e' and the
-    ERR trap.
-
-o   The source/. builtin now removes NUL bytes from the file before attempting
-    to parse commands.
-
-o   There is a new configuration option (in config-top.h) that forces bash to
-    forward all history entries to syslog.
-
-o   A new variable $BASHOPTS to export shell options settable using `shopt' to
-    child processes.
-
-o   There is a new confgure option that forces the extglob option to be
-    enabled by default.
-
-o   New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
-    output to that file descriptor.
-
-o   If the optional left-hand-side of a redirection is of the form {var}, the
-    shell assigns the file descriptor used to $var or uses $var as the file
-    descriptor to move or close, depending on the redirection operator.
-
-o   The < and > operators to the [[ conditional command now do string
-    comparison according to the current locale.
-
-o   Programmable completion now uses the completion for `b' instead of `a'
-    when completion is attempted on a line like: a $(b c.
-
-o   Force extglob on temporarily when parsing the pattern argument to
-    the == and != operators to the [[ command, for compatibility.
-
-o   Changed the behavior of interrupting the wait builtin when a SIGCHLD is
-    received and a trap on SIGCHLD is set to be Posix-mode only.
-
-o   The read builtin has a new `-N nchars' option, which reads exactly NCHARS
-    characters, ignoring delimiters like newline.
-
-o   The mapfile/readarray builtin no longer stores the commands it invokes via
-    callbacks in the history list.
-
-o   There is a new `compat40' shopt option.
-
-o   The < and > operators to [[ do string comparisons using the current locale
-    only if the compatibility level is greater than 40 (set to 41 by default).
-
-o   New bindable readline function: menu-complete-backward.
-
-o   In the readline vi-mode insertion keymap, C-n is now bound to menu-complete
-    by default, and C-p to menu-complete-backward.
-
-o   When in readline vi command mode, repeatedly hitting ESC now does nothing,
-    even when ESC introduces a bound key sequence.  This is closer to how
-    historical vi behaves.
-
-o   New bindable readline function: skip-csi-sequence.  Can be used as a
-    default to consume key sequences generated by keys like Home and End
-    without having to bind all keys.
-
-o   New bindable readline variable: skip-completed-text, active when
-    completing in the middle of a word.  If enabled, it means that characters
-    in the completion that match characters in the remainder of the word are
-    "skipped" rather than inserted into the line.
-
-o   The pre-readline-6.0 version of menu completion is available as
-    "old-menu-complete" for users who do not like the readline-6.0 version.
-
-o   New bindable readline variable: echo-control-characters.  If enabled, and
-    the tty ECHOCTL bit is set, controls the echoing of characters
-    corresponding to keyboard-generated signals.
-
-o   New bindable readline variable: enable-meta-key.  Controls whether or not
-    readline sends the smm/rmm sequences if the terminal indicates it has a
-    meta key that enables eight-bit characters.
-
-Bash-4.0 contained the following new features:
-
-o   When using substring expansion on the positional parameters, a starting
-    index of 0 now causes $0 to be prefixed to the list.
-
-o   There is a new variable, $BASHPID, which always returns the process id of
-    the current shell.
-
-o   There is a new `autocd' option that, when enabled, causes bash to attempt
-    to `cd' to a directory name that is supplied as the first word of a
-    simple command.
-
-o   There is a new `checkjobs' option that causes the shell to check for and
-    report any running or stopped jobs at exit.
-
-o   The programmable completion code exports a new COMP_TYPE variable, set to
-    a character describing the type of completion being attempted.
-
-o   The programmable completion code exports a new COMP_KEY variable, set to
-    the character that caused the completion to be invoked (e.g., TAB).
-
-o   The programmable completion code now uses the same set of characters as
-    readline when breaking the command line into a list of words.
-
-o   The block multiplier for the ulimit -c and -f options is now 512 when in
-    Posix mode, as Posix specifies.
-
-o   Changed the behavior of the read builtin to save any partial input received
-    in the specified variable when the read builtin times out.  This also
-    results in variables specified as arguments to read to be set to the empty
-    string when there is no input available.  When the read builtin times out,
-    it returns an exit status greater than 128.
-
-o   The shell now has the notion of a `compatibility level', controlled by
-    new variables settable by `shopt'.  Setting this variable currently
-    restores the bash-3.1 behavior when processing quoted strings on the rhs
-    of the `=~' operator to the `[[' command.
-
-o   The `ulimit' builtin now has new -b (socket buffer size) and -T (number
-    of threads) options.
-
-o   There is a new `compopt' builtin that allows completion functions to modify
-    completion options for existing completions or the completion currently
-    being executed.
-
-o   The `read' builtin has a new -i option which inserts text into the reply
-    buffer when using readline.
-
-o   A new `-E' option to the complete builtin allows control of the default
-    behavior for completion on an empty line.
-
-o   There is now limited support for completing command name words containing
-    globbing characters.
-
-o   The `help' builtin now has a new -d option, to display a short description,
-    and a -m option, to print help information in a man page-like format.
-
-o   There is a new `mapfile' builtin to populate an array with lines from a
-    given file.
-
-o   If a command is not found, the shell attempts to execute a shell function
-    named `command_not_found_handle', supplying the command words as the
-    function arguments.
-
-o   There is a new shell option: `globstar'.  When enabled, the globbing code
-    treats `**' specially -- it matches all directories (and files within
-    them, when appropriate) recursively.
-
-o   There is a new shell option: `dirspell'.  When enabled, the filename
-    completion code performs spelling correction on directory names during
-    completion.
-
-o   The `-t' option to the `read' builtin now supports fractional timeout
-    values.
-
-o   Brace expansion now allows zero-padding of expanded numeric values and
-    will add the proper number of zeroes to make sure all values contain the
-    same number of digits.
-
-o   There is a new bash-specific bindable readline function: `dabbrev-expand'.
-    It uses menu completion on a set of words taken from the history list.
-
-o   The command assigned to a key sequence with `bind -x' now sets two new
-    variables in the environment of the executed command:  READLINE_LINE_BUFFER
-    and READLINE_POINT.  The command can change the current readline line
-    and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
-    respectively.
-
-o   There is a new >>& redirection operator, which appends the standard output
-    and standard error to the named file.
-
-o   The parser now understands `|&' as a synonym for `2>&1 |', which redirects
-    the standard error for a command through a pipe.
-
-o   The new `;&' case statement action list terminator causes execution to
-    continue with the action associated with the next pattern in the
-    statement rather than terminating the command.
-
-o   The new `;;&' case statement action list terminator causes the shell to
-    test the next set of patterns after completing execution of the current
-    action, rather than terminating the command.
-
-o   The shell understands a new variable: PROMPT_DIRTRIM.  When set to an
-    integer value greater than zero, prompt expansion of \w and \W  will
-    retain only that number of trailing pathname components and replace
-    the intervening characters with `...'.
-
-o   There are new case-modifying word expansions: uppercase (^[^]) and
-    lowercase (,[,]).  They can work on either the first character or
-    array element, or globally.  They accept an optional shell pattern
-    that determines which characters to modify.  There is an optionally-
-    configured feature to include capitalization operators.
-
-o   The shell provides associative array variables, with the appropriate
-    support to create, delete, assign values to, and expand them.
-
-o   The `declare' builtin now has new -l (convert value to lowercase upon
-    assignment) and -u (convert value to uppercase upon assignment) options.
-    There is an optionally-configurable -c option to capitalize a value at
-    assignment.
-
-o   There is a new `coproc' reserved word that specifies a coprocess: an
-    asynchronous command run with two pipes connected to the creating shell.
-    Coprocs can be named.  The input and output file descriptors and the
-    PID of the coprocess are available to the calling shell in variables
-    with coproc-specific names.
-
-o   A value of 0 for the -t option to `read' now returns success if there is
-    input available to be read from the specified file descriptor.
-
-o   CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
-    mode.
-
-o   New bindable readline functions shell-forward-word and shell-backward-word,
-    which move forward and backward words delimited by shell metacharacters
-    and honor shell quoting.
-
-o   New bindable readline functions shell-backward-kill-word and shell-kill-word
-    which kill words backward and forward, but use the same word boundaries
-    as shell-forward-word and shell-backward-word.
-
-Bash-3.2 contained the following new features:
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-4.2 and
-    previous bash versions?
-
-There are a few incompatibilities between version 4.2 and previous
-versions.  They are detailed in the file COMPAT in the bash distribution.
-That file is not meant to be all-encompassing; send mail to
-bash-maintainers@gnu.org (or bug-bash@gnu.org if you would like
-community discussion) if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASHPID, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume, PROMPT_DIRTRIM, BASHOPTS, BASH_XTRACEFD
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-, >>&
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u/-i/-N,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf, compopt, mapfile
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-       shell assignment of a file descriptor used in a redirection to a variable
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>&
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s/-N, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen, compopt, mapfile
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-       shell assignment of a file descriptor used in a redirection to a variable
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (bash uses different syntax)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-This list is current through ksh93t+ (05/05/2009)
-
-New things in ksh-93 not in bash-4.2:
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching (match all instead of any)
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-       $''  \C[.collating-element.] escape sequence
-       -C/-I invocation options
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       getopts -a
-       printf %B, %H, %P, %R, %Z modifiers, output base for %d, `=' flag
-       read -n/-N differ/-v
-       set -o showme/-o multiline (bash default)
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       [[ -R name ]] (checks whether or not name is a nameref)
-       typeset -C/-S/-T/-X/-h/-s
-       experimental `type' definitions (a la typedef) using typeset
-       array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]}
-       associative array assignments using `;' as element separator
-       command substitution $(n<#) expands to current byte offset for fd N
-       new '${ ' form of command substitution, executed in current shell
-       new >;/<>;/<#pat/<##pat/<#/># redirections
-       brace expansion printf-like formats 
-
-New things in ksh-93 present in bash-4.2:
-       associative arrays
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       negative subscripts for indexed array variables
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       brace expansion and set -B
-       changes to kill builtin
-       `command', `builtin', `disown' builtins
-       echo -e
-       exec -c/-a
-       printf %T modifier
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       `.' restores the positional parameters when it completes
-       set -o notify/-C
-       set -o pipefail
-       set -G (-o globstar) and **
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion, TAB displaying possible completions
-       ENV processed only for interactive shells
-       The `+=' assignment operator
-       the `;&' case statement "fallthrough" pattern list terminator
-       csh-style history expansion and set -H
-       negative offsets in ${param:offset:length}
-       redirection operators preceded with {varname} to store fd number in varname
-       DEBUG can force skipping following command
-       [[ -v var ]] operator (checks whether or not var is set)
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Bash-4.0 introduces the concept of a `compatibility level', controlled by
-several options to the `shopt' builtin.  If the `compat31' option is enabled,
-bash reverts to the bash-3.1 behavior with respect to quoting the rhs of
-the =~ operator.
-
-E15) Tell me more about the shell compatibility level.
-
-Bash-4.0 introduced the concept of a `shell compatibility level', specified
-as a set of options to the shopt builtin (compat31, compat32, compat40 at
-this writing).  There is only one current compatibility level -- each
-option is mutually exclusive.  This list does not mention behavior that is
-standard for a particular version (e.g., setting compat32 means that quoting
-the rhs of the regexp matching operator quotes special regexp characters in
-the word, which is default behavior in bash-3.2 and above).
-
-compat31 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-       - quoting the rhs of the regexp matching operator (=~) has no
-         special effect
-
-compat32 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-
-compat40 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-       - interrupting a command list such as "a ; b ; c" causes the execution
-         of the entire list to be aborted (in versions before bash-4.0,
-         interrupting one command in a list caused the next to be executed)
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.  It's a variant of
-
-       echo .[!.]* ..?* *
-
-(The ..?* catches files with names of three or more characters beginning
-with `..')
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-4.0)
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2010.  Never make predictions. 
-
-This document is Copyright 1995-2010 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/FAQ-4.3 b/doc/FAQ-4.3
deleted file mode 100644 (file)
index 1df48d5..0000000
+++ /dev/null
@@ -1,2412 +0,0 @@
-This is the Bash FAQ, version 4.13, for Bash version 4.3.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 4.3?
-B2) Are there any user-visible incompatibilities between bash-4.3 and
-    previous bash versions?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-E15) Tell me more about the shell compatibility level.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 4.3, first made available on xx December, 2013.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 4.3:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-4.3.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-4.3.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.3.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-4.3.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-4.3-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-3.2 and bash-4.0 to the CYGWIN environment, and both
-are available as part of their current release.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-4.2 and later, but will gladly accept any patches that
-are needed.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 4.3?
-
-Bash-4.3 is the third revision to the fourth major release of bash.
-
-Bash-4.3 contains the following new features (see the manual page for
-complete descriptions and the CHANGES and NEWS files in the bash-4.3
-distribution):
-
-o  The `helptopic' completion action now maps to all the help topics, not just
-    the shell builtins.
-
-o  The `help' builtin no longer does prefix substring matching first, so
-   `help read' does not match `readonly', but will do it if exact string
-   matching fails.
-
-o  The shell can be compiled to not display a message about processes that
-    terminate due to SIGTERM.
-
-o  Non-interactive shells now react to the setting of checkwinsize and set
-    LINES and COLUMNS after a foreground job exits.
-
-o  There is a new shell option, `globasciiranges', which, when set to on,
-    forces globbing range comparisons to use character ordering as if they
-    were run in the C locale.
-
-o  There is a new shell option, `direxpand', which makes filename completion
-    expand variables in directory names in the way bash-4.1 did.
-
-o  In Posix mode, the `command' builtin does not change whether or not a
-    builtin it shadows is treated as an assignment builtin.
-
-o  The `return' and `exit' builtins accept negative exit status arguments.
-
-o  The word completion code checks whether or not a filename containing a
-   shell variable expands to a directory name and appends `/' to the word
-   as appropriate.  The same code expands shell variables in command names
-   when performing command completion.
-
-o  In Posix mode, it is now an error to attempt to define a shell function
-   with the same name as a Posix special builtin.
-
-o  When compiled for strict Posix conformance, history expansion is disabled
-   by default.
-
-o  The history expansion character (!) does not cause history expansion when
-   followed by the closing quote in a double-quoted string.
-
-o  `complete' and its siblings compgen/compopt now takes a new `-o noquote'
-   option to inhibit quoting of the completions.
-
-o  Setting HISTSIZE to a value less than zero causes the history list to be
-   unlimited (setting it 0 zero disables the history list).
-
-o  Setting HISTFILESIZE to a value less than zero causes the history file size
-   to be unlimited (setting it to 0 causes the history file to be truncated
-   to zero size).
-
-o  The `read' builtin now skips NUL bytes in the input.
-
-o  There is a new `bind -X' option to print all key sequences bound to Unix
-   commands.
-
-o  When in Posix mode, `read' is interruptible by a trapped signal.  After
-   running the trap handler, read returns 128+signal and throws away any
-   partially-read input.
-
-o  The command completion code skips whitespace and assignment statements
-   before looking for the command name word to be completed.
-
-o  The build process has a new mechanism for constructing separate help files
-   that better reflects the current set of compilation options.
-
-o  The -nt and -ot options to test now work with files with nanosecond
-   timestamp resolution.
-
-o  The shell saves the command history in any shell for which history is
-   enabled and HISTFILE is set, not just interactive shells.
-
-o  The shell has `nameref' variables and new -n(/+n) options to declare and
-   unset to use them, and a `test -R' option to test for them.
-
-o  The shell now allows assigning, referencing, and unsetting elements of
-   indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
-   count back from the last element of the array.
-
-o  The {x}<word redirection feature now allows words like {array[ind]} and
-   can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
-
-o  There is a new CHILD_MAX special shell variable; its value controls the
-   number of exited child statues the shell remembers.
-
-o  There is a new configuration option (--enable-direxpand-default) that
-   causes the `direxpand' shell option to be enabled by default.
-
-o  Bash does not do anything special to ensure that the file descriptor
-   assigned to X in {x}<foo remains open after the block containing it
-   completes.
-
-o  The `wait' builtin has a new `-n' option to wait for the next child to
-   change status.
-
-o  The `printf' %(...)T format specifier now uses the current time if no
-    argument is supplied.
-
-o  There is a new variable, BASH_COMPAT, that controls the current shell
-   compatibility level.
-
-o  The `popd' builtin now treats additional arguments as errors.
-
-o  The brace expansion code now treats a failed sequence expansion as a
-   simple string and will continue to expand brace terms in the remainder
-   of the word.
-
-o  Shells started to run process substitutions now run any trap set on EXIT.
-
-o  The fc builtin now interprets -0 as the current command line.
-
-o  Completing directory names containing shell variables now adds a trailing
-   slash if the expanded result is a directory.
-
-A short feature history dating back to Bash-2.0:
-
-Bash-4.2 contained the following new features:
-
-o   `exec -a foo' now sets $0 to `foo' in an executable shell script without a
-    leading #!.
-
-o   Subshells begun to execute command substitutions or run shell functions or
-    builtins in subshells do not reset trap strings until a new trap is
-    specified.  This allows $(trap) to display the caller's traps and the
-    trap strings to persist until a new trap is set.
-
-o   `trap -p' will now show signals ignored at shell startup, though their
-    disposition still cannot be modified.
-
-o   $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
-
-o   declare/typeset has a new `-g' option, which creates variables in the
-    global scope even when run in a shell function.
-
-o   test/[/[[ have a new -v variable unary operator, which returns success if
-    `variable' has been set.
-
-o   Posix parsing changes to allow `! time command' and multiple consecutive
-    instances of `!' (which toggle) and `time' (which have no cumulative
-    effect).
-
-o   Posix change to allow `time' as a command by itself to print the elapsed
-    user, system, and real times for the shell and its children.
-
-o   $((...)) is always parsed as an arithmetic expansion first, instead of as
-    a potential nested command substitution, as Posix requires.
-
-o   A new FUNCNEST variable to allow the user to control the maximum shell
-    function nesting (recursive execution) level.
-
-o   The mapfile builtin now supplies a third argument to the callback command:
-    the line about to be assigned to the supplied array index.
-
-o   The printf builtin has as new %(fmt)T specifier, which allows time values
-    to use strftime-like formatting.
-
-o   There is a new `compat41' shell option.
-
-o   The cd builtin has a new Posix-mandated `-e' option.
-
-o   Negative subscripts to indexed arrays, previously errors, now are treated
-    as offsets from the maximum assigned index + 1.
-
-o   Negative length specifications in the ${var:offset:length} expansion,
-    previously errors, are now treated as offsets from the end of the variable.
-
-o   Parsing change to allow `time -p --'.
-
-o   Posix-mode parsing change to not recognize `time' as a keyword if the
-    following token begins with a `-'.  This means no more Posix-mode
-    `time -p'.  Posix interpretation 267.
-
-o   There is a new `lastpipe' shell option that runs the last command of a
-    pipeline in the current shell context.  The lastpipe option has no
-    effect if job control is enabled.
-
-o   History expansion no longer expands the `$!' variable expansion.
-
-o   Posix mode shells no longer exit if a variable assignment error occurs
-    with an assignment preceding a command that is not a special builtin.
-
-o   Non-interactive mode shells exit if -u is enabled an an attempt is made
-    to use an unset variable with the % or # expansions, the `//', `^', or
-    `,' expansions, or the parameter length expansion.
-
-o   Posix-mode shells use the argument passed to `.' as-is if a $PATH search
-    fails, effectively searching the current directory.  Posix-2008 change.
-
-A short feature history dating back to Bash-2.0:
-
-Bash-4.1 contained the following new features:
-
-o   Here-documents within $(...) command substitutions may once more be
-    delimited by the closing right paren, instead of requiring a newline.
-
-o   Bash's file status checks (executable, readable, etc.) now take file
-    system ACLs into account on file systems that support them.
-
-o   Bash now passes environment variables with names that are not valid
-    shell variable names through into the environment passed to child
-    processes.
-
-o   The `execute-unix-command' readline function now attempts to clear and
-    reuse the current line rather than move to a new one after the command
-    executes.
-
-o   `printf -v' can now assign values to array indices.
-
-o   New `complete -E' and `compopt -E' options that work on the "empty"
-    completion: completion attempted on an empty command line.
-
-o   New complete/compgen/compopt -D option to define a `default' completion:
-    a completion to be invoked on command for which no completion has been
-    defined.  If this function returns 124, programmable completion is
-    attempted again, allowing a user to dynamically build a set of completions
-    as completion is attempted by having the default completion function
-    install individual completion functions each time it is invoked.
-
-o   When displaying associative arrays, subscripts are now quoted.
-
-o   Changes to dabbrev-expand to make it more `emacs-like': no space appended
-    after matches, completions are not sorted, and most recent history entries
-    are presented first.
-
-o   The [[ and (( commands are now subject to the setting of `set -e' and the
-    ERR trap.
-
-o   The source/. builtin now removes NUL bytes from the file before attempting
-    to parse commands.
-
-o   There is a new configuration option (in config-top.h) that forces bash to
-    forward all history entries to syslog.
-
-o   A new variable $BASHOPTS to export shell options settable using `shopt' to
-    child processes.
-
-o   There is a new confgure option that forces the extglob option to be
-    enabled by default.
-
-o   New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
-    output to that file descriptor.
-
-o   If the optional left-hand-side of a redirection is of the form {var}, the
-    shell assigns the file descriptor used to $var or uses $var as the file
-    descriptor to move or close, depending on the redirection operator.
-
-o   The < and > operators to the [[ conditional command now do string
-    comparison according to the current locale.
-
-o   Programmable completion now uses the completion for `b' instead of `a'
-    when completion is attempted on a line like: a $(b c.
-
-o   Force extglob on temporarily when parsing the pattern argument to
-    the == and != operators to the [[ command, for compatibility.
-
-o   Changed the behavior of interrupting the wait builtin when a SIGCHLD is
-    received and a trap on SIGCHLD is set to be Posix-mode only.
-
-o   The read builtin has a new `-N nchars' option, which reads exactly NCHARS
-    characters, ignoring delimiters like newline.
-
-o   The mapfile/readarray builtin no longer stores the commands it invokes via
-    callbacks in the history list.
-
-o   There is a new `compat40' shopt option.
-
-o   The < and > operators to [[ do string comparisons using the current locale
-    only if the compatibility level is greater than 40 (set to 41 by default).
-
-o   New bindable readline function: menu-complete-backward.
-
-o   In the readline vi-mode insertion keymap, C-n is now bound to menu-complete
-    by default, and C-p to menu-complete-backward.
-
-o   When in readline vi command mode, repeatedly hitting ESC now does nothing,
-    even when ESC introduces a bound key sequence.  This is closer to how
-    historical vi behaves.
-
-o   New bindable readline function: skip-csi-sequence.  Can be used as a
-    default to consume key sequences generated by keys like Home and End
-    without having to bind all keys.
-
-o   New bindable readline variable: skip-completed-text, active when
-    completing in the middle of a word.  If enabled, it means that characters
-    in the completion that match characters in the remainder of the word are
-    "skipped" rather than inserted into the line.
-
-o   The pre-readline-6.0 version of menu completion is available as
-    "old-menu-complete" for users who do not like the readline-6.0 version.
-
-o   New bindable readline variable: echo-control-characters.  If enabled, and
-    the tty ECHOCTL bit is set, controls the echoing of characters
-    corresponding to keyboard-generated signals.
-
-o   New bindable readline variable: enable-meta-key.  Controls whether or not
-    readline sends the smm/rmm sequences if the terminal indicates it has a
-    meta key that enables eight-bit characters.
-
-Bash-4.0 contained the following new features:
-
-o   When using substring expansion on the positional parameters, a starting
-    index of 0 now causes $0 to be prefixed to the list.
-
-o   There is a new variable, $BASHPID, which always returns the process id of
-    the current shell.
-
-o   There is a new `autocd' option that, when enabled, causes bash to attempt
-    to `cd' to a directory name that is supplied as the first word of a
-    simple command.
-
-o   There is a new `checkjobs' option that causes the shell to check for and
-    report any running or stopped jobs at exit.
-
-o   The programmable completion code exports a new COMP_TYPE variable, set to
-    a character describing the type of completion being attempted.
-
-o   The programmable completion code exports a new COMP_KEY variable, set to
-    the character that caused the completion to be invoked (e.g., TAB).
-
-o   The programmable completion code now uses the same set of characters as
-    readline when breaking the command line into a list of words.
-
-o   The block multiplier for the ulimit -c and -f options is now 512 when in
-    Posix mode, as Posix specifies.
-
-o   Changed the behavior of the read builtin to save any partial input received
-    in the specified variable when the read builtin times out.  This also
-    results in variables specified as arguments to read to be set to the empty
-    string when there is no input available.  When the read builtin times out,
-    it returns an exit status greater than 128.
-
-o   The shell now has the notion of a `compatibility level', controlled by
-    new variables settable by `shopt'.  Setting this variable currently
-    restores the bash-3.1 behavior when processing quoted strings on the rhs
-    of the `=~' operator to the `[[' command.
-
-o   The `ulimit' builtin now has new -b (socket buffer size) and -T (number
-    of threads) options.
-
-o   There is a new `compopt' builtin that allows completion functions to modify
-    completion options for existing completions or the completion currently
-    being executed.
-
-o   The `read' builtin has a new -i option which inserts text into the reply
-    buffer when using readline.
-
-o   A new `-E' option to the complete builtin allows control of the default
-    behavior for completion on an empty line.
-
-o   There is now limited support for completing command name words containing
-    globbing characters.
-
-o   The `help' builtin now has a new -d option, to display a short description,
-    and a -m option, to print help information in a man page-like format.
-
-o   There is a new `mapfile' builtin to populate an array with lines from a
-    given file.
-
-o   If a command is not found, the shell attempts to execute a shell function
-    named `command_not_found_handle', supplying the command words as the
-    function arguments.
-
-o   There is a new shell option: `globstar'.  When enabled, the globbing code
-    treats `**' specially -- it matches all directories (and files within
-    them, when appropriate) recursively.
-
-o   There is a new shell option: `dirspell'.  When enabled, the filename
-    completion code performs spelling correction on directory names during
-    completion.
-
-o   The `-t' option to the `read' builtin now supports fractional timeout
-    values.
-
-o   Brace expansion now allows zero-padding of expanded numeric values and
-    will add the proper number of zeroes to make sure all values contain the
-    same number of digits.
-
-o   There is a new bash-specific bindable readline function: `dabbrev-expand'.
-    It uses menu completion on a set of words taken from the history list.
-
-o   The command assigned to a key sequence with `bind -x' now sets two new
-    variables in the environment of the executed command:  READLINE_LINE_BUFFER
-    and READLINE_POINT.  The command can change the current readline line
-    and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
-    respectively.
-
-o   There is a new >>& redirection operator, which appends the standard output
-    and standard error to the named file.
-
-o   The parser now understands `|&' as a synonym for `2>&1 |', which redirects
-    the standard error for a command through a pipe.
-
-o   The new `;&' case statement action list terminator causes execution to
-    continue with the action associated with the next pattern in the
-    statement rather than terminating the command.
-
-o   The new `;;&' case statement action list terminator causes the shell to
-    test the next set of patterns after completing execution of the current
-    action, rather than terminating the command.
-
-o   The shell understands a new variable: PROMPT_DIRTRIM.  When set to an
-    integer value greater than zero, prompt expansion of \w and \W  will
-    retain only that number of trailing pathname components and replace
-    the intervening characters with `...'.
-
-o   There are new case-modifying word expansions: uppercase (^[^]) and
-    lowercase (,[,]).  They can work on either the first character or
-    array element, or globally.  They accept an optional shell pattern
-    that determines which characters to modify.  There is an optionally-
-    configured feature to include capitalization operators.
-
-o   The shell provides associative array variables, with the appropriate
-    support to create, delete, assign values to, and expand them.
-
-o   The `declare' builtin now has new -l (convert value to lowercase upon
-    assignment) and -u (convert value to uppercase upon assignment) options.
-    There is an optionally-configurable -c option to capitalize a value at
-    assignment.
-
-o   There is a new `coproc' reserved word that specifies a coprocess: an
-    asynchronous command run with two pipes connected to the creating shell.
-    Coprocs can be named.  The input and output file descriptors and the
-    PID of the coprocess are available to the calling shell in variables
-    with coproc-specific names.
-
-o   A value of 0 for the -t option to `read' now returns success if there is
-    input available to be read from the specified file descriptor.
-
-o   CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
-    mode.
-
-o   New bindable readline functions shell-forward-word and shell-backward-word,
-    which move forward and backward words delimited by shell metacharacters
-    and honor shell quoting.
-
-o   New bindable readline functions shell-backward-kill-word and shell-kill-word
-    which kill words backward and forward, but use the same word boundaries
-    as shell-forward-word and shell-backward-word.
-
-Bash-3.2 contained the following new features:
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-4.3 and
-    previous bash versions?
-
-There are a few incompatibilities between version 4.3 and previous
-versions.  They are detailed in the file COMPAT in the bash distribution.
-That file is not meant to be all-encompassing; send mail to
-bash-maintainers@gnu.org (or bug-bash@gnu.org if you would like
-community discussion) if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASHPID, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume, PROMPT_DIRTRIM, BASHOPTS, BASH_XTRACEFD
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-, >>&
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P/-@, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u/-i/-N,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-n/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S/-R
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf, compopt, mapfile
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-       shell assignment of a file descriptor used in a redirection to a variable
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>&
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s/-N, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen, compopt, mapfile
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-       autocd shell option and behavior
-       command-not-found hook with command_not_found_handle shell function
-       globstar shell option and `**' globbing behavior
-       |& synonym for `2>&1 |'
-       ;& and ;;& case action list terminators
-       case-modifying word expansions and variable attributes
-       associative arrays
-       coprocesses using the `coproc' reserved word and variables
-       shell assignment of a file descriptor used in a redirection to a variable
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (bash uses different syntax)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-This list is current through ksh93v (10/08/2013)
-
-New things in ksh-93 not in bash-4.3:
-       floating point arithmetic, variables, and constants
-       math library functions, including user-defined math functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT,
-                  .sh.sig, .sh.stats, .sh.siginfo, .sh.pwdfd, .sh.op_astbin,
-                  .sh.pool
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching (match all instead of any)
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-       $''  \C[.collating-element.] escape sequence
-       -C/-I invocation options
-       print -f (bash uses printf) and rest of print builtin options
-       printf %(type)q, %#q
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       getopts -a
-       printf %B, %H, %P, %R, %Z modifiers, output base for %d, `=' flag
-       read -n/-N differ/-v/-S
-       set -o showme/-o multiline (bash default)
-       set -K
-       kill -Q/-q/-L
-       trap -a
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       [[ -R name ]] (checks whether or not name is a nameref)
-       typeset -C/-S/-T/-X/-h/-s/-c/-M
-       experimental `type' definitions (a la typedef) using typeset
-       array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]}
-       associative array assignments using `;' as element separator
-       command substitution $(n<#) expands to current byte offset for fd N
-       new '${ ' form of command substitution, executed in current shell
-       new >;/<>;/<#pat/<##pat/<#/># redirections
-       brace expansion printf-like formats 
-       CHLD trap triggered by SIGSTOP and SIGCONT
-       ~{fd} expansion, which replaces fd with the corresponding path name
-       $"string" expanded when referenced rather than when first parsed
-       job "pools", which allow a collection of jobs to be managed as a unit
-
-New things in ksh-93 present in bash-4.3:
-       associative arrays
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       negative subscripts for indexed array variables
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       brace expansion and set -B
-       changes to kill builtin
-       `command', `builtin', `disown' builtins
-       echo -e
-       exec -c/-a
-       printf %T modifier
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       `.' restores the positional parameters when it completes
-       set -o notify/-C
-       set -o pipefail
-       set -G (-o globstar) and **
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion, TAB displaying possible completions
-       ENV processed only for interactive shells
-       The `+=' assignment operator
-       the `;&' case statement "fallthrough" pattern list terminator
-       csh-style history expansion and set -H
-       negative offsets in ${param:offset:length}
-       redirection operators preceded with {varname} to store fd number in varname
-       DEBUG can force skipping following command
-       [[ -v var ]] operator (checks whether or not var is set)
-       typeset -n and `nameref' variables
-       process substitutions work without /dev/fd
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Bash-4.0 introduces the concept of a `compatibility level', controlled by
-several options to the `shopt' builtin.  If the `compat31' option is enabled,
-bash reverts to the bash-3.1 behavior with respect to quoting the rhs of
-the =~ operator.
-
-E15) Tell me more about the shell compatibility level.
-
-Bash-4.0 introduced the concept of a `shell compatibility level', specified
-as a set of options to the shopt builtin (compat31, compat32, compat40 at
-this writing).  There is only one current compatibility level -- each
-option is mutually exclusive.  This list does not mention behavior that is
-standard for a particular version (e.g., setting compat32 means that quoting
-the rhs of the regexp matching operator quotes special regexp characters in
-the word, which is default behavior in bash-3.2 and above).
-
-compat31 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-       - quoting the rhs of the regexp matching operator (=~) has no
-         special effect
-
-compat32 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-
-compat40 set
-       - the < and > operators to the [[ command do not consider the current
-         locale when comparing strings
-       - interrupting a command list such as "a ; b ; c" causes the execution
-         of the entire list to be aborted (in versions before bash-4.0,
-         interrupting one command in a list caused the next to be executed)
-
-compat41 set
-        - interrupting a command list such as "a ; b ; c" causes the execution
-          of the entire list to be aborted (in versions before bash-4.1,
-          interrupting one command in a list caused the next to be executed)
-        - when in posix mode, single quotes in the `word' portion of a
-          double-quoted parameter expansion define a new quoting context and
-          are treated specially
-    
-compat42 set
-        - the replacement string in double-quoted pattern substitution is not
-          run through quote removal, as in previous versions
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  Namerefs are available bash version 4.3, and work as in ksh93.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.  It's a variant of
-
-       echo .[!.]* ..?* *
-
-(The ..?* catches files with names of three or more characters beginning
-with `..')
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-4.0)
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2015.  Never make predictions. 
-
-This document is Copyright 1995-2014 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
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/bash.info b/doc/bash.info
deleted file mode 100644 (file)
index 474636a..0000000
+++ /dev/null
@@ -1,11330 +0,0 @@
-This is bash.info, produced by makeinfo version 4.13 from
-/usr/homes/chet/src/bash/src/doc/bashref.texi.
-
-This text is a brief description of the features that are present in
-the Bash shell (version 4.3, 6 September 2014).
-
-   This is Edition 4.3, last updated 6 September 2014, of `The GNU Bash
-Reference Manual', for `Bash', Version 4.3.
-
-   Copyright (C) 1988-2014 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, no Front-Cover Texts, and
-     no Back-Cover Texts.  A copy of the license is included in the
-     section entitled "GNU Free Documentation License".
-
-INFO-DIR-SECTION Basics
-START-INFO-DIR-ENTRY
-* Bash: (bash).                     The GNU Bourne-Again SHell.
-END-INFO-DIR-ENTRY
-
-\1f
-File: bash.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
-
-Bash Features
-*************
-
-This text is a brief description of the features that are present in
-the Bash shell (version 4.3, 6 September 2014).  The Bash home page is
-`http://www.gnu.org/software/bash/'.
-
-   This is Edition 4.3, last updated 6 September 2014, of `The GNU Bash
-Reference Manual', for `Bash', Version 4.3.
-
-   Bash contains features that appear in other popular shells, and some
-features that only appear in Bash.  Some of the shells that Bash has
-borrowed concepts from are the Bourne Shell (`sh'), the Korn Shell
-(`ksh'), and the C-shell (`csh' and its successor, `tcsh').  The
-following menu breaks the features up into categories, noting which
-features were inspired by other shells and which are specific to Bash.
-
-   This manual is meant as a brief introduction to features found in
-Bash.  The Bash manual page should be used as the definitive reference
-on shell behavior.
-
-* Menu:
-
-* Introduction::               An introduction to the shell.
-* Definitions::                        Some definitions used in the rest of this
-                               manual.
-* Basic Shell Features::       The shell "building blocks".
-* Shell Builtin Commands::     Commands that are a part of the shell.
-* Shell Variables::            Variables used or set by Bash.
-* Bash Features::              Features found only in Bash.
-* Job Control::                        What job control is and how Bash allows you
-                               to use it.
-* Command Line Editing::       Chapter describing the command line
-                               editing features.
-* Using History Interactively::        Command History Expansion
-* Installing Bash::            How to build and install Bash on your system.
-* Reporting Bugs::             How to report bugs in Bash.
-* Major Differences From The Bourne Shell::    A terse list of the differences
-                                               between Bash and historical
-                                               versions of /bin/sh.
-* GNU Free Documentation License::     Copying and sharing this documentation.
-* Indexes::                    Various indexes for this manual.
-
-\1f
-File: bash.info,  Node: Introduction,  Next: Definitions,  Prev: Top,  Up: Top
-
-1 Introduction
-**************
-
-* Menu:
-
-* What is Bash?::              A short description of Bash.
-* What is a shell?::           A brief introduction to shells.
-
-\1f
-File: bash.info,  Node: What is Bash?,  Next: What is a shell?,  Up: Introduction
-
-1.1 What is Bash?
-=================
-
-Bash is the shell, or command language interpreter, for the GNU
-operating system.  The name is an acronym for the `Bourne-Again SHell',
-a pun on Stephen Bourne, the author of the direct ancestor of the
-current Unix shell `sh', which appeared in the Seventh Edition Bell
-Labs Research version of Unix.
-
-   Bash is largely compatible with `sh' and incorporates useful
-features from the Korn shell `ksh' and the C shell `csh'.  It is
-intended to be a conformant implementation of the IEEE POSIX Shell and
-Tools portion of the IEEE POSIX specification (IEEE Standard 1003.1).
-It offers functional improvements over `sh' for both interactive and
-programming use.
-
-   While the GNU operating system provides other shells, including a
-version of `csh', Bash is the default shell.  Like other GNU software,
-Bash is quite portable.  It currently runs on nearly every version of
-Unix and a few other operating systems - independently-supported ports
-exist for MS-DOS, OS/2, and Windows platforms.
-
-\1f
-File: bash.info,  Node: What is a shell?,  Prev: What is Bash?,  Up: Introduction
-
-1.2 What is a shell?
-====================
-
-At its base, a shell is simply a macro processor that executes
-commands.  The term macro processor means functionality where text and
-symbols are expanded to create larger expressions.
-
-   A Unix shell is both a command interpreter and a programming
-language.  As a command interpreter, the shell provides the user
-interface to the rich set of GNU utilities.  The programming language
-features allow these utilities to be combined.  Files containing
-commands can be created, and become commands themselves.  These new
-commands have the same status as system commands in directories such as
-`/bin', allowing users or groups to establish custom environments to
-automate their common tasks.
-
-   Shells may be used interactively or non-interactively.  In
-interactive mode, they accept input typed from the keyboard.  When
-executing non-interactively, shells execute commands read from a file.
-
-   A shell allows execution of GNU commands, both synchronously and
-asynchronously.  The shell waits for synchronous commands to complete
-before accepting more input; asynchronous commands continue to execute
-in parallel with the shell while it reads and executes additional
-commands.  The "redirection" constructs permit fine-grained control of
-the input and output of those commands.  Moreover, the shell allows
-control over the contents of commands' environments.
-
-   Shells also provide a small set of built-in commands ("builtins")
-implementing functionality impossible or inconvenient to obtain via
-separate utilities.  For example, `cd', `break', `continue', and `exec'
-cannot be implemented outside of the shell because they directly
-manipulate the shell itself.  The `history', `getopts', `kill', or `pwd'
-builtins, among others, could be implemented in separate utilities, but
-they are more convenient to use as builtin commands.  All of the shell
-builtins are described in subsequent sections.
-
-   While executing commands is essential, most of the power (and
-complexity) of shells is due to their embedded programming languages.
-Like any high-level language, the shell provides variables, flow
-control constructs, quoting, and functions.
-
-   Shells offer features geared specifically for interactive use rather
-than to augment the programming language.  These interactive features
-include job control, command line editing, command history and aliases.
-Each of these features is described in this manual.
-
-\1f
-File: bash.info,  Node: Definitions,  Next: Basic Shell Features,  Prev: Introduction,  Up: Top
-
-2 Definitions
-*************
-
-These definitions are used throughout the remainder of this manual.
-
-`POSIX'
-     A family of open system standards based on Unix.  Bash is
-     primarily concerned with the Shell and Utilities portion of the
-     POSIX 1003.1 standard.
-
-`blank'
-     A space or tab character.
-
-`builtin'
-     A command that is implemented internally by the shell itself,
-     rather than by an executable program somewhere in the file system.
-
-`control operator'
-     A `token' that performs a control function.  It is a `newline' or
-     one of the following: `||', `&&', `&', `;', `;;', `|', `|&', `(',
-     or `)'.
-
-`exit status'
-     The value returned by a command to its caller.  The value is
-     restricted to eight bits, so the maximum value is 255.
-
-`field'
-     A unit of text that is the result of one of the shell expansions.
-     After expansion, when executing a command, the resulting fields
-     are used as the command name and arguments.
-
-`filename'
-     A string of characters used to identify a file.
-
-`job'
-     A set of processes comprising a pipeline, and any processes
-     descended from it, that are all in the same process group.
-
-`job control'
-     A mechanism by which users can selectively stop (suspend) and
-     restart (resume) execution of processes.
-
-`metacharacter'
-     A character that, when unquoted, separates words.  A metacharacter
-     is a `blank' or one of the following characters: `|', `&', `;',
-     `(', `)', `<', or `>'.
-
-`name'
-     A `word' consisting solely of letters, numbers, and underscores,
-     and beginning with a letter or underscore.  `Name's are used as
-     shell variable and function names.  Also referred to as an
-     `identifier'.
-
-`operator'
-     A `control operator' or a `redirection operator'.  *Note
-     Redirections::, for a list of redirection operators.  Operators
-     contain at least one unquoted `metacharacter'.
-
-`process group'
-     A collection of related processes each having the same process
-     group ID.
-
-`process group ID'
-     A unique identifier that represents a `process group' during its
-     lifetime.
-
-`reserved word'
-     A `word' that has a special meaning to the shell.  Most reserved
-     words introduce shell flow control constructs, such as `for' and
-     `while'.
-
-`return status'
-     A synonym for `exit status'.
-
-`signal'
-     A mechanism by which a process may be notified by the kernel of an
-     event occurring in the system.
-
-`special builtin'
-     A shell builtin command that has been classified as special by the
-     POSIX standard.
-
-`token'
-     A sequence of characters considered a single unit by the shell.
-     It is either a `word' or an `operator'.
-
-`word'
-     A sequence of characters treated as a unit by the shell.  Words
-     may not include unquoted `metacharacters'.
-
-\1f
-File: bash.info,  Node: Basic Shell Features,  Next: Shell Builtin Commands,  Prev: Definitions,  Up: Top
-
-3 Basic Shell Features
-**********************
-
-Bash is an acronym for `Bourne-Again SHell'.  The Bourne shell is the
-traditional Unix shell originally written by Stephen Bourne.  All of
-the Bourne shell builtin commands are available in Bash, The rules for
-evaluation and quoting are taken from the POSIX specification for the
-`standard' Unix shell.
-
-   This chapter briefly summarizes the shell's `building blocks':
-commands, control structures, shell functions, shell parameters, shell
-expansions, redirections, which are a way to direct input and output
-from and to named files, and how the shell executes commands.
-
-* Menu:
-
-* Shell Syntax::               What your input means to the shell.
-* Shell Commands::             The types of commands you can use.
-* Shell Functions::            Grouping commands by name.
-* Shell Parameters::           How the shell stores values.
-* Shell Expansions::           How Bash expands parameters and the various
-                               expansions available.
-* Redirections::               A way to control where input and output go.
-* Executing Commands::         What happens when you run a command.
-* Shell Scripts::              Executing files of shell commands.
-
-\1f
-File: bash.info,  Node: Shell Syntax,  Next: Shell Commands,  Up: Basic Shell Features
-
-3.1 Shell Syntax
-================
-
-* Menu:
-
-* Shell Operation::    The basic operation of the shell.
-* Quoting::            How to remove the special meaning from characters.
-* Comments::           How to specify comments.
-
-   When the shell reads input, it proceeds through a sequence of
-operations.  If the input indicates the beginning of a comment, the
-shell ignores the comment symbol (`#'), and the rest of that line.
-
-   Otherwise, roughly speaking,  the shell reads its input and divides
-the input into words and operators, employing the quoting rules to
-select which meanings to assign various words and characters.
-
-   The shell then parses these tokens into commands and other
-constructs, removes the special meaning of certain words or characters,
-expands others, redirects input and output as needed, executes the
-specified command, waits for the command's exit status, and makes that
-exit status available for further inspection or processing.
-
-\1f
-File: bash.info,  Node: Shell Operation,  Next: Quoting,  Up: Shell Syntax
-
-3.1.1 Shell Operation
----------------------
-
-The following is a brief description of the shell's operation when it
-reads and executes a command.  Basically, the shell does the following:
-
-  1. Reads its input from a file (*note Shell Scripts::), from a string
-     supplied as an argument to the `-c' invocation option (*note
-     Invoking Bash::), or from the user's terminal.
-
-  2. Breaks the input into words and operators, obeying the quoting
-     rules described in *note Quoting::.  These tokens are separated by
-     `metacharacters'.  Alias expansion is performed by this step
-     (*note Aliases::).
-
-  3. Parses the tokens into simple and compound commands (*note Shell
-     Commands::).
-
-  4. Performs the various shell expansions (*note Shell Expansions::),
-     breaking the expanded tokens into lists of filenames (*note
-     Filename Expansion::) and commands and arguments.
-
-  5. Performs any necessary redirections (*note Redirections::) and
-     removes the redirection operators and their operands from the
-     argument list.
-
-  6. Executes the command (*note Executing Commands::).
-
-  7. Optionally waits for the command to complete and collects its exit
-     status (*note Exit Status::).
-
-
-\1f
-File: bash.info,  Node: Quoting,  Next: Comments,  Prev: Shell Operation,  Up: Shell Syntax
-
-3.1.2 Quoting
--------------
-
-* Menu:
-
-* Escape Character::   How to remove the special meaning from a single
-                       character.
-* Single Quotes::      How to inhibit all interpretation of a sequence
-                       of characters.
-* Double Quotes::      How to suppress most of the interpretation of a
-                       sequence of characters.
-* ANSI-C Quoting::     How to expand ANSI-C sequences in quoted strings.
-* Locale Translation:: How to translate strings into different languages.
-
-   Quoting is used to remove the special meaning of certain characters
-or words to the shell.  Quoting can be used to disable special
-treatment for special characters, to prevent reserved words from being
-recognized as such, and to prevent parameter expansion.
-
-   Each of the shell metacharacters (*note Definitions::) has special
-meaning to the shell and must be quoted if it is to represent itself.
-When the command history expansion facilities are being used (*note
-History Interaction::), the HISTORY EXPANSION character, usually `!',
-must be quoted to prevent history expansion.  *Note Bash History
-Facilities::, for more details concerning history expansion.
-
-   There are three quoting mechanisms: the ESCAPE CHARACTER, single
-quotes, and double quotes.
-
-\1f
-File: bash.info,  Node: Escape Character,  Next: Single Quotes,  Up: Quoting
-
-3.1.2.1 Escape Character
-........................
-
-A non-quoted backslash `\' is the Bash escape character.  It preserves
-the literal value of the next character that follows, with the
-exception of `newline'.  If a `\newline' pair appears, and the
-backslash itself is not quoted, the `\newline' is treated as a line
-continuation (that is, it is removed from the input stream and
-effectively ignored).
-
-\1f
-File: bash.info,  Node: Single Quotes,  Next: Double Quotes,  Prev: Escape Character,  Up: Quoting
-
-3.1.2.2 Single Quotes
-.....................
-
-Enclosing characters in single quotes (`'') preserves the literal value
-of each character within the quotes.  A single quote may not occur
-between single quotes, even when preceded by a backslash.
-
-\1f
-File: bash.info,  Node: Double Quotes,  Next: ANSI-C Quoting,  Prev: Single Quotes,  Up: Quoting
-
-3.1.2.3 Double Quotes
-.....................
-
-Enclosing characters in double quotes (`"') preserves the literal value
-of all characters within the quotes, with the exception of `$', ``',
-`\', and, when history expansion is enabled, `!'.  The characters `$'
-and ``' retain their special meaning within double quotes (*note Shell
-Expansions::).  The backslash retains its special meaning only when
-followed by one of the following characters: `$', ``', `"', `\', or
-`newline'.  Within double quotes, backslashes that are followed by one
-of these characters are removed.  Backslashes preceding characters
-without a special meaning are left unmodified.  A double quote may be
-quoted within double quotes by preceding it with a backslash.  If
-enabled, history expansion will be performed unless an `!' appearing in
-double quotes is escaped using a backslash.  The backslash preceding
-the `!' is not removed.
-
-   The special parameters `*' and `@' have special meaning when in
-double quotes (*note Shell Parameter Expansion::).
-
-\1f
-File: bash.info,  Node: ANSI-C Quoting,  Next: Locale Translation,  Prev: Double Quotes,  Up: Quoting
-
-3.1.2.4 ANSI-C Quoting
-......................
-
-Words of the form `$'STRING'' are treated specially.  The word expands
-to STRING, with backslash-escaped characters replaced as specified by
-the ANSI C standard.  Backslash escape sequences, if present, are
-decoded as follows:
-
-`\a'
-     alert (bell)
-
-`\b'
-     backspace
-
-`\e'
-`\E'
-     an escape character (not ANSI C)
-
-`\f'
-     form feed
-
-`\n'
-     newline
-
-`\r'
-     carriage return
-
-`\t'
-     horizontal tab
-
-`\v'
-     vertical tab
-
-`\\'
-     backslash
-
-`\''
-     single quote
-
-`\"'
-     double quote
-
-`\NNN'
-     the eight-bit character whose value is the octal value NNN (one to
-     three digits)
-
-`\xHH'
-     the eight-bit character whose value is the hexadecimal value HH
-     (one or two hex digits)
-
-`\uHHHH'
-     the Unicode (ISO/IEC 10646) character whose value is the
-     hexadecimal value HHHH (one to four hex digits)
-
-`\UHHHHHHHH'
-     the Unicode (ISO/IEC 10646) character whose value is the
-     hexadecimal value HHHHHHHH (one to eight hex digits)
-
-`\cX'
-     a control-X character
-
-The expanded result is single-quoted, as if the dollar sign had not
-been present.
-
-\1f
-File: bash.info,  Node: Locale Translation,  Prev: ANSI-C Quoting,  Up: Quoting
-
-3.1.2.5 Locale-Specific Translation
-...................................
-
-A double-quoted string preceded by a dollar sign (`$') will cause the
-string to be translated according to the current locale.  If the
-current locale is `C' or `POSIX', the dollar sign is ignored.  If the
-string is translated and replaced, the replacement is double-quoted.
-
-   Some systems use the message catalog selected by the `LC_MESSAGES'
-shell variable.  Others create the name of the message catalog from the
-value of the `TEXTDOMAIN' shell variable, possibly adding a suffix of
-`.mo'.  If you use the `TEXTDOMAIN' variable, you may need to set the
-`TEXTDOMAINDIR' variable to the location of the message catalog files.
-Still others use both variables in this fashion:
-`TEXTDOMAINDIR'/`LC_MESSAGES'/LC_MESSAGES/`TEXTDOMAIN'.mo.
-
-\1f
-File: bash.info,  Node: Comments,  Prev: Quoting,  Up: Shell Syntax
-
-3.1.3 Comments
---------------
-
-In a non-interactive shell, or an interactive shell in which the
-`interactive_comments' option to the `shopt' builtin is enabled (*note
-The Shopt Builtin::), a word beginning with `#' causes that word and
-all remaining characters on that line to be ignored.  An interactive
-shell without the `interactive_comments' option enabled does not allow
-comments.  The `interactive_comments' option is on by default in
-interactive shells.  *Note Interactive Shells::, for a description of
-what makes a shell interactive.
-
-\1f
-File: bash.info,  Node: Shell Commands,  Next: Shell Functions,  Prev: Shell Syntax,  Up: Basic Shell Features
-
-3.2 Shell Commands
-==================
-
-A simple shell command such as `echo a b c' consists of the command
-itself followed by arguments, separated by spaces.
-
-   More complex shell commands are composed of simple commands arranged
-together in a variety of ways: in a pipeline in which the output of one
-command becomes the input of a second, in a loop or conditional
-construct, or in some other grouping.
-
-* Menu:
-
-* Simple Commands::            The most common type of command.
-* Pipelines::                  Connecting the input and output of several
-                               commands.
-* Lists::                      How to execute commands sequentially.
-* Compound Commands::          Shell commands for control flow.
-* Coprocesses::                        Two-way communication between commands.
-* GNU Parallel::               Running commands in parallel.
-
-\1f
-File: bash.info,  Node: Simple Commands,  Next: Pipelines,  Up: Shell Commands
-
-3.2.1 Simple Commands
----------------------
-
-A simple command is the kind of command encountered most often.  It's
-just a sequence of words separated by `blank's, terminated by one of
-the shell's control operators (*note Definitions::).  The first word
-generally specifies a command to be executed, with the rest of the
-words being that command's arguments.
-
-   The return status (*note Exit Status::) of a simple command is its
-exit status as provided by the POSIX 1003.1 `waitpid' function, or
-128+N if the command was terminated by signal N.
-
-\1f
-File: bash.info,  Node: Pipelines,  Next: Lists,  Prev: Simple Commands,  Up: Shell Commands
-
-3.2.2 Pipelines
----------------
-
-A `pipeline' is a sequence of one or more commands separated by one of
-the control operators `|' or `|&'.
-
-   The format for a pipeline is
-     [time [-p]] [!] COMMAND1 [ | or |& COMMAND2 ] ...
-
-The output of each command in the pipeline is connected via a pipe to
-the input of the next command.  That is, each command reads the
-previous command's output.  This connection is performed before any
-redirections specified by the command.
-
-   If `|&' is used, COMMAND1's standard error, in addition to its
-standard output, is connected to COMMAND2's standard input through the
-pipe; it is shorthand for `2>&1 |'.  This implicit redirection of the
-standard error to the standard output is performed after any
-redirections specified by the command.
-
-   The reserved word `time' causes timing statistics to be printed for
-the pipeline once it finishes.  The statistics currently consist of
-elapsed (wall-clock) time and user and system time consumed by the
-command's execution.  The `-p' option changes the output format to that
-specified by POSIX.  When the shell is in POSIX mode (*note Bash POSIX
-Mode::), it does not recognize `time' as a reserved word if the next
-token begins with a `-'.  The `TIMEFORMAT' variable may be set to a
-format string that specifies how the timing information should be
-displayed.  *Note Bash Variables::, for a description of the available
-formats.  The use of `time' as a reserved word permits the timing of
-shell builtins, shell functions, and pipelines.  An external `time'
-command cannot time these easily.
-
-   When the shell is in POSIX mode (*note Bash POSIX Mode::), `time'
-may be followed by a newline.  In this case, the shell displays the
-total user and system time consumed by the shell and its children.  The
-`TIMEFORMAT' variable may be used to specify the format of the time
-information.
-
-   If the pipeline is not executed asynchronously (*note Lists::), the
-shell waits for all commands in the pipeline to complete.
-
-   Each command in a pipeline is executed in its own subshell (*note
-Command Execution Environment::).  The exit status of a pipeline is the
-exit status of the last command in the pipeline, unless the `pipefail'
-option is enabled (*note The Set Builtin::).  If `pipefail' is enabled,
-the pipeline's return status is the value of the last (rightmost)
-command to exit with a non-zero status, or zero if all commands exit
-successfully.  If the reserved word `!' precedes the pipeline, the exit
-status is the logical negation of the exit status as described above.
-The shell waits for all commands in the pipeline to terminate before
-returning a value.
-
-\1f
-File: bash.info,  Node: Lists,  Next: Compound Commands,  Prev: Pipelines,  Up: Shell Commands
-
-3.2.3 Lists of Commands
------------------------
-
-A `list' is a sequence of one or more pipelines separated by one of the
-operators `;', `&', `&&', or `||', and optionally terminated by one of
-`;', `&', or a `newline'.
-
-   Of these list operators, `&&' and `||' have equal precedence,
-followed by `;' and `&', which have equal precedence.
-
-   A sequence of one or more newlines may appear in a `list' to delimit
-commands, equivalent to a semicolon.
-
-   If a command is terminated by the control operator `&', the shell
-executes the command asynchronously in a subshell.  This is known as
-executing the command in the BACKGROUND.  The shell does not wait for
-the command to finish, and the return status is 0 (true).  When job
-control is not active (*note Job Control::), the standard input for
-asynchronous commands, in the absence of any explicit redirections, is
-redirected from `/dev/null'.
-
-   Commands separated by a `;' are executed sequentially; the shell
-waits for each command to terminate in turn.  The return status is the
-exit status of the last command executed.
-
-   AND and OR lists are sequences of one or more pipelines separated by
-the control operators `&&' and `||', respectively.  AND and OR lists
-are executed with left associativity.
-
-   An AND list has the form
-     COMMAND1 && COMMAND2
-
-COMMAND2 is executed if, and only if, COMMAND1 returns an exit status
-of zero.
-
-   An OR list has the form
-     COMMAND1 || COMMAND2
-
-COMMAND2 is executed if, and only if, COMMAND1 returns a non-zero exit
-status.
-
-   The return status of AND and OR lists is the exit status of the last
-command executed in the list.
-
-\1f
-File: bash.info,  Node: Compound Commands,  Next: Coprocesses,  Prev: Lists,  Up: Shell Commands
-
-3.2.4 Compound Commands
------------------------
-
-* Menu:
-
-* Looping Constructs::         Shell commands for iterative action.
-* Conditional Constructs::     Shell commands for conditional execution.
-* Command Grouping::           Ways to group commands.
-
-   Compound commands are the shell programming constructs.  Each
-construct begins with a reserved word or control operator and is
-terminated by a corresponding reserved word or operator.  Any
-redirections (*note Redirections::) associated with a compound command
-apply to all commands within that compound command unless explicitly
-overridden.
-
-   In most cases a list of commands in a compound command's description
-may be separated from the rest of the command by one or more newlines,
-and may be followed by a newline in place of a semicolon.
-
-   Bash provides looping constructs, conditional commands, and
-mechanisms to group commands and execute them as a unit.
-
-\1f
-File: bash.info,  Node: Looping Constructs,  Next: Conditional Constructs,  Up: Compound Commands
-
-3.2.4.1 Looping Constructs
-..........................
-
-Bash supports the following looping constructs.
-
-   Note that wherever a `;' appears in the description of a command's
-syntax, it may be replaced with one or more newlines.
-
-`until'
-     The syntax of the `until' command is:
-
-          until TEST-COMMANDS; do CONSEQUENT-COMMANDS; done
-
-     Execute CONSEQUENT-COMMANDS as long as TEST-COMMANDS has an exit
-     status which is not zero.  The return status is the exit status of
-     the last command executed in CONSEQUENT-COMMANDS, or zero if none
-     was executed.
-
-`while'
-     The syntax of the `while' command is:
-
-          while TEST-COMMANDS; do CONSEQUENT-COMMANDS; done
-
-     Execute CONSEQUENT-COMMANDS as long as TEST-COMMANDS has an exit
-     status of zero.  The return status is the exit status of the last
-     command executed in CONSEQUENT-COMMANDS, or zero if none was
-     executed.
-
-`for'
-     The syntax of the `for' command is:
-
-          for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done
-
-     Expand WORDS, and execute COMMANDS once for each member in the
-     resultant list, with NAME bound to the current member.  If `in
-     WORDS' is not present, the `for' command executes the COMMANDS
-     once for each positional parameter that is set, as if `in "$@"'
-     had been specified (*note Special Parameters::).  The return
-     status is the exit status of the last command that executes.  If
-     there are no items in the expansion of WORDS, no commands are
-     executed, and the return status is zero.
-
-     An alternate form of the `for' command is also supported:
-
-          for (( EXPR1 ; EXPR2 ; EXPR3 )) ; do COMMANDS ; done
-
-     First, the arithmetic expression EXPR1 is evaluated according to
-     the rules described below (*note Shell Arithmetic::).  The
-     arithmetic expression EXPR2 is then evaluated repeatedly until it
-     evaluates to zero.  Each time EXPR2 evaluates to a non-zero value,
-     COMMANDS are executed and the arithmetic expression EXPR3 is
-     evaluated.  If any expression is omitted, it behaves as if it
-     evaluates to 1.  The return value is the exit status of the last
-     command in COMMANDS that is executed, or false if any of the
-     expressions is invalid.
-
-   The `break' and `continue' builtins (*note Bourne Shell Builtins::)
-may be used to control loop execution.
-
-\1f
-File: bash.info,  Node: Conditional Constructs,  Next: Command Grouping,  Prev: Looping Constructs,  Up: Compound Commands
-
-3.2.4.2 Conditional Constructs
-..............................
-
-`if'
-     The syntax of the `if' command is:
-
-          if TEST-COMMANDS; then
-            CONSEQUENT-COMMANDS;
-          [elif MORE-TEST-COMMANDS; then
-            MORE-CONSEQUENTS;]
-          [else ALTERNATE-CONSEQUENTS;]
-          fi
-
-     The TEST-COMMANDS list is executed, and if its return status is
-     zero, the CONSEQUENT-COMMANDS list is executed.  If TEST-COMMANDS
-     returns a non-zero status, each `elif' list is executed in turn,
-     and if its exit status is zero, the corresponding MORE-CONSEQUENTS
-     is executed and the command completes.  If `else
-     ALTERNATE-CONSEQUENTS' is present, and the final command in the
-     final `if' or `elif' clause has a non-zero exit status, then
-     ALTERNATE-CONSEQUENTS is executed.  The return status is the exit
-     status of the last command executed, or zero if no condition
-     tested true.
-
-`case'
-     The syntax of the `case' command is:
-
-          case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac
-
-     `case' will selectively execute the COMMAND-LIST corresponding to
-     the first PATTERN that matches WORD.  If the shell option
-     `nocasematch' (see the description of `shopt' in *note The Shopt
-     Builtin::) is enabled, the match is performed without regard to
-     the case of alphabetic characters.  The `|' is used to separate
-     multiple patterns, and the `)' operator terminates a pattern list.
-     A list of patterns and an associated command-list is known as a
-     CLAUSE.
-
-     Each clause must be terminated with `;;', `;&', or `;;&'.  The
-     WORD undergoes tilde expansion, parameter expansion, command
-     substitution, arithmetic expansion, and quote removal before
-     matching is attempted.  Each PATTERN undergoes tilde expansion,
-     parameter expansion, command substitution, and arithmetic
-     expansion.
-
-     There may be an arbitrary number of `case' clauses, each terminated
-     by a `;;', `;&', or `;;&'.  The first pattern that matches
-     determines the command-list that is executed.  It's a common idiom
-     to use `*' as the final pattern to define the default case, since
-     that pattern will always match.
-
-     Here is an example using `case' in a script that could be used to
-     describe one interesting feature of an animal:
-
-          echo -n "Enter the name of an animal: "
-          read ANIMAL
-          echo -n "The $ANIMAL has "
-          case $ANIMAL in
-            horse | dog | cat) echo -n "four";;
-            man | kangaroo ) echo -n "two";;
-            *) echo -n "an unknown number of";;
-          esac
-          echo " legs."
-
-     If the `;;' operator is used, no subsequent matches are attempted
-     after the first pattern match.  Using `;&'  in place of `;;'
-     causes execution to continue with the COMMAND-LIST associated with
-     the next clause, if any.  Using `;;&' in place of `;;' causes the
-     shell to test the patterns in the next clause, if any, and execute
-     any associated COMMAND-LIST on a successful match.
-
-     The return status is zero if no PATTERN is matched.  Otherwise, the
-     return status is the exit status of the COMMAND-LIST executed.
-
-`select'
-     The `select' construct allows the easy generation of menus.  It
-     has almost the same syntax as the `for' command:
-
-          select NAME [in WORDS ...]; do COMMANDS; done
-
-     The list of words following `in' is expanded, generating a list of
-     items.  The set of expanded words is printed on the standard error
-     output stream, each preceded by a number.  If the `in WORDS' is
-     omitted, the positional parameters are printed, as if `in "$@"'
-     had been specified.  The `PS3' prompt is then displayed and a line
-     is read from the standard input.  If the line consists of a number
-     corresponding to one of the displayed words, then the value of
-     NAME is set to that word.  If the line is empty, the words and
-     prompt are displayed again.  If `EOF' is read, the `select'
-     command completes.  Any other value read causes NAME to be set to
-     null.  The line read is saved in the variable `REPLY'.
-
-     The COMMANDS are executed after each selection until a `break'
-     command is executed, at which point the `select' command completes.
-
-     Here is an example that allows the user to pick a filename from the
-     current directory, and displays the name and index of the file
-     selected.
-
-          select fname in *;
-          do
-               echo you picked $fname \($REPLY\)
-               break;
-          done
-
-`((...))'
-          (( EXPRESSION ))
-
-     The arithmetic EXPRESSION is evaluated according to the rules
-     described below (*note Shell Arithmetic::).  If the value of the
-     expression is non-zero, the return status is 0; otherwise the
-     return status is 1.  This is exactly equivalent to
-          let "EXPRESSION"
-     *Note Bash Builtins::, for a full description of the `let' builtin.
-
-`[[...]]'
-          [[ EXPRESSION ]]
-
-     Return a status of 0 or 1 depending on the evaluation of the
-     conditional expression EXPRESSION.  Expressions are composed of
-     the primaries described below in *note Bash Conditional
-     Expressions::.  Word splitting and filename expansion are not
-     performed on the words between the `[[' and `]]'; tilde expansion,
-     parameter and variable expansion, arithmetic expansion, command
-     substitution, process substitution, and quote removal are
-     performed.  Conditional operators such as `-f' must be unquoted to
-     be recognized as primaries.
-
-     When used with `[[', the `<' and `>' operators sort
-     lexicographically using the current locale.
-
-     When the `==' and `!=' operators are used, the string to the right
-     of the operator is considered a pattern and matched according to
-     the rules described below in *note Pattern Matching::, as if the
-     `extglob' shell option were enabled.  The `=' operator is
-     identical to `=='.  If the shell option `nocasematch' (see the
-     description of `shopt' in *note The Shopt Builtin::) is enabled,
-     the match is performed without regard to the case of alphabetic
-     characters.  The return value is 0 if the string matches (`==') or
-     does not match (`!=')the pattern, and 1 otherwise.  Any part of
-     the pattern may be quoted to force the quoted portion to be
-     matched as a string.
-
-     An additional binary operator, `=~', is available, with the same
-     precedence as `==' and `!='.  When it is used, the string to the
-     right of the operator is considered an extended regular expression
-     and matched accordingly (as in regex3)).  The return value is 0 if
-     the string matches the pattern, and 1 otherwise.  If the regular
-     expression is syntactically incorrect, the conditional
-     expression's return value is 2.  If the shell option `nocasematch'
-     (see the description of `shopt' in *note The Shopt Builtin::) is
-     enabled, the match is performed without regard to the case of
-     alphabetic characters.  Any part of the pattern may be quoted to
-     force the quoted portion to be matched as a string.  Bracket
-     expressions in regular expressions must be treated carefully,
-     since normal quoting characters lose their meanings between
-     brackets.  If the pattern is stored in a shell variable, quoting
-     the variable expansion forces the entire pattern to be matched as
-     a string.  Substrings matched by parenthesized subexpressions
-     within the regular expression are saved in the array variable
-     `BASH_REMATCH'.  The element of `BASH_REMATCH' with index 0 is the
-     portion of the string matching the entire regular expression.  The
-     element of `BASH_REMATCH' with index N is the portion of the
-     string matching the Nth parenthesized subexpression.
-
-     For example, the following will match a line (stored in the shell
-     variable LINE) if there is a sequence of characters in the value
-     consisting of any number, including zero, of space characters,
-     zero or one instances of `a', then a `b':
-          [[ $line =~ [[:space:]]*(a)?b ]]
-
-     That means values like `aab' and `  aaaaaab' will match, as will a
-     line containing a `b' anywhere in its value.
-
-     Storing the regular expression in a shell variable is often a
-     useful way to avoid problems with quoting characters that are
-     special to the shell.  It is sometimes difficult to specify a
-     regular expression literally without using quotes, or to keep
-     track of the quoting used by regular expressions while paying
-     attention to the shell's quote removal.  Using a shell variable to
-     store the pattern decreases these problems.  For example, the
-     following is equivalent to the above:
-          pattern='[[:space:]]*(a)?b'
-          [[ $line =~ $pattern ]]
-
-     If you want to match a character that's special to the regular
-     expression grammar, it has to be quoted to remove its special
-     meaning.  This means that in the pattern `xxx.txt', the `.'
-     matches any character in the string (its usual regular expression
-     meaning), but in the pattern `"xxx.txt"' it can only match a
-     literal `.'.  Shell programmers should take special care with
-     backslashes, since backslashes are used both by the shell and
-     regular expressions to remove the special meaning from the
-     following character.  The following two sets of commands are _not_
-     equivalent:
-          pattern='\.'
-
-          [[ . =~ $pattern ]]
-          [[ . =~ \. ]]
-
-          [[ . =~ "$pattern" ]]
-          [[ . =~ '\.' ]]
-
-     The first two matches will succeed, but the second two will not,
-     because in the second two the backslash will be part of the
-     pattern to be matched.  In the first two examples, the backslash
-     removes the special meaning from `.', so the literal `.' matches.
-     If the string in the first examples were anything other than `.',
-     say `a', the pattern would not match, because the quoted `.' in the
-     pattern loses its special meaning of matching any single character.
-
-     Expressions may be combined using the following operators, listed
-     in decreasing order of precedence:
-
-    `( EXPRESSION )'
-          Returns the value of EXPRESSION.  This may be used to
-          override the normal precedence of operators.
-
-    `! EXPRESSION'
-          True if EXPRESSION is false.
-
-    `EXPRESSION1 && EXPRESSION2'
-          True if both EXPRESSION1 and EXPRESSION2 are true.
-
-    `EXPRESSION1 || EXPRESSION2'
-          True if either EXPRESSION1 or EXPRESSION2 is true.
-
-     The `&&' and `||' operators do not evaluate EXPRESSION2 if the
-     value of EXPRESSION1 is sufficient to determine the return value
-     of the entire conditional expression.
-
-\1f
-File: bash.info,  Node: Command Grouping,  Prev: Conditional Constructs,  Up: Compound Commands
-
-3.2.4.3 Grouping Commands
-.........................
-
-Bash provides two ways to group a list of commands to be executed as a
-unit.  When commands are grouped, redirections may be applied to the
-entire command list.  For example, the output of all the commands in
-the list may be redirected to a single stream.
-
-`()'
-          ( LIST )
-
-     Placing a list of commands between parentheses causes a subshell
-     environment to be created (*note Command Execution Environment::),
-     and each of the commands in LIST to be executed in that subshell.
-     Since the LIST is executed in a subshell, variable assignments do
-     not remain in effect after the subshell completes.
-
-`{}'
-          { LIST; }
-
-     Placing a list of commands between curly braces causes the list to
-     be executed in the current shell context.  No subshell is created.
-     The semicolon (or newline) following LIST is required.
-
-   In addition to the creation of a subshell, there is a subtle
-difference between these two constructs due to historical reasons.  The
-braces are `reserved words', so they must be separated from the LIST by
-`blank's or other shell metacharacters.  The parentheses are
-`operators', and are recognized as separate tokens by the shell even if
-they are not separated from the LIST by whitespace.
-
-   The exit status of both of these constructs is the exit status of
-LIST.
-
-\1f
-File: bash.info,  Node: Coprocesses,  Next: GNU Parallel,  Prev: Compound Commands,  Up: Shell Commands
-
-3.2.5 Coprocesses
------------------
-
-A `coprocess' is a shell command preceded by the `coproc' reserved word.
-A coprocess is executed asynchronously in a subshell, as if the command
-had been terminated with the `&' control operator, with a two-way pipe
-established between the executing shell and the coprocess.
-
-   The format for a coprocess is:
-     coproc [NAME] COMMAND [REDIRECTIONS]
-
-This creates a coprocess named NAME.  If NAME is not supplied, the
-default name is COPROC.  NAME must not be supplied if COMMAND is a
-simple command (*note Simple Commands::); otherwise, it is interpreted
-as the first word of the simple command.
-
-   When the coprocess is executed, the shell creates an array variable
-(*note Arrays::) named `NAME' in the context of the executing shell.
-The standard output of COMMAND is connected via a pipe to a file
-descriptor in the executing shell, and that file descriptor is assigned
-to `NAME'[0].  The standard input of COMMAND is connected via a pipe to
-a file descriptor in the executing shell, and that file descriptor is
-assigned to `NAME'[1].  This pipe is established before any
-redirections specified by the command (*note Redirections::).  The file
-descriptors can be utilized as arguments to shell commands and
-redirections using standard word expansions.  The file descriptors are
-not available in subshells.
-
-   The process ID of the shell spawned to execute the coprocess is
-available as the value of the variable `NAME'_PID.  The `wait' builtin
-command may be used to wait for the coprocess to terminate.
-
-   Since the coprocess is created as an asynchronous command, the
-`coproc' command always returns success.  The return status of a
-coprocess is the exit status of COMMAND.
-
-\1f
-File: bash.info,  Node: GNU Parallel,  Prev: Coprocesses,  Up: Shell Commands
-
-3.2.6 GNU Parallel
-------------------
-
-There are ways to run commands in parallel that are not built into Bash.
-GNU Parallel is a tool to do just that.
-
-   GNU Parallel, as its name suggests, can be used to build and run
-commands in parallel.  You may run the same command with different
-arguments, whether they are filenames, usernames, hostnames, or lines
-read from files.  GNU Parallel provides shorthand references to many of
-the most common operations (input lines, various portions of the input
-line, different ways to specify the input source, and so on).  Parallel
-can replace `xargs' or feed commands from its input sources to several
-different instances of Bash.
-
-   For a complete description, refer to the GNU Parallel documentation.
-A few examples should provide a brief introduction to its use.
-
-   For example, it is easy to replace `xargs' to gzip all html files in
-the current directory and its subdirectories:
-     find . -type f -name '*.html' -print | parallel gzip
-   If you need to protect special characters such as newlines in file
-names, use find's `-print0' option and parallel's `-0' option.
-
-   You can use Parallel to move files from the current directory when
-the number of files is too large to process with one `mv' invocation:
-     ls | parallel mv {} destdir
-
-   As you can see, the {} is replaced with each line read from standard
-input.  While using `ls' will work in most instances, it is not
-sufficient to deal with all filenames.  If you need to accommodate
-special characters in filenames, you can use
-
-     find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir
-
-as alluded to above.
-
-   This will run as many `mv' commands as there are files in the current
-directory.  You can emulate a parallel `xargs' by adding the `-X'
-option:
-     find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir
-
-   GNU Parallel can replace certain common idioms that operate on lines
-read from a file (in this case, filenames listed one per line):
-       while IFS= read -r x; do
-               do-something1 "$x" "config-$x"
-               do-something2 < "$x"
-       done < file | process-output
-
-with a more compact syntax reminiscent of lambdas:
-     cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output
-
-   Parallel provides a built-in mechanism to remove filename
-extensions, which lends itself to batch file transformations or
-renaming:
-     ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
-   This will recompress all files in the current directory with names
-ending in .gz using bzip2, running one job per CPU (-j+0) in parallel.
-(We use `ls' for brevity here; using `find' as above is more robust in
-the face of filenames containing unexpected characters.)  Parallel can
-take arguments from the command line; the above can also be written as
-
-     parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
-
-   If a command generates output, you may want to preserve the input
-order in the output.  For instance, the following command
-     { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute
-   will display as output the traceroute invocation that finishes first.
-Adding the `-k' option
-     { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute
-   will ensure that the output of `traceroute foss.org.my' is displayed
-first.
-
-   Finally, Parallel can be used to run a sequence of shell commands in
-parallel, similar to `cat file | bash'.  It is not uncommon to take a
-list of filenames, create a series of shell commands to operate on
-them, and feed that list of commnds to a shell.  Parallel can speed
-this up.  Assuming that `file' contains a list of shell commands, one
-per line,
-
-     parallel -j 10 < file
-
-will evaluate the commands using the shell (since no explicit command is
-supplied as an argument), in blocks of ten shell jobs at a time.
-
-\1f
-File: bash.info,  Node: Shell Functions,  Next: Shell Parameters,  Prev: Shell Commands,  Up: Basic Shell Features
-
-3.3 Shell Functions
-===================
-
-Shell functions are a way to group commands for later execution using a
-single name for the group.  They are executed just like a "regular"
-command.  When the name of a shell function is used as a simple command
-name, the list of commands associated with that function name is
-executed.  Shell functions are executed in the current shell context;
-no new process is created to interpret them.
-
-   Functions are declared using this syntax: 
-     NAME () COMPOUND-COMMAND [ REDIRECTIONS ]
-
-   or
-
-     function NAME [()] COMPOUND-COMMAND [ REDIRECTIONS ]
-
-   This defines a shell function named NAME.  The reserved word
-`function' is optional.  If the `function' reserved word is supplied,
-the parentheses are optional.  The BODY of the function is the compound
-command COMPOUND-COMMAND (*note Compound Commands::).  That command is
-usually a LIST enclosed between { and }, but may be any compound
-command listed above, with one exception: If the `function' reserved
-word is used, but the parentheses are not supplied, the braces are
-required.  COMPOUND-COMMAND is executed whenever NAME is specified as
-the name of a command.  When the shell is in POSIX mode (*note Bash
-POSIX Mode::), NAME may not be the same as one of the special builtins
-(*note Special Builtins::).  Any redirections (*note Redirections::)
-associated with the shell function are performed when the function is
-executed.
-
-   A function definition may be deleted using the `-f' option to the
-`unset' builtin (*note Bourne Shell Builtins::).
-
-   The exit status of a function definition is zero unless a syntax
-error occurs or a readonly function with the same name already exists.
-When executed, the exit status of a function is the exit status of the
-last command executed in the body.
-
-   Note that for historical reasons, in the most common usage the curly
-braces that surround the body of the function must be separated from
-the body by `blank's or newlines.  This is because the braces are
-reserved words and are only recognized as such when they are separated
-from the command list by whitespace or another shell metacharacter.
-Also, when using the braces, the LIST must be terminated by a semicolon,
-a `&', or a newline.
-
-   When a function is executed, the arguments to the function become
-the positional parameters during its execution (*note Positional
-Parameters::).  The special parameter `#' that expands to the number of
-positional parameters is updated to reflect the change.  Special
-parameter `0' is unchanged.  The first element of the `FUNCNAME'
-variable is set to the name of the function while the function is
-executing.
-
-   All other aspects of the shell execution environment are identical
-between a function and its caller with these exceptions: the `DEBUG'
-and `RETURN' traps are not inherited unless the function has been given
-the `trace' attribute using the `declare' builtin or the `-o functrace'
-option has been enabled with the `set' builtin, (in which case all
-functions inherit the `DEBUG' and `RETURN' traps), and the `ERR' trap
-is not inherited unless the `-o errtrace' shell option has been enabled.
-*Note Bourne Shell Builtins::, for the description of the `trap'
-builtin.
-
-   The `FUNCNEST' variable, if set to a numeric value greater than 0,
-defines a maximum function nesting level.  Function invocations that
-exceed the limit cause the entire command to abort.
-
-   If the builtin command `return' is executed in a function, the
-function completes and execution resumes with the next command after
-the function call.  Any command associated with the `RETURN' trap is
-executed before execution resumes.  When a function completes, the
-values of the positional parameters and the special parameter `#' are
-restored to the values they had prior to the function's execution.  If
-a numeric argument is given to `return', that is the function's return
-status; otherwise the function's return status is the exit status of
-the last command executed before the `return'.
-
-   Variables local to the function may be declared with the `local'
-builtin.  These variables are visible only to the function and the
-commands it invokes.
-
-   Function names and definitions may be listed with the `-f' option to
-the `declare' (`typeset') builtin command (*note Bash Builtins::).  The
-`-F' option to `declare' or `typeset' will list the function names only
-(and optionally the source file and line number, if the `extdebug'
-shell option is enabled).  Functions may be exported so that subshells
-automatically have them defined with the `-f' option to the `export'
-builtin (*note Bourne Shell Builtins::).  Note that shell functions and
-variables with the same name may result in multiple identically-named
-entries in the environment passed to the shell's children.  Care should
-be taken in cases where this may cause a problem.
-
-   Functions may be recursive.  The `FUNCNEST' variable may be used to
-limit the depth of the function call stack and restrict the number of
-function invocations.  By default, no limit is placed on the number of
-recursive  calls.
-
-\1f
-File: bash.info,  Node: Shell Parameters,  Next: Shell Expansions,  Prev: Shell Functions,  Up: Basic Shell Features
-
-3.4 Shell Parameters
-====================
-
-* Menu:
-
-* Positional Parameters::      The shell's command-line arguments.
-* Special Parameters::         Parameters denoted by special characters.
-
-   A PARAMETER is an entity that stores values.  It can be a `name', a
-number, or one of the special characters listed below.  A VARIABLE is a
-parameter denoted by a `name'.  A variable has a VALUE and zero or more
-ATTRIBUTES.  Attributes are assigned using the `declare' builtin command
-(see the description of the `declare' builtin in *note Bash Builtins::).
-
-   A parameter is set if it has been assigned a value.  The null string
-is a valid value.  Once a variable is set, it may be unset only by using
-the `unset' builtin command.
-
-   A variable may be assigned to by a statement of the form
-     NAME=[VALUE]
-   If VALUE is not given, the variable is assigned the null string.  All
-VALUEs undergo tilde expansion, parameter and variable expansion,
-command substitution, arithmetic expansion, and quote removal (detailed
-below).  If the variable has its `integer' attribute set, then VALUE is
-evaluated as an arithmetic expression even if the `$((...))' expansion
-is not used (*note Arithmetic Expansion::).  Word splitting is not
-performed, with the exception of `"$@"' as explained below.  Filename
-expansion is not performed.  Assignment statements may also appear as
-arguments to the `alias', `declare', `typeset', `export', `readonly',
-and `local' builtin commands (DECLARATION commands).  When in POSIX
-mode (*note Bash POSIX Mode::), these builtins may appear in a command
-after one or more instances of the `command' builtin and retain these
-assignment statement properties.
-
-   In the context where an assignment statement is assigning a value to
-a shell variable or array index (*note Arrays::), the `+=' operator can
-be used to append to or add to the variable's previous value.  This
-includes arguments to builtin commands such as `declare' that accept
-assignment statements (DECLARATION commands).  When `+=' is applied to
-a variable for which the INTEGER attribute has been set, VALUE is
-evaluated as an arithmetic expression and added to the variable's
-current value, which is also evaluated.  When `+=' is applied to an
-array variable using compound assignment (*note Arrays::), the
-variable's value is not unset (as it is when using `='), and new values
-are appended to the array beginning at one greater than the array's
-maximum index (for indexed arrays),  or added as additional key-value
-pairs in an associative array.  When applied to a string-valued
-variable, VALUE is expanded and appended to the variable's value.
-
-   A variable can be assigned the NAMEREF attribute using the `-n'
-option to the \fBdeclare\fP or \fBlocal\fP builtin commands (*note Bash
-Builtins::) to create a NAMEREF, or a reference to another variable.
-This allows variables to be manipulated indirectly.  Whenever the
-nameref variable is referenced, assigned to, unset, or has its
-attributes modified (other than the nameref attribute itself), the
-operation is actually performed on the variable specified by the nameref
-variable's value.  A nameref is commonly used within shell functions to
-refer to a variable whose name is passed as an argument to the function.
-For instance, if a variable name is passed to a shell function as its
-first argument, running
-     declare -n ref=$1
-   inside the function creates a nameref variable REF whose value is
-the variable name passed as the first argument.  References and
-assignments to REF, and changes to its attributes, are treated as
-references, assignments, and attribute modifications to the variable
-whose name was passed as `$1'.
-
-   If the control variable in a `for' loop has the nameref attribute,
-the list of words can be a list of shell variables, and a name reference
-will be established for each word in the list, in turn, when the loop is
-executed.  Array variables cannot be given the nameref attribute.
-However, nameref variables can reference array variables and subscripted
-array variables.  Namerefs can be unset using the `-n' option to the
-`unset' builtin (*note Bourne Shell Builtins::).  Otherwise, if `unset'
-is executed with the name of a nameref variable as an argument, the
-variable referenced by the nameref variable will be unset.
-
-\1f
-File: bash.info,  Node: Positional Parameters,  Next: Special Parameters,  Up: Shell Parameters
-
-3.4.1 Positional Parameters
----------------------------
-
-A POSITIONAL PARAMETER is a parameter denoted by one or more digits,
-other than the single digit `0'.  Positional parameters are assigned
-from the shell's arguments when it is invoked, and may be reassigned
-using the `set' builtin command.  Positional parameter `N' may be
-referenced as `${N}', or as `$N' when `N' consists of a single digit.
-Positional parameters may not be assigned to with assignment statements.
-The `set' and `shift' builtins are used to set and unset them (*note
-Shell Builtin Commands::).  The positional parameters are temporarily
-replaced when a shell function is executed (*note Shell Functions::).
-
-   When a positional parameter consisting of more than a single digit
-is expanded, it must be enclosed in braces.
-
-\1f
-File: bash.info,  Node: Special Parameters,  Prev: Positional Parameters,  Up: Shell Parameters
-
-3.4.2 Special Parameters
-------------------------
-
-The shell treats several parameters specially.  These parameters may
-only be referenced; assignment to them is not allowed.
-
-`*'
-     ($*) Expands to the positional parameters, starting from one.
-     When the expansion is not within double quotes, each positional
-     parameter expands to a separate word.  In contexts where it is
-     performed, those words are subject to further word splitting and
-     pathname expansion.  When the expansion occurs within double
-     quotes, it expands to a single word with the value of each
-     parameter separated by the first character of the `IFS' special
-     variable.  That is, `"$*"' is equivalent to `"$1C$2C..."', where C
-     is the first character of the value of the `IFS' variable.  If
-     `IFS' is unset, the parameters are separated by spaces.  If `IFS'
-     is null, the parameters are joined without intervening separators.
-
-`@'
-     ($@) Expands to the positional parameters, starting from one.
-     When the expansion occurs within double quotes, each parameter
-     expands to a separate word.  That is, `"$@"' is equivalent to
-     `"$1" "$2" ...'.  If the double-quoted expansion occurs within a
-     word, the expansion of the first parameter is joined with the
-     beginning part of the original word, and the expansion of the last
-     parameter is joined with the last part of the original word.  When
-     there are no positional parameters, `"$@"' and `$@' expand to
-     nothing (i.e., they are removed).
-
-`#'
-     ($#) Expands to the number of positional parameters in decimal.
-
-`?'
-     ($?) Expands to the exit status of the most recently executed
-     foreground pipeline.
-
-`-'
-     ($-, a hyphen.)  Expands to the current option flags as specified
-     upon invocation, by the `set' builtin command, or those set by the
-     shell itself (such as the `-i' option).
-
-`$'
-     ($$) Expands to the process ID of the shell.  In a `()' subshell,
-     it expands to the process ID of the invoking shell, not the
-     subshell.
-
-`!'
-     ($!) Expands to the process ID of the job most recently placed
-     into the background, whether executed as an asynchronous command
-     or using the `bg' builtin (*note Job Control Builtins::).
-
-`0'
-     ($0) Expands to the name of the shell or shell script.  This is
-     set at shell initialization.  If Bash is invoked with a file of
-     commands (*note Shell Scripts::), `$0' is set to the name of that
-     file.  If Bash is started with the `-c' option (*note Invoking
-     Bash::), then `$0' is set to the first argument after the string
-     to be executed, if one is present.  Otherwise, it is set to the
-     filename used to invoke Bash, as given by argument zero.
-
-`_'
-     ($_, an underscore.)  At shell startup, set to the absolute
-     pathname used to invoke the shell or shell script being executed
-     as passed in the environment or argument list.  Subsequently,
-     expands to the last argument to the previous command, after
-     expansion.  Also set to the full pathname used to invoke each
-     command executed and placed in the environment exported to that
-     command.  When checking mail, this parameter holds the name of the
-     mail file.
-
-\1f
-File: bash.info,  Node: Shell Expansions,  Next: Redirections,  Prev: Shell Parameters,  Up: Basic Shell Features
-
-3.5 Shell Expansions
-====================
-
-Expansion is performed on the command line after it has been split into
-`token's.  There are seven kinds of expansion performed:
-
-   * brace expansion
-
-   * tilde expansion
-
-   * parameter and variable expansion
-
-   * command substitution
-
-   * arithmetic expansion
-
-   * word splitting
-
-   * filename expansion
-
-* Menu:
-
-* Brace Expansion::            Expansion of expressions within braces.
-* Tilde Expansion::            Expansion of the ~ character.
-* Shell Parameter Expansion::  How Bash expands variables to their values.
-* Command Substitution::       Using the output of a command as an argument.
-* Arithmetic Expansion::       How to use arithmetic in shell expansions.
-* Process Substitution::       A way to write and read to and from a
-                               command.
-* Word Splitting::     How the results of expansion are split into separate
-                       arguments.
-* Filename Expansion:: A shorthand for specifying filenames matching patterns.
-* Quote Removal::      How and when quote characters are removed from
-                       words.
-
-   The order of expansions is: brace expansion; tilde expansion,
-parameter and variable expansion, arithmetic expansion, and command
-substitution (done in a left-to-right fashion); word splitting; and
-filename expansion.
-
-   On systems that can support it, there is an additional expansion
-available: PROCESS SUBSTITUTION.  This is performed at the same time as
-tilde, parameter, variable, and arithmetic expansion and command
-substitution.
-
-   Only brace expansion, word splitting, and filename expansion can
-change the number of words of the expansion; other expansions expand a
-single word to a single word.  The only exceptions to this are the
-expansions of `"$@"' (*note Special Parameters::) and `"${NAME[@]}"'
-(*note Arrays::).
-
-   After all expansions, `quote removal' (*note Quote Removal::) is
-performed.
-
-\1f
-File: bash.info,  Node: Brace Expansion,  Next: Tilde Expansion,  Up: Shell Expansions
-
-3.5.1 Brace Expansion
----------------------
-
-Brace expansion is a mechanism by which arbitrary strings may be
-generated.  This mechanism is similar to FILENAME EXPANSION (*note
-Filename Expansion::), but the filenames generated need not exist.
-Patterns to be brace expanded take the form of an optional PREAMBLE,
-followed by either a series of comma-separated strings or a sequence
-expression between a pair of braces, followed by an optional POSTSCRIPT.
-The preamble is prefixed to each string contained within the braces, and
-the postscript is then appended to each resulting string, expanding left
-to right.
-
-   Brace expansions may be nested.  The results of each expanded string
-are not sorted; left to right order is preserved.  For example,
-     bash$ echo a{d,c,b}e
-     ade ace abe
-
-   A sequence expression takes the form `{X..Y[..INCR]}', where X and Y
-are either integers or single characters, and INCR, an optional
-increment, is an integer.  When integers are supplied, the expression
-expands to each number between X and Y, inclusive.  Supplied integers
-may be prefixed with `0' to force each term to have the same width.
-When either X or Y begins with a zero, the shell attempts to force all
-generated terms to contain the same number of digits, zero-padding
-where necessary.  When characters are supplied, the expression expands
-to each character lexicographically between X and Y, inclusive, using
-the default C locale.  Note that both X and Y must be of the same type.
-When the increment is supplied, it is used as the difference between
-each term.  The default increment is 1 or -1 as appropriate.
-
-   Brace expansion is performed before any other expansions, and any
-characters special to other expansions are preserved in the result.  It
-is strictly textual.  Bash does not apply any syntactic interpretation
-to the context of the expansion or the text between the braces.  To
-avoid conflicts with parameter expansion, the string `${' is not
-considered eligible for brace expansion.
-
-   A correctly-formed brace expansion must contain unquoted opening and
-closing braces, and at least one unquoted comma or a valid sequence
-expression.  Any incorrectly formed brace expansion is left unchanged.
-
-   A { or `,' may be quoted with a backslash to prevent its being
-considered part of a brace expression.  To avoid conflicts with
-parameter expansion, the string `${' is not considered eligible for
-brace expansion.
-
-   This construct is typically used as shorthand when the common prefix
-of the strings to be generated is longer than in the above example:
-     mkdir /usr/local/src/bash/{old,new,dist,bugs}
-   or
-     chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
-
-\1f
-File: bash.info,  Node: Tilde Expansion,  Next: Shell Parameter Expansion,  Prev: Brace Expansion,  Up: Shell Expansions
-
-3.5.2 Tilde Expansion
----------------------
-
-If a word begins with an unquoted tilde character (`~'), all of the
-characters up to the first unquoted slash (or all characters, if there
-is no unquoted slash) are considered a TILDE-PREFIX.  If none of the
-characters in the tilde-prefix are quoted, the characters in the
-tilde-prefix following the tilde are treated as a possible LOGIN NAME.
-If this login name is the null string, the tilde is replaced with the
-value of the `HOME' shell variable.  If `HOME' is unset, the home
-directory of the user executing the shell is substituted instead.
-Otherwise, the tilde-prefix is replaced with the home directory
-associated with the specified login name.
-
-   If the tilde-prefix is `~+', the value of the shell variable `PWD'
-replaces the tilde-prefix.  If the tilde-prefix is `~-', the value of
-the shell variable `OLDPWD', if it is set, is substituted.
-
-   If the characters following the tilde in the tilde-prefix consist of
-a number N, optionally prefixed by a `+' or a `-', the tilde-prefix is
-replaced with the corresponding element from the directory stack, as it
-would be displayed by the `dirs' builtin invoked with the characters
-following tilde in the tilde-prefix as an argument (*note The Directory
-Stack::).  If the tilde-prefix, sans the tilde, consists of a number
-without a leading `+' or `-', `+' is assumed.
-
-   If the login name is invalid, or the tilde expansion fails, the word
-is left unchanged.
-
-   Each variable assignment is checked for unquoted tilde-prefixes
-immediately following a `:' or the first `='.  In these cases, tilde
-expansion is also performed.  Consequently, one may use filenames with
-tildes in assignments to `PATH', `MAILPATH', and `CDPATH', and the
-shell assigns the expanded value.
-
-   The following table shows how Bash treats unquoted tilde-prefixes:
-
-`~'
-     The value of `$HOME'
-
-`~/foo'
-     `$HOME/foo'
-
-`~fred/foo'
-     The subdirectory `foo' of the home directory of the user `fred'
-
-`~+/foo'
-     `$PWD/foo'
-
-`~-/foo'
-     `${OLDPWD-'~-'}/foo'
-
-`~N'
-     The string that would be displayed by `dirs +N'
-
-`~+N'
-     The string that would be displayed by `dirs +N'
-
-`~-N'
-     The string that would be displayed by `dirs -N'
-
-\1f
-File: bash.info,  Node: Shell Parameter Expansion,  Next: Command Substitution,  Prev: Tilde Expansion,  Up: Shell Expansions
-
-3.5.3 Shell Parameter Expansion
--------------------------------
-
-The `$' character introduces parameter expansion, command substitution,
-or arithmetic expansion.  The parameter name or symbol to be expanded
-may be enclosed in braces, which are optional but serve to protect the
-variable to be expanded from characters immediately following it which
-could be interpreted as part of the name.
-
-   When braces are used, the matching ending brace is the first `}' not
-escaped by a backslash or within a quoted string, and not within an
-embedded arithmetic expansion, command substitution, or parameter
-expansion.
-
-   The basic form of parameter expansion is ${PARAMETER}.  The value of
-PARAMETER is substituted.  The PARAMETER is a shell parameter as
-described above (*note Shell Parameters::) or an array reference (*note
-Arrays::).  The braces are required when PARAMETER is a positional
-parameter with more than one digit, or when PARAMETER is followed by a
-character that is not to be interpreted as part of its name.
-
-   If the first character of PARAMETER is an exclamation point (!), it
-introduces a level of variable indirection.  Bash uses the value of the
-variable formed from the rest of PARAMETER as the name of the variable;
-this variable is then expanded and that value is used in the rest of
-the substitution, rather than the value of PARAMETER itself.  This is
-known as `indirect expansion'.  The exceptions to this are the
-expansions of ${!PREFIX*} and ${!NAME[@]} described below.  The
-exclamation point must immediately follow the left brace in order to
-introduce indirection.
-
-   In each of the cases below, WORD is subject to tilde expansion,
-parameter expansion, command substitution, and arithmetic expansion.
-
-   When not performing substring expansion, using the form described
-below (e.g., `:-'), Bash tests for a parameter that is unset or null.
-Omitting the colon results in a test only for a parameter that is unset.
-Put another way, if the colon is included, the operator tests for both
-PARAMETER's existence and that its value is not null; if the colon is
-omitted, the operator tests only for existence.
-
-`${PARAMETER:-WORD}'
-     If PARAMETER is unset or null, the expansion of WORD is
-     substituted.  Otherwise, the value of PARAMETER is substituted.
-
-`${PARAMETER:=WORD}'
-     If PARAMETER is unset or null, the expansion of WORD is assigned
-     to PARAMETER.  The value of PARAMETER is then substituted.
-     Positional parameters and special parameters may not be assigned to
-     in this way.
-
-`${PARAMETER:?WORD}'
-     If PARAMETER is null or unset, the expansion of WORD (or a message
-     to that effect if WORD is not present) is written to the standard
-     error and the shell, if it is not interactive, exits.  Otherwise,
-     the value of PARAMETER is substituted.
-
-`${PARAMETER:+WORD}'
-     If PARAMETER is null or unset, nothing is substituted, otherwise
-     the expansion of WORD is substituted.
-
-`${PARAMETER:OFFSET}'
-`${PARAMETER:OFFSET:LENGTH}'
-     This is referred to as Substring Expansion.  It expands to up to
-     LENGTH characters of the value of PARAMETER starting at the
-     character specified by OFFSET.  If PARAMETER is `@', an indexed
-     array subscripted by `@' or `*', or an associative array name, the
-     results differ as described below.  If LENGTH is omitted, it
-     expands to the substring of the value of PARAMETER starting at the
-     character specified by OFFSET and extending to the end of the
-     value.  LENGTH and OFFSET are arithmetic expressions (*note Shell
-     Arithmetic::).
-
-     If OFFSET evaluates to a number less than zero, the value is used
-     as an offset in characters from the end of the value of PARAMETER.
-     If LENGTH evaluates to a number less than zero, it is interpreted
-     as an offset in characters from the end of the value of PARAMETER
-     rather than a number of characters, and the expansion is the
-     characters between OFFSET and that result.  Note that a negative
-     offset must be separated from the colon by at least one space to
-     avoid being confused with the `:-' expansion.
-
-     Here are some examples illustrating substring expansion on
-     parameters and subscripted arrays:
-
-     $ string=01234567890abcdefgh
-     $ echo ${string:7}
-     7890abcdefgh
-     $ echo ${string:7:0}
-
-     $ echo ${string:7:2}
-     78
-     $ echo ${string:7:-2}
-     7890abcdef
-     $ echo ${string: -7}
-     bcdefgh
-     $ echo ${string: -7:0}
-
-     $ echo ${string: -7:2}
-     bc
-     $ echo ${string: -7:-2}
-     bcdef
-     $ set -- 01234567890abcdefgh
-     $ echo ${1:7}
-     7890abcdefgh
-     $ echo ${1:7:0}
-
-     $ echo ${1:7:2}
-     78
-     $ echo ${1:7:-2}
-     7890abcdef
-     $ echo ${1: -7}
-     bcdefgh
-     $ echo ${1: -7:0}
-
-     $ echo ${1: -7:2}
-     bc
-     $ echo ${1: -7:-2}
-     bcdef
-     $ array[0]=01234567890abcdefgh
-     $ echo ${array[0]:7}
-     7890abcdefgh
-     $ echo ${array[0]:7:0}
-
-     $ echo ${array[0]:7:2}
-     78
-     $ echo ${array[0]:7:-2}
-     7890abcdef
-     $ echo ${array[0]: -7}
-     bcdefgh
-     $ echo ${array[0]: -7:0}
-
-     $ echo ${array[0]: -7:2}
-     bc
-     $ echo ${array[0]: -7:-2}
-     bcdef
-
-     If PARAMETER is `@', the result is LENGTH positional parameters
-     beginning at OFFSET.  A negative OFFSET is taken relative to one
-     greater than the greatest positional parameter, so an offset of -1
-     evaluates to the last positional parameter.  It is an expansion
-     error if LENGTH evaluates to a number less than zero.
-
-     The following examples illustrate substring expansion using
-     positional parameters:
-
-     $ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
-     $ echo ${@:7}
-     7 8 9 0 a b c d e f g h
-     $ echo ${@:7:0}
-
-     $ echo ${@:7:2}
-     7 8
-     $ echo ${@:7:-2}
-     bash: -2: substring expression < 0
-     $ echo ${@: -7:2}
-     b c
-     $ echo ${@:0}
-     ./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
-     $ echo ${@:0:2}
-     ./bash 1
-     $ echo ${@: -7:0}
-
-     If PARAMETER is an indexed array name subscripted by `@' or `*',
-     the result is the LENGTH members of the array beginning with
-     `${PARAMETER[OFFSET]}'.  A negative OFFSET is taken relative to
-     one greater than the maximum index of the specified array.  It is
-     an expansion error if LENGTH evaluates to a number less than zero.
-
-     These examples show how you can use substring expansion with
-     indexed arrays:
-
-     $ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h)
-     $ echo ${array[@]:7}
-     7 8 9 0 a b c d e f g h
-     $ echo ${array[@]:7:2}
-     7 8
-     $ echo ${array[@]: -7:2}
-     b c
-     $ echo ${array[@]: -7:-2}
-     bash: -2: substring expression < 0
-     $ echo ${array[@]:0}
-     0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
-     $ echo ${array[@]:0:2}
-     0 1
-     $ echo ${array[@]: -7:0}
-
-     Substring expansion applied to an associative array produces
-     undefined results.
-
-     Substring indexing is zero-based unless the positional parameters
-     are used, in which case the indexing starts at 1 by default.  If
-     OFFSET is 0, and the positional parameters are used, `$@' is
-     prefixed to the list.
-
-`${!PREFIX*}'
-`${!PREFIX@}'
-     Expands to the names of variables whose names begin with PREFIX,
-     separated by the first character of the `IFS' special variable.
-     When `@' is used and the expansion appears within double quotes,
-     each variable name expands to a separate word.
-
-`${!NAME[@]}'
-`${!NAME[*]}'
-     If NAME is an array variable, expands to the list of array indices
-     (keys) assigned in NAME.  If NAME is not an array, expands to 0 if
-     NAME is set and null otherwise.  When `@' is used and the
-     expansion appears within double quotes, each key expands to a
-     separate word.
-
-`${#PARAMETER}'
-     The length in characters of the expanded value of PARAMETER is
-     substituted.  If PARAMETER is `*' or `@', the value substituted is
-     the number of positional parameters.  If PARAMETER is an array
-     name subscripted by `*' or `@', the value substituted is the
-     number of elements in the array.  If PARAMETER is an indexed array
-     name subscripted by a negative number, that number is interpreted
-     as relative to one greater than the maximum index of PARAMETER, so
-     negative indices count back from the end of the array, and an
-     index of -1 references the last element.
-
-`${PARAMETER#WORD}'
-`${PARAMETER##WORD}'
-     The WORD is expanded to produce a pattern just as in filename
-     expansion (*note Filename Expansion::).  If the pattern matches
-     the beginning of the expanded value of PARAMETER, then the result
-     of the expansion is the expanded value of PARAMETER with the
-     shortest matching pattern (the `#' case) or the longest matching
-     pattern (the `##' case) deleted.  If PARAMETER is `@' or `*', the
-     pattern removal operation is applied to each positional parameter
-     in turn, and the expansion is the resultant list.  If PARAMETER is
-     an array variable subscripted with `@' or `*', the pattern removal
-     operation is applied to each member of the array in turn, and the
-     expansion is the resultant list.
-
-`${PARAMETER%WORD}'
-`${PARAMETER%%WORD}'
-     The WORD is expanded to produce a pattern just as in filename
-     expansion.  If the pattern matches a trailing portion of the
-     expanded value of PARAMETER, then the result of the expansion is
-     the value of PARAMETER with the shortest matching pattern (the `%'
-     case) or the longest matching pattern (the `%%' case) deleted.  If
-     PARAMETER is `@' or `*', the pattern removal operation is applied
-     to each positional parameter in turn, and the expansion is the
-     resultant list.  If PARAMETER is an array variable subscripted
-     with `@' or `*', the pattern removal operation is applied to each
-     member of the array in turn, and the expansion is the resultant
-     list.
-
-`${PARAMETER/PATTERN/STRING}'
-     The PATTERN is expanded to produce a pattern just as in filename
-     expansion.  PARAMETER is expanded and the longest match of PATTERN
-     against its value is replaced with STRING.  If PATTERN begins with
-     `/', all matches of PATTERN are replaced with STRING.  Normally
-     only the first match is replaced.  If PATTERN begins with `#', it
-     must match at the beginning of the expanded value of PARAMETER.
-     If PATTERN begins with `%', it must match at the end of the
-     expanded value of PARAMETER.  If STRING is null, matches of
-     PATTERN are deleted and the `/' following PATTERN may be omitted.
-     If PARAMETER is `@' or `*', the substitution operation is applied
-     to each positional parameter in turn, and the expansion is the
-     resultant list.  If PARAMETER is an array variable subscripted
-     with `@' or `*', the substitution operation is applied to each
-     member of the array in turn, and the expansion is the resultant
-     list.
-
-`${PARAMETER^PATTERN}'
-`${PARAMETER^^PATTERN}'
-`${PARAMETER,PATTERN}'
-`${PARAMETER,,PATTERN}'
-     This expansion modifies the case of alphabetic characters in
-     PARAMETER.  The PATTERN is expanded to produce a pattern just as in
-     filename expansion.  Each character in the expanded value of
-     PARAMETER is tested against PATTERN, and, if it matches the
-     pattern, its case is converted.  The pattern should not attempt to
-     match more than one character.  The `^' operator converts
-     lowercase letters matching PATTERN to uppercase; the `,' operator
-     converts matching uppercase letters to lowercase.  The `^^' and
-     `,,' expansions convert each matched character in the expanded
-     value; the `^' and `,' expansions match and convert only the first
-     character in the expanded value.  If PATTERN is omitted, it is
-     treated like a `?', which matches every character.  If PARAMETER
-     is `@' or `*', the case modification operation is applied to each
-     positional parameter in turn, and the expansion is the resultant
-     list.  If PARAMETER is an array variable subscripted with `@' or
-     `*', the case modification operation is applied to each member of
-     the array in turn, and the expansion is the resultant list.
-
-\1f
-File: bash.info,  Node: Command Substitution,  Next: Arithmetic Expansion,  Prev: Shell Parameter Expansion,  Up: Shell Expansions
-
-3.5.4 Command Substitution
---------------------------
-
-Command substitution allows the output of a command to replace the
-command itself.  Command substitution occurs when a command is enclosed
-as follows:
-     $(COMMAND)
-   or
-     `COMMAND`
-
-Bash performs the expansion by executing COMMAND and replacing the
-command substitution with the standard output of the command, with any
-trailing newlines deleted.  Embedded newlines are not deleted, but they
-may be removed during word splitting.  The command substitution `$(cat
-FILE)' can be replaced by the equivalent but faster `$(< FILE)'.
-
-   When the old-style backquote form of substitution is used, backslash
-retains its literal meaning except when followed by `$', ``', or `\'.
-The first backquote not preceded by a backslash terminates the command
-substitution.  When using the `$(COMMAND)' form, all characters between
-the parentheses make up the command; none are treated specially.
-
-   Command substitutions may be nested.  To nest when using the
-backquoted form, escape the inner backquotes with backslashes.
-
-   If the substitution appears within double quotes, word splitting and
-filename expansion are not performed on the results.
-
-\1f
-File: bash.info,  Node: Arithmetic Expansion,  Next: Process Substitution,  Prev: Command Substitution,  Up: Shell Expansions
-
-3.5.5 Arithmetic Expansion
---------------------------
-
-Arithmetic expansion allows the evaluation of an arithmetic expression
-and the substitution of the result.  The format for arithmetic
-expansion is:
-
-     $(( EXPRESSION ))
-
-   The expression is treated as if it were within double quotes, but a
-double quote inside the parentheses is not treated specially.  All
-tokens in the expression undergo parameter and variable expansion,
-command substitution, and quote removal.  The result is treated as the
-arithmetic expression to be evaluated.  Arithmetic expansions may be
-nested.
-
-   The evaluation is performed according to the rules listed below
-(*note Shell Arithmetic::).  If the expression is invalid, Bash prints
-a message indicating failure to the standard error and no substitution
-occurs.
-
-\1f
-File: bash.info,  Node: Process Substitution,  Next: Word Splitting,  Prev: Arithmetic Expansion,  Up: Shell Expansions
-
-3.5.6 Process Substitution
---------------------------
-
-Process substitution is supported on systems that support named pipes
-(FIFOs) or the `/dev/fd' method of naming open files.  It takes the
-form of
-     <(LIST)
-   or
-     >(LIST)
-   The process LIST is run with its input or output connected to a FIFO
-or some file in `/dev/fd'.  The name of this file is passed as an
-argument to the current command as the result of the expansion.  If the
-`>(LIST)' form is used, writing to the file will provide input for
-LIST.  If the `<(LIST)' form is used, the file passed as an argument
-should be read to obtain the output of LIST.  Note that no space may
-appear between the `<' or `>' and the left parenthesis, otherwise the
-construct would be interpreted as a redirection.
-
-   When available, process substitution is performed simultaneously with
-parameter and variable expansion, command substitution, and arithmetic
-expansion.
-
-\1f
-File: bash.info,  Node: Word Splitting,  Next: Filename Expansion,  Prev: Process Substitution,  Up: Shell Expansions
-
-3.5.7 Word Splitting
---------------------
-
-The shell scans the results of parameter expansion, command
-substitution, and arithmetic expansion that did not occur within double
-quotes for word splitting.
-
-   The shell treats each character of `$IFS' as a delimiter, and splits
-the results of the other expansions into words using these characters
-as field terminators.  If `IFS' is unset, or its value is exactly
-`<space><tab><newline>', the default, then sequences of ` <space>',
-`<tab>', and `<newline>' at the beginning and end of the results of the
-previous expansions are ignored, and any sequence of `IFS' characters
-not at the beginning or end serves to delimit words.  If `IFS' has a
-value other than the default, then sequences of the whitespace
-characters `space' and `tab' are ignored at the beginning and end of the
-word, as long as the whitespace character is in the value of `IFS' (an
-`IFS' whitespace character).  Any character in `IFS' that is not `IFS'
-whitespace, along with any adjacent `IFS' whitespace characters,
-delimits a field.  A sequence of `IFS' whitespace characters is also
-treated as a delimiter.  If the value of `IFS' is null, no word
-splitting occurs.
-
-   Explicit null arguments (`""' or `''') are retained.  Unquoted
-implicit null arguments, resulting from the expansion of parameters
-that have no values, are removed.  If a parameter with no value is
-expanded within double quotes, a null argument results and is retained.
-
-   Note that if no expansion occurs, no splitting is performed.
-
-\1f
-File: bash.info,  Node: Filename Expansion,  Next: Quote Removal,  Prev: Word Splitting,  Up: Shell Expansions
-
-3.5.8 Filename Expansion
-------------------------
-
-* Menu:
-
-* Pattern Matching::   How the shell matches patterns.
-
-   After word splitting, unless the `-f' option has been set (*note The
-Set Builtin::), Bash scans each word for the characters `*', `?', and
-`['.  If one of these characters appears, then the word is regarded as
-a PATTERN, and replaced with an alphabetically sorted list of filenames
-matching the pattern (*note Pattern Matching::).  If no matching
-filenames are found, and the shell option `nullglob' is disabled, the
-word is left unchanged.  If the `nullglob' option is set, and no
-matches are found, the word is removed.  If the `failglob' shell option
-is set, and no matches are found, an error message is printed and the
-command is not executed.  If the shell option `nocaseglob' is enabled,
-the match is performed without regard to the case of alphabetic
-characters.
-
-   When a pattern is used for filename expansion, the character `.' at
-the start of a filename or immediately following a slash must be
-matched explicitly, unless the shell option `dotglob' is set.  When
-matching a filename, the slash character must always be matched
-explicitly.  In other cases, the `.' character is not treated specially.
-
-   See the description of `shopt' in *note The Shopt Builtin::, for a
-description of the `nocaseglob', `nullglob', `failglob', and `dotglob'
-options.
-
-   The `GLOBIGNORE' shell variable may be used to restrict the set of
-filenames matching a pattern.  If `GLOBIGNORE' is set, each matching
-filename that also matches one of the patterns in `GLOBIGNORE' is
-removed from the list of matches.  The filenames `.' and `..' are
-always ignored when `GLOBIGNORE' is set and not null.  However, setting
-`GLOBIGNORE' to a non-null value has the effect of enabling the
-`dotglob' shell option, so all other filenames beginning with a `.'
-will match.  To get the old behavior of ignoring filenames beginning
-with a `.', make `.*' one of the patterns in `GLOBIGNORE'.  The
-`dotglob' option is disabled when `GLOBIGNORE' is unset.
-
-\1f
-File: bash.info,  Node: Pattern Matching,  Up: Filename Expansion
-
-3.5.8.1 Pattern Matching
-........................
-
-Any character that appears in a pattern, other than the special pattern
-characters described below, matches itself.  The NUL character may not
-occur in a pattern.  A backslash escapes the following character; the
-escaping backslash is discarded when matching.  The special pattern
-characters must be quoted if they are to be matched literally.
-
-   The special pattern characters have the following meanings:
-`*'
-     Matches any string, including the null string.  When the
-     `globstar' shell option is enabled, and `*' is used in a filename
-     expansion context, two adjacent `*'s used as a single pattern will
-     match all files and zero or more directories and subdirectories.
-     If followed by a `/', two adjacent `*'s will match only
-     directories and subdirectories.
-
-`?'
-     Matches any single character.
-
-`[...]'
-     Matches any one of the enclosed characters.  A pair of characters
-     separated by a hyphen denotes a RANGE EXPRESSION; any character
-     that falls between those two characters, inclusive, using the
-     current locale's collating sequence and character set, is matched.
-     If the first character following the `[' is a `!'  or a `^' then
-     any character not enclosed is matched.  A `-' may be matched by
-     including it as the first or last character in the set.  A `]' may
-     be matched by including it as the first character in the set.  The
-     sorting order of characters in range expressions is determined by
-     the current locale and the values of the `LC_COLLATE' and `LC_ALL'
-     shell variables, if set.
-
-     For example, in the default C locale, `[a-dx-z]' is equivalent to
-     `[abcdxyz]'.  Many locales sort characters in dictionary order,
-     and in these locales `[a-dx-z]' is typically not equivalent to
-     `[abcdxyz]'; it might be equivalent to `[aBbCcDdxXyYz]', for
-     example.  To obtain the traditional interpretation of ranges in
-     bracket expressions, you can force the use of the C locale by
-     setting the `LC_COLLATE' or `LC_ALL' environment variable to the
-     value `C', or enable the `globasciiranges' shell option.
-
-     Within `[' and `]', CHARACTER CLASSES can be specified using the
-     syntax `[:'CLASS`:]', where CLASS is one of the following classes
-     defined in the POSIX standard:
-          alnum   alpha   ascii   blank   cntrl   digit   graph   lower
-          print   punct   space   upper   word    xdigit
-     A character class matches any character belonging to that class.
-     The `word' character class matches letters, digits, and the
-     character `_'.
-
-     Within `[' and `]', an EQUIVALENCE CLASS can be specified using
-     the syntax `[='C`=]', which matches all characters with the same
-     collation weight (as defined by the current locale) as the
-     character C.
-
-     Within `[' and `]', the syntax `[.'SYMBOL`.]' matches the
-     collating symbol SYMBOL.
-
-   If the `extglob' shell option is enabled using the `shopt' builtin,
-several extended pattern matching operators are recognized.  In the
-following description, a PATTERN-LIST is a list of one or more patterns
-separated by a `|'.  Composite patterns may be formed using one or more
-of the following sub-patterns:
-
-`?(PATTERN-LIST)'
-     Matches zero or one occurrence of the given patterns.
-
-`*(PATTERN-LIST)'
-     Matches zero or more occurrences of the given patterns.
-
-`+(PATTERN-LIST)'
-     Matches one or more occurrences of the given patterns.
-
-`@(PATTERN-LIST)'
-     Matches one of the given patterns.
-
-`!(PATTERN-LIST)'
-     Matches anything except one of the given patterns.
-
-\1f
-File: bash.info,  Node: Quote Removal,  Prev: Filename Expansion,  Up: Shell Expansions
-
-3.5.9 Quote Removal
--------------------
-
-After the preceding expansions, all unquoted occurrences of the
-characters `\', `'', and `"' that did not result from one of the above
-expansions are removed.
-
-\1f
-File: bash.info,  Node: Redirections,  Next: Executing Commands,  Prev: Shell Expansions,  Up: Basic Shell Features
-
-3.6 Redirections
-================
-
-Before a command is executed, its input and output may be REDIRECTED
-using a special notation interpreted by the shell.  Redirection allows
-commands' file handles to be duplicated, opened, closed, made to refer
-to different files, and can change the files the command reads from and
-writes to.  Redirection may also be used to modify file handles in the
-current shell execution environment.  The following redirection
-operators may precede or appear anywhere within a simple command or may
-follow a command.  Redirections are processed in the order they appear,
-from left to right.
-
-   Each redirection that may be preceded by a file descriptor number
-may instead be preceded by a word of the form {VARNAME}.  In this case,
-for each redirection operator except >&- and <&-, the shell will
-allocate a file descriptor greater than 10 and assign it to {VARNAME}.
-If >&- or <&- is preceded by {VARNAME}, the value of VARNAME defines
-the file descriptor to close.
-
-   In the following descriptions, if the file descriptor number is
-omitted, and the first character of the redirection operator is `<',
-the redirection refers to the standard input (file descriptor 0).  If
-the first character of the redirection operator is `>', the redirection
-refers to the standard output (file descriptor 1).
-
-   The word following the redirection operator in the following
-descriptions, unless otherwise noted, is subjected to brace expansion,
-tilde expansion, parameter expansion, command substitution, arithmetic
-expansion, quote removal, filename expansion, and word splitting.  If
-it expands to more than one word, Bash reports an error.
-
-   Note that the order of redirections is significant.  For example,
-the command
-     ls > DIRLIST 2>&1
-   directs both standard output (file descriptor 1) and standard error
-(file descriptor 2) to the file DIRLIST, while the command
-     ls 2>&1 > DIRLIST
-   directs only the standard output to file DIRLIST, because the
-standard error was made a copy of the standard output before the
-standard output was redirected to DIRLIST.
-
-   Bash handles several filenames specially when they are used in
-redirections, as described in the following table:
-
-`/dev/fd/FD'
-     If FD is a valid integer, file descriptor FD is duplicated.
-
-`/dev/stdin'
-     File descriptor 0 is duplicated.
-
-`/dev/stdout'
-     File descriptor 1 is duplicated.
-
-`/dev/stderr'
-     File descriptor 2 is duplicated.
-
-`/dev/tcp/HOST/PORT'
-     If HOST is a valid hostname or Internet address, and PORT is an
-     integer port number or service name, Bash attempts to open the
-     corresponding TCP socket.
-
-`/dev/udp/HOST/PORT'
-     If HOST is a valid hostname or Internet address, and PORT is an
-     integer port number or service name, Bash attempts to open the
-     corresponding UDP socket.
-
-   A failure to open or create a file causes the redirection to fail.
-
-   Redirections using file descriptors greater than 9 should be used
-with care, as they may conflict with file descriptors the shell uses
-internally.
-
-3.6.1 Redirecting Input
------------------------
-
-Redirection of input causes the file whose name results from the
-expansion of WORD to be opened for reading on file descriptor `n', or
-the standard input (file descriptor 0) if `n' is not specified.
-
-   The general format for redirecting input is:
-     [N]<WORD
-
-3.6.2 Redirecting Output
-------------------------
-
-Redirection of output causes the file whose name results from the
-expansion of WORD to be opened for writing on file descriptor N, or the
-standard output (file descriptor 1) if N is not specified.  If the file
-does not exist it is created; if it does exist it is truncated to zero
-size.
-
-   The general format for redirecting output is:
-     [N]>[|]WORD
-
-   If the redirection operator is `>', and the `noclobber' option to
-the `set' builtin has been enabled, the redirection will fail if the
-file whose name results from the expansion of WORD exists and is a
-regular file.  If the redirection operator is `>|', or the redirection
-operator is `>' and the `noclobber' option is not enabled, the
-redirection is attempted even if the file named by WORD exists.
-
-3.6.3 Appending Redirected Output
----------------------------------
-
-Redirection of output in this fashion causes the file whose name
-results from the expansion of WORD to be opened for appending on file
-descriptor N, or the standard output (file descriptor 1) if N is not
-specified.  If the file does not exist it is created.
-
-   The general format for appending output is:
-     [N]>>WORD
-
-3.6.4 Redirecting Standard Output and Standard Error
-----------------------------------------------------
-
-This construct allows both the standard output (file descriptor 1) and
-the standard error output (file descriptor 2) to be redirected to the
-file whose name is the expansion of WORD.
-
-   There are two formats for redirecting standard output and standard
-error:
-     &>WORD
-   and
-     >&WORD
-   Of the two forms, the first is preferred.  This is semantically
-equivalent to
-     >WORD 2>&1
-   When using the second form, WORD may not expand to a number or `-'.
-If it does, other redirection operators apply (see Duplicating File
-Descriptors below) for compatibility reasons.
-
-3.6.5 Appending Standard Output and Standard Error
---------------------------------------------------
-
-This construct allows both the standard output (file descriptor 1) and
-the standard error output (file descriptor 2) to be appended to the
-file whose name is the expansion of WORD.
-
-   The format for appending standard output and standard error is:
-     &>>WORD
-   This is semantically equivalent to
-     >>WORD 2>&1
-   (see Duplicating File Descriptors below).
-
-3.6.6 Here Documents
---------------------
-
-This type of redirection instructs the shell to read input from the
-current source until a line containing only WORD (with no trailing
-blanks) is seen.  All of the lines read up to that point are then used
-as the standard input for a command.
-
-   The format of here-documents is:
-     <<[-]WORD
-             HERE-DOCUMENT
-     DELIMITER
-
-   No parameter and variable expansion, command substitution,
-arithmetic expansion, or filename expansion is performed on WORD.  If
-any characters in WORD are quoted, the DELIMITER is the result of quote
-removal on WORD, and the lines in the here-document are not expanded.
-If WORD is unquoted, all lines of the here-document are subjected to
-parameter expansion, command substitution, and arithmetic expansion,
-the character sequence `\newline' is ignored, and `\' must be used to
-quote the characters `\', `$', and ``'.
-
-   If the redirection operator is `<<-', then all leading tab
-characters are stripped from input lines and the line containing
-DELIMITER.  This allows here-documents within shell scripts to be
-indented in a natural fashion.
-
-3.6.7 Here Strings
-------------------
-
-A variant of here documents, the format is:
-     <<< WORD
-
-   The WORD undergoes brace expansion, tilde expansion, parameter and
-variable expansion, command substitution, arithmetic expansion, and
-quote removal.  Pathname expansion and word splitting are not performed.
-The result is supplied as a single string to the command on its
-standard input.
-
-3.6.8 Duplicating File Descriptors
-----------------------------------
-
-The redirection operator
-     [N]<&WORD
-   is used to duplicate input file descriptors.  If WORD expands to one
-or more digits, the file descriptor denoted by N is made to be a copy
-of that file descriptor.  If the digits in WORD do not specify a file
-descriptor open for input, a redirection error occurs.  If WORD
-evaluates to `-', file descriptor N is closed.  If N is not specified,
-the standard input (file descriptor 0) is used.
-
-   The operator
-     [N]>&WORD
-   is used similarly to duplicate output file descriptors.  If N is not
-specified, the standard output (file descriptor 1) is used.  If the
-digits in WORD do not specify a file descriptor open for output, a
-redirection error occurs.  If WORD evaluates to `-', file descriptor N
-is closed.  As a special case, if N is omitted, and WORD does not
-expand to one or more digits or `-', the standard output and standard
-error are redirected as described previously.
-
-3.6.9 Moving File Descriptors
------------------------------
-
-The redirection operator
-     [N]<&DIGIT-
-   moves the file descriptor DIGIT to file descriptor N, or the
-standard input (file descriptor 0) if N is not specified.  DIGIT is
-closed after being duplicated to N.
-
-   Similarly, the redirection operator
-     [N]>&DIGIT-
-   moves the file descriptor DIGIT to file descriptor N, or the
-standard output (file descriptor 1) if N is not specified.
-
-3.6.10 Opening File Descriptors for Reading and Writing
--------------------------------------------------------
-
-The redirection operator
-     [N]<>WORD
-   causes the file whose name is the expansion of WORD to be opened for
-both reading and writing on file descriptor N, or on file descriptor 0
-if N is not specified.  If the file does not exist, it is created.
-
-\1f
-File: bash.info,  Node: Executing Commands,  Next: Shell Scripts,  Prev: Redirections,  Up: Basic Shell Features
-
-3.7 Executing Commands
-======================
-
-* Menu:
-
-* Simple Command Expansion::   How Bash expands simple commands before
-                               executing them.
-* Command Search and Execution::       How Bash finds commands and runs them.
-* Command Execution Environment::      The environment in which Bash
-                                       executes commands that are not
-                                       shell builtins.
-* Environment::                The environment given to a command.
-* Exit Status::                The status returned by commands and how Bash
-                       interprets it.
-* Signals::            What happens when Bash or a command it runs
-                       receives a signal.
-
-\1f
-File: bash.info,  Node: Simple Command Expansion,  Next: Command Search and Execution,  Up: Executing Commands
-
-3.7.1 Simple Command Expansion
-------------------------------
-
-When a simple command is executed, the shell performs the following
-expansions, assignments, and redirections, from left to right.
-
-  1. The words that the parser has marked as variable assignments (those
-     preceding the command name) and redirections are saved for later
-     processing.
-
-  2. The words that are not variable assignments or redirections are
-     expanded (*note Shell Expansions::).  If any words remain after
-     expansion, the first word is taken to be the name of the command
-     and the remaining words are the arguments.
-
-  3. Redirections are performed as described above (*note
-     Redirections::).
-
-  4. The text after the `=' in each variable assignment undergoes tilde
-     expansion, parameter expansion, command substitution, arithmetic
-     expansion, and quote removal before being assigned to the variable.
-
-   If no command name results, the variable assignments affect the
-current shell environment.  Otherwise, the variables are added to the
-environment of the executed command and do not affect the current shell
-environment.  If any of the assignments attempts to assign a value to a
-readonly variable, an error occurs, and the command exits with a
-non-zero status.
-
-   If no command name results, redirections are performed, but do not
-affect the current shell environment.  A redirection error causes the
-command to exit with a non-zero status.
-
-   If there is a command name left after expansion, execution proceeds
-as described below.  Otherwise, the command exits.  If one of the
-expansions contained a command substitution, the exit status of the
-command is the exit status of the last command substitution performed.
-If there were no command substitutions, the command exits with a status
-of zero.
-
-\1f
-File: bash.info,  Node: Command Search and Execution,  Next: Command Execution Environment,  Prev: Simple Command Expansion,  Up: Executing Commands
-
-3.7.2 Command Search and Execution
-----------------------------------
-
-After a command has been split into words, if it results in a simple
-command and an optional list of arguments, the following actions are
-taken.
-
-  1. If the command name contains no slashes, the shell attempts to
-     locate it.  If there exists a shell function by that name, that
-     function is invoked as described in *note Shell Functions::.
-
-  2. If the name does not match a function, the shell searches for it
-     in the list of shell builtins.  If a match is found, that builtin
-     is invoked.
-
-  3. If the name is neither a shell function nor a builtin, and
-     contains no slashes, Bash searches each element of `$PATH' for a
-     directory containing an executable file by that name.  Bash uses a
-     hash table to remember the full pathnames of executable files to
-     avoid multiple `PATH' searches (see the description of `hash' in
-     *note Bourne Shell Builtins::).  A full search of the directories
-     in `$PATH' is performed only if the command is not found in the
-     hash table.  If the search is unsuccessful, the shell searches for
-     a defined shell function named `command_not_found_handle'.  If
-     that function exists, it is invoked with the original command and
-     the original command's arguments as its arguments, and the
-     function's exit status becomes the exit status of the shell.  If
-     that function is not defined, the shell prints an error message
-     and returns an exit status of 127.
-
-  4. If the search is successful, or if the command name contains one
-     or more slashes, the shell executes the named program in a
-     separate execution environment.  Argument 0 is set to the name
-     given, and the remaining arguments to the command are set to the
-     arguments supplied, if any.
-
-  5. If this execution fails because the file is not in executable
-     format, and the file is not a directory, it is assumed to be a
-     SHELL SCRIPT and the shell executes it as described in *note Shell
-     Scripts::.
-
-  6. If the command was not begun asynchronously, the shell waits for
-     the command to complete and collects its exit status.
-
-
-\1f
-File: bash.info,  Node: Command Execution Environment,  Next: Environment,  Prev: Command Search and Execution,  Up: Executing Commands
-
-3.7.3 Command Execution Environment
------------------------------------
-
-The shell has an EXECUTION ENVIRONMENT, which consists of the following:
-
-   * open files inherited by the shell at invocation, as modified by
-     redirections supplied to the `exec' builtin
-
-   * the current working directory as set by `cd', `pushd', or `popd',
-     or inherited by the shell at invocation
-
-   * the file creation mode mask as set by `umask' or inherited from
-     the shell's parent
-
-   * current traps set by `trap'
-
-   * shell parameters that are set by variable assignment or with `set'
-     or inherited from the shell's parent in the environment
-
-   * shell functions defined during execution or inherited from the
-     shell's parent in the environment
-
-   * options enabled at invocation (either by default or with
-     command-line arguments) or by `set'
-
-   * options enabled by `shopt' (*note The Shopt Builtin::)
-
-   * shell aliases defined with `alias' (*note Aliases::)
-
-   * various process IDs, including those of background jobs (*note
-     Lists::), the value of `$$', and the value of `$PPID'
-
-
-   When a simple command other than a builtin or shell function is to
-be executed, it is invoked in a separate execution environment that
-consists of the following.  Unless otherwise noted, the values are
-inherited from the shell.
-
-   * the shell's open files, plus any modifications and additions
-     specified by redirections to the command
-
-   * the current working directory
-
-   * the file creation mode mask
-
-   * shell variables and functions marked for export, along with
-     variables exported for the command, passed in the environment
-     (*note Environment::)
-
-   * traps caught by the shell are reset to the values inherited from
-     the shell's parent, and traps ignored by the shell are ignored
-
-
-   A command invoked in this separate environment cannot affect the
-shell's execution environment.
-
-   Command substitution, commands grouped with parentheses, and
-asynchronous commands are invoked in a subshell environment that is a
-duplicate of the shell environment, except that traps caught by the
-shell are reset to the values that the shell inherited from its parent
-at invocation.  Builtin commands that are invoked as part of a pipeline
-are also executed in a subshell environment.  Changes made to the
-subshell environment cannot affect the shell's execution environment.
-
-   Subshells spawned to execute command substitutions inherit the value
-of the `-e' option from the parent shell.  When not in POSIX mode, Bash
-clears the `-e' option in such subshells.
-
-   If a command is followed by a `&' and job control is not active, the
-default standard input for the command is the empty file `/dev/null'.
-Otherwise, the invoked command inherits the file descriptors of the
-calling shell as modified by redirections.
-
-\1f
-File: bash.info,  Node: Environment,  Next: Exit Status,  Prev: Command Execution Environment,  Up: Executing Commands
-
-3.7.4 Environment
------------------
-
-When a program is invoked it is given an array of strings called the
-ENVIRONMENT.  This is a list of name-value pairs, of the form
-`name=value'.
-
-   Bash provides several ways to manipulate the environment.  On
-invocation, the shell scans its own environment and creates a parameter
-for each name found, automatically marking it for EXPORT to child
-processes.  Executed commands inherit the environment.  The `export'
-and `declare -x' commands allow parameters and functions to be added to
-and deleted from the environment.  If the value of a parameter in the
-environment is modified, the new value becomes part of the environment,
-replacing the old.  The environment inherited by any executed command
-consists of the shell's initial environment, whose values may be
-modified in the shell, less any pairs removed by the `unset' and
-`export -n' commands, plus any additions via the `export' and `declare
--x' commands.
-
-   The environment for any simple command or function may be augmented
-temporarily by prefixing it with parameter assignments, as described in
-*note Shell Parameters::.  These assignment statements affect only the
-environment seen by that command.
-
-   If the `-k' option is set (*note The Set Builtin::), then all
-parameter assignments are placed in the environment for a command, not
-just those that precede the command name.
-
-   When Bash invokes an external command, the variable `$_' is set to
-the full pathname of the command and passed to that command in its
-environment.
-
-\1f
-File: bash.info,  Node: Exit Status,  Next: Signals,  Prev: Environment,  Up: Executing Commands
-
-3.7.5 Exit Status
------------------
-
-The exit status of an executed command is the value returned by the
-WAITPID system call or equivalent function.  Exit statuses fall between
-0 and 255, though, as explained below, the shell may use values above
-125 specially.  Exit statuses from shell builtins and compound commands
-are also limited to this range.  Under certain circumstances, the shell
-will use special values to indicate specific failure modes.
-
-   For the shell's purposes, a command which exits with a zero exit
-status has succeeded.  A non-zero exit status indicates failure.  This
-seemingly counter-intuitive scheme is used so there is one well-defined
-way to indicate success and a variety of ways to indicate various
-failure modes.  When a command terminates on a fatal signal whose
-number is N, Bash uses the value 128+N as the exit status.
-
-   If a command is not found, the child process created to execute it
-returns a status of 127.  If a command is found but is not executable,
-the return status is 126.
-
-   If a command fails because of an error during expansion or
-redirection, the exit status is greater than zero.
-
-   The exit status is used by the Bash conditional commands (*note
-Conditional Constructs::) and some of the list constructs (*note
-Lists::).
-
-   All of the Bash builtins return an exit status of zero if they
-succeed and a non-zero status on failure, so they may be used by the
-conditional and list constructs.  All builtins return an exit status of
-2 to indicate incorrect usage, generally invalid options or missing
-arguments.
-
-\1f
-File: bash.info,  Node: Signals,  Prev: Exit Status,  Up: Executing Commands
-
-3.7.6 Signals
--------------
-
-When Bash is interactive, in the absence of any traps, it ignores
-`SIGTERM' (so that `kill 0' does not kill an interactive shell), and
-`SIGINT' is caught and handled (so that the `wait' builtin is
-interruptible).  When Bash receives a `SIGINT', it breaks out of any
-executing loops.  In all cases, Bash ignores `SIGQUIT'.  If job control
-is in effect (*note Job Control::), Bash ignores `SIGTTIN', `SIGTTOU',
-and `SIGTSTP'.
-
-   Non-builtin commands started by Bash have signal handlers set to the
-values inherited by the shell from its parent.  When job control is not
-in effect, asynchronous commands ignore `SIGINT' and `SIGQUIT' in
-addition to these inherited handlers.  Commands run as a result of
-command substitution ignore the keyboard-generated job control signals
-`SIGTTIN', `SIGTTOU', and `SIGTSTP'.
-
-   The shell exits by default upon receipt of a `SIGHUP'.  Before
-exiting, an interactive shell resends the `SIGHUP' to all jobs, running
-or stopped.  Stopped jobs are sent `SIGCONT' to ensure that they receive
-the `SIGHUP'.  To prevent the shell from sending the `SIGHUP' signal to
-a particular job, it should be removed from the jobs table with the
-`disown' builtin (*note Job Control Builtins::) or marked to not
-receive `SIGHUP' using `disown -h'.
-
-   If the  `huponexit' shell option has been set with `shopt' (*note
-The Shopt Builtin::), Bash sends a `SIGHUP' to all jobs when an
-interactive login shell exits.
-
-   If Bash is waiting for a command to complete and receives a signal
-for which a trap has been set, the trap will not be executed until the
-command completes.  When Bash is waiting for an asynchronous command
-via the `wait' builtin, the reception of a signal for which a trap has
-been set will cause the `wait' builtin to return immediately with an
-exit status greater than 128, immediately after which the trap is
-executed.
-
-\1f
-File: bash.info,  Node: Shell Scripts,  Prev: Executing Commands,  Up: Basic Shell Features
-
-3.8 Shell Scripts
-=================
-
-A shell script is a text file containing shell commands.  When such a
-file is used as the first non-option argument when invoking Bash, and
-neither the `-c' nor `-s' option is supplied (*note Invoking Bash::),
-Bash reads and executes commands from the file, then exits.  This mode
-of operation creates a non-interactive shell.  The shell first searches
-for the file in the current directory, and looks in the directories in
-`$PATH' if not found there.
-
-   When Bash runs a shell script, it sets the special parameter `0' to
-the name of the file, rather than the name of the shell, and the
-positional parameters are set to the remaining arguments, if any are
-given.  If no additional arguments are supplied, the positional
-parameters are unset.
-
-   A shell script may be made executable by using the `chmod' command
-to turn on the execute bit.  When Bash finds such a file while
-searching the `$PATH' for a command, it spawns a subshell to execute
-it.  In other words, executing
-     filename ARGUMENTS
-   is equivalent to executing
-     bash filename ARGUMENTS
-
-if `filename' is an executable shell script.  This subshell
-reinitializes itself, so that the effect is as if a new shell had been
-invoked to interpret the script, with the exception that the locations
-of commands remembered by the parent (see the description of `hash' in
-*note Bourne Shell Builtins::) are retained by the child.
-
-   Most versions of Unix make this a part of the operating system's
-command execution mechanism.  If the first line of a script begins with
-the two characters `#!', the remainder of the line specifies an
-interpreter for the program.  Thus, you can specify Bash, `awk', Perl,
-or some other interpreter and write the rest of the script file in that
-language.
-
-   The arguments to the interpreter consist of a single optional
-argument following the interpreter name on the first line of the script
-file, followed by the name of the script file, followed by the rest of
-the arguments.  Bash will perform this action on operating systems that
-do not handle it themselves.  Note that some older versions of Unix
-limit the interpreter name and argument to a maximum of 32 characters.
-
-   Bash scripts often begin with `#! /bin/bash' (assuming that Bash has
-been installed in `/bin'), since this ensures that Bash will be used to
-interpret the script, even if it is executed under another shell.
-
-\1f
-File: bash.info,  Node: Shell Builtin Commands,  Next: Shell Variables,  Prev: Basic Shell Features,  Up: Top
-
-4 Shell Builtin Commands
-************************
-
-* Menu:
-
-* Bourne Shell Builtins::      Builtin commands inherited from the Bourne
-                               Shell.
-* Bash Builtins::              Table of builtins specific to Bash.
-* Modifying Shell Behavior::   Builtins to modify shell attributes and
-                               optional behavior.
-* Special Builtins::           Builtin commands classified specially by
-                               POSIX.
-
-   Builtin commands are contained within the shell itself.  When the
-name of a builtin command is used as the first word of a simple command
-(*note Simple Commands::), the shell executes the command directly,
-without invoking another program.  Builtin commands are necessary to
-implement functionality impossible or inconvenient to obtain with
-separate utilities.
-
-   This section briefly describes the builtins which Bash inherits from
-the Bourne Shell, as well as the builtin commands which are unique to
-or have been extended in Bash.
-
-   Several builtin commands are described in other chapters: builtin
-commands which provide the Bash interface to the job control facilities
-(*note Job Control Builtins::), the directory stack (*note Directory
-Stack Builtins::), the command history (*note Bash History Builtins::),
-and the programmable completion facilities (*note Programmable
-Completion Builtins::).
-
-   Many of the builtins have been extended by POSIX or Bash.
-
-   Unless otherwise noted, each builtin command documented as accepting
-options preceded by `-' accepts `--' to signify the end of the options.
-The `:', `true', `false', and `test' builtins do not accept options and
-do not treat `--' specially.  The `exit', `logout', `break',
-`continue', `let', and `shift' builtins accept and process arguments
-beginning with `-' without requiring `--'.  Other builtins that accept
-arguments but are not specified as accepting options interpret
-arguments beginning with `-' as invalid options and require `--' to
-prevent this interpretation.
-
-\1f
-File: bash.info,  Node: Bourne Shell Builtins,  Next: Bash Builtins,  Up: Shell Builtin Commands
-
-4.1 Bourne Shell Builtins
-=========================
-
-The following shell builtin commands are inherited from the Bourne
-Shell.  These commands are implemented as specified by the POSIX
-standard.
-
-`:    (a colon)'
-          : [ARGUMENTS]
-
-     Do nothing beyond expanding ARGUMENTS and performing redirections.
-     The return status is zero.
-
-`.    (a period)'
-          . FILENAME [ARGUMENTS]
-
-     Read and execute commands from the FILENAME argument in the
-     current shell context.  If FILENAME does not contain a slash, the
-     `PATH' variable is used to find FILENAME.  When Bash is not in
-     POSIX mode, the current directory is searched if FILENAME is not
-     found in `$PATH'.  If any ARGUMENTS are supplied, they become the
-     positional parameters when FILENAME is executed.  Otherwise the
-     positional parameters are unchanged.  The return status is the
-     exit status of the last command executed, or zero if no commands
-     are executed.  If FILENAME is not found, or cannot be read, the
-     return status is non-zero.  This builtin is equivalent to `source'.
-
-`break'
-          break [N]
-
-     Exit from a `for', `while', `until', or `select' loop.  If N is
-     supplied, the Nth enclosing loop is exited.  N must be greater
-     than or equal to 1.  The return status is zero unless N is not
-     greater than or equal to 1.
-
-`cd'
-          cd [-L|[-P [-e]] [-@] [DIRECTORY]
-
-     Change the current working directory to DIRECTORY.  If DIRECTORY
-     is not supplied, the value of the `HOME' shell variable is used.
-     Any additional arguments following DIRECTORY are ignored.  If the
-     shell variable `CDPATH' exists, it is used as a search path: each
-     directory name in `CDPATH' is searched for DIRECTORY, with
-     alternative directory names in `CDPATH' separated by a colon (`:').
-     If DIRECTORY begins with a slash, `CDPATH' is not used.
-
-     The `-P' option means to not follow symbolic links: symbolic links
-     are resolved while `cd' is traversing DIRECTORY and before
-     processing an instance of `..' in DIRECTORY.
-
-     By default, or when the `-L' option is supplied, symbolic links in
-     DIRECTORY are resolved after `cd' processes an instance of `..' in
-     DIRECTORY.
-
-     If `..' appears in DIRECTORY, it is processed by removing the
-     immediately preceding pathname component, back to a slash or the
-     beginning of DIRECTORY.
-
-     If the `-e' option is supplied with `-P' and the current working
-     directory cannot be successfully determined after a successful
-     directory change, `cd' will return an unsuccessful status.
-
-     On systems that support it, the `-@' option presents the extended
-     attributes associated with a file as a directory.
-
-     If DIRECTORY is `-', it is converted to `$OLDPWD' before the
-     directory change is attempted.
-
-     If a non-empty directory name from `CDPATH' is used, or if `-' is
-     the first argument, and the directory change is successful, the
-     absolute pathname of the new working directory is written to the
-     standard output.
-
-     The return status is zero if the directory is successfully changed,
-     non-zero otherwise.
-
-`continue'
-          continue [N]
-
-     Resume the next iteration of an enclosing `for', `while', `until',
-     or `select' loop.  If N is supplied, the execution of the Nth
-     enclosing loop is resumed.  N must be greater than or equal to 1.
-     The return status is zero unless N is not greater than or equal to
-     1.
-
-`eval'
-          eval [ARGUMENTS]
-
-     The arguments are concatenated together into a single command,
-     which is then read and executed, and its exit status returned as
-     the exit status of `eval'.  If there are no arguments or only
-     empty arguments, the return status is zero.
-
-`exec'
-          exec [-cl] [-a NAME] [COMMAND [ARGUMENTS]]
-
-     If COMMAND is supplied, it replaces the shell without creating a
-     new process.  If the `-l' option is supplied, the shell places a
-     dash at the beginning of the zeroth argument passed to COMMAND.
-     This is what the `login' program does.  The `-c' option causes
-     COMMAND to be executed with an empty environment.  If `-a' is
-     supplied, the shell passes NAME as the zeroth argument to COMMAND.
-     If COMMAND cannot be executed for some reason, a non-interactive
-     shell exits, unless the `execfail' shell option is enabled.  In
-     that case, it returns failure.  An interactive shell returns
-     failure if the file cannot be executed.  If no COMMAND is
-     specified, redirections may be used to affect the current shell
-     environment.  If there are no redirection errors, the return
-     status is zero; otherwise the return status is non-zero.
-
-`exit'
-          exit [N]
-
-     Exit the shell, returning a status of N to the shell's parent.  If
-     N is omitted, the exit status is that of the last command executed.
-     Any trap on `EXIT' is executed before the shell terminates.
-
-`export'
-          export [-fn] [-p] [NAME[=VALUE]]
-
-     Mark each NAME to be passed to child processes in the environment.
-     If the `-f' option is supplied, the NAMEs refer to shell
-     functions; otherwise the names refer to shell variables.  The `-n'
-     option means to no longer mark each NAME for export.  If no NAMES
-     are supplied, or if the `-p' option is given, a list of names of
-     all exported variables is displayed.  The `-p' option displays
-     output in a form that may be reused as input.  If a variable name
-     is followed by =VALUE, the value of the variable is set to VALUE.
-
-     The return status is zero unless an invalid option is supplied,
-     one of the names is not a valid shell variable name, or `-f' is
-     supplied with a name that is not a shell function.
-
-`getopts'
-          getopts OPTSTRING NAME [ARGS]
-
-     `getopts' is used by shell scripts to parse positional parameters.
-     OPTSTRING contains the option characters to be recognized; if a
-     character is followed by a colon, the option is expected to have an
-     argument, which should be separated from it by whitespace.  The
-     colon (`:') and question mark (`?') may not be used as option
-     characters.  Each time it is invoked, `getopts' places the next
-     option in the shell variable NAME, initializing NAME if it does
-     not exist, and the index of the next argument to be processed into
-     the variable `OPTIND'.  `OPTIND' is initialized to 1 each time the
-     shell or a shell script is invoked.  When an option requires an
-     argument, `getopts' places that argument into the variable
-     `OPTARG'.  The shell does not reset `OPTIND' automatically; it
-     must be manually reset between multiple calls to `getopts' within
-     the same shell invocation if a new set of parameters is to be used.
-
-     When the end of options is encountered, `getopts' exits with a
-     return value greater than zero.  `OPTIND' is set to the index of
-     the first non-option argument, and NAME is set to `?'.
-
-     `getopts' normally parses the positional parameters, but if more
-     arguments are given in ARGS, `getopts' parses those instead.
-
-     `getopts' can report errors in two ways.  If the first character of
-     OPTSTRING is a colon, SILENT error reporting is used.  In normal
-     operation, diagnostic messages are printed when invalid options or
-     missing option arguments are encountered.  If the variable `OPTERR'
-     is set to 0, no error messages will be displayed, even if the first
-     character of `optstring' is not a colon.
-
-     If an invalid option is seen, `getopts' places `?' into NAME and,
-     if not silent, prints an error message and unsets `OPTARG'.  If
-     `getopts' is silent, the option character found is placed in
-     `OPTARG' and no diagnostic message is printed.
-
-     If a required argument is not found, and `getopts' is not silent,
-     a question mark (`?') is placed in NAME, `OPTARG' is unset, and a
-     diagnostic message is printed.  If `getopts' is silent, then a
-     colon (`:') is placed in NAME and `OPTARG' is set to the option
-     character found.
-
-`hash'
-          hash [-r] [-p FILENAME] [-dt] [NAME]
-
-     Each time `hash' is invoked, it remembers the full pathnames of the
-     commands specified as NAME arguments, so they need not be searched
-     for on subsequent invocations.  The commands are found by
-     searching through the directories listed in `$PATH'.  Any
-     previously-remembered pathname is discarded.  The `-p' option
-     inhibits the path search, and FILENAME is used as the location of
-     NAME.  The `-r' option causes the shell to forget all remembered
-     locations.  The `-d' option causes the shell to forget the
-     remembered location of each NAME.  If the `-t' option is supplied,
-     the full pathname to which each NAME corresponds is printed.  If
-     multiple NAME arguments are supplied with `-t' the NAME is printed
-     before the hashed full pathname.  The `-l' option causes output to
-     be displayed in a format that may be reused as input.  If no
-     arguments are given, or if only `-l' is supplied, information
-     about remembered commands is printed.  The return status is zero
-     unless a NAME is not found or an invalid option is supplied.
-
-`pwd'
-          pwd [-LP]
-
-     Print the absolute pathname of the current working directory.  If
-     the `-P' option is supplied, the pathname printed will not contain
-     symbolic links.  If the `-L' option is supplied, the pathname
-     printed may contain symbolic links.  The return status is zero
-     unless an error is encountered while determining the name of the
-     current directory or an invalid option is supplied.
-
-`readonly'
-          readonly [-aAf] [-p] [NAME[=VALUE]] ...
-
-     Mark each NAME as readonly.  The values of these names may not be
-     changed by subsequent assignment.  If the `-f' option is supplied,
-     each NAME refers to a shell function.  The `-a' option means each
-     NAME refers to an indexed array variable; the `-A' option means
-     each NAME refers to an associative array variable.  If both
-     options are supplied, `-A' takes precedence.  If no NAME arguments
-     are given, or if the `-p' option is supplied, a list of all
-     readonly names is printed.  The other options may be used to
-     restrict the output to a subset of the set of readonly names.  The
-     `-p' option causes output to be displayed in a format that may be
-     reused as input.  If a variable name is followed by =VALUE, the
-     value of the variable is set to VALUE.  The return status is zero
-     unless an invalid option is supplied, one of the NAME arguments is
-     not a valid shell variable or function name, or the `-f' option is
-     supplied with a name that is not a shell function.
-
-`return'
-          return [N]
-
-     Cause a shell function to stop executing and return the value N to
-     its caller.  If N is not supplied, the return value is the exit
-     status of the last command executed in the function.  If `return'
-     is executed by a trap handler, the last command used to determine
-     the status is the last command executed before the trap handler.
-     if `return' is executed during a `DEBUG' trap, the last command
-     used to determine the status is the last command executed by the
-     trap handler before `return' was invoked.  `return' may also be
-     used to terminate execution of a script being executed with the
-     `.' (`source') builtin, returning either N or the exit status of
-     the last command executed within the script as the exit status of
-     the script.  If N is supplied, the return value is its least
-     significant 8 bits.  Any command associated with the `RETURN' trap
-     is executed before execution resumes after the function or script.
-     The return status is non-zero if `return' is supplied a non-numeric
-     argument or is used outside a function and not during the
-     execution of a script by `.' or `source'.
-
-`shift'
-          shift [N]
-
-     Shift the positional parameters to the left by N.  The positional
-     parameters from N+1 ... `$#' are renamed to `$1' ... `$#'-N.
-     Parameters represented by the numbers `$#' to `$#'-N+1 are unset.
-     N must be a non-negative number less than or equal to `$#'.  If N
-     is zero or greater than `$#', the positional parameters are not
-     changed.  If N is not supplied, it is assumed to be 1.  The return
-     status is zero unless N is greater than `$#' or less than zero,
-     non-zero otherwise.
-
-`test'
-`['
-          test EXPR
-
-     Evaluate a conditional express ion EXPR and return a status of 0
-     (true) or 1 (false).  Each operator and operand must be a separate
-     argument.  Expressions are composed of the primaries described
-     below in *note Bash Conditional Expressions::.  `test' does not
-     accept any options, nor does it accept and ignore an argument of
-     `--' as signifying the end of options.
-
-     When the `[' form is used, the last argument to the command must
-     be a `]'.
-
-     Expressions may be combined using the following operators, listed
-     in decreasing order of precedence.  The evaluation depends on the
-     number of arguments; see below.  Operator precedence is used when
-     there are five or more arguments.
-
-    `! EXPR'
-          True if EXPR is false.
-
-    `( EXPR )'
-          Returns the value of EXPR.  This may be used to override the
-          normal precedence of operators.
-
-    `EXPR1 -a EXPR2'
-          True if both EXPR1 and EXPR2 are true.
-
-    `EXPR1 -o EXPR2'
-          True if either EXPR1 or EXPR2 is true.
-
-     The `test' and `[' builtins evaluate conditional expressions using
-     a set of rules based on the number of arguments.
-
-    0 arguments
-          The expression is false.
-
-    1 argument
-          The expression is true if and only if the argument is not
-          null.
-
-    2 arguments
-          If the first argument is `!', the expression is true if and
-          only if the second argument is null.  If the first argument
-          is one of the unary conditional operators (*note Bash
-          Conditional Expressions::), the expression is true if the
-          unary test is true.  If the first argument is not a valid
-          unary operator, the expression is false.
-
-    3 arguments
-          The following conditions are applied in the order listed.  If
-          the second argument is one of the binary conditional
-          operators (*note Bash Conditional Expressions::), the result
-          of the expression is the result of the binary test using the
-          first and third arguments as operands.  The `-a' and `-o'
-          operators are considered binary operators when there are
-          three arguments.  If the first argument is `!', the value is
-          the negation of the two-argument test using the second and
-          third arguments.  If the first argument is exactly `(' and
-          the third argument is exactly `)', the result is the
-          one-argument test of the second argument.  Otherwise, the
-          expression is false.
-
-    4 arguments
-          If the first argument is `!', the result is the negation of
-          the three-argument expression composed of the remaining
-          arguments.  Otherwise, the expression is parsed and evaluated
-          according to precedence using the rules listed above.
-
-    5 or more arguments
-          The expression is parsed and evaluated according to precedence
-          using the rules listed above.
-
-     When used with `test' or `[', the `<' and `>' operators sort
-     lexicographically using ASCII ordering.
-
-`times'
-          times
-
-     Print out the user and system times used by the shell and its
-     children.  The return status is zero.
-
-`trap'
-          trap [-lp] [ARG] [SIGSPEC ...]
-
-     The commands in ARG are to be read and executed when the shell
-     receives signal SIGSPEC.  If ARG is absent (and there is a single
-     SIGSPEC) or equal to `-', each specified signal's disposition is
-     reset to the value it had when the shell was started.  If ARG is
-     the null string, then the signal specified by each SIGSPEC is
-     ignored by the shell and commands it invokes.  If ARG is not
-     present and `-p' has been supplied, the shell displays the trap
-     commands associated with each SIGSPEC.  If no arguments are
-     supplied, or only `-p' is given, `trap' prints the list of commands
-     associated with each signal number in a form that may be reused as
-     shell input.  The `-l' option causes the shell to print a list of
-     signal names and their corresponding numbers.  Each SIGSPEC is
-     either a signal name or a signal number.  Signal names are case
-     insensitive and the `SIG' prefix is optional.
-
-     If a SIGSPEC is `0' or `EXIT', ARG is executed when the shell
-     exits.  If a SIGSPEC is `DEBUG', the command ARG is executed
-     before every simple command, `for' command, `case' command,
-     `select' command, every arithmetic `for' command, and before the
-     first command executes in a shell function.  Refer to the
-     description of the `extdebug' option to the `shopt' builtin (*note
-     The Shopt Builtin::) for details of its effect on the `DEBUG' trap.
-     If a SIGSPEC is `RETURN', the command ARG is executed each time a
-     shell function or a script executed with the `.' or `source'
-     builtins finishes executing.
-
-     If a SIGSPEC is `ERR', the command ARG is executed whenever a
-     pipeline (which may consist of a single simple command), a list,
-     or a compound command returns a non-zero exit status, subject to
-     the following conditions.  The `ERR' trap is not executed if the
-     failed command is part of the command list immediately following
-     an `until' or `while' keyword, part of the test following the `if'
-     or `elif' reserved words, part of a command executed in a `&&' or
-     `||' list except the command following the final `&&' or `||', any
-     command in a pipeline but the last, or if the command's return
-     status is being inverted using `!'.  These are the same conditions
-     obeyed by the `errexit' (`-e') option.
-
-     Signals ignored upon entry to the shell cannot be trapped or reset.
-     Trapped signals that are not being ignored are reset to their
-     original values in a subshell or subshell environment when one is
-     created.
-
-     The return status is zero unless a SIGSPEC does not specify a
-     valid signal.
-
-`umask'
-          umask [-p] [-S] [MODE]
-
-     Set the shell process's file creation mask to MODE.  If MODE
-     begins with a digit, it is interpreted as an octal number; if not,
-     it is interpreted as a symbolic mode mask similar to that accepted
-     by the `chmod' command.  If MODE is omitted, the current value of
-     the mask is printed.  If the `-S' option is supplied without a
-     MODE argument, the mask is printed in a symbolic format.  If the
-     `-p' option is supplied, and MODE is omitted, the output is in a
-     form that may be reused as input.  The return status is zero if
-     the mode is successfully changed or if no MODE argument is
-     supplied, and non-zero otherwise.
-
-     Note that when the mode is interpreted as an octal number, each
-     number of the umask is subtracted from `7'.  Thus, a umask of `022'
-     results in permissions of `755'.
-
-`unset'
-          unset [-fnv] [NAME]
-
-     Remove each variable or function NAME.  If the `-v' option is
-     given, each NAME refers to a shell variable and that variable is
-     remvoved.  If the `-f' option is given, the NAMEs refer to shell
-     functions, and the function definition is removed.  If the `-n'
-     option is supplied, and NAME is a variable with the NAMEREF
-     attribute, NAME will be unset rather than the variable it
-     references.  `-n' has no effect if the `-f' option is supplied.
-     If no options are supplied, each NAME refers to a variable; if
-     there is no variable by that name, any function with that name is
-     unset.  Readonly variables and functions may not be unset.  The
-     return status is zero unless a NAME is readonly.
-
-\1f
-File: bash.info,  Node: Bash Builtins,  Next: Modifying Shell Behavior,  Prev: Bourne Shell Builtins,  Up: Shell Builtin Commands
-
-4.2 Bash Builtin Commands
-=========================
-
-This section describes builtin commands which are unique to or have
-been extended in Bash.  Some of these commands are specified in the
-POSIX standard.
-
-`alias'
-          alias [-p] [NAME[=VALUE] ...]
-
-     Without arguments or with the `-p' option, `alias' prints the list
-     of aliases on the standard output in a form that allows them to be
-     reused as input.  If arguments are supplied, an alias is defined
-     for each NAME whose VALUE is given.  If no VALUE is given, the name
-     and value of the alias is printed.  Aliases are described in *note
-     Aliases::.
-
-`bind'
-          bind [-m KEYMAP] [-lpsvPSVX]
-          bind [-m KEYMAP] [-q FUNCTION] [-u FUNCTION] [-r KEYSEQ]
-          bind [-m KEYMAP] -f FILENAME
-          bind [-m KEYMAP] -x KEYSEQ:SHELL-COMMAND
-          bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME
-          bind [-m KEYMAP] KEYSEQ:READLINE-COMMAND
-
-     Display current Readline (*note Command Line Editing::) key and
-     function bindings, bind a key sequence to a Readline function or
-     macro, or set a Readline variable.  Each non-option argument is a
-     command as it would appear in a Readline initialization file
-     (*note Readline Init File::), but each binding or command must be
-     passed as a separate argument;  e.g.,
-     `"\C-x\C-r":re-read-init-file'.
-
-     Options, if supplied, have the following meanings:
-
-    `-m KEYMAP'
-          Use KEYMAP as the keymap to be affected by the subsequent
-          bindings.  Acceptable KEYMAP names are `emacs',
-          `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
-          `vi-command', and `vi-insert'.  `vi' is equivalent to
-          `vi-command'; `emacs' is equivalent to `emacs-standard'.
-
-    `-l'
-          List the names of all Readline functions.
-
-    `-p'
-          Display Readline function names and bindings in such a way
-          that they can be used as input or in a Readline
-          initialization file.
-
-    `-P'
-          List current Readline function names and bindings.
-
-    `-v'
-          Display Readline variable names and values in such a way that
-          they can be used as input or in a Readline initialization
-          file.
-
-    `-V'
-          List current Readline variable names and values.
-
-    `-s'
-          Display Readline key sequences bound to macros and the
-          strings they output in such a way that they can be used as
-          input or in a Readline initialization file.
-
-    `-S'
-          Display Readline key sequences bound to macros and the
-          strings they output.
-
-    `-f FILENAME'
-          Read key bindings from FILENAME.
-
-    `-q FUNCTION'
-          Query about which keys invoke the named FUNCTION.
-
-    `-u FUNCTION'
-          Unbind all keys bound to the named FUNCTION.
-
-    `-r KEYSEQ'
-          Remove any current binding for KEYSEQ.
-
-    `-x KEYSEQ:SHELL-COMMAND'
-          Cause SHELL-COMMAND to be executed whenever KEYSEQ is entered.
-          When SHELL-COMMAND is executed, the shell sets the
-          `READLINE_LINE' variable to the contents of the Readline line
-          buffer and the `READLINE_POINT' variable to the current
-          location of the insertion point.  If the executed command
-          changes the value of `READLINE_LINE' or `READLINE_POINT',
-          those new values will be reflected in the editing state.
-
-    `-X'
-          List all key sequences bound to shell commands and the
-          associated commands in a format that can be reused as input.
-
-     The return status is zero unless an invalid option is supplied or
-     an error occurs.
-
-`builtin'
-          builtin [SHELL-BUILTIN [ARGS]]
-
-     Run a shell builtin, passing it ARGS, and return its exit status.
-     This is useful when defining a shell function with the same name
-     as a shell builtin, retaining the functionality of the builtin
-     within the function.  The return status is non-zero if
-     SHELL-BUILTIN is not a shell builtin command.
-
-`caller'
-          caller [EXPR]
-
-     Returns the context of any active subroutine call (a shell
-     function or a script executed with the `.' or `source' builtins).
-
-     Without EXPR, `caller' displays the line number and source
-     filename of the current subroutine call.  If a non-negative
-     integer is supplied as EXPR, `caller' displays the line number,
-     subroutine name, and source file corresponding to that position in
-     the current execution call stack.  This extra information may be
-     used, for example, to print a stack trace.  The current frame is
-     frame 0.
-
-     The return value is 0 unless the shell is not executing a
-     subroutine call or EXPR does not correspond to a valid position in
-     the call stack.
-
-`command'
-          command [-pVv] COMMAND [ARGUMENTS ...]
-
-     Runs COMMAND with ARGUMENTS ignoring any shell function named
-     COMMAND.  Only shell builtin commands or commands found by
-     searching the `PATH' are executed.  If there is a shell function
-     named `ls', running `command ls' within the function will execute
-     the external command `ls' instead of calling the function
-     recursively.  The `-p' option means to use a default value for
-     `PATH' that is guaranteed to find all of the standard utilities.
-     The return status in this case is 127 if COMMAND cannot be found
-     or an error occurred, and the exit status of COMMAND otherwise.
-
-     If either the `-V' or `-v' option is supplied, a description of
-     COMMAND is printed.  The `-v' option causes a single word
-     indicating the command or file name used to invoke COMMAND to be
-     displayed; the `-V' option produces a more verbose description.
-     In this case, the return status is zero if COMMAND is found, and
-     non-zero if not.
-
-`declare'
-          declare [-aAfFgilnrtux] [-p] [NAME[=VALUE] ...]
-
-     Declare variables and give them attributes.  If no NAMEs are
-     given, then display the values of variables instead.
-
-     The `-p' option will display the attributes and values of each
-     NAME.  When `-p' is used with NAME arguments, additional options,
-     other than `-f' and `-F', are ignored.
-
-     When `-p' is supplied without NAME arguments, `declare' will
-     display the attributes and values of all variables having the
-     attributes specified by the additional options.  If no other
-     options are supplied with `-p', `declare' will display the
-     attributes and values of all shell variables.  The `-f' option
-     will restrict the display to shell functions.
-
-     The `-F' option inhibits the display of function definitions; only
-     the function name and attributes are printed.  If the `extdebug'
-     shell option is enabled using `shopt' (*note The Shopt Builtin::),
-     the source file name and line number where the function is defined
-     are displayed as well.  `-F' implies `-f'.
-
-     The `-g' option forces variables to be created or modified at the
-     global scope, even when `declare' is executed in a shell function.
-     It is ignored in all other cases.
-
-     The following options can be used to restrict output to variables
-     with the specified attributes or to give variables attributes:
-
-    `-a'
-          Each NAME is an indexed array variable (*note Arrays::).
-
-    `-A'
-          Each NAME is an associative array variable (*note Arrays::).
-
-    `-f'
-          Use function names only.
-
-    `-i'
-          The variable is to be treated as an integer; arithmetic
-          evaluation (*note Shell Arithmetic::) is performed when the
-          variable is assigned a value.
-
-    `-l'
-          When the variable is assigned a value, all upper-case
-          characters are converted to lower-case.  The upper-case
-          attribute is disabled.
-
-    `-n'
-          Give each NAME the NAMEREF attribute, making it a name
-          reference to another variable.  That other variable is
-          defined by the value of NAME.  All references, assignments,
-          and attribute modifications to NAME, except for changing the
-          `-n' attribute itself, are performed on the variable
-          referenced by NAME's value.  The nameref attribute cannot be
-          applied to array variables.
-
-    `-r'
-          Make NAMEs readonly.  These names cannot then be assigned
-          values by subsequent assignment statements or unset.
-
-    `-t'
-          Give each NAME the `trace' attribute.  Traced functions
-          inherit the `DEBUG' and `RETURN' traps from the calling shell.
-          The trace attribute has no special meaning for variables.
-
-    `-u'
-          When the variable is assigned a value, all lower-case
-          characters are converted to upper-case.  The lower-case
-          attribute is disabled.
-
-    `-x'
-          Mark each NAME for export to subsequent commands via the
-          environment.
-
-     Using `+' instead of `-' turns off the attribute instead, with the
-     exceptions that `+a' may not be used to destroy an array variable
-     and `+r' will not remove the readonly attribute.  When used in a
-     function, `declare' makes each NAME local, as with the `local'
-     command, unless the `-g' option is used.  If a variable name is
-     followed by =VALUE, the value of the variable is set to VALUE.
-
-     When using `-a' or `-A' and the compound assignment syntax to
-     create array variables, additional attributes do not take effect
-     until subsequent assignments.
-
-     The return status is zero unless an invalid option is encountered,
-     an attempt is made to define a function using `-f foo=bar', an
-     attempt is made to assign a value to a readonly variable, an
-     attempt is made to assign a value to an array variable without
-     using the compound assignment syntax (*note Arrays::), one of the
-     NAMES is not a valid shell variable name, an attempt is made to
-     turn off readonly status for a readonly variable, an attempt is
-     made to turn off array status for an array variable, or an attempt
-     is made to display a non-existent function with `-f'.
-
-`echo'
-          echo [-neE] [ARG ...]
-
-     Output the ARGs, separated by spaces, terminated with a newline.
-     The return status is 0 unless a write error occurs.  If `-n' is
-     specified, the trailing newline is suppressed.  If the `-e' option
-     is given, interpretation of the following backslash-escaped
-     characters is enabled.  The `-E' option disables the
-     interpretation of these escape characters, even on systems where
-     they are interpreted by default.  The `xpg_echo' shell option may
-     be used to dynamically determine whether or not `echo' expands
-     these escape characters by default.  `echo' does not interpret
-     `--' to mean the end of options.
-
-     `echo' interprets the following escape sequences:
-    `\a'
-          alert (bell)
-
-    `\b'
-          backspace
-
-    `\c'
-          suppress further output
-
-    `\e'
-    `\E'
-          escape
-
-    `\f'
-          form feed
-
-    `\n'
-          new line
-
-    `\r'
-          carriage return
-
-    `\t'
-          horizontal tab
-
-    `\v'
-          vertical tab
-
-    `\\'
-          backslash
-
-    `\0NNN'
-          the eight-bit character whose value is the octal value NNN
-          (zero to three octal digits)
-
-    `\xHH'
-          the eight-bit character whose value is the hexadecimal value
-          HH (one or two hex digits)
-
-    `\uHHHH'
-          the Unicode (ISO/IEC 10646) character whose value is the
-          hexadecimal value HHHH (one to four hex digits)
-
-    `\UHHHHHHHH'
-          the Unicode (ISO/IEC 10646) character whose value is the
-          hexadecimal value HHHHHHHH (one to eight hex digits)
-
-`enable'
-          enable [-a] [-dnps] [-f FILENAME] [NAME ...]
-
-     Enable and disable builtin shell commands.  Disabling a builtin
-     allows a disk command which has the same name as a shell builtin
-     to be executed without specifying a full pathname, even though the
-     shell normally searches for builtins before disk commands.  If
-     `-n' is used, the NAMEs become disabled.  Otherwise NAMEs are
-     enabled.  For example, to use the `test' binary found via `$PATH'
-     instead of the shell builtin version, type `enable -n test'.
-
-     If the `-p' option is supplied, or no NAME arguments appear, a
-     list of shell builtins is printed.  With no other arguments, the
-     list consists of all enabled shell builtins.  The `-a' option
-     means to list each builtin with an indication of whether or not it
-     is enabled.
-
-     The `-f' option means to load the new builtin command NAME from
-     shared object FILENAME, on systems that support dynamic loading.
-     The `-d' option will delete a builtin loaded with `-f'.
-
-     If there are no options, a list of the shell builtins is displayed.
-     The `-s' option restricts `enable' to the POSIX special builtins.
-     If `-s' is used with `-f', the new builtin becomes a special
-     builtin (*note Special Builtins::).
-
-     The return status is zero unless a NAME is not a shell builtin or
-     there is an error loading a new builtin from a shared object.
-
-`help'
-          help [-dms] [PATTERN]
-
-     Display helpful information about builtin commands.  If PATTERN is
-     specified, `help' gives detailed help on all commands matching
-     PATTERN, otherwise a list of the builtins is printed.
-
-     Options, if supplied, have the following meanings:
-
-    `-d'
-          Display a short description of each PATTERN
-
-    `-m'
-          Display the description of each PATTERN in a manpage-like
-          format
-
-    `-s'
-          Display only a short usage synopsis for each PATTERN
-
-     The return status is zero unless no command matches PATTERN.
-
-`let'
-          let EXPRESSION [EXPRESSION ...]
-
-     The `let' builtin allows arithmetic to be performed on shell
-     variables.  Each EXPRESSION is evaluated according to the rules
-     given below in *note Shell Arithmetic::.  If the last EXPRESSION
-     evaluates to 0, `let' returns 1; otherwise 0 is returned.
-
-`local'
-          local [OPTION] NAME[=VALUE] ...
-
-     For each argument, a local variable named NAME is created, and
-     assigned VALUE.  The OPTION can be any of the options accepted by
-     `declare'.  `local' can only be used within a function; it makes
-     the variable NAME have a visible scope restricted to that function
-     and its children.  The return status is zero unless `local' is
-     used outside a function, an invalid NAME is supplied, or NAME is a
-     readonly variable.
-
-`logout'
-          logout [N]
-
-     Exit a login shell, returning a status of N to the shell's parent.
-
-`mapfile'
-          mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD]
-              [-C CALLBACK] [-c QUANTUM] [ARRAY]
-
-     Read lines from the standard input into the indexed array variable
-     ARRAY, or from file descriptor FD if the `-u' option is supplied.
-     The variable `MAPFILE' is the default ARRAY.  Options, if
-     supplied, have the following meanings:
-
-    `-d'
-          The first character of DELIM is used to terminate each input
-          line, rather than newline.
-
-    `-n'
-          Copy at most COUNT lines.  If COUNT is 0, all lines are
-          copied.
-
-    `-O'
-          Begin assigning to ARRAY at index ORIGIN.  The default index
-          is 0.
-
-    `-s'
-          Discard the first COUNT lines read.
-
-    `-t'
-          Remove a trailing newline from each line read.
-
-    `-u'
-          Read lines from file descriptor FD instead of the standard
-          input.
-
-    `-C'
-          Evaluate CALLBACK each time QUANTUMP lines are read.  The
-          `-c' option specifies QUANTUM.
-
-    `-c'
-          Specify the number of lines read between each call to
-          CALLBACK.
-
-     If `-C' is specified without `-c', the default quantum is 5000.
-     When CALLBACK  is evaluated, it is supplied the index of the next
-     array element to be assigned and the line to be assigned to that
-     element as additional arguments.  CALLBACK is evaluated after the
-     line is read but before the array element is assigned.
-
-     If not supplied with an explicit origin, `mapfile' will clear ARRAY
-     before assigning to it.
-
-     `mapfile' returns successfully unless an invalid option or option
-     argument is supplied, ARRAY is invalid or unassignable, or ARRAY
-     is not an indexed array.
-
-`printf'
-          printf [-v VAR] FORMAT [ARGUMENTS]
-
-     Write the formatted ARGUMENTS to the standard output under the
-     control of the FORMAT.  The `-v' option causes the output to be
-     assigned to the variable VAR rather than being printed to the
-     standard output.
-
-     The FORMAT is a character string which contains three types of
-     objects: plain characters, which are simply copied to standard
-     output, character escape sequences, which are converted and copied
-     to the standard output, and format specifications, each of which
-     causes printing of the next successive ARGUMENT.  In addition to
-     the standard `printf(1)' formats, `printf' interprets the
-     following extensions:
-
-    `%b'
-          Causes `printf' to expand backslash escape sequences in the
-          corresponding ARGUMENT, except that `\c' terminates output,
-          backslashes in `\'', `\"', and `\?' are not removed, and
-          octal escapes beginning with `\0' may contain up to four
-          digits.
-
-    `%q'
-          Causes `printf' to output the corresponding ARGUMENT in a
-          format that can be reused as shell input.
-
-    `%(DATEFMT)T'
-          Causes `printf' to output the date-time string resulting from
-          using DATEFMT as a format string for `strftime'(3).  The
-          corresponding ARGUMENT is an integer representing the number
-          of seconds since the epoch.  Two special argument values may
-          be used: -1 represents the current time, and -2 represents
-          the time the shell was invoked.  If no argument is specified,
-          conversion behaves as if -1 had been given.  This is an
-          exception to the usual `printf' behavior.
-
-     Arguments to non-string format specifiers are treated as C
-     language constants, except that a leading plus or minus sign is
-     allowed, and if the leading character is a single or double quote,
-     the value is the ASCII value of the following character.
-
-     The FORMAT is reused as necessary to consume all of the ARGUMENTS.
-     If the FORMAT requires more ARGUMENTS than are supplied, the extra
-     format specifications behave as if a zero value or null string, as
-     appropriate, had been supplied.  The return value is zero on
-     success, non-zero on failure.
-
-`read'
-          read [-ers] [-a ANAME] [-d DELIM] [-i TEXT] [-n NCHARS]
-              [-N NCHARS] [-p PROMPT] [-t TIMEOUT] [-u FD] [NAME ...]
-
-     One line is read from the standard input, or from the file
-     descriptor FD supplied as an argument to the `-u' option, and the
-     first word is assigned to the first NAME, the second word to the
-     second NAME, and so on, with leftover words and their intervening
-     separators assigned to the last NAME.  If there are fewer words
-     read from the input stream than names, the remaining names are
-     assigned empty values.  The characters in the value of the `IFS'
-     variable are used to split the line into words using the same
-     rules the shell uses for expansion (described above in *note Word
-     Splitting::).  The backslash character `\' may be used to remove
-     any special meaning for the next character read and for line
-     continuation.  If no names are supplied, the line read is assigned
-     to the variable `REPLY'.  The return code is zero, unless
-     end-of-file is encountered, `read' times out (in which case the
-     return code is greater than 128), a variable assignment error
-     (such as assigning to a readonly variable) occurs, or an invalid
-     file descriptor is supplied as the argument to `-u'.
-
-     Options, if supplied, have the following meanings:
-
-    `-a ANAME'
-          The words are assigned to sequential indices of the array
-          variable ANAME, starting at 0.  All elements are removed from
-          ANAME before the assignment.  Other NAME arguments are
-          ignored.
-
-    `-d DELIM'
-          The first character of DELIM is used to terminate the input
-          line, rather than newline.
-
-    `-e'
-          Readline (*note Command Line Editing::) is used to obtain the
-          line.  Readline uses the current (or default, if line editing
-          was not previously active) editing settings.
-
-    `-i TEXT'
-          If Readline is being used to read the line, TEXT is placed
-          into the editing buffer before editing begins.
-
-    `-n NCHARS'
-          `read' returns after reading NCHARS characters rather than
-          waiting for a complete line of input, but honor a delimiter
-          if fewer than NCHARS characters are read before the delimiter.
-
-    `-N NCHARS'
-          `read' returns after reading exactly NCHARS characters rather
-          than waiting for a complete line of input, unless EOF is
-          encountered or `read' times out.  Delimiter characters
-          encountered in the input are not treated specially and do not
-          cause `read' to return until NCHARS characters are read.
-
-    `-p PROMPT'
-          Display PROMPT, without a trailing newline, before attempting
-          to read any input.  The prompt is displayed only if input is
-          coming from a terminal.
-
-    `-r'
-          If this option is given, backslash does not act as an escape
-          character.  The backslash is considered to be part of the
-          line.  In particular, a backslash-newline pair may not be
-          used as a line continuation.
-
-    `-s'
-          Silent mode.  If input is coming from a terminal, characters
-          are not echoed.
-
-    `-t TIMEOUT'
-          Cause `read' to time out and return failure if a complete
-          line of input (or a specified number of characters) is not
-          read within TIMEOUT seconds.  TIMEOUT  may be a decimal
-          number with a fractional portion following the decimal point.
-          This option is only effective if `read' is reading input from
-          a terminal, pipe, or other special file; it has no effect
-          when reading from regular files.  If `read' times out, `read'
-          saves any partial input read into the specified variable NAME.
-          If TIMEOUT is 0, `read' returns immediately, without trying to
-          read and data.  The exit status is 0 if input is available on
-          the specified file descriptor, non-zero otherwise.  The exit
-          status is greater than 128 if the timeout is exceeded.
-
-    `-u FD'
-          Read input from file descriptor FD.
-
-`readarray'
-          readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD]
-              [-C CALLBACK] [-c QUANTUM] [ARRAY]
-
-     Read lines from the standard input into the indexed array variable
-     ARRAY, or from file descriptor FD if the `-u' option is supplied.
-
-     A synonym for `mapfile'.
-
-`source'
-          source FILENAME
-
-     A synonym for `.' (*note Bourne Shell Builtins::).
-
-`type'
-          type [-afptP] [NAME ...]
-
-     For each NAME, indicate how it would be interpreted if used as a
-     command name.
-
-     If the `-t' option is used, `type' prints a single word which is
-     one of `alias', `function', `builtin', `file' or `keyword', if
-     NAME is an alias, shell function, shell builtin, disk file, or
-     shell reserved word, respectively.  If the NAME is not found, then
-     nothing is printed, and `type' returns a failure status.
-
-     If the `-p' option is used, `type' either returns the name of the
-     disk file that would be executed, or nothing if `-t' would not
-     return `file'.
-
-     The `-P' option forces a path search for each NAME, even if `-t'
-     would not return `file'.
-
-     If a command is hashed, `-p' and `-P' print the hashed value,
-     which is not necessarily the file that appears first in `$PATH'.
-
-     If the `-a' option is used, `type' returns all of the places that
-     contain an executable named FILE.  This includes aliases and
-     functions, if and only if the `-p' option is not also used.
-
-     If the `-f' option is used, `type' does not attempt to find shell
-     functions, as with the `command' builtin.
-
-     The return status is zero if all of the NAMES are found, non-zero
-     if any are not found.
-
-`typeset'
-          typeset [-afFgrxilnrtux] [-p] [NAME[=VALUE] ...]
-
-     The `typeset' command is supplied for compatibility with the Korn
-     shell.  It is a synonym for the `declare' builtin command.
-
-`ulimit'
-          ulimit [-abcdefilmnpqrstuvxHST] [LIMIT]
-
-     `ulimit' provides control over the resources available to processes
-     started by the shell, on systems that allow such control.  If an
-     option is given, it is interpreted as follows:
-
-    `-S'
-          Change and report the soft limit associated with a resource.
-
-    `-H'
-          Change and report the hard limit associated with a resource.
-
-    `-a'
-          All current limits are reported.
-
-    `-b'
-          The maximum socket buffer size.
-
-    `-c'
-          The maximum size of core files created.
-
-    `-d'
-          The maximum size of a process's data segment.
-
-    `-e'
-          The maximum scheduling priority ("nice").
-
-    `-f'
-          The maximum size of files written by the shell and its
-          children.
-
-    `-i'
-          The maximum number of pending signals.
-
-    `-l'
-          The maximum size that may be locked into memory.
-
-    `-m'
-          The maximum resident set size (many systems do not honor this
-          limit).
-
-    `-n'
-          The maximum number of open file descriptors (most systems do
-          not allow this value to be set).
-
-    `-p'
-          The pipe buffer size.
-
-    `-q'
-          The maximum number of bytes in POSIX message queues.
-
-    `-r'
-          The maximum real-time scheduling priority.
-
-    `-s'
-          The maximum stack size.
-
-    `-t'
-          The maximum amount of cpu time in seconds.
-
-    `-u'
-          The maximum number of processes available to a single user.
-
-    `-v'
-          The maximum amount of virtual memory available to the shell,
-          and, on some systems, to its children.
-
-    `-x'
-          The maximum number of file locks.
-
-    `-T'
-          The maximum number of threads.
-
-     If LIMIT is given, and the `-a' option is not used, LIMIT is the
-     new value of the specified resource.  The special LIMIT values
-     `hard', `soft', and `unlimited' stand for the current hard limit,
-     the current soft limit, and no limit, respectively.  A hard limit
-     cannot be increased by a non-root user once it is set; a soft
-     limit may be increased up to the value of the hard limit.
-     Otherwise, the current value of the soft limit for the specified
-     resource is printed, unless the `-H' option is supplied.  When
-     setting new limits, if neither `-H' nor `-S' is supplied, both the
-     hard and soft limits are set.  If no option is given, then `-f' is
-     assumed.  Values are in 1024-byte increments, except for `-t',
-     which is in seconds; `-p', which is in units of 512-byte blocks;
-     and `-T', `-b', `-n' and `-u', which are unscaled values.
-
-     The return status is zero unless an invalid option or argument is
-     supplied, or an error occurs while setting a new limit.
-
-`unalias'
-          unalias [-a] [NAME ... ]
-
-     Remove each NAME from the list of aliases.  If `-a' is supplied,
-     all aliases are removed.  Aliases are described in *note Aliases::.
-
-\1f
-File: bash.info,  Node: Modifying Shell Behavior,  Next: Special Builtins,  Prev: Bash Builtins,  Up: Shell Builtin Commands
-
-4.3 Modifying Shell Behavior
-============================
-
-* Menu:
-
-* The Set Builtin::            Change the values of shell attributes and
-                               positional parameters.
-* The Shopt Builtin::          Modify shell optional behavior.
-
-\1f
-File: bash.info,  Node: The Set Builtin,  Next: The Shopt Builtin,  Up: Modifying Shell Behavior
-
-4.3.1 The Set Builtin
----------------------
-
-This builtin is so complicated that it deserves its own section.  `set'
-allows you to change the values of shell options and set the positional
-parameters, or to display the names and values of shell variables.
-
-`set'
-          set [--abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [ARGUMENT ...]
-          set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [ARGUMENT ...]
-
-     If no options or arguments are supplied, `set' displays the names
-     and values of all shell variables and functions, sorted according
-     to the current locale, in a format that may be reused as input for
-     setting or resetting the currently-set variables.  Read-only
-     variables cannot be reset.  In POSIX mode, only shell variables
-     are listed.
-
-     When options are supplied, they set or unset shell attributes.
-     Options, if specified, have the following meanings:
-
-    `-a'
-          Mark variables and function which are modified or created for
-          export to the environment of subsequent commands.
-
-    `-b'
-          Cause the status of terminated background jobs to be reported
-          immediately, rather than before printing the next primary
-          prompt.
-
-    `-e'
-          Exit immediately if a pipeline (*note Pipelines::), which may
-          consist of a single simple command (*note Simple Commands::),
-          a list (*note Lists::), or a compound command (*note Compound
-          Commands::) returns a non-zero status.  The shell does not
-          exit if the command that fails is part of the command list
-          immediately following a `while' or `until' keyword, part of
-          the test in an `if' statement, part of any command executed
-          in a `&&' or `||' list except the command following the final
-          `&&' or `||', any command in a pipeline but the last, or if
-          the command's return status is being inverted with `!'.  If a
-          compound command other than a subshell returns a non-zero
-          status because a command failed while `-e' was being ignored,
-          the shell does not exit.  A trap on `ERR', if set, is
-          executed before the shell exits.
-
-          This option applies to the shell environment and each
-          subshell environment separately (*note Command Execution
-          Environment::), and may cause subshells to exit before
-          executing all the commands in the subshell.
-
-          If a compound command or shell function executes in a context
-          where `-e' is being ignored, none of the commands executed
-          within the compound command or function body will be affected
-          by the `-e' setting, even if `-e' is set and a command
-          returns a failure status.  If a compound command or shell
-          function sets `-e' while executing in a context where `-e' is
-          ignored, that setting will not have any effect until the
-          compound command or the command containing the function call
-          completes.
-
-    `-f'
-          Disable filename expansion (globbing).
-
-    `-h'
-          Locate and remember (hash) commands as they are looked up for
-          execution.  This option is enabled by default.
-
-    `-k'
-          All arguments in the form of assignment statements are placed
-          in the environment for a command, not just those that precede
-          the command name.
-
-    `-m'
-          Job control is enabled (*note Job Control::).  All processes
-          run in a separate process group.  When a background job
-          completes, the shell prints a line containing its exit status.
-
-    `-n'
-          Read commands but do not execute them.  This may be used to
-          check a script for syntax errors.  This option is ignored by
-          interactive shells.
-
-    `-o OPTION-NAME'
-          Set the option corresponding to OPTION-NAME:
-
-         `allexport'
-               Same as `-a'.
-
-         `braceexpand'
-               Same as `-B'.
-
-         `emacs'
-               Use an `emacs'-style line editing interface (*note
-               Command Line Editing::).  This also affects the editing
-               interface used for `read -e'.
-
-         `errexit'
-               Same as `-e'.
-
-         `errtrace'
-               Same as `-E'.
-
-         `functrace'
-               Same as `-T'.
-
-         `hashall'
-               Same as `-h'.
-
-         `histexpand'
-               Same as `-H'.
-
-         `history'
-               Enable command history, as described in *note Bash
-               History Facilities::.  This option is on by default in
-               interactive shells.
-
-         `ignoreeof'
-               An interactive shell will not exit upon reading EOF.
-
-         `keyword'
-               Same as `-k'.
-
-         `monitor'
-               Same as `-m'.
-
-         `noclobber'
-               Same as `-C'.
-
-         `noexec'
-               Same as `-n'.
-
-         `noglob'
-               Same as `-f'.
-
-         `nolog'
-               Currently ignored.
-
-         `notify'
-               Same as `-b'.
-
-         `nounset'
-               Same as `-u'.
-
-         `onecmd'
-               Same as `-t'.
-
-         `physical'
-               Same as `-P'.
-
-         `pipefail'
-               If set, the return value of a pipeline is the value of
-               the last (rightmost) command to exit with a non-zero
-               status, or zero if all commands in the pipeline exit
-               successfully.  This option is disabled by default.
-
-         `posix'
-               Change the behavior of Bash where the default operation
-               differs from the POSIX standard to match the standard
-               (*note Bash POSIX Mode::).  This is intended to make
-               Bash behave as a strict superset of that standard.
-
-         `privileged'
-               Same as `-p'.
-
-         `verbose'
-               Same as `-v'.
-
-         `vi'
-               Use a `vi'-style line editing interface.  This also
-               affects the editing interface used for `read -e'.
-
-         `xtrace'
-               Same as `-x'.
-
-    `-p'
-          Turn on privileged mode.  In this mode, the `$BASH_ENV' and
-          `$ENV' files are not processed, shell functions are not
-          inherited from the environment, and the `SHELLOPTS',
-          `BASHOPTS', `CDPATH' and `GLOBIGNORE' variables, if they
-          appear in the environment, are ignored.  If the shell is
-          started with the effective user (group) id not equal to the
-          real user (group) id, and the `-p' option is not supplied,
-          these actions are taken and the effective user id is set to
-          the real user id.  If the `-p' option is supplied at startup,
-          the effective user id is not reset.  Turning this option off
-          causes the effective user and group ids to be set to the real
-          user and group ids.
-
-    `-t'
-          Exit after reading and executing one command.
-
-    `-u'
-          Treat unset variables and parameters other than the special
-          parameters `@' or `*' as an error when performing parameter
-          expansion.  An error message will be written to the standard
-          error, and a non-interactive shell will exit.
-
-    `-v'
-          Print shell input lines as they are read.
-
-    `-x'
-          Print a trace of simple commands, `for' commands, `case'
-          commands, `select' commands, and arithmetic `for' commands
-          and their arguments or associated word lists after they are
-          expanded and before they are executed.  The value of the `PS4'
-          variable is expanded and the resultant value is printed before
-          the command and its expanded arguments.
-
-    `-B'
-          The shell will perform brace expansion (*note Brace
-          Expansion::).  This option is on by default.
-
-    `-C'
-          Prevent output redirection using `>', `>&', and `<>' from
-          overwriting existing files.
-
-    `-E'
-          If set, any trap on `ERR' is inherited by shell functions,
-          command substitutions, and commands executed in a subshell
-          environment.  The `ERR' trap is normally not inherited in
-          such cases.
-
-    `-H'
-          Enable `!' style history substitution (*note History
-          Interaction::).  This option is on by default for interactive
-          shells.
-
-    `-P'
-          If set, do not resolve symbolic links when performing
-          commands such as `cd' which change the current directory.
-          The physical directory is used instead.  By default, Bash
-          follows the logical chain of directories when performing
-          commands which change the current directory.
-
-          For example, if `/usr/sys' is a symbolic link to
-          `/usr/local/sys' then:
-               $ cd /usr/sys; echo $PWD
-               /usr/sys
-               $ cd ..; pwd
-               /usr
-
-          If `set -P' is on, then:
-               $ cd /usr/sys; echo $PWD
-               /usr/local/sys
-               $ cd ..; pwd
-               /usr/local
-
-    `-T'
-          If set, any trap on `DEBUG' and `RETURN' are inherited by
-          shell functions, command substitutions, and commands executed
-          in a subshell environment.  The `DEBUG' and `RETURN' traps
-          are normally not inherited in such cases.
-
-    `--'
-          If no arguments follow this option, then the positional
-          parameters are unset.  Otherwise, the positional parameters
-          are set to the ARGUMENTS, even if some of them begin with a
-          `-'.
-
-    `-'
-          Signal the end of options, cause all remaining ARGUMENTS to
-          be assigned to the positional parameters.  The `-x' and `-v'
-          options are turned off.  If there are no arguments, the
-          positional parameters remain unchanged.
-
-     Using `+' rather than `-' causes these options to be turned off.
-     The options can also be used upon invocation of the shell.  The
-     current set of options may be found in `$-'.
-
-     The remaining N ARGUMENTS are positional parameters and are
-     assigned, in order, to `$1', `$2', ...  `$N'.  The special
-     parameter `#' is set to N.
-
-     The return status is always zero unless an invalid option is
-     supplied.
-
-\1f
-File: bash.info,  Node: The Shopt Builtin,  Prev: The Set Builtin,  Up: Modifying Shell Behavior
-
-4.3.2 The Shopt Builtin
------------------------
-
-This builtin allows you to change additional shell optional behavior.
-
-`shopt'
-          shopt [-pqsu] [-o] [OPTNAME ...]
-
-     Toggle the values of settings controlling optional shell behavior.
-     The settings can be either those listed below, or, if the `-o'
-     option is used, those available with the `-o' option to the `set'
-     builtin command (*note The Set Builtin::).  With no options, or
-     with the `-p' option, a list of all settable options is displayed,
-     with an indication of whether or not each is set.  The `-p' option
-     causes output to be displayed in a form that may be reused as
-     input.  Other options have the following meanings:
-
-    `-s'
-          Enable (set) each OPTNAME.
-
-    `-u'
-          Disable (unset) each OPTNAME.
-
-    `-q'
-          Suppresses normal output; the return status indicates whether
-          the OPTNAME is set or unset.  If multiple OPTNAME arguments
-          are given with `-q', the return status is zero if all
-          OPTNAMES are enabled; non-zero otherwise.
-
-    `-o'
-          Restricts the values of OPTNAME to be those defined for the
-          `-o' option to the `set' builtin (*note The Set Builtin::).
-
-     If either `-s' or `-u' is used with no OPTNAME arguments, `shopt'
-     shows only those options which are set or unset, respectively.
-
-     Unless otherwise noted, the `shopt' options are disabled (off) by
-     default.
-
-     The return status when listing options is zero if all OPTNAMES are
-     enabled, non-zero otherwise.  When setting or unsetting options,
-     the return status is zero unless an OPTNAME is not a valid shell
-     option.
-
-     The list of `shopt' options is:
-    `autocd'
-          If set, a command name that is the name of a directory is
-          executed as if it were the argument to the `cd' command.
-          This option is only used by interactive shells.
-
-    `cdable_vars'
-          If this is set, an argument to the `cd' builtin command that
-          is not a directory is assumed to be the name of a variable
-          whose value is the directory to change to.
-
-    `cdspell'
-          If set, minor errors in the spelling of a directory component
-          in a `cd' command will be corrected.  The errors checked for
-          are transposed characters, a missing character, and a
-          character too many.  If a correction is found, the corrected
-          path is printed, and the command proceeds.  This option is
-          only used by interactive shells.
-
-    `checkhash'
-          If this is set, Bash checks that a command found in the hash
-          table exists before trying to execute it.  If a hashed
-          command no longer exists, a normal path search is performed.
-
-    `checkjobs'
-          If set, Bash lists the status of any stopped and running jobs
-          before exiting an interactive shell.  If any jobs are
-          running, this causes the exit to be deferred until a second
-          exit is attempted without an intervening command (*note Job
-          Control::).  The shell always postpones exiting if any jobs
-          are stopped.
-
-    `checkwinsize'
-          If set, Bash checks the window size after each command  and,
-          if necessary, updates the values of `LINES' and `COLUMNS'.
-
-    `cmdhist'
-          If set, Bash attempts to save all lines of a multiple-line
-          command in the same history entry.  This allows easy
-          re-editing of multi-line commands.
-
-    `compat31'
-          If set, Bash changes its behavior to that of version 3.1 with
-          respect to quoted arguments to the conditional command's `=~'
-          operator and with respect to locale-specific string
-          comparison when using the `[[' conditional command's `<' and
-          `>' operators.  Bash versions prior to bash-4.1 use ASCII
-          collation and strcmp(3); bash-4.1 and later use the current
-          locale's collation sequence and strcoll(3).
-
-    `compat32'
-          If set, Bash changes its behavior to that of version 3.2 with
-          respect to locale-specific string comparison when using the
-          `[[' conditional command's `<' and `>' operators (see
-          previous item).
-
-    `compat40'
-          If set, Bash changes its behavior to that of version 4.0 with
-          respect to locale-specific string comparison when using the
-          `[[' conditional command's `<' and `>' operators (see
-          description of `compat31') and the effect of interrupting a
-          command list.  Bash versions 4.0 and later interrupt the list
-          as if the shell received the interrupt; previous versions
-          continue with the next command in the list.
-
-    `compat41'
-          If set, Bash, when in POSIX mode, treats a single quote in a
-          double-quoted parameter expansion as a special character.
-          The single quotes must match (an even number) and the
-          characters between the single quotes are considered quoted.
-          This is the behavior of POSIX mode through version 4.1.  The
-          default Bash behavior remains as in previous versions.
-
-    `compat42'
-          If set, Bash does not process the replacement string in the
-          pattern substitution word expansion using quote removal.
-
-    `complete_fullquote'
-          If set, Bash quotes all shell metacharacters in filenames and
-          directory names when performing completion.  If not set, Bash
-          removes metacharacters such as the dollar sign from the set of
-          characters that will be quoted in completed filenames when
-          these metacharacters appear in shell variable references in
-          words to be completed.  This means that dollar signs in
-          variable names that expand to directories will not be quoted;
-          however, any dollar signs appearing in filenames will not be
-          quoted, either.  This is active only when bash is using
-          backslashes to quote completed filenames.  This variable is
-          set by default, which is the default Bash behavior in
-          versions through 4.2.
-
-    `direxpand'
-          If set, Bash replaces directory names with the results of
-          word expansion when performing filename completion.  This
-          changes the contents of the readline editing buffer.  If not
-          set, Bash attempts to preserve what the user typed.
-
-    `dirspell'
-          If set, Bash attempts spelling correction on directory names
-          during word completion if the directory name initially
-          supplied does not exist.
-
-    `dotglob'
-          If set, Bash includes filenames beginning with a `.' in the
-          results of filename expansion.
-
-    `execfail'
-          If this is set, a non-interactive shell will not exit if it
-          cannot execute the file specified as an argument to the `exec'
-          builtin command.  An interactive shell does not exit if `exec'
-          fails.
-
-    `expand_aliases'
-          If set, aliases are expanded as described below under Aliases,
-          *note Aliases::.  This option is enabled by default for
-          interactive shells.
-
-    `extdebug'
-          If set, behavior intended for use by debuggers is enabled:
-
-            1. The `-F' option to the `declare' builtin (*note Bash
-               Builtins::) displays the source file name and line
-               number corresponding to each function name supplied as
-               an argument.
-
-            2. If the command run by the `DEBUG' trap returns a
-               non-zero value, the next command is skipped and not
-               executed.
-
-            3. If the command run by the `DEBUG' trap returns a value
-               of 2, and the shell is executing in a subroutine (a
-               shell function or a shell script executed by the `.' or
-               `source' builtins), the shell simulates a call to
-               `return'.
-
-            4. `BASH_ARGC' and `BASH_ARGV' are updated as described in
-               their descriptions (*note Bash Variables::).
-
-            5. Function tracing is enabled: command substitution, shell
-               functions, and subshells invoked with `( COMMAND )'
-               inherit the `DEBUG' and `RETURN' traps.
-
-            6. Error tracing is enabled: command substitution, shell
-               functions, and subshells invoked with `( COMMAND )'
-               inherit the `ERR' trap.
-
-    `extglob'
-          If set, the extended pattern matching features described above
-          (*note Pattern Matching::) are enabled.
-
-    `extquote'
-          If set, `$'STRING'' and `$"STRING"' quoting is performed
-          within `${PARAMETER}' expansions enclosed in double quotes.
-          This option is enabled by default.
-
-    `failglob'
-          If set, patterns which fail to match filenames during
-          filename expansion result in an expansion error.
-
-    `force_fignore'
-          If set, the suffixes specified by the `FIGNORE' shell variable
-          cause words to be ignored when performing word completion
-          even if the ignored words are the only possible completions.
-          *Note Bash Variables::, for a description of `FIGNORE'.  This
-          option is enabled by default.
-
-    `globasciiranges'
-          If set, range expressions used in pattern matching bracket
-          expressions (*note Pattern Matching::) behave as if in the
-          traditional C locale when performing comparisons.  That is,
-          the current locale's collating sequence is not taken into
-          account, so `b' will not collate between `A' and `B', and
-          upper-case and lower-case ASCII characters will collate
-          together.
-
-    `globstar'
-          If set, the pattern `**' used in a filename expansion context
-          will match all files and zero or more directories and
-          subdirectories.  If the pattern is followed by a `/', only
-          directories and subdirectories match.
-
-    `gnu_errfmt'
-          If set, shell error messages are written in the standard GNU
-          error message format.
-
-    `histappend'
-          If set, the history list is appended to the file named by the
-          value of the `HISTFILE' variable when the shell exits, rather
-          than overwriting the file.
-
-    `histreedit'
-          If set, and Readline is being used, a user is given the
-          opportunity to re-edit a failed history substitution.
-
-    `histverify'
-          If set, and Readline is being used, the results of history
-          substitution are not immediately passed to the shell parser.
-          Instead, the resulting line is loaded into the Readline
-          editing buffer, allowing further modification.
-
-    `hostcomplete'
-          If set, and Readline is being used, Bash will attempt to
-          perform hostname completion when a word containing a `@' is
-          being completed (*note Commands For Completion::).  This
-          option is enabled by default.
-
-    `huponexit'
-          If set, Bash will send `SIGHUP' to all jobs when an
-          interactive login shell exits (*note Signals::).
-
-    `interactive_comments'
-          Allow a word beginning with `#' to cause that word and all
-          remaining characters on that line to be ignored in an
-          interactive shell.  This option is enabled by default.
-
-    `lastpipe'
-          If set, and job control is not active, the shell runs the
-          last command of a pipeline not executed in the background in
-          the current shell environment.
-
-    `lithist'
-          If enabled, and the `cmdhist' option is enabled, multi-line
-          commands are saved to the history with embedded newlines
-          rather than using semicolon separators where possible.
-
-    `login_shell'
-          The shell sets this option if it is started as a login shell
-          (*note Invoking Bash::).  The value may not be changed.
-
-    `mailwarn'
-          If set, and a file that Bash is checking for mail has been
-          accessed since the last time it was checked, the message
-          `"The mail in MAILFILE has been read"' is displayed.
-
-    `no_empty_cmd_completion'
-          If set, and Readline is being used, Bash will not attempt to
-          search the `PATH' for possible completions when completion is
-          attempted on an empty line.
-
-    `nocaseglob'
-          If set, Bash matches filenames in a case-insensitive fashion
-          when performing filename expansion.
-
-    `nocasematch'
-          If set, Bash matches patterns in a case-insensitive fashion
-          when performing matching while executing `case' or `[['
-          conditional commands.
-
-    `nullglob'
-          If set, Bash allows filename patterns which match no files to
-          expand to a null string, rather than themselves.
-
-    `progcomp'
-          If set, the programmable completion facilities (*note
-          Programmable Completion::) are enabled.  This option is
-          enabled by default.
-
-    `promptvars'
-          If set, prompt strings undergo parameter expansion, command
-          substitution, arithmetic expansion, and quote removal after
-          being expanded as described below (*note Controlling the
-          Prompt::).  This option is enabled by default.
-
-    `restricted_shell'
-          The shell sets this option if it is started in restricted mode
-          (*note The Restricted Shell::).  The value may not be changed.
-          This is not reset when the startup files are executed,
-          allowing the startup files to discover whether or not a shell
-          is restricted.
-
-    `shift_verbose'
-          If this is set, the `shift' builtin prints an error message
-          when the shift count exceeds the number of positional
-          parameters.
-
-    `sourcepath'
-          If set, the `source' builtin uses the value of `PATH' to find
-          the directory containing the file supplied as an argument.
-          This option is enabled by default.
-
-    `xpg_echo'
-          If set, the `echo' builtin expands backslash-escape sequences
-          by default.
-
-
-     The return status when listing options is zero if all OPTNAMES are
-     enabled, non-zero otherwise.  When setting or unsetting options,
-     the return status is zero unless an OPTNAME is not a valid shell
-     option.
-
-\1f
-File: bash.info,  Node: Special Builtins,  Prev: Modifying Shell Behavior,  Up: Shell Builtin Commands
-
-4.4 Special Builtins
-====================
-
-For historical reasons, the POSIX standard has classified several
-builtin commands as _special_.  When Bash is executing in POSIX mode,
-the special builtins differ from other builtin commands in three
-respects:
-
-  1. Special builtins are found before shell functions during command
-     lookup.
-
-  2. If a special builtin returns an error status, a non-interactive
-     shell exits.
-
-  3. Assignment statements preceding the command stay in effect in the
-     shell environment after the command completes.
-
-   When Bash is not executing in POSIX mode, these builtins behave no
-differently than the rest of the Bash builtin commands.  The Bash POSIX
-mode is described in *note Bash POSIX Mode::.
-
-   These are the POSIX special builtins:
-     break : . continue eval exec exit export readonly return set
-     shift trap unset
-
-\1f
-File: bash.info,  Node: Shell Variables,  Next: Bash Features,  Prev: Shell Builtin Commands,  Up: Top
-
-5 Shell Variables
-*****************
-
-* Menu:
-
-* Bourne Shell Variables::     Variables which Bash uses in the same way
-                               as the Bourne Shell.
-* Bash Variables::             List of variables that exist in Bash.
-
-   This chapter describes the shell variables that Bash uses.  Bash
-automatically assigns default values to a number of variables.
-
-\1f
-File: bash.info,  Node: Bourne Shell Variables,  Next: Bash Variables,  Up: Shell Variables
-
-5.1 Bourne Shell Variables
-==========================
-
-Bash uses certain shell variables in the same way as the Bourne shell.
-In some cases, Bash assigns a default value to the variable.
-
-`CDPATH'
-     A colon-separated list of directories used as a search path for
-     the `cd' builtin command.
-
-`HOME'
-     The current user's home directory; the default for the `cd' builtin
-     command.  The value of this variable is also used by tilde
-     expansion (*note Tilde Expansion::).
-
-`IFS'
-     A list of characters that separate fields; used when the shell
-     splits words as part of expansion.
-
-`MAIL'
-     If this parameter is set to a filename or directory name and the
-     `MAILPATH' variable is not set, Bash informs the user of the
-     arrival of mail in the specified file or Maildir-format directory.
-
-`MAILPATH'
-     A colon-separated list of filenames which the shell periodically
-     checks for new mail.  Each list entry can specify the message that
-     is printed when new mail arrives in the mail file by separating
-     the filename from the message with a `?'.  When used in the text
-     of the message, `$_' expands to the name of the current mail file.
-
-`OPTARG'
-     The value of the last option argument processed by the `getopts'
-     builtin.
-
-`OPTIND'
-     The index of the last option argument processed by the `getopts'
-     builtin.
-
-`PATH'
-     A colon-separated list of directories in which the shell looks for
-     commands.  A zero-length (null) directory name in the value of
-     `PATH' indicates the current directory.  A null directory name may
-     appear as two adjacent colons, or as an initial or trailing colon.
-
-`PS1'
-     The primary prompt string.  The default value is `\s-\v\$ '.
-     *Note Controlling the Prompt::, for the complete list of escape
-     sequences that are expanded before `PS1' is displayed.
-
-`PS2'
-     The secondary prompt string.  The default value is `> '.
-
-
-\1f
-File: bash.info,  Node: Bash Variables,  Prev: Bourne Shell Variables,  Up: Shell Variables
-
-5.2 Bash Variables
-==================
-
-These variables are set or used by Bash, but other shells do not
-normally treat them specially.
-
-   A few variables used by Bash are described in different chapters:
-variables for controlling the job control facilities (*note Job Control
-Variables::).
-
-`BASH'
-     The full pathname used to execute the current instance of Bash.
-
-`BASHOPTS'
-     A colon-separated list of enabled shell options.  Each word in the
-     list is a valid argument for the `-s' option to the `shopt'
-     builtin command (*note The Shopt Builtin::).  The options
-     appearing in `BASHOPTS' are those reported as `on' by `shopt'.  If
-     this variable is in the environment when Bash starts up, each
-     shell option in the list will be enabled before reading any
-     startup files.  This variable is readonly.
-
-`BASHPID'
-     Expands to the process ID of the current Bash process.  This
-     differs from `$$' under certain circumstances, such as subshells
-     that do not require Bash to be re-initialized.
-
-`BASH_ALIASES'
-     An associative array variable whose members correspond to the
-     internal list of aliases as maintained by the `alias' builtin.
-     (*note Bourne Shell Builtins::).  Elements added to this array
-     appear in the alias list; unsetting array elements cause aliases
-     to be removed from the alias list.
-
-`BASH_ARGC'
-     An array variable whose values are the number of parameters in each
-     frame of the current bash execution call stack.  The number of
-     parameters to the current subroutine (shell function or script
-     executed with `.' or `source') is at the top of the stack.  When a
-     subroutine is executed, the number of parameters passed is pushed
-     onto `BASH_ARGC'.  The shell sets `BASH_ARGC' only when in
-     extended debugging mode (see *note The Shopt Builtin:: for a
-     description of the `extdebug' option to the `shopt' builtin).
-
-`BASH_ARGV'
-     An array variable containing all of the parameters in the current
-     bash execution call stack.  The final parameter of the last
-     subroutine call is at the top of the stack; the first parameter of
-     the initial call is at the bottom.  When a subroutine is executed,
-     the parameters supplied are pushed onto `BASH_ARGV'.  The shell
-     sets `BASH_ARGV' only when in extended debugging mode (see *note
-     The Shopt Builtin:: for a description of the `extdebug' option to
-     the `shopt' builtin).
-
-`BASH_CMDS'
-     An associative array variable whose members correspond to the
-     internal hash table of commands as maintained by the `hash' builtin
-     (*note Bourne Shell Builtins::).  Elements added to this array
-     appear in the hash table; unsetting array elements cause commands
-     to be removed from the hash table.
-
-`BASH_COMMAND'
-     The command currently being executed or about to be executed,
-     unless the shell is executing a command as the result of a trap,
-     in which case it is the command executing at the time of the trap.
-
-`BASH_COMPAT'
-     The value is used to set the shell's compatibility level.  *Note
-     The Shopt Builtin::, for a description of the various compatibility
-     levels and their effects.  The value may be a decimal number
-     (e.g., 4.2) or an integer (e.g., 42) corresponding to the desired
-     compatibility level.  If `BASH_COMPAT' is unset or set to the
-     empty string, the compatibility level is set to the default for
-     the current version.  If `BASH_COMPAT' is set to a value that is
-     not one of the valid compatibility levels, the shell prints an
-     error message and sets the compatibility level to the default for
-     the current version.  The valid compatibility levels correspond to
-     the compatibility options accepted by the `shopt' builtin
-     described above (for example, COMPAT42 means that 4.2 and 42 are
-     valid values).  The current version is also a valid value.
-
-`BASH_ENV'
-     If this variable is set when Bash is invoked to execute a shell
-     script, its value is expanded and used as the name of a startup
-     file to read before executing the script.  *Note Bash Startup
-     Files::.
-
-`BASH_EXECUTION_STRING'
-     The command argument to the `-c' invocation option.
-
-`BASH_LINENO'
-     An array variable whose members are the line numbers in source
-     files where each corresponding member of FUNCNAME was invoked.
-     `${BASH_LINENO[$i]}' is the line number in the source file
-     (`${BASH_SOURCE[$i+1]}') where `${FUNCNAME[$i]}' was called (or
-     `${BASH_LINENO[$i-1]}' if referenced within another shell
-     function).  Use `LINENO' to obtain the current line number.
-
-`BASH_REMATCH'
-     An array variable whose members are assigned by the `=~' binary
-     operator to the `[[' conditional command (*note Conditional
-     Constructs::).  The element with index 0 is the portion of the
-     string matching the entire regular expression.  The element with
-     index N is the portion of the string matching the Nth
-     parenthesized subexpression.  This variable is read-only.
-
-`BASH_SOURCE'
-     An array variable whose members are the source filenames where the
-     corresponding shell function names in the `FUNCNAME' array
-     variable are defined.  The shell function `${FUNCNAME[$i]}' is
-     defined in the file `${BASH_SOURCE[$i]}' and called from
-     `${BASH_SOURCE[$i+1]}'
-
-`BASH_SUBSHELL'
-     Incremented by one within each subshell or subshell environment
-     when the shell begins executing in that environment.  The initial
-     value is 0.
-
-`BASH_VERSINFO'
-     A readonly array variable (*note Arrays::) whose members hold
-     version information for this instance of Bash.  The values
-     assigned to the array members are as follows:
-
-    `BASH_VERSINFO[0]'
-          The major version number (the RELEASE).
-
-    `BASH_VERSINFO[1]'
-          The minor version number (the VERSION).
-
-    `BASH_VERSINFO[2]'
-          The patch level.
-
-    `BASH_VERSINFO[3]'
-          The build version.
-
-    `BASH_VERSINFO[4]'
-          The release status (e.g., BETA1).
-
-    `BASH_VERSINFO[5]'
-          The value of `MACHTYPE'.
-
-`BASH_VERSION'
-     The version number of the current instance of Bash.
-
-`BASH_XTRACEFD'
-     If set to an integer corresponding to a valid file descriptor, Bash
-     will write the trace output generated when `set -x' is enabled to
-     that file descriptor.  This allows tracing output to be separated
-     from diagnostic and error messages.  The file descriptor is closed
-     when `BASH_XTRACEFD' is unset or assigned a new value.  Unsetting
-     `BASH_XTRACEFD' or assigning it the empty string causes the trace
-     output to be sent to the standard error.  Note that setting
-     `BASH_XTRACEFD' to 2 (the standard error file descriptor) and then
-     unsetting it will result in the standard error being closed.
-
-`CHILD_MAX'
-     Set the number of exited child status values for the shell to
-     remember.  Bash will not allow this value to be decreased below a
-     POSIX-mandated minimum, and there is a maximum value (currently
-     8192) that this may not exceed.  The minimum value is
-     system-dependent.
-
-`COLUMNS'
-     Used by the `select' command to determine the terminal width when
-     printing selection lists.  Automatically set if the `checkwinsize'
-     option is enabled (*note The Shopt Builtin::), or in an
-     interactive shell upon receipt of a `SIGWINCH'.
-
-`COMP_CWORD'
-     An index into `${COMP_WORDS}' of the word containing the current
-     cursor position.  This variable is available only in shell
-     functions invoked by the programmable completion facilities (*note
-     Programmable Completion::).
-
-`COMP_LINE'
-     The current command line.  This variable is available only in
-     shell functions and external commands invoked by the programmable
-     completion facilities (*note Programmable Completion::).
-
-`COMP_POINT'
-     The index of the current cursor position relative to the beginning
-     of the current command.  If the current cursor position is at the
-     end of the current command, the value of this variable is equal to
-     `${#COMP_LINE}'.  This variable is available only in shell
-     functions and external commands invoked by the programmable
-     completion facilities (*note Programmable Completion::).
-
-`COMP_TYPE'
-     Set to an integer value corresponding to the type of completion
-     attempted that caused a completion function to be called: TAB, for
-     normal completion, `?', for listing completions after successive
-     tabs, `!', for listing alternatives on partial word completion,
-     `@', to list completions if the word is not unmodified, or `%',
-     for menu completion.  This variable is available only in shell
-     functions and external commands invoked by the programmable
-     completion facilities (*note Programmable Completion::).
-
-`COMP_KEY'
-     The key (or final key of a key sequence) used to invoke the current
-     completion function.
-
-`COMP_WORDBREAKS'
-     The set of characters that the Readline library treats as word
-     separators when performing word completion.  If `COMP_WORDBREAKS'
-     is unset, it loses its special properties, even if it is
-     subsequently reset.
-
-`COMP_WORDS'
-     An array variable consisting of the individual words in the
-     current command line.  The line is split into words as Readline
-     would split it, using `COMP_WORDBREAKS' as described above.  This
-     variable is available only in shell functions invoked by the
-     programmable completion facilities (*note Programmable
-     Completion::).
-
-`COMPREPLY'
-     An array variable from which Bash reads the possible completions
-     generated by a shell function invoked by the programmable
-     completion facility (*note Programmable Completion::).  Each array
-     element contains one possible completion.
-
-`COPROC'
-     An array variable created to hold the file descriptors for output
-     from and input to an unnamed coprocess (*note Coprocesses::).
-
-`DIRSTACK'
-     An array variable containing the current contents of the directory
-     stack.  Directories appear in the stack in the order they are
-     displayed by the `dirs' builtin.  Assigning to members of this
-     array variable may be used to modify directories already in the
-     stack, but the `pushd' and `popd' builtins must be used to add and
-     remove directories.  Assignment to this variable will not change
-     the current directory.  If `DIRSTACK' is unset, it loses its
-     special properties, even if it is subsequently reset.
-
-`EMACS'
-     If Bash finds this variable in the environment when the shell
-     starts with value `t', it assumes that the shell is running in an
-     Emacs shell buffer and disables line editing.
-
-`ENV'
-     Similar to `BASH_ENV'; used when the shell is invoked in POSIX
-     Mode (*note Bash POSIX Mode::).
-
-`EUID'
-     The numeric effective user id of the current user.  This variable
-     is readonly.
-
-`FCEDIT'
-     The editor used as a default by the `-e' option to the `fc'
-     builtin command.
-
-`FIGNORE'
-     A colon-separated list of suffixes to ignore when performing
-     filename completion.  A filename whose suffix matches one of the
-     entries in `FIGNORE' is excluded from the list of matched
-     filenames.  A sample value is `.o:~'
-
-`FUNCNAME'
-     An array variable containing the names of all shell functions
-     currently in the execution call stack.  The element with index 0
-     is the name of any currently-executing shell function.  The
-     bottom-most element (the one with the highest index) is `"main"'.
-     This variable exists only when a shell function is executing.
-     Assignments to `FUNCNAME' have no effect and return an error
-     status.  If `FUNCNAME' is unset, it loses its special properties,
-     even if it is subsequently reset.
-
-     This variable can be used with `BASH_LINENO' and `BASH_SOURCE'.
-     Each element of `FUNCNAME' has corresponding elements in
-     `BASH_LINENO' and `BASH_SOURCE' to describe the call stack.  For
-     instance, `${FUNCNAME[$i]}' was called from the file
-     `${BASH_SOURCE[$i+1]}' at line number `${BASH_LINENO[$i]}'.  The
-     `caller' builtin displays the current call stack using this
-     information.
-
-`FUNCNEST'
-     If set to a numeric value greater than 0, defines a maximum
-     function nesting level.  Function invocations that exceed this
-     nesting level will cause the current command to abort.
-
-`GLOBIGNORE'
-     A colon-separated list of patterns defining the set of filenames to
-     be ignored by filename expansion.  If a filename matched by a
-     filename expansion pattern also matches one of the patterns in
-     `GLOBIGNORE', it is removed from the list of matches.
-
-`GROUPS'
-     An array variable containing the list of groups of which the
-     current user is a member.  Assignments to `GROUPS' have no effect
-     and return an error status.  If `GROUPS' is unset, it loses its
-     special properties, even if it is subsequently reset.
-
-`histchars'
-     Up to three characters which control history expansion, quick
-     substitution, and tokenization (*note History Interaction::).  The
-     first character is the HISTORY EXPANSION character, that is, the
-     character which signifies the start of a history expansion,
-     normally `!'.  The second character is the character which
-     signifies `quick substitution' when seen as the first character on
-     a line, normally `^'.  The optional third character is the
-     character which indicates that the remainder of the line is a
-     comment when found as the first character of a word, usually `#'.
-     The history comment character causes history substitution to be
-     skipped for the remaining words on the line.  It does not
-     necessarily cause the shell parser to treat the rest of the line
-     as a comment.
-
-`HISTCMD'
-     The history number, or index in the history list, of the current
-     command.  If `HISTCMD' is unset, it loses its special properties,
-     even if it is subsequently reset.
-
-`HISTCONTROL'
-     A colon-separated list of values controlling how commands are
-     saved on the history list.  If the list of values includes
-     `ignorespace', lines which begin with a space character are not
-     saved in the history list.  A value of `ignoredups' causes lines
-     which match the previous history entry to not be saved.  A value
-     of `ignoreboth' is shorthand for `ignorespace' and `ignoredups'.
-     A value of `erasedups' causes all previous lines matching the
-     current line to be removed from the history list before that line
-     is saved.  Any value not in the above list is ignored.  If
-     `HISTCONTROL' is unset, or does not include a valid value, all
-     lines read by the shell parser are saved on the history list,
-     subject to the value of `HISTIGNORE'.  The second and subsequent
-     lines of a multi-line compound command are not tested, and are
-     added to the history regardless of the value of `HISTCONTROL'.
-
-`HISTFILE'
-     The name of the file to which the command history is saved.  The
-     default value is `~/.bash_history'.
-
-`HISTFILESIZE'
-     The maximum number of lines contained in the history file.  When
-     this variable is assigned a value, the history file is truncated,
-     if necessary, to contain no more than that number of lines by
-     removing the oldest entries.  The history file is also truncated
-     to this size after writing it when a shell exits.  If the value is
-     0, the history file is truncated to zero size.  Non-numeric values
-     and numeric values less than zero inhibit truncation.  The shell
-     sets the default value to the value of `HISTSIZE' after reading
-     any startup files.
-
-`HISTIGNORE'
-     A colon-separated list of patterns used to decide which command
-     lines should be saved on the history list.  Each pattern is
-     anchored at the beginning of the line and must match the complete
-     line (no implicit `*' is appended).  Each pattern is tested
-     against the line after the checks specified by `HISTCONTROL' are
-     applied.  In addition to the normal shell pattern matching
-     characters, `&' matches the previous history line.  `&' may be
-     escaped using a backslash; the backslash is removed before
-     attempting a match.  The second and subsequent lines of a
-     multi-line compound command are not tested, and are added to the
-     history regardless of the value of `HISTIGNORE'.
-
-     `HISTIGNORE' subsumes the function of `HISTCONTROL'.  A pattern of
-     `&' is identical to `ignoredups', and a pattern of `[ ]*' is
-     identical to `ignorespace'.  Combining these two patterns,
-     separating them with a colon, provides the functionality of
-     `ignoreboth'.
-
-`HISTSIZE'
-     The maximum number of commands to remember on the history list.
-     If the value is 0, commands are not saved in the history list.
-     Numeric values less than zero result in every command being saved
-     on the history list (there is no limit).  The shell sets the
-     default value to 500 after reading any startup files.
-
-`HISTTIMEFORMAT'
-     If this variable is set and not null, its value is used as a
-     format string for STRFTIME to print the time stamp associated with
-     each history entry displayed by the `history' builtin.  If this
-     variable is set, time stamps are written to the history file so
-     they may be preserved across shell sessions.  This uses the
-     history comment character to distinguish timestamps from other
-     history lines.
-
-`HOSTFILE'
-     Contains the name of a file in the same format as `/etc/hosts' that
-     should be read when the shell needs to complete a hostname.  The
-     list of possible hostname completions may be changed while the
-     shell is running; the next time hostname completion is attempted
-     after the value is changed, Bash adds the contents of the new file
-     to the existing list.  If `HOSTFILE' is set, but has no value, or
-     does not name a readable file, Bash attempts to read `/etc/hosts'
-     to obtain the list of possible hostname completions.  When
-     `HOSTFILE' is unset, the hostname list is cleared.
-
-`HOSTNAME'
-     The name of the current host.
-
-`HOSTTYPE'
-     A string describing the machine Bash is running on.
-
-`IGNOREEOF'
-     Controls the action of the shell on receipt of an `EOF' character
-     as the sole input.  If set, the value denotes the number of
-     consecutive `EOF' characters that can be read as the first
-     character on an input line before the shell will exit.  If the
-     variable exists but does not have a numeric value (or has no
-     value) then the default is 10.  If the variable does not exist,
-     then `EOF' signifies the end of input to the shell.  This is only
-     in effect for interactive shells.
-
-`INPUTRC'
-     The name of the Readline initialization file, overriding the
-     default of `~/.inputrc'.
-
-`LANG'
-     Used to determine the locale category for any category not
-     specifically selected with a variable starting with `LC_'.
-
-`LC_ALL'
-     This variable overrides the value of `LANG' and any other `LC_'
-     variable specifying a locale category.
-
-`LC_COLLATE'
-     This variable determines the collation order used when sorting the
-     results of filename expansion, and determines the behavior of
-     range expressions, equivalence classes, and collating sequences
-     within filename expansion and pattern matching (*note Filename
-     Expansion::).
-
-`LC_CTYPE'
-     This variable determines the interpretation of characters and the
-     behavior of character classes within filename expansion and pattern
-     matching (*note Filename Expansion::).
-
-`LC_MESSAGES'
-     This variable determines the locale used to translate double-quoted
-     strings preceded by a `$' (*note Locale Translation::).
-
-`LC_NUMERIC'
-     This variable determines the locale category used for number
-     formatting.
-
-`LINENO'
-     The line number in the script or shell function currently
-     executing.
-
-`LINES'
-     Used by the `select' command to determine the column length for
-     printing selection lists.  Automatically set if the `checkwinsize'
-     option is enabled (*note The Shopt Builtin::), or in an
-     interactive shell upon receipt of a `SIGWINCH'.
-
-`MACHTYPE'
-     A string that fully describes the system type on which Bash is
-     executing, in the standard GNU CPU-COMPANY-SYSTEM format.
-
-`MAILCHECK'
-     How often (in seconds) that the shell should check for mail in the
-     files specified in the `MAILPATH' or `MAIL' variables.  The
-     default is 60 seconds.  When it is time to check for mail, the
-     shell does so before displaying the primary prompt.  If this
-     variable is unset, or set to a value that is not a number greater
-     than or equal to zero, the shell disables mail checking.
-
-`MAPFILE'
-     An array variable created to hold the text read by the `mapfile'
-     builtin when no variable name is supplied.
-
-`OLDPWD'
-     The previous working directory as set by the `cd' builtin.
-
-`OPTERR'
-     If set to the value 1, Bash displays error messages generated by
-     the `getopts' builtin command.
-
-`OSTYPE'
-     A string describing the operating system Bash is running on.
-
-`PIPESTATUS'
-     An array variable (*note Arrays::) containing a list of exit
-     status values from the processes in the most-recently-executed
-     foreground pipeline (which may contain only a single command).
-
-`POSIXLY_CORRECT'
-     If this variable is in the environment when Bash starts, the shell
-     enters POSIX mode (*note Bash POSIX Mode::) before reading the
-     startup files, as if the `--posix' invocation option had been
-     supplied.  If it is set while the shell is running, Bash enables
-     POSIX mode, as if the command
-          `set -o posix'
-     had been executed.
-
-`PPID'
-     The process ID of the shell's parent process.  This variable is
-     readonly.
-
-`PROMPT_COMMAND'
-     If set, the value is interpreted as a command to execute before
-     the printing of each primary prompt (`$PS1').
-
-`PROMPT_DIRTRIM'
-     If set to a number greater than zero, the value is used as the
-     number of trailing directory components to retain when expanding
-     the `\w' and `\W' prompt string escapes (*note Controlling the
-     Prompt::).  Characters removed are replaced with an ellipsis.
-
-`PS3'
-     The value of this variable is used as the prompt for the `select'
-     command.  If this variable is not set, the `select' command
-     prompts with `#? '
-
-`PS4'
-     The value is the prompt printed before the command line is echoed
-     when the `-x' option is set (*note The Set Builtin::).  The first
-     character of `PS4' is replicated multiple times, as necessary, to
-     indicate multiple levels of indirection.  The default is `+ '.
-
-`PWD'
-     The current working directory as set by the `cd' builtin.
-
-`RANDOM'
-     Each time this parameter is referenced, a random integer between 0
-     and 32767 is generated.  Assigning a value to this variable seeds
-     the random number generator.
-
-`READLINE_LINE'
-     The contents of the Readline line buffer, for use with `bind -x'
-     (*note Bash Builtins::).
-
-`READLINE_POINT'
-     The position of the insertion point in the Readline line buffer,
-     for use with `bind -x' (*note Bash Builtins::).
-
-`REPLY'
-     The default variable for the `read' builtin.
-
-`SECONDS'
-     This variable expands to the number of seconds since the shell was
-     started.  Assignment to this variable resets the count to the
-     value assigned, and the expanded value becomes the value assigned
-     plus the number of seconds since the assignment.
-
-`SHELL'
-     The full pathname to the shell is kept in this environment
-     variable.  If it is not set when the shell starts, Bash assigns to
-     it the full pathname of the current user's login shell.
-
-`SHELLOPTS'
-     A colon-separated list of enabled shell options.  Each word in the
-     list is a valid argument for the `-o' option to the `set' builtin
-     command (*note The Set Builtin::).  The options appearing in
-     `SHELLOPTS' are those reported as `on' by `set -o'.  If this
-     variable is in the environment when Bash starts up, each shell
-     option in the list will be enabled before reading any startup
-     files.  This variable is readonly.
-
-`SHLVL'
-     Incremented by one each time a new instance of Bash is started.
-     This is intended to be a count of how deeply your Bash shells are
-     nested.
-
-`TIMEFORMAT'
-     The value of this parameter is used as a format string specifying
-     how the timing information for pipelines prefixed with the `time'
-     reserved word should be displayed.  The `%' character introduces an
-     escape sequence that is expanded to a time value or other
-     information.  The escape sequences and their meanings are as
-     follows; the braces denote optional portions.
-
-    `%%'
-          A literal `%'.
-
-    `%[P][l]R'
-          The elapsed time in seconds.
-
-    `%[P][l]U'
-          The number of CPU seconds spent in user mode.
-
-    `%[P][l]S'
-          The number of CPU seconds spent in system mode.
-
-    `%P'
-          The CPU percentage, computed as (%U + %S) / %R.
-
-     The optional P is a digit specifying the precision, the number of
-     fractional digits after a decimal point.  A value of 0 causes no
-     decimal point or fraction to be output.  At most three places
-     after the decimal point may be specified; values of P greater than
-     3 are changed to 3.  If P is not specified, the value 3 is used.
-
-     The optional `l' specifies a longer format, including minutes, of
-     the form MMmSS.FFs.  The value of P determines whether or not the
-     fraction is included.
-
-     If this variable is not set, Bash acts as if it had the value
-          `$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS''
-     If the value is null, no timing information is displayed.  A
-     trailing newline is added when the format string is displayed.
-
-`TMOUT'
-     If set to a value greater than zero, `TMOUT' is treated as the
-     default timeout for the `read' builtin (*note Bash Builtins::).
-     The `select' command (*note Conditional Constructs::) terminates
-     if input does not arrive after `TMOUT' seconds when input is coming
-     from a terminal.
-
-     In an interactive shell, the value is interpreted as the number of
-     seconds to wait for a line of input after issuing the primary
-     prompt.  Bash terminates after waiting for that number of seconds
-     if a complete line of input does not arrive.
-
-`TMPDIR'
-     If set, Bash uses its value as the name of a directory in which
-     Bash creates temporary files for the shell's use.
-
-`UID'
-     The numeric real user id of the current user.  This variable is
-     readonly.
-
-
-\1f
-File: bash.info,  Node: Bash Features,  Next: Job Control,  Prev: Shell Variables,  Up: Top
-
-6 Bash Features
-***************
-
-This chapter describes features unique to Bash.
-
-* Menu:
-
-* Invoking Bash::              Command line options that you can give
-                               to Bash.
-* Bash Startup Files::         When and how Bash executes scripts.
-* Interactive Shells::         What an interactive shell is.
-* Bash Conditional Expressions::       Primitives used in composing expressions for
-                               the `test' builtin.
-* Shell Arithmetic::           Arithmetic on shell variables.
-* Aliases::                    Substituting one command for another.
-* Arrays::                     Array Variables.
-* The Directory Stack::                History of visited directories.
-* Controlling the Prompt::     Customizing the various prompt strings.
-* The Restricted Shell::       A more controlled mode of shell execution.
-* Bash POSIX Mode::            Making Bash behave more closely to what
-                               the POSIX standard specifies.
-
-\1f
-File: bash.info,  Node: Invoking Bash,  Next: Bash Startup Files,  Up: Bash Features
-
-6.1 Invoking Bash
-=================
-
-     bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...]
-     bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] -c STRING [ARGUMENT ...]
-     bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...]
-
-   All of the single-character options used with the `set' builtin
-(*note The Set Builtin::) can be used as options when the shell is
-invoked.  In addition, there are several multi-character options that
-you can use.  These options must appear on the command line before the
-single-character options to be recognized.
-
-`--debugger'
-     Arrange for the debugger profile to be executed before the shell
-     starts.  Turns on extended debugging mode (see *note The Shopt
-     Builtin:: for a description of the `extdebug' option to the `shopt'
-     builtin).
-
-`--dump-po-strings'
-     A list of all double-quoted strings preceded by `$' is printed on
-     the standard output in the GNU `gettext' PO (portable object) file
-     format.  Equivalent to `-D' except for the output format.
-
-`--dump-strings'
-     Equivalent to `-D'.
-
-`--help'
-     Display a usage message on standard output and exit successfully.
-
-`--init-file FILENAME'
-`--rcfile FILENAME'
-     Execute commands from FILENAME (instead of `~/.bashrc') in an
-     interactive shell.
-
-`--login'
-     Equivalent to `-l'.
-
-`--noediting'
-     Do not use the GNU Readline library (*note Command Line Editing::)
-     to read  command lines when the shell is interactive.
-
-`--noprofile'
-     Don't load the system-wide startup file `/etc/profile' or any of
-     the personal initialization files `~/.bash_profile',
-     `~/.bash_login', or `~/.profile' when Bash is invoked as a login
-     shell.
-
-`--norc'
-     Don't read the `~/.bashrc' initialization file in an interactive
-     shell.  This is on by default if the shell is invoked as `sh'.
-
-`--posix'
-     Change the behavior of Bash where the default operation differs
-     from the POSIX standard to match the standard.  This is intended
-     to make Bash behave as a strict superset of that standard.  *Note
-     Bash POSIX Mode::, for a description of the Bash POSIX mode.
-
-`--restricted'
-     Make the shell a restricted shell (*note The Restricted Shell::).
-
-`--verbose'
-     Equivalent to `-v'.  Print shell input lines as they're read.
-
-`--version'
-     Show version information for this instance of Bash on the standard
-     output and exit successfully.
-
-   There are several single-character options that may be supplied at
-invocation which are not available with the `set' builtin.
-
-`-c'
-     Read and execute commands from the first non-option argument
-     COMMAND_STRING, then exit.  If there are arguments after the
-     COMMAND_STRING, the first argument is assigned to `$0' and any
-     remaining arguments are assigned to the positional parameters.
-     The assignment to `$0' sets the name of the shell, which is used
-     in warning and error messages.
-
-`-i'
-     Force the shell to run interactively.  Interactive shells are
-     described in *note Interactive Shells::.
-
-`-l'
-     Make this shell act as if it had been directly invoked by login.
-     When the shell is interactive, this is equivalent to starting a
-     login shell with `exec -l bash'.  When the shell is not
-     interactive, the login shell startup files will be executed.
-     `exec bash -l' or `exec bash --login' will replace the current
-     shell with a Bash login shell.  *Note Bash Startup Files::, for a
-     description of the special behavior of a login shell.
-
-`-r'
-     Make the shell a restricted shell (*note The Restricted Shell::).
-
-`-s'
-     If this option is present, or if no arguments remain after option
-     processing, then commands are read from the standard input.  This
-     option allows the positional parameters to be set when invoking an
-     interactive shell.
-
-`-D'
-     A list of all double-quoted strings preceded by `$' is printed on
-     the standard output.  These are the strings that are subject to
-     language translation when the current locale is not `C' or `POSIX'
-     (*note Locale Translation::).  This implies the `-n' option; no
-     commands will be executed.
-
-`[-+]O [SHOPT_OPTION]'
-     SHOPT_OPTION is one of the shell options accepted by the `shopt'
-     builtin (*note The Shopt Builtin::).  If SHOPT_OPTION is present,
-     `-O' sets the value of that option; `+O' unsets it.  If
-     SHOPT_OPTION is not supplied, the names and values of the shell
-     options accepted by `shopt' are printed on the standard output.
-     If the invocation option is `+O', the output is displayed in a
-     format that may be reused as input.
-
-`--'
-     A `--' signals the end of options and disables further option
-     processing.  Any arguments after the `--' are treated as filenames
-     and arguments.
-
-   A _login_ shell is one whose first character of argument zero is
-`-', or one invoked with the `--login' option.
-
-   An _interactive_ shell is one started without non-option arguments,
-unless `-s' is specified, without specifying the `-c' option, and whose
-input and output are both connected to terminals (as determined by
-`isatty(3)'), or one started with the `-i' option.  *Note Interactive
-Shells::, for more information.
-
-   If arguments remain after option processing, and neither the `-c'
-nor the `-s' option has been supplied, the first argument is assumed to
-be the name of a file containing shell commands (*note Shell Scripts::).
-When Bash is invoked in this fashion, `$0' is set to the name of the
-file, and the positional parameters are set to the remaining arguments.
-Bash reads and executes commands from this file, then exits.  Bash's
-exit status is the exit status of the last command executed in the
-script.  If no commands are executed, the exit status is 0.
-
-\1f
-File: bash.info,  Node: Bash Startup Files,  Next: Interactive Shells,  Prev: Invoking Bash,  Up: Bash Features
-
-6.2 Bash Startup Files
-======================
-
-This section describes how Bash executes its startup files.  If any of
-the files exist but cannot be read, Bash reports an error.  Tildes are
-expanded in filenames as described above under Tilde Expansion (*note
-Tilde Expansion::).
-
-   Interactive shells are described in *note Interactive Shells::.
-
-Invoked as an interactive login shell, or with `--login'
-........................................................
-
-When Bash is invoked as an interactive login shell, or as a
-non-interactive shell with the `--login' option, it first reads and
-executes commands from the file `/etc/profile', if that file exists.
-After reading that file, it looks for `~/.bash_profile',
-`~/.bash_login', and `~/.profile', in that order, and reads and
-executes commands from the first one that exists and is readable.  The
-`--noprofile' option may be used when the shell is started to inhibit
-this behavior.
-
-   When a login shell exits, Bash reads and executes commands from the
-file `~/.bash_logout', if it exists.
-
-Invoked as an interactive non-login shell
-.........................................
-
-When an interactive shell that is not a login shell is started, Bash
-reads and executes commands from `~/.bashrc', if that file exists.
-This may be inhibited by using the `--norc' option.  The `--rcfile
-FILE' option will force Bash to read and execute commands from FILE
-instead of `~/.bashrc'.
-
-   So, typically, your `~/.bash_profile' contains the line
-     `if [ -f ~/.bashrc ]; then . ~/.bashrc; fi'
-   after (or before) any login-specific initializations.
-
-Invoked non-interactively
-.........................
-
-When Bash is started non-interactively, to run a shell script, for
-example, it looks for the variable `BASH_ENV' in the environment,
-expands its value if it appears there, and uses the expanded value as
-the name of a file to read and execute.  Bash behaves as if the
-following command were executed:
-     `if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi'
-   but the value of the `PATH' variable is not used to search for the
-filename.
-
-   As noted above, if a non-interactive shell is invoked with the
-`--login' option, Bash attempts to read and execute commands from the
-login shell startup files.
-
-Invoked with name `sh'
-......................
-
-If Bash is invoked with the name `sh', it tries to mimic the startup
-behavior of historical versions of `sh' as closely as possible, while
-conforming to the POSIX standard as well.
-
-   When invoked as an interactive login shell, or as a non-interactive
-shell with the `--login' option, it first attempts to read and execute
-commands from `/etc/profile' and `~/.profile', in that order.  The
-`--noprofile' option may be used to inhibit this behavior.  When
-invoked as an interactive shell with the name `sh', Bash looks for the
-variable `ENV', expands its value if it is defined, and uses the
-expanded value as the name of a file to read and execute.  Since a
-shell invoked as `sh' does not attempt to read and execute commands
-from any other startup files, the `--rcfile' option has no effect.  A
-non-interactive shell invoked with the name `sh' does not attempt to
-read any other startup files.
-
-   When invoked as `sh', Bash enters POSIX mode after the startup files
-are read.
-
-Invoked in POSIX mode
-.....................
-
-When Bash is started in POSIX mode, as with the `--posix' command line
-option, it follows the POSIX standard for startup files.  In this mode,
-interactive shells expand the `ENV' variable and commands are read and
-executed from the file whose name is the expanded value.  No other
-startup files are read.
-
-Invoked by remote shell daemon
-..............................
-
-Bash attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the remote shell
-daemon, usually `rshd', or the secure shell daemon `sshd'.  If Bash
-determines it is being run in this fashion, it reads and executes
-commands from `~/.bashrc', if that file exists and is readable.  It
-will not do this if invoked as `sh'.  The `--norc' option may be used
-to inhibit this behavior, and the `--rcfile' option may be used to
-force another file to be read, but neither `rshd' nor `sshd' generally
-invoke the shell with those options or allow them to be specified.
-
-Invoked with unequal effective and real UID/GIDs
-................................................
-
-If Bash is started with the effective user (group) id not equal to the
-real user (group) id, and the `-p' option is not supplied, no startup
-files are read, shell functions are not inherited from the environment,
-the `SHELLOPTS', `BASHOPTS', `CDPATH', and `GLOBIGNORE' variables, if
-they appear in the environment, are ignored, and the effective user id
-is set to the real user id.  If the `-p' option is supplied at
-invocation, the startup behavior is the same, but the effective user id
-is not reset.
-
-\1f
-File: bash.info,  Node: Interactive Shells,  Next: Bash Conditional Expressions,  Prev: Bash Startup Files,  Up: Bash Features
-
-6.3 Interactive Shells
-======================
-
-* Menu:
-
-* What is an Interactive Shell?::      What determines whether a shell is Interactive.
-* Is this Shell Interactive?:: How to tell if a shell is interactive.
-* Interactive Shell Behavior:: What changes in a interactive shell?
-
-\1f
-File: bash.info,  Node: What is an Interactive Shell?,  Next: Is this Shell Interactive?,  Up: Interactive Shells
-
-6.3.1 What is an Interactive Shell?
------------------------------------
-
-An interactive shell is one started without non-option arguments,
-unless `-s' is specified, without specifying the `-c' option, and whose
-input and error output are both connected to terminals (as determined
-by `isatty(3)'), or one started with the `-i' option.
-
-   An interactive shell generally reads from and writes to a user's
-terminal.
-
-   The `-s' invocation option may be used to set the positional
-parameters when an interactive shell is started.
-
-\1f
-File: bash.info,  Node: Is this Shell Interactive?,  Next: Interactive Shell Behavior,  Prev: What is an Interactive Shell?,  Up: Interactive Shells
-
-6.3.2 Is this Shell Interactive?
---------------------------------
-
-To determine within a startup script whether or not Bash is running
-interactively, test the value of the `-' special parameter.  It
-contains `i' when the shell is interactive.  For example:
-
-     case "$-" in
-     *i*)      echo This shell is interactive ;;
-     *)        echo This shell is not interactive ;;
-     esac
-
-   Alternatively, startup scripts may examine the variable `PS1'; it is
-unset in non-interactive shells, and set in interactive shells.  Thus:
-
-     if [ -z "$PS1" ]; then
-             echo This shell is not interactive
-     else
-             echo This shell is interactive
-     fi
-
-\1f
-File: bash.info,  Node: Interactive Shell Behavior,  Prev: Is this Shell Interactive?,  Up: Interactive Shells
-
-6.3.3 Interactive Shell Behavior
---------------------------------
-
-When the shell is running interactively, it changes its behavior in
-several ways.
-
-  1. Startup files are read and executed as described in *note Bash
-     Startup Files::.
-
-  2. Job Control (*note Job Control::) is enabled by default.  When job
-     control is in effect, Bash ignores the keyboard-generated job
-     control signals `SIGTTIN', `SIGTTOU', and `SIGTSTP'.
-
-  3. Bash expands and displays `PS1' before reading the first line of a
-     command, and expands and displays `PS2' before reading the second
-     and subsequent lines of a multi-line command.
-
-  4. Bash executes the value of the `PROMPT_COMMAND' variable as a
-     command before printing the primary prompt, `$PS1' (*note Bash
-     Variables::).
-
-  5. Readline (*note Command Line Editing::) is used to read commands
-     from the user's terminal.
-
-  6. Bash inspects the value of the `ignoreeof' option to `set -o'
-     instead of exiting immediately when it receives an `EOF' on its
-     standard input when reading a command (*note The Set Builtin::).
-
-  7. Command history (*note Bash History Facilities::) and history
-     expansion (*note History Interaction::) are enabled by default.
-     Bash will save the command history to the file named by `$HISTFILE'
-     when a shell with history enabled exits.
-
-  8. Alias expansion (*note Aliases::) is performed by default.
-
-  9. In the absence of any traps, Bash ignores `SIGTERM' (*note
-     Signals::).
-
- 10. In the absence of any traps, `SIGINT' is caught and handled
-     ((*note Signals::).  `SIGINT' will interrupt some shell builtins.
-
- 11. An interactive login shell sends a `SIGHUP' to all jobs on exit if
-     the `huponexit' shell option has been enabled (*note Signals::).
-
- 12. The `-n' invocation option is ignored, and `set -n' has no effect
-     (*note The Set Builtin::).
-
- 13. Bash will check for mail periodically, depending on the values of
-     the `MAIL', `MAILPATH', and `MAILCHECK' shell variables (*note
-     Bash Variables::).
-
- 14. Expansion errors due to references to unbound shell variables after
-     `set -u' has been enabled will not cause the shell to exit (*note
-     The Set Builtin::).
-
- 15. The shell will not exit on expansion errors caused by VAR being
-     unset or null in `${VAR:?WORD}' expansions (*note Shell Parameter
-     Expansion::).
-
- 16. Redirection errors encountered by shell builtins will not cause the
-     shell to exit.
-
- 17. When running in POSIX mode, a special builtin returning an error
-     status will not cause the shell to exit (*note Bash POSIX Mode::).
-
- 18. A failed `exec' will not cause the shell to exit (*note Bourne
-     Shell Builtins::).
-
- 19. Parser syntax errors will not cause the shell to exit.
-
- 20. Simple spelling correction for directory arguments to the `cd'
-     builtin is enabled by default (see the description of the `cdspell'
-     option to the `shopt' builtin in *note The Shopt Builtin::).
-
- 21. The shell will check the value of the `TMOUT' variable and exit if
-     a command is not read within the specified number of seconds after
-     printing `$PS1' (*note Bash Variables::).
-
-
-\1f
-File: bash.info,  Node: Bash Conditional Expressions,  Next: Shell Arithmetic,  Prev: Interactive Shells,  Up: Bash Features
-
-6.4 Bash Conditional Expressions
-================================
-
-Conditional expressions are used by the `[[' compound command and the
-`test' and `[' builtin commands.
-
-   Expressions may be unary or binary.  Unary expressions are often
-used to examine the status of a file.  There are string operators and
-numeric comparison operators as well.  If the FILE argument to one of
-the primaries is of the form `/dev/fd/N', then file descriptor N is
-checked.  If the FILE argument to one of the primaries is one of
-`/dev/stdin', `/dev/stdout', or `/dev/stderr', file descriptor 0, 1, or
-2, respectively, is checked.
-
-   When used with `[[', the `<' and `>' operators sort
-lexicographically using the current locale.  The `test' command uses
-ASCII ordering.
-
-   Unless otherwise specified, primaries that operate on files follow
-symbolic links and operate on the target of the link, rather than the
-link itself.
-
-`-a FILE'
-     True if FILE exists.
-
-`-b FILE'
-     True if FILE exists and is a block special file.
-
-`-c FILE'
-     True if FILE exists and is a character special file.
-
-`-d FILE'
-     True if FILE exists and is a directory.
-
-`-e FILE'
-     True if FILE exists.
-
-`-f FILE'
-     True if FILE exists and is a regular file.
-
-`-g FILE'
-     True if FILE exists and its set-group-id bit is set.
-
-`-h FILE'
-     True if FILE exists and is a symbolic link.
-
-`-k FILE'
-     True if FILE exists and its "sticky" bit is set.
-
-`-p FILE'
-     True if FILE exists and is a named pipe (FIFO).
-
-`-r FILE'
-     True if FILE exists and is readable.
-
-`-s FILE'
-     True if FILE exists and has a size greater than zero.
-
-`-t FD'
-     True if file descriptor FD is open and refers to a terminal.
-
-`-u FILE'
-     True if FILE exists and its set-user-id bit is set.
-
-`-w FILE'
-     True if FILE exists and is writable.
-
-`-x FILE'
-     True if FILE exists and is executable.
-
-`-G FILE'
-     True if FILE exists and is owned by the effective group id.
-
-`-L FILE'
-     True if FILE exists and is a symbolic link.
-
-`-N FILE'
-     True if FILE exists and has been modified since it was last read.
-
-`-O FILE'
-     True if FILE exists and is owned by the effective user id.
-
-`-S FILE'
-     True if FILE exists and is a socket.
-
-`FILE1 -ef FILE2'
-     True if FILE1 and FILE2 refer to the same device and inode numbers.
-
-`FILE1 -nt FILE2'
-     True if FILE1 is newer (according to modification date) than
-     FILE2, or if FILE1 exists and FILE2 does not.
-
-`FILE1 -ot FILE2'
-     True if FILE1 is older than FILE2, or if FILE2 exists and FILE1
-     does not.
-
-`-o OPTNAME'
-     True if the shell option OPTNAME is enabled.  The list of options
-     appears in the description of the `-o' option to the `set' builtin
-     (*note The Set Builtin::).
-
-`-v VARNAME'
-     True if the shell variable VARNAME is set (has been assigned a
-     value).
-
-`-R VARNAME'
-     True if the shell variable VARNAME is set and is a name reference.
-
-`-z STRING'
-     True if the length of STRING is zero.
-
-`-n STRING'
-`STRING'
-     True if the length of STRING is non-zero.
-
-`STRING1 == STRING2'
-`STRING1 = STRING2'
-     True if the strings are equal.  When used with the `[[' command,
-     this performs pattern matching as described above (*note
-     Conditional Constructs::).
-
-     `=' should be used with the `test' command for POSIX conformance.
-
-`STRING1 != STRING2'
-     True if the strings are not equal.
-
-`STRING1 < STRING2'
-     True if STRING1 sorts before STRING2 lexicographically.
-
-`STRING1 > STRING2'
-     True if STRING1 sorts after STRING2 lexicographically.
-
-`ARG1 OP ARG2'
-     `OP' is one of `-eq', `-ne', `-lt', `-le', `-gt', or `-ge'.  These
-     arithmetic binary operators return true if ARG1 is equal to, not
-     equal to, less than, less than or equal to, greater than, or
-     greater than or equal to ARG2, respectively.  ARG1 and ARG2 may be
-     positive or negative integers.
-
-\1f
-File: bash.info,  Node: Shell Arithmetic,  Next: Aliases,  Prev: Bash Conditional Expressions,  Up: Bash Features
-
-6.5 Shell Arithmetic
-====================
-
-The shell allows arithmetic expressions to be evaluated, as one of the
-shell expansions or by the `let' and the `-i' option to the `declare'
-builtins.
-
-   Evaluation is done in fixed-width integers with no check for
-overflow, though division by 0 is trapped and flagged as an error.  The
-operators and their precedence, associativity, and values are the same
-as in the C language.  The following list of operators is grouped into
-levels of equal-precedence operators.  The levels are listed in order
-of decreasing precedence.
-
-`ID++ ID--'
-     variable post-increment and post-decrement
-
-`++ID --ID'
-     variable pre-increment and pre-decrement
-
-`- +'
-     unary minus and plus
-
-`! ~'
-     logical and bitwise negation
-
-`**'
-     exponentiation
-
-`* / %'
-     multiplication, division, remainder
-
-`+ -'
-     addition, subtraction
-
-`<< >>'
-     left and right bitwise shifts
-
-`<= >= < >'
-     comparison
-
-`== !='
-     equality and inequality
-
-`&'
-     bitwise AND
-
-`^'
-     bitwise exclusive OR
-
-`|'
-     bitwise OR
-
-`&&'
-     logical AND
-
-`||'
-     logical OR
-
-`expr ? expr : expr'
-     conditional operator
-
-`= *= /= %= += -= <<= >>= &= ^= |='
-     assignment
-
-`expr1 , expr2'
-     comma
-
-   Shell variables are allowed as operands; parameter expansion is
-performed before the expression is evaluated.  Within an expression,
-shell variables may also be referenced by name without using the
-parameter expansion syntax.  A shell variable that is null or unset
-evaluates to 0 when referenced by name without using the parameter
-expansion syntax.  The value of a variable is evaluated as an
-arithmetic expression when it is referenced, or when a variable which
-has been given the INTEGER attribute using `declare -i' is assigned a
-value.  A null value evaluates to 0.  A shell variable need not have
-its INTEGER attribute turned on to be used in an expression.
-
-   Constants with a leading 0 are interpreted as octal numbers.  A
-leading `0x' or `0X' denotes hexadecimal.  Otherwise, numbers take the
-form [BASE`#']N, where the optional BASE is a decimal number between 2
-and 64 representing the arithmetic base, and N is a number in that base.
-If BASE`#' is omitted, then base 10 is used.  When specifying N, he
-digits greater than 9 are represented by the lowercase letters, the
-uppercase letters, `@', and `_', in that order.  If BASE is less than
-or equal to 36, lowercase and uppercase letters may be used
-interchangeably to represent numbers between 10 and 35.
-
-   Operators are evaluated in order of precedence.  Sub-expressions in
-parentheses are evaluated first and may override the precedence rules
-above.
-
-\1f
-File: bash.info,  Node: Aliases,  Next: Arrays,  Prev: Shell Arithmetic,  Up: Bash Features
-
-6.6 Aliases
-===========
-
-ALIASES allow a string to be substituted for a word when it is used as
-the first word of a simple command.  The shell maintains a list of
-aliases that may be set and unset with the `alias' and `unalias'
-builtin commands.
-
-   The first word of each simple command, if unquoted, is checked to see
-if it has an alias.  If so, that word is replaced by the text of the
-alias.  The characters `/', `$', ``', `=' and any of the shell
-metacharacters or quoting characters listed above may not appear in an
-alias name.  The replacement text may contain any valid shell input,
-including shell metacharacters.  The first word of the replacement text
-is tested for aliases, but a word that is identical to an alias being
-expanded is not expanded a second time.  This means that one may alias
-`ls' to `"ls -F"', for instance, and Bash does not try to recursively
-expand the replacement text.  If the last character of the alias value
-is a BLANK, then the next command word following the alias is also
-checked for alias expansion.
-
-   Aliases are created and listed with the `alias' command, and removed
-with the `unalias' command.
-
-   There is no mechanism for using arguments in the replacement text,
-as in `csh'.  If arguments are needed, a shell function should be used
-(*note Shell Functions::).
-
-   Aliases are not expanded when the shell is not interactive, unless
-the `expand_aliases' shell option is set using `shopt' (*note The Shopt
-Builtin::).
-
-   The rules concerning the definition and use of aliases are somewhat
-confusing.  Bash always reads at least one complete line of input
-before executing any of the commands on that line.  Aliases are
-expanded when a command is read, not when it is executed.  Therefore, an
-alias definition appearing on the same line as another command does not
-take effect until the next line of input is read.  The commands
-following the alias definition on that line are not affected by the new
-alias.  This behavior is also an issue when functions are executed.
-Aliases are expanded when a function definition is read, not when the
-function is executed, because a function definition is itself a
-command.  As a consequence, aliases defined in a function are not
-available until after that function is executed.  To be safe, always put
-alias definitions on a separate line, and do not use `alias' in
-compound commands.
-
-   For almost every purpose, shell functions are preferred over aliases.
-
-\1f
-File: bash.info,  Node: Arrays,  Next: The Directory Stack,  Prev: Aliases,  Up: Bash Features
-
-6.7 Arrays
-==========
-
-Bash provides one-dimensional indexed and associative array variables.
-Any variable may be used as an indexed array; the `declare' builtin
-will explicitly declare an array.  There is no maximum limit on the
-size of an array, nor any requirement that members be indexed or
-assigned contiguously.  Indexed arrays are referenced using integers
-(including arithmetic expressions (*note Shell Arithmetic::)) and are
-zero-based; associative arrays use arbitrary strings.  Unless otherwise
-noted, indexed array indices must be non-negative integers.
-
-   An indexed array is created automatically if any variable is
-assigned to using the syntax
-     NAME[SUBSCRIPT]=VALUE
-
-The SUBSCRIPT is treated as an arithmetic expression that must evaluate
-to a number.  To explicitly declare an array, use
-     declare -a NAME
-   The syntax
-     declare -a NAME[SUBSCRIPT]
-   is also accepted; the SUBSCRIPT is ignored.
-
-Associative arrays are created using
-     declare -A NAME.
-
-   Attributes may be specified for an array variable using the
-`declare' and `readonly' builtins.  Each attribute applies to all
-members of an array.
-
-   Arrays are assigned to using compound assignments of the form
-     NAME=(VALUE1 VALUE2 ... )
-   where each VALUE is of the form `[SUBSCRIPT]='STRING.  Indexed array
-assignments do not require anything but STRING.  When assigning to
-indexed arrays, if the optional subscript is supplied, that index is
-assigned to; otherwise the index of the element assigned is the last
-index assigned to by the statement plus one.  Indexing starts at zero.
-
-   When assigning to an associative array, the subscript is required.
-
-   This syntax is also accepted by the `declare' builtin.  Individual
-array elements may be assigned to using the `NAME[SUBSCRIPT]=VALUE'
-syntax introduced above.
-
-   When assigning to an indexed array, if NAME is subscripted by a
-negative number, that number is interpreted as relative to one greater
-than the maximum index of NAME, so negative indices count back from the
-end of the array, and an index of -1 references the last element.
-
-   Any element of an array may be referenced using `${NAME[SUBSCRIPT]}'.
-The braces are required to avoid conflicts with the shell's filename
-expansion operators.  If the SUBSCRIPT is `@' or `*', the word expands
-to all members of the array NAME.  These subscripts differ only when
-the word appears within double quotes.  If the word is double-quoted,
-`${NAME[*]}' expands to a single word with the value of each array
-member separated by the first character of the `IFS' variable, and
-`${NAME[@]}' expands each element of NAME to a separate word.  When
-there are no array members, `${NAME[@]}' expands to nothing.  If the
-double-quoted expansion occurs within a word, the expansion of the
-first parameter is joined with the beginning part of the original word,
-and the expansion of the last parameter is joined with the last part of
-the original word.  This is analogous to the expansion of the special
-parameters `@' and `*'.  `${#NAME[SUBSCRIPT]}' expands to the length of
-`${NAME[SUBSCRIPT]}'.  If SUBSCRIPT is `@' or `*', the expansion is the
-number of elements in the array.  Referencing an array variable without
-a subscript is equivalent to referencing with a subscript of 0.  If the
-SUBSCRIPT used to reference an element of an indexed array evaluates to
-a number less than zero, it is interpreted as relative to one greater
-than the maximum index of the array, so negative indices count back
-from the end of the array, and an index of -1 refers to the last
-element.
-
-   An array variable is considered set if a subscript has been assigned
-a value.  The null string is a valid value.
-
-   It is possible to obtain the keys (indices) of an array as well as
-the values.  ${!NAME[@]} and ${!NAME[*]} expand to the indices assigned
-in array variable NAME.  The treatment when in double quotes is similar
-to the expansion of the special parameters `@' and `*' within double
-quotes.
-
-   The `unset' builtin is used to destroy arrays.  `unset
-NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT.
-Negative subscripts to indexed arrays are interpreted as described
-above.  Care must be taken to avoid unwanted side effects caused by
-filename expansion.  `unset NAME', where NAME is an array, removes the
-entire array.  A subscript of `*' or `@' also removes the entire array.
-
-   The `declare', `local', and `readonly' builtins each accept a `-a'
-option to specify an indexed array and a `-A' option to specify an
-associative array.  If both options are supplied, `-A' takes precedence.
-The `read' builtin accepts a `-a' option to assign a list of words read
-from the standard input to an array, and can read values from the
-standard input into individual array elements.  The `set' and `declare'
-builtins display array values in a way that allows them to be reused as
-input.
-
-\1f
-File: bash.info,  Node: The Directory Stack,  Next: Controlling the Prompt,  Prev: Arrays,  Up: Bash Features
-
-6.8 The Directory Stack
-=======================
-
-* Menu:
-
-* Directory Stack Builtins::           Bash builtin commands to manipulate
-                                       the directory stack.
-
-   The directory stack is a list of recently-visited directories.  The
-`pushd' builtin adds directories to the stack as it changes the current
-directory, and the `popd' builtin removes specified directories from
-the stack and changes the current directory to the directory removed.
-The `dirs' builtin displays the contents of the directory stack.
-
-   The contents of the directory stack are also visible as the value of
-the `DIRSTACK' shell variable.
-
-\1f
-File: bash.info,  Node: Directory Stack Builtins,  Up: The Directory Stack
-
-6.8.1 Directory Stack Builtins
-------------------------------
-
-`dirs'
-          dirs [-clpv] [+N | -N]
-
-     Display the list of currently remembered directories.  Directories
-     are added to the list with the `pushd' command; the `popd' command
-     removes directories from the list.
-
-    `-c'
-          Clears the directory stack by deleting all of the elements.
-
-    `-l'
-          Produces a listing using full pathnames; the default listing
-          format uses a tilde to denote the home directory.
-
-    `-p'
-          Causes `dirs' to print the directory stack with one entry per
-          line.
-
-    `-v'
-          Causes `dirs' to print the directory stack with one entry per
-          line, prefixing each entry with its index in the stack.
-
-    `+N'
-          Displays the Nth directory (counting from the left of the
-          list printed by `dirs' when invoked without options), starting
-          with zero.
-
-    `-N'
-          Displays the Nth directory (counting from the right of the
-          list printed by `dirs' when invoked without options), starting
-          with zero.
-
-`popd'
-          popd [-n] [+N | -N]
-
-     Remove the top entry from the directory stack, and `cd' to the new
-     top directory.  When no arguments are given, `popd' removes the
-     top directory from the stack and performs a `cd' to the new top
-     directory.  The elements are numbered from 0 starting at the first
-     directory listed with `dirs'; that is, `popd' is equivalent to
-     `popd +0'.
-
-    `-n'
-          Suppresses the normal change of directory when removing
-          directories from the stack, so that only the stack is
-          manipulated.
-
-    `+N'
-          Removes the Nth directory (counting from the left of the list
-          printed by `dirs'), starting with zero.
-
-    `-N'
-          Removes the Nth directory (counting from the right of the
-          list printed by `dirs'), starting with zero.
-
-`pushd'
-          pushd [-n] [+N | -N | DIR]
-
-     Save the current directory on the top of the directory stack and
-     then `cd' to DIR.  With no arguments, `pushd' exchanges the top
-     two directories.
-
-    `-n'
-          Suppresses the normal change of directory when adding
-          directories to the stack, so that only the stack is
-          manipulated.
-
-    `+N'
-          Brings the Nth directory (counting from the left of the list
-          printed by `dirs', starting with zero) to the top of the list
-          by rotating the stack.
-
-    `-N'
-          Brings the Nth directory (counting from the right of the list
-          printed by `dirs', starting with zero) to the top of the list
-          by rotating the stack.
-
-    `DIR'
-          Makes the current working directory be the top of the stack,
-          making it the new current directory as if it had been
-          supplied as an argument to the `cd' builtin.
-
-\1f
-File: bash.info,  Node: Controlling the Prompt,  Next: The Restricted Shell,  Prev: The Directory Stack,  Up: Bash Features
-
-6.9 Controlling the Prompt
-==========================
-
-The value of the variable `PROMPT_COMMAND' is examined just before Bash
-prints each primary prompt.  If `PROMPT_COMMAND' is set and has a
-non-null value, then the value is executed just as if it had been typed
-on the command line.
-
-   In addition, the following table describes the special characters
-which can appear in the prompt variables `PS1' to `PS4':
-
-`\a'
-     A bell character.
-
-`\d'
-     The date, in "Weekday Month Date" format (e.g., "Tue May 26").
-
-`\D{FORMAT}'
-     The FORMAT is passed to `strftime'(3) and the result is inserted
-     into the prompt string; an empty FORMAT results in a
-     locale-specific time representation.  The braces are required.
-
-`\e'
-     An escape character.
-
-`\h'
-     The hostname, up to the first `.'.
-
-`\H'
-     The hostname.
-
-`\j'
-     The number of jobs currently managed by the shell.
-
-`\l'
-     The basename of the shell's terminal device name.
-
-`\n'
-     A newline.
-
-`\r'
-     A carriage return.
-
-`\s'
-     The name of the shell, the basename of `$0' (the portion following
-     the final slash).
-
-`\t'
-     The time, in 24-hour HH:MM:SS format.
-
-`\T'
-     The time, in 12-hour HH:MM:SS format.
-
-`\@'
-     The time, in 12-hour am/pm format.
-
-`\A'
-     The time, in 24-hour HH:MM format.
-
-`\u'
-     The username of the current user.
-
-`\v'
-     The version of Bash (e.g., 2.00)
-
-`\V'
-     The release of Bash, version + patchlevel (e.g., 2.00.0)
-
-`\w'
-     The current working directory, with `$HOME' abbreviated with a
-     tilde (uses the `$PROMPT_DIRTRIM' variable).
-
-`\W'
-     The basename of `$PWD', with `$HOME' abbreviated with a tilde.
-
-`\!'
-     The history number of this command.
-
-`\#'
-     The command number of this command.
-
-`\$'
-     If the effective uid is 0, `#', otherwise `$'.
-
-`\NNN'
-     The character whose ASCII code is the octal value NNN.
-
-`\\'
-     A backslash.
-
-`\['
-     Begin a sequence of non-printing characters.  This could be used to
-     embed a terminal control sequence into the prompt.
-
-`\]'
-     End a sequence of non-printing characters.
-
-   The command number and the history number are usually different: the
-history number of a command is its position in the history list, which
-may include commands restored from the history file (*note Bash History
-Facilities::), while the command number is the position in the sequence
-of commands executed during the current shell session.
-
-   After the string is decoded, it is expanded via parameter expansion,
-command substitution, arithmetic expansion, and quote removal, subject
-to the value of the `promptvars' shell option (*note Bash Builtins::).
-
-\1f
-File: bash.info,  Node: The Restricted Shell,  Next: Bash POSIX Mode,  Prev: Controlling the Prompt,  Up: Bash Features
-
-6.10 The Restricted Shell
-=========================
-
-If Bash is started with the name `rbash', or the `--restricted' or `-r'
-option is supplied at invocation, the shell becomes restricted.  A
-restricted shell is used to set up an environment more controlled than
-the standard shell.  A restricted shell behaves identically to `bash'
-with the exception that the following are disallowed or not performed:
-
-   * Changing directories with the `cd' builtin.
-
-   * Setting or unsetting the values of the `SHELL', `PATH', `ENV', or
-     `BASH_ENV' variables.
-
-   * Specifying command names containing slashes.
-
-   * Specifying a filename containing a slash as an argument to the `.'
-     builtin command.
-
-   * Specifying a filename containing a slash as an argument to the `-p'
-     option to the `hash' builtin command.
-
-   * Importing function definitions from the shell environment at
-     startup.
-
-   * Parsing the value of `SHELLOPTS' from the shell environment at
-     startup.
-
-   * Redirecting output using the `>', `>|', `<>', `>&', `&>', and `>>'
-     redirection operators.
-
-   * Using the `exec' builtin to replace the shell with another command.
-
-   * Adding or deleting builtin commands with the `-f' and `-d' options
-     to the `enable' builtin.
-
-   * Using the `enable' builtin command to enable disabled shell
-     builtins.
-
-   * Specifying the `-p' option to the `command' builtin.
-
-   * Turning off restricted mode with `set +r' or `set +o restricted'.
-
-   These restrictions are enforced after any startup files are read.
-
-   When a command that is found to be a shell script is executed (*note
-Shell Scripts::), `rbash' turns off any restrictions in the shell
-spawned to execute the script.
-
-\1f
-File: bash.info,  Node: Bash POSIX Mode,  Prev: The Restricted Shell,  Up: Bash Features
-
-6.11 Bash POSIX Mode
-====================
-
-Starting Bash with the `--posix' command-line option or executing `set
--o posix' while Bash is running will cause Bash to conform more closely
-to the POSIX standard by changing the behavior to match that specified
-by POSIX in areas where the Bash default differs.
-
-   When invoked as `sh', Bash enters POSIX mode after reading the
-startup files.
-
-   The following list is what's changed when `POSIX mode' is in effect:
-
-  1. When a command in the hash table no longer exists, Bash will
-     re-search `$PATH' to find the new location.  This is also
-     available with `shopt -s checkhash'.
-
-  2. The message printed by the job control code and builtins when a job
-     exits with a non-zero status is `Done(status)'.
-
-  3. The message printed by the job control code and builtins when a job
-     is stopped is `Stopped(SIGNAME)', where SIGNAME is, for example,
-     `SIGTSTP'.
-
-  4. The `bg' builtin uses the required format to describe each job
-     placed in the background, which does not include an indication of
-     whether the job is the current or previous job.
-
-  5. Reserved words appearing in a context where reserved words are
-     recognized do not undergo alias expansion.
-
-  6. The POSIX `PS1' and `PS2' expansions of `!' to the history number
-     and `!!' to `!' are enabled, and parameter expansion is performed
-     on the values of `PS1' and `PS2' regardless of the setting of the
-     `promptvars' option.
-
-  7. The POSIX startup files are executed (`$ENV') rather than the
-     normal Bash files.
-
-  8. Tilde expansion is only performed on assignments preceding a
-     command name, rather than on all assignment statements on the line.
-
-  9. The `command' builtin does not prevent builtins that take
-     assignment statements as arguments from expanding them as
-     assignment statements; when not in POSIX mode, assignment builtins
-     lose their assignment statement expansion properties when preceded
-     by `command'.
-
- 10. The default history file is `~/.sh_history' (this is the default
-     value of `$HISTFILE').
-
- 11. The output of `kill -l' prints all the signal names on a single
-     line, separated by spaces, without the `SIG' prefix.
-
- 12. The `kill' builtin does not accept signal names with a `SIG'
-     prefix.
-
- 13. Non-interactive shells exit if FILENAME in `.' FILENAME is not
-     found.
-
- 14. Non-interactive shells exit if a syntax error in an arithmetic
-     expansion results in an invalid expression.
-
- 15. Non-interactive shells exit if there is a syntax error in a script
-     read with the `.' or `source' builtins, or in a string processed by
-     the `eval' builtin.
-
- 16. Redirection operators do not perform filename expansion on the word
-     in the redirection unless the shell is interactive.
-
- 17. Redirection operators do not perform word splitting on the word in
-     the redirection.
-
- 18. Function names must be valid shell `name's.  That is, they may not
-     contain characters other than letters, digits, and underscores, and
-     may not start with a digit.  Declaring a function with an invalid
-     name causes a fatal syntax error in non-interactive shells.
-
- 19. Function names may not be the same as one of the POSIX special
-     builtins.
-
- 20. POSIX special builtins are found before shell functions during
-     command lookup.
-
- 21. Literal tildes that appear as the first character in elements of
-     the `PATH' variable are not expanded as described above under
-     *note Tilde Expansion::.
-
- 22. The `time' reserved word may be used by itself as a command.  When
-     used in this way, it displays timing statistics for the shell and
-     its completed children.  The `TIMEFORMAT' variable controls the
-     format of the timing information.
-
- 23. When parsing and expanding a ${...} expansion that appears within
-     double quotes, single quotes are no longer special and cannot be
-     used to quote a closing brace or other special character, unless
-     the operator is one of those defined to perform pattern removal.
-     In this case, they do not have to appear as matched pairs.
-
- 24. The parser does not recognize `time' as a reserved word if the next
-     token begins with a `-'.
-
- 25. If a POSIX special builtin returns an error status, a
-     non-interactive shell exits.  The fatal errors are those listed in
-     the POSIX standard, and include things like passing incorrect
-     options, redirection errors, variable assignment errors for
-     assignments preceding the command name, and so on.
-
- 26. A non-interactive shell exits with an error status if a variable
-     assignment error occurs when no command name follows the assignment
-     statements.  A variable assignment error occurs, for example, when
-     trying to assign a value to a readonly variable.
-
- 27. A non-interactive shell exits with an error status if a variable
-     assignment error occurs in an assignment statement preceding a
-     special builtin, but not with any other simple command.
-
- 28. A non-interactive shell exits with an error status if the iteration
-     variable in a `for' statement or the selection variable in a
-     `select' statement is a readonly variable.
-
- 29. Process substitution is not available.
-
- 30. While variable indirection is available, it may not be applied to
-     the `#' and `?' special parameters.
-
- 31. Assignment statements preceding POSIX special builtins persist in
-     the shell environment after the builtin completes.
-
- 32. Assignment statements preceding shell function calls persist in the
-     shell environment after the function returns, as if a POSIX
-     special builtin command had been executed.
-
- 33. The `export' and `readonly' builtin commands display their output
-     in the format required by POSIX.
-
- 34. The `trap' builtin displays signal names without the leading `SIG'.
-
- 35. The `trap' builtin doesn't check the first argument for a possible
-     signal specification and revert the signal handling to the original
-     disposition if it is, unless that argument consists solely of
-     digits and is a valid signal number.  If users want to reset the
-     handler for a given signal to the original disposition, they
-     should use `-' as the first argument.
-
- 36. The `.' and `source' builtins do not search the current directory
-     for the filename argument if it is not found by searching `PATH'.
-
- 37. Subshells spawned to execute command substitutions inherit the
-     value of the `-e' option from the parent shell.  When not in POSIX
-     mode, Bash clears the `-e' option in such subshells.
-
- 38. Alias expansion is always enabled, even in non-interactive shells.
-
- 39. When the `alias' builtin displays alias definitions, it does not
-     display them with a leading `alias ' unless the `-p' option is
-     supplied.
-
- 40. When the `set' builtin is invoked without options, it does not
-     display shell function names and definitions.
-
- 41. When the `set' builtin is invoked without options, it displays
-     variable values without quotes, unless they contain shell
-     metacharacters, even if the result contains nonprinting characters.
-
- 42. When the `cd' builtin is invoked in LOGICAL mode, and the pathname
-     constructed from `$PWD' and the directory name supplied as an
-     argument does not refer to an existing directory, `cd' will fail
-     instead of falling back to PHYSICAL mode.
-
- 43. The `pwd' builtin verifies that the value it prints is the same as
-     the current directory, even if it is not asked to check the file
-     system with the `-P' option.
-
- 44. When listing the history, the `fc' builtin does not include an
-     indication of whether or not a history entry has been modified.
-
- 45. The default editor used by `fc' is `ed'.
-
- 46. The `type' and `command' builtins will not report a non-executable
-     file as having been found, though the shell will attempt to
-     execute such a file if it is the only so-named file found in
-     `$PATH'.
-
- 47. The `vi' editing mode will invoke the `vi' editor directly when
-     the `v' command is run, instead of checking `$VISUAL' and
-     `$EDITOR'.
-
- 48. When the `xpg_echo' option is enabled, Bash does not attempt to
-     interpret any arguments to `echo' as options.  Each argument is
-     displayed, after escape characters are converted.
-
- 49. The `ulimit' builtin uses a block size of 512 bytes for the `-c'
-     and `-f' options.
-
- 50. The arrival of `SIGCHLD'  when a trap is set on `SIGCHLD' does not
-     interrupt the `wait' builtin and cause it to return immediately.
-     The trap command is run once for each child that exits.
-
- 51. The `read' builtin may be interrupted by a signal for which a trap
-     has been set.  If Bash receives a trapped signal while executing
-     `read', the trap handler executes and `read' returns an exit
-     status greater than 128.
-
-
-   There is other POSIX behavior that Bash does not implement by
-default even when in POSIX mode.  Specifically:
-
-  1. The `fc' builtin checks `$EDITOR' as a program to edit history
-     entries if `FCEDIT' is unset, rather than defaulting directly to
-     `ed'.  `fc' uses `ed' if `EDITOR' is unset.
-
-  2. As noted above, Bash requires the `xpg_echo' option to be enabled
-     for the `echo' builtin to be fully conformant.
-
-
-   Bash can be configured to be POSIX-conformant by default, by
-specifying the `--enable-strict-posix-default' to `configure' when
-building (*note Optional Features::).
-
-\1f
-File: bash.info,  Node: Job Control,  Next: Command Line Editing,  Prev: Bash Features,  Up: Top
-
-7 Job Control
-*************
-
-This chapter discusses what job control is, how it works, and how Bash
-allows you to access its facilities.
-
-* Menu:
-
-* Job Control Basics::         How job control works.
-* Job Control Builtins::       Bash builtin commands used to interact
-                               with job control.
-* Job Control Variables::      Variables Bash uses to customize job
-                               control.
-
-\1f
-File: bash.info,  Node: Job Control Basics,  Next: Job Control Builtins,  Up: Job Control
-
-7.1 Job Control Basics
-======================
-
-Job control refers to the ability to selectively stop (suspend) the
-execution of processes and continue (resume) their execution at a later
-point.  A user typically employs this facility via an interactive
-interface supplied jointly by the operating system kernel's terminal
-driver and Bash.
-
-   The shell associates a JOB with each pipeline.  It keeps a table of
-currently executing jobs, which may be listed with the `jobs' command.
-When Bash starts a job asynchronously, it prints a line that looks like:
-     [1] 25647
-   indicating that this job is job number 1 and that the process ID of
-the last process in the pipeline associated with this job is 25647.
-All of the processes in a single pipeline are members of the same job.
-Bash uses the JOB abstraction as the basis for job control.
-
-   To facilitate the implementation of the user interface to job
-control, the operating system maintains the notion of a current terminal
-process group ID.  Members of this process group (processes whose
-process group ID is equal to the current terminal process group ID)
-receive keyboard-generated signals such as `SIGINT'.  These processes
-are said to be in the foreground.  Background processes are those whose
-process group ID differs from the terminal's; such processes are immune
-to keyboard-generated signals.  Only foreground processes are allowed
-to read from or, if the user so specifies with `stty tostop', write to
-the terminal.  Background processes which attempt to read from (write
-to when `stty tostop' is in effect) the terminal are sent a `SIGTTIN'
-(`SIGTTOU') signal by the kernel's terminal driver, which, unless
-caught, suspends the process.
-
-   If the operating system on which Bash is running supports job
-control, Bash contains facilities to use it.  Typing the SUSPEND
-character (typically `^Z', Control-Z) while a process is running causes
-that process to be stopped and returns control to Bash.  Typing the
-DELAYED SUSPEND character (typically `^Y', Control-Y) causes the
-process to be stopped when it attempts to read input from the terminal,
-and control to be returned to Bash.  The user then manipulates the
-state of this job, using the `bg' command to continue it in the
-background, the `fg' command to continue it in the foreground, or the
-`kill' command to kill it.  A `^Z' takes effect immediately, and has
-the additional side effect of causing pending output and typeahead to
-be discarded.
-
-   There are a number of ways to refer to a job in the shell.  The
-character `%' introduces a job specification (JOBSPEC).
-
-   Job number `n' may be referred to as `%n'.  The symbols `%%' and
-`%+' refer to the shell's notion of the current job, which is the last
-job stopped while it was in the foreground or started in the background.
-A single `%' (with no accompanying job specification) also refers to
-the current job.  The previous job may be referenced using `%-'.  If
-there is only a single job, `%+' and `%-' can both be used to refer to
-that job.  In output pertaining to jobs (e.g., the output of the `jobs'
-command), the current job is always flagged with a `+', and the
-previous job with a `-'.
-
-   A job may also be referred to using a prefix of the name used to
-start it, or using a substring that appears in its command line.  For
-example, `%ce' refers to a stopped `ce' job.  Using `%?ce', on the
-other hand, refers to any job containing the string `ce' in its command
-line.  If the prefix or substring matches more than one job, Bash
-reports an error.
-
-   Simply naming a job can be used to bring it into the foreground:
-`%1' is a synonym for `fg %1', bringing job 1 from the background into
-the foreground.  Similarly, `%1 &' resumes job 1 in the background,
-equivalent to `bg %1'
-
-   The shell learns immediately whenever a job changes state.
-Normally, Bash waits until it is about to print a prompt before
-reporting changes in a job's status so as to not interrupt any other
-output.  If the `-b' option to the `set' builtin is enabled, Bash
-reports such changes immediately (*note The Set Builtin::).  Any trap
-on `SIGCHLD' is executed for each child process that exits.
-
-   If an attempt to exit Bash is made while jobs are stopped, (or
-running, if the `checkjobs' option is enabled - see *note The Shopt
-Builtin::), the shell prints a warning message, and if the `checkjobs'
-option is enabled, lists the jobs and their statuses.  The `jobs'
-command may then be used to inspect their status.  If a second attempt
-to exit is made without an intervening command, Bash does not print
-another warning, and any stopped jobs are terminated.
-
-\1f
-File: bash.info,  Node: Job Control Builtins,  Next: Job Control Variables,  Prev: Job Control Basics,  Up: Job Control
-
-7.2 Job Control Builtins
-========================
-
-`bg'
-          bg [JOBSPEC ...]
-
-     Resume each suspended job JOBSPEC in the background, as if it had
-     been started with `&'.  If JOBSPEC is not supplied, the current
-     job is used.  The return status is zero unless it is run when job
-     control is not enabled, or, when run with job control enabled, any
-     JOBSPEC was not found or specifies a job that was started without
-     job control.
-
-`fg'
-          fg [JOBSPEC]
-
-     Resume the job JOBSPEC in the foreground and make it the current
-     job.  If JOBSPEC is not supplied, the current job is used.  The
-     return status is that of the command placed into the foreground,
-     or non-zero if run when job control is disabled or, when run with
-     job control enabled, JOBSPEC does not specify a valid job or
-     JOBSPEC specifies a job that was started without job control.
-
-`jobs'
-          jobs [-lnprs] [JOBSPEC]
-          jobs -x COMMAND [ARGUMENTS]
-
-     The first form lists the active jobs.  The options have the
-     following meanings:
-
-    `-l'
-          List process IDs in addition to the normal information.
-
-    `-n'
-          Display information only about jobs that have changed status
-          since the user was last notified of their status.
-
-    `-p'
-          List only the process ID of the job's process group leader.
-
-    `-r'
-          Display only running jobs.
-
-    `-s'
-          Display only stopped jobs.
-
-     If JOBSPEC is given, output is restricted to information about
-     that job.  If JOBSPEC is not supplied, the status of all jobs is
-     listed.
-
-     If the `-x' option is supplied, `jobs' replaces any JOBSPEC found
-     in COMMAND or ARGUMENTS with the corresponding process group ID,
-     and executes COMMAND, passing it ARGUMENTs, returning its exit
-     status.
-
-`kill'
-          kill [-s SIGSPEC] [-n SIGNUM] [-SIGSPEC] JOBSPEC or PID
-          kill -l [EXIT_STATUS]
-
-     Send a signal specified by SIGSPEC or SIGNUM to the process named
-     by job specification JOBSPEC or process ID PID.  SIGSPEC is either
-     a case-insensitive signal name such as `SIGINT' (with or without
-     the `SIG' prefix) or a signal number; SIGNUM is a signal number.
-     If SIGSPEC and SIGNUM are not present, `SIGTERM' is used.  The
-     `-l' option lists the signal names.  If any arguments are supplied
-     when `-l' is given, the names of the signals corresponding to the
-     arguments are listed, and the return status is zero.  EXIT_STATUS
-     is a number specifying a signal number or the exit status of a
-     process terminated by a signal.  The return status is zero if at
-     least one signal was successfully sent, or non-zero if an error
-     occurs or an invalid option is encountered.
-
-`wait'
-          wait [-n] [JOBSPEC or PID ...]
-
-     Wait until the child process specified by each process ID PID or
-     job specification JOBSPEC exits and return the exit status of the
-     last command waited for.  If a job spec is given, all processes in
-     the job are waited for.  If no arguments are given, all currently
-     active child processes are waited for, and the return status is
-     zero.  If the `-n' option is supplied, `wait' waits for any job to
-     terminate and returns its exit status.  If neither JOBSPEC nor PID
-     specifies an active child process of the shell, the return status
-     is 127.
-
-`disown'
-          disown [-ar] [-h] [JOBSPEC ...]
-
-     Without options, remove each JOBSPEC from the table of active jobs.
-     If the `-h' option is given, the job is not removed from the table,
-     but is marked so that `SIGHUP' is not sent to the job if the shell
-     receives a `SIGHUP'.  If JOBSPEC is not present, and neither the
-     `-a' nor the `-r' option is supplied, the current job is used.  If
-     no JOBSPEC is supplied, the `-a' option means to remove or mark
-     all jobs; the `-r' option without a JOBSPEC argument restricts
-     operation to running jobs.
-
-`suspend'
-          suspend [-f]
-
-     Suspend the execution of this shell until it receives a `SIGCONT'
-     signal.  A login shell cannot be suspended; the `-f' option can be
-     used to override this and force the suspension.
-
-   When job control is not active, the `kill' and `wait' builtins do
-not accept JOBSPEC arguments.  They must be supplied process IDs.
-
-\1f
-File: bash.info,  Node: Job Control Variables,  Prev: Job Control Builtins,  Up: Job Control
-
-7.3 Job Control Variables
-=========================
-
-`auto_resume'
-     This variable controls how the shell interacts with the user and
-     job control.  If this variable exists then single word simple
-     commands without redirections are treated as candidates for
-     resumption of an existing job.  There is no ambiguity allowed; if
-     there is more than one job beginning with the string typed, then
-     the most recently accessed job will be selected.  The name of a
-     stopped job, in this context, is the command line used to start
-     it.  If this variable is set to the value `exact', the string
-     supplied must match the name of a stopped job exactly; if set to
-     `substring', the string supplied needs to match a substring of the
-     name of a stopped job.  The `substring' value provides
-     functionality analogous to the `%?' job ID (*note Job Control
-     Basics::).  If set to any other value, the supplied string must be
-     a prefix of a stopped job's name; this provides functionality
-     analogous to the `%' job ID.
-
-
-\1f
-File: bash.info,  Node: Command Line Editing,  Next: Using History Interactively,  Prev: Job Control,  Up: Top
-
-8 Command Line Editing
-**********************
-
-This chapter describes the basic features of the GNU command line
-editing interface.  Command line editing is provided by the Readline
-library, which is used by several different programs, including Bash.
-Command line editing is enabled by default when using an interactive
-shell, unless the `--noediting' option is supplied at shell invocation.
-Line editing is also used when using the `-e' option to the `read'
-builtin command (*note Bash Builtins::).  By default, the line editing
-commands are similar to those of Emacs.  A vi-style line editing
-interface is also available.  Line editing can be enabled at any time
-using the `-o emacs' or `-o vi' options to the `set' builtin command
-(*note The Set Builtin::), or disabled using the `+o emacs' or `+o vi'
-options to `set'.
-
-* Menu:
-
-* Introduction and Notation::  Notation used in this text.
-* Readline Interaction::       The minimum set of commands for editing a line.
-* Readline Init File::         Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
-                               available for binding
-* Readline vi Mode::           A short description of how to make Readline
-                               behave like the vi editor.
-
-* Programmable Completion::    How to specify the possible completions for
-                               a specific command.
-* Programmable Completion Builtins::   Builtin commands to specify how to
-                               complete arguments for a particular command.
-* A Programmable Completion Example::  An example shell function for
-                               generating possible completions.
-
-\1f
-File: bash.info,  Node: Introduction and Notation,  Next: Readline Interaction,  Up: Command Line Editing
-
-8.1 Introduction to Line Editing
-================================
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-
-   The text `C-k' is read as `Control-K' and describes the character
-produced when the <k> key is pressed while the Control key is depressed.
-
-   The text `M-k' is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed.  The Meta key is labeled <ALT> on many keyboards.  On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key.  The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
-   If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>.  Either process is known as "metafying"
-the <k> key.
-
-   The text `M-C-k' is read as `Meta-Control-k' and describes the
-character produced by "metafying" `C-k'.
-
-   In addition, several keys have their own names.  Specifically,
-<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
-when seen in this text, or in an init file (*note Readline Init File::).
-If your keyboard lacks a <LFD> key, typing <C-j> will produce the
-desired character.  The <RET> key may be labeled <Return> or <Enter> on
-some keyboards.
-
-\1f
-File: bash.info,  Node: Readline Interaction,  Next: Readline Init File,  Prev: Introduction and Notation,  Up: Command Line Editing
-
-8.2 Readline Interaction
-========================
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press <RET>.  You do not have to be at the end of
-the line to press <RET>; the entire line is accepted regardless of the
-location of the cursor within the line.
-
-* Menu:
-
-* Readline Bare Essentials::   The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands::  How to delete text, and how to get it back!
-* Readline Arguments::         Giving numeric arguments to commands.
-* Searching::                  Searching through previous lines.
-
-\1f
-File: bash.info,  Node: Readline Bare Essentials,  Next: Readline Movement Commands,  Up: Readline Interaction
-
-8.2.1 Readline Bare Essentials
-------------------------------
-
-In order to enter characters into the line, simply type them.  The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your erase
-character to back up and delete the mistyped character.
-
-   Sometimes you may mistype a character, and not notice the error
-until you have typed several other characters.  In that case, you can
-type `C-b' to move the cursor to the left, and then correct your
-mistake.  Afterwards, you can move the cursor to the right with `C-f'.
-
-   When you add text in the middle of a line, you will notice that
-characters to the right of the cursor are `pushed over' to make room
-for the text that you have inserted.  Likewise, when you delete text
-behind the cursor, characters to the right of the cursor are `pulled
-back' to fill in the blank space created by the removal of the text.  A
-list of the bare essentials for editing the text of an input line
-follows.
-
-`C-b'
-     Move back one character.
-
-`C-f'
-     Move forward one character.
-
-<DEL> or <Backspace>
-     Delete the character to the left of the cursor.
-
-`C-d'
-     Delete the character underneath the cursor.
-
-Printing characters
-     Insert the character into the line at the cursor.
-
-`C-_' or `C-x C-u'
-     Undo the last editing command.  You can undo all the way back to an
-     empty line.
-
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like `C-d', rather than the
-character to the left of the cursor.)
-
-\1f
-File: bash.info,  Node: Readline Movement Commands,  Next: Readline Killing Commands,  Prev: Readline Bare Essentials,  Up: Readline Interaction
-
-8.2.2 Readline Movement Commands
---------------------------------
-
-The above table describes the most basic keystrokes that you need in
-order to do editing of the input line.  For your convenience, many
-other commands have been added in addition to `C-b', `C-f', `C-d', and
-<DEL>.  Here are some commands for moving more rapidly about the line.
-
-`C-a'
-     Move to the start of the line.
-
-`C-e'
-     Move to the end of the line.
-
-`M-f'
-     Move forward a word, where a word is composed of letters and
-     digits.
-
-`M-b'
-     Move backward a word.
-
-`C-l'
-     Clear the screen, reprinting the current line at the top.
-
-   Notice how `C-f' moves forward a character, while `M-f' moves
-forward a word.  It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-
-\1f
-File: bash.info,  Node: Readline Killing Commands,  Next: Readline Arguments,  Prev: Readline Movement Commands,  Up: Readline Interaction
-
-8.2.3 Readline Killing Commands
--------------------------------
-
-"Killing" text means to delete the text from the line, but to save it
-away for later use, usually by "yanking" (re-inserting) it back into
-the line.  (`Cut' and `paste' are more recent jargon for `kill' and
-`yank'.)
-
-   If the description for a command says that it `kills' text, then you
-can be sure that you can get the text back in a different (or the same)
-place later.
-
-   When you use a kill command, the text is saved in a "kill-ring".
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill ring is not line
-specific; the text that you killed on a previously typed line is
-available to be yanked back later, when you are typing another line.  
-
-   Here is the list of commands for killing text.
-
-`C-k'
-     Kill the text from the current cursor position to the end of the
-     line.
-
-`M-d'
-     Kill from the cursor to the end of the current word, or, if between
-     words, to the end of the next word.  Word boundaries are the same
-     as those used by `M-f'.
-
-`M-<DEL>'
-     Kill from the cursor the start of the current word, or, if between
-     words, to the start of the previous word.  Word boundaries are the
-     same as those used by `M-b'.
-
-`C-w'
-     Kill from the cursor to the previous whitespace.  This is
-     different than `M-<DEL>' because the word boundaries differ.
-
-
-   Here is how to "yank" the text back into the line.  Yanking means to
-copy the most-recently-killed text from the kill buffer.
-
-`C-y'
-     Yank the most recently killed text back into the buffer at the
-     cursor.
-
-`M-y'
-     Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is `C-y' or `M-y'.
-
-\1f
-File: bash.info,  Node: Readline Arguments,  Next: Searching,  Prev: Readline Killing Commands,  Up: Readline Interaction
-
-8.2.4 Readline Arguments
-------------------------
-
-You can pass numeric arguments to Readline commands.  Sometimes the
-argument acts as a repeat count, other times it is the sign of the
-argument that is significant.  If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
-start of the line, you might type `M-- C-k'.
-
-   The general way to pass numeric arguments to a command is to type
-meta digits before the command.  If the first `digit' typed is a minus
-sign (`-'), then the sign of the argument will be negative.  Once you
-have typed one meta digit to get the argument started, you can type the
-remainder of the digits, and then the command.  For example, to give
-the `C-d' command an argument of 10, you could type `M-1 0 C-d', which
-will delete the next ten characters on the input line.
-
-\1f
-File: bash.info,  Node: Searching,  Prev: Readline Arguments,  Up: Readline Interaction
-
-8.2.5 Searching for Commands in the History
--------------------------------------------
-
-Readline provides commands for searching through the command history
-(*note Bash History Facilities::) for lines containing a specified
-string.  There are two search modes:  "incremental" and
-"non-incremental".
-
-   Incremental searches begin before the user has finished typing the
-search string.  As each character of the search string is typed,
-Readline displays the next entry from the history matching the string
-typed so far.  An incremental search requires only as many characters
-as needed to find the desired history entry.  To search backward in the
-history for a particular string, type `C-r'.  Typing `C-s' searches
-forward through the history.  The characters present in the value of
-the `isearch-terminators' variable are used to terminate an incremental
-search.  If that variable has not been assigned a value, the <ESC> and
-`C-J' characters will terminate an incremental search.  `C-g' will
-abort an incremental search and restore the original line.  When the
-search is terminated, the history entry containing the search string
-becomes the current line.
-
-   To find other matching entries in the history list, type `C-r' or
-`C-s' as appropriate.  This will search backward or forward in the
-history for the next entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate the
-search and execute that command.  For instance, a <RET> will terminate
-the search and accept the line, thereby executing the command from the
-history list.  A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
-   Readline remembers the last incremental search string.  If two
-`C-r's are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-
-   Non-incremental searches read the entire search string before
-starting to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
-
-\1f
-File: bash.info,  Node: Readline Init File,  Next: Bindable Readline Commands,  Prev: Readline Interaction,  Up: Command Line Editing
-
-8.3 Readline Init File
-======================
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.  Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
-directory.  The name of this file is taken from the value of the shell
-variable `INPUTRC'.  If that variable is unset, the default is
-`~/.inputrc'.  If that file does not exist or cannot be read, the
-ultimate default is `/etc/inputrc'.
-
-   When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
-
-   In addition, the `C-x C-r' command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-* Menu:
-
-* Readline Init File Syntax::  Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs::        Conditional key bindings in the inputrc file.
-
-* Sample Init File::           An example inputrc file.
-
-\1f
-File: bash.info,  Node: Readline Init File Syntax,  Next: Conditional Init Constructs,  Up: Readline Init File
-
-8.3.1 Readline Init File Syntax
--------------------------------
-
-There are only a few basic constructs allowed in the Readline init
-file.  Blank lines are ignored.  Lines beginning with a `#' are
-comments.  Lines beginning with a `$' indicate conditional constructs
-(*note Conditional Init Constructs::).  Other lines denote variable
-settings and key bindings.
-
-Variable Settings
-     You can modify the run-time behavior of Readline by altering the
-     values of variables in Readline using the `set' command within the
-     init file.  The syntax is simple:
-
-          set VARIABLE VALUE
-
-     Here, for example, is how to change from the default Emacs-like
-     key binding to use `vi' line editing commands:
-
-          set editing-mode vi
-
-     Variable names and values, where appropriate, are recognized
-     without regard to case.  Unrecognized variable names are ignored.
-
-     Boolean variables (those that can be set to on or off) are set to
-     on if the value is null or empty, ON (case-insensitive), or 1.
-     Any other value results in the variable being set to off.
-
-     The `bind -V' command lists the current Readline variable names
-     and values.  *Note Bash Builtins::.
-
-     A great deal of run-time behavior is changeable with the following
-     variables.
-
-    `bell-style'
-          Controls what happens when Readline wants to ring the
-          terminal bell.  If set to `none', Readline never rings the
-          bell.  If set to `visible', Readline uses a visible bell if
-          one is available.  If set to `audible' (the default),
-          Readline attempts to ring the terminal's bell.
-
-    `bind-tty-special-chars'
-          If set to `on' (the default), Readline attempts to bind the
-          control characters   treated specially by the kernel's
-          terminal driver to their Readline equivalents.
-
-    `blink-matching-paren'
-          If set to `on', Readline attempts to briefly move the cursor
-          to an opening parenthesis when a closing parenthsis is
-          inserted.  The default is `off'.
-
-    `colored-stats'
-          If set to `on', Readline displays possible completions using
-          different colors to indicate their file type.  The color
-          definitions are taken from the value of the `LS_COLORS'
-          environment variable.  The default is `off'.
-
-    `comment-begin'
-          The string to insert at the beginning of the line when the
-          `insert-comment' command is executed.  The default value is
-          `"#"'.
-
-    `completion-display-width'
-          The number of screen columns used to display possible matches
-          when performing completion.  The value is ignored if it is
-          less than 0 or greater than the terminal screen width.  A
-          value of 0 will cause matches to be displayed one per line.
-          The default value is -1.
-
-    `completion-ignore-case'
-          If set to `on', Readline performs filename matching and
-          completion in a case-insensitive fashion.  The default value
-          is `off'.
-
-    `completion-map-case'
-          If set to `on', and COMPLETION-IGNORE-CASE is enabled,
-          Readline treats hyphens (`-') and underscores (`_') as
-          equivalent when performing case-insensitive filename matching
-          and completion.
-
-    `completion-prefix-display-length'
-          The length in characters of the common prefix of a list of
-          possible completions that is displayed without modification.
-          When set to a value greater than zero, common prefixes longer
-          than this value are replaced with an ellipsis when displaying
-          possible completions.
-
-    `completion-query-items'
-          The number of possible completions that determines when the
-          user is asked whether the list of possibilities should be
-          displayed.  If the number of possible completions is greater
-          than this value, Readline will ask the user whether or not he
-          wishes to view them; otherwise, they are simply listed.  This
-          variable must be set to an integer value greater than or
-          equal to 0.  A negative value means Readline should never ask.
-          The default limit is `100'.
-
-    `convert-meta'
-          If set to `on', Readline will convert characters with the
-          eighth bit set to an ASCII key sequence by stripping the
-          eighth bit and prefixing an <ESC> character, converting them
-          to a meta-prefixed key sequence.  The default value is `on'.
-
-    `disable-completion'
-          If set to `On', Readline will inhibit word completion.
-          Completion  characters will be inserted into the line as if
-          they had been mapped to `self-insert'.  The default is `off'.
-
-    `editing-mode'
-          The `editing-mode' variable controls which default set of key
-          bindings is used.  By default, Readline starts up in Emacs
-          editing mode, where the keystrokes are most similar to Emacs.
-          This variable can be set to either `emacs' or `vi'.
-
-    `echo-control-characters'
-          When set to `on', on operating systems that indicate they
-          support it, readline echoes a character corresponding to a
-          signal generated from the keyboard.  The default is `on'.
-
-    `enable-keypad'
-          When set to `on', Readline will try to enable the application
-          keypad when it is called.  Some systems need this to enable
-          the arrow keys.  The default is `off'.
-
-    `enable-meta-key'
-          When set to `on', Readline will try to enable any meta
-          modifier key the terminal claims to support when it is
-          called.  On many terminals, the meta key is used to send
-          eight-bit characters.  The default is `on'.
-
-    `expand-tilde'
-          If set to `on', tilde expansion is performed when Readline
-          attempts word completion.  The default is `off'.
-
-    `history-preserve-point'
-          If set to `on', the history code attempts to place the point
-          (the current cursor position) at the same location on each
-          history line retrieved with `previous-history' or
-          `next-history'.  The default is `off'.
-
-    `history-size'
-          Set the maximum number of history entries saved in the
-          history list.  If set to zero, any existing history entries
-          are deleted and no new entries are saved.  If set to a value
-          less than zero, the number of history entries is not limited.
-          By default, the number of history entries is not limited.
-
-    `horizontal-scroll-mode'
-          This variable can be set to either `on' or `off'.  Setting it
-          to `on' means that the text of the lines being edited will
-          scroll horizontally on a single screen line when they are
-          longer than the width of the screen, instead of wrapping onto
-          a new screen line.  By default, this variable is set to `off'.
-
-    `input-meta'
-          If set to `on', Readline will enable eight-bit input (it will
-          not clear the eighth bit in the characters it reads),
-          regardless of what the terminal claims it can support.  The
-          default value is `off'.  The name `meta-flag' is a synonym
-          for this variable.
-
-    `isearch-terminators'
-          The string of characters that should terminate an incremental
-          search without subsequently executing the character as a
-          command (*note Searching::).  If this variable has not been
-          given a value, the characters <ESC> and `C-J' will terminate
-          an incremental search.
-
-    `keymap'
-          Sets Readline's idea of the current keymap for key binding
-          commands.  Acceptable `keymap' names are `emacs',
-          `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
-          `vi-command', and `vi-insert'.  `vi' is equivalent to
-          `vi-command'; `emacs' is equivalent to `emacs-standard'.  The
-          default value is `emacs'.  The value of the `editing-mode'
-          variable also affects the default keymap.
-
-    `keyseq-timeout'
-          Specifies the duration Readline will wait for a character
-          when reading an ambiguous key sequence (one that can form a
-          complete key sequence using the input read so far, or can
-          take additional input to complete a longer key sequence).  If
-          no input is received within the timeout, Readline will use
-          the shorter but complete key sequence.  Readline uses this
-          value to determine whether or not input is available on the
-          current input source (`rl_instream' by default).  The value
-          is specified in milliseconds, so a value of 1000 means that
-          Readline will wait one second for additional input.  If this
-          variable is set to a value less than or equal to zero, or to a
-          non-numeric value, Readline will wait until another key is
-          pressed to decide which key sequence to complete.  The
-          default value is `500'.
-
-    `mark-directories'
-          If set to `on', completed directory names have a slash
-          appended.  The default is `on'.
-
-    `mark-modified-lines'
-          This variable, when set to `on', causes Readline to display an
-          asterisk (`*') at the start of history lines which have been
-          modified.  This variable is `off' by default.
-
-    `mark-symlinked-directories'
-          If set to `on', completed names which are symbolic links to
-          directories have a slash appended (subject to the value of
-          `mark-directories').  The default is `off'.
-
-    `match-hidden-files'
-          This variable, when set to `on', causes Readline to match
-          files whose names begin with a `.' (hidden files) when
-          performing filename completion.  If set to `off', the leading
-          `.' must be supplied by the user in the filename to be
-          completed.  This variable is `on' by default.
-
-    `menu-complete-display-prefix'
-          If set to `on', menu completion displays the common prefix of
-          the list of possible completions (which may be empty) before
-          cycling through the list.  The default is `off'.
-
-    `output-meta'
-          If set to `on', Readline will display characters with the
-          eighth bit set directly rather than as a meta-prefixed escape
-          sequence.  The default is `off'.
-
-    `page-completions'
-          If set to `on', Readline uses an internal `more'-like pager
-          to display a screenful of possible completions at a time.
-          This variable is `on' by default.
-
-    `print-completions-horizontally'
-          If set to `on', Readline will display completions with matches
-          sorted horizontally in alphabetical order, rather than down
-          the screen.  The default is `off'.
-
-    `revert-all-at-newline'
-          If set to `on', Readline will undo all changes to history
-          lines before returning when `accept-line' is executed.  By
-          default, history lines may be modified and retain individual
-          undo lists across calls to `readline'.  The default is `off'.
-
-    `show-all-if-ambiguous'
-          This alters the default behavior of the completion functions.
-          If set to `on', words which have more than one possible
-          completion cause the matches to be listed immediately instead
-          of ringing the bell.  The default value is `off'.
-
-    `show-all-if-unmodified'
-          This alters the default behavior of the completion functions
-          in a fashion similar to SHOW-ALL-IF-AMBIGUOUS.  If set to
-          `on', words which have more than one possible completion
-          without any possible partial completion (the possible
-          completions don't share a common prefix) cause the matches to
-          be listed immediately instead of ringing the bell.  The
-          default value is `off'.
-
-    `show-mode-in-prompt'
-          If set to `on', add a character to the beginning of the prompt
-          indicating the editing mode: emacs (`@'), vi command (`:'),
-          or vi insertion (`+').  The default value is `off'.
-
-    `skip-completed-text'
-          If set to `on', this alters the default completion behavior
-          when inserting a single match into the line.  It's only
-          active when performing completion in the middle of a word.
-          If enabled, readline does not insert characters from the
-          completion that match characters after point in the word
-          being completed, so portions of the word following the cursor
-          are not duplicated.  For instance, if this is enabled,
-          attempting completion when the cursor is after the `e' in
-          `Makefile' will result in `Makefile' rather than
-          `Makefilefile', assuming there is a single possible
-          completion.  The default value is `off'.
-
-    `visible-stats'
-          If set to `on', a character denoting a file's type is
-          appended to the filename when listing possible completions.
-          The default is `off'.
-
-
-Key Bindings
-     The syntax for controlling key bindings in the init file is
-     simple.  First you need to find the name of the command that you
-     want to change.  The following sections contain tables of the
-     command name, the default keybinding, if any, and a short
-     description of what the command does.
-
-     Once you know the name of the command, simply place on a line in
-     the init file the name of the key you wish to bind the command to,
-     a colon, and then the name of the command.  There can be no space
-     between the key name and the colon - that will be interpreted as
-     part of the key name.  The name of the key can be expressed in
-     different ways, depending on what you find most comfortable.
-
-     In addition to command names, readline allows keys to be bound to
-     a string that is inserted when the key is pressed (a MACRO).
-
-     The `bind -p' command displays Readline function names and
-     bindings in a format that can put directly into an initialization
-     file.  *Note Bash Builtins::.
-
-    KEYNAME: FUNCTION-NAME or MACRO
-          KEYNAME is the name of a key spelled out in English.  For
-          example:
-               Control-u: universal-argument
-               Meta-Rubout: backward-kill-word
-               Control-o: "> output"
-
-          In the above example, `C-u' is bound to the function
-          `universal-argument', `M-DEL' is bound to the function
-          `backward-kill-word', and `C-o' is bound to run the macro
-          expressed on the right hand side (that is, to insert the text
-          `> output' into the line).
-
-          A number of symbolic character names are recognized while
-          processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
-          NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
-
-    "KEYSEQ": FUNCTION-NAME or MACRO
-          KEYSEQ differs from KEYNAME above in that strings denoting an
-          entire key sequence can be specified, by placing the key
-          sequence in double quotes.  Some GNU Emacs style key escapes
-          can be used, as in the following example, but the special
-          character names are not recognized.
-
-               "\C-u": universal-argument
-               "\C-x\C-r": re-read-init-file
-               "\e[11~": "Function Key 1"
-
-          In the above example, `C-u' is again bound to the function
-          `universal-argument' (just as it was in the first example),
-          `C-x C-r' is bound to the function `re-read-init-file', and
-          `<ESC> <[> <1> <1> <~>' is bound to insert the text `Function
-          Key 1'.
-
-
-     The following GNU Emacs style escape sequences are available when
-     specifying key sequences:
-
-    `\C-'
-          control prefix
-
-    `\M-'
-          meta prefix
-
-    `\e'
-          an escape character
-
-    `\\'
-          backslash
-
-    `\"'
-          <">, a double quotation mark
-
-    `\''
-          <'>, a single quote or apostrophe
-
-     In addition to the GNU Emacs style escape sequences, a second set
-     of backslash escapes is available:
-
-    `\a'
-          alert (bell)
-
-    `\b'
-          backspace
-
-    `\d'
-          delete
-
-    `\f'
-          form feed
-
-    `\n'
-          newline
-
-    `\r'
-          carriage return
-
-    `\t'
-          horizontal tab
-
-    `\v'
-          vertical tab
-
-    `\NNN'
-          the eight-bit character whose value is the octal value NNN
-          (one to three digits)
-
-    `\xHH'
-          the eight-bit character whose value is the hexadecimal value
-          HH (one or two hex digits)
-
-     When entering the text of a macro, single or double quotes must be
-     used to indicate a macro definition.  Unquoted text is assumed to
-     be a function name.  In the macro body, the backslash escapes
-     described above are expanded.  Backslash will quote any other
-     character in the macro text, including `"' and `''.  For example,
-     the following binding will make `C-x \' insert a single `\' into
-     the line:
-          "\C-x\\": "\\"
-
-
-\1f
-File: bash.info,  Node: Conditional Init Constructs,  Next: Sample Init File,  Prev: Readline Init File Syntax,  Up: Readline Init File
-
-8.3.2 Conditional Init Constructs
----------------------------------
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key bindings
-and variable settings to be performed as the result of tests.  There
-are four parser directives used.
-
-`$if'
-     The `$if' construct allows bindings to be made based on the
-     editing mode, the terminal being used, or the application using
-     Readline.  The text of the test extends to the end of the line; no
-     characters are required to isolate it.
-
-    `mode'
-          The `mode=' form of the `$if' directive is used to test
-          whether Readline is in `emacs' or `vi' mode.  This may be
-          used in conjunction with the `set keymap' command, for
-          instance, to set bindings in the `emacs-standard' and
-          `emacs-ctlx' keymaps only if Readline is starting out in
-          `emacs' mode.
-
-    `term'
-          The `term=' form may be used to include terminal-specific key
-          bindings, perhaps to bind the key sequences output by the
-          terminal's function keys.  The word on the right side of the
-          `=' is tested against both the full name of the terminal and
-          the portion of the terminal name before the first `-'.  This
-          allows `sun' to match both `sun' and `sun-cmd', for instance.
-
-    `application'
-          The APPLICATION construct is used to include
-          application-specific settings.  Each program using the
-          Readline library sets the APPLICATION NAME, and you can test
-          for a particular value.  This could be used to bind key
-          sequences to functions useful for a specific program.  For
-          instance, the following command adds a key sequence that
-          quotes the current or previous word in Bash:
-               $if Bash
-               # Quote the current or previous word
-               "\C-xq": "\eb\"\ef\""
-               $endif
-
-`$endif'
-     This command, as seen in the previous example, terminates an `$if'
-     command.
-
-`$else'
-     Commands in this branch of the `$if' directive are executed if the
-     test fails.
-
-`$include'
-     This directive takes a single filename as an argument and reads
-     commands and bindings from that file.  For example, the following
-     directive reads from `/etc/inputrc':
-          $include /etc/inputrc
-
-\1f
-File: bash.info,  Node: Sample Init File,  Prev: Conditional Init Constructs,  Up: Readline Init File
-
-8.3.3 Sample Init File
-----------------------
-
-Here is an example of an INPUTRC file.  This illustrates key binding,
-variable assignment, and conditional syntax.
-
-
-     # This file controls the behaviour of line input editing for
-     # programs that use the GNU Readline library.  Existing
-     # programs include FTP, Bash, and GDB.
-     #
-     # You can re-read the inputrc file with C-x C-r.
-     # Lines beginning with '#' are comments.
-     #
-     # First, include any system-wide bindings and variable
-     # assignments from /etc/Inputrc
-     $include /etc/Inputrc
-
-     #
-     # Set various bindings for emacs mode.
-
-     set editing-mode emacs
-
-     $if mode=emacs
-
-     Meta-Control-h:   backward-kill-word      Text after the function name is ignored
-
-     #
-     # Arrow keys in keypad mode
-     #
-     #"\M-OD":        backward-char
-     #"\M-OC":        forward-char
-     #"\M-OA":        previous-history
-     #"\M-OB":        next-history
-     #
-     # Arrow keys in ANSI mode
-     #
-     "\M-[D":        backward-char
-     "\M-[C":        forward-char
-     "\M-[A":        previous-history
-     "\M-[B":        next-history
-     #
-     # Arrow keys in 8 bit keypad mode
-     #
-     #"\M-\C-OD":       backward-char
-     #"\M-\C-OC":       forward-char
-     #"\M-\C-OA":       previous-history
-     #"\M-\C-OB":       next-history
-     #
-     # Arrow keys in 8 bit ANSI mode
-     #
-     #"\M-\C-[D":       backward-char
-     #"\M-\C-[C":       forward-char
-     #"\M-\C-[A":       previous-history
-     #"\M-\C-[B":       next-history
-
-     C-q: quoted-insert
-
-     $endif
-
-     # An old-style binding.  This happens to be the default.
-     TAB: complete
-
-     # Macros that are convenient for shell interaction
-     $if Bash
-     # edit the path
-     "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-     # prepare to type a quoted word --
-     # insert open and close double quotes
-     # and move to just after the open quote
-     "\C-x\"": "\"\"\C-b"
-     # insert a backslash (testing backslash escapes
-     # in sequences and macros)
-     "\C-x\\": "\\"
-     # Quote the current or previous word
-     "\C-xq": "\eb\"\ef\""
-     # Add a binding to refresh the line, which is unbound
-     "\C-xr": redraw-current-line
-     # Edit variable on current line.
-     "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-     $endif
-
-     # use a visible bell if one is available
-     set bell-style visible
-
-     # don't strip characters to 7 bits when reading
-     set input-meta on
-
-     # allow iso-latin1 characters to be inserted rather
-     # than converted to prefix-meta sequences
-     set convert-meta off
-
-     # display characters with the eighth bit set directly
-     # rather than as meta-prefixed characters
-     set output-meta on
-
-     # if there are more than 150 possible completions for
-     # a word, ask the user if he wants to see all of them
-     set completion-query-items 150
-
-     # For FTP
-     $if Ftp
-     "\C-xg": "get \M-?"
-     "\C-xt": "put \M-?"
-     "\M-.": yank-last-arg
-     $endif
-
-\1f
-File: bash.info,  Node: Bindable Readline Commands,  Next: Readline vi Mode,  Prev: Readline Init File,  Up: Command Line Editing
-
-8.4 Bindable Readline Commands
-==============================
-
-* Menu:
-
-* Commands For Moving::                Moving about the line.
-* Commands For History::       Getting at previous lines.
-* Commands For Text::          Commands for changing text.
-* Commands For Killing::       Commands for killing and yanking.
-* Numeric Arguments::          Specifying numeric arguments, repeat counts.
-* Commands For Completion::    Getting Readline to do the typing for you.
-* Keyboard Macros::            Saving and re-executing typed characters
-* Miscellaneous Commands::     Other miscellaneous commands.
-
-   This section describes Readline commands that may be bound to key
-sequences.  You can list your key bindings by executing `bind -P' or,
-for a more terse format, suitable for an INPUTRC file, `bind -p'.
-(*Note Bash Builtins::.)  Command names without an accompanying key
-sequence are unbound by default.
-
-   In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the
-`set-mark' command.  The text between the point and mark is referred to
-as the "region".
-
-\1f
-File: bash.info,  Node: Commands For Moving,  Next: Commands For History,  Up: Bindable Readline Commands
-
-8.4.1 Commands For Moving
--------------------------
-
-`beginning-of-line (C-a)'
-     Move to the start of the current line.
-
-`end-of-line (C-e)'
-     Move to the end of the line.
-
-`forward-char (C-f)'
-     Move forward a character.
-
-`backward-char (C-b)'
-     Move back a character.
-
-`forward-word (M-f)'
-     Move forward to the end of the next word.  Words are composed of
-     letters and digits.
-
-`backward-word (M-b)'
-     Move back to the start of the current or previous word.  Words are
-     composed of letters and digits.
-
-`shell-forward-word ()'
-     Move forward to the end of the next word.  Words are delimited by
-     non-quoted shell metacharacters.
-
-`shell-backward-word ()'
-     Move back to the start of the current or previous word.  Words are
-     delimited by non-quoted shell metacharacters.
-
-`clear-screen (C-l)'
-     Clear the screen and redraw the current line, leaving the current
-     line at the top of the screen.
-
-`redraw-current-line ()'
-     Refresh the current line.  By default, this is unbound.
-
-
-\1f
-File: bash.info,  Node: Commands For History,  Next: Commands For Text,  Prev: Commands For Moving,  Up: Bindable Readline Commands
-
-8.4.2 Commands For Manipulating The History
--------------------------------------------
-
-`accept-line (Newline or Return)'
-     Accept the line regardless of where the cursor is.  If this line is
-     non-empty, add it to the history list according to the setting of
-     the `HISTCONTROL' and `HISTIGNORE' variables.  If this line is a
-     modified history line, then restore the history line to its
-     original state.
-
-`previous-history (C-p)'
-     Move `back' through the history list, fetching the previous
-     command.
-
-`next-history (C-n)'
-     Move `forward' through the history list, fetching the next command.
-
-`beginning-of-history (M-<)'
-     Move to the first line in the history.
-
-`end-of-history (M->)'
-     Move to the end of the input history, i.e., the line currently
-     being entered.
-
-`reverse-search-history (C-r)'
-     Search backward starting at the current line and moving `up'
-     through the history as necessary.  This is an incremental search.
-
-`forward-search-history (C-s)'
-     Search forward starting at the current line and moving `down'
-     through the history as necessary.  This is an incremental search.
-
-`non-incremental-reverse-search-history (M-p)'
-     Search backward starting at the current line and moving `up'
-     through the history as necessary using a non-incremental search
-     for a string supplied by the user.  The search string may match
-     anywhere in a history line.
-
-`non-incremental-forward-search-history (M-n)'
-     Search forward starting at the current line and moving `down'
-     through the history as necessary using a non-incremental search
-     for a string supplied by the user.  The search string may match
-     anywhere in a history line.
-
-`history-search-forward ()'
-     Search forward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-`history-search-backward ()'
-     Search backward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-`history-substr-search-forward ()'
-     Search forward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string may match anywhere in a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-`history-substr-search-backward ()'
-     Search backward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string may match anywhere in a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-`yank-nth-arg (M-C-y)'
-     Insert the first argument to the previous command (usually the
-     second word on the previous line) at point.  With an argument N,
-     insert the Nth word from the previous command (the words in the
-     previous command begin with word 0).  A negative argument inserts
-     the Nth word from the end of the previous command.  Once the
-     argument N is computed, the argument is extracted as if the `!N'
-     history expansion had been specified.
-
-`yank-last-arg (M-. or M-_)'
-     Insert last argument to the previous command (the last word of the
-     previous history entry).  With a numeric argument, behave exactly
-     like `yank-nth-arg'.  Successive calls to `yank-last-arg' move
-     back through the history list, inserting the last word (or the
-     word specified by the argument to the first call) of each line in
-     turn.  Any numeric argument supplied to these successive calls
-     determines the direction to move through the history.  A negative
-     argument switches the direction through the history (back or
-     forward).  The history expansion facilities are used to extract
-     the last argument, as if the `!$' history expansion had been
-     specified.
-
-
-\1f
-File: bash.info,  Node: Commands For Text,  Next: Commands For Killing,  Prev: Commands For History,  Up: Bindable Readline Commands
-
-8.4.3 Commands For Changing Text
---------------------------------
-
-`end-of-file (usually C-d)'
-     The character indicating end-of-file as set, for example, by
-     `stty'.  If this character is read when there are no characters on
-     the line, and point is at the beginning of the line, Readline
-     interprets it as the end of input and returns EOF.
-
-`delete-char (C-d)'
-     Delete the character at point.  If this function is bound to the
-     same character as the tty EOF character, as `C-d' commonly is, see
-     above for the effects.
-
-`backward-delete-char (Rubout)'
-     Delete the character behind the cursor.  A numeric argument means
-     to kill the characters instead of deleting them.
-
-`forward-backward-delete-char ()'
-     Delete the character under the cursor, unless the cursor is at the
-     end of the line, in which case the character behind the cursor is
-     deleted.  By default, this is not bound to a key.
-
-`quoted-insert (C-q or C-v)'
-     Add the next character typed to the line verbatim.  This is how to
-     insert key sequences like `C-q', for example.
-
-`self-insert (a, b, A, 1, !, ...)'
-     Insert yourself.
-
-`transpose-chars (C-t)'
-     Drag the character before the cursor forward over the character at
-     the cursor, moving the cursor forward as well.  If the insertion
-     point is at the end of the line, then this transposes the last two
-     characters of the line.  Negative arguments have no effect.
-
-`transpose-words (M-t)'
-     Drag the word before point past the word after point, moving point
-     past that word as well.  If the insertion point is at the end of
-     the line, this transposes the last two words on the line.
-
-`upcase-word (M-u)'
-     Uppercase the current (or following) word.  With a negative
-     argument, uppercase the previous word, but do not move the cursor.
-
-`downcase-word (M-l)'
-     Lowercase the current (or following) word.  With a negative
-     argument, lowercase the previous word, but do not move the cursor.
-
-`capitalize-word (M-c)'
-     Capitalize the current (or following) word.  With a negative
-     argument, capitalize the previous word, but do not move the cursor.
-
-`overwrite-mode ()'
-     Toggle overwrite mode.  With an explicit positive numeric argument,
-     switches to overwrite mode.  With an explicit non-positive numeric
-     argument, switches to insert mode.  This command affects only
-     `emacs' mode; `vi' mode does overwrite differently.  Each call to
-     `readline()' starts in insert mode.
-
-     In overwrite mode, characters bound to `self-insert' replace the
-     text at point rather than pushing the text to the right.
-     Characters bound to `backward-delete-char' replace the character
-     before point with a space.
-
-     By default, this command is unbound.
-
-
-\1f
-File: bash.info,  Node: Commands For Killing,  Next: Numeric Arguments,  Prev: Commands For Text,  Up: Bindable Readline Commands
-
-8.4.4 Killing And Yanking
--------------------------
-
-`kill-line (C-k)'
-     Kill the text from point to the end of the line.
-
-`backward-kill-line (C-x Rubout)'
-     Kill backward from the cursor to the beginning of the current line.
-
-`unix-line-discard (C-u)'
-     Kill backward from the cursor to the beginning of the current line.
-
-`kill-whole-line ()'
-     Kill all characters on the current line, no matter where point is.
-     By default, this is unbound.
-
-`kill-word (M-d)'
-     Kill from point to the end of the current word, or if between
-     words, to the end of the next word.  Word boundaries are the same
-     as `forward-word'.
-
-`backward-kill-word (M-<DEL>)'
-     Kill the word behind point.  Word boundaries are the same as
-     `backward-word'.
-
-`shell-kill-word ()'
-     Kill from point to the end of the current word, or if between
-     words, to the end of the next word.  Word boundaries are the same
-     as `shell-forward-word'.
-
-`shell-backward-kill-word ()'
-     Kill the word behind point.  Word boundaries are the same as
-     `shell-backward-word'.
-
-`unix-word-rubout (C-w)'
-     Kill the word behind point, using white space as a word boundary.
-     The killed text is saved on the kill-ring.
-
-`unix-filename-rubout ()'
-     Kill the word behind point, using white space and the slash
-     character as the word boundaries.  The killed text is saved on the
-     kill-ring.
-
-`delete-horizontal-space ()'
-     Delete all spaces and tabs around point.  By default, this is
-     unbound.
-
-`kill-region ()'
-     Kill the text in the current region.  By default, this command is
-     unbound.
-
-`copy-region-as-kill ()'
-     Copy the text in the region to the kill buffer, so it can be yanked
-     right away.  By default, this command is unbound.
-
-`copy-backward-word ()'
-     Copy the word before point to the kill buffer.  The word
-     boundaries are the same as `backward-word'.  By default, this
-     command is unbound.
-
-`copy-forward-word ()'
-     Copy the word following point to the kill buffer.  The word
-     boundaries are the same as `forward-word'.  By default, this
-     command is unbound.
-
-`yank (C-y)'
-     Yank the top of the kill ring into the buffer at point.
-
-`yank-pop (M-y)'
-     Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is `yank' or `yank-pop'.
-
-\1f
-File: bash.info,  Node: Numeric Arguments,  Next: Commands For Completion,  Prev: Commands For Killing,  Up: Bindable Readline Commands
-
-8.4.5 Specifying Numeric Arguments
-----------------------------------
-
-`digit-argument (M-0, M-1, ... M--)'
-     Add this digit to the argument already accumulating, or start a new
-     argument.  `M--' starts a negative argument.
-
-`universal-argument ()'
-     This is another way to specify an argument.  If this command is
-     followed by one or more digits, optionally with a leading minus
-     sign, those digits define the argument.  If the command is
-     followed by digits, executing `universal-argument' again ends the
-     numeric argument, but is otherwise ignored.  As a special case, if
-     this command is immediately followed by a character that is
-     neither a digit or minus sign, the argument count for the next
-     command is multiplied by four.  The argument count is initially
-     one, so executing this function the first time makes the argument
-     count four, a second time makes the argument count sixteen, and so
-     on.  By default, this is not bound to a key.
-
-\1f
-File: bash.info,  Node: Commands For Completion,  Next: Keyboard Macros,  Prev: Numeric Arguments,  Up: Bindable Readline Commands
-
-8.4.6 Letting Readline Type For You
------------------------------------
-
-`complete (<TAB>)'
-     Attempt to perform completion on the text before point.  The
-     actual completion performed is application-specific.  Bash
-     attempts completion treating the text as a variable (if the text
-     begins with `$'), username (if the text begins with `~'), hostname
-     (if the text begins with `@'), or command (including aliases and
-     functions) in turn.  If none of these produces a match, filename
-     completion is attempted.
-
-`possible-completions (M-?)'
-     List the possible completions of the text before point.  When
-     displaying completions, Readline sets the number of columns used
-     for display to the value of `completion-display-width', the value
-     of the environment variable `COLUMNS', or the screen width, in
-     that order.
-
-`insert-completions (M-*)'
-     Insert all completions of the text before point that would have
-     been generated by `possible-completions'.
-
-`menu-complete ()'
-     Similar to `complete', but replaces the word to be completed with
-     a single match from the list of possible completions.  Repeated
-     execution of `menu-complete' steps through the list of possible
-     completions, inserting each match in turn.  At the end of the list
-     of completions, the bell is rung (subject to the setting of
-     `bell-style') and the original text is restored.  An argument of N
-     moves N positions forward in the list of matches; a negative
-     argument may be used to move backward through the list.  This
-     command is intended to be bound to <TAB>, but is unbound by
-     default.
-
-`menu-complete-backward ()'
-     Identical to `menu-complete', but moves backward through the list
-     of possible completions, as if `menu-complete' had been given a
-     negative argument.
-
-`delete-char-or-list ()'
-     Deletes the character under the cursor if not at the beginning or
-     end of the line (like `delete-char').  If at the end of the line,
-     behaves identically to `possible-completions'.  This command is
-     unbound by default.
-
-`complete-filename (M-/)'
-     Attempt filename completion on the text before point.
-
-`possible-filename-completions (C-x /)'
-     List the possible completions of the text before point, treating
-     it as a filename.
-
-`complete-username (M-~)'
-     Attempt completion on the text before point, treating it as a
-     username.
-
-`possible-username-completions (C-x ~)'
-     List the possible completions of the text before point, treating
-     it as a username.
-
-`complete-variable (M-$)'
-     Attempt completion on the text before point, treating it as a
-     shell variable.
-
-`possible-variable-completions (C-x $)'
-     List the possible completions of the text before point, treating
-     it as a shell variable.
-
-`complete-hostname (M-@)'
-     Attempt completion on the text before point, treating it as a
-     hostname.
-
-`possible-hostname-completions (C-x @)'
-     List the possible completions of the text before point, treating
-     it as a hostname.
-
-`complete-command (M-!)'
-     Attempt completion on the text before point, treating it as a
-     command name.  Command completion attempts to match the text
-     against aliases, reserved words, shell functions, shell builtins,
-     and finally executable filenames, in that order.
-
-`possible-command-completions (C-x !)'
-     List the possible completions of the text before point, treating
-     it as a command name.
-
-`dynamic-complete-history (M-<TAB>)'
-     Attempt completion on the text before point, comparing the text
-     against lines from the history list for possible completion
-     matches.
-
-`dabbrev-expand ()'
-     Attempt menu completion on the text before point, comparing the
-     text against lines from the history list for possible completion
-     matches.
-
-`complete-into-braces (M-{)'
-     Perform filename completion and insert the list of possible
-     completions enclosed within braces so the list is available to the
-     shell (*note Brace Expansion::).
-
-
-\1f
-File: bash.info,  Node: Keyboard Macros,  Next: Miscellaneous Commands,  Prev: Commands For Completion,  Up: Bindable Readline Commands
-
-8.4.7 Keyboard Macros
----------------------
-
-`start-kbd-macro (C-x ()'
-     Begin saving the characters typed into the current keyboard macro.
-
-`end-kbd-macro (C-x ))'
-     Stop saving the characters typed into the current keyboard macro
-     and save the definition.
-
-`call-last-kbd-macro (C-x e)'
-     Re-execute the last keyboard macro defined, by making the
-     characters in the macro appear as if typed at the keyboard.
-
-`print-last-kbd-macro ()'
-     Print the last keboard macro defined in a format suitable for the
-     INPUTRC file.
-
-
-\1f
-File: bash.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up: Bindable Readline Commands
-
-8.4.8 Some Miscellaneous Commands
----------------------------------
-
-`re-read-init-file (C-x C-r)'
-     Read in the contents of the INPUTRC file, and incorporate any
-     bindings or variable assignments found there.
-
-`abort (C-g)'
-     Abort the current editing command and ring the terminal's bell
-     (subject to the setting of `bell-style').
-
-`do-uppercase-version (M-a, M-b, M-X, ...)'
-     If the metafied character X is lowercase, run the command that is
-     bound to the corresponding uppercase character.
-
-`prefix-meta (<ESC>)'
-     Metafy the next character typed.  This is for keyboards without a
-     meta key.  Typing `<ESC> f' is equivalent to typing `M-f'.
-
-`undo (C-_ or C-x C-u)'
-     Incremental undo, separately remembered for each line.
-
-`revert-line (M-r)'
-     Undo all changes made to this line.  This is like executing the
-     `undo' command enough times to get back to the beginning.
-
-`tilde-expand (M-&)'
-     Perform tilde expansion on the current word.
-
-`set-mark (C-@)'
-     Set the mark to the point.  If a numeric argument is supplied, the
-     mark is set to that position.
-
-`exchange-point-and-mark (C-x C-x)'
-     Swap the point with the mark.  The current cursor position is set
-     to the saved position, and the old cursor position is saved as the
-     mark.
-
-`character-search (C-])'
-     A character is read and point is moved to the next occurrence of
-     that character.  A negative count searches for previous
-     occurrences.
-
-`character-search-backward (M-C-])'
-     A character is read and point is moved to the previous occurrence
-     of that character.  A negative count searches for subsequent
-     occurrences.
-
-`skip-csi-sequence ()'
-     Read enough characters to consume a multi-key sequence such as
-     those defined for keys like Home and End.  Such sequences begin
-     with a Control Sequence Indicator (CSI), usually ESC-[.  If this
-     sequence is bound to "\e[", keys producing such sequences will
-     have no effect unless explicitly bound to a readline command,
-     instead of inserting stray characters into the editing buffer.
-     This is unbound by default, but usually bound to ESC-[.
-
-`insert-comment (M-#)'
-     Without a numeric argument, the value of the `comment-begin'
-     variable is inserted at the beginning of the current line.  If a
-     numeric argument is supplied, this command acts as a toggle:  if
-     the characters at the beginning of the line do not match the value
-     of `comment-begin', the value is inserted, otherwise the
-     characters in `comment-begin' are deleted from the beginning of
-     the line.  In either case, the line is accepted as if a newline
-     had been typed.  The default value of `comment-begin' causes this
-     command to make the current line a shell comment.  If a numeric
-     argument causes the comment character to be removed, the line will
-     be executed by the shell.
-
-`dump-functions ()'
-     Print all of the functions and their key bindings to the Readline
-     output stream.  If a numeric argument is supplied, the output is
-     formatted in such a way that it can be made part of an INPUTRC
-     file.  This command is unbound by default.
-
-`dump-variables ()'
-     Print all of the settable variables and their values to the
-     Readline output stream.  If a numeric argument is supplied, the
-     output is formatted in such a way that it can be made part of an
-     INPUTRC file.  This command is unbound by default.
-
-`dump-macros ()'
-     Print all of the Readline key sequences bound to macros and the
-     strings they output.  If a numeric argument is supplied, the
-     output is formatted in such a way that it can be made part of an
-     INPUTRC file.  This command is unbound by default.
-
-`glob-complete-word (M-g)'
-     The word before point is treated as a pattern for pathname
-     expansion, with an asterisk implicitly appended.  This pattern is
-     used to generate a list of matching file names for possible
-     completions.
-
-`glob-expand-word (C-x *)'
-     The word before point is treated as a pattern for pathname
-     expansion, and the list of matching file names is inserted,
-     replacing the word.  If a numeric argument is supplied, a `*' is
-     appended before pathname expansion.
-
-`glob-list-expansions (C-x g)'
-     The list of expansions that would have been generated by
-     `glob-expand-word' is displayed, and the line is redrawn.  If a
-     numeric argument is supplied, a `*' is appended before pathname
-     expansion.
-
-`display-shell-version (C-x C-v)'
-     Display version information about the current instance of Bash.
-
-`shell-expand-line (M-C-e)'
-     Expand the line as the shell does.  This performs alias and
-     history expansion as well as all of the shell word expansions
-     (*note Shell Expansions::).
-
-`history-expand-line (M-^)'
-     Perform history expansion on the current line.
-
-`magic-space ()'
-     Perform history expansion on the current line and insert a space
-     (*note History Interaction::).
-
-`alias-expand-line ()'
-     Perform alias expansion on the current line (*note Aliases::).
-
-`history-and-alias-expand-line ()'
-     Perform history and alias expansion on the current line.
-
-`insert-last-argument (M-. or M-_)'
-     A synonym for `yank-last-arg'.
-
-`operate-and-get-next (C-o)'
-     Accept the current line for execution and fetch the next line
-     relative to the current line from the history for editing.  Any
-     argument is ignored.
-
-`edit-and-execute-command (C-xC-e)'
-     Invoke an editor on the current command line, and execute the
-     result as shell commands.  Bash attempts to invoke `$VISUAL',
-     `$EDITOR', and `emacs' as the editor, in that order.
-
-
-\1f
-File: bash.info,  Node: Readline vi Mode,  Next: Programmable Completion,  Prev: Bindable Readline Commands,  Up: Command Line Editing
-
-8.5 Readline vi Mode
-====================
-
-While the Readline library does not have a full set of `vi' editing
-functions, it does contain enough to allow simple editing of the line.
-The Readline `vi' mode behaves as specified in the POSIX standard.
-
-   In order to switch interactively between `emacs' and `vi' editing
-modes, use the `set -o emacs' and `set -o vi' commands (*note The Set
-Builtin::).  The Readline default is `emacs' mode.
-
-   When you enter a line in `vi' mode, you are already placed in
-`insertion' mode, as if you had typed an `i'.  Pressing <ESC> switches
-you into `command' mode, where you can edit the text of the line with
-the standard `vi' movement keys, move to previous history lines with
-`k' and subsequent lines with `j', and so forth.
-
-\1f
-File: bash.info,  Node: Programmable Completion,  Next: Programmable Completion Builtins,  Prev: Readline vi Mode,  Up: Command Line Editing
-
-8.6 Programmable Completion
-===========================
-
-When word completion is attempted for an argument to a command for
-which a completion specification (a COMPSPEC) has been defined using
-the `complete' builtin (*note Programmable Completion Builtins::), the
-programmable completion facilities are invoked.
-
-   First, the command name is identified.  If a compspec has been
-defined for that command, the compspec is used to generate the list of
-possible completions for the word.  If the command word is the empty
-string (completion attempted at the beginning of an empty line), any
-compspec defined with the `-E' option to `complete' is used.  If the
-command word is a full pathname, a compspec for the full pathname is
-searched for first.  If no compspec is found for the full pathname, an
-attempt is made to find a compspec for the portion following the final
-slash.  If those searches do not result in a compspec, any compspec
-defined with the `-D' option to `complete' is used as the default.
-
-   Once a compspec has been found, it is used to generate the list of
-matching words.  If a compspec is not found, the default Bash completion
-described above (*note Commands For Completion::) is performed.
-
-   First, the actions specified by the compspec are used.  Only matches
-which are prefixed by the word being completed are returned.  When the
-`-f' or `-d' option is used for filename or directory name completion,
-the shell variable `FIGNORE' is used to filter the matches.  *Note Bash
-Variables::, for a description of `FIGNORE'.
-
-   Any completions specified by a filename expansion pattern to the
-`-G' option are generated next.  The words generated by the pattern
-need not match the word being completed.  The `GLOBIGNORE' shell
-variable is not used to filter the matches, but the `FIGNORE' shell
-variable is used.
-
-   Next, the string specified as the argument to the `-W' option is
-considered.  The string is first split using the characters in the `IFS'
-special variable as delimiters.  Shell quoting is honored.  Each word
-is then expanded using brace expansion, tilde expansion, parameter and
-variable expansion, command substitution, and arithmetic expansion, as
-described above (*note Shell Expansions::).  The results are split
-using the rules described above (*note Word Splitting::).  The results
-of the expansion are prefix-matched against the word being completed,
-and the matching words become the possible completions.
-
-   After these matches have been generated, any shell function or
-command specified with the `-F' and `-C' options is invoked.  When the
-command or function is invoked, the `COMP_LINE', `COMP_POINT',
-`COMP_KEY', and `COMP_TYPE' variables are assigned values as described
-above (*note Bash Variables::).  If a shell function is being invoked,
-the `COMP_WORDS' and `COMP_CWORD' variables are also set.  When the
-function or command is invoked, the first argument ($1) is the name of
-the command whose arguments are being completed, the second argument
-($2) is the word being completed, and the third argument ($3) is the
-word preceding the word being completed on the current command line.
-No filtering of the generated completions against the word being
-completed is performed; the function or command has complete freedom in
-generating the matches.
-
-   Any function specified with `-F' is invoked first.  The function may
-use any of the shell facilities, including the `compgen' and `compopt'
-builtins described below (*note Programmable Completion Builtins::), to
-generate the matches.  It must put the possible completions in the
-`COMPREPLY' array variable, one per array element.
-
-   Next, any command specified with the `-C' option is invoked in an
-environment equivalent to command substitution.  It should print a list
-of completions, one per line, to the standard output.  Backslash may be
-used to escape a newline, if necessary.
-
-   After all of the possible completions are generated, any filter
-specified with the `-X' option is applied to the list.  The filter is a
-pattern as used for pathname expansion; a `&' in the pattern is
-replaced with the text of the word being completed.  A literal `&' may
-be escaped with a backslash; the backslash is removed before attempting
-a match.  Any completion that matches the pattern will be removed from
-the list.  A leading `!' negates the pattern; in this case any
-completion not matching the pattern will be removed.
-
-   Finally, any prefix and suffix specified with the `-P' and `-S'
-options are added to each member of the completion list, and the result
-is returned to the Readline completion code as the list of possible
-completions.
-
-   If the previously-applied actions do not generate any matches, and
-the `-o dirnames' option was supplied to `complete' when the compspec
-was defined, directory name completion is attempted.
-
-   If the `-o plusdirs' option was supplied to `complete' when the
-compspec was defined, directory name completion is attempted and any
-matches are added to the results of the other actions.
-
-   By default, if a compspec is found, whatever it generates is
-returned to the completion code as the full set of possible completions.
-The default Bash completions are not attempted, and the Readline default
-of filename completion is disabled.  If the `-o bashdefault' option was
-supplied to `complete' when the compspec was defined, the default Bash
-completions are attempted if the compspec generates no matches.  If the
-`-o default' option was supplied to `complete' when the compspec was
-defined, Readline's default completion will be performed if the
-compspec (and, if attempted, the default Bash completions) generate no
-matches.
-
-   When a compspec indicates that directory name completion is desired,
-the programmable completion functions force Readline to append a slash
-to completed names which are symbolic links to directories, subject to
-the value of the MARK-DIRECTORIES Readline variable, regardless of the
-setting of the MARK-SYMLINKED-DIRECTORIES Readline variable.
-
-   There is some support for dynamically modifying completions.  This is
-most useful when used in combination with a default completion specified
-with `-D'.  It's possible for shell functions executed as completion
-handlers to indicate that completion should be retried by returning an
-exit status of 124.  If a shell function returns 124, and changes the
-compspec associated with the command on which completion is being
-attempted (supplied as the first argument when the function is
-executed), programmable completion restarts from the beginning, with an
-attempt to find a new compspec for that command.  This allows a set of
-completions to be built dynamically as completion is attempted, rather
-than being loaded all at once.
-
-   For instance, assuming that there is a library of compspecs, each
-kept in a file corresponding to the name of the command, the following
-default completion function would load completions dynamically:
-
-     _completion_loader()
-     {
-         . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
-     }
-     complete -D -F _completion_loader -o bashdefault -o default
-
-\1f
-File: bash.info,  Node: Programmable Completion Builtins,  Next: A Programmable Completion Example,  Prev: Programmable Completion,  Up: Command Line Editing
-
-8.7 Programmable Completion Builtins
-====================================
-
-Three builtin commands are available to manipulate the programmable
-completion facilities: one to specify how the arguments to a particular
-command are to be completed, and two to modify the completion as it is
-happening.
-
-`compgen'
-          `compgen [OPTION] [WORD]'
-
-     Generate possible completion matches for WORD according to the
-     OPTIONs, which may be any option accepted by the `complete'
-     builtin with the exception of `-p' and `-r', and write the matches
-     to the standard output.  When using the `-F' or `-C' options, the
-     various shell variables set by the programmable completion
-     facilities, while available, will not have useful values.
-
-     The matches will be generated in the same way as if the
-     programmable completion code had generated them directly from a
-     completion specification with the same flags.  If WORD is
-     specified, only those completions matching WORD will be displayed.
-
-     The return value is true unless an invalid option is supplied, or
-     no matches were generated.
-
-`complete'
-          `complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST]
-          [-F FUNCTION] [-C COMMAND] [-X FILTERPAT]
-          [-P PREFIX] [-S SUFFIX] NAME [NAME ...]'
-          `complete -pr [-DE] [NAME ...]'
-
-     Specify how arguments to each NAME should be completed.  If the
-     `-p' option is supplied, or if no options are supplied, existing
-     completion specifications are printed in a way that allows them to
-     be reused as input.  The `-r' option removes a completion
-     specification for each NAME, or, if no NAMEs are supplied, all
-     completion specifications.  The `-D' option indicates that the
-     remaining options and actions should apply to the "default"
-     command completion; that is, completion attempted on a command for
-     which no completion has previously been defined.  The `-E' option
-     indicates that the remaining options and actions should apply to
-     "empty" command completion; that is, completion attempted on a
-     blank line.
-
-     The process of applying these completion specifications when word
-     completion is attempted is described above (*note Programmable
-     Completion::).  The `-D' option takes precedence over `-E'.
-
-     Other options, if specified, have the following meanings.  The
-     arguments to the `-G', `-W', and `-X' options (and, if necessary,
-     the `-P' and `-S' options) should be quoted to protect them from
-     expansion before the `complete' builtin is invoked.
-
-    `-o COMP-OPTION'
-          The COMP-OPTION controls several aspects of the compspec's
-          behavior beyond the simple generation of completions.
-          COMP-OPTION may be one of:
-
-         `bashdefault'
-               Perform the rest of the default Bash completions if the
-               compspec generates no matches.
-
-         `default'
-               Use Readline's default filename completion if the
-               compspec generates no matches.
-
-         `dirnames'
-               Perform directory name completion if the compspec
-               generates no matches.
-
-         `filenames'
-               Tell Readline that the compspec generates filenames, so
-               it can perform any filename-specific processing (like
-               adding a slash to directory names quoting special
-               characters, or suppressing trailing spaces).  This
-               option is intended to be used with shell functions
-               specified with `-F'.
-
-         `noquote'
-               Tell Readline not to quote the completed words if they
-               are filenames (quoting filenames is the default).
-
-         `nospace'
-               Tell Readline not to append a space (the default) to
-               words completed at the end of the line.
-
-         `plusdirs'
-               After any matches defined by the compspec are generated,
-               directory name completion is attempted and any matches
-               are added to the results of the other actions.
-
-
-    `-A ACTION'
-          The ACTION may be one of the following to generate a list of
-          possible completions:
-
-         `alias'
-               Alias names.  May also be specified as `-a'.
-
-         `arrayvar'
-               Array variable names.
-
-         `binding'
-               Readline key binding names (*note Bindable Readline
-               Commands::).
-
-         `builtin'
-               Names of shell builtin commands.  May also be specified
-               as `-b'.
-
-         `command'
-               Command names.  May also be specified as `-c'.
-
-         `directory'
-               Directory names.  May also be specified as `-d'.
-
-         `disabled'
-               Names of disabled shell builtins.
-
-         `enabled'
-               Names of enabled shell builtins.
-
-         `export'
-               Names of exported shell variables.  May also be
-               specified as `-e'.
-
-         `file'
-               File names.  May also be specified as `-f'.
-
-         `function'
-               Names of shell functions.
-
-         `group'
-               Group names.  May also be specified as `-g'.
-
-         `helptopic'
-               Help topics as accepted by the `help' builtin (*note
-               Bash Builtins::).
-
-         `hostname'
-               Hostnames, as taken from the file specified by the
-               `HOSTFILE' shell variable (*note Bash Variables::).
-
-         `job'
-               Job names, if job control is active.  May also be
-               specified as `-j'.
-
-         `keyword'
-               Shell reserved words.  May also be specified as `-k'.
-
-         `running'
-               Names of running jobs, if job control is active.
-
-         `service'
-               Service names.  May also be specified as `-s'.
-
-         `setopt'
-               Valid arguments for the `-o' option to the `set' builtin
-               (*note The Set Builtin::).
-
-         `shopt'
-               Shell option names as accepted by the `shopt' builtin
-               (*note Bash Builtins::).
-
-         `signal'
-               Signal names.
-
-         `stopped'
-               Names of stopped jobs, if job control is active.
-
-         `user'
-               User names.  May also be specified as `-u'.
-
-         `variable'
-               Names of all shell variables.  May also be specified as
-               `-v'.
-
-    `-C COMMAND'
-          COMMAND is executed in a subshell environment, and its output
-          is used as the possible completions.
-
-    `-F FUNCTION'
-          The shell function FUNCTION is executed in the current shell
-          environment.  When it is executed, $1 is the name of the
-          command whose arguments are being completed, $2 is the word
-          being completed, and $3 is the word preceding the word being
-          completed, as described above (*note Programmable
-          Completion::).  When it finishes, the possible completions
-          are retrieved from the value of the `COMPREPLY' array
-          variable.
-
-    `-G GLOBPAT'
-          The filename expansion pattern GLOBPAT is expanded to generate
-          the possible completions.
-
-    `-P PREFIX'
-          PREFIX is added at the beginning of each possible completion
-          after all other options have been applied.
-
-    `-S SUFFIX'
-          SUFFIX is appended to each possible completion after all
-          other options have been applied.
-
-    `-W WORDLIST'
-          The WORDLIST is split using the characters in the `IFS'
-          special variable as delimiters, and each resultant word is
-          expanded.  The possible completions are the members of the
-          resultant list which match the word being completed.
-
-    `-X FILTERPAT'
-          FILTERPAT is a pattern as used for filename expansion.  It is
-          applied to the list of possible completions generated by the
-          preceding options and arguments, and each completion matching
-          FILTERPAT is removed from the list.  A leading `!' in
-          FILTERPAT negates the pattern; in this case, any completion
-          not matching FILTERPAT is removed.
-
-     The return value is true unless an invalid option is supplied, an
-     option other than `-p' or `-r' is supplied without a NAME
-     argument, an attempt is made to remove a completion specification
-     for a NAME for which no specification exists, or an error occurs
-     adding a completion specification.
-
-`compopt'
-          `compopt' [-o OPTION] [-DE] [+o OPTION] [NAME]
-     Modify completion options for each NAME according to the OPTIONs,
-     or for the currently-executing completion if no NAMEs are supplied.
-     If no OPTIONs are given, display the completion options for each
-     NAME or the current completion.  The possible values of OPTION are
-     those valid for the `complete' builtin described above.  The `-D'
-     option indicates that the remaining options should apply to the
-     "default" command completion; that is, completion attempted on a
-     command for which no completion has previously been defined.  The
-     `-E' option indicates that the remaining options should apply to
-     "empty" command completion; that is, completion attempted on a
-     blank line.
-
-     The `-D' option takes precedence over `-E'.
-
-     The return value is true unless an invalid option is supplied, an
-     attempt is made to modify the options for a NAME for which no
-     completion specification exists, or an output error occurs.
-
-
-\1f
-File: bash.info,  Node: A Programmable Completion Example,  Prev: Programmable Completion Builtins,  Up: Command Line Editing
-
-8.8 A Programmable Completion Example
-=====================================
-
-The most common way to obtain additional completion functionality beyond
-the default actions `complete' and `compgen' provide is to use a shell
-function and bind it to a particular command using `complete -F'.
-
-   The following function provides completions for the `cd' builtin.
-It is a reasonably good example of what shell functions must do when
-used for completion.  This function uses the word passsed as `$2' to
-determine the directory name to complete.  You can also use the
-`COMP_WORDS' array variable; the current word is indexed by the
-`COMP_CWORD' variable.
-
-   The function relies on the `complete' and `compgen' builtins to do
-much of the work, adding only the things that the Bash `cd' does beyond
-accepting basic directory names: tilde expansion (*note Tilde
-Expansion::), searching directories in $CDPATH, which is described above
-(*note Bourne Shell Builtins::), and basic support for the
-`cdable_vars' shell option (*note The Shopt Builtin::).  `_comp_cd'
-modifies the value of IFS so that it contains only a newline to
-accommodate file names containing spaces and tabs - `compgen' prints
-the possible completions it generates one per line.
-
-   Possible completions go into the COMPREPLY array variable, one
-completion per array element.  The programmable completion system
-retrieves the completions from there when the function returns.
-
-     # A completion function for the cd builtin
-     # based on the cd completion function from the bash_completion package
-     _comp_cd()
-     {
-         local IFS=$' \t\n'    # normalize IFS
-         local cur _skipdot _cdpath
-         local i j k
-
-         # Tilde expansion, with side effect of expanding tilde to full pathname
-         case "$2" in
-         \~*)    eval cur="$2" ;;
-         *)      cur=$2 ;;
-         esac
-
-         # no cdpath or absolute pathname -- straight directory completion
-         if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then
-             # compgen prints paths one per line; could also use while loop
-             IFS=$'\n'
-             COMPREPLY=( $(compgen -d -- "$cur") )
-             IFS=$' \t\n'
-         # CDPATH+directories in the current directory if not in CDPATH
-         else
-             IFS=$'\n'
-             _skipdot=false
-             # preprocess CDPATH to convert null directory names to .
-             _cdpath=${CDPATH/#:/.:}
-             _cdpath=${_cdpath//::/:.:}
-             _cdpath=${_cdpath/%:/:.}
-             for i in ${_cdpath//:/$'\n'}; do
-                 if [[ $i -ef . ]]; then _skipdot=true; fi
-                 k="${#COMPREPLY[@]}"
-                 for j in $( compgen -d -- "$i/$cur" ); do
-                     COMPREPLY[k++]=${j#$i/}        # cut off directory
-                 done
-             done
-             $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") )
-             IFS=$' \t\n'
-         fi
-
-         # variable names if appropriate shell option set and no completions
-         if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then
-             COMPREPLY=( $(compgen -v -- "$cur") )
-         fi
-
-         return 0
-     }
-
-   We install the completion function using the `-F' option to
-`complete':
-
-     # Tell readline to quote appropriate and append slashes to directories;
-     # use the bash default completion for other arguments
-     complete -o filenames -o nospace -o bashdefault -F _comp_cd cd
-
-Since we'd like Bash and Readline to take care of some of the other
-details for us, we use several other options to tell Bash and Readline
-what to do.  The `-o filenames' option tells Readline that the possible
-completions should be treated as filenames, and quoted appropriately.
-That option will also cause Readline to append a slash to filenames it
-can determine are directories (which is why we might want to extend
-`_comp_cd' to append a slash if we're using directories found via
-CDPATH: Readline can't tell those completions are directories).  The
-`-o nospace' option tells Readline to not append a space character to
-the directory name, in case we want to append to it.  The `-o
-bashdefault' option brings in the rest of the "Bash default"
-completions - possible completion that Bash adds to the default Readline
-set.  These include things like command name completion, variable
-completion for words beginning with `{', completions containing pathname
-expansion patterns (*note Filename Expansion::), and so on.
-
-   Once installed using `complete', `_comp_cd' will be called every
-time we attempt word completion for a `cd' command.
-
-   Many more examples - an extensive collection of completions for most
-of the common GNU, Unix, and Linux commands - are available as part of
-the bash_completion project.  This is installed by default on many
-GNU/Linux distributions.  Originally written by Ian Macdonald, the
-project now lives at `http://bash-completion.alioth.debian.org/'.
-There are ports for other systems such as Solaris and Mac OS X.
-
-   An older version of the bash_completion package is distributed with
-bash in the `examples/complete' subdirectory.
-
-\1f
-File: bash.info,  Node: Using History Interactively,  Next: Installing Bash,  Prev: Command Line Editing,  Up: Top
-
-9 Using History Interactively
-*****************************
-
-This chapter describes how to use the GNU History Library
-interactively, from a user's standpoint.  It should be considered a
-user's guide.  For information on using the GNU History Library in
-other programs, see the GNU Readline Library Manual.
-
-* Menu:
-
-* Bash History Facilities::    How Bash lets you manipulate your command
-                               history.
-* Bash History Builtins::      The Bash builtin commands that manipulate
-                               the command history.
-* History Interaction::                What it feels like using History as a user.
-
-\1f
-File: bash.info,  Node: Bash History Facilities,  Next: Bash History Builtins,  Up: Using History Interactively
-
-9.1 Bash History Facilities
-===========================
-
-When the `-o history' option to the `set' builtin is enabled (*note The
-Set Builtin::), the shell provides access to the "command history", the
-list of commands previously typed.  The value of the `HISTSIZE' shell
-variable is used as the number of commands to save in a history list.
-The text of the last `$HISTSIZE' commands (default 500) is saved.  The
-shell stores each command in the history list prior to parameter and
-variable expansion but after history expansion is performed, subject to
-the values of the shell variables `HISTIGNORE' and `HISTCONTROL'.
-
-   When the shell starts up, the history is initialized from the file
-named by the `HISTFILE' variable (default `~/.bash_history').  The file
-named by the value of `HISTFILE' is truncated, if necessary, to contain
-no more than the number of lines specified by the value of the
-`HISTFILESIZE' variable.  When a shell with history enabled exits, the
-last `$HISTSIZE' lines are copied from the history list to the file
-named by `$HISTFILE'.  If the `histappend' shell option is set (*note
-Bash Builtins::), the lines are appended to the history file, otherwise
-the history file is overwritten.  If `HISTFILE' is unset, or if the
-history file is unwritable, the history is not saved.  After saving the
-history, the history file is truncated to contain no more than
-`$HISTFILESIZE' lines.  If `HISTFILESIZE' is unset, or set to null, a
-non-numeric value, or a numeric value less than zero, the history file
-is not truncated.
-
-   If the `HISTTIMEFORMAT' is set, the time stamp information
-associated with each history entry is written to the history file,
-marked with the history comment character.  When the history file is
-read, lines beginning with the history comment character followed
-immediately by a digit are interpreted as timestamps for the previous
-history line.
-
-   The builtin command `fc' may be used to list or edit and re-execute
-a portion of the history list.  The `history' builtin may be used to
-display or modify the history list and manipulate the history file.
-When using command-line editing, search commands are available in each
-editing mode that provide access to the history list (*note Commands
-For History::).
-
-   The shell allows control over which commands are saved on the history
-list.  The `HISTCONTROL' and `HISTIGNORE' variables may be set to cause
-the shell to save only a subset of the commands entered.  The `cmdhist'
-shell option, if enabled, causes the shell to attempt to save each line
-of a multi-line command in the same history entry, adding semicolons
-where necessary to preserve syntactic correctness.  The `lithist' shell
-option causes the shell to save the command with embedded newlines
-instead of semicolons.  The `shopt' builtin is used to set these
-options.  *Note Bash Builtins::, for a description of `shopt'.
-
-\1f
-File: bash.info,  Node: Bash History Builtins,  Next: History Interaction,  Prev: Bash History Facilities,  Up: Using History Interactively
-
-9.2 Bash History Builtins
-=========================
-
-Bash provides two builtin commands which manipulate the history list
-and history file.
-
-`fc'
-          `fc [-e ENAME] [-lnr] [FIRST] [LAST]'
-          `fc -s [PAT=REP] [COMMAND]'
-
-     The first form selects a range of commands from FIRST to LAST from
-     the history list and displays or edits and re-executes them.  Both
-     FIRST and LAST may be specified as a string (to locate the most
-     recent command beginning with that string) or as a number (an
-     index into the history list, where a negative number is used as an
-     offset from the current command number).  If LAST is not specified
-     it is set to FIRST.  If FIRST is not specified it is set to the
-     previous command for editing and -16 for listing.  If the `-l'
-     flag is given, the commands are listed on standard output.  The
-     `-n' flag suppresses the command numbers when listing.  The `-r'
-     flag reverses the order of the listing.  Otherwise, the editor
-     given by ENAME is invoked on a file containing those commands.  If
-     ENAME is not given, the value of the following variable expansion
-     is used: `${FCEDIT:-${EDITOR:-vi}}'.  This says to use the value
-     of the `FCEDIT' variable if set, or the value of the `EDITOR'
-     variable if that is set, or `vi' if neither is set.  When editing
-     is complete, the edited commands are echoed and executed.
-
-     In the second form, COMMAND is re-executed after each instance of
-     PAT in the selected command is replaced by REP.  COMMAND is
-     intepreted the same as FIRST above.
-
-     A useful alias to use with the `fc' command is `r='fc -s'', so
-     that typing `r cc' runs the last command beginning with `cc' and
-     typing `r' re-executes the last command (*note Aliases::).
-
-`history'
-          history [N]
-          history -c
-          history -d OFFSET
-          history [-anrw] [FILENAME]
-          history -ps ARG
-
-     With no options, display the history list with line numbers.
-     Lines prefixed with a `*' have been modified.  An argument of N
-     lists only the last N lines.  If the shell variable
-     `HISTTIMEFORMAT' is set and not null, it is used as a format
-     string for STRFTIME to display the time stamp associated with each
-     displayed history entry.  No intervening blank is printed between
-     the formatted time stamp and the history line.
-
-     Options, if supplied, have the following meanings:
-
-    `-c'
-          Clear the history list.  This may be combined with the other
-          options to replace the history list completely.
-
-    `-d OFFSET'
-          Delete the history entry at position OFFSET.  OFFSET should
-          be specified as it appears when the history is displayed.
-
-    `-a'
-          Append the new history lines (history lines entered since the
-          beginning of the current Bash session) to the history file.
-
-    `-n'
-          Append the history lines not already read from the history
-          file to the current history list.  These are lines appended
-          to the history file since the beginning of the current Bash
-          session.
-
-    `-r'
-          Read the history file and append its contents to the history
-          list.
-
-    `-w'
-          Write out the current history list to the history file.
-
-    `-p'
-          Perform history substitution on the ARGs and display the
-          result on the standard output, without storing the results in
-          the history list.
-
-    `-s'
-          The ARGs are added to the end of the history list as a single
-          entry.
-
-
-     When any of the `-w', `-r', `-a', or `-n' options is used, if
-     FILENAME is given, then it is used as the history file.  If not,
-     then the value of the `HISTFILE' variable is used.
-
-
-\1f
-File: bash.info,  Node: History Interaction,  Prev: Bash History Builtins,  Up: Using History Interactively
-
-9.3 History Expansion
-=====================
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by `csh'.  This section describes the
-syntax used to manipulate the history information.
-
-   History expansions introduce words from the history list into the
-input stream, making it easy to repeat commands, insert the arguments
-to a previous command into the current input line, or fix errors in
-previous commands quickly.
-
-   History expansion takes place in two parts.  The first is to
-determine which line from the history list should be used during
-substitution.  The second is to select portions of that line for
-inclusion into the current one.  The line selected from the history is
-called the "event", and the portions of that line that are acted upon
-are called "words".  Various "modifiers" are available to manipulate
-the selected words.  The line is broken into words in the same fashion
-that Bash does, so that several words surrounded by quotes are
-considered one word.  History expansions are introduced by the
-appearance of the history expansion character, which is `!' by default.
-Only `\' and `'' may be used to escape the history expansion character.
-
-   Several shell options settable with the `shopt' builtin (*note Bash
-Builtins::) may be used to tailor the behavior of history expansion.
-If the `histverify' shell option is enabled, and Readline is being
-used, history substitutions are not immediately passed to the shell
-parser.  Instead, the expanded line is reloaded into the Readline
-editing buffer for further modification.  If Readline is being used,
-and the `histreedit' shell option is enabled, a failed history
-expansion will be reloaded into the Readline editing buffer for
-correction.  The `-p' option to the `history' builtin command may be
-used to see what a history expansion will do before using it.  The `-s'
-option to the `history' builtin may be used to add commands to the end
-of the history list without actually executing them, so that they are
-available for subsequent recall.  This is most useful in conjunction
-with Readline.
-
-   The shell allows control of the various characters used by the
-history expansion mechanism with the `histchars' variable, as explained
-above (*note Bash Variables::).  The shell uses the history comment
-character to mark history timestamps when writing the history file.
-
-* Menu:
-
-* Event Designators::  How to specify which history line to use.
-* Word Designators::   Specifying which words are of interest.
-* Modifiers::          Modifying the results of substitution.
-
-\1f
-File: bash.info,  Node: Event Designators,  Next: Word Designators,  Up: History Interaction
-
-9.3.1 Event Designators
------------------------
-
-An event designator is a reference to a command line entry in the
-history list.  Unless the reference is absolute, events are relative to
-the current position in the history list.  
-
-`!'
-     Start a history substitution, except when followed by a space, tab,
-     the end of the line, `=' or `(' (when the `extglob' shell option
-     is enabled using the `shopt' builtin).
-
-`!N'
-     Refer to command line N.
-
-`!-N'
-     Refer to the command N lines back.
-
-`!!'
-     Refer to the previous command.  This is a synonym for `!-1'.
-
-`!STRING'
-     Refer to the most recent command preceding the current position in
-     the history list starting with STRING.
-
-`!?STRING[?]'
-     Refer to the most recent command preceding the current position in
-     the history list containing STRING.  The trailing `?' may be
-     omitted if the STRING is followed immediately by a newline.
-
-`^STRING1^STRING2^'
-     Quick Substitution.  Repeat the last command, replacing STRING1
-     with STRING2.  Equivalent to `!!:s/STRING1/STRING2/'.
-
-`!#'
-     The entire command line typed so far.
-
-
-\1f
-File: bash.info,  Node: Word Designators,  Next: Modifiers,  Prev: Event Designators,  Up: History Interaction
-
-9.3.2 Word Designators
-----------------------
-
-Word designators are used to select desired words from the event.  A
-`:' separates the event specification from the word designator.  It may
-be omitted if the word designator begins with a `^', `$', `*', `-', or
-`%'.  Words are numbered from the beginning of the line, with the first
-word being denoted by 0 (zero).  Words are inserted into the current
-line separated by single spaces.
-
-   For example,
-
-`!!'
-     designates the preceding command.  When you type this, the
-     preceding command is repeated in toto.
-
-`!!:$'
-     designates the last argument of the preceding command.  This may be
-     shortened to `!$'.
-
-`!fi:2'
-     designates the second argument of the most recent command starting
-     with the letters `fi'.
-
-   Here are the word designators:
-
-`0 (zero)'
-     The `0'th word.  For many applications, this is the command word.
-
-`N'
-     The Nth word.
-
-`^'
-     The first argument; that is, word 1.
-
-`$'
-     The last argument.
-
-`%'
-     The word matched by the most recent `?STRING?' search.
-
-`X-Y'
-     A range of words; `-Y' abbreviates `0-Y'.
-
-`*'
-     All of the words, except the `0'th.  This is a synonym for `1-$'.
-     It is not an error to use `*' if there is just one word in the
-     event; the empty string is returned in that case.
-
-`X*'
-     Abbreviates `X-$'
-
-`X-'
-     Abbreviates `X-$' like `X*', but omits the last word.
-
-
-   If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-\1f
-File: bash.info,  Node: Modifiers,  Prev: Word Designators,  Up: History Interaction
-
-9.3.3 Modifiers
----------------
-
-After the optional word designator, you can add a sequence of one or
-more of the following modifiers, each preceded by a `:'.
-
-`h'
-     Remove a trailing pathname component, leaving only the head.
-
-`t'
-     Remove all leading pathname components, leaving the tail.
-
-`r'
-     Remove a trailing suffix of the form `.SUFFIX', leaving the
-     basename.
-
-`e'
-     Remove all but the trailing suffix.
-
-`p'
-     Print the new command but do not execute it.
-
-`q'
-     Quote the substituted words, escaping further substitutions.
-
-`x'
-     Quote the substituted words as with `q', but break into words at
-     spaces, tabs, and newlines.
-
-`s/OLD/NEW/'
-     Substitute NEW for the first occurrence of OLD in the event line.
-     Any delimiter may be used in place of `/'.  The delimiter may be
-     quoted in OLD and NEW with a single backslash.  If `&' appears in
-     NEW, it is replaced by OLD.  A single backslash will quote the
-     `&'.  The final delimiter is optional if it is the last character
-     on the input line.
-
-`&'
-     Repeat the previous substitution.
-
-`g'
-`a'
-     Cause changes to be applied over the entire event line.  Used in
-     conjunction with `s', as in `gs/OLD/NEW/', or with `&'.
-
-`G'
-     Apply the following `s' modifier once to each word in the event.
-
-
-\1f
-File: bash.info,  Node: Installing Bash,  Next: Reporting Bugs,  Prev: Using History Interactively,  Up: Top
-
-10 Installing Bash
-******************
-
-This chapter provides basic instructions for installing Bash on the
-various supported platforms.  The distribution supports the GNU
-operating systems, nearly every version of Unix, and several non-Unix
-systems such as BeOS and Interix.  Other independent ports exist for
-MS-DOS, OS/2, and Windows platforms.
-
-* Menu:
-
-* Basic Installation:: Installation instructions.
-* Compilers and Options::      How to set special options for various
-                               systems.
-* Compiling For Multiple Architectures::       How to compile Bash for more
-                                               than one kind of system from
-                                               the same source tree.
-* Installation Names:: How to set the various paths used by the installation.
-* Specifying the System Type:: How to configure Bash for a particular system.
-* Sharing Defaults::   How to share default configuration values among GNU
-                       programs.
-* Operation Controls:: Options recognized by the configuration program.
-* Optional Features::  How to enable and disable optional features when
-                       building Bash.
-
-\1f
-File: bash.info,  Node: Basic Installation,  Next: Compilers and Options,  Up: Installing Bash
-
-10.1 Basic Installation
-=======================
-
-These are installation instructions for Bash.
-
-   The simplest way to compile Bash is:
-
-  1. `cd' to the directory containing the source code and type
-     `./configure' to configure Bash for your system.  If you're using
-     `csh' on an old version of System V, you might need to type `sh
-     ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes some time.  While running, it prints
-     messages telling which features it is checking for.
-
-  2. Type `make' to compile Bash and build the `bashbug' bug reporting
-     script.
-
-  3. Optionally, type `make tests' to run the Bash test suite.
-
-  4. Type `make install' to install `bash' and `bashbug'.  This will
-     also install the manual pages and Info file.
-
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package
-(the top directory, the `builtins', `doc', and `support' directories,
-each directory under `lib', and several others).  It also creates a
-`config.h' file containing system-dependent definitions.  Finally, it
-creates a shell script named `config.status' that you can run in the
-future to recreate the current configuration, a file `config.cache'
-that saves the results of its tests to speed up reconfiguring, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').  If at some point `config.cache' contains
-results you don't want to keep, you may remove or edit it.
-
-   To find out more about the options and arguments that the
-`configure' script understands, type
-
-     bash-2.04$ ./configure --help
-
-at the Bash prompt in your Bash source directory.
-
-   If you need to do unusual things to compile Bash, please try to
-figure out how `configure' could check whether or not to do them, and
-mail diffs or instructions to <bash-maintainers@gnu.org> so they can be
-considered for the next release.
-
-   The file `configure.ac' is used to create `configure' by a program
-called Autoconf.  You only need `configure.ac' if you want to change it
-or regenerate `configure' using a newer version of Autoconf.  If you do
-this, make sure you are using Autoconf version 2.50 or newer.
-
-   You can remove the program binaries and object files from the source
-code directory by typing `make clean'.  To also remove the files that
-`configure' created (so you can compile Bash for a different kind of
-computer), type `make distclean'.
-
-\1f
-File: bash.info,  Node: Compilers and Options,  Next: Compiling For Multiple Architectures,  Prev: Basic Installation,  Up: Installing Bash
-
-10.2 Compilers and Options
-==========================
-
-Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-   On systems that have the `env' program, you can do it like this:
-
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-   The configuration process uses GCC to build Bash if it is available.
-
-\1f
-File: bash.info,  Node: Compiling For Multiple Architectures,  Next: Installation Names,  Prev: Compilers and Options,  Up: Installing Bash
-
-10.3 Compiling For Multiple Architectures
-=========================================
-
-You can compile Bash for more than one kind of computer at the same
-time, by placing the object files for each architecture in their own
-directory.  To do this, you must use a version of `make' that supports
-the `VPATH' variable, such as GNU `make'.  `cd' to the directory where
-you want the object files and executables to go and run the `configure'
-script from the source directory.  You may need to supply the
-`--srcdir=PATH' argument to tell `configure' where the source files
-are.  `configure' automatically checks for the source code in the
-directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you can compile Bash for one architecture at a time in the
-source code directory.  After you have installed Bash for one
-architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-   Alternatively, if your system supports symbolic links, you can use
-the `support/mkclone' script to create a build tree which has symbolic
-links back to each file in the source directory.  Here's an example
-that creates a build directory in the current directory from a source
-directory `/usr/gnu/src/bash-2.0':
-
-     bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
-
-The `mkclone' script requires Bash, so you must have already built Bash
-for at least one architecture before you can create build directories
-for other architectures.
-
-\1f
-File: bash.info,  Node: Installation Names,  Next: Specifying the System Type,  Prev: Compiling For Multiple Architectures,  Up: Installing Bash
-
-10.4 Installation Names
-=======================
-
-By default, `make install' will install into `/usr/local/bin',
-`/usr/local/man', etc.  You can specify an installation prefix other
-than `/usr/local' by giving `configure' the option `--prefix=PATH', or
-by specifying a value for the `DESTDIR' `make' variable when running
-`make install'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', `make install' will
-use PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-\1f
-File: bash.info,  Node: Specifying the System Type,  Next: Sharing Defaults,  Prev: Installation Names,  Up: Installing Bash
-
-10.5 Specifying the System Type
-===============================
-
-There may be some features `configure' can not figure out
-automatically, but need to determine by the type of host Bash will run
-on.  Usually `configure' can figure that out, but if it prints a
-message saying it can not guess the host type, give it the
-`--host=TYPE' option.  `TYPE' can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
-`CPU-COMPANY-SYSTEM' (e.g., `i386-unknown-freebsd4.2').
-
-   See the file `support/config.sub' for the possible values of each
-field.
-
-\1f
-File: bash.info,  Node: Sharing Defaults,  Next: Operation Controls,  Prev: Specifying the System Type,  Up: Installing Bash
-
-10.6 Sharing Defaults
-=====================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.  `configure'
-looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: the Bash `configure' looks for a site script, but not all
-`configure' scripts do.
-
-\1f
-File: bash.info,  Node: Operation Controls,  Next: Optional Features,  Prev: Sharing Defaults,  Up: Installing Bash
-
-10.7 Operation Controls
-=======================
-
-`configure' recognizes the following options to control how it operates.
-
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
-
-`--help'
-     Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.
-
-`--srcdir=DIR'
-     Look for the Bash source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-   `configure' also accepts some other, not widely used, boilerplate
-options.  `configure --help' prints the complete list.
-
-\1f
-File: bash.info,  Node: Optional Features,  Prev: Operation Controls,  Up: Installing Bash
-
-10.8 Optional Features
-======================
-
-The Bash `configure' has a number of `--enable-FEATURE' options, where
-FEATURE indicates an optional part of Bash.  There are also several
-`--with-PACKAGE' options, where PACKAGE is something like `bash-malloc'
-or `purify'.  To turn off the default use of a package, use
-`--without-PACKAGE'.  To configure Bash without a feature that is
-enabled by default, use `--disable-FEATURE'.
-
-   Here is a complete list of the `--enable-' and `--with-' options
-that the Bash `configure' recognizes.
-
-`--with-afs'
-     Define if you are using the Andrew File System from Transarc.
-
-`--with-bash-malloc'
-     Use the Bash version of `malloc' in the directory `lib/malloc'.
-     This is not the same `malloc' that appears in GNU libc, but an
-     older version originally derived from the 4.2 BSD `malloc'.  This
-     `malloc' is very fast, but wastes some space on each allocation.
-     This option is enabled by default.  The `NOTES' file contains a
-     list of systems for which this should be turned off, and
-     `configure' disables this option automatically for a number of
-     systems.
-
-`--with-curses'
-     Use the curses library instead of the termcap library.  This should
-     be supplied if your system has an inadequate or incomplete termcap
-     database.
-
-`--with-gnu-malloc'
-     A synonym for `--with-bash-malloc'.
-
-`--with-installed-readline[=PREFIX]'
-     Define this to make Bash link with a locally-installed version of
-     Readline rather than the version in `lib/readline'.  This works
-     only with Readline 5.0 and later versions.  If PREFIX is `yes' or
-     not supplied, `configure' uses the values of the make variables
-     `includedir' and `libdir', which are subdirectories of `prefix' by
-     default, to find the installed version of Readline if it is not in
-     the standard system include and library directories.  If PREFIX is
-     `no', Bash links with the version in `lib/readline'.  If PREFIX is
-     set to any other value, `configure' treats it as a directory
-     pathname and looks for the installed version of Readline in
-     subdirectories of that directory (include files in
-     PREFIX/`include' and the library in PREFIX/`lib').
-
-`--with-purify'
-     Define this to use the Purify memory allocation checker from
-     Rational Software.
-
-`--enable-minimal-config'
-     This produces a shell with minimal features, close to the
-     historical Bourne shell.
-
-   There are several `--enable-' options that alter how Bash is
-compiled and linked, rather than changing run-time features.
-
-`--enable-largefile'
-     Enable support for large files
-     (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if
-     the operating system requires special compiler options to build
-     programs which can access large files.  This is enabled by
-     default, if the operating system provides large file support.
-
-`--enable-profiling'
-     This builds a Bash binary that produces profiling information to be
-     processed by `gprof' each time it is executed.
-
-`--enable-static-link'
-     This causes Bash to be linked statically, if `gcc' is being used.
-     This could be used to build a version to use as root's shell.
-
-   The `minimal-config' option can be used to disable all of the
-following options, but it is processed first, so individual options may
-be enabled using `enable-FEATURE'.
-
-   All of the following options except for `disabled-builtins',
-`direxpand-default', and `xpg-echo-default' are enabled by default,
-unless the operating system does not provide the necessary support.
-
-`--enable-alias'
-     Allow alias expansion and include the `alias' and `unalias'
-     builtins (*note Aliases::).
-
-`--enable-arith-for-command'
-     Include support for the alternate form of the `for' command that
-     behaves like the C language `for' statement (*note Looping
-     Constructs::).
-
-`--enable-array-variables'
-     Include support for one-dimensional array shell variables (*note
-     Arrays::).
-
-`--enable-bang-history'
-     Include support for `csh'-like history substitution (*note History
-     Interaction::).
-
-`--enable-brace-expansion'
-     Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ).
-     See *note Brace Expansion::, for a complete description.
-
-`--enable-casemod-attributes'
-     Include support for case-modifying attributes in the `declare'
-     builtin and assignment statements.  Variables with the UPPERCASE
-     attribute, for example, will have their values converted to
-     uppercase upon assignment.
-
-`--enable-casemod-expansion'
-     Include support for case-modifying word expansions.
-
-`--enable-command-timing'
-     Include support for recognizing `time' as a reserved word and for
-     displaying timing statistics for the pipeline following `time'
-     (*note Pipelines::).  This allows pipelines as well as shell
-     builtins and functions to be timed.
-
-`--enable-cond-command'
-     Include support for the `[[' conditional command.  (*note
-     Conditional Constructs::).
-
-`--enable-cond-regexp'
-     Include support for matching POSIX regular expressions using the
-     `=~' binary operator in the `[[' conditional command.  (*note
-     Conditional Constructs::).
-
-`--enable-coprocesses'
-     Include support for coprocesses and the `coproc' reserved word
-     (*note Pipelines::).
-
-`--enable-debugger'
-     Include support for the bash debugger (distributed separately).
-
-`--enable-direxpand-default'
-     Cause the `direxpand' shell option (*note The Shopt Builtin::) to
-     be enabled by default when the shell starts.  It is normally
-     disabled by default.
-
-`--enable-directory-stack'
-     Include support for a `csh'-like directory stack and the `pushd',
-     `popd', and `dirs' builtins (*note The Directory Stack::).
-
-`--enable-disabled-builtins'
-     Allow builtin commands to be invoked via `builtin xxx' even after
-     `xxx' has been disabled using `enable -n xxx'.  See *note Bash
-     Builtins::, for details of the `builtin' and `enable' builtin
-     commands.
-
-`--enable-dparen-arithmetic'
-     Include support for the `((...))' command (*note Conditional
-     Constructs::).
-
-`--enable-extended-glob'
-     Include support for the extended pattern matching features
-     described above under *note Pattern Matching::.
-
-`--enable-extended-glob-default'
-     Set the default value of the EXTGLOB shell option described above
-     under *note The Shopt Builtin:: to be enabled.
-
-`--enable-glob-asciirange-default'
-     Set the default value of the GLOBASCIIRANGES shell option described
-     above under *note The Shopt Builtin:: to be enabled.  This
-     controls the behavior of character ranges when used in pattern
-     matching bracket expressions.
-
-`--enable-help-builtin'
-     Include the `help' builtin, which displays help on shell builtins
-     and variables (*note Bash Builtins::).
-
-`--enable-history'
-     Include command history and the `fc' and `history' builtin
-     commands (*note Bash History Facilities::).
-
-`--enable-job-control'
-     This enables the job control features (*note Job Control::), if
-     the operating system supports them.
-
-`--enable-multibyte'
-     This enables support for multibyte characters if the operating
-     system provides the necessary support.
-
-`--enable-net-redirections'
-     This enables the special handling of filenames of the form
-     `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in
-     redirections (*note Redirections::).
-
-`--enable-process-substitution'
-     This enables process substitution (*note Process Substitution::) if
-     the operating system provides the necessary support.
-
-`--enable-progcomp'
-     Enable the programmable completion facilities (*note Programmable
-     Completion::).  If Readline is not enabled, this option has no
-     effect.
-
-`--enable-prompt-string-decoding'
-     Turn on the interpretation of a number of backslash-escaped
-     characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt
-     strings.  See *note Controlling the Prompt::, for a complete list
-     of prompt string escape sequences.
-
-`--enable-readline'
-     Include support for command-line editing and history with the Bash
-     version of the Readline library (*note Command Line Editing::).
-
-`--enable-restricted'
-     Include support for a "restricted shell".  If this is enabled,
-     Bash, when called as `rbash', enters a restricted mode.  See *note
-     The Restricted Shell::, for a description of restricted mode.
-
-`--enable-select'
-     Include the `select' compound command, which allows the generation
-     of simple menus (*note Conditional Constructs::).
-
-`--enable-separate-helpfiles'
-     Use external files for the documentation displayed by the `help'
-     builtin instead of storing the text internally.
-
-`--enable-single-help-strings'
-     Store the text displayed by the `help' builtin as a single string
-     for each help topic.  This aids in translating the text to
-     different languages.  You may need to disable this if your
-     compiler cannot handle very long string literals.
-
-`--enable-strict-posix-default'
-     Make Bash POSIX-conformant by default (*note Bash POSIX Mode::).
-
-`--enable-usg-echo-default'
-     A synonym for `--enable-xpg-echo-default'.
-
-`--enable-xpg-echo-default'
-     Make the `echo' builtin expand backslash-escaped characters by
-     default, without requiring the `-e' option.  This sets the default
-     value of the `xpg_echo' shell option to `on', which makes the Bash
-     `echo' behave more like the version specified in the Single Unix
-     Specification, version 3.  *Note Bash Builtins::, for a
-     description of the escape sequences that `echo' recognizes.
-
-   The file `config-top.h' contains C Preprocessor `#define' statements
-for options which are not settable from `configure'.  Some of these are
-not meant to be changed; beware of the consequences if you do.  Read
-the comments associated with each definition for more information about
-its effect.
-
-\1f
-File: bash.info,  Node: Reporting Bugs,  Next: Major Differences From The Bourne Shell,  Prev: Installing Bash,  Up: Top
-
-Appendix A Reporting Bugs
-*************************
-
-Please report all bugs you find in Bash.  But first, you should make
-sure that it really is a bug, and that it appears in the latest version
-of Bash.  The latest version of Bash is always available for FTP from
-`ftp://ftp.gnu.org/pub/gnu/bash/'.
-
-   Once you have determined that a bug actually exists, use the
-`bashbug' command to submit a bug report.  If you have a fix, you are
-encouraged to mail that as well!  Suggestions and `philosophical' bug
-reports may be mailed to <bug-bash@gnu.org> or posted to the Usenet
-newsgroup `gnu.bash.bug'.
-
-   All bug reports should include:
-   * The version number of Bash.
-
-   * The hardware and operating system.
-
-   * The compiler used to compile Bash.
-
-   * A description of the bug behaviour.
-
-   * A short script or `recipe' which exercises the bug and may be used
-     to reproduce it.
-
-`bashbug' inserts the first three items automatically into the template
-it provides for filing a bug report.
-
-   Please send all reports concerning this manual to <bug-bash@gnu.org>.
-
-\1f
-File: bash.info,  Node: Major Differences From The Bourne Shell,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
-
-Appendix B Major Differences From The Bourne Shell
-**************************************************
-
-Bash implements essentially the same grammar, parameter and variable
-expansion, redirection, and quoting as the Bourne Shell.  Bash uses the
-POSIX standard as the specification of how these features are to be
-implemented.  There are some differences between the traditional Bourne
-shell and Bash; this section quickly details the differences of
-significance.  A number of these differences are explained in greater
-depth in previous sections.  This section uses the version of `sh'
-included in SVR4.2 (the last version of the historical Bourne shell) as
-the baseline reference.
-
-   * Bash is POSIX-conformant, even where the POSIX specification
-     differs from traditional `sh' behavior (*note Bash POSIX Mode::).
-
-   * Bash has multi-character invocation options (*note Invoking
-     Bash::).
-
-   * Bash has command-line editing (*note Command Line Editing::) and
-     the `bind' builtin.
-
-   * Bash provides a programmable word completion mechanism (*note
-     Programmable Completion::), and builtin commands `complete',
-     `compgen', and `compopt', to manipulate it.
-
-   * Bash has command history (*note Bash History Facilities::) and the
-     `history' and `fc' builtins to manipulate it.  The Bash history
-     list maintains timestamp information and uses the value of the
-     `HISTTIMEFORMAT' variable to display it.
-
-   * Bash implements `csh'-like history expansion (*note History
-     Interaction::).
-
-   * Bash has one-dimensional array variables (*note Arrays::), and the
-     appropriate variable expansions and assignment syntax to use them.
-     Several of the Bash builtins take options to act on arrays.  Bash
-     provides a number of built-in array variables.
-
-   * The `$'...'' quoting syntax, which expands ANSI-C
-     backslash-escaped characters in the text between the single quotes,
-     is supported (*note ANSI-C Quoting::).
-
-   * Bash supports the `$"..."' quoting syntax to do locale-specific
-     translation of the characters between the double quotes.  The
-     `-D', `--dump-strings', and `--dump-po-strings' invocation options
-     list the translatable strings found in a script (*note Locale
-     Translation::).
-
-   * Bash implements the `!' keyword to negate the return value of a
-     pipeline (*note Pipelines::).  Very useful when an `if' statement
-     needs to act only if a test fails.  The Bash `-o pipefail' option
-     to `set' will cause a pipeline to return a failure status if any
-     command fails.
-
-   * Bash has the `time' reserved word and command timing (*note
-     Pipelines::).  The display of the timing statistics may be
-     controlled with the `TIMEFORMAT' variable.
-
-   * Bash implements the `for (( EXPR1 ; EXPR2 ; EXPR3 ))' arithmetic
-     for command, similar to the C language (*note Looping
-     Constructs::).
-
-   * Bash includes the `select' compound command, which allows the
-     generation of simple menus (*note Conditional Constructs::).
-
-   * Bash includes the `[[' compound command, which makes conditional
-     testing part of the shell grammar (*note Conditional
-     Constructs::), including optional regular expression matching.
-
-   * Bash provides optional case-insensitive matching for the `case' and
-     `[[' constructs.
-
-   * Bash includes brace expansion (*note Brace Expansion::) and tilde
-     expansion (*note Tilde Expansion::).
-
-   * Bash implements command aliases and the `alias' and `unalias'
-     builtins (*note Aliases::).
-
-   * Bash provides shell arithmetic, the `((' compound command (*note
-     Conditional Constructs::), and arithmetic expansion (*note Shell
-     Arithmetic::).
-
-   * Variables present in the shell's initial environment are
-     automatically exported to child processes.  The Bourne shell does
-     not normally do this unless the variables are explicitly marked
-     using the `export' command.
-
-   * Bash supports the `+=' assignment operator, which appends to the
-     value of the variable named on the left hand side.
-
-   * Bash includes the POSIX pattern removal `%', `#', `%%' and `##'
-     expansions to remove leading or trailing substrings from variable
-     values (*note Shell Parameter Expansion::).
-
-   * The expansion `${#xx}', which returns the length of `${xx}', is
-     supported (*note Shell Parameter Expansion::).
-
-   * The expansion `${var:'OFFSET`[:'LENGTH`]}', which expands to the
-     substring of `var''s value of length LENGTH, beginning at OFFSET,
-     is present (*note Shell Parameter Expansion::).
-
-   * The expansion `${var/[/]'PATTERN`[/'REPLACEMENT`]}', which matches
-     PATTERN and replaces it with REPLACEMENT in the value of `var', is
-     available (*note Shell Parameter Expansion::).
-
-   * The expansion `${!PREFIX*}' expansion, which expands to the names
-     of all shell variables whose names begin with PREFIX, is available
-     (*note Shell Parameter Expansion::).
-
-   * Bash has INDIRECT variable expansion using `${!word}' (*note Shell
-     Parameter Expansion::).
-
-   * Bash can expand positional parameters beyond `$9' using `${NUM}'.
-
-   * The POSIX `$()' form of command substitution is implemented (*note
-     Command Substitution::), and preferred to the Bourne shell's ```'
-     (which is also implemented for backwards compatibility).
-
-   * Bash has process substitution (*note Process Substitution::).
-
-   * Bash automatically assigns variables that provide information
-     about the current user (`UID', `EUID', and `GROUPS'), the current
-     host (`HOSTTYPE', `OSTYPE', `MACHTYPE', and `HOSTNAME'), and the
-     instance of Bash that is running (`BASH', `BASH_VERSION', and
-     `BASH_VERSINFO').  *Note Bash Variables::, for details.
-
-   * The `IFS' variable is used to split only the results of expansion,
-     not all words (*note Word Splitting::).  This closes a
-     longstanding shell security hole.
-
-   * The filename expansion bracket expression code uses `!' and `^' to
-     negate the set of characters between the brackets.  The Bourne
-     shell uses only `!'.
-
-   * Bash implements the full set of POSIX filename expansion operators,
-     including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING
-     SYMBOLS (*note Filename Expansion::).
-
-   * Bash implements extended pattern matching features when the
-     `extglob' shell option is enabled (*note Pattern Matching::).
-
-   * It is possible to have a variable and a function with the same
-     name; `sh' does not separate the two name spaces.
-
-   * Bash functions are permitted to have local variables using the
-     `local' builtin, and thus useful recursive functions may be written
-     (*note Bash Builtins::).
-
-   * Variable assignments preceding commands affect only that command,
-     even builtins and functions (*note Environment::).  In `sh', all
-     variable assignments preceding commands are global unless the
-     command is executed from the file system.
-
-   * Bash performs filename expansion on filenames specified as operands
-     to input and output redirection operators (*note Redirections::).
-
-   * Bash contains the `<>' redirection operator, allowing a file to be
-     opened for both reading and writing, and the `&>' redirection
-     operator, for directing standard output and standard error to the
-     same file (*note Redirections::).
-
-   * Bash includes the `<<<' redirection operator, allowing a string to
-     be used as the standard input to a command.
-
-   * Bash implements the `[n]<&WORD' and `[n]>&WORD' redirection
-     operators, which move one file descriptor to another.
-
-   * Bash treats a number of filenames specially when they are used in
-     redirection operators (*note Redirections::).
-
-   * Bash can open network connections to arbitrary machines and
-     services with the redirection operators (*note Redirections::).
-
-   * The `noclobber' option is available to avoid overwriting existing
-     files with output redirection (*note The Set Builtin::).  The `>|'
-     redirection operator may be used to override `noclobber'.
-
-   * The Bash `cd' and `pwd' builtins (*note Bourne Shell Builtins::)
-     each take `-L' and `-P' options to switch between logical and
-     physical modes.
-
-   * Bash allows a function to override a builtin with the same name,
-     and provides access to that builtin's functionality within the
-     function via the `builtin' and `command' builtins (*note Bash
-     Builtins::).
-
-   * The `command' builtin allows selective disabling of functions when
-     command lookup is performed (*note Bash Builtins::).
-
-   * Individual builtins may be enabled or disabled using the `enable'
-     builtin (*note Bash Builtins::).
-
-   * The Bash `exec' builtin takes additional options that allow users
-     to control the contents of the environment passed to the executed
-     command, and what the zeroth argument to the command is to be
-     (*note Bourne Shell Builtins::).
-
-   * Shell functions may be exported to children via the environment
-     using `export -f' (*note Shell Functions::).
-
-   * The Bash `export', `readonly', and `declare' builtins can take a
-     `-f' option to act on shell functions, a `-p' option to display
-     variables with various attributes set in a format that can be used
-     as shell input, a `-n' option to remove various variable
-     attributes, and `name=value' arguments to set variable attributes
-     and values simultaneously.
-
-   * The Bash `hash' builtin allows a name to be associated with an
-     arbitrary filename, even when that filename cannot be found by
-     searching the `$PATH', using `hash -p' (*note Bourne Shell
-     Builtins::).
-
-   * Bash includes a `help' builtin for quick reference to shell
-     facilities (*note Bash Builtins::).
-
-   * The `printf' builtin is available to display formatted output
-     (*note Bash Builtins::).
-
-   * The Bash `read' builtin (*note Bash Builtins::) will read a line
-     ending in `\' with the `-r' option, and will use the `REPLY'
-     variable as a default if no non-option arguments are supplied.
-     The Bash `read' builtin also accepts a prompt string with the `-p'
-     option and will use Readline to obtain the line when given the
-     `-e' option.  The `read' builtin also has additional options to
-     control input: the `-s' option will turn off echoing of input
-     characters as they are read, the `-t' option will allow `read' to
-     time out if input does not arrive within a specified number of
-     seconds, the `-n' option will allow reading only a specified
-     number of characters rather than a full line, and the `-d' option
-     will read until a particular character rather than newline.
-
-   * The `return' builtin may be used to abort execution of scripts
-     executed with the `.' or `source' builtins (*note Bourne Shell
-     Builtins::).
-
-   * Bash includes the `shopt' builtin, for finer control of shell
-     optional capabilities (*note The Shopt Builtin::), and allows
-     these options to be set and unset at shell invocation (*note
-     Invoking Bash::).
-
-   * Bash has much more optional behavior controllable with the `set'
-     builtin (*note The Set Builtin::).
-
-   * The `-x' (`xtrace') option displays commands other than simple
-     commands when performing an execution trace (*note The Set
-     Builtin::).
-
-   * The `test' builtin (*note Bourne Shell Builtins::) is slightly
-     different, as it implements the POSIX algorithm, which specifies
-     the behavior based on the number of arguments.
-
-   * Bash includes the `caller' builtin, which displays the context of
-     any active subroutine call (a shell function or a script executed
-     with the `.' or `source' builtins).  This supports the bash
-     debugger.
-
-   * The `trap' builtin (*note Bourne Shell Builtins::) allows a
-     `DEBUG' pseudo-signal specification, similar to `EXIT'.  Commands
-     specified with a `DEBUG' trap are executed before every simple
-     command, `for' command, `case' command, `select' command, every
-     arithmetic `for' command, and before the first command executes in
-     a shell function.  The `DEBUG' trap is not inherited by shell
-     functions unless the function has been given the `trace' attribute
-     or the `functrace' option has been enabled using the `shopt'
-     builtin.  The `extdebug' shell option has additional effects on the
-     `DEBUG' trap.
-
-     The `trap' builtin (*note Bourne Shell Builtins::) allows an `ERR'
-     pseudo-signal specification, similar to `EXIT' and `DEBUG'.
-     Commands specified with an `ERR' trap are executed after a simple
-     command fails, with a few exceptions.  The `ERR' trap is not
-     inherited by shell functions unless the `-o errtrace' option to
-     the `set' builtin is enabled.
-
-     The `trap' builtin (*note Bourne Shell Builtins::) allows a
-     `RETURN' pseudo-signal specification, similar to `EXIT' and
-     `DEBUG'.  Commands specified with an `RETURN' trap are executed
-     before execution resumes after a shell function or a shell script
-     executed with `.' or `source' returns.  The `RETURN' trap is not
-     inherited by shell functions unless the function has been given
-     the `trace' attribute or the `functrace' option has been enabled
-     using the `shopt' builtin.
-
-   * The Bash `type' builtin is more extensive and gives more
-     information about the names it finds (*note Bash Builtins::).
-
-   * The Bash `umask' builtin permits a `-p' option to cause the output
-     to be displayed in the form of a `umask' command that may be
-     reused as input (*note Bourne Shell Builtins::).
-
-   * Bash implements a `csh'-like directory stack, and provides the
-     `pushd', `popd', and `dirs' builtins to manipulate it (*note The
-     Directory Stack::).  Bash also makes the directory stack visible
-     as the value of the `DIRSTACK' shell variable.
-
-   * Bash interprets special backslash-escaped characters in the prompt
-     strings when interactive (*note Controlling the Prompt::).
-
-   * The Bash restricted mode is more useful (*note The Restricted
-     Shell::); the SVR4.2 shell restricted mode is too limited.
-
-   * The `disown' builtin can remove a job from the internal shell job
-     table (*note Job Control Builtins::) or suppress the sending of
-     `SIGHUP' to a job when the shell exits as the result of a `SIGHUP'.
-
-   * Bash includes a number of features to support a separate debugger
-     for shell scripts.
-
-   * The SVR4.2 shell has two privilege-related builtins (`mldmode' and
-     `priv') not present in Bash.
-
-   * Bash does not have the `stop' or `newgrp' builtins.
-
-   * Bash does not use the `SHACCT' variable or perform shell
-     accounting.
-
-   * The SVR4.2 `sh' uses a `TIMEOUT' variable like Bash uses `TMOUT'.
-
-
-More features unique to Bash may be found in *note Bash Features::.
-
-B.1 Implementation Differences From The SVR4.2 Shell
-====================================================
-
-Since Bash is a completely new implementation, it does not suffer from
-many of the limitations of the SVR4.2 shell.  For instance:
-
-   * Bash does not fork a subshell when redirecting into or out of a
-     shell control structure such as  an `if' or `while' statement.
-
-   * Bash does not allow unbalanced quotes.  The SVR4.2 shell will
-     silently insert a needed closing quote at `EOF' under certain
-     circumstances.  This can be the cause of some hard-to-find errors.
-
-   * The SVR4.2 shell uses a baroque memory management scheme based on
-     trapping `SIGSEGV'.  If the shell is started from a process with
-     `SIGSEGV' blocked (e.g., by using the `system()' C library
-     function call), it misbehaves badly.
-
-   * In a questionable attempt at security, the SVR4.2 shell, when
-     invoked without the `-p' option, will alter its real and effective
-     UID and GID if they are less than some magic threshold value,
-     commonly 100.  This can lead to unexpected results.
-
-   * The SVR4.2 shell does not allow users to trap `SIGSEGV',
-     `SIGALRM', or `SIGCHLD'.
-
-   * The SVR4.2 shell does not allow the `IFS', `MAILCHECK', `PATH',
-     `PS1', or `PS2' variables to be unset.
-
-   * The SVR4.2 shell treats `^' as the undocumented equivalent of `|'.
-
-   * Bash allows multiple option arguments when it is invoked (`-x -v');
-     the SVR4.2 shell allows only one option argument (`-xv').  In
-     fact, some versions of the shell dump core if the second argument
-     begins with a `-'.
-
-   * The SVR4.2 shell exits a script if any builtin fails; Bash exits a
-     script only if one of the POSIX special builtins fails, and only
-     for certain failures, as enumerated in the POSIX standard.
-
-   * The SVR4.2 shell behaves differently when invoked as `jsh' (it
-     turns on job control).
-
-\1f
-File: bash.info,  Node: GNU Free Documentation License,  Next: Indexes,  Prev: Major Differences From The Bourne Shell,  Up: Top
-
-Appendix C GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     `http://fsf.org/'
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.
-     We recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it
-     can be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You
-     accept the license if you copy, modify or distribute the work in a
-     way requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in
-     the notice that says that the Document is released under this
-     License.  If a section does not fit the above definition of
-     Secondary then it is not allowed to be designated as Invariant.
-     The Document may contain zero Invariant Sections.  If the Document
-     does not identify any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images
-     composed of pixels) generic paint programs or (for drawings) some
-     widely available drawing editor, and that is suitable for input to
-     text formatters or for automatic translation to a variety of
-     formats suitable for input to text formatters.  A copy made in an
-     otherwise Transparent file format whose markup, or absence of
-     markup, has been arranged to thwart or discourage subsequent
-     modification by readers is not Transparent.  An image format is
-     not Transparent if used for any substantial amount of text.  A
-     copy that is not "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and
-     standard-conforming simple HTML, PostScript or PDF designed for
-     human modification.  Examples of transparent image formats include
-     PNG, XCF and JPG.  Opaque formats include proprietary formats that
-     can be read and edited only by proprietary word processors, SGML or
-     XML for which the DTD and/or processing tools are not generally
-     available, and the machine-generated HTML, PostScript or PDF
-     produced by some word processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow
-     the conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the
-     title equally prominent and visible.  You may add other material
-     on the covers in addition.  Copying with changes limited to the
-     covers, as long as they preserve the title of the Document and
-     satisfy these conditions, can be treated as verbatim copying in
-     other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a
-     machine-readable Transparent copy along with each Opaque copy, or
-     state in or with each Opaque copy a computer-network location from
-     which the general network-using public has access to download
-     using public-standard network protocols a complete Transparent
-     copy of the Document, free of added material.  If you use the
-     latter option, you must take reasonably prudent steps, when you
-     begin distribution of Opaque copies in quantity, to ensure that
-     this Transparent copy will remain thus accessible at the stated
-     location until at least one year after the last time you
-     distribute an Opaque copy (directly or through your agents or
-     retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of
-     copies, to give them a chance to provide you with an updated
-     version of the Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with
-     the Modified Version filling the role of the Document, thus
-     licensing distribution and modification of the Modified Version to
-     whoever possesses a copy of it.  In addition, you must do these
-     things in the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of
-          previous versions (which should, if there were any, be listed
-          in the History section of the Document).  You may use the
-          same title as a previous version if the original publisher of
-          that version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on
-          the Title Page.  If there is no section Entitled "History" in
-          the Document, create one stating the title, year, authors,
-          and publisher of the Document as given on its Title Page,
-          then add an item describing the Modified Version as stated in
-          the previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in
-          the "History" section.  You may omit a network location for a
-          work that was published at least four years before the
-          Document itself, or if the original publisher of the version
-          it refers to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the
-          section all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document,
-          unaltered in their text and in their titles.  Section numbers
-          or the equivalent are not considered part of the section
-          titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option
-     designate some or all of these sections as invariant.  To do this,
-     add their titles to the list of Invariant Sections in the Modified
-     Version's license notice.  These titles must be distinct from any
-     other section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end
-     of the list of Cover Texts in the Modified Version.  Only one
-     passage of Front-Cover Text and one of Back-Cover Text may be
-     added by (or through arrangements made by) any one entity.  If the
-     Document already includes a cover text for the same cover,
-     previously added by you or by arrangement made by the same entity
-     you are acting on behalf of, you may not add another; but you may
-     replace the old one, on explicit permission from the previous
-     publisher that added the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination
-     all of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the
-     documents in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow
-     this License in all other respects regarding verbatim copying of
-     that document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of
-     a storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly
-     and finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from
-     you under this License.  If your rights have been terminated and
-     not permanently reinstated, receipt of a copy of some or all of
-     the same material does not give you any rights to use it.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     `http://www.gnu.org/copyleft/'.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If
-     the Document does not specify a version number of this License,
-     you may choose any version ever published (not as a draft) by the
-     Free Software Foundation.  If the Document specifies that a proxy
-     can decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
- 11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License, to
-permit their use in free software.
-
-\1f
-File: bash.info,  Node: Indexes,  Prev: GNU Free Documentation License,  Up: Top
-
-Appendix D Indexes
-******************
-
-* Menu:
-
-* Builtin Index::              Index of Bash builtin commands.
-* Reserved Word Index::                Index of Bash reserved words.
-* Variable Index::             Quick reference helps you find the
-                               variable you want.
-* Function Index::             Index of bindable Readline functions.
-* Concept Index::              General index for concepts described in
-                               this manual.
-
-\1f
-File: bash.info,  Node: Builtin Index,  Next: Reserved Word Index,  Up: Indexes
-
-D.1 Index of Shell Builtin Commands
-===================================
-
-\0\b[index\0\b]
-* Menu:
-
-* .:                                     Bourne Shell Builtins.
-                                                              (line  17)
-* ::                                     Bourne Shell Builtins.
-                                                              (line  11)
-* [:                                     Bourne Shell Builtins.
-                                                              (line 263)
-* alias:                                 Bash Builtins.       (line  11)
-* bg:                                    Job Control Builtins.
-                                                              (line   7)
-* bind:                                  Bash Builtins.       (line  21)
-* break:                                 Bourne Shell Builtins.
-                                                              (line  31)
-* builtin:                               Bash Builtins.       (line 102)
-* caller:                                Bash Builtins.       (line 111)
-* cd:                                    Bourne Shell Builtins.
-                                                              (line  39)
-* command:                               Bash Builtins.       (line 129)
-* compgen:                               Programmable Completion Builtins.
-                                                              (line  12)
-* complete:                              Programmable Completion Builtins.
-                                                              (line  30)
-* compopt:                               Programmable Completion Builtins.
-                                                              (line 228)
-* continue:                              Bourne Shell Builtins.
-                                                              (line  80)
-* declare:                               Bash Builtins.       (line 149)
-* dirs:                                  Directory Stack Builtins.
-                                                              (line   7)
-* disown:                                Job Control Builtins.
-                                                              (line  89)
-* echo:                                  Bash Builtins.       (line 246)
-* enable:                                Bash Builtins.       (line 308)
-* eval:                                  Bourne Shell Builtins.
-                                                              (line  89)
-* exec:                                  Bourne Shell Builtins.
-                                                              (line  97)
-* exit:                                  Bourne Shell Builtins.
-                                                              (line 114)
-* export:                                Bourne Shell Builtins.
-                                                              (line 121)
-* fc:                                    Bash History Builtins.
-                                                              (line  10)
-* fg:                                    Job Control Builtins.
-                                                              (line  17)
-* getopts:                               Bourne Shell Builtins.
-                                                              (line 137)
-* hash:                                  Bourne Shell Builtins.
-                                                              (line 180)
-* help:                                  Bash Builtins.       (line 337)
-* history:                               Bash History Builtins.
-                                                              (line  40)
-* jobs:                                  Job Control Builtins.
-                                                              (line  27)
-* kill:                                  Job Control Builtins.
-                                                              (line  59)
-* let:                                   Bash Builtins.       (line 358)
-* local:                                 Bash Builtins.       (line 366)
-* logout:                                Bash Builtins.       (line 377)
-* mapfile:                               Bash Builtins.       (line 382)
-* popd:                                  Directory Stack Builtins.
-                                                              (line  39)
-* printf:                                Bash Builtins.       (line 434)
-* pushd:                                 Directory Stack Builtins.
-                                                              (line  61)
-* pwd:                                   Bourne Shell Builtins.
-                                                              (line 200)
-* read:                                  Bash Builtins.       (line 482)
-* readarray:                             Bash Builtins.       (line 569)
-* readonly:                              Bourne Shell Builtins.
-                                                              (line 210)
-* return:                                Bourne Shell Builtins.
-                                                              (line 229)
-* set:                                   The Set Builtin.     (line  11)
-* shift:                                 Bourne Shell Builtins.
-                                                              (line 250)
-* shopt:                                 The Shopt Builtin.   (line   9)
-* source:                                Bash Builtins.       (line 578)
-* suspend:                               Job Control Builtins.
-                                                              (line 101)
-* test:                                  Bourne Shell Builtins.
-                                                              (line 263)
-* times:                                 Bourne Shell Builtins.
-                                                              (line 339)
-* trap:                                  Bourne Shell Builtins.
-                                                              (line 345)
-* type:                                  Bash Builtins.       (line 583)
-* typeset:                               Bash Builtins.       (line 615)
-* ulimit:                                Bash Builtins.       (line 621)
-* umask:                                 Bourne Shell Builtins.
-                                                              (line 394)
-* unalias:                               Bash Builtins.       (line 712)
-* unset:                                 Bourne Shell Builtins.
-                                                              (line 412)
-* wait:                                  Job Control Builtins.
-                                                              (line  76)
-
-\1f
-File: bash.info,  Node: Reserved Word Index,  Next: Variable Index,  Prev: Builtin Index,  Up: Indexes
-
-D.2 Index of Shell Reserved Words
-=================================
-
-\0\b[index\0\b]
-* Menu:
-
-* !:                                     Pipelines.           (line   9)
-* [[:                                    Conditional Constructs.
-                                                              (line 119)
-* ]]:                                    Conditional Constructs.
-                                                              (line 119)
-* case:                                  Conditional Constructs.
-                                                              (line  28)
-* do:                                    Looping Constructs.  (line  12)
-* done:                                  Looping Constructs.  (line  12)
-* elif:                                  Conditional Constructs.
-                                                              (line   7)
-* else:                                  Conditional Constructs.
-                                                              (line   7)
-* esac:                                  Conditional Constructs.
-                                                              (line  28)
-* fi:                                    Conditional Constructs.
-                                                              (line   7)
-* for:                                   Looping Constructs.  (line  32)
-* function:                              Shell Functions.     (line  13)
-* if:                                    Conditional Constructs.
-                                                              (line   7)
-* in:                                    Conditional Constructs.
-                                                              (line  28)
-* select:                                Conditional Constructs.
-                                                              (line  78)
-* then:                                  Conditional Constructs.
-                                                              (line   7)
-* time:                                  Pipelines.           (line   9)
-* until:                                 Looping Constructs.  (line  12)
-* while:                                 Looping Constructs.  (line  22)
-* {:                                     Command Grouping.    (line  21)
-* }:                                     Command Grouping.    (line  21)
-
-\1f
-File: bash.info,  Node: Variable Index,  Next: Function Index,  Prev: Reserved Word Index,  Up: Indexes
-
-D.3 Parameter and Variable Index
-================================
-
-\0\b[index\0\b]
-* Menu:
-
-* !:                                     Special Parameters.  (line  50)
-* #:                                     Special Parameters.  (line  33)
-* $:                                     Special Parameters.  (line  45)
-* $!:                                    Special Parameters.  (line  51)
-* $#:                                    Special Parameters.  (line  34)
-* $$:                                    Special Parameters.  (line  46)
-* $*:                                    Special Parameters.  (line  10)
-* $-:                                    Special Parameters.  (line  41)
-* $0:                                    Special Parameters.  (line  56)
-* $?:                                    Special Parameters.  (line  37)
-* $@:                                    Special Parameters.  (line  23)
-* $_:                                    Special Parameters.  (line  65)
-* *:                                     Special Parameters.  (line   9)
-* -:                                     Special Parameters.  (line  40)
-* 0:                                     Special Parameters.  (line  55)
-* ?:                                     Special Parameters.  (line  36)
-* @:                                     Special Parameters.  (line  22)
-* _:                                     Special Parameters.  (line  64)
-* auto_resume:                           Job Control Variables.
-                                                              (line   6)
-* BASH:                                  Bash Variables.      (line  13)
-* BASH_ALIASES:                          Bash Variables.      (line  30)
-* BASH_ARGC:                             Bash Variables.      (line  37)
-* BASH_ARGV:                             Bash Variables.      (line  47)
-* BASH_CMDS:                             Bash Variables.      (line  57)
-* BASH_COMMAND:                          Bash Variables.      (line  64)
-* BASH_COMPAT:                           Bash Variables.      (line  69)
-* BASH_ENV:                              Bash Variables.      (line  84)
-* BASH_EXECUTION_STRING:                 Bash Variables.      (line  90)
-* BASH_LINENO:                           Bash Variables.      (line  93)
-* BASH_REMATCH:                          Bash Variables.      (line 101)
-* BASH_SOURCE:                           Bash Variables.      (line 109)
-* BASH_SUBSHELL:                         Bash Variables.      (line 116)
-* BASH_VERSINFO:                         Bash Variables.      (line 121)
-* BASH_VERSION:                          Bash Variables.      (line 144)
-* BASH_XTRACEFD:                         Bash Variables.      (line 147)
-* BASHOPTS:                              Bash Variables.      (line  16)
-* BASHPID:                               Bash Variables.      (line  25)
-* bell-style:                            Readline Init File Syntax.
-                                                              (line  38)
-* bind-tty-special-chars:                Readline Init File Syntax.
-                                                              (line  45)
-* blink-matching-paren:                  Readline Init File Syntax.
-                                                              (line  50)
-* CDPATH:                                Bourne Shell Variables.
-                                                              (line   9)
-* CHILD_MAX:                             Bash Variables.      (line 158)
-* colored-stats:                         Readline Init File Syntax.
-                                                              (line  55)
-* COLUMNS:                               Bash Variables.      (line 165)
-* comment-begin:                         Readline Init File Syntax.
-                                                              (line  61)
-* COMP_CWORD:                            Bash Variables.      (line 171)
-* COMP_KEY:                              Bash Variables.      (line 200)
-* COMP_LINE:                             Bash Variables.      (line 177)
-* COMP_POINT:                            Bash Variables.      (line 182)
-* COMP_TYPE:                             Bash Variables.      (line 190)
-* COMP_WORDBREAKS:                       Bash Variables.      (line 204)
-* COMP_WORDS:                            Bash Variables.      (line 210)
-* completion-display-width:              Readline Init File Syntax.
-                                                              (line  66)
-* completion-ignore-case:                Readline Init File Syntax.
-                                                              (line  73)
-* completion-map-case:                   Readline Init File Syntax.
-                                                              (line  78)
-* completion-prefix-display-length:      Readline Init File Syntax.
-                                                              (line  84)
-* completion-query-items:                Readline Init File Syntax.
-                                                              (line  91)
-* COMPREPLY:                             Bash Variables.      (line 218)
-* convert-meta:                          Readline Init File Syntax.
-                                                              (line 101)
-* COPROC:                                Bash Variables.      (line 224)
-* DIRSTACK:                              Bash Variables.      (line 228)
-* disable-completion:                    Readline Init File Syntax.
-                                                              (line 107)
-* editing-mode:                          Readline Init File Syntax.
-                                                              (line 112)
-* EMACS:                                 Bash Variables.      (line 238)
-* enable-keypad:                         Readline Init File Syntax.
-                                                              (line 123)
-* ENV:                                   Bash Variables.      (line 243)
-* EUID:                                  Bash Variables.      (line 247)
-* expand-tilde:                          Readline Init File Syntax.
-                                                              (line 134)
-* FCEDIT:                                Bash Variables.      (line 251)
-* FIGNORE:                               Bash Variables.      (line 255)
-* FUNCNAME:                              Bash Variables.      (line 261)
-* FUNCNEST:                              Bash Variables.      (line 279)
-* GLOBIGNORE:                            Bash Variables.      (line 284)
-* GROUPS:                                Bash Variables.      (line 290)
-* histchars:                             Bash Variables.      (line 296)
-* HISTCMD:                               Bash Variables.      (line 311)
-* HISTCONTROL:                           Bash Variables.      (line 316)
-* HISTFILE:                              Bash Variables.      (line 332)
-* HISTFILESIZE:                          Bash Variables.      (line 336)
-* HISTIGNORE:                            Bash Variables.      (line 347)
-* history-preserve-point:                Readline Init File Syntax.
-                                                              (line 138)
-* history-size:                          Readline Init File Syntax.
-                                                              (line 144)
-* HISTSIZE:                              Bash Variables.      (line 366)
-* HISTTIMEFORMAT:                        Bash Variables.      (line 373)
-* HOME:                                  Bourne Shell Variables.
-                                                              (line  13)
-* horizontal-scroll-mode:                Readline Init File Syntax.
-                                                              (line 151)
-* HOSTFILE:                              Bash Variables.      (line 382)
-* HOSTNAME:                              Bash Variables.      (line 393)
-* HOSTTYPE:                              Bash Variables.      (line 396)
-* IFS:                                   Bourne Shell Variables.
-                                                              (line  18)
-* IGNOREEOF:                             Bash Variables.      (line 399)
-* input-meta:                            Readline Init File Syntax.
-                                                              (line 158)
-* INPUTRC:                               Bash Variables.      (line 409)
-* isearch-terminators:                   Readline Init File Syntax.
-                                                              (line 165)
-* keymap:                                Readline Init File Syntax.
-                                                              (line 172)
-* LANG:                                  Bash Variables.      (line 413)
-* LC_ALL:                                Bash Variables.      (line 417)
-* LC_COLLATE:                            Bash Variables.      (line 421)
-* LC_CTYPE:                              Bash Variables.      (line 428)
-* LC_MESSAGES <1>:                       Locale Translation.  (line  11)
-* LC_MESSAGES:                           Bash Variables.      (line 433)
-* LC_NUMERIC:                            Bash Variables.      (line 437)
-* LINENO:                                Bash Variables.      (line 441)
-* LINES:                                 Bash Variables.      (line 445)
-* MACHTYPE:                              Bash Variables.      (line 451)
-* MAIL:                                  Bourne Shell Variables.
-                                                              (line  22)
-* MAILCHECK:                             Bash Variables.      (line 455)
-* MAILPATH:                              Bourne Shell Variables.
-                                                              (line  27)
-* MAPFILE:                               Bash Variables.      (line 463)
-* mark-modified-lines:                   Readline Init File Syntax.
-                                                              (line 201)
-* mark-symlinked-directories:            Readline Init File Syntax.
-                                                              (line 206)
-* match-hidden-files:                    Readline Init File Syntax.
-                                                              (line 211)
-* menu-complete-display-prefix:          Readline Init File Syntax.
-                                                              (line 218)
-* meta-flag:                             Readline Init File Syntax.
-                                                              (line 158)
-* OLDPWD:                                Bash Variables.      (line 467)
-* OPTARG:                                Bourne Shell Variables.
-                                                              (line  34)
-* OPTERR:                                Bash Variables.      (line 470)
-* OPTIND:                                Bourne Shell Variables.
-                                                              (line  38)
-* OSTYPE:                                Bash Variables.      (line 474)
-* output-meta:                           Readline Init File Syntax.
-                                                              (line 223)
-* page-completions:                      Readline Init File Syntax.
-                                                              (line 228)
-* PATH:                                  Bourne Shell Variables.
-                                                              (line  42)
-* PIPESTATUS:                            Bash Variables.      (line 477)
-* POSIXLY_CORRECT:                       Bash Variables.      (line 482)
-* PPID:                                  Bash Variables.      (line 491)
-* PROMPT_COMMAND:                        Bash Variables.      (line 495)
-* PROMPT_DIRTRIM:                        Bash Variables.      (line 499)
-* PS1:                                   Bourne Shell Variables.
-                                                              (line  48)
-* PS2:                                   Bourne Shell Variables.
-                                                              (line  53)
-* PS3:                                   Bash Variables.      (line 505)
-* PS4:                                   Bash Variables.      (line 510)
-* PWD:                                   Bash Variables.      (line 516)
-* RANDOM:                                Bash Variables.      (line 519)
-* READLINE_LINE:                         Bash Variables.      (line 524)
-* READLINE_POINT:                        Bash Variables.      (line 528)
-* REPLY:                                 Bash Variables.      (line 532)
-* revert-all-at-newline:                 Readline Init File Syntax.
-                                                              (line 238)
-* SECONDS:                               Bash Variables.      (line 535)
-* SHELL:                                 Bash Variables.      (line 541)
-* SHELLOPTS:                             Bash Variables.      (line 546)
-* SHLVL:                                 Bash Variables.      (line 555)
-* show-all-if-ambiguous:                 Readline Init File Syntax.
-                                                              (line 244)
-* show-all-if-unmodified:                Readline Init File Syntax.
-                                                              (line 250)
-* show-mode-in-prompt:                   Readline Init File Syntax.
-                                                              (line 259)
-* skip-completed-text:                   Readline Init File Syntax.
-                                                              (line 264)
-* TEXTDOMAIN:                            Locale Translation.  (line  11)
-* TEXTDOMAINDIR:                         Locale Translation.  (line  11)
-* TIMEFORMAT:                            Bash Variables.      (line 560)
-* TMOUT:                                 Bash Variables.      (line 598)
-* TMPDIR:                                Bash Variables.      (line 610)
-* UID:                                   Bash Variables.      (line 614)
-* visible-stats:                         Readline Init File Syntax.
-                                                              (line 277)
-
-\1f
-File: bash.info,  Node: Function Index,  Next: Concept Index,  Prev: Variable Index,  Up: Indexes
-
-D.4 Function Index
-==================
-
-\0\b[index\0\b]
-* Menu:
-
-* abort (C-g):                           Miscellaneous Commands.
-                                                               (line 10)
-* accept-line (Newline or Return):       Commands For History. (line  6)
-* backward-char (C-b):                   Commands For Moving.  (line 15)
-* backward-delete-char (Rubout):         Commands For Text.    (line 17)
-* backward-kill-line (C-x Rubout):       Commands For Killing. (line  9)
-* backward-kill-word (M-<DEL>):          Commands For Killing. (line 24)
-* backward-word (M-b):                   Commands For Moving.  (line 22)
-* beginning-of-history (M-<):            Commands For History. (line 20)
-* beginning-of-line (C-a):               Commands For Moving.  (line  6)
-* call-last-kbd-macro (C-x e):           Keyboard Macros.      (line 13)
-* capitalize-word (M-c):                 Commands For Text.    (line 52)
-* character-search (C-]):                Miscellaneous Commands.
-                                                               (line 41)
-* character-search-backward (M-C-]):     Miscellaneous Commands.
-                                                               (line 46)
-* clear-screen (C-l):                    Commands For Moving.  (line 34)
-* complete (<TAB>):                      Commands For Completion.
-                                                               (line  6)
-* copy-backward-word ():                 Commands For Killing. (line 58)
-* copy-forward-word ():                  Commands For Killing. (line 63)
-* copy-region-as-kill ():                Commands For Killing. (line 54)
-* delete-char (C-d):                     Commands For Text.    (line 12)
-* delete-char-or-list ():                Commands For Completion.
-                                                               (line 43)
-* delete-horizontal-space ():            Commands For Killing. (line 46)
-* digit-argument (M-0, M-1, ... M--):    Numeric Arguments.    (line  6)
-* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
-                                                               (line 14)
-* downcase-word (M-l):                   Commands For Text.    (line 48)
-* dump-functions ():                     Miscellaneous Commands.
-                                                               (line 73)
-* dump-macros ():                        Miscellaneous Commands.
-                                                               (line 85)
-* dump-variables ():                     Miscellaneous Commands.
-                                                               (line 79)
-* end-kbd-macro (C-x )):                 Keyboard Macros.      (line  9)
-* end-of-file (usually C-d):             Commands For Text.    (line  6)
-* end-of-history (M->):                  Commands For History. (line 23)
-* end-of-line (C-e):                     Commands For Moving.  (line  9)
-* exchange-point-and-mark (C-x C-x):     Miscellaneous Commands.
-                                                               (line 36)
-* forward-backward-delete-char ():       Commands For Text.    (line 21)
-* forward-char (C-f):                    Commands For Moving.  (line 12)
-* forward-search-history (C-s):          Commands For History. (line 31)
-* forward-word (M-f):                    Commands For Moving.  (line 18)
-* history-search-backward ():            Commands For History. (line 53)
-* history-search-forward ():             Commands For History. (line 47)
-* history-substr-search-backward ():     Commands For History. (line 65)
-* history-substr-search-forward ():      Commands For History. (line 59)
-* insert-comment (M-#):                  Miscellaneous Commands.
-                                                               (line 60)
-* insert-completions (M-*):              Commands For Completion.
-                                                               (line 22)
-* kill-line (C-k):                       Commands For Killing. (line  6)
-* kill-region ():                        Commands For Killing. (line 50)
-* kill-whole-line ():                    Commands For Killing. (line 15)
-* kill-word (M-d):                       Commands For Killing. (line 19)
-* menu-complete ():                      Commands For Completion.
-                                                               (line 26)
-* menu-complete-backward ():             Commands For Completion.
-                                                               (line 38)
-* next-history (C-n):                    Commands For History. (line 17)
-* non-incremental-forward-search-history (M-n): Commands For History.
-                                                               (line 41)
-* non-incremental-reverse-search-history (M-p): Commands For History.
-                                                               (line 35)
-* overwrite-mode ():                     Commands For Text.    (line 56)
-* possible-completions (M-?):            Commands For Completion.
-                                                               (line 15)
-* prefix-meta (<ESC>):                   Miscellaneous Commands.
-                                                               (line 18)
-* previous-history (C-p):                Commands For History. (line 13)
-* print-last-kbd-macro ():               Keyboard Macros.      (line 17)
-* quoted-insert (C-q or C-v):            Commands For Text.    (line 26)
-* re-read-init-file (C-x C-r):           Miscellaneous Commands.
-                                                               (line  6)
-* redraw-current-line ():                Commands For Moving.  (line 38)
-* reverse-search-history (C-r):          Commands For History. (line 27)
-* revert-line (M-r):                     Miscellaneous Commands.
-                                                               (line 25)
-* self-insert (a, b, A, 1, !, ...):      Commands For Text.    (line 30)
-* set-mark (C-@):                        Miscellaneous Commands.
-                                                               (line 32)
-* skip-csi-sequence ():                  Miscellaneous Commands.
-                                                               (line 51)
-* start-kbd-macro (C-x ():               Keyboard Macros.      (line  6)
-* transpose-chars (C-t):                 Commands For Text.    (line 33)
-* transpose-words (M-t):                 Commands For Text.    (line 39)
-* undo (C-_ or C-x C-u):                 Miscellaneous Commands.
-                                                               (line 22)
-* universal-argument ():                 Numeric Arguments.    (line 10)
-* unix-filename-rubout ():               Commands For Killing. (line 41)
-* unix-line-discard (C-u):               Commands For Killing. (line 12)
-* unix-word-rubout (C-w):                Commands For Killing. (line 37)
-* upcase-word (M-u):                     Commands For Text.    (line 44)
-* yank (C-y):                            Commands For Killing. (line 68)
-* yank-last-arg (M-. or M-_):            Commands For History. (line 80)
-* yank-nth-arg (M-C-y):                  Commands For History. (line 71)
-* yank-pop (M-y):                        Commands For Killing. (line 71)
-
-\1f
-File: bash.info,  Node: Concept Index,  Prev: Function Index,  Up: Indexes
-
-D.5 Concept Index
-=================
-
-\0\b[index\0\b]
-* Menu:
-
-* alias expansion:                       Aliases.             (line   6)
-* arithmetic evaluation:                 Shell Arithmetic.    (line   6)
-* arithmetic expansion:                  Arithmetic Expansion.
-                                                              (line   6)
-* arithmetic, shell:                     Shell Arithmetic.    (line   6)
-* arrays:                                Arrays.              (line   6)
-* background:                            Job Control Basics.  (line   6)
-* Bash configuration:                    Basic Installation.  (line   6)
-* Bash installation:                     Basic Installation.  (line   6)
-* Bourne shell:                          Basic Shell Features.
-                                                              (line   6)
-* brace expansion:                       Brace Expansion.     (line   6)
-* builtin:                               Definitions.         (line  17)
-* command editing:                       Readline Bare Essentials.
-                                                              (line   6)
-* command execution:                     Command Search and Execution.
-                                                              (line   6)
-* command expansion:                     Simple Command Expansion.
-                                                              (line   6)
-* command history:                       Bash History Facilities.
-                                                              (line   6)
-* command search:                        Command Search and Execution.
-                                                              (line   6)
-* command substitution:                  Command Substitution.
-                                                              (line   6)
-* command timing:                        Pipelines.           (line   9)
-* commands, compound:                    Compound Commands.   (line   6)
-* commands, conditional:                 Conditional Constructs.
-                                                              (line   6)
-* commands, grouping:                    Command Grouping.    (line   6)
-* commands, lists:                       Lists.               (line   6)
-* commands, looping:                     Looping Constructs.  (line   6)
-* commands, pipelines:                   Pipelines.           (line   6)
-* commands, shell:                       Shell Commands.      (line   6)
-* commands, simple:                      Simple Commands.     (line   6)
-* comments, shell:                       Comments.            (line   6)
-* completion builtins:                   Programmable Completion Builtins.
-                                                              (line   6)
-* configuration:                         Basic Installation.  (line   6)
-* control operator:                      Definitions.         (line  21)
-* coprocess:                             Coprocesses.         (line   6)
-* directory stack:                       The Directory Stack. (line   6)
-* editing command lines:                 Readline Bare Essentials.
-                                                              (line   6)
-* environment:                           Environment.         (line   6)
-* evaluation, arithmetic:                Shell Arithmetic.    (line   6)
-* event designators:                     Event Designators.   (line   6)
-* execution environment:                 Command Execution Environment.
-                                                              (line   6)
-* exit status <1>:                       Exit Status.         (line   6)
-* exit status:                           Definitions.         (line  26)
-* expansion:                             Shell Expansions.    (line   6)
-* expansion, arithmetic:                 Arithmetic Expansion.
-                                                              (line   6)
-* expansion, brace:                      Brace Expansion.     (line   6)
-* expansion, filename:                   Filename Expansion.  (line   9)
-* expansion, parameter:                  Shell Parameter Expansion.
-                                                              (line   6)
-* expansion, pathname:                   Filename Expansion.  (line   9)
-* expansion, tilde:                      Tilde Expansion.     (line   6)
-* expressions, arithmetic:               Shell Arithmetic.    (line   6)
-* expressions, conditional:              Bash Conditional Expressions.
-                                                              (line   6)
-* field:                                 Definitions.         (line  30)
-* filename:                              Definitions.         (line  35)
-* filename expansion:                    Filename Expansion.  (line   9)
-* foreground:                            Job Control Basics.  (line   6)
-* functions, shell:                      Shell Functions.     (line   6)
-* history builtins:                      Bash History Builtins.
-                                                              (line   6)
-* history events:                        Event Designators.   (line   8)
-* history expansion:                     History Interaction. (line   6)
-* history list:                          Bash History Facilities.
-                                                              (line   6)
-* History, how to use:                   A Programmable Completion Example.
-                                                              (line 114)
-* identifier:                            Definitions.         (line  51)
-* initialization file, readline:         Readline Init File.  (line   6)
-* installation:                          Basic Installation.  (line   6)
-* interaction, readline:                 Readline Interaction.
-                                                              (line   6)
-* interactive shell <1>:                 Interactive Shells.  (line   6)
-* interactive shell:                     Invoking Bash.       (line 128)
-* internationalization:                  Locale Translation.  (line   6)
-* job:                                   Definitions.         (line  38)
-* job control <1>:                       Job Control Basics.  (line   6)
-* job control:                           Definitions.         (line  42)
-* kill ring:                             Readline Killing Commands.
-                                                              (line  19)
-* killing text:                          Readline Killing Commands.
-                                                              (line   6)
-* localization:                          Locale Translation.  (line   6)
-* login shell:                           Invoking Bash.       (line 125)
-* matching, pattern:                     Pattern Matching.    (line   6)
-* metacharacter:                         Definitions.         (line  46)
-* name:                                  Definitions.         (line  51)
-* native languages:                      Locale Translation.  (line   6)
-* notation, readline:                    Readline Bare Essentials.
-                                                              (line   6)
-* operator, shell:                       Definitions.         (line  57)
-* parameter expansion:                   Shell Parameter Expansion.
-                                                              (line   6)
-* parameters:                            Shell Parameters.    (line   6)
-* parameters, positional:                Positional Parameters.
-                                                              (line   6)
-* parameters, special:                   Special Parameters.  (line   6)
-* pathname expansion:                    Filename Expansion.  (line   9)
-* pattern matching:                      Pattern Matching.    (line   6)
-* pipeline:                              Pipelines.           (line   6)
-* POSIX:                                 Definitions.         (line   9)
-* POSIX Mode:                            Bash POSIX Mode.     (line   6)
-* process group:                         Definitions.         (line  62)
-* process group ID:                      Definitions.         (line  66)
-* process substitution:                  Process Substitution.
-                                                              (line   6)
-* programmable completion:               Programmable Completion.
-                                                              (line   6)
-* prompting:                             Controlling the Prompt.
-                                                              (line   6)
-* quoting:                               Quoting.             (line   6)
-* quoting, ANSI:                         ANSI-C Quoting.      (line   6)
-* Readline, how to use:                  Job Control Variables.
-                                                              (line  24)
-* redirection:                           Redirections.        (line   6)
-* reserved word:                         Definitions.         (line  70)
-* restricted shell:                      The Restricted Shell.
-                                                              (line   6)
-* return status:                         Definitions.         (line  75)
-* shell arithmetic:                      Shell Arithmetic.    (line   6)
-* shell function:                        Shell Functions.     (line   6)
-* shell script:                          Shell Scripts.       (line   6)
-* shell variable:                        Shell Parameters.    (line   6)
-* shell, interactive:                    Interactive Shells.  (line   6)
-* signal:                                Definitions.         (line  78)
-* signal handling:                       Signals.             (line   6)
-* special builtin <1>:                   Special Builtins.    (line   6)
-* special builtin:                       Definitions.         (line  82)
-* startup files:                         Bash Startup Files.  (line   6)
-* suspending jobs:                       Job Control Basics.  (line   6)
-* tilde expansion:                       Tilde Expansion.     (line   6)
-* token:                                 Definitions.         (line  86)
-* translation, native languages:         Locale Translation.  (line   6)
-* variable, shell:                       Shell Parameters.    (line   6)
-* variables, readline:                   Readline Init File Syntax.
-                                                              (line  37)
-* word:                                  Definitions.         (line  90)
-* word splitting:                        Word Splitting.      (line   6)
-* yanking text:                          Readline Killing Commands.
-                                                              (line   6)
-
-
-\1f
-Tag Table:
-Node: Top\7f932
-Node: Introduction\7f2852
-Node: What is Bash?\7f3080
-Node: What is a shell?\7f4193
-Node: Definitions\7f6732
-Node: Basic Shell Features\7f9650
-Node: Shell Syntax\7f10869
-Node: Shell Operation\7f11899
-Node: Quoting\7f13193
-Node: Escape Character\7f14496
-Node: Single Quotes\7f14981
-Node: Double Quotes\7f15329
-Node: ANSI-C Quoting\7f16454
-Node: Locale Translation\7f17698
-Node: Comments\7f18594
-Node: Shell Commands\7f19212
-Node: Simple Commands\7f20084
-Node: Pipelines\7f20715
-Node: Lists\7f23458
-Node: Compound Commands\7f25187
-Node: Looping Constructs\7f26193
-Node: Conditional Constructs\7f28656
-Node: Command Grouping\7f39586
-Node: Coprocesses\7f41065
-Node: GNU Parallel\7f42898
-Node: Shell Functions\7f46884
-Node: Shell Parameters\7f52092
-Node: Positional Parameters\7f56504
-Node: Special Parameters\7f57404
-Node: Shell Expansions\7f60743
-Node: Brace Expansion\7f62686
-Node: Tilde Expansion\7f65467
-Node: Shell Parameter Expansion\7f67816
-Node: Command Substitution\7f80110
-Node: Arithmetic Expansion\7f81443
-Node: Process Substitution\7f82375
-Node: Word Splitting\7f83425
-Node: Filename Expansion\7f85073
-Node: Pattern Matching\7f87238
-Node: Quote Removal\7f90938
-Node: Redirections\7f91233
-Node: Executing Commands\7f100397
-Node: Simple Command Expansion\7f101067
-Node: Command Search and Execution\7f102997
-Node: Command Execution Environment\7f105334
-Node: Environment\7f108320
-Node: Exit Status\7f109979
-Node: Signals\7f111649
-Node: Shell Scripts\7f113617
-Node: Shell Builtin Commands\7f116135
-Node: Bourne Shell Builtins\7f118162
-Node: Bash Builtins\7f138408
-Node: Modifying Shell Behavior\7f166232
-Node: The Set Builtin\7f166577
-Node: The Shopt Builtin\7f176904
-Node: Special Builtins\7f191345
-Node: Shell Variables\7f192324
-Node: Bourne Shell Variables\7f192764
-Node: Bash Variables\7f194795
-Node: Bash Features\7f221670
-Node: Invoking Bash\7f222569
-Node: Bash Startup Files\7f228516
-Node: Interactive Shells\7f233545
-Node: What is an Interactive Shell?\7f233955
-Node: Is this Shell Interactive?\7f234604
-Node: Interactive Shell Behavior\7f235419
-Node: Bash Conditional Expressions\7f238707
-Node: Shell Arithmetic\7f242709
-Node: Aliases\7f245485
-Node: Arrays\7f248032
-Node: The Directory Stack\7f253013
-Node: Directory Stack Builtins\7f253732
-Node: Controlling the Prompt\7f256688
-Node: The Restricted Shell\7f259460
-Node: Bash POSIX Mode\7f261297
-Node: Job Control\7f270851
-Node: Job Control Basics\7f271311
-Node: Job Control Builtins\7f276030
-Node: Job Control Variables\7f280501
-Node: Command Line Editing\7f281659
-Node: Introduction and Notation\7f283331
-Node: Readline Interaction\7f284953
-Node: Readline Bare Essentials\7f286144
-Node: Readline Movement Commands\7f287933
-Node: Readline Killing Commands\7f288898
-Node: Readline Arguments\7f290818
-Node: Searching\7f291862
-Node: Readline Init File\7f294048
-Node: Readline Init File Syntax\7f295195
-Node: Conditional Init Constructs\7f312404
-Node: Sample Init File\7f314937
-Node: Bindable Readline Commands\7f318055
-Node: Commands For Moving\7f319262
-Node: Commands For History\7f320406
-Node: Commands For Text\7f324702
-Node: Commands For Killing\7f327631
-Node: Numeric Arguments\7f330112
-Node: Commands For Completion\7f331251
-Node: Keyboard Macros\7f335443
-Node: Miscellaneous Commands\7f336131
-Node: Readline vi Mode\7f341937
-Node: Programmable Completion\7f342844
-Node: Programmable Completion Builtins\7f350120
-Node: A Programmable Completion Example\7f359866
-Node: Using History Interactively\7f365116
-Node: Bash History Facilities\7f365800
-Node: Bash History Builtins\7f368799
-Node: History Interaction\7f372727
-Node: Event Designators\7f375432
-Node: Word Designators\7f376654
-Node: Modifiers\7f378293
-Node: Installing Bash\7f379697
-Node: Basic Installation\7f380834
-Node: Compilers and Options\7f383526
-Node: Compiling For Multiple Architectures\7f384267
-Node: Installation Names\7f385931
-Node: Specifying the System Type\7f386749
-Node: Sharing Defaults\7f387465
-Node: Operation Controls\7f388138
-Node: Optional Features\7f389096
-Node: Reporting Bugs\7f399159
-Node: Major Differences From The Bourne Shell\7f400357
-Node: GNU Free Documentation License\7f417216
-Node: Indexes\7f442412
-Node: Builtin Index\7f442866
-Node: Reserved Word Index\7f449693
-Node: Variable Index\7f452141
-Node: Function Index\7f466462
-Node: Concept Index\7f473763
-\1f
-End Tag Table
diff --git a/doc/bashman.html b/doc/bashman.html
deleted file mode 120000 (symlink)
index 0cf7097..0000000
+++ /dev/null
@@ -1 +0,0 @@
-bash.html
\ No newline at end of file
diff --git a/doc/bashref.aux b/doc/bashref.aux
deleted file mode 100644 (file)
index dd4f2e6..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-@xrdef{Introduction-title}{Introduction}
-@xrdef{Introduction-snt}{Chapter@tie 1}
-@xrdef{What is Bash?-title}{What is Bash?}
-@xrdef{What is Bash?-snt}{Section@tie 1.1}
-@xrdef{What is a shell?-title}{What is a shell?}
-@xrdef{What is a shell?-snt}{Section@tie 1.2}
-@xrdef{Introduction-pg}{1}
-@xrdef{What is Bash?-pg}{1}
-@xrdef{What is a shell?-pg}{1}
-@xrdef{Definitions-title}{Definitions}
-@xrdef{Definitions-snt}{Chapter@tie 2}
-@xrdef{Definitions-pg}{3}
-@xrdef{Basic Shell Features-title}{Basic Shell Features}
-@xrdef{Basic Shell Features-snt}{Chapter@tie 3}
-@xrdef{Shell Syntax-title}{Shell Syntax}
-@xrdef{Shell Syntax-snt}{Section@tie 3.1}
-@xrdef{Shell Operation-title}{Shell Operation}
-@xrdef{Shell Operation-snt}{Section@tie 3.1.1}
-@xrdef{Quoting-title}{Quoting}
-@xrdef{Quoting-snt}{Section@tie 3.1.2}
-@xrdef{Basic Shell Features-pg}{5}
-@xrdef{Shell Syntax-pg}{5}
-@xrdef{Shell Operation-pg}{5}
-@xrdef{Escape Character-title}{Escape Character}
-@xrdef{Escape Character-snt}{Section@tie 3.1.2.1}
-@xrdef{Single Quotes-title}{Single Quotes}
-@xrdef{Single Quotes-snt}{Section@tie 3.1.2.2}
-@xrdef{Double Quotes-title}{Double Quotes}
-@xrdef{Double Quotes-snt}{Section@tie 3.1.2.3}
-@xrdef{ANSI-C Quoting-title}{ANSI-C Quoting}
-@xrdef{ANSI-C Quoting-snt}{Section@tie 3.1.2.4}
-@xrdef{Quoting-pg}{6}
-@xrdef{Escape Character-pg}{6}
-@xrdef{Single Quotes-pg}{6}
-@xrdef{Double Quotes-pg}{6}
-@xrdef{ANSI-C Quoting-pg}{6}
-@xrdef{Locale Translation-title}{Locale-Specific Translation}
-@xrdef{Locale Translation-snt}{Section@tie 3.1.2.5}
-@xrdef{Comments-title}{Comments}
-@xrdef{Comments-snt}{Section@tie 3.1.3}
-@xrdef{Shell Commands-title}{Shell Commands}
-@xrdef{Shell Commands-snt}{Section@tie 3.2}
-@xrdef{Locale Translation-pg}{7}
-@xrdef{Comments-pg}{7}
-@xrdef{Simple Commands-title}{Simple Commands}
-@xrdef{Simple Commands-snt}{Section@tie 3.2.1}
-@xrdef{Pipelines-title}{Pipelines}
-@xrdef{Pipelines-snt}{Section@tie 3.2.2}
-@xrdef{Shell Commands-pg}{8}
-@xrdef{Simple Commands-pg}{8}
-@xrdef{Pipelines-pg}{8}
-@xrdef{Lists-title}{Lists of Commands}
-@xrdef{Lists-snt}{Section@tie 3.2.3}
-@xrdef{Compound Commands-title}{Compound Commands}
-@xrdef{Compound Commands-snt}{Section@tie 3.2.4}
-@xrdef{Lists-pg}{9}
-@xrdef{Compound Commands-pg}{9}
-@xrdef{Looping Constructs-title}{Looping Constructs}
-@xrdef{Looping Constructs-snt}{Section@tie 3.2.4.1}
-@xrdef{Conditional Constructs-title}{Conditional Constructs}
-@xrdef{Conditional Constructs-snt}{Section@tie 3.2.4.2}
-@xrdef{Looping Constructs-pg}{10}
-@xrdef{Conditional Constructs-pg}{10}
-@xrdef{Command Grouping-title}{Grouping Commands}
-@xrdef{Command Grouping-snt}{Section@tie 3.2.4.3}
-@xrdef{Command Grouping-pg}{14}
-@xrdef{Coprocesses-title}{Coprocesses}
-@xrdef{Coprocesses-snt}{Section@tie 3.2.5}
-@xrdef{GNU Parallel-title}{GNU Parallel}
-@xrdef{GNU Parallel-snt}{Section@tie 3.2.6}
-@xrdef{Coprocesses-pg}{15}
-@xrdef{GNU Parallel-pg}{15}
-@xrdef{Shell Functions-title}{Shell Functions}
-@xrdef{Shell Functions-snt}{Section@tie 3.3}
-@xrdef{Shell Functions-pg}{17}
-@xrdef{Shell Parameters-title}{Shell Parameters}
-@xrdef{Shell Parameters-snt}{Section@tie 3.4}
-@xrdef{Shell Parameters-pg}{18}
-@xrdef{Positional Parameters-title}{Positional Parameters}
-@xrdef{Positional Parameters-snt}{Section@tie 3.4.1}
-@xrdef{Special Parameters-title}{Special Parameters}
-@xrdef{Special Parameters-snt}{Section@tie 3.4.2}
-@xrdef{Positional Parameters-pg}{20}
-@xrdef{Special Parameters-pg}{20}
-@xrdef{Shell Expansions-title}{Shell Expansions}
-@xrdef{Shell Expansions-snt}{Section@tie 3.5}
-@xrdef{Brace Expansion-title}{Brace Expansion}
-@xrdef{Brace Expansion-snt}{Section@tie 3.5.1}
-@xrdef{Shell Expansions-pg}{21}
-@xrdef{Brace Expansion-pg}{21}
-@xrdef{Tilde Expansion-title}{Tilde Expansion}
-@xrdef{Tilde Expansion-snt}{Section@tie 3.5.2}
-@xrdef{Tilde Expansion-pg}{22}
-@xrdef{Shell Parameter Expansion-title}{Shell Parameter Expansion}
-@xrdef{Shell Parameter Expansion-snt}{Section@tie 3.5.3}
-@xrdef{Shell Parameter Expansion-pg}{23}
-@xrdef{Command Substitution-title}{Command Substitution}
-@xrdef{Command Substitution-snt}{Section@tie 3.5.4}
-@xrdef{Arithmetic Expansion-title}{Arithmetic Expansion}
-@xrdef{Arithmetic Expansion-snt}{Section@tie 3.5.5}
-@xrdef{Process Substitution-title}{Process Substitution}
-@xrdef{Process Substitution-snt}{Section@tie 3.5.6}
-@xrdef{Command Substitution-pg}{29}
-@xrdef{Arithmetic Expansion-pg}{29}
-@xrdef{Word Splitting-title}{Word Splitting}
-@xrdef{Word Splitting-snt}{Section@tie 3.5.7}
-@xrdef{Filename Expansion-title}{Filename Expansion}
-@xrdef{Filename Expansion-snt}{Section@tie 3.5.8}
-@xrdef{Process Substitution-pg}{30}
-@xrdef{Word Splitting-pg}{30}
-@xrdef{Filename Expansion-pg}{30}
-@xrdef{Pattern Matching-title}{Pattern Matching}
-@xrdef{Pattern Matching-snt}{Section@tie 3.5.8.1}
-@xrdef{Pattern Matching-pg}{31}
-@xrdef{Quote Removal-title}{Quote Removal}
-@xrdef{Quote Removal-snt}{Section@tie 3.5.9}
-@xrdef{Redirections-title}{Redirections}
-@xrdef{Redirections-snt}{Section@tie 3.6}
-@xrdef{Quote Removal-pg}{32}
-@xrdef{Redirections-pg}{32}
-@xrdef{Executing Commands-title}{Executing Commands}
-@xrdef{Executing Commands-snt}{Section@tie 3.7}
-@xrdef{Simple Command Expansion-title}{Simple Command Expansion}
-@xrdef{Simple Command Expansion-snt}{Section@tie 3.7.1}
-@xrdef{Command Search and Execution-title}{Command Search and Execution}
-@xrdef{Command Search and Execution-snt}{Section@tie 3.7.2}
-@xrdef{Executing Commands-pg}{36}
-@xrdef{Simple Command Expansion-pg}{36}
-@xrdef{Command Execution Environment-title}{Command Execution Environment}
-@xrdef{Command Execution Environment-snt}{Section@tie 3.7.3}
-@xrdef{Command Search and Execution-pg}{37}
-@xrdef{Command Execution Environment-pg}{37}
-@xrdef{Environment-title}{Environment}
-@xrdef{Environment-snt}{Section@tie 3.7.4}
-@xrdef{Environment-pg}{38}
-@xrdef{Exit Status-title}{Exit Status}
-@xrdef{Exit Status-snt}{Section@tie 3.7.5}
-@xrdef{Signals-title}{Signals}
-@xrdef{Signals-snt}{Section@tie 3.7.6}
-@xrdef{Exit Status-pg}{39}
-@xrdef{Signals-pg}{39}
-@xrdef{Shell Scripts-title}{Shell Scripts}
-@xrdef{Shell Scripts-snt}{Section@tie 3.8}
-@xrdef{Shell Scripts-pg}{40}
-@xrdef{Shell Builtin Commands-title}{Shell Builtin Commands}
-@xrdef{Shell Builtin Commands-snt}{Chapter@tie 4}
-@xrdef{Bourne Shell Builtins-title}{Bourne Shell Builtins}
-@xrdef{Bourne Shell Builtins-snt}{Section@tie 4.1}
-@xrdef{Shell Builtin Commands-pg}{41}
-@xrdef{Bourne Shell Builtins-pg}{41}
-@xrdef{Bash Builtins-title}{Bash Builtin Commands}
-@xrdef{Bash Builtins-snt}{Section@tie 4.2}
-@xrdef{Bash Builtins-pg}{48}
-@xrdef{Modifying Shell Behavior-title}{Modifying Shell Behavior}
-@xrdef{Modifying Shell Behavior-snt}{Section@tie 4.3}
-@xrdef{The Set Builtin-title}{The Set Builtin}
-@xrdef{The Set Builtin-snt}{Section@tie 4.3.1}
-@xrdef{Modifying Shell Behavior-pg}{59}
-@xrdef{The Set Builtin-pg}{59}
-@xrdef{The Shopt Builtin-title}{The Shopt Builtin}
-@xrdef{The Shopt Builtin-snt}{Section@tie 4.3.2}
-@xrdef{The Shopt Builtin-pg}{63}
-@xrdef{Special Builtins-title}{Special Builtins}
-@xrdef{Special Builtins-snt}{Section@tie 4.4}
-@xrdef{Special Builtins-pg}{68}
-@xrdef{Shell Variables-title}{Shell Variables}
-@xrdef{Shell Variables-snt}{Chapter@tie 5}
-@xrdef{Bourne Shell Variables-title}{Bourne Shell Variables}
-@xrdef{Bourne Shell Variables-snt}{Section@tie 5.1}
-@xrdef{Bash Variables-title}{Bash Variables}
-@xrdef{Bash Variables-snt}{Section@tie 5.2}
-@xrdef{Shell Variables-pg}{69}
-@xrdef{Bourne Shell Variables-pg}{69}
-@xrdef{Bash Variables-pg}{69}
-@xrdef{Bash Features-title}{Bash Features}
-@xrdef{Bash Features-snt}{Chapter@tie 6}
-@xrdef{Invoking Bash-title}{Invoking Bash}
-@xrdef{Invoking Bash-snt}{Section@tie 6.1}
-@xrdef{Bash Features-pg}{80}
-@xrdef{Invoking Bash-pg}{80}
-@xrdef{Bash Startup Files-title}{Bash Startup Files}
-@xrdef{Bash Startup Files-snt}{Section@tie 6.2}
-@xrdef{Bash Startup Files-pg}{82}
-@xrdef{Interactive Shells-title}{Interactive Shells}
-@xrdef{Interactive Shells-snt}{Section@tie 6.3}
-@xrdef{What is an Interactive Shell?-title}{What is an Interactive Shell?}
-@xrdef{What is an Interactive Shell?-snt}{Section@tie 6.3.1}
-@xrdef{Interactive Shells-pg}{83}
-@xrdef{Is this Shell Interactive?-title}{Is this Shell Interactive?}
-@xrdef{Is this Shell Interactive?-snt}{Section@tie 6.3.2}
-@xrdef{Interactive Shell Behavior-title}{Interactive Shell Behavior}
-@xrdef{Interactive Shell Behavior-snt}{Section@tie 6.3.3}
-@xrdef{What is an Interactive Shell?-pg}{84}
-@xrdef{Is this Shell Interactive?-pg}{84}
-@xrdef{Interactive Shell Behavior-pg}{84}
-@xrdef{Bash Conditional Expressions-title}{Bash Conditional Expressions}
-@xrdef{Bash Conditional Expressions-snt}{Section@tie 6.4}
-@xrdef{Bash Conditional Expressions-pg}{85}
-@xrdef{Shell Arithmetic-title}{Shell Arithmetic}
-@xrdef{Shell Arithmetic-snt}{Section@tie 6.5}
-@xrdef{Shell Arithmetic-pg}{87}
-@xrdef{Aliases-title}{Aliases}
-@xrdef{Aliases-snt}{Section@tie 6.6}
-@xrdef{Aliases-pg}{88}
-@xrdef{Arrays-title}{Arrays}
-@xrdef{Arrays-snt}{Section@tie 6.7}
-@xrdef{Arrays-pg}{89}
-@xrdef{The Directory Stack-title}{The Directory Stack}
-@xrdef{The Directory Stack-snt}{Section@tie 6.8}
-@xrdef{The Directory Stack-pg}{90}
-@xrdef{Directory Stack Builtins-title}{Directory Stack Builtins}
-@xrdef{Directory Stack Builtins-snt}{Section@tie 6.8.1}
-@xrdef{Directory Stack Builtins-pg}{91}
-@xrdef{Controlling the Prompt-title}{Controlling the Prompt}
-@xrdef{Controlling the Prompt-snt}{Section@tie 6.9}
-@xrdef{Controlling the Prompt-pg}{92}
-@xrdef{The Restricted Shell-title}{The Restricted Shell}
-@xrdef{The Restricted Shell-snt}{Section@tie 6.10}
-@xrdef{Bash POSIX Mode-title}{Bash POSIX Mode}
-@xrdef{Bash POSIX Mode-snt}{Section@tie 6.11}
-@xrdef{The Restricted Shell-pg}{93}
-@xrdef{Bash POSIX Mode-pg}{94}
-@xrdef{Job Control-title}{Job Control}
-@xrdef{Job Control-snt}{Chapter@tie 7}
-@xrdef{Job Control Basics-title}{Job Control Basics}
-@xrdef{Job Control Basics-snt}{Section@tie 7.1}
-@xrdef{Job Control-pg}{97}
-@xrdef{Job Control Basics-pg}{97}
-@xrdef{Job Control Builtins-title}{Job Control Builtins}
-@xrdef{Job Control Builtins-snt}{Section@tie 7.2}
-@xrdef{Job Control Builtins-pg}{98}
-@xrdef{Job Control Variables-title}{Job Control Variables}
-@xrdef{Job Control Variables-snt}{Section@tie 7.3}
-@xrdef{Job Control Variables-pg}{100}
-@xrdef{Command Line Editing-title}{Command Line Editing}
-@xrdef{Command Line Editing-snt}{Chapter@tie 8}
-@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
-@xrdef{Introduction and Notation-snt}{Section@tie 8.1}
-@xrdef{Readline Interaction-title}{Readline Interaction}
-@xrdef{Readline Interaction-snt}{Section@tie 8.2}
-@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
-@xrdef{Readline Bare Essentials-snt}{Section@tie 8.2.1}
-@xrdef{Command Line Editing-pg}{101}
-@xrdef{Introduction and Notation-pg}{101}
-@xrdef{Readline Interaction-pg}{101}
-@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
-@xrdef{Readline Movement Commands-snt}{Section@tie 8.2.2}
-@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
-@xrdef{Readline Killing Commands-snt}{Section@tie 8.2.3}
-@xrdef{Readline Bare Essentials-pg}{102}
-@xrdef{Readline Movement Commands-pg}{102}
-@xrdef{Readline Arguments-title}{Readline Arguments}
-@xrdef{Readline Arguments-snt}{Section@tie 8.2.4}
-@xrdef{Searching-title}{Searching for Commands in the History}
-@xrdef{Searching-snt}{Section@tie 8.2.5}
-@xrdef{Readline Killing Commands-pg}{103}
-@xrdef{Readline Arguments-pg}{103}
-@xrdef{Searching-pg}{103}
-@xrdef{Readline Init File-title}{Readline Init File}
-@xrdef{Readline Init File-snt}{Section@tie 8.3}
-@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
-@xrdef{Readline Init File Syntax-snt}{Section@tie 8.3.1}
-@xrdef{Readline Init File-pg}{104}
-@xrdef{Readline Init File Syntax-pg}{104}
-@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
-@xrdef{Conditional Init Constructs-snt}{Section@tie 8.3.2}
-@xrdef{Conditional Init Constructs-pg}{112}
-@xrdef{Sample Init File-title}{Sample Init File}
-@xrdef{Sample Init File-snt}{Section@tie 8.3.3}
-@xrdef{Sample Init File-pg}{113}
-@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
-@xrdef{Bindable Readline Commands-snt}{Section@tie 8.4}
-@xrdef{Commands For Moving-title}{Commands For Moving}
-@xrdef{Commands For Moving-snt}{Section@tie 8.4.1}
-@xrdef{Commands For History-title}{Commands For Manipulating The History}
-@xrdef{Commands For History-snt}{Section@tie 8.4.2}
-@xrdef{Bindable Readline Commands-pg}{116}
-@xrdef{Commands For Moving-pg}{116}
-@xrdef{Commands For History-pg}{117}
-@xrdef{Commands For Text-title}{Commands For Changing Text}
-@xrdef{Commands For Text-snt}{Section@tie 8.4.3}
-@xrdef{Commands For Text-pg}{118}
-@xrdef{Commands For Killing-title}{Killing And Yanking}
-@xrdef{Commands For Killing-snt}{Section@tie 8.4.4}
-@xrdef{Commands For Killing-pg}{119}
-@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
-@xrdef{Numeric Arguments-snt}{Section@tie 8.4.5}
-@xrdef{Commands For Completion-title}{Letting Readline Type For You}
-@xrdef{Commands For Completion-snt}{Section@tie 8.4.6}
-@xrdef{Numeric Arguments-pg}{121}
-@xrdef{Commands For Completion-pg}{121}
-@xrdef{Keyboard Macros-title}{Keyboard Macros}
-@xrdef{Keyboard Macros-snt}{Section@tie 8.4.7}
-@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
-@xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8}
-@xrdef{Keyboard Macros-pg}{123}
-@xrdef{Miscellaneous Commands-pg}{123}
-@xrdef{Readline vi Mode-title}{Readline vi Mode}
-@xrdef{Readline vi Mode-snt}{Section@tie 8.5}
-@xrdef{Programmable Completion-title}{Programmable Completion}
-@xrdef{Programmable Completion-snt}{Section@tie 8.6}
-@xrdef{Readline vi Mode-pg}{125}
-@xrdef{Programmable Completion-pg}{126}
-@xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins}
-@xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7}
-@xrdef{Programmable Completion Builtins-pg}{128}
-@xrdef{A Programmable Completion Example-title}{A Programmable Completion Example}
-@xrdef{A Programmable Completion Example-snt}{Section@tie 8.8}
-@xrdef{A Programmable Completion Example-pg}{131}
-@xrdef{Using History Interactively-title}{Using History Interactively}
-@xrdef{Using History Interactively-snt}{Chapter@tie 9}
-@xrdef{Bash History Facilities-title}{Bash History Facilities}
-@xrdef{Bash History Facilities-snt}{Section@tie 9.1}
-@xrdef{Bash History Builtins-title}{Bash History Builtins}
-@xrdef{Bash History Builtins-snt}{Section@tie 9.2}
-@xrdef{Using History Interactively-pg}{134}
-@xrdef{Bash History Facilities-pg}{134}
-@xrdef{Bash History Builtins-pg}{134}
-@xrdef{History Interaction-title}{History Expansion}
-@xrdef{History Interaction-snt}{Section@tie 9.3}
-@xrdef{Event Designators-title}{Event Designators}
-@xrdef{Event Designators-snt}{Section@tie 9.3.1}
-@xrdef{History Interaction-pg}{136}
-@xrdef{Event Designators-pg}{136}
-@xrdef{Word Designators-title}{Word Designators}
-@xrdef{Word Designators-snt}{Section@tie 9.3.2}
-@xrdef{Word Designators-pg}{137}
-@xrdef{Modifiers-title}{Modifiers}
-@xrdef{Modifiers-snt}{Section@tie 9.3.3}
-@xrdef{Modifiers-pg}{138}
-@xrdef{Installing Bash-title}{Installing Bash}
-@xrdef{Installing Bash-snt}{Chapter@tie 10}
-@xrdef{Basic Installation-title}{Basic Installation}
-@xrdef{Basic Installation-snt}{Section@tie 10.1}
-@xrdef{Compilers and Options-title}{Compilers and Options}
-@xrdef{Compilers and Options-snt}{Section@tie 10.2}
-@xrdef{Installing Bash-pg}{139}
-@xrdef{Basic Installation-pg}{139}
-@xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures}
-@xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3}
-@xrdef{Installation Names-title}{Installation Names}
-@xrdef{Installation Names-snt}{Section@tie 10.4}
-@xrdef{Specifying the System Type-title}{Specifying the System Type}
-@xrdef{Specifying the System Type-snt}{Section@tie 10.5}
-@xrdef{Compilers and Options-pg}{140}
-@xrdef{Compiling For Multiple Architectures-pg}{140}
-@xrdef{Installation Names-pg}{140}
-@xrdef{Specifying the System Type-pg}{140}
-@xrdef{Sharing Defaults-title}{Sharing Defaults}
-@xrdef{Sharing Defaults-snt}{Section@tie 10.6}
-@xrdef{Operation Controls-title}{Operation Controls}
-@xrdef{Operation Controls-snt}{Section@tie 10.7}
-@xrdef{Optional Features-title}{Optional Features}
-@xrdef{Optional Features-snt}{Section@tie 10.8}
-@xrdef{Sharing Defaults-pg}{141}
-@xrdef{Operation Controls-pg}{141}
-@xrdef{Optional Features-pg}{141}
-@xrdef{Reporting Bugs-title}{Reporting Bugs}
-@xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}}
-@xrdef{Reporting Bugs-pg}{146}
-@xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell}
-@xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}}
-@xrdef{Major Differences From The Bourne Shell-pg}{147}
-@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
-@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char67{}}
-@xrdef{GNU Free Documentation License-pg}{153}
-@xrdef{Indexes-title}{Indexes}
-@xrdef{Indexes-snt}{Appendix@tie @char68{}}
-@xrdef{Builtin Index-title}{Index of Shell Builtin Commands}
-@xrdef{Builtin Index-snt}{Section@tie @char68.1}
-@xrdef{Indexes-pg}{161}
-@xrdef{Builtin Index-pg}{161}
-@xrdef{Reserved Word Index-title}{Index of Shell Reserved Words}
-@xrdef{Reserved Word Index-snt}{Section@tie @char68.2}
-@xrdef{Variable Index-title}{Parameter and Variable Index}
-@xrdef{Variable Index-snt}{Section@tie @char68.3}
-@xrdef{Reserved Word Index-pg}{162}
-@xrdef{Variable Index-pg}{162}
-@xrdef{Function Index-title}{Function Index}
-@xrdef{Function Index-snt}{Section@tie @char68.4}
-@xrdef{Function Index-pg}{164}
-@xrdef{Concept Index-title}{Concept Index}
-@xrdef{Concept Index-snt}{Section@tie @char68.5}
-@xrdef{Concept Index-pg}{166}
diff --git a/doc/bashref.bt b/doc/bashref.bt
deleted file mode 100644 (file)
index 00b253e..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-\entry{:}{41}{\code {:}}
-\entry{.}{41}{\code {.}}
-\entry{break}{42}{\code {break}}
-\entry{cd}{42}{\code {cd}}
-\entry{continue}{42}{\code {continue}}
-\entry{eval}{42}{\code {eval}}
-\entry{exec}{43}{\code {exec}}
-\entry{exit}{43}{\code {exit}}
-\entry{export}{43}{\code {export}}
-\entry{getopts}{43}{\code {getopts}}
-\entry{hash}{44}{\code {hash}}
-\entry{pwd}{44}{\code {pwd}}
-\entry{readonly}{44}{\code {readonly}}
-\entry{return}{45}{\code {return}}
-\entry{shift}{45}{\code {shift}}
-\entry{test}{45}{\code {test}}
-\entry{[}{45}{\code {[}}
-\entry{times}{47}{\code {times}}
-\entry{trap}{47}{\code {trap}}
-\entry{umask}{47}{\code {umask}}
-\entry{unset}{48}{\code {unset}}
-\entry{alias}{48}{\code {alias}}
-\entry{bind}{48}{\code {bind}}
-\entry{builtin}{49}{\code {builtin}}
-\entry{caller}{50}{\code {caller}}
-\entry{command}{50}{\code {command}}
-\entry{declare}{50}{\code {declare}}
-\entry{echo}{52}{\code {echo}}
-\entry{enable}{52}{\code {enable}}
-\entry{help}{53}{\code {help}}
-\entry{let}{53}{\code {let}}
-\entry{local}{53}{\code {local}}
-\entry{logout}{54}{\code {logout}}
-\entry{mapfile}{54}{\code {mapfile}}
-\entry{printf}{54}{\code {printf}}
-\entry{read}{55}{\code {read}}
-\entry{readarray}{56}{\code {readarray}}
-\entry{source}{57}{\code {source}}
-\entry{type}{57}{\code {type}}
-\entry{typeset}{57}{\code {typeset}}
-\entry{ulimit}{57}{\code {ulimit}}
-\entry{unalias}{58}{\code {unalias}}
-\entry{set}{59}{\code {set}}
-\entry{shopt}{63}{\code {shopt}}
-\entry{dirs}{91}{\code {dirs}}
-\entry{popd}{91}{\code {popd}}
-\entry{pushd}{91}{\code {pushd}}
-\entry{bg}{98}{\code {bg}}
-\entry{fg}{98}{\code {fg}}
-\entry{jobs}{98}{\code {jobs}}
-\entry{kill}{99}{\code {kill}}
-\entry{wait}{99}{\code {wait}}
-\entry{disown}{99}{\code {disown}}
-\entry{suspend}{99}{\code {suspend}}
-\entry{compgen}{128}{\code {compgen}}
-\entry{complete}{128}{\code {complete}}
-\entry{compopt}{131}{\code {compopt}}
-\entry{fc}{134}{\code {fc}}
-\entry{history}{135}{\code {history}}
diff --git a/doc/bashref.bts b/doc/bashref.bts
deleted file mode 100644 (file)
index 5e08a91..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-\initial {.}
-\entry {\code {.}}{41}
-\initial {:}
-\entry {\code {:}}{41}
-\initial {[}
-\entry {\code {[}}{45}
-\initial {A}
-\entry {\code {alias}}{48}
-\initial {B}
-\entry {\code {bg}}{98}
-\entry {\code {bind}}{48}
-\entry {\code {break}}{42}
-\entry {\code {builtin}}{49}
-\initial {C}
-\entry {\code {caller}}{50}
-\entry {\code {cd}}{42}
-\entry {\code {command}}{50}
-\entry {\code {compgen}}{128}
-\entry {\code {complete}}{128}
-\entry {\code {compopt}}{131}
-\entry {\code {continue}}{42}
-\initial {D}
-\entry {\code {declare}}{50}
-\entry {\code {dirs}}{91}
-\entry {\code {disown}}{99}
-\initial {E}
-\entry {\code {echo}}{52}
-\entry {\code {enable}}{52}
-\entry {\code {eval}}{42}
-\entry {\code {exec}}{43}
-\entry {\code {exit}}{43}
-\entry {\code {export}}{43}
-\initial {F}
-\entry {\code {fc}}{134}
-\entry {\code {fg}}{98}
-\initial {G}
-\entry {\code {getopts}}{43}
-\initial {H}
-\entry {\code {hash}}{44}
-\entry {\code {help}}{53}
-\entry {\code {history}}{135}
-\initial {J}
-\entry {\code {jobs}}{98}
-\initial {K}
-\entry {\code {kill}}{99}
-\initial {L}
-\entry {\code {let}}{53}
-\entry {\code {local}}{53}
-\entry {\code {logout}}{54}
-\initial {M}
-\entry {\code {mapfile}}{54}
-\initial {P}
-\entry {\code {popd}}{91}
-\entry {\code {printf}}{54}
-\entry {\code {pushd}}{91}
-\entry {\code {pwd}}{44}
-\initial {R}
-\entry {\code {read}}{55}
-\entry {\code {readarray}}{56}
-\entry {\code {readonly}}{44}
-\entry {\code {return}}{45}
-\initial {S}
-\entry {\code {set}}{59}
-\entry {\code {shift}}{45}
-\entry {\code {shopt}}{63}
-\entry {\code {source}}{57}
-\entry {\code {suspend}}{99}
-\initial {T}
-\entry {\code {test}}{45}
-\entry {\code {times}}{47}
-\entry {\code {trap}}{47}
-\entry {\code {type}}{57}
-\entry {\code {typeset}}{57}
-\initial {U}
-\entry {\code {ulimit}}{57}
-\entry {\code {umask}}{47}
-\entry {\code {unalias}}{58}
-\entry {\code {unset}}{48}
-\initial {W}
-\entry {\code {wait}}{99}
diff --git a/doc/bashref.cp b/doc/bashref.cp
deleted file mode 100644 (file)
index 37bc6aa..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-\entry{POSIX}{3}{POSIX}
-\entry{builtin}{3}{builtin}
-\entry{control operator}{3}{control operator}
-\entry{exit status}{3}{exit status}
-\entry{field}{3}{field}
-\entry{filename}{3}{filename}
-\entry{job}{3}{job}
-\entry{job control}{3}{job control}
-\entry{metacharacter}{3}{metacharacter}
-\entry{name}{3}{name}
-\entry{identifier}{3}{identifier}
-\entry{operator, shell}{3}{operator, shell}
-\entry{process group}{3}{process group}
-\entry{process group ID}{3}{process group ID}
-\entry{reserved word}{3}{reserved word}
-\entry{return status}{4}{return status}
-\entry{signal}{4}{signal}
-\entry{special builtin}{4}{special builtin}
-\entry{token}{4}{token}
-\entry{word}{4}{word}
-\entry{Bourne shell}{5}{Bourne shell}
-\entry{quoting}{6}{quoting}
-\entry{quoting, ANSI}{6}{quoting, ANSI}
-\entry{localization}{7}{localization}
-\entry{internationalization}{7}{internationalization}
-\entry{native languages}{7}{native languages}
-\entry{translation, native languages}{7}{translation, native languages}
-\entry{comments, shell}{7}{comments, shell}
-\entry{commands, shell}{8}{commands, shell}
-\entry{commands, simple}{8}{commands, simple}
-\entry{pipeline}{8}{pipeline}
-\entry{commands, pipelines}{8}{commands, pipelines}
-\entry{command timing}{8}{command timing}
-\entry{commands, lists}{9}{commands, lists}
-\entry{commands, compound}{9}{commands, compound}
-\entry{commands, looping}{10}{commands, looping}
-\entry{commands, conditional}{10}{commands, conditional}
-\entry{commands, grouping}{14}{commands, grouping}
-\entry{coprocess}{15}{coprocess}
-\entry{shell function}{17}{shell function}
-\entry{functions, shell}{17}{functions, shell}
-\entry{parameters}{18}{parameters}
-\entry{variable, shell}{18}{variable, shell}
-\entry{shell variable}{18}{shell variable}
-\entry{parameters, positional}{20}{parameters, positional}
-\entry{parameters, special}{20}{parameters, special}
-\entry{expansion}{21}{expansion}
-\entry{brace expansion}{21}{brace expansion}
-\entry{expansion, brace}{21}{expansion, brace}
-\entry{tilde expansion}{22}{tilde expansion}
-\entry{expansion, tilde}{22}{expansion, tilde}
-\entry{parameter expansion}{23}{parameter expansion}
-\entry{expansion, parameter}{23}{expansion, parameter}
-\entry{command substitution}{29}{command substitution}
-\entry{expansion, arithmetic}{29}{expansion, arithmetic}
-\entry{arithmetic expansion}{29}{arithmetic expansion}
-\entry{process substitution}{30}{process substitution}
-\entry{word splitting}{30}{word splitting}
-\entry{expansion, filename}{30}{expansion, filename}
-\entry{expansion, pathname}{30}{expansion, pathname}
-\entry{filename expansion}{30}{filename expansion}
-\entry{pathname expansion}{30}{pathname expansion}
-\entry{pattern matching}{31}{pattern matching}
-\entry{matching, pattern}{31}{matching, pattern}
-\entry{redirection}{32}{redirection}
-\entry{command expansion}{36}{command expansion}
-\entry{command execution}{37}{command execution}
-\entry{command search}{37}{command search}
-\entry{execution environment}{37}{execution environment}
-\entry{environment}{38}{environment}
-\entry{exit status}{39}{exit status}
-\entry{signal handling}{39}{signal handling}
-\entry{shell script}{40}{shell script}
-\entry{special builtin}{68}{special builtin}
-\entry{login shell}{82}{login shell}
-\entry{interactive shell}{82}{interactive shell}
-\entry{startup files}{82}{startup files}
-\entry{interactive shell}{83}{interactive shell}
-\entry{shell, interactive}{83}{shell, interactive}
-\entry{expressions, conditional}{85}{expressions, conditional}
-\entry{arithmetic, shell}{87}{arithmetic, shell}
-\entry{shell arithmetic}{87}{shell arithmetic}
-\entry{expressions, arithmetic}{87}{expressions, arithmetic}
-\entry{evaluation, arithmetic}{87}{evaluation, arithmetic}
-\entry{arithmetic evaluation}{87}{arithmetic evaluation}
-\entry{alias expansion}{88}{alias expansion}
-\entry{arrays}{89}{arrays}
-\entry{directory stack}{90}{directory stack}
-\entry{prompting}{92}{prompting}
-\entry{restricted shell}{93}{restricted shell}
-\entry{POSIX Mode}{94}{POSIX Mode}
-\entry{job control}{97}{job control}
-\entry{foreground}{97}{foreground}
-\entry{background}{97}{background}
-\entry{suspending jobs}{97}{suspending jobs}
-\entry{Readline, how to use}{100}{Readline, how to use}
-\entry{interaction, readline}{101}{interaction, readline}
-\entry{notation, readline}{102}{notation, readline}
-\entry{command editing}{102}{command editing}
-\entry{editing command lines}{102}{editing command lines}
-\entry{killing text}{103}{killing text}
-\entry{yanking text}{103}{yanking text}
-\entry{kill ring}{103}{kill ring}
-\entry{initialization file, readline}{104}{initialization file, readline}
-\entry{variables, readline}{105}{variables, readline}
-\entry{programmable completion}{126}{programmable completion}
-\entry{completion builtins}{128}{completion builtins}
-\entry{History, how to use}{133}{History, how to use}
-\entry{command history}{134}{command history}
-\entry{history list}{134}{history list}
-\entry{history builtins}{134}{history builtins}
-\entry{history expansion}{136}{history expansion}
-\entry{event designators}{136}{event designators}
-\entry{history events}{136}{history events}
-\entry{installation}{139}{installation}
-\entry{configuration}{139}{configuration}
-\entry{Bash installation}{139}{Bash installation}
-\entry{Bash configuration}{139}{Bash configuration}
diff --git a/doc/bashref.cps b/doc/bashref.cps
deleted file mode 100644 (file)
index 2a57085..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-\initial {A}
-\entry {alias expansion}{88}
-\entry {arithmetic evaluation}{87}
-\entry {arithmetic expansion}{29}
-\entry {arithmetic, shell}{87}
-\entry {arrays}{89}
-\initial {B}
-\entry {background}{97}
-\entry {Bash configuration}{139}
-\entry {Bash installation}{139}
-\entry {Bourne shell}{5}
-\entry {brace expansion}{21}
-\entry {builtin}{3}
-\initial {C}
-\entry {command editing}{102}
-\entry {command execution}{37}
-\entry {command expansion}{36}
-\entry {command history}{134}
-\entry {command search}{37}
-\entry {command substitution}{29}
-\entry {command timing}{8}
-\entry {commands, compound}{9}
-\entry {commands, conditional}{10}
-\entry {commands, grouping}{14}
-\entry {commands, lists}{9}
-\entry {commands, looping}{10}
-\entry {commands, pipelines}{8}
-\entry {commands, shell}{8}
-\entry {commands, simple}{8}
-\entry {comments, shell}{7}
-\entry {completion builtins}{128}
-\entry {configuration}{139}
-\entry {control operator}{3}
-\entry {coprocess}{15}
-\initial {D}
-\entry {directory stack}{90}
-\initial {E}
-\entry {editing command lines}{102}
-\entry {environment}{38}
-\entry {evaluation, arithmetic}{87}
-\entry {event designators}{136}
-\entry {execution environment}{37}
-\entry {exit status}{3, 39}
-\entry {expansion}{21}
-\entry {expansion, arithmetic}{29}
-\entry {expansion, brace}{21}
-\entry {expansion, filename}{30}
-\entry {expansion, parameter}{23}
-\entry {expansion, pathname}{30}
-\entry {expansion, tilde}{22}
-\entry {expressions, arithmetic}{87}
-\entry {expressions, conditional}{85}
-\initial {F}
-\entry {field}{3}
-\entry {filename}{3}
-\entry {filename expansion}{30}
-\entry {foreground}{97}
-\entry {functions, shell}{17}
-\initial {H}
-\entry {history builtins}{134}
-\entry {history events}{136}
-\entry {history expansion}{136}
-\entry {history list}{134}
-\entry {History, how to use}{133}
-\initial {I}
-\entry {identifier}{3}
-\entry {initialization file, readline}{104}
-\entry {installation}{139}
-\entry {interaction, readline}{101}
-\entry {interactive shell}{82, 83}
-\entry {internationalization}{7}
-\initial {J}
-\entry {job}{3}
-\entry {job control}{3, 97}
-\initial {K}
-\entry {kill ring}{103}
-\entry {killing text}{103}
-\initial {L}
-\entry {localization}{7}
-\entry {login shell}{82}
-\initial {M}
-\entry {matching, pattern}{31}
-\entry {metacharacter}{3}
-\initial {N}
-\entry {name}{3}
-\entry {native languages}{7}
-\entry {notation, readline}{102}
-\initial {O}
-\entry {operator, shell}{3}
-\initial {P}
-\entry {parameter expansion}{23}
-\entry {parameters}{18}
-\entry {parameters, positional}{20}
-\entry {parameters, special}{20}
-\entry {pathname expansion}{30}
-\entry {pattern matching}{31}
-\entry {pipeline}{8}
-\entry {POSIX}{3}
-\entry {POSIX Mode}{94}
-\entry {process group}{3}
-\entry {process group ID}{3}
-\entry {process substitution}{30}
-\entry {programmable completion}{126}
-\entry {prompting}{92}
-\initial {Q}
-\entry {quoting}{6}
-\entry {quoting, ANSI}{6}
-\initial {R}
-\entry {Readline, how to use}{100}
-\entry {redirection}{32}
-\entry {reserved word}{3}
-\entry {restricted shell}{93}
-\entry {return status}{4}
-\initial {S}
-\entry {shell arithmetic}{87}
-\entry {shell function}{17}
-\entry {shell script}{40}
-\entry {shell variable}{18}
-\entry {shell, interactive}{83}
-\entry {signal}{4}
-\entry {signal handling}{39}
-\entry {special builtin}{4, 68}
-\entry {startup files}{82}
-\entry {suspending jobs}{97}
-\initial {T}
-\entry {tilde expansion}{22}
-\entry {token}{4}
-\entry {translation, native languages}{7}
-\initial {V}
-\entry {variable, shell}{18}
-\entry {variables, readline}{105}
-\initial {W}
-\entry {word}{4}
-\entry {word splitting}{30}
-\initial {Y}
-\entry {yanking text}{103}
diff --git a/doc/bashref.fn b/doc/bashref.fn
deleted file mode 100644 (file)
index 66f56dd..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-\entry{beginning-of-line (C-a)}{116}{\code {beginning-of-line (C-a)}}
-\entry{end-of-line (C-e)}{116}{\code {end-of-line (C-e)}}
-\entry{forward-char (C-f)}{116}{\code {forward-char (C-f)}}
-\entry{backward-char (C-b)}{116}{\code {backward-char (C-b)}}
-\entry{forward-word (M-f)}{116}{\code {forward-word (M-f)}}
-\entry{backward-word (M-b)}{116}{\code {backward-word (M-b)}}
-\entry{shell-forward-word ()}{116}{\code {shell-forward-word ()}}
-\entry{shell-backward-word ()}{116}{\code {shell-backward-word ()}}
-\entry{clear-screen (C-l)}{116}{\code {clear-screen (C-l)}}
-\entry{redraw-current-line ()}{116}{\code {redraw-current-line ()}}
-\entry{accept-line (Newline or Return)}{117}{\code {accept-line (Newline or Return)}}
-\entry{previous-history (C-p)}{117}{\code {previous-history (C-p)}}
-\entry{next-history (C-n)}{117}{\code {next-history (C-n)}}
-\entry{beginning-of-history (M-<)}{117}{\code {beginning-of-history (M-<)}}
-\entry{end-of-history (M->)}{117}{\code {end-of-history (M->)}}
-\entry{reverse-search-history (C-r)}{117}{\code {reverse-search-history (C-r)}}
-\entry{forward-search-history (C-s)}{117}{\code {forward-search-history (C-s)}}
-\entry{non-incremental-reverse-search-history (M-p)}{117}{\code {non-incremental-reverse-search-history (M-p)}}
-\entry{non-incremental-forward-search-history (M-n)}{117}{\code {non-incremental-forward-search-history (M-n)}}
-\entry{history-search-forward ()}{117}{\code {history-search-forward ()}}
-\entry{history-search-backward ()}{117}{\code {history-search-backward ()}}
-\entry{history-substr-search-forward ()}{117}{\code {history-substr-search-forward ()}}
-\entry{history-substr-search-backward ()}{118}{\code {history-substr-search-backward ()}}
-\entry{yank-nth-arg (M-C-y)}{118}{\code {yank-nth-arg (M-C-y)}}
-\entry{yank-last-arg (M-. or M-_)}{118}{\code {yank-last-arg (M-. or M-_)}}
-\entry{end-of-file (usually C-d)}{118}{\code {\i {end-of-file} (usually C-d)}}
-\entry{delete-char (C-d)}{118}{\code {delete-char (C-d)}}
-\entry{backward-delete-char (Rubout)}{118}{\code {backward-delete-char (Rubout)}}
-\entry{forward-backward-delete-char ()}{118}{\code {forward-backward-delete-char ()}}
-\entry{quoted-insert (C-q or C-v)}{118}{\code {quoted-insert (C-q or C-v)}}
-\entry{self-insert (a, b, A, 1, !, ...{})}{119}{\code {self-insert (a, b, A, 1, !, \dots {})}}
-\entry{bracketed-paste-begin ()}{119}{\code {bracketed-paste-begin ()}}
-\entry{transpose-chars (C-t)}{119}{\code {transpose-chars (C-t)}}
-\entry{transpose-words (M-t)}{119}{\code {transpose-words (M-t)}}
-\entry{upcase-word (M-u)}{119}{\code {upcase-word (M-u)}}
-\entry{downcase-word (M-l)}{119}{\code {downcase-word (M-l)}}
-\entry{capitalize-word (M-c)}{119}{\code {capitalize-word (M-c)}}
-\entry{overwrite-mode ()}{119}{\code {overwrite-mode ()}}
-\entry{kill-line (C-k)}{119}{\code {kill-line (C-k)}}
-\entry{backward-kill-line (C-x Rubout)}{119}{\code {backward-kill-line (C-x Rubout)}}
-\entry{unix-line-discard (C-u)}{120}{\code {unix-line-discard (C-u)}}
-\entry{kill-whole-line ()}{120}{\code {kill-whole-line ()}}
-\entry{kill-word (M-d)}{120}{\code {kill-word (M-d)}}
-\entry{backward-kill-word (M-DEL)}{120}{\code {backward-kill-word (M-\key {DEL})}}
-\entry{shell-kill-word ()}{120}{\code {shell-kill-word ()}}
-\entry{shell-backward-kill-word ()}{120}{\code {shell-backward-kill-word ()}}
-\entry{unix-word-rubout (C-w)}{120}{\code {unix-word-rubout (C-w)}}
-\entry{unix-filename-rubout ()}{120}{\code {unix-filename-rubout ()}}
-\entry{delete-horizontal-space ()}{120}{\code {delete-horizontal-space ()}}
-\entry{kill-region ()}{120}{\code {kill-region ()}}
-\entry{copy-region-as-kill ()}{120}{\code {copy-region-as-kill ()}}
-\entry{copy-backward-word ()}{120}{\code {copy-backward-word ()}}
-\entry{copy-forward-word ()}{120}{\code {copy-forward-word ()}}
-\entry{yank (C-y)}{120}{\code {yank (C-y)}}
-\entry{yank-pop (M-y)}{120}{\code {yank-pop (M-y)}}
-\entry{digit-argument (M-0, M-1, ...{} M--)}{121}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
-\entry{universal-argument ()}{121}{\code {universal-argument ()}}
-\entry{complete (TAB)}{121}{\code {complete (\key {TAB})}}
-\entry{possible-completions (M-?)}{121}{\code {possible-completions (M-?)}}
-\entry{insert-completions (M-*)}{121}{\code {insert-completions (M-*)}}
-\entry{menu-complete ()}{121}{\code {menu-complete ()}}
-\entry{menu-complete-backward ()}{121}{\code {menu-complete-backward ()}}
-\entry{delete-char-or-list ()}{122}{\code {delete-char-or-list ()}}
-\entry{complete-filename (M-/)}{122}{\code {complete-filename (M-/)}}
-\entry{possible-filename-completions (C-x /)}{122}{\code {possible-filename-completions (C-x /)}}
-\entry{complete-username (M-~)}{122}{\code {complete-username (M-~)}}
-\entry{possible-username-completions (C-x ~)}{122}{\code {possible-username-completions (C-x ~)}}
-\entry{complete-variable (M-$)}{122}{\code {complete-variable (M-$)}}
-\entry{possible-variable-completions (C-x $)}{122}{\code {possible-variable-completions (C-x $)}}
-\entry{complete-hostname (M-@)}{122}{\code {complete-hostname (M-@)}}
-\entry{possible-hostname-completions (C-x @)}{122}{\code {possible-hostname-completions (C-x @)}}
-\entry{complete-command (M-!)}{122}{\code {complete-command (M-!)}}
-\entry{possible-command-completions (C-x !)}{122}{\code {possible-command-completions (C-x !)}}
-\entry{dynamic-complete-history (M-TAB)}{122}{\code {dynamic-complete-history (M-\key {TAB})}}
-\entry{dabbrev-expand ()}{122}{\code {dabbrev-expand ()}}
-\entry{complete-into-braces (M-|a)}{122}{\code {complete-into-braces (M-{\tt \char 123})}}
-\entry{start-kbd-macro (C-x ()}{123}{\code {start-kbd-macro (C-x ()}}
-\entry{end-kbd-macro (C-x ))}{123}{\code {end-kbd-macro (C-x ))}}
-\entry{call-last-kbd-macro (C-x e)}{123}{\code {call-last-kbd-macro (C-x e)}}
-\entry{print-last-kbd-macro ()}{123}{\code {print-last-kbd-macro ()}}
-\entry{re-read-init-file (C-x C-r)}{123}{\code {re-read-init-file (C-x C-r)}}
-\entry{abort (C-g)}{123}{\code {abort (C-g)}}
-\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{123}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}
-\entry{prefix-meta (ESC)}{123}{\code {prefix-meta (\key {ESC})}}
-\entry{undo (C-_ or C-x C-u)}{123}{\code {undo (C-_ or C-x C-u)}}
-\entry{revert-line (M-r)}{123}{\code {revert-line (M-r)}}
-\entry{tilde-expand (M-&)}{123}{\code {tilde-expand (M-&)}}
-\entry{set-mark (C-@)}{123}{\code {set-mark (C-@)}}
-\entry{exchange-point-and-mark (C-x C-x)}{123}{\code {exchange-point-and-mark (C-x C-x)}}
-\entry{character-search (C-])}{123}{\code {character-search (C-])}}
-\entry{character-search-backward (M-C-])}{124}{\code {character-search-backward (M-C-])}}
-\entry{skip-csi-sequence ()}{124}{\code {skip-csi-sequence ()}}
-\entry{insert-comment (M-#)}{124}{\code {insert-comment (M-#)}}
-\entry{dump-functions ()}{124}{\code {dump-functions ()}}
-\entry{dump-variables ()}{124}{\code {dump-variables ()}}
-\entry{dump-macros ()}{124}{\code {dump-macros ()}}
-\entry{glob-complete-word (M-g)}{124}{\code {glob-complete-word (M-g)}}
-\entry{glob-expand-word (C-x *)}{124}{\code {glob-expand-word (C-x *)}}
-\entry{glob-list-expansions (C-x g)}{125}{\code {glob-list-expansions (C-x g)}}
-\entry{display-shell-version (C-x C-v)}{125}{\code {display-shell-version (C-x C-v)}}
-\entry{shell-expand-line (M-C-e)}{125}{\code {shell-expand-line (M-C-e)}}
-\entry{history-expand-line (M-^)}{125}{\code {history-expand-line (M-^)}}
-\entry{magic-space ()}{125}{\code {magic-space ()}}
-\entry{alias-expand-line ()}{125}{\code {alias-expand-line ()}}
-\entry{history-and-alias-expand-line ()}{125}{\code {history-and-alias-expand-line ()}}
-\entry{insert-last-argument (M-. or M-_)}{125}{\code {insert-last-argument (M-. or M-_)}}
-\entry{operate-and-get-next (C-o)}{125}{\code {operate-and-get-next (C-o)}}
-\entry{edit-and-execute-command (C-xC-e)}{125}{\code {edit-and-execute-command (C-xC-e)}}
diff --git a/doc/bashref.fns b/doc/bashref.fns
deleted file mode 100644 (file)
index c6680e8..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-\initial {A}
-\entry {\code {abort (C-g)}}{123}
-\entry {\code {accept-line (Newline or Return)}}{117}
-\entry {\code {alias-expand-line ()}}{125}
-\initial {B}
-\entry {\code {backward-char (C-b)}}{116}
-\entry {\code {backward-delete-char (Rubout)}}{118}
-\entry {\code {backward-kill-line (C-x Rubout)}}{119}
-\entry {\code {backward-kill-word (M-\key {DEL})}}{120}
-\entry {\code {backward-word (M-b)}}{116}
-\entry {\code {beginning-of-history (M-<)}}{117}
-\entry {\code {beginning-of-line (C-a)}}{116}
-\entry {\code {bracketed-paste-begin ()}}{119}
-\initial {C}
-\entry {\code {call-last-kbd-macro (C-x e)}}{123}
-\entry {\code {capitalize-word (M-c)}}{119}
-\entry {\code {character-search (C-])}}{123}
-\entry {\code {character-search-backward (M-C-])}}{124}
-\entry {\code {clear-screen (C-l)}}{116}
-\entry {\code {complete (\key {TAB})}}{121}
-\entry {\code {complete-command (M-!)}}{122}
-\entry {\code {complete-filename (M-/)}}{122}
-\entry {\code {complete-hostname (M-@)}}{122}
-\entry {\code {complete-into-braces (M-{\tt \char 123})}}{122}
-\entry {\code {complete-username (M-~)}}{122}
-\entry {\code {complete-variable (M-$)}}{122}
-\entry {\code {copy-backward-word ()}}{120}
-\entry {\code {copy-forward-word ()}}{120}
-\entry {\code {copy-region-as-kill ()}}{120}
-\initial {D}
-\entry {\code {dabbrev-expand ()}}{122}
-\entry {\code {delete-char (C-d)}}{118}
-\entry {\code {delete-char-or-list ()}}{122}
-\entry {\code {delete-horizontal-space ()}}{120}
-\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{121}
-\entry {\code {display-shell-version (C-x C-v)}}{125}
-\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{123}
-\entry {\code {downcase-word (M-l)}}{119}
-\entry {\code {dump-functions ()}}{124}
-\entry {\code {dump-macros ()}}{124}
-\entry {\code {dump-variables ()}}{124}
-\entry {\code {dynamic-complete-history (M-\key {TAB})}}{122}
-\initial {E}
-\entry {\code {edit-and-execute-command (C-xC-e)}}{125}
-\entry {\code {end-kbd-macro (C-x ))}}{123}
-\entry {\code {\i {end-of-file} (usually C-d)}}{118}
-\entry {\code {end-of-history (M->)}}{117}
-\entry {\code {end-of-line (C-e)}}{116}
-\entry {\code {exchange-point-and-mark (C-x C-x)}}{123}
-\initial {F}
-\entry {\code {forward-backward-delete-char ()}}{118}
-\entry {\code {forward-char (C-f)}}{116}
-\entry {\code {forward-search-history (C-s)}}{117}
-\entry {\code {forward-word (M-f)}}{116}
-\initial {G}
-\entry {\code {glob-complete-word (M-g)}}{124}
-\entry {\code {glob-expand-word (C-x *)}}{124}
-\entry {\code {glob-list-expansions (C-x g)}}{125}
-\initial {H}
-\entry {\code {history-and-alias-expand-line ()}}{125}
-\entry {\code {history-expand-line (M-^)}}{125}
-\entry {\code {history-search-backward ()}}{117}
-\entry {\code {history-search-forward ()}}{117}
-\entry {\code {history-substr-search-backward ()}}{118}
-\entry {\code {history-substr-search-forward ()}}{117}
-\initial {I}
-\entry {\code {insert-comment (M-#)}}{124}
-\entry {\code {insert-completions (M-*)}}{121}
-\entry {\code {insert-last-argument (M-. or M-_)}}{125}
-\initial {K}
-\entry {\code {kill-line (C-k)}}{119}
-\entry {\code {kill-region ()}}{120}
-\entry {\code {kill-whole-line ()}}{120}
-\entry {\code {kill-word (M-d)}}{120}
-\initial {M}
-\entry {\code {magic-space ()}}{125}
-\entry {\code {menu-complete ()}}{121}
-\entry {\code {menu-complete-backward ()}}{121}
-\initial {N}
-\entry {\code {next-history (C-n)}}{117}
-\entry {\code {non-incremental-forward-search-history (M-n)}}{117}
-\entry {\code {non-incremental-reverse-search-history (M-p)}}{117}
-\initial {O}
-\entry {\code {operate-and-get-next (C-o)}}{125}
-\entry {\code {overwrite-mode ()}}{119}
-\initial {P}
-\entry {\code {possible-command-completions (C-x !)}}{122}
-\entry {\code {possible-completions (M-?)}}{121}
-\entry {\code {possible-filename-completions (C-x /)}}{122}
-\entry {\code {possible-hostname-completions (C-x @)}}{122}
-\entry {\code {possible-username-completions (C-x ~)}}{122}
-\entry {\code {possible-variable-completions (C-x $)}}{122}
-\entry {\code {prefix-meta (\key {ESC})}}{123}
-\entry {\code {previous-history (C-p)}}{117}
-\entry {\code {print-last-kbd-macro ()}}{123}
-\initial {Q}
-\entry {\code {quoted-insert (C-q or C-v)}}{118}
-\initial {R}
-\entry {\code {re-read-init-file (C-x C-r)}}{123}
-\entry {\code {redraw-current-line ()}}{116}
-\entry {\code {reverse-search-history (C-r)}}{117}
-\entry {\code {revert-line (M-r)}}{123}
-\initial {S}
-\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{119}
-\entry {\code {set-mark (C-@)}}{123}
-\entry {\code {shell-backward-kill-word ()}}{120}
-\entry {\code {shell-backward-word ()}}{116}
-\entry {\code {shell-expand-line (M-C-e)}}{125}
-\entry {\code {shell-forward-word ()}}{116}
-\entry {\code {shell-kill-word ()}}{120}
-\entry {\code {skip-csi-sequence ()}}{124}
-\entry {\code {start-kbd-macro (C-x ()}}{123}
-\initial {T}
-\entry {\code {tilde-expand (M-&)}}{123}
-\entry {\code {transpose-chars (C-t)}}{119}
-\entry {\code {transpose-words (M-t)}}{119}
-\initial {U}
-\entry {\code {undo (C-_ or C-x C-u)}}{123}
-\entry {\code {universal-argument ()}}{121}
-\entry {\code {unix-filename-rubout ()}}{120}
-\entry {\code {unix-line-discard (C-u)}}{120}
-\entry {\code {unix-word-rubout (C-w)}}{120}
-\entry {\code {upcase-word (M-u)}}{119}
-\initial {Y}
-\entry {\code {yank (C-y)}}{120}
-\entry {\code {yank-last-arg (M-. or M-_)}}{118}
-\entry {\code {yank-nth-arg (M-C-y)}}{118}
-\entry {\code {yank-pop (M-y)}}{120}
diff --git a/doc/bashref.ky b/doc/bashref.ky
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/doc/bashref.log b/doc/bashref.log
deleted file mode 100644 (file)
index f1c61b5..0000000
+++ /dev/null
@@ -1,412 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/MacPorts 2014_9) (preloaded format=pdftex 2014.11.4)  17 JUN 2015 11:42
-entering extended mode
- restricted \write18 enabled.
- %&-line parsing enabled.
-**/usr/homes/chet/src/bash/src/doc/bashref.texi
-(/usr/homes/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
-Loading texinfo [version 2013-09-11.11]:
-\bindingoffset=\dimen16
-\normaloffset=\dimen17
-\pagewidth=\dimen18
-\pageheight=\dimen19
-\outerhsize=\dimen20
-\outervsize=\dimen21
-\cornerlong=\dimen22
-\cornerthick=\dimen23
-\topandbottommargin=\dimen24
-\headlinebox=\box16
-\footlinebox=\box17
-\margin=\insert252
-\EMsimple=\toks13
-\groupbox=\box18
-\groupinvalidhelp=\toks14
-\mil=\dimen25
-\exdentamount=\skip18
-\inmarginspacing=\skip19
-\centerpenalty=\count27
- pdf,
-\tempnum=\count28
-\lnkcount=\count29
-\filename=\toks15
-\filenamelength=\count30
-\pgn=\count31
-\toksA=\toks16
-\toksB=\toks17
-\toksC=\toks18
-\toksD=\toks19
-\boxA=\box19
-\countA=\count32
-\nopdfimagehelp=\toks20
- fonts,
-\sffam=\fam8
-\textleading=\dimen26
- markup,
-\fontdepth=\count33
- glyphs,
-\errorbox=\box20
-
-page headings,
-\titlepagetopglue=\skip20
-\titlepagebottomglue=\skip21
-\evenheadline=\toks21
-\oddheadline=\toks22
-\evenfootline=\toks23
-\oddfootline=\toks24
- tables,
-\tableindent=\dimen27
-\itemindent=\dimen28
-\itemmargin=\dimen29
-\itemmax=\dimen30
-\itemno=\count34
-\multitableparskip=\skip22
-\multitableparindent=\skip23
-\multitablecolspace=\dimen31
-\multitablelinespace=\skip24
-\colcount=\count35
-\everytab=\toks25
- conditionals,
-\doignorecount=\count36
- indexing,
-\whatsitskip=\skip25
-\whatsitpenalty=\count37
-\secondaryindent=\skip26
-\partialpage=\box21
-\doublecolumnhsize=\dimen32
- sectioning,
-\unnumberedno=\count38
-\chapno=\count39
-\secno=\count40
-\subsecno=\count41
-\subsubsecno=\count42
-\appendixno=\count43
-\absseclevel=\count44
-\secbase=\count45
-\chapheadingskip=\skip27
-\secheadingskip=\skip28
-\subsecheadingskip=\skip29
- toc,
-\tocfile=\write0
-\contentsrightmargin=\skip30
-\savepageno=\count46
-\lastnegativepageno=\count47
-\tocindent=\dimen33
- environments,
-\lispnarrowing=\skip31
-\envskipamount=\skip32
-\circthick=\dimen34
-\cartouter=\dimen35
-\cartinner=\dimen36
-\normbskip=\skip33
-\normpskip=\skip34
-\normlskip=\skip35
-\lskip=\skip36
-\rskip=\skip37
-\nonfillparindent=\dimen37
-\tabw=\dimen38
-\verbbox=\box22
-
-defuns,
-\defbodyindent=\skip38
-\defargsindent=\skip39
-\deflastargmargin=\skip40
-\defunpenalty=\count48
-\parencount=\count49
-\brackcount=\count50
- macros,
-\paramno=\count51
-\macname=\toks26
- cross references,
-\auxfile=\write1
-\savesfregister=\count52
-\toprefbox=\box23
-\printedrefnamebox=\box24
-\infofilenamebox=\box25
-\printedmanualbox=\box26
- insertions,
-\footnoteno=\count53
-\SAVEfootins=\box27
-\SAVEmargin=\box28
-
-(/opt/local/share/texmf/tex/generic/epsf/epsf.tex
-This is `epsf.tex' v2.7.4 <14 February 2011>
-\epsffilein=\read1
-\epsfframemargin=\dimen39
-\epsfframethickness=\dimen40
-\epsfrsize=\dimen41
-\epsftmp=\dimen42
-\epsftsize=\dimen43
-\epsfxsize=\dimen44
-\epsfysize=\dimen45
-\pspoints=\dimen46
-)
-\noepsfhelp=\toks27
- localization,
-\nolanghelp=\toks28
-\countUTFx=\count54
-\countUTFy=\count55
-\countUTFz=\count56
- formatting,
-\defaultparindent=\dimen47
- and turning on texinfo input format.)
-(./bashref.aux)
-\openout1 = `bashref.aux'.
-
-@cpindfile=@write2
-@fnindfile=@write3
-@vrindfile=@write4
-@tpindfile=@write5
-@kyindfile=@write6
-@pgindfile=@write7
-texinfo.tex: doing @include of version.texi
-
- (./version.texi)
-@btindfile=@write8
-@rwindfile=@write9
- [1
-\openout2 = `bashref.cp'.
-
-\openout3 = `bashref.fn'.
-
-\openout4 = `bashref.vr'.
-
-\openout5 = `bashref.tp'.
-
-\openout6 = `bashref.ky'.
-
-\openout7 = `bashref.pg'.
-
-\openout8 = `bashref.bt'.
-
-\openout9 = `bashref.rw'.
-
-{/opt/local/var/db/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] (./bashref.to
-c [-1] [-2] [-3]) [-4] (./bashref.toc)
-(./bashref.toc) Chapter 1
-\openout0 = `bashref.toc'.
-
- Chapter 2 [1] [2] [3] Chapter 3 [4] [5] [6] [7]
-[8] [9] [10]
-Overfull \hbox (38.26587pt too wide) in paragraph at lines 866--866
- []@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @
-textttsl pattern@texttt ][]) @textttsl command-list @texttt ;;][] esac[] 
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 86.72375
-.@hbox(0.0+0.0)x0.0
-.@texttt c
-.@texttt a
-.@texttt s
-.etc.
-
-[11] [12] [13] [14] [15]
-Overfull \hbox (89.6747pt too wide) in paragraph at lines 1268--1268
- []@texttt cat list | parallel "do-something1 {} config-{} ; do-something2 < {}
-" | process-output[] 
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@texttt c
-.@texttt a
-.@texttt t
-.etc.
-
-
-Overfull \hbox (89.6747pt too wide) in paragraph at lines 1291--1291
- []@texttt { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | p
-arallel traceroute[] 
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@texttt {
-.@penalty 10000
-.@glue 5.74869
-.etc.
-
-
-Overfull \hbox (106.92076pt too wide) in paragraph at lines 1297--1297
- []@texttt { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | p
-arallel -k traceroute[] 
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@texttt {
-.@penalty 10000
-.@glue 5.74869
-.etc.
-
-[16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30]
-[31] [32] [33] [34] [35] [36] [37] [38] [39] Chapter 4 [40] [41] [42] [43]
-[44] [45] [46] [47] [48] [49] [50] [51] [52] [53]
-Overfull \hbox (26.76846pt too wide) in paragraph at lines 4240--4240
- []@texttt mapfile [-d @textttsl de-lim@texttt ] [-n @textttsl count@texttt ] [
--O @textttsl ori-gin@texttt ] [-s @textttsl count@texttt ] [-t] [-u @textttsl f
-d@texttt ][] 
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 86.72375
-.@hbox(0.0+0.0)x0.0
-.@texttt m
-.@texttt a
-.@texttt p
-.etc.
-
-[54] [55]
-Overfull \hbox (38.26584pt too wide) in paragraph at lines 4442--4442
- []@texttt readarray [-d @textttsl de-lim@texttt ] [-n @textttsl count@texttt ]
- [-O @textttsl ori-gin@texttt ] [-s @textttsl count@texttt ] [-t] [-u @textttsl
- fd@texttt ][] 
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 86.72375
-.@hbox(0.0+0.0)x0.0
-.@texttt r
-.@texttt e
-.@texttt a
-.etc.
-
-[56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] Chapter 5 [68]
-[69] [70] [71] [72] [73] [74] [75] [76] [77] [78] Chapter 6 [79]
-Overfull \hbox (49.43388pt too wide) in paragraph at lines 6102--6102
- []@texttt bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@t
-exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@kern 0.0
-.@texttt b
-.@texttt a
-.etc.
-
-
-Overfull \hbox (72.42863pt too wide) in paragraph at lines 6103--6103
- []@texttt bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@texttt 
-] [-O @textttsl shopt_option@texttt ] -c @textttsl string @texttt [@textttsl ar
--
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@texttt b
-.@texttt a
-.@texttt s
-.etc.
-
-
-Overfull \hbox (32.18782pt too wide) in paragraph at lines 6104--6104
- []@texttt bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@text
-tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@texttt b
-.@texttt a
-.@texttt s
-.etc.
-
-[80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94]
-[95] Chapter 7 [96] [97] [98] [99]
-texinfo.tex: doing @include of rluser.texi
-
-
-(/usr/homes/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [100]
-[101] [102] [103] [104] [105] [106] [107] [108] [109] [110]
-Underfull \hbox (badness 7540) in paragraph at lines 794--800
- []@textrm In the above ex-am-ple, @textttsl C-u[] @textrm is bound to the func
--tion
-
-@hbox(7.60416+2.12917)x433.62, glue set 4.22592
-.@glue(@leftskip) 115.63242
-.@hbox(0.0+0.0)x0.0
-.@textrm I
-.@textrm n
-.@glue 3.65 plus 1.825 minus 1.21666
-.etc.
-
-
-Underfull \hbox (badness 10000) in paragraph at lines 794--800
- @texttt universal-argument[]@textrm , @textttsl M-DEL[] @textrm is bound to th
-e func-tion
-
-@hbox(7.60416+2.43333)x433.62, glue set 5.18782
-.@glue(@leftskip) 115.63242
-.@texttt u
-.@texttt n
-.@texttt i
-.@texttt v
-.etc.
-
-[111] [112] [113]
-Overfull \hbox (26.43913pt too wide) in paragraph at lines 989--989
- []@texttt Meta-Control-h: backward-kill-word Text after the function name is i
-gnored[] 
-
-@hbox(6.69167+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@texttt M
-.@texttt e
-.@texttt t
-.etc.
-
-[114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125]
-[126] [127] [128] [129] [130] [131]
-Overfull \hbox (26.43913pt too wide) in paragraph at lines 2225--2225
- []    @texttt # Tilde expansion, with side effect of expanding tilde to full p
-athname[] 
-
-@hbox(6.69167+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@penalty 10000
-.@glue 5.74869
-.@penalty 10000
-.etc.
-
-[132])
-texinfo.tex: doing @include of hsuser.texi
-
- (/usr/homes/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
-[133] [134] [135] [136] [137]) Chapter 10 [138] [139] [140] [141] [142]
-[143] [144] Appendix A [145] Appendix B [146] [147] [148] [149] [150] [151]
-Appendix C [152]
-texinfo.tex: doing @include of fdl.texi
-
- (./fdl.texi [153] [154] [155] [156] [157] [158] [159])
-Appendix D [160] (./bashref.bts) [161] (./bashref.rws) (./bashref.vrs [162]
-[163]) (./bashref.fns [164] [165]) (./bashref.cps [166] [167]) [168] ) 
-Here is how much of TeX's memory you used:
- 2745 strings out of 497110
- 37296 string characters out of 6206875
- 151703 words of memory out of 5000000
- 3523 multiletter control sequences out of 15000+600000
- 32896 words of font info for 113 fonts, out of 8000000 for 9000
- 51 hyphenation exceptions out of 8191
- 16i,6n,16p,319b,967s stack positions out of 5000i,500n,10000p,200000b,80000s
-{/opt/loc
-al/share/texmf-texlive/fonts/enc/dvips/cm-super/cm-super-t1.enc}</opt/local/sha
-re/texmf-texlive/fonts/type1/public/amsfonts/cm/cmbx12.pfb></opt/local/share/te
-xmf-texlive/fonts/type1/public/amsfonts/cm/cmcsc10.pfb></opt/local/share/texmf-
-texlive/fonts/type1/public/amsfonts/cm/cmmi10.pfb></opt/local/share/texmf-texli
-ve/fonts/type1/public/amsfonts/cm/cmmi12.pfb></opt/local/share/texmf-texlive/fo
-nts/type1/public/amsfonts/cm/cmmi9.pfb></opt/local/share/texmf-texlive/fonts/ty
-pe1/public/amsfonts/cm/cmr10.pfb></opt/local/share/texmf-texlive/fonts/type1/pu
-blic/amsfonts/cm/cmr9.pfb></opt/local/share/texmf-texlive/fonts/type1/public/am
-sfonts/cm/cmsl10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfont
-s/cm/cmsltt10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/c
-m/cmsy10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmt
-i10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmtt10.p
-fb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmtt12.pfb></
-opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmtt9.pfb></opt/lo
-cal/share/texmf-texlive/fonts/type1/public/cm-super/sfrm1095.pfb>
-Output written on bashref.pdf (174 pages, 728609 bytes).
-PDF statistics:
- 2546 PDF objects out of 2984 (max. 8388607)
- 2328 compressed objects within 24 object streams
- 300 named destinations out of 1000 (max. 500000)
- 1125 words of extra memory for PDF output out of 10000 (max. 10000000)
-
diff --git a/doc/bashref.pg b/doc/bashref.pg
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/doc/bashref.rw b/doc/bashref.rw
deleted file mode 100644 (file)
index 19aa65f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-\entry{time}{8}{\code {time}}
-\entry{!}{8}{\code {!}}
-\entry{until}{10}{\code {until}}
-\entry{do}{10}{\code {do}}
-\entry{done}{10}{\code {done}}
-\entry{while}{10}{\code {while}}
-\entry{for}{10}{\code {for}}
-\entry{if}{10}{\code {if}}
-\entry{then}{10}{\code {then}}
-\entry{else}{10}{\code {else}}
-\entry{elif}{10}{\code {elif}}
-\entry{fi}{10}{\code {fi}}
-\entry{case}{11}{\code {case}}
-\entry{in}{11}{\code {in}}
-\entry{esac}{11}{\code {esac}}
-\entry{select}{12}{\code {select}}
-\entry{[[}{12}{\code {[[}}
-\entry{]]}{12}{\code {]]}}
-\entry{|a}{14}{\code {{\tt \char 123}}}
-\entry{|b}{14}{\code {{\tt \char 125}}}
-\entry{function}{17}{\code {function}}
diff --git a/doc/bashref.rws b/doc/bashref.rws
deleted file mode 100644 (file)
index edbd5d2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-\initial {!}
-\entry {\code {!}}{8}
-\initial {[}
-\entry {\code {[[}}{12}
-\initial {]}
-\entry {\code {]]}}{12}
-\initial {|}
-\entry {\code {{\tt \char 123}}}{14}
-\entry {\code {{\tt \char 125}}}{14}
-\initial {C}
-\entry {\code {case}}{11}
-\initial {D}
-\entry {\code {do}}{10}
-\entry {\code {done}}{10}
-\initial {E}
-\entry {\code {elif}}{10}
-\entry {\code {else}}{10}
-\entry {\code {esac}}{11}
-\initial {F}
-\entry {\code {fi}}{10}
-\entry {\code {for}}{10}
-\entry {\code {function}}{17}
-\initial {I}
-\entry {\code {if}}{10}
-\entry {\code {in}}{11}
-\initial {S}
-\entry {\code {select}}{12}
-\initial {T}
-\entry {\code {then}}{10}
-\entry {\code {time}}{8}
-\initial {U}
-\entry {\code {until}}{10}
-\initial {W}
-\entry {\code {while}}{10}
diff --git a/doc/bashref.tmp b/doc/bashref.tmp
deleted file mode 100644 (file)
index ff1e5be..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-
-This text is a brief description of the features that are present in
-the Bash shell (version @value{VERSION}, @value{UPDATED}).
-
-This is Edition @value{EDITION}, last updated @value{UPDATED},
-of @cite{The GNU Bash Reference Manual},
-for @code{Bash}, Version @value{VERSION}.
-
-Copyright @copyright{} 1988--2014 Free Software Foundation, Inc.
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-@end quotation
-@empty 
diff --git a/doc/bashref.toc b/doc/bashref.toc
deleted file mode 100644 (file)
index f7ec174..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-@numchapentry{Introduction}{1}{Introduction}{1}
-@numsecentry{What is Bash?}{1.1}{What is Bash?}{1}
-@numsecentry{What is a shell?}{1.2}{What is a shell?}{1}
-@numchapentry{Definitions}{2}{Definitions}{3}
-@numchapentry{Basic Shell Features}{3}{Basic Shell Features}{5}
-@numsecentry{Shell Syntax}{3.1}{Shell Syntax}{5}
-@numsubsecentry{Shell Operation}{3.1.1}{Shell Operation}{5}
-@numsubsecentry{Quoting}{3.1.2}{Quoting}{6}
-@numsubsubsecentry{Escape Character}{3.1.2.1}{Escape Character}{6}
-@numsubsubsecentry{Single Quotes}{3.1.2.2}{Single Quotes}{6}
-@numsubsubsecentry{Double Quotes}{3.1.2.3}{Double Quotes}{6}
-@numsubsubsecentry{ANSI-C Quoting}{3.1.2.4}{ANSI-C Quoting}{6}
-@numsubsubsecentry{Locale-Specific Translation}{3.1.2.5}{Locale Translation}{7}
-@numsubsecentry{Comments}{3.1.3}{Comments}{7}
-@numsecentry{Shell Commands}{3.2}{Shell Commands}{8}
-@numsubsecentry{Simple Commands}{3.2.1}{Simple Commands}{8}
-@numsubsecentry{Pipelines}{3.2.2}{Pipelines}{8}
-@numsubsecentry{Lists of Commands}{3.2.3}{Lists}{9}
-@numsubsecentry{Compound Commands}{3.2.4}{Compound Commands}{9}
-@numsubsubsecentry{Looping Constructs}{3.2.4.1}{Looping Constructs}{10}
-@numsubsubsecentry{Conditional Constructs}{3.2.4.2}{Conditional Constructs}{10}
-@numsubsubsecentry{Grouping Commands}{3.2.4.3}{Command Grouping}{14}
-@numsubsecentry{Coprocesses}{3.2.5}{Coprocesses}{15}
-@numsubsecentry{GNU Parallel}{3.2.6}{GNU Parallel}{15}
-@numsecentry{Shell Functions}{3.3}{Shell Functions}{17}
-@numsecentry{Shell Parameters}{3.4}{Shell Parameters}{18}
-@numsubsecentry{Positional Parameters}{3.4.1}{Positional Parameters}{20}
-@numsubsecentry{Special Parameters}{3.4.2}{Special Parameters}{20}
-@numsecentry{Shell Expansions}{3.5}{Shell Expansions}{21}
-@numsubsecentry{Brace Expansion}{3.5.1}{Brace Expansion}{21}
-@numsubsecentry{Tilde Expansion}{3.5.2}{Tilde Expansion}{22}
-@numsubsecentry{Shell Parameter Expansion}{3.5.3}{Shell Parameter Expansion}{23}
-@numsubsecentry{Command Substitution}{3.5.4}{Command Substitution}{29}
-@numsubsecentry{Arithmetic Expansion}{3.5.5}{Arithmetic Expansion}{29}
-@numsubsecentry{Process Substitution}{3.5.6}{Process Substitution}{30}
-@numsubsecentry{Word Splitting}{3.5.7}{Word Splitting}{30}
-@numsubsecentry{Filename Expansion}{3.5.8}{Filename Expansion}{30}
-@numsubsubsecentry{Pattern Matching}{3.5.8.1}{Pattern Matching}{31}
-@numsubsecentry{Quote Removal}{3.5.9}{Quote Removal}{32}
-@numsecentry{Redirections}{3.6}{Redirections}{32}
-@numsubsecentry{Redirecting Input}{3.6.1}{}{33}
-@numsubsecentry{Redirecting Output}{3.6.2}{}{34}
-@numsubsecentry{Appending Redirected Output}{3.6.3}{}{34}
-@numsubsecentry{Redirecting Standard Output and Standard Error}{3.6.4}{}{34}
-@numsubsecentry{Appending Standard Output and Standard Error}{3.6.5}{}{34}
-@numsubsecentry{Here Documents}{3.6.6}{}{35}
-@numsubsecentry{Here Strings}{3.6.7}{}{35}
-@numsubsecentry{Duplicating File Descriptors}{3.6.8}{}{35}
-@numsubsecentry{Moving File Descriptors}{3.6.9}{}{36}
-@numsubsecentry{Opening File Descriptors for Reading and Writing}{3.6.10}{}{36}
-@numsecentry{Executing Commands}{3.7}{Executing Commands}{36}
-@numsubsecentry{Simple Command Expansion}{3.7.1}{Simple Command Expansion}{36}
-@numsubsecentry{Command Search and Execution}{3.7.2}{Command Search and Execution}{37}
-@numsubsecentry{Command Execution Environment}{3.7.3}{Command Execution Environment}{37}
-@numsubsecentry{Environment}{3.7.4}{Environment}{38}
-@numsubsecentry{Exit Status}{3.7.5}{Exit Status}{39}
-@numsubsecentry{Signals}{3.7.6}{Signals}{39}
-@numsecentry{Shell Scripts}{3.8}{Shell Scripts}{40}
-@numchapentry{Shell Builtin Commands}{4}{Shell Builtin Commands}{41}
-@numsecentry{Bourne Shell Builtins}{4.1}{Bourne Shell Builtins}{41}
-@numsecentry{Bash Builtin Commands}{4.2}{Bash Builtins}{48}
-@numsecentry{Modifying Shell Behavior}{4.3}{Modifying Shell Behavior}{59}
-@numsubsecentry{The Set Builtin}{4.3.1}{The Set Builtin}{59}
-@numsubsecentry{The Shopt Builtin}{4.3.2}{The Shopt Builtin}{63}
-@numsecentry{Special Builtins}{4.4}{Special Builtins}{68}
-@numchapentry{Shell Variables}{5}{Shell Variables}{69}
-@numsecentry{Bourne Shell Variables}{5.1}{Bourne Shell Variables}{69}
-@numsecentry{Bash Variables}{5.2}{Bash Variables}{69}
-@numchapentry{Bash Features}{6}{Bash Features}{80}
-@numsecentry{Invoking Bash}{6.1}{Invoking Bash}{80}
-@numsecentry{Bash Startup Files}{6.2}{Bash Startup Files}{82}
-@numsecentry{Interactive Shells}{6.3}{Interactive Shells}{83}
-@numsubsecentry{What is an Interactive Shell?}{6.3.1}{What is an Interactive Shell?}{84}
-@numsubsecentry{Is this Shell Interactive?}{6.3.2}{Is this Shell Interactive?}{84}
-@numsubsecentry{Interactive Shell Behavior}{6.3.3}{Interactive Shell Behavior}{84}
-@numsecentry{Bash Conditional Expressions}{6.4}{Bash Conditional Expressions}{85}
-@numsecentry{Shell Arithmetic}{6.5}{Shell Arithmetic}{87}
-@numsecentry{Aliases}{6.6}{Aliases}{88}
-@numsecentry{Arrays}{6.7}{Arrays}{89}
-@numsecentry{The Directory Stack}{6.8}{The Directory Stack}{90}
-@numsubsecentry{Directory Stack Builtins}{6.8.1}{Directory Stack Builtins}{91}
-@numsecentry{Controlling the Prompt}{6.9}{Controlling the Prompt}{92}
-@numsecentry{The Restricted Shell}{6.10}{The Restricted Shell}{93}
-@numsecentry{Bash POSIX Mode}{6.11}{Bash POSIX Mode}{94}
-@numchapentry{Job Control}{7}{Job Control}{97}
-@numsecentry{Job Control Basics}{7.1}{Job Control Basics}{97}
-@numsecentry{Job Control Builtins}{7.2}{Job Control Builtins}{98}
-@numsecentry{Job Control Variables}{7.3}{Job Control Variables}{100}
-@numchapentry{Command Line Editing}{8}{Command Line Editing}{101}
-@numsecentry{Introduction to Line Editing}{8.1}{Introduction and Notation}{101}
-@numsecentry{Readline Interaction}{8.2}{Readline Interaction}{101}
-@numsubsecentry{Readline Bare Essentials}{8.2.1}{Readline Bare Essentials}{102}
-@numsubsecentry{Readline Movement Commands}{8.2.2}{Readline Movement Commands}{102}
-@numsubsecentry{Readline Killing Commands}{8.2.3}{Readline Killing Commands}{103}
-@numsubsecentry{Readline Arguments}{8.2.4}{Readline Arguments}{103}
-@numsubsecentry{Searching for Commands in the History}{8.2.5}{Searching}{103}
-@numsecentry{Readline Init File}{8.3}{Readline Init File}{104}
-@numsubsecentry{Readline Init File Syntax}{8.3.1}{Readline Init File Syntax}{104}
-@numsubsecentry{Conditional Init Constructs}{8.3.2}{Conditional Init Constructs}{112}
-@numsubsecentry{Sample Init File}{8.3.3}{Sample Init File}{113}
-@numsecentry{Bindable Readline Commands}{8.4}{Bindable Readline Commands}{116}
-@numsubsecentry{Commands For Moving}{8.4.1}{Commands For Moving}{116}
-@numsubsecentry{Commands For Manipulating The History}{8.4.2}{Commands For History}{117}
-@numsubsecentry{Commands For Changing Text}{8.4.3}{Commands For Text}{118}
-@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{119}
-@numsubsecentry{Specifying Numeric Arguments}{8.4.5}{Numeric Arguments}{121}
-@numsubsecentry{Letting Readline Type For You}{8.4.6}{Commands For Completion}{121}
-@numsubsecentry{Keyboard Macros}{8.4.7}{Keyboard Macros}{123}
-@numsubsecentry{Some Miscellaneous Commands}{8.4.8}{Miscellaneous Commands}{123}
-@numsecentry{Readline vi Mode}{8.5}{Readline vi Mode}{125}
-@numsecentry{Programmable Completion}{8.6}{Programmable Completion}{126}
-@numsecentry{Programmable Completion Builtins}{8.7}{Programmable Completion Builtins}{128}
-@numsecentry{A Programmable Completion Example}{8.8}{A Programmable Completion Example}{131}
-@numchapentry{Using History Interactively}{9}{Using History Interactively}{134}
-@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{134}
-@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{134}
-@numsecentry{History Expansion}{9.3}{History Interaction}{136}
-@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{136}
-@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{137}
-@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{138}
-@numchapentry{Installing Bash}{10}{Installing Bash}{139}
-@numsecentry{Basic Installation}{10.1}{Basic Installation}{139}
-@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{140}
-@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{140}
-@numsecentry{Installation Names}{10.4}{Installation Names}{140}
-@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{140}
-@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{141}
-@numsecentry{Operation Controls}{10.7}{Operation Controls}{141}
-@numsecentry{Optional Features}{10.8}{Optional Features}{141}
-@appentry{Reporting Bugs}{A}{Reporting Bugs}{146}
-@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{147}
-@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{151}
-@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{153}
-@appentry{Indexes}{D}{Indexes}{161}
-@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{161}
-@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{162}
-@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{162}
-@appsecentry{Function Index}{D.4}{Function Index}{164}
-@appsecentry{Concept Index}{D.5}{Concept Index}{166}
diff --git a/doc/bashref.tp b/doc/bashref.tp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/doc/bashref.vr b/doc/bashref.vr
deleted file mode 100644 (file)
index 45b719d..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-\entry{LC_MESSAGES}{7}{\code {LC_MESSAGES}}
-\entry{TEXTDOMAIN}{7}{\code {TEXTDOMAIN}}
-\entry{TEXTDOMAINDIR}{7}{\code {TEXTDOMAINDIR}}
-\entry{*}{20}{\code {*}}
-\entry{$*}{20}{\code {$*}}
-\entry{@}{20}{\code {@}}
-\entry{$@}{20}{\code {$@}}
-\entry{#}{20}{\code {#}}
-\entry{$#}{20}{\code {$#}}
-\entry{?}{20}{\code {?}}
-\entry{$?}{20}{\code {$?}}
-\entry{-}{20}{\code {-}}
-\entry{$-}{20}{\code {$-}}
-\entry{$}{20}{\code {$}}
-\entry{$$}{20}{\code {$$}}
-\entry{!}{20}{\code {!}}
-\entry{$!}{20}{\code {$!}}
-\entry{0}{21}{\code {0}}
-\entry{$0}{21}{\code {$0}}
-\entry{_}{21}{\code {_}}
-\entry{$_}{21}{\code {$_}}
-\entry{CDPATH}{69}{\code {CDPATH}}
-\entry{HOME}{69}{\code {HOME}}
-\entry{IFS}{69}{\code {IFS}}
-\entry{MAIL}{69}{\code {MAIL}}
-\entry{MAILPATH}{69}{\code {MAILPATH}}
-\entry{OPTARG}{69}{\code {OPTARG}}
-\entry{OPTIND}{69}{\code {OPTIND}}
-\entry{PATH}{69}{\code {PATH}}
-\entry{PS1}{69}{\code {PS1}}
-\entry{PS2}{69}{\code {PS2}}
-\entry{BASH}{69}{\code {BASH}}
-\entry{BASHOPTS}{70}{\code {BASHOPTS}}
-\entry{BASHPID}{70}{\code {BASHPID}}
-\entry{BASH_ALIASES}{70}{\code {BASH_ALIASES}}
-\entry{BASH_ARGC}{70}{\code {BASH_ARGC}}
-\entry{BASH_ARGV}{70}{\code {BASH_ARGV}}
-\entry{BASH_CMDS}{70}{\code {BASH_CMDS}}
-\entry{BASH_COMMAND}{70}{\code {BASH_COMMAND}}
-\entry{BASH_COMPAT}{70}{\code {BASH_COMPAT}}
-\entry{BASH_ENV}{71}{\code {BASH_ENV}}
-\entry{BASH_EXECUTION_STRING}{71}{\code {BASH_EXECUTION_STRING}}
-\entry{BASH_LINENO}{71}{\code {BASH_LINENO}}
-\entry{BASH_REMATCH}{71}{\code {BASH_REMATCH}}
-\entry{BASH_SOURCE}{71}{\code {BASH_SOURCE}}
-\entry{BASH_SUBSHELL}{71}{\code {BASH_SUBSHELL}}
-\entry{BASH_VERSINFO}{71}{\code {BASH_VERSINFO}}
-\entry{BASH_VERSION}{72}{\code {BASH_VERSION}}
-\entry{BASH_XTRACEFD}{72}{\code {BASH_XTRACEFD}}
-\entry{CHILD_MAX}{72}{\code {CHILD_MAX}}
-\entry{COLUMNS}{72}{\code {COLUMNS}}
-\entry{COMP_CWORD}{72}{\code {COMP_CWORD}}
-\entry{COMP_LINE}{72}{\code {COMP_LINE}}
-\entry{COMP_POINT}{72}{\code {COMP_POINT}}
-\entry{COMP_TYPE}{73}{\code {COMP_TYPE}}
-\entry{COMP_KEY}{73}{\code {COMP_KEY}}
-\entry{COMP_WORDBREAKS}{73}{\code {COMP_WORDBREAKS}}
-\entry{COMP_WORDS}{73}{\code {COMP_WORDS}}
-\entry{COMPREPLY}{73}{\code {COMPREPLY}}
-\entry{COPROC}{73}{\code {COPROC}}
-\entry{DIRSTACK}{73}{\code {DIRSTACK}}
-\entry{EMACS}{73}{\code {EMACS}}
-\entry{ENV}{73}{\code {ENV}}
-\entry{EUID}{73}{\code {EUID}}
-\entry{EXECIGNORE}{73}{\code {EXECIGNORE}}
-\entry{FCEDIT}{74}{\code {FCEDIT}}
-\entry{FIGNORE}{74}{\code {FIGNORE}}
-\entry{FUNCNAME}{74}{\code {FUNCNAME}}
-\entry{FUNCNEST}{74}{\code {FUNCNEST}}
-\entry{GLOBIGNORE}{74}{\code {GLOBIGNORE}}
-\entry{GROUPS}{74}{\code {GROUPS}}
-\entry{histchars}{74}{\code {histchars}}
-\entry{HISTCMD}{74}{\code {HISTCMD}}
-\entry{HISTCONTROL}{75}{\code {HISTCONTROL}}
-\entry{HISTFILE}{75}{\code {HISTFILE}}
-\entry{HISTFILESIZE}{75}{\code {HISTFILESIZE}}
-\entry{HISTIGNORE}{75}{\code {HISTIGNORE}}
-\entry{HISTSIZE}{75}{\code {HISTSIZE}}
-\entry{HISTTIMEFORMAT}{75}{\code {HISTTIMEFORMAT}}
-\entry{HOSTFILE}{76}{\code {HOSTFILE}}
-\entry{HOSTNAME}{76}{\code {HOSTNAME}}
-\entry{HOSTTYPE}{76}{\code {HOSTTYPE}}
-\entry{IGNOREEOF}{76}{\code {IGNOREEOF}}
-\entry{INPUTRC}{76}{\code {INPUTRC}}
-\entry{LANG}{76}{\code {LANG}}
-\entry{LC_ALL}{76}{\code {LC_ALL}}
-\entry{LC_COLLATE}{76}{\code {LC_COLLATE}}
-\entry{LC_CTYPE}{76}{\code {LC_CTYPE}}
-\entry{LC_MESSAGES}{76}{\code {LC_MESSAGES}}
-\entry{LC_NUMERIC}{76}{\code {LC_NUMERIC}}
-\entry{LINENO}{76}{\code {LINENO}}
-\entry{LINES}{76}{\code {LINES}}
-\entry{MACHTYPE}{77}{\code {MACHTYPE}}
-\entry{MAILCHECK}{77}{\code {MAILCHECK}}
-\entry{MAPFILE}{77}{\code {MAPFILE}}
-\entry{OLDPWD}{77}{\code {OLDPWD}}
-\entry{OPTERR}{77}{\code {OPTERR}}
-\entry{OSTYPE}{77}{\code {OSTYPE}}
-\entry{PIPESTATUS}{77}{\code {PIPESTATUS}}
-\entry{POSIXLY_CORRECT}{77}{\code {POSIXLY_CORRECT}}
-\entry{PPID}{77}{\code {PPID}}
-\entry{PROMPT_COMMAND}{77}{\code {PROMPT_COMMAND}}
-\entry{PROMPT_DIRTRIM}{77}{\code {PROMPT_DIRTRIM}}
-\entry{PS3}{77}{\code {PS3}}
-\entry{PS4}{77}{\code {PS4}}
-\entry{PWD}{78}{\code {PWD}}
-\entry{RANDOM}{78}{\code {RANDOM}}
-\entry{READLINE_LINE}{78}{\code {READLINE_LINE}}
-\entry{READLINE_POINT}{78}{\code {READLINE_POINT}}
-\entry{REPLY}{78}{\code {REPLY}}
-\entry{SECONDS}{78}{\code {SECONDS}}
-\entry{SHELL}{78}{\code {SHELL}}
-\entry{SHELLOPTS}{78}{\code {SHELLOPTS}}
-\entry{SHLVL}{78}{\code {SHLVL}}
-\entry{TIMEFORMAT}{78}{\code {TIMEFORMAT}}
-\entry{TMOUT}{79}{\code {TMOUT}}
-\entry{TMPDIR}{79}{\code {TMPDIR}}
-\entry{UID}{79}{\code {UID}}
-\entry{auto_resume}{100}{\code {auto_resume}}
-\entry{bell-style}{105}{\code {bell-style}}
-\entry{bind-tty-special-chars}{105}{\code {bind-tty-special-chars}}
-\entry{blink-matching-paren}{105}{\code {blink-matching-paren}}
-\entry{colored-completion-prefix}{105}{\code {colored-completion-prefix}}
-\entry{colored-stats}{105}{\code {colored-stats}}
-\entry{comment-begin}{105}{\code {comment-begin}}
-\entry{completion-display-width}{105}{\code {completion-display-width}}
-\entry{completion-ignore-case}{106}{\code {completion-ignore-case}}
-\entry{completion-map-case}{106}{\code {completion-map-case}}
-\entry{completion-prefix-display-length}{106}{\code {completion-prefix-display-length}}
-\entry{completion-query-items}{106}{\code {completion-query-items}}
-\entry{convert-meta}{106}{\code {convert-meta}}
-\entry{disable-completion}{106}{\code {disable-completion}}
-\entry{editing-mode}{106}{\code {editing-mode}}
-\entry{emacs-mode-string}{106}{\code {emacs-mode-string}}
-\entry{echo-control-characters}{107}{\code {echo-control-characters}}
-\entry{enable-bracketed-paste}{107}{\code {enable-bracketed-paste}}
-\entry{enable-keypad}{107}{\code {enable-keypad}}
-\entry{expand-tilde}{107}{\code {expand-tilde}}
-\entry{history-preserve-point}{107}{\code {history-preserve-point}}
-\entry{history-size}{107}{\code {history-size}}
-\entry{horizontal-scroll-mode}{107}{\code {horizontal-scroll-mode}}
-\entry{input-meta}{107}{\code {input-meta}}
-\entry{meta-flag}{107}{\code {meta-flag}}
-\entry{isearch-terminators}{108}{\code {isearch-terminators}}
-\entry{keymap}{108}{\code {keymap}}
-\entry{mark-modified-lines}{108}{\code {mark-modified-lines}}
-\entry{mark-symlinked-directories}{108}{\code {mark-symlinked-directories}}
-\entry{match-hidden-files}{108}{\code {match-hidden-files}}
-\entry{menu-complete-display-prefix}{109}{\code {menu-complete-display-prefix}}
-\entry{output-meta}{109}{\code {output-meta}}
-\entry{page-completions}{109}{\code {page-completions}}
-\entry{revert-all-at-newline}{109}{\code {revert-all-at-newline}}
-\entry{show-all-if-ambiguous}{109}{\code {show-all-if-ambiguous}}
-\entry{show-all-if-unmodified}{109}{\code {show-all-if-unmodified}}
-\entry{show-mode-in-prompt}{109}{\code {show-mode-in-prompt}}
-\entry{skip-completed-text}{109}{\code {skip-completed-text}}
-\entry{vi-cmd-mode-string}{110}{\code {vi-cmd-mode-string}}
-\entry{vi-ins-mode-string}{110}{\code {vi-ins-mode-string}}
-\entry{visible-stats}{110}{\code {visible-stats}}
diff --git a/doc/bashref.vrs b/doc/bashref.vrs
deleted file mode 100644 (file)
index c1c36db..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-\initial {!}
-\entry {\code {!}}{20}
-\initial {#}
-\entry {\code {#}}{20}
-\initial {$}
-\entry {\code {$}}{20}
-\entry {\code {$!}}{20}
-\entry {\code {$#}}{20}
-\entry {\code {$$}}{20}
-\entry {\code {$*}}{20}
-\entry {\code {$-}}{20}
-\entry {\code {$?}}{20}
-\entry {\code {$@}}{20}
-\entry {\code {$_}}{21}
-\entry {\code {$0}}{21}
-\initial {*}
-\entry {\code {*}}{20}
-\initial {-}
-\entry {\code {-}}{20}
-\initial {?}
-\entry {\code {?}}{20}
-\initial {@}
-\entry {\code {@}}{20}
-\initial {_}
-\entry {\code {_}}{21}
-\initial {0}
-\entry {\code {0}}{21}
-\initial {A}
-\entry {\code {auto_resume}}{100}
-\initial {B}
-\entry {\code {BASH}}{69}
-\entry {\code {BASH_ALIASES}}{70}
-\entry {\code {BASH_ARGC}}{70}
-\entry {\code {BASH_ARGV}}{70}
-\entry {\code {BASH_CMDS}}{70}
-\entry {\code {BASH_COMMAND}}{70}
-\entry {\code {BASH_COMPAT}}{70}
-\entry {\code {BASH_ENV}}{71}
-\entry {\code {BASH_EXECUTION_STRING}}{71}
-\entry {\code {BASH_LINENO}}{71}
-\entry {\code {BASH_REMATCH}}{71}
-\entry {\code {BASH_SOURCE}}{71}
-\entry {\code {BASH_SUBSHELL}}{71}
-\entry {\code {BASH_VERSINFO}}{71}
-\entry {\code {BASH_VERSION}}{72}
-\entry {\code {BASH_XTRACEFD}}{72}
-\entry {\code {BASHOPTS}}{70}
-\entry {\code {BASHPID}}{70}
-\entry {\code {bell-style}}{105}
-\entry {\code {bind-tty-special-chars}}{105}
-\entry {\code {blink-matching-paren}}{105}
-\initial {C}
-\entry {\code {CDPATH}}{69}
-\entry {\code {CHILD_MAX}}{72}
-\entry {\code {colored-completion-prefix}}{105}
-\entry {\code {colored-stats}}{105}
-\entry {\code {COLUMNS}}{72}
-\entry {\code {comment-begin}}{105}
-\entry {\code {COMP_CWORD}}{72}
-\entry {\code {COMP_KEY}}{73}
-\entry {\code {COMP_LINE}}{72}
-\entry {\code {COMP_POINT}}{72}
-\entry {\code {COMP_TYPE}}{73}
-\entry {\code {COMP_WORDBREAKS}}{73}
-\entry {\code {COMP_WORDS}}{73}
-\entry {\code {completion-display-width}}{105}
-\entry {\code {completion-ignore-case}}{106}
-\entry {\code {completion-map-case}}{106}
-\entry {\code {completion-prefix-display-length}}{106}
-\entry {\code {completion-query-items}}{106}
-\entry {\code {COMPREPLY}}{73}
-\entry {\code {convert-meta}}{106}
-\entry {\code {COPROC}}{73}
-\initial {D}
-\entry {\code {DIRSTACK}}{73}
-\entry {\code {disable-completion}}{106}
-\initial {E}
-\entry {\code {echo-control-characters}}{107}
-\entry {\code {editing-mode}}{106}
-\entry {\code {EMACS}}{73}
-\entry {\code {emacs-mode-string}}{106}
-\entry {\code {enable-bracketed-paste}}{107}
-\entry {\code {enable-keypad}}{107}
-\entry {\code {ENV}}{73}
-\entry {\code {EUID}}{73}
-\entry {\code {EXECIGNORE}}{73}
-\entry {\code {expand-tilde}}{107}
-\initial {F}
-\entry {\code {FCEDIT}}{74}
-\entry {\code {FIGNORE}}{74}
-\entry {\code {FUNCNAME}}{74}
-\entry {\code {FUNCNEST}}{74}
-\initial {G}
-\entry {\code {GLOBIGNORE}}{74}
-\entry {\code {GROUPS}}{74}
-\initial {H}
-\entry {\code {histchars}}{74}
-\entry {\code {HISTCMD}}{74}
-\entry {\code {HISTCONTROL}}{75}
-\entry {\code {HISTFILE}}{75}
-\entry {\code {HISTFILESIZE}}{75}
-\entry {\code {HISTIGNORE}}{75}
-\entry {\code {history-preserve-point}}{107}
-\entry {\code {history-size}}{107}
-\entry {\code {HISTSIZE}}{75}
-\entry {\code {HISTTIMEFORMAT}}{75}
-\entry {\code {HOME}}{69}
-\entry {\code {horizontal-scroll-mode}}{107}
-\entry {\code {HOSTFILE}}{76}
-\entry {\code {HOSTNAME}}{76}
-\entry {\code {HOSTTYPE}}{76}
-\initial {I}
-\entry {\code {IFS}}{69}
-\entry {\code {IGNOREEOF}}{76}
-\entry {\code {input-meta}}{107}
-\entry {\code {INPUTRC}}{76}
-\entry {\code {isearch-terminators}}{108}
-\initial {K}
-\entry {\code {keymap}}{108}
-\initial {L}
-\entry {\code {LANG}}{76}
-\entry {\code {LC_ALL}}{76}
-\entry {\code {LC_COLLATE}}{76}
-\entry {\code {LC_CTYPE}}{76}
-\entry {\code {LC_MESSAGES}}{7, 76}
-\entry {\code {LC_NUMERIC}}{76}
-\entry {\code {LINENO}}{76}
-\entry {\code {LINES}}{76}
-\initial {M}
-\entry {\code {MACHTYPE}}{77}
-\entry {\code {MAIL}}{69}
-\entry {\code {MAILCHECK}}{77}
-\entry {\code {MAILPATH}}{69}
-\entry {\code {MAPFILE}}{77}
-\entry {\code {mark-modified-lines}}{108}
-\entry {\code {mark-symlinked-directories}}{108}
-\entry {\code {match-hidden-files}}{108}
-\entry {\code {menu-complete-display-prefix}}{109}
-\entry {\code {meta-flag}}{107}
-\initial {O}
-\entry {\code {OLDPWD}}{77}
-\entry {\code {OPTARG}}{69}
-\entry {\code {OPTERR}}{77}
-\entry {\code {OPTIND}}{69}
-\entry {\code {OSTYPE}}{77}
-\entry {\code {output-meta}}{109}
-\initial {P}
-\entry {\code {page-completions}}{109}
-\entry {\code {PATH}}{69}
-\entry {\code {PIPESTATUS}}{77}
-\entry {\code {POSIXLY_CORRECT}}{77}
-\entry {\code {PPID}}{77}
-\entry {\code {PROMPT_COMMAND}}{77}
-\entry {\code {PROMPT_DIRTRIM}}{77}
-\entry {\code {PS1}}{69}
-\entry {\code {PS2}}{69}
-\entry {\code {PS3}}{77}
-\entry {\code {PS4}}{77}
-\entry {\code {PWD}}{78}
-\initial {R}
-\entry {\code {RANDOM}}{78}
-\entry {\code {READLINE_LINE}}{78}
-\entry {\code {READLINE_POINT}}{78}
-\entry {\code {REPLY}}{78}
-\entry {\code {revert-all-at-newline}}{109}
-\initial {S}
-\entry {\code {SECONDS}}{78}
-\entry {\code {SHELL}}{78}
-\entry {\code {SHELLOPTS}}{78}
-\entry {\code {SHLVL}}{78}
-\entry {\code {show-all-if-ambiguous}}{109}
-\entry {\code {show-all-if-unmodified}}{109}
-\entry {\code {show-mode-in-prompt}}{109}
-\entry {\code {skip-completed-text}}{109}
-\initial {T}
-\entry {\code {TEXTDOMAIN}}{7}
-\entry {\code {TEXTDOMAINDIR}}{7}
-\entry {\code {TIMEFORMAT}}{78}
-\entry {\code {TMOUT}}{79}
-\entry {\code {TMPDIR}}{79}
-\initial {U}
-\entry {\code {UID}}{79}
-\initial {V}
-\entry {\code {vi-cmd-mode-string}}{110}
-\entry {\code {vi-ins-mode-string}}{110}
-\entry {\code {visible-stats}}{110}
diff --git a/doc/faq.headers.mail b/doc/faq.headers.mail
deleted file mode 100644 (file)
index 481e843..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-From: chet.ramey@case.edu (Chet Ramey)
-To: bug-bash@gnu.org
-Subject: BASH Frequently-Asked Questions (FAQ version 3.36)
-Reply-To: chet@po.cwru.edu
diff --git a/doc/faq.headers.news b/doc/faq.headers.news
deleted file mode 100644 (file)
index 875e74b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-Newsgroups: comp.unix.shell,comp.unix.questions
-Distribution: world
-From: chet@po.cwru.edu (Chet Ramey)
-Subject: BASH Frequently-Asked Questions (FAQ version 3.36)
-Organization: Case Western Reserve University
-Summary: A's to Q's about BASH, the Bourne-Again SHell
-Reply-To: chet@po.cwru.edu
-Followup-To: poster
-
diff --git a/doc/faq.headers.news2 b/doc/faq.headers.news2
deleted file mode 100644 (file)
index 0a8f386..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-Newsgroups: comp.unix.shell,comp.unix.questions,comp.answers,news.answers
-From: chet@po.cwru.edu (Chet Ramey)
-Subject: [gnu.bash.bug] BASH Frequently-Asked Questions (FAQ version 3.36)
-Organization: Case Western Reserve University
-Summary: A's to Q's about BASH, the Bourne-Again SHell
-Reply-To: chet@po.cwru.edu
-Followup-To: poster
-Approved: news-answers-request@MIT.EDU
-
diff --git a/doc/faq.mail b/doc/faq.mail
deleted file mode 100644 (file)
index 4ca0ed8..0000000
+++ /dev/null
@@ -1,1886 +0,0 @@
-From: chet.ramey@case.edu (Chet Ramey)
-To: bug-bash@gnu.org
-Subject: BASH Frequently-Asked Questions (FAQ version 3.36)
-Reply-To: chet@po.cwru.edu
-Archive-name: unix-faq/shell/bash
-Posting-Frequency: monthly
-Submitted-By: chet@po.cwru.edu (Chet Ramey)
-Last-Modified: Fri May 11 16:18:55 EDT 2007
-FAQ-Version: 3.36
-Bash-Version: 3.2
-URL: ftp://ftp.cwru.edu/pub/bash/FAQ
-Maintainer: chet@po.cwru.edu (Chet Ramey)
-
-This is the Bash FAQ, version 3.36, for Bash version 3.2.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 3.2, first made available on 12 October, 2006.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 3.2:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both
-are available as part of their current release.  Bash-3.2 is currently
-being tested and should be available soon.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-3.1 or bash-3.2.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-
-Bash-3.2 is the second maintenance release of the third major release of
-bash.  It contains the following significant new features (see the manual
-page for complete descriptions and the CHANGES and NEWS files in the
-bash-3.2 distribution).
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-A short feature history dating from Bash-2.0:
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-There are a few incompatibilities between version 2.05b and version 3.2.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-3.2:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-3.2:
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-       set -o pipefail
-       The `+=' assignment operator
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-3.0)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2007.  Never make predictions. 
-
-This document is Copyright 1995-2006 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/faq.mail.test b/doc/faq.mail.test
deleted file mode 100644 (file)
index 7ad2440..0000000
+++ /dev/null
@@ -1,1886 +0,0 @@
-From: chet.ramey@case.edu (Chet Ramey)
-To: chet.ramey@gmail.com
-Subject: BASH Frequently-Asked Questions (FAQ version 3.36)
-Reply-To: chet@po.cwru.edu
-Archive-name: unix-faq/shell/bash
-Posting-Frequency: monthly
-Submitted-By: chet@po.cwru.edu (Chet Ramey)
-Last-Modified: Fri May 11 16:18:55 EDT 2007
-FAQ-Version: 3.36
-Bash-Version: 3.2
-URL: ftp://ftp.cwru.edu/pub/bash/FAQ
-Maintainer: chet@po.cwru.edu (Chet Ramey)
-
-This is the Bash FAQ, version 3.36, for Bash version 3.2.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 3.2, first made available on 12 October, 2006.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 3.2:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both
-are available as part of their current release.  Bash-3.2 is currently
-being tested and should be available soon.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-3.1 or bash-3.2.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-
-Bash-3.2 is the second maintenance release of the third major release of
-bash.  It contains the following significant new features (see the manual
-page for complete descriptions and the CHANGES and NEWS files in the
-bash-3.2 distribution).
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-A short feature history dating from Bash-2.0:
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-There are a few incompatibilities between version 2.05b and version 3.2.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-3.2:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-3.2:
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-       set -o pipefail
-       The `+=' assignment operator
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-3.0)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2007.  Never make predictions. 
-
-This document is Copyright 1995-2006 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/faq.news b/doc/faq.news
deleted file mode 100644 (file)
index f58af0d..0000000
+++ /dev/null
@@ -1,1891 +0,0 @@
-Newsgroups: comp.unix.shell,comp.unix.questions
-Distribution: world
-From: chet@po.cwru.edu (Chet Ramey)
-Subject: BASH Frequently-Asked Questions (FAQ version 3.36)
-Organization: Case Western Reserve University
-Summary: A's to Q's about BASH, the Bourne-Again SHell
-Reply-To: chet@po.cwru.edu
-Followup-To: poster
-
-Archive-name: unix-faq/shell/bash
-Posting-Frequency: monthly
-Submitted-By: chet@po.cwru.edu (Chet Ramey)
-Last-Modified: Fri May 11 16:18:55 EDT 2007
-FAQ-Version: 3.36
-Bash-Version: 3.2
-URL: ftp://ftp.cwru.edu/pub/bash/FAQ
-Maintainer: chet@po.cwru.edu (Chet Ramey)
-
-This is the Bash FAQ, version 3.36, for Bash version 3.2.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 3.2, first made available on 12 October, 2006.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 3.2:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both
-are available as part of their current release.  Bash-3.2 is currently
-being tested and should be available soon.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-3.1 or bash-3.2.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-
-Bash-3.2 is the second maintenance release of the third major release of
-bash.  It contains the following significant new features (see the manual
-page for complete descriptions and the CHANGES and NEWS files in the
-bash-3.2 distribution).
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-A short feature history dating from Bash-2.0:
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-There are a few incompatibilities between version 2.05b and version 3.2.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-3.2:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-3.2:
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-       set -o pipefail
-       The `+=' assignment operator
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-3.0)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2007.  Never make predictions. 
-
-This document is Copyright 1995-2006 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/faq.news2 b/doc/faq.news2
deleted file mode 100644 (file)
index 9a14ab1..0000000
+++ /dev/null
@@ -1,1891 +0,0 @@
-Newsgroups: comp.unix.shell,comp.unix.questions,comp.answers,news.answers
-From: chet@po.cwru.edu (Chet Ramey)
-Subject: [gnu.bash.bug] BASH Frequently-Asked Questions (FAQ version 3.36)
-Organization: Case Western Reserve University
-Summary: A's to Q's about BASH, the Bourne-Again SHell
-Reply-To: chet@po.cwru.edu
-Followup-To: poster
-Approved: news-answers-request@MIT.EDU
-
-Archive-name: unix-faq/shell/bash
-Posting-Frequency: monthly
-Submitted-By: chet@po.cwru.edu (Chet Ramey)
-Last-Modified: Fri May 11 16:18:55 EDT 2007
-FAQ-Version: 3.36
-Bash-Version: 3.2
-URL: ftp://ftp.cwru.edu/pub/bash/FAQ
-Maintainer: chet@po.cwru.edu (Chet Ramey)
-
-This is the Bash FAQ, version 3.36, for Bash version 3.2.
-
-This document contains a set of frequently-asked questions concerning
-Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
-interpreter with advanced features for both interactive use and shell
-programming.
-
-Another good source of basic information about shells is the collection
-of FAQ articles periodically posted to comp.unix.shell.
-
-Questions and comments concerning this document should be sent to
-chet.ramey@case.edu.
-
-This document is available for anonymous FTP with the URL
-
-ftp://ftp.cwru.edu/pub/bash/FAQ
-
-The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
-
-----------
-Contents:
-
-Section A:  The Basics
-
-A1) What is it?
-A2) What's the latest version?
-A3) Where can I get it?
-A4) On what machines will bash run?
-A5) Will bash run on operating systems other than Unix?
-A6) How can I build bash with gcc?
-A7) How can I make bash my login shell?
-A8) I just changed my login shell to bash, and now I can't FTP into my
-    machine.  Why not?
-A9) What's the `POSIX Shell and Utilities standard'?
-A10) What is the bash `posix mode'?
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-C2) How does bash differ from the Korn shell, version ksh88?
-C3) Which new features in ksh-93 are not in bash, and which are?
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-D2) Why doesn't bash treat brace expansions exactly like csh?
-D3) Why doesn't bash have csh variable modifiers?
-D4) How can I make my csh aliases work when I convert to bash?
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-Section E:  Why does bash do certain things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-E2) Why does bash sometimes say `Broken pipe'?
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-E7) What about empty for loops in Makefiles?
-E8) Why does the arithmetic evaluation code complain about `08'?
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-E10) Why does `cd //' leave $PWD as `//'?
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-E12) Why don't negative offsets in substring expansion work like I expect?
-E13) Why does filename completion misbehave if a colon appears in the filename?
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause matching to stop working?
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-G4) How can I make the bash `time' reserved word print timing output that
-    looks like the output from my system's /usr/bin/time?
-G5) How do I get the current directory into my prompt?
-G6) How can I rename "*.foo" to "*.bar"?
-G7) How can I translate a filename from uppercase to lowercase?
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-H2) What kind of bash documentation is there?
-H3) What's coming in future versions?
-H4) What's on the bash `wish list'?
-H5) When will the next release appear?
-
-----------
-Section A:  The Basics
-
-A1)  What is it?
-
-Bash is a Unix command interpreter (shell).  It is an implementation of
-the Posix 1003.2 shell standard, and resembles the Korn and System V
-shells.
-
-Bash contains a number of enhancements over those shells, both
-for interactive use and shell programming.  Features geared
-toward interactive use include command line editing, command
-history, job control, aliases, and prompt expansion.  Programming
-features include additional variable expansions, shell
-arithmetic, and a number of variables and options to control
-shell behavior.
-
-Bash was originally written by Brian Fox of the Free Software
-Foundation.  The current developer and maintainer is Chet Ramey
-of Case Western Reserve University.
-
-A2)  What's the latest version?
-
-The latest version is 3.2, first made available on 12 October, 2006.
-
-A3)  Where can I get it?
-
-Bash is the GNU project's shell, and so is available from the
-master GNU archive site, ftp.gnu.org, and its mirrors.  The
-latest version is also available for FTP from ftp.cwru.edu.
-The following URLs tell how to get version 3.2:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz
-
-Formatted versions of the documentation are available with the URLs:
-
-ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz
-ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz
-
-Any patches for the current version are available with the URL:
-
-ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/
-
-A4)  On what machines will bash run?
-
-Bash has been ported to nearly every version of Unix.  All you
-should have to do to build it on a machine for which a port
-exists is to type `configure' and then `make'.  The build process
-will attempt to discover the version of Unix you have and tailor
-itself accordingly, using a script created by GNU autoconf.
-
-More information appears in the file `INSTALL' in the distribution.
-
-The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
-explains how to obtain binary versions of bash for most of the major
-commercial Unix systems.
-
-A5) Will bash run on operating systems other than Unix?
-
-Configuration specifics for Unix-like systems such as QNX and
-LynxOS are included in the distribution.  Bash-2.05 and later
-versions should compile and run on Minix 2.0 (patches were
-contributed), but I don't believe anyone has built bash-2.x on
-earlier Minix versions yet. 
-
-Bash has been ported to versions of Windows implementing the Win32
-programming interface.  This includes Windows 95 and Windows NT.
-The port was done by Cygnus Solutions (now part of Red Hat) as part
-of their CYGWIN project.  For more information about the project, see
-http://www.cygwin.com/.
-
-Cygnus originally ported bash-1.14.7, and that port was part of their
-early GNU-Win32 (the original name) releases.  Cygnus has also done
-ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both
-are available as part of their current release.  Bash-3.2 is currently
-being tested and should be available soon.
-
-Bash-2.05b and later versions should require no local Cygnus changes to
-build and run under CYGWIN.
-
-DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
-of the DJGPP project.  For more information on the project, see
-
-http://www.delorie.com/djgpp/
-
-I have been told that the original DJGPP port was done by Daisuke Aoyama.
-
-Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
-is available for DJGPP V2.  The files are available as:
-
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
-ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
-
-Mark began to work with bash-2.05, but I don't know the current status.
-
-Bash-3.0 compiles and runs with no modifications under Microsoft's Services
-for Unix (SFU), once known as Interix.  I do not anticipate any problems
-with building bash-3.1 or bash-3.2.
-
-A6) How can I build bash with gcc? 
-
-Bash configures to use gcc by default if it is available.  Read the
-file INSTALL in the distribution for more information.
-
-A7)  How can I make bash my login shell?
-
-Some machines let you use `chsh' to change your login shell.  Other
-systems use `passwd -s' or `passwd -e'.  If one of these works for
-you, that's all you need.  Note that many systems require the full
-pathname to a shell to appear in /etc/shells before you can make it
-your login shell.  For this, you may need the assistance of your
-friendly local system administrator. 
-
-If you cannot do this, you can still use bash as your login shell, but
-you need to perform some tricks.  The basic idea is to add a command
-to your login shell's startup file to replace your login shell with
-bash.
-
-For example, if your login shell is csh or tcsh, and you have installed
-bash in /usr/gnu/bin/bash, add the following line to ~/.login:
-
-       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
-
-(the `--login' tells bash that it is a login shell).
-
-It's not a good idea to put this command into ~/.cshrc, because every
-csh you run without the `-f' option, even ones started to run csh scripts,
-reads that file.  If you must put the command in ~/.cshrc, use something
-like
-
-       if ( $?prompt ) exec /usr/gnu/bin/bash --login
-
-to ensure that bash is exec'd only when the csh is interactive.
-
-If your login shell is sh or ksh, you have to do two things.
-
-First, create an empty file in your home directory named `.bash_profile'.
-The existence of this file will prevent the exec'd bash from trying to
-read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
-is the first file bash tries to read initialization commands from when
-it is invoked as a login shell.
-
-Next, add a line similar to the above to ~/.profile:
-
-       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
-               exec /usr/gnu/bin/bash --login
-
-This will cause login shells to replace themselves with bash running as
-a login shell.  Once you have this working, you can copy your initialization
-code from ~/.profile to ~/.bash_profile.
-
-I have received word that the recipe supplied above is insufficient for
-machines running CDE.  CDE has a maze of twisty little startup files, all
-slightly different.
-
-If you cannot change your login shell in the password file to bash, you
-will have to (apparently) live with CDE using the shell in the password
-file to run its startup scripts.  If you have changed your shell to bash,
-there is code in the CDE startup files (on Solaris, at least) that attempts
-to do the right thing.  It is, however, often broken, and may require that
-you use the $BASH_ENV trick described below.
-
-`dtterm' claims to use $SHELL as the default program to start, so if you
-can change $SHELL in the CDE startup files, you should be able to use bash
-in your terminal windows.
-
-Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
-to read your login shell's startup files.  You may be able to use bash for
-the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
-well, but I have not tried this.
-
-You can use the above `exec' recipe to start bash when not logging in with
-CDE by testing the value of the DT variable:
-
-       if [ -n "$DT" ]; then
-               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
-       fi
-
-If CDE starts its shells non-interactively during login, the login shell
-startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
-To get around this problem, append a line similar to the following to your
-~/.dtprofile:
-
-       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
-
-and add the following line to the beginning of ~/.bash_profile:
-
-       unset BASH_ENV
-
-A8) I just changed my login shell to bash, and now I can't FTP into my
-   machine.  Why not?
-
-You must add the full pathname to bash to the file /etc/shells.  As
-noted in the answer to the previous question, many systems require
-this before you can make bash your login shell. 
-
-Most versions of ftpd use this file to prohibit `special' users
-such as `uucp' and `news' from using FTP. 
-
-A9)  What's the `POSIX Shell and Utilities standard'?
-
-POSIX is a name originally coined by Richard Stallman for a
-family of open system standards based on UNIX.  There are a
-number of aspects of UNIX under consideration for
-standardization, from the basic system services at the system
-call and C library level to applications and tools to system
-administration and management.  Each area of standardization is
-assigned to a working group in the 1003 series. 
-
-The POSIX Shell and Utilities standard was originally developed by
-IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
-the original 1003.1 Working Group and is maintained by the Austin
-Group (a joint working group of the IEEE, The Open Group and
-ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
-within the set of documents that make up IEEE Std 1003.1-2001, and
-thus now the former POSIX.2 (from 1992) is now part of the current
-POSIX.1 standard (POSIX 1003.1-2001). 
-
-The Shell and Utilities volume concentrates on the command
-interpreter interface and utility programs commonly executed from
-the command line or by other programs.  The standard is freely
-available on the web at http://www.UNIX-systems.org/version3/ . 
-Work continues at the Austin Group on maintenance issues; see
-http://www.opengroup.org/austin/ to join the discussions. 
-
-Bash is concerned with the aspects of the shell's behavior defined
-by the POSIX Shell and Utilities volume.  The shell command
-language has of course been standardized, including the basic flow
-control and program execution constructs, I/O redirection and
-pipelining, argument handling, variable expansion, and quoting. 
-
-The `special' builtins, which must be implemented as part of the
-shell to provide the desired functionality, are specified as
-being part of the shell; examples of these are `eval' and
-`export'.  Other utilities appear in the sections of POSIX not
-devoted to the shell which are commonly (and in some cases must
-be) implemented as builtin commands, such as `read' and `test'. 
-POSIX also specifies aspects of the shell's interactive
-behavior as part of the UPE, including job control and command
-line editing.  Only vi-style line editing commands have been
-standardized; emacs editing commands were left out due to
-objections.
-
-The latest version of the POSIX Shell and Utilities standard is
-available (now updated to the 2004 Edition) as part of the Single
-UNIX Specification Version 3 at
-
-http://www.UNIX-systems.org/version3/
-
-A10)  What is the bash `posix mode'?
-
-Although bash is an implementation of the POSIX shell
-specification, there are areas where the bash default behavior
-differs from that spec.  The bash `posix mode' changes the bash
-behavior in these areas so that it obeys the spec more closely. 
-
-Posix mode is entered by starting bash with the --posix or
-'-o posix' option or executing `set -o posix' after bash is running.
-
-The specific aspects of bash which change when posix mode is
-active are listed in the file POSIX in the bash distribution.
-They are also listed in a section in the Bash Reference Manual
-(from which that file is generated).
-
-Section B:  The latest version
-
-B1) What's new in version 3.2?
-
-Bash-3.2 is the second maintenance release of the third major release of
-bash.  It contains the following significant new features (see the manual
-page for complete descriptions and the CHANGES and NEWS files in the
-bash-3.2 distribution).
-
-o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing
-  characters when deciding whether or not a script is a binary file.
-
-o Quoting the string argument to the [[ command's  =~ (regexp) operator now
-  forces string matching, as with the other pattern-matching operators.
-
-A short feature history dating from Bash-2.0:
-
-Bash-3.1 contained the following new features:
-
-o Bash-3.1 may now be configured and built in a mode that enforces strict
-  POSIX compliance.
-
-o The `+=' assignment operator, which appends to the value of a string or
-  array variable, has been implemented.
-
-o It is now possible to ignore case when matching in contexts other than
-  filename generation using the new `nocasematch' shell option.
-
-Bash-3.0 contained the following new features:
-
-o Features to support the bash debugger have been implemented, and there
-  is a new `extdebug' option to turn the non-default options on
-
-o HISTCONTROL is now a colon-separated list of options and has been
-  extended with a new `erasedups' option that will result in only one
-  copy of a command being kept in the history list
-
-o Brace expansion has been extended with a new {x..y} form, producing
-  sequences of digits or characters
-
-o Timestamps are now kept with history entries, with an option to save
-  and restore them from the history file; there is a new HISTTIMEFORMAT
-  variable describing how to display the timestamps when listing history
-  entries
-
-o The `[[' command can now perform extended regular expression (egrep-like)
-  matching, with matched subexpressions placed in the BASH_REMATCH array
-  variable
-
-o A new `pipefail' option causes a pipeline to return a failure status if
-  any command in it fails
-
-o The `jobs', `kill', and `wait' builtins now accept job control notation
-  in their arguments even if job control is not enabled
-
-o The `gettext' package and libintl have been integrated, and the shell
-  messages may be translated into other languages
-
-Bash-2.05b introduced the following new features:
-
-o support for multibyte characters has been added to both bash and readline
-
-o the DEBUG trap is now run *before* simple commands, ((...)) commands,
-  [[...]] conditional commands, and for ((...)) loops
-
-o the shell now performs arithmetic in the largest integer size the machine
-  supports (intmax_t)
-
-o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
-  and inserts the result into the expanded prompt
-
-o there is a new `here-string' redirection operator:  <<< word
-
-o when displaying variables, function attributes and definitions are shown
-  separately, allowing them to be re-used as input (attempting to re-use
-  the old output would result in syntax errors).
-
-o `read' has a new `-u fd' option to read from a specified file descriptor
-
-o the bash debugger in examples/bashdb has been modified to work with the
-  new DEBUG trap semantics, the command set has been made more gdb-like,
-  and the changes to $LINENO make debugging functions work better
-
-o the expansion of $LINENO inside a shell function is only relative to the
-  function start if the shell is interactive -- if the shell is running a
-  script, $LINENO expands to the line number in the script.  This is as
-  POSIX-2001 requires
-
-Bash-2.05a introduced the following new features:
-
-o The `printf' builtin has undergone major work
-
-o There is a new read-only `shopt' option: login_shell, which is set by
-  login shells and unset otherwise
-
-o New `\A' prompt string escape sequence; expanding to time in 24-hour
-  HH:MM format
-
-o New `-A group/-g' option to complete and compgen; goes group name
-  completion
-
-o New [+-]O invocation option to set and unset `shopt' options at startup
-
-o ksh-like `ERR' trap
-
-o `for' loops now allow empty word lists after the `in' reserved word
-
-o new `hard' and `soft' arguments for the `ulimit' builtin
-
-o Readline can be configured to place the user at the same point on the line
-  when retrieving commands from the history list
-
-o Readline can be configured to skip `hidden' files (filenames with a leading
-  `.' on Unix) when performing completion
-
-Bash-2.05 introduced the following new features:
-
-o This version has once again reverted to using locales and strcoll(3) when
-  processing pattern matching bracket expressions, as POSIX requires. 
-o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
-  per the new GNU coding standards.
-o The /dev/tcp and /dev/udp redirections now accept service names as well as
-  port numbers.
-o `complete' and `compgen' now take a `-o value' option, which controls some
-   of the aspects of that compspec.  Valid values are:
-
-        default - perform bash default completion if programmable
-                  completion produces no matches
-        dirnames - perform directory name completion if programmable
-                   completion produces no matches
-        filenames - tell readline that the compspec produces filenames,
-                    so it can do things like append slashes to
-                    directory names and suppress trailing spaces
-o A new loadable builtin, realpath, which canonicalizes and expands symlinks
-  in pathname arguments.
-o When `set' is called without options, it prints function defintions in a
-  way that allows them to be reused as input.  This affects `declare' and 
-  `declare -p' as well.  This only happens when the shell is not in POSIX
-   mode, since POSIX.2 forbids this behavior.
-
-Bash-2.04 introduced the following new features:
-
-o Programmable word completion with the new `complete' and `compgen' builtins;
-  examples are provided in examples/complete/complete-examples
-o `history' has a new `-d' option to delete a history entry
-o `bind' has a new `-x' option to bind key sequences to shell commands
-o The prompt expansion code has new `\j' and `\l' escape sequences
-o The `no_empty_cmd_completion' shell option, if enabled, inhibits
-  command completion when TAB is typed on an empty line
-o `help' has a new `-s' option to print a usage synopsis
-o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
-o New ksh93-style arithmetic for command:
-       for ((expr1 ; expr2; expr3 )); do list; done
-o `read' has new options: `-t', `-n', `-d', `-s'
-o The redirection code handles several filenames specially:  /dev/fd/N,
-  /dev/stdin, /dev/stdout, /dev/stderr
-o The redirection code now recognizes /dev/tcp/HOST/PORT and
-  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
-  to the specified port on the specified host
-o The ${!prefix*} expansion has been implemented
-o A new FUNCNAME variable, which expands to the name of a currently-executing
-  function
-o The GROUPS variable is no longer readonly
-o A new shopt `xpg_echo' variable, to control the behavior of echo with
-  respect to backslash-escape sequences at runtime
-o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
-
-The version of Readline released with Bash-2.04, Readline-4.1, had several
-new features as well:
-
-o Parentheses matching is always compiled into readline, and controllable
-  with the new `blink-matching-paren' variable
-o The history-search-forward and history-search-backward functions now leave
-  point at the end of the line when the search string is empty, like
-  reverse-search-history, and forward-search-history
-o A new function for applications:  rl_on_new_line_with_prompt()
-o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
-
-
-Bash-2.03 had very few new features, in keeping with the convention
-that odd-numbered releases provide mainly bug fixes.  A number of new
-features were added to Readline, mostly at the request of the Cygnus
-folks.
-
-A new shopt option, `restricted_shell', so that startup files can test
-       whether or not the shell was started in restricted mode
-Filename generation is now performed on the words between ( and ) in
-       compound array assignments (this is really a bug fix)
-OLDPWD is now auto-exported, as POSIX.2 requires
-ENV and BASH_ENV are read-only variables in a restricted shell
-Bash may now be linked against an already-installed Readline library,
-       as long as the Readline library is version 4 or newer
-All shells begun with the `--login' option will source the login shell
-       startup files, even if the shell is not interactive
-
-There were lots of changes to the version of the Readline library released
-along with Bash-2.03.  For a complete list of the changes, read the file
-CHANGES in the Bash-2.03 distribution.
-
-Bash-2.02 contained the following new features:
-
-a new version of malloc (based on the old GNU malloc code in previous
-       bash versions) that is more page-oriented, more conservative
-       with memory usage, does not `orphan' large blocks when they
-       are freed, is usable on 64-bit machines, and has allocation
-       checking turned on unconditionally
-POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
-POSIX.2-style globbing equivalence classes
-POSIX.2-style globbing collating symbols
-the ksh [[...]] extended conditional command
-the ksh egrep-style extended pattern matching operators
-a new `printf' builtin
-the ksh-like $(<filename) command substitution, which is equivalent to
-       $(cat filename)
-new tilde prefixes that expand to directories from the directory stack
-new `**' arithmetic operator to do exponentiation
-case-insensitive globbing (filename expansion)
-menu completion a la tcsh
-`magic-space' history expansion function like tcsh
-the readline inputrc `language' has a new file inclusion directive ($include)
-
-Bash-2.01 contained only a few new features:
-
-new `GROUPS' builtin array variable containing the user's group list
-new bindable readline commands: history-and-alias-expand-line and
-       alias-expand-line
-
-Bash-2.0 contained extensive changes and new features from bash-1.14.7.
-Here's a short list:
-
-new `time' reserved word to time pipelines, shell builtins, and
-       shell functions
-one-dimensional arrays with a new compound assignment statement,
-        appropriate expansion constructs and modifications to some
-       of the builtins (read, declare, etc.) to use them
-new quoting syntaxes for ANSI-C string expansion and locale-specific
-       string translation
-new expansions to do substring extraction, pattern replacement, and
-       indirect variable expansion
-new builtins: `disown' and `shopt'
-new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
-              MACHTYPE, BASH_VERSINFO
-special handling of many unused or redundant variables removed
-       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-dynamic loading of new builtin commands; many loadable examples provided
-new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
-history and aliases available in shell scripts
-new readline variables: enable-keypad, mark-directories, input-meta,
-       visible-stats, disable-completion, comment-begin
-new readline commands to manipulate the mark and operate on the region
-new readline emacs mode commands and bindings for ksh-88 compatibility
-updated and extended builtins
-new DEBUG trap
-expanded (and now documented) restricted shell mode
-
-implementation stuff:  
-autoconf-based configuration
-nearly all of the bugs reported since version 1.14 have been fixed
-most builtins converted to use builtin `getopt' for consistency
-most builtins use -p option to display output in a reusable form
-       (for consistency)
-grammar tighter and smaller (66 reduce-reduce conflicts gone)
-lots of code now smaller and faster
-test suite greatly expanded
-
-B2) Are there any user-visible incompatibilities between bash-3.2 and
-    bash-2.05b?
-
-There are a few incompatibilities between version 2.05b and version 3.2.
-They are detailed in the file COMPAT in the bash distribution.  That file
-is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
-if if you find something that's not mentioned there.
-
-Section C:  Differences from other Unix shells
-
-C1) How does bash differ from sh, the Bourne shell?
-
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4.2 shell.  The bash manual page explains these more
-completely.
-
-Things bash has that sh does not:
-       long invocation options
-       [+-]O invocation option
-       -l invocation option
-       `!' reserved word to invert pipeline return value
-       `time' reserved word to time pipelines and shell builtins
-       the `function' reserved word
-       the `select' compound command and reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       new $'...' and $"..." quoting
-       the $(...) form of command substitution
-       the $(<filename) form of command substitution, equivalent to
-               $(cat filename)
-       the ${#param} parameter value length operator
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-       expansion of positional parameters beyond $9 with ${num}
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
-                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
-                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
-                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
-                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
-                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
-                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
-                  auto_resume
-       DEBUG trap
-       ERR trap
-       variable arrays with new compound assignment syntax
-       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
-       prompt string special char translation and variable expansion
-       auto-export of variables in initial environment
-       command search finds functions before builtins
-       bash return builtin will exit a file sourced with `.'
-       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
-                 export -n/-f/-p/name=value, pwd -L/-P,
-                 read -e/-p/-a/-t/-n/-d/-s/-u,
-                 readonly -a/-f/name=value, trap -l, set +o,
-                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
-                 unset -f/-v, ulimit -i/-m/-p/-q/-u/-x,
-                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
-                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
-       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-       bash restricted shell mode is more extensive
-       bash allows functions and variables with the same name
-       brace expansion
-       tilde expansion
-       arithmetic expansion with $((...)) and `let' builtin
-       the `[[...]]' extended conditional command
-       process substitution
-       aliases and alias/unalias builtins
-       local variables in functions and `local' builtin
-       readline and command-line editing with programmable completion
-       command history and history/fc builtins
-       csh-like history expansion
-       other new bash builtins: bind, command, compgen, complete, builtin,
-                                declare/typeset, dirs, enable, fc, help,
-                                history, logout, popd, pushd, disown, shopt,
-                                printf
-       exported functions
-       filename generation when using output redirection (command >a*)
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       variable assignments preceding commands affect only that command,
-               even for builtins and functions
-       posix mode and strict posix conformance
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
-               /dev/tcp/host/port, /dev/udp/host/port
-       debugger support, including `caller' builtin and new variables
-       RETURN trap
-       the `+=' assignment operator
-
-
-Things sh has that bash does not:
-       uses variable SHACCT to do shell accounting
-       includes `stop' builtin (bash can use alias stop='kill -s STOP')
-       `newgrp' builtin
-       turns on job control if called as `jsh'
-       $TIMEOUT (like bash $TMOUT)
-       `^' is a synonym for `|'
-       new SVR4.2 sh builtins: mldmode, priv
-
-Implementation differences:
-       redirection to/from compound commands causes sh to create a subshell
-       bash does not allow unbalanced quotes; sh silently inserts them at EOF
-       bash does not mess with signal 11
-       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
-       bash splits only the results of expansions on IFS, using POSIX.2
-               field splitting rules; sh splits all words on IFS
-       sh does not allow MAILCHECK to be unset (?)
-       sh does not allow traps on SIGALRM or SIGCHLD
-       bash allows multiple option arguments when invoked (e.g. -x -v);
-               sh allows only a single option argument (`sh -x -v' attempts
-               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
-               On Solaris 2.4 and earlier versions, sh goes into an infinite
-               loop.)
-       sh exits a script if any builtin fails; bash exits only if one of
-               the POSIX.2 `special' builtins fails
-
-C2)  How does bash differ from the Korn shell, version ksh88?
-
-Things bash has or uses that ksh88 does not:
-       long invocation options
-       [-+]O invocation option
-       -l invocation option
-       `!' reserved word
-       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
-       arithmetic in largest machine-supported size (intmax_t)
-       posix mode and posix conformance
-       command hashing
-       tilde expansion for assignment statements that look like $PATH
-       process substitution with named pipes if /dev/fd is not available
-       the ${!param} indirect parameter expansion operator
-       the ${!param*} prefix expansion operator
-       the ${param:offset[:length]} parameter substring operator
-       the ${param/pat[/string]} parameter pattern substitution operator
-       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
-                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
-                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
-                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
-                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
-                  GROUPS, FUNCNAME, histchars, auto_resume
-       prompt expansion with backslash escapes and command substitution
-       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
-       more extensive and extensible editing and programmable completion
-       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
-                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
-                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
-                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
-                 set -o braceexpand/-o histexpand/-o interactive-comments/
-                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
-                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
-                 typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p,
-                 shopt, disown, printf, complete, compgen
-       `!' csh-style history expansion
-       POSIX.2-style globbing character classes
-       POSIX.2-style globbing equivalence classes
-       POSIX.2-style globbing collating symbols
-       egrep-like extended pattern matching operators
-       case-insensitive pattern matching and globbing
-       `**' arithmetic operator to do exponentiation
-       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
-       arrays of unlimited size
-       TMOUT is default timeout for `read' and `select'
-       debugger support, including the `caller' builtin
-       RETURN trap
-       Timestamps in history entries
-       {x..y} brace expansion
-       The `+=' assignment operator
-
-Things ksh88 has or uses that bash does not:
-       tracked aliases (alias -t)
-       variables: ERRNO, FPATH, EDITOR, VISUAL
-       co-processes (|&, >&p, <&p)
-       weirdly-scoped functions
-       typeset +f to list all function names without definitions
-       text of command history kept in a file, not memory
-       builtins: alias -x, cd old new, newgrp, print,
-                 read -p/-s/var?prompt, set -A/-o gmacs/
-                 -o bgnice/-o markdirs/-o trackall/-o viraw/-s,
-                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
-       using environment to pass attributes of exported variables
-       arithmetic evaluation done on arguments to some builtins
-       reads .profile from $PWD when invoked as login shell
-
-Implementation differences:
-       ksh runs last command of a pipeline in parent shell context
-       bash has brace expansion by default (ksh88 compile-time option)
-       bash has fixed startup file for all interactive shells; ksh reads $ENV
-       bash has exported functions
-       bash command search finds functions before builtins
-       bash waits for all commands in pipeline to exit before returning status
-       emacs-mode editing has some slightly different key bindings
-
-C3)  Which new features in ksh-93 are not in bash, and which are?
-
-New things in ksh-93 not in bash-3.2:
-       associative arrays
-       floating point arithmetic and variables
-       math library functions
-       ${!name[sub]} name of subscript for associative array
-       `.' is allowed in variable names to create a hierarchical namespace
-       more extensive compound assignment syntax
-       discipline functions
-       `sleep' and `getconf' builtins (bash has loadable versions)
-       typeset -n and `nameref' variables
-       KEYBD trap
-       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
-                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
-       backreferences in pattern matching (\N)
-       `&' operator in pattern lists for matching
-       print -f (bash uses printf)
-       `fc' has been renamed to `hist'
-       `.' can execute shell functions
-       exit statuses between 0 and 255
-       FPATH and PATH mixing
-       getopts -a
-       -I invocation option
-       printf %H, %P, %T, %Z modifiers, output base for %d
-       lexical scoping for local variables in `ksh' functions
-       no scoping for local variables in `POSIX' functions
-
-New things in ksh-93 present in bash-3.2:
-       [n]<&word- and [n]>&word- redirections (combination dup and close)
-        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
-        ?:, ++, --, `expr1 , expr2' arithmetic operators
-       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
-                   ${!param*}
-       compound array assignment
-       the `!' reserved word
-       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
-       `command', `builtin', `disown' builtins
-       new $'...' and $"..." quoting
-       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
-       set -o notify/-C
-       changes to kill builtin
-       read -A (bash uses read -a)
-        read -t/-d
-       trap -p
-       exec -c/-a
-       `.' restores the positional parameters when it completes
-       POSIX.2 `test'
-       umask -S
-       unalias -a
-       command and arithmetic substitution performed on PS1, PS4, and ENV
-       command name completion
-       ENV processed only for interactive shells
-       set -o pipefail
-       The `+=' assignment operator
-
-Section D:  Why does bash do some things differently than other Unix shells?
-
-D1) Why does bash run a different version of `command' than
-    `which command' says it will?
-
-On many systems, `which' is actually a csh script that assumes
-you're running csh.  In tcsh, `which' and its cousin `where'
-are builtins.  On other Unix systems, `which' is a perl script
-that uses the PATH environment variable.  Many Linux distributions
-use GNU `which', which is a C program that can understand shell
-aliases.
-
-The csh script version reads the csh startup files from your
-home directory and uses those to determine which `command' will
-be invoked.  Since bash doesn't use any of those startup files,
-there's a good chance that your bash environment differs from
-your csh environment.  The bash `type' builtin does everything
-`which' does, and will report correct results for the running
-shell.  If you're really wedded to the name `which', try adding
-the following function definition to your .bashrc:
-
-       which()
-       {
-               builtin type "$@"
-       }
-
-If you're moving from tcsh and would like to bring `where' along
-as well, use this function:
-
-       where()
-       {
-               builtin type -a "$@"
-       }
-
-D2) Why doesn't bash treat brace expansions exactly like csh?
-
-The only difference between bash and csh brace expansion is that
-bash requires a brace expression to contain at least one unquoted
-comma if it is to be expanded.  Any brace-surrounded word not
-containing an unquoted comma is left unchanged by the brace
-expansion code.  This affords the greatest degree of sh
-compatibility. 
-
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-D3) Why doesn't bash have csh variable modifiers?
-
-Posix has specified a more powerful, albeit somewhat more cryptic,
-mechanism cribbed from ksh, and bash implements it.
-
-${parameter%word}
-        Remove smallest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the suffix matched by the pattern deleted.
-
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-${parameter%%word}
-
-        Remove largest suffix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the suffix matched by the pattern deleted.
-
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-${parameter#word}
-        Remove smallest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        smallest portion of the prefix matched by the pattern deleted.
-
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-${parameter##word}
-        Remove largest prefix pattern.  The WORD is expanded to produce
-        a pattern.  It then expands to the value of PARAMETER, with the
-        largest portion of the prefix matched by the pattern deleted.
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-Given
-       a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-
-
-D4) How can I make my csh aliases work when I convert to bash?
-
-Bash uses a different syntax to support aliases than csh does. 
-The details can be found in the documentation.  We have provided
-a shell script which does most of the work of conversion for you;
-this script can be found in ./examples/misc/aliasconv.sh.  Here is
-how you use it:
-  
-Start csh in the normal way for you.  (e.g., `csh')
-  
-Pipe the output of `alias' through `aliasconv.sh', saving the
-results into `bash_aliases':
-  
-       alias | bash aliasconv.sh >bash_aliases
-  
-Edit `bash_aliases', carefully reading through any created
-functions.  You will need to change the names of some csh specific
-variables to the bash equivalents.  The script converts $cwd to
-$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
-to $PS1.  You may also have to add quotes to avoid unwanted
-expansion.
-
-For example, the csh alias:
-  
-       alias cd 'cd \!*; echo $cwd'
-  
-is converted to the bash function:
-
-       cd () { command cd "$@"; echo $PWD ; }
-
-The only thing that needs to be done is to quote $PWD:
-  
-       cd () { command cd "$@"; echo "$PWD" ; }
-  
-Merge the edited file into your ~/.bashrc.
-
-There is an additional, more ambitious, script in
-examples/misc/cshtobash that attempts to convert your entire csh
-environment to its bash equivalent.  This script can be run as
-simply `cshtobash' to convert your normal interactive
-environment, or as `cshtobash ~/.login' to convert your login
-environment. 
-
-D5) How can I pipe standard output and standard error from one command to
-    another, like csh does with `|&'?
-
-Use
-       command 2>&1 | command2
-
-The key is to remember that piping is performed before redirection, so
-file descriptor 1 points to the pipe when it is duplicated onto file
-descriptor 2.
-
-D6) Now that I've converted from ksh to bash, are there equivalents to
-    ksh features like autoloaded functions and the `whence' command?
-
-There are features in ksh-88 and ksh-93 that do not have direct bash
-equivalents.  Most, however, can be emulated with very little trouble.
-
-ksh-88 feature         Bash equivalent
---------------         ---------------
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -F
-cd, print, whence      function substitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                read -p prompt var
-
-ksh-93 feature         Bash equivalent
---------------         ---------------
-sleep, getconf         Bash has loadable versions in examples/loadables
-${.sh.version}         $BASH_VERSION
-print -f               printf
-hist                   alias hist=fc
-$HISTEDIT              $FCEDIT
-
-Section E:  How can I get bash to do certain things, and why does bash do
-           things the way it does?
-
-E1) Why is the bash builtin `test' slightly different from /bin/test?
-
-The specific example used here is [ ! x -o x ], which is false.
-
-Bash's builtin `test' implements the Posix.2 spec, which can be
-summarized as follows (the wording is due to David Korn):
-   
-Here is the set of rules for processing test arguments.
-  
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           If first argument is `(' and third argument is `)', do the
-           one-argument test of the second argument.
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-   
-The operators -a and -o are considered binary operators for the purpose
-of the 3 Arg case.
-   
-As you can see, the test becomes (not (x or x)), which is false.
-
-E2) Why does bash sometimes say `Broken pipe'?
-
-If a sequence of commands appears in a pipeline, and one of the
-reading commands finishes before the writer has finished, the
-writer receives a SIGPIPE signal.  Many other shells special-case
-SIGPIPE as an exit status in the pipeline and do not report it. 
-For example, in:
-  
-      ps -aux | head
-  
-`head' can finish before `ps' writes all of its output, and ps
-will try to write on a pipe without a reader.  In that case, bash
-will print `Broken pipe' to stderr when ps is killed by a
-SIGPIPE. 
-
-As of bash-3.1, bash does not report SIGPIPE errors by default.  You
-can build a version of bash that will report such errors.
-
-E3) When I have terminal escape sequences in my prompt, why does bash
-    wrap lines at the wrong column?
-
-Readline, the line editing library that bash uses, does not know
-that the terminal escape sequences do not take up space on the
-screen.  The redisplay code assumes, unless told otherwise, that
-each character in the prompt is a `printable' character that
-takes up one character position on the screen. 
-
-You can use the bash prompt expansion facility (see the PROMPTING
-section in the manual page) to tell readline that sequences of
-characters in the prompt strings take up no screen space. 
-
-Use the \[ escape to begin a sequence of non-printing characters,
-and the \] escape to signal the end of such a sequence. 
-
-E4) If I pipe the output of a command into `read variable', why doesn't
-    the output show up in $variable when the read command finishes?
-
-This has to do with the parent-child relationship between Unix
-processes.  It affects all commands run in pipelines, not just
-simple calls to `read'.  For example, piping a command's output
-into a `while' loop that repeatedly calls `read' will result in
-the same behavior.
-
-Each element of a pipeline, even a builtin or shell function,
-runs in a separate process, a child of the shell running the
-pipeline.  A subprocess cannot affect its parent's environment. 
-When the `read' command sets the variable to the input, that
-variable is set only in the subshell, not the parent shell.  When
-the subshell exits, the value of the variable is lost. 
-
-Many pipelines that end with `read variable' can be converted
-into command substitutions, which will capture the output of
-a specified command.  The output can then be assigned to a
-variable:
-
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-can be converted into
-
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-This does not, unfortunately, work to split the text among
-multiple variables, as read does when given multiple variable
-arguments.  If you need to do this, you can either use the
-command substitution above to read the output into a variable
-and chop up the variable using the bash pattern removal
-expansion operators or use some variant of the following
-approach.
-
-Say /usr/local/bin/ipaddr is the following shell script:
-
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-Instead of using
-
-       /usr/local/bin/ipaddr | read A B C D
-
-to break the local machine's IP address into separate octets, use
-
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-
-Beware, however, that this will change the shell's positional
-parameters.  If you need them, you should save them before doing
-this.
-
-This is the general approach -- in most cases you will not need to
-set $IFS to a different value.
-
-Some other user-supplied alternatives include:
-
-read A B C D << HERE
-    $(IFS=.; echo $(/usr/local/bin/ipaddr))
-HERE
-
-and, where process substitution is available,
-
-read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
-
-E5) I have a bunch of shell scripts that use backslash-escaped characters
-    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
-    not, and how can I make it understand them?
-
-This is the behavior of echo on most Unix System V machines.
-
-The bash builtin `echo' is modeled after the 9th Edition
-Research Unix version of `echo'.  It does not interpret
-backslash-escaped characters in its argument strings by default;
-it requires the use of the -e option to enable the
-interpretation.  The System V echo provides no way to disable the
-special characters; the bash echo has a -E option to disable
-them. 
-
-There is a configuration option that will make bash behave like
-the System V echo and interpret things like `\t' by default.  Run
-configure with the --enable-xpg-echo-default option to turn this
-on.  Be aware that this will cause some of the tests run when you
-type `make tests' to fail.
-
-There is a shell option, `xpg_echo', settable with `shopt', that will
-change the behavior of echo at runtime.  Enabling this option turns
-on expansion of backslash-escape sequences.
-
-E6) Why doesn't a while or for loop get suspended when I type ^Z?
-
-This is a consequence of how job control works on Unix.  The only
-thing that can be suspended is the process group.  This is a single
-command or pipeline of commands that the shell forks and executes.
-
-When you run a while or for loop, the only thing that the shell forks
-and executes are any commands in the while loop test and commands in
-the loop bodies.  These, therefore, are the only things that can be
-suspended when you type ^Z.
-
-If you want to be able to stop the entire loop, you need to put it
-within parentheses, which will force the loop into a subshell that
-may be stopped (and subsequently restarted) as a single unit.
-
-E7) What about empty for loops in Makefiles?
-
-It's fairly common to see constructs like this in automatically-generated
-Makefiles:
-
-SUBDIRS = @SUBDIRS@
-
-       ...
-
-subdirs-clean:
-       for d in ${SUBDIRS}; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-When SUBDIRS is empty, this results in a command like this being passed to
-bash:
-
-       for d in ; do
-               ( cd $d && ${MAKE} ${MFLAGS} clean )
-       done
-
-In versions of bash before bash-2.05a, this was a syntax error.  If the
-reserved word `in' was present, a word must follow it before the semicolon
-or newline.  The language in the manual page referring to the list of words
-being empty referred to the list after it is expanded.  These versions of
-bash required that there be at least one word following the `in' when the
-construct was parsed.
-
-The idiomatic Makefile solution is something like:
-
-SUBDIRS = @SUBDIRS@
-
-subdirs-clean:
-       subdirs=$SUBDIRS ; for d in $$subdirs; do \
-               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
-       done
-
-The latest updated POSIX standard has changed this:  the word list
-is no longer required.  Bash versions 2.05a and later accept the
-new syntax.
-
-E8) Why does the arithmetic evaluation code complain about `08'?
-
-The bash arithmetic evaluation code (used for `let', $(()), (()), and in
-other places), interprets a leading `0' in numeric constants as denoting
-an octal number, and a leading `0x' as denoting hexadecimal.  This is
-in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
-arithmetic constants should be handled as signed long integers as defined
-by the ANSI/ISO C standard.
-
-The POSIX.2 interpretation committee has confirmed this:
-
-http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
-
-E9) Why does the pattern matching expression [A-Z]* match files beginning
-    with every letter except `z'?
-
-Bash-2.03, Bash-2.05 and later versions honor the current locale setting
-when processing ranges within pattern matching bracket expressions ([A-Z]). 
-This is what POSIX.2 and SUSv3/XPG6 specify. 
-
-The behavior of the matcher in bash-2.05 and later versions depends on the
-current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
-result in the traditional behavior ([A-Z] matches all uppercase ASCII
-characters).  Many other locales, including the en_US locale (the default
-on many US versions of Linux) collate the upper and lower case letters like
-this:
-
-       AaBb...Zz
-
-which means that [A-Z] matches every letter except `z'.  Others collate like
-
-       aAbBcC...zZ
-
-which means that [A-Z] matches every letter except `a'.
-
-The portable way to specify upper case letters is [:upper:] instead of
-A-Z; lower case may be specified as [:lower:] instead of a-z.
-
-Look at the manual pages for setlocale(3), strcoll(3), and, if it is
-present, locale(1).  If you have locale(1), you can use it to find
-your current locale information even if you do not have any of the
-LC_ variables set.
-
-My advice is to put
-
-       export LC_COLLATE=C
-
-into /etc/profile and inspect any shell scripts run from cron for
-constructs like [A-Z].  This will prevent things like
-
-       rm [A-Z]*
-
-from removing every file in the current directory except those beginning
-with `z' and still allow individual users to change the collation order.
-Users may put the above command into their own profiles as well, of course.
-
-E10) Why does `cd //' leave $PWD as `//'?
-
-POSIX.2, in its description of `cd', says that *three* or more leading
-slashes may be replaced with a single slash when canonicalizing the
-current working directory.
-
-This is, I presume, for historical compatibility.  Certain versions of
-Unix, and early network file systems, used paths of the form
-//hostname/path to access `path' on server `hostname'.
-
-E11) If I resize my xterm while another program is running, why doesn't bash
-     notice the change?
-
-This is another issue that deals with job control.
-
-The kernel maintains a notion of a current terminal process group.  Members
-of this process group (processes whose process group ID is equal to the
-current terminal process group ID) receive terminal-generated signals like
-SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
-man page.)
-
-If a terminal is resized, the kernel sends SIGWINCH to each member of
-the terminal's current process group (the `foreground' process group).
-
-When bash is running with job control enabled, each pipeline (which may be
-a single command) is run in its own process group, different from bash's
-process group.  This foreground process group receives the SIGWINCH; bash
-does not.  Bash has no way of knowing that the terminal has been resized.
-
-There is a `checkwinsize' option, settable with the `shopt' builtin, that
-will cause bash to check the window size and adjust its idea of the
-terminal's dimensions each time a process stops or exits and returns control
-of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
-
-E12) Why don't negative offsets in substring expansion work like I expect?
-
-When substring expansion of the form ${param:offset[:length} is used,
-an `offset' that evaluates to a number less than zero counts back from
-the end of the expanded value of $param.
-
-When a negative `offset' begins with a minus sign, however, unexpected things
-can happen.  Consider
-
-       a=12345678
-       echo ${a:-4}
-
-intending to print the last four characters of $a.  The problem is that
-${param:-word} already has a well-defined meaning: expand to word if the
-expanded value of param is unset or null, and $param otherwise.
-
-To use negative offsets that begin with a minus sign, separate the
-minus sign and the colon with a space.
-
-E13) Why does filename completion misbehave if a colon appears in the filename?
-
-Filename completion (and word completion in general) may appear to behave
-improperly if there is a colon in the word to be completed.
-
-The colon is special to readline's word completion code:  it is one of the
-characters that breaks words for the completer.  Readline uses these characters
-in sort of the same way that bash uses $IFS: they break or separate the words
-the completion code hands to the application-specific or default word
-completion functions.  The original intent was to make it easy to edit
-colon-separated lists (such as $PATH in bash) in various applications using
-readline for input.
-
-This is complicated by the fact that some versions of the popular
-`bash-completion' programmable completion package have problems with the
-default completion behavior in the presence of colons.  
-
-The current set of completion word break characters is available in bash as
-the value of the COMP_WORDBREAKS variable.  Removing `:' from that value is
-enough to make the colon not special to completion:
-
-COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
-
-You can also quote the colon with a backslash to achieve the same result
-temporarily.
-
-E14) Why does quoting the pattern argument to the regular expression matching
-     conditional operator (=~) cause regexp matching to stop working?
-
-In versions of bash prior to bash-3.2, the effect of quoting the regular
-expression argument to the [[ command's =~ operator was not specified.
-The practical effect was that double-quoting the pattern argument required
-backslashes to quote special pattern characters, which interfered with the
-backslash processing performed by double-quoted word expansion and was
-inconsistent with how the == shell pattern matching operator treated
-quoted characters.
-
-In bash-3.2, the shell was changed to internally quote characters in single-
-and double-quoted string arguments to the =~ operator, which suppresses the
-special meaning of the characters special to regular expression processing
-(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces
-them to be matched literally.  This is consistent with how the `==' pattern
-matching operator treats quoted portions of its pattern argument.
-
-Since the treatment of quoted string arguments was changed, several issues
-have arisen, chief among them the problem of white space in pattern arguments
-and the differing treatment of quoted strings between bash-3.1 and bash-3.2.
-Both problems may be solved by using a shell variable to hold the pattern.
-Since word splitting is not performed when expanding shell variables in all
-operands of the [[ command, this allows users to quote patterns as they wish
-when assigning the variable, then expand the values to a single string that
-may contain whitespace.  The first problem may be solved by using backslashes
-or any other quoting mechanism to escape the white space in the patterns.
-
-Section F:  Things to watch out for on certain Unix versions
-
-F1) Why can't I use command line editing in my `cmdtool'?
-
-The problem is `cmdtool' and bash fighting over the input.  When
-scrolling is enabled in a cmdtool window, cmdtool puts the tty in
-`raw mode' to permit command-line editing using the mouse for
-applications that cannot do it themselves.  As a result, bash and
-cmdtool each try to read keyboard input immediately, with neither
-getting enough of it to be useful.
-
-This mode also causes cmdtool to not implement many of the
-terminal functions and control sequences appearing in the
-`sun-cmd' termcap entry.  For a more complete explanation, see
-that file examples/suncmd.termcap in the bash distribution. 
-
-`xterm' is a better choice, and gets along with bash much more
-smoothly.
-
-If you must use cmdtool, you can use the termcap description in
-examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
-description contained in that file, i.e.
-
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-Then export TERMCAP and start a new cmdtool window from that shell.
-The bash command-line editing should behave better in the new
-cmdtool.  If this works, you can put the assignment to TERMCAP
-in your bashrc file.
-
-F2) I built bash on Solaris 2.  Why do globbing expansions and filename
-    completion chop off the first few characters of each filename?
-
-This is the consequence of building bash on SunOS 5 and linking
-with the libraries in /usr/ucblib, but using the definitions
-and structures from files in /usr/include. 
-
-The actual conflict is between the dirent structure in
-/usr/include/dirent.h and the struct returned by the version of
-`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
-
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
-when configuring and building bash.  This will ensure that you
-use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
-link with libc before libucb. 
-
-If you have installed the Sun C compiler, you may also need to
-put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
-/usr/ucb.
-
-F3) Why does bash dump core after I interrupt username completion or
-    `~user' tilde expansion on a machine running NIS?
-
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
-client library, which is part of libc.
-
-The YP library code keeps static state -- a pointer into the data
-returned from the server.  When YP initializes itself (setpwent),
-it looks at this pointer and calls free on it if it's non-null. 
-So far, so good. 
-
-If one of the YP functions is interrupted during getpwent (the
-exact function is interpretwithsave()), and returns NULL, the
-pointer is freed without being reset to NULL, and the function
-returns.  The next time getpwent is called, it sees that this
-pointer is non-null, calls free, and the bash free() blows up
-because it's being asked to free freed memory. 
-
-The traditional Unix mallocs allow memory to be freed multiple
-times; that's probably why this has never been fixed.  You can
-run configure with the `--without-gnu-malloc' option to use
-the C library malloc and avoid the problem.
-
-F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
-
-The `@' character is the default `line kill' character in most
-versions of System V, including SVR4.2.  You can change this
-character to whatever you want using `stty'.  For example, to
-change the line kill character to control-u, type
-
-       stty kill ^U
-
-where the `^' and `U' can be two separate characters.
-
-F5) Why does bash report syntax errors when my C News scripts use a
-    redirection before a subshell command?
-
-The actual command in question is something like
-
-       < file ( command )
-
-According to the grammar given in the POSIX.2 standard, this construct
-is, in fact, a syntax error.  Redirections may only precede `simple
-commands'.  A subshell construct such as the above is one of the shell's
-`compound commands'.  A redirection may only follow a compound command.
-
-This affects the mechanical transformation of commands that use `cat'
-to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
-comp.unix.shell).  While most commands of the form
-
-       cat file | command
-
-can be converted to `< file command', shell control structures such as
-loops and subshells require `command < file'.
-
-The file CWRU/sh-redir-hack in the bash distribution is an
-(unofficial) patch to parse.y that will modify the grammar to
-support this construct.  It will not apply with `patch'; you must
-modify parse.y by hand.  Note that if you apply this, you must
-recompile with -DREDIRECTION_HACK.  This introduces a large
-number of reduce/reduce conflicts into the shell grammar. 
-
-F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
-
-The short answer is that Red Hat screwed up.
-
-The long answer is that they shipped an /etc/inputrc that only works
-for emacs mode editing, and then screwed all the vi users by setting
-INPUTRC to /etc/inputrc in /etc/profile.
-
-The short fix is to do one of the following: remove or rename
-/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
-but make sure you export it if you do), remove the assignment to
-INPUTRC from /etc/profile, add
-
-        set keymap emacs
-
-to the beginning of /etc/inputrc, or bracket the key bindings in
-/etc/inputrc with these lines
-
-       $if mode=emacs
-               [...]
-       $endif
-
-F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
-    HP/UX 11.x?
-
-HP/UX's support for long double is imperfect at best.
-
-GCC will support it without problems, but the HP C library functions
-like strtold(3) and printf(3) don't actually work with long doubles.
-HP implemented a `long_double' type as a 4-element array of 32-bit
-ints, and that is what the library functions use.  The ANSI C
-`long double' type is a 128-bit floating point scalar.
-
-The easiest fix, until HP fixes things up, is to edit the generated
-config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
-the compilation should complete successfully.
-
-Section G:  How can I get bash to do certain common things?
-
-G1) How can I get bash to read and display eight-bit characters?
-
-This is a process requiring several steps.
-
-First, you must ensure that the `physical' data path is a full eight
-bits.  For xterms, for example, the `vt100' resources `eightBitInput'
-and `eightBitOutput' should be set to `true'.
-
-Once you have set up an eight-bit path, you must tell the kernel and
-tty driver to leave the eighth bit of characters alone when processing
-keyboard input.  Use `stty' to do this:
-
-       stty cs8 -istrip -parenb
-
-For old BSD-style systems, you can use
-
-       stty pass8
-
-You may also need
-
-       stty even odd
-
-Finally, you need to tell readline that you will be inputting and
-displaying eight-bit characters.  You use readline variables to do
-this.  These variables can be set in your .inputrc or using the bash
-`bind' builtin.  Here's an example using `bind':
-
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-
-The `set' commands between the single quotes may also be placed
-in ~/.inputrc.
-
-The script examples/scripts.noah/meta.bash encapsulates the bind
-commands in a shell function.
-
-G2) How do I write a function `x' to replace builtin command `x', but
-    still invoke the command from within the function?
-
-This is why the `command' and `builtin' builtins exist.  The
-`command' builtin executes the command supplied as its first
-argument, skipping over any function defined with that name.  The
-`builtin' builtin executes the builtin command given as its first
-argument directly. 
-
-For example, to write a function to replace `cd' that writes the
-hostname and current directory to an xterm title bar, use
-something like the following:
-
-       cd()
-       {
-               builtin cd "$@" && xtitle "$HOST: $PWD"
-       }
-
-This could also be written using `command' instead of `builtin';
-the version above is marginally more efficient. 
-
-G3) How can I find the value of a shell variable whose name is the value
-    of another shell variable?
-
-Versions of Bash newer than Bash-2.0 support this directly.  You can use 
-
-       ${!var}
-
-For example, the following sequence of commands will echo `z':
-
-       var1=var2
-       var2=z
-       echo ${!var1}
-
-For sh compatibility, use the `eval' builtin.  The important
-thing to remember is that `eval' expands the arguments you give
-it again, so you need to quote the parts of the arguments that
-you want `eval' to act on. 
-
-For example, this expression prints the value of the last positional
-parameter:
-
-       eval echo \"\$\{$#\}\"
-
-The expansion of the quoted portions of this expression will be
-deferred until `eval' runs, while the `$#' will be expanded
-before `eval' is executed.  In versions of bash later than bash-2.0,
-
-       echo ${!#}
-
-does the same thing.
-
-This is not the same thing as ksh93 `nameref' variables, though the syntax
-is similar.  I may add namerefs in a future bash version.
-
-G4) How can I make the bash `time' reserved word print timing output that
-     looks like the output from my system's /usr/bin/time?
-
-The bash command timing code looks for a variable `TIMEFORMAT' and
-uses its value as a format string to decide how to display the
-timing statistics.
-
-The value of TIMEFORMAT is a string with `%' escapes expanded in a
-fashion similar in spirit to printf(3).  The manual page explains
-the meanings of the escape sequences in the format string.
-
-If TIMEFORMAT is not set, bash acts as if the following assignment had
-been performed:
-
-       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
-The POSIX.2 default time format (used by `time -p command') is
-
-       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
-
-The BSD /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-
-The System V /usr/bin/time format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-
-The ksh format can be emulated with:
-
-       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-
-G5) How do I get the current directory into my prompt?
-
-Bash provides a number of backslash-escape sequences which are expanded
-when the prompt string (PS1 or PS2) is displayed.  The full list is in
-the manual page.
-
-The \w expansion gives the full pathname of the current directory, with
-a tilde (`~') substituted for the current value of $HOME.  The \W
-expansion gives the basename of the current directory.  To put the full
-pathname of the current directory into the path without any tilde
-subsitution, use $PWD.  Here are some examples:
-
-       PS1='\w$ '      # current directory with tilde
-       PS1='\W$ '      # basename of current directory
-       PS1='$PWD$ '    # full pathname of current directory
-
-The single quotes are important in the final example to prevent $PWD from
-being expanded when the assignment to PS1 is performed.
-
-G6) How can I rename "*.foo" to "*.bar"?
-
-Use the pattern removal functionality described in D3.  The following `for'
-loop will do the trick:
-
-       for f in *.foo; do
-               mv $f ${f%foo}bar
-       done
-
-G7) How can I translate a filename from uppercase to lowercase?
-
-The script examples/functions/lowercase, originally written by John DuBois,
-will do the trick.  The converse is left as an exercise.
-
-G8) How can I write a filename expansion (globbing) pattern that will match
-    all files in the current directory except "." and ".."?
-
-You must have set the `extglob' shell option using `shopt -s extglob' to use
-this:
-
-       echo .!(.|) *
-
-A solution that works without extended globbing is given in the Unix Shell
-FAQ, posted periodically to comp.unix.shell.
-
-Section H:  Where do I go from here?
-
-H1) How do I report bugs in bash, and where should I look for fixes and
-    advice?
-
-Use the `bashbug' script to report bugs.  It is built and
-installed at the same time as bash.  It provides a standard
-template for reporting a problem and automatically includes
-information about your configuration and build environment. 
-
-`bashbug' sends its reports to bug-bash@gnu.org, which
-is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
-
-Bug fixes, answers to questions, and announcements of new releases
-are all posted to gnu.bash.bug.  Discussions concerning bash features
-and problems also take place there.
-
-To reach the bash maintainers directly, send mail to
-bash-maintainers@gnu.org.
-
-H2) What kind of bash documentation is there?
-
-First, look in the doc directory in the bash distribution.  It should
-contain at least the following files:
-
-bash.1         an extensive, thorough Unix-style manual page
-builtins.1     a manual page covering just bash builtin commands
-bashref.texi   a reference manual in GNU tex`info format
-bashref.info   an info version of the reference manual
-FAQ            this file
-article.ms     text of an article written for The Linux Journal
-readline.3     a man page describing readline
-
-Postscript, HTML, and ASCII files created from the above source are
-available in the documentation distribution.
-
-There is additional documentation available for anonymous FTP from host
-ftp.cwru.edu in the `pub/bash' directory.
-
-Cameron Newham and Bill Rosenblatt have written a book on bash, published
-by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
-Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
-of the third edition, published in March, 2005, is 0-596-00965-8.  Look for
-it in fine bookstores near you.  This edition of the book has been updated
-to cover bash-3.0.
-
-The GNU Bash Reference Manual has been published as a printed book by
-Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006).  It covers
-bash-3.2 and is available from most online bookstores (see
-http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
-will donate $1 to the Free Software Foundation for each copy sold. 
-
-Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'',
-published by O'Reilly.  The first edition, with ISBN number 0-596-00595-4,
-was published in May, 2005.
-
-Chris F. A. Johnson, a frequent contributor to comp.unix.shell and
-gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution
-Approach,'' a new book on shell scripting, concentrating on features of
-the POSIX standard helpful to shell script writers.  The first edition from
-Apress, with ISBN number 1-59059-471-1, was published in May, 2005.
-
-H3) What's coming in future versions?
-
-These are features I hope to include in a future version of bash.
-
-Rocky Bernstein's bash debugger (support is included with bash-3.0)
-associative arrays
-co-processes, but with a new-style syntax that looks like function declaration
-
-H4) What's on the bash `wish list' for future versions?
-
-These are features that may or may not appear in a future version of bash.
-
-breaking some of the shell functionality into embeddable libraries
-a module system like zsh's, using dynamic loading like builtins
-a bash programmer's guide with a chapter on creating loadable builtins
-a better loadable interface to perl with access to the shell builtins and
-       variables (contributions gratefully accepted)
-ksh93-like `nameref' variables
-ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
-Some of the new ksh93 pattern matching operators, like backreferencing
-
-H5) When will the next release appear?
-
-The next version will appear sometime in 2007.  Never make predictions. 
-
-This document is Copyright 1995-2006 by Chester Ramey.
-
-Permission is hereby granted, without written agreement and
-without license or royalty fees, to use, copy, and distribute
-this document for any purpose, provided that the above copyright
-notice appears in all copies of this document and that the
-contents of this document remain unaltered.
diff --git a/doc/faq.version b/doc/faq.version
deleted file mode 100644 (file)
index 3788a2f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-Archive-name: unix-faq/shell/bash
-Posting-Frequency: monthly
-Submitted-By: chet@po.cwru.edu (Chet Ramey)
-Last-Modified: Fri May 11 16:18:55 EDT 2007
-FAQ-Version: 3.36
-Bash-Version: 3.2
-URL: ftp://ftp.cwru.edu/pub/bash/FAQ
-Maintainer: chet@po.cwru.edu (Chet Ramey)
-
diff --git a/doc/index.html b/doc/index.html
deleted file mode 100644 (file)
index d527b29..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\r
-  <title>help.case.edu</title>\r
-  <link rel="stylesheet" href="https://www.case.edu/its/stylesheet/cwru_header.css" type="text/css" media="screen" />\r
-  <link rel="stylesheet" href="https://www.case.edu/its/stylesheet/main_style.css" type="text/css" media="screen" />\r
-  <link rel="stylesheet" href="http://www.case.edu/its/help/help_case.css" type="text/css" media="screen" />\r
-  <link rel="stylesheet" href="https://www.case.edu/launchpad/lib/gadgets.css" type="text/css" />\r
-  <link rel="stylesheet" href="http://www.case.edu/its/ourservices/ourservices.css" type="text/css" />\r
-  <!--<link rel="stylesheet" href="/its/training/training.css" type="text/css" />-->\r
-  <link rel="stylesheet" href="http://www.case.edu/its/training/css/service.css" type="text/css" />\r
-  <!-- Include Print CSS -->\r
-<link rel="stylesheet" href="http://www.case.edu/its/help/print.css" type="text/css" media="print" />\r
-  <script type="text/javascript" src="http://www.case.edu/lib/jquery-prod.js"></script>\r
-  <script type="text/javascript" src="http://www.case.edu/lib/mdetect.js"></script>\r
-  <script type="text/javascript" src="http://www.case.edu/its/help/help.js"></script>\r
-  <script type="text/javascript" src="https://www.case.edu/google/igoogle/case/js/gadget_utils.js"></script>\r
-  <script type="text/javascript" src="http://www.case.edu/its/training/script/training.js"></script>\r
-  <script type="text/javascript" src="http://www.case.edu/its/ourservices/ourservices4.js"></script>\r
-  <script type="text/javascript" src="http://www.case.edu/its/js/fancybox/jquery.fancybox-1.3.4.pack.js"></script>\r
-  <link rel="stylesheet" href="http://www.case.edu/its/js/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />\r
-  <script type="text/javascript" src="https://www.case.edu/google/igoogle/case/js/gcal.js"></script> <!-- for maintnance calendar -->\r
-  \r
-</head>\r
-<body onload="init_help_home();">\r
-  <div id="cwruHeader">\r
-    <div id="cwruHeaderContent">\r
-      <div class="logo">\r
-        <a href="http://www.case.edu/"><img src="https://www.case.edu/its/images/cwru-logo.png" alt="cwru logo" name="logoImg" width="235" height="50" border="0" id="logoImg" /></a>\r
-      </div><!--end of logo-->\r
-      <div id="cwruMainNav">\r
-        <ul>\r
-            <li><a href="http://www.case.edu/">Home</a></li>\r
-            <li><a href="http://www.case.edu/apply.html">Apply</a></li>\r
-            <li><a href="http://giving.case.edu/">Give</a></li>\r
-            <li><a href="http://www.case.edu/visit/">Visit</a></li>\r
-            <li><a href="http://www.case.edu/dir/">Find</a></li>\r
-          </ul>\r
-      </div><!--end of cwruMainNav-->\r
-      <div class="cwruSearch">\r
-         <form action="http://www.google.com/cse" id="cse-search-box" target="_parent" name="searchForm" class="searchForm">\r
-           <input type="hidden" name="cx" value="013802920388319893419:7wtcwv_ppd8" />\r
-           <input type="hidden" name="ie" value="UTF-8" />\r
-           <input type="text" name="q" size="30" value="search cwru..." onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" />\r
-           <!--<input type="submit" name="sa" value="Search" />-->\r
-           <input type="image" name="sa" class="btn" src="https://www.case.edu/webdev/umc_test/images/searchIcon.jpg" />\r
-         </form>\r
-      </div><!--end of cwruSearch-->\r
-      <!--\r
-      <div class="cwruSearch">\r
-          <form action="http://www.google.com/u/cw" method="get" name="searchForm">\r
-            <input name="q" type="text"  value="search cwru..." onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" />\r
-            <input name="sa" class="btn" src="https://www.case.edu/webdev/umc_test/images/searchIcon.jpg" type="image" />\r
-          </form>\r
-      </div>\r
-      -->\r
-    </div><!--end of cwruHeaderContent-->\r
-  </div><!--end of cwruHeader-->\r
-\r
-<!--ITS header begins here-->\r
-  <div id="ITSSubheader">\r
-    <div id="ITSSubheaderHolder">\r
-      <div id="ITSSubheaderHolder2">\r
-        <div id="ITSSubheader_Pic1">\r
-          <a href="http://www.case.edu/its/newtocwru.html"><span class="ITSSubheader_PicLink">new to cwru</span></a>\r
-        </div>\r
-        <div id="ITSSubheader_Pic2">\r
-          <a href="http://www.case.edu/its/ourservices/"><span class="ITSSubheader_PicLink">our services</span></a>\r
-        </div>\r
-        <div id="ITSSubheader_Pic3">\r
-          <a href="http://help.case.edu/"><span class="ITSSubheader_PicLink">i need help</span></a>\r
-        </div>\r
-        <div id="ITSSubheader_Pic4">\r
-          <a href="http://www.case.edu/its/dashboard/servicestatus.html"><span class="ITSSubheader_PicLink">service status</span></a>\r
-        </div>\r
-      </div> <!--end of ITSSubheaderHolder2-->\r
-    </div><!--end of ITSSubheaderHolder-->\r
-  </div><!--end of ITSSubheader-->\r
-<!--end of ITS header--> \r
-  <div id="ITSSubPrimaryTitle">\r
-    <div id="ITSSubHeaderHolder">\r
-      <div id="ITSSubPrimaryHeader_title">\r
-        <span>help.case.edu</span>\r
-      </div>\r
-    </div>\r
-  </div>\r
-  <div id="contentWrapper">\r
-    <div id="contentContainer">\r
-      <div class="contentMain">\r
-        <div class="contentAreaLeft">\r
-       <div id="helpcontact"><img src="http://www.case.edu/its/help/images/assistance.jpg" alt="help_by_phone" border="0"/></div>\r
-      <div id="helpdetails"><div id="hours"><a href="javascript:toggle_hours();">> See Hours / Locations </a></div><!--<div id="locations">MAP</div>-->\r
-      </div>\r
-      <div id="fullhours">\r
-      <div class="clearit"></div>\r
-<h2>In-Person Assistance</h2>\r
-<h3><a class="mappop" href="http://www.case.edu/google/gmaps/casegmap.html?bnum=3D57">Bellflower Care Center<img src="http://www.case.edu/its/help/images/mapicon.png" alt="" /></a></h3>\r
-<p>11424 Bellflower Rd.<br/>Monday-Friday: 9am-10pm<br/>Saturday: 10am-4pm (August 15-May 15 only)</p>\r
-<h3><a class="mappop" href="http://www.case.edu/google/gmaps/casegmap.html?bnum=4B01">Sears Care Center<img src="http://www.case.edu/its/help/images/mapicon.png" alt="" /></a></h3>\r
-<p>Sears (Quad)<br/>Room 340 (Hallway between Sears & Nord)<br/>Monday-Friday: 9am - 5pm</p>\r
-\r
-      </div>\r
-      <div class="clearit"></div>\r
-        <div class="columnHeader">NAVIGATE</div>\r
-        <div class="navFeature"><a href="http://www.case.edu/its/help/service_request.html" target="_blank">Request Service</a></div>\r
-        <div class="navFeature"><a class="mappop" href="http://cdi-sd.com/">Live Chat</a></div>\r
-        <!--<div class="navFeature"><a class="mappop" href="feedback.html">Provide Feedback</a></div>-->\r
-        <div class="navFeature"><a href="index.html">help.case.edu Home</a></div>\r
-        <div class="navFeature"><a href="http://www.case.edu/its/">ITS Home</a></div>\r
-       <div class="navSearch">\r
-       \r
-       \r
-      <!-- <div id="cse-search-form" style="width: 100%;"></div>-->\r
-<div id="cse-search-form" style="width: 100%;">Loading</div>\r
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>\r
-<script type="text/javascript"> \r
-  google.load('search', '1', {language : 'en'});\r
-  google.setOnLoadCallback(function() {\r
-    var customSearchControl = new google.search.CustomSearchControl(\r
-      '007766661394035836293:pyl3v0ba-am');\r
-\r
-    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);\r
-    var options = new google.search.DrawOptions();\r
-    options.enableSearchboxOnly("http://www.case.edu/its/help/search.html");\r
-    customSearchControl.draw('cse-search-form', options);\r
-  }, true);\r
-</script>\r
-<link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />\r
-<style type="text/css">\r
-  input.gsc-input {\r
-    border-color: #BCCDF0;\r
-       background-color: #CECECE;\r
-       /*width:160px;*/\r
-       color:#000;\r
-       \r
-  }\r
-  gsc-search-button{\r
-         font-size: 16px;\r
-  }\r
-  input.gsc-search-button {\r
-    text-indent: -9999px;\r
-border: none;\r
-    /*background-color: #CECECE;*/\r
-       width:31px;\r
-       /*height:22px;*/\r
-       background-image: url('https://www.case.edu/webdev/umc_test/images/searchIcon.jpg');\r
-       background-repeat:no-repeat; \r
-       cursor: pointer;\r
-       \r
-  }\r
-  .cse .gsc-branding,\r
-.gsc-branding {\r
-  display: none;\r
-}\r
-div.gsc-clear-button{\r
-       width:0px;\r
-       height:0px;\r
-       display: none;\r
-}\r
-.navSearch input {\r
-       position:relative;\r
-       font-size:1em;\r
-}\r
-.cse input.gsc-search-button, input.gsc-search-button {\r
-        min-width: 30px;\r
-}\r
-\r
-  .navSearch {\r
-       width:210px;  \r
-  }\r
-</style>\r
-<!-- <input type="hidden" name="cx" value="007766661394035836293:pyl3v0ba-am" />-->\r
-\r
-       \r
-       \r
-   \r
-\r
-       \r
-       \r
-       </div>\r
-<div class="clearit"></div>\r
-<div class="columnHeader">TRAINING</div>\r
-          <div id="trainingmenu">\r
-<ul>\r
-<li>\r
-<a href="http://www.case.edu/its/training/adobeconnectmain.html">\r
-<span>Adobe Connect</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/adobepresentermain.html">\r
-<span>Adobe Presenter</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/blackboardmain.html">\r
-<span>Blackboard</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/coursesmartmain.html">\r
-<span>CourseSmart</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/cwruemailmain.html">\r
-<span>CWRU Email</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/cwrunetworkidmain.html">\r
-<span>CWRU Network ID and Password</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/datawarehousemain.html">\r
-<span>Data Warehouse/Business Objects</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/googleappsmain.html">\r
-<span>Google Apps</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/hcmmain.html">\r
-<span>HCM</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/newemployeemain.html">\r
-<span>ITS New Employee Orientation</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/lyndamain.html">\r
-<span>Lynda.com</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/mediavisioncoursewaremain.html">\r
-<span>Media Vision Courseware</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/peoplesoftmain.html">\r
-<span>PeopleSoft Financials</span>\r
-</a>\r
-</li>\r
-<li>\r
-<a href="http://www.case.edu/its/training/sismain.html">\r
-<span>SIS</span>\r
-</a>\r
-</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-</div>\r
-          <div class="columnHeader">OTHER RESOURCES</div>\r
-          <div id="lynda" class="other_res"><a href="https://shib.lynda.com/Shibboleth.sso/InCommon?providerId=urn:mace:incommon:case.edu&target=https://shib.lynda.com/InCommon"><img src="http://www.case.edu/its/help/images/lyndaLogoSquare.gif" alt="Lynda.com" width="70" height="70" border="0"/></a></div>\r
-          <div id="Blackboard" class="other_res"><a href="https://blackboard.case.edu/webapps/portal/frameset.jsp"><img src="http://www.case.edu/its/help/images/blackboard.png" alt="Blackboard" width="75" height="75" border="0"/></a></div>\r
-          <div id="coursesmart" class="other_res"><a href="http://www.case.edu/coursesmart/"><img src="http://www.case.edu/its/help/images/coursesmart.png" alt="coursesmart.com" width="75" height="75" border="0"/></a></div>\r
-          <div id="mdotcase" class="other_res"><a href="http://m.case.edu/"><img src="http://www.case.edu/its/help/images/mdotcase.jpg" width="75" height="75" alt="mdotcase" /></a></div>\r
-\r
-          <div><a href="http://www.case.edu/its/help/kba/"><img src="http://www.case.edu/its/images/1x1blank.gif" style="width: 1px; height: 1px; border: 0;"></a></div> <!--this is an invisible link so Google picks up the knowledgebase articles-->\r
-\r
-        </div><!--end of contentAreaLeft-->\r
-\r
-        <!--START HEAD BANNER-->\r
-        <div id="help_banner">\r
-          <!--<img src="images/headPlaceholder.jpg" alt="header" border="0"/>-->\r
-<!--<span style="font-size: 200%; font-weight: bold; background: #FF0000; color: #FFFFFF;">This is a test.  This is only a test.  This is a test.  This is only a test.  This is a test.  This is only a test.</span>-->\r
-        </div>\r
-        <div class="SubpageContentContainer">\r
-          <div id="homeMainContainer">\r
-            <div class="mode_switch" id="mode_switch_div"></div>\r
-            <div id="coreservices_catalog"></div>\r
-            <div id="coreservices_catalog_az"></div>\r
-          </div><!--end of homeMainContainer-->\r
-\r
-          <div id="rightSidebar">\r
-          <div class="columnHeaderAlt"><a class="mappop" href="http://www.case.edu/its/help/feedback.html"><img src="http://www.case.edu/its/help/images/brightfeedback2.jpg" alt="help_by_phone" border="0"/></a></div>\r
-            <div class="columnHeader">HOT TOPICS</div>\r
-              <div id="training_documents"><center><img src="https://www.case.edu/google/igoogle/case/img/loading.gif" alt="loading..." /></center></div>\r
-            <div class="columnHeader">CURRENT ISSUES</div>\r
-            <div id="tickets" class="PortletText2"><center><img src="https://www.case.edu/google/igoogle/case/img/loading.gif" alt="" /></center></div>\r
-            <div class="quickLinksMore"><a href="javascript:toggle_its_maint_gcal();" alt="Scheduled Maintenance">> See Scheduled Maintenance</a></div>\r
-            <div id="its_maint_gcal" class="PortletText2"><center><img src="https://www.case.edu/google/igoogle/case/img/loading.gif" alt="loading..." /></center></div><div class="clearit"></div>\r
-                   <div class="columnHeader">QUICK LINKS</div>\r
-    <div class="quickLinks">\r
-      <div class="quickLinksItem"><a href="http://its-services.case.edu/my-case-identity/activate/">Activate CWRU Network ID</a></div>\r
-      <div class="quickLinksItem"><a href="https://its-services.case.edu/my-case-identity/password/reset/">Reset Password</a></div>\r
-      <div class="quickLinksItem"><a href="https://its-services.case.edu/my-case-identity/google-apps/pwdReset/">Google Apps Password Reset</a></div>\r
-      <div class="quickLinksItem"><a href="https://www.case.edu/its/devreg/">Student Device Self-Registration</a></div>\r
-      <div class="quickLinksItem"><a href="https://softwarecenter.case.edu/">Software Center</a></div>\r
-      <div class="quickLinksItem"><a href="https://its-services.case.edu/my-case-identity/affiliates/request/">Obtain Affiliate ID</a></div>\r
-      <!--<div class="quickLinksItem"><a href="http://www.google.com/safebrowsing/report_phish/">Report Phishing</a></div>-->\r
-      <div class="quickLinksItem"><a href="https://www.case.edu/its/infosecurity.html">Information Security</a></div>\r
-      <div class="quickLinksItem"><a href="https://www.case.edu/its/researchcomputing/">Research Computing</a></div>\r
-      <div class="quickLinksItem"><a href="https://www.case.edu/its/e-store.html">eStore</a></div>\r
-      <div class="quickLinksItem"><a href="http://www.case.edu/collabtech/">CollabTech 2011</a></div>\r
-      <div class="quickLinksMore"><a href="https://its-services.case.edu/tools/">More links</a></div>\r
-    </div>\r
-    \r
-\r
-            \r
-            \r
-            <!--<div id="training_hot_topics">\r
-            </div>-->\r
-          </div>\r
-        </div><!--end of SubpageContentContainer-->\r
-      </div><!--end of contentMain-->\r
-    </div><!--end of contentContainer-->\r
-  </div><!--end of contentWrapper-->\r
-<style type="text/css">\r
-  .goog-te-gadget {\r
-    font-family: arial;\r
-    font-size: 11px;\r
-    color: #ffffff;\r
-    white-space: nowrap;\r
-  }\r
-\r
-  .goog-logo-link, .goog-logo-link:link, .goog-logo-link:visited, .goog-logo-link:hover, .goog-logo-link:active {\r
-    font-size: 12px;\r
-    font-weight: bold;\r
-    color: #ffffff;\r
-    text-decoration: none;\r
-  }\r
-</style>\r
-<div class="footerArea">\r
-  <div class="footercontentMain">\r
-    <div class="footerColumn">\r
-      <div>&copy; 2011 Case Western Reserve University</div>\r
-      <div>Cleveland, OH 44106</div>\r
-      <div>216.368.2000</div>\r
-      <div>&nbsp;</div>\r
-      <div>Information Technology Services<br />(<a href="http://www.case.edu/legal.html">legal notice</a>)</div>\r
-      <div>&nbsp;</div>\r
-      <div><a href="mailto:its-web@case.edu">Contact website owner</a></div>\r
-      <div>&nbsp;</div>\r
-      <div><a href="mailto:help@case.edu">Contact our service desk</a></div>\r
-    </div>\r
-    <div class="footerColumn">\r
-      <div class="footerTitle">ITS Information</div>\r
-      <div><a href="http://www.case.edu/its/newtocwru.html">New to CWRU</a></div>\r
-      <div><a href="http://www.case.edu/its/ourservices/">Our Services</a></div>\r
-      <div><a href="http://help.case.edu/">I Need Help</a></div>\r
-      <div><a href="http://www.case.edu/its/dashboard/servicestatus.html">Service Status</a></div>\r
-      <div>&nbsp;</div>\r
-      <div class="footerTitle">ITS Resources</div>\r
-      <div><a href="http://www.case.edu/its/infosecurity.html">Information Security</a></div>\r
-      <div><a href="http://softwarecenter.case.edu/">Software Center</a></div>\r
-      <div><a href="http://www.case.edu/its/e-store.html">eStore</a></div>\r
-    </div>\r
-    <div class="footerColumn">\r
-      <div class="footerTitle">CWRU ITS Social Networks</div>\r
-      <div class="footerSocialItem"><img src="https://www.case.edu/its/images/icon-facebook.png" alt="" /><a href="http://www.facebook.com/pages/CWRU-Information-Technology-Services/236396152713">Facebook</a></div>\r
-      <div class="footerSocialItem"><img src="https://www.case.edu/its/images/icon-twitter.png" alt="" /><a href="http://twitter.com/CWRUITS/">Twitter</a></div>\r
-      <div class="footerSocialItem"><img src="https://www.case.edu/its/images/icon-googleplus.png" alt="" /><a href="https://plus.google.com/109086288918995584091?prsrc=3">Google+</a></div>\r
-      <div class="footerSocialItem"><img src="https://www.case.edu/its/images/icon-youtube.png" alt="" /><a href="http://www.youtube.com/user/case/">YouTube</a></div>\r
-      <div class="footerSocialItem"><img src="https://www.case.edu/its/images/icon-itunes.png" alt="" /><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewiTunesUInstitution?id=386064736">iTunes</a></div>\r
-      <div class="footerSocialItem"><img src="https://www.case.edu/its/images/icon-rss.png" alt="" /><a href="https://sites.google.com/a/case.edu/its/news">RSS Feed</a></div>\r
-    </div>\r
-\r
-    <div class="footerColumn">\r
-\r
-<!--google translate starts here-->\r
-  <div id="google_translate_element">\r
-    <div class="footerTitle">Translate this page</div>\r
-  </div>\r
-  <script type="text/javascript">\r
-    function googleTranslateElementInit() {\r
-      new google.translate.TranslateElement({\r
-        pageLanguage: 'en'\r
-      }, 'google_translate_element');\r
-    }\r
-  </script>\r
-  <script type="text/javascript" src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>\r
-<!--end google translate-->\r
-\r
-      <hr style="width: 50%; color: #333333; margin: 10px 0 10px 0;" />\r
-\r
-<!-- AddThis Button BEGIN -->\r
-  <div class="addthis_toolbox addthis_default_style">\r
-    <a href="http://www.addthis.com/bookmark.php?v=250&amp;username=xa-4ca605923fb86469" class="addthis_button_compact" style="color: #ffffff;">Share</a>\r
-    <span class="addthis_separator" style="color: #ffffff;">|</span>\r
-    <a class="addthis_button_preferred_1"></a>\r
-    <a class="addthis_button_preferred_2"></a>\r
-    <a class="addthis_button_preferred_3"></a>\r
-    <!--<a class="addthis_button_preferred_4"></a>-->\r
-    <a class="addthis_button_preferred_5"></a>\r
-  </div>\r
-  <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4ca605923fb86469"></script>\r
-<!-- AddThis Button END -->\r
-\r
-      <hr style="width: 50%; color: #333333; margin: 10px 0 10px 0;" />\r
-\r
-<!-- Like Button BEGIN -->\r
-<!-- <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><fb:like href="http://www.facebook.com/pages/CWRU-Information-Technology-Services/236396152713" layout="button_count" width="100"></fb:like> -->\r
-<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.facebook.com%2Fpages%2FCWRU-Information-Technology-Services%2F236396152713&amp;layout=button_count&amp;show_faces=true&amp;width=100&amp;action=like&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;"></iframe>\r
-<!-- Like Button END -->\r
-\r
-    </div>\r
-  </div>\r
-</div>\r
-   
-
-<!-- Google Analytics tracking code inserted automatically by the server -->
-<script type="text/javascript">
-   var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-   document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-   var pageTracker = _gat._getTracker("UA-620392-2");
-   pageTracker._initData();
-   pageTracker._trackPageview("/its/help/index.html")
-</script>
-<!-- End Google Analytics Code -->
-
-</body>\r</html>
\ No newline at end of file
diff --git a/doc/mkfaqvers b/doc/mkfaqvers
deleted file mode 100755 (executable)
index 84bd0d0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-DATE=`date`
-VERS=`sed -n 's:^.*Bash FAQ, version \([^,]*\),.*$:\1:p' < FAQ`
-BVERS=` sed -n 's:^.*Bash version \(.*\)\.$:\1:p' < FAQ`
-
-sed -e "s!@VERSION@!$VERS!" -e "s!@UPDATED@!$DATE!" -e "s!@BASH_VERSION@!$BVERS!" < $1
-echo ""
diff --git a/doc/mkinstall b/doc/mkinstall
deleted file mode 100755 (executable)
index f6b6ccf..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#! /bin/sh
-#
-# mkinstall - make the INSTALL file from the `Installing Bash' node of the
-#            texinfo manual
-#
-
-NODE="Installing Bash"
-SUBNODE="Basic Installation"
-TEXI=bashref.texi
-TMPINFO=temp.info
-TMPOUT=INSTALL.tmp
-
-OUT=${1:-INSTALL}
-
-trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15
-trap 'rm -f $TMPOUT $TMPINFO' 0
-
-# create an info file without paragraph indentation
-makeinfo --no-split --no-number-sections -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI
-
-# write out the text from the `Installing Bash' node to INSTALL.tmp
-info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT
-
-# remove the info traversal information and the initial menu, and squeeze
-# out multiple consecutive blank lines like `cat -s'
-awk 'BEGIN { printline = 0; newlines = 0; }
-
-/^File: '$TMPINFO'/    { next; }
-
-/^'"$SUBNODE"'/        { printline = 1; }
-
-/^$/                   { if (printline) newlines = 1; next; }
-
-/$/                    { if (printline) {
-                               if (newlines) {
-                                       printf "\n";
-                                       newlines = 0;
-                               }
-                               print $0;
-                         }
-                       }' < $TMPOUT > $OUT
-
-exit 0
diff --git a/doc/mkinstall-tmp b/doc/mkinstall-tmp
deleted file mode 100755 (executable)
index 37d7863..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#! /bin/sh
-#
-# mkinstall - make the INSTALL file from the `Installing Bash' node of the
-#            texinfo manual
-#
-
-NODE="Installing Bash"
-SUBNODE="Basic Installation"
-TEXI=bashref.texi
-TMPINFO=temp.info
-TMPOUT=INSTALL.tmp
-
-OUT=${1:-INSTALL}
-
-trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15
-#trap 'rm -f $TMPOUT $TMPINFO' 0
-
-# create an info file without paragraph indentation
-makeinfo --no-split -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI
-
-# write out the text from the `Installing Bash' node to INSTALL.tmp
-info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT
-
-exit 0
-# remove the info traversal information and the initial menu, and squeeze
-# out multiple consecutive blank lines like `cat -s'
-awk 'BEGIN { printline = 0; newlines = 0; }
-
-/^File: '$TMPINFO'/    { next; }
-
-/^'"$SUBNODE"'/        { printline = 1; }
-
-/^$/                   { if (printline) newlines = 1; next; }
-
-/$/                    { if (printline) {
-                               if (newlines) {
-                                       printf "\n";
-                                       newlines = 0;
-                               }
-                               print $0;
-                         }
-                       }' < $TMPOUT > $OUT
-
-exit 0
diff --git a/doc/mkposix b/doc/mkposix
deleted file mode 100755 (executable)
index 7b6a58f..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#! /bin/sh
-#
-# mkposix - make the POSIX.NOTES file from the `Bash POSIX Mode' node
-#          of the texinfo manual
-#
-
-NODE="Bash POSIX Mode"
-TEXI=bashref.texi
-TMPINFO=temp.info
-TMPOUT=POSIX.tmp
-
-OUT=${1:-POSIX}
-
-trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15
-trap 'rm -f $TMPOUT $TMPINFO' 0
-
-# create an info file without paragraph indentation
-makeinfo --no-split -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI
-
-# write out the text from the `Bash POSIX Mode' node to $TMPOUT
-info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT
-
-sed 1,2d < $TMPOUT > $OUT
-
-exit 0
diff --git a/doc/mkrbash b/doc/mkrbash
deleted file mode 100755 (executable)
index 4304e63..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#! /bin/sh
-#
-# mkrbash - make the RBASH file from the `The Restricted Shell' node
-#          of the texinfo manual
-#
-
-NODE="The Restricted Shell"
-TEXI=bashref.texi
-TMPINFO=temp.info
-TMPOUT=RBASH.tmp
-
-OUT=${1:-RBASH}
-
-trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15
-trap 'rm -f $TMPOUT $TMPINFO' 0
-
-# create an info file without paragraph indentation
-makeinfo --no-split -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI
-
-# write out the text from the `The Restricted Shell' node to $TMPOUT
-info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT
-
-sed 1,2d < $TMPOUT > $OUT
-
-exit 0
diff --git a/doc/newbash.texi b/doc/newbash.texi
deleted file mode 100644 (file)
index 4757c8d..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-1\input texinfo @c -*- texinfo -*-
-@c %**start of header
-@setfilename bash.info
-@settitle GNU Bourne Again SHell
-@setchapternewpage odd
-@c %**end of header
-
-@c DON'T RUN FINALOUT YET UNTIL FINAL STAGES
-@ignore
-@iftex
-@finalout
-@end iftex
-@end ignore
-
-@ifinfo
-This file documents the GNU Bourne Again SHell.
-
-Copyright @copyright{} 1992 Free Software Foundation, Inc.
-@end ifinfo
-
-@titlepage
-@sp 10
-@center @titlefont{GNU Bash, the Bourne Again SHell}
-@center Unproofed Draft
-@sp 10
-@center Brian Fox, Chet Ramey
-@center @today{}
-
-@page
-This document describes GNU Bash, a Bourne shell compatible
-command language interpreter which executes commands read from the
-standard input or from a file.
-
-Published by the Free Software Foundation @*
-675 Massachusetts Avenue, @*
-Cambridge, MA 02139 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1992 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-This document describes GNU Bash, a Bourne shell compatible
-command language interpreter which executes commands read from the
-standard input or from a file.
-
-Published by the Free Software Foundation @*
-675 Massachusetts Avenue, @*
-Cambridge, MA 02139 USA
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end ifinfo
-
-I   Tutorial
-    i   Describe what Bash does.
-       1) What a shell is for.
-       2) How Bash is different from other shells.
-
-    ii  Superficial description of how the shell works.
-       1) Parts of a command.
-          a) Command words.
-          b) Command separators.
-          c) Redirection words.
-
-    iii Hands on Experience.
-       1) Starting a shell.
-          a) startup files.
-          b) switching from Csh.
-             Using alias.conv
-
-       2) The Environment.
-          a) Description of "environment".
-          b) Some important environment variables.
-          c) Other common environment variables.
-
-       3) Issuing command lines.
-          a) Example
-II  Reference
-    i   Shell Syntax
-       1) Parts of "speech".
-          a) Command Words.
-          b) Command Seprators.
-          c) Redirection Words.
-
-       2) Quoting Syntax.
-       3) Common Idioms.
-
-    ii  Guide by feature.
-       1) Builtins.
-       2) Variables.
-    ii  Guide by task.
-
-III Indices
-    i 
diff --git a/doc/old-faq.html b/doc/old-faq.html
deleted file mode 100644 (file)
index a069ca2..0000000
+++ /dev/null
@@ -1,778 +0,0 @@
-From J.J.Troup@dcsun7.comp.brad.ac.uk Tue Jul  9 11:54:33 1996
-Flags: 10
-Return-Path: J.J.Troup@dcsun7.comp.brad.ac.uk
-Received: from babar.INS.CWRU.Edu (root@babar.INS.CWRU.Edu [129.22.8.213]) by odin.INS.CWRU.Edu with ESMTP (8.6.12+cwru/CWRU-2.2-ins)
-       id LAA05781; Tue, 9 Jul 1996 11:54:32 -0400 (from J.J.Troup@dcsun7.comp.brad.ac.uk for <chet@odin.INS.CWRU.Edu>)
-Received: from dcsun7.comp.brad.ac.uk (dcsun7.comp.brad.ac.uk [143.53.28.202]) by babar.INS.CWRU.Edu with ESMTP (8.6.13+cwru/CWRU-2.4)
-       id LAA12069; Tue, 9 Jul 1996 11:54:03 -0400 (from J.J.Troup@dcsun7.comp.brad.ac.uk for <chet@po.CWRU.Edu>)
-Received: from dcsun4.comp.brad.ac.uk (jjtroup@dcsun4.comp.brad.ac.uk [143.53.28.201]) by dcsun7.comp.brad.ac.uk (8.7.5/8.7.3) with ESMTP id QAA29654 for <chet@po.CWRU.Edu>; Tue, 9 Jul 1996 16:54:06 +0100 (BST)
-Received: (from jjtroup@localhost) by dcsun4.comp.brad.ac.uk (8.7.5/8.7.3) id QAA22933; Tue, 9 Jul 1996 16:53:52 +0100 (BST)
-Date: Tue, 9 Jul 1996 16:53:52 +0100 (BST)
-Message-Id: <199607091553.QAA22933@dcsun4.comp.brad.ac.uk>
-From: JJ TROUP <J.J.Troup@comp.brad.ac.uk>
-To: chet@po.CWRU.Edu
-Subject: Re: Bash FAQ in HTML?
-In-Reply-To: <9607091537.AA05105.SM@odin.INS.CWRU.Edu>
-References: <199607091532.QAA22766@dcsun4.comp.brad.ac.uk>
-       <9607091537.AA05105.SM@odin.INS.CWRU.Edu>
-
-Chet Ramey writes:
-
-> >   Is there a HTML version of the Bash FAQ? If not do you want one?  I
-> > have converted it to HTML and if there isn't already a HTML-ised FAQ,
-> > I wondered if you wanted one?
-> 
-> Sure, send it along.  Thanks.
-
-  Here it is.  It is (with the exception of the <CENTER></CENTER> tags
-at the beginning) clean HTML 2.0.  Although there were a couple of
-places which really warranted tables, I opted for <PRE> instead as
-there is still no text based browser that I know of which fully
-supports tables.
-  If you like it, I would be happy to update as and when the FAQ
-is. If there are bits you don't like please do tell me.  If you don't
-like it at all, that's cool too... :)
-
-
-Regards
-
-Cajun
-
--------------------------------------------------------------
-              http://www.brad.ac.uk/~jjtroup/
--------------------------------------------------------------
-
---++Begin Include++--
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>The Bash FAQ</TITLE>
-<LINK REV=MADE HREF="mailto:chet@po.cwru.edu">
-</HEAD>
-<BODY> 
-<CENTER><H1>Bash FAQ</H1></CENTER>
-
-<P>
-This is the Bash FAQ, version 1.5, for Bash version 1.14.6.
-<P>
-This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command interpreter with advanced features for both interactive use and shell programming.
-<P>
-Another good source of basic information about shells is the collection of FAQ articles periodically posted to comp.unix.shell.
-<P>
-Questions and comments concerning this document should be sent to <A HREF="mailto:chet@po.cwru.edu">chet@po.cwru.edu</A>.
-<P>
-<H2>Contents:</H2>
-<P>
-<OL>
-<LI><A HREF="bash-faq.html#1">What is it?</A><BR>
-<LI><A HREF="bash-faq.html#2">What's the latest version?</A><BR>
-<LI><A HREF="bash-faq.html#3">Where can I get it?</A><BR>
-<LI><A HREF="bash-faq.html#4">What's the `Posix 1003.2 standard'?</A><BR>
-<LI><A HREF="bash-faq.html#5">On what machines will bash run?</A><BR>
-<LI><A HREF="bash-faq.html#6">How does bash differ from sh, the Bourne shell?</A><BR>
-<LI><A HREF="bash-faq.html#7">How does bash differ from the Korn shell, version ksh88?</A><BR>
-<LI><A HREF="bash-faq.html#8">What is the bash `posix mode'?</A><BR>
-<LI><A HREF="bash-faq.html#9">How can I build bash with gcc?</A><BR>
-<LI><A HREF="bash-faq.html#10">Why does bash run a different version of `command' than `which command' says it will?</A><BR>
-<LI><A HREF="bash-faq.html#11">How can I make my csh aliases work when I convert to bash?</A><BR>
-<LI><A HREF="bash-faq.html#12">Now that I've converted from ksh to bash, are there equivalents to ksh features like autoloaded functions and the `whence' command?</A><BR>
-<LI><A HREF="bash-faq.html#13">Why is the bash builtin `test' slightly different from /bin/test?</A><BR>
-<LI><A HREF="bash-faq.html#14">Why does bash sometimes say `Broken pipe'?</A><BR>
-<LI><A HREF="bash-faq.html#15">How can I get bash to read and display eight-bit characters?</A><BR>
-<LI><A HREF="bash-faq.html#16">Why can't I use command line editing in my `cmdtool'?</A><BR>
-<LI><A HREF="bash-faq.html#17">How do I write a function `x' to replace builtin command `x', but still invoke the command from within the function?</A><BR>
-<LI><A HREF="bash-faq.html#18">When I have terminal escape sequences in my prompt, why does bash wrap lines at the wrong column?</A><BR>
-<LI><A HREF="bash-faq.html#19">I built bash on Solaris 2.  Why do globbing expansions and filename completion chop off the first few characters of each filename?</A><BR>
-<LI><A HREF="bash-faq.html#20">Why doesn't bash treat brace expansions exactly like csh?</A><BR>
-<LI><A HREF="bash-faq.html#21">Why does bash dump core after I interrupt username completion or `~user' tilde expansion on a machine running NIS?</A><BR>
-<LI><A HREF="bash-faq.html#22">I'm running SVR4.2.  Why is the line erased every time I type `@'?</A><BR>
-<LI><A HREF="bash-faq.html#23">How can I find the value of a shell variable whose name is the value of another shell variable?</A><BR>
-<LI><A HREF="bash-faq.html#24">If I pipe the output of a command into `read variable', why doesn't the output show up in $variable when the read command finishes?</A><BR>
-<LI><A HREF="bash-faq.html#25">I just changed my shell to bash, and now I can't FTP into my machine. Why not?</A><BR>
-<LI><A HREF="bash-faq.html#26">I have a bunch of shell scripts that use backslash-escaped characters in arguments to `echo'.  Bash doesn't interpret these characters.  Why not, and how can I make it understand them?</A><BR>
-<LI><A HREF="bash-faq.html#27">Why doesn't bash have csh variable modifiers?</A><BR>
-<LI><A HREF="bash-faq.html#28">Why does bash report syntax errors when my C News scripts use a redirection before a subshell command?</A><BR>
-<LI><A HREF="bash-faq.html#29">How can I pipe standard output and standard error from one command to another, like csh does with `|&'?</A><BR>
-<LI><A HREF="bash-faq.html#30">How do I report bugs in bash, and where should I look for fixes and advice?</A><BR>
-<LI><A HREF="bash-faq.html#31">What kind of bash documentation is there?</A><BR>
-<LI><A HREF="bash-faq.html#32">What's coming in future versions?</A><BR>
-<LI><A HREF="bash-faq.html#33">What's on the bash `wish list'?</A><BR>
-<LI><A HREF="bash-faq.html#34">When will the next release appear?</A><BR>
-</OL>
-
-<H3><A NAME="1">1)  What is it?</A></H3>
-
-<P>
-Bash is a Unix command interpreter (shell).  It is an implementation of the Posix 1003.2 shell standard, and resembles the Korn and System V shells.
-<P>
-Bash contains a number of enhancements over those shells, both for interactive use and shell programming.  Features geared toward interactive use include command line editing, command history, job control, aliases, and prompt expansion.  Programming features include additional variable expansions, shell arithmetic, and a number of variables and options to control shell behavior.
-<P>
-Bash was originally written by Brian Fox of the Free Software Foundation.  The current developer and maintainer is Chet Ramey of Case Western Reserve University.
-
-<H3><A NAME="2">2)  What's the latest version?</A></H3>
-
-<P>
-The latest version is 1.14.6, first made available on December 19, 1995.
-
-<H3><A NAME="3">3)  Where can I get it?</A></H3>
-
-<P>
-Bash is the GNU project's shell, and so is available from the master GNU archive site, prep.ai.mit.edu, and its mirrors.  The latest version is also available for FTP from slc2.ins.cwru.edu, the maintainer's machine.  The following URLs tell how to get version 1.14.6:
-<P>
-
-<UL>
-<LI><A HREF="ftp://prep.ai.mit.edu/pub/gnu/bash-1.14.6.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/bash-1.14.6.tar.gz</A>
-<LI><A HREF="ftp://slc2.ins.cwru.edu/pub/dist/bash-1.14.6.tar.gz">ftp://slc2.ins.cwru.edu/pub/dist/bash-1.14.6.tar.gz</A>
-</UL>
-
-<H3><A NAME="4">4)  What's the `Posix 1003.2 standard'?</A></H3>
-
-<P>
-POSIX is a name originally coined by Richard Stallman for a family of open system standards based on UNIX.  There are a number of aspects of UNIX under consideration for standardization, from the basic system services at the system call and C library level to applications and tools to system administration and management.  Each area of standardization is assigned to a working group in the 1003 series. 
-<P>
-The POSIX Shell and Utilities standard has been developed by IEEE Working Group 1003.2 (POSIX.2).  It concentrates on the command interpreter interface and utility programs commonly executed from the command line or by other programs.  An initial version of the standard has been approved and published by the IEEE, and work is currently underway to update it. 
-<P>
-Bash is concerned with the aspects of the shell's behavior defined by POSIX.2.  The shell command language has of course been standardized, including the basic flow control and program execution constructs, I/O redirection and pipelining, argument handling, variable expansion, and quoting. 
-<P>
-The `special' builtins, which must be implemented as part of the shell to provide the desired functionality, are specified as being part of the shell; examples of these are `eval' and `export'.  Other utilities appear in the sections of POSIX.2 not devoted to the shell which are commonly (and in some cases must be) implemented as builtin commands, such as `read' and `test'.  POSIX.2 also specifies aspects of the shell's interactive behavior as part of the UPE, including job control and command line editing.  Only vi-style line editing commands have been standardized; emacs editing commands were left out due to objections.
-
-<H3><A NAME="5">5)  On what machines will bash run?</A></H3>
-
-<P>
-Bash has been ported to nearly every version of UNIX.  All you should have to do to build it on a machine for which a port exists is to type `make'.  The build process will attempt to discover the version of UNIX you have and tailor itself accordingly, using a combination of saved definitions in the file `machines.h' and a file `sysdefs.h' created by inspecting the environment for various things. 
-<P>
-More information appears in the file `INSTALL' in the distribution.
-
-<H3><A NAME="6">6)  How does bash differ from sh, the Bourne shell?</A></H3>
-
-<P>
-This is a non-comprehensive list of features that differentiate bash
-from the SVR4 shell.  The bash manual page explains these completely.
-<P>
-
-<H4>Things bash has that sh does not:</H4>
-
-<UL>
-<LI>long invocation options
-<LI>`!' reserved word to invert pipeline return value
-<LI>the select compound command
-<LI>the $(...) form of command substitution
-<LI>the ${#param} parameter value length operator
-<LI>expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
-<LI>variables: BASH, BASH_VERSION, UID, EUID, REPLY, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS, LINENO, HISTCMD, HOSTTYPE, OSTYPE, ENV, MAIL_WARNING, PS3, PS4, HISTSIZE, HISTFILE, HISTFILESIZE, PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC, HISTCONTROL, command_oriented_history, allow_null_glob_expansion, glob_dot_filenames, histchars, nolinks, auto_resume, HOSTFILE, noclobber, TMOUT, no_exit_on_failed_exec, cdable_vars, notify, OPTERR
-<LI>redirections: &lt;&gt;, &amp;&gt;, &gt;|
-<LI>prompt string special char translation and variable expansion
-<LI>auto-export of modified values of variables in initial environment
-<LI>command search finds functions before builtins
-<LI>bash return builtin will exit a file sourced with `.'
-<LI>builtins: cd -, exec -, echo -e/-E, export -n/-f/-p/name=value, pwd -P, read -r, readonly -f, trap -l, ulimit -n/-p/-u, set -b/-m/-o option/-p/-l/-d/-C/-H/-P, unset -f/-v, umask -S, type -all/-path/-type, suspend -f, kill -s
-<LI>bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
-<LI>bash restricted shell mode is more extensive
-<LI>bash allows functions and variables with the same name
-<LI>brace expansion
-<LI>tilde expansion
-<LI>arithmetic expansion and `let' builtin
-<LI>process substitution
-<LI>aliases and alias/unalias builtins
-<LI>local variables in functions and `local' builtin
-<LI>readline and command-line editing
-<LI>history and history/fc builtins
-<LI>csh-like history expansion
-<LI>other new bash builtins: bind, command, builtin, declare/typeset, dirs, enable, fc, help, history, logout, popd, pushd
-<LI>exported functions
-<LI>filename generation when using output redirection (command &gt;a*)
-</UL>
-
-<H4>Things sh has that bash does not:</H4>
-
-<UL>
-<LI>uses variable SHACCT to do shell accounting
-<LI>includes `stop' builtin (bash can use alias stop='kill -s STOP')
-<LI>`newgrp' builtin
-<LI>turns on job control if called as `jsh'
-<LI>ulimit attempts to set both soft &amp; hard limits if -S/-H not given
-</UL>
-
-<H4>New things in the SVR4.2 sh:</H4>
-
-<UL>
-<LI>internationalization: $LANG, $LC_CTYPE, $LC_MESSAGES, setlocale, etc.
-<LI>$TIMEOUT (like bash $TMOUT)
-<LI>new builtins: mldmode, priv
-<LI>`read' builtin has -r
-<LI>kill -s is present
-</UL>
-  
-<H4>Implementation differences:</H4>
-
-<UL>
-<LI>redirection to/from compound commands causes sh to create a subshell
-<LI>bash does not allow unbalanced quotes; sh silently inserts them at EOF
-<LI>bash does not mess with signal 11
-<LI>sh sets (euid, egid) to (uid, gid) if -p not supplied and uid &lt; 100
-<LI>bash splits only the results of expansions on IFS
-<LI>sh does not allow MAILCHECK to be unset (?)
-<LI>sh does not allow traps on SIGALRM or SIGCHLD
-</UL>
-
-<H3><A NAME="7">7)  How does bash differ from the Korn shell, version ksh88?</A></H3>
-
-<H4>Things bash has or uses that ksh88 does not:</H4>
-
-<UL>
-<LI>long invocation options
-<LI>`!' reserved word
-<LI>posix mode and posix conformance
-<LI>command hashing
-<LI>tilde expansion for assignment statements that look like $PATH
-<LI>process substitution with named pipes if /dev/fd is not available
-<LI>variables: BASH, BASH_VERSION, UID, EUID, SHLVL, HISTCMD, HOSTTYPE, OSTYPE, MAIL_WARNING, HISTFILESIZE, OPTERR, PROMPT_COMMAND, IGNOREEOF, FIGNORE, INPUTRC, HISTCONTROL, notify, command_oriented_history, glob_dot_filenames, allow_null_glob_expansion, histchars, nolinks, HOSTFILE, noclobber, auto_resume, no_exit_on_failed_exec, cdable_vars
-<LI>prompt expansion with backslash escapes and command substitution
-<LI>redirection: &amp;&gt; (stdout and stderr)
-<LI>more extensive and extensible editing and completion
-<LI>builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, exec -, fc -s, export -n/-f/-p, hash, help, history, jobs -x, kill -s, local, logout, popd, pushd, readonly -n/-f/-p, set -o braceexpand/-o histexpand/-o interactive-comments/-o notify/-o physical/-o posix/-l/-d/-C/-b/-H/-P, suspend, trap -l, type, ulimit -u, umask -S
-<LI>$[...] synonym for $((...))
-<LI>`!' csh-style history expansion
-</UL>
-
-<H4>Things ksh88 has or uses that bash does not:</H4>
-
-<UL>
-<LI>new version of test: [[...]]
-<LI>((...)) equivalent to let "..."
-<LI>time keyword to let pipelines be timed
-<LI>tracked aliases
-<LI>$(&lt;file)        
-<LI>one-dimensional arrays and appropriate expansions
-<LI>variables: ERRNO, FPATH, COLUMNS, LINES, EDITOR, VISUAL
-<LI>extended pattern matching with egrep-style pattern lists
-<LI>co-processes (|&amp;, &gt;&amp;p, &lt;&amp;p)
-<LI>weirdly-scoped functions
-<LI>typeset +f to list all function names without definitions
-<LI>text of command history kept in a file, not memory
-<LI>builtins: alias -x, cd old new, fc -e -, newgrp, print, read -p/-s/u/var?prompt, set -A/-o gmacs/-o keyword/-o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, typeset -H/-L/-R/-A/-ft/-fu/-fx/-l/-u/-t, whence
-</UL>
-  
-<H4>Implementation differences:</H4>
-
-<UL>
-<LI>ksh runs last command of a pipeline in parent shell context
-<LI>ksh ulimit sets hard and soft limits by default
-<LI>bash has brace expansion by default
-<LI>bash has fixed startup file for all interactive shells; ksh reads $ENV
-<LI>bash has exported functions
-<LI>bash command search finds functions before builtins
-</UL>
-  
-<H3><A NAME="8">8)  What is the bash `posix mode'?</A></H3>
-
-<P>
-Although bash is an implementation of the Posix.2 shell specification, there are areas where the bash default behavior differs from that spec.  The bash `posix mode' changes the bash behavior in these areas so that it obeys the spec more closely.
-<P>
-Posix mode is entered by starting bash with the -posix option or executing `set -o posix' after bash is running.
-<P>
-The specific aspects of bash which change when posix mode is active are listed in the file CWRU/POSIX.NOTES in the bash distribution. 
-
-<H3><A NAME="9">9) How can I build bash with gcc?</A></H3>
-
-<P>
-Type
-<BR>
-<PRE>
-       make CC=gcc CPPNAME='$(CC) -E'
-</PRE>
-
-<H3><A NAME="10">10) Why does bash run a different version of `command' than `which command' says it will?</A></H3>
-
-<P>
-`which' is actually a csh script that assumes you're running csh. It reads the csh startup files from your home directory and uses those to determine which `command' will be invoked.  Since bash doesn't use any of those startup files, there's a good chance that your bash environment differs from your csh environment. 
-
-<H3><A NAME="11">11) How can I make my csh aliases work when I convert to bash?</A></H3>
-
-<P>
-Bash uses a different syntax to support aliases than csh does. The details can be found in the documentation.  We have provided a shell script which does most of the work of conversion for you; this script can be found in ./examples/alias-conv.sh.  Here is how you use it:
-<P>  
-Start csh in the normal way for you.  (e.g., `csh')
-<P>
-Pipe the output of `alias' through `alias-conv.sh', saving the results into `bash_aliases':
-<BR>
-<PRE>
-       alias | alias-conv.sh &gt;bash_aliases
-</PRE>
-<P>
-Edit `bash_aliases', carefully reading through any created functions.  You will need to change the names of csh specific variables (like $cwd) to the bash equivalents (like $PWD).  You will also need to remove recursive references to commands which are defined as functions.  For example, the csh alias:
-<BR>
-<PRE>
-       alias cd 'cd \!*;echo $cwd'
-</PRE>
-<P>
-is converted to the bash function:
-<BR>
-<PRE>
-       cd () 
-       { 
-               cd $*;
-               echo $cwd
-       }
-</PRE>
-<P>
-This function contains a self-pointing reference to `cd', which should be changed to use the `builtin' version.  It also uses the csh variable `$cwd' which has an equivalent in bash.  You should also change $* to "$@" to correctly process directory names with embedded spaces.  Precede the recursive reference with the word `builtin', change the name of the variable to the one bash uses, and quote it to avoid any unwanted expansion:
-<BR>
-<PRE>
-       cd () { builtin cd "$@"; echo "$PWD"; }
-</PRE>
-<P>
-Merge the edited file into your ~/.bashrc.
-
-<H3><A NAME="12">12) Now that I've converted from ksh to bash, are there equivalents to ksh features like autoloaded functions and the `whence' command?</A></H3>
-
-<P>
-There are features in ksh-88 that do not have direct bash equivalents. Most, however, can be emulated with very little trouble.
-<BR>
-<PRE>
-ksh-88 feature         Bash equivalent
---------------         ---------------
-[[...]]                        can usually use [...]; minor differences
-compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
-                       bash builtins (hash, history, type)
-$(&lt;file)            $(cat file)
-arrays                 no good subsitute yet
-((...))                        let "..."
-time                   use external command; GNU time is particularly useful
-                       use time bash -c '...' for complicated constructs
-extended patterns      no good substitute
-coprocesses            named pipe pairs (one for read, one for write)
-typeset +f             declare -f |
-                            sed -n 's:^declare -[a-z]* \([^ ]*\).*$:\1:p'
-cd, print, whence      function subsitutes in examples/functions/kshenv
-autoloaded functions   examples/functions/autoload is the same as typeset -fu
-read var?prompt                [ -t 0 ] &amp;&amp; echo -n prompt &gt;&amp;2; read var
-</PRE>
-
-<H3><A NAME="13">13) Why is the bash builtin `test' slightly different from /bin/test?</A></H3>
-
-<P>
-The specific example used here is [ ! x -o x ], which is false.
-<P>
-Bash's builtin `test' implements the Posix.2 spec, which can be summarized as follows (the wording is due to David Korn):
-<P>
-Here is the set of rules for processing test arguments.
-<BR>
-<PRE>
-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-           If first argument is unary, then true if unary test is true
-           Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-           If first argument is !, negate two argument test of $2 $3
-           Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-           Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-</PRE>
-<P>
-The operators -a and -o are considered binary operators for the purpose of the 3 Arg case.
-<P>
-As you can see, the test becomes (not (x or x)), which is false.
-
-<H3><A NAME="14">14) Why does bash sometimes say `Broken pipe'?</A></H3>
-
-<P>
-If a sequence of commands appears in a pipeline, and one of the reading commands finishes before the writer has finished, the writer receives a SIGPIPE signal.  Many other shells special-case SIGPIPE as an exit status in the pipeline and do not report it.  For example, in:
-<BR>
-<PRE>
-      ps -aux | head
-</PRE>
-<P>
-`head' can finish before `ps' writes all of its output, and ps will try to write on a pipe without a reader.  In that case, bash will print `Broken pipe' to stderr when ps is killed by a SIGPIPE. 
-
-<H3><A NAME="15">15) How can I get bash to read and display eight-bit characters?</A></H3>
-
-<P>
-This is a process requiring several steps.
-<P>
-First, you must ensure that the `physical' data path is a full eight bits.  For xterms, for example, the `vt100' resources `eightBitInput' and `eightBitOutput' should be set to `true'.
-<P>
-Once you have set up an eight-bit path, you must tell the kernel and tty driver to leave the eigth bit of characters alone when processing keyboard input.  Use `stty' to do this:
-<BR>
-<PRE>
-       stty cs8 -istrip -parenb
-</PRE>
-<P>
-For old BSD-style systems, you can use
-<BR>
-<PRE>
-        stty pass8
-</PRE>
-<P>
-You may also need
-<BR>
-<PRE>
-       stty even odd
-</PRE>
-<P>
-Finally, you need to tell readline that you will be inputting and displaying eight-bit characters.  You use readline variables to do this.  These variables can be set in your .inputrc or using the bash `bind' builtin.  Here's an example using `bind':
-<BR>
-<PRE>
-       bash$ bind 'set convert-meta off'
-       bash$ bind 'set meta-flag on'
-       bash$ bind 'set output-meta on'
-</PRE>
-<P>
-The `set' commands between the single quotes may also be placed in ~/.inputrc.
-
-<H3><A NAME="16">16) Why can't I use command line editing in my `cmdtool'?</A></H3>
-
-<P>
-The problem is `cmdtool' and bash fighting over the input.  When scrolling is enabled in a cmdtool window, cmdtool puts the tty in `raw mode' to permit command-line editing using the mouse for applications that cannot do it themselves.  As a result, bash and cmdtool each try to read keyboard input immediately, with neither getting enough of it to be useful.
-<P>
-This mode also causes cmdtool to not implement many of the terminal functions and control sequences appearing in the `sun-cmd' termcap entry.  For a more complete explanation, see that file examples/suncmd.termcap in the bash distribution. 
-<P>
-`xterm' is a better choice, and gets along with bash much more smoothly.
-<P>
-If you must use cmdtool, you can use the termcap description in examples/suncmd.termcap.  Set the TERMCAP variable to the terminal description contained in that file, i.e.
-<BR>
-<PRE>
-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-</PRE>
-<P>
-Then export TERMCAP and start a new cmdtool window from that shell. The bash command-line editing should behave better in the new cmdtool.  If this works, you can put the assignment to TERMCAP in your bashrc file.
-
-<H3><A NAME="17">17) How do I write a function `x' to replace builtin command `x', but still invoke the command from within the function?</A></H3>
-
-<P>
-This is what the `command' and `builtin' builtins are for.  The `command' builtin executes the command supplied as its first argument, skipping over any function defined with that name.  The `builtin' builtin executes the builtin command given as its first argument directly. 
-<P>
-For example, to write a function to replace `cd' that writes the hostname and current directory to an xterm title bar, use something like the following:
-<BR>
-<PRE>
-       cd()
-       {
-               builtin cd "$@" &amp;&amp; xtitle "$HOST: $PWD"
-       }
-</PRE>
-<P>
-This could also be written using `command' instead of `builtin'; the version above is marginally more efficient. 
-
-<H3><A NAME="18">18) When I have terminal escape sequences in my prompt, why does bash wrap lines at the wrong column?</A></H3>
-
-<P>
-Bash does not know that the terminal escape sequences do not take up space on the screen.  The redisplay code assumes, unless told otherwise, that each character in the prompt is a `printable' character that takes up one character position on the screen.
-<P>
-You can use the bash prompt expansion facility (see the PROMPTING section in the manual page) to tell readline that sequences of characters in the prompt strings take up no screen space. 
-<P>
-Use the \[ escape to begin a sequence of non-printing characters, and the \] escape to signal the end of such a sequence. 
-
-<H3><A NAME="19">19) I built bash on Solaris 2.  Why do globbing expansions and filename completion chop off the first few characters of each filename?</A></H3>
-
-<P>
-This is the consequence of building bash on SunOS 5 and linking with the libraries in /usr/ucblib, but using the definitions and structures from files in /usr/include. 
-<P>
-The actual conflict is between the dirent structure in /usr/include/dirent.h and the struct returned by the version of `readdir' in libucb.a (a 4.3-BSD style `struct direct').
-<P>
-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH when building bash.  This will ensure that you use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you link with libc before libucb.
-<P>
-If you have installed the Sun C compiler, you may also need to put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before /usr/ucb.
-
-<H3><A NAME="20">20) Why doesn't bash treat brace expansions exactly like csh?</A></H3>
-
-<P>
-The only difference between bash and csh brace expansion is that bash requires a brace expression to contain at least one unquoted comma if it is to be expanded.  Any brace-surrounded word not containing an unquoted comma is left unchanged by the brace expansion code.  This affords the greatest degree of sh compatibility. 
-<P>
-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
-
-<H3><A NAME="21">21) Why does bash dump core after I interrupt username completion or `~user' tilde expansion on a machine running NIS?</A></H3>
-
-<P>
-This is a famous and long-standing bug in the SunOS YP (sorry, NIS) client library, which is part of libc.
-<P>
-The YP library code keeps static state -- a pointer into the data returned from the server.  When YP initializes itself (setpwent), it looks at this pointer and calls free on it if it's non-null.  So far, so good. 
-<P>
-If one of the YP functions is interrupted during getpwent (the exact function is interpretwithsave()), and returns NULL, the pointer is freed without being reset to NULL, and the function returns.  The next time getpwent is called, it sees that this pointer is non-null, calls free, and the bash free() blows up because it's being asked to free freed memory. 
-<P>
-The traditional Unix mallocs allow memory to be freed multiple times; that's probably why this has never been fixed.  You can probably stop it by adding an #undef USE_GNU_MALLOC to the appropriate machine description in machines.h. 
-
-<H3><A NAME="22">22) I'm running SVR4.2.  Why is the line erased every time I type `@'?</A></H3>
-
-<P>The `@' character is the default `line kill' character in most versions of System V, including SVR4.2.  You can change this character to whatever you want using `stty'.  For example, to change the line kill character to control-u, type
-<BR>
-<PRE>
-       stty kill ^U
-</PRE>
-<P>
-where the `^' and `U' can be two separate characters.
-
-<H3><A NAME="23">23) How can I find the value of a shell variable whose name is the value of another shell variable?</A></H3>
-
-<P>
-Use the `eval' builtin.  The important thing to remember is that `eval' expands the arguments you give it again, so you need to quote the parts of the arguments that you want `eval' to act on.
-<P>
-For example, this expression prints the value of the last positional parameter:
-<BR>
-<PRE>
-       eval echo \"\$\{$#\}\"
-</PRE>
-<P>
-The expansion of the quoted portions of this expression will be deferred until `eval' runs, while the `$#' will be expanded before `eval' is executed. 
-
-<H3><A NAME="24">24) If I pipe the output of a command into `read variable', why doesn't the output show up in $variable when the read command finishes?</A></H3>
-
-<P>
-This has to do with the parent-child relationship between Unix processes. 
-<P>
-Each element of a pipeline runs in a separate process, a child of the shell running the pipeline.  A subprocess cannot affect its parent's environment.  When the `read' command sets the variable to the input, that variable is set only in the subshell, not the parent shell.  When the subshell exits, the value of the variable is lost. 
-<P>
-Many pipelines that end with `read variable' can be converted into command substitutions, which will capture the output of a specified command.  The output can then be assigned to a variable:
-<BR>
-<PRE>
-       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-</PRE>
-<P>
-can be converted into
-<BR>
-<PRE>
-       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-</PRE>
-<P>
-This does not, unfortunately, work to split the text among multiple variables, as read does when given multiple variable arguments.  If you need to do this, you can either use the command substitution above to read the output into a variable and chop up the variable using the bash pattern removal expansion operators or use some variant of the following approach.
-<P>
-Say /usr/local/bin/ipaddr is the following shell script:
-<BR>
-<PRE>
-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-</PRE>
-<P>
-Instead of using
-<BR>
-<PRE>
-       /usr/local/bin/ipaddr | read A B C D
-</PRE>
-<P>
-to break the local machine's IP address into separate octets, use
-<BR>
-<PRE>
-       OIFS="$IFS"
-       IFS=.
-       set -- $(/usr/local/bin/ipaddr)
-       IFS="$OIFS"
-       A="$1" B="$2" C="$3" D="$4"
-</PRE>
-<P>
-Beware, however, that this will change the shell's positional parameters.  If you need them, you should save them before doing this.
-<P>
-This is the general approach -- in most cases you will not need to set $IFS to a different value.
-
-<H3><A NAME="25">25) I just changed my shell to bash, and now I can't FTP into my machine. Why not?</A></H3>
-
-<P>
-You must add the full pathname to bash to the file /etc/shells. Many versions of ftpd use this file to prohibit `special' users such as `uucp' and `news' from using FTP. 
-
-<H3><A NAME="26">26) I have a bunch of shell scripts that use backslash-escaped characters in arguments to `echo'.  Bash doesn't interpret these characters.  Why not, and how can I make it understand them?</A></H3>
-
-<P>
-This is the behavior of echo on most Unix System V machines.
-<P>
-The bash builtin `echo' is modelled after the 9th Edition Research Unix version of `echo'.  It does not interpret backslash-escaped characters in its argument strings by default; it requires the use of the -e option to enable the interpretation.  The System V echo provides no way to disable the special characters; the bash echo has a -E option to disable them. 
-<P>
-There is a compile-time option that will make bash behave like the System V echo and interpret things like \t by default.  Change config.h so that DEFAULT_ECHO_TO_USG is defined, remove builtins/libbuiltins.a and builtins/echo.o, and rebuild.
-
-<H3><A NAME="27">27) Why doesn't bash have csh variable modifiers?</A></H3>
-
-<P>
-Posix has specified a more powerful, albeit somewhat more confusing, mechanism cribbed from ksh, and bash implements it.
-
-<DL>
-<DT>${parameter%word}
-<DD>Remove smallest suffix pattern.  The WORD is expanded to produce a pattern.  It then expands to the value of PARAMETER, with the smallest portion of the suffix matched by the pattern deleted.
-<PRE>
-        x=file.c
-        echo ${x%.c}.o
-        --&gt;file.o
-</PRE>
-<BR>
-     
-<DT>${parameter%%word}
-<DD>Remove largest suffix pattern.  The WORD is expanded to produce a pattern.  It then expands to the value of PARAMETER, with the largest portion of the suffix matched by the pattern deleted.
-<PRE>
-        x=posix/src/std
-        echo ${x%%/*}
-        --&gt;posix
-</PRE>
-<BR>
-     
-<DT>${parameter#word}
-<DD>Remove smallest prefix pattern.  The WORD is expanded to produce a pattern.  It then expands to the value of PARAMETER, with the smallest portion of the prefix matched by the pattern deleted.
-<PRE>
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        --&gt;/src/cmd
-</PRE>
-<BR>
-
-<DT>${parameter##word}
-<DD>Remove largest prefix pattern.  The WORD is expanded to produce a pattern.  It then expands to the value of PARAMETER, with the largest portion of the prefix matched by the pattern deleted.
-<BR>
-<PRE>
-        x=/one/two/three
-        echo ${x##*/}
-        --&gt;three
-</PRE>
-<BR>
-</DL>
-<P>
-Given
-<BR>
-<PRE>
-        a=/a/b/c/d
-       b=b.xxx
-
-       csh                     bash            result
-       ---                     ----            ------
-       $a:h                    ${a%/*}            /a/b/c
-       $a:t                    ${a##*/}           d
-       $b:r                    ${b%.*}            b
-       $b:e                    ${b##*.}           xxx
-</PRE>
-
-<H3><A NAME="28">28) Why does bash report syntax errors when my C News scripts use a redirection before a subshell command?</A></H3>
-
-<P>
-The actual command in question is something like
-<BR>
-<PRE>
-       &lt; file ( command )
-</PRE>
-<P>
-According to the grammar given in the Posix.2 standard, this construct is, in fact, a syntax error.  Redirections may only precede `simple commands'.  A subshell construct such as the above is one of the shell's `compound commands'.  A redirection may only follow a compound command.
-<P>
-The file CWRU/sh-redir-hack in the 1.14.6 distribution is an (unofficial) patch to parse.y that will modify the grammar to support this construct. It will not apply with `patch'; you must modify parse.y by hand. Note that if you apply this, you must recompile with -DREDIRECTION_HACK. This introduces a large number of reduce/reduce conflicts into the shell grammar.
-
-<H3><A NAME="29">29) How can I pipe standard output and standard error from one command to another, like csh does with `|&amp;'?</A></H3>
-
-<P>
-Use
-<BR>
-<PRE>
-       command 2&gt;&amp;1 | command2
-</PRE>
-<P>
-The key is to remember that piping is performed before redirection, so file descriptor 1 points to the pipe when it is duplicated onto file descriptor 2.
-
-<H3><A NAME="30">30) How do I report bugs in bash, and where should I look for fixes and advice?</A></H3>
-
-<P>
-Use the `bashbug' script to report bugs.  It is built and installed at the same time as bash.  It provides a standard template for reporting a problem and automatically includes information about your configuration and build environment.
-<P>
-`bashbug' sends its reports to <A HREF="mailto:bug-bash@prep.ai.mit.edu">bug-bash@prep.ai.mit.edu</A>, which is a large mailing list gatewayed to the usenet newsgroup <A HREF="news:gnu.bash.bug">gnu.bash.bug</A>. 
-<P>
-Bug fixes, answers to questions, and announcements of new releases are all posted to <A HREF="news:gnu.bash.bug">gnu.bash.bug</A>.  Discussions concerning bash features and problems also take place there.
-<P>
-To reach the bash maintainers directly, send mail to <A HREF="mailto:bash-maintainers@prep.ai.mit.edu">bash-maintainers@prep.ai.mit.edu</A>.
-
-<H3><A NAME="31">31) What kind of bash documentation is there?</A></H3>
-
-<P>First, look in the documentation directory in the bash distribution. It should contain the following files:
-<P>
-
-<UL>
-<LI>bash.1 - an extensive, thorough Unix-style manual page
-<LI>builtins.1 - a manual page covering just bash builtin commands
-<LI>features.texi - a Gnu-style info file overview
-<LI>FAQ        - this file
-<LI>article.ms - text of an article written for The Linux Journal
-<LI>readline.3 - a man page describing readline
-</UL>
-
-<P>
-Postscript files created from the above source are also present in the distribution.
-<P>
-There is additional documentation available for <A HREF="ftp://slc2.ins.cwru.edu/pub/bash/">anonymous FTP from host slc2.ins.cwru.edu</A> in the `pub/bash' directory.
-<P>
-Cameron Newham has written a book on bash, published by O'Reilly and Associates.  The title is ``Learning the Bash Shell''.  The ISBN number s 1-56592-147-X.  Look for it in fine bookstores near you.
-
-<H3><A NAME="32">32) What's coming in future versions?</A></H3>
-
-<P>
-There will be no new features in future releases of version 1.14.
-<P>
-The next major release, bash-2.0, will contain extensive changes and new features.  Here's a short list:
-<P>
-
-<UL>
-<LI>one-dimensional arrays with a new compound assignment statement, appropriate expansion constructs and modifications to some of the builtins (read, declare, etc.) to use them
-<LI>new expansions to do ANSI-C string expansion, locale-specific string translation, substring extraction, pattern replacement, and indirect variable expansion
-<LI>new builtins: `disown' and `shopt'
-<LI>new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE
-<LI>special handling of many unused or redundant variables removed (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
-<LI>dynamic loading of new builtin commands; many loadable examples provided
-<LI>new prompt expansions: \e, \n, \H, \T, \@, \v, \V
-<LI>history and aliases available in shell scripts
-<LI>new readline variables: enable-keypad, mark-directories, input-meta, visible-stats
-<LI>new readline commands to manipulate the mark and operate on the region
-<LI>new readline emacs mode commands and bindings for ksh-88 compatibility
-<LI>updated and extended builtins
-<LI>new DEBUG trap
-<LI>expanded (and now documented) restricted shell mode
-<LI>the `time' reserved word to time pipelines, shell builtins, and shell functions
-</UL>
-
-<H4>implementation stuff:</H4>
-
-<UL>
-<LI>autoconf-based configuration
-<LI>nearly all of the bugs reported since version 1.14 have been fixed
-<LI>most builtins converted to use builtin `getopt' for consistency
-<LI>most builtins use -p option to display output in a reusable form (for consistency)
-<LI>grammar tighter and smaller (66 reduce-reduce conflicts gone)
-<LI>lots of code now smaller and faster
-<LI>test suite greatly expanded
-</UL>
-
-<H3><A NAME="33">33) What's on the bash `wish list' for future versions?</A></H3>
-
-<UL>
-<LI>Programmable completion a la zsh
-<LI>menu completion a la tcsh
-<LI>the ksh egrep-style extended pattern matching operators
-<LI>associative arrays (not really all that hard)
-<LI>breaking some of the shell functionality into embeddable libraries
-<LI>better internationalization using GNU `gettext'
-<LI>an option to use external files for the long `help' text
-<LI>a bash debugger
-</UL>
-
-<P>
-Much of this will not be in bash-2.0.
-
-<H3><A NAME="34">34) When will the next release appear?</A></H3>
-
-<P>
-Version 1.14.6 will probably be the last release for version 1.14.
-<P>
-The next version will appear sometime in 1996.  Never make predictions.
-<P>
-
-<HR>
-<BR>
-
-This document is Copyright 1995, 1996 by Chester Ramey.
-<P>
-Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, and distribute this document for any purpose, provided that the above copyright notice appears in all copies of this document and that the contents of this document remain unaltered.
-<P>
---
-<BR>
-``The lyf so short, the craft so long to lerne.'' - Chaucer
-<BR>
-Chet Ramey, Case Western Reserve University - Internet: <A HREF="mailto:chet@po.cwru.edu">chet@po.CWRU.Edu</A>
-
-</BODY>
-</HTML>
-
-
-
---++ End Include ++--
-
diff --git a/doc/oldbash.texi b/doc/oldbash.texi
deleted file mode 100644 (file)
index b8e9a86..0000000
+++ /dev/null
@@ -1,9291 +0,0 @@
-\input texinfo @c -*- texinfo -*-
-@c %**start of header
-@setfilename bash.info
-@settitle GNU Bourne Again SHell
-@setchapternewpage odd
-@c %**end of header
-
-@ignore
-**EXPLANATION OF COMMENTS IN FILE**
-All comments, which start with @c, are by Julie Sussman
-(jems@zurich.ai.mit.edu).
-If a comment has someone else's name or initials in it, it is still
-by me (Julie), but is a note on something that person told me.
-@end ignore
-
-@ignore
-**TO DO**
-Update all nodes
-Update all menus for Info.  They don't match current manual.
-Fix the cross references -- too many have abbreviated node names.
-Fix/redo/complete the indexing.
-  Separate index for commands, vars, etc. (separate from concepts)
-Use group/end group around examples to prevent bad page breaks.
-@end ignore
-
-@ignore
-JEFF KELLEM'S MISC. COMMENTS
-* add a glossary
-* below are some additions/changes that are being considered for final
-  1.06 release -- there are probably others; these are off the top of my
-  head 
-  * check on `-' arg to cd to swap $PWD and $OLDPWD
-  * `+' option to `set' to list all var names w/o their values (`set +')
-  * `set --' will unset the positional params if no other args are given ?
-  * -r option to read
-  * -p flag of jobs to list PIDs only (posix.2a)
-  * job_spec args to jobs (posix.2a)
-  * shell error msgs may now have `bash: ' as a prefix  (will have to chk
-    if Brian decided to bless it)
-@end ignore
-
-@c DON'T RUN FINALOUT YET UNTIL FINAL STAGES
-@ignore
-@iftex
-@finalout
-@end iftex
-@end ignore
-
-@ifinfo
-This file documents the GNU Bourne Again SHell.
-
-Copyright @copyright{} 1989, 1990 Free Software Foundation, Inc.
-@end ifinfo
-
-@titlepage
-@sp 10
-@center @titlefont{Bourne Again SHell}
-@center Unproofed Draft
-@sp 10
-@center Brian Fox, Diane Barlow Close,
-@center Julie Sussman, Chet Ramey,
-@center Richard Stallman
-@center @today{}
-
-@page
-This document describes GNU Bash, a Bourne shell compatible command
-language interpreter which executes commands read from standard input
-or from a file.
-
-Published by the Free Software Foundation @*
-675 Massachusetts Avenue, @*
-Cambridge, MA 02139 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
-@end titlepage
-
-@node Top, Thanks, (dir), (dir)
-@unnumbered Preface
-
-This manual introduces the GNU Bourne Again SHell (BASH) and explains
-its role in the operating system.  This manual does not explain the
-fundamentals of using operating system commands such as @code{ls},
-@code{cd}, and others, nor does it explain how to log into your system.
-
-BASH is a command language interpreter that executes commands read from
-the standard input or from a file.  BASH is compatible with the Bourne
-shell (@code{sh}), and also incorporates useful features of the Korn
-shell (@code{ksh}) and the C shell (@code{csh}).  The intention is that
-BASH be a superset of the desirable features found in other shells.
-
-BASH is POSIX compliant.
-
-If you read this manual sequentially, you'll find it leads you through
-the concepts of a shell from its simple beginnings to more complex
-shell features.  If you are familiar with your machine's operating
-system and have some experience with shells, then this manual makes a
-handy reference.
-@c A nice goal would be to make the above paragraph come true
-
-@menu
-* Thanks::           Acknowledgement of those who made it possible.
-
-* License::          GNU licensing information.
-
-* Introduction::     Introduction to shells.
-
-* I/O::              Redirection.  Pipes.
-
-* Line::             Command line syntax.
-
-* File Names::   How the shell interprets your input before
-                     it arrives at other commands.  Wildcard 
-                     characters.
-
-* Job Control::      Controlling when commands are run.
-
-* Editing::          Editing lines that you type, and how to
-                     get at previously typed lines.
-
-* History::          History substitution.
-
-* Aliases::          Substitution of command words.
-
-* Functions::        How to generalize a group of related
-                     commands.
-
-* Programming::      An overview of programming using BASH.
-
-* Scripts::          Writing shell programs with BASH.
-
-* Variables::        Shell variables.
-
-* Environment::      Discovering your shell's environment.
-
-* Conditionals::     Programming using conditional statements.
-
-* Looping::          Programming using looping statements.
-
-* Built-in::         Description of commands that are built into
-                     the shell.
-
-* Install::          Installing BASH.
-
-* Invoke::           Invoking BASH.  Details on signal control in BASH.
-                     Customizing BASH prompts.
-
-* Start-up::         A sample start-up files for BASH.
-
-* Advanced Scripts:: Samples of writing more advanced shell scripts.
-
-* Tools::            Related and useful operating system commands.
-
-* Authors::          Who's responsible for all this.
-
-* Concept Index::    Index of shell concepts.
-
-@end menu
-
-@node Thanks,  , Top, Top
-@unnumberedsec Acknowledgements
-
-Many people need to be thanked for their assistance in producing this
-manual.  Brian and Diane would like to thank Chet Ramey for his
-production of the BASH man page.  It made the job of writing this
-manual infinitely easier.
-
-Robert Chassell gave helpful comments on the drafts of this manual. 
-Allan Painter contributed beginning-user examples.  Bennett Todd
-and Bill Trost contributed very useful samples of shell scripts.  Many
-thanks to all those who submitted scripts for consideration.  It
-was difficult to choose only two for inclusion in this manual; all were
-of very high quality and usefulness.
-
-@node License, Introduction, Top, Top
-@unnumbered License
-
-@node Introduction, Typing Commands, License, Top
-@chapter Introduction to Shells
-@c This chapter needs to be rewritten/replaced
-@ignore
-Some topics:
- built-in cmds, other cmds, use in examples and doc in manual
-@end ignore
-
-The shell is a program that the operating system automatically starts
-up when you log in, so that the system can understand your commands. 
-@cindex shell, what is a
-@cindex BASH, what is
-@cindex Bourne Again SHell, what is
-
-Here is a brief listing of some of the things that the Bourne Again SHell
-(BASH) provides:
-
-@itemize @bullet
-@item
-a built-in language for writing shell programs
-
-@item
-compatibility with shell programs written for the Bourne shell
-
-@item
-Emacs and vi style command editing
-
-@item
-process and job control
-
-@item
-command aliases
-
-@item
-shell @emph{functions}
-
-@item
-completion of file names, user names, and variable names
-@c  "and other types of completion"  ?? such as what??
-@end itemize
-
-@menu
-* Interpretation::   The Shell as a Command Interpreter.
-
-* Language::         The Shell as a Programming Language.
-
-@end menu
-
-@node Interpretation, Language, Introduction, Introduction
-@section The Shell as a Command Interpreter
-
-When you log on to your system a shell is automatically started for you. 
-Think of the shell as a layer of software between you and the operating
-system's internal workings, as shown below:
-@cindex command interpreter
-@cindex shell, as a command interpreter
-
-@example
-@var{commands} (@r{typed by you}) <------> @var{shell} <-------> @var{operating system}
-@end example
-
-@noindent
-The shell interacts with you, the user, to interpret your commands and
-tell the operating system to take appropriate action.  The shell stays
-with you until you log out.
-
-The input and execution of a simple shell command involves the following
-steps:
-
-@enumerate
-@item
-The shell displays a prompt (@samp{bash$}, unless you have
-specified a different prompt) and waits for you to type a command.
-
-@item
-You type a command line, ending with a carriage return.
-
-@item
-The shell analyzes that command line, and extracts the command name
-and arguments.  Here is a template for a simple shell command, with
-the optional parts between square brackets, @samp{@r{[}@dots{}@r{]}}:
-
-@example
-@var{command} @r{[}@var{arguments}@r{]} @r{[}&@r{]} @key{RET}@refill
-@end example
-
-@noindent
-A simple command line consists of a sequence of words
-separated by blanks (a blank is a space or a tab).  The first word of
-the command line specifies the name of the command to be executed, and the
-remaining words are passed as arguments to that command.
-
-@item
-The shell tries to locate the specified command as a program in the
-directories specified in your path.
-
-@item
-If the shell can't find the command program you requested, it gives you
-an error message and provides a new prompt.
-
-If the shell is successful in locating the requested program, it tells
-the operating system to execute that program using the rest of the
-command line as arguments for that program.
-
-@item
-If you did not end your command line with @samp{&}, the program is run
-in the @dfn{foreground}.  When the program is
-finished, the operating system returns control to the shell and the
-shell gives you another prompt.
-
-If you ended your command line with @samp{&}, the program is run in the
-@dfn{background}.While the program is executing the shell waits.
-The shell doesn't wait for the operating system to
-finish running the program; rather, the shell immediately gives you a prompt so
-you can continue typing commands.  (Running a program in the background
-is useful if the program takes a long time to execute and doesn't need
-supervision.)
-
-@item
-At the new prompt you type in the next command line to be processed
-and run.  These steps are repeated until you log out.
-@end enumerate
-
-@node Language,  , Interpretation, Introduction
-@section The Shell as a Programming Language
-
-BASH has its own built-in, interpreted programming language.
-@cindex shell, as a programming language
-@cindex programming language, features
-
-Some of the programming features available to you are:
-
-@itemize @bullet
-@item
-storage of values in variables
-
-@item
-conditional execution statements
-
-@item
-user-defined functions
-
-@item
-looping and other ways of executing commands repeatedly
-@end itemize
-
-@node Notation
-@section Notation
-
-To indicate special keys or key combinations, this documentation
-uses the following notations:
-@c also explain RET, CTL, DEL, etc.
-
-@table @kbd
-@item C-k
-The text @kbd{C-k} is read as ``Control-K'' and describes the character
-produced when you hold the Control key (@key{CTL}) down and strike the @kbd{k} key.
-
-@item M-k
-The text @kbd{M-k} is read as ``Meta-K'' and describes the character
-produced in either of two ways:
-@itemize @bullet
-Either hold the @key{META} key (if you have one) down and strike the @kbd{k} key
-
-or type @key{ESC} @i{first} and then type @kbd{k}.
-@end itemize
-Either process is known as @dfn{metafying} the @kbd{k} key.
-
-@item M-C-k
-The text @kbd{M-C-k} is read as ``Meta-Control-k'' and describes the
-character produced by metafying @kbd{C-k} (see @kbd{C-k} and @kbd{M-k}
-just above).
-@end table
-
-@node  Typing Commands, I/O, Introduction, Top
-@chapter Typing Commands
-
-@c !! forgot to cover case sensitivity!
-
-This chapter deals with the mechanics of typing commands.
-
-Normally, to give a command you type a line and end it with a newline
-character (usually referred to as @key{RET} in this documentation).
-
-In the following example, BASH displayed its prompt (@samp{bash$ }),
-we typed the command @samp{who} (terminated by a @key{RET}, which is
-not explictly shown in the example), the output of @code{who} (a listing
-of users logged into the system) was displayed, and BASH displayed
-another prompt.
-
-@example
-bash$ who
-glassw   ttyq0   Apr 15 15:09   (worker-8)
-glassw   ttyq1   Apr 15 20:50   (worker-7)
-cqc      ttyq2   Apr 15 18:15   (worker-9)
-zvona    ttyq5   Apr 15 14:13   (nico)
-painter  ttyd0   Apr 15 21:00
-stf      ttyh4   Apr 15 11:58
-sandiway ttyh9   Apr 13 23:05
-pwu      ttyhc   Apr 15 15:19
-bash$
-@end example
-
-The following sections explain more about typing commands, including how
-to correct mistakes as you type a command and how to type a command that
-is too long to fit on one line.
-
-@node Typeahead
-@section Typeahead
-
-Your typing is echoed (displayed on the screen) as you type.
-If you start to type a command before the prompt is displayed,
-your typeahead, which echoes immediately, appears before the
-prompt.  It may even be mixed up with output from the command
-that was executing when you typed it.
-In order that you can see the actual command you have
-typed, BASH redisplays your typeahead after the prompt.
-Don't worry -- though some characters appear on your screen twice,
-BASH has kept only one copy of them.
-
-The following shows the appearance of my screen when I
-typed @samp{date} to find out the current date and time,
-then typed @samp{who} to find out who was logged in.
-I didn't wait for @code{date}'s output before I started to type,
-so the @samp{wh} from @samp{who} appears in that output.
-The next prompt is followed by a redisplay of the @samp{wh}
-I already typed, followed by the final @samp{o}.
-
-@example
-bash$ date
-whFri Jan 04 13:47:49 EST 1991
-bash$ who
-gjs        console      Dec 19 15:53
-wisdom     pty/ttyu0    Dec 27 16:11
-jems       pty/ttyu1    Jan  4 10:56
-bash$
-@end example
-
-@node Editing, Continuation, Typing Commands, Typing Commands
-@section Editing the Command Line
-
-@cindex editing command lines, basic
-
-To correct an error in the line you are typing, you can type @key{DEL}
-repeatedly to delete one character at a time until you are back to the
-spot that needs fixing, then continue typing.  Or you can type @kbd{C-u}
-to delete the whole current line and start over.
-
-However, it is also possible to move the cursor to the place you want to
-change and correct the error without deleting and retyping everything
-you've typed after the error.
-
-You can edit the current line as long as you have not typed the
-@key{RET} that terminates it.
-
-Using the editing keys described below, you move the cursor to the
-place that needs correction and delete or insert the text of the
-correction.  Then, when you are satisfied with the line, you simply
-press @key{RET}.  The cursor doesn't have to be at the end of the line
-when you press @key{RET}; the entire line will be accepted in any case.
-
-As you type text into the line, you'll notice that characters to the
-right of the cursor get pushed over to make room for the
-characters you are typing.  Likewise, when you delete a character
-behind the cursor, characters to the right of the cursor get pulled
-back to fill in the blank space created by the removal of those
-characters.
-
-The rest of this section describes basic command-line editing.
-@xref{Readline Commands}, for a list of all the editing commands.
-
-If you are an Emacs user, you may already be familiar with most of the
-editing keys described below: All but @kbd{C-u} are the same ones used
-in Emacs.
-
-Note: If you don't like any of the editing keys, you can change them
-to be whatever you want (@pxref{Customizing Readline}).
-
-@heading Moving the Cursor
-
-Here are the basic ways to move the cursor within the line you are typing:
-
-@table @kbd
-@item C-b
-Move cursor back (left) one character.
-
-@item C-f
-Move cursor forward (right) one character.
-
-@item M-b
-Move cursor backward (left) one word.
-
-@item M-f
-Move cursor forward (right) one word.
-
-@item C-a
-Move cursor to the start of the line.
-
-@item C-e
-Move cursor to the end of the line.
-@end table
-
-Notice that @kbd{C-f} moves forward a character, while @kbd{M-f}
-moves forward a word.  It is usually the case that Control keystrokes
-act on characters, while Meta keystrokes act on words.
-
-@heading Deleting Text
-
-Here are the basic ways to delete text once you have positioned the cursor:
-
-@table @kbd
-@item C-d
-Delete the character underneath the cursor.
-
-@item @key{DEL}
-Delete the character to the left of the cursor.
-
-@item C-k
-Kill the text from the current cursor position to the end of the line.
-
-@item C-u
-Kill the text from the beginning of the line to the current cursor position.
-(Note that if the cursor is at the end of the line, this kills the whole line.)
-@end table
-@c maybe add M-d, M-DEL (corresponding to C-d, DEL)
-
-@heading Inserting Text
-
-To insert text into the line, just position the cursor and type
-the text as you normally do at the end of a line.
-No special keystroke is needed to indicate that you want to insert.
-
-@heading Clearing the Display
-
-If the screen is cluttered, you may wish to:
-
-@table @kbd
-@item C-l
-Clear the screen, reprinting the current line at the top.
-@end table
-
-@node Typos
-@subsection Failing to Correct a Command Line
-
-If you notice an error while typing a command, it is better to
-fix it (or delete the command and start over) than to let the command
-execute as is, especially if the command contains any punctuation
-characters (many of which have special meaning to the shell).
-Although many sorts of errors will result in perfectly harmless
-(and sometimes even comprehensible) error messages, other erroneous
-commands may do things you didn't intend or give you error messages that only
-a shell wizard can understand.
-For example, if you accidentally hit @samp{*} while typing a file
-name in a command to delete a file, you may end up deleting more
-than one file (@pxref{File Names}).
-
-@node History Use
-@section Repeating Earlier Commands
-
-You can sometimes save typing by retrieving an earlier command.
-You can reexecute the command as is, or you can edit it before
-executing it.
-This is particularly useful if a command gets an error.
-Instead of retyping it with the error corrected, you can
-retrieve the command and just fix the erroneous part.
-
-If you are an Emacs user, you may recognize the following commands
-as the same ones that move to the previous or next line
-or to the beginning or end of an Emacs buffer.
-Think of BASH as maintaining an Emacs buffer of your command
-lines, in which you can see only one line at a time.
-Each time you end a line (by typing @key{RET}), BASH adds
-that line to the end of the buffer and positions its cursor
-at the start of the next line.
-
-@xref{History List}, for a more complete description of what
-commands BASH remembers in its history list.
-
-The rest of this section describes the basic commands for accessing
-previous command lines.
-@xref{History Commands}, for the complete set of commands.
-@c note: the stored line contains the result of history substitutions.
-@c If you typed a ! history reference, the resulting cmd is stored.
-@c because: history subst is before shell sees input
-
-@c Following edited from readline chapter -- may need to change that to
-@c match this.
-
-@table @kbd
-@item C-p
-Get the previous line from the history list.
-(Opposite of @kbd{C-n}.)
-The line is displayed after the prompt as if you had just typed it.
-
-@item C-n
-Get the next line from the history list.
-(Opposite of @kbd{C-p}.)
-The line is displayed after the prompt as if you had just typed it.
-
-@item M-<
-Get the oldest line in the history list.
-(Opposite of @kbd{M->}.)
-The line is displayed after the prompt as if you had just typed it.
-
-@item M->
-Get the most recent line in the history list.
-(Opposite of @kbd{M-<}.)
-This is the line you are typing at the current prompt.
-Unless you type something after the prompt, this line is blank.
-@end table
-
-If you're a BASH novice, it is probably best to start by using
-just @kbd{C-p} and @kbd{C-n}.
-Type @kbd{C-p} repeatedly to move back as far as you want.
-If you overshoot, use @kbd{C-n} to go forward again.
-
-@node Continuation,  , Editing, Typing Commands
-@section Continuing a Command on the Next Line
-
-If you don't have room on the line to finish typing your command,
-type a backslash, @samp{\}, then @key{RET}.
-A @samp{\} at the @emph{end} of a command
-line tells the shell that the command hasn't ended, but is to be
-continued on the next line.
-The shell will give you a secondary prompt (different from the ordinary
-prompt, so you can tell that this is a continuation line), and you can
-continue typing the rest of the command.
-In this way, you can continue a command over any number of lines.
-The command is not executed until the final @key{RET} (that is, a @key{RET}
-not preceded by a @samp{\}) is typed.
-@c But: expansion/substitution take place after each RET -- e.g. !, *, ...
-@c rms: ! is during input processing by history library, * is done by shell
-@c bfox: ! done on each line
-@c   can avoid \ if know what's incomplete
-@c   e.g. things in quotes
-@c   usually only use \ for shell script, don't need interactively
-@c   a) usually type shorter cmds, b) line will wrap
-@c consider moving this? or recommending really for scripts and describing
-@c the default long-line wraparound (with pointer to inputrc for
-@c changing it)
-@cindex long commands
-@cindex continuing command lines
-@cindex command lines, continuing
-@cindex commands longer than 1 line
-
-@c lousy example
-For example, both of the following commands concatenate the files
-@file{file1} through @file{file6} together into a single file
-@file{file1to6}.  In the first sequence, the command is split into two
-lines by ending the first line with a @samp{\}.  BASH prints a secondary
-prompt (@samp{bash>}, unless you have specified a different prompt) to
-signal that it awaits further input for the current command.
-
-@example
-bash$ cat file1 file2 file3 \@key{RET}
-bash>file4 file5 file6 > file1to6@key{RET}
-bash$
-@end example
-
-@noindent
-is equivalent to:
-
-@example
-bash$ cat file1 file2 file3 file4 file5 file6 > file1to6@key{RET}
-bash$
-@end example
-
-Warning:
-@itemize @bullet
-@item
-The @samp{\} must be the last thing on the line that is to be
-continued.  If you accidentally type a space after the @samp{\}, your
-screen will not look any different, but the command line will be
-terminated by the @key{RET} rather than continued.
-
-@item
-The multiple command lines are simply concatenated, with no
-space inserted.  If a space is needed between the last thing you type
-on one line and the first thing you type on the next line, you must
-be sure to include the space yourself (either before the @samp{\}
-that ends the first line or at the start of the next line).
-@end itemize
-
-@heading Editing Earlier Lines
-
-Command-editing (@pxref{Editing}) only works on the current line.
-If you notice while typing a continuation line that you need to correct
-an earlier line of the command, you will need to abort the command
-entry and start over (though you needn't retype everything, if you
-follow the instructions below):
-
-@enumerate
-@item
-To avoid losing the line you are in the midst of typing, end it with
-@kbd{\@key{RET}}.
-
-@item
-Type @kbd{C-c} to abort command entry and get back to the top level of
-BASH.
-
-@item
-The lines you typed but never executed were nonetheless stored
-in the command history list.  Use @kbd{C-p} (@pxref{History Use})
-to retrieve the lines of your multi-line command one at a time.
-Type @key{RET} after each correct line, but when you come to the bad
-line, edit it before typing @key{RET}.
-@end enumerate
-
-@node I/O, File Names, Typing Commands, Top
-@chapter Redirecting Input and Output (Basic)
-
-@cindex redirecting input and output
-You may want to send a program's output to a printer instead
-of to your screen.  Or you may want to use a data file for
-input, instead of typing input at your keyboard.
-
-@cindex redirection operators, versus command arguments
-Many commands
-allow input files and output files to be specified as arguments.
-For commands that don't take such arguments (or whose arguments you
-don't remember), you can use redirection operators, as
-explained in this chapter, to @dfn{redirect} input or output to come
-from or go to a file.
-You can also redirect input or output to come from or go to another
-program, by using @dfn{pipes}.
-
-Redirection is performed by the shell, not by individual command programs.
-The action of the command itself is unchanged by redirection; in
-general, commands are unaware that their input or output has been redirected.
-The command reads its input and writes its output as usual, and that
-input and output automatically come from and go to whatever places the shell has set up.
-This is accomplished as follows.
-
-@cindex standard input
-@cindex standard output
-@cindex standard error
-Most programs that read from or write to the terminal actually
-read their input from an imaginary place called
-@dfn{standard input}, write their ordinary output to an imaginary
-place called @dfn{standard output}, and write their error messages
-to an imaginary place called @dfn{standard error}.
-Before the shell runs the program in a command, it hooks up the
-standard input, standard output, and standard error to real places,
-such as your terminal, a file, or another program's input or output.
-
-The following sections tell you how to specify how these standard
-input and outputs should be hooked up.
-
-@c add a diagram showing standard I/O as sockets with things plugged in?
-
-@heading Redirection versus file arguments
-
-@cindex redirection operators, versus command arguments
-Consult the documentation of the specific command you wish to use to
-see whether you have to use redirection operators in order to make it
-use files.
-File Names as
-arguments are often preferable to redirection operators because they enable
-the command to know the name of the file it is reading.  (A command can
-know its arguments, but is not aware of redirection.)  Also,
-some commands (such as @code{sort})
-can read more than one input file when the files are
-specified as arguments, whereas redirection can only specify a single input
-file.
-@c If file args to cmd are preferable, isn't it bad to use such cmds as
-@c redirection examples?
-@ignore
-rms: better examples: cat, compress
-compress file
- replaces file with file.Z  and deletes original file
- option to not delete file
- If want to redirect output, must redirect input too.
-    compress < f1 > f2
- Because if there's an arg (file name), compress
- opens the arg file itself, so redirection is useless.
- With no arg, it uses streams it's given (by < and >)
-@end ignore
-
-For example, here are two ways to sort the file @file{unsorted}
-to produce the file @file{sorted-file}.
-The first command gives the file names as arguments, with @samp{-o}
-flagging the output file name.
-The second command uses @samp{<} to redirect the input and @samp{>}
-to redirect the output.
-
-@example
-bash$ sort -o sorted-file unsorted
-
-bash$ sort < unsorted > sorted-file
-@end example
-
-@noindent
-However, if you want to combine two input files @file{unsorted-1}
-and @file{unsorted-2} into one sorted output file, you'll have
-to give the input files as arguments, because only one input file
-could be supplied by redirection.  You still have a choice of how to
-specify the output file.
-
-@example
-bash$ sort -o sorted-file unsorted-1 unsorted-2
-
-bash$ sort unsorted-1 unsorted-2 > sorted-file
-@end example
-
-@menu
-* Redirection::        How to redirect standard input and standard
-                       output.
-
-* Other Redirections:: Redirecting standard input and standard output
-                       simultaneously.  Redirecting background
-                       processes.  Redirecting standard error.
-
-* Pipes::              Connecting commands together.
-
-@end menu
-
-@node Redirection, Here-documents, I/O, I/O
-@section Basic Redirection to Files
-
-@c posix 3.7  n op word
-@c  op is:  <  >  >|  >>  <<  <&  >&  <>
-@c  special cases for <&-, >&-, <<-
-
-@cindex redirection operators
-@cindex standard input, redirecting
-@cindex standard output, redirecting
-@cindex standard error, redirecting
-This section shows the basic method for redirecting the standard input,
-standard output, and standard error to files.
-@xref{Advanced Redirection}, for more complicated forms of redirection.
-@c may want appendix that has 1 unified table of operators
-
-In general, a simple redirection of input or output to a file looks like this:
-@c rms: redir op can be among or before args (even before cmd?) [see posix]
-
-@ignore
-@c They were each shown with args, but it's probably better to consider
-@c those as part of the command.  E.g. it was:
-@var{command} @r{[}@var{arguments}@r{]} > @var{file}
-@end ignore
-@example
-@var{command} @var{redirection-operator} @var{file}
-@end example
-@c show syntax for more than 1 redir op in a cmd??
-
-@noindent
-The @var{file} is the file or device you want to use,
-@c note: "file" includes "devices" (such as printers).  Explain somewhere?
-@c Nice thing in Unix is devices are simply files in directory /dev
-and the @var{redirection-operator} is @samp{<} for input; @samp{>}, @samp{>|},
-or @samp{>>} for output; or @samp{>&} for output and error.
-Spaces surrounding the operator are optional, but it is a good idea
-to leave a space before the operator.
-(Otherwise you might accidentally specify one of the redirections
-with a file descriptor -- @ref{Advanced Redirection}.)
-@c Space needed after arg if it is a # and could look like file-descr.
-@c rms: spaces optional around the REDIRECTION, but required to avoid ambig.
-
-@ignore
-In this section, with no file descriptor before operator (i.e. file
-descriptor defaulted) and file name required after each operator, the
-operators are as follows:
- >  >|  >>  <  posix
- >&            bash extension (from csh)
-               (posix doesn't define >& with file name)
-Anything involving a file descriptor or no file name is considered advanced.
-@end ignore
-
-@table @code
-@item >
-@itemx >|
-@itemx >>
-instruct the shell to send the command's standard
-output to the specified @var{file} instead of to your terminal.
-@cindex @code{>} operator, redirecting output
-@cindex @code{>>} operator, redirecting output
-
-@c copy of following itemize is in advanced chapter
-@itemize @bullet
-@item
-If @var{file} doesn't yet exist, it is created.
-
-@item
-If @var{file} already exists:
-@itemize @bullet
-@item
-With @samp{>} and @samp{>|}, @var{file} is erased before the
-first output is written to it.  Be careful:
-If a file of the same name already exists,
-its contents are deleted before your command's output is
-written to that file.
-If you don't want @samp{>} to erase existing files, set the
-shell's @code{noclobber} variable; then
-@samp{>} with an existing file will generate an error message and leave
-the file alone.  (But note that @samp{>|} will clobber existing files
-regardless of the setting of the @code{noclobber} variable.)
-@c Note: alternative 'set -o noclobber...' for noclobber var -- where
-@c should cover this? which is preferable?
-
-@item
-With @samp{>>}, the output is appended to the end of an existing @var{file}.
-@end itemize
-@end itemize
-
-Note that @samp{>}, @samp{>|} and @samp{>>} redirect only the standard
-output; error messages printed by @var{command}, which go to standard
-error, still appear on the terminal and not in the file @var{file}.  To
-redirect error messages along with other output, see @samp{>&}, below.
-
-Here's an example of output redirection:
-
-@example
-bash$ who
-glassw   ttyq0   Apr 15 15:09   (worker-8)
-glassw   ttyq1   Apr 15 20:50   (worker-7)
-cqc      ttyq2   Apr 15 18:15   (worker-9)
-zvona    ttyq5   Apr 15 14:13   (nico)
-painter  ttyd0   Apr 15 21:00
-stf      ttyh4   Apr 15 11:58
-sandiway ttyh9   Apr 13 23:05
-pwu      ttyhc   Apr 15 15:19
-bash$ who > users-file
-bash$
-@end example
-
-@noindent
-The command @code{who} prints onto standard output a list of
-the users currently logged into a computer system.
-The simple command @samp{who}
-prints onto your screen (the default standard output).  The
-command @samp{who > users-file} redirects @code{who}'s
-standard output to
-the file @file{users-file}, so that the output of the @code{who}
-command goes into @file{users-file}
-instead of appearing on the screen.@refill
-
-The following command sequence creates a file containing the current
-date followed by the list of users currently logged onto the system:
-
-@example
-bash$ date > date-who-file
-bash$ who >> date-who-file
-bash$ cat date-who-file
-Sat Aug 04 11:27:05 EDT 1990
-glassw   ttyq0   Apr 15 15:09   (worker-8)
-cqc      ttyq2   Apr 15 18:15   (worker-9)
-zvona    ttyq5   Apr 15 14:13   (nico)
-painter  ttyd0   Apr 15 21:00
-stf      ttyh4   Apr 15 11:58
-pwu      ttyhc   Apr 15 15:19
-bash$
-@end example
-
-@noindent
-The command @code{date} prints the system date on standard output.
-In this example, the output of @code{date} becomes the first line of the file
-@file{date-who-file} created with the @samp{>} redirection operator.
-The output of the @code{who} command is @emph{appended} to the file
-@file{date-who-file}, because we used the @samp{>>} redirection
-operator.  @code{cat} simply shows the file's contents on the terminal.@refill
-
-@item &>
-@itemx >&
-both instruct the shell to send the command's
-standard output @emph{and} standard error to the file @var{file},
-instead of to your terminal.  Both ordinary output and any error
-messages are written to @var{file}, interspersed, in the order they
-are generated.  Of the two forms, the second (@code{>&}) is preferred,
-because it conforms to the convention that output redirection operators start
-with @samp{>}.
-@cindex @code{>&} operator, redirecting output
-@cindex @code{&>} operator, redirecting output
-
-As with @samp{>}, @var{file} is erased before the first output is written to
-it.  Be careful:
-If a file of the same name already exists, its contents are deleted
-before your command's output is written to that file.
-If you don't want @samp{>&} to erase existing files, set the
-shell's @code{noclobber} variable; then
-@samp{>&} with an existing file will generate an error message and leave
-the file alone.
-@c no appending version of >& analogous to >>  --  suggested it to bfox
-
-The example at the end of this section shows how to redirect
-standard error and standard output to different places.
-
-@item <
-instructs the shell to get the command's standard input from the
-specified file @var{file} instead of from your terminal.
-@cindex @code{<} operator, redirecting input
-
-Here's an example of this type of redirection:
-
-@example
-bash$ wc < date-who-file
-     7     39     244
-bash$
-@end example
-
-@noindent
-The command @code{wc} counts the number of lines, words, and
-characters it reads from standard input.  Using the standard input
-redirection operator, @samp{<}, we made @code{wc} read a file as its
-standard input.  In this example, @code{wc} prints the line, word, and
-character counts for the file @file{date-who-file} that was created in the
-example for @samp{>>} above using the @code{date} and @code{who} commands.
-
-Actually, redirection was not necessary for the above command,
-since @code{wc} accepts the name of an input file as an argument:
-
-@example
-bash$ wc date-who-file
-     7     39     244
-bash$
-@end example
-@end table
-
-@cindex redirection operators, using more than one
-More than one redirection operator can appear in a command.
-Here's an example that redirects both standard input and standard output:
-
-@example
-bash$ sort < users-file > sorted-list
-@end example
-
-@noindent
-This example reads the input for the command @code{sort} from the file
-@file{users-file} and writes the sorted output to the file
-@file{sorted-list}.  Any error messages are still written to the
-default standard error, which is your terminal screen.
-
-You cannot redirect a single I/O stream to more than one file:
-If you specify more than one redirection of the same I/O stream,
-only the rightmost takes effect.
-(The shell evaluates redirection operators in the order encountered, from
-left to right.)  For example, the output of @code{sort} in the following
-goes only to @file{out-file}, not to @file{sorted-list}.
-@example
-bash$ sort < users-file > sorted-list > out-file
-@end example
-
-In the next example, the output of @code{sort} goes to @file{out-file}
-and the error messages go to @file{error-file}.  The @samp{>&} redirects
-both standard output and standard error, then the @samp{>} redirects
-standard output to @file{out-file}, overriding the @samp{>&}.
-@example
-bash$ sort < users-file >& error-file > out-file
-@end example
-
-
-@node Pipes, Pipes, Other Redirections, I/O
-@section Pipes -- ``Mix-and-Match'' Commands
-@c  pipes are what connect processes, pipeline is whole thing
-@c    check terminology throughout
-
-@cindex pipe
-@cindex pipeline
-@cindex pipes
-@cindex @code{|}, use in piping
-@cindex intermedate file, using pipe to avoid
-@cindex combining commands with pipes
-@cindex connecting commands together with pipes
-
-@c a picture of boxes piped together would be nice
-One of the shell's most powerful features is the way it lets you ``mix
-and match'' commands.  By feeding the output of one command into another
-command, you can get a combination of behaviors that no predefined
-command provides.
-
-A @dfn{pipe} connects the standard output of one command to the standard
-input of another.
-This has the same effect as redirecting the standard output of the first
-command to a file, then redirecting the standard input of the second
-command to come from that file; but the pipe does this with a single
-command, and stores no intermediate files on disk.
-@c also: separate processes means output produced before 1st cmd finishes
-
-For example, let's say you want to see an alphabetical list of the
-users logged into the system.
-There is no command that does this, but there is a command
-@code{who} that produces a list of the logged-in users and
-a command @code{sort} that sorts its input lines.
-By piping these commands together
-(making the output of @code{who} become the input to @code{sort}),
-you can get the desired sorted list:
-@c contrast with   who > file; sort < file
-
-@ignore
-@c the raw data before sorted
-@example
-bash$ who
-
-glassw   ttyq0   Apr 15 15:09   (worker-8)
-glassw   ttyq1   Apr 15 20:50   (worker-7)
-cqc      ttyq2   Apr 15 18:15   (worker-9)
-zvona    ttyq5   Apr 15 14:13   (nico)
-painter  ttyd0   Apr 15 21:00
-stf      ttyh4   Apr 15 11:58
-sandiway ttyh9   Apr 13 23:05
-pwu      ttyhc   Apr 15 15:19
-@end example
-@end ignore
-@example
-bash$ who | sort
-
-cqc      ttyq2   Apr 15 18:15   (worker-9)
-glassw   ttyq0   Apr 15 15:09   (worker-8)
-glassw   ttyq1   Apr 15 20:50   (worker-7)
-painter  ttyd0   Apr 15 21:00
-pwu      ttyhc   Apr 15 15:19
-sandiway ttyh9   Apr 13 23:05
-stf      ttyh4   Apr 15 11:58
-zvona    ttyq5   Apr 15 14:13   (nico)
-bash$
-@end example
-
-@heading Viewing Output by the Screenful 
-
-@cindex @code{more}, with pipes
-@cindex pipe, used to view output by the screenful
-An extremely important use for pipes is to view the output of a command
-one screenful at a time, by piping the command's output into the
-@code{more} command.
-
-Let's say you want to see a detailed listing
-of a directory that contains a large number of files.  If you just
-type @samp{ls -l}, the listing will scroll by faster than you can read it.
-But if you use a pipe to attach the standard
-output of @samp{ls -l} to the standard input of the @code{more}
-command, you can page through the directory listing at your leisure:
-
-@example
-bash$ ls -l | more
-@end example
-
-@node How to pipe
-@subsection How to Pipe Commands
-
-@cindex pipeline, general format
-To pipe the output of one command into the input of another, place a
-vertical bar, @kbd{|}, between them.  The general format for a
-@dfn{pipeline} is:
-
-@example
-@var{command} | @var{command2} @r{[}| @dots{} @r{]}
-@end example
-
-@noindent
-That is, any number of commands are given, separated by vertical bars,
-@kbd{|}.
-The standard output of @var{command1} is connected to the standard
-input of @var{command2}, and so on.
-
-In order for a pipeline to work, the first command in the pipeline
-must generate output to the standard output,
-the last command must accept input from the standard input, and
-any intermediate commands must both read from standard input
-and write to standard output.
-
-@c rms: "filter" terminology good to know, standard terminology
-@c   for program designed to be used in a pipeline.
-@c  Many  unix cmds designed so CAN be used as filter (i.e.they use
-@c   standard input and standard output)
-Commands used between pipe operators are called @dfn{filters}.  They
-accept input from the standard input and generate output to
-the standard output.
-Examples of commands that can be used as filters
-include @code{sort} (which sorts its input lines) and
-@code{pr} (which formats text for printing).
-
-@menu
-* tee::  Using the @code{tee} command to preserve the
-         contents of intermediate files.
-@end menu
-
-@node tee, tee, Pipes, Pipes
-@subsection Saving Intermediate Pipeline Data with @code{tee}
-
-@cindex pipeline, @code{tee} in
-@cindex @code{tee} command for pipelines
-@cindex pipeline, saving intermediate data
-Normally, any data generated by commands in a pipeline exists only
-momentarily within the pipeline, because the output of each command
-simply flows into the next command.
-
-The command in the following example outputs the five lines of
-the file @file{list-files} that come first alphabetically:
-
-@example
-bash$ sort list-files | head -5
-@end example
-
-@noindent
-This works as follows:
-The command @code{sort list-files} sorts the file, sending the sorted
-data to the command @code{head -5}, which outputs the first five
-lines in its input.  The sorted data is discarded.
-
-If you want to preserve the sorted data, you could first @code{sort} the
-original data into a new file, then look at the @code{head} of that file:
-
-@example
-bash$ sort list-files > sort-saved
-bash$ head -5 < sort-saved
-@end example
-
-@c pipe vs. redirection -- any pros or cons?
-
-On some systems,
-there is also a way to preserved the sorted data while using a pipeline.
-To preserve intermediate pipeline data, such as the sorted data
-in the above example, insert the @code{tee} command into your pipeline.
-(Note: @code{tee} is not built into BASH.  It comes with GNU, and may
-or may not exist on other operating systems.)
-@c bfox says: tee doesn't belong here (no non-shell cmds do)
-@c   including tee vs. including ps:
-@c      ps comes with unix, behavior varies from system to system
-@c      not all systems have tee -- though gnu will
-@c jems thinks tee should be kept here
-The @code{tee} command takes a file name as its argument and does two things:
-@itemize @bullet
-@item
-It copies its standard input to the standard output.
-
-@item
-It copies its standard input into the specified file.
-If the file doesn't exist, @code{tee} creates it.
-If the file already exists, @code{tee} overwrites it,
-unless you give @code{tee} the @code{-a} option, in which case
-it appends to the file.
-@c If tee arg omitted: It's a NOP: no err msg, no tee output
-@c bfox: reason is so following will ``work'' even if var has no value
-@c    cmd 1 | tee $var | cmd2
-@end itemize
-
-@noindent
-(The name @code{tee} stands for the T shape of a pipe used in plumbing
-to split the flow into two parts.)
-
-Thus @code{tee} can be used to copy the data passing through a pipeline
-into a file for later use.  For example, we can insert a @code{tee} into
-the pipeline shown above:
-
-@example
-bash$ sort list-files | tee sort-saved | head -5
-@end example
-
-@noindent
-Now the output of @code{sort} is sent to the @code{tee} command, which
-stores the sorted data in a file called
-@file{sort-saved} and also passes that data on to the next
-program in the pipeline, @code{head}
-@c diagram of example would be nice
-@c  list_files -> sort -> sorted data -> head -> lines on terminal
-@c  where sort and wc are in boxes
-
-@node Pipes and redirection
-@subsection Redirection in Pipelines
-
-You may redirect the standard input of the first command in a pipeline
-and the standard output and standard error of the last command in a pipeline
-by using redirection operators (@pxref{Redirection}) in those commands.
-
-The following example sorts the file @code{list-files}
-(given to @code{sort} on its standard input by redirection with @code{<}),
-gives the sorted output to @code{head}
-(by connecting the standard output of @code{sort} to the standard input
-of @code{head} with a pipe, @code{|}),
-and stores the first five lines of the sorted output in the file @file{5lines}
-(by redirecting the standard output of @code{head} to that file with @code{>}):
-@example
-bash$ sort < list-files | head -5 > 5lines
-@end example
-
-
-@node Pipeline processes
-@subsection Processes in a Pipeline
-
-@c new concepts: process, exit status
-
-Each command in a pipeline is run as a separate process.
-That is, the commands run simultaneously, in parallel.
-
-The shell waits for all commands in the pipeline to terminate before
-returning control to you.
-
-The exit status of the pipeline is the exit status of the last command.
-
-@node File Names, Customization, I/O, Top
-@chapter File Names: Shorthands and Special Characters
-@c need better title
-@c need intro to material in chapter
-
-@c new topic for bash 1.07 will go here:  filename expansion
-@c   'foo{a,b}' ==> 'fooa foob'
-
-@node Wildcards
-@section Wildcards
-
-@c Wildcards also show up in Case statement patterns
-@c rms: right to think of wildcards as being for file names
-@c    (case statement is strange additional use)
-
-The shell allows you to specify sets of file names using @dfn{filename
-patterns} containing @dfn{wildcard characters}, so that you don't have
-to type all of the file names directly.
-@cindex file names, wildcards in
-@cindex wildcard characters in file names
-
-For example, if you want information about the five files in the
-current directory that end with @samp{.c}, you don't have to type
-the five file names:
-
-@example
-ls -l foo.c bar.c fred.c card.c game2.c
-@end example
-
-@noindent
-Instead you can type:
-
-@example
-ls -l *.c
-@end example
-
-@noindent
-The shell interprets the filename pattern @samp{*.c} as matching all
-existing file names ending in @samp{.c}.  The character @samp{*}, which
-can match almost any substring of a file name, is
-called a wildcard character.
-@xref{Wildcard Constructs}, for an explanation of @samp{*} and the other
-wildcard constructs.
-
-A single pattern may contain more than one wildcard.
-For example, @samp{*.c*} would match all file names that contain
-@samp{.c}.
-
-@c document 'set -o noglob...' for disabling wildcards -- disables all
-@c of them?
-
-@node Wildcard Constructs
-@subsection Wildcard Constructs
-
-Here are the wildcard constructs and their meanings:
-
-@table @code
-@item *
-The asterisk matches any sequence of zero or more characters, except
-that it does not match a period at the beginning of a file name.
-(If you want @samp{*} to include initial periods, set the variable
-@code{glob_dot_filenames}.)
-
-For example: @samp{foo*} matches any file name whose first three
-characters are @samp{foo}, including the name @file{foo} itself;
-@samp{*foo} matches any file name not starting with @samp{.} whose last
-three characters are @samp{foo}, including the name @file{foo} itself;
-and @samp{.*foo} matches any file name starting with @samp{.} whose last
-three characters are @samp{foo}, including the name @file{.foo} itself;
-@c Beware! .* can behave unexpectedly
-@c  ls .* expands to ls . .. .emacs (and so on)
-@c  but ls . and ls .. list those directories!
-@c by contrast, *. behaves as expected (* can't match initial .)
-
-@item ?
-The question mark matches any single character, except
-that it does not match a period at the beginning of a file name.
-(If you want @samp{?} to match initial periods, set the variable
-@code{glob_dot_filenames}.)
-
-For example, @samp{foo?} matches any four-character file name
-whose first three characters are @samp{foo}.  (Note that @samp{foo?}
-does not match @samp{foo} because @samp{foo} has only three characters.)
-
-@item [@var{char-set}]
-This @dfn{character set} matches any @emph{one} character specified by
-the @var{char-set}.
-Like a @samp{?}, a character set matches a single character.  Unlike the
-@samp{?}, the character set is selective about which characters it will match.
-
-The @var{char-set} consists of a sequence of any number of characters
-and/or any number of ranges of characters.
-The character set matches any of the single characters listed or any of
-the characters included in the specified ranges.
-
-For example, @samp{[123abcdq]} will match any one character from
-the set @samp{123abcdq};
-@samp{[1-3a-dq]} matches exactly the same characters, but it uses
-hyphens to indicate the ranges of characters from @samp{1} to @samp{3}
-(inclusive) and from @samp{a} to @samp{d}.
-
-Thus, @samp{foo[12]} matches @samp{foo1} and @samp{foo2} and nothing else;
-@samp{foo[a-z]} matches any four-character file name whose
-first three characters are @samp{foo} and whose fourth
-character is any lower-case letter; and
-@samp{foo[a-z12]} matches any four-character file name whose
-first three characters are @samp{foo} and whose fourth
-character is @samp{1}, @samp{2}, or any lower-case letter.
-
-@c KELLEM added ^ item (as synonym for !)
-@item [^@var{char-set}]
-This matches any @emph{one} character @emph{not} included in the given
-@var{char-set}, where the @var{char-set} is as specified above for
-the @code{[@var{char-set}]} case.
-For example, @samp{foo[^a-z12]} matches any four-character file name whose
-first three characters are @samp{foo} and whose last character is not
-@samp{1}, @samp{2}, or a lower-case letter.
-
-@item [!@var{char-set}]
-This is the same as @code{[^@var{char-set}]} if history substitution
-is disabled.
-Otherwise the @samp{!} invokes history substitution (@pxref{History}).
-@c 12/90, Bash 1.06.25:  'ls b[!a]*' --> 'a]*: Event not found'
-@c   in particular, ! does history subst and [, ]*, are not interpreted here
-@c   because ! done before shell sees line
-@c  Tried quoting the ! -- ls fo[\!a] -- but it just said fo[!a] not found.
-@c    (didn't find my file 'foo')
-@c  Works with history disabled
-@end table
-
-@node Wildcard implementation
-@subsection How Wildcards Work
-
-Each command word that contains a wildcard character is @dfn{expanded},
-which means it is replaced by a sequence of words, one for each
-file that matches the pattern.
-If @samp{*.c} in the command @samp{ls -l *.c} expands to
-@samp{foo.c bar.c fred.c card.c game2.c},
-the @code{ls} command sees these five file names as its arguments;
-it never sees the @samp{*.c}.
-
-Normally, a filename pattern that doesn't match any files is left in the
-command as is (it expands to itself).  For example, @samp{*.foo} is left
-as is if there are no files ending in @samp{.foo}, so in the following
-example the @code{ls} command gets @samp{*.foo} as its argument
-and reports that there is no such file (which is what you want to know).
-
-@example
-bash$ ls -l *.foo
-*.foo not found
-bash$
-@end example
-
-@noindent
-If for some reason you don't like this behavior, you can set the
-variable @code{allow_null_glob_expansion}.  When that variable is set, a
-pattern that doesn't match anything is removed from the command (expands
-to a null file name).  In the above example, the @samp{*.foo} would
-disappear, and @code{ls} would get no arguments, so it would report
-on all files in the current directory.
-
-Warning: A command word containing a wildcard construct is expanded
-to a sequence of file names @emph{whether or not you intended it to be
-a file name}.  At the time the expansion takes place, the system does
-not know or care whether it makes sense to treat the word as a file name.
-
-@node echo, Quotation, File Names, File Names
-@section Using @code{echo} to Preview Wildcard Expansion
-
-If you are going to use wildcards for something dangerous, like deleting
-a group of files, it is a good idea to be sure you know what files the
-pattern will match.
-
-@cindex @code{echo} command
-@cindex command lines, previewing
-To find out how wildcard characters will be expanded without actually
-executing your command, use the @code{echo} command to preview the
-expansion of a filename pattern.  The @code{echo} command
-simply displays its arguments fully expanded, with
-any pattern that doesn't match anything left as is
-(or deleted, if you have set @code{allow_null_glob_expansion} --
-@ref{Wildcard implementation}).
-@c rms: expand = replacing text with other text (!, *, ...)
-@c   interp may be part of expand,
-@c    e.g. substituting result of cmd into enclosing cmd
-@c  NB: $(...) is new version of `.  Nice because it nests
-
-For example,
-
-@example
-bash$ echo rm *.log *.foo
-rm bash.log *.foo
-bash$
-@end example
-@noindent
-shows that if I ask to delete (with the @code{rm} command) all files
-ending in @samp{.log} or @samp{.foo}, I will be deleting only
-@file{bash.log}.
-The pattern@samp{*.log} was expanded to the single file name that matched, namely
-@samp{bash.log}, and @samp{*.foo} was not expanded because it did not
-match any existing file names.
-
-@c what is echo for besides wildcards & variable substitution?
-@c   rms: in shell scripts to print output
-@c   Not so good for ! expansion:
-@c I tried 'echo !n' where n is a command #
-@c It echoed with the ! expanded, namely it display 'echo ...'
-@c Then it went on to execute that last 'echo ...' ???
-@c Ah: the 'echoing' of the expansion is just the normal ! expansion,
-@c not the execution of the 'echo !n' command.  First the shell displays
-@c the expanded command, then it executes it.  So echo is a confusing
-@c way to preview ! expansion.
-
-@node Wildcard Quotation
-@section File Names Containing Special Characters
-
-@cindex wildcards, quoting
-@cindex quoting, special characters in file names
-
-Normally, file names are made up of ``ordinary'' characters --
-alphanumeric characters (letters and numbers), periods (@samp{.}), and a
-few other characters (such as @samp{_} or @samp{~}) that have no special
-meaning to the shell.  For example: the file containing this documentation is
-named @file{bash.texinfo}; a backup version of this file saved for me by
-Emacs is called @file{bash.texinfo.~1~}; and the file in which BASH
-keeps track of commands I have issued (@pxref{History List}) is called
-@file{.bash_history}.
-
-If a file name contains a `special'' character -- a character that
-has special meaning to BASH, you must @dfn{quote} it to prevent
-BASH from giving the character its special interpretation.
-In particular, you must quote the following characters if you need
-to include them in a file name:
-
-@example
-  !  |  &  ;  <  >  (  )  $  `  '  "  \  *  ?  [  ]  #
-@end example
-@c above is all special chars?  what about : { }  (others?)
-@c  rms: colon not special, braces are
-@c  bfox: should quote the braces in file ames
-@c I tried it 1/31/91:  foo} was not special, foo{ gave message about
-@c   missing } but then went on to process foo{
-@c bfox: braces recognized as special only if separated from surrounding text
-@c   bourne:if not delimited, brace is regular char
-@c bfox 2/8/91
-@c   New bash feature (stole from csh): foo{a,b} ==> fooa foob
-@c   Will fix to not treat { as brace expansion unless see a comma
-
-@xref{Quotation}, for information on how to quote.
-
-@node Tilde
-@section Tilde Expansion
-
-You can avoid having to type long directory pathnames by using a
-shorthand for your home directory (and even other users' home
-directories) and for the directory you were last connected to.
-All of these directory abbreviations start with @kbd{~}.
-
-You may also see this home-directory shorthand in program output.
-For example, when you ask Emacs to find a file,
-it uses @kbd{~} instead of spelling out your home directory
-in the default pathname in the file-name prompt.
-
-@cindex expansion, tilde
-@cindex tilde expansion
-@c  terminology: tilde substitution vs. tilde expansion (title)
-@c  bfox: usually =, but sometimes a precedence issue
-When a tilde character (@kbd{~}) appears at the beginning of a word
-in a command, it is treated as follows:
-
-@table @code
-@item ~
-@itemx ~/@dots{}
-Tilde alone (or followed by a slash) is replaced by the value of the
-variable @code{HOME}, or by your home directory if @code{HOME} is unset.
-
-@item ~@var{login-name}
-@itemx ~@var{login-name}/@dots{}
-Tilde followed by someone's login name is replaced by that person's home
-directory.
-
-@item ~+
-@itemx ~+/@dots{}
-Tilde followed by a plus sign is replaced by the value of the variable
-@code{PWD}, which is the directory you are connected to.
-(Thus @samp{~+} is the same as @samp{.}.)
-@c ? where are ., .. etc covered? Operating system rather than shell?
-
-@item ~-
-@itemx ~-/@dots{}
-Tilde followed by a minus sign is replaced by the value of the variable
-@code{OLDPWD}, which is the directory you were previously connected to.
-@end table
-@c ? what happens if there is stuff other than / after the ~+ or the ~-
-
-In the following example, I change directories and copy a file
-from the first directory to the second:
-@example
-bash$ cd /top/next/a-subdirectory
-bash$ cp ~-/file-to-copy .
-bash$
-@end example
-
-Note for advanced users:
-The above @samp{~} constructs can
-also be used in pathnames that are stored in variables.
-For example, you can use pathnames
-with tildes in the @code{PATH}, @code{MAILPATH}, and @code{CDPATH} variables.
-In such variables, any pathname (not just the first) can start with
-@samp{~}.  That is, @samp{~} can appear after a @samp{:}, which
-separates pathnames.
-
-@node History List
-@chapter The Command History List
-
-BASH maintains a list of the commands you have given it most recently,
-so that you can reuse earlier commands or just review what you did.
-
-This section explains what is actually remembered and how you can
-influence that by changing the values of shell variables.
-The following sections explain how to make use of the command history.
-@xref{Basic Variable Mechanics}, for general information on shell variables.
-
-@cindex history list, size of
-@cindex history list, changing size of
-The length of the history list is controlled by the @code{HISTSIZE}
-shell variable.  By default, the value of this
-variable is 500; that is, the shell saves the last 500 command lines.
-You can make the length of the history list bigger or smaller by
-changing the value of the @code{HISTSIZE} variable.  A value of zero means
-no lines are saved.
-
-In this example, we check the value of @code{HISTSIZE} and find that
-it has the default value of 500, then we reduce the value to 128:
-
-@example
-bash$ echo $HISTSIZE
-500
-bash$ HISTSIZE=128
-bash$
-@end example
-
-The command history does not start out empty whenever you log in.
-Rather, commands are saved from session to session.  Old commands
-are erased from the list only when the length of the list exceeds
-@code{HISTSIZE}.
-
-The way BASH remembers commands between sessions is to store them
-in a file.
-By default, the file is @file{~/.bash_history} in your login directory.
-You can change this file name, if you want, by setting the
-@code{HISTFILE} variable.
-
-Normally, all commands are remembered in the history list.
-You can stop the recording of command lines beginning with a space
-or of consecutive identical command lines by setting the
-@code{history_control} variable, which is not set by default.
-@table @code
-@item history_control=ignorespace
-stops lines beginning with a space from being recorded.
-
-@item history_control=ignoredups
-stops a line identical to the last one in the history list from being recorded.
-@end table
-@noindent
-(Sorry, but there is to way to stop both kinds of command recording at once.)
-
-To see the history list, use the @code{history} command (@pxref{History}).
-You could also look at the file in which BASH saves history,
-but that is normally updated only when you exit from BASH, so it
-will contain the history as of the end of your last session
-rather than the current history.
-
-To reuse earlier commands (or portions of earlier commands),
-use Emacs-style keystrokes (@pxref{History Use}) or
-history substitution (@pxref{History}).
-
-@node Customization, Job Control, File Names, Top
-@chapter Customizing Shell Behavior
-
-@cindex customizing shell behavior
-@cindex controlling shell behavior
-@cindex changing shell behavior
-You can control some aspects of the shell's behavior, by changing
-values (such as how often the shell checks whether you have new mail)
-or by enabling or disabling features (such as whether
-@samp{!} invokes history substitution -- if you don't know what that is,
-you should probably disable it).
-
-Many parts of this manual include information on how to customize
-the behavior being described.
-This chapter covers some basic customizations that don't fit naturally
-into other topics or that are especially recommended for BASH novices.
-@c what to include here?
-@c Decision: Only include customization that doesn't fit in another
-@c chapter.  Customization of particular features will be in those
-@c chapters -- e.g. history vars with history stuff
-
-To try out a customization command, you can simply type it
-and see if you like the changed behavior.
-But you should not waste time retyping your favorite customization
-commands each time you log in.
-Instead, the commands you always want in effect should be put into a
-startup file that BASH automatically executes whenever you log in
-(@pxref{Login script}).
-
-@node Variables
-@section Shell Variables
-
-@cindex variables, controlling shell behavior
-@cindex shell variables, to control behavior
-
-One way to affect shell behavior is to set @dfn{variables} used by the
-shell.
-
-@xref{Basic Variables}, for documentation of some of the more basic
-variables.  Other variables are covered where appropriate throughout
-this manual.
-@c how should those sections help you manipulate the vars?
-@c   repeat the how-to info?  point to {Variable Mechanics}?
-@xref{Shell Vars}, for documentation
-of all the variables set or used by the shell.
-
-Some of the mechanics of manipulating shell variables are given here
-(@pxref{Basic Variable Mechanics}).
-@xref{Variable Mechanics}, for more complete information.
-
-@node Basic Variable Mechanics
-@subsection Manipulating Shell Variables
-
-To find out the value of a variable, type @samp{echo $@var{name}}, where
-@var{name} is the variable of interest.  (Be sure to include the @samp{$}; if
-you omit it, @code{echo} just repeats the @var{name} itself.)
-
-To change the value of a variable, type @samp{@var{name}=@var{new-value}},
-where @var{name} is the variable you want to change and @var{new-value} is
-the new value you want it to have.  Don't leave any blank space around the
-@kbd{=}.
-
-@emph{Warning:} Be careful to type variable names exactly as they are shown
-here, matching uppercase and lowercase letter exactly.  If you type a name
-wrong before an @samp{=}, you will either change the wrong variable or create
-a new variable; if you type a name wrong after @samp{echo $}, you will examine
-the wrong variable.
-
-In the following example, we ask for the value of the @code{MAILCHECK}
-variable, which is 600, then change it to 0 and verify our change.
-@example
-bash$ echo $MAILCHECK
-600
-bash$ MAILCHECK=0
-bash$ echo $MAILCHECK
-0
-bash$
-@end example
-
-
-@node Basic Variables
-@subsection Basic Shell Variables
-
-This section documents some basic shell variables whose values you might want
-to change.  For example, if you use more than one computer, you might want to
-change the shell prompt to be the name of the computer you are using instead
-of @samp{bash$ }.  @xref{Shell Vars}, for documentation of all the variables
-set or used by the shell.
-
-@c include any other vars?
-@c recommend (point to) other vars?  noclobber (for safety)
-
-@heading Directories
-
-@table @code
-@item HOME
-This holds the default argument for the @code{cd} command.  @code{HOME} is set
-to your login directory when you log in, so that a simple @samp{cd} command
-will return you to your login directory at any time.
-
-For example, I may want to frequently return to the directory where
-I work on GNU projects:
-@example
-bash$ HOME=/usr/jems/gnu
-bash$
-@end example
-
-@noindent
-Now a simple @samp{cd} command will return me to @code{/usr/jems/gnu} instead
-of to @code{/usr/jems}.
-
-@item PATH
-This is the search path the shell uses when looking for program files
-referenced in commands.  It holds a sequence of directory names separated by
-colons, to be searched from left to right.
-
-For example:
-
-@example
-/usr/gnu/bin:/usr/local/bin:.:/usr/ucb:/bin:/usr/bin/X11:/usr/bin
-@end example
-
-@c simplify or explain the PATH example
-@c :.: is especially opaque
-
-@end table
-
-@heading Mail
-
-@table @code
-@item MAILCHECK
-This specifies the amount of time that must pass before the shell will check
-whether your mail file (the file named by the @code{MAIL} variable) has
-changed.  The default is 60 seconds (1 minute).  An interval of 0 causes the
-shell to look for mail before printing each prompt.
-
-For example,
-
-@example
-MAILCHECK=600
-@end example
-
-@noindent
-causes the shell to check for mail before printing a prompt if 600 seconds
-have passed since the last check.
-@end table
-
-@heading Prompts
-
-@cindex customizing your prompt
-@cindex prompt, customizing
-When executing interactively, BASH displays the primary prompt (stored in the
-variable @code{PS1}) when it is ready to read a command, and the secondary
-prompt (stored in the variable @code{PS2}) when it needs more input to
-complete a command.
-
-@table @code
-@item  PS1
-This is the primary prompt string.  By default it is @samp{bash$ }.
-(Actually, the value in PS1 is @samp{bash\$ }, which prints as @samp{bash$ }
-unless you are a superuser.)
-
-The following example sets the primary prompt string to be your login name,
-followed by an @samp{@@} and the name of the computer, followed by a dollar
-sign and a space (for example, @samp{jems@@zurich$ }).  The variable value is
-enclosed in quotes (either double quotes, as shown here, or single quotes) so
-that it can include a space.  The special codes @samp{\u} and @samp{\h} for
-the user name and host name, as well as other codes useful in prompts, are
-explained below.
-@c ? apparently \u etc. must be within double quotes, otherwise they are
-@c used literally -- 1.06, 2/22/91
-
-@example
-PS1="\u@@\h$ "
-@c same as "$(whoami)@@$(hostname)$ "
-@c better example would be host & directory?
-@c single quotes -- deferred eval of $ things till expanded
-@c double quotes: $ things eval'ed when ps1 assigned (bfox)
-@c should use single if $ things in prompt should change -- e.g. your pwd
-@c  not relevant to \ methods below, since they're special to prompts,
-@c  not expanded as more fundamental mechanism
-@end example
-
-@item PS2
-This is the secondary prompt string, which is printed whenever bash needs more
-input to complete a command.
-@c what's an example of needing more input?  when does it happen?
-@c whenever syntax demands more -- e.g. 'if' statement without
-@c the closing 'fi'
-@c Also, the secondary prompt is printed after some errors. (which?)
-
-By default it is @samp{bash>}. 
-For example, we can change the secondary prompt string to @samp{more>}:
-
-@example
-PS2="more>"
-@end example
-
-Note that the secondary prompt, unlike the primary prompt, normally doesn't
-end in a space.  A space might fool you into thinking the lines of a
-multi-line command were automatically separated by a space, whereas they are
-actually run together exactly as typed (@pxref{Continuation}).
-@end table
-
-The values of @code{PS1} and @code{PS2} can contain special character
-sequences beginning with @samp{\} that are decoded as follows.  (That is, the
-@samp{\} and the following character are replaced by what they stand for when
-the prompt is printed.)
-
-@table @code
-@item \t
-The time.
-
-@item \d
-The date.
-
-@item \n
-Carriage return and line feed (@sc{CRLF}).
-@c notation/terminology: call it newline?
-
-@item \w
-The full pathname of the current working directory (the value of the variable
-@code{PWD}).
-
-@itemx \W
-The last element of the current working directory (the last directory in the
-value of the variable @code{PWD}).
-
-@item \u
-Your username.
-
-@item \h
-Your machine's hostname.
-
-@item \#
-The command number of this command (consecutively numbered since login,
-starting with 1).
-
-@item \!
-The history number of this command (the position of this command in the
-history list -- @ref{History List}).
-
-@item \\
-A backslash.  Since @samp{\} in a prompt normally isn't printed, but rather
-gives the next character a special meaning, if you want a @samp{\} in your
-prompt you must put @samp{\\} in the prompt string.
-
-@c next is too obscure for ordinary user
-@item \s
-The name of the shell (the basename of the positional parameter @code{$0}).
-@c basename = last element of path name  - normally bash
-@c $0 is name of prog you're running
-@c  if execute shell script foo directly (typing name of executable file),
-@c   inside foo, $0 is foo
-
-@c next is too obscure for ordinary user
-@item \$
-@samp{$} unless you are the superuser, in which case it is @samp{#}.
-@c actual criterion is: if the effective user @sc{id} is 0
-@c bfox: when log in, get a non-0 uid:  if su to become root, get eff uid=0
-
-@c next is too obscure for ordinary user
-@item \@var{nnn}
-The character that has the given octal code.
-@end table
-
-For example, if for some reason you did
-@example
-PS1="\d \t\n\u@@\h\n\w \#$ "
-@end example
-you would have a ridiculously long, multiline prompt, consisting of:
-@enumerate
-@item
-the date and time (separated by a space);
-
-@item
-your user name and host name (separated by an @samp{@@});
-
-@item
-your working directory, a space, the number of this command
-(numbered from 1 since you logged in), a @samp{$}, and a space.
-@end enumerate
-
-@example
-bash$ PS1="\d \t\n\u@@\h\n\w \#$ "
-Sat Feb  9 14:03:58
-jems@@zohar
-~/gnu 4$ who
-jems       pty/ttyu0    Feb  9 11:38
-gjs        pty/ttyu1    Feb  8 15:16
-Sat Feb  9 14:04:01
-jems@@zohar
-~/gnu 4$ 
-@end example
-
-@c following needs explaining -- is this about what happens
-@c   at prompt-printing time after \'s are processed?
-@noindent
-Note for advanced users:
-
-After the prompt string is decoded, it is expanded via parameter expansion
-and command substitution unless the variable @code{NO_PROMPT_VARS} is set, 
-
-@node set
-@section The @code{set} Command
-
-You can use the shell's built-in @code{set} command to turn shell options on
-and off (@pxref{Built-in}).  Here are some option settings you might want to
-use:
-
-@c recommend any other features for beginners?
-@c   'set -u' (or set -o nounseft...) to make unset vars different from null vars
-@c  2/8/91,bfox: 'set -o' is now for options, not history.
-@c    plain 'set -o' gives list of options
-
-@table @code
-@c following set is according to bfox -- must try it
-@item set -o histexpand off
-disables history substitution (@pxref{History}).
-If you don't know what history substitution is, it is a good idea to
-disable it.
-
-@end table
-
-@c anything else besides set from builtin chapter?  enable?
-
-@node Job Control, Combining commands, Customization, Top
-@chapter Background and Foreground Processes
-
-This chapter explains how to run commands in the @dfn{background},
-so that you can do more than one thing at a time, and how to
-interrupt commands that are running.
-
-First we present a short scenario that illustrates most of
-the facilities covered in this chapter.  The rest of the chapter
-provides full explanations of these facilities.
-
-@c ideas for following scenario:
-@c bfox often does:
-@c   start ftp, c-z it, bg, stops when needs tty input, fg, talk to it
-@c   find (see other example)
-@c **need output lines in following scenario, where marked by **
-@example
-bash$ monthly-accounting
-C-z
-bash$ bg
-**is job & proc # printed here as for & ?
-bash$ make >& log &
-[1] 18432
-bash$ emacs
-@c another good example would be 'mail'
-C-z
-bash$ jobs
-**show both background jobs running & suspended foreground job
-bash$ fg
-@dots{}
-bash$ **a done notice for one of the background jobs
-bash$ wait
-**done notice for other background job
-bash$
-@end example
-@c bfox: silly to WAIT for 1 job.  Should just FG it, and will get
-@c   prompt when it finishes.  Not all systems have job control. (Have
-@c   backgrounding, but can't interact with the bg job except to  send
-@c   it kill it.)  GNU does.  But Bash could run on a system V machine,
-@c   no job control.  Wait useful when no job control
-@c bfox: can log out & bg jobs keep going!
-@c   downplay wait -- don't expect users to use it
-@c users only need fg, bg, %, auto_resume
-@c Fix whole chapter to separate out what have with/without job control
-@c INTTERUPT IS NOT THE SAME AS STOP
-
-In this example, we gave the command @samp{monthly-accounting}, which started
-our @code{monthly-accounting} program (in the foreground).  We didn't want to
-sit there waiting for it to finish, so we interrupted it (@kbd{C-z}) and
-continued it running (@code{bg}) in the background.
-@c Beware: if we didn't have the foresight to redirect output originally
-@c it's too late now
-We then started a program compilation (@code{make@dots{}}) in the background
-(@code{&}).  While those background jobs ran, we started up @code{emacs}.
-After a while we wanted to see how the background jobs were coming along, so
-we interrupted the foreground job (@kbd{C-z}) and asked about our jobs.  The
-@code{jobs} command reported on our two background jobs and also told us about
-our suspended @code{emacs} job.  We resumed the @code{emacs} program
-(@code{fg}).  When we exited from @code{emacs}, BASH reported that our
-@code{make} job had finished.  We decided to wait for the
-@code{monthly-accounting} job to finish also (@code{wait}).
-
-
-@node Start job
-@section Starting a Job
-
-@cindex foreground
-Commands such as those shown in most of our examples are run in the
-@dfn{foreground}.  That is, the command runs and you do not get another BASH
-prompt (and the opportunity to run another command) until it finishes.  This
-is appropriate for short or interactive tasks.
-
-@cindex background
-If a program will be running a long time and does not require supervision or
-input from the terminal, it may be best run in the @dfn{background}.  This
-leaves your terminal free for other tasks.
-
-@node Background
-@subsection Starting a Background Job
-
-@cindex background processes
-@cindex background, placing things in the
-@cindex background (&)
-@cindex command lines, putting in the background
-
-To run a command in the background, place an ampersand, @samp{&}, at the end
-of the command line.  For example, the following command runs @code{make}
-(which recompiles a program as specified by a data base in the current
-directory) in the background (@samp{&}), redirecting @code{make}'s standard
-output and error messages to the file @file{log}:
-
-@example
-bash$ make >& log &
-@end example
-
-@cindex background job's standard input and output
-In this example, the command does not read from the standard input, so we had
-no reason to redirect standard input.  If a background command uses its
-standard input, you should normally redirect it, because the command cannot
-read from the terminal (which you are using for other things).  If a
-background task needs input from the standard input and you have not
-redirected the standard input:
-@c new concept: job control -- what is it?  Not defined in this manual
-@itemize @bullet
-@item
-On a system with job control (such as GNU), the background task is suspended
-if it needs input from the standard input.  You can then bring the task to the
-foreground (@pxref{Resuming}) and type the input.
-@c add an xref?
-
-@item
-On a system without job control (such as @sc{System V}), the background task
-is given a null string if it needs input from the standard input.
-@end itemize
-
-You should usually redirect the background command's standard output as well
-(as shown in the above example), unless you want the output to be interspersed
-with your other work on the terminal.  If your background task sends output to
-the standard output and you did not redirect the standard output, this output
-appears on your terminal, @emph{even if you are running another program}.
-
-When you run a background command, the shell prints out its job number and the
-@sc{pid} of the last process in the pipeline (@pxref{Numbers}).  In the
-following example, BASH assigns our background command a job number of 1.  It
-assigns a @sc{pid} of 18449 to the last process in the pipeline, @samp{wc >
-count-file}.
-
-@example
-bash$ ls -l | wc > count-file &
-[1] 18449
-bash$
-@end example
-
-@node notify
-@subsection Notification of Background Job Termination
-
-@cindex background, the @code{notify} variable
-@cindex @code{notify} variable, for background jobs
-
-When a background job is finished, BASH reports its job number, the word
-@samp{Done}, and the command line itself:
-
-@example
-[1]+  Done              ls -l | wc >count-file 
-@end example
-
-@noindent
-
-@c also reports when a job becomes suspended (by a signal)
-Normally the shell reports on jobs only when it issues a prompt, so it doesn't
-interrupt what you are doing.  If you wish to be told of changes in job status
-immediately (not just when you get the next shell prompt), set the
-@code{notify} variable, as follows:
-
-@example
-bash$ notify=
-@end example
-@c create a var = set a var;  how uncreate it if change your mind?  
-
-@node wait
-@subsection Waiting for Background Jobs to Terminate
-
-@cindex background, the @code{wait} command
-@cindex @code{wait} command
-If you want to wait for some or all of your background jobs to finish before
-issuing any more commands, you can save yourself the trouble of keeping track
-of the termination notices (@pxref{notify}) or repeatedly typing the
-@code{jobs} command (@pxref{Jobs command}) by using the @code{wait} command to
-wait for the background jobs to finish.
-
-@table @code
-@item wait
-@itemx wait @var{job_spec}
-@c next item added by KELLEM
-@itemx wait @var{pid}
-The @code{wait} command waits for active background processes to finish.  It
-suspends operation of your terminal until the specified background job
-(@var{job_spec}) or background process (@var{pid}) is finished.  If no job or
-process is specified, @code{wait} waits for all currently active jobs to
-finish.
-@c presumably wait finishes immediately if the job is suspended
-
-@var{job_spec} is any job specification 
-and @var{pid} is a @sc{pid} (@pxref{Numbers}).
-
-Let's assume that you want to start three lengthy jobs running concurrently
-and then want to wait for all three jobs to finish before continuing.  Here's
-how you'd do it:
-
-@c bfox: searches starting with / for files named core
-@c   & prints to standard out  (whole path name)
-@example
-bash$ find / -name core -print >& core_list &
-[1] 2240
-bash$ grep "Experience" /home/* >& exper_list &
-[2] 2241
-bash$ ls -lR / >& dir_list &
-[3] 2242
-bash$ wait
-[1]   Done                find / -name resume -print >& resume_list
-[2]-  Done                grep "Experience" /home/* >& exper_list
-[3]+  Done                ls -lR / >& dir_list
-bash$
-@end example
-
-@noindent
-In this example, three long jobs are performed simultaneously: each job is
-performed in background by the @code{&} operator at the end of the command.
-Notice that each job has its standard output and standard error redirected to
-a file with the @code{>&} operator so that the jobs do not write output or
-error messages to the screen while they are running in the background.  The
-@code{wait} command waits for all three commands to finish before allowing
-BASH to continue.
-@end table
-
-@menu
-* Numbers::    Job numbers and process identification
-               numbers.
-
-* Stopping::   Stopping and suspending jobs.
-
-* Job Specs::  Stopping, restarting, and otherwise
-               modifying the state of a job.
-
-* fg::         Resuming stopped or suspended jobs.
-
-* bg::         Placing stopped jobs in the background.
-
-* kill::       Terminating Processes.
-
-* nice::       Running processes at a low priority
-               using the @code{nice} command.
-
-* nohup::      Preventing jobs from stopping using 
-               the @code{nohup} command.
-@end menu
-
-@node Numbers, Stopping, Job Control, Job Control
-@section Jobs, Processes, and their Identifiers
-
-Each pipeline run by the shell is considered a separate @dfn{job}.  (A
-pipeline is a set of commands joined by pipes (@pxref{Pipes}), or a command
-without pipes -- which can be though of as the simplest possible pipeline,
-with only 1 command and 0 pipes.)  Each command in the pipeline is run in its
-own process (that is, they run simultaneously).  Hence a job consists of one
-or more processes.
-
-There are a number of commands that act on jobs or processes.  (For example,
-there are commands to suspend a job or kill a process.)  If you give a command
-for a job (for example, killing the job), this applies to all the processes in
-the job.  If you give a command for a process, only that process is affected.
-
-To specify the desired job or process in a command, you may need to refer to
-it by number.
-
-@itemize @bullet
-@item
-Every process has an identifying number, called a @dfn{@sc{pid}} (@sc{p}rocess
-@sc{id}entifier).  @sc{pid}s, which are assigned by the operating system, are
-unique throughout the entire system: No two processes, even belonging to
-different users, can have the same @sc{pid} at the same time.
-
-@item
-Jobs are identified by small @dfn{job numbers}, which are assigned by BASH.
-Unlike @sc{pid}s, these are not unique throughout the system: Any number of
-users may have a job 1 at a given time.  However, at any moment, all your jobs
-have numbers that are different from each other, which is all you need to
-uniquely identify them in commands.
-@end itemize
-
-When you run a background command, the shell prints out its job number and the
-@sc{pid} of the last process in the pipeline (@pxref{Background}).  In
-addition, you can find out these numbers by using the @code{jobs} command or
-the @code{ps} command (@pxref{Jobs command}).
-
-To refer to a process in a command, use its @sc{pid}.  To refer to a job in a
-command, use a @dfn{job specification} having one of the following forms:
-
-@c Unclear whether to include % as part of job spec.
-@c %... can be cmd by self
-@c Cmd with job spec as arg may allow omit % if no other arg.
-@c (1) job spec starts w %, bt sometimes can leave it out if want to
-@c e.g. in fg or bg:  fg 4 = fg %4
-@c  or
-@c (2) job spec has no %, sometimes precede with %
-@c RMS prefers view (1)
-
-@table @code
-@item %@var{number}
-refers to the job whose number is @var{number}.  For example, @samp{%1} refers
-to job number 1.
-
-@c bfox: both %strings require unambiguous match, and look in whole job list
-@item %@var{string}
-refers to the job whose command line (the command that started the job) starts
-with @var{string}.  For example, @samp{%emacs} refers to an @code{emacs} job.
-If there is more than one job whose name begins with the string, you'll be
-given an error message.
-
-@item %?@var{string}
-refers to the job whose command line (the command that started the job)
-contains @var{string}.  For example, @samp{%?mac} may refer to an @code{emacs}
-job.  If there is more than one job whose name contains the string, you'll be
-given an error message.
-
-@item %
-@itemx %+
-@itemx %%
-all refer to the current job (the last job stopped or placed in the
-background, @pxref{current job}).
-
-@item %-
-refers to the previous job (the second-to-last job stopped or placed in the
-background, @pxref{current job}).
-@c 1/7/91, 1.06 -- there was only 1 stopped job -- %- got it (same as %+)
-@end table
-
-Note that a job specification starts with a @samp{%} character.  In certain
-contexts, however, where it is clear that a job is being referred to, it is
-possible to omit the @samp{%}.
-@c I didn't show any examples where could omit it -- e.g. fg cmd
-
-@node Jobs command
-@section Finding Out Out What Jobs and Processes You Have
-
-To find out what stopped (suspended) and background jobs you have, you can use
-the @code{jobs} command.  The following example shows that we have three
-suspended jobs.
-
-@c must fix following examples so all based on same set of jobs
-
-@example
-bash$ jobs
-[1]   Stopped    rn
-[2]-  Stopped    vi file
-[3]+  Stopped    emacs file2
-bash$
-@end example
-
-Use the @code{-l} flag with @code{jobs} to see the jobs' processes as well:
-
-@example
-bash$ jobs -l
-[1]+ 18448 Done         ls -l
-     18449              | wc >count-file 
-bash$ 
-@end example
-
-@cindex @code{ps} command
-@cindex monitoring active processes
-@cindex processes, monitoring
-@cindex background, monitoring processes
-@c define 'active'?
-The @code{ps} command reports more detail about your active processes than
-@code{jobs} does, but it treats the processes as individuals and doesn't group
-them into jobs.  When typed without options, @code{ps} gives you the following
-information. (Note that @code{ps} is not built into BASH, so its output is
-different from system to system; however, the basics remain the same.)
-
-@table @code
-@item PID
-The process identification number.
-
-@item TTY
-The terminal from which the process was started.
-
-@item TIME
-The amount of computer time the process has used so far.
-
-@item COMMAND
-The name of the process.
-@end table
-
-Here's an example of the output of @code{ps}:
-
-@example
-bash$ jobs
-[1]+  Stopped             emacs
-bash$ ps
-  PID TTY      TIME COMMAND
- 2249 ttyp0    0:00 ps
- 2184 ttyp0    0:00 emacs
- 2170 ttyp0    0:00 bash
-bash$
-@end example
-
-@noindent
-This @code{ps} command shows that we have three processes: the @code{ps}
-process itself, an @code{emacs} process (which we presumably suspended
-earlier), and the @code{bash} process itself.  (@code{ps}, unlike @code{jobs},
-reports on foreground as well as background processes.)  BASH has assigned job
-number 1 and process number 2184 to @code{emacs}.
-
-@xref{ps, , @code{ps}, utilities, The GNU Utilities Manual},
-for more information.
-
-@node current job
-@subsection Current Job and Previous Job
-
-The @samp{+} and @samp{-} in the output of @code{jobs} identify the ``current
-job'' and ``previous job'' respectively.  The job most recently stopped
-(suspended) or put in the background is called the @dfn{current job}.
-@c last sentence unclear
-@c In particular, why is a Done job marked + ?  bfox: May fix later
-@c  Current job concept is useless for it, since you can't act on it
-@c  Remains + until it's reported to you and removed from list
-It is marked with a plus sign, @samp{+}, in the jobs listing.  The
-second-to-last job stopped or put in the background is called the
-@dfn{previous job}.  It is marked with a minus sign, @samp{-}, in the jobs
-listing.  When the current job is terminates or is moved to the foreground,
-the previous job becomes the new current job.
-
-The concept of ``current job'' is used for defaulting arguments
-to the @code{fg} and @code{bg} commands (@pxref{Resuming}).
-
-@c need examples
-
-@node Stopping, Job Specs, Numbers, Job Control
-@section Interrupting a Job
-
-@c How kill a stopped job?
-@c bfox: kill job-spec (shell continues & signals the process -- you
-@c   don't have to continue it yourself)
-@c   Shell tells op sys start process, processes can communicate by signals
-@c   Kill exists as ordinary disk-file cmd
-@c   Shell has separate built-in kill cmd so can do jobs, which are
-@c   shell (not op sys) concept.
-@c   If program doesn't disable TERM, it will definitely kill you
-@c rms: program handles signal if wants, otherwise unix does it
-@c   kill -9  (9=SIGKILL) is signal no one can ask to handle, thus kills anything
-
-@c confusion in this section between Job, Process, Program
-@c confused terminology: stop, kill, suspend
-@c rms: stop=suspend, terminate=kill (gone)
-
-@node Interrupt foreground
-@subsection Interrupting the Foreground Job
-
-@cindex stopping jobs
-@cindex jobs, stopping
-@cindex suspending jobs
-@cindex jobs, suspending
-
-You may want to abort the program you are currently running (in the
-foreground), or you may want to interrupt it temporarily in order to do
-something else.
-
-The following keys stop the foreground job, placing it in a type of
-``suspended animation'' so that it can be resumed if desired
-(@pxref{Resuming}).
-
-@c none of these interrupts worked while running vi under bash
-@c rms: interactive editors turn things off
-@table @code
-@item @kbd{C-z}
-This stops (suspends) the foreground job immediately.
-@c but SIGTSTP says programs may ignore C-z? (bfox: can ignore if enabled)
-
-@item @kbd{C-y}
-This is similar to @kbd{C-z} except it causes the process to be stopped
-(suspended) only when that process attempts to read input from the terminal.
-@c KELLEM: note that C-y (by default in readline lib) is bound to `yank'
-@c  thus fine when readline not running
-@c bfox: normally type C-y ahead of time (if at prompt, you would type C-z)
-@c  op sys buffers it & prepares to send signal later
-@c same true of C-z (op sys cmd, not bash)
-@end table
-
-@noindent
-Note for advanced users:
-@kbd{C-z} and @kbd{C-y} will not suspend the shell itself.
-@c Does this belong here?  There's lots of other stuff it won't suspend, too.
-To suspend a shell, such as one started with the @code{su} command,
-use the @code{suspend} command (@pxref{Built-in}).
-
-The following keys kill the foreground job.
-The job cannot be resumed.
-
-@table @code
-@item @kbd{C-c}
-This kills the foreground job immediately.
-
-@item @kbd{C-\}
-This kills the foreground job immediately and it is much harsher than @kbd{C-c}.
-@c  harsher in what way - just core dump? is core dump the purpose of C-\ ?
-@c bfox: C-c is SIGINT, which usually kills
-@c   but C-\ is SIGKILL, which can't be ignored
-This method usually produces a core (memory) dump for later analysis.
-@c why 'usually'?    bfox: core dump happens if not disabled with ulimit
-@c  by setting core dump size to 0
-@c  He normally has dumps disabled, enables to reproduce a bug
-@c  rms: if program  handles signal, it may not produce dump -- otherwise produced
-@c what is the core dump useful for?  rms: debugging
-@end table
-
-All of the above keystrokes can be reassigned to other keys,
-by using @code{stty}.
-@c need ref for stty
-We are just covering the most common keyboard methods of stopping jobs.
-Your operating system manual will tell you about other
-keyboard interrupts and how to remap your keyboard.
-
-No matter which method you use (except @kbd{C-c}), the shell tells you 
-when your program, or job, has been ``Stopped'', and prints another prompt.
-@c really does it for C-\ but not C-c ?
-@c be clearer what shell tells you
-
-@node kill, nice, bg, Job Control
-@subsection Interrupting a Background Job
-
-@cindex stopping jobs
-@cindex jobs, stopping
-@cindex suspending jobs
-@cindex jobs, suspending
-@cindex background, stopping jobs
-@cindex background, suspending jobs
-@cindex background, terminating processes
-@cindex processes, terminating
-@cindex terminating processes or jobs
-
-You cannot use the keyboard interrupts (@pxref{Interrupt foreground})
-to interrupt a background job, since background jobs do not listen to
-the terminal.
-
-To suspend or terminate a background job, you can do either of the following:
-@itemize @bullet
-@item
-Use the @code{kill} command (described below).
-
-@item
-Move the job to the foreground (@pxref{fg<>bg}) then use one of the
-keyboard interrupts for foreground jobs (@pxref{Interrupt foreground}).
-@end itemize
-
-@cindex @code{kill} command
-@cindex background, the kill command and
-@cindex jobs, the kill command and
-@cindex signals, for the @code{kill} command
-
-@c new concept: signal
-@table @code
-@item kill @r{[}-@var{sigspec}@r{]} @var{pid}
-@itemx kill @r{[}-@var{sigspec}@r{]} @var{job_spec}
-Send the process identified by @var{pid} or all processes in the
-job identified by @var{job_spec}
-the terminate signal,
-@c  SIGTERM
-or the signal specified by @var{sigspec}, if given.
-@var{pid} is a process identification number and
-@var{job_spec} is a job specification (@pxref{Numbers}).
-Signals are specified either by number or by name, as explained below.
-@c where are the numbers defined? document here? (appendix)
-
-@item kill -l
-This lists all the possible signal names (and numbers).
-It does not affect any jobs or processes.
-@end table
-
-Here's a summary of the most common and useful signals.
-In the @code{kill} command, you can use any of the following:
-@itemize @bullet
-@item
-the name shown  -- e.g. @code{SIGKILL}
-
-@item
-the part of the name after @samp{SIG} -- e.g. @code{KILL}
-
-@item
-the lowercase version of the part of the name after @samp{SIG} -- e.g.
-@code{kill}
-@end itemize
-
-
-@c compare to appendix -- don't  want same table in both places
-@table @code
-@item SIGHUP
-This is a gentle signal you can send to processes that you want to
-kill when you want to allow them to clean up after themselves (for
-example, delete temporary files, kill subprocesses, etc.).  It is a
-good practice to try to kill jobs with this signal first, before trying
-any of the harsher signals.  Some programs see this signal as a request
-for them to re-initialize some internal state or re-read a startup file,
-so this signal is not always used strictly for killing a process.
-
-@item SIGINT
-This is the signal generated (normally) by @kbd{C-c} on the keyboard.
-This signal will kill most processes, although a program may choose to
-ignore @code{SIGINT}.  @code{SIGINT} also allows a process to clean up
-after itself before dying.
-@c how differs from SIGHUP?  rms: SIGHUP means terminal is disconnected.
-@c  prog might die from hup but not c-c
-
-@item SIGQUIT
-This is the signal generated (normally) by @kbd{C-\} on the keyboard. 
-@c normally = if not remapped
-@code{SIGQUIT} is identical to @code{SIGINT} except that it requests that the
-operating system produce a diagnostics file called a @dfn{core dump},
-which is placed into a file named @file{core}.
-This can be useful for debugging.
-
-@item SIGTERM
-@code{SIGTERM} is similar to @code{SIGINT} except that it is normally produced by a
-program and not from the @kbd{C-c} on the keyboard.  Note that
-some programs treat @code{SIGTERM} differently from @code{SIGINT}.
-
-@item SIGKILL
-@code{SIGKILL} is the harshest ``kill'' signal.  It kills a process
-without warning
-and without allowing the process to clean up after
-itself.
-@c rms: i.e. doesn't signal process, just kills it
-@code{SIGKILL} should be used as a last resort, if
-@code{SIGHUP}, @code{SIGTERM}, @code{SIGINT}, and @code{SIGQUIT} don't
-work.
-
-@item SIGTSTP
-@code{SIGTSTP} is the signal sent (normally) by the @kbd{C-z} key on the
-keyboard.
-@c normally = modulo remapping
-Some programs may ignore this signal.  This signal does not
-kill the process but instead @emph{stops} the process, putting the
-program into a suspended state.
-
-@item SIGSTOP
-@code{SIGSTOP} is identical to @code{SIGTSTP} except it is not generated from
-the keyboard by @kbd{C-z}; it is must be sent with @code{kill} or from within
-a program.
-
-@item SIGCONT
-@code{SIGCONT} causes a @emph{stopped} process to continue running.  A stopped
-process is sent this signal by BASH when the @code{fg} and @code{bg}
-commands are used.
-@end table
-
-The following example terminates a @code{tip} process that has
-been stopped earlier:
-@c tip is for: communicate over serial port to log into another machine
-@c replace example -- don't use tip or HUP (HUP normally due to hangup, not sent by you)
-@c rms: normally do kill, or kill -stop, or kill -kill
-@c bfox: either kind of name can be lower case
-@c replace example
-
-@example
-bash$ jobs -l
-[1]+ 29854 Stopped        tip
-bash$ kill -HUP 29854
-[1]+ Hangup               tip
-bash$ jobs
-bash$
-@end example
-
-@noindent
-For a @code{tip} process, it is especially useful to use the @code{-HUP}
-signal so that @code{tip} cleans up the @sc{UUCP} lock files that it leaves
-around.
-
-
-@node Stopped jobs
-@subsection Logging Out With Stopped Jobs
-
-@cindex logging off, with stopped jobs
-@cindex jobs, logging off with stopped
-@cindex stopped jobs, logging off with
-If you have stopped jobs that you have forgotten about and you try to
-log off, you will be given a warning that you have ``Stopped jobs'' and
-will not be allowed to log off.  If you continue to try to log off, you
-will eventually be successful, but the operating system will kill
-(terminate) all your stopped jobs.
-@c what if you have running (background) jobs?
-@c ? bfox: they just keep silently running ?
-@c  csh sends hup to children when logs up, bash currently doesn't
-@c  might change it -- if so, add nohup biltin
-
-It is much better to bring the stopped jobs to the foreground
-(@pxref{Resuming}) and terminate them properly, so that can clean up
-after themselves (save files, etc.).
-
-You can also prevent jobs from being killed
-when you log off by using the @code{nohup} command (@pxref{nohup}).
-
-@node Resuming
-@section Resuming a Suspended Job
-
-A job that has been suspended (@pxref{Stopping}) can be resumed.
-That is, you can make it continue from where it left off.
-The resumed job can be run either in the foreground or in the
-background, regardless of whether it was foreground or background
-when it was interrupted.
-
-The following methods of resuming jobs are described more fully below:
-@itemize @bullet
-@item
-To resume a suspended job in the foreground, use the @code{fg} command
-or just type a job specification (@pxref{Numbers}).
-
-@item
-If you set the @code{auto_resume} variable, typing a command
-may resume a suspended job instead of starting a new one.
-
-@item
-To resume a suspended job in the background, use the @code{bg} command
-or just type a job specification (@pxref{Numbers}) followed by an
-ampersand (@samp{&}).@refill
-@end itemize
-
-@table @code
-@item fg
-@itemx fg @var{job_spec}
-@itemx @var{job_spec}
-Bring the specified job into the foreground, and resume running it.  If
-@var{job_spec} isn't specified, @code{fg} acts on the current job
-(@code{%}).
-
-The following example resumes the current job in the foreground:
-
-@example
-bash$ fg
-@end example
-
-The following example resumes a stopped @code{du} process in the foreground:
-
-@example
-bash$ %du
-@end example
-
-
-@item bg
-@itemx bg @var{job_spec}
-@itemx @var{job_spec} &
-Place the specified job in the background, and resume running it as if
-it had been started with @samp{&}.  If @var{job_spec} is omitted,
-@code{bg} acts on the current job (@code{%}).@refill
-
-@example
-bash$ find / -name resume -print >& resume_list 
-C-z
-[1]+  Stopped   find / -name resume -print >& resume_list
-bash$ bg
-find / -name resume -print >& resume_list &
-bash$
-@end example
-
-@noindent
-Here we started the @code{find} command in the foreground but then
-stopped it (with @kbd{C-z}) and placed it in the background when we got
-tired of waiting for the command to finish.
-
-The following example places job 2 in the background:
-
-@example
-bash$ jobs
-[1]-  Stopped   find / -name resume -print >& resume_list
-[2]+  Stopped   ls -R / >& dir_list
-bash$ %2 &
-ls -R / >& dir_list &
-bash$
-@end example
-
-@c 12/90, bash 1.06.25: bug: 'exact' has no effect - never need whole name
-@item auto_resume=
-@itemx auto_resume=exact
-If you create the @code{auto_resume} variable (e.g. by typing
-@samp{auto_resume=}), then if you type a command that matches
-a suspended job's command,
-@c match of cmd word
-@c bfox: auto_resume is for 1-word commands
-@c   must be 'simple word' -- e.g. \emacs is new
-@c bfox: to specifically talk about 1st wd of cmd, call it ``command word''
-the suspended job is resumed instead of a new job being started.
-If the value of @code{auto_resume} is @code{exact}
-(you set @samp{auto_resume=exact}), then you must
-type the entire job name; if the value is anything else,
-then only part of job name is enough to resume it.
-@c fix: job name = command word
-If there is more than one job
-with such a name, the job with the highest number is resumed.
-
-For example, assume that you have a stopped Emacs job:
-
-@example
-bash$ jobs
-[1]+  Stopped             emacs -f rmail
-@end example
-
-@itemize @bullet
-@item
-If you have not set @code{auto_resume}, then the command
-
-@example
-bash$ emacs
-@end example
-
-@noindent
-will start another Emacs job, and the old job will remain suspended.
-
-@item
-If you have set @code{auto_resume}, the above @samp{emacs} command
-will resume the stopped Emacs job.
-
-@item
-If you have set @code{auto_resume} to anything but @code{exact}, an
-abbreviated command (such as @samp{ema}) will also resume the stopped
-Emacs job.
-@end itemize
-@end table
-
-@node fg<>bg
-@section Moving a Job Between Foreground and Background
-
-To move the job that is running in the foreground to the background,
-suspend the job (@pxref{Stopping})
-and then resume it in the background (@pxref{Resuming}).
-
-To make a job that is running in the background be the foreground job,
-pretend the job has been suspended (though there is no need to
-actually suspend it) and ``resume'' it using any method of resuming jobs
-in the foreground (@pxref{Resuming}).
-
-@c BFOX: Flush NICE from manual
-@c KELLEM: nice is NOT a builtin -- description below looks like it's from csh
-@c  /bin/nice usage is typically: nice [-number] command (both BSD and SysV)
-@c  note the `-' before number .. what's GNU nice going to do?
-@c rms: may be in posix 2 or 2a
-@ignore
-@node nice, nohup, kill, Job Control
-@section Running Processes at a Low Priority Using @code{nice}
-
-@cindex jobs, the @code{nice} command
-@cindex background, the @code{nice} command
-@cindex @code{nice} command, for lower priority
-@cindex jobs, running at low priority
-@cindex background, running processes at a low priority
-The @code{nice} command causes a background process to be run at a 
-low priority.  The operating system runs any commands specified by
-@code{nice} when the machine has nothing else to do (it runs those 
-commands less often than normal).  This way, commands that normally 
-consume large amounts of system resources, slowing the system
-considerably, are run in stages that don't slow the system down quite
-as much.  Of course, a program that is run at a lower priority takes
-longer to finish, but it doesn't interfere with more important
-programs, either.
-
-The format of the @code{nice} command is:
-
-@example
-nice @r{[}@var{number}@r{]} @var{command-line}
-@end example
-
-@noindent
-where @var{command-line} is the command line you want to place at a
-lower priority.
-If present, the @samp{@var{number}} option causes @code{nice} to
-increment the priority by the amount given, up to a limit of 20.  The
-higher the value given, the lower the command's scheduled priority. 
-The default value for @var{number} is 10.@refill
-
-@c need example: maybe 'nice make -k hairy-program >& log' (rms)
-
-@menu
-* exception::  Using @code{nice} to force processes to run
-               at a higher priority than normal.
-@end menu
-
-@cindex @code{nice} command, using for higher priority
-@c what's a super-user? = root
-Note for advanced users:
-The super-user may give commands a higher priority than normal by using
-a negative @var{number}, for example @samp{-5}.
-@end ignore
-
-@c comments by KELLEM
-@c should `nohup' description be here?  machine specific
-@c maybe should just note that way nohup works is machine dependent
-@node nohup,  , nice, Job Control
-@section Preventing Jobs From Stopping Using @code{nohup}
-
-@c ? stop = be killed = be terminated?
-The @code{nohup} command prevents commands from stopping, or being
-killed, when you log out.
-Normally when you log off your system, any
-commands or processes that are running in the background are
-terminated.
-@c ? aren't suspended processes terminated too?
-@c what happens if you suspend a process started with nohup, then resume
-@c   it?  is it still nohup?
-The @code{nohup} command prevents hangup signals
-(@code{SIGHUP}, normally generated when you log off),
-interrupt signals (@code{SIGINT}, normally generated by @kbd{C-c}),
-and quit signals (@code{SIGQUIT}, normally generated by @kbd{C-\})
-from terminating your program.@refill
-@c ? any other signals disabled?
-
-@cindex @code{nohup} command
-@cindex jobs, the nohup command
-@cindex background, the nohup command
-@cindex preventing job suspension/stopping when logging out
-@cindex logging out, preventing job suspension/stopping
-The format of the @code{nohup} command is:
-
-@example
-nohup @var{command-line}
-@end example
-
-@noindent
-where @var{command-line} is the command you don't want interrupted.
-Any output the @var{command-line} produces is
-put into a file called @file{nohup.out} in your current directory.
-@c ? i.e. output to standard output?
-(If this file cannot be written to your current directory, @code{nohup}
-places it in your home directory.)
-
-@c ?
-THIS DESCRIPTION IS MACHINE SPECIFIC, UNLESS WE HAVE A GNU NOHUP (bfox).
-@c i.e. nohup may not change priority
-@c point of nohup: keep running after hang up
-
-The @code{nohup} command increments the priority by 5.
-(@xref{nice}, for an explanation of priority.).  Make sure that you
-invoke @code{nohup} from the shell prompt with @samp{&}, so that it
-won't respond to interrupt signals, or take input from the next user.
-@c format above should thus show with & ?
-@c ? if it's not given with &, how can you log out?
-@c what next user?
-@c  rms: it still has association with tty#, might respond to c-c etc.
-
-
-@node Combining commands, Editing, Job Control, Top
-@chapter Combining Several Commands on One Line
-
-@node Sequential cmds, Parallel cmds, Combining commands, Combining commands
-@section Sequential Commands
-
-There are several ways to type several commands in one command line,
-such that the commands are executed one after another.
-You can either make the sequence execute unconditionally,
-as if you had typed the commands one after another at the shell prompt;
-or you can make execution of the sequence stop early depending
-on the outcome of one of the commands, as if you had typed the commands
-one at a time and decided whether to continue as you went along.
-
-To do this, give a command of the form
-@example
-@var{command} @r{[}@var{separator} @var{command}@r{]}
-@end example
-That is, give any number of commands with an appropriate separator
-between each pair, as defined in the following:
-
-@table @code
-@item ;
-allows you to put
-several commands on the same line, to be executed sequentially.
-Separate each command from the next with a semicolon, @samp{;}.
-@cindex @code{;}, sequential command sequence
-
-No command in the sequence is executed until you end the line (press
-@key{RET}).
-Then the commands are executed in order, from left to right,
-as if you had typed each separately and waited for it to finish
-before typing the next.
-@cindex separating commands
-@cindex command line, separating commands on a
-
-For example:
-
-@example
-bash$ cp test test-old; du > test; ls -l test*
-@end example
-
-@item &&
-indicates conditional execution of commands in the sequence.
-@samp{&&} means @sc{and}; the trailing commands are executed only if the
-preceding commands are executed successfully.@refill
-@cindex @code{&&}, conditional command sequence
-@cindex joining commands
-@cindex commands, joining
-@cindex pipelines, joining
-@cindex pipelines, conditional execution of
-@cindex commands, conditional execution of
-
-For example, if there is no file named @file{garbage.test},
-then an attempt to list directory information for such a file
-(@samp{ls -l@dots{}}) and an attempt to view its contents (@samp{cat@dots{}})
-will both fail:
-
-@example
-bash$ ls -l garbage.test ;  cat garbage.test
-garbage.test not found
-cat: cannot open garbage.test
-bash$
-@end example
-
-But if @samp{&&} instead of @samp{;} joins the two commands,
-the second command is performed only if the
-first command is successful.  Since the file @file{garbage.test} doesn't exist,
-we get the error message associated with @code{ls} and @code{cat} isn't run:
-
-@example
-bash$ ls -l garbage.test && cat garbage.test
-garbage.test not found
-bash$
-@end example
-
-@item ||
-indicates conditional execution of commands in the sequence.
-@samp{||} means @sc{or}; the remaining commands are executed only if the
-preceding commands are @emph{not} executed successfully.@refill
-@cindex @code{||}, conditional command sequence
-@cindex joining commands
-@cindex commands, joining
-@cindex pipelines, joining
-@cindex pipelines, conditional execution of
-@cindex commands, conditional execution of
-
-For example:
-
-@example
-bash$ cat garbage.test || cat junk.test
-cat: cannot open garbage.test
-This is the contents of junk.test.
-@end example
-
-@noindent
-The first @code{cat} failed to find @file{garbage.test}, so the second
-@code{cat} was performed.
-
-@end table
-
-@node Parallel cmds, Combination precedence, Sequential cmds, Combining commands
-@section Simultaneous Commands
-
-There are two ways to type several commands in one command line,
-such that the commands are executed simultaneously, in separate
-processes.
-You can specify either independent commands or commands whose
-inputs and outputs are linked together.
-
-To do this, give a command of the form
-@example
-@var{command} @r{[}@var{separator} @var{command}@r{]}
-@end example
-That is, give any number of commands with an appropriate separator
-between each pair, as defined in the following:
-
-@table @code
-@item |
-joins commands together into a pipeline.
-The standard output of each command is redirected (connected) to the
-standard input of the next command in the sequence.
-@xref{Pipes}.
-
-@item &
-causes each command to run in the background.
-The commands are executed simultaneously in the background,
-as if you had typed each one separately, terminated with @kbd{&}.
-@xref{Job Control}.
-
-Note: @samp{&} actually terminates commands rather than separating
-them.  This is a difference from the other command combiners in
-this chapter.  Thus be sure to put a @samp{&} after the last command
-as well as between commands, or the last command will @emph{not} run
-in the background.
-
-@end table
-
-@node Combination precedence,  , Parallel cmds, Combining commands
-@section Mixtures of Sequential and Simultaneous Commands
-
-Any or all of the command separators described in this chapter
-(@samp{;}, @samp{&&}, @samp{||}, @samp{|}, @samp{&})
-can be used in a single command.
-
-The order of precedence (from highest to lowest) is
-@table @code
-@item |
-pipeline
-
-@item && @r{and} ||
-``and'' and ``or'', equal precedence, processed from left to right
-
-@item ; @r{and} &
-sequential and background, equal precedence, processed from left to right
-@end table
-
-However, if you have a mixture of operators, you should usually group
-the subcommands with parentheses or braces (@pxref{Grouping}), rather
-than assume you know how the command will be interpreted.
-@c rms: for mixtures of operators, tell them to group with ()
-
-@node Editing, History, Combining commands, Top
-@chapter Command Line Editing
-
-@menu
-* Readline Intro::    An introduction to editing command lines
-                      using @code{readline}.
-
-* Syntax::            The basic editing commands.
-
-* Customizing::       Customizing @code{readline} to use other
-                      key bindings.  Includes a complete list of
-                      all commands used in editing.
-
-* vi mode::     Editing using other modes, including a 
-                      @code{vi} editing mode.
-@end menu
-
-@cindex @code{readline} library
-@cindex command lines, editing
-@cindex editing command lines
-@cindex Emacs, command lines and
-BASH provides powerful facilities for editing the command line
-you are currently typing, so as to minimize the amount of typing
-needed to fix mistakes.
-It also includes facilities to save typing by giving you access to
-earlier commands and by completing things (such as file names) that you have
-not finished typing.
-
-The command-entry features described here are not specially programmed
-into BASH.
-Rather, they are provided by the @code{readline} library, which is used by a
-number of other GNU programs besides BASH.
-This means that you can use the same typing and editing facilities
-with a variety of programs.
-
-By default, @code{readline} has Emacs-like key bindings.
-That is, most features that Emacs also has (such as moving the cursor
-over words or characters) are invoked by the same keystrokes as
-in Emacs.
-@xref{Customizing Readline}, for how to change any key bindings you
-don't like and customize other aspects of @code{readline}'s behavior.
-
-@menu
-* Movement::                Moving about the line.
-* History Commands::        Using previous lines.
-* Text::                    Commands for changing text.
-* Buffer::                  Commands for killing and yanking.
-* Numeric Arguments::       Specifying numeric arguments and
-                            repeat counts.
-* Completion::              Getting @code{readline} to do the
-                            typing for you.
-* Miscellaneous::           Other miscellaneous commands.
-@end menu
-
-@node Readline Commands
-@section @code{readline} Commands
-
-The following sections list all the functions provided by @code{readline}.
-Each entry consists of
-@itemize @bullet
-@item the function name
-You do not need the function name unless you want to change the key
-binding (@pxref{Customizing Readline}).
-
-@item the default key binding (in parentheses)
-This is the key you press to invoke the function.
-If no key binding is shown, then you can't use the function
-unless you bind it to a key (@pxref{Customizing Readline}).
-
-@item a short description of what the function does
-@end itemize
-
-@cindex command editing, advanced
-@cindex editing commands, advanced
-@cindex @code{readline} editing commands, advanced
-
-@node Movement, History Commands, Customizing, Customizing
-@subsection Moving the Cursor
-
-Here are the @code{readline} cursor movement commands:
-
-@cindex @code{readline} library, cursor movement commands
-@cindex cursor movement commands in the @code{readline} library
-@table @asis
-@item beginning-of-line (@kbd{C-a})
-Move to the start of the current line.
-
-@item end-of-line (@kbd{C-e})
-Move to the end of the line.
-
-@item forward-char (@kbd{C-f})
-Move forward (right) one character.
-
-@item backward-char (@kbd{C-b})
-Move backward (left) one character.
-
-@item forward-word (@kbd{M-f})
-Move forward (right) one word.
-
-@item backward-word (@kbd{M-b})
-Move backward (left) one word.
-@end table
-
-@node Text, Buffer, History Commands, Customizing
-@subsection Changing the Command Text
-
-@c new term: 'cursor point'
-@c numeric &/or negative args mentioned but never explained
-
-@cindex @code{readline} library, commands to change text
-@cindex changing text commands in the @code{readline} library
-Here are the @code{readline} commands for text manipulation:
-
-@table @asis
-@item quoted-insert (@kbd{C-q}, @kbd{C-v})
-Add the next character that you type to the line verbatim.  This allows
-you to insert a control character, for example,
-and not have it act as an editing key.
-For example, if you want to search for a @kbd{C-l} in a file,
-you can type the @kbd{C-l} argument to the @code{grep} command
-by typing @kbd{C-q C-l}.
-
-@item tab-insert (@kbd{M-TAB})
-Insert a tab character.
-(A @kbd{TAB} character itself normally invokes completion
-rather than being inserted into the command line -- @pxref{Completion}.)
-
-@item self-insert (a, b, A, 1, !, ...)
-Insert the typed characters verbatim.
-All printing characters except @kbd{TAB} and newline
-@c ? @kbd{RET}  ?
-(i.e., all non-control, non-meta characters)
-@c source: bfox
-are inserted as typed.
-
-@item transpose-chars (@kbd{C-t})
-Interchange the character before the cursor with the character
-at the cursor and position the cursor after both characters.  If the
-cursor point is at the end of the line, then transpose the two
-characters before the cursor point.  Negative arguments are invalid.
-
-@item transpose-words (@kbd{M-t})
-Interchange the word before the cursor with the word
-at the cursor and position the cursor after both words.
-
-@item upcase-word (@kbd{M-u})
-Change the current (or following) word to uppercase and put the cursor
-after the word.  When given with a
-negative argument, the previous word is changed to uppercase, but the
-cursor point is not moved.
-
-@item downcase-word (@kbd{M-l})
-Change the current (or following) word to lowercase and put the cursor
-after the word.  When given with a
-negative argument, the previous word is changed to lowercase, but the
-cursor point is not moved.
-
-@item capitalize-word (@kbd{M-c})
-Capitalize the current (or following) word and put the cursor 
-after the word.  When given with a negative
-argument, the previous word is capitalized, but the cursor point is not
-moved.
-@end table
-
-@node Buffer, Numeric Arguments, Text, Customizing
-@subsection Deleting and Restoring Text
-
-@cindex readline library, killing commands
-@cindex killing commands in the readline library
-@cindex readline library, yanking commands
-@cindex yanking commands in the readline library
-@cindex readline library, buffer commands
-@cindex buffer commands in the readline library
-Here are the @code{readline} commands involved in deleting text and
-restoring previously deleted text.
-
-In the following table, the term @dfn{kill} means to delete text from a
-line, but save that text in a buffer for later retrieval. 
-Usually you retrieve killed text by @dfn{yanking} it back into the
-line.  The term @dfn{yank} means to retrieve text from a buffer and
-insert it at the cursor in the current line.
-Text that is @dfn{deleted} rather than killed is not saved and
-cannot be yanked back.
-
-@table @asis
-@item delete-char (@kbd{C-d})
-Delete the character under the cursor.
-Note: If the cursor is at the
-beginning of the line, there are no characters in the line, and the
-last character typed was not @kbd{C-d}, then @kbd{C-d} means
-end-of-file return @sc{eof}, and BASH exits.
-@c bfox: bash exits (logs you out)!! ignoreeof can protect you from this
-
-@item backward-delete-char (@key{DEL})
-Delete the character behind the cursor.  A numeric argument given with
-this command causes the characters to be killed instead of deleted.
-
-@item kill-word (@kbd{M-d})
-Kill the text from the current cursor position to the end of the
-current word or, if between words, to the end of the next word.
-
-@item backward-kill-word (@kbd{M-DEL})
-Kill the text from the current cursor position to the start of the
-current word or, if between words, to the start of the previous word.
-@c bfox: words delimited by
-@c  when doing completion  space tab nl " \ ` ' @ $ > < =
-@c  in word movement/deletion  non-alphanumeric
-
-@item kill-line (@kbd{C-k})
-Kill the text from the current cursor position to the end of the line.
-
-@item backward-kill-line ()
-Kill backward to the beginning of the line.  That is, kill the text from
-the beginning of the line to the current cursor position.  This is
-normally not bound to a key.  (See @code{unix-line-discard}, which is bound to
-@kbd{C-u}.)
-
-@item unix-line-discard (@kbd{C-u})
-Kill backward to the beginning of the line.
-This is identical to backward-kill-line.
-
-@item unix-word-rubout (@kbd{C-w})
-Kill the text from the current cursor position to the previous
-whitespace.  This is different from @kbd{M-DEL} because the word
-boundaries are different.
-
-@item yank (@kbd{C-y})
-Restore the most recently killed text back into the line at the cursor.
-
-@item yank-pop (@kbd{M-y})
-Restore the next to most recently killed text back into the line at the
-cursor.  You can do this only if the prior command was @kbd{C-y} or
-@kbd{M-y}.
-@end table
-
-@node History Commands, Text, Movement, Customizing
-@subsection Manipulating the Command History
-
-@cindex readline library, history commands
-@cindex history commands in the readline library
-Here are the @code{readline} commands for manipulating the
-command history (@pxref{History List}).
-
-@table @asis
-@item accept-line (@key{RET}, newline character)
-Accept the line regardless of where the cursor is.  If this line is not
-empty, add it to the history list.  If this line was a history line,
-then restore the history line to its original state.
-@c bfox: editing a cmd line retrieved from history
-@c   if execute it, becomes new history line
-@c   if edit it but move back to new line, old line stays edited, marked
-@c     with * in history list -- can undo to restore it
-
-@item previous-history (@kbd{C-p})
-Move up through the history list.
-
-@item next-history (@kbd{C-n})
-Move down through the history list.
-
-@item beginning-of-history (@kbd{M-<})
-Move to the oldest line in the history list.
-
-@item end-of-history (@kbd{M->})
-Move to the most recent line in the history list.
-
-@c must explain searches -- how to abort, when it's executed (RET), etc.
-@c   How get the found line for editing?
-@c  string is inside `', cursor at matching spot, RET executes, or just
-@c  start editing it -- it becomes current command
-@item reverse-search-history (@kbd{C-r})
-Search backward starting at the current line and moving up through the
-history as necessary.  This is an incremental search.
-
-@item forward-search-history (@kbd{C-s})
-Search forward starting at the current line and moving down through the
-the history.  This is an incremental search.
-@end table
-
-@node Numeric Arguments, Completion, Buffer, Customizing
-@subsection Specifying Numeric Arguments
-
-@cindex readline library, specifying numeric arguments
-@cindex numeric arguments, specifying in the readline library
-Here is how you specify numeric arguments in @code{readline}:
-
-@c explain what args are for, where can use them
-
-@table @asis
-@item digit-argument (@kbd{M-0}, @kbd{M-1}, ... @kbd{M--})
-Add this digit to the argument already accumulating, or start a new
-argument.  @kbd{M--} (meta-minus) starts a negative argument.
-
-@item universal-argument ()
-This lets you type numeric argument digits without metafying.
-To start a negative argument use the minus key.
-@c use minus when? after the ^U (or whatever bound to)
-A minus sign alone, with no other digits following, means @minus{}1.
-
-This is normally not bound to a key.
-
-Assume you have bound @kbd{C-u} to universal-argument.  Then
-@kbd{C-u} followed by a character that is neither a digit nor a minus
-sign means ``multiply the next argument by 4''.  @kbd{C-u C-u} means
-multiply the next argument by 16.
-@c possible to reword without mentioning C-u ?
-@c  probably not, if unbound commands are inaccessible
-@end table
-
-@node Completion, Miscellaneous, Numeric Arguments, Customizing
-@subsection Completion:  Letting @code{readline} Type For You
-
-@cindex readline library, completion commands
-@cindex readline library, shortcut commands
-@cindex completion commands in the readline library
-@cindex shortcut commands in the readline library
-
-You can save typing by asking for completion of the word you are in the
-midst of typing.  The system can complete partially-typed file names,
-command names, variable names, user names, and host names.  You can
-either specify the type of completion you would like to perform on the
-text before the cursor, or you can let the system guess what kind of
-name is being typed and complete it accordingly.
-
-@table @asis
-@item complete (@key{TAB})
-Try to complete the text before the cursor
-
-In particular,
-@c source: bfox
-@itemize @bullet
-@item variable
-
-If the word before the cursor starts with @samp{$},
-try to complete it as a variable name.
-
-@item user
-
-If the word before the cursor starts with @samp{~},
-try to complete it as a user name.
-
-@item host
-
-If the word before the cursor starts with @samp{@@},
-try to complete it as a host name.
-
-@item command
-
-If the word before the cursor is the first word in
-the command line, try to complete it as a command name.
-@c e.g. ema<TAB>-->emacs
-
-@item file
-
-If none of the above cases apply,
-try to complete the word before the cursor as a file name.
-@end itemize
-
-@item possible-completions (@kbd{M-?})
-List the possible completions of the text before the cursor.
-See above for what kind of completion is assumed.
-
-@c JEMS: tested 1/7/91 -- not all worked (bfox says fixed)
-@item complete-variable (@kbd{M-$})
-@itemx possible-variable-completions (@kbd{C-x $})
-@itemx complete-username (@kbd{M-~})
-@itemx possible-username-completions (@kbd{C-x ~})
-@itemx complete-hostname (@kbd{M-@@})
-@itemx possible-hostname-completions (@kbd{C-x @@})
-@itemx complete-command (@kbd{M-!})
-@itemx possible-command-completions (@kbd{C-x !})
-@itemx complete-filename (@kbd{M-/})
-@itemx possible-filename-completions (@kbd{C-x /})
-@c rewrite
-Each of these specify the type of completion you would like to perform
-on the text before the cursor, whether it be filename, username,
-hostname, variable name, or hostname completion, respectively.  These
-BASH-specific @code{readline} commands do not depend on a prefix
-character; though, if one is there, such as the dollar sign, @samp{$},
-at the beginning of variable names, the commands will still work.@refill
-
-The @code{possible-@dots{}-completions} commands are similar in
-functionality to the @code{possible-completions} command.
-
-Note that the specific completion commands are specific to BASH and are
-@emph{not} defined in the @code{readline} library.
-@end table
-
-@node Miscellaneous,  , Completion, Customizing
-@subsection Some Miscellaneous Commands
-
-@cindex readline library, miscellaneous commands
-@cindex miscellaneous commands in the readline library
-
-@table @asis
-
-@item clear-screen (@kbd{C-l})
-Clear the screen, leaving the current line at the top of the screen.
-
-@item abort (@kbd{C-g})
-Sounds the warning bell and stops whatever was happening when you typed
-these keystrokes.
-For example, @kbd{C-g} can be used to abort entry of a numeric
-argument (@pxref{Numeric Arguments}) or a search through command
-history (@pxref{History Commands}).
-
-@item do-uppercase-version (@kbd{M-a}, @kbd{M-b}, ...)
-Run the command that is bound to the named, but uppercase, command.
-@c bfox: M-a can be bound differently from M-A
-@c   normally, M-a looks up & runs M-A
-@c  if you rebind it, they're different
-@c  **be careful in .inputrc to bind correct case
-@c    is current doc of .inputrc wrong??
-
-@item prefix-meta (@kbd{@key{ESC}})
-@emph{Metafy} the next character that you type.  This is for
-people without a @key{META} key.  @kbd{@key{ESC} f} is equivalent to
-@kbd{M-f}.
-
-@c I have no idea what the 'last thing' is.
-@c empirically: successive C-- (note: I typed hyphen, not underscore) insert
-@c   sucessive deletions or delete a whole contiguous set of insertion (typein)
-@c bfox: consecutive insertions up to n is 1 thing
-@item undo (@kbd{C-_})
-This is the incremental undo.  Undo the last thing that you did.
-@c last thing in current cmd?
-You can undo all the way back to an empty line.
-@c bfox: history has edits saved, so can undo them too
-
-@item revert-line (@kbd{M-r})
-Undo all changes made to this line.  This is like typing the ``undo''
-command enough times to get back to the beginning of your corrections
-for that line.
-@end table
-
-@node Customizing Readline, vi mode, Syntax, Editing
-@section Customizing @code{readline}
-
-@c ? to define/explain:  home directory, ~/ (= home dir?)
-
-You can customize programs that use @code{readline} by putting commands
-in a @code{readline} initialization file,
-named @file{.inputrc}, in your home directory.
-When a program (such as BASH) that uses the @code{readline} library
-starts up, it checks the file @file{~/.inputrc} to set up its key bindings
-and other parameters to your liking.
-@c KELLEM's comments follow
-@c footnote{Currently, both @code{gdb} and @code{bash} use the
-@c @code{readline} library.  Future interactive GNU Project programs
-@c will also incorporate the @code{readline} library.}
-
-You can also force the initialization file to be reread
-(for example, if you modify it and want to use your modifications
-in BASH without logging out and logging in again)
-by typing @kbd{C-x C-r} (the default key binding for 
-@code{readline}'s @samp{re-read-init-file} function.
-@c ?? re-read-init-file not documented above
-@cindex @file{.inputrc} file, re-reading the
-@cindex re-reading the @file{.inputrc} file
-
-Three kinds of lines can appear in this initialization file:
-@itemize bullet
-@item comment
-
-A line starting with @samp{#} is a comment.
-
-@item key binding
-
-@xref{Readline Key Bindings}.
-
-@item variable setting
-
-@xref{vi mode}.
-@xref{Readline Variables}.
-@end itemize
-
-@node Readline Key Bindings
-@subsection Key Bindings
-
-@cindex readline library, customizing
-@cindex editing commands, customizing
-@cindex customizing readline library commands
-Although the @code{readline} library comes with a set of Emacs-like key
-bindings, it is possible that you would like to use different keys.
-
-To bind a @code{readline} function to a key, place a line of the form
-
-@example
-@var{key-name}: @var{readline-function}
-@end example
-
-@noindent
-or
-
-@example
-@var{key-name}: @var{readline-function} @var{comment}
-@end example
-
-@noindent
-in the @file{~/.inputrc} file.  
-@xref{Readline Commands}, for the function names and their default key bindings.
-Any text after the @var{readline-function} is considered to be a
-comment and is ignored.
-Key names are explained below.
-
-For example,
-
-@example
-C-u:   universal-argument
-@end example
-
-@noindent
-or
-
-@example
-C-u:   universal-argument  used to be unix-line-discard
-@end example
-
-@noindent
-binds @kbd{C-u} (which is initially bound to @code{unix-line-discard})
-to @code{universal-argument} (which is not bound to any key by default).
-
-
-@heading Key Names 
-
-@c needs rewriting
-For the key name, you can use the name of the key combination,
-such as @kbd{C-f}.  The various ``words'' you can use to describe keys
-are:
-
-@table @key
-@item Control-@kbd{k}
-@itemx C-@kbd{k}
-Holding down the control key and pressing the @kbd{k} key.
-
-@item Meta-@kbd{k}
-@itemx M-@kbd{k}
-Holding down the meta key and pressing the @kbd{k} key.
-@xref{Notation}, for alternative ways of metafying a key.
-
-@item Rubout
-@itemx DEL
-The delete key.
-
-@item Escape
-@item ESC
-The escape key, or @kbd{Control-[}.
-
-@itemx RETURN
-The enter (or return) key.
-
-@item Space
-@itemx SPC
-The space bar.
-
-@item LFD
-@itemx NEWLINE
-The @kbd{Control-j} key.
-
-@item TAB
-The tab key.
-@end table
-
-@heading Key Sequences
-
-You can also specify an arbitrary key sequence instead of a single key:
-
-@example
-@var{key-sequence}: @var{readline-function} @var{comment}
-@end example
-
-To do so, surround the sequence in double quotes.
-@c example
-
-@c rewrite
-If you want to use the @key{C-} or @key{M-}
-specifications inside double quotes, you need to precede it with a
-backslash (@samp{\}).  You can also specify the escape character with
-@samp{\e}.  Note that you cannot use the ``words'' listed above, only:
-
-@example
-"\C-k"
-"\M-k"
-"\e"
-@end example
-
-@heading Macros
-
-You can bind a key (or key sequence) to a key sequence instead of
-to a named function.
-@c rewrite
-To do so, instead of a function name,
-give the key sequence in double quotes.
-Keys in this sequence are named as explained above
-under ``Key Sequences''
-
-@c example
-@c format, with comment
-
-@node vi mode,  , Customizing, Editing
-@subsection @code{vi} mode in @code{readline}
-
-@cindex readline library, VI commands
-@cindex VI commands in the readline library
-@c KELLEM wants to change @code{vi} to @sc{vi} in this section
-The @code{readline} library does not have a full set of @code{vi}
-editing functions, but it does contain enough to allow simple editing of
-a line.
-
-To switch interactively between Emacs and @code{vi} 
-editing modes, use the command @kbd{M-C-j} (toggle-editing-mode).
-@c why not listed in fns above? -- add it there
-@c bfox: vi: start in insert mode
-@c   get into cmd mode by doing ESC; then M-C-j
-@c   press ESC till beeps, then M-C-j
-@c  beware of accidentally getting into vi mode!
-To enter the @code{vi}-like editing mode directly,
-without starting in Emacs mode, place the command:
-
-@example
-@code{set editing-mode vi}
-@end example
-
-@noindent
-in your @file{~/.inputrc} file.
-
-@c what about 'set -o vi...' (vs. 'set -o emacs...')
-
-When you enter a line in @code{vi} mode, you are already placed in
-``insertion'' mode, as if you had typed an @samp{i}.  Pressing @key{ESC}
-switches you into ``edit'' mode, where you can edit the text of the line
-with the standard @code{vi} keys.  Since @code{vi} is not an
-officially supported Free Software Foundation product, we won't explain
-the key bindings here.
-@c reference?
-@c KELLEM: probably should, at least, give a list of key/function list for vi
-@c mode.. maybe as an appendix?
-
-
-@node Readline Variables
-@subsection Other @code{readline} Variables
-
-@c KELLEM supplied most of this section's content
-
-In addition to @code{editing-mode} (@pxref{vi mode}),
-there are a number of
-other variables that can be set in @file{~/.inputrc} to
-affect @code{readline}'s behavior.
-
-To set a variable, put a line of the form
-
-@example
-set @var{readline-variable-name} @var{setting}
-@end example
-
-@noindent
-in the initialization file.
-
-The current @code{readline} variables are:
-
-@table @code
-@item editing-mode
-specifies the default editing mode for the
-@code{readline} library.  You can specify either emacs-style or vi-style
-default key bindings.  The default is emacs-style key bindings.
-The meaningful settings of @var{editing-mode} are:
-@table @code
-@item emacs
-
-@item vi
-@xref{vi mode}, for more information.
-@end table
-
-@item horizontal-scroll-mode
-determines how to display lines longer than the width of your display.
-The meaningful settings of @var{horizontal-scroll-mode} are:
-@table @code
-@item Off
-If @code{horizontal-scroll-mode} is set to @code{Off}
-(actually, any value other than @code{On} is treated as @code{Off}), lines are
-``wrapped'' when they extend beyond the width of the display.
-Such a line takes more than one line on the screen,
-but it still counts as a single line.
-(For example, @kbd{C-a} still goes to the very beginning.)
-
-@item On
-If @code{horizontal-scroll-mode} is set to @samp{On}, the
-line is shifted to the left about a third of the display's width when
-the cursor extends beyond the right side of the display.
-That is, the input line is scrolled between the two edges of the
-screen so that the current part is visible, though other parts may not be.
-@c test this
-@end table
-
-@noindent
-The default value of @code{horizontal-scroll-mode} is @code{Off}.
-
-@item mark-modified-lines
-specifies whether or not to ``mark''
-modified history lines with an asterisk, @samp{*}.
-The meaningful settings of @code{mark-modified-lines} are:
-@table @code
-@item Off
-Modified history lines are not marked.
-
-@item On
-Modified history lines are marked.
-@end table
-The default value of @code{mark-modified-lines} is @code{Off}.
-
-@end table
-
-
-@c next sec added by KELLEM
-@node Inputrc File,  , Other Scripts, Start-up
-@subsection A Sample @file{~/.inputrc} file
-
-@cindex inputrc file, customizing readline
-@cindex inputrc file
-@cindex customizing readline library, sample
-@cindex readline library, sample customization file
-@cindex editing commands, sample customization file
-
-Here's an example of a simple @code{readline}
-customization file, @file{~/.inputrc}:
-
-@example
-# -*- text -*-
-# File: ~/.inputrc
-# This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library.  Existing programs
-# include Camera, Bash, and Gdb.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# Set various bindings for emacs_mode.
-
-Meta-Rubout:   backward-kill-word  Stuff after the function name ignored
-#Control-u:    universal-argument
-
-# Note that the order of the words doesn't matter.
-Meta-Control-r:        revert-line
-Control-Meta-u: revert-line
-C-Meta-T:      transpose-words
-M-C-k:         transpose-chars
-"\C-x\C-?":    backward-kill-line
-
-# This line is bad syntax. It should have the M- before the C-.
-# But it works.
-"\C-\M-f":     forward-word            
-
-# Here is a macro definition.  You can tell because the right-hand
-# side is in quotes.
-#"\C-xr":      "\C-a\C-kemacs -f rmail\C-j\C-y"
-
-# Bind the arrow keys. (good for sun and vt220, vt100, etc.. )
-"\e[A":                previous-history
-"\e[B":                next-history
-"\e[D":                backward-char
-"\e[C":                forward-char
-
-# help key macro
-"\e[28~":      "\C-a\C-khelp | less\C-j\C-y"   VT220 help key
-"\e[3~":       delete-char                     VT220 remove key
-# C-r is reverse-search-history
-"\e[1~":       "\C-r"                          VT220 find key
-
-# Select the mode.
-set editing-mode emacs
-set horizontal-scroll-mode On
-@end example
-@ignore
-@c alternative for arrow keys
-"\M-[A":  previous-history
-"\M-[B":  next-history
-"\M-[C":  forward-char
-"\M-[D":  backward-char
-@end ignore
-
-
-@node History, Line, Editing, Top
-@chapter History Substitution
-
-@cindex history library
-
-BASH provides facilities to remember commands and let you reuse them.
-
-The command-history features described here are not specially programmed
-into BASH.
-Rather, they are provided by the history library, which is used by a
-number of other GNU programs besides BASH.
-(In general, programs that use @code{readline} also use history.)
-This means that you can use the same history facilities
-with a variety of programs.
-
-The history library maintains a list of recent command lines, or
-@dfn{events}.
-@cindex event, in command history
-It provides you
-with functions for remembering lines on a history list,
-searching through the list for a line containing an arbitrary text
-string, and referencing any line on the list directly.  In addition, a
-history expansion function is available which allows you to easily use
-those command lines again as is, or with some modifications, with very
-little additional typing.
-
-@cindex history library, using readline library instead
-@cindex readline library, using instead of history library
-If you find using the history library too difficult, you can use the
-readline library instead (@pxref{Editing}).  The readline library
-includes history manipulation by default,
-@c by default?  is it ever not there?
-and has the added advantage of Emacs-style command line editing.
-@c any reason to use ! ever?
-
-@menu
-* Using History::    Using history substitution.
-
-* Events::           How to specify which history line to use.
-
-* Words::            Selecting words from an event.
-
-* Modifiers::        Modifying previous events.
-
-* History Size::     Changing the number of history lines saved.
-
-* History Shortcuts:: History substitution shortcuts.
-
-* History Protection:: History substitution delimiters.
-
-@end menu
-
-
-@node Using History, Events, History, History
-@section How to Use History Substitution
-
-If you type the command @code{history} on a line by itself, you are
-presented with a list of events stored in the history list.  For
-example:
-
-@cindex history library, how to use the
-@example
-bash$ history
-
-     1   cd News
-     2   ls
-     3   ls -l
-     4   more tobob.doc
-     5   mail bob
-     6   rm tobob.doc
-     7   ls
-     8   cat memo 
-     9   history
-@end example
-
-@noindent
-The events are numbered from the oldest command typed (in this case,
-number 1) to the latest command typed (in this case, number 9).
-
-You can re-execute any event in a history list.  First you have to
-determine which line from the previous history to use, then you need to
-select portions of that line for inclusion in the current one.
-
-The line selected from the previous history is called the @dfn{event},
-and the portions of that line that are acted upon are called
-@dfn{words}.  The line is broken into words in the same fashion that
-the BASH shell does, so that text surrounded by quotes is considered to
-be one word (@pxref{Quotation}).
-
-@node Events, Words, Using History, History
-@section Determining Which History Line to Use
-
-@cindex history library, events in
-@cindex events, history library and
-@cindex history, determining events
-@c why called substitution?
-By far the most common use of this @dfn{history substitution} is simply
-to reuse an entire line.  One way this can be done is to enter a
-line which consists of @samp{!} followed immediately by enough
-characters to uniquely identify the beginning of the line you want to
-reuse.  For example, @samp{!cat} re-runs the last @code{cat}
-process (@samp{cat memo}) in the above history list:
-
-@example
-bash$ !cat
-cat memo
-This is a memo.
-bash$
-@end example
-
-@cindex command lines, reusing
-@cindex reusing command lines
-@cindex history, reusing command lines
-Another way to reuse a line is to follow the @samp{!} with a number,
-which specifies which line in the history list to use.  For example, to
-reuse @samp{cat memo} we could have typed:
-
-@example
-bash$ !8
-cat memo
-This is a memo.
-bash$
-@end example
-
-A third way is to type @samp{!?@var{string}}, which says to look
-backwards through the history for the first line which contains
-@var{string}.  Here's yet another way of re-using @samp{cat memo}:
-
-@example
-bash$ !?memo
-cat memo
-This is a memo.
-bash$
-@end example
-
-@cindex events, referring to
-@cindex history, referring to events
-As we have just demonstrated, there are several ways to refer to an
-event:  you can use its relative position in the history list,
-@c relative position not demonstrated above?
-its absolute position in the history list, or any text the event may
-contain.  Here is a table summarizing the various ways to refer to an
-event:
-
-@table @code
-@item !!
-refers to the previous command.
-
-@item !@var{n}
-refers to an event by its absolute position in the history
-list.  It refers to command line number @var{n}, where 
-@var{n} is the line number shown by the @code{history} command.
-
-@item !-@var{n}
-refers to an event by its relative position in the history
-list.  It refers to the command line @var{n} before the current line.
-
-For example:
-
-@example
-bash$ echo a
-a
-bash$ echo b
-b
-bash$ !-2
-echo a
-a
-bash$
-@end example
-
-@noindent
-@samp{!-2} may be used to re-run the command prior to the last command
-entered.  Successive usage of @samp{!-2} may be used to cycle the last
-two commands.  In fact, the last @var{n} commands may be cycled through
-repeatedly by using @samp{!-@var{n}}.
-
-@item !@var{string}
-refers to the most recent command @emph{beginning} with @var{string}.
-
-@item !?@var{string}
-@itemx !?@var{string}?
-refers to
-the most recent command containing @var{string}.  The closing
-@samp{?} is optional, and is necessary only when you need to separate
-the event designator from additional text.
-@c explain need to separate
-
-Here's an example.  Given the following two commands, entered in this
-order:
-
-@example
-bash$ cp /etc/motd ~
-bash$ rcp /etc/motd unsuspecting:/etc/motd
-@end example
-
-@noindent
-@samp{!cp} matches the first command, while @samp{!?cp} matches the
-second command.
-
-@item !#
-@itemx !:#
-both refer to the current line so far.  For example:
-
-@example
-bash$ echo foo !#
-echo foo echo foo
-foo echo foo
-bash$
-@end example
-@end table
-
-No matter which way you choose to refer to an event, the shell searches
-its history list from the most recent event to the least recent event,
-until it finds a match for your request.  If your request is too
-ambiguous,
-@c what ambiguity is possible?  all are numbers or refer to most recent
-or if no such event exists, you are given an error message.
-
-Whenever the shell sees the special character
-@samp{!} in a command line, it checks the history list and makes the
-appropriate substitution.  There are some exceptions:  if @samp{!} is
-followed by a @key{SPC}, @key{TAB}, @key{RET}, @samp{=} or @samp{(}, or
-preceded by @samp{<} or @samp{|}, history substitution does not take
-place.
-@c should samp's in above be kbd's?  should key's be wrapped in kbd's?
-@c why are those contexts exceptional?  what DOES happen?
-@c why not also preceding b [, for filename patterns?
-
-@node Words, Modifiers, Events, History
-@section Words Within Events
-
-@cindex history, words in
-@cindex history, selecting words
-@cindex words, selecting from history
-It is possible to select and use only portions of an event.  You can
-select any word, or series of words, from an event.  Several words
-surrounded by quotes are considered to be one word.
-@c single quotes? double quotes?
-
-The words of an event line are numbered from left to right, with the
-first word (the command name) being 0.  For example:
-
-@example
-bash$ echo one two three four five
-@end example
-
-@noindent
-In this example, word 0 is @code{echo}, and word 5 is @code{five}.
-
-To specify a particular word from a previous event, follow the event
-specification with a colon, @samp{:}, and a designator for the desired
-word, or words, from that event.  The word designators are:
-@c must define 'event spec' above
-
-@table @code
-@item 0
-The number 0 represents the first word, which is almost always the
-command name.
-
-@item @var{n}
-This matches the @var{n}'th word.
-
-@item ^
-This is a special notation representing the first argument (that is,
-word 1).
-
-@item $
-This is a special notation representing the last argument.
-
-@item %
-This represents the word matched by the most recent pattern search,
-@code{?@var{string}@r{[}?@r{]}}.
-
-@item @var{x}-@var{y}
-This matches a range of words.
-@c inclusive
-
-@item -@var{y}
-This is equivalent to the range @code{0-@var{y}}.
-
-@item *
-This matches all the words after word 0, up to and including the last
-word.  This is similar to matching the range @code{^-$}, except
-@code{*} can match 0 or more words, while @code{^-$} must match 1 or
-more words.
-
-@item @var{x}*
-This is equivalent to the range @code{@var{x}-$}.
-
-@item @var{x}-
-This is equivalent to the range @code{@var{x}-($-1)}.
-@c what's that useful for?  looks bizarre
-@end table
-
-The @samp{:} that separates the event specification from the word
-designator can be omitted if the word designator begins with a @kbd{^},
-@kbd{$}, @kbd{*} or @kbd{%}.
-@c but not - ?
-When referring to the immediately
-preceding command, you can omit the line identifier if you want.
-Therefore, @samp{!:2} refers to word 2 in the previous command line.@refill
-
-Note that @samp{!} alone on a line means nothing in terms of history
-expansion.  Also, if an event contains more than one command line
-separated by semicolons, the semicolons count as words too.
-
-Here are several examples using the various word designators in the
-above table:
-
-@example
-bash$ mkdir /nfs/cwjcc/fs2/src/Gnu/src/bash/1.06
-bash$ mv bash.tar.Z !$
-mv /nfs/cwjcc/fs2/src/Gnu/src/bash/1.06
-bash$ cd !$
-cd /nfs/cwjcc/fs2/src/Gnu/src/bash/1.06
-@end example
-@c should the mv response include bash.tar.Z ??
-
-@noindent
-This example uses the shorthand for the last word on a command line to
-avoid typing in a lengthy path name more than once.
-@c show equivalent & explain that !=prev cmd, $=last wd
-
-@c need a REAL example
-@example
-bash$ echo a
-a
-bash$ !! b
-echo a b
-a b
-bash$ !! c
-echo a b c
-a b c
-bash$ echo !*
-echo a b c
-a b c
-@end example
-@c above, shows expanded cmd before does it.
-@c not all examples do, but all should
-
-@noindent
-This example demonstrates how you can build up a command line
-with successive applications of the @samp{!!} notation.  You then use
-the @samp{!*} expansion to make use of all arguments accumulated so
-far.
-
-@example
-bash$ cc -o prog -g a.c b.c c.c
-bash$ cmd=!:0 output=!:2 optimize=!:3 files="!:4-$"
-@end example
-@c what's cc, what's cmd= ?
-
-@noindent
-@c explain
-This shows one possible use of the history facilities to break up
-command lines into individual elements.  After the second command, the
-individual portions of the command may be reused, perhaps to print the
-source files just compiled with @samp{lpr $files}.
-
-@node Modifiers, History Size History, Words, History
-@section Modifying Previous Events
-
-@cindex history, modifying previous events
-@cindex events, modifying previous
-@cindex modifying previous events
-Sometimes you don't want to re-execute an event exactly.
-Perhaps you
-mis-typed a file name, or want to substitute a new pathname, or a
-different argument.  Whatever the reason, you can modify an event, or
-any word of an event, by following that event with a colon, @samp{:},
-and a modifier.
-
-Here is a list of modifiers and their explanations:
-
-@c terminology to explain: pathname, head, filename extension, basename, tail
-@table @code
-@item h
-This removes the last element of a pathname, leaving the only the @emph{head}.
-
-@item r
-This removes a filename extension, or trailing suffix
-@samp{.@var{xxx}}, leaving only the @emph{root}.
-
-@item e
-This removes all @emph{but} the filename @emph{extension}, or trailing suffix
-@samp{.@var{xxx}}.
-
-@item t
-This removes all of the leading pathname components, leaving only the
-@emph{tail}.
-
-@item s/@var{string1}/@var{string2}
-This @emph{substitutes} the value of @var{string2} for @var{string1} the
-first time it appears.  If the @code{g} flag is given as well, the
-changes take place globally; that is, all occurrences of @var{string1}
-are replaced with @var{string2}.
-
-@item p
-This @emph{prints} the new command but does not execute it.  This
-allows you to preview the effects of modifiers safely.
-
-@c s and gs added by KELLEM
-@item s/@var{this}/@var{that}
-substitutes the first occurrence of @var{this} with @var{that} on
-the specified history line.
-
-@item gs/@var{this}/@var{that}
-globally substitutes @var{this} with @var{that} on the specified
-history line.
-@end table
-
-The modification is applied only to the first applicable word
-on the line.  If there are two or more occurrences on that line, the
-subsequent occurrences are not changed.  If no word on the line is
-applicable, then you get an error message.
-
-Here are some examples of reusing command lines with slight
-modification:
-
-@example
-bash$ diff -c2 old/shell.c shell.c > shell.diffs
-bash$ !!:gs/shell/builtins
-diff -c2 old/builtins.c builtins.c > builtins.diffs
-@end example
-
-@noindent
-This example demonstrates the use of the substitution mechanism to
-re-run a command.  This example may be used repeatedly to create
-``diffs'' of a number of changed files without retyping the lengthy
-command each time.
-
-@example
-bash$ echo /a/b/c/d
-bash$ head="!:1:h" tail="!:1:t"
-bash$ echo $head $tail
-/a/b/c d
-@end example
-@c what's the = ? variable setting?
-
-@noindent
-This shows a possible use for the filename splitting facilities.
-
-@example
-bash$ edit file.c
-bash$ f="!:1:r" ; echo making $@{f@}.o ; make $@{f@}.o ; unset f
-@end example
-
-@noindent
-This is a rather clumsy way to remake an object file from a
-just-modified source file.  While this example shows the use of the
-history library, there are easier ways to remake an object file.  For
-example you can encapsulate the @code{echo} and @code{make} into a
-function, like this:
-
-@c ?
-@example
-bash$ type make_o
-make_o is a function
-make_o ()
-@{
-     echo making $@{1@}.o
-     make $@{1@}.o
-@}
-bash$ edit file.c
-bash$ make_o !:1:r
-make_o file
-@end example
-
-@node History Shortcuts, History Protection, History Size History, History
-@section Shortcuts
-
-@cindex command lines, making changes to
-@cindex command lines, history library and
-A @samp{^} at the beginning of a command line is a special way to
-designate that you want to make changes, or corrections, to the
-previous command line.  In this case, @samp{^} is equivalent to
-@samp{!:s^}, and provides a convenient and special shorthand for making
-substitutions to the (immediately) preceding event.  The syntax for
-this substitution is:
-
-@example
-^@var{old}^@var{new}
-@end example
-
-@noindent
-The @var{old} characters between the two @samp{^} are replaced by the
-@var{new} characters following the second @samp{^}.  For example:
-
-@example
-bash$ mroe parse.y
-bash: mroe: command not found
-bash$ ^mroe^more
-@end example
-
-@noindent
-The first command contained a spelling error, resulting in an unknown
-command.  Using the quick substitution feature, we can rerun the
-command with the correct spelling substituted.
-
-@node History Protection,  , History Shortcuts, History
-@section Delimiters
-
-You can delimit a history substitution from the characters that follow
-it by surrounding that substitution with @samp{@{}and @samp{@}}.  For
-example:
-
-@example
-bash$ make flags.o
-          @r{[} errors compiling flags.c @r{]}
-bash$ edit @{!$:r@}.c
-@end example
-@c explain: !... means last arg basename, namely 'flags'
-
-@noindent
-In the above example, we attempt to use the @code{make} command to
-create @file{flags.o} from @file{flags.c}.  There are errors in
-@file{flags.c}, so history substitution is used to create the name of
-the source file so that it can be edited.
-
-@c can't understand next paragraph -- what makes the {} a NOP?
-@c also, if braces not needed here, need better example.
-While braces are not strictly necessary in this example, note that the
-braces are not treated specially by the history substitution mechanism
-in any way.  This works because brace expansion is enabled on our
-version of BASH.  @emph{If brace expansion is not enabled, enclosing a
-history substitution in braces will cause those braces to be retained.}
-
-@node Quotation,  , echo, File Names
-@chapter Preventing Shell Interpretation of Special Characters
-
-@c Is quoting for other parts of commands too, or just for wildcards?
-@c (Current chapter separated from old wildcard chapter)
-@c sounds more general
-
-@cindex command lines, quoting
-@cindex quoting
-There are times when you want the shell to treat special characters as
-regular characters, and not expand or interpret them.
-@c what does 'interpreted' mean?  different from 'expanded'?
-To do this,
-you must @dfn{quote} the special character by preceding the character
-with a @samp{\} or by surrounding the character (or part of
-the argument containing it) with single or double quotes.
-@c justification?  isn't it bad & very rare to have file names with
-@c special chars in them?
-
-@table @code
-@item \
-The backslash, @samp{\},
-forces the character that follows it to have its literal
-meaning, suppressing any special interpretation in the shell.
-Exception: A
-backslash followed by a newline character signifies a continuation of
-a shell command line onto the following line (@pxref{Continuation}).
-@c newline=RET ?
-  
-Note that the backslash protects a single character, not a string
-of characters.
-
-For example, @samp{rm bad*name} deletes all files whose names start with
-@samp{bad} and end with @samp{name}, whereas @samp{rm bad\*name} deletes
-only the file named @file{bad*name}.  The @samp{\} prevents the shell
-from interpreting the @samp{*} as a wildcard.
-
-You can protect the backslash itself from being interpreted by the
-shell by preceding it with another backslash.
-@c example
-
-@item '@dots{}'
-Single quotes turn off the special meanings of @emph{every} character
-between them.  All these characters are taken literally.  This allows
-you to include blank characters in a string.  For example:
-@c huh? why are blanks interesting?  how relate to file names?
-@c '...' equivalent to \ in front of every char?
-
-@c what does example have to do with wildcards?
-@c what are such strings for?
-@example
-'This $#?!!# sentence is taken literally.'
-@end example
-@c example with > 1 wildcard instead?  e.g. rm bad?*name vs.
-@c  rm bad'?*'name = rm 'bad?*name'
-
-Note that even the backslash character is treated literally between
-single quotes.  Therefore, there is no way to include single quotes
-themselves in the string.
-@c explain or remove
-
-@item "@dots{}"
-Double quotes turn off the special meanings of every character between
-them @emph{except} @samp{$}, @samp{'}, and @samp{\}.  The characters
-@samp{$} and @samp{'} retain their special meanings within double
-quotes.  When surrounded by double quotes, the backslash, @samp{\},
-retains its special meaning only when followed by @samp{$}, @samp{`},
-@samp{"}, @samp{\}, or the newline character.
-@c whole "" section has no clear relation to filename wildcards
-
-For example:
-
-@c example not related to file names
-@example
-"The value of test is $test."
-@end example
-
-You can protect a double quotation mark from being interpreted by the
-shell by preceding it with the backslash character, as in @samp{\"}.
-A double quote may be quoted within double quotes by preceding it
-with a backslash.
-
-Warning: the special parameters @samp{$*} and @samp{$@@} have special
-meanings when inside double quotes (@pxref{Predefined}).
-@end table
-
-@c following par: need examples of why/when need such chars quoted
-You should quote any special character if you
-do not want the shell to use that character's special meaning. 
-Therefore quote all redirection operators, wildcard characters,
-command-line characters, quote characters, and grouping characters if
-they are to represent themselves.  In particular, the following
-characters should be quoted if they are to represent themselves:
-@cindex quote, when to
-
-@example
-  !  |  &  ;  <  >  (  )  $  `  '  "  \  *  ?  [  ]  #
-@end example
-@c above is all special chars?  what about : { }  (others?)
-
-@noindent
-In addition, you should always quote the space, tab, and newline
-characters if they are not to be interpreted by the shell.  You can
-use single or double quotes around an entire argument or word, or
-around just part of one.  For example:
-
-@example
-make CC="cc -O"
-@end example
-@noindent
-shows how to specify @samp{cc -O} as the compilation command.
-
-@node Advanced Redirection
-@chapter Redirecting Input and Output (Advanced)
-
-@node Other Redirections, Pipes, Here-documents, I/O
-@section Redirection Using File Descriptors
-
-@cindex redirection operators, with file descriptors
-@cindex file descriptors
-@cindex standard input, redirecting
-@cindex standard output, redirecting
-@cindex standard error, redirecting
-@cindex redirecting input and output
-The basic redirection operations (@pxref{Redirection})
-are actually special cases of a more general mechanism for
-affecting the input and output files used by programs.
-
-Programs actually do their input and output in terms of @dfn{file
-descriptors} (non-negative integers) that are associated with files or
-devices.
-@c bfox: file descr is index to array of file info
-For example, a program might read from file descriptor 3 and
-write to file descriptors 6 and 8.
-The redirection operators are a means of associating open files with
-file descriptors, so that such a program will use the desired files.
-
-In order for the shell to be able to set up command input and output
-in simple, general ways -- hooking commands together with pipes
-(@pxref{Pipes}) or redirecting input and output to files as shown
-earlier (@pxref{Redirection}) -- certain conventions have been
-established for file descriptors.  Descriptors 0, 1, and 2
-are generally used as follows:
-
-@table @asis
-@item 0
-is called @dfn{standard input}.
-Programs usually read their input from standard input.
-@cindex standard input, file descriptor 0
-
-@item 1
-is called @dfn{standard output}.
-Programs usually write their output to standard output.
-@cindex standard output, file descriptor 1
-
-@item 2
-is called @dfn{standard error}.
-Programs usually write their error messages to standard error.
-@cindex standard error, file descriptor 2
-@end table
-
-Other file descriptors have no standard meaning.
-
-You can redirect any file descriptors you like, but
-not all redirections make sense.  In particular, redirecting a file descriptor
-number that the program doesn't use will have no effect.
-
-In general, a redirection using file descriptors looks like this:
-@ignore
-@c they were each shown with args, but it's probably better to consider
-@c those as part of the command.  E.g. it was:
-@var{command} @r{[}@var{arguments}@r{]} @r{[}@var{n}@r{]}> @var{m}
-@end ignore
-@example
-@var{command} @r{[}@var{n}@r{]}@var{redirection-operator} @var{m}
-@exdent @r{or}
-@var{command} @r{[}@var{n}@r{]}@var{redirection-operator} @var{file}
-@end example
-
-@noindent
-where @var{n} (which is optional) and @var{m} are file descriptors,
-@var{file} is a file,
-and the @var{redirection-operator} is as described below.
-
-Warning:
-If @var{n} is supplied, there must not be any space between it
-and the operator.
-
-If the file descriptor @var{n} is omitted and the first character of
-the redirection operator is @samp{<}, @var{n} defaults to the
-standard input (file descriptor 0).  If @var{n} is
-omitted and the first character of the redirection operator is
-@samp{>}, the @var{n} defaults to the standard output (file
-descriptor 1).
-
-@table @code
-@item @var{n}> @var{file}
-@itemx @var{n}>| @var{file}
-@itemx @var{n}>> @var{file}
-open @var{file} for output on file descriptor @var{n}.
-@var{n} defaults to 1 (standard output).
-Thus the operators @samp{>}, @samp{>|}, and @samp{>>} described earlier,
-which redirect standard output, are equivalent to @samp{1>}, @samp{1>|},
-and @samp{1>>} respectively.
-@cindex @code{>} operator, with file descriptor
-@cindex @code{>|} operator, with file descriptor
-@cindex @code{>>} operator, with file descriptor
-
-@c following itemize is exact copy from basic chapter
-@itemize @bullet
-@item
-If @var{file} doesn't yet exist, it is created.
-
-@item
-If @var{file} already exists:
-@itemize @bullet
-@item
-With @samp{>} and @samp{>|}, @var{file} is erased before the
-first output is written to it.  Be careful:
-If a file of the same name already exists,
-its contents are deleted before your command's output is
-written to that file.
-If you don't want @samp{>} to erase existing files, set the
-shell's @code{noclobber} variable; then
-@samp{>} with an existing file will generate an error message and leave
-the file alone.  (But note that @samp{>|} will clobber existing files
-regardless of the setting of the @code{noclobber} variable.)
-
-@item
-With @samp{>>}, the output is appended to the end of an existing @var{file}.
-@end itemize
-@end itemize
-
-For example:
-
-@example
-bash$ find / -name resume -print 2> /dev/null
-@end example
-
-@noindent
-This command looks for and prints the pathnames of all files
-named @file{resume} by traversing all directories under the @file{/}
-directory.  When @code{find} encounters permission problems (for
-example, directories it does not have permission to read) it prints an
-error message on standard error.  The above redirection @samp{2>
-/dev/null} forces all these error messages to be written to the special
-file @file{/dev/null}, which simply discards these messages so that
-only the requested @file{resume} files are printed on standard output. 
-This saves you from wading through pages of uninteresting error messages
-from @code{find}.
-@c rewrite in terms of utility for redirecting just error w/o output
-
-@item @var{n}< @var{file}
-opens @var{file} for input on file descriptor @var{n}.
-@var{n} defaults to 0 (standard input).
-Thus the operator @samp{<} described earlier, which redirects standard
-input, is equivalent to @samp{0<}.
-@cindex @code{<} operator with file descriptor
-@c what if n=1 or 2(output)?
-@c I tried 'who 1< foo' . Got err msg if foo not exist, no err msg but
-@c    also no output if foo existed (foo left untouched)
-@c bfox: probably who wrote to 1, but it was open for read, not write,
-@c   but who didn't check for errors on write
-
-@cindex redirection operators, reading and writing
-@item @var{n}<> @var{file}
-opens @var{file} for both reading and writing on file descriptor @var{n}.
-@var{n} defaults to 0 (standard input).
-@cindex @code{<>} operator, redirecting input and output
-
-As with @samp{>} (above), an existing @var{file} is erased before the
-first output is written to it unless the shell's @code{noclobber}
-variable is set (in which case @samp{<>} with an existing file will
-generate an error message and leave the file alone.)
-
-@item @var{n}>& @var{m}
-makes the file descriptor @var{n} be a copy of the file descriptor @var{m}.
-@var{n} defaults to 1 (standard output).
-@c  no requirement that n and/or m be output descriptors?
-@c  n=0(input)  seems harmless
-@c what if m=0(input)?  1>&0 seems to be NOP w no msg
-@c   e.g. date 0<foo 1>&0 sends output (1) to tty, not to foo
-@cindex @code{>&} operator with file descriptor
-
-Thus the redirection @samp{>&@var{file}} described earlier, which
-redirects standard output and standard error to the @var{file},
-is equivalent to @samp{>@var{file} 2>&1}.
-
-For example :
-
-@example
-bash$ make >make.log 2>&1
-@end example
-
-@noindent
-@code{make} produces output both on the standard output (as it executes
-commands) and on the standard error (in the case that a file didn't
-compile correctly, etc.).
-The first redirection operator on the line says to send output for
-the standard output into a file called @file{make.log}.
-The second redirection causes
-output to file descriptor 2 (the standard error) to be output wherever
-the output from file descriptor 1 is going (the standard output).  
-Thus, both the standard error and standard output are written to
-@file{make.log}.  (There is a shorthand for
-redirecting both the standard output and the standard error to a single file.
-@xref{Redirection}, @samp{>&@var{file}}.)
-
-@item @var{n}<& @var{m}
-makes the file descriptor @var{n} be a copy of the file descriptor @var{m}.
-@var{n} defaults to 0 (standard input).
-(Note that @code{@var{n}<& @var{m}} and @code{@var{n}>& @var{m}} behave
-identically except when @var{n} is omitted, in which case they have
-different defaults.)
-@cindex @code{<&} operator with file descriptor
-
-@c note: (bfox) >&- same as <&-, only diff is default value of n
-@item @r{[}@var{n}@r{]}>&-
-closes the file descriptor @var{n}.
-@var{n} defaults to 1 (standard output).
-@c bfox: closes file &  removes association of file w. n
-
-@item @r{[}@var{n}@r{]}<&-
-closes the file descriptor @var{n}.
-@var{n} defaults to 0 (standard input).
-(Note that @code{@r{[}@var{n}@r{]}<&-} and @code{@r{[}@var{n}@r{]}>&-}
-behave identically except when @var{n} is omitted, in which case they
-have different defaults.)
-
-@end table
-
-@heading Multiple Redirections
-
-More than one redirection operator can appear in a command.
-@cindex redirection operators, using multiple
-@emph{The order in which redirections are specified is important.} The
-shell evaluates redirection operators in the order encountered, from
-left to right.  A file descriptor specified with an earlier
-redirection operator can be used by a subsequent redirection.  For
-example:
-
-@c strange example: plain >& does it without file descriptors
-@example
-ls > error-list 2>&1
-@end example
-
-@noindent
-redirects first the standard output (@code{>})
-and then the standard error (@code{2>&1}) to the
-file @file{error-list}, while the command:
-
-@c strange example: plain > does it without file descriptors
-@example
-ls 2>&1 > error-list
-@end example
-
-@noindent
-redirects only the standard output to the file @file{error-list}.  The
-first redirection operator @code{2>&1}
-makes the standard error (2) be a copy of the
-standard output (1) @emph{before} the standard output is redirected to
-@file{error-list} with @code{>}.
-
-@heading Redirection in Pipelines
-
-Each command in a pipeline may
-include redirection operators.  These redirections are performed after
-the pipes that link the commands are created.
-That is, first the standard input and standard output of each command
-in the pipeline are set up as specified by the pipes, then any
-redirections specified in the commands are performed.
-Thus such a redirection can access the standard input and output set up
-by the pipeline.  For example, @samp{2>&1} in the first command in
-a pipeline makes that command's standard error be the same as its standard
-output, hence sends the command's error messages along with its ordinary
-output to the second command in the pipeline.
-
-@node Here-documents, Other Redirections, Redirection, I/O
-@section Redirection to Shell Scripts
-
-@c what are << and <<- for? shellscripts?  probably not a good idea at
-@c tty, so examples with prompts are poor.
-@c  bfox: also good in functions
-@c Posix p.172 calls it 'here-document' in 'shell input file'
-@c add Intro here to explain it.
-@c bfox: say it is traditionally called here-document
-In general, such a redirection of input looks like this:
-
-@ignore
-@c they were each shown with args, but it's probably better to consider
-@c those as part of the command.  E.g. it was:
-@var{command} @r{[}@var{arguments}@r{]} << @var{word}
-@end ignore
-@example
-@var{command} @var{redirection-operator} @var{word}
-@end example
-
-@noindent
-where the @var{redirection-operator} is as follows,
-and spaces surrounding it are optional:
-
-@table @code
-@item <<
-instructs the shell to read input for @var{command}
-from the same place as the shell is reading commands from.
-The shell reads lines
-until a line containing only the given @var{word} (with no trailing blanks) is
-seen.  All of the lines read up to that point are considered the input
-for the @var{command}.
-@cindex @code{<<} operator
-For example:
-
-@c example was CAT << foo, but sort seems more interesting.
-@c Need a real example.
-@example
-bash$ sort << foo
-hip
-hip foo
-hooray
-and
-foo
-and
-hip
-hip foo
-hooray
-bash$
-@end example
-
-@noindent
-The four lines after @samp{sort << foo} became the input to the
-@code{sort} command.  The fifth line, containing @samp{foo} on a line by
-itself, marked the end of the input.  (Note that the @samp{foo} in the
-second input line did not end the input because the line contained other
-text as well.)  The four lines after the end of the input are
-the output of the @code{sort}, namely the input lines in alphabetical order.
-
-@item <<-
-@samp{<<-} is like @samp{<<}, except that leading tab characters are
-stripped from each line of input as it is read.
-@c how justify version that strips tabs - bfox: for formatting?
-@cindex @code{<<-} operator
-@end table
-
-@c Posix says can have more than one <<, <<- in command.
-@c cover that?  True of any other redirection operators?
-
-
-@node Grouping
-@chapter Grouping Commands
-
-@c placeholder for stuff to rewrite completely
-@c new concept: subshell, shell environment, [non]interactive shell
-
-@table @code
-@item @{ @var{list}; @}
-
-@c what is format of the list?
-Curly braces are used to group commands.  The list of commands is
-executed in the current shell environment.  The curly braces
-must either begin a line, follow a @samp{;}, or be surrounded with
-whitespace for the shell to recognize them as grouping commands.  For
-example:
-@cindex commands, grouping
-@cindex grouping commands, using @{ @}
-
-@example
-bash$ foo=bar
-bash$ @{ ls -l ; echo "Listing finished."; echo $foo @} >listing
-@end example
-
-@noindent
-lists the files in the current directory, outputs ``Listing finished.'',
-and outputs ``bar'', all of which is redirected into the file
-@file{listing}.  Unlike the following example, the grouping commands do
-not start a subshell, so the current shell's variables are available for
-use.
-
-@item (@var{list})
-@c what is format of the list?
-The list of commands is executed in a subshell.  Variable assignments
-and built-in commands that affect the shell's environment do not remain
-in effect after the command finishes.
-@cindex grouping commands, using ( )
-@cindex commands, grouping
-
-The fact that commands within parentheses are executed within a
-subshell means that the parent shell is unaffected by shell
-side-effects of those commands.  Changes in shell state caused by
-commands executed in a @emph{subshell} do not affect the parent shell. 
-
-
-Let's illustrate:
-@c silly example -- the cd in the subshell is useless
-
-@example
-bash$ pwd
-/home/alan/work
-bash$ (cd ..)
-bash$ pwd
-/home/alan/work
-bash$ cd ..
-bash$ pwd
-/home/alan
-bash$ 
-@end example
-
-@noindent
-In this example, the current working directory is
-@file{/home/alan/work} as shown by the output of the @code{pwd}
-command.  The command @code{(cd ..)} executes in a @emph{subshell} so
-that it does not change the current directory of the parent shell and
-the user remains in the original directory, @file{/home/work/alan}.
-
-However, when the command @code{cd ..} is executed in the parent shell
-(that is, it is executed without being surrounded by parentheses) the
-parent shell's current working directory is changed to
-@file{/home/alan}.
-@end table
-
-
-@node Aliases, Functions, Line, Top
-@chapter Aliases
-
-@cindex alias
-@cindex shorthand, command names
-@cindex command name shorthand
-Aliases are a way to rename, redefine, or otherwise rearrange commands
-to your liking.  An alias is created using the following syntax (note
-that there cannot be any spaces before or after the @samp{=} sign):
-
-@example
-alias @var{name}=@var{expansion}
-@end example
-
-@noindent
-The @var{name} is the command-name shorthand you want to enter at the
-shell prompt.  The @var{expansion} is the command that
-the @var{name} will stand for.  For example:
-
-@example
-alias more=less
-@end example
-
-@noindent
-causes the program @code{less} to be substituted for the operating
-system's @code{more} program every time the word @samp{more} is typed. 
-@c next sec says: any time typed as command part (1st part) of cmd
-
-@c ? I don't understand this text & example
-@c  see kellem's example below
-If the last character of the value for the alias,
-@var{expansion}, is a blank, then the word following the alias
-will also
-@c ? also = in addition to the cmd part of the line?
-be checked for substitution.  For example:@refill
-
-@example
-alias time='time '
-@end example
-
-@noindent
-allows you to time a command for which you have defined an alias. With
-this alias you can time what you would be running if you typed the
-expanded version as a command.
-
-For example, let's say you defined an alias @samp{alias more=less}. 
-Normally, if you type @samp{time more}, @file{more} is
-timed.  However, if the @samp{time} alias has been previously defined,
-typing @samp{time more} times @file{less}, which is
-what you want.  The alias @code{more} is expanded, and its value
-(@code{less}) is substituted as the program to time.
-
-If the value for the alias, @var{expansion}, contains spaces,
-tabs, or metacharacters,
-@c ? metachar means M-... ?  What's reason to include metas, not C- etc.?
-you must enclose that definition in quotes
-to avoid misinterpretation by the shell.  For example,
-let's say that you use the command-option sequence @samp{ls -la} at
-lot.  You can assign this command to the alias @code{la} to
-make typing quicker and easier:
-
-@example
-alias la='ls -la'
-@end example
-
-@noindent
-Now you can type @samp{la} instead of @samp{ls -la} when listing files.
-
-@c KELLEM: you can make aliases for arbitrary text,
-@c that is all an alias really is (a text substitution).  can be useful for
-@c bash$ alias foo=some.host.somewhere
-@c bash$ alias rlogin="rlogin "
-@c bash$ rlogin foo
-@c   is same as `rlogin some.host.somewhere'
-
-@cindex aliases, listing
-To get a list of all the currently defined aliases, simply type the
-@code{alias} command with no arguments.  A list of aliases in the form
-@samp{@var{name}=@var{value}} is displayed on the standard output.  If
-you want to know if a specific shorthand name has any aliases, you can
-type:@refill
-
-@example
-alias @var{name}
-@end example
-
-@noindent
-This tells you if any aliases exist for that specific @var{name}.
-
-@cindex aliases, the shell and
-Aliases are local to the shell in which they were declared.  This means
-that aliases can't be used within shell scripts @emph{unless those
-aliases were declared in that script}.  This means that the alias
-command has to be executed in the shell script before the command which
-references that alias is read.  
-It also means that aliases disappear when their shell is terminated. 
-@emph{BASH aliases cannot be exported to another shell.}  To get BASH
-to remember an alias permanently, you have to enter that alias in your
-login file (@pxref{Start-up}).
-
-@menu
-* Advanced Aliasing::  Creating aliases for complex commands.
-
-* Remove::             Removing aliases.
-@end menu
-
-@node Advanced Aliasing, Remove, Aliases, Aliases
-@section Creating Aliases For Complex Commands
-
-@cindex aliases, complex
-@cindex aliases, string substitution and
-@cindex string substitution and aliases
-While you can use simple string substitution with aliases, note that
-the @code{alias} command is limited to expanding only the first word in
-a command.  Using pipes, @samp{|}, semicolons, @samp{;},
-@samp{&&} (@sc{and}) and @samp{||} (@sc{or}), it is possible to have more
-than one command sequence per command line.
-@c ? terminology problem is killing us here -- command meaning either
-@c prog to run or simple cmd with args or compound command
-In this case, you can have
-more than one alias on the command line, but you can still only have
-one alias per command.  For example, let's create two more
-aliases:@refill
-
-@example
-bash$ alias listdir='ls'
-bash$ alias linecount='wc -l'
-@end example
-
-@noindent
-and combine those aliases on one command line:
-
-@example
-bash$ listdir | linecount
-@end example
-
-@noindent
-The @code{alias} command expands @code{listdir} to @code{ls} and
-@code{linecount} to @code{wc -l} because @code{listdir} and
-@code{linecount} begin @emph{separate} commands.@refill
-
-@cindex aliases, versus functions
-@cindex aliases, using functions instead of
-@cindex functions, versus aliases
-@cindex functions, using instead of aliases
-If you need more complicated expansion in a command line, use a shell
-function (@pxref{Functions}).  In particular, there is no mechanism in
-BASH for using arguments in the replacement text of aliases.  If
-arguments are needed, a shell function should be used instead of an alias.
-
-@cindex aliases, multiple commands and
-@cindex multiple commands, aliases and
-You can also make aliases that represent multiple commands.  For
-example, you can create an alias that goes to a directory of your
-choice (@code{cd}), lists what is in that directory in long form
-(@code{ls}), and shows you the
-total disk space used by that directory (@code{du}):
-
-@c KELLEM: dashes are not allowed in POSIX.2 draft 10 in aliases (not a valid
-@c shell identifier), I believe.  'course, the dashes are fine with me. :-)
-@example
-alias m-use='cd /usr/spool/mail; ls -la; du'
-@end example
-
-@noindent
-To use this alias, just type @code{m-use}.
-
-@c ref for keywords?  Is there a list of keywords somewhere?
-Lastly, you can alias keywords.  For example, if you would rather end
-the @code{do} part of a loop command (@pxref{Conditionals and Loops})
-with @code{od} than with the normal @code{done}, you can
-
-@example
-bash$ alias od=done
-bash$ for i in 1 2 3
-> do
-> echo $i
-> od
-1
-2
-3
-@end example
-
-@node Remove,  , Advanced Aliasing, Aliases
-@section Removing Aliases
-
-@cindex aliases, removing
-@cindex removing aliases
-@cindex @code{unalias} command
-@cindex aliases, the @code{unalias} command
-To get rid of aliases, use the @code{unalias} command.  This command
-looks like this:
-
-@example
-unalias @var{name1} @var{name2} @dots{} @var{nameN}@refill
-@end example
-
-@noindent
-The @code{unalias} command removes all the named aliases from the list
-of defined aliases.  For example:
-
-@example
-unalias m-use
-@end example
-
-@noindent
-removes the @code{m-use} alias, if present.
-
-@node Variables, Environment, Scripts, Top
-@chapter Shell Variables
-
-@c need new introduction
-
-@c bfox: home etc.: bash tries to get from env, if not there, creates
-@c  * etc. are really predefined
-@c 5 kinds of vars: 
-@c  inherit or create (e.g. home)
-@c  predefined (*, @, ...)
-@c  magic vars -- auto_resume, noclobber -- control shell's internal operation
-@c  user vars
-@c  dynamic vars -- seconds, etc.
-
-@c to coordinate -- what is explained here vs. customization chapter re
-@c  how to set/unset a var, see its value, etc.
-
-@cindex variables, what are
-@cindex shell variables
-@cindex shell variables, types of
-
-@node Variable Mechanics
-@section Mechanics of Named Variables
-
-Shell behavior that depends on a variable may depend on:
-
-@itemize
-@item
-the value of the variable
-
-@item
-whether the variable exists (is set), independent of what value it has
-@end itemize
-
-Thus, in order to configure a shell variable to get the effect you want,
-you may need to know:
-
-@itemize
-@item
-how to tell whether a variable exists (is set)
-
-@item
-how to create (set) a variable
-
-@item
-how to unset a variable (make it cease to exist)
-
-@item
-how to find out the value of a variable
-
-@item
-how to change the value of a variable
-@end itemize
-
-To find out the value of a variable, type
-@samp{echo $@var{name}}, where @var{name} is the variable of interest.
-(Be sure to include the @samp{$}:  If you omit it, @code{echo} just
-repeats the @var{name} itself.)
-@itemize
-@item
-If something is printed, that is the value of the variable.
-
-@item
-If nothing is printed, then either the variable exists and has a null
-(invisible) value, or the variable does not exist.
-@end itemize
-
-@noindent
-More generally, to get the value stored in a variable, precede the variable's
-name by a dollar sign, @samp{$}.
-@c explain what 'more generally' is
-
-To set a variable (create a new variable or change the value of
-an existing variable), type
-@samp{@var{name}=@var{new-value}},
-where @var{name} is the variable you want to set and
-@var{new-value} is the value you want it to have.
-Don't leave any blank space around the @kbd{=}.
-If you just want to create the variable, and don't need to give it any
-particular value, you can simply omit the @var{new-value}
-and type @samp{@var{name}=}.
-
-The name of a shell variable must start with a letter or an underscore
-and it can contain only letters, digits, and underscores.
-Uppercase and lowercase letters are not equivalent in names.
-Be careful to type variable names correctly:
-If you type a name wrong before an @samp{=}, you will either change
-the wrong variable or create a new variable.
-
-To include whitespace (spaces, tabs, or newline characters) in a
-variable's value, either quote the value with @code{"@dots{}"} or
-@code{'@dots{}'}, or precede each whitespace character with a backslash,
-@samp{\} (@pxref{Quotation}).
-
-@c bfox: this stuff is done at assignment time
-@c Value undergoes tilde expansion, parameter and variable expansion,
-@c command substitution and quote removal.
-
-To get rid of a variable, type @samp{unset @var{name}},
-where @var{name} is the variable of interest.
-
-To find out whether a variable exists, you can do any of the following:
-@itemize
-@item
-Type @samp{set} to get a listing of all your shell variables in
-alphabetical order, and see if the variable is in the list.
-
-@item
-Type @samp{set | grep @var{name}=}.
-If the variable @var{name} exists, its name (and value, if non-null) will be given;
-otherwise there will be no output.
-
-@item
-Type @samp{set -u}
-@c substitute new equivalent: something like
-@c  set -o nounset
-to tell the shell to make @code{echo} of an unset
-(nonexistent) variable give an error message.
-From then on, @samp{echo $@var{name}} will be different for nonexistent
-variables than for variables with null values.
-@end itemize
-
-Warning: @code{set} and @samp{unset} are not inverse commands:
-Although @code{unset} unsets shell variables, @code{set} does not set
-them.
-
-@node Variable Examples, Positional, Variables, Variables
-@subsection Examples with Named Variables
-
-@c need more examples
-@c may integrate with parent section (mechanics)
-
-Here are some examples of user-defined variables:
-
-@example
-bash$ test=This\ is\ a\ test
-bash$ test_2="This is also a test"
-bash$ test_3='Yet another test'
-bash$ echo $test
-This is a test
-bash$ echo $test_3
-Yet another test
-@end example
-
-To prevent @samp{$} from meaning ``evaluate the following variable,''
-precede the @samp{$} with a backslash, @samp{\}, or enclose @samp{$} and
-the reference in single quotes.
-@c note: not double quotes
-@c explain diff between single & double quotes
-For example:
-
-@example
-bash$ echo \$test
-$test
-bash$ echo '$test'
-$test
-bash$ echo $test
-This is a test
-@end example
-
-@node Positional, Predefined, User-definable, Variables
-@section Positional Parameters
-
-@cindex positional parameters
-A program, shell function, or shell script needs a way to refer to
-arguments passed to it on the command line that invoked it.  The shell
-provides for this by means of special variables called @dfn{positional
-parameters}.
-
-The name of a positional parameter is a positive integer.
-
-The value of a positional parameter is whatever the shell assigns
-it from a command line, or whatever you assign it with
-@code{set} or @code{shift} (described below).
-
-To evaluate a positional parameter, precede its
-name by a dollar sign, @samp{$}, just as you would a named variable.
-But if the parameter name is longer than a single digit, you must
-enclose it in braces.  For example, you'd type
-@kbd{$@{10@}} to refer to the value of parameter @samp{10}.
-
-When you give a command, the arguments are put into consecutive
-positional parameters starting with @code{1}.
-
-For example, assume we have a script named @code{args}
-that simply echoes its first two arguments to the standard output.
-That is, the script contains just the command
-@samp{echo $1 $2}.  Then @code{args} behaves as follows:
-
-@example
-bash$ args 1 3
-1 3
-bash$ args hi there
-hi there
-bash$ args hi there everybody
-hi there
-bash$ 
-@end example
-
-@xref{Predefined}, for information about the parameter @code{0},
-which holds the name of the current command,
-the parameters @code{*} and @code{@@}, which refer to all
-the positional parameters at once, and the parameter @samp{#},
-which holds the number of positional parameters (the current
-number of arguments).
-
-The @code{set} command can be used to assign new values to positional
-parameters.  The command
-
-@example
-set @var{values}
-@end example
-
-@noindent
-assigns the given @var{values} to consecutive positional parameters 
-starting with @code{1}.  For example, if we augment the above
-@code{args} script to be
-
-@example
-echo $1 $2
-set new message
-echo $1 $2
-@end example
-
-@noindent
-then it will modify its positional parameters, replacing the
-command-line arguments with @code{new} and @code{message}, and will behave
-as follows:
-
-@example
-bash$ args hi there everybody
-hi there
-new message
-bash$
-@end example
-
-
-The @code{shift} command moves each positional parameter's value
-into the parameter to its left.
-The value of @code{2} is moved into @code{1}, the value of @code{3}
-is moved into @code{2}, and so on.
-The last parameter becomes null.
-
-@c bfox: used to determine whether any args left on line -- example?
-This is useful, for example, in a recursive shell function,
-to ``cdr down'' the list of arguments.
-
-@code{shift} can also take a numeric argument:
-@example
-shift @var{n}
-@end example
-
-@noindent
-This causes the positional parameters to be shifted left
-@var{n} positions instead of just 1 position.
-The value of parameter @var{n+1} is moved into @code{1}, and so on.
-
-For example, if we modify the above @code{args} script to be
-
-@example
-echo $1 $2
-shift 2
-echo $1 $2
-@end example
-
-@noindent
-then it will behave as follows:
-
-@example
-bash$ args hi there everybody else
-hi there
-everybody else
-bash$
-@end example
-
-BASH itself also has positional parameters, which you can @code{set},
-@code{shift}, and examine.
-The positional parameters seen by a command are distinct from
-those of the invoking shell.
-In this example, we set the shell's first three positional parameters
-and see that they are unaffected by execution of the @code{args}
-command defined above, which uses @samp{echo $1 $2} to echo its first two arguments.
-
-@example
-bash$ set one two three
-bash$ echo $1 $2
-one two
-bash$ args hi you
-hi you
-bash$ echo $1 $2
-one two
-bash$ 
-@end example
-
-The @code{set} command is the easiest way to break a multi-word string
-into elements that can be referenced individually.  This can be useful
-in conjunction with command substitution (@pxref{Command Subs}).  For
-example, we can set the positional parameters to the words in the output
-of the @code{date} command as follows:
-
-@example
-bash$ set $(date)
-bash$ echo $1 $2 $3 $4 $5 $6
-Fri Feb 22 18:13:14 EST 1991
-@end example
-
-@node Predefined, Command Subs, Positional, Variables
-@section Predefined Shell Variables
-@c 'predefined shell vars' sound to me like ordinary vars that are defined
-@c by the shell (e.g. HOME)
-@c bfox: not standard terminology -- can change
-
-@cindex shell variables, predefined
-@cindex variables, predefined shell
-The predefined shell variables are set by the shell.
-You cannot assign them values, but
-you can reference their values by prefacing their names by @samp{$}. 
-The predefined shell variables are:
-
-@table @code
-@item ?
-contains the exit status returned by the command that was last run in
-the foreground.
-
-@item !
-contains the process identification number of the last background
-command.
-
-@item $
-contains the process identification number of the current shell.
-
-@item #
-contains the current number of positional parameters (@pxref{Positional}).
-
-@item -
-contains shell options.
-@c bfox: echo $- gives the options you invoked bash with (as modified by
-@c set) [some subset of options -- due to new -o option]
-
-@item 0
-(zero) contains the name of the command being executed.
-
-@item *
-@itemx @@
-contain a list of the positional parameters.
-
-@c bfox:
-@code{*} and @code{@@} are equivalent unless they appear
-inside double quotes.
-@samp{$*} @samp{$@@} are both equivalent to @samp{$1 $2 ... $@var{n}},
-where @var{n} is the last positional parameter.
-But @code{"$*"} is equivalent to @samp{"$1 $2 $3 @dots{}"}
-and @code{"$@@"} is equivalent to @code{"$1" "$2" "$3" @dots{}}.
-In other words, @code{"$*"} expands to a single word, whereas
-@code{"$@@"} expands to separate words.
-
-@c replace example
-@c bfox will suppply example with FOR command
-@example
-bash$ cat a
-this is a file named a
-bash$ cat b
-this is a file named b
-bash$ cat c1
-/bin/cat "$*"
-bash$ cat c2
-/bin/cat "$@@"
-bash$ c1 a b
-a b: No such file or directory
-bash$ c2 a b
-this is a file named a
-this is a file named b
-@end example
-
-@noindent
-This example shows the use of two scripts: @code{c1}, which tries to execute
-@file{/bin/cat} on the expansion of @samp{$*}, and @code{c2}, which executes
-@file{/bin/cat} on the expansion of @samp{$@@}.  When invoked with more
-than one argument, @code{c1} attempts to run @code{cat} on the file whose name
-is the concatenation all its arguments -- not what you would expect.  
-On the other hand, @code{c2} uses @samp{$@@} and behaves correctly.
-@end table
-
-The following example sets the positional parameters to
-the output of the @code{date} command and shows that that output
-consists of 6 words:
-
-@example
-bash$ echo $#
-0
-bash$ set $(date)
-bash$ echo $#
-6
-bash$ echo $*
-Sat Aug 4 22:19:05 EDT 1990
-@end example
-
-Here's an obscure script using predefined parameters:
-
-@example
-#
-# 2, 3, 4, 5 -- print in the number of columns defined by the
-# name of the script.  Adapted from Kernighan and Pike.
-#
-/bin/pr -$(basename $0) -t -l1 "$@@"
-@end example
-
-@noindent
-This file prints its input in as many columns as specified by its
-name -- if invoked as "2", it prints its input in two columns.
-
-@node Parameter Subs, Arithmetic Evaluation, Command Subs, Variables
-@section Variable Substitution
-
-@c Posix has excellent description of this, with table comparing the
-@c different substitutions.  Plagiarize it.
-
-The simplest case of @dfn{variable substitution} is the simple
-@code{$@var{name}} construct, in which the value of the variable
-@var{name} is substituted for @code{$@var{name}}.
-More complicated constructs let you specify what should happen
-if the named variable is unset or if its value is null.
-
-@cindex parameter substitution
-@cindex substitution, of parameter values
-BASH's parameter substitution facility lets you test and conditionally set the
-value of parameters and shell variables.
-@c what's param vs. shell var 
-Braces allow a variable to be
-tested to see if it is defined and is not the null string.  This is
-important as sometimes the value of an expression depends on whether or
-not a variable has been defined.  If the colon in the following 
-expansions is omitted, BASH only tests that the parameter is
-unset; it does not test to see that it's unset or null.
-
-The substitutions allowed are:
-
-@c fix up items below to make differences clear by using a single
-@c example throughout
-@table @code
-@item $@{@var{variable}@}
-The value of @var{variable} is substituted.  The braces are required
-when @var{variable} is a positional parameter with more than one digit,
-or when @var{variable} is followed by a character that isn't part of
-its name.
-@c e.g. ${v}e -- why should that happen?
-
-@item $@{@var{variable}:-@var{string}@}
-If the named @var{variable} exists, then the expression has
-the value of the variable, otherwise it has the value @var{string}. 
-For example:
-
-@example
-echo $@{timenow-$(date)@}
-@end example
-
-@noindent
-This echoes the current time, as stored in the variable @code{timenow}. 
-If @code{timenow} isn't set, the @code{date} command is run to generate
-it.
-@c clarify -- date generates time, doesn't set timenow var
-
-@item $@{@var{variable}:=@var{string}@}
-If the named @var{variable} exists, then the expression has
-the value of the variable, otherwise it has the value of @var{string}
-@emph{and} @var{string} is assigned to @var{variable}.  For example:
-
-@example
-bash$ echo $A
-
-bash$ echo $@{A=123@}
-123
-bash$ echo $A
-123
-@end example
-
-@noindent
-The first line of this example shows that @samp{A} is unset.
-@c actually, nset or null
-The second line assigns the value of 123 to @samp{A}.  Then the value of
-@samp{$A} is substituted, so @samp{A} retains the value 123.
-@c last sentence unclear
-
-This form does not work with positional parameters (@pxref{Positional})
-or special parameters (@pxref{Predefined}).
-@c what doesn't work?  just this := case? unlikely
-
-@item $@{@var{variable}:+@var{string}@}
-If the named @var{variable} exists, then it has
-@c has --> gets?
-the value of @var{string}, otherwise it has no value.
-@c ? otherwise not created?
-For example:
-
-@example
-if [ "$@{var+set@}" = "set" ] ; then
-     echo '$var' is set
-fi
-@end example
-
-@noindent
-This example shows a simple method to test whether or not a shell
-variable is set.  If @code{var} has a value, then the expansion has the
-value @code{set}, and you can test on that fact.
-@c expansion?  test?
-
-@item $@{@var{variable}:?@var{text}@}
-If the named @var{variable} exists, then the expression has
-the value of the variable, otherwise the message @var{text} is printed. 
-For example:
-
-@example
-: $@{REQUIRED?"REQUIRED must be set"@}
-@end example
-@c example messed up?  colon in wrong place?
-
-@noindent
-This statement echoes @samp{REQUIRED must be set} if @code{REQUIRED} is not set. 
-This can be used to inform the user that further execution of the
-current script is not possible.  If you don't make this part of an
-interactive script, the shell exits after printing the
-message.
-@c ???
-If there is no @var{text} following the @samp{?}, BASH prints a standard
-message.
-
-@item $@{#@var{variable}@}
-The length in characters of the value of @var{variable} is substituted. 
-@c next sentence ???
-If @var{variable} is @samp{*} or @samp{@@}, the length substituted is
-the length of @samp{*} expanded within double quotes.
-
-@item $@{@var{variable}#@var{string}@}
-@itemx $@{@var{variable}##@var{string}@}
-@c ???
-The @var{string} is expanded to produce a pattern just like pathname
-expansion.  If the pattern matches the beginning of the value of
-@var{variable}, then the expansion is the value of @var{variable} with
-the shortest matching pattern deleted (the @samp{#} case) or the
-longest matching pattern deleted (the @samp{##} case).
-
-@item $@{@var{variable}%@var{string}@}
-@itemx $@{@var{variable}%%@var{string}@}
-@c ???
-The @var{string} is expanded to produce a pattern like pathname
-expansion.@c ???
-If the pattern matches
-@c matches ???
-a trailing portion of the value of
-@var{variable}, then the expansion is the value of @var{variable} with
-the shortest matching pattern deleted (the @samp{%} case) or the longest
-matching pattern deleted (the @samp{%%} case).
-@end table
-
-
-@node Functions, Programming, Aliases, Top
-@chapter Shell Functions
-
-@cindex functions
-@c need to say what functions are for
-A shell function stores a series of commands for execution at a later
-time, similar to a shell script.  Functions are executed in
-the current shell; no new process is created to interpret them.
-
-@node Function Definition
-@section Defining a Function
-
-@c fix: fn def is a cmd, can go anywhere
-Function definitions can be entered from the command line or declared in
-your login file (@pxref{Start-up}).
-The shell doesn't save functions when you log off.  To make
-function definitions ``permanent'' you must enter them in your login file
-(@pxref{Start-up}).
-To declare a function use either of the following equivalent forms:
-@cindex functions, format of
-
-@c ? what's the format of the list?  what's a legal name? same as var
-@c names except fn name can contain dash in addition to what var name can have
-
-@example
-function @var{fname} () @{ @var{commands} @}
-
-@r{or}
-
-@var{fname} () @{ @var{commands} @}
-@end example
-
-@noindent
-It makes no difference which form you use.  Both create a simple
-command invoked by @var{fname} which executes the given @var{commands}.
-
-@cindex functions, recursive
-@cindex recursive functions
-A function can be recursive; that is, it can call itself.  No limit is
-imposed on the number of recursive calls that can be made.  However,
-make sure you put in checks to avoid infinite recursion, as you would
-in any programming language.
-
-@node Function Arguments
-@subsection Function Arguments
-
-@cindex functions, positional parameters and
-@cindex positional parameters, functions and
-Arguments present on the command line along with @var{fname} are passed
-to the function as positional parameters during its execution
-(@pxref{Positional}).  The special parameter @code{#} is updated to
-reflect the change.  Positional parameter @code{0} is unchanged.  When the
-function finishes, the values of the positional parameters and the
-special parameter @code{#} are restored to the values they had before
-the function was executed.
-
-Here's an example of a function, using the first syntax:
-
-@c ? how about a simpler, more basic example?
-@example
-function xtitle()
-@{
-   if [ "$DISPLAY" ] ; then
-   echo -n -e "\033]2;$*\007";
-   echo -n -e "\033]1;$*\007";
-   fi
-@}
-@end example
-
-@noindent
-@c ?
-If BASH is executing in an xterm window,
-@c what's an xterm window?
-this function makes its arguments
-@c whose args? the fn?
-be the string displayed in an xterm title bar.
-
-@c use same example both times (above & here)
-Here's an example of a function, using the second syntax:
-
-@c ? another mysterious example
-@example
-cd()
-@{
-     builtin cd "$@@" &&
-     xtitle $HOST: $PWD
-@}
-@end example
-
-@noindent
-This redefines the @code{cd} built-in command to allow setting the
-title of an xterm window to the host name and current directory.
-
-@cindex functions, the shell and
-@cindex functions, execution of a
-@cindex functions, making permanent
-@c ? call vs. execute vs. interpret (call is defined in next section)
-Shell functions can be executed only in the same shell that
-is used to call that function.  The shell does not fork a copy of
-itself
-@c ? fork a copy?? and isn't subshell for a script optional?
-to interpret the function, like it would with a script.
-
-@menu
-* Listing::   Listing available functions.
-* Calling::   Calling functions.
-* Export::    Exporting functions.
-* Local::     Local variables within functions.
-* Return::    Returning from function calls.
-@end menu
-
-@node Local, Return, Export, Functions
-@subsection Local Variables
-
-@cindex local variables, functions and
-@cindex @code{local} command
-@cindex functions, local variables and
-@cindex functions, @code{local} command and
-Bash supports the use of local variables within a function. 
-A local variable shadows the value of a previously defined variable
-(local or not) with the same name.
-
-Local variables differ from other variables in only one way: when the
-function that defined the variable exits, the local variable goes away,
-and any previously defined variable with the same name becomes visible
-again.  
-
-There is no way to have changes made to a local variable affect the
-value of any previous variable with the same name.  Local variables
-have to be exported to be available to programs invoked by that
-function, and to their children, too.
-@c children not explained
-
-Local variables are created with the @code{declare} or @code{local}
-commands (@pxref{Built-in}):
-
-@table @code
-@c KELLEM added i (frxi)
-@item declare @r{[}-+frxi@r{]} @r{[}@var{name}@r{[}=@var{value}@r{]}@r{]}
-This command declares variables and gives them attributes.  If no
-@var{name} is given, then a listing of the values of variables is
-displayed, instead.  
-
-The @samp{-f} option causes @code{declare} to use function names only. 
-@c ? only as opposed to what?
-The @samp{-r} option causes @code{declare} to make @var{name} readonly. 
-@c ? what's readonly?
-The @samp{-x} option causes @code{declare} to make @var{name} export
-only.
-@c ? what's export only?
-@samp{+} and @samp{-} turn on and off, respectively, the options.
-@c ? on/off unclear
-
-When @code{declare} is used in a function, it makes @var{name} local,
-the same as the @code{local} command.
-
-@example
-bash$ type z
-z is a function
-z ()
-@{
-    declare a=2;
-    echo in z, a = $a;
-@}
-bash$ a=3
-bash$ z
-in z, a = 2
-bash$ echo $a
-3
-@end example
-
-@noindent
-The instance of the variable @code{a} in the function @code{z} is
-private to @code{z}; the value of @code{a} in the shell
-(set by @samp{a=3)} does not
-affect it and is not affected by it (as shown by the final @samp{echo $a}).
-
-@item local @var{name}@r{[}=@var{value}@r{]}
-This creates a local variable called @var{name}, and gives it a value
-of @var{value}.  The @code{local} command can be used only within a
-function; it causes the variable @var{name} to be restricted to that
-function and its children.
-@c ? what children?
-
-@example
-bash$ type z
-z is a function
-z ()
-@{
-    local pid=$$;
-@c ? what's $$
-    echo This function is executed in shell $pid;
-@}
-bash$ echo $pid
-
-bash$ z
-This function is executed in shell 252
-bash$ echo $pid
-
-bash$
-@end example
-
-@noindent
-The variable @code{pid} is private to function @code{z}; the calling
-shell has no such variable.
-@c echo above doesn't tell us there's no such var, just that either
-@c there's no such var or there's such a var with a null value
-
-@end table
-
-Here is the declaration of a function that uses a local version of the
-@code{PATH} variable, and executes all of its arguments using a
-@code{PATH} which contains only @file{/bin}:
-
-@example
-using_bin () @{
-  local PATH=/bin
-  eval $*
-@}
-@end example
-
-@noindent
-A useful call to this function might look like:
-
-@example
-using_bin "rm *.texinfo; cp ../*.texinfo ."
-@end example
-@c ? what are the quotes for?  to have just 1 arg?  why not do w 2 args?
-
-@node Return,  , Local, Functions
-@subsection Returning From Functions
-
-@cindex functions, return status
-@cindex @code{return} command
-@cindex functions, @code{return} command and
-A function exits if an error occurs, if a @code{return} statement is
-executed, or after executing the last command.
-
-Here is the syntax of the return command:
-
-@example
-return @r{[}@var{n}@r{]}
-@end example
-
-@noindent
-@c ? return status (= return value ?) not defined -- = exit status?
-This causes a function to exit with the return value specified by
-@var{n}, if present.  If @var{n} is omitted, the return status is that
-of the last command.
-
-Here's an example:
-
-@example
-true()
-@{
-    return 0
-@}
-false()
-@{
-    return 1
-@}
-@end example
-
-@noindent
-These are replacements for the commands of the same name, and will
-execute much faster. 
-@c ? what true/false cmds?  documented?  what are they for? Why is this faster?
-
-@node Calling, Export, Listing, Functions
-@section Calling Functions
-
-@cindex functions, calling
-To use a function you must @dfn{call} it.  This works the same way as
-calling (and using) any program.  Here is the syntax used to call a
-function:
-
-@example
-@var{fname} @r{[} @var{args} @r{]}
-@end example
-
-@noindent
-This calls the function named @var{fname}, and provides it with
-optional command-line arguments, @var{args}.  Here's an example:
-
-@example
-bash$ f /usr/spool/mail/close
-@end example
-
-@noindent
-This calls the function @code{f} with the name of a system mailbox as
-its argument.  In the body of the function, @samp{$1} is replaced with
-@file{/usr/spool/mail/close}.
-
-@cindex functions, operating system commands and
-@cindex operating system commands and functions
-@cindex functions, the @code{command} command and
-@cindex @code{command} command
-If you have a function with the same name as an operating system
-command, you can do one of two things to be able to run that operating
-system command instead of your function.  You can call the command using its full pathname, or
-you can use the @code{command} command (@pxref{Built-in}):
-
-@example
-command @r{[}@var{command} @r{[}@var{args}@r{]}@r{]}
-@end example
-
-@noindent
-This causes the shell to run the command named in @var{command} with
-the arguments specified by @var{args}, ignoring shell
-functions.  For example, if you have a shell function called @code{ls},
-and you want to run the operating system's @code{ls} command instead,
-you'd have to say @samp{command ls}.
-
-@node Listing, Calling, Functions, Functions
-@section Listing Available Functions
-
-@cindex functions, listing
-You can get a list of all the currently defined functions using the
-@samp{-f} option of the @code{declare} command (@pxref{Built-in}).  The
-text of the functions, as well as the function names, is included in
-the listing.  For example:
-
-@example
-bash$ declare -f
-declare -f f ()
-@{
-    grep "^From:" $@{1-$MAIL@};
-@}
-declare -f popd ()
-@{
-    builtin popd "$@@";
-    xtitle $HOST: $PWD;
-@}
-declare -f pushd ()
-@{
-    builtin pushd "$@@";
-    xtitle $HOST: $PWD;
-@}
-declare -f cd ()
-@{
-    builtin cd "$@@";
-    xtitle $HOST: $PWD;
-@}
-declare -f xtitle ()
-@{
-    echo -n -e "\033]2;$*\007";
-    echo -n -e "\033]1;$*\007";
-@}
-@end example
-
-@noindent
-This lists the names of the functions together with their definitions.
-
-
-
-@node Environment, Conditionals, Variables, Top
-@chapter The Shell Environment
-@c should precede or merge with shell var chapter?
-
-@c ? documentation of export and declare is very inconsistent, over the
-@c parts of this chapter and the built-in command appendix.
-@c  What are they supposed to do?  In particular, is it supposed to be
-@c  the case that:
-@c  export   =   declare (or maybe declare -x)
-@c  export -f =  declare -f (or maybe declare -fx)
-@c Is export intended to replace declare ?
-
-@c cover 'set -o allexport...' somewhere in this chapter
-
-@cindex environment
-@cindex shell environment
-@c ? program environment vs. shell environment
-When a program is invoked it is given an array of strings called the
-@dfn{environment}.  The shell @dfn{environment} is the set of all
-shared and exported
-@c ? shared = exported?
-shell variables and functions.  By typing
-@code{declare -x}, or the @code{export} command by itself, you can see
-a list of all exported variables.  This is a list of name-value pairs,
-of the form @samp{@var{name}=@var{value}}:
-
-@example
-bash$ export
-declare -x HOME=/usr/chet
-declare -x SHELL=/bin/bash
-declare -x TERM=xterm
-declare -x USER=chet
-declare -x PATH=/usr/local/bin/gnu:/usr/local/bin:/usr/ucb:/bin:/usr/bin
-declare -x HOSTTYPE=IBMRT
-declare -x MAILCHECK=60
-declare -x BASH=/bin/bash
-declare -x HISTFILE=/usr/chet/.history
-declare -x HISTSIZE=500
-declare -x LOGNAME=chet
-declare -x TZ=EST5EDT
-declare -x MAIL=/usr/chet/mbox
-declare -x HOST=arrakis
-declare -x EDITOR=/usr/local/bin/ce
-declare -x VISUAL=/usr/local/bin/ce
-declare -x PAGER=/usr/local/bin/more
-declare -x DISPLAY=unix:0.0
-@end example
-
-A process can access and use any environment variables and functions
-that exist in that process's environment.
-@c ? access AND use?
-C programs have a @code{getenv()} function available for this purpose.
-@c sudden switch from 'commands' (scripts, etc.) to C progs
-
-The shell allows you to manipulate the environment in several ways.  On
-invocation,
-@c clarify 'invocation' -- maybe ``when it starts up, the shell scans...''
-the shell scans its own environment and creates a parameter
-@c ? parameter?
-for each name found, automatically marking it for export to child
-processes.
-@c ? marking paramater? marking name?
-
-Generally, this ``basic'' environment consists of (at least) the
-@code{HOME}, @code{PATH} and @code{TERM} variables.  These tell the
-shell what your home directory is, the search paths you use most often,
-and what terminal you want to emulate, respectively.  Other variables
-are used to customize your environment to make it more
-useful to you.
-
-Executed commands inherit this environment.
-@c ? what environment?
-@c ? explain inherit.  different from share? use?
-If the value of a parameter
-@c ? parameter
-in the environment is modified,
-@c ? modified by the command that's executed?
-the new value becomes part of the environment, replacing the old.
-@c ? doesn't subshell  have COPY of env?
-
-@c ???
-Therefore, the environment inherited by any executed command consists
-of the shell's initial environment, whose values may be modified in the
-shell, less any values removed by the @code{unset} command, plus any
-additions via the @code{export} and @code{declare} commands.
-
-@c ??? child processs?  subshells?
-Remember that exported variables can only be exported to child
-processes.  If you want to make a variable accessible to all subshells,
-be sure to define and export it in your login shell.
-
-The environment for any simple command or function can be augmented
-temporarily by prefixing the command with parameter assignments.
-@c ? parameter = shell variable ?
-These assignment statements affect only the environment seen by that command.
-
-@example
-bash$ foo=bar printenv foo
-bar
-bash$ printenv foo
-bash$
-@end example
-
-@c ???
-If @samp{set -k}
-@c substitute new 'set -o ...' version of above
-is used (@pxref{Built-in}), then all parameter
-assignments are placed in the environment for a command, not just those
-that precede the command name.
-
-@node Shared Variables,  , Arithmetic Evaluation, Variables
-@section Shared Variables
-@c ? shared = exported?
-
-@cindex shared variables
-@cindex local variables
-@cindex variables, local
-@cindex variable, shared
-@cindex shell variables, local
-@cindex shell variables, shared
-Normally shell variables are @dfn{local} variables.  That is, these
-variables are known only to the shell that created them.  When you
-start a new shell (@pxref{Install}), the new shell doesn't know about
-any of the old shell's variables.  Each shell's variables are known
-only (are local) to itself.
-
-Sometimes, however, we want a new shell to recognize the old
-shell's variables.  You can accomplish this using the @code{export}
-command (@pxref{Built-in}):
-
-@table @code
-@item export @var{names}
-exports the value of named variables @var{names} to a subshell.
-@c what subshell?
-Exported variables can only be exported
-to child processes and @emph{not} back to parent processes.
-@c to every child created from now on?
-@c explain child & parent somehwere
-
-@item export -n @var{names}
-removes the export property from the named variables, @var{names}.
-@c i.e. no longer exported?
-
-@item export
-lists the variables that are already exported.
-@c ? relationship to declare -x ?
-@end table
-
-The @code{export} command actually gives only a @emph{copy} of the
-original variable to the new subshell.  When the subshell dies, so does
-the value of the variable @emph{copy}; the original variable value
-remains untouched.
-@c key is probably that changes to var in subshell don't affect value
-@c seen by parent shell ?
-
-@node Export, Local, Calling, Functions
-@section Exporting Functions
-
-@cindex functions, exporting
-@cindex @code{declare} command
-@cindex functions, @code{declare} command and
-@cindex @code{export} command
-@cindex functions, @code{export} command and
-Normally, functions are unset
-@c ? unset?
-when the shell executes a shell script. 
-You can get around this problem by exporting your functions to the
-environment (@pxref{Environment}).  Exported functions are available to
-any invocation of the shell, including any shell scripts.  There are
-two ways you can export functions:  use the @samp{-f} option of the
-@code{export} command or use the @samp{-xf} option of the
-@code{declare} command (@pxref{Built-in}).  Here's how they work:@refill
-@c ? why synonymous commands?
-@c  confusing:  export -f fn = declare -xf fn, export -f = declare ??
-
-@table @code
-@item export -f @var{fname}
-exports the function named @var{fname} to the environment.  More
-than one function name can be listed for export.
-@item export -f
-lists the currently exported functions.
-
-@noindent
-For example:
-
-@c ? what is 'type'
-@example
-bash$ type fn
-fn is a function
-fn ()
-@{
-    grep "^From:" $@{1-$MAIL@};
-@}
-bash$ export -f fn
-bash$ export -f
-declare -xf fn ()
-@{
-    grep "^From:" $@{1-$MAIL@};
-@}
-@end example
-
-@item declare -xf @var{fname}
-exports the function named @var{fname} to the environment.  More
-than one function name can be listed for export.
-@item declare -xf
-lists the currently exported functions.
-@c ? is it declare -xf or declare -x?  example below confused
-
-@noindent
-For example:
-
-@example
-bash$ type fn
-fn is a function
-fn ()
-@{
-    grep "^From:" $@{1-$MAIL@};
-@}
-bash$ declare -x fn
-bash$ declare -xf
-declare -xf fn ()
-@{
-    grep "^From:" $@{1-$MAIL@};
-@}
-@end example
-
-@noindent
-The first @code{declare} statement marks the function @code{fn} for
-export to the environment.
-@c ? marks for export = exports (above) ?
-The second statement lists all exported
-functions; in this case @code{fn} is the only one.@refill
-
-@end table
-
-@node Substitution
-@chapter Command Substitution and Arithmetic Evaluation
-
-@node Command Subs, Parameter Subs, Predefined, Variables
-@section Command Substitution
-
-@cindex command substitution
-@cindex substitution, of command values
-A command enclosed in backquotes,
-@samp{`@var{command}`}, is replaced by the output it
-produces.  This is called @dfn{command substitution}.
-
-For example:
-
-@example
-bash$ echo I am logged in as `whoami`
-I am logged in as jems
-bash$
-@end example
-
-@noindent
-Inside single quotes, a backslash retains its literal meaning, except when followed by
-a @samp{$}, @samp{`}, or a @samp{\}.
-@c ? what happens in those cases?  why just those cases?
-
-
-@c preferred syntax should be first, other mentioned as historical
-You can also perform command substitution using the
-@samp{$(@var{command})} syntax.
-This is the preferred syntax for command substitution.
-When this form of command substitution
-is used, none of the characters between the parentheses are treated
-specially; all characters are considered to make up the command. 
-Here's an example:@refill
-
-@c candidate for world's worst example?
-@example
-kill -1 $(cat /etc/named.pid)
-@end example
-
-@noindent
-This sends a hangup signal (@code{SIGHUP}) to the process whose process
-@sc{id} is in the file @file{/etc/named.pid}.
-
-Note that the command substitution operation replaces any linefeed
-characters in the command's output with space characters.
-@c ? linefeed = newline?
-The shell also deletes trailing newlines.
-@c what's word splitting?  path name expansion?
-Note, also, that word
-splitting and path name expansion are not performed on the resulting
-command if the substitution appears within double quotes.
-@c ??? what substitutiont? what resulting command?
-
-Command substitutions may be nested.  (When nesting using the
-@samp{`@var{command}`} form, protect the inner backquotes with
-backslashes to prevent shell misinterpretation.)
-
-Command substitution is useful in assigning variables.  Use it when you
-want the output of a command to be the value of a variable.  For
-example:
-
-@example
-x=$(pwd)
-@end example
-
-@noindent
-This assigns @code{x} the value of your current working directory.  This
-example isn't really useful because shell has built-in command
-(@code{cd}) for performing this action.
-@c ? huh?  cd doesn't assign x
-Here's a more useful example:
-
-@example
-i=$(expr $i + 1)
-@end example
-@c ? what's expr?
-
-@noindent
-This increments a number if @var{i} is a number.  This is useful in
-shell scripts for creating loops.
-
-Here's another example:
-
-@example
-name=$(basename $i)
-@end example
-
-@noindent
-This removes all the path information from @var{$i} and gives you a
-pure file name.
-
-A common use of command substitution's linefeed-to-spaces translation
-is keeping lists of items on separate lines of a file, and then using
-@code{cat} inside of back-quotes to produce word lists for the
-@code{for} command (@pxref{for}).
-In the following example, the @code{cat} command is used to write the
-contents of file @file{namelist} to the output:@refill
-
-@example
-bash$ cat namelist
-joe
-sam
-mary
-ezekiel
-bash$ echo `cat namelist`
-joe sam mary ezekiel
-@end example
-
-Here's an example using the file
-@file{namelist} from above:@refill
-
-@example
-bash$ for i in `cat namelist`
-bash> do
-bash> echo "Hi there, $i."
-bash> done
-Hi there, joe.
-Hi there, sam.
-Hi there, mary.
-Hi there, ezekiel.
-@end example
-
-@c KELLEM added this skeletal section
-@c this section assumes that $[..] arithmetic evaluation is included in
-@c 1.06 -- it's from posix and should be included
-@node Arithmetic Evaluation, Shared Variables, Parameter Subs, Variables
-@section Arithmetic Evaluation
-
-@c this section should probably be reworded a little, but it's a start
-@cindex arithmetic evaluation
-@cindex arithmetic expressions
-@cindex expressions, arithmetic
-@cindex evaluating arithmetic expressions
-@cindex math expressions
-You can evaluate arithmetic expressions in BASH.  The syntax for
-arithmetic evaluation is @samp{$[@var{expression}]}.  The
-@var{expression} is treated as if it were within double quotes, but a
-double quote inside the brackets is not treated specially.  All tokens
-in the @var{expression} undergo parameter expansion, command
-substitution, and quote removal.  Arithmetic evaluations may be
-nested.@refill
-
-The evaluation of expressions is done in long integers with no check for
-overflow, though division by 0 is trapped and flagged as an error.  The
-following list of operators is grouped into levels of equal precedence
-operators.  The levels are listed in order of decreasing precedence.
-
-@table @code
-@item -
-unary minus
-@item !
-logical @sc{not}
-@item * / %
-multiplication, division, remainder (modulus)
-@item + -
-addition, substraction
-@item <= >= < >
-comparison operators
-@item == !=
-equality, inequality
-@item =
-assignment
-@end table
-
-Shell variables are allowed as operands; parameter expansion is
-performed before the expression is evaluated.  The value of a parameter
-is coerced to a long integer within an expression.  Operators are
-evaluated in order of precedence.  Subexpressions in parentheses are
-evaluated first and may override the precedence rules above.  Operators
-of equal precedence are evaluated from left to right.
-
-You may also specify arithmetic evaluation with the @code{let} builtin
-command.  @xref{Built-in, let, Builtin Commands}, for more
-information.@refill
-
-@node Scripts, Variables, Programming, Top
-@chapter Shell Scripts
-
-@cindex shell scripts
-@cindex scripts
-A shell script is a collection of operating system commands,
-comments, and shell programming-language constructs grouped together in
-a file.
-
-Shell scripts can be composed of fixed commands requiring no arguments,
-and run without interruption.  Scripts can also be composed of commands
-that require user input.  If this is the case, the script can obtain
-that input either by prompting or by arguments included on the command
-line used to invoke the script.  Scripts can also use pipes and
-redirection both internally and externally.
-@c ? what does last sentence mean?
-@c  guess: internal = redir ops in cmds in script, external = i/o of
-@c  script redirected by command invoking script
-
-@cindex script, how to execute a
-You can run shell scripts in a number of ways.  You can type the
-@code{bash} command followed by the script file name, or you can turn the
-script into an actual command using the @code{chmod} command
-(@pxref{chmod, , @code{chmod}, utilities, The GNU Utilities Manual}),
-and execute that new command by typing the script's file name.  Both of
-the ways of executing a script create a new shell process.
-@c ? last sentence false?  surely bash foo runs foo in a fresh bash,
-@c   (actually, I don't see it doc'ed like this)
-@c   but foo creates a foo (non-shell) process
-@c must explain shell process above, & current/new process below
-
-To execute a program without creating a new process you can use the
-@code{.} command or the @code{source} command (@pxref{Built-in}).  These
-execute a shell script as part of the current process.  Each line in the
-script is acted upon as if you had typed it, excepting that the shell's
-notion of interactiveness is turned off.
-
-The @code{exec} command
-(@pxref{exec, , @code{exec}, utilities, The GNU Utilities Manual}),
-also executes programs in
-place of the current process, but @code{exec} never returns control to
-the original program.
-
-@cindex script, steps in writing a
-To summarize, here's one of the easiest ways of writing and executing a
-shell script:
-@c it's not a summary, it's new info
-@c  (above, needed exec, ., or source -- chmod case wasn't clear
-
-@enumerate
-@item
-Create a file that contains the commands you want to execute.  For
-example, a series of commands that you execute frequently and are tired
-of repeatedly typing.
-
-@item
-Change the file access mode so the file can be run like a program
-rather than be treated like a data file.  For example, @code{chmod +rx
-@var{file}}, where @var{file} represents the name of your script.  The
-@samp{+rx} option allows all users to read and execute this file.
-@c ? why do all users?  for just me, do +x ?
-
-@item 
-Type the name of the file to execute the commands in the shell script.
-@end enumerate
-
-@cindex script, sample of
-Here's an example of a simple shell script:
-
-@example
-#Display the date, time, username and current directory.
-echo "The current date and time is:"
-date
-echo " "
-echo "You are `whoami` \n"     #print username.
-echo "Your current directory is `pwd`."  #print current directory.
-@end example
-
-@noindent
-This script prints the current date, time, username and working
-directory for the user who invokes it.  The first line of this script
-is a comment, identified by the pound sign @samp{#} that begins it.
-Comment statements don't get executed; use them to
-document your shell script.
-Notice that comments don't have to be placed on a line by themselves. 
-When a word begins with a @samp{#} sign, it causes the rest of that
-line to be interpreted as a comment, and not executed.
-Note: @samp{#} works only in a noninteractive shell.
-@c new concept: [non]interactive shell
-@cindex command lines, comments in
-@cindex comments
-@cindex scripts, comments in
-@cindex non-interactive shells, comments in
-
-The backquotes around the @code{whoami} and @code{pwd} commands shows
-the use of command substitution (@pxref{Command Subs}).  Basically
-@c ? basically
-the shell replaces the command (including the backquotes) with the
-output of that command.  The @samp{\n} tells @code{echo} to add an extra
-carriage return to the end of the line.
-
-@xref{Advanced Scripts}, for more advanced examples of writing scripts.
-
-
-@node Conditionals and Loops, Built-in, Environment, Top
-@chapter Conditionals and Loops
-
-@c Intro not related to rest of chapter.
-@c Rest of chapter isn't about shell use of exit status.
-
-@cindex conditional statements
-BASH has some built-in decision-making and looping statements.  Most of these
-statements base their decisions on the @dfn{exit}, or @dfn{return},
-status of specified processes.  An exit status is simply a flag that
-indicates the success or failure of an executed command.
-@c what's a flag?  a value?
-Exit status flags are returned to the parent process when a child
-process stops executing (for any reason).
-
-For example, suppose we wish to look at the contents of a file using
-the @code{cat} command.  If the specified file cannot be found, it
-certainly can't be looked at and the attempt to execute @code{cat} is
-looked upon as unsuccessful by the shell.  Therefore the exit status is
-returned as ``unsuccessful''.
-This status can be tested by the shell and used to make decisions about
-what actions to take next.  An exit status of zero means that the
-command was executed successfully.  An exit status of non-zero means
-that the command was unsuccessful.
-
-@menu
-* if::       The @code{if} statement.
-
-* case::     The @code{case} statement.
-
-* for::      The @code{for} statement.
-
-* while::    The @code{while} statement.
-
-* until::    The @code{until} statement.
-
-* break & continue::   The @code{break} statement and the
-                       @code{continue} statement.
-@end menu
-
-@node if, case, Conditionals, Conditionals
-@section The @code{if} Statement
-
-The syntax of the @code{if} statement is:
-
-@example
-if @var{condition}
-then 
-    @var{commands}
-@r{[}elif @var{condition}
-then 
-    @var{commands}@r{]}
-@dots{}
-@r{[}else 
-    @var{commands}@r{]}
-fi
-@end example
-@noindent
-where the brackets and the dots indicate that the @code{else} part is optional
-and that there can be any number (including none) of @code{elif} parts.
-
-If the commands contained in the first @var{condition} are successfully
-executed, then the commands contained in the first @var{commands} are
-executed.
-The optional @code{elif} parts allow you to specify
-conditions to test (and corresponding commands to execute if
-successful) if previous conditions were not successful.
-The optional @code{else} part allows you to specify
-commands to execute if none of the @var{condition}s are successful.
-After the appropriate @var{condition}s are tested
-and any appropriate @var{commands} are
-executed, control goes to the statement following the @code{fi}.
-
-Here's an example:
-@c replace system example by user example
-
-@example
-# check to see that we've got sufficient files to bring the
-# system up multi-user
-for i in /bin/login /etc/getty /etc/passwd ; do
-@c what's the next obscure line???
-    if [ ! -s $@{i@} ]; then
-     echo "$@{i@}: not present @dots{} Can't come up to multi-user mode."
->/dev/console
-     /bin/kill 1
-    fi
-done
-@end example
-
-@noindent
-This is code to execute at the end of the system startup script.  It
-checks that the necessary files are present to bring the system up to a
-multiuser state, and shuts the system down if the files are not
-present.
-
-Here's another example:
-
-@example
-if [ -f /etc/license ] ; then
-    PATH=~/bin.vax-ultrix:$PATH
-elif [ -f /hp-ux ] ; then
-    PATH=~/bin.hp-ux:$PATH
-elif [ -x /bin/arch ] ; then
-    if [ $(/bin/arch) = "sun3" ] ; then
-        PATH=~/bin.sun3:$PATH
-    else
-        PATH=~/bin.sparc:$PATH
-    fi
-else
-    PATH=~/bin.ibm032:$PATH
-fi
-@end example
-
-@noindent
-This code tacks a machine-specific binary directory onto the
-front of the @code{PATH} variable.  Only one of the @code{then} bodies is executed,
-depending upon the machine being used.@refill
-
-If you don't want to put the parts of an @code{if} statement
-on separate lines as shown in the syntax, you don't have to.
-But if you move one of the keywords (@code{then}, @code{elif},
-@code{else}, or @code{fi}) onto the same line as the preceding
-@var{condition} or @var{commands}, you must put
-a semicolon before it.
-In other words, each
-@var{condition} or @var{commands} must be followed by a newline
-or a @samp{;}.
-@c is it allowable to always end with ;, even if newline next?
-
-For example:
-
-@c what is the [...] ?
-@c The condition here, with =, is not a case of 'successful execution'
-@c as discussed above.  Rather, it's a comparison.  Confusion of
-@c concepts: exit status used as t/f for tests
-@example
-if [ "X$PS1" = "X" ]; then exit ; else echo "interactive shell" ;
-fi@refill
-@end example
-
-@noindent
-This echoes ``interactive shell'' if BASH is executing interactively. 
-The variable @code{PS1} is set only if the shell is interactive.
-
-
-@node case, for, if, Conditionals
-@section The @code{case} Statement
-
-The syntax of the @code{case} statement is:
-
-@example
-case @var{string} in
-     @var{pattern_1a} | @var{pattern_1b} | @var{pattern_1c})
-            @var{commands1}
-            ;;
-     @var{pattern_2})
-            @var{commands2}
-            ;;
-     @dots{}
-esac
-@end example
-
-This statement tries to match a string, @var{string}, to various
-@var{patterns}.  If it finds a match, it
-executes the corresponding pattern's commands.  When execution is
-complete, control is transferred to the statement following the
-@code{esac}.
-Each pattern in a list is separated
-from the next by @samp{|}.  Patterns can contain the
-file-matching wildcards @samp{*}, @samp{?}, or @samp{[ @dots{} ]}
-(@pxref{File Names}).  A pattern list is ended with a closing
-parenthesis (note that there is no matching open parenthesis).@refill
-@c so in this case wildcards aren't just for files
-
-You don't have to separate all the parts of the @code{case} statement
-on separate lines as shown above.
-Any of the newlines can be omitted.
-
-@c put an example case statement here instead of a template
-@example
-case @var{string} in @var{pattern1a} @r{[}| @var{pattern1b} @dots{}@r{]}) @var{commands} @r{[};; @dots{}@r{]};; esac @refill
-@end example
-
-Here's an example:
-
-@c example redefines builtin cd, while also using it?
-@c example is teco-like gibberish -- replace &/or explain
-@c Want simpler example here -- use this example in customization
-@c section for people to copy if they like the behavior.
-@example
-cd()
-@{
-     builtin cd "$@@" &&
-     case "$1" in
-     '')
-          PS1='$ '
-          ;;
-     ..|*/..)
-          PS1="$@{PWD##*/@}$ "
-          ;;
-     */*)
-          PS1=$@{$1##*/@}$ "
-          ;;
-     *)
-          PS1="$1$ "
-          ;;
-     esac
-@}
-@end example
-
-@noindent
-This sets your prompt to contain the name of the current directory,
-with all path information stripped.
-@c example to explain above sentence
-This can be used as a
-way to reset your primary prompt when you change directories.  If you 
-are in your home directory, via a @code{cd} with no arguments,
-@code{PS1} will contain no directory information at all.
-@c need example of behavior after doing it:
-@c  bash$ cd me
-@c  me$
-
-
-@node for, while, case, Conditionals
-@section The @code{for} Statement
-
-The @code{for} statement executes a sequence of commands once for each
-value in a list of items.
-
-The format of the @code{for} statement is:
-
-@example
-for @var{name} @r{[}in @var{list}@r{]}
-do
-    @var{commands}
-done
-@end example
-
-For each element in @var{list}, @var{name} is set to that
-element and the @var{commands} are executed. 
-When you omit the optional @samp{in @var{list}}, it
-defaults to @samp{in "$@@"}, so that the loop is executed once for
-each of the command line parameters.
-
-Here's an example:
-
-@example
-for host
-do
-     echo $host:
-     rsh $host w
-done
-@end example
-
-@noindent
-This defines a script that runs the @code{w} command remotely on each
-host named as an argument.
-@c need example of using the script
-
-Here's an example using the @samp{in @var{list}} option:
-
-@example
-for file in $(echo *.c)
-do
-     touch $file
-done
-@end example
-
-@noindent
-This updates the timestamp of each file ending in @samp{.c} in the
-current directory.  This is useful for preparing for a rebuild of a
-software system.
-
-The @code{do} and @code{done} mark the beginning and the
-end, respectively, of the loop.  When the @var{list} is
-used up, control is passed to the statement following the @code{done}.
-
-If you don't want to put the parts of a @code{for} statement
-on separate lines as shown in the syntax, you don't have to.
-But if you move one of the keywords (@code{do} or @code{done})
-onto the same line as the preceding
-@var{name}, @var{list}, or @var{commands}, you must put
-a semicolon before it.
-@c is it allowable to always end with ;, even if newline next?
-
-@node while, until, for, Conditionals
-@section @code{while} and @code{until} Loops
-
-The format of a @code{while} or @code{until} loop is:
-
-@example
-while @var{condition}
-@r{[}do
-      @var{commands}@r{]}
-done
-@end example
-@noindent
-or
-@example
-until @var{condition}
-@r{[}do
-      @var{commands}@r{]}
-done
-@end example
-
-In a @code{while} loop, the @var{commands} are
-repeatedly executed as long as the @var{condition} executes
-successfully (returns an exit status of zero).
-Before each pass through the loop, @var{condition} is executed.  If
-@var{condition} returns zero, @var{commands} is executed.  Usually
-@var{commands} affects the @var{condition} execution in some way so
-that it will eventually return non-zero.  Otherwise you end up with an
-infinite loop.
-When the @var{condition} is unsuccessful in executing, control
-jumps to the statement following the @code{done}.
-
-In an @code{until} loop, the @var{commands} are
-repeatedly executed as long as the @var{condition} fails
-execution (returns an exit status of non-zero).
-Before each pass through the loop, @var{condition} is executed.
-If @var{condition} returns non-zero, @var{commands} is executed. 
-Usually @var{commands} affects the @var{condition} execution in some
-way so that it will eventually return zero.  Otherwise you end up with
-an infinite loop.
-When the @var{condition} is successful in executing, control is
-returned to the statement following the @code{done}.
-
-The following example tests the output of the @code{who} command once
-each minute until it finds that a user named @samp{chet} has logged in.
-@c explain example -- what are who, grep, sleep
-
-@example
-until who | grep chet
-do
-     sleep 60
-done
-@end example
-
-If you don't want to put the parts of a @code{while} or @code{until} statement
-on separate lines as shown in the syntax, you don't have to.
-But if you move one of the keywords (@code{do}
-or @code{done}) onto the same line as the preceding
-@var{condition} or @var{commands}, you must put
-a semicolon before it.
-In other words, the
-@var{condition} and @var{commands} must each be followed by a newline
-or a @samp{;}.
-@c is it allowable to always end with ;, even if newline next?
-
-The @samp{do @var{commands}} is optional.  Sometimes just
-testing the @var{condition} is enough.  For example, here's an
-inefficient way of reading the last line of a file:
-@c what do you mean by reading?  who sees it? where does it go?
-@c if it's inefficient, isn't it a bad example?
-
-@c explain: what's exec?  what's read?
-@example
-exec < file
-while read variable ; done
-@end example
-
-@noindent
-The return status of @code{read} is 0 (successful) unless the
-end-of-file (@sc{eof}) is
-encountered.  When the @sc{eof} is encountered, the condition is met and the
-usefulness of the statement is finished.  No @samp{do @var{commands}} section is needed.
-
-@node break & continue,  , until, Conditionals
-@section The @code{break} and @code{continue} Statements
-
-@cindex loops, interrupting
-@cindex interrupting loops
-You can interrupt a @code{for}, @code{while}, or @code{until} loop
-using a @code{break} or a @code{continue} statement:
-
-@table @code
-@item break @r{[}@var{n}@r{]}
-
-The @code{break} statement stops the execution of the loop and passes
-control to the statement following the @code{done} that marks the end of
-the loop.
-If @var{n} is specified, it tells the shell to break at the @var{n}th
-level of the enclosing loop.
-@c explain nth level -- nested loops?
-
-Here's an example:
-
-@c what is the : in the while?
-@c what are echo, read, [], lpr
-@example
-while :
-do
-     echo -n "Enter name of file to print [q to quit]: "
-     read fn
-     if [ "$fn" = "q" ] ; then
-          break
-     fi
-     lpr $fn
-done
-@end example
-
-@noindent
-This prompts for names of files and prints them, until a @samp{q} is
-encountered.
-
-@item continue @r{[}@var{n}@r{]}
-
-The @code{continue} statement transfers control to the loop's
-@code{done} statement, which continues execution of the loop.  If
-@var{n} is specified, it tells the shell to resume computation at the
-@var{n}th enclosing loop.
-@c explain nth level -- nested loops?
-
-Here's an example:
-
-@c what's [], -d
-@example
-for dir in $(cat dirlist)
-do
-     if [ -d $dir ] ; then
-          continue
-     fi
-     mkdir $dir
-done
-@end example
-@c weird example.  Why wouldn't you write it as
-@c  'if NOT exists then @c mkdir'
-@c  without a Continue?
-
-
-@noindent
-This reads a file containing the names of a list of directories to
-create, and creates each one if it does not already exist.
-@end table
-
-@node Built-in, Shell Vars, Conditionals, Top
-@appendix Built-in Shell Commands
-
-@cindex built-in commands, list of
-Some of the commands you may want to run are already part of the shell. 
-Because of this, no new processes are started in order to run these
-built-in commands.  Therefore, these built-in commands use less time
-than those that aren't built-in.
-
-The following is a list of the built-in commands.  Some of these
-commands are explained in more detail earlier in this manual.
-@c shouldn't all of these be in the manual?
-@c This is then just alphabetical summary
-You are directed to read the appropriate chapter if you need more information
-than is provided here:
-@c be sure all descriptions here match those earlier
-
-@table @code
-@item :
-This command can only expand arguments and perform redirections
-and nothing else.  It is the shell's ``do nothing'' command.  It is
-not, however, a useless command.  Since the shell is able to scan and
-parse the line that follows the colon, this command can be adapted for
-many uses.
-
-It can be used as a valid option for a program's conditional statement,
-or it can be used to create an infinite (until interrupted) loop. 
-Here's an example:
-
-@example
-# wait for a file to be created, chewing up lots of CPU time
-# usage: waitfor filename
-#
-while [ ! -f "$1" ] ; do
-      :
-done
-@end example
-
-You can also use the colon to create comment lines, instead of using
-the @samp{#} character (@pxref{Scripts}, for more information).
-@c other part of doc said # is for noninteractive shell, : for interactive
-@ignore
-The @samp{:} command can be adapted to create comment lines in an
-interactive shell (@pxref{Built-in}).
-@cindex command lines, comments in
-@cindex comments
-@cindex interactive shells, comments in
-@cindex colon (@code{:}) command
-@iftex
-@cindex : command
-@end iftex
-@c Can't do @cindex : (: is not valid in index/menu in Info mode)
-@c from Bob Chassell:  A colon cannot be part of an index
-@c entry because a colon is used by Info as the marker between the item
-@c name and the node name in the index.
-@end ignore
-For example:
-
-@example
-bash$ echo A bad example > junk
-bash$ cat junk
-A bad example
-bash$ : this is a comment about > junk
-bash$ cat junk
-bash$
-@end example
-
-@noindent
-First we create the file called @file{junk}, entering a simple message
-into that file.  Then we create a comment about our file using the
-@samp{:} statement and insert a redirection operator into the sentence. 
-Normally we'd expect the shell to ignore anything that follows a
-comment character.  However, the shell is able to parse and interpret
-the contents of the line following a colon.
-Therefore, the above @samp{:} statement, when scanned by the shell,
-causes the file @file{junk} to be opened for output, which removes its
-prior contents (@pxref{Redirection}).
-@c what happens to rest of : line?
-
-So be careful when using the @samp{:} statement.  It can be useful when
-used properly; but it can also be dangerous in careless hands.
-@c ??? what's an example of proper, useful use?
-Don't insert any characters that can be expanded by the shell into a
-@samp{:} comment line.
-@c ??? what's this expansion stuff above?
-It's safest to protect the comment following @samp{:} with single quotes
-so that it won't be interpreted by the shell.
-@c ??? single quotes are new concept
-Make sure that there's a space between the colon and the opening single
-quote, though, or the shell could mistake what follows for a command:
-@c space/command stuff not explained
-
-@example
-bash$ : 'This is a good way to make a comment.'
-bash$ :'This is bad.'
-:This is bad.:  command not found.
-@end example
-@c why not just use # ?? because not valid in interactive shell?
-
-@item . @var{file}
-@itemx source @var{file}
-Both commands are used to execute shell programs, without creating a
-separate child process.  The named file is read and executed in the
-current shell environment and control is returned to the current shell. 
-Since these commands do not create a subshell they can be used to
-change the value of a shell variable in the current shell.
-
-@var{file} must have a fully qualified path name in order to be
-executed.  The @code{PATH} variable is searched for the location of the
-named file, otherwise the current directory is searched if no file is
-found in @code{PATH}.
-
-Redirection of input and output and other command line arguments are
-not permitted when using these commands.
-
-@item alias @r{[}@var{name}@r{[}=@var{value}@r{]} @dots{}@r{]}
-An alias is defined for each @var{name} whose @var{value} is given. 
-@xref{Aliases}, for more information.  A trailing space in @var{value}
-causes the next word to be checked for alias substitution.  If a
-@var{name} (without the @samp{=@var{value}} part) is given for which no alias has been defined an error
-message is printed.
-
-The @code{alias} command, with no arguments, prints the 
-list of aliases in the form @samp{@var{name}=@var{value}} 
-on the standard output.
-
-@item bg @r{[}@var{job_spec}@r{]}
-This causes the shell to place the specified job, @var{job_spec}, in
-the background, as if it had been started with @samp{&}.  @xref{Resuming},
-for more information.  If @var{job_spec} is not present, the shell's
-notion of the current job is used.
-
-@item break @r{[}@var{n}@r{]}
-This command exits from an existing @code{for}, @code{while}, or
-@code{until} loop.  If @var{n} is specified, it tells the shell to
-break at the @var{n}th level of the enclosing loop.  @var{n}
-must be greater than or equal to 1.  If @var{n} is greater than the
-number of the enclosing loops, all enclosing loops are exited.
-
-@item builtin @r{[}@var{shell-builtin} @r{[}@var{arguments}@r{]}@r{]}
-This is used to execute a built-in shell command, passing it
-@var{arguments}.  This is useful when you wish to rename a
-built-in shell command to be a function, but need the functionality of
-the built-in command within the function itself.  (The built-in @code{cd} 
-command is commonly redefined this way.)
-
-@item cd @r{[}@var{dir}@r{]}
-This command tells the shell to change the current directory to the one
-specified by @var{dir}.  The variable @code{HOME} contains the default
-value of @var{dir}.
-
-The variable @code{CDPATH} defines the search path for the directory
-containing @var{dir}.  @xref{Predefined}, for more information. 
-Alternative directory names are separated by a colon, @samp{:}.
-
-A null directory name is considered to be the same as the current
-directory.  If @var{dir} begins with a forward slash, @samp{/},
-then the search path contained in @code{CDPATH} is not used.
-
-@item command @r{[}@var{command} @r{[}@var{arguments}@r{]}@r{]}
-This causes the shell to run the [external] command named in @var{command} with
-the arguments specified by @var{arguments}, ignoring all
-other shell functions.@refill
-
-For example, if you have a shell function called @code{ls}, and you
-want to call the command @code{ls} as well, you can say @samp{command ls}.
-
-@item continue @r{[}@var{n}@r{]}
-This command tells the shell to resume the next iteration of the
-enclosing @code{for}, @code{while}, or @code{until} loop at the
-@var{n}th enclosing loop (if @var{n} is specified).  @var{n}
-must be greater than or equal to 1.  If @var{n} is greater than the
-number of enclosing loops, the last enclosing loop (the ``top-level''
-loop) is resumed.
-
-@c KELLEM added i (frxi)
-@item declare @r{[}-+frxi@r{]} @r{[}@var{name}@r{[}=@var{value}@r{]}@r{]}
-This command declares variables and gives them attributes.  If no
-@var{name} is given, then a listing of the values of variables is
-displayed instead.
-
-@table @code
-@item -f
-Use function names only.
-
-@item -r
-Make @var{name} readonly.  These names cannot be assigned
-values by subsequent assignment statements.
-
-@item -x
-Make @var{name} export to subsequent commands via the environment.
-
-@c KELLEM added -i:
-@c the -i is here if $[..] arithmetic evaluation is put into 1.06
-@c it's a posix thing
-@item -i
-Treat @var{name} as an integer; arithmetic evaluation
-(@pxref{Arithmetic Evaluation}) will be performed when the variable is
-assigned a value.
-@end table
-
-Using @samp{+} instead of @samp{-} turns off the attribute.  
-
-When @code{declare} is used in a function, it makes @var{name} local,
-the same as the @code{local} command (@pxref{Functions}).
-
-@item dirs
-This displays the list of currently remembered directories. 
-Directories are added to the list with the @code{pushd} command; you
-can get back up through the list with the @code{popd} command.
-
-@item echo @r{[}-ne@r{]} @r{[}arguments@r{]}
-This displays a prompt or a message on the standard output.  It outputs
-the @var{arguments}, if supplied, separated by spaces.  If the
-@samp{-n} option is specified, the trailing newline character is suppressed.@refill
-
-If the @samp{-e} option is given, interpretation of the following
-backslash-escaped characters is turned on:
-
-@table @code
-@c KELLEM added \a:
-@c   \a is a ksh-88 thing and should be included in 1.06 as far as I know
-@item \a
-Alert/bell.
-@item \b
-Backspace.
-
-@item \c
-Suppress trailing newline.
-
-@item \f
-Form feed.
-
-@item \n
-New line.
-
-@item \r
-Carriage return.
-
-@item \t
-Horizontal tab.
-
-@item \v
-Vertical tab.
-
-@item \@var{NNN}
-The character whose @sc{ascii} code is @var{NNN} (octal).
-
-@item \\
-Backslash.
-@end table
-
-@item enable @r{[}-n@r{]} @r{[}@var{names}@r{]}
-This command enables and disables built-in shell commands.  This allows
-you to use an operating system command which has the same name as a
-built-in shell command.
-
-If the @samp{-n} option is used, the named commands, @var{names},
-become disabled.  Otherwise the named commands are enabled.
-
-For example, to use the @code{test} command found in your path instead
-of the built-in shell version, you type @samp{enable -n test}.
-
-@item eval @r{[}@var{arguments}@r{]}
-The @var{arguments} are read and concatenated together into a single
-command.  This ``new'' command is then read and executed by the shell.
-
-@item exec @r{[}@r{[}-@r{]}@var{command} @r{[}@var{arguments}@r{]} @r{]}
-If @var{command} is specified, it is executed, replacing this shell,
-without creating a new process.  The @var{arguments} become arguments
-to @var{command}.
-
-If the first argument is @samp{-}, the shell places a dash in the
-zeroth argument passed to @var{command} (exactly what a login does).
-
-If the @var{command} can't be executed the shell exits, unless the
-shell variable @code{no_exit_on_failed_exec} exists.
-
-If @var{command} is not specified, any redirections present
-take effect in the current shell.
-
-@item exit @r{[}@var{n}@r{]}
-@itemx bye @r{[}@var{n}@r{]}
-This causes the shell to exit with the status specified by @var{n}.  If
-@var{n} is omitted, the exit status is that of the last command
-executed.  A trap on the shell variable @code{EXIT} is executed before
-the shell terminates.
-
-@item export @r{[}-nf@r{]} @r{[}@var{name}@r{[}=@var{word}@r{]}@r{]}
-The @code{export} command exports the value of named variables (or
-functions if the @samp{-f} option is specified), @var{name}, to a
-subshell.
-
-If no variable names are given, @code{export} displays a list of all
-the variables that are already exported.  The @samp{-n} option causes
-the shell to remove the export property from the named variables.
-
-@item fg @r{[}@var{job_spec}@r{]}
-This places the specified job, @var{job_spec}, in the foreground, and
-makes it the current job.  @xref{Resuming}, for more information.  If
-@var{job_spec} is not present, the shell's notion of the current job is
-used.
-
-@item function @var{name} () @r{[} @var{commands} ; @r{]}
-@itemx @var{name} () @r{[} @var{commands} ; @r{]}
-This creates a simple command invoked by @var{name} which executes the
-named @var{commands} (@pxref{Functions}).  Arguments on the
-command line along with @var{name} are passed to the function as
-@samp{$0 @dots{} $@var{n}} (@pxref{Positional}).
-
-@item hash @r{[}-r@r{]} @r{[}@var{name}@r{]}
-For each variable name, @var{name}, the full pathname of the command is
-determined and remembered.  The @samp{-r} option causes the shell to
-forget all remembered locations.  With no arguments, @code{hash}
-presents information about remembered commands.
-
-@c The 'help' sources should be used to augment/check this doc and vice versa
-@c I suspect this doc may have come from those sources
-@item help @r{[}@var{pattern}@r{]}
-This command displays helpful information about built-in commands.  If
-a pattern is specified,
-@c ? same pattern wildcards as for filenames?
-@code{help} gives detailed help on all commands
-matching @var{pattern}, otherwise a list of the built-ins is printed.
-If @var{pattern} contains only alphanumeric characters (no wildcard
-characters, such as @samp{?} and @samp{*}), then a pattern of
-@samp{pattern*} if assumed.  Therefore, the command @samp{help pw} will
-produce help on the @code{pwd} command.
-@c note: must enclose pattern in quotes if contains wildcards, else
-@c  expanded to filenames before help sees it
-
-@item history @r{[}@var{n}@r{]}
-@itemx history -rw @r{[}@var{file}@r{]}
-@itemx history -s @var{arguments}
-The first command displays the history list with line numbers.  Lines listed
-with a @samp{*} have been modified.  If a number @var{n} is specified, only
-the last @var{n} lines of the history list are displayed.  
-
-The @samp{-w} option means causes the current history file to be
-written out.  The @samp{-r} option causes the current history file to
-be read, instead.  If a file name, @var{file}, is given, then that file
-is used as a history list.  If no file name is given, BASH checks to see
-if the variable @code{HISTFILE} is set.  The file @file{~/.bash_history} 
-is used as the history file if the variable @code{HISTFILE} is not set.
-@xref{History}, for more information.
-
-The @samp{-s} option performs history substitution on the named
-arguments.
-
-@item jobs @r{[}-l@r{]}
-This lists the active jobs.  The @samp{-l} option causes the list of
-process identification numbers to be listed in addition to the normal
-information.  @xref{Job Control}, for more information.
-
-@item kill @r{[}-@var{sigspec}@r{]} @var{pid}
-@itemx kill @r{[}-@var{sigspec}@r{]} @var{job_spec}
-@itemx kill -l
-This sends the processes named by @var{pid} or @var{job_spec} the
-terminate signal, or the signal specified by @var{sigspec}, if
-present.  Signals are specified either by number or by name. 
-@c where are the numbers defined? documented?
-
-The @samp{-l} option lists the signal names that can be sent.  Typing
-@code{kill} alone does nothing.  @xref{kill}, for more information.
-
-@c KELLEM added next item (let)
-@c `let' is for arith. eval. -- from posix, check if really in final
-@c release version of 1.06
-@item let @var{expression} @r{[}@var{expression} @dots{}@r{]}
-Each @var{expression} is an arithmetic expression to be evaluated
-(@pxref{Arithmetic Evaluation}).  If the last @var{expression} evaluates
-to 0, @code{let} returns 1; otherwise 0 is returned.@refill
-
-@item local @var{name}@r{[}=@var{value}@r{]}
-This creates a local variable called @var{name}, and gives it a value
-of @var{value}.
-
-When the @code{local} command is used within a function it causes the
-variable @var{name} to be restricted to that function and its children. 
-Otherwise it is equivalent to creating normal variables, as if the
-@code{local} command had been omitted.
-
-When used without options, @code{local} gives a list of local variables
-on the standard output.
-
-@item logout
-This exits a login shell.
-
-@item popd @r{[}+-@var{n}@r{]}
-This removes entries from the directory stack.  With no arguments, it
-removes the top directory from the stack, and changes directories
-(@code{cd}) to the new top directory.
-
-The @samp{+@var{n}} option removes the @var{n}th entry (counting from
-the left of the list shown by the @code{dirs} command), starting with
-zero.  For example:  @code{popd +0} removes the first directory, while
-@code{popd +1} removes the second.
-
-The @samp{-@var{n}} option removes the @var{n}th entry (counting from the
-right of the list shown by the @code{dirs} command), starting with
-zero.  For example:  @code{popd -0} removes the last directory, while
-@code{popd -1} removes the next to last.
-
-You can see the directory stack with the @code{dirs} command.
-
-If the variable @var{pushd_silent} is not set, and the @code{popd}
-command        was successful, a @code{dirs} will be performed too.
-
-@item pushd @r{[}@var{dir}@r{]}
-@itemx pushd @r{[}+-@var{n}@r{]}
-This adds a directory to the top of the directory stack, or rotates the
-stack, making the new top of the stack the current working directory. 
-With no arguments, it exchanges the top two directories.
-
-The @samp{+@var{n}} option rotates the stack so that the @var{n}th
-directory (counting from the left of the list shown by the @code{dirs}
-command) is at the top.
-
-The @samp{-@var{n}} option rotates the stack so that the @var{n}th
-directory (counting from the right of the list shown by the @code{dirs}
-command) is at the top.
-
-The @samp{@var{dir}} option adds the directory named by @var{dir} to
-the directory stack at the top, making it the new current working
-directory.
-
-You can see the directory stack using the @code{dirs} command.
-
-If the variable @var{pushd_silent} is not set, and the @code{pushd}
-command was successful, a @code{dirs} will be performed too.
-
-@item read @r{[}@var{names}@r{]}
-This reads values from the standard input into various shell
-variables.  One line is read from the standard input, and the first
-word is assigned to the first named variable in @var{names}, the second
-word to the second named variable, and so on, with leftover words
-assigned to the last named variable.
-
-Only the characters in @code{IFS} are recognized as word delimiters
-(@pxref{Predefined}).
-
-@item readonly @r{[}-f@r{]}@r{[}@var{names}@r{]}
-The given @var{names} are marked readonly and the values of these
-various @var{names} may not be changed by subsequent assignments.  
-If the @samp{-f} option is given, the functions corresponding to the
-@var{names} are marked instead.  If no arguments are given, a list of
-all read-only names is printed.
-
-@item return @r{[}@var{n}@r{]}
-This causes a function to exit with the return value specified by
-@var{n}.  If @var{n} is omitted, the return status is that of the last
-command executed in the function body.
-
-@c ? what about set with no args -- prints list of vars
-@item set @r{[}-aefhkntuvxldo@r{]} @r{[}@var{arguments}@r{]}
-The @code{set} command sets options for the shell:
-
-@table @code
-@item a
-This marks variables which are modified or created for export.
-
-@item e
-This tells a non-interactive shell to exit immediately if a command
-exits with a non-zero status.
-
-@item f
-This disables path name expansion.
-
-@item h
-This tells the shell to locate and remember function commands as those
-functions are defined.  Normally, function commands are looked up when
-the function is executed.
-
-@item k
-This tells the shell to place all keyword arguments in the
-command's environment.  Normally only those that precede the command
-name are placed in the environment for a command.
-
-@item n
-This tells the shell to read commands but not execute them.  This
-may be used to check a shell script for syntax errors, for example. 
-This option is ignored in interactive shells.
-
-@item t
-This tells the shell to exit after reading and executing one command.
-
-@item u
-This tells the shell to treat unset variables as an error when
-performing substitutions.  If a substitution is attempted on an unset
-variable, the shell prints an error message.  If the shell is
-non-interactive, it then exits with a non-zero status.
-
-@item v
-This prints shell input lines as they are read.
-
-@item x
-This prints the value of @code{PS4} followed by commands and their
-arguments as they are executed.
-
-@item l
-This saves and restores the bindings of the @var{name} in a @code{for}
-command (@pxref{for}).
-
-@item d
-This disables the hashing of commands that are looked up for execution. 
-Normally, commands are remembered in a hash table and, once found, do
-not have to be looked up again.
-
-@c `o' option changed
-@c writeup supplied by KELLEM for new o and for `H', replacing the old `o' option.
-@c ? really true that H is here?  that both h and H exist and are different?!?
-@c that not all the one-letter options have -o named equivalents?
-@item H
-This enables the @samp{!} style history substitution (@pxref{History}).
-This option is on by default.@refill
-
-@item o @r{[}@var{option-name}@r{]}
-The @var{option-name} can be one of the following:
-@table @code
-@item allexport
-Same as @samp{-a}.
-@item braceexpand
-The shell will enable curly brace expansion (SEE BRACE EXPANSION).  This
-is on by default.
-@item emacs
-Use an emacs-style command line editing interface
-@item errexit
-Same as @samp{-e}.
-@item histexpand
-Same as @samp{-H}.
-@item ignoreeof
-The effect is as if the shell command @samp{ignoreeof=10} had been
-executed (@pxref{Shell Vars, ignoreeof, Shell Variables}).
-@item monitor
-Same as @samp{-m}.
-@c ? no -m doc'ed above
-@item noclobber
-The effect is as if the shell command @samp{noclobber=} had been
-executed (@pxref{Shell Vars, noclobber, Shell Variables}).
-@item noexec
-Same as @samp{-n}.
-@item noglob
-Same as @samp{-f}.
-@item nohash
-Same as @samp{-d}.
-@item notify
-The effect is as if the shell command @samp{notify=} had been executed
-(@pxref{Shell Vars, notify, Shell Variables}).
-@item nounset
-Same as @samp{-u}.
-@item verbose
-Same as @samp{-v}.
-@item vi
-Use a @sc{vi}-style command line editing interface.
-@item xtrace
-Same as @samp{-x}.
-@end table
-
-If no @var{option-name} is supplied, the values of the current options
-are printed.
-@end table
-
-@c KELLEM interchanged - and + below (so that - is on)
-You can turn these options on and off by preceding the option letter
-with @samp{-} for on, and @samp{+} for off.  You can also set these
-options on the command line that invokes the shell.  For example:
-
-@example
-bash$ bash -v
-@end example
-
-@noindent
-The special shell variable, @samp{$-} lists the currently defined shell
-options.
-
-You can also use the @code{set} command to assign values to positional
-parameters (@pxref{Parameter Subs}):
-
-@example
-set test junk
-@end example
-
-@noindent
-sets the positional parameter @samp{$1} to test and @samp{$2} to junk. 
-The @var{arguments} are passed as positional parameters @samp{$1} to
-@samp{$N}.
-
-If you type the @code{set} command alone, with no arguments, you get a
-list of all the currently defined shell variables (@pxref{Variables}).  
-
-@item shift @r{[}@var{n}@r{]}
-This causes the positional parameters from @samp{$@var{n}+1} on up to
-be renamed to @samp{$1}, @samp{$2}, and so on.  If
-@var{n} is not given, it is assumed to be 1.
-
-@item suspend @r{[}-f@r{]}
-This suspends the execution of this shell until it receives a
-``resume'' (@code{SIGCONT}) signal.  The @samp{-f} option, if specified,
-prevents messages about this being a login shell (if it is) and causes
-the shell to be suspended quietly anyway.
-
-@item test @r{[}@var{expr}@r{]}
-@itemx [@var{expr}]
-These test for various conditions named in @var{expr}.  They return a
-status of of 0 (true) or 1 (false) depending on the evaluation of
-@var{expr}.
-
-Expressions can be unary or binary.  Unary expressions are often used
-to examine the status of a file.  You can have string operators and
-numeric comparison operators too.
-
-File operators:
-
-@table @code
-@item -b @var{file}
-This tests that the file @var{file} exists and is a block special file.
-
-@item -c @var{file}
-This tests that the file @var{file} exists and is a character special
-file.
-
-@item -d @var{file}
-This tests that the file @var{file} exists and is a directory.
-
-@item -f @var{file}
-This tests that the file @var{file} exists and is not a directory
-(tests that it is a plain file).
-
-@item -g @var{file}
-This tests that the file @var{file} exists and has the set-group-ID bit
-set.
-
-@item -k @var{file}
-This tests that the file @var{file} exists and has its ``sticky'' bit
-set.
-
-@item -L @var{file}
-This tests that the file @var{file} exists and is a symbolic link.
-
-@item -p @var{file}
-This tests that the file @var{file} exists and is a named pipe.
-
-@item -r @var{file}
-This tests that the file @var{file} is readable by you.
-
-@item -s @var{file}
-This tests that the file @var{file} exists and is not empty (has a
-non-zero size).
-
-@item -S @var{file}
-This tests that the file @var{file} exists and is a socket.
-
-@item -t @r{[}@var{FD}@r{]}
-This tests to see if file descriptor @var{FD} is opened on a terminal.
-If @var{FD} is omitted, it defaults to 1 (the standard output).@refill
-
-@item -u @var{file}
-This tests that the file @var{file} exists and has the set-user-ID bit
-set.
-
-@item -w @var{file}
-This tests that the file @var{file} exists and is writable by you.
-
-@item -x @var{file}
-This test that the file @var{file} exists and is executable by you.
-
-@item -O @var{file}
-This tests that the file @var{file} exists and is, effectively, owned
-by you.
-
-@item -G @var{file}
-This tests that the file @var{file} exists and is owned by the
-effective group @sc{id}.
-
-@item @var{file1} -nt @var{file2}
-This tests that the files @var{file1} and @var{file2} exist and that
-@var{file1} is newer than @var{file2} (according to modification date).
-
-@item @var{file1} -ot @var{file2}
-This tests that the files @var{file1} and @var{file2} exist and that
-@var{file1} is older than @var{file2} (according to modification date).
-
-@item @var{file1} -ef @var{file2}
-This tests that the files @var{file} and @var{file2} exist and that
-they have the same device and inode numbers.
-@end table
-
-String operators:
-@c what strings?  variables? variable values?
-
-@table @code
-@item -z @var{string}
-This tests that @var{string} exists and is empty (of zero length).
-
-@item -l @var{string}
-When this is used as an operand to any of the binary arithmetic 
-operators it returns the length of @var{string}.
-
-@item -n @var{string}
-@itemx @var{string}
-This tests that @var{string} exists and is not empty (has a non-zero
-size).
-
-@item @var{string1} = @var{string2}
-This tests that @var{string1} and @var{string2} exist and are equal.
-
-@item @var{string1} != @var{string2}
-This tests that @var{string1} and @var{string2} exist are not equal.
-@end table
-
-Other operators:
-
-@table @code
-@item ! @var{expr}
-This tests that @var{expr} exists and is false.
-
-@item @var{expr1} -a @var{expr2}
-This tests that @var{expr1} and @var{expr2} exist and are both true.
-
-@item @var{expr1} -o @var{expr2}
-This tests that @var{expr1} and @var{expr2} exist and that at least
-one of them is true.
-
-@item @var{argument1} @var{op} @var{argument2}
-@var{op} represents one of the arithmetic binary operators @code{-eq}
-(equals), @code{-ne} (not equals), @code{-lt} (less than), @code{-le}
-(less than or equal to), @code{-gt} (greater than), or @code{-ge}
-(greater than or equal to).
-
-This tests to see if @var{argument1} and @var{argument2} exist and
-also tests if @var{argument1} is equal, not equal, less than, less
-than or equal to, greater than, or greater than or equal to
-@var{argument2}, depending upon the operator used.
-@end table
-
-@item times
-This prints the accumulated user and system times for the shell and 
-for processes started from the shell.
-
-@item trap @r{[}-l@r{]} @r{[}@var{arguments}@r{]} @r{[}@var{sigspec}@r{]}
-The command named by @var{arguments} is to be read and executed when
-the shell receives the signal(s) specified by @var{sigspec}.  
-@var{sigspec} is either a signal name in <signal.h>, or a signal
-number.  The @code{trap} command with no arguments prints the list of
-commands associated with each signal number.  The @samp{-l} option
-causes the shell to print a list of signal names and their
-corresponding numbers.
-
-If @var{arguments} is absent, all specified signals are reset to
-their original values.  If @var{arguments} is the null string, the
-signal is ignored by the shell and by the commands it invokes.  
-
-If @var{sigspec} is @code{EXIT} (0), the command @var{arguments} is
-executed upon exit from the shell.
-
-@item type @r{[}-all@r{]} @r{[}-type | -path@r{]} @r{[}@var{names}@r{]}
-@c KELLEM: might also allow `-a',`-t', & `-p' as synonyms in 1.06
-@c if so, should document here
-This allows you to test to see how each named item, @var{name}, would
-be interpreted if used as a command name.
-@c this item really screwy.  command has ``names'',  description has ``name''
-
-If the @samp{-type} option is used, it returns a single word, either
-@samp{alias}, @samp{function}, @samp{builtin}, or @samp{file}, if
-@var{name} is an alias, shell function, shell builtin, or disk file,
-respectively.  If the name is not found, nothing is printed.
-
-If the @samp{-path} option is used, @code{type} returns either the name
-of the disk file that would be executed, or nothing if @samp{-type}
-doesn't return a value of @samp{file}.
-
-If the @samp{-all} option is used, it displays all of the
-interpretations of @var{names}.  This includes aliases and functions, if
-and only if the @samp{-path} option is not also used.@refill
-
-@item ulimit @r{[}-cdfmst @r{[}@var{limit}@r{]}@r{]}
-@code{ulimit} provides control over the resources available to processes
-started by the shell, on systems that allow such control.  If an
-option is given, it is interpreted as follows:
-
-@table @code
-@item -c
-refers to the maximum size of core (memory dump) files created.
-
-@item -d
-refers to the maximum size of a process's data segment.
-
-@item -f
-refers to the maximum size of files created by the shell.
-
-@item -m
-refers to the maximum resident set size.
-
-@item -s
-refers to the maximum stack size.
-
-@item -t
-refers to the maximum amount of cpu time, in seconds.
-@end table
-
-If @var{limit} is given, it represents the new value of the specified
-resource.  Otherwise, the current value of the specified resource is
-printed.
-
-If no options are given, the @samp{-f} is assumed to be active.  Values
-are in 1k increments, except for @samp{-t}, which is in seconds.
-
-@item umask @r{[}@var{nnn}@r{]}
-This sets the user file-creation mask to the octal number @var{nnn}. 
-If @var{nnn} is omitted, the current value of the mask is printed.
-
-@item unalias @r{[}@var{names}@r{]}
-This removes the named alias(es), @var{names}, from the list of defined
-aliases.
-
-@item unset @r{[}-f@r{]} @r{[}@var{names}@r{]}
-This removes the corresponding variable or function specified by
-@var{names}.  If the @samp{-f} option is given, then functions are
-removed.
-
-The predefined variables @code{PATH}, @code{IFS}, @code{PPID}, 
-@code{PS1}, @code{PS2}, @code{UID}, and @code{EUID} cannot
-be unset (@pxref{Shell Vars}).
-
-@item wait @r{[}n@r{]}
-This asks the shell to wait for the specified process, @var{n}, and
-report its termination status.  @var{n} can be a process @sc{id} or a
-job specification.  If a job specification is given, all processes
-in that job's pipeline are waited for.
-
-If @var{n} is not given, all currently active child processes are
-waited for, and the return code is zero.  @xref{wait}, for more
-information.
-@end table
-
-@node Shell Vars, Install, Built-in, Top
-@appendix Variables Set or Used by the Shell
-
-@c be clearer for each var, who sets it, who uses it
-
-@cindex variables, set or used by the shell
-@cindex shell variables, set or used by the shell
-The following variables are set by the shell.
-@xref{Variable Mechanics}, for information on shell variables.
-
-@c terminology needing defs or refs:
-@c  parent, working directory, user ID, effective user ID, full
-@c  pathname, instance of BASH, search path, internal field separators,
-@c  shell script, password file, system spool directory, primary prompt
-@c  string, secondary prompt string, execution trace, decoded prompt
-@c  string, exapnsion, end-of-file characters, exit, pathname
-@c  expansion, history expansion, tokenization, symbolic links, logical
-@c  chain of directories, complete a hostname, directory stack
-
-@c what is difference between IS and EXPANDS TO?
-@c ? I think almost every 'expands to' here should be 'is'
-@table @code
-@item PPID
-This is the @sc{pid} (process id) of the shell's parent.
-
-@item PWD
-This is the current working directory.
-(It's called @code{PWD} because it is the directory name the @code{pwd}
-command would report.)
-It is updated when you change directories with the @code{cd} command.
-
-@item OLDPWD
-This is the previous working directory.
-When you change directories with the @code{cd} command,
-the directory you move to goes into @code{PWD} and the directory
-you move from goes into @code{OLDPWD}.
-
-@item REPLY
-This is set by the @code{read} built-in command (@pxref{Built-in}) when
-no arguments are supplied.
-
-@item UID
-This expands to the user @sc{id} of the current user.
-
-@item EUID
-This expands to the effective user @sc{id} of the current user.
-
-@item BASH
-This expands to the full pathname used to invoke this instance of BASH.
-
-@item BASH_VERSION
-This expands to the version number of this instance of BASH.
-
-@item SHLVL
-This is incremented by one each time an instance of BASH is started.
-
-@c KELLEM: the following variables are from posix.2 and should be in bash
-@c these include RANDOM, SECONDS, and LINENO [not in 1.06.25]
-@item RANDOM
-Each time this variable is referenced, a random integer is generated.
-The sequence of random numbers may be initialized by assigning a value
-to @code{RANDOM}.  If @code{RANDOM} is unset, it will lose its special
-properties, even if it is subsequently reset.@refill
-
-@item SECONDS
-Each time this variable is referenced, the number of seconds since shell
-invocation is returned.  If a value is assigned to @code{SECONDS}, the
-value returned upon subsequent references is the number of seconds since
-the assignment plus the value assigned.  If @code{SECONDS} is unset, it
-will lose its special properties, even if it is subsequently reset.
-
-@item LINENO
-Each time this variable is referenced, the shell substitutes a decimal
-number representing the current sequential line number (starting with 1)
-within a script or function.  When not in a script or function, the
-value substituted is not guaranteed to be meaningful.  When in a
-function, the value is not the number of the source line that the
-command appears on (that information has been lost by the time the
-function is executed), but is an approximation of the number of commands
-executed in the current function.  If @code{LINENO} is unset, it will
-lose its special properties, even if it is subsequently reset.
-@end table
-
-The following variables are used by the shell.  In some cases, as noted
-below, BASH assigns these variables default values:
-
-@table @code
-@item HOME
-This represents the default argument for the @code{cd} command.  (That
-is, the command @samp{cd} with no arguments will connect to this
-directory.)  It is usually your login directory.  For example:
-
-@example
-HOME=/usr/home/close
-@end example
-
-@noindent
-@code{HOME} is automatically set to your login directory when you log in.
-
-@item PATH
-This is the search path to use when the shell looks for program files
-referenced in commands.  Separate directory names using colons.  Here's
-an example:
-@c explain
-
-@example
-/usr/gnu/bin:/usr/local/bin:.:/usr/ucb:/bin:/usr/bin/X11:/usr/bin
-@end example
-
-@item CDPATH
-This is the search path for the @code{cd} command.  Separate directory
-names using colons.  Here's an example:
-
-@example
-CDPATH=.:~:/usr/src
-@end example
-
-@item IFS
-This defines the internal field separators.   These are the characters
-that separate words.
-@c what words? where?
-It has a default value of space, tab, and newline characters.  Here's an
-example:
-
-@example
-IFS=':'
-@end example
-
-@noindent
-This allows you to read the password file as separate fields.
-
-@item ENV
-If this parameter is set when BASH is executing a shell script, its
-value is interpreted as a file name containing commands to initialize
-the shell (like @file{.bashrc} for interactive shells).
-
-@item MAIL
-This is the file name to use as your mailbox.  If this file is non-zero
-in length and has been modified since the last time the shell checked
-the file, the shell displays the message ``@code{you have mail}''.  You
-control how often the shell checks this file by setting the @code{MAILCHECK}
-variable.
-
-Here's an example using the @code{MAIL} variable:
-
-@example
-MAIL=/usr/homes/close/mbox
-@end example
-
-@noindent
-This causes the shell to check for mail in @file{/usr/homes/close/mbox}
-rather than the system spool directory.
-
-@item MAILCHECK
-This specifies the amount of time that must pass before the shell will
-check the file named by the @code{MAIL} variable to see if it has changed.  The
-default is 60 seconds (1 minute).  An interval of 0 causes the shell
-to look for mail before printing each prompt.
-
-For example,
-
-@example
-MAILCHECK=600
-@end example
-
-@noindent
-causes the shell to check for mail before printing a prompt if 600
-seconds have passed since the last check.
-
-@item MAILPATH
-@c how relates to MAIL variable? what if both set?
-This specifies multiple mailboxes for the shell to check.  It is the
-path the shell uses to check the named files for modifications (receipt
-of mail).  To distinguish which file has received mail, you can follow
-each file name with a @samp{%} and some unique text which is printed
-when mail is received.  Separate file names with colons.  Here's an
-example:
-
-@example
-MAILPATH='/usr/homes/close/mbox?"You have mail":~/shell-mail?"$_ has
-mail!"'
-@end example
-
-@noindent
-This causes the shell to print ``You have mail'' whenever it detects a
-change in the modification time of the file
-@file{/usr/homes/close/mbox}.  Additionally, the file
-@file{/usr/homes/close/shell-mail} is also checked, and the message
-``/usr/homes/close/shell-mail has mail!'' is printed whenever a change
-is detected in its modification time.@refill
-
-@c KELLEM added MAIL_WARNING
-@item MAIL_WARNING
-If this variable is set and one of the specified mail boxes has been
-accessed since the last time BASH checked, then the message ``The mail
-in <mailfile> has been read!'' is printed.@refill
-
-@item  PS1
-This is the primary prompt string.  By default it is @samp{bash\$ }.
-Here's an example:
-
-@example
-PS1="$(whoami)@@$(hostname)$ "
-@end example
-
-@noindent
-This sets the primary prompt string to be the login name of the current
-user, followed by the name of the computer, followed by a dollar sign.
-
-@item PS2
-This is the secondary prompt string.  By default it is @samp{bash>}. 
-For example,
-
-@example
-PS2='more> '
-@end example
-
-@noindent
-sets the secondary prompt string to @samp{more> }.  This is printed
-whenever bash needs more input to complete a command.
-@c elaborate on when needs more input?
-
-@item PS4
-This is the prompt string printed before each command BASH displays
-during an execution trace.  By default, it is @samp{+}.
-
-@item NO_PROMPT_VARS
-If this is set, the decoded prompt string does not undergo further
-expansion.
-
-@item HISTSIZE
-This is the number of commands to remember in the command history list
-(@pxref{History}).  Its default value is 500.
-
-@item HISTFILE
-This is the name of the file in which the command history list is saved
-(@pxref{History}).
-@c apparently: saved over sessions; history of current session not
-@c  there yet if you look (e.g. with emacs or cat)
-
-@item PROMPT_COMMAND
-If this is set, the value is executed as a command prior to issuing
-each primary prompt.
-
-@c bfox: if a shell is running disconnected from tty, every read from
-@c   tty gives it eof -- this way it goes away after n tries
-@item IGNOREEOF
-@itemx ignoreeof
-This controls the action of the shell on receipt of an end-of-file
-character as the sole input.  If set, the value is the number of
-consecutive end-of-file characters typed before bash will exit.
-
-If the variable exists but does not have a numeric value, or has no
-value, the default value is 10.  If it does not exist, an end-of-file
-signifies the end of input to the shell.  This is only in effect for
-interactive shells.
-
-@item HOSTTYPE
-This is automatically set to a string that uniquely describes the type
-of machine on which BASH is executing.  The default is
-system-dependent.
-@c example...
-
-@c KELLEM, adding TMOUT: TMOUT is from posix.2a, I believe
-@item TMOUT
-If this is set to a value greater than zero, the value is interpreted as
-the number of seconds to wait for input after issuing the primary
-prompt.  BASH will terminate after waiting for the number of seconds.
-
-@item notify
-If this is set, BASH will report terminated background jobs
-immediately, rather than waiting until printing the next primary prompt
-(@pxref{notify}).
-
-@item history_control
-@c tested 12/26, ok
-If this is set to a value of @code{ignorespace}, lines that begin with a
-space won't be entered in the history list.
-
-If this is set to a value of @code{ignoredups}, lines that match the last
-line entered in the history list won't be recorded.
-
-If this is unset, or set to any other value than those above, all
-lines read by the shell are saved in the history list.
-
-@item glob_dot_filenames
-If this is set, BASH includes file names beginning with a @samp{.} in
-the results of pathname expansion.
-
-@item allow_null_glob_expansion
-Normally, a filename pattern that doesn't match any files is left in the
-command as is (expands to itself) .  For example, @samp{*.foo} is left
-as is if there are no files ending in @samp{.foo}.
-If @code{allow_null_glob_expansion} is set, however, a pattern that doesn't
-match anything is removed from the command (expands to a null file name).
-@c example?
-
-@c must doc in appropriate parts of manual
-@item histchars
-This represents the two characters which control history expansion and
-tokenization.  The first character is the history expansion character;
-that is, the character which signals the start of a history expansion
-(normally @samp{!}).
-
-The second character is the character which signifies that the
-remainder of the line is a comment, when found as the first character
-of a word.
-@c ? default histchars was empty in 1.06, 2/13/91
-@c I tried setting it, and ! stopped being special but the new chars
-@c didn't seem to do anything.
-
-@item nolinks
-If this is set, the shell doesn't follow symbolic links when doing
-commands that change the current working directory.  By default, BASH
-follows the logical chain of directories when performing commands such
-as @code{cd}.
-
-@item hostname_completion_file
-This contains the name of a file, in the same format as
-@file{/etc/hosts}, that should be read when the shell needs to
-complete a hostname.  You can change the file name interactively; the
-next time you want to complete a hostname BASH adds the contents of the
-new file to the already existing database.@refill
-@c really telling user to modify a public file?!?
-
-@item noclobber
-If this is set, BASH will not overwrite an existing file with the
-@samp{>}, @samp{>&}, and @samp{<>} redirection operators.
-@c KELLEM: <> opens a file descriptor for reading and writing. from posix
-Such an attempt to overwrite a file will generate an error message.
-You can override this via the @samp{>|} redirection operator.  The @samp{>>}
-(append) redirection operator will still work on existing files because
-it only appends to the file and doesn't erase the file's current contents.
-  
-@item auto_resume
-This variable determines whether a command may restart a suspended job
-rather than starting a new one.
-@xref{Resuming}, for more information.
-
-@item no_exit_on_failed_exec
-If this variable exists, the shell doesn't exit if it can't execute the
-file specified in an @code{exec} command (@pxref{Built-in}).
-
-@item cdable_vars
-If this is set, an argument to the @code{cd} built-in command that is
-not a directory is assumed to be the name of a variable whose value
-represents the directory to which you would like to @code{cd}.
-
-@item pushd_silent
-If this is set, the @code{pushd} and @code{popd} built-in commands will
-not print the current directory stack after successful execution.
-@end table
-
-@node Install, Invoke, Shell Vars, Top
-@appendix Installing BASH
-
-This appendix tells how to install BASH on a machine.
-If BASH is already on your machine, or you are not the person installing
-it, ignore this appendix.
-
-@cindex installing BASH
-@cindex BASH, installation
-To install BASH you simply type @kbd{make}. @c really?
-The BASH @file{Makefile} @c really a file name?
-tries to dynamically figure out what kind of machine and operating
-system you are using.  It makes an educated guess based on the
-information it finds.
-
-During the @code{make} process, a message is displayed describing what
-machine and operating system has been chosen for you.  This information
-is also saved in the file @file{.machine} so you can look at it later.
-
-Therefore, for most machines, simply follow this simple checklist to
-install BASH:
-
-@enumerate
-@item
-Type @kbd{make}.
-
-@item
-Wait for the compilation to finish.
-
-@item 
-Type @kbd{./bash} to see if the compile worked.
-@c how can you tell if it worked?
-
-@item
-Type @kbd{cp ./bash /usr/gnu/bin/bash} (or wherever you keep GNU
-binaries) to copy BASH to your binaries directory.
-@end enumerate
-
-@menu
-* Problems::  What to do if BASH doesn't install quite so easily.
-
-* Files::     Files used in the @code{make} process.
-
-* Porting::   Porting BASH to a new machine.
-
-* Bugs::      What to do if you Discover Bugs in BASH.
-
-@end menu
-
-@node Problems, Files, Install, Install
-@appendixsec What if it Doesn't Install so Easily?
-
-@cindex installation, problems with
-@cindex BASH, installation problems
-Sometimes BASH gets confused and will make the wrong assumptions about
-your machine or operating system.  If the displayed information (also
-found in @file{.machine}) is incorrect, you will have to edit the file
-@file{machines.h} and provide the appropriate information so that BASH
-can be installed correctly.  The complete instructions for doing this
-are located in the @file{machines.h} file.
-
-@c what font should UNKNOWN_MACHINE be?
-However, if BASH says that your machine type is an @sc{UNKNOWN_MACHINE},
-or BASH thought it knew something about your machine but was wrong,
-then reading the next few sections could be of use to you
-@xref{Files}, and @ref{Porting}, for more information).
-
-@node Files, Porting, Problems, Install
-@appendixsec Files Used in the @code{make} Process.
-
-@cindex installation, files used in
-@cindex BASH, files used in installation of
-The following files are used during the installation of BASH, in the
-@code{make} process:
-
-@table @code
-@item Makefile
-This is responsible for making the actual @file{Makefile} that is used
-to create Bash.  It runs the C preprocessor (usually located in
-@file{/lib/cpp}) on the file @file{cpp-Makefile}, producing the output
-file @file{bash-Makefile}.
-
-@item cpp-Makefile
-This is a file of C comments and text.  It contains
-@code{ifdefs} that control what files get compiled and which flags
-are passed to the various C files comprising BASH.  It includes a file
-called @file{machines.h}.
-
-@item machines.h
-This file contains the basic compilation parameters for all of the
-machines to which BASH has been ported.  This file consists of a series
-of conditional blocks, one per machine type.
-
-These conditional blocks are depend upon the unique identifier that
-@file{cpp} has predefined for this machine.  In some cases, additional
-information can be passed from @file{Makefile}.  It is possible to pass
-information such as whether or not a particular file is available on
-this system, and so on.
-
-@item bash-Makefile
-This is the output from the initial stage of @code{make}.  It is a
-stripped down version of @file{cpp-Makefile} which is tailor-made for
-your machine and operating system.  All subsequent @code{makes} use
-this file.
-@end table
-
-@node Porting, Bugs, Files, Install
-@appendixsec What if You Have to Port to a New Machine?
-
-@cindex installation, porting to a new machine
-@cindex BASH, porting to a new machine
-@cindex porting BASH to a new machine
-To port BASH to a previously unsupported
-machine, you need to create a block in @file{machines.h}
-that is conditional based on a unique identifier present in your
-version of the C preprocessor.
-
-If you don't know what that symbol is, you might try the following
-simple test:
-
-@example
-bash$ echo "main () @{ @}" > foo.c
-bash$ cc -v foo.c
-@end example
-
-@noindent
-The first command puts a small C program into the file @file{foo.c},
-and the second program compiles that program.
-The @code{-v} option ???. @c what does it do?
-
-@noindent
-Look for something of the form @code{-D}@var{machine} in the output of
-@code{cc}, where @var{machine} is an identifier for your machine.  If
-your machine's C preprocessor doesn't have a unique identifier, you will
-have to define the identifier in @file{Makefile} manually.
-
-Let's say you have a machine from Yoyodyne Industries, called the YoYo. 
-It runs a version of @sc{bsd}, so it is reasonably compatible.
-@c compatible with what?
-However, the
-@file{cpp} file on this YoYo machine doesn't define any unique identifiers. 
-You should change the @file{Makefile} line for @code{CPPFLAGS} to:
-
-@example
-CPPFLAGS = -P -DYoYo
-@end example
-
-@noindent
-Then, in @file{machines.h}, make a copy of the block for
-@code{UNKNOWN_MACHINE}, and change the conditional to:@refill
-
-@example
-#if defined (YoYo)
-@end example
-
-@noindent
-Inside the YoYo block, define @samp{M_MACHINE="YoYo"} and
-@samp{M_OS=BSD}.  You also modify the existing defines to match your
-machine's software.
-
-If BASH still won't compile, perhaps because of missing code that is
-required for your YoYo machine, you will have to write that code and
-place it within a conditional block based on YoYo.
-
-Most machines aren't that difficult; simply redefining a few of the
-default values is sufficient.  If you do run across a difficult machine,
-please send all fixes and changes to bash-maintainers@@ai.mit.edu in the
-form of context diffs:
-
-@example
-diff -c orig-machines.h machines.h >machines.diffs
-@end example
-
-@noindent
-Please include information about which version of the shell you have.
-
-@node Bugs,  , Porting, Install
-@appendixsec Reporting Bugs
-
-@cindex BASH, reporting bugs
-If you find a bug in BASH, you should report it.  But first you should
-make sure that it really is a bug and that it appears in the latest
-version of BASH that is available.
-@c how can you find out if it is the latest BASH?
-
-Once you have ascertained that a bug really exists, you are welcome to
-mail in a bug report.  If you have a fix, please mail that too!
-
-Suggestions and ``philosophical'' bug reports should be mailed to
-bug-bash@@ai.mit.edu.  Genuine bug reports should be mailed to the same
-place, or to bash-maintainers@@ai.mit.edu.
-
-@emph{All} bug reports should include:
-
-@itemize @bullet
-@item
-The version number of BASH.
-@c how find it out?
-
-@item
-The hardware and operating system used.
-
-@item
-The compiler used to compile BASH.
-
-@item
-A description of the bug's behavior.
-
-@item
-A short script or ``recipe'' which demonstrates the bug.
-@end itemize
-
-Without this information, it is generally not possible to successfully
-debug BASH.  Usually, without this information, the bug won't manifest
-itself!
-
-Discussion and questions about BASH in general (including questions
-about this documentation) can be sent to bug-maintainers@@ai.mit.edu. 
-
-@node Invoke, Start-up, Install, Top
-@appendix Invoking BASH
-@c bad title -- more is covered
-
-@cindex invoking BASH
-@cindex BASH, invoking
-@c intro material might be useful elsewhere
-The operating system starts a shell for you when you log in. 
-
-This shell operates interactively; that is, it prompts you for commands
-and processes those commands.  Logging off the system ends this login
-shell.
-
-@cindex shell, interactive
-@cindex shell, login
-@cindex shell, non-interactive
-A login shell is one that's been started with the @samp{-login} flag,
-or one whose first character of argument 0 is a @samp{-}.
-@c I don't understand the last sntence
-An
-interactive shell is one that has been started with the
-@samp{-i} flag, or one whose standard input and standard output are
-both connected to terminals.
-
-A shell doesn't always have to be interactive.  For example, if you use
-a sequence of commands frequently, you can save time typing by storing
-those commands in a file
-@c ? is that the def of a shell script?
-and direct the shell to execute this command
-file when you need it.  When this command file is executed a new
-non-interactive shell
-is started to read and execute the commands in that file.
-@c not necessarily new shell
-
-You can tell if a shell is interactive or not by examining the contents
-of the variable @code{PS1}.  It is unset in non-interactive shells, and set in
-interactive ones.
-@c Why/when do you want to tell? If you're typing at the shell, you
-@c already know it is interactive.  If you're writing a file to be
-@c executed by a noninteractive shell, that file knows it's noninteractive.
-
-@menu
-* Invoke Order::     What files are invokes upon login, logout
-                     and starting non-interactive and non-login
-                     shells.
-
-* Invoke Options::   Options that modify the shell invocation
-                     process.
-
-* Signals::          How BASH handles signals as an interactive
-                     shell.
-
-* Tilde::            How BASH handles tilde expansion.
-
-* Splitting::        How BASH handles word splitting and pathname
-                     expansion.
-@end menu
-
-@node Invoke Order, Invoke Options, Invoke, Invoke
-@appendixsec Automatic Script Execution
-
-@cindex invoking BASH, file order when
-@cindex shell, login file order
-@cindex shell, logout file order
-Upon starting a login shell, the system
-@c ? the system? or bash?
-looks for a file containing
-system-wide start-up instructions for BASH and reads and executes it. 
-Usually these instructions are in a file called @file{/etc/profile}.
-
-Next the system looks for start-up instructions for your account and
-reads and executes it.   These instructions are found in one of the
-following files; the system searches for the following files, in order,
-and reads and executes the first one it finds:
-
-@table @file
-@item ~/.bash_profile
-
-@item ~/.bash_login
-
-@item ~/.profile
-@end table
-
-@noindent
-Since the chosen file contains start-up instructions for @emph{your}
-account, you can modify and ``personalize'' this file if you want. 
-@xref{Start-up}, for an example of this type of file
-(@file{~/.bash_profile}).  If BASH can't find any of these files,
-BASH starts with a default environment; no error message is given.
-
-When exiting a login shell, BASH reads and executes the file
-@file{~/.bash_logout}, if it exists.
-@c bash IS the login shell that is exiting
-@xref{Start-up}, for an example of this type of file.
-
-@cindex shell, interactive file order
-@c what causes non-login interacive shell to start up?
-Upon starting a non-login, interactive shell, BASH
-@c bash IS that shell
-reads and executes the
-file @file{~/.bashrc} if it exists.
-@c ? mnemonic for 'rc'
-@xref{Start-up}, for an example of this type of file.
-
-@cindex shell, non-interactive file order
-@c what causes non-interacive shell to start up?
-Upon starting a non-interactive shell, BASH
-@c bash IS that shell
-checks to see if the
-environment variable
-@c ? env var = shell var ?
-@code{ENV} is non-null, and reads and executes the
-file named by that variable.
-
-@node Invoke Options, Signals, Invoke Order, Invoke
-@appendixsec Options That Modify the Shell Invocation Process
-
-To invoke BASH you can type:
-@c why? you have one already
-
-@c text below says options come before -...
-@example
-bash @r{[}-acefhiknstuvx@r{]} @r{[}@var{options}@r{]}
-@end example
-
-@noindent
-where @var{options} represents one of the multi-character options
-described a bit later in this section.  BASH interprets the following
-single-character options when it is invoked:
-
-@cindex invoking BASH, options
-@cindex shell, invocation options
-@c compare to 'set' options. maybe combine doc
-@c listed here as
-@table @code
-@item a
-Automatically mark variables which are modified or created for export.
-
-@c how does string combine with other single-char options?
-@item c @var{string}
-Commands are read from @var{string}.
-
-@item e
-Exit immediately if a command exits with a nonzero status.
-
-@item f
-Disable pathname generation.
-
-@item h
-Locate and remember function commands as functions are defined.
-
-@item i
-This makes the shell interactive.
-
-@item k
-Place all keyword arguments for a command in the environment for that
-command (not just those arguments that precede the command name).
-
-@item n
-Read commands but don't execute them.
-
-@item s
-If this option is present, or if no arguments remain after option
-processing, commands are read from the standard input.  (This option
-allows the positional parameters to be set when invoking an interactive
-shell.)
-
-@item t
-Exit after reading and executing one command.
-
-@item u
-Treat unset variables as an error when performing parameter expansion.
-
-@item v
-Print shell input lines as they are read.
-
-@item x
-After expanding each command, display the value of @code{PS4} followed
-by the command and its expanded arguments.
-@end table
-
-BASH also interprets a number of multi-character options.  These
-options must appear on the command line @emph{before} the single-character
-options in order to be recognized.  These options are:@refill
-
-@table @code
-
-@item -norc
-Do not load the personal initialization file @file{~/.bashrc}.  This is
-the default if the shell name is @code{sh}.
-@c ???
-
-@item -noprofile
-Do not read either @file{/etc/profile} or @file{~/.bash_profile}, if
-this is a login shell.
-@c what about the other profiles?  ~/.bash_login, ~/.profile
-
-@item -rcfile @var{file}
-Execute commands from @var{file} instead of from the standard personal
-initialization file @file{~/.bashrc}.
-
-@item -version
-Show the version number of this instance of BASH when starting.
-@c this instance = the bash starting up?
-
-@item -quiet
-Do not be verbose when starting up (do not show the shell version or
-any other information).
-
-@item -login
-Make BASH act as if it had been invoked by @code{login}.
-
-@item -nobraceexpansion
-Do not perform curly brace expansion (@pxref{Grouping}).
-
-@item -nolineediting
-Do not use the readline library to read command lines if this shell is
-interactive.
-@end table
-
-If arguments remain after option processing,
-@c no args shown in syntax above
-and neither the
-@samp{-c} nor the @samp{-s} option has been supplied,
-@c s not explained well -- didn't show use of an arg
-then the first
-argument is assumed to be the name of a file containing shell commands. 
-If BASH is invoked in this fashion, the variable @code{0} is set to the name of the
-file, and the positional parameters are set to the remaining arguments. 
-BASH reads and executes commands from this file, then exits.
-
-@node Signals, Prompt, Invoke Options, Invoke
-@appendixsec How BASH Handles Signals
-
-@cindex BASH, signal handling in
-@cindex signals, how BASH handles
-@cindex signal handling
-@c how relates to signals in process chapter?
-
-@c below:explain job control, synchronous job, inherited, command
-@c substitution, kernel, process group id
-
-When BASH is interactive, it ignores @code{SIGTERM}.  This means that
-@samp{kill 0} will not kill an interactive shell.  Also, @code{SIGINT}
-is caught and ignored, so that @code{wait} is interruptible.
-
-In all cases, BASH ignores @code{SIGQUIT}.
-
-If job control is in effect, bash ignores @code{SIGTTIN},
-@code{SIGTTOU}, and @code{SIGTSTP}.  Synchronous jobs started by BASH
-have signals set to the values inherited by the shell from its parent. 
-Background jobs (jobs started with @samp{&}) ignore @code{SIGINT} and
-@code{SIGQUIT}.
-
-Commands run as a result of command substitution ignore the
-keyboard-generated job control signals @code{SIGTTIN}, @code{SIGTTOU},
-and @code{SIGTSTP}.
-
-Here's a description of the signals listed above:
-
-@table @code
-@item SIGINT
-This is the signal generated (normally) by @kbd{C-c} on the keyboard. 
-This signal will kill most processes, although a program may choose to
-ignore @code{SIGINT}.  @code{SIGINT} also allows a process to clean up after itself
-before dying.
-
-@item SIGQUIT
-This is the signal generated (normally) by @kbd{C-\} on the keyboard. 
-@code{SIGQUIT} is identical to @code{SIGINT} except that it requests that the
-operating system produce a diagnostics file (called a @dfn{core dump}
-which is placed into a file named @file{core}).
-
-@item SIGTERM
-@code{SIGTERM} is similar to @code{SIGINT} except that it is normally produced by a
-software program and not from the @kbd{C-c} on the keyboard.  Note that
-some programs treat @code{SIGTERM} differently from @code{SIGINT}.
-
-@item SIGTSTP
-@code{SIGTSTP} is the signal sent (normally) by the @kbd{C-z} key on the
-keyboard.  Some programs may ignore this signal.  This signal does not
-kill the process but instead @emph{stops} the process, putting the
-program into a suspended state.
-
-@item SIGTTIN
-The kernel sends the signal @code{SIGTTIN} to a job/process group that is not
-in the foreground (that is, the process group's process group @sc{id} is not
-equal to the terminal's foreground process group @sc{id}) and attempts to
-read from the terminal.
-
-@item SIGTTOU
-The kernel sends the signal @code{SIGTTOU} to a job/process group that is not
-in the foreground and attempts to write to the terminal if, and only
-if, the terminal has the @sc{tostop} bit set in its local flags word (you
-can set this bit with @samp{stty tostop}).
-@c tostop: code or sc?
-@c what's tostop?  local flags word?
-@end table
-
-@c what is this topic really?  sections removed from another appendix
-@node Command Processing
-@appendix Command Processing
-
-@node Splitting,  , Tilde, Invoke
-@appendixsec Word Splitting and Pathname Expansion
-
-@c purpose of section -- what is effect of splitting? why do we care?
-
-@cindex word splitting
-@cindex splitting, words
-@c ???
-The shell scans the results of parameter expansion and command
-substitution that did not occur within double quotes for word
-splitting.
-
-The shell treats each character of the variable @code{IFS} as a delimiter, and
-splits the results of the other expansions
-@c other than what?
-into words on these
-characters.  The default value of @code{IFS} is exactly
-@samp{<space><TAB><newline>}.
-@c SPCTAB ... how notate?
-  @xref{Shell Vars}, for more information
-on how to change the value of @code{IFS}.
-
-If @code{IFS} is unset or null, no splitting is done.  Otherwise, each occurrence
-of an @code{IFS} character is treated as a delimiter.
-
-Explicit null arguments (@samp{""} or @samp{''} -- i.e., single or
-double quotes with nothing between them) are retained. 
-Implicit null arguments, resulting from the expansion of parameters
-that have no values,
-@c no value -- unset?  null value?
-are removed.  If no expansion occurs, then no splitting is performed.
-
-@cindex expansion, pathname
-@cindex pathname expansion
-After word splitting, BASH scans each word for the special characters
-@samp{*}, @samp{?}, and @samp{[@dots{}]}, unless the @samp{-f} option is
-present.  If one of these characters appears, then the word is regarded
-as a pattern, and replaced with an alphabetically sorted list of
-pathnames matching the pattern.  @xref{File Names}, for more
-information on these special characters.
-
-If no matching pathnames are found, and the shell variable
-@code{allow_null_glob_expansion} is unset, the word is left unchanged
-(@pxref{Shell Vars}).  If the variable is set, the word is removed if
-no matches are found.
-
-@c paragraph unclear
-When a pattern is used for pathname generation, the character @samp{.}
-(at the start of a name or immediately following a slash) must be
-matched explicitly, unless the shell variable @code{glob_dot_filenames}
-is set (@pxref{Shell Vars}).  The slash character must always be
-matched explicitly.  In other cases, the @samp{.} character is not
-treated specially.
-
-@node Start-up, Advanced Scripts, Invoke, Top
-@appendix Sample Script Files
-
-@c some redundancy between invocation appendix and this one re login files
-When you first log in, a shell process is started that establishes the
-environment for your session (@pxref{Invoke Order}).  A system-wide
-login script assigns default values to environment variables creating a
-basic, default environment (@pxref{Environment}). 
-(A login script is simply a file that contains commands that customize
-the environment.)
-
-@cindex start-up files, sample
-@cindex login file samples
-This default environment can be quite restrictive.  BASH uses various
-local login scripts to allow you to change and ``personalize'' the
-default environment (@pxref{Invoke Order}).  If a local login scripts
-exists, it is executed by the shell before you get a shell prompt,
-customizing your environment for you.
-
-@menu
-* Login Script::   Sample of a login script.
-
-* Logout Script::  Sample of a logout script.
-
-* Other Scripts::  Sample of a non-login, interactive shell
-                   script.
-
-@end menu
-
-@node Login Script, Logout Script, Start-up, Start-up
-@appendixsec Login Scripts
-@c some redundancy between invocation appendix and this one re login files
-@cindex login script
-A local login script allows you to change the default environment to
-fit your needs.  If you have one it resides in your home directory. 
-Note that names for this script begin with a dot (@samp{.}), so the
-file remains hidden when performing a standard directory listing
-(@code{ls}).  You have to type @code{ls -a} to see if you have any
-local login scripts.  If you do, it will be called one of the following
-names:
-
-@c if you don't have one, can create one -- how know what put in it?
-@c Be clear it's done after system file, so needn't duplicate what's there
-@table @file
-@item ~/.bash_profile
-
-@item ~/.bash_login
-
-@item ~/.profile
-@end table
-
-Since this file contains start-up instructions for @emph{your} account,
-you can modify this file to create an environment
-specific to your needs.  Here is an example of a BASH start-up file for
-login shells, @file{~/.bash_profile}:
-@c need to explain sample scripts
-
-@cindex login script, sample of
-@cindex script, sample of a login
-@example
-# File: /usr/gnu/lib/Bash_profile
-
-# Startup file for bash login shells.
-#
-default_dir=/usr/gnu/lib/
-
-@c how can your login shell be noninteractive?
-# Test to see if this is an interactive shell.
-if [ "$PS1" ]; then
-  PS1='\u@@\h(\#)\$ '@c KELLEM added \ before $
-  ignoreeof=3
-fi
-
-LOGIN_SHELL=true
-
-# If the user has her own init file, then use that one, else use
-# the canonical one.
-@c why in separate rc file instead of right here?
-if [ -f ~/.bashrc ]; then
-  source ~/.bashrc
-else if [ -f $@{default_dir@}Bashrc ]; then
-  source $@{default_dir@}Bashrc;
-  fi
-fi
-@end example
-
-@node Logout Script, Other Scripts, Login Script, Start-up
-@appendixsec Logout Scripts
-
-A logout script allows you to automate a variety of tasks like starting
-background processes with a @code{nohup} option, running file clean-up
-routines, or simply displaying a logout message when you log out.  If a
-@file{.bash_logout} file exits in your home directory, it is executed
-automatically when you log out.
-@c nohup not illustrated in sample script
-
-The logout script can contain any commands that you might type at the
-shell prompt.  However, a logout script is most useful when used to
-display information about the session just ending and to run background
-commands after you log out. 
-
-Here's an example of a simple BASH logout file, @file{~/.bash_logout}:
-
-@cindex logout script
-@cindex logout script, sample of
-@cindex script, sample of a logout
-@example
-# File: /usr/close/.bash_logout
-# BASH log off file
-
-# First clear the screen.
-clear
-
-# Clean up my files.
-echo "cleaning things up now"
-rm *.o
-
-# Print a logout message.
-echo `whoami` "logged out on" `date`
-
-# Then say goodbye.
-echo "Au revoir"
-@end example
-
-@node Other Scripts, Inputrc File, Logout Script, Start-up
-@appendixsec Non-login, Interactive Scripts
-@c what about noninteracive scripts?
-
-All login scripts are run when you first log in.
-@c all ??
-In addition, login
-scripts that end in @samp{rc} are executed each time your current shell
-creates a subshell.
-@c ? what are the possible rc script names?
-@c ?when does it run a subshell?
-Here's an example of a BASH start-up file for
-non-login, interactive shells, @file{~/.bashrc}:
-@cindex interactive non-login script
-@cindex interactive non-login script, sample of
-@cindex script, sample of an interactive non-login
-
-@example
-# File: /usr/gnu/lib/Bashrc
-# Bourne Again SHell init file.
-#
-# Files you make look like rw-rw-r
-umask 002
-
-# Don't make useless coredump files.  If you want a coredump,
-# say "ulimit -c unlimited" and then cause a segmentation fault.
-ulimit -c 0
-
-# Sometimes, there are lots of places that one can find tex
-# inputs.
-export TEXINPUTS=.:$HOME/bin:/usr/lib/tex/inputs:/usr/local/lib/tex/inputs
-
-# Where's the Gnu stuff at?
-GNU=/usr/gnu/bin
-X11=/usr/bin/X11
-
-UTIL_PATH=$GNU:$X11
-STANDARD_PATH=/usr/local/bin:/usr/ucb:/bin:/usr/bin:/usr/etc:/etc:/usr/games
-if [ "$HOSTTYPE" = "sony" ]; then STANDARD_PATH=$STANDARD_PATH:/usr/sony/bin; fi
-
-if [ -d $HOME/bin/$HOSTTYPE ]; then
-  MY_PATH=$HOME/bin/$HOSTTYPE
-fi
-
-if [ -d $HOME/bin ]; then
-  MY_PATH=$MY_PATH:$HOME/bin
-fi
-
-PATH=.:$MY_PATH:$UTIL_PATH:$STANDARD_PATH
-
-@c section claims to be about interactive script -- why need to test?
-# If running interactively, then:
-if [ "$PS1" ]; then
-
-  # Here are a couple of functions to make csh user's lives easier.
-  setenv () @{
-    export $1="$2"
-  @}
-
-  unsetenv () @{
-    unset $*
-  @}
-
-  # Here are a couple of functions that make *my* life easier.
-  showme () @{
-    local files=$(type -all -path $1)
-    if [ "$files" ]; then ls -l $files; else echo "No such file."; fi
-  @}
-
-  # Set ignoreeof if you don't want EOF as the sole input to the shell to
-  # immediately signal a quit condition.  This only happens at the start
-  # of a line if the line is empty, and you haven't just deleted a character
-  # with C-d.  I turn this on in ~/.bash_profile so that only login shells
-  # have the right to be obnoxious.
-  # ignoreeof=
-
-  # Set auto_resume if you want TWENEX style behavior for command names.
-  auto_resume=
-
-  # Set notify if you want to be asynchronously notified about background
-  # job completion.
-  notify=
-
-  # Make it so that failed `exec' commands don't flush this shell.
-  no_exit_on_failed_exec=
-
-@c section claims to be about non-login script
-  if [ ! "$LOGIN_SHELL" ]; then
-    PS1="\u@@\h\$ "
-  fi
-
-  HISTSIZE=256
-  MAILCHECK=60
-
-  # A couple of default aliases.
-  alias j='jobs -l'
-  alias po=popd
-  alias pu=pushd
-  alias ls='ls -F'
-
-HOST=$(hostname | sed -e 's/\.*//')
-
-xtitle () @{ echo -n -e "\033]l$*\033" @}
-
-  if [ -f ~/.bash_aliases ]; then
-    source ~/.bash_aliases
-  fi
-fi
-@end example
-
-
-@node Advanced Scripts, Tools, Start-up, Top
-@appendix Writing and Debugging Scripts
-
-@cindex debugging shell scripts
-@cindex scripts, debugging
-@cindex shell scripts, debugging
-When writing scripts, it's always possible that mistypings and other
-errors can occur.  In complicated scripts
-errors may be difficult to track down and fix.
-
-The shell can make things simpler though, with its debugging options,
-like @samp{-v} and @samp{-x}.  All can be invoked by command arguments
-to BASH or through the @code{set} command (@pxref{Built-in}).  For
-example, @code{bash -v} or @code{set -v}.
-@c substitute new 'set -o ...' version of above
-
-The @samp{-v} option sets the shell to verbose mode.  This causes
-command lines to be displayed as they are read.
-@c read in general? or just from a script (file)?
-This is useful for
-finding syntax errors.  You can use this option in conjunction with
-the @samp{-n} option,
-@c substitute new 'set -o ...' version of above
-which prevents the execution of commands. 
-However, note that saying @code{set -n} makes a terminal useless until
-an end-of-file is typed.
-@c ? how do you type eof?
-
-The @samp{-x} option displays each command as it is executed, following
-all substitutions.
-@c substitutions such as ...
-This lets you see what is going on as the shell
-program runs.
-@c ? program = script?
-It shows you what the shell did to your command line as
-a result of all the substitutions that took place.  This is useful to
-see if your command lines do what you wanted them to do.
-
-In long shell scripts you can get lots of unwanted and unnecessary
-debugging information from the shell when the 
-@samp{-x} option is used.  You can reduce the amount of output by
-turning this option on (@code{set -x})
-@c substitute new 'set -o ...' version of above
-where you need it and turning it off (@code{set +x}) when you don't.@refill
-@c you mean put 'set '  in the script itslf?
-
-Adding @code{echo} statements to the shell script also helps when
-debugging.  It's like having @code{print} statments in a program.
-
-You can even check for unset shell variables with the @samp{-u} option. 
-When you use this option, attempts to substitute variables that have not
-been set causes an error message and execution is stopped.
-
-@c KELLEM: the next sentence sounds incorrect, will have to verify
-@c All options can be turned off by saying @code{set -}.
-The current setting of the shell options is available as @samp{$-}.
-
-@menu
-* More Scripts::   Advanced sample scripts.
-@end menu
-
-@node More Scripts,  , Advanced Scripts, Advanced Scripts
-@appendixsec More Examples of Shell Scripts
-
-@cindex shell scripts, advanced examples of
-@cindex scripts, advanced examples of
-Here's an example of a more advanced shell script.
-@c more advanced than what?
-This script tells you which file will be executed when you
-use the command you give it as an argument.  It uses @code{sed} to
-split your path, inserting dots in place of null strings to preserve
-the shell semantics.  It tests each directory on your path for an
-executable file whose name is the same as the argument you gave to the
-script.  If it finds one, it tells you what it is and exits with a
-successful status.  If no executable files are found, the script exits
-with a failure status.
-
-@example
-#
-# which -- find out which command in $PATH is executed
-#
-# adapted from Kernighan and Pike
-#
-opath=$PATH
-PATH=/usr/ucb:/bin:/usr/bin
-
-case $# in
-    0)
-     echo "usage: $0 command" 1>&2
-     exit 1
-     ;;
-    *)
-     ;;
-esac
-
-@c !!! my god!!!!  teco**(teco**2)
-for i in $(echo $opath | sed 's/^:/.:/
-                     s/::/:.:/g
-                     s/$:/:./
-                     s/:/ /g')
-do
-     if [ -x $i/$1 ] ; then
-          echo $i/$1
-          exit 0
-     fi
-done
-exit 1
-@end example
-
-
-Here's another example, submitted by Bennett Todd
-(bet@@orion.mc.duke.edu).  It forces the commands run as the arguments
-to the script to die after some timeout. This is handy for debugging
-full-screen programs (like Emacs) that, if they get hung, wedge the
-terminal fatally.
-
-@example
-#!/bin/sh
-# Launch a sleeping killer-offer
-
-progname=`basename $0`
-timeout=10
-signal=TERM
-
-while test $# -gt 2 -a `expr "x$1" : "x-."` -gt 0
-do
-     case "x$1"
-     in
-          x-t) shift; timeout=$1; shift;;
-          x-s) shift;  signal=$1; shift;;
-     esac
-done
-
-if test $# -lt 1
-then
-     echo "syntax: $0 [-t timeout] [-s signal] command" 1>&2
-     exit 1
-fi
-
-(sleep $timeout; kill -$signal $$) &
-exec "$@@"
-@end example
-
-Finally, here's one more example of a shell script, submitted by Bill
-Trost (trost@@reed.bitnet).  It creates an extended version of the
-shell's @code{pushd} & @code{popd} commands.  It's slower than the
-built-ins, but also adds a couple of features to @code{pushd}: negative
-numeric arguments (given a dirstack of size 3, @code{pushd +2} is
-equivalent to @code{pushd -1}), and named references.  With a named
-reference, a command of the form @code{pushd +xterm} will rotate the
-directory stack to the first directory whose final component is
-@file{xterm}.  It uses the @samp{#} variable construct, and lots of
-@code{sets} and @code{shifts}.
-
-@example
-# A shell-level version of pushd and popd.  A bit slower, a bit
-# cleverer.  I added a feature, which is best described by
-# example.
-# Suppose you have the directory stack consisting of /tmp,
-# /local/src/X11r4/mit/clients/xterm, and ~/prj/term (/tmp at the
-# top).  If you type "pushd +xterm", you'll end up in the first
-# directory whose name end with "xterm".
-
-# This is a complete rewrite of a similar function posted to
-# gnu.bash.bug by Martin Tomes <mt00@@eurotherm.co.uk>.  I've done
-# a little benchmarking, and this version's pushd appears to be 
-# gobs faster; this is probably due to my use of the case 
-# construct instead of if/elif/fi.  The if construct (at least in
-# Bourne shell) has historically been very slow.  Then again,
-# popd was just as fast...?
-# The alternative explanation is that his frequent use of the
-# "cut" and "expr" commands slowed things down.
-
-# This program expects the "seq" command to give a sequence of
-# numbers from $1 to $2.  I have a "seq" function which is
-# usually very fast.
-
-dirs () @{ echo $PWD $DIRS @}
-
-pushd () @{
-  case "$1" in
-    "")
-        # Swap first two.
-        local here=$PWD
-        set $DIRS
-        cd "$1"
-        shift
-        DIRS="$here $*"
-        ;;
-    +[0-9]*)
-        local save i=$@{1#+@}
-        set $PWD $DIRS
-        for i in `seq 1 $i`; do
-          [ "$1" = "" ] && @{ set $PWD $DIRS ; save= @}
-          save="$save $1"
-          shift
-        done
-        [ "$1" = "" ] || @{
-          cd $1
-          shift
-          DIRS="$* $save"
-        @}
-        ;;
-    [-][0-9]*)
-        local dest=$@{1#-@}
-        set $PWD $DIRS
-        pushd +`expr $# -  \\( $dest % $# \\)`
-        ;;
-    +?*)
-        # Feature: pushd +foo will push to directory whose
-        # basename is "foo".
-        local wrap i goal=$@{1#+@} found=false
-        set $PWD $DIRS
-        for i; do
-          [ $@{i##*/@} = "$goal" ] && @{
-            cd $i
-            shift
-            DIRS="$* $wrap"
-            found=true
-            break
-          @}
-          wrap="$wrap $i"
-          shift
-        done
-        $found || @{
-          echo $@{goal@}: Directory not on stack. 1>&2
-          return 1
-        @}
-        ;;
-    *)
-        [ ! -d $1 ] && @{
-          echo "$1": No such file or directory 1>&2
-          return 1
-        @}
-        DIRS="$PWD $DIRS"
-        cd $1
-        ;;
-  esac
-  true $@{pushd_silent:-`dirs`@}
-@}
-
-popd () @{
-  [ -z "$DIRS" ] && @{
-    echo popd: Directory stack empty 1>&2
-    return 1
-  @}
-  case "$1" in
-    "")
-        set $DIRS
-        cd $1
-        shift
-        DIRS="$*"
-        ;;
-    +*)
-        count=$1
-        set $DIRS
-        # Hack until builtin test works correctly with unary +
-        /bin/[ $count -gt $# ] && @{
-          echo popd: Directory stack not that deep 1>&2
-          return 1
-        @}
-        DIRS="`echo $DIRS | awk '@{ $'$count' = \"\"; print @}'`"
-        ;;
-    *)
-        echo 'popd: usage: popd [ +n ]' 1>&2
-        return 1
-        ;;
-  esac
-  true $@{pushd_silent:-`dirs`@}
-@}
-@end example
-
-
-@node Tools, Authors, Advanced Scripts, Top
-@appendix Useful Operating System Programs
-
-This is the section that will include useful and related operating
-system commands (NOT built-ins) to use with the shell and shell
-procedures.
-
-If you think that various utilities and commands used to support shell
-programming belong in the shell programming manual, then go ahead and
-add them yourself.  Personally, I feel that there is no good determiner
-of whether a utility belongs in the shell programming manual or whether
-it belongs in the GNU operating system manual.
-
-@c following note by JEMS
-@c maybe should include  those used in examples
-@c (e.g. ls, rm cat, who, sort, date, more, wc, ...)
-
-@node Authors, Concept Index, Tools, Top
-@appendix Who and Where to Write
-
-@c main topic is acknowledgments, not who to write
-
-@cindex authors
-This manual is a combined effort of a number of people.  Diane Barlow
-Close (close@@lunch.wpd.sgi.com) wrote the original draft.  Julie
-Sussman (jems@@altdorf.lcs.mit.edu) did the majority of reorganization
-and the second draft.  Without her help, this manual would probably
-still be waiting to be written.  Brian Fox (bfox@@ai.mit.edu) produced
-the third draft, and provided technical advice for Diane and Julie.
-
-Chet Ramey (chet@@cwns1.ins.cwru.edu) provided many examples for this
-manual and wrote the BASH man page.
-
-Richard Stallman (rms@@ai.mit.edu) provided editing and polishing of
-the finished product.
-
-Others who provided assistance of varying degrees are mentioned in the
-acknowledgement section (@pxref{Thanks}).
-
-Errors concerning this documentation should be sent to
-bug-bash-manual@@ai.mit.edu.  @xref{Bugs}, for information on where to
-send bug reports for BASH itself.@refill
-
-@node Concept Index,  , Authors, Top
-@unnumbered Concept Index
-
-@printindex cp
-
-@summarycontents
-@contents
-@bye
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/examples/complete/complete-tests b/examples/complete/complete-tests
deleted file mode 100644 (file)
index fa6a6f4..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#  Chet Ramey <chet.ramey@case.edu>
-#
-#  Copyright 2002 Chester Ramey
-#
-#   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.
-#
-#   TThis 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.
-
-# from zsh, just for testing
-complete -A stopped -P '%' bg
-complete -j -P '%' fg jobs disown
-# this is wrong at this point
-complete -j -P '%' -W '$(ps -x | tail +2 | cut -c1-5)' wait
-complete -c type
-complete -a unalias
-complete -v getopts read unset 
-complete -v -S '=' declare export local readonly typeset
-complete -f -- . source
-complete -A shopt shopt
-complete -e printenv
-
-complete -A helptopic help
-
-complete -c nohup exec nice eval
-complete -c -k time
-
-complete -A signal trap kill
-
-complete -f chown ln more cat
-complete -d mkdir rmdir
-
-complete -f -X '!*.+(gz|tgz)' gunzip gzcat zcat zmore
-complete -f -X '!*.Z' uncompress zmore zcat
-complete -f gzip
-
-complete -d cd pushd popd
-
-complete -A hostname rsh telnet rlogin ftp
-
-complete -u su
-complete -W '"${GROUPS[@]}"' newgrp
-complete -g groupdel groupmod
-
-complete -f -X '!*.+(ps|PS)' gs gv ghostview
-complete -f -X '!*.dvi' dvips xdvi
-complete -f -X '!*.pdf' acroread
-
-complete -f -X '!*.texi*' makeinfo texi2dvi texi2html
-
-complete -c gdb make
-
-complete -p gs
-complete -p
-
-complete -r xdvi
-complete -r notthere
-complete -r
-complete
diff --git a/examples/copyright b/examples/copyright
deleted file mode 100644 (file)
index 0890864..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-#  Chet Ramey <chet.ramey@case.edu>
-#
-#  Copyright 2011 Chester Ramey
-#
-#   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.
-#
-#   TThis 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.
diff --git a/examples/loadables/TODO b/examples/loadables/TODO
deleted file mode 100644 (file)
index b498bdb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-cmp
-wc
-mkfifo
-paste
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/examples/loadables/copyright-fullcomment b/examples/loadables/copyright-fullcomment
deleted file mode 100644 (file)
index 3154216..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-   Copyright (C) 1999-2009 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash.
-   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/>.
-*/
diff --git a/examples/loadables/pushd.def b/examples/loadables/pushd.def
deleted file mode 100644 (file)
index 87300dc..0000000
+++ /dev/null
@@ -1,611 +0,0 @@
-This file is pushd.def, from which is created pushd.c.  It implements the
-builtins "pushd", "popd", and "dirs" in Bash.
-
-Copyright (C) 1987, 1989, 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.
-
-$PRODUCES pushd.c
-
-$BUILTIN pushd
-$FUNCTION pushd_builtin
-$DEPENDS_ON PUSHD_AND_POPD
-$SHORT_DOC pushd [dir | +N | -N] [-n]
-Adds a directory to the top of the directory stack, or rotates
-the stack, making the new top of the stack the current working
-directory.  With no arguments, exchanges the top two directories.
-
-+N     Rotates the stack so that the Nth directory (counting
-       from the left of the list shown by `dirs', starting with
-       zero) is at the top.
-
--N     Rotates the stack so that the Nth directory (counting
-       from the right of the list shown by `dirs', starting with
-       zero) is at the top.
-
--n     suppress the normal change of directory when adding directories
-       to the stack, so only the stack is manipulated.
-
-dir    adds DIR to the directory stack at the top, making it the
-       new current working directory.
-
-You can see the directory stack with the `dirs' command.
-$END
-
-$BUILTIN popd
-$FUNCTION popd_builtin
-$DEPENDS_ON PUSHD_AND_POPD
-$SHORT_DOC popd [+N | -N] [-n]
-Removes entries from the directory stack.  With no arguments,
-removes the top directory from the stack, and cd's to the new
-top directory.
-
-+N     removes the Nth entry counting from the left of the list
-       shown by `dirs', starting with zero.  For example: `popd +0'
-       removes the first directory, `popd +1' the second.
-
--N     removes the Nth entry counting from the right of the list
-       shown by `dirs', starting with zero.  For example: `popd -0'
-       removes the last directory, `popd -1' the next to last.
-
--n     suppress the normal change of directory when removing directories
-       from the stack, so only the stack is manipulated.
-
-You can see the directory stack with the `dirs' command.
-$END
-
-$BUILTIN dirs
-$FUNCTION dirs_builtin
-$DEPENDS_ON PUSHD_AND_POPD
-$SHORT_DOC dirs [-clpv] [+N] [-N]
-Display the list of currently remembered directories.  Directories
-find their way onto the list with the `pushd' command; you can get
-back up through the list with the `popd' command.
-
-The -l flag specifies that `dirs' should not print shorthand versions
-of directories which are relative to your home directory.  This means
-that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag
-causes `dirs' to print the directory stack with one entry per line,
-prepending the directory name with its position in the stack.  The -p
-flag does the same thing, but the stack position is not prepended.
-The -c flag clears the directory stack by deleting all of the elements.
-
-+N     displays the Nth entry counting from the left of the list shown by
-       dirs when invoked without options, starting with zero.
-
--N     displays the Nth entry counting from the right of the list shown by
-       dirs when invoked without options, starting with zero.
-$END
-
-#include <config.h>
-
-#if defined (PUSHD_AND_POPD)
-#include <stdio.h>
-#include <sys/param.h>
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#endif
-
-#include "../bashansi.h"
-
-#include <errno.h>
-
-#include <tilde/tilde.h>
-
-#include "../shell.h"
-#include "../maxpath.h"
-#include "common.h"
-#include "builtext.h"
-
-#if !defined (errno)
-extern int errno;
-#endif /* !errno */
-
-static char *m_badarg = "%s: bad argument";
-
-/* The list of remembered directories. */
-static char **pushd_directory_list = (char **)NULL;
-
-/* Number of existing slots in this list. */
-static int directory_list_size;
-
-/* Offset to the end of the list. */
-static int directory_list_offset;
-
-static void pushd_error ();
-static void clear_directory_stack ();
-static int cd_to_string ();
-static int change_to_temp ();
-static int get_dirstack_index ();
-static void add_dirstack_element ();
-
-#define NOCD           0x01
-#define ROTATE         0x02
-#define LONGFORM       0x04
-#define CLEARSTAK      0x08
-
-int
-pushd_builtin (list)
-     WORD_LIST *list;
-{
-  char *temp, *current_directory, *top;
-  int j, flags;
-  long num;
-  char direction;
-
-  /* If there is no argument list then switch current and
-     top of list. */
-  if (list == 0)
-    {
-      if (directory_list_offset == 0)
-       {
-         builtin_error ("no other directory");
-         return (EXECUTION_FAILURE);
-       }
-
-      current_directory = get_working_directory ("pushd");
-      if (current_directory == 0)
-       return (EXECUTION_FAILURE);
-
-      j = directory_list_offset - 1;
-      temp = pushd_directory_list[j];
-      pushd_directory_list[j] = current_directory;
-      j = change_to_temp (temp);
-      free (temp);
-      return j;
-    }
-
-  for (flags = 0; list; list = list->next)
-    {
-      if (ISOPTION (list->word->word, 'n'))
-       {
-         flags |= NOCD;
-       }
-      else if (ISOPTION (list->word->word, '-'))
-        {
-          list = list->next;
-          break;
-        }
-      else if (list->word->word[0] == '-' && list->word->word[1] == '\0')
-       /* Let `pushd -' work like it used to. */
-       break;
-      else if (((direction = list->word->word[0]) == '+') || direction == '-')
-       {
-         if (legal_number (list->word->word + 1, &num) == 0)
-           {
-             builtin_error (m_badarg, list->word->word);
-             builtin_usage ();
-             return (EXECUTION_FAILURE);
-           }
-
-         if (direction == '-')
-           num = directory_list_offset - num;
-
-         if (num > directory_list_offset || num < 0)
-           {
-             pushd_error (directory_list_offset, list->word->word);
-             return (EXECUTION_FAILURE);
-           }
-         flags |= ROTATE;
-       }
-      else if (*list->word->word == '-')
-       {
-         bad_option (list->word->word);
-         builtin_usage ();
-         return (EXECUTION_FAILURE);
-       }
-      else
-       break;
-    }
-
-  if (flags & ROTATE)
-    {
-      /* Rotate the stack num times.  Remember, the current
-        directory acts like it is part of the stack. */
-      temp = get_working_directory ("pushd");
-
-      if (num == 0)
-       {
-         j = ((flags & NOCD) == 0) ? change_to_temp (temp) : EXECUTION_SUCCESS;
-         free (temp);
-         return j;
-       }
-
-      do
-       {
-         top = pushd_directory_list[directory_list_offset - 1];
-
-         for (j = directory_list_offset - 2; j > -1; j--)
-           pushd_directory_list[j + 1] = pushd_directory_list[j];
-
-         pushd_directory_list[j + 1] = temp;
-
-         temp = top;
-         num--;
-       }
-      while (num);
-
-      j = ((flags & NOCD) == 0) ? change_to_temp (temp) : EXECUTION_SUCCESS;
-      free (temp);
-      return j;
-    }
-
-  if (list == 0)
-    return (EXECUTION_SUCCESS);
-
-  /* Change to the directory in list->word->word.  Save the current
-     directory on the top of the stack. */
-  current_directory = get_working_directory ("pushd");
-  if (current_directory == 0)
-    return (EXECUTION_FAILURE);
-
-  j = ((flags & NOCD) == 0) ? cd_builtin (list) : EXECUTION_SUCCESS;
-  if (j == EXECUTION_SUCCESS)
-    {
-      add_dirstack_element ((flags & NOCD) ? savestring (list->word->word) : current_directory);
-      dirs_builtin ((WORD_LIST *)NULL);
-      if (flags & NOCD)
-       free (current_directory);
-      return (EXECUTION_SUCCESS);
-    }
-  else
-    {
-      free (current_directory);
-      return (EXECUTION_FAILURE);
-    }
-}
-
-/* Pop the directory stack, and then change to the new top of the stack.
-   If LIST is non-null it should consist of a word +N or -N, which says
-   what element to delete from the stack.  The default is the top one. */
-int
-popd_builtin (list)
-     WORD_LIST *list;
-{
-  register int i;
-  long which;
-  int flags;
-  char direction;
-  char *which_word;
-
-  which_word = (char *)NULL;
-  for (flags = 0, which = 0L, direction = '+'; list; list = list->next)
-    {
-      if (ISOPTION (list->word->word, 'n'))
-        {
-          flags |= NOCD;
-        }
-      else if (ISOPTION (list->word->word, '-'))
-        {
-          list = list->next;
-          break;
-        }
-      else if (((direction = list->word->word[0]) == '+') || direction == '-')
-       {
-         if (legal_number (list->word->word + 1, &which) == 0)
-           {
-             builtin_error (m_badarg, list->word->word);
-             builtin_usage ();
-             return (EXECUTION_FAILURE);
-           }
-         which_word = list->word->word;
-       }
-      else if (*list->word->word == '-')
-       {
-         bad_option (list->word->word);
-         builtin_usage ();
-         return (EXECUTION_FAILURE);
-       }
-      else
-       break;
-    }
-
-  if (which > directory_list_offset || (directory_list_offset == 0 && which == 0))
-    {
-      pushd_error (directory_list_offset, which_word ? which_word : "");
-      return (EXECUTION_FAILURE);
-    }
-
-  /* Handle case of no specification, or top of stack specification. */
-  if ((direction == '+' && which == 0) ||
-      (direction == '-' && which == directory_list_offset))
-    {
-      i = ((flags & NOCD) == 0) ? cd_to_string (pushd_directory_list[directory_list_offset - 1])
-                               : EXECUTION_SUCCESS;
-      if (i != EXECUTION_SUCCESS)
-       return (i);
-      free (pushd_directory_list[--directory_list_offset]);
-    }
-  else
-    {
-      /* Since an offset other than the top directory was specified,
-        remove that directory from the list and shift the remainder
-        of the list into place. */
-      i = (direction == '+') ? directory_list_offset - which : which;
-      free (pushd_directory_list[i]);
-      directory_list_offset--;
-
-      /* Shift the remainder of the list into place. */
-      for (; i < directory_list_offset; i++)
-       pushd_directory_list[i] = pushd_directory_list[i + 1];
-    }
-
-  dirs_builtin ((WORD_LIST *)NULL);
-  return (EXECUTION_SUCCESS);
-}
-
-/* Print the current list of directories on the directory stack. */
-int
-dirs_builtin (list)
-     WORD_LIST *list;
-{
-  int flags, desired_index, index_flag, vflag;
-  long i;
-  char *temp, *w;
-
-  for (flags = vflag = index_flag = 0, desired_index = -1, w = ""; list; list = list->next)
-    {
-      if (ISOPTION (list->word->word, 'l'))
-       {
-         flags |= LONGFORM;
-       }
-      else if (ISOPTION (list->word->word, 'c'))
-       {
-         flags |= CLEARSTAK;
-       }
-      else if (ISOPTION (list->word->word, 'v'))
-       {
-         vflag |= 2;
-       }
-      else if (ISOPTION (list->word->word, 'p'))
-       {
-         vflag |= 1;
-       }
-      else if (ISOPTION (list->word->word, '-'))
-        {
-          list = list->next;
-          break;
-        }
-      else if (*list->word->word == '+' || *list->word->word == '-')
-        {
-          int sign;
-          if (legal_number (w = list->word->word + 1, &i) == 0)
-           {
-             builtin_error (m_badarg, list->word->word);
-             builtin_usage ();
-             return (EXECUTION_FAILURE);
-           }
-         sign = (*list->word->word == '+') ? 1 : -1;
-         desired_index = get_dirstack_index (i, sign, &index_flag);
-       }
-      else
-       {
-         bad_option (list->word->word);
-         builtin_usage ();
-         return (EXECUTION_FAILURE);
-       }
-    }
-
-  if (flags & CLEARSTAK)
-    {
-      clear_directory_stack ();
-      return (EXECUTION_SUCCESS);
-    }
-
-  if (index_flag && (desired_index < 0 || desired_index > directory_list_offset))
-    {
-      pushd_error (directory_list_offset, w);
-      return (EXECUTION_FAILURE);
-    }
-
-#define DIRSTACK_FORMAT(temp) \
-  (flags & LONGFORM) ? temp : polite_directory_format (temp)
-
-  /* The first directory printed is always the current working directory. */
-  if (index_flag == 0 || (index_flag == 1 && desired_index == 0))
-    {
-      temp = get_working_directory ("dirs");
-      if (temp == 0)
-       temp = savestring ("<no current directory>");
-      if (vflag & 2)
-       printf ("%2d  %s", 0, DIRSTACK_FORMAT (temp));
-      else
-       printf ("%s", DIRSTACK_FORMAT (temp));
-      free (temp);
-      if (index_flag)
-       {
-         putchar ('\n');
-         return EXECUTION_SUCCESS;
-       }
-    }
-
-#define DIRSTACK_ENTRY(i) \
-  (flags & LONGFORM) ? pushd_directory_list[i] \
-                    : polite_directory_format (pushd_directory_list[i])
-
-  /* Now print the requested directory stack entries. */
-  if (index_flag)
-    {
-      if (vflag & 2)
-       printf ("%2d  %s", directory_list_offset - desired_index,
-                          DIRSTACK_ENTRY (desired_index));
-      else
-       printf ("%s", DIRSTACK_ENTRY (desired_index));
-    }
-  else
-    for (i = directory_list_offset - 1; i >= 0; i--)
-      if (vflag >= 2)
-       printf ("\n%2d  %s", directory_list_offset - (int)i, DIRSTACK_ENTRY (i));
-      else
-       printf ("%s%s", (vflag & 1) ? "\n" : " ", DIRSTACK_ENTRY (i));
-
-  putchar ('\n');
-  fflush (stdout);
-  return (EXECUTION_SUCCESS);
-}
-
-static void
-pushd_error (offset, arg)
-     int offset;
-     char *arg;
-{
-  if (offset == 0)
-    builtin_error ("directory stack empty");
-  else if (arg)
-    builtin_error ("%s: bad directory stack index", arg);
-  else
-    builtin_error ("bad directory stack index");
-}
-
-static void
-clear_directory_stack ()
-{
-  register int i;
-
-  for (i = 0; i < directory_list_offset; i++)
-    free (pushd_directory_list[i]);
-  directory_list_offset = 0;
-}
-
-/* Switch to the directory in NAME.  This uses the cd_builtin to do the work,
-   so if the result is EXECUTION_FAILURE then an error message has already
-   been printed. */
-static int
-cd_to_string (name)
-     char *name;
-{
-  WORD_LIST *tlist;
-  int result;
-
-  tlist = make_word_list (make_word (name), NULL);
-  result = cd_builtin (tlist);
-  dispose_words (tlist);
-  return (result);
-}
-
-static int
-change_to_temp (temp)
-     char *temp;
-{
-  int tt;
-
-  tt = temp ? cd_to_string (temp) : EXECUTION_FAILURE;
-
-  if (tt == EXECUTION_SUCCESS)
-    dirs_builtin ((WORD_LIST *)NULL);
-
-  return (tt);
-}
-
-static void
-add_dirstack_element (dir)
-     char *dir;
-{
-  int j;
-
-  if (directory_list_offset == directory_list_size)
-    {
-      j = (directory_list_size += 10) * sizeof (char *);
-      pushd_directory_list = (char **)xrealloc (pushd_directory_list, j);
-    }
-  pushd_directory_list[directory_list_offset++] = dir;
-}
-
-static int
-get_dirstack_index (ind, sign, indexp)
-     int ind, sign, *indexp;
-{
-  if (indexp)
-    *indexp = sign > 0 ? 1 : 2;
-
-  /* dirs +0 prints the current working directory. */
-  /* dirs -0 prints last element in directory stack */
-  if (ind == 0 && sign > 0)
-    return 0;
-  else if (ind == directory_list_offset)
-    {
-      if (indexp)
-       *indexp = sign > 0 ? 2 : 1;
-      return 0;
-    }
-  else
-    return (sign > 0 ? directory_list_offset - ind : ind);
-}
-
-char *
-get_dirstack_element (ind, sign)
-     int ind, sign;
-{
-  int i;
-
-  i = get_dirstack_index (ind, sign, (int *)NULL);
-  return (i < 0 || i > directory_list_offset) ? (char *)NULL
-                                             : pushd_directory_list[i];
-}
-
-void
-set_dirstack_element (ind, sign, value)
-     int ind, sign;
-     char *value;
-{
-  int i;
-
-  i = get_dirstack_index (ind, sign, (int *)NULL);
-  if (ind == 0 || i < 0 || i > directory_list_offset)
-    return;
-  free (pushd_directory_list[i]);
-  pushd_directory_list[i] = savestring (value);
-}
-
-WORD_LIST *
-get_directory_stack ()
-{
-  register int i;
-  WORD_LIST *ret;
-  char *d, *t;
-
-  for (ret = (WORD_LIST *)NULL, i = 0; i < directory_list_offset; i++)
-    {
-      d = polite_directory_format (pushd_directory_list[i]);
-      ret = make_word_list (make_word (d), ret);
-    }
-  /* Now the current directory. */
-  d = get_working_directory ("dirstack");
-  i = 0;       /* sentinel to decide whether or not to free d */
-  if (d == 0)
-    d = ".";
-  else
-    {
-      t = polite_directory_format (d);
-      /* polite_directory_format sometimes returns its argument unchanged.
-        If it does not, we can free d right away.  If it does, we need to
-        mark d to be deleted later. */
-      if (t != d)
-       {
-         free (d);
-         d = t;
-       }
-      else /* t == d, so d is what we want */
-       i = 1;
-    }
-  ret = make_word_list (make_word (d), ret);
-  if (i)
-    free (d);
-  return ret;  /* was (REVERSE_LIST (ret, (WORD_LIST *)); */
-}
-#endif /* PUSHD_AND_POPD */
diff --git a/examples/loadables/pushd.inc b/examples/loadables/pushd.inc
deleted file mode 100644 (file)
index 768dae1..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-static char *dirs_doc[] = {
-  "Display the list of currently remembered directories.  Directories",
-  "find their way onto the list with the `pushd' command; you can get",
-  "back up through the list with the `popd' command.",
-  "",
-  "The -l flag specifies that `dirs' should not print shorthand versions",
-  "of directories which are relative to your home directory.  This means",
-  "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag",
-  "causes `dirs' to print the directory stack with one entry per line,",
-  "prepending the directory name with its position in the stack.  The -p",
-  "flag does the same thing, but the stack position is not prepended.",
-  "The -c flag clears the directory stack by deleting all of the elements.",
-  "",
-  "+N   displays the Nth entry counting from the left of the list shown by",
-  "     dirs when invoked without options, starting with zero.",
-  "",
-  "-N   displays the Nth entry counting from the right of the list shown by",
-  "     dirs when invoked without options, starting with zero.",
-  (char *)NULL
-};
-
-static char *pushd_doc[] = {
-  "Adds a directory to the top of the directory stack, or rotates",
-  "the stack, making the new top of the stack the current working",
-  "directory.  With no arguments, exchanges the top two directories.",
-  "",
-  "+N   Rotates the stack so that the Nth directory (counting",
-  "     from the left of the list shown by `dirs', starting with"
-  "     zero) is at the top.",
-  "",
-  "-N   Rotates the stack so that the Nth directory (counting",
-  "     from the right of the list shown by `dirs', starting with"
-  "     zero) is at the top.",
-  "",
-  "-n   suppress the normal change of directory when adding directories",
-  "     to the stack, so only the stack is manipulated.",
-  "",
-  "dir  adds DIR to the directory stack at the top, making it the",
-  "     new current working directory.",
-  "",
-  "You can see the directory stack with the `dirs' command.",
-  (char *)NULL
-};
-
-static char *popd_doc[] = {
-  "Removes entries from the directory stack.  With no arguments,",
-  "removes the top directory from the stack, and cd's to the new",
-  "top directory.",
-  "",
-  "+N   removes the Nth entry counting from the left of the list",
-  "     shown by `dirs', starting with zero.  For example: `popd +0'",
-  "     removes the first directory, `popd +1' the second.",   
-  "",
-  "-N   removes the Nth entry counting from the right of the list",
-  "     shown by `dirs', starting with zero.  For example: `popd -0'",
-  "     removes the last directory, `popd -1' the next to last.",
-  "",
-  "-n   suppress the normal change of directory when removing directories",
-  "     from the stack, so only the stack is manipulated.",
-  "",
-  "You can see the directory stack with the `dirs' command.",
-  (char *)NULL
-};
-
-struct builtin pushd_struct = {
-       "pushd",
-       pushd_builtin,
-       BUILTIN_ENABLED,
-       pushd_doc,
-       "pushd [+N | -N] [-n] [dir]",
-       0
-};
-
-struct builtin popd_struct = {
-       "popd",
-       popd_builtin,
-       BUILTIN_ENABLED,
-       popd_doc,
-       "popd [+N | -N] [-n]",
-       0
-};
-
-struct builtin dirs_struct = {
-       "dirs",
-       dirs_builtin,
-       BUILTIN_ENABLED,
-       dirs_doc,
-       "dirs [-clpv] [+N] [-N]",
-       0
-};
diff --git a/examples/obashdb/bashdb.vaughan b/examples/obashdb/bashdb.vaughan
deleted file mode 100644 (file)
index 6a24973..0000000
+++ /dev/null
@@ -1,561 +0,0 @@
-#! /bin/bash
-# bashdb - Bash shell debugger
-#
-# Adapted from an idea in O'Reilly's `Learning the Korn Shell'
-# Copyright (C) 1993-1994 O'Reilly and Associates, Inc.
-# Copyright (C) 1998, 1999, 2001 Gary V. Vaughan <gvv@techie.com>>
-#
-# 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.
-#
-# 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.
-
-# NOTE:
-#
-# This program requires bash 2.x.
-# If bash 2.x is installed as "bash2", you can invoke  bashdb like this:
-#
-#   DEBUG_SHELL=/bin/bash2 /bin/bash2 bashdb script.sh
-
-# TODO:
-#
-# break [regexp]
-# cond [break] [condition]
-# tbreak [regexp|+lines]
-# restart
-# Variable watchpoints
-# Output colourization
-# History with csh ^ substitution? Or write a readline frontend?
-# Instrument shell functions with the _steptrap in $_potbelliedpig
-# Instrument `source' and `.' files in $_potbelliedpig
-# be cleverer about lines we allow breakpoints to be set on
-# break [function_name]
-
-
-echo 'Bash Debugger version 1.2.4'
-
-export _dbname=$(echo "X$0"|sed -e 's,^X,,' -e 's,^.*/,,')
-
-if test $# -lt 1; then
-  echo "$_dbname: Usage: $_dbname <filename>" >&2
-  exit 1
-fi
-
-_guineapig=$1
-
-if test ! -r $1; then
-  echo "$_dbname: Cannot read file '$_guineapig'." >&2
-  exit 1
-fi
-
-shift
-
-__debug=${TMPDIR-/tmp}/bashdb.$$
-sed -e '/^# bashdb - Bash shell debugger/,/^# -- DO NOT DELETE THIS LINE -- /d' "$0" > $__debug
-cat $_guineapig >> $__debug
-exec ${DEBUG_SHELL-bash} $__debug $_guineapig "$@"
-
-exit 1
-
-# -- DO NOT DELETE THIS LINE -- The program depends on it
-
-#bashdb preamble
-# $1 name of the original guinea pig script
-
-__debug=$0
-_guineapig=$1
-
-shift
-
-function _steptrap
-{
-  local i=0
-  
-  _curline=$1
-
-  if [ -n "$_disps" ]
-  then
-    while (( $i < ${#_disps[@]} ))
-    do
-      if [ -n "${_disps[$i]}" ]
-      then
-        _msg "${_disps[$i]}: \c"
-        eval _msg ${_disps[$i]}
-      fi
-      let i=$i+1
-    done
-  fi
-
-  if (( $_trace )); then
-    _showline $_curline
-  fi
-  
-  if (( $_steps >= 0 )); then
-    let _steps="$_steps - 1"
-  fi
-
-  if _at_linenumbp ; then
-    _msg "Reached breakpoint at line $_curline"
-    _showline $_curline
-    _cmdloop
-  elif [ -n "$_brcond" ] && eval $_brcond; then
-    _msg "Break condition $_brcond true at line $_curline"
-    _showline $_curline
-    _cmdloop
-  elif (( $_steps == 0 && $_curline > 1)); then
-    # Assuming a real script will have the "#! /bin/sh" at line 1,
-    # assume that when $_curline == 1 we are inside backticks.
-    if (( ! $_trace )); then
-      _msg "Stopped at line $_curline"
-      _showline $_curline
-    fi
-    _cmdloop
-  fi
-}
-
-function _setbp
-{
-  local i f line
-
-  if [ -z "$1" ]
-  then
-    _listbp
-  elif [ $(echo $1 | grep '^\+*[1-9][0-9]*') ]
-  then
-    case $1 in
-    +*)
-      let f="$1 + `expr $1 : '+*\([1-9][0-9]*\)'`"
-      ;;
-    *)
-      let f=$1
-      ;;
-    esac
-
-    # find the next valid line
-    line="${_lines[$f]}"
-    while _invalidbreakp $f
-    do
-      let f="$f + 1"
-      line="${_lines[$f]}"
-    done
-
-    if (( $f != $1 ))
-    then
-      _msg "Line $1 is not a valid breakpoint"
-    fi
-
-    if [ -n "${_lines[$f]}" ]
-    then
-      _linebp=($(echo $( (for i in ${_linebp[*]} $1; do
-      echo $i; done) | sort -n) ))
-      _msg "Breakpoint set at line $f"
-    else
-      _msg "Breakpoints can only be set on executable lines"
-    fi
-  else
-    _msg "Please specify a numeric line number"
-  fi
-}
-
-function _listbp
-{
-  local i
-  
-  if [ -n "$_linebp" ]
-  then
-    _msg "Breakpoints:"
-    for i in ${_linebp[*]}; do
-      _showline $i
-    done
-  else
-    _msg "No breakpoints have been set"
-  fi
-}
-
-function _clearbp
-{
-  local i
-  if [ -z "$1" ]; then
-    read -e -p "Delete all breakpoints? "
-    case $REPLY in
-    y*)
-      unset _linebp[*]
-      _msg "All breakpoints have been cleared"
-      ;;
-    esac
-  elif [ $(echo $1 | grep '^[0-9]*') ]; then
-    _linebp=($(echo $(for i in ${_linebp[*]}; do
-              if (( $1 != $i )); then echo $1;  fi; done) ))
-    _msg "Breakpoint cleared at line $1"
-  else
-    _msg "Please specify a numeric line number"
-  fi
-}
-
-function _setbc
-{
-  if [ -n "$*" ]
-  then
-    _brcond=$args
-    _msg "Break when true: $_brcond"
-  else
-    _brcond=
-    _msg "Break condition cleared"
-  fi
-}
-
-function _setdisp
-{
-  if [ -z "$1" ]
-  then
-    _listdisp
-  else
-    _disps[${#_disps[@]}]="$1"
-    if (( ${#_disps[@]} < 10 ))
-    then
-      _msg " ${#_disps[@]}: $1"
-    else
-      _msg "${#_disps[@]}: $1"
-    fi
-  fi
-}
-
-function _listdisp
-{
-  local i=0 j
-  
-  if [ -n "$_disps" ]
-  then
-    while (( $i < ${#_disps[@]} ))
-    do
-      let j=$i+1
-    if (( ${#_disps[@]} < 10 ))
-    then
-      _msg " $j: ${_disps[$i]}"
-    else
-      _msg "$j: ${_disps[$i]}"
-    fi
-      let i=$j
-    done
-  else
-    _msg "No displays have been set"
-  fi
-}
-
-function _cleardisp
-{
-  if (( $# < 1 ))
-  then
-    read -e -p "Delete all display expressions? "
-    case $REPLY in
-    y*)
-      unset _disps[*]
-      _msg "All breakpoints have been cleared"
-      ;;
-    esac
-  elif [ $(echo $1 | grep '^[0-9]*') ]
-  then
-    unset _disps[$1]
-    _msg "Display $i has been cleared"
-  else
-    _listdisp
-    _msg "Please specify a numeric display number"
-  fi
-}   
-
-function _cmdloop
-{
-  local cmd args
-
-  while read -e -p "bashdb> " cmd args; do
-    test -n "$cmd" || { set $_lastcmd; cmd=$1; shift; args=$*; }
-    if [ -n "$cmd" ]
-    then
-      case $cmd in
-       b|br|bre|brea|break)
-         _setbp $args
-         _lastcmd="break $args"
-         ;;
-       co|con)
-         _msg "ambiguous command: '$cmd', condition, continue?"
-         ;;
-       cond|condi|condit|conditi|conditio|condition)
-         _setbc $args
-         _lastcmd="condition $args"
-         ;;
-       c|cont|conti|contin|continu|continue)
-         _lastcmd="continue"
-         return
-         ;;
-       d)
-         _msg "ambiguous command: '$cmd', delete, display?"
-         ;;
-       de|del|dele|delet|delete)
-         _clearbp $args
-         _lastcmd="delete $args"
-         ;;
-       di|dis|disp|displ|displa|display)
-         _setdisp $args
-         _lastcmd="display $args"
-         ;;
-       \?|h|he|hel|help)
-         _menu
-         _lastcmd="help"
-         ;;
-       l|li|lis|list)
-         _displayscript $args
-         # _lastcmd is set in the _displayscript function
-         ;;
-       p|pr|pri|prin|print)
-         _examine $args
-         _lastcmd="print $args"
-         ;;
-       q|qu|qui|quit)
-         exit
-         ;;
-       s|st|ste|step|n|ne|nex|next)
-         let _steps=${args:-1}
-         _lastcmd="next $args"
-         return
-         ;;
-       t|tr|tra|trac|trace)
-         _xtrace
-         ;;
-       u|un|und|undi|undis|undisp|undispl|undispla|undisplay)
-         _cleardisp $args
-         _lastcmd="undisplay $args"
-         ;;
-       !*)
-         eval ${cmd#!} $args
-         _lastcmd="$cmd $args"
-         ;;
-       *)
-         _msg "Invalid command: '$cmd'"
-         ;;
-      esac
-    fi
-  done
-}
-
-function _at_linenumbp
-{
-  local i=0
-
-  if [ "$_linebp" ]
-  then
-    while (( $i < ${#_linebp[@]} )); do
-      if (( ${_linebp[$i]} == $_curline )); then
-       return 0
-      fi
-      let i=$i+1
-    done
-  fi
-
-  return 1
-}
-
-function _invalidbreakp
-{
-  local line=${_lines[$1]}
-
-  if test -z "$line" \
-      || expr "$line" : '[ \t]*#.*' > /dev/null \
-      || expr "$line" : '[ \t]*;;[ \t]*$' > /dev/null \
-      || expr "$line" : '[ \t]*[^)]*)[ \t]*$' > /dev/null \
-      || expr "$line" : '[ \t]*;;[ \t]*#.**$' > /dev/null \
-      || expr "$line" : '[ \t]*[^)]*)[ \t]*;;[ \t]*$' > /dev/null \
-      || expr "$line" : '[ \t]*[^)]*)[ \t]*;;*[ \t]*#.*$' > /dev/null
-  then
-    return 0
-  fi
-
-  return 1
-}
-
-function _examine
-{
-  if [ -n "$*" ]
-  then
-    _msg "$args: \c"
-    eval _msg $args
-  else
-    _msg "Nothing to print"
-  fi
-}
-
-function _displayscript
-{
-  local i j start end bp cl
-
-  if (( $# == 1 ))
-  then
-    if test $1 = "%"
-    then
-      let start=1
-      let end=${#_lines[@]}
-    else
-      let start=$1-5
-      let end=$1+5
-    fi
-  elif (( $# > 1 ))
-  then
-    if test $1 = "^"
-    then
-      let start=1
-    else
-      let start=$1
-    fi
-
-    if test $2 = "\$"
-    then
-      let end=${#_lines[@]}
-    else
-      let end=$2
-    fi
-  else
-    let start=$_curline-5
-    let end=$_curline+5
-  fi
-
-  if (( $start < 1 ))
-  then
-    start=1
-  fi
-  if (( $end > ${#_lines[@]} ))
-  then
-    end=${#_lines[@]}
-  fi
-
-  let cl=$end-$start
-  if (( $cl > ${LINES-24} ))
-  then
-    pager=${PAGER-more}
-  else
-    pager=cat
-  fi
-  
-  i=$start
-  ( while (( $i <= $end )); do
-      _showline $i
-      let i=$i+1
-    done ) 2>&1 | $pager
-
-  # calculate the next block of lines
-  let start=$end+1
-  let end=$start+11
-  if (( $end > ${#_lines[@]} ))
-  then
-    end=${#_lines[@]}
-  fi
-
-  _lastcmd="list $start $end"
-}
-
-function _xtrace
-{
-  let _trace="! $_trace"
-  if (( $_trace )); then
-    _msg "Execution trace on"
-  else
-    _msg "Execution trace off"
-  fi
-}
-       
-function _msg
-{
-  echo -e "$@" >&2
-}
-
-function _showline
-{
-  local i=0 bp=' ' line=$1
-   
-  while (( $i < ${#_linebp[@]} ))
-  do
-    if [ ${_linebp[$i]} ] && (( ${_linebp[$i]} == $line ))
-    then
-      bp='*'
-    fi
-    let i=$i+1
-  done
-
-  if  (( $_curline == $line )); then
-    cl=">"
-  else
-    cl=" "
-  fi
-
-  if (( $line < 100 )); then
-    _msg "$_guineapig:$line   $bp $cl${_lines[$line]}"
-  elif (( $line < 10 )); then
-    _msg "$_guineapig:$line  $bp $cl${_lines[$line]}"
-  elif (( $line > 0 )); then
-    _msg "$_guineapig:$line $bp $cl${_lines[$line]}"
-  fi
-}
-
-function _cleanup
-{
-  rm -f $__debug $_potbelliedpig 2> /dev/null
-}
-
-function _menu
-{
-  _msg 'bashdb commands:
-       break N         set breakpoint at line N
-       break           list breakpoints & break condition
-       condition foo   set break condition to foo
-       condition       clear break condition
-       delete N        clear breakpoint at line N
-       delete          clear all breakpoints
-       display EXP     evaluate and display EXP for each debug step
-       display         show a list of display expressions
-       undisplay N     remove display expression N
-       list N M        display all lines of script between N and M
-       list N          display 5 lines of script either side of line N
-       list            display 5 lines if script either side of current line
-       continue        continue execution upto next breakpoint
-       next [N]        execute [N] statements (default 1)
-       print expr      prints the value of an expression
-       trace           toggle execution trace on/off
-       help            print this menu
-       ! string        passes string to a shell
-       quit            quit'
-}
-
-
-_linebp=
-let _trace=0
-let _i=1
-
-# Be careful about quoted newlines
-_potbelliedpig=${TMPDIR-/tmp}/$_guineapig.$$
-sed 's,\\$,\\\\,' $_guineapig > $_potbelliedpig
-
-_msg "Reading source from file: $_guineapig"
-while read; do
-  _lines[$_i]=$REPLY
-  let _i=$_i+1
-done < $_potbelliedpig
-
-trap _cleanup EXIT
-# Assuming a real script will have the "#! /bin/sh" at line 1,
-# don't stop at line 1 on the first run
-let _steps=2
-LINENO=-2
-trap '_steptrap $LINENO' DEBUG
-:
diff --git a/lib/doc-support/Makefile.in b/lib/doc-support/Makefile.in
deleted file mode 100644 (file)
index a420501..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# simple makefile to create texindex
-#
-# Copyright (C) 1996-2005 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/>.
-
-topdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-BUILD_DIR = @BUILD_DIR@
-
-CC = @CC@
-RM = rm
-
-SHELL = @MAKE_SHELL@
-
-DEFS = @DEFS@
-CFLAGS = @CFLAGS@ @LOCAL_CFLAGS@
-LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@
-CPPFLAGS = @CPPFLAGS@
-
-INCLUDES = -I. -I../.. -I$(topdir)
-
-CCFLAGS = $(CFLAGS) $(DEFS) $(CPPFLAGS) ${INCLUDES}
-
-.c.o:
-       $(RM) -f $@
-       $(CC) $(CCFLAGS) -c $<
-
-OBJECTS = texindex.o getopt.o getopt1.o
-SOURCES = texindex.c getopt.c getopt1.c
-
-all: texindex
-
-texindex: $(OBJECTS)
-       $(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS)
-
-clean:
-       $(RM) $(OBJECTS) texindex
-
-distclean mostlyclean realclean maintainer-clean: clean
-       $(RM) Makefile
diff --git a/lib/doc-support/getopt.c b/lib/doc-support/getopt.c
deleted file mode 100644 (file)
index 802f0e3..0000000
+++ /dev/null
@@ -1,731 +0,0 @@
-/* getopt.c - Getopt for GNU. */
-
-/* NOTE: getopt is now part of the C library, so if you don't know what
-   "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
-   before changing it! */
-
-/* Copyright (C) 1987, 88, 89, 90, 91, 92, 1993, 2008,2009 Free Software Foundation, Inc.
-
-   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/>.
-*/
-
-/* NOTE!!!  AIX requires this to be the first thing in the file.
-   Do not put ANYTHING before it!  */
-#if !defined (__GNUC__) && defined (_AIX)
- #pragma alloca
-#endif
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else /* not __GNUC__ */
-#if defined (HAVE_ALLOCA_H) || (defined(sparc) && (defined(sun) || (!defined(USG) && !defined(SVR4) && !defined(__svr4__))))
-#include <alloca.h>
-#else
-#ifndef _AIX
-char *alloca ();
-#endif
-#endif /* alloca.h */
-#endif /* not __GNUC__ */
-
-#if !__STDC__ && !defined(const) && IN_GCC
-#define const
-#endif
-
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.  */
-#ifndef _NO_PROTO
-#define _NO_PROTO
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
-   actually compiling the library itself.  This code is part of the GNU C
-   Library, but also included in many other GNU distributions.  Compiling
-   and linking in this code is a waste when using the GNU C library
-   (especially if it is a shared library).  Rather than having every GNU
-   program understand `configure --with-gnu-libc' and omit the object files,
-   it is simpler to just do this in the source for each such file.  */
-
-#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
-
-
-/* This needs to come after some library #include
-   to get __GNU_LIBRARY__ defined.  */
-#ifdef __GNU_LIBRARY__
-#undef alloca
-/* Don't include stdlib.h for non-GNU C libraries because some of them
-   contain conflicting prototypes for getopt.  */
-#include <stdlib.h>
-#else  /* Not GNU C library.  */
-#define        __alloca        alloca
-#endif /* GNU C library.  */
-
-/* If GETOPT_COMPAT is defined, `+' as well as `--' can introduce a
-   long-named option.  Because this is not POSIX.2 compliant, it is
-   being phased out.  */
-/* #define GETOPT_COMPAT */
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
-   but it behaves differently for the user, since it allows the user
-   to intersperse the options with the other arguments.
-
-   As `getopt' works, it permutes the elements of ARGV so that,
-   when it is done, all the options precede everything else.  Thus
-   all application programs are extended to handle flexible argument order.
-
-   Setting the environment variable POSIXLY_CORRECT disables permutation.
-   Then the behavior is completely standard.
-
-   GNU application programs can use a third alternative mode in which
-   they can distinguish the relative order of options and other arguments.  */
-
-#include "getopt.h"
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-char *optarg = 0;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns EOF, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-/* XXX 1003.2 says this must be 1 before any call.  */
-int optind = 0;
-
-/* The next char to be scanned in the option-element
-   in which the last option character we returned was found.
-   This allows us to pick up the scan where we left off.
-
-   If this is zero, or a null string, it means resume the scan
-   by advancing to the next ARGV-element.  */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
-   for unrecognized options.  */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
-   This must be initialized on some systems to avoid linking in the
-   system's own getopt implementation.  */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
-   If the caller did not specify anything,
-   the default is REQUIRE_ORDER if the environment variable
-   POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
-   REQUIRE_ORDER means don't recognize them as options;
-   stop option processing when the first non-option is seen.
-   This is what Unix does.
-   This mode of operation is selected by either setting the environment
-   variable POSIXLY_CORRECT, or using `+' as the first character
-   of the list of option characters.
-
-   PERMUTE is the default.  We permute the contents of ARGV as we scan,
-   so that eventually all the non-options are at the end.  This allows options
-   to be given in any order, even with programs that were not written to
-   expect this.
-
-   RETURN_IN_ORDER is an option available to programs that were written
-   to expect options and other ARGV-elements in any order and that care about
-   the ordering of the two.  We describe each non-option ARGV-element
-   as if it were the argument of an option with character code 1.
-   Using `-' as the first character of the list of option characters
-   selects this mode of operation.
-
-   The special argument `--' forces an end of option-scanning regardless
-   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
-   `--' can cause `getopt' to return EOF with `optind' != ARGC.  */
-
-static enum
-{
-  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-\f
-#ifdef __GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
-   because there are many ways it can cause trouble.
-   On some systems, it contains special magic macros that don't work
-   in GCC.  */
-#include <string.h>
-#define        my_index        strchr
-#define        my_bcopy(src, dst, n)   memcpy ((dst), (src), (n))
-#else
-
-/* Avoid depending on library functions or files
-   whose names are inconsistent.  */
-
-char *getenv ();
-
-static char *
-my_index (str, chr)
-     const char *str;
-     int chr;
-{
-  while (*str)
-    {
-      if (*str == chr)
-       return (char *) str;
-      str++;
-    }
-  return 0;
-}
-
-static void
-my_bcopy (from, to, size)
-     const char *from;
-     char *to;
-     int size;
-{
-  int i;
-  for (i = 0; i < size; i++)
-    to[i] = from[i];
-}
-#endif                         /* GNU C library.  */
-\f
-/* Handle permutation of arguments.  */
-
-/* Describe the part of ARGV that contains non-options that have
-   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
-   `last_nonopt' is the index after the last of them.  */
-
-static int first_nonopt;
-static int last_nonopt;
-
-/* Exchange two adjacent subsequences of ARGV.
-   One subsequence is elements [first_nonopt,last_nonopt)
-   which contains all the non-options that have been skipped so far.
-   The other is elements [last_nonopt,optind), which contains all
-   the options processed since those non-options were skipped.
-
-   `first_nonopt' and `last_nonopt' are relocated so that they describe
-   the new indices of the non-options in ARGV after they are moved.  */
-
-static void
-exchange (argv)
-     char **argv;
-{
-  int nonopts_size = (last_nonopt - first_nonopt) * sizeof (char *);
-  char **temp = (char **) __alloca (nonopts_size);
-
-  /* Interchange the two blocks of data in ARGV.  */
-
-  my_bcopy ((char *) &argv[first_nonopt], (char *) temp, nonopts_size);
-  my_bcopy ((char *) &argv[last_nonopt], (char *) &argv[first_nonopt],
-           (optind - last_nonopt) * sizeof (char *));
-  my_bcopy ((char *) temp,
-           (char *) &argv[first_nonopt + optind - last_nonopt],
-           nonopts_size);
-
-  /* Update records for the slots the non-options now occupy.  */
-
-  first_nonopt += (optind - last_nonopt);
-  last_nonopt = optind;
-}
-\f
-/* Scan elements of ARGV (whose length is ARGC) for option characters
-   given in OPTSTRING.
-
-   If an element of ARGV starts with '-', and is not exactly "-" or "--",
-   then it is an option element.  The characters of this element
-   (aside from the initial '-') are option characters.  If `getopt'
-   is called repeatedly, it returns successively each of the option characters
-   from each of the option elements.
-
-   If `getopt' finds another option character, it returns that character,
-   updating `optind' and `nextchar' so that the next call to `getopt' can
-   resume the scan with the following option character or ARGV-element.
-
-   If there are no more option characters, `getopt' returns `EOF'.
-   Then `optind' is the index in ARGV of the first ARGV-element
-   that is not an option.  (The ARGV-elements have been permuted
-   so that those that are not options now come last.)
-
-   OPTSTRING is a string containing the legitimate option characters.
-   If an option character is seen that is not listed in OPTSTRING,
-   return '?' after printing an error message.  If you set `opterr' to
-   zero, the error message is suppressed but we still return '?'.
-
-   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
-   so the following text in the same ARGV-element, or the text of the following
-   ARGV-element, is returned in `optarg'.  Two colons mean an option that
-   wants an optional arg; if there is text in the current ARGV-element,
-   it is returned in `optarg', otherwise `optarg' is set to zero.
-
-   If OPTSTRING starts with `-' or `+', it requests different methods of
-   handling the non-option ARGV-elements.
-   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
-   Long-named options begin with `--' instead of `-'.
-   Their names may be abbreviated as long as the abbreviation is unique
-   or is an exact match for some defined option.  If they have an
-   argument, it follows the option name in the same ARGV-element, separated
-   from the option name by a `=', or else the in next ARGV-element.
-   When `getopt' finds a long-named option, it returns 0 if that option's
-   `flag' field is nonzero, the value of the option's `val' field
-   if the `flag' field is zero.
-
-   The elements of ARGV aren't really const, because we permute them.
-   But we pretend they're const in the prototype to be compatible
-   with other systems.
-
-   LONGOPTS is a vector of `struct option' terminated by an
-   element containing a name which is zero.
-
-   LONGIND returns the index in LONGOPT of the long-named option found.
-   It is only valid when a long-named option has been found by the most
-   recent call.
-
-   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
-   long-named options.  */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-     const struct option *longopts;
-     int *longind;
-     int long_only;
-{
-  int option_index;
-
-  optarg = 0;
-
-  /* Initialize the internal data when the first call is made.
-     Start processing options with ARGV-element 1 (since ARGV-element 0
-     is the program name); the sequence of previously skipped
-     non-option ARGV-elements is empty.  */
-
-  if (optind == 0)
-    {
-      first_nonopt = last_nonopt = optind = 1;
-
-      nextchar = NULL;
-
-      /* Determine how to handle the ordering of options and nonoptions.  */
-
-      if (optstring[0] == '-')
-       {
-         ordering = RETURN_IN_ORDER;
-         ++optstring;
-       }
-      else if (optstring[0] == '+')
-       {
-         ordering = REQUIRE_ORDER;
-         ++optstring;
-       }
-      else if (getenv ("POSIXLY_CORRECT") != NULL)
-       ordering = REQUIRE_ORDER;
-      else
-       ordering = PERMUTE;
-    }
-
-  if (nextchar == NULL || *nextchar == '\0')
-    {
-      if (ordering == PERMUTE)
-       {
-         /* If we have just processed some options following some non-options,
-            exchange them so that the options come first.  */
-
-         if (first_nonopt != last_nonopt && last_nonopt != optind)
-           exchange ((char **) argv);
-         else if (last_nonopt != optind)
-           first_nonopt = optind;
-
-         /* Now skip any additional non-options
-            and extend the range of non-options previously skipped.  */
-
-         while (optind < argc
-                && (argv[optind][0] != '-' || argv[optind][1] == '\0')
-#ifdef GETOPT_COMPAT
-                && (longopts == NULL
-                    || argv[optind][0] != '+' || argv[optind][1] == '\0')
-#endif                         /* GETOPT_COMPAT */
-                )
-           optind++;
-         last_nonopt = optind;
-       }
-
-      /* Special ARGV-element `--' means premature end of options.
-        Skip it like a null option,
-        then exchange with previous non-options as if it were an option,
-        then skip everything else like a non-option.  */
-
-      if (optind != argc && !strcmp (argv[optind], "--"))
-       {
-         optind++;
-
-         if (first_nonopt != last_nonopt && last_nonopt != optind)
-           exchange ((char **) argv);
-         else if (first_nonopt == last_nonopt)
-           first_nonopt = optind;
-         last_nonopt = argc;
-
-         optind = argc;
-       }
-
-      /* If we have done all the ARGV-elements, stop the scan
-        and back over any non-options that we skipped and permuted.  */
-
-      if (optind == argc)
-       {
-         /* Set the next-arg-index to point at the non-options
-            that we previously skipped, so the caller will digest them.  */
-         if (first_nonopt != last_nonopt)
-           optind = first_nonopt;
-         return EOF;
-       }
-
-      /* If we have come to a non-option and did not permute it,
-        either stop the scan or describe it to the caller and pass it by.  */
-
-      if ((argv[optind][0] != '-' || argv[optind][1] == '\0')
-#ifdef GETOPT_COMPAT
-         && (longopts == NULL
-             || argv[optind][0] != '+' || argv[optind][1] == '\0')
-#endif                         /* GETOPT_COMPAT */
-         )
-       {
-         if (ordering == REQUIRE_ORDER)
-           return EOF;
-         optarg = argv[optind++];
-         return 1;
-       }
-
-      /* We have found another option-ARGV-element.
-        Start decoding its characters.  */
-
-      nextchar = (argv[optind] + 1
-                 + (longopts != NULL && argv[optind][1] == '-'));
-    }
-
-  if (longopts != NULL
-      && ((argv[optind][0] == '-'
-          && (argv[optind][1] == '-' || long_only))
-#ifdef GETOPT_COMPAT
-         || argv[optind][0] == '+'
-#endif                         /* GETOPT_COMPAT */
-         ))
-    {
-      const struct option *p;
-      char *s = nextchar;
-      int exact = 0;
-      int ambig = 0;
-      const struct option *pfound = NULL;
-      int indfound;
-
-      while (*s && *s != '=')
-       s++;
-
-      /* Test all options for either exact match or abbreviated matches.  */
-      for (p = longopts, option_index = 0; p->name;
-          p++, option_index++)
-       if (!strncmp (p->name, nextchar, s - nextchar))
-         {
-           if (s - nextchar == strlen (p->name))
-             {
-               /* Exact match found.  */
-               pfound = p;
-               indfound = option_index;
-               exact = 1;
-               break;
-             }
-           else if (pfound == NULL)
-             {
-               /* First nonexact match found.  */
-               pfound = p;
-               indfound = option_index;
-             }
-           else
-             /* Second nonexact match found.  */
-             ambig = 1;
-         }
-
-      if (ambig && !exact)
-       {
-         if (opterr)
-           fprintf (stderr, "%s: option `%s' is ambiguous\n",
-                    argv[0], argv[optind]);
-         nextchar += strlen (nextchar);
-         optind++;
-         return '?';
-       }
-
-      if (pfound != NULL)
-       {
-         option_index = indfound;
-         optind++;
-         if (*s)
-           {
-             /* Don't test has_arg with >, because some C compilers don't
-                allow it to be used on enums.  */
-             if (pfound->has_arg)
-               optarg = s + 1;
-             else
-               {
-                 if (opterr)
-                   {
-                     if (argv[optind - 1][1] == '-')
-                       /* --option */
-                       fprintf (stderr,
-                                "%s: option `--%s' doesn't allow an argument\n",
-                                argv[0], pfound->name);
-                     else
-                       /* +option or -option */
-                       fprintf (stderr,
-                            "%s: option `%c%s' doesn't allow an argument\n",
-                            argv[0], argv[optind - 1][0], pfound->name);
-                   }
-                 nextchar += strlen (nextchar);
-                 return '?';
-               }
-           }
-         else if (pfound->has_arg == 1)
-           {
-             if (optind < argc)
-               optarg = argv[optind++];
-             else
-               {
-                 if (opterr)
-                   fprintf (stderr, "%s: option `%s' requires an argument\n",
-                            argv[0], argv[optind - 1]);
-                 nextchar += strlen (nextchar);
-                 return optstring[0] == ':' ? ':' : '?';
-               }
-           }
-         nextchar += strlen (nextchar);
-         if (longind != NULL)
-           *longind = option_index;
-         if (pfound->flag)
-           {
-             *(pfound->flag) = pfound->val;
-             return 0;
-           }
-         return pfound->val;
-       }
-      /* Can't find it as a long option.  If this is not getopt_long_only,
-        or the option starts with '--' or is not a valid short
-        option, then it's an error.
-        Otherwise interpret it as a short option.  */
-      if (!long_only || argv[optind][1] == '-'
-#ifdef GETOPT_COMPAT
-         || argv[optind][0] == '+'
-#endif                         /* GETOPT_COMPAT */
-         || my_index (optstring, *nextchar) == NULL)
-       {
-         if (opterr)
-           {
-             if (argv[optind][1] == '-')
-               /* --option */
-               fprintf (stderr, "%s: unrecognized option `--%s'\n",
-                        argv[0], nextchar);
-             else
-               /* +option or -option */
-               fprintf (stderr, "%s: unrecognized option `%c%s'\n",
-                        argv[0], argv[optind][0], nextchar);
-           }
-         nextchar = (char *) "";
-         optind++;
-         return '?';
-       }
-    }
-
-  /* Look at and handle the next option-character.  */
-
-  {
-    char c = *nextchar++;
-    char *temp = my_index (optstring, c);
-
-    /* Increment `optind' when we start to process its last character.  */
-    if (*nextchar == '\0')
-      ++optind;
-
-    if (temp == NULL || c == ':')
-      {
-       if (opterr)
-         {
-#if 0
-           if (c < 040 || c >= 0177)
-             fprintf (stderr, "%s: unrecognized option, character code 0%o\n",
-                      argv[0], c);
-           else
-             fprintf (stderr, "%s: unrecognized option `-%c'\n", argv[0], c);
-#else
-           /* 1003.2 specifies the format of this message.  */
-           fprintf (stderr, "%s: illegal option -- %c\n", argv[0], c);
-#endif
-         }
-       optopt = c;
-       return '?';
-      }
-    if (temp[1] == ':')
-      {
-       if (temp[2] == ':')
-         {
-           /* This is an option that accepts an argument optionally.  */
-           if (*nextchar != '\0')
-             {
-               optarg = nextchar;
-               optind++;
-             }
-           else
-             optarg = 0;
-           nextchar = NULL;
-         }
-       else
-         {
-           /* This is an option that requires an argument.  */
-           if (*nextchar != '\0')
-             {
-               optarg = nextchar;
-               /* If we end this ARGV-element by taking the rest as an arg,
-                  we must advance to the next element now.  */
-               optind++;
-             }
-           else if (optind == argc)
-             {
-               if (opterr)
-                 {
-#if 0
-                   fprintf (stderr, "%s: option `-%c' requires an argument\n",
-                            argv[0], c);
-#else
-                   /* 1003.2 specifies the format of this message.  */
-                   fprintf (stderr, "%s: option requires an argument -- %c\n",
-                            argv[0], c);
-#endif
-                 }
-               optopt = c;
-               if (optstring[0] == ':')
-                 c = ':';
-               else
-                 c = '?';
-             }
-           else
-             /* We already incremented `optind' once;
-                increment it again when taking next ARGV-elt as argument.  */
-             optarg = argv[optind++];
-           nextchar = NULL;
-         }
-      }
-    return c;
-  }
-}
-
-int
-getopt (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-{
-  return _getopt_internal (argc, argv, optstring,
-                          (const struct option *) 0,
-                          (int *) 0,
-                          0);
-}
-
-#endif /* _LIBC or not __GNU_LIBRARY__.  */
-\f
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
-   the above definition of `getopt'.  */
-
-int
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  int c;
-  int digit_optind = 0;
-
-  while (1)
-    {
-      int this_option_optind = optind ? optind : 1;
-
-      c = getopt (argc, argv, "abc:d:0123456789");
-      if (c == EOF)
-       break;
-
-      switch (c)
-       {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':
-         if (digit_optind != 0 && digit_optind != this_option_optind)
-           printf ("digits occur in two different argv-elements.\n");
-         digit_optind = this_option_optind;
-         printf ("option %c\n", c);
-         break;
-
-       case 'a':
-         printf ("option a\n");
-         break;
-
-       case 'b':
-         printf ("option b\n");
-         break;
-
-       case 'c':
-         printf ("option c with value `%s'\n", optarg);
-         break;
-
-       case '?':
-         break;
-
-       default:
-         printf ("?? getopt returned character code 0%o ??\n", c);
-       }
-    }
-
-  if (optind < argc)
-    {
-      printf ("non-option ARGV-elements: ");
-      while (optind < argc)
-       printf ("%s ", argv[optind++]);
-      printf ("\n");
-    }
-
-  exit (0);
-}
-
-#endif /* TEST */
diff --git a/lib/doc-support/getopt.h b/lib/doc-support/getopt.h
deleted file mode 100644 (file)
index 5c04533..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/* getopt.h - public declarations for getopt. */
-
-/* Copyright (C) 1989, 1990, 1991, 1992, 1993, 2008,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 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/>.
-*/
-
-#ifndef _GETOPT_H
-#define _GETOPT_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns EOF, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
-   for unrecognized options.  */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized.  */
-
-extern int optopt;
-
-/* Describe the long-named options requested by the application.
-   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
-   of `struct option' terminated by an element containing a name which is
-   zero.
-
-   The field `has_arg' is:
-   no_argument         (or 0) if the option does not take an argument,
-   required_argument   (or 1) if the option requires an argument,
-   optional_argument   (or 2) if the option takes an optional argument.
-
-   If the field `flag' is not NULL, it points to a variable that is set
-   to the value given in the field `val' when the option is found, but
-   left unchanged if the option is not found.
-
-   To have a long-named option do something other than set an `int' to
-   a compiled-in constant, such as set a value from `optarg', set the
-   option's `flag' field to zero and its `val' field to a nonzero
-   value (the equivalent single-letter option character, if there is
-   one).  For long options that have a zero `flag' field, `getopt'
-   returns the contents of the `val' field.  */
-
-struct option
-{
-#if    __STDC__
-  const char *name;
-#else
-  char *name;
-#endif
-  /* has_arg can't be an enum because some compilers complain about
-     type mismatches in all the code that assumes it is an int.  */
-  int has_arg;
-  int *flag;
-  int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'.  */
-
-#define        no_argument             0
-#define required_argument      1
-#define optional_argument      2
-
-#if __STDC__
-#if defined(__GNU_LIBRARY__)
-/* Many other libraries have conflicting prototypes for getopt, with
-   differences in the consts, in stdlib.h.  To avoid compilation
-   errors, only prototype getopt for the GNU C library.  */
-extern int getopt (int argc, char *const *argv, const char *shortopts);
-#else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-#endif /* not __GNU_LIBRARY__ */
-extern int getopt_long (int argc, char *const *argv, const char *shortopts,
-                       const struct option *longopts, int *longind);
-extern int getopt_long_only (int argc, char *const *argv,
-                            const char *shortopts,
-                            const struct option *longopts, int *longind);
-
-/* Internal only.  Users should not call this directly.  */
-extern int _getopt_internal (int argc, char *const *argv,
-                            const char *shortopts,
-                            const struct option *longopts, int *longind,
-                            int long_only);
-#else /* not __STDC__ */
-extern int getopt ();
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-#endif /* not __STDC__ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _GETOPT_H */
diff --git a/lib/doc-support/getopt1.c b/lib/doc-support/getopt1.c
deleted file mode 100644 (file)
index f51e6c0..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-/* getopt1.c - getopt_long and getopt_long_only entry points for GNU getopt.
-
-/* Copyright (C) 1987, 88, 89, 90, 91, 92, 1993, 2008,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 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/>.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "getopt.h"
-
-#if !__STDC__ && !defined(const) && IN_GCC
-#define const
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
-   actually compiling the library itself.  This code is part of the GNU C
-   Library, but also included in many other GNU distributions.  Compiling
-   and linking in this code is a waste when using the GNU C library
-   (especially if it is a shared library).  Rather than having every GNU
-   program understand `configure --with-gnu-libc' and omit the object files,
-   it is simpler to just do this in the source for each such file.  */
-
-#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
-
-
-/* This needs to come after some library #include
-   to get __GNU_LIBRARY__ defined.  */
-#ifdef __GNU_LIBRARY__
-#include <stdlib.h>
-#else
-char *getenv ();
-#endif
-
-#ifndef        NULL
-#define NULL 0
-#endif
-
-int
-getopt_long (argc, argv, options, long_options, opt_index)
-     int argc;
-     char *const *argv;
-     const char *options;
-     const struct option *long_options;
-     int *opt_index;
-{
-  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
-}
-
-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
-   If an option that starts with '-' (not '--') doesn't match a long option,
-   but does match a short option, it is parsed as a short option
-   instead.  */
-
-int
-getopt_long_only (argc, argv, options, long_options, opt_index)
-     int argc;
-     char *const *argv;
-     const char *options;
-     const struct option *long_options;
-     int *opt_index;
-{
-  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
-}
-
-
-#endif /* _LIBC or not __GNU_LIBRARY__.  */
-\f
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  int c;
-  int digit_optind = 0;
-
-  while (1)
-    {
-      int this_option_optind = optind ? optind : 1;
-      int option_index = 0;
-      static struct option long_options[] =
-      {
-       {"add", 1, 0, 0},
-       {"append", 0, 0, 0},
-       {"delete", 1, 0, 0},
-       {"verbose", 0, 0, 0},
-       {"create", 0, 0, 0},
-       {"file", 1, 0, 0},
-       {0, 0, 0, 0}
-      };
-
-      c = getopt_long (argc, argv, "abc:d:0123456789",
-                      long_options, &option_index);
-      if (c == EOF)
-       break;
-
-      switch (c)
-       {
-       case 0:
-         printf ("option %s", long_options[option_index].name);
-         if (optarg)
-           printf (" with arg %s", optarg);
-         printf ("\n");
-         break;
-
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':
-         if (digit_optind != 0 && digit_optind != this_option_optind)
-           printf ("digits occur in two different argv-elements.\n");
-         digit_optind = this_option_optind;
-         printf ("option %c\n", c);
-         break;
-
-       case 'a':
-         printf ("option a\n");
-         break;
-
-       case 'b':
-         printf ("option b\n");
-         break;
-
-       case 'c':
-         printf ("option c with value `%s'\n", optarg);
-         break;
-
-       case 'd':
-         printf ("option d with value `%s'\n", optarg);
-         break;
-
-       case '?':
-         break;
-
-       default:
-         printf ("?? getopt returned character code 0%o ??\n", c);
-       }
-    }
-
-  if (optind < argc)
-    {
-      printf ("non-option ARGV-elements: ");
-      while (optind < argc)
-       printf ("%s ", argv[optind++]);
-      printf ("\n");
-    }
-
-  exit (0);
-}
-
-#endif /* TEST */
diff --git a/lib/doc-support/texindex.c b/lib/doc-support/texindex.c
deleted file mode 100644 (file)
index 646df59..0000000
+++ /dev/null
@@ -1,1665 +0,0 @@
-/* Prepare TeX index dribble output into an actual index.
-
-   Version 1.45
-
-   Copyright (C) 1987, 1991, 1992 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/>.
-*/
-
-#include <stdio.h>
-#include <ctype.h>
-#include <errno.h>
-#include "getopt.h"
-#include "bashansi.h"
-
-#if !defined (errno)
-extern int errno;
-#endif
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#else /* !HAVE_UNISTD_H */
-extern long lseek ();
-#endif /* !HAVE_UNISTD_H */
-
-extern char *mktemp ();
-
-#if !defined (HAVE_STRERROR)
-extern int sys_nerr;
-extern char *sys_errlist[];
-#endif
-
-#include <sys/types.h>
-
-#if defined (_AIX) || !defined (_POSIX_VERSION)
-#  include <sys/file.h>
-#endif
-
-#include <fcntl.h>
-
-#define TI_NO_ERROR 0
-#define TI_FATAL_ERROR 1
-
-#if !defined (SEEK_SET)
-#  define SEEK_SET 0
-#  define SEEK_CUR 1
-#  define SEEK_END 2
-#endif /* !SEEK_SET */
-
-/* When sorting in core, this structure describes one line
-   and the position and length of its first keyfield.  */
-struct lineinfo
-{
-  char *text;          /* The actual text of the line. */
-  union {
-    char *text;                /* The start of the key (for textual comparison). */
-    long number;       /* The numeric value (for numeric comparison). */
-  } key;
-  long keylen;         /* Length of KEY field. */
-};
-
-/* This structure describes a field to use as a sort key. */
-struct keyfield
-{
-  int startwords;      /* Number of words to skip. */
-  int startchars;      /* Number of additional chars to skip. */
-  int endwords;                /* Number of words to ignore at end. */
-  int endchars;                /* Ditto for characters of last word. */
-  char ignore_blanks;  /* Non-zero means ignore spaces and tabs. */
-  char fold_case;      /* Non-zero means case doesn't matter. */
-  char reverse;                /* Non-zero means compare in reverse order. */
-  char numeric;                /* Non-zeros means field is ASCII numeric. */
-  char positional;     /* Sort according to file position. */
-  char braced;         /* Count balanced-braced groupings as fields. */
-};
-
-/* Vector of keyfields to use. */
-struct keyfield keyfields[3];
-
-/* Number of keyfields stored in that vector.  */
-int num_keyfields = 3;
-
-/* Vector of input file names, terminated with a null pointer. */
-char **infiles;
-
-/* Vector of corresponding output file names, or NULL, meaning default it
-   (add an `s' to the end). */
-char **outfiles;
-
-/* Length of `infiles'. */
-int num_infiles;
-
-/* Pointer to the array of pointers to lines being sorted. */
-char **linearray;
-
-/* The allocated length of `linearray'. */
-long nlines;
-
-/* Directory to use for temporary files.  On Unix, it ends with a slash.  */
-char *tempdir;
-
-/* Start of filename to use for temporary files.  */
-char *tempbase;
-
-/* Number of last temporary file.  */
-int tempcount;
-
-/* Number of last temporary file already deleted.
-   Temporary files are deleted by `flush_tempfiles' in order of creation.  */
-int last_deleted_tempcount;
-
-/* During in-core sort, this points to the base of the data block
-   which contains all the lines of data.  */
-char *text_base;
-
-/* Additional command switches .*/
-
-/* Nonzero means do not delete tempfiles -- for debugging. */
-int keep_tempfiles;
-
-/* The name this program was run with. */
-char *program_name;
-
-/* Forward declarations of functions in this file. */
-
-void decode_command ();
-void sort_in_core ();
-void sort_offline ();
-char **parsefile ();
-char *find_field ();
-char *find_pos ();
-long find_value ();
-char *find_braced_pos ();
-char *find_braced_end ();
-void writelines ();
-int compare_field ();
-int compare_full ();
-long readline ();
-int merge_files ();
-int merge_direct ();
-void pfatal_with_name ();
-void fatal ();
-void error ();
-void *xmalloc (), *xrealloc ();
-char *concat ();
-char *maketempname ();
-void flush_tempfiles ();
-char *tempcopy ();
-\f
-#define MAX_IN_CORE_SORT 500000
-
-void
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  int i;
-
-  tempcount = 0;
-  last_deleted_tempcount = 0;
-  program_name = argv[0];
-
-  /* Describe the kind of sorting to do. */
-  /* The first keyfield uses the first braced field and folds case. */
-  keyfields[0].braced = 1;
-  keyfields[0].fold_case = 1;
-  keyfields[0].endwords = -1;
-  keyfields[0].endchars = -1;
-
-  /* The second keyfield uses the second braced field, numerically. */
-  keyfields[1].braced = 1;
-  keyfields[1].numeric = 1;
-  keyfields[1].startwords = 1;
-  keyfields[1].endwords = -1;
-  keyfields[1].endchars = -1;
-
-  /* The third keyfield (which is ignored while discarding duplicates)
-     compares the whole line. */
-  keyfields[2].endwords = -1;
-  keyfields[2].endchars = -1;
-
-  decode_command (argc, argv);
-
-  tempbase = mktemp (concat ("txiXXXXXX", "", ""));
-
-  /* Process input files completely, one by one.  */
-
-  for (i = 0; i < num_infiles; i++)
-    {
-      int desc;
-      long ptr;
-      char *outfile;
-
-      desc = open (infiles[i], O_RDONLY, 0);
-      if (desc < 0)
-       pfatal_with_name (infiles[i]);
-      lseek (desc, 0L, SEEK_END);
-      ptr = lseek (desc, 0L, SEEK_CUR);
-
-      close (desc);
-
-      outfile = outfiles[i];
-      if (!outfile)
-       {
-         outfile = concat (infiles[i], "s", "");
-       }
-
-      if (ptr < MAX_IN_CORE_SORT)
-       /* Sort a small amount of data. */
-       sort_in_core (infiles[i], ptr, outfile);
-      else
-       sort_offline (infiles[i], ptr, outfile);
-    }
-
-  flush_tempfiles (tempcount);
-  exit (TI_NO_ERROR);
-}
-\f
-void
-usage ()
-{
-  fprintf (stderr, "\
-Usage: %s [-k] infile [-o outfile] ...\n", program_name);
-  exit (1);
-}
-
-/* Decode the command line arguments to set the parameter variables
-   and set up the vector of keyfields and the vector of input files. */
-
-void
-decode_command (argc, argv)
-     int argc;
-     char **argv;
-{
-  int optc;
-  char **ip;
-  char **op;
-
-  /* Store default values into parameter variables. */
-
-  tempdir = getenv ("TMPDIR");
-  if (tempdir == NULL)
-    tempdir = "/tmp/";
-  else
-    tempdir = concat (tempdir, "/", "");
-
-  keep_tempfiles = 0;
-
-  /* Allocate ARGC input files, which must be enough.  */
-
-  infiles = (char **) xmalloc (argc * sizeof (char *));
-  outfiles = (char **) xmalloc (argc * sizeof (char *));
-  ip = infiles;
-  op = outfiles;
-
-  while ((optc = getopt (argc, argv, "-ko:")) != EOF)
-    {
-      switch (optc)
-       {
-       case 1:         /* Non-option filename. */
-         *ip++ = optarg;
-         *op++ = NULL;
-         break;
-
-       case 'k':
-         keep_tempfiles = 1;
-         break;
-
-       case 'o':
-         if (op > outfiles)
-           *(op - 1) = optarg;
-         break;
-
-       default:
-         usage ();
-       }
-    }
-
-  /* Record number of keyfields and terminate list of filenames. */
-  num_infiles = ip - infiles;
-  *ip = 0;
-  if (num_infiles == 0)
-    usage ();
-}
-\f
-/* Return a name for a temporary file. */
-
-char *
-maketempname (count)
-     int count;
-{
-  char tempsuffix[10];
-  sprintf (tempsuffix, "%d", count);
-  return concat (tempdir, tempbase, tempsuffix);
-}
-
-/* Delete all temporary files up to TO_COUNT. */
-
-void
-flush_tempfiles (to_count)
-     int to_count;
-{
-  if (keep_tempfiles)
-    return;
-  while (last_deleted_tempcount < to_count)
-    unlink (maketempname (++last_deleted_tempcount));
-}
-
-/* Copy the input file open on IDESC into a temporary file
-   and return the temporary file name. */
-
-#define BUFSIZE 1024
-
-char *
-tempcopy (idesc)
-     int idesc;
-{
-  char *outfile = maketempname (++tempcount);
-  int odesc;
-  char buffer[BUFSIZE];
-
-  odesc = open (outfile, O_WRONLY | O_CREAT, 0666);
-
-  if (odesc < 0)
-    pfatal_with_name (outfile);
-
-  while (1)
-    {
-      int nread = read (idesc, buffer, BUFSIZE);
-      write (odesc, buffer, nread);
-      if (!nread)
-       break;
-    }
-
-  close (odesc);
-
-  return outfile;
-}
-\f
-/* Compare LINE1 and LINE2 according to the specified set of keyfields. */
-
-int
-compare_full (line1, line2)
-     char **line1, **line2;
-{
-  int i;
-
-  /* Compare using the first keyfield;
-     if that does not distinguish the lines, try the second keyfield;
-     and so on. */
-
-  for (i = 0; i < num_keyfields; i++)
-    {
-      long length1, length2;
-      char *start1 = find_field (&keyfields[i], *line1, &length1);
-      char *start2 = find_field (&keyfields[i], *line2, &length2);
-      int tem = compare_field (&keyfields[i], start1, length1, *line1 - text_base,
-                              start2, length2, *line2 - text_base);
-      if (tem)
-       {
-         if (keyfields[i].reverse)
-           return -tem;
-         return tem;
-       }
-    }
-
-  return 0;                    /* Lines match exactly. */
-}
-
-/* Compare LINE1 and LINE2, described by structures
-   in which the first keyfield is identified in advance.
-   For positional sorting, assumes that the order of the lines in core
-   reflects their nominal order.  */
-
-int
-compare_prepared (line1, line2)
-     struct lineinfo *line1, *line2;
-{
-  int i;
-  int tem;
-  char *text1, *text2;
-
-  /* Compare using the first keyfield, which has been found for us already. */
-  if (keyfields->positional)
-    {
-      if (line1->text - text_base > line2->text - text_base)
-       tem = 1;
-      else
-       tem = -1;
-    }
-  else if (keyfields->numeric)
-    tem = line1->key.number - line2->key.number;
-  else
-    tem = compare_field (keyfields, line1->key.text, line1->keylen, 0,
-                        line2->key.text, line2->keylen, 0);
-  if (tem)
-    {
-      if (keyfields->reverse)
-       return -tem;
-      return tem;
-    }
-
-  text1 = line1->text;
-  text2 = line2->text;
-
-  /* Compare using the second keyfield;
-     if that does not distinguish the lines, try the third keyfield;
-     and so on. */
-
-  for (i = 1; i < num_keyfields; i++)
-    {
-      long length1, length2;
-      char *start1 = find_field (&keyfields[i], text1, &length1);
-      char *start2 = find_field (&keyfields[i], text2, &length2);
-      int tem = compare_field (&keyfields[i], start1, length1, text1 - text_base,
-                              start2, length2, text2 - text_base);
-      if (tem)
-       {
-         if (keyfields[i].reverse)
-           return -tem;
-         return tem;
-       }
-    }
-
-  return 0;                    /* Lines match exactly. */
-}
-
-/* Like compare_full but more general.
-   You can pass any strings, and you can say how many keyfields to use.
-   POS1 and POS2 should indicate the nominal positional ordering of
-   the two lines in the input.  */
-
-int
-compare_general (str1, str2, pos1, pos2, use_keyfields)
-     char *str1, *str2;
-     long pos1, pos2;
-     int use_keyfields;
-{
-  int i;
-
-  /* Compare using the first keyfield;
-     if that does not distinguish the lines, try the second keyfield;
-     and so on. */
-
-  for (i = 0; i < use_keyfields; i++)
-    {
-      long length1, length2;
-      char *start1 = find_field (&keyfields[i], str1, &length1);
-      char *start2 = find_field (&keyfields[i], str2, &length2);
-      int tem = compare_field (&keyfields[i], start1, length1, pos1,
-                              start2, length2, pos2);
-      if (tem)
-       {
-         if (keyfields[i].reverse)
-           return -tem;
-         return tem;
-       }
-    }
-
-  return 0;                    /* Lines match exactly. */
-}
-
-/* Find the start and length of a field in STR according to KEYFIELD.
-   A pointer to the starting character is returned, and the length
-   is stored into the int that LENGTHPTR points to.  */
-
-char *
-find_field (keyfield, str, lengthptr)
-     struct keyfield *keyfield;
-     char *str;
-     long *lengthptr;
-{
-  char *start;
-  char *end;
-  char *(*fun) ();
-
-  if (keyfield->braced)
-    fun = find_braced_pos;
-  else
-    fun = find_pos;
-
-  start = (*fun) (str, keyfield->startwords, keyfield->startchars,
-                 keyfield->ignore_blanks);
-  if (keyfield->endwords < 0)
-    {
-      if (keyfield->braced)
-       end = find_braced_end (start);
-      else
-       {
-         end = start;
-         while (*end && *end != '\n')
-           end++;
-       }
-    }
-  else
-    {
-      end = (*fun) (str, keyfield->endwords, keyfield->endchars, 0);
-      if (end - str < start - str)
-       end = start;
-    }
-  *lengthptr = end - start;
-  return start;
-}
-
-/* Return a pointer to a specified place within STR,
-   skipping (from the beginning) WORDS words and then CHARS chars.
-   If IGNORE_BLANKS is nonzero, we skip all blanks
-   after finding the specified word.  */
-
-char *
-find_pos (str, words, chars, ignore_blanks)
-     char *str;
-     int words, chars;
-     int ignore_blanks;
-{
-  int i;
-  char *p = str;
-
-  for (i = 0; i < words; i++)
-    {
-      char c;
-      /* Find next bunch of nonblanks and skip them. */
-      while ((c = *p) == ' ' || c == '\t')
-       p++;
-      while ((c = *p) && c != '\n' && !(c == ' ' || c == '\t'))
-       p++;
-      if (!*p || *p == '\n')
-       return p;
-    }
-
-  while (*p == ' ' || *p == '\t')
-    p++;
-
-  for (i = 0; i < chars; i++)
-    {
-      if (!*p || *p == '\n')
-       break;
-      p++;
-    }
-  return p;
-}
-
-/* Like find_pos but assumes that each field is surrounded by braces
-   and that braces within fields are balanced. */
-
-char *
-find_braced_pos (str, words, chars, ignore_blanks)
-     char *str;
-     int words, chars;
-     int ignore_blanks;
-{
-  int i;
-  int bracelevel;
-  char *p = str;
-  char c;
-
-  for (i = 0; i < words; i++)
-    {
-      bracelevel = 1;
-      while ((c = *p++) != '{' && c != '\n' && c)
-       /* Do nothing. */ ;
-      if (c != '{')
-       return p - 1;
-      while (bracelevel)
-       {
-         c = *p++;
-         if (c == '{')
-           bracelevel++;
-         if (c == '}')
-           bracelevel--;
-         if (c == 0 || c == '\n')
-           return p - 1;
-       }
-    }
-
-  while ((c = *p++) != '{' && c != '\n' && c)
-    /* Do nothing. */ ;
-
-  if (c != '{')
-    return p - 1;
-
-  if (ignore_blanks)
-    while ((c = *p) == ' ' || c == '\t')
-      p++;
-
-  for (i = 0; i < chars; i++)
-    {
-      if (!*p || *p == '\n')
-       break;
-      p++;
-    }
-  return p;
-}
-
-/* Find the end of the balanced-brace field which starts at STR.
-   The position returned is just before the closing brace. */
-
-char *
-find_braced_end (str)
-     char *str;
-{
-  int bracelevel;
-  char *p = str;
-  char c;
-
-  bracelevel = 1;
-  while (bracelevel)
-    {
-      c = *p++;
-      if (c == '{')
-       bracelevel++;
-      if (c == '}')
-       bracelevel--;
-      if (c == 0 || c == '\n')
-       return p - 1;
-    }
-  return p - 1;
-}
-
-long
-find_value (start, length)
-     char *start;
-     long length;
-{
-  while (length != 0L)
-    {
-      if (isdigit (*start))
-       return atol (start);
-      length--;
-      start++;
-    }
-  return 0l;
-}
-
-/* Vector used to translate characters for comparison.
-   This is how we make all alphanumerics follow all else,
-   and ignore case in the first sorting.  */
-int char_order[256];
-
-void
-init_char_order ()
-{
-  int i;
-  for (i = 1; i < 256; i++)
-    char_order[i] = i;
-
-  for (i = '0'; i <= '9'; i++)
-    char_order[i] += 512;
-
-  for (i = 'a'; i <= 'z'; i++)
-    {
-      char_order[i] = 512 + i;
-      char_order[i + 'A' - 'a'] = 512 + i;
-    }
-}
-
-/* Compare two fields (each specified as a start pointer and a character count)
-   according to KEYFIELD.
-   The sign of the value reports the relation between the fields. */
-
-int
-compare_field (keyfield, start1, length1, pos1, start2, length2, pos2)
-     struct keyfield *keyfield;
-     char *start1;
-     long length1;
-     long pos1;
-     char *start2;
-     long length2;
-     long pos2;
-{
-  if (keyfields->positional)
-    {
-      if (pos1 > pos2)
-       return 1;
-      else
-       return -1;
-    }
-  if (keyfield->numeric)
-    {
-      long value = find_value (start1, length1) - find_value (start2, length2);
-      if (value > 0)
-       return 1;
-      if (value < 0)
-       return -1;
-      return 0;
-    }
-  else
-    {
-      char *p1 = start1;
-      char *p2 = start2;
-      char *e1 = start1 + length1;
-      char *e2 = start2 + length2;
-
-      while (1)
-       {
-         int c1, c2;
-
-         if (p1 == e1)
-           c1 = 0;
-         else
-           c1 = *p1++;
-         if (p2 == e2)
-           c2 = 0;
-         else
-           c2 = *p2++;
-
-         if (char_order[c1] != char_order[c2])
-           return char_order[c1] - char_order[c2];
-         if (!c1)
-           break;
-       }
-
-      /* Strings are equal except possibly for case.  */
-      p1 = start1;
-      p2 = start2;
-      while (1)
-       {
-         int c1, c2;
-
-         if (p1 == e1)
-           c1 = 0;
-         else
-           c1 = *p1++;
-         if (p2 == e2)
-           c2 = 0;
-         else
-           c2 = *p2++;
-
-         if (c1 != c2)
-           /* Reverse sign here so upper case comes out last.  */
-           return c2 - c1;
-         if (!c1)
-           break;
-       }
-
-      return 0;
-    }
-}
-\f
-/* A `struct linebuffer' is a structure which holds a line of text.
-   `readline' reads a line from a stream into a linebuffer
-   and works regardless of the length of the line.  */
-
-struct linebuffer
-{
-  long size;
-  char *buffer;
-};
-
-/* Initialize LINEBUFFER for use. */
-
-void
-initbuffer (linebuffer)
-     struct linebuffer *linebuffer;
-{
-  linebuffer->size = 200;
-  linebuffer->buffer = (char *) xmalloc (200);
-}
-
-/* Read a line of text from STREAM into LINEBUFFER.
-   Return the length of the line.  */
-
-long
-readline (linebuffer, stream)
-     struct linebuffer *linebuffer;
-     FILE *stream;
-{
-  char *buffer = linebuffer->buffer;
-  char *p = linebuffer->buffer;
-  char *end = p + linebuffer->size;
-
-  while (1)
-    {
-      int c = getc (stream);
-      if (p == end)
-       {
-         buffer = (char *) xrealloc (buffer, linebuffer->size *= 2);
-         p += buffer - linebuffer->buffer;
-         end += buffer - linebuffer->buffer;
-         linebuffer->buffer = buffer;
-       }
-      if (c < 0 || c == '\n')
-       {
-         *p = 0;
-         break;
-       }
-      *p++ = c;
-    }
-
-  return p - buffer;
-}
-\f
-/* Sort an input file too big to sort in core.  */
-
-void
-sort_offline (infile, nfiles, total, outfile)
-     char *infile;
-     int nfiles;
-     long total;
-     char *outfile;
-{
-  /* More than enough. */
-  int ntemps = 2 * (total + MAX_IN_CORE_SORT - 1) / MAX_IN_CORE_SORT;
-  char **tempfiles = (char **) xmalloc (ntemps * sizeof (char *));
-  FILE *istream = fopen (infile, "r");
-  int i;
-  struct linebuffer lb;
-  long linelength;
-  int failure = 0;
-
-  initbuffer (&lb);
-
-  /* Read in one line of input data.  */
-
-  linelength = readline (&lb, istream);
-
-  if (lb.buffer[0] != '\\' && lb.buffer[0] != '@')
-    {
-      error ("%s: not a texinfo index file", infile);
-      return;
-    }
-
-  /* Split up the input into `ntemps' temporary files, or maybe fewer,
-     and put the new files' names into `tempfiles' */
-
-  for (i = 0; i < ntemps; i++)
-    {
-      char *outname = maketempname (++tempcount);
-      FILE *ostream = fopen (outname, "w");
-      long tempsize = 0;
-
-      if (!ostream)
-       pfatal_with_name (outname);
-      tempfiles[i] = outname;
-
-      /* Copy lines into this temp file as long as it does not make file
-        "too big" or until there are no more lines.  */
-
-      while (tempsize + linelength + 1 <= MAX_IN_CORE_SORT)
-       {
-         tempsize += linelength + 1;
-         fputs (lb.buffer, ostream);
-         putc ('\n', ostream);
-
-         /* Read another line of input data.  */
-
-         linelength = readline (&lb, istream);
-         if (!linelength && feof (istream))
-           break;
-
-         if (lb.buffer[0] != '\\' && lb.buffer[0] != '@')
-           {
-             error ("%s: not a texinfo index file", infile);
-             failure = 1;
-             goto fail;
-           }
-       }
-      fclose (ostream);
-      if (feof (istream))
-       break;
-    }
-
-  free (lb.buffer);
-
-fail:
-  /* Record number of temp files we actually needed.  */
-
-  ntemps = i;
-
-  /* Sort each tempfile into another tempfile.
-    Delete the first set of tempfiles and put the names of the second
-    into `tempfiles'. */
-
-  for (i = 0; i < ntemps; i++)
-    {
-      char *newtemp = maketempname (++tempcount);
-      sort_in_core (&tempfiles[i], MAX_IN_CORE_SORT, newtemp);
-      if (!keep_tempfiles)
-       unlink (tempfiles[i]);
-      tempfiles[i] = newtemp;
-    }
-
-  if (failure)
-    return;
-
-  /* Merge the tempfiles together and indexify. */
-
-  merge_files (tempfiles, ntemps, outfile);
-}
-\f
-/* Sort INFILE, whose size is TOTAL,
-   assuming that is small enough to be done in-core,
-   then indexify it and send the output to OUTFILE (or to stdout).  */
-
-void
-sort_in_core (infile, total, outfile)
-     char *infile;
-     long total;
-     char *outfile;
-{
-  char **nextline;
-  char *data = (char *) xmalloc (total + 1);
-  char *file_data;
-  long file_size;
-  int i;
-  FILE *ostream = stdout;
-  struct lineinfo *lineinfo;
-
-  /* Read the contents of the file into the moby array `data'. */
-
-  int desc = open (infile, O_RDONLY, 0);
-
-  if (desc < 0)
-    fatal ("failure reopening %s", infile);
-  for (file_size = 0;;)
-    {
-      i = read (desc, data + file_size, total - file_size);
-      if (i <= 0)
-       break;
-      file_size += i;
-    }
-  file_data = data;
-  data[file_size] = 0;
-
-  close (desc);
-
-  if (file_size > 0 && data[0] != '\\' && data[0] != '@')
-    {
-      error ("%s: not a texinfo index file", infile);
-      return;
-    }
-
-  init_char_order ();
-
-  /* Sort routines want to know this address. */
-
-  text_base = data;
-
-  /* Create the array of pointers to lines, with a default size
-     frequently enough.  */
-
-  nlines = total / 50;
-  if (!nlines)
-    nlines = 2;
-  linearray = (char **) xmalloc (nlines * sizeof (char *));
-
-  /* `nextline' points to the next free slot in this array.
-     `nlines' is the allocated size.  */
-
-  nextline = linearray;
-
-  /* Parse the input file's data, and make entries for the lines.  */
-
-  nextline = parsefile (infile, nextline, file_data, file_size);
-  if (nextline == 0)
-    {
-      error ("%s: not a texinfo index file", infile);
-      return;
-    }
-
-  /* Sort the lines. */
-
-  /* If we have enough space, find the first keyfield of each line in advance.
-     Make a `struct lineinfo' for each line, which records the keyfield
-     as well as the line, and sort them.  */
-
-  lineinfo = (struct lineinfo *) malloc ((nextline - linearray) * sizeof (struct lineinfo));
-
-  if (lineinfo)
-    {
-      struct lineinfo *lp;
-      char **p;
-
-      for (lp = lineinfo, p = linearray; p != nextline; lp++, p++)
-       {
-         lp->text = *p;
-         lp->key.text = find_field (keyfields, *p, &lp->keylen);
-         if (keyfields->numeric)
-           lp->key.number = find_value (lp->key.text, lp->keylen);
-       }
-
-      qsort (lineinfo, nextline - linearray, sizeof (struct lineinfo), compare_prepared);
-
-      for (lp = lineinfo, p = linearray; p != nextline; lp++, p++)
-       *p = lp->text;
-
-      free (lineinfo);
-    }
-  else
-    qsort (linearray, nextline - linearray, sizeof (char *), compare_full);
-
-  /* Open the output file. */
-
-  if (outfile)
-    {
-      ostream = fopen (outfile, "w");
-      if (!ostream)
-       pfatal_with_name (outfile);
-    }
-
-  writelines (linearray, nextline - linearray, ostream);
-  if (outfile)
-    fclose (ostream);
-
-  free (linearray);
-  free (data);
-}
-\f
-/* Parse an input string in core into lines.
-   DATA is the input string, and SIZE is its length.
-   Data goes in LINEARRAY starting at NEXTLINE.
-   The value returned is the first entry in LINEARRAY still unused.
-   Value 0 means input file contents are invalid.  */
-
-char **
-parsefile (filename, nextline, data, size)
-     char *filename;
-     char **nextline;
-     char *data;
-     long size;
-{
-  char *p, *end;
-  char **line = nextline;
-
-  p = data;
-  end = p + size;
-  *end = 0;
-
-  while (p != end)
-    {
-      if (p[0] != '\\' && p[0] != '@')
-       return 0;
-
-      *line = p;
-      while (*p && *p != '\n')
-       p++;
-      if (p != end)
-       p++;
-
-      line++;
-      if (line == linearray + nlines)
-       {
-         char **old = linearray;
-         linearray = (char **) xrealloc (linearray, sizeof (char *) * (nlines *= 4));
-         line += linearray - old;
-       }
-    }
-
-  return line;
-}
-\f
-/* Indexification is a filter applied to the sorted lines
-   as they are being written to the output file.
-   Multiple entries for the same name, with different page numbers,
-   get combined into a single entry with multiple page numbers.
-   The first braced field, which is used for sorting, is discarded.
-   However, its first character is examined, folded to lower case,
-   and if it is different from that in the previous line fed to us
-   a \initial line is written with one argument, the new initial.
-
-   If an entry has four braced fields, then the second and third
-   constitute primary and secondary names.
-   In this case, each change of primary name
-   generates a \primary line which contains only the primary name,
-   and in between these are \secondary lines which contain
-   just a secondary name and page numbers. */
-
-/* The last primary name we wrote a \primary entry for.
-   If only one level of indexing is being done, this is the last name seen. */
-char *lastprimary;
-/* Length of storage allocated for lastprimary. */
-int lastprimarylength;
-
-/* Similar, for the secondary name. */
-char *lastsecondary;
-int lastsecondarylength;
-
-/* Zero if we are not in the middle of writing an entry.
-   One if we have written the beginning of an entry but have not
-   yet written any page numbers into it.
-   Greater than one if we have written the beginning of an entry
-   plus at least one page number. */
-int pending;
-
-/* The initial (for sorting purposes) of the last primary entry written.
-   When this changes, a \initial {c} line is written */
-
-char *lastinitial;
-
-int lastinitiallength;
-
-/* When we need a string of length 1 for the value of lastinitial,
-   store it here.  */
-
-char lastinitial1[2];
-
-/* Initialize static storage for writing an index. */
-
-static void
-xbzero(s, n)
-     char *s;
-     int n;
-{
-  register char *p;
-  for (p = s; n--; )
-    *p++ = '\0';
-}
-
-void
-init_index ()
-{
-  pending = 0;
-  lastinitial = lastinitial1;
-  lastinitial1[0] = 0;
-  lastinitial1[1] = 0;
-  lastinitiallength = 0;
-  lastprimarylength = 100;
-  lastprimary = (char *) xmalloc (lastprimarylength + 1);
-  xbzero (lastprimary, lastprimarylength + 1);
-  lastsecondarylength = 100;
-  lastsecondary = (char *) xmalloc (lastsecondarylength + 1);
-  xbzero (lastsecondary, lastsecondarylength + 1);
-}
-
-/* Indexify.  Merge entries for the same name,
-   insert headers for each initial character, etc.  */
-
-void
-indexify (line, ostream)
-     char *line;
-     FILE *ostream;
-{
-  char *primary, *secondary, *pagenumber;
-  int primarylength, secondarylength = 0, pagelength;
-  int nosecondary;
-  int initiallength;
-  char *initial;
-  char initial1[2];
-  register char *p;
-
-  /* First, analyze the parts of the entry fed to us this time. */
-
-  p = find_braced_pos (line, 0, 0, 0);
-  if (*p == '{')
-    {
-      initial = p;
-      /* Get length of inner pair of braces starting at `p',
-        including that inner pair of braces.  */
-      initiallength = find_braced_end (p + 1) + 1 - p;
-    }
-  else
-    {
-      initial = initial1;
-      initial1[0] = *p;
-      initial1[1] = 0;
-      initiallength = 1;
-
-      if (initial1[0] >= 'a' && initial1[0] <= 'z')
-       initial1[0] -= 040;
-    }
-
-  pagenumber = find_braced_pos (line, 1, 0, 0);
-  pagelength = find_braced_end (pagenumber) - pagenumber;
-  if (pagelength == 0)
-    abort ();
-
-  primary = find_braced_pos (line, 2, 0, 0);
-  primarylength = find_braced_end (primary) - primary;
-
-  secondary = find_braced_pos (line, 3, 0, 0);
-  nosecondary = !*secondary;
-  if (!nosecondary)
-    secondarylength = find_braced_end (secondary) - secondary;
-
-  /* If the primary is different from before, make a new primary entry. */
-  if (strncmp (primary, lastprimary, primarylength))
-    {
-      /* Close off current secondary entry first, if one is open. */
-      if (pending)
-       {
-         fputs ("}\n", ostream);
-         pending = 0;
-       }
-
-      /* If this primary has a different initial, include an entry for
-        the initial. */
-      if (initiallength != lastinitiallength ||
-         strncmp (initial, lastinitial, initiallength))
-       {
-         fprintf (ostream, "\\initial {");
-         fwrite (initial, 1, initiallength, ostream);
-         fprintf (ostream, "}\n", initial);
-         if (initial == initial1)
-           {
-             lastinitial = lastinitial1;
-             *lastinitial1 = *initial1;
-           }
-         else
-           {
-             lastinitial = initial;
-           }
-         lastinitiallength = initiallength;
-       }
-
-      /* Make the entry for the primary.  */
-      if (nosecondary)
-       fputs ("\\entry {", ostream);
-      else
-       fputs ("\\primary {", ostream);
-      fwrite (primary, primarylength, 1, ostream);
-      if (nosecondary)
-       {
-         fputs ("}{", ostream);
-         pending = 1;
-       }
-      else
-       fputs ("}\n", ostream);
-
-      /* Record name of most recent primary. */
-      if (lastprimarylength < primarylength)
-       {
-         lastprimarylength = primarylength + 100;
-         lastprimary = (char *) xrealloc (lastprimary,
-                                          1 + lastprimarylength);
-       }
-      strncpy (lastprimary, primary, primarylength);
-      lastprimary[primarylength] = 0;
-
-      /* There is no current secondary within this primary, now. */
-      lastsecondary[0] = 0;
-    }
-
-  /* Should not have an entry with no subtopic following one with a subtopic. */
-
-  if (nosecondary && *lastsecondary)
-    error ("entry %s follows an entry with a secondary name", line);
-
-  /* Start a new secondary entry if necessary. */
-  if (!nosecondary && strncmp (secondary, lastsecondary, secondarylength))
-    {
-      if (pending)
-       {
-         fputs ("}\n", ostream);
-         pending = 0;
-       }
-
-      /* Write the entry for the secondary.  */
-      fputs ("\\secondary {", ostream);
-      fwrite (secondary, secondarylength, 1, ostream);
-      fputs ("}{", ostream);
-      pending = 1;
-
-      /* Record name of most recent secondary. */
-      if (lastsecondarylength < secondarylength)
-       {
-         lastsecondarylength = secondarylength + 100;
-         lastsecondary = (char *) xrealloc (lastsecondary,
-                                            1 + lastsecondarylength);
-       }
-      strncpy (lastsecondary, secondary, secondarylength);
-      lastsecondary[secondarylength] = 0;
-    }
-
-  /* Here to add one more page number to the current entry. */
-  if (pending++ != 1)
-    fputs (", ", ostream);     /* Punctuate first, if this is not the first. */
-  fwrite (pagenumber, pagelength, 1, ostream);
-}
-
-/* Close out any unfinished output entry. */
-
-void
-finish_index (ostream)
-     FILE *ostream;
-{
-  if (pending)
-    fputs ("}\n", ostream);
-  free (lastprimary);
-  free (lastsecondary);
-}
-\f
-/* Copy the lines in the sorted order.
-   Each line is copied out of the input file it was found in. */
-
-void
-writelines (linearray, nlines, ostream)
-     char **linearray;
-     int nlines;
-     FILE *ostream;
-{
-  char **stop_line = linearray + nlines;
-  char **next_line;
-
-  init_index ();
-
-  /* Output the text of the lines, and free the buffer space. */
-
-  for (next_line = linearray; next_line != stop_line; next_line++)
-    {
-      /* If -u was specified, output the line only if distinct from previous one.  */
-      if (next_line == linearray
-      /* Compare previous line with this one, using only the
-         explicitly specd keyfields. */
-         || compare_general (*(next_line - 1), *next_line, 0L, 0L, num_keyfields - 1))
-       {
-         char *p = *next_line;
-         char c;
-
-         while ((c = *p++) && c != '\n')
-           /* Do nothing. */ ;
-         *(p - 1) = 0;
-         indexify (*next_line, ostream);
-       }
-    }
-
-  finish_index (ostream);
-}
-\f
-/* Assume (and optionally verify) that each input file is sorted;
-   merge them and output the result.
-   Returns nonzero if any input file fails to be sorted.
-
-   This is the high-level interface that can handle an unlimited
-   number of files.  */
-
-#define MAX_DIRECT_MERGE 10
-
-int
-merge_files (infiles, nfiles, outfile)
-     char **infiles;
-     int nfiles;
-     char *outfile;
-{
-  char **tempfiles;
-  int ntemps;
-  int i;
-  int value = 0;
-  int start_tempcount = tempcount;
-
-  if (nfiles <= MAX_DIRECT_MERGE)
-    return merge_direct (infiles, nfiles, outfile);
-
-  /* Merge groups of MAX_DIRECT_MERGE input files at a time,
-     making a temporary file to hold each group's result.  */
-
-  ntemps = (nfiles + MAX_DIRECT_MERGE - 1) / MAX_DIRECT_MERGE;
-  tempfiles = (char **) xmalloc (ntemps * sizeof (char *));
-  for (i = 0; i < ntemps; i++)
-    {
-      int nf = MAX_DIRECT_MERGE;
-      if (i + 1 == ntemps)
-       nf = nfiles - i * MAX_DIRECT_MERGE;
-      tempfiles[i] = maketempname (++tempcount);
-      value |= merge_direct (&infiles[i * MAX_DIRECT_MERGE], nf, tempfiles[i]);
-    }
-
-  /* All temporary files that existed before are no longer needed
-     since their contents have been merged into our new tempfiles.
-     So delete them.  */
-  flush_tempfiles (start_tempcount);
-
-  /* Now merge the temporary files we created.  */
-
-  merge_files (tempfiles, ntemps, outfile);
-
-  free (tempfiles);
-
-  return value;
-}
-\f
-/* Assume (and optionally verify) that each input file is sorted;
-   merge them and output the result.
-   Returns nonzero if any input file fails to be sorted.
-
-   This version of merging will not work if the number of
-   input files gets too high.  Higher level functions
-   use it only with a bounded number of input files.  */
-
-int
-merge_direct (infiles, nfiles, outfile)
-     char **infiles;
-     int nfiles;
-     char *outfile;
-{
-  struct linebuffer *lb1, *lb2;
-  struct linebuffer **thisline, **prevline;
-  FILE **streams;
-  int i;
-  int nleft;
-  int lossage = 0;
-  int *file_lossage;
-  struct linebuffer *prev_out = 0;
-  FILE *ostream = stdout;
-
-  if (outfile)
-    {
-      ostream = fopen (outfile, "w");
-    }
-  if (!ostream)
-    pfatal_with_name (outfile);
-
-  init_index ();
-
-  if (nfiles == 0)
-    {
-      if (outfile)
-       fclose (ostream);
-      return 0;
-    }
-
-  /* For each file, make two line buffers.
-     Also, for each file, there is an element of `thisline'
-     which points at any time to one of the file's two buffers,
-     and an element of `prevline' which points to the other buffer.
-     `thisline' is supposed to point to the next available line from the file,
-     while `prevline' holds the last file line used,
-     which is remembered so that we can verify that the file is properly sorted. */
-
-  /* lb1 and lb2 contain one buffer each per file. */
-  lb1 = (struct linebuffer *) xmalloc (nfiles * sizeof (struct linebuffer));
-  lb2 = (struct linebuffer *) xmalloc (nfiles * sizeof (struct linebuffer));
-
-  /* thisline[i] points to the linebuffer holding the next available line in file i,
-     or is zero if there are no lines left in that file.  */
-  thisline = (struct linebuffer **)
-    xmalloc (nfiles * sizeof (struct linebuffer *));
-  /* prevline[i] points to the linebuffer holding the last used line
-     from file i.  This is just for verifying that file i is properly
-     sorted.  */
-  prevline = (struct linebuffer **)
-    xmalloc (nfiles * sizeof (struct linebuffer *));
-  /* streams[i] holds the input stream for file i.  */
-  streams = (FILE **) xmalloc (nfiles * sizeof (FILE *));
-  /* file_lossage[i] is nonzero if we already know file i is not
-     properly sorted.  */
-  file_lossage = (int *) xmalloc (nfiles * sizeof (int));
-
-  /* Allocate and initialize all that storage. */
-
-  for (i = 0; i < nfiles; i++)
-    {
-      initbuffer (&lb1[i]);
-      initbuffer (&lb2[i]);
-      thisline[i] = &lb1[i];
-      prevline[i] = &lb2[i];
-      file_lossage[i] = 0;
-      streams[i] = fopen (infiles[i], "r");
-      if (!streams[i])
-       pfatal_with_name (infiles[i]);
-
-      readline (thisline[i], streams[i]);
-    }
-
-  /* Keep count of number of files not at eof. */
-  nleft = nfiles;
-
-  while (nleft)
-    {
-      struct linebuffer *best = 0;
-      struct linebuffer *exch;
-      int bestfile = -1;
-      int i;
-
-      /* Look at the next avail line of each file; choose the least one.  */
-
-      for (i = 0; i < nfiles; i++)
-       {
-         if (thisline[i] &&
-             (!best ||
-              0 < compare_general (best->buffer, thisline[i]->buffer,
-                                (long) bestfile, (long) i, num_keyfields)))
-           {
-             best = thisline[i];
-             bestfile = i;
-           }
-       }
-
-      /* Output that line, unless it matches the previous one and we
-        don't want duplicates. */
-
-      if (!(prev_out &&
-           !compare_general (prev_out->buffer,
-                             best->buffer, 0L, 1L, num_keyfields - 1)))
-       indexify (best->buffer, ostream);
-      prev_out = best;
-
-      /* Now make the line the previous of its file, and fetch a new
-        line from that file.  */
-
-      exch = prevline[bestfile];
-      prevline[bestfile] = thisline[bestfile];
-      thisline[bestfile] = exch;
-
-      while (1)
-       {
-         /* If the file has no more, mark it empty. */
-
-         if (feof (streams[bestfile]))
-           {
-             thisline[bestfile] = 0;
-             /* Update the number of files still not empty. */
-             nleft--;
-             break;
-           }
-         readline (thisline[bestfile], streams[bestfile]);
-         if (thisline[bestfile]->buffer[0] || !feof (streams[bestfile]))
-           break;
-       }
-    }
-
-  finish_index (ostream);
-
-  /* Free all storage and close all input streams. */
-
-  for (i = 0; i < nfiles; i++)
-    {
-      fclose (streams[i]);
-      free (lb1[i].buffer);
-      free (lb2[i].buffer);
-    }
-  free (file_lossage);
-  free (lb1);
-  free (lb2);
-  free (thisline);
-  free (prevline);
-  free (streams);
-
-  if (outfile)
-    fclose (ostream);
-
-  return lossage;
-}
-\f
-/* Print error message and exit.  */
-
-void
-fatal (s1, s2)
-     char *s1, *s2;
-{
-  error (s1, s2);
-  exit (TI_FATAL_ERROR);
-}
-
-/* Print error message.  S1 is printf control string, S2 is arg for it. */
-
-void
-error (s1, s2)
-     char *s1, *s2;
-{
-  printf ("%s: ", program_name);
-  printf (s1, s2);
-  printf ("\n");
-}
-
-#if !defined (HAVE_STRERROR)
-static char *
-strerror (n)
-     int n;
-{
-  static char ebuf[40];
-
-  if (n < sys_nerr)
-    return sys_errlist[n];
-  else
-    {
-      sprintf (ebuf, "Unknown error %d", n);
-      return ebuf;
-    }
-}
-#endif
-
-void
-perror_with_name (name)
-     char *name;
-{
-  char *s;
-
-  s = concat ("", strerror (errno), " for %s");
-  error (s, name);
-}
-
-void
-pfatal_with_name (name)
-     char *name;
-{
-  char *s;
-
-  s = concat ("", strerror (errno), " for %s");
-  fatal (s, name);
-}
-
-/* Return a newly-allocated string whose contents concatenate those of
-   S1, S2, S3.  */
-
-char *
-concat (s1, s2, s3)
-     char *s1, *s2, *s3;
-{
-  int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
-  char *result = (char *) xmalloc (len1 + len2 + len3 + 1);
-
-  strcpy (result, s1);
-  strcpy (result + len1, s2);
-  strcpy (result + len1 + len2, s3);
-  *(result + len1 + len2 + len3) = 0;
-
-  return result;
-}
-
-/* Just like malloc, but kills the program in case of fatal error. */
-void *
-xmalloc (nbytes)
-     int nbytes;
-{
-  void *temp = (void *) malloc (nbytes);
-
-  if (nbytes && temp == (void *)NULL)
-    memory_error ("xmalloc", nbytes);
-
-  return (temp);
-}
-
-/* Like realloc (), but barfs if there isn't enough memory. */
-void *
-xrealloc (pointer, nbytes)
-     void *pointer;
-     int nbytes;
-{
-  void *temp;
-
-  if (!pointer)
-    temp = (void *)xmalloc (nbytes);
-  else
-    temp = (void *)realloc (pointer, nbytes);
-
-  if (nbytes && !temp)
-    memory_error ("xrealloc", nbytes);
-
-  return (temp);
-}
-
-memory_error (callers_name, bytes_wanted)
-     char *callers_name;
-     int bytes_wanted;
-{
-  char printable_string[80];
-
-  sprintf (printable_string,
-          "Virtual memory exhausted in %s ()!  Needed %d bytes.",
-          callers_name, bytes_wanted);
-
-  error (printable_string, "");
-  abort ();
-}
diff --git a/lib/glob/ChangeLog b/lib/glob/ChangeLog
deleted file mode 100644 (file)
index 377f0c1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Thu Oct 29 08:58:12 1992  Brian Fox  (bfox@cubit)
-
-       * glob.c (glob_filename): Fix tiny memory leak.  Rework some
-       comments.
-
-Mon Jul 20 10:57:36 1992  Brian Fox  (bfox@cubit)
-
-       * glob.c: (glob_filename) Change use of rindex () to strrchr ().
-
-Thu Jul  9 10:02:47 1992  Brian Fox  (bfox@cubit)
-
-       * fnmatch.c: (fnmatch) Only process `[' as the start of a bracket
-       expression if there is a closing `]' present in the string.
diff --git a/lib/malloc/OLD/gmalloc.c b/lib/malloc/OLD/gmalloc.c
deleted file mode 100644 (file)
index c21d447..0000000
+++ /dev/null
@@ -1,1486 +0,0 @@
-/* The malloc headers and source files from the C library follow here.  */
-
-/* Declarations for `malloc' and friends.
-   Copyright 1990, 91, 92, 93, 95, 96 Free Software Foundation, Inc.
-                 Written May 1989 by Mike Haertel.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-This library 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; see the file COPYING.LIB.  If
-ot, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-   The author may be reached (Email) at the address mike@ai.mit.edu,
-   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
-
-/* XXX NOTES:
-    1. Augment the mstats struct so we can see how many blocks for fragments
-       and how many blocks for large requests were allocated.
-*/
-
-/* CHANGES:
-    1. Reorganized the source for my benefit.
-    2. Integrated the range-checking code by default.
-    3.  free(0) no longer dumps core.
-    4.  Extended the statistics.
-    5.  Fixed a couple of places where the stats were not kept correctly.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#if defined (HAVE_STRING_H)
-#  include <string.h>
-#else
-#  include <strings.h>
-#endif
-
-#if defined (HAVE_LIMITS_H)
-#  include <limits.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-#  ifdef _MINIX
-#    include <sys/types.h>
-#  endif
-#  include <unistd.h>
-#endif
-
-#if defined (HAVE_STDDEF_H)
-#  include <stddef.h>
-#endif
-#include <errno.h>
-
-#if defined (RCHECK) && !defined (botch)
-#  include <stdio.h>
-#  define STDIO_H_INCLUDED
-#endif
-
-#include "stdc.h"
-
-#ifndef errno
-extern int errno;
-#endif
-
-/* Need an autoconf test for this. */
-#if __STDC__
-#  undef  genptr_t
-#  define genptr_t     void *
-#else
-#  undef  genptr_t
-#  define genptr_t     char *
-#endif /* !__STDC__ */
-
-#if !defined (HAVE_MEMSET)
-#  define      memset(s, zero, n)      bzero ((s), (n))
-#endif
-#if !defined (HAVE_MEMCPY)
-#  define      memcpy(d, s, n)         bcopy ((s), (d), (n))
-#endif
-
-/* Cope with systems lacking `memmove'.    */
-#if !defined (HAVE_MEMMOVE) && !defined (memmove)
-static void malloc_safe_bcopy __P ((genptr_t, genptr_t, size_t));
-#  define memmove(to, from, size)      malloc_safe_bcopy ((from), (to), (size))
-#endif
-
-#ifndef        NULL
-#define        NULL    0
-#endif
-
-#ifndef min
-#define min(A, B) ((A) < (B) ? (A) : (B))
-#endif
-
-/* Return values for `mprobe': these are the kinds of inconsistencies that
-   `mcheck' enables detection of.  */
-enum mcheck_status
-  {
-    MCHECK_DISABLED = -1,      /* Consistency checking is not turned on.  */
-    MCHECK_OK,                 /* Block is fine.  */
-    MCHECK_FREE,               /* Block freed twice.  */
-    MCHECK_HEAD,               /* Memory before the block was clobbered.  */
-    MCHECK_TAIL                        /* Memory after the block was clobbered.  */
-  };
-
-/* Statistics available to the user.  */
-struct mstats
-  {
-    size_t bytes_total; /* Total size of the heap. */
-    size_t chunks_used; /* Chunks allocated by the user. */
-    size_t bytes_used; /* Byte total of user-allocated chunks. */
-    size_t chunks_free; /* Chunks in the free list. */
-    size_t bytes_free; /* Byte total of chunks in the free list. */
-    int nmalloc;       /* Total number of calls to malloc. */
-    int nfree;         /* Total number of calls to free. */
-    int nrealloc;      /* Total number of calls to realloc. */
-    int nsbrk;         /* Total number of calls to sbrk. */
-    size_t tsbrk;      /* Total number of bytes allocated via sbrk. */
-    int negsbrk;       /* Total number of calls to sbrk with a negative arg */
-    size_t tnegsbrk;   /* Total number of bytes returned to the kernel. */
-  };
-
-#ifdef RCHECK
-/* Arbitrary magical numbers.  */
-#define MAGICWORD      0xfedabeeb
-#define MAGICFREE      0xd8675309
-#define MAGICBYTE      ((char) 0xd7)
-#define MALLOCFLOOD    ((char) 0x93)
-#define FREEFLOOD      ((char) 0x95)
-
-struct hdr
-  {
-    size_t size;               /* Exact size requested by user.  */
-    u_bits32_t magic;          /* Magic number to check header integrity.  */
-  };
-#endif /* RCHECK */
-
-/* Functions exported by this library. */
-/* Allocate SIZE bytes of memory.  */
-extern genptr_t malloc __P ((size_t __size));
-
-/* Re-allocate the previously allocated block
-   in genptr_t, making the new block SIZE bytes long.  */
-extern genptr_t realloc __P ((genptr_t __ptr, size_t __size));
-
-/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
-extern genptr_t calloc __P ((size_t __nmemb, size_t __size));
-
-/* Free a block allocated by `malloc', `realloc' or `calloc'.  */
-extern void free __P ((genptr_t __ptr));
-
-/* Allocate SIZE bytes allocated to ALIGNMENT bytes.  */
-extern genptr_t memalign __P ((size_t __alignment, size_t __size));
-
-/* Pick up the current statistics. */
-extern struct mstats mstats __P ((void));
-
-#ifdef RCHECK
-extern enum mcheck_status mprobe __P((genptr_t ptr));
-#endif
-
-/* End of exported functions. */
-
-/* The allocator divides the heap into blocks of fixed size; large
-   requests receive one or more whole blocks, and small requests
-   receive a fragment of a block.  Fragment sizes are powers of two,
-   and all fragments of a block are the same size.  When all the
-   fragments in a block have been freed, the block itself is freed.  */
-#define BLOCKLOG       12
-#define BLOCKSIZE      4096            /* 1 << BLOCKLOG */
-#define BLOCKIFY(SIZE) (((SIZE) + BLOCKSIZE - 1) / BLOCKSIZE)
-
-/* Determine the amount of memory spanned by the initial heap table
-   (not an absolute limit).  */
-#define HEAP           4194304         /* 1 << 22 */
-
-/* Number of contiguous free blocks allowed to build up at the end of
-   memory before they will be returned to the system.  */
-#define FINAL_FREE_BLOCKS      8
-
-/* Data structure giving per-block information.  */
-typedef union
-  {
-    /* Heap information for a busy block.  */
-    struct
-      {
-       /* Zero for a large (multiblock) object, or positive giving the
-          logarithm to the base two of the fragment size.  */
-       int type;
-       union
-         {
-           struct
-             {
-               size_t nfree; /* Free frags in a fragmented block.  */
-               size_t first; /* First free fragment of the block.  */
-             } frag;
-           /* For a large object, in its first block, this has the number
-              of blocks in the object.  In the other blocks, this has a
-              negative number which says how far back the first block is.  */
-           ptrdiff_t size;
-         } info;
-      } busy;
-    /* Heap information for a free block (that may be the first of a
-       free cluster).  */
-    struct
-      {
-       size_t size;    /* Size (in blocks) of a free cluster.  */
-       size_t next;    /* Index of next free cluster.  */
-       size_t prev;    /* Index of previous free cluster.  */
-      } free;
-  } malloc_info;
-
-/* Pointer to first block of the heap.  */
-static char *_heapbase;
-
-/* Table indexed by block number giving per-block information.  */
-static malloc_info *_heapinfo;
-
-/* Address to block number and vice versa.  */
-#define BLOCK(A)       (((char *) (A) - _heapbase) / BLOCKSIZE + 1)
-#define ADDRESS(B)     ((genptr_t) (((B) - 1) * BLOCKSIZE + _heapbase))
-
-/* Number of info entries.  */
-static size_t heapsize;
-
-/* Current search index for the heap table.  */
-static size_t _heapindex;
-
-/* Limit of valid info table indices.  */
-static size_t _heaplimit;
-
-/* Doubly linked lists of free fragments.  */
-struct list
-  {
-    struct list *next;
-    struct list *prev;
-  };
-
-/* Free list headers for each fragment size.  */
-static struct list _fraghead[BLOCKLOG];
-
-/* List of blocks allocated with `memalign'.  */
-struct alignlist
-  {
-    struct alignlist *next;
-    genptr_t aligned;          /* The address that memaligned returned.  */
-    genptr_t exact;            /* The address that malloc returned.  */
-  };
-
-/* List of blocks allocated by memalign.  */
-static struct alignlist *_aligned_blocks = NULL;
-
-/* Internal versions of `malloc', `realloc', and `free'
-   used when these functions need to call each other. */
-static genptr_t imalloc __P ((size_t __size));
-static genptr_t irealloc __P ((genptr_t __ptr, size_t __size));
-static void ifree __P ((genptr_t __ptr));
-
-/* Given an address in the middle of a malloc'd object,
-   return the address of the beginning of the object.  */
-static genptr_t malloc_find_object_address __P ((genptr_t __ptr));
-
-/* Underlying allocation function; successive calls should
-   return contiguous pieces of memory.  */
-static genptr_t default_morecore __P ((ptrdiff_t __size));
-
-/* Number of extra blocks to get each time we ask for more core.
-   This reduces the frequency of calling `default_morecore'.  */
-static size_t malloc_extra_blocks;
-
-/* Nonzero if `malloc' has been called and done its initialization.  */
-static int malloc_initialized;
-/* Function called to initialize malloc data structures.  */
-static int malloc_initialize __P ((void));
-
-#ifdef RCHECK
-static void zmemset __P((genptr_t, int, size_t));
-static enum mcheck_status checkhdr __P((const struct hdr *));
-static void mabort __P((enum mcheck_status));
-#endif
-
-/* Instrumentation.  */
-static size_t chunks_used;
-static size_t bytes_used;
-static size_t chunks_free;
-static size_t bytes_free;
-static int nmalloc, nfree, nrealloc;
-static int nsbrk;
-static size_t tsbrk;
-static int negsbrk;
-static size_t tnegsbrk;
-
-/* Aligned allocation.  */
-static genptr_t
-align (size)
-     size_t size;
-{
-  genptr_t result;
-  unsigned long int adj;
-
-  result = default_morecore (size);
-  adj = (unsigned long int) ((unsigned long int) ((char *) result -
-                                                 (char *) NULL)) % BLOCKSIZE;
-  if (adj != 0)
-    {
-      genptr_t new;
-      adj = BLOCKSIZE - adj;
-      new = default_morecore (adj);
-      result = (char *) result + adj;
-    }
-
-  return result;
-}
-
-/* Get SIZE bytes, if we can get them starting at END.
-   Return the address of the space we got.
-   If we cannot get space at END, fail and return -1.  */
-static genptr_t
-get_contiguous_space (size, position)
-     ptrdiff_t size;
-     genptr_t position;
-{
-  genptr_t before;
-  genptr_t after;
-
-  before = default_morecore (0);
-  /* If we can tell in advance that the break is at the wrong place,
-     fail now.  */
-  if (before != position)
-    return 0;
-
-  /* Allocate SIZE bytes and get the address of them.  */
-  after = default_morecore (size);
-  if (!after)
-    return 0;
-
-  /* It was not contiguous--reject it.  */
-  if (after != position)
-    {
-      default_morecore (- size);
-      return 0;
-    }
-
-  return after;
-}
-
-/* This is called when `_heapinfo' and `heapsize' have just
-   been set to describe a new info table.  Set up the table
-   to describe itself and account for it in the statistics.  */
-inline static void
-register_heapinfo ()
-{
-  size_t block, blocks;
-
-  block = BLOCK (_heapinfo);
-  blocks = BLOCKIFY (heapsize * sizeof (malloc_info));
-
-  /* Account for the _heapinfo block itself in the statistics.  */
-  bytes_used += blocks * BLOCKSIZE;
-  ++chunks_used;
-
-  /* Describe the heapinfo block itself in the heapinfo.  */
-  _heapinfo[block].busy.type = 0;
-  _heapinfo[block].busy.info.size = blocks;
-  /* Leave back-pointers for malloc_find_address.  */
-  while (--blocks > 0)
-    _heapinfo[block + blocks].busy.info.size = -blocks;
-}
-
-/* Set everything up and remember that we have.  */
-static int
-malloc_initialize ()
-{
-  if (malloc_initialized)
-    return 0;
-
-  heapsize = HEAP / BLOCKSIZE;
-  _heapinfo = (malloc_info *) align (heapsize * sizeof (malloc_info));
-  if (_heapinfo == NULL)
-    return 0;
-  memset (_heapinfo, 0, heapsize * sizeof (malloc_info));
-  _heapinfo[0].free.size = 0;
-  _heapinfo[0].free.next = _heapinfo[0].free.prev = 0;
-  _heapindex = 0;
-  _heapbase = (char *) _heapinfo;
-  _heaplimit = BLOCK (_heapbase + heapsize * sizeof (malloc_info));
-
-  register_heapinfo ();
-
-  malloc_initialized = 1;
-  return 1;
-}
-
-/* Allocate INCREMENT more bytes of data space,
-   and return the start of data space, or NULL on errors.
-   If INCREMENT is negative, shrink data space.  */
-static genptr_t
-default_morecore (increment)
-     ptrdiff_t increment;
-{
-  genptr_t result;
-
-  nsbrk++;
-  tsbrk += increment;
-  if (increment < 0)
-    {
-      negsbrk++;
-      tnegsbrk += -increment;
-    }
-  result = (genptr_t) sbrk (increment);
-  if ((long)result == -1L)
-    return NULL;
-  return result;
-}
-
-static int morecore_recursing;
-
-/* Get neatly aligned memory, initializing or
-   growing the heap info table as necessary. */
-static genptr_t
-morecore (size)
-     size_t size;
-{
-  genptr_t result;
-  malloc_info *newinfo, *oldinfo;
-  size_t newsize;
-
-  if (morecore_recursing)
-    /* Avoid recursion.  The caller will know how to handle a null return.  */
-    return NULL;
-
-  result = align (size);
-  if (result == NULL)
-    return NULL;
-
-  /* Check if we need to grow the info table.  */
-  if ((size_t) BLOCK ((char *) result + size) > heapsize)
-    {
-      /* Calculate the new _heapinfo table size.  We do not account for the
-        added blocks in the table itself, as we hope to place them in
-        existing free space, which is already covered by part of the
-        existing table.  */
-      newsize = heapsize;
-      do
-       newsize <<= 1;
-      while ((size_t) BLOCK ((char *) result + size) > newsize);
-
-      /* We must not reuse existing core for the new info table when called
-        from realloc in the case of growing a large block, because the
-        block being grown is momentarily marked as free.  In this case
-        _heaplimit is zero so we know not to reuse space for internal
-        allocation.  */
-      if (_heaplimit != 0)
-       {
-         /* First try to allocate the new info table in core we already
-            have, in the usual way using realloc.  If realloc cannot
-            extend it in place or relocate it to existing sufficient core,
-            we will get called again, and the code above will notice the
-            `morecore_recursing' flag and return null.  */
-         int save = errno;     /* Don't want to clobber errno with ENOMEM.  */
-         morecore_recursing = 1;
-         newinfo = (malloc_info *) irealloc (_heapinfo, newsize * sizeof (malloc_info));
-         morecore_recursing = 0;
-         if (newinfo == NULL)
-           errno = save;
-         else
-           {
-             /* We found some space in core, and realloc has put the old
-                table's blocks on the free list.  Now zero the new part
-                of the table and install the new table location.  */
-             memset (&newinfo[heapsize], 0, (newsize - heapsize) * sizeof (malloc_info));
-             _heapinfo = newinfo;
-             heapsize = newsize;
-             goto got_heap;
-           }
-       }
-
-      /* Allocate new space for the malloc info table.  */
-      while (1)
-       {
-         newinfo = (malloc_info *) align (newsize * sizeof (malloc_info));
-
-         /* Did it fail?  */
-         if (newinfo == NULL)
-           {
-             default_morecore (-size);
-             return NULL;
-           }
-
-         /* Is it big enough to record status for its own space?
-            If so, we win.  */
-         if ((size_t) BLOCK ((char *) newinfo + newsize * sizeof (malloc_info)) < newsize)
-           break;
-
-         /* Must try again.  First give back most of what we just got.  */
-         default_morecore (- newsize * sizeof (malloc_info));
-         newsize *= 2;
-       }
-
-      /* Copy the old table to the beginning of the new,
-        and zero the rest of the new table.  */
-      memcpy (newinfo, _heapinfo, heapsize * sizeof (malloc_info));
-      memset (&newinfo[heapsize], 0, (newsize - heapsize) * sizeof (malloc_info));
-      oldinfo = _heapinfo;
-      _heapinfo = newinfo;
-      heapsize = newsize;
-
-      register_heapinfo ();
-
-      /* Reset _heaplimit so ifree never decides
-        it can relocate or resize the info table.  */
-      _heaplimit = 0;
-      ifree (oldinfo);
-
-      /* The new heap limit includes the new table just allocated.  */
-      _heaplimit = BLOCK ((char *) newinfo + heapsize * sizeof (malloc_info));
-      return result;
-    }
-
- got_heap:
-  _heaplimit = BLOCK ((char *) result + size);
-  return result;
-}
-
-/* Allocate memory from the heap.  */
-static genptr_t
-imalloc (size)
-     size_t size;
-{
-  genptr_t result;
-  size_t block, blocks, lastblocks, start;
-  register size_t i;
-  struct list *next;
-
-  /* ANSI C allows `malloc (0)' to either return NULL, or to return a
-     valid address you can realloc and free (though not dereference).
-
-     It turns out that some extant code (sunrpc, at least Ultrix's version)
-     expects `malloc (0)' to return non-NULL and breaks otherwise.
-     Be compatible.  */
-
-#if 0
-  if (size == 0)
-    return NULL;
-#endif
-
-  if (size < sizeof (struct list))
-    size = sizeof (struct list);
-
-#ifdef SUNOS_LOCALTIME_BUG
-  if (size < 16)
-    size = 16;
-#endif
-
-  /* Determine the allocation policy based on the request size.  */
-  if (size <= BLOCKSIZE / 2)
-    {
-      /* Small allocation to receive a fragment of a block.
-        Determine the logarithm to base two of the fragment size. */
-      register size_t log = 1;
-      --size;
-      while ((size /= 2) != 0)
-       ++log;
-
-      /* Look in the fragment lists for a
-        free fragment of the desired size. */
-      next = _fraghead[log].next;
-      if (next != NULL)
-       {
-         /* There are free fragments of this size.
-            Pop a fragment out of the fragment list and return it.
-            Update the block's nfree and first counters. */
-         result = (genptr_t) next;
-         next->prev->next = next->next;
-         if (next->next != NULL)
-           next->next->prev = next->prev;
-         block = BLOCK (result);
-         if (--_heapinfo[block].busy.info.frag.nfree != 0)
-           _heapinfo[block].busy.info.frag.first = (unsigned long int)
-             ((unsigned long int) ((char *) next->next - (char *) NULL)
-              % BLOCKSIZE) >> log;
-
-         /* Update the statistics.  */
-         ++chunks_used;
-         bytes_used += 1 << log;
-         --chunks_free;
-         bytes_free -= 1 << log;
-       }
-      else
-       {
-         /* No free fragments of the desired size, so get a new block
-            and break it into fragments, returning the first.  */
-         result = imalloc (BLOCKSIZE);
-         if (result == NULL)
-           return NULL;
-
-         /* Link all fragments but the first into the free list.  */
-         next = (struct list *) ((char *) result + (1 << log));
-         next->next = NULL;
-         next->prev = &_fraghead[log];
-         _fraghead[log].next = next;
-
-         for (i = 2; i < (size_t) (BLOCKSIZE >> log); ++i)
-           {
-             next = (struct list *) ((char *) result + (i << log));
-             next->next = _fraghead[log].next;
-             next->prev = &_fraghead[log];
-             next->prev->next = next;
-             next->next->prev = next;
-           }
-
-         /* Initialize the nfree and first counters for this block.  */
-         block = BLOCK (result);
-         _heapinfo[block].busy.type = log;
-         _heapinfo[block].busy.info.frag.nfree = i - 1;
-         _heapinfo[block].busy.info.frag.first = i - 1;
-
-         chunks_free += (BLOCKSIZE >> log) - 1;
-         bytes_free += BLOCKSIZE - (1 << log);
-         bytes_used -= BLOCKSIZE - (1 << log);
-       }
-    }
-  else
-    {
-      /* Large allocation to receive one or more blocks.
-        Search the free list in a circle starting at the last place visited.
-        If we loop completely around without finding a large enough
-        space we will have to get more memory from the system.  */
-      blocks = BLOCKIFY (size);
-      start = block = _heapindex;
-      while (_heapinfo[block].free.size < blocks)
-       {
-         block = _heapinfo[block].free.next;
-         if (block == start)
-           {
-             /* Need to get more from the system.  Get a little extra.  */
-             size_t wantblocks = blocks + malloc_extra_blocks;
-             block = _heapinfo[0].free.prev;
-             lastblocks = _heapinfo[block].free.size;
-             /* Check to see if the new core will be contiguous with the
-                final free block; if so we don't need to get as much.  */
-             if (_heaplimit != 0 && block + lastblocks == _heaplimit &&
-                 /* We can't do this if we will have to make the heap info
-                    table bigger to accomodate the new space.  */
-                 block + wantblocks <= heapsize &&
-                 get_contiguous_space ((wantblocks - lastblocks) * BLOCKSIZE,
-                                       ADDRESS (block + lastblocks)))
-               {
-                 /* We got it contiguously.  Which block we are extending
-                    (the `final free block' referred to above) might have
-                    changed, if it got combined with a freed info table.  */
-                 block = _heapinfo[0].free.prev;
-                 _heapinfo[block].free.size += (wantblocks - lastblocks);
-                 bytes_free += (wantblocks - lastblocks) * BLOCKSIZE;
-                 _heaplimit += wantblocks - lastblocks;
-                 continue;
-               }
-             result = morecore (wantblocks * BLOCKSIZE);
-             if (result == NULL)
-               return NULL;
-             block = BLOCK (result);
-             /* Put the new block at the end of the free list.  */
-             _heapinfo[block].free.size = wantblocks;
-             _heapinfo[block].free.prev = _heapinfo[0].free.prev;
-             _heapinfo[block].free.next = 0;
-             _heapinfo[0].free.prev = block;
-             _heapinfo[_heapinfo[block].free.prev].free.next = block;
-             ++chunks_free;
-             bytes_free += wantblocks * BLOCKSIZE;
-             /* Now loop to use some of that block for this allocation.  */
-           }
-       }
-
-      /* At this point we have found a suitable free list entry.
-        Figure out how to remove what we need from the list. */
-      result = ADDRESS (block);
-      if (_heapinfo[block].free.size > blocks)
-       {
-         /* The block we found has a bit left over,
-            so relink the tail end back into the free list. */
-         _heapinfo[block + blocks].free.size
-           = _heapinfo[block].free.size - blocks;
-         _heapinfo[block + blocks].free.next
-           = _heapinfo[block].free.next;
-         _heapinfo[block + blocks].free.prev
-           = _heapinfo[block].free.prev;
-         _heapinfo[_heapinfo[block].free.prev].free.next
-           = _heapinfo[_heapinfo[block].free.next].free.prev
-           = _heapindex = block + blocks;
-       }
-      else
-       {
-         /* The block exactly matches our requirements,
-            so just remove it from the list. */
-         _heapinfo[_heapinfo[block].free.next].free.prev
-           = _heapinfo[block].free.prev;
-         _heapinfo[_heapinfo[block].free.prev].free.next
-           = _heapindex = _heapinfo[block].free.next;
-         --chunks_free;
-       }
-
-      _heapinfo[block].busy.type = 0;
-      _heapinfo[block].busy.info.size = blocks;
-      ++chunks_used;
-      bytes_used += blocks * BLOCKSIZE;
-      bytes_free -= blocks * BLOCKSIZE;
-
-      /* Mark all the blocks of the object just allocated except for the
-        first with a negative number so you can find the first block by
-        adding that adjustment.  */
-      while (--blocks > 0)
-       _heapinfo[block + blocks].busy.info.size = -blocks;
-    }
-
-  return result;
-}
-
-genptr_t
-malloc (size)
-     size_t size;
-{
-#ifdef RCHECK
-  struct hdr *hdr;
-#endif
-
-  nmalloc++;
-
-  if (malloc_initialized == 0 && malloc_initialize () == 0)
-    return NULL;
-
-#ifdef RCHECK
-  hdr = (struct hdr *) imalloc (sizeof (struct hdr) + size + 1);
-  if (hdr == NULL)
-    return NULL;
-
-  hdr->size = size;
-  hdr->magic = MAGICWORD;
-  ((char *) &hdr[1])[size] = MAGICBYTE;
-  zmemset ((genptr_t) (hdr + 1), MALLOCFLOOD, size);
-  return (genptr_t) (hdr + 1);
-#else
-  return (imalloc (size));
-#endif
-}
-
-/* Free a block of memory allocated by `malloc'. */
-
-/* Return memory to the heap. */
-static void
-ifree (ptr)
-     genptr_t ptr;
-{
-  int type;
-  size_t block, blocks;
-  register size_t i;
-  struct list *prev, *next;
-  genptr_t curbrk;
-  size_t lesscore_threshold;
-  register struct alignlist *l;
-
-  if (ptr == NULL)
-    return;
-
-  /* Threshold of free space at which we will return some to the system.  */
-  lesscore_threshold = FINAL_FREE_BLOCKS + 2 * malloc_extra_blocks;
-
-  for (l = _aligned_blocks; l != NULL; l = l->next)
-    if (l->aligned == ptr)
-      {
-       l->aligned = NULL;      /* Mark the slot in the list as free.  */
-       ptr = l->exact;
-       break;
-      }
-
-  block = BLOCK (ptr);
-
-  type = _heapinfo[block].busy.type;
-  switch (type)
-    {
-    case 0:
-      /* Get as many statistics as early as we can.  */
-      --chunks_used;
-      bytes_used -= _heapinfo[block].busy.info.size * BLOCKSIZE;
-      bytes_free += _heapinfo[block].busy.info.size * BLOCKSIZE;
-
-      /* Find the free cluster previous to this one in the free list.
-        Start searching at the last block referenced; this may benefit
-        programs with locality of allocation.  */
-      i = _heapindex;
-      if (i > block)
-       while (i > block)
-         i = _heapinfo[i].free.prev;
-      else
-       {
-         do
-           i = _heapinfo[i].free.next;
-         while (i > 0 && i < block);
-         i = _heapinfo[i].free.prev;
-       }
-
-      /* Determine how to link this block into the free list.  */
-      if (block == i + _heapinfo[i].free.size)
-       {
-         /* Coalesce this block with its predecessor.  */
-         _heapinfo[i].free.size += _heapinfo[block].busy.info.size;
-         block = i;
-       }
-      else
-       {
-         /* Really link this block back into the free list.  */
-         _heapinfo[block].free.size = _heapinfo[block].busy.info.size;
-         _heapinfo[block].free.next = _heapinfo[i].free.next;
-         _heapinfo[block].free.prev = i;
-         _heapinfo[i].free.next = block;
-         _heapinfo[_heapinfo[block].free.next].free.prev = block;
-         ++chunks_free;
-       }
-
-      /* Now that the block is linked in, see if we can coalesce it
-        with its successor (by deleting its successor from the list
-        and adding in its size).  */
-      if (block + _heapinfo[block].free.size == _heapinfo[block].free.next)
-       {
-         _heapinfo[block].free.size
-           += _heapinfo[_heapinfo[block].free.next].free.size;
-         _heapinfo[block].free.next
-           = _heapinfo[_heapinfo[block].free.next].free.next;
-         _heapinfo[_heapinfo[block].free.next].free.prev = block;
-         --chunks_free;
-       }
-
-      /* How many trailing free blocks are there now?  */
-      blocks = _heapinfo[block].free.size;
-
-      /* Where is the current end of accessible core?  */
-      curbrk = default_morecore (0);
-
-      if (_heaplimit != 0 && curbrk == ADDRESS (_heaplimit))
-       {
-         /* The end of the malloc heap is at the end of accessible core.
-            It's possible that moving _heapinfo will allow us to
-            return some space to the system.  */
-
-         size_t info_block = BLOCK (_heapinfo);
-         size_t info_blocks = _heapinfo[info_block].busy.info.size;
-         size_t prev_block = _heapinfo[block].free.prev;
-         size_t prev_blocks = _heapinfo[prev_block].free.size;
-         size_t next_block = _heapinfo[block].free.next;
-         size_t next_blocks = _heapinfo[next_block].free.size;
-
-         if (/* Win if this block being freed is last in core, the info table
-                is just before it, the previous free block is just before the
-                info table, and the two free blocks together form a useful
-                amount to return to the system.  */
-             (block + blocks == _heaplimit &&
-              info_block + info_blocks == block &&
-              prev_block != 0 && prev_block + prev_blocks == info_block &&
-              blocks + prev_blocks >= lesscore_threshold) ||
-             /* Nope, not the case.  We can also win if this block being
-                freed is just before the info table, and the table extends
-                to the end of core or is followed only by a free block,
-                and the total free space is worth returning to the system.  */
-             (block + blocks == info_block &&
-              ((info_block + info_blocks == _heaplimit &&
-                blocks >= lesscore_threshold) ||
-               (info_block + info_blocks == next_block &&
-                next_block + next_blocks == _heaplimit &&
-                blocks + next_blocks >= lesscore_threshold)))
-             )
-           {
-             malloc_info *newinfo;
-             size_t oldlimit = _heaplimit;
-
-             /* Free the old info table, clearing _heaplimit to avoid
-                recursion into this code.  We don't want to return the
-                table's blocks to the system before we have copied them to
-                the new location.  */
-             _heaplimit = 0;
-             ifree (_heapinfo);
-             _heaplimit = oldlimit;
-
-             /* Tell malloc to search from the beginning of the heap for
-                free blocks, so it doesn't reuse the ones just freed.  */
-             _heapindex = 0;
-
-             /* Allocate new space for the info table and move its data.  */
-             newinfo = (malloc_info *) imalloc (info_blocks
-                                                         * BLOCKSIZE);
-             memmove (newinfo, _heapinfo, info_blocks * BLOCKSIZE);
-             _heapinfo = newinfo;
-
-             /* We should now have coalesced the free block with the
-                blocks freed from the old info table.  Examine the entire
-                trailing free block to decide below whether to return some
-                to the system.  */
-             block = _heapinfo[0].free.prev;
-             blocks = _heapinfo[block].free.size;
-           }
-
-         /* Now see if we can return stuff to the system.  */
-         if (block + blocks == _heaplimit && blocks >= lesscore_threshold)
-           {
-             register size_t bytes = blocks * BLOCKSIZE;
-             _heaplimit -= blocks;
-             default_morecore (-bytes);
-             _heapinfo[_heapinfo[block].free.prev].free.next
-               = _heapinfo[block].free.next;
-             _heapinfo[_heapinfo[block].free.next].free.prev
-               = _heapinfo[block].free.prev;
-             block = _heapinfo[block].free.prev;
-             --chunks_free;
-             bytes_free -= bytes;
-           }
-       }
-
-      /* Set the next search to begin at this block.  */
-      _heapindex = block;
-      break;
-
-    default:
-      /* Do some of the statistics.  */
-      --chunks_used;
-      bytes_used -= 1 << type;
-      ++chunks_free;
-      bytes_free += 1 << type;
-
-      /* Get the address of the first free fragment in this block.  */
-      prev = (struct list *) ((char *) ADDRESS (block) +
-                             (_heapinfo[block].busy.info.frag.first << type));
-
-      if (_heapinfo[block].busy.info.frag.nfree == (BLOCKSIZE >> type) - 1)
-       {
-         /* If all fragments of this block are free, remove them
-            from the fragment list and free the whole block.  */
-         next = prev;
-         for (i = 1; i < (size_t) (BLOCKSIZE >> type); ++i)
-           next = next->next;
-         prev->prev->next = next;
-         if (next != NULL)
-           next->prev = prev->prev;
-         _heapinfo[block].busy.type = 0;
-         _heapinfo[block].busy.info.size = 1;
-
-         /* Keep the statistics accurate.  */
-         ++chunks_used;
-         bytes_used += BLOCKSIZE;
-         chunks_free -= BLOCKSIZE >> type;
-         bytes_free -= BLOCKSIZE;
-
-         ifree (ADDRESS (block));
-       }
-      else if (_heapinfo[block].busy.info.frag.nfree != 0)
-       {
-         /* If some fragments of this block are free, link this
-            fragment into the fragment list after the first free
-            fragment of this block. */
-         next = (struct list *) ptr;
-         next->next = prev->next;
-         next->prev = prev;
-         prev->next = next;
-         if (next->next != NULL)
-           next->next->prev = next;
-         ++_heapinfo[block].busy.info.frag.nfree;
-       }
-      else
-       {
-         /* No fragments of this block are free, so link this
-            fragment into the fragment list and announce that
-            it is the first free fragment of this block. */
-         prev = (struct list *) ptr;
-         _heapinfo[block].busy.info.frag.nfree = 1;
-         _heapinfo[block].busy.info.frag.first = (unsigned long int)
-           ((unsigned long int) ((char *) ptr - (char *) NULL)
-            % BLOCKSIZE >> type);
-         prev->next = _fraghead[type].next;
-         prev->prev = &_fraghead[type];
-         prev->prev->next = prev;
-         if (prev->next != NULL)
-           prev->next->prev = prev;
-       }
-      break;
-    }
-}
-
-/* Return memory to the heap.  */
-void
-free (ptr)
-     genptr_t ptr;
-{
-#ifdef RCHECK
-  struct hdr *hdr;
-#endif
-
-  nfree++;
-
-  if (ptr == 0)
-    return;
-
-#ifdef RCHECK
-  hdr = ((struct hdr *) ptr) - 1;
-  checkhdr (hdr);
-  hdr->magic = MAGICFREE;
-  zmemset (ptr, FREEFLOOD, hdr->size);
-  ifree (hdr);
-#else
-  ifree (ptr);
-#endif
-}
-
-/* Change the size of a block allocated by `malloc'. */
-
-#ifndef HAVE_MEMMOVE
-/* Snarfed directly from Emacs src/dispnew.c:
-   XXX Should use system bcopy if it handles overlap.  */
-
-/* Like bcopy except never gets confused by overlap.  */
-
-static void
-malloc_safe_bcopy (afrom, ato, size)
-     genptr_t afrom;
-     genptr_t ato;
-     size_t size;
-{
-  char *from, *to;
-
-  from = afrom;
-  to = ato;
-  if (size <= 0 || from == to)
-    return;
-
-  /* If the source and destination don't overlap, then bcopy can
-     handle it.  If they do overlap, but the destination is lower in
-     memory than the source, we'll assume bcopy can handle that.  */
-  if (to < from || from + size <= to)
-    bcopy (from, to, size);
-
-  /* Otherwise, we'll copy from the end.  */
-  else
-    {
-      register char *endf = from + size;
-      register char *endt = to + size;
-
-      /* If TO - FROM is large, then we should break the copy into
-        nonoverlapping chunks of TO - FROM bytes each.  However, if
-        TO - FROM is small, then the bcopy function call overhead
-        makes this not worth it.  The crossover point could be about
-        anywhere.  Since I don't think the obvious copy loop is too
-        bad, I'm trying to err in its favor.  */
-      if (to - from < 64)
-       {
-         do
-           *--endt = *--endf;
-         while (endf != from);
-       }
-      else
-       {
-         for (;;)
-           {
-             endt -= (to - from);
-             endf -= (to - from);
-
-             if (endt < to)
-               break;
-
-             bcopy (endf, endt, to - from);
-           }
-
-         /* If SIZE wasn't a multiple of TO - FROM, there will be a
-            little left over.  The amount left over is
-            (endt + (to - from)) - to, which is endt - from.  */
-         bcopy (from, to, endt - from);
-       }
-    }
-}
-#endif /* !HAVE_MEMMOVE */
-
-/* Resize the given region to the new size, returning a pointer
-   to the (possibly moved) region.  This is optimized for speed;
-   some benchmarks seem to indicate that greater compactness is
-   achieved by unconditionally allocating and copying to a
-   new region.  This module has incestuous knowledge of the
-   internals of both free and malloc. */
-static genptr_t
-irealloc (ptr, size)
-     genptr_t ptr;
-     size_t size;
-{
-  genptr_t result;
-  int type;
-  size_t block, blocks, oldlimit;
-
-  if (size == 0)
-    {
-      ifree (ptr);
-      return imalloc (0);
-    }
-  else if (ptr == NULL)
-    return imalloc (size);
-
-  block = BLOCK (ptr);
-
-  type = _heapinfo[block].busy.type;
-  switch (type)
-    {
-    case 0:
-      /* Maybe reallocate a large block to a small fragment.  */
-      if (size <= BLOCKSIZE / 2)
-       {
-         result = imalloc (size);
-         if (result != NULL)
-           {
-             memcpy (result, ptr, size);
-             ifree (ptr);
-             return result;
-           }
-       }
-
-      /* The new size is a large allocation as well;
-        see if we can hold it in place. */
-      blocks = BLOCKIFY (size);
-      if (blocks < _heapinfo[block].busy.info.size)
-       {
-         /* The new size is smaller; return
-            excess memory to the free list. */
-         _heapinfo[block + blocks].busy.type = 0;
-         _heapinfo[block + blocks].busy.info.size
-           = _heapinfo[block].busy.info.size - blocks;
-         _heapinfo[block].busy.info.size = blocks;
-         /* We have just created a new chunk by splitting a chunk in two.
-            Now we will free this chunk; increment the statistics counter
-            so it doesn't become wrong when ifree decrements it.  */
-         ++chunks_used;
-         ifree (ADDRESS (block + blocks));
-         result = ptr;
-       }
-      else if (blocks == _heapinfo[block].busy.info.size)
-       /* No size change necessary.  */
-       result = ptr;
-      else
-       {
-         /* Won't fit, so allocate a new region that will.
-            Free the old region first in case there is sufficient
-            adjacent free space to grow without moving. */
-         blocks = _heapinfo[block].busy.info.size;
-         /* Prevent free from actually returning memory to the system.  */
-         oldlimit = _heaplimit;
-         _heaplimit = 0;
-         ifree (ptr);
-         result = imalloc (size);
-         if (_heaplimit == 0)
-           _heaplimit = oldlimit;
-         if (result == NULL)
-           {
-             /* Now we're really in trouble.  We have to unfree
-                the thing we just freed.  Unfortunately it might
-                have been coalesced with its neighbors.  */
-             if (_heapindex == block)
-               (void) imalloc (blocks * BLOCKSIZE);
-             else
-               {
-                 genptr_t previous;
-                 previous  = imalloc ((block - _heapindex) * BLOCKSIZE);
-                 (void) imalloc (blocks * BLOCKSIZE);
-                 ifree (previous);
-               }
-             return NULL;
-           }
-         if (ptr != result)
-           memmove (result, ptr, blocks * BLOCKSIZE);
-       }
-      break;
-
-    default:
-      /* Old size is a fragment; type is logarithm
-        to base two of the fragment size.  */
-      if (size > (size_t) (1 << (type - 1)) &&
-         size <= (size_t) (1 << type))
-       /* The new size is the same kind of fragment.  */
-       result = ptr;
-      else
-       {
-         /* The new size is different; allocate a new space,
-            and copy the lesser of the new size and the old. */
-         result = imalloc (size);
-         if (result == NULL)
-           return NULL;
-         memcpy (result, ptr, min (size, (size_t) 1 << type));
-         ifree (ptr);
-       }
-      break;
-    }
-
-  return result;
-}
-
-genptr_t
-realloc (ptr, size)
-     genptr_t ptr;
-     size_t size;
-{
-#ifdef RCHECK
-  struct hdr *hdr;
-  size_t osize;
-#endif
-
-  if (malloc_initialized == 0 && malloc_initialize () == 0)
-    return NULL;
-
-  nrealloc++;
-
-#ifdef RCHECK
-  hdr = ((struct hdr *) ptr) - 1;
-  osize = hdr->size;
-
-  checkhdr (hdr);
-  if (size < osize)
-    zmemset ((char *) ptr + size, FREEFLOOD, osize - size);
-  hdr = (struct hdr *) irealloc ((genptr_t) hdr, sizeof (struct hdr) + size + 1);
-  if (hdr == NULL)
-    return NULL;
-
-  hdr->size = size;
-  hdr->magic = MAGICWORD;
-  ((char *) &hdr[1])[size] = MAGICBYTE;
-  if (size > osize)
-    zmemset ((char *) (hdr + 1) + osize, MALLOCFLOOD, size - osize);
-  return (genptr_t) (hdr + 1);
-#else
-  return (irealloc (ptr, size));
-#endif
-}
-
-/* Allocate an array of NMEMB elements each SIZE bytes long.
-   The entire array is initialized to zeros.  */
-genptr_t
-calloc (nmemb, size)
-     register size_t nmemb;
-     register size_t size;
-{
-  register genptr_t result;
-
-  result = malloc (nmemb * size);
-  if (result != NULL)
-    (void) memset (result, 0, nmemb * size);
-
-  return result;
-}
-
-/* Define the `cfree' alias for `free'.  */
-void
-cfree (ptr)
-     genptr_t ptr;
-{
-  free (ptr);
-}
-
-genptr_t
-memalign (alignment, size)
-     size_t alignment;
-     size_t size;
-{
-  genptr_t result;
-  unsigned long int adj, lastadj;
-
-  /* Allocate a block with enough extra space to pad the block with up to
-     (ALIGNMENT - 1) bytes if necessary.  */
-  result = malloc (size + alignment - 1);
-  if (result == NULL)
-    return NULL;
-
-  /* Figure out how much we will need to pad this particular block
-     to achieve the required alignment.  */
-  adj = (unsigned long int) ((char *) result - (char *) NULL) % alignment;
-
-  do
-    {
-      /* Reallocate the block with only as much excess as it needs.  */
-      free (result);
-      result = malloc (adj + size);
-      if (result == NULL)      /* Impossible unless interrupted.  */
-       return NULL;
-
-      lastadj = adj;
-      adj = (unsigned long int) ((char *) result - (char *) NULL) % alignment;
-      /* It's conceivable we might have been so unlucky as to get a
-        different block with weaker alignment.  If so, this block is too
-        short to contain SIZE after alignment correction.  So we must
-        try again and get another block, slightly larger.  */
-    } while (adj > lastadj);
-
-  if (adj != 0)
-    {
-      /* Record this block in the list of aligned blocks, so that `free'
-        can identify the pointer it is passed, which will be in the middle
-        of an allocated block.  */
-
-      struct alignlist *l;
-      for (l = _aligned_blocks; l != NULL; l = l->next)
-       if (l->aligned == NULL)
-         /* This slot is free.  Use it.  */
-         break;
-      if (l == NULL)
-       {
-         l = (struct alignlist *) imalloc (sizeof (struct alignlist));
-         if (l == NULL)
-           {
-             free (result);
-             return NULL;
-           }
-         l->next = _aligned_blocks;
-         _aligned_blocks = l;
-       }
-      l->exact = result;
-      result = l->aligned = (char *) result + alignment - adj;
-    }
-
-  return result;
-}
-
-/* On some ANSI C systems, some libc functions call _malloc, _free
-   and _realloc.  Make them use the GNU functions.  */
-
-genptr_t
-_malloc (size)
-     size_t size;
-{
-  return malloc (size);
-}
-
-void
-_free (ptr)
-     genptr_t ptr;
-{
-  free (ptr);
-}
-
-genptr_t
-_realloc (ptr, size)
-     genptr_t ptr;
-     size_t size;
-{
-  return realloc (ptr, size);
-}
-
-struct mstats
-mstats ()
-{
-  struct mstats result;
-         
-  result.bytes_total = (char *) default_morecore (0) - _heapbase;
-  result.chunks_used = chunks_used;
-  result.bytes_used = bytes_used;
-  result.chunks_free = chunks_free;
-  result.bytes_free = bytes_free;
-  result.nmalloc = nmalloc;
-  result.nrealloc = nrealloc;
-  result.nfree = nfree;
-  result.nsbrk = nsbrk;
-  result.tsbrk = tsbrk;
-  result.negsbrk = negsbrk;
-  result.tnegsbrk = tnegsbrk;
-
-  return result;
-}
-
-#ifdef RCHECK
-/* Standard debugging hooks for `malloc'. */
-
-static void
-zmemset (ptr, val, size)
-     genptr_t ptr;
-     int val;
-     size_t size;
-{
-  char *cp = ptr;
-
-  while (size--)
-    *cp++ = val;
-}
-
-static enum mcheck_status
-checkhdr (hdr)
-     const struct hdr *hdr;
-{
-  enum mcheck_status status;
-
-  switch (hdr->magic)
-    {
-    default:
-      status = MCHECK_HEAD;
-      break;
-    case MAGICFREE:
-      status = MCHECK_FREE;
-      break;
-    case MAGICWORD:
-      if (((char *) &hdr[1])[hdr->size] != MAGICBYTE)
-       status = MCHECK_TAIL;
-      else
-       status = MCHECK_OK;
-      break;
-    }
-  if (status != MCHECK_OK)
-    mabort (status);
-  return status;
-}
-
-#ifndef botch
-botch (msg)
-     char *msg;
-{
-  fprintf (stderr, "mcheck: %s\n", msg);
-  fflush (stderr);
-  abort ();
-}
-#endif
-
-static void
-mabort (status)
-     enum mcheck_status status;
-{
-  const char *msg;
-
-  switch (status)
-    {
-    case MCHECK_OK:
-      msg = "memory is consistent, library is buggy";
-      break;
-    case MCHECK_HEAD:
-      msg = "memory clobbered before allocated block";
-      break;
-    case MCHECK_TAIL:
-      msg = "memory clobbered past end of allocated block";
-      break;
-    case MCHECK_FREE:
-      msg = "block freed twice";
-      break;
-    default:
-      msg = "bogus mcheck_status, library is buggy";
-      break;
-    }
-
-  botch (msg);
-}
-
-enum mcheck_status
-mprobe (ptr)
-     genptr_t ptr;
-{
-  return checkhdr ((struct hdr *)ptr);
-}
-
-#ifndef STDIO_H_INCLUDED
-#  include <stdio.h>
-#endif
-
-void
-print_malloc_stats (s)
-     char *s;
-{
-  struct mstats ms;
-
-  ms = mstats ();
-  fprintf (stderr, "Memory allocation statistics: %s\n", s ? s : "");
-  fprintf (stderr, "\nTotal chunks in use: %d, total chunks free: %d\n",
-          ms.chunks_used, ms.chunks_free);
-  fprintf (stderr, "Total bytes in use: %u, total bytes free: %u\n",
-          ms.bytes_used, ms.bytes_free);
-  fprintf (stderr, "Total bytes (from heapbase): %d\n", ms.bytes_total);
-  fprintf (stderr, "Total mallocs: %d, total frees: %d, total reallocs: %d\n",
-          ms.nmalloc, ms.nfree, ms.nrealloc);
-  fprintf (stderr, "Total sbrks: %d, total bytes via sbrk: %d\n",
-          ms.nsbrk, ms.tsbrk);
-  fprintf (stderr, "Total negative sbrks: %d, total bytes returned to kernel: %d\n",
-          ms.negsbrk, ms.tnegsbrk);
-}
-#endif /* RCHECK */
diff --git a/lib/malloc/OLD/ogmalloc.c b/lib/malloc/OLD/ogmalloc.c
deleted file mode 100644 (file)
index 6b3600a..0000000
+++ /dev/null
@@ -1,1579 +0,0 @@
-/* DO NOT EDIT THIS FILE -- it is automagically generated.  -*- C -*- */
-
-#define _MALLOC_INTERNAL
-
-/* The malloc headers and source files from the C library follow here.  */
-
-/* Declarations for `malloc' and friends.
-   Copyright 1990, 91, 92, 93, 95, 96 Free Software Foundation, Inc.
-                 Written May 1989 by Mike Haertel.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-This library 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-   The author may be reached (Email) at the address mike@ai.mit.edu,
-   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
-
-#ifndef _MALLOC_H
-
-#define _MALLOC_H      1
-
-#ifdef _MALLOC_INTERNAL
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#if    defined(_LIBC) || defined(STDC_HEADERS) || defined(USG)
-#include <string.h>
-#else
-#ifndef memset
-#define        memset(s, zero, n)      bzero ((s), (n))
-#endif
-#ifndef memcpy
-#define        memcpy(d, s, n)         bcopy ((s), (d), (n))
-#endif
-#endif
-
-#if    defined (__GNU_LIBRARY__) || (defined (__STDC__) && __STDC__)
-#include <limits.h>
-#else
-#ifndef CHAR_BIT
-#define        CHAR_BIT        8
-#endif
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#endif /* _MALLOC_INTERNAL.  */
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
-#undef __P
-#define        __P(args)       args
-#undef __ptr_t
-#define        __ptr_t         void *
-#else /* Not C++ or ANSI C.  */
-#undef __P
-#define        __P(args)       ()
-#undef const
-#define        const
-#undef __ptr_t
-#define        __ptr_t         char *
-#endif /* C++ or ANSI C.  */
-
-#if defined (__STDC__) && __STDC__
-#include <stddef.h>
-#define        __malloc_size_t         size_t
-#define        __malloc_ptrdiff_t      ptrdiff_t
-#else
-#define        __malloc_size_t         unsigned int
-#define        __malloc_ptrdiff_t      int
-#endif
-
-#ifndef        NULL
-#define        NULL    0
-#endif
-
-
-/* Allocate SIZE bytes of memory.  */
-extern __ptr_t malloc __P ((__malloc_size_t __size));
-/* Re-allocate the previously allocated block
-   in __ptr_t, making the new block SIZE bytes long.  */
-extern __ptr_t realloc __P ((__ptr_t __ptr, __malloc_size_t __size));
-/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
-extern __ptr_t calloc __P ((__malloc_size_t __nmemb, __malloc_size_t __size));
-/* Free a block allocated by `malloc', `realloc' or `calloc'.  */
-extern void free __P ((__ptr_t __ptr));
-
-/* Allocate SIZE bytes allocated to ALIGNMENT bytes.  */
-#if ! (defined (_MALLOC_INTERNAL) && __DJGPP__ - 0 == 1) /* Avoid conflict.  */
-extern __ptr_t memalign __P ((__malloc_size_t __alignment,
-                             __malloc_size_t __size));
-#endif
-
-/* Allocate SIZE bytes on a page boundary.  */
-#if ! (defined (_MALLOC_INTERNAL) && defined (emacs)) /* Avoid conflict.  */
-extern __ptr_t valloc __P ((__malloc_size_t __size));
-#endif
-
-
-#ifdef _MALLOC_INTERNAL
-
-/* The allocator divides the heap into blocks of fixed size; large
-   requests receive one or more whole blocks, and small requests
-   receive a fragment of a block.  Fragment sizes are powers of two,
-   and all fragments of a block are the same size.  When all the
-   fragments in a block have been freed, the block itself is freed.  */
-#define INT_BIT                (CHAR_BIT * sizeof(int))
-#define BLOCKLOG       (INT_BIT > 16 ? 12 : 9)
-#define BLOCKSIZE      (1 << BLOCKLOG)
-#define BLOCKIFY(SIZE) (((SIZE) + BLOCKSIZE - 1) / BLOCKSIZE)
-
-/* Determine the amount of memory spanned by the initial heap table
-   (not an absolute limit).  */
-#define HEAP           (INT_BIT > 16 ? 4194304 : 65536)
-
-/* Number of contiguous free blocks allowed to build up at the end of
-   memory before they will be returned to the system.  */
-#define FINAL_FREE_BLOCKS      8
-
-/* Data structure giving per-block information.  */
-typedef union
-  {
-    /* Heap information for a busy block.  */
-    struct
-      {
-       /* Zero for a large (multiblock) object, or positive giving the
-          logarithm to the base two of the fragment size.  */
-       int type;
-       union
-         {
-           struct
-             {
-               __malloc_size_t nfree; /* Free frags in a fragmented block.  */
-               __malloc_size_t first; /* First free fragment of the block.  */
-             } frag;
-           /* For a large object, in its first block, this has the number
-              of blocks in the object.  In the other blocks, this has a
-              negative number which says how far back the first block is.  */
-           __malloc_ptrdiff_t size;
-         } info;
-      } busy;
-    /* Heap information for a free block
-       (that may be the first of a free cluster).  */
-    struct
-      {
-       __malloc_size_t size;   /* Size (in blocks) of a free cluster.  */
-       __malloc_size_t next;   /* Index of next free cluster.  */
-       __malloc_size_t prev;   /* Index of previous free cluster.  */
-      } free;
-  } malloc_info;
-
-/* Pointer to first block of the heap.  */
-extern char *_heapbase;
-
-/* Table indexed by block number giving per-block information.  */
-extern malloc_info *_heapinfo;
-
-/* Address to block number and vice versa.  */
-#define BLOCK(A)       (((char *) (A) - _heapbase) / BLOCKSIZE + 1)
-#define ADDRESS(B)     ((__ptr_t) (((B) - 1) * BLOCKSIZE + _heapbase))
-
-/* Current search index for the heap table.  */
-extern __malloc_size_t _heapindex;
-
-/* Limit of valid info table indices.  */
-extern __malloc_size_t _heaplimit;
-
-/* Doubly linked lists of free fragments.  */
-struct list
-  {
-    struct list *next;
-    struct list *prev;
-  };
-
-/* Free list headers for each fragment size.  */
-extern struct list _fraghead[];
-
-/* List of blocks allocated with `memalign' (or `valloc').  */
-struct alignlist
-  {
-    struct alignlist *next;
-    __ptr_t aligned;           /* The address that memaligned returned.  */
-    __ptr_t exact;             /* The address that malloc returned.  */
-  };
-extern struct alignlist *_aligned_blocks;
-
-/* Instrumentation.  */
-extern __malloc_size_t _chunks_used;
-extern __malloc_size_t _bytes_used;
-extern __malloc_size_t _chunks_free;
-extern __malloc_size_t _bytes_free;
-
-/* Internal versions of `malloc', `realloc', and `free'
-   used when these functions need to call each other.
-   They are the same but don't call the hooks.  */
-extern __ptr_t _malloc_internal __P ((__malloc_size_t __size));
-extern __ptr_t _realloc_internal __P ((__ptr_t __ptr, __malloc_size_t __size));
-extern void _free_internal __P ((__ptr_t __ptr));
-
-#endif /* _MALLOC_INTERNAL.  */
-
-/* Given an address in the middle of a malloc'd object,
-   return the address of the beginning of the object.  */
-extern __ptr_t malloc_find_object_address __P ((__ptr_t __ptr));
-
-/* Underlying allocation function; successive calls should
-   return contiguous pieces of memory.  */
-extern __ptr_t (*__morecore) __P ((__malloc_ptrdiff_t __size));
-
-/* Default value of `__morecore'.  */
-extern __ptr_t __default_morecore __P ((__malloc_ptrdiff_t __size));
-
-/* If not NULL, this function is called after each time
-   `__morecore' is called to increase the data size.  */
-extern void (*__after_morecore_hook) __P ((void));
-
-/* Number of extra blocks to get each time we ask for more core.
-   This reduces the frequency of calling `(*__morecore)'.  */
-extern __malloc_size_t __malloc_extra_blocks;
-
-/* Nonzero if `malloc' has been called and done its initialization.  */
-extern int __malloc_initialized;
-/* Function called to initialize malloc data structures.  */
-extern int __malloc_initialize __P ((void));
-
-/* Hooks for debugging versions.  */
-extern void (*__malloc_initialize_hook) __P ((void));
-extern void (*__free_hook) __P ((__ptr_t __ptr));
-extern __ptr_t (*__malloc_hook) __P ((__malloc_size_t __size));
-extern __ptr_t (*__realloc_hook) __P ((__ptr_t __ptr, __malloc_size_t __size));
-extern __ptr_t (*__memalign_hook) __P ((__malloc_size_t __size,
-                                       __malloc_size_t __alignment));
-
-/* Return values for `mprobe': these are the kinds of inconsistencies that
-   `mcheck' enables detection of.  */
-enum mcheck_status
-  {
-    MCHECK_DISABLED = -1,      /* Consistency checking is not turned on.  */
-    MCHECK_OK,                 /* Block is fine.  */
-    MCHECK_FREE,               /* Block freed twice.  */
-    MCHECK_HEAD,               /* Memory before the block was clobbered.  */
-    MCHECK_TAIL                        /* Memory after the block was clobbered.  */
-  };
-
-/* Activate a standard collection of debugging hooks.  This must be called
-   before `malloc' is ever called.  ABORTFUNC is called with an error code
-   (see enum above) when an inconsistency is detected.  If ABORTFUNC is
-   null, the standard function prints on stderr and then calls `abort'.  */
-extern int mcheck __P ((void (*__abortfunc) __P ((enum mcheck_status))));
-
-/* Check for aberrations in a particular malloc'd block.  You must have
-   called `mcheck' already.  These are the same checks that `mcheck' does
-   when you free or reallocate a block.  */
-extern enum mcheck_status mprobe __P ((__ptr_t __ptr));
-
-/* Activate a standard collection of tracing hooks.  */
-extern void mtrace __P ((void));
-extern void muntrace __P ((void));
-
-/* Statistics available to the user.  */
-struct mstats
-  {
-    __malloc_size_t bytes_total; /* Total size of the heap. */
-    __malloc_size_t chunks_used; /* Chunks allocated by the user. */
-    __malloc_size_t bytes_used;        /* Byte total of user-allocated chunks. */
-    __malloc_size_t chunks_free; /* Chunks in the free list. */
-    __malloc_size_t bytes_free;        /* Byte total of chunks in the free list. */
-  };
-
-/* Pick up the current statistics. */
-extern struct mstats mstats __P ((void));
-
-/* Call WARNFUN with a warning message when memory usage is high.  */
-extern void memory_warnings __P ((__ptr_t __start,
-                                 void (*__warnfun) __P ((const char *))));
-
-
-/* Relocating allocator.  */
-
-/* Allocate SIZE bytes, and store the address in *HANDLEPTR.  */
-extern __ptr_t r_alloc __P ((__ptr_t *__handleptr, __malloc_size_t __size));
-
-/* Free the storage allocated in HANDLEPTR.  */
-extern void r_alloc_free __P ((__ptr_t *__handleptr));
-
-/* Adjust the block at HANDLEPTR to be SIZE bytes long.  */
-extern __ptr_t r_re_alloc __P ((__ptr_t *__handleptr, __malloc_size_t __size));
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* malloc.h  */
-/* Memory allocator `malloc'.
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
-                 Written May 1989 by Mike Haertel.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-This library 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-   The author may be reached (Email) at the address mike@ai.mit.edu,
-   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
-
-#ifndef        _MALLOC_INTERNAL
-#define _MALLOC_INTERNAL
-#include <malloc.h>
-#endif
-#include <errno.h>
-
-/* How to really get more memory.  */
-__ptr_t (*__morecore) __P ((ptrdiff_t __size)) = __default_morecore;
-
-/* Debugging hook for `malloc'.  */
-__ptr_t (*__malloc_hook) __P ((__malloc_size_t __size));
-
-/* Pointer to the base of the first block.  */
-char *_heapbase;
-
-/* Block information table.  Allocated with align/__free (not malloc/free).  */
-malloc_info *_heapinfo;
-
-/* Number of info entries.  */
-static __malloc_size_t heapsize;
-
-/* Search index in the info table.  */
-__malloc_size_t _heapindex;
-
-/* Limit of valid info table indices.  */
-__malloc_size_t _heaplimit;
-
-/* Free lists for each fragment size.  */
-struct list _fraghead[BLOCKLOG];
-
-/* Instrumentation.  */
-__malloc_size_t _chunks_used;
-__malloc_size_t _bytes_used;
-__malloc_size_t _chunks_free;
-__malloc_size_t _bytes_free;
-
-/* Are you experienced?  */
-int __malloc_initialized;
-
-__malloc_size_t __malloc_extra_blocks;
-
-void (*__malloc_initialize_hook) __P ((void));
-void (*__after_morecore_hook) __P ((void));
-
-
-/* Aligned allocation.  */
-static __ptr_t align __P ((__malloc_size_t));
-static __ptr_t
-align (size)
-     __malloc_size_t size;
-{
-  __ptr_t result;
-  unsigned long int adj;
-
-  result = (*__morecore) (size);
-  adj = (unsigned long int) ((unsigned long int) ((char *) result -
-                                                 (char *) NULL)) % BLOCKSIZE;
-  if (adj != 0)
-    {
-      __ptr_t new;
-      adj = BLOCKSIZE - adj;
-      new = (*__morecore) (adj);
-      result = (char *) result + adj;
-    }
-
-  if (__after_morecore_hook)
-    (*__after_morecore_hook) ();
-
-  return result;
-}
-
-/* Get SIZE bytes, if we can get them starting at END.
-   Return the address of the space we got.
-   If we cannot get space at END, fail and return -1.  */
-static __ptr_t get_contiguous_space __P ((__malloc_ptrdiff_t, __ptr_t));
-static __ptr_t
-get_contiguous_space (size, position)
-     __malloc_ptrdiff_t size;
-     __ptr_t position;
-{
-  __ptr_t before;
-  __ptr_t after;
-
-  before = (*__morecore) (0);
-  /* If we can tell in advance that the break is at the wrong place,
-     fail now.  */
-  if (before != position)
-    return 0;
-
-  /* Allocate SIZE bytes and get the address of them.  */
-  after = (*__morecore) (size);
-  if (!after)
-    return 0;
-
-  /* It was not contiguous--reject it.  */
-  if (after != position)
-    {
-      (*__morecore) (- size);
-      return 0;
-    }
-
-  return after;
-}
-
-
-/* This is called when `_heapinfo' and `heapsize' have just
-   been set to describe a new info table.  Set up the table
-   to describe itself and account for it in the statistics.  */
-static void register_heapinfo __P ((void));
-#ifdef __GNUC__
-__inline__
-#endif
-static void
-register_heapinfo ()
-{
-  __malloc_size_t block, blocks;
-
-  block = BLOCK (_heapinfo);
-  blocks = BLOCKIFY (heapsize * sizeof (malloc_info));
-
-  /* Account for the _heapinfo block itself in the statistics.  */
-  _bytes_used += blocks * BLOCKSIZE;
-  ++_chunks_used;
-
-  /* Describe the heapinfo block itself in the heapinfo.  */
-  _heapinfo[block].busy.type = 0;
-  _heapinfo[block].busy.info.size = blocks;
-  /* Leave back-pointers for malloc_find_address.  */
-  while (--blocks > 0)
-    _heapinfo[block + blocks].busy.info.size = -blocks;
-}
-
-/* Set everything up and remember that we have.  */
-int
-__malloc_initialize ()
-{
-  if (__malloc_initialized)
-    return 0;
-
-  if (__malloc_initialize_hook)
-    (*__malloc_initialize_hook) ();
-
-  heapsize = HEAP / BLOCKSIZE;
-  _heapinfo = (malloc_info *) align (heapsize * sizeof (malloc_info));
-  if (_heapinfo == NULL)
-    return 0;
-  memset (_heapinfo, 0, heapsize * sizeof (malloc_info));
-  _heapinfo[0].free.size = 0;
-  _heapinfo[0].free.next = _heapinfo[0].free.prev = 0;
-  _heapindex = 0;
-  _heapbase = (char *) _heapinfo;
-  _heaplimit = BLOCK (_heapbase + heapsize * sizeof (malloc_info));
-
-  register_heapinfo ();
-
-  __malloc_initialized = 1;
-  return 1;
-}
-
-static int morecore_recursing;
-
-/* Get neatly aligned memory, initializing or
-   growing the heap info table as necessary. */
-static __ptr_t morecore __P ((__malloc_size_t));
-static __ptr_t
-morecore (size)
-     __malloc_size_t size;
-{
-  __ptr_t result;
-  malloc_info *newinfo, *oldinfo;
-  __malloc_size_t newsize;
-
-  if (morecore_recursing)
-    /* Avoid recursion.  The caller will know how to handle a null return.  */
-    return NULL;
-
-  result = align (size);
-  if (result == NULL)
-    return NULL;
-
-  /* Check if we need to grow the info table.  */
-  if ((__malloc_size_t) BLOCK ((char *) result + size) > heapsize)
-    {
-      /* Calculate the new _heapinfo table size.  We do not account for the
-        added blocks in the table itself, as we hope to place them in
-        existing free space, which is already covered by part of the
-        existing table.  */
-      newsize = heapsize;
-      do
-       newsize *= 2;
-      while ((__malloc_size_t) BLOCK ((char *) result + size) > newsize);
-
-      /* We must not reuse existing core for the new info table when called
-        from realloc in the case of growing a large block, because the
-        block being grown is momentarily marked as free.  In this case
-        _heaplimit is zero so we know not to reuse space for internal
-        allocation.  */
-      if (_heaplimit != 0)
-       {
-         /* First try to allocate the new info table in core we already
-            have, in the usual way using realloc.  If realloc cannot
-            extend it in place or relocate it to existing sufficient core,
-            we will get called again, and the code above will notice the
-            `morecore_recursing' flag and return null.  */
-         int save = errno;     /* Don't want to clobber errno with ENOMEM.  */
-         morecore_recursing = 1;
-         newinfo = (malloc_info *) _realloc_internal
-           (_heapinfo, newsize * sizeof (malloc_info));
-         morecore_recursing = 0;
-         if (newinfo == NULL)
-           errno = save;
-         else
-           {
-             /* We found some space in core, and realloc has put the old
-                table's blocks on the free list.  Now zero the new part
-                of the table and install the new table location.  */
-             memset (&newinfo[heapsize], 0,
-                     (newsize - heapsize) * sizeof (malloc_info));
-             _heapinfo = newinfo;
-             heapsize = newsize;
-             goto got_heap;
-           }
-       }
-
-      /* Allocate new space for the malloc info table.  */
-      while (1)
-       {
-         newinfo = (malloc_info *) align (newsize * sizeof (malloc_info));
-
-         /* Did it fail?  */
-         if (newinfo == NULL)
-           {
-             (*__morecore) (-size);
-             return NULL;
-           }
-
-         /* Is it big enough to record status for its own space?
-            If so, we win.  */
-         if ((__malloc_size_t) BLOCK ((char *) newinfo
-                                      + newsize * sizeof (malloc_info))
-             < newsize)
-           break;
-
-         /* Must try again.  First give back most of what we just got.  */
-         (*__morecore) (- newsize * sizeof (malloc_info));
-         newsize *= 2;
-       }
-
-      /* Copy the old table to the beginning of the new,
-        and zero the rest of the new table.  */
-      memcpy (newinfo, _heapinfo, heapsize * sizeof (malloc_info));
-      memset (&newinfo[heapsize], 0,
-             (newsize - heapsize) * sizeof (malloc_info));
-      oldinfo = _heapinfo;
-      _heapinfo = newinfo;
-      heapsize = newsize;
-
-      register_heapinfo ();
-
-      /* Reset _heaplimit so _free_internal never decides
-        it can relocate or resize the info table.  */
-      _heaplimit = 0;
-      _free_internal (oldinfo);
-
-      /* The new heap limit includes the new table just allocated.  */
-      _heaplimit = BLOCK ((char *) newinfo + heapsize * sizeof (malloc_info));
-      return result;
-    }
-
- got_heap:
-  _heaplimit = BLOCK ((char *) result + size);
-  return result;
-}
-
-/* Allocate memory from the heap.  */
-__ptr_t
-_malloc_internal (size)
-     __malloc_size_t size;
-{
-  __ptr_t result;
-  __malloc_size_t block, blocks, lastblocks, start;
-  register __malloc_size_t i;
-  struct list *next;
-
-  /* ANSI C allows `malloc (0)' to either return NULL, or to return a
-     valid address you can realloc and free (though not dereference).
-
-     It turns out that some extant code (sunrpc, at least Ultrix's version)
-     expects `malloc (0)' to return non-NULL and breaks otherwise.
-     Be compatible.  */
-
-#if    0
-  if (size == 0)
-    return NULL;
-#endif
-
-  if (size < sizeof (struct list))
-    size = sizeof (struct list);
-
-#ifdef SUNOS_LOCALTIME_BUG
-  if (size < 16)
-    size = 16;
-#endif
-
-  /* Determine the allocation policy based on the request size.  */
-  if (size <= BLOCKSIZE / 2)
-    {
-      /* Small allocation to receive a fragment of a block.
-        Determine the logarithm to base two of the fragment size. */
-      register __malloc_size_t log = 1;
-      --size;
-      while ((size /= 2) != 0)
-       ++log;
-
-      /* Look in the fragment lists for a
-        free fragment of the desired size. */
-      next = _fraghead[log].next;
-      if (next != NULL)
-       {
-         /* There are free fragments of this size.
-            Pop a fragment out of the fragment list and return it.
-            Update the block's nfree and first counters. */
-         result = (__ptr_t) next;
-         next->prev->next = next->next;
-         if (next->next != NULL)
-           next->next->prev = next->prev;
-         block = BLOCK (result);
-         if (--_heapinfo[block].busy.info.frag.nfree != 0)
-           _heapinfo[block].busy.info.frag.first = (unsigned long int)
-             ((unsigned long int) ((char *) next->next - (char *) NULL)
-              % BLOCKSIZE) >> log;
-
-         /* Update the statistics.  */
-         ++_chunks_used;
-         _bytes_used += 1 << log;
-         --_chunks_free;
-         _bytes_free -= 1 << log;
-       }
-      else
-       {
-         /* No free fragments of the desired size, so get a new block
-            and break it into fragments, returning the first.  */
-         result = malloc (BLOCKSIZE);
-         if (result == NULL)
-           return NULL;
-
-         /* Link all fragments but the first into the free list.  */
-         next = (struct list *) ((char *) result + (1 << log));
-         next->next = NULL;
-         next->prev = &_fraghead[log];
-         _fraghead[log].next = next;
-
-         for (i = 2; i < (__malloc_size_t) (BLOCKSIZE >> log); ++i)
-           {
-             next = (struct list *) ((char *) result + (i << log));
-             next->next = _fraghead[log].next;
-             next->prev = &_fraghead[log];
-             next->prev->next = next;
-             next->next->prev = next;
-           }
-
-         /* Initialize the nfree and first counters for this block.  */
-         block = BLOCK (result);
-         _heapinfo[block].busy.type = log;
-         _heapinfo[block].busy.info.frag.nfree = i - 1;
-         _heapinfo[block].busy.info.frag.first = i - 1;
-
-         _chunks_free += (BLOCKSIZE >> log) - 1;
-         _bytes_free += BLOCKSIZE - (1 << log);
-         _bytes_used -= BLOCKSIZE - (1 << log);
-       }
-    }
-  else
-    {
-      /* Large allocation to receive one or more blocks.
-        Search the free list in a circle starting at the last place visited.
-        If we loop completely around without finding a large enough
-        space we will have to get more memory from the system.  */
-      blocks = BLOCKIFY (size);
-      start = block = _heapindex;
-      while (_heapinfo[block].free.size < blocks)
-       {
-         block = _heapinfo[block].free.next;
-         if (block == start)
-           {
-             /* Need to get more from the system.  Get a little extra.  */
-             __malloc_size_t wantblocks = blocks + __malloc_extra_blocks;
-             block = _heapinfo[0].free.prev;
-             lastblocks = _heapinfo[block].free.size;
-             /* Check to see if the new core will be contiguous with the
-                final free block; if so we don't need to get as much.  */
-             if (_heaplimit != 0 && block + lastblocks == _heaplimit &&
-                 /* We can't do this if we will have to make the heap info
-                     table bigger to accomodate the new space.  */
-                 block + wantblocks <= heapsize &&
-                 get_contiguous_space ((wantblocks - lastblocks) * BLOCKSIZE,
-                                       ADDRESS (block + lastblocks)))
-               {
-                 /* We got it contiguously.  Which block we are extending
-                    (the `final free block' referred to above) might have
-                    changed, if it got combined with a freed info table.  */
-                 block = _heapinfo[0].free.prev;
-                 _heapinfo[block].free.size += (wantblocks - lastblocks);
-                 _bytes_free += (wantblocks - lastblocks) * BLOCKSIZE;
-                 _heaplimit += wantblocks - lastblocks;
-                 continue;
-               }
-             result = morecore (wantblocks * BLOCKSIZE);
-             if (result == NULL)
-               return NULL;
-             block = BLOCK (result);
-             /* Put the new block at the end of the free list.  */
-             _heapinfo[block].free.size = wantblocks;
-             _heapinfo[block].free.prev = _heapinfo[0].free.prev;
-             _heapinfo[block].free.next = 0;
-             _heapinfo[0].free.prev = block;
-             _heapinfo[_heapinfo[block].free.prev].free.next = block;
-             ++_chunks_free;
-             /* Now loop to use some of that block for this allocation.  */
-           }
-       }
-
-      /* At this point we have found a suitable free list entry.
-        Figure out how to remove what we need from the list. */
-      result = ADDRESS (block);
-      if (_heapinfo[block].free.size > blocks)
-       {
-         /* The block we found has a bit left over,
-            so relink the tail end back into the free list. */
-         _heapinfo[block + blocks].free.size
-           = _heapinfo[block].free.size - blocks;
-         _heapinfo[block + blocks].free.next
-           = _heapinfo[block].free.next;
-         _heapinfo[block + blocks].free.prev
-           = _heapinfo[block].free.prev;
-         _heapinfo[_heapinfo[block].free.prev].free.next
-           = _heapinfo[_heapinfo[block].free.next].free.prev
-           = _heapindex = block + blocks;
-       }
-      else
-       {
-         /* The block exactly matches our requirements,
-            so just remove it from the list. */
-         _heapinfo[_heapinfo[block].free.next].free.prev
-           = _heapinfo[block].free.prev;
-         _heapinfo[_heapinfo[block].free.prev].free.next
-           = _heapindex = _heapinfo[block].free.next;
-         --_chunks_free;
-       }
-
-      _heapinfo[block].busy.type = 0;
-      _heapinfo[block].busy.info.size = blocks;
-      ++_chunks_used;
-      _bytes_used += blocks * BLOCKSIZE;
-      _bytes_free -= blocks * BLOCKSIZE;
-
-      /* Mark all the blocks of the object just allocated except for the
-        first with a negative number so you can find the first block by
-        adding that adjustment.  */
-      while (--blocks > 0)
-       _heapinfo[block + blocks].busy.info.size = -blocks;
-    }
-
-  return result;
-}
-
-__ptr_t
-malloc (size)
-     __malloc_size_t size;
-{
-  if (!__malloc_initialized && !__malloc_initialize ())
-    return NULL;
-
-  return (__malloc_hook != NULL ? *__malloc_hook : _malloc_internal) (size);
-}
-\f
-#ifndef _LIBC
-
-/* On some ANSI C systems, some libc functions call _malloc, _free
-   and _realloc.  Make them use the GNU functions.  */
-
-__ptr_t
-_malloc (size)
-     __malloc_size_t size;
-{
-  return malloc (size);
-}
-
-void
-_free (ptr)
-     __ptr_t ptr;
-{
-  free (ptr);
-}
-
-__ptr_t
-_realloc (ptr, size)
-     __ptr_t ptr;
-     __malloc_size_t size;
-{
-  return realloc (ptr, size);
-}
-
-#endif
-/* Free a block of memory allocated by `malloc'.
-   Copyright 1990, 1991, 1992, 1994, 1995 Free Software Foundation, Inc.
-                 Written May 1989 by Mike Haertel.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-This library 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-   The author may be reached (Email) at the address mike@ai.mit.edu,
-   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
-
-#ifndef        _MALLOC_INTERNAL
-#define _MALLOC_INTERNAL
-#include <malloc.h>
-#endif
-
-
-/* Cope with systems lacking `memmove'.    */
-#ifndef memmove
-#if  (defined (MEMMOVE_MISSING) || \
-      !defined(_LIBC) && !defined(STDC_HEADERS) && !defined(USG))
-#ifdef emacs
-#undef __malloc_safe_bcopy
-#define __malloc_safe_bcopy safe_bcopy
-#endif
-/* This function is defined in realloc.c.  */
-extern void __malloc_safe_bcopy __P ((__ptr_t, __ptr_t, __malloc_size_t));
-#define memmove(to, from, size)        __malloc_safe_bcopy ((from), (to), (size))
-#endif
-#endif
-
-
-/* Debugging hook for free.  */
-void (*__free_hook) __P ((__ptr_t __ptr));
-
-/* List of blocks allocated by memalign.  */
-struct alignlist *_aligned_blocks = NULL;
-
-/* Return memory to the heap.
-   Like `free' but don't call a __free_hook if there is one.  */
-void
-_free_internal (ptr)
-     __ptr_t ptr;
-{
-  int type;
-  __malloc_size_t block, blocks;
-  register __malloc_size_t i;
-  struct list *prev, *next;
-  __ptr_t curbrk;
-  const __malloc_size_t lesscore_threshold
-    /* Threshold of free space at which we will return some to the system.  */
-    = FINAL_FREE_BLOCKS + 2 * __malloc_extra_blocks;
-
-  register struct alignlist *l;
-
-  if (ptr == NULL)
-    return;
-
-  for (l = _aligned_blocks; l != NULL; l = l->next)
-    if (l->aligned == ptr)
-      {
-       l->aligned = NULL;      /* Mark the slot in the list as free.  */
-       ptr = l->exact;
-       break;
-      }
-
-  block = BLOCK (ptr);
-
-  type = _heapinfo[block].busy.type;
-  switch (type)
-    {
-    case 0:
-      /* Get as many statistics as early as we can.  */
-      --_chunks_used;
-      _bytes_used -= _heapinfo[block].busy.info.size * BLOCKSIZE;
-      _bytes_free += _heapinfo[block].busy.info.size * BLOCKSIZE;
-
-      /* Find the free cluster previous to this one in the free list.
-        Start searching at the last block referenced; this may benefit
-        programs with locality of allocation.  */
-      i = _heapindex;
-      if (i > block)
-       while (i > block)
-         i = _heapinfo[i].free.prev;
-      else
-       {
-         do
-           i = _heapinfo[i].free.next;
-         while (i > 0 && i < block);
-         i = _heapinfo[i].free.prev;
-       }
-
-      /* Determine how to link this block into the free list.  */
-      if (block == i + _heapinfo[i].free.size)
-       {
-         /* Coalesce this block with its predecessor.  */
-         _heapinfo[i].free.size += _heapinfo[block].busy.info.size;
-         block = i;
-       }
-      else
-       {
-         /* Really link this block back into the free list.  */
-         _heapinfo[block].free.size = _heapinfo[block].busy.info.size;
-         _heapinfo[block].free.next = _heapinfo[i].free.next;
-         _heapinfo[block].free.prev = i;
-         _heapinfo[i].free.next = block;
-         _heapinfo[_heapinfo[block].free.next].free.prev = block;
-         ++_chunks_free;
-       }
-
-      /* Now that the block is linked in, see if we can coalesce it
-        with its successor (by deleting its successor from the list
-        and adding in its size).  */
-      if (block + _heapinfo[block].free.size == _heapinfo[block].free.next)
-       {
-         _heapinfo[block].free.size
-           += _heapinfo[_heapinfo[block].free.next].free.size;
-         _heapinfo[block].free.next
-           = _heapinfo[_heapinfo[block].free.next].free.next;
-         _heapinfo[_heapinfo[block].free.next].free.prev = block;
-         --_chunks_free;
-       }
-
-      /* How many trailing free blocks are there now?  */
-      blocks = _heapinfo[block].free.size;
-
-      /* Where is the current end of accessible core?  */
-      curbrk = (*__morecore) (0);
-
-      if (_heaplimit != 0 && curbrk == ADDRESS (_heaplimit))
-       {
-         /* The end of the malloc heap is at the end of accessible core.
-            It's possible that moving _heapinfo will allow us to
-            return some space to the system.  */
-
-         __malloc_size_t info_block = BLOCK (_heapinfo);
-         __malloc_size_t info_blocks = _heapinfo[info_block].busy.info.size;
-         __malloc_size_t prev_block = _heapinfo[block].free.prev;
-         __malloc_size_t prev_blocks = _heapinfo[prev_block].free.size;
-         __malloc_size_t next_block = _heapinfo[block].free.next;
-         __malloc_size_t next_blocks = _heapinfo[next_block].free.size;
-
-         if (/* Win if this block being freed is last in core, the info table
-                is just before it, the previous free block is just before the
-                info table, and the two free blocks together form a useful
-                amount to return to the system.  */
-             (block + blocks == _heaplimit &&
-              info_block + info_blocks == block &&
-              prev_block != 0 && prev_block + prev_blocks == info_block &&
-              blocks + prev_blocks >= lesscore_threshold) ||
-             /* Nope, not the case.  We can also win if this block being
-                freed is just before the info table, and the table extends
-                to the end of core or is followed only by a free block,
-                and the total free space is worth returning to the system.  */
-             (block + blocks == info_block &&
-              ((info_block + info_blocks == _heaplimit &&
-                blocks >= lesscore_threshold) ||
-               (info_block + info_blocks == next_block &&
-                next_block + next_blocks == _heaplimit &&
-                blocks + next_blocks >= lesscore_threshold)))
-             )
-           {
-             malloc_info *newinfo;
-             __malloc_size_t oldlimit = _heaplimit;
-
-             /* Free the old info table, clearing _heaplimit to avoid
-                recursion into this code.  We don't want to return the
-                table's blocks to the system before we have copied them to
-                the new location.  */
-             _heaplimit = 0;
-             _free_internal (_heapinfo);
-             _heaplimit = oldlimit;
-
-             /* Tell malloc to search from the beginning of the heap for
-                free blocks, so it doesn't reuse the ones just freed.  */
-             _heapindex = 0;
-
-             /* Allocate new space for the info table and move its data.  */
-             newinfo = (malloc_info *) _malloc_internal (info_blocks
-                                                         * BLOCKSIZE);
-             memmove (newinfo, _heapinfo, info_blocks * BLOCKSIZE);
-             _heapinfo = newinfo;
-
-             /* We should now have coalesced the free block with the
-                blocks freed from the old info table.  Examine the entire
-                trailing free block to decide below whether to return some
-                to the system.  */
-             block = _heapinfo[0].free.prev;
-             blocks = _heapinfo[block].free.size;
-           }
-
-         /* Now see if we can return stuff to the system.  */
-         if (block + blocks == _heaplimit && blocks >= lesscore_threshold)
-           {
-             register __malloc_size_t bytes = blocks * BLOCKSIZE;
-             _heaplimit -= blocks;
-             (*__morecore) (-bytes);
-             _heapinfo[_heapinfo[block].free.prev].free.next
-               = _heapinfo[block].free.next;
-             _heapinfo[_heapinfo[block].free.next].free.prev
-               = _heapinfo[block].free.prev;
-             block = _heapinfo[block].free.prev;
-             --_chunks_free;
-             _bytes_free -= bytes;
-           }
-       }
-
-      /* Set the next search to begin at this block.  */
-      _heapindex = block;
-      break;
-
-    default:
-      /* Do some of the statistics.  */
-      --_chunks_used;
-      _bytes_used -= 1 << type;
-      ++_chunks_free;
-      _bytes_free += 1 << type;
-
-      /* Get the address of the first free fragment in this block.  */
-      prev = (struct list *) ((char *) ADDRESS (block) +
-                             (_heapinfo[block].busy.info.frag.first << type));
-
-      if (_heapinfo[block].busy.info.frag.nfree == (BLOCKSIZE >> type) - 1)
-       {
-         /* If all fragments of this block are free, remove them
-            from the fragment list and free the whole block.  */
-         next = prev;
-         for (i = 1; i < (__malloc_size_t) (BLOCKSIZE >> type); ++i)
-           next = next->next;
-         prev->prev->next = next;
-         if (next != NULL)
-           next->prev = prev->prev;
-         _heapinfo[block].busy.type = 0;
-         _heapinfo[block].busy.info.size = 1;
-
-         /* Keep the statistics accurate.  */
-         ++_chunks_used;
-         _bytes_used += BLOCKSIZE;
-         _chunks_free -= BLOCKSIZE >> type;
-         _bytes_free -= BLOCKSIZE;
-
-         free (ADDRESS (block));
-       }
-      else if (_heapinfo[block].busy.info.frag.nfree != 0)
-       {
-         /* If some fragments of this block are free, link this
-            fragment into the fragment list after the first free
-            fragment of this block. */
-         next = (struct list *) ptr;
-         next->next = prev->next;
-         next->prev = prev;
-         prev->next = next;
-         if (next->next != NULL)
-           next->next->prev = next;
-         ++_heapinfo[block].busy.info.frag.nfree;
-       }
-      else
-       {
-         /* No fragments of this block are free, so link this
-            fragment into the fragment list and announce that
-            it is the first free fragment of this block. */
-         prev = (struct list *) ptr;
-         _heapinfo[block].busy.info.frag.nfree = 1;
-         _heapinfo[block].busy.info.frag.first = (unsigned long int)
-           ((unsigned long int) ((char *) ptr - (char *) NULL)
-            % BLOCKSIZE >> type);
-         prev->next = _fraghead[type].next;
-         prev->prev = &_fraghead[type];
-         prev->prev->next = prev;
-         if (prev->next != NULL)
-           prev->next->prev = prev;
-       }
-      break;
-    }
-}
-
-/* Return memory to the heap.  */
-void
-free (ptr)
-     __ptr_t ptr;
-{
-  if (__free_hook != NULL)
-    (*__free_hook) (ptr);
-  else
-    _free_internal (ptr);
-}
-
-/* Define the `cfree' alias for `free'.  */
-#ifdef weak_alias
-weak_alias (free, cfree)
-#else
-void
-cfree (ptr)
-     __ptr_t ptr;
-{
-  free (ptr);
-}
-#endif
-/* Change the size of a block allocated by `malloc'.
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
-                    Written May 1989 by Mike Haertel.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-This library 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-   The author may be reached (Email) at the address mike@ai.mit.edu,
-   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
-
-#ifndef        _MALLOC_INTERNAL
-#define _MALLOC_INTERNAL
-#include <malloc.h>
-#endif
-
-
-
-/* Cope with systems lacking `memmove'.    */
-#if  (defined (MEMMOVE_MISSING) || \
-      !defined(_LIBC) && !defined(STDC_HEADERS) && !defined(USG))
-
-#ifdef emacs
-#undef __malloc_safe_bcopy
-#define __malloc_safe_bcopy safe_bcopy
-#else
-
-/* Snarfed directly from Emacs src/dispnew.c:
-   XXX Should use system bcopy if it handles overlap.  */
-
-/* Like bcopy except never gets confused by overlap.  */
-
-void
-__malloc_safe_bcopy (afrom, ato, size)
-     __ptr_t afrom;
-     __ptr_t ato;
-     __malloc_size_t size;
-{
-  char *from = afrom, *to = ato;
-
-  if (size <= 0 || from == to)
-    return;
-
-  /* If the source and destination don't overlap, then bcopy can
-     handle it.  If they do overlap, but the destination is lower in
-     memory than the source, we'll assume bcopy can handle that.  */
-  if (to < from || from + size <= to)
-    bcopy (from, to, size);
-
-  /* Otherwise, we'll copy from the end.  */
-  else
-    {
-      register char *endf = from + size;
-      register char *endt = to + size;
-
-      /* If TO - FROM is large, then we should break the copy into
-        nonoverlapping chunks of TO - FROM bytes each.  However, if
-        TO - FROM is small, then the bcopy function call overhead
-        makes this not worth it.  The crossover point could be about
-        anywhere.  Since I don't think the obvious copy loop is too
-        bad, I'm trying to err in its favor.  */
-      if (to - from < 64)
-       {
-         do
-           *--endt = *--endf;
-         while (endf != from);
-       }
-      else
-       {
-         for (;;)
-           {
-             endt -= (to - from);
-             endf -= (to - from);
-
-             if (endt < to)
-               break;
-
-             bcopy (endf, endt, to - from);
-           }
-
-         /* If SIZE wasn't a multiple of TO - FROM, there will be a
-            little left over.  The amount left over is
-            (endt + (to - from)) - to, which is endt - from.  */
-         bcopy (from, to, endt - from);
-       }
-    }
-}
-#endif /* emacs */
-
-#ifndef memmove
-extern void __malloc_safe_bcopy __P ((__ptr_t, __ptr_t, __malloc_size_t));
-#define memmove(to, from, size) __malloc_safe_bcopy ((from), (to), (size))
-#endif
-
-#endif
-
-
-#define min(A, B) ((A) < (B) ? (A) : (B))
-
-/* Debugging hook for realloc.  */
-__ptr_t (*__realloc_hook) __P ((__ptr_t __ptr, __malloc_size_t __size));
-
-/* Resize the given region to the new size, returning a pointer
-   to the (possibly moved) region.  This is optimized for speed;
-   some benchmarks seem to indicate that greater compactness is
-   achieved by unconditionally allocating and copying to a
-   new region.  This module has incestuous knowledge of the
-   internals of both free and malloc. */
-__ptr_t
-_realloc_internal (ptr, size)
-     __ptr_t ptr;
-     __malloc_size_t size;
-{
-  __ptr_t result;
-  int type;
-  __malloc_size_t block, blocks, oldlimit;
-
-  if (size == 0)
-    {
-      _free_internal (ptr);
-      return _malloc_internal (0);
-    }
-  else if (ptr == NULL)
-    return _malloc_internal (size);
-
-  block = BLOCK (ptr);
-
-  type = _heapinfo[block].busy.type;
-  switch (type)
-    {
-    case 0:
-      /* Maybe reallocate a large block to a small fragment.  */
-      if (size <= BLOCKSIZE / 2)
-       {
-         result = _malloc_internal (size);
-         if (result != NULL)
-           {
-             memcpy (result, ptr, size);
-             _free_internal (ptr);
-             return result;
-           }
-       }
-
-      /* The new size is a large allocation as well;
-        see if we can hold it in place. */
-      blocks = BLOCKIFY (size);
-      if (blocks < _heapinfo[block].busy.info.size)
-       {
-         /* The new size is smaller; return
-            excess memory to the free list. */
-         _heapinfo[block + blocks].busy.type = 0;
-         _heapinfo[block + blocks].busy.info.size
-           = _heapinfo[block].busy.info.size - blocks;
-         _heapinfo[block].busy.info.size = blocks;
-         /* We have just created a new chunk by splitting a chunk in two.
-            Now we will free this chunk; increment the statistics counter
-            so it doesn't become wrong when _free_internal decrements it.  */
-         ++_chunks_used;
-         _free_internal (ADDRESS (block + blocks));
-         result = ptr;
-       }
-      else if (blocks == _heapinfo[block].busy.info.size)
-       /* No size change necessary.  */
-       result = ptr;
-      else
-       {
-         /* Won't fit, so allocate a new region that will.
-            Free the old region first in case there is sufficient
-            adjacent free space to grow without moving. */
-         blocks = _heapinfo[block].busy.info.size;
-         /* Prevent free from actually returning memory to the system.  */
-         oldlimit = _heaplimit;
-         _heaplimit = 0;
-         _free_internal (ptr);
-         result = _malloc_internal (size);
-         if (_heaplimit == 0)
-           _heaplimit = oldlimit;
-         if (result == NULL)
-           {
-             /* Now we're really in trouble.  We have to unfree
-                the thing we just freed.  Unfortunately it might
-                have been coalesced with its neighbors.  */
-             if (_heapindex == block)
-               (void) _malloc_internal (blocks * BLOCKSIZE);
-             else
-               {
-                 __ptr_t previous
-                   = _malloc_internal ((block - _heapindex) * BLOCKSIZE);
-                 (void) _malloc_internal (blocks * BLOCKSIZE);
-                 _free_internal (previous);
-               }
-             return NULL;
-           }
-         if (ptr != result)
-           memmove (result, ptr, blocks * BLOCKSIZE);
-       }
-      break;
-
-    default:
-      /* Old size is a fragment; type is logarithm
-        to base two of the fragment size.  */
-      if (size > (__malloc_size_t) (1 << (type - 1)) &&
-         size <= (__malloc_size_t) (1 << type))
-       /* The new size is the same kind of fragment.  */
-       result = ptr;
-      else
-       {
-         /* The new size is different; allocate a new space,
-            and copy the lesser of the new size and the old. */
-         result = _malloc_internal (size);
-         if (result == NULL)
-           return NULL;
-         memcpy (result, ptr, min (size, (__malloc_size_t) 1 << type));
-         _free_internal (ptr);
-       }
-      break;
-    }
-
-  return result;
-}
-
-__ptr_t
-realloc (ptr, size)
-     __ptr_t ptr;
-     __malloc_size_t size;
-{
-  if (!__malloc_initialized && !__malloc_initialize ())
-    return NULL;
-
-  return (__realloc_hook != NULL ? *__realloc_hook : _realloc_internal)
-    (ptr, size);
-}
-/* Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-This library 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-   The author may be reached (Email) at the address mike@ai.mit.edu,
-   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
-
-#ifndef        _MALLOC_INTERNAL
-#define        _MALLOC_INTERNAL
-#include <malloc.h>
-#endif
-
-/* Allocate an array of NMEMB elements each SIZE bytes long.
-   The entire array is initialized to zeros.  */
-__ptr_t
-calloc (nmemb, size)
-     register __malloc_size_t nmemb;
-     register __malloc_size_t size;
-{
-  register __ptr_t result = malloc (nmemb * size);
-
-  if (result != NULL)
-    (void) memset (result, 0, nmemb * size);
-
-  return result;
-}
-/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
-
-The GNU C Library 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.
-
-The GNU C Library 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 the GNU C Library; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA.  */
-
-#ifndef        _MALLOC_INTERNAL
-#define        _MALLOC_INTERNAL
-#include <malloc.h>
-#endif
-
-#ifndef        __GNU_LIBRARY__
-#define        __sbrk  sbrk
-#endif
-
-#ifdef __GNU_LIBRARY__
-/* It is best not to declare this and cast its result on foreign operating
-   systems with potentially hostile include files.  */
-
-#include <stddef.h>
-extern __ptr_t __sbrk __P ((ptrdiff_t increment));
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-/* Allocate INCREMENT more bytes of data space,
-   and return the start of data space, or NULL on errors.
-   If INCREMENT is negative, shrink data space.  */
-__ptr_t
-__default_morecore (increment)
-     __malloc_ptrdiff_t increment;
-{
-  __ptr_t result = (__ptr_t) __sbrk (increment);
-  if (result == (__ptr_t) -1)
-    return NULL;
-  return result;
-}
-/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-This library 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111 USA.  */
-
-#ifndef        _MALLOC_INTERNAL
-#define _MALLOC_INTERNAL
-#include <malloc.h>
-#endif
-
-#if __DJGPP__ - 0 == 1
-
-/* There is some problem with memalign in DJGPP v1 and we are supposed
-   to omit it.  Noone told me why, they just told me to do it.  */
-
-#else
-
-__ptr_t (*__memalign_hook) __P ((size_t __size, size_t __alignment));
-
-__ptr_t
-memalign (alignment, size)
-     __malloc_size_t alignment;
-     __malloc_size_t size;
-{
-  __ptr_t result;
-  unsigned long int adj, lastadj;
-
-  if (__memalign_hook)
-    return (*__memalign_hook) (alignment, size);
-
-  /* Allocate a block with enough extra space to pad the block with up to
-     (ALIGNMENT - 1) bytes if necessary.  */
-  result = malloc (size + alignment - 1);
-  if (result == NULL)
-    return NULL;
-
-  /* Figure out how much we will need to pad this particular block
-     to achieve the required alignment.  */
-  adj = (unsigned long int) ((char *) result - (char *) NULL) % alignment;
-
-  do
-    {
-      /* Reallocate the block with only as much excess as it needs.  */
-      free (result);
-      result = malloc (adj + size);
-      if (result == NULL)      /* Impossible unless interrupted.  */
-       return NULL;
-
-      lastadj = adj;
-      adj = (unsigned long int) ((char *) result - (char *) NULL) % alignment;
-      /* It's conceivable we might have been so unlucky as to get a
-        different block with weaker alignment.  If so, this block is too
-        short to contain SIZE after alignment correction.  So we must
-        try again and get another block, slightly larger.  */
-    } while (adj > lastadj);
-
-  if (adj != 0)
-    {
-      /* Record this block in the list of aligned blocks, so that `free'
-        can identify the pointer it is passed, which will be in the middle
-        of an allocated block.  */
-
-      struct alignlist *l;
-      for (l = _aligned_blocks; l != NULL; l = l->next)
-       if (l->aligned == NULL)
-         /* This slot is free.  Use it.  */
-         break;
-      if (l == NULL)
-       {
-         l = (struct alignlist *) malloc (sizeof (struct alignlist));
-         if (l == NULL)
-           {
-             free (result);
-             return NULL;
-           }
-         l->next = _aligned_blocks;
-         _aligned_blocks = l;
-       }
-      l->exact = result;
-      result = l->aligned = (char *) result + alignment - adj;
-    }
-
-  return result;
-}
-
-#endif /* Not DJGPP v1 */
diff --git a/lib/malloc/OLD/old-nmalloc.c b/lib/malloc/OLD/old-nmalloc.c
deleted file mode 100644 (file)
index 4d08c44..0000000
+++ /dev/null
@@ -1,890 +0,0 @@
-/* malloc.c - dynamic memory allocation for bash. */
-
-/*  Copyright (C) 1985, 1987, 1997 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, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-In other words, you are welcome to use, share and improve this program.
-You are forbidden to forbid anyone else to use, share and improve
-what you give them.   Help stamp out software-hoarding!  */
-
-/*
- * @(#)nmalloc.c 1 (Caltech) 2/21/82
- *
- *     U of M Modified: 20 Jun 1983 ACT: strange hacks for Emacs
- *
- *     Nov 1983, Mike@BRL, Added support for 4.1C/4.2 BSD.
- *
- * This is a very fast storage allocator.  It allocates blocks of a small 
- * number of different sizes, and keeps free lists of each size.  Blocks
- * that don't exactly fit are passed up to the next larger size.  In this 
- * implementation, the available sizes are (2^n)-4 (or -16) bytes long.
- * This is designed for use in a program that uses vast quantities of
- * memory, but bombs when it runs out.  To make it a little better, it
- * warns the user when he starts to get near the end.
- *
- * June 84, ACT: modified rcheck code to check the range given to malloc,
- * rather than the range determined by the 2-power used.
- *
- * Jan 85, RMS: calls malloc_warning to issue warning on nearly full.
- * No longer Emacs-specific; can serve as all-purpose malloc for GNU.
- * You should call malloc_init to reinitialize after loading dumped Emacs.
- * Call malloc_stats to get info on memory stats if MALLOC_STATS turned on.
- * realloc knows how to return same block given, just changing its size,
- * if the power of 2 is correct.
- */
-#define MALLOC_STATS           /* for the time being */
-
-/*
- * nextf[i] is the pointer to the next free block of size 2^(i+3).  The
- * smallest allocatable block is 8 bytes.  The overhead information will
- * go in the first int of the block, and the returned pointer will point
- * to the second.
- */
-
-/* XXX For the time being, until an autoconf test is created (ce has one) */
-#define bits32_t               int
-#define u_bits32_t     unsigned int
-
-/* Define this to have free() write 0xcf into memory as it's freed, to
-   uncover callers that refer to freed memory. */
-/* SCO 3.2v4 getcwd and possibly other libc routines fail with MEMSCRAMBLE */
-#if !defined (NO_MEMSCRAMBLE)
-#  define MEMSCRAMBLE
-#endif
-
-#if defined (HAVE_CONFIG_H)
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#endif
-
-/* Determine which kind of system this is.  */
-#if defined (SHELL)
-#  include "bashtypes.h"
-#else
-#  include <sys/types.h>
-#endif
-#include <signal.h>
-
-#if defined (HAVE_STRING_H)
-#  include <string.h>
-#else
-#  include <strings.h>
-#endif
-
-#if defined (MALLOC_STATS) || !defined (botch)
-#  include <stdio.h>
-#endif /* MALLOC_STATS || !botch */
-
-/* Define getpagesize () if the system does not.  */
-#ifndef HAVE_GETPAGESIZE
-#  include "getpagesize.h"
-#endif
-
-#if __GNUC__ > 1
-#  define FASTCOPY(s, d, n)  __builtin_memcpy (d, s, n)
-#else /* !__GNUC__ */
-#  if !defined (HAVE_BCOPY)
-#    if !defined (HAVE_MEMMOVE)
-#      define FASTCOPY(s, d, n)  memcpy (d, s, n)
-#    else
-#      define FASTCOPY(s, d, n)  memmove (d, s, n)
-#    endif /* !HAVE_MEMMOVE */
-#  else /* HAVE_BCOPY */
-#    define FASTCOPY(s, d, n)  bcopy (s, d, n)
-#  endif /* HAVE_BCOPY */
-#endif /* !__GNUC__ */
-
-#if !defined (NULL)
-#  define NULL 0
-#endif
-
-#define NBUCKETS       30
-
-#define ISALLOC ((char) 0xf7)  /* magic byte that implies allocation */
-#define ISFREE ((char) 0x54)   /* magic byte that implies free block */
-                               /* this is for error checking only */
-#define ISMEMALIGN ((char) 0xd6)  /* Stored before the value returned by
-                                    memalign, with the rest of the word
-                                    being the distance to the true
-                                    beginning of the block.  */
-
-#if !defined (SBRK_DECLARED)
-extern char *sbrk ();
-#endif /* !SBRK_DECLARED */
-
-#ifdef MALLOC_STATS
-/*
- * NMALLOC[i] is the difference between the number of mallocs and frees
- * for a given block size.  TMALLOC[i] is the total number of mallocs for
- * a given block size.  NMORECORE[i] is the total number of calls to
- * morecore(i).  NMAL and NFRE are counts of the number of calls to malloc()
- * and free(), respectively.  NREALLOC is the total number of calls to
- * realloc(); NRCOPY is the number of times realloc() had to allocate new
- * memory and copy to it.  NRECURSE is a count of the number of recursive
- * calls to malloc() for the same bucket size, which can be caused by calls
- * to malloc() from a signal handler.  NSBRK is the number of calls to sbrk()
- * (whether by morecore() or for alignment); TSBRK is the total number of
- * bytes requested from the kernel with sbrk().  BYTESUSED is the total
- * number of bytes consumed by blocks currently in used; BYTESFREE is the
- * total number of bytes currently on all of the free lists.  NBSPLIT is
- * the number of times a larger block was split to satisfy a smaller request.
- * NBCOALESCE is the number of times two adjacent smaller blocks off the free
- * list were combined to satisfy a larger request.
- */
-struct _malstats {
-  int nmalloc[NBUCKETS];
-  int tmalloc[NBUCKETS];
-  int nmorecore[NBUCKETS];
-  int nmal;
-  int nfre;
-  int nrealloc;
-  int nrcopy;
-  int nrecurse;
-  int nsbrk;
-  bits32_t tsbrk;
-  bits32_t bytesused;
-  bits32_t bytesfree;
-  int nbsplit;
-  int nbcoalesce;
-};
-
-static struct _malstats _mstats;
-
-/* Return statistics describing allocation of blocks of size BLOCKSIZE.
-   NFREE is the number of free blocks for this allocation size.  NUSED
-   is the number of blocks in use.  NMAL is the number of requests for
-   blocks of size BLOCKSIZE.  NMORECORE is the number of times we had
-   to call MORECORE to repopulate the free list for this bucket. */
-struct bucket_stats {
-  u_bits32_t blocksize;
-  int nfree;
-  int nused;
-  int nmal;
-  int nmorecore;
-};
-#endif /* MALLOC_STATS */
-
-/* We have a flag indicating whether memory is allocated, an index in
-   nextf[], a size field, and a sentinel value to determine whether or
-   not a caller wrote before the start of allocated memory; to realloc()
-   memory we either copy mh_nbytes or just change mh_nbytes if there is
-   enough room in the block for the new size.  Range checking is always
-   done. */
-struct mhead {
-  char     mh_alloc;   /* ISALLOC or ISFREE */         /* 1 */
-  char     mh_index;   /* index in nextf[] */          /* 1 */
-/* Remainder are valid only when block is allocated */
-  u_bits32_t mh_nbytes;  /* # of bytes allocated */    /* 4 */
-  u_bits16_t mh_magic2;/* should be == MAGIC2 */       /* 2 */
-};
-
-/* Access free-list pointer of a block.
-   It is stored at block + sizeof (char *).
-   This is not a field in the mhead structure
-   because we want sizeof (struct mhead)
-   to describe the overhead for when the block is in use,
-   and we do not want the free-list pointer to count in that.  */
-
-#define CHAIN(a) \
-  (*(struct mhead **) (sizeof (char *) + (char *) (a)))
-
-#if defined (botch)
-extern void botch ();
-#else
-static void
-botch (s)
-     char *s;
-{
-  fprintf (stderr, "\r\nmalloc: assertion botched: %s\r\n", s);
-  (void)fflush (stderr);
-  abort ();
-}
-#endif /* !botch */
-
-#if !defined (__STRING)
-#  if defined (__STDC__)
-#    define __STRING(x) #x
-#  else
-#    define __STRING(x) "x"
-#  endif
-#endif /* !__STRING */
-
-/* To implement range checking, we write magic values in at the beginning
-   and end of each allocated block, and make sure they are undisturbed
-   whenever a free or a realloc occurs. */
-
-/* Written in each of the 4 bytes following the block's real space */
-#define MAGIC1 0x55
-/* Written in the 2 bytes before the block's real space */
-#define MAGIC2 0x5555
-#define ASSERT(p) do { if (!(p)) botch(__STRING(p)); } while (0)
-#define MSLOP  4               /* 4 bytes extra for MAGIC1s */
-
-/* Minimum and maximum bucket indices for block splitting (and to bound
-   the search for a block to split). */
-#define SPLIT_MIN      3
-#define SPLIT_MID      9
-#define SPLIT_MAX      12
-
-/* Minimum and maximum bucket indices for block coalescing. */
-#define COMBINE_MIN    6
-#define COMBINE_MAX    (pagebucket - 1)
-
-#define MIN_COMBINE_FREE       4
-
-/* nextf[i] is free list of blocks of size 2**(i + 3)  */
-
-static struct mhead *nextf[NBUCKETS];
-
-/* busy[i] is nonzero while allocation of block size i is in progress.  */
-
-static char busy[NBUCKETS];
-
-static int pagesz;     /* system page size. */
-static int pagebucket; /* bucket for requests a page in size */
-
-#if 0
-/* Coalesce two adjacent free blocks off the free list for size NU - 1,
-   as long as there are at least MIN_COMBINE_FREE free blocks and we
-   can find two adjacent free blocks.  nextf[NU -1] is assumed to not
-   be busy; the caller (morecore()) checks for this. */
-static void
-bcoalesce (nu)
-     register int nu;
-{
-  register struct mhead *mp, *mp1, *mp2;
-  register int nfree, nbuck;
-  unsigned long siz;
-
-  nbuck = nu - 1;
-  if (nextf[nbuck] == 0)
-    return;
-
-  nfree = 1;
-  mp1 = nextf[nbuck];
-  mp = CHAIN (mp1);
-  mp2 = (struct mhead *)0;
-  while (CHAIN (mp))
-    {
-      mp2 = mp1;
-      mp1 = mp;
-      mp = CHAIN (mp);
-      nfree++;
-      /* We may not want to run all the way through the free list here;
-        if we do not, we need to check a threshold value here and break
-        if nfree exceeds it. */
-    }
-  if (nfree < MIN_COMBINE_FREE)
-    return;
-  /* OK, now we have mp1 pointing to the block we want to add to nextf[NU].
-     CHAIN(mp2) must equal mp1.  Check that mp1 and mp are adjacent. */
-  if (CHAIN(mp2) != mp1)
-    botch ("bcoalesce: CHAIN(mp2) != mp1");
-  siz = 1 << (nbuck + 3);
-  if (CHAIN (mp1) != (struct mhead *)((char *)mp1 + siz))
-    return;    /* not adjacent */
-
-#ifdef MALLOC_STATS
-  _mstats.nbcoalesce++;
-#endif
-
-  /* Since they are adjacent, remove them from the free list */
-  CHAIN (mp2) = CHAIN (mp);
-
-  /* And add the combined two blocks to nextf[NU]. */
-  mp1->mh_alloc = ISFREE;
-  mp1->mh_index = nu;
-  CHAIN (mp1) = nextf[nu];
-  nextf[nu] = mp1;
-}
-#endif
-
-/* Split a block at index > NU (but less than SPLIT_MAX) into a set of
-   blocks of the correct size, and attach them to nextf[NU].  nextf[NU]
-   is assumed to be empty.  Must be called with signals blocked (e.g.,
-   by morecore()). */
-static void
-bsplit (nu)
-     register int nu;
-{
-  register struct mhead *mp;
-  int nbuck, nblks;
-  unsigned long siz;
-
-  if (nu >= SPLIT_MID)
-    {
-      for (nbuck = SPLIT_MAX; nbuck > nu; nbuck--)
-       {
-         if (busy[nbuck] || nextf[nbuck] == 0)
-           continue;
-         break;
-       }
-    }
-  else
-    {
-      for (nbuck = nu + 1; nbuck <= SPLIT_MAX; nbuck++)
-       {
-         if (busy[nbuck] || nextf[nbuck] == 0)
-           continue;
-         break;
-       }
-    }
-
-  if (nbuck > SPLIT_MAX || nbuck <= nu)
-    return;
-
-  /* XXX might want to split only if nextf[nbuck] has >= 2 blocks free
-     and nbuck is below some threshold. */
-
-#ifdef MALLOC_STATS
-  _mstats.nbsplit++;
-#endif
-
-  /* Figure out how many blocks we'll get. */
-  siz = (1 << (nu + 3));
-  nblks = (1 << (nbuck + 3)) / siz;
-
-  /* Remove the block from the chain of larger blocks. */
-  mp = nextf[nbuck];
-  nextf[nbuck] = CHAIN (mp);
-
-  /* Split the block and put it on the requested chain. */
-  nextf[nu] = mp;
-  while (1)
-    {
-      mp->mh_alloc = ISFREE;
-      mp->mh_index = nu;
-      if (--nblks <= 0) break;
-      CHAIN (mp) = (struct mhead *)((char *)mp + siz);
-      mp = (struct mhead *)((char *)mp + siz);
-    }
-  CHAIN (mp) = 0;
-}
-
-static void
-morecore (nu)                  /* ask system for more memory */
-     register int nu;          /* size index to get more of  */
-{
-  register struct mhead *mp;
-  register int nblks;
-  register long siz;
-  long sbrk_amt;               /* amount to get via sbrk() */
-
-  /* Block all signals in case we are executed from a signal handler. */
-#if defined (HAVE_BSD_SIGNALS)
-  int oldmask;
-  oldmask = sigsetmask (-1);
-#else
-#  if defined (HAVE_POSIX_SIGNALS)
-  sigset_t set, oset;
-  sigfillset (&set);
-  sigemptyset (&oset);
-  sigprocmask (SIG_BLOCK, &set, &oset);
-#  endif /* HAVE_POSIX_SIGNALS */
-#endif /* HAVE_BSD_SIGNALS */
-
-  siz = 1 << (nu + 3); /* size of desired block for nextf[nu] */
-
-  if (siz < 0)
-    return;            /* oops */
-
-#ifdef MALLOC_STATS
-  _mstats.nmorecore[nu]++;
-#endif
-
-  /* Try to split a larger block here, if we're within the range of sizes
-     to split. */
-  if (nu >= SPLIT_MIN && nu < SPLIT_MAX)
-    {
-      bsplit (nu);
-      if (nextf[nu] != 0)
-       goto morecore_done;
-    }
-
-#if 0
-  /* Try to coalesce two adjacent blocks from the free list on nextf[nu - 1],
-     if we can, and we're withing the range of the block coalescing limits. */
-  if (nu >= COMBINE_MIN && nu < COMBINE_MAX && busy[nu - 1] == 0 && nextf[nu - 1])
-    {
-      bcoalesce (nu);
-      if (nextf[nu] != 0)
-        goto morecore_done;
-    }
-#endif
-
-  /* Take at least a page, and figure out how many blocks of the requested
-     size we're getting. */
-  if (siz <= pagesz)
-    {
-      sbrk_amt = pagesz;
-      nblks = sbrk_amt / siz;
-    }
-  else
-    {
-      /* We always want to request an integral multiple of the page size
-        from the kernel, so let's compute whether or not `siz' is such
-        an amount.  If it is, we can just request it.  If not, we want
-        the smallest integral multiple of pagesize that is larger than
-        `siz' and will satisfy the request. */
-      sbrk_amt = siz % pagesz;
-      if (sbrk_amt == 0)
-       sbrk_amt = siz;
-      else
-       sbrk_amt = siz + pagesz - sbrk_amt;
-      nblks = 1;
-    }
-
-#ifdef MALLOC_STATS
-  _mstats.nsbrk++;
-  _mstats.tsbrk += sbrk_amt;
-#endif
-
-  mp = (struct mhead *) sbrk (sbrk_amt);
-
-  /* Totally out of memory. */
-  if ((long)mp == -1)
-    return;
-
-  /* shouldn't happen, but just in case */
-  if ((long)mp & 7)
-    {
-      mp = (struct mhead *) (((long)mp + 8) & ~7);
-      nblks--;
-    }
-
-  /* save new header and link the nblks blocks together */
-  nextf[nu] = mp;
-  while (1)
-    {
-      mp->mh_alloc = ISFREE;
-      mp->mh_index = nu;
-      if (--nblks <= 0) break;
-      CHAIN (mp) = (struct mhead *)((char *)mp + siz);
-      mp = (struct mhead *)((char *)mp + siz);
-    }
-  CHAIN (mp) = 0;
-
-morecore_done:
-#if defined (HAVE_BSD_SIGNALS)
-  sigsetmask (oldmask);
-#else
-#  if defined (HAVE_POSIX_SIGNALS)
-  sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
-#  endif
-#endif /* HAVE_BSD_SIGNALS */
-}
-
-#if defined (MEMSCRAMBLE) || !defined (NO_CALLOC)
-static char *
-zmemset (s, c, n)
-     char *s;
-     int c;
-     register int n;
-{
-  register char *sp;
-
-  sp = s;
-  while (--n >= 0)
-    *sp++ = c;
-  return (s);
-}
-#endif /* MEMSCRAMBLE || !NO_CALLOC */
-
-static void
-malloc_debug_dummy ()
-{
-  ;
-}
-
-char *
-malloc (n)             /* get a block */
-     size_t n;
-{
-  register struct mhead *p;
-  register long nbytes;
-  register int nunits;
-
-  /* Get the system page size and align break pointer so everything will
-     be page-aligned.  The page size must be at least 1K -- anything
-     smaller is increased. */
-  if (pagesz == 0)
-    {
-      register long sbrk_needed;
-
-      pagesz = getpagesize ();
-      if (pagesz < 1024)
-        pagesz = 1024;
-      /* OK, how much do we need to allocate to make things page-aligned?
-         This partial page is wasted space.  Once we figure out how much
-         to advance the break pointer, go ahead and do it. */
-      sbrk_needed = pagesz - ((long)sbrk (0) & (pagesz - 1));  /* sbrk(0) % pagesz */
-      if (sbrk_needed < 0)
-        sbrk_needed += pagesz;
-      /* Now allocate the wasted space. */
-      if (sbrk_needed)
-        {
-#ifdef MALLOC_STATS
-         _mstats.nsbrk++;
-         _mstats.tsbrk += sbrk_needed;
-#endif
-          if ((long)sbrk (sbrk_needed) == -1)
-            return (NULL);
-        }
-      nunits = 0;
-      nbytes = 8;
-      while (pagesz > nbytes)
-        {
-          nbytes <<= 1;
-          nunits++;
-        }
-      pagebucket = nunits;
-    }
-  /* Figure out how many bytes are required, rounding up to the nearest
-     multiple of 4, then figure out which nextf[] area to use.  Try to
-     be smart about where to start searching -- if the number of bytes
-     needed is greater than the page size, we can start at pagebucket. */
-  nbytes = (n + sizeof *p + MSLOP + 3) & ~3;
-  nunits = 0;
-  if (nbytes <= (pagesz >> 1))
-    {
-      register unsigned int shiftr;
-
-      shiftr = (nbytes - 1) >> 2;      /* == (nbytes - 1) / 4 */
-      while (shiftr >>= 1)             /* == (nbytes - 1) / {8,16,32,...} */
-       nunits++;
-    }
-  else
-    {
-      register u_bits32_t amt;
-
-      nunits = pagebucket;
-      amt = pagesz;
-      while (nbytes > amt)
-        {
-          amt <<= 1;
-          nunits++;
-        }
-    }
-
-  /* In case this is reentrant use of malloc from signal handler,
-     pick a block size that no other malloc level is currently
-     trying to allocate.  That's the easiest harmless way not to
-     interfere with the other level of execution.  */
-#ifdef MALLOC_STATS
-  if (busy[nunits]) _mstats.nrecurse++;
-#endif
-  while (busy[nunits]) nunits++;
-  busy[nunits] = 1;
-
-  /* If there are no blocks of the appropriate size, go get some */
-  if (nextf[nunits] == 0)
-    morecore (nunits);
-
-  /* Get one block off the list, and set the new list head */
-  if ((p = nextf[nunits]) == NULL)
-    {
-      busy[nunits] = 0;
-      return NULL;
-    }
-  nextf[nunits] = CHAIN (p);
-  busy[nunits] = 0;
-
-  /* Check for free block clobbered */
-  /* If not for this check, we would gobble a clobbered free chain ptr
-     and bomb out on the NEXT allocate of this size block */
-  if (p->mh_alloc != ISFREE || p->mh_index != nunits)
-    botch ("malloc: block on free list clobbered");
-
-  /* Fill in the info, and if range checking, set up the magic numbers */
-  p->mh_alloc = ISALLOC;
-  p->mh_nbytes = n;
-  p->mh_magic2 = MAGIC2;
-  {
-    register char  *m = (char *) (p + 1) + n;
-
-    *m++ = MAGIC1, *m++ = MAGIC1, *m++ = MAGIC1, *m = MAGIC1;
-  }
-
-#ifdef MEMSCRAMBLE
-  zmemset ((char *)(p + 1), 0xdf, n);  /* scramble previous contents */
-#endif
-#ifdef MALLOC_STATS
-  _mstats.nmalloc[nunits]++;
-  _mstats.tmalloc[nunits]++;
-  _mstats.nmal++;
-#endif /* MALLOC_STATS */
-  return (char *) (p + 1);
-}
-
-void
-free (mem)
-     char *mem;
-{
-  register struct mhead *p;
-  register char *ap;
-  register int nunits;
-
-  if ((ap = mem) == 0)
-    return;
-
-  p = (struct mhead *) ap - 1;
-
-  if (p->mh_alloc == ISMEMALIGN)
-    {
-      ap -= p->mh_nbytes;
-      p = (struct mhead *) ap - 1;
-    }
-
-  if (p->mh_alloc != ISALLOC)
-    {
-      if (p->mh_alloc == ISFREE)
-       botch ("free: called with already freed block argument");
-      else
-       botch ("free: called with unallocated block argument");
-    }
-
-  ASSERT (p->mh_magic2 == MAGIC2);
-  ap += p->mh_nbytes;
-  ASSERT (*ap++ == MAGIC1); ASSERT (*ap++ == MAGIC1);
-  ASSERT (*ap++ == MAGIC1); ASSERT (*ap   == MAGIC1);
-
-#ifdef MEMSCRAMBLE
-  zmemset (mem, 0xcf, p->mh_nbytes);
-#endif
-
-  nunits = p->mh_index;
-
-  ASSERT (nunits < NBUCKETS);
-  p->mh_alloc = ISFREE;
-
-  /* Protect against signal handlers calling malloc.  */
-  busy[nunits] = 1;
-  /* Put this block on the free list.  */
-  CHAIN (p) = nextf[nunits];
-  nextf[nunits] = p;
-  busy[nunits] = 0;
-
-#ifdef MALLOC_STATS
-  _mstats.nmalloc[nunits]--;
-  _mstats.nfre++;
-#endif /* MALLOC_STATS */
-}
-
-char *
-realloc (mem, n)
-     char *mem;
-     register size_t n;
-{
-  register struct mhead *p;
-  register u_bits32_t tocopy;
-  register unsigned int nbytes;
-  register int nunits;
-  register char *m;
-
-#ifdef MALLOC_STATS
-  _mstats.nrealloc++;
-#endif
-
-  if (n == 0)
-    {
-      free (mem);
-      return (NULL);
-    }
-  if ((p = (struct mhead *) mem) == 0)
-    return malloc (n);
-  p--;
-  nunits = p->mh_index;
-  ASSERT (p->mh_alloc == ISALLOC);
-  ASSERT (p->mh_magic2 == MAGIC2);
-
-  m = mem + (tocopy = p->mh_nbytes);
-  ASSERT (*m++ == MAGIC1); ASSERT (*m++ == MAGIC1);
-  ASSERT (*m++ == MAGIC1); ASSERT (*m   == MAGIC1);
-
-  /* See if desired size rounds to same power of 2 as actual size. */
-  nbytes = (n + sizeof *p + MSLOP + 7) & ~7;
-
-  /* If ok, use the same block, just marking its size as changed.  */
-  if (nbytes > (4 << nunits) && nbytes <= (8 << nunits))
-    {
-      m = mem + tocopy;
-      *m++ = 0;  *m++ = 0;  *m++ = 0;  *m++ = 0;
-      p->mh_nbytes = n;
-      m = mem + n;
-      *m++ = MAGIC1;  *m++ = MAGIC1;  *m++ = MAGIC1;  *m++ = MAGIC1;
-      return mem;
-    }
-
-#ifdef MALLOC_STATS
-  _mstats.nrcopy++;
-#endif
-
-  if (n < tocopy)
-    tocopy = n;
-
-  if ((m = malloc (n)) == 0)
-    return 0;
-  FASTCOPY (mem, m, tocopy);
-  free (mem);
-  return m;
-}
-
-char *
-memalign (alignment, size)
-     unsigned int alignment;
-     size_t size;
-{
-  register char *ptr;
-  register char *aligned;
-  register struct mhead *p;
-
-  ptr = malloc (size + alignment);
-
-  if (ptr == 0)
-    return 0;
-  /* If entire block has the desired alignment, just accept it.  */
-  if (((int) ptr & (alignment - 1)) == 0)
-    return ptr;
-  /* Otherwise, get address of byte in the block that has that alignment.  */
-  aligned = (char *) (((int) ptr + alignment - 1) & -alignment);
-
-  /* Store a suitable indication of how to free the block,
-     so that free can find the true beginning of it.  */
-  p = (struct mhead *) aligned - 1;
-  p->mh_nbytes = aligned - ptr;
-  p->mh_alloc = ISMEMALIGN;
-  return aligned;
-}
-
-#if !defined (HPUX)
-/* This runs into trouble with getpagesize on HPUX, and Multimax machines.
-   Patching out seems cleaner than the ugly fix needed.  */
-#if defined (__STDC__)
-void *
-#else
-char *
-#endif
-valloc (size)
-     size_t size;
-{
-  return memalign (getpagesize (), size);
-}
-#endif /* !HPUX */
-
-#ifndef NO_CALLOC
-char *
-calloc (n, s)
-     size_t n, s;
-{
-  size_t total;
-  char *result;
-
-  total = n * s;
-  result = malloc (total);
-  if (result)
-    zmemset (result, 0, total);
-  return result;  
-}
-
-void
-cfree (p)
-     char *p;
-{
-  free (p);
-}
-#endif /* !NO_CALLOC */
-
-#ifdef MALLOC_STATS
-
-struct bucket_stats
-malloc_bucket_stats (size)
-     int size;
-{
-  struct bucket_stats v;
-  register struct mhead *p;
-
-  v.nfree = 0;
-
-  if (size < 0 || size >= NBUCKETS)
-    {
-      v.blocksize = 0;
-      v.nused = v.nmal = 0;
-      return v;
-    }
-
-  v.blocksize = 1 << (size + 3);
-  v.nused = _mstats.nmalloc[size];
-  v.nmal = _mstats.tmalloc[size];
-  v.nmorecore = _mstats.nmorecore[size];
-
-  for (p = nextf[size]; p; p = CHAIN (p))
-    v.nfree++;
-
-  return v;
-}
-
-/* Return a copy of _MSTATS, with two additional fields filled in:
-   BYTESFREE is the total number of bytes on free lists.  BYTESUSED
-   is the total number of bytes in use.  These two fields are fairly
-   expensive to compute, so we do it only when asked to. */
-struct _malstats
-malloc_stats ()
-{
-  struct _malstats result;
-  struct bucket_stats v;
-  register int i;
-
-  result = _mstats;
-  result.bytesused = result.bytesfree = 0;
-  for (i = 0; i < NBUCKETS; i++)
-    {
-      v = malloc_bucket_stats (i);
-      result.bytesfree += v.nfree * v.blocksize;
-      result.bytesused += v.nused * v.blocksize;
-    }
-  return (result);
-}
-
-void
-print_malloc_stats (s)
-     char *s;
-{
-  register int i;
-  int totused, totfree;
-  struct bucket_stats v;
-
-  fprintf (stderr, "Memory allocation statistics: %s\n\tsize\tfree\tin use\ttotal\tmorecore\n", s ? s : "");
-  for (i = totused = totfree = 0; i < NBUCKETS; i++)
-    {
-      v = malloc_bucket_stats (i);
-      fprintf (stderr, "%12lu\t%4d\t%6d\t%5d\t%8d\n", v.blocksize, v.nfree, v.nused, v.nmal, v.nmorecore);
-      totfree += v.nfree * v.blocksize;
-      totused += v.nused * v.blocksize;
-    }
-  fprintf (stderr, "\nTotal bytes in use: %d, total bytes free: %d\n",
-          totused, totfree);
-  fprintf (stderr, "Total mallocs: %d, total frees: %d, total reallocs: %d (%d copies)\n",
-          _mstats.nmal, _mstats.nfre, _mstats.nrealloc, _mstats.nrcopy);
-  fprintf (stderr, "Total sbrks: %d, total bytes via sbrk: %d\n",
-          _mstats.nsbrk, _mstats.tsbrk);
-  fprintf (stderr, "Total blocks split: %d, total block coalesces: %d\n",
-          _mstats.nbsplit, _mstats.nbcoalesce);
-}
-#endif /* MALLOC_STATS */
diff --git a/lib/malloc/OLD/omalloc.c b/lib/malloc/OLD/omalloc.c
deleted file mode 100644 (file)
index 413faeb..0000000
+++ /dev/null
@@ -1,759 +0,0 @@
-/* dynamic memory allocation for GNU. */
-
-/*  Copyright (C) 1985, 1987 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, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-In other words, you are welcome to use, share and improve this program.
-You are forbidden to forbid anyone else to use, share and improve
-what you give them.   Help stamp out software-hoarding!  */
-
-/*
- * @(#)nmalloc.c 1 (Caltech) 2/21/82
- *
- *     U of M Modified: 20 Jun 1983 ACT: strange hacks for Emacs
- *
- *     Nov 1983, Mike@BRL, Added support for 4.1C/4.2 BSD.
- *
- * This is a very fast storage allocator.  It allocates blocks of a small 
- * number of different sizes, and keeps free lists of each size.  Blocks
- * that don't exactly fit are passed up to the next larger size.  In this 
- * implementation, the available sizes are (2^n)-4 (or -16) bytes long.
- * This is designed for use in a program that uses vast quantities of
- * memory, but bombs when it runs out.  To make it a little better, it
- * warns the user when he starts to get near the end.
- *
- * June 84, ACT: modified rcheck code to check the range given to malloc,
- * rather than the range determined by the 2-power used.
- *
- * Jan 85, RMS: calls malloc_warning to issue warning on nearly full.
- * No longer Emacs-specific; can serve as all-purpose malloc for GNU.
- * You should call malloc_init to reinitialize after loading dumped Emacs.
- * Call malloc_stats to get info on memory stats if MSTATS turned on.
- * realloc knows how to return same block given, just changing its size,
- * if the power of 2 is correct.
- */
-
-/*
- * nextf[i] is the pointer to the next free block of size 2^(i+3).  The
- * smallest allocatable block is 8 bytes.  The overhead information will
- * go in the first int of the block, and the returned pointer will point
- * to the second.
- *
-#ifdef MSTATS
- * nmalloc[i] is the difference between the number of mallocs and frees
- * for a given block size.
-#endif
- */
-
-/* Define this to have free() write 0xcf into memory as it's freed, to
-   uncover callers that refer to freed memory. */
-/* SCO 3.2v4 getcwd and possibly other libc routines fail with MEMSCRAMBLE */
-#if !defined (NO_MEMSCRAMBLE)
-#  define MEMSCRAMBLE
-#endif
-
-#if defined (emacs) || defined (HAVE_CONFIG_H)
-#  include <config.h>
-#endif /* emacs */
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#endif
-
-/* Determine which kind of system this is.  */
-#if defined (SHELL)
-#  include "bashtypes.h"
-#else
-#  include <sys/types.h>
-#endif
-#include <signal.h>
-
-/* Define getpagesize () if the system does not.  */
-#ifndef HAVE_GETPAGESIZE
-#  include "getpagesize.h"
-#endif
-
-#if defined (HAVE_RESOURCE)
-#  include <sys/time.h>
-#  include <sys/resource.h>
-#endif /* HAVE_RESOURCE */
-
-/* Check for the needed symbols.  If they aren't present, this
-   system's <sys/resource.h> isn't very useful to us. */
-#if !defined (RLIMIT_DATA)
-#  undef HAVE_RESOURCE
-#endif
-
-#if __GNUC__ > 1
-#  define FASTCOPY(s, d, n)  __builtin_memcpy (d, s, n)
-#else /* !__GNUC__ */
-#  if !defined (HAVE_BCOPY)
-#    if !defined (HAVE_MEMMOVE)
-#      define FASTCOPY(s, d, n)  memcpy (d, s, n)
-#    else
-#      define FASTCOPY(s, d, n)  memmove (d, s, n)
-#    endif /* !HAVE_MEMMOVE */
-#  else /* HAVE_BCOPY */
-#    define FASTCOPY(s, d, n)  bcopy (s, d, n)
-#  endif /* HAVE_BCOPY */
-#endif /* !__GNUC__ */
-
-#if !defined (NULL)
-#  define NULL 0
-#endif
-
-#define start_of_data() &etext
-
-#define ISALLOC ((char) 0xf7)  /* magic byte that implies allocation */
-#define ISFREE ((char) 0x54)   /* magic byte that implies free block */
-                               /* this is for error checking only */
-#define ISMEMALIGN ((char) 0xd6)  /* Stored before the value returned by
-                                    memalign, with the rest of the word
-                                    being the distance to the true
-                                    beginning of the block.  */
-extern char etext;
-
-#if !defined (SBRK_DECLARED)
-extern char *sbrk ();
-#endif /* !SBRK_DECLARED */
-
-/* These two are for user programs to look at, when they are interested.  */
-unsigned int malloc_sbrk_used;       /* amount of data space used now */
-unsigned int malloc_sbrk_unused;     /* amount more we can have */
-
-/* start of data space; can be changed by calling init_malloc */
-static char *data_space_start;
-
-static void get_lim_data ();
-
-#ifdef MSTATS
-static int nmalloc[30];
-static int nmal, nfre;
-#endif /* MSTATS */
-
-/* If range checking is not turned on, all we have is a flag indicating
-   whether memory is allocated, an index in nextf[], and a size field; to
-   realloc() memory we copy either size bytes or 1<<(index+3) bytes depending
-   on whether the former can hold the exact size (given the value of
-   'index').  If range checking is on, we always need to know how much space
-   is allocated, so the 'size' field is never used. */
-
-struct mhead {
-       char     mh_alloc;      /* ISALLOC or ISFREE */
-       char     mh_index;      /* index in nextf[] */
-/* Remainder are valid only when block is allocated */
-       unsigned short mh_size; /* size, if < 0x10000 */
-#ifdef RCHECK
-       unsigned int mh_nbytes; /* number of bytes allocated */
-       int      mh_magic4;     /* should be == MAGIC4 */
-#endif /* RCHECK */
-};
-
-/* Access free-list pointer of a block.
-  It is stored at block + 4.
-  This is not a field in the mhead structure
-  because we want sizeof (struct mhead)
-  to describe the overhead for when the block is in use,
-  and we do not want the free-list pointer to count in that.  */
-
-#define CHAIN(a) \
-  (*(struct mhead **) (sizeof (char *) + (char *) (a)))
-
-#ifdef RCHECK
-#  include <stdio.h>
-#  if !defined (botch)
-#    define botch(x) abort ()
-#  else
-extern void botch();
-#  endif /* botch */
-
-#  if !defined (__STRING)
-#    if defined (__STDC__)
-#      define __STRING(x) #x
-#    else
-#      define __STRING(x) "x"
-#    endif
-#  endif
-
-  /* To implement range checking, we write magic values in at the beginning
-     and end of each allocated block, and make sure they are undisturbed
-     whenever a free or a realloc occurs. */
-
-  /* Written in each of the 4 bytes following the block's real space */
-#  define MAGIC1 0x55
-  /* Written in the 4 bytes before the block's real space */
-#  define MAGIC4 0x55555555
-#  define ASSERT(p) if (!(p)) botch(__STRING(p)); else
-#  define EXTRA  4             /* 4 bytes extra for MAGIC1s */
-#else /* !RCHECK */
-#  define ASSERT(p)
-#  define EXTRA  0
-#endif /* RCHECK */
-
-/* nextf[i] is free list of blocks of size 2**(i + 3)  */
-
-static struct mhead *nextf[30];
-
-/* busy[i] is nonzero while allocation of block size i is in progress.  */
-
-static char busy[30];
-
-/* Number of bytes of writable memory we can expect to be able to get */
-static unsigned int lim_data;
-
-/* Level number of warnings already issued.
-  0 -- no warnings issued.
-  1 -- 75% warning already issued.
-  2 -- 85% warning already issued.
-*/
-static int warnlevel;
-
-/* Function to call to issue a warning;
-   0 means don't issue them.  */
-static void (*warnfunction) ();
-
-/* nonzero once initial bunch of free blocks made */
-static int gotpool;
-
-char *_malloc_base;
-
-static void getpool ();
-
-/* Cause reinitialization based on job parameters;
-  also declare where the end of pure storage is. */
-void
-malloc_init (start, warnfun)
-     char *start;
-     void (*warnfun) ();
-{
-  if (start)
-    data_space_start = start;
-  lim_data = 0;
-  warnlevel = 0;
-  warnfunction = warnfun;
-}
-
-/* Return the maximum size to which MEM can be realloc'd
-   without actually requiring copying.  */
-
-int
-malloc_usable_size (mem)
-     char *mem;
-{
-  int blocksize = 8 << (((struct mhead *) mem) - 1) -> mh_index;
-
-  return blocksize - sizeof (struct mhead) - EXTRA;
-}
-
-static void
-morecore (nu)                  /* ask system for more memory */
-     register int nu;          /* size index to get more of  */
-{
-  register char *cp;
-  register int nblks;
-  register unsigned int siz;
-
-  /* Block all signals in case we are executed from a signal handler. */
-#if defined (HAVE_BSD_SIGNALS)
-  int oldmask;
-  oldmask = sigsetmask (-1);
-#else
-#  if defined (HAVE_POSIX_SIGNALS)
-  sigset_t set, oset;
-  sigfillset (&set);
-  sigemptyset (&oset);
-  sigprocmask (SIG_BLOCK, &set, &oset);
-#  endif /* HAVE_POSIX_SIGNALS */
-#endif /* HAVE_BSD_SIGNALS */
-
-  if (!data_space_start)
-    {
-      data_space_start = start_of_data ();
-    }
-
-  if (lim_data == 0)
-    get_lim_data ();
-
- /* On initial startup, get two blocks of each size up to 1k bytes */
-  if (!gotpool)
-    { getpool (); getpool (); gotpool = 1; }
-
-  /* Find current end of memory and issue warning if getting near max */
-
-  cp = sbrk (0);
-  siz = cp - data_space_start;
-  malloc_sbrk_used = siz;
-  malloc_sbrk_unused = lim_data - siz;
-
-  if (warnfunction)
-    switch (warnlevel)
-      {
-      case 0: 
-       if (siz > (lim_data / 4) * 3)
-         {
-           warnlevel++;
-           (*warnfunction) ("Warning: past 75% of memory limit");
-         }
-       break;
-      case 1: 
-       if (siz > (lim_data / 20) * 17)
-         {
-           warnlevel++;
-           (*warnfunction) ("Warning: past 85% of memory limit");
-         }
-       break;
-      case 2: 
-       if (siz > (lim_data / 20) * 19)
-         {
-           warnlevel++;
-           (*warnfunction) ("Warning: past 95% of memory limit");
-         }
-       break;
-      }
-
-  if ((int) cp & 0x3ff)        /* land on 1K boundaries */
-    sbrk (1024 - ((int) cp & 0x3ff));
-
- /* Take at least 2k, and figure out how many blocks of the desired size
-    we're about to get */
-  nblks = 1;
-  if ((siz = nu) < 8)
-    nblks = 1 << ((siz = 8) - nu);
-
-  if ((cp = sbrk (1 << (siz + 3))) == (char *) -1)
-    return;                    /* no more room! */
-
-  if ((int) cp & 7)
-    {          /* shouldn't happen, but just in case */
-      cp = (char *) (((int) cp + 8) & ~7);
-      nblks--;
-    }
-
- /* save new header and link the nblks blocks together */
-  nextf[nu] = (struct mhead *) cp;
-  siz = 1 << (nu + 3);
-  while (1)
-    {
-      ((struct mhead *) cp) -> mh_alloc = ISFREE;
-      ((struct mhead *) cp) -> mh_index = nu;
-      if (--nblks <= 0) break;
-      CHAIN ((struct mhead *) cp) = (struct mhead *) (cp + siz);
-      cp += siz;
-    }
-  CHAIN ((struct mhead *) cp) = 0;
-
-#if defined (HAVE_BSD_SIGNALS)
-  sigsetmask (oldmask);
-#else
-#  if defined (HAVE_POSIX_SIGNALS)
-  sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
-#  endif
-#endif /* HAVE_BSD_SIGNALS */
-}
-
-static void
-getpool ()
-{
-  register int nu;
-  register char *cp = sbrk (0);
-
-  if ((int) cp & 0x3ff)        /* land on 1K boundaries */
-    sbrk (1024 - ((int) cp & 0x3ff));
-
-  /* Record address of start of space allocated by malloc.  */
-  if (_malloc_base == 0)
-    _malloc_base = cp;
-
-  /* Get 2k of storage */
-
-  cp = sbrk (04000);
-  if (cp == (char *) -1)
-    return;
-
-  /* Divide it into an initial 8-word block
-     plus one block of size 2**nu for nu = 3 ... 10.  */
-
-  CHAIN (cp) = nextf[0];
-  nextf[0] = (struct mhead *) cp;
-  ((struct mhead *) cp) -> mh_alloc = ISFREE;
-  ((struct mhead *) cp) -> mh_index = 0;
-  cp += 8;
-
-  for (nu = 0; nu < 7; nu++)
-    {
-      CHAIN (cp) = nextf[nu];
-      nextf[nu] = (struct mhead *) cp;
-      ((struct mhead *) cp) -> mh_alloc = ISFREE;
-      ((struct mhead *) cp) -> mh_index = nu;
-      cp += 8 << nu;
-    }
-}
-
-#if defined (MEMSCRAMBLE) || !defined (NO_CALLOC)
-static char *
-zmemset (s, c, n)
-     char *s;
-     int c;
-     register int n;
-{
-  register char *sp;
-
-  sp = s;
-  while (--n >= 0)
-    *sp++ = c;
-  return (s);
-}
-#endif /* MEMSCRAMBLE || !NO_CALLOC */
-
-char *
-malloc (n)             /* get a block */
-     unsigned int n;
-{
-  register struct mhead *p;
-  register unsigned int nbytes;
-  register int nunits = 0;
-
-  /* Figure out how many bytes are required, rounding up to the nearest
-     multiple of 4, then figure out which nextf[] area to use */
-  nbytes = (n + sizeof *p + EXTRA + 3) & ~3;
-  {
-    register unsigned int   shiftr = (nbytes - 1) >> 2;
-
-    while (shiftr >>= 1)
-      nunits++;
-  }
-
-  /* In case this is reentrant use of malloc from signal handler,
-     pick a block size that no other malloc level is currently
-     trying to allocate.  That's the easiest harmless way not to
-     interfere with the other level of execution.  */
-  while (busy[nunits]) nunits++;
-  busy[nunits] = 1;
-
-  /* If there are no blocks of the appropriate size, go get some */
-  /* COULD SPLIT UP A LARGER BLOCK HERE ... ACT */
-  if (nextf[nunits] == 0)
-    morecore (nunits);
-
-  /* Get one block off the list, and set the new list head */
-  if ((p = nextf[nunits]) == 0)
-    {
-      busy[nunits] = 0;
-      return 0;
-    }
-  nextf[nunits] = CHAIN (p);
-  busy[nunits] = 0;
-
-  /* Check for free block clobbered */
-  /* If not for this check, we would gobble a clobbered free chain ptr */
-  /* and bomb out on the NEXT allocate of this size block */
-  if (p -> mh_alloc != ISFREE || p -> mh_index != nunits)
-#ifdef RCHECK
-    botch ("block on free list clobbered");
-#else /* not RCHECK */
-    abort ();
-#endif /* not RCHECK */
-
-  /* Fill in the info, and if range checking, set up the magic numbers */
-  p -> mh_alloc = ISALLOC;
-#ifdef RCHECK
-  p -> mh_nbytes = n;
-  p -> mh_magic4 = MAGIC4;
-  {
-    register char  *m = (char *) (p + 1) + n;
-
-    *m++ = MAGIC1, *m++ = MAGIC1, *m++ = MAGIC1, *m = MAGIC1;
-  }
-#else /* not RCHECK */
-  p -> mh_size = n;
-#endif /* not RCHECK */
-#ifdef MEMSCRAMBLE
-  zmemset ((char *)(p + 1), 0xdf, n);  /* scramble previous contents */
-#endif
-#ifdef MSTATS
-  nmalloc[nunits]++;
-  nmal++;
-#endif /* MSTATS */
-  return (char *) (p + 1);
-}
-
-void
-free (mem)
-     char *mem;
-{
-  register struct mhead *p;
-  {
-    register char *ap = mem;
-
-    if (ap == 0)
-      return;
-
-    p = (struct mhead *) ap - 1;
-
-    if (p -> mh_alloc == ISMEMALIGN)
-      {
-#ifdef RCHECK
-       ap -= p->mh_nbytes;
-#else
-       ap -= p->mh_size;       /* XXX */
-#endif
-       p = (struct mhead *) ap - 1;
-      }
-
-#ifndef RCHECK
-    if (p -> mh_alloc != ISALLOC)
-      abort ();
-
-#else /* RCHECK */
-    if (p -> mh_alloc != ISALLOC)
-      {
-       if (p -> mh_alloc == ISFREE)
-         botch ("free: Called with already freed block argument\n");
-       else
-         botch ("free: Called with unallocated block argument\n");
-      }
-
-    ASSERT (p -> mh_magic4 == MAGIC4);
-    ap += p -> mh_nbytes;
-    ASSERT (*ap++ == MAGIC1); ASSERT (*ap++ == MAGIC1);
-    ASSERT (*ap++ == MAGIC1); ASSERT (*ap   == MAGIC1);
-#endif /* RCHECK */
-  }
-#ifdef MEMSCRAMBLE
-  {
-    register int n;
-    
-#ifdef RCHECK
-    n = p->mh_nbytes;
-#else /* not RCHECK */
-    n = p->mh_size;
-#endif /* not RCHECK */
-    zmemset (mem, 0xcf, n);
-  }
-#endif
-  {
-    register int nunits = p -> mh_index;
-
-    ASSERT (nunits <= 29);
-    p -> mh_alloc = ISFREE;
-
-    /* Protect against signal handlers calling malloc.  */
-    busy[nunits] = 1;
-    /* Put this block on the free list.  */
-    CHAIN (p) = nextf[nunits];
-    nextf[nunits] = p;
-    busy[nunits] = 0;
-
-#ifdef MSTATS
-    nmalloc[nunits]--;
-    nfre++;
-#endif /* MSTATS */
-  }
-}
-
-char *
-realloc (mem, n)
-     char *mem;
-     register unsigned int n;
-{
-  register struct mhead *p;
-  register unsigned int tocopy;
-  register unsigned int nbytes;
-  register int nunits;
-
-  if ((p = (struct mhead *) mem) == 0)
-    return malloc (n);
-  p--;
-  nunits = p -> mh_index;
-  ASSERT (p -> mh_alloc == ISALLOC);
-#ifdef RCHECK
-  ASSERT (p -> mh_magic4 == MAGIC4);
-  {
-    register char *m = mem + (tocopy = p -> mh_nbytes);
-    ASSERT (*m++ == MAGIC1); ASSERT (*m++ == MAGIC1);
-    ASSERT (*m++ == MAGIC1); ASSERT (*m   == MAGIC1);
-  }
-#else /* not RCHECK */
-  if (p -> mh_index >= 13)
-    tocopy = (1 << (p -> mh_index + 3)) - sizeof *p;
-  else
-    tocopy = p -> mh_size;
-#endif /* not RCHECK */
-
-  /* See if desired size rounds to same power of 2 as actual size. */
-  nbytes = (n + sizeof *p + EXTRA + 7) & ~7;
-
-  /* If ok, use the same block, just marking its size as changed.  */
-  if (nbytes > (4 << nunits) && nbytes <= (8 << nunits))
-    {
-#ifdef RCHECK
-      register char *m = mem + tocopy;
-      *m++ = 0;  *m++ = 0;  *m++ = 0;  *m++ = 0;
-      p-> mh_nbytes = n;
-      m = mem + n;
-      *m++ = MAGIC1;  *m++ = MAGIC1;  *m++ = MAGIC1;  *m++ = MAGIC1;
-#else /* not RCHECK */
-      p -> mh_size = n;
-#endif /* not RCHECK */
-      return mem;
-    }
-
-  if (n < tocopy)
-    tocopy = n;
-  {
-    register char *new;
-
-    if ((new = malloc (n)) == 0)
-      return 0;
-    FASTCOPY (mem, new, tocopy);
-    free (mem);
-    return new;
-  }
-}
-
-char *
-memalign (alignment, size)
-     unsigned int alignment, size;
-{
-  register char *ptr;
-  register char *aligned;
-  register struct mhead *p;
-
-  ptr = malloc (size + alignment);
-
-  if (ptr == 0)
-    return 0;
-  /* If entire block has the desired alignment, just accept it.  */
-  if (((int) ptr & (alignment - 1)) == 0)
-    return ptr;
-  /* Otherwise, get address of byte in the block that has that alignment.  */
-  aligned = (char *) (((int) ptr + alignment - 1) & -alignment);
-
-  /* Store a suitable indication of how to free the block,
-     so that free can find the true beginning of it.  */
-  p = (struct mhead *) aligned - 1;
-  p -> mh_size = aligned - ptr;
-  p -> mh_alloc = ISMEMALIGN;
-  return aligned;
-}
-
-#if !defined (HPUX)
-/* This runs into trouble with getpagesize on HPUX, and Multimax machines.
-   Patching out seems cleaner than the ugly fix needed.  */
-#if defined (__STDC__)
-void *
-#else
-char *
-#endif
-valloc (size)
-     size_t size;
-{
-  return memalign (getpagesize (), size);
-}
-#endif /* !HPUX */
-
-#ifndef NO_CALLOC
-char *
-calloc (n, s)
-     size_t n, s;
-{
-  size_t total;
-  char *result;
-
-  total = n * s;
-  result = malloc (total);
-  if (result)
-    zmemset (result, 0, total);
-  return result;  
-}
-
-void
-cfree (p)
-     char *p;
-{
-  free (p);
-}
-#endif /* !NO_CALLOC */
-
-#ifdef MSTATS
-/* Return statistics describing allocation of blocks of size 2**n. */
-
-struct mstats_value
-  {
-    int blocksize;
-    int nfree;
-    int nused;
-  };
-
-struct mstats_value
-malloc_stats (size)
-     int size;
-{
-  struct mstats_value v;
-  register int i;
-  register struct mhead *p;
-
-  v.nfree = 0;
-
-  if (size < 0 || size >= 30)
-    {
-      v.blocksize = 0;
-      v.nused = 0;
-      return v;
-    }
-
-  v.blocksize = 1 << (size + 3);
-  v.nused = nmalloc[size];
-
-  for (p = nextf[size]; p; p = CHAIN (p))
-    v.nfree++;
-
-  return v;
-}
-#endif /* MSTATS */
-
-/*
- *     This function returns the total number of bytes that the process
- *     will be allowed to allocate via the sbrk(2) system call.  On
- *     BSD systems this is the total space allocatable to stack and
- *     data.  On USG systems this is the data space only.
- */
-
-#if !defined (HAVE_RESOURCE)
-extern long ulimit ();
-
-static void
-get_lim_data ()
-{    
-  lim_data = ulimit (3, 0);
-  lim_data -= (long) data_space_start;
-}
-
-#else /* HAVE_RESOURCE */
-static void
-get_lim_data ()
-{
-  struct rlimit XXrlimit;
-
-  getrlimit (RLIMIT_DATA, &XXrlimit);
-#ifdef RLIM_INFINITY
-  lim_data = XXrlimit.rlim_cur & RLIM_INFINITY; /* soft limit */
-#else
-  lim_data = XXrlimit.rlim_cur;        /* soft limit */
-#endif
-}
-
-#endif /* HAVE_RESOURCE */
diff --git a/lib/malloc/memtest.c b/lib/malloc/memtest.c
deleted file mode 100644 (file)
index 15f8115..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * malloc test program.
- *
- * to build:
- *     make x.o
- *     gcc -g -o x x.o xmalloc.o lib/malloc/libmalloc.a
- */
-
-/* Copyright (C) 2002-2003 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 <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-
-#define USING_BASH_MALLOC
-#define HAVE_STRINGIZE
-
-#include "xmalloc.h"
-
-int interrupt_immediately = 0;
-
-static char    xp[64];
-
-main(int c, char **v)
-{
-       char    *p;
-
-       malloc_set_register(1);
-
-#if 0
-       free (xp);      /* free unallocated memory */
-#endif
-
-#if 0
-       p = xrealloc(xp, 128);
-#endif
-
-#if 0
-       /*
-        * request an amount so that the bucket changes when the malloc
-        * overhead is added to the requested size.  This had better
-        * succeed.
-        */
-       p = xmalloc(25);
-       p[0] = 'a';
-       p[1] = '\0';
-       free(p);        /* sanity check on underflow checks in free() */
-#endif
-
-#if 0
-       p = xmalloc(28);
-       /* This works for little-endian machines like i386. */
-       p[-4] = '\7';   /* underflow */
-       p = xrealloc(p, 128);   /* realloc corrupted memory */
-#endif
-
-#if 0
-       p = xmalloc(28);
-       /* This works for little-endian machines like i386. */
-       p[-4] = '\7';   /* underflow */
-       free(p);
-#endif
-
-#if 0
-       p = xmalloc(2);
-       free(p);
-       free(p);        /* duplicate free */
-#endif
-
-#if 0
-       p = xmalloc(32);
-       free(p);
-       p = xrealloc(p, 128);   /* realloc freed mem */
-#endif
-
-#if 0
-       p = xmalloc(64);
-       p[64] = '\0';
-       p = xrealloc(p, 128);   /* overflow */
-#endif
-
-#if 0
-       p = xmalloc(64);
-       p[64] = '\0';
-       free(p);                /* overflow */
-#endif
-
-#if 0
-       p = xmalloc(64);
-       p[-1] = 'a';
-       free (p);               /* underflow */
-#endif
-
-#if 0
-       p = xmalloc(64);
-       p[-1] = 'a';
-       p = xrealloc(p, 129);   /* underflow */
-#endif
-
-       mregister_dump_table();
-       exit(0);
-}
-
-void
-fatal_error(const char *format, ...)
-{
-       va_list args;
-
-       fprintf(stderr, "malloc-test: ");
-       va_start(args, format);
-       vfprintf(stderr, format, args);
-       fprintf(stderr, "\n");
-       va_end(args);
-       exit(2);
-}
-
-void
-programming_error(const char *format, ...)
-{
-       va_list args;
-
-       fprintf(stderr, "malloc-test: ");
-       va_start(args, format);
-       vfprintf(stderr, format, args);
-       fprintf(stderr, "\n");
-       va_end(args);
-
-       abort();
-}
-
-int
-signal_is_trapped(int n)
-{
-       return 0;
-}
diff --git a/lib/malloc/q b/lib/malloc/q
deleted file mode 100644 (file)
index 05267a2..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-total 3772
-drwxr-xr-x 100 root root  12288 Apr 21 04:13 ./
-drwxr-xr-x  29 root root   4096 Apr 21 03:02 ../
--rw-r--r--   1 root root  15288 Jan 15  2008 a2ps.cfg
--rw-r--r--   1 root root   2562 Jan 15  2008 a2ps-site.cfg
-drwxr-xr-x   4 root root   4096 Oct  5  2011 acpi/
--rw-r--r--   1 root root     46 Apr 21 03:00 adjtime
-drwxr-xr-x   4 root root   4096 May 17  2010 alchemist/
--rw-r--r--   1 root root   1601 May 25  2010 aliases
--rw-r--r--   1 root root  12288 Apr 21 03:03 aliases.db
--rw-r--r--   1 root root   1512 Apr 25  2005 aliases.redhat
-drwxr-xr-x   4 root root   4096 May 17  2010 alsa/
-drwxr-xr-x   2 root root   4096 Apr 21 01:01 alternatives/
--rw-r--r--   1 root root    298 Dec 18  2006 anacrontab
--rw-------   1 root root      1 Oct  3  2014 at.deny
-drwxr-x---   3 root root   4096 May 31  2012 audisp/
-drwxr-x---   2 root root   4096 May 31  2012 audit/
--rw-------   1 root root   3902 Jul 11  2014 autofs_ldap_auth.conf
--rw-r--r--   1 root root    681 May 25  2010 auto.master
--rw-r--r--   1 root root    717 Mar 16  2010 auto.master.redhat
--rw-r--r--   1 root root    581 Jul 11  2014 auto.misc
--rwxr-xr-x   1 root root   1292 Jul 11  2014 auto.net*
--rwxr-xr-x   1 root root    742 Jul 11  2014 auto.smb*
-drwxr-xr-x   4 root root   4096 May 31  2011 avahi/
-lrwxrwxrwx   1 root root     21 Feb 10  2014 avamar -> /usr/local/avamar/etc/
--rw-r--r--   1 root root   1872 Dec  5  2011 bashrc
-drwxr-xr-x   2 root root   4096 Apr 21 03:03 blkid/
-drwxr-xr-x   2 root root   4096 May 31  2011 bonobo-activation/
--rw-r--r--   1 root root    977 Oct  3  2008 cdrecord.conf
--rw-r--r--   1 root root    306 May 25  2010 CHANGELOG.txt
-drwx------   2 root root   4096 Oct 14  2014 cron.d/
-drwxr-xr-x   2 root root   4096 Feb 17 01:02 cron.daily/
--rw-r--r--   1 root root      0 May 17  2010 cron.deny
-drwxr-xr-x   2 root root   4096 Aug 29  2012 cron.hourly/
-drwxr-xr-x   2 root root   4096 Aug 29  2012 cron.monthly/
--rw-r--r--   1 root root    255 Aug 29  2012 crontab
-drwxr-xr-x   2 root root   4096 Feb 27  2013 cron.weekly/
--rw-r--r--   1 root root   1044 Dec  5  2011 csh.cshrc
--rw-r--r--   1 root root    823 Dec  5  2011 csh.login
-drwxr-xr-x   5 root lp     4096 Feb 17 01:02 cups/
-drwxr-xr-x   4 root root   4096 Oct 22  2013 dbus-1/
-drwxr-xr-x   2 root root   4096 Jan 28 15:45 default/
-drwxr-xr-x   2 root root   4096 Oct 22  2013 depmod.d/
-drwxr-xr-x   3 root root   4096 Jun  6  2014 dev.d/
--rw-r--r--   1 root root   2892 Jan  7 22:12 dhcpd.conf
--rw-r--r--   1 root root   2751 Feb  7  2013 dhcpd.conf~
--rw-r--r--   1 root root   2822 Oct 15  2014 dhcpd.conf.ACT
--rw-r--r--   1 root root   2822 Oct 15  2014 dhcpd.conf.ACT.old
--rw-r--r--   1 root root     86 Jul 29  2005 dhcpd.conf.example.RH
--rw-r--r--   1 root root   2822 Jan  7 22:12 dhcpd.conf.last
--rw-r--r--   1 root root   2821 Mar 20  2013 dhcpd.conf.lurch
--rw-r--r--   1 root root   1918 Aug 19  2010 dhcpd.conf.test
--rw-r--r--   1 root root   2892 Dec 18 16:42 dhcpd.conf.tftp-changes
--rw-r--r--   1 root root   2822 Dec 18 16:01 dhcpd.conf.tftp-changes~
-lrwxrwxrwx   1 root root     12 Feb  7  2013 dhcplog -> /fs1/dhcplog
--rw-r--r--   1 root root   2518 Mar 14  2012 DIR_COLORS
--rw-r--r--   1 root root   2420 Mar 14  2012 DIR_COLORS.xterm
--rw-r--r--   1 root root  18484 Aug 25  2009 dnsmasq.conf
-drwxr-xr-x   2 root root   4096 Aug 25  2009 dnsmasq.d/
--rw-rw-r--   1 root disk      0 Sep 16  2011 dumpdates
--rw-r--r--   1 root root   4843 Nov 27  2008 enscript.cfg
--rw-r--r--   1 root root      0 Dec  5  2011 environment
--rw-r--r--   1 root root    153 Dec 21  2011 esd.conf
--rw-r--r--   1 root root      0 Jan 12  2000 exports
--rw-r--r--   1 root root  22060 Jul 13  2006 fb.modes
--rw-r--r--   1 root root     59 Jan 31  2006 filesystems
-drwxr-xr-x   2 root root   4096 May 31  2012 firmware/
-drwxr-xr-x   4 root root   4096 May 17  2010 fonts/
-drwxr-xr-x   2 root root   4096 Sep  2  2011 foomatic/
--rw-r--r--   1 root root    843 Mar 18  2014 fstab
--rw-r--r--   1 root root    532 Nov 20  2010 fstab.20101120
--rw-r--r--   1 root root    843 Oct 17  2013 fstab.20131017
--rw-r--r--   1 root root    843 Nov  6  2013 fstab.20131106
--rw-r--r--   1 root root    843 Mar 17  2014 fstab.20140317
--rw-r--r--   1 root root    532 Dec 17  2011 fstab.last
--rw-r--r--   1 root root    532 Dec 21  2011 fstab.orig
-drwxr-xr-x   6 root root   4096 May 17  2010 gconf/
-drwxr-xr-x   2 root root   4096 Oct 10  2013 gcrypt/
-drwxr-xr-x   7 root root   4096 Sep 17  2013 gdm/
-drwxr-xr-x   2 root root   4096 Sep 10  2013 ghostscript/
-drwxr-xr-x   3 root root   4096 Jul  1  2013 gnome-vfs-2.0/
--rw-r--r--   1 root root  10793 Jul 12  2006 gnome-vfs-mime-magic
--rw-r--r--   1 root root   1756 Jul 12  2006 gpm-root.conf
--rw-r--r--   1 root root    909 Oct 14  2014 group
--rw-------   1 root root    909 Oct 22  2013 group-
--rw-r--r--   1 root root    751 May 17  2010 group.redhat
-lrwxrwxrwx   1 root root     22 May 17  2010 grub.conf -> ../boot/grub/grub.conf
--r--------   1 root root    765 Oct 14  2014 gshadow
--rw-------   1 root root    765 Oct 22  2013 gshadow-
--rw-r--r--   1 root root    833 Jan 16  2007 gssapi_mech.conf
-drwxr-xr-x   2 root root   4096 Feb 27  2013 gtk/
-drwxr-xr-x   4 root root   4096 Jul 26  2013 gtk-2.0/
-drwxr-xr-x   3 root root   4096 Aug 13  2012 hal/
--rw-r--r--   1 root root      0 Dec  5  2011 host.conf
--rw-r--r--   1 root root    275 Dec 21  2011 hosts
--rw-r--r--   1 root root    226 Jun 28  2010 hosts~
--rw-r--r--   1 root root   1721 May 15  2014 hosts.allow
--rw-r--r--   1 root root   1676 Jan 28  2014 hosts.allow~
--rw-r--r--   1 root root   2105 May 25  2010 hosts.allow.bundaberg
--rw-r--r--   1 root root   1551 Jun 28  2010 hosts.allow.don
--rw-r--r--   1 root root    252 May 25  2010 hosts.allow.orig
--rw-r--r--   1 root root    161 Jan 12  2000 hosts.allow.redhat
--rw-r--r--   1 root root      8 May 25  2010 hosts.deny
--rw-r--r--   1 root root    347 Jan 12  2000 hosts.deny.redhat
--rw-r--r--   1 root root    165 Dec  5  2011 hosts.deny.rpmnew
--rw-r--r--   1 root root    226 Jun 24  2010 hosts.new.lurch
--rw-r--r--   1 root root    229 Jun 24  2010 hosts.orig
-drwxr-xr-x   2 root root   4096 May 31  2011 hp/
-drwxr-xr-x   4 root root   4096 Oct 14  2014 httpd/
--rw-r--r--   1 root root   3579 Feb 10  2014 idmapd.conf
-lrwxrwxrwx   1 root root     11 May 17  2010 init.d -> rc.d/init.d/
--rw-r--r--   1 root root    658 Mar 19  2014 initlog.conf
--rw-r--r--   1 root root   1666 Mar 19  2014 inittab
--rw-r--r--   1 root root    758 Sep 23  2004 inputrc
-drwxr-xr-x   2 root root   4096 Feb 27  2013 iproute2/
-drwxr-xr-x   2 root root   4096 Feb 27  2013 iscsi/
--rw-r--r--   1 root root     75 Aug 12  2014 issue
--rw-r--r--   1 root root     74 Aug 12  2014 issue.net
-drwxr-xr-x   3 root root   4096 Feb 27  2013 java/
-drwxr-xr-x   2 root root   4096 Oct 12  2012 jvm/
-drwxr-xr-x   2 root root   4096 Oct 12  2012 jvm-commmon/
--rw-r--r--   1 root root  32016 Mar 29  2011 jwhois.conf
--rw-r--r--   1 root root   1265 Oct 14  2014 kdump.conf
--rw-r--r--   1 root root    608 Sep  3  2014 krb5.conf
--rw-r--r--   1 root root   9014 May 25  2010 ldap.conf
--rw-r--r--   1 root root   9111 May 17  2010 ldap.conf.redhat
--rw-------   1 root root      9 May 25  2010 ldap.secret
--rw-r--r--   1 root root  89567 Apr 21 01:02 ld.so.cache
--rw-r--r--   1 root root     28 Oct  8  2006 ld.so.conf
-drwxr-xr-x   2 root root   4096 Jan 19 12:15 ld.so.conf.d/
--rw-r--r--   1 root root   3544 Jul 16  2012 lftp.conf
--rw-r-----   1 root root    191 Oct 27  2011 libaudit.conf
-drwxr-xr-x   2 root root   4096 May 25  2010 libsmbios/
--rw-r--r--   1 root root   2506 May 10  2012 libuser.conf
-drwx------   3 root root   4096 May 25  2010 libvirt/
--rw-r--r--   1 root root     25 May 25  2010 local_ip
--rw-r--r--   1 root root   3519 Feb 26  2006 localtime
--rw-r--r--   1 root root    416 May 25  2010 localusers
--rw-r--r--   1 root root   1522 May 17  2010 login.defs
--rw-r--r--   1 root root   1435 Feb 24  2012 logrotate.conf
--rw-r--r--   1 root root   1372 Jul 26  2010 logrotate.conf~
--rw-r--r--   1 root root    520 Sep  2  2008 logrotate.conf.redhat
--rw-r--r--   1 root root    619 Mar 30  2011 logrotate.conf.rpmnew
--rw-r--r--   1 root root   1371 Jun 16  2010 logrotate.conf.save
-drwxr-xr-x   2 root root   4096 Apr 21 01:01 logrotate.d/
-drwxr-xr-x   4 root root   4096 Jul 11  2012 logwatch/
-drwxr-xr-x   2 root root   4096 May 31  2011 lsb-release.d/
--rw-r--r--   1 root root  10814 Feb 20  2006 ltrace.conf
-drwxr-xr-x   5 root root   4096 Oct 14  2014 lvm/
--rw-r--r--   1 root root 140191 Oct 27  2008 lynx.cfg
--rw-r--r--   1 root root     66 Oct 27  2008 lynx-site.cfg
--rw-r--r--   1 root root    293 Sep  5  2006 mailcap
--rw-r--r--   1 root root    112 Jul 13  2006 mail.rc
-drwxr-xr-x   2 root root   4096 May 17  2010 makedev.d/
--rw-r--r--   1 root root   4617 Apr 17  2012 man.config
-drwxr-xr-x   2 root root   4096 Feb 27  2013 maven/
--rwxr-xr-x   1 root root   2242 May 13  2011 mcelog.conf*
--rw-r--r--   1 root root  14100 Sep  5  2006 mime.types
--rw-r--r--   1 root root    330 Apr 14  2014 mke2fs.conf
--rw-r--r--   1 root root    172 May 23  2014 modprobe.conf
--rw-r--r--   1 root root    156 May 23  2014 modprobe.conf~
-drwxr-xr-x   2 root root   4096 Apr 21 01:01 modprobe.d/
--rw-r--r--   1 root root      0 Jan 12  2000 motd
--rw-r--r--   1 root root    533 May 25  2010 motd-security
--rw-r--r--   1 root root    602 Apr 21 03:03 mtab
--rw-r--r--   1 root root   1983 Aug  9  2006 mtools.conf
--rw-r--r--   1 root root   2706 May  1  2014 multipath.conf
--rw-r--r--   1 root root  92794 Jul  4  2012 Muttrc
--rw-r--r--   1 root root      0 Jul  4  2012 Muttrc.local
--rw-r--r--   1 root root    441 Jan  8  2013 my.cnf
-drwxr-xr-x   2 root root   4096 Nov 12  2013 netplug/
-drwxr-xr-x   2 root root   4096 Nov 12  2013 netplug.d/
-drwxr-xr-x   4 root root   4096 Aug  8  2011 NetworkManager/
--rw-r--r--   1 root root   1895 Jan 19 12:13 nscd.conf
--rw-r--r--   1 root root   1730 Apr 21 01:00 nsswitch.conf
--rw-r--r--   1 root root   1709 Aug  8  2011 nsswitch.conf.cwru.ldap
--rw-r--r--   1 root root   1730 Apr 21 01:00 nsswitch.conf.cwru.pre-patching
--rw-r--r--   1 root root   1696 Sep 22  2004 nsswitch.conf.redhat
-drwxr-xr-x   2 root root   4096 Feb 17 01:02 ntp/
--rw-r--r--   1 root root    246 Aug 20  2014 ntp.conf
--rw-r--r--   1 root root    190 Apr 14  2014 ntp.conf~
--rw-r--r--   1 root root    190 Apr 14  2014 ntp.conf.backup.2014
--rw-r--r--   1 root root   1833 Nov 26  2009 ntp.conf.redhat
--rw-r--r--   1 root root      0 Oct 18  2011 odbc.ini
--rw-r--r--   1 root root   1366 Oct 18  2011 odbcinst.ini
--rw-r--r--   1 root root   1366 Oct 18  2011 odbcinst.ini.rpmnew
-lrwxrwxrwx   1 root root     32 May 25  2010 omreg.cfg -> /opt/dell/srvadmin/etc/omreg.cfg
-drwxr-xr-x   3 root root   4096 May 12  2014 openldap/
-drwxr-xr-x   2 root root   4096 May 25  2010 openwsman/
-drwxr-xr-x   2 root root   4096 Oct  1  2009 opt/
-drwxr-xr-x   2 root root   4096 Feb 17 01:02 pam.d/
-drwxr-xr-x   2 root root   4096 May 31  2012 pam_pkcs11/
--rw-r--r--   1 root root     12 Jul 12  2006 pam_smb.conf
-drwxr-xr-x   4 root root   4096 Nov  8  2011 pango/
--rw-r--r--   1 root root   2538 Oct 14  2014 passwd
--rw-r--r--   1 root root   2536 Oct 22  2013 passwd~
--rw-r--r--   1 root root   2538 Apr  2  2014 passwd-
--rw-r--r--   1 root root   2591 Jan 17  2014 passwd.20140402130113
--rw-r--r--   1 root root   2487 Jun  9  2010 passwd.catbert
--rw-r--r--   1 root root   2487 Jun  9  2010 passwd.OLD
--rw-r--r--   1 root root   1871 Jun  9  2010 passwd.orig
--rw-r--r--   1 root root   1815 May 17  2010 passwd.redhat
-drwxr-xr-x   2 root root   4096 May 17  2010 pcmcia/
-drwxr-xr-x   2 root root   4096 Nov 25 01:01 php.d/
--rw-r--r--   1 root root  45081 Oct 28 09:21 php.ini
--rw-r--r--   1 root root   2875 Sep 12  2006 pinforc
-drwxr-xr-x   6 root root   4096 May 17  2010 pki/
-drwxr-xr-x   5 root root   4096 Feb 27  2013 pm/
-drwxr-xr-x   2 root root   4096 Oct 14  2014 postfix/
-drwxr-xr-x   3 root root   4096 Oct 14  2014 ppp/
--rw-r--r--   1 root root 262772 Apr 21 04:13 prelink.cache
--rw-r--r--   1 root root    973 Sep 18  2008 prelink.conf
-drwxr-xr-x   2 root root   4096 Sep 18  2008 prelink.conf.d/
--rw-r--r--   1 root root    309 Apr 21 03:03 printcap
--rw-r--r--   1 root root    135 May 17  2010 printcap.redhat
--rw-r--r--   1 root root   1344 Dec  5  2011 profile
-drwxr-xr-x   2 root root   4096 Oct 14  2014 profile.d/
--rw-r--r--   1 root root   6108 Oct 11  2006 protocols
--rw-------   1 root root   2487 Jun 16  2010 ptmp~
--rw-------   1 root root      0 May 17  2010 .pwd.lock
--rw-r--r--   1 root root    220 Jul 31  2012 quotagrpadmins
--rw-r--r--   1 root root    290 Jul 31  2012 quotatab
-drwxr-xr-x   3 root root   4096 Feb 27  2013 racoon/
-lrwxrwxrwx   1 root root      7 Oct 14  2014 rc -> rc.d/rc*
-lrwxrwxrwx   1 root root     10 Oct 14  2014 rc0.d -> rc.d/rc0.d/
-lrwxrwxrwx   1 root root     10 Oct 14  2014 rc1.d -> rc.d/rc1.d/
-lrwxrwxrwx   1 root root     10 Oct 14  2014 rc2.d -> rc.d/rc2.d/
-lrwxrwxrwx   1 root root     10 Oct 14  2014 rc3.d -> rc.d/rc3.d/
-lrwxrwxrwx   1 root root     10 Oct 14  2014 rc4.d -> rc.d/rc4.d/
-lrwxrwxrwx   1 root root     10 Oct 14  2014 rc5.d -> rc.d/rc5.d/
-lrwxrwxrwx   1 root root     10 Oct 14  2014 rc6.d -> rc.d/rc6.d/
-drwxr-xr-x  10 root root   4096 Oct 14  2014 rc.d/
-lrwxrwxrwx   1 root root     13 Oct 14  2014 rc.local -> rc.d/rc.local*
-lrwxrwxrwx   1 root root     15 Oct 14  2014 rc.sysinit -> rc.d/rc.sysinit*
-drwxr-xr-x   2 root root   4096 May 17  2010 readahead.d/
-drwxr-xr-x   2 root root   4096 May 31  2011 redhat-lsb/
--rw-r--r--   1 root root     55 Aug 12  2014 redhat-release
--rw-r--r--   1 root root    135 May 23  2014 resolv.conf
--rw-r--r--   1 root root     67 May 17  2010 resolv.conf.redhat
-drwxr-xr-x   3 root root   4096 May 17  2010 rhgb/
-lrwxrwxrwx   1 root root     11 May 31  2012 rmt -> ../sbin/rmt*
--rw-r--r--   1 root root   1621 Feb 12  2014 rpc
-drwxr-xr-x   2 root root   4096 Nov 18 11:30 rpm/
--rw-r--r--   1 root root    754 Mar 19  2014 rwtab
-drwxr-xr-x   2 root root   4096 Mar 19  2014 rwtab.d/
-drwxr-xr-x   2 root root   4096 Apr 15  2014 samba/
-drwxr-xr-x   2 root root   4096 Aug 21  2012 sasl2/
--rw-r--r--   1 root root   6972 Feb  1  2011 screenrc
--rw-r--r--   1 root root    103 Nov  7  2006 scrollkeeper.conf
--rw-r--r--   1 root root    666 Jun  6  2014 scsi_id.config
--rw-------   1 root root    122 Feb 17  2003 securetty
-drwxr-xr-x   5 root root   4096 Apr 15  2014 security/
-drwxr-xr-x   3 root root   4096 Jul  8  2014 selinux/
--rw-r--r--   1 root root  85179 Jan 26  2010 sensors.conf
--rw-r--r--   1 root root 362031 Feb 23  2006 services
--rw-r--r--   1 root root    216 May 23  2013 sestatus.conf
-drwxr-xr-x   2 root root   4096 Apr 21 01:01 setroubleshoot/
-drwxr-xr-x   2 root root   4096 May 17  2010 setuptool.d/
-drwxr-xr-x   2 root root   4096 Oct 14  2014 sfcb/
-drwxr-xr-x   2 root root   4096 May 17  2010 sgml/
--r--------   1 root root   1473 Apr  2  2014 shadow
--r--------   1 root root   1472 Jun 16  2010 shadow~
--r--------   1 root root   1097 May 17  2010 shadow-
--r--------   1 root root   1505 Jan 17  2014 shadow.20140402130113
--r--------   1 root root   1472 Jun  9  2010 shadow.catbert
--r--------   1 root root   1472 Jun  9  2010 shadow.OLD
--r--------   1 root root   1097 Jun  9  2010 shadow.orig
--rw-r--r--   1 root root     60 May 17  2010 shells
-drwxr-xr-x   3 root root   4096 Sep 26  2014 skel/
--rw-r--r--   1 root root  21851 Jul 12  2006 slrn.rc
--rw-r--r--   1 root root   6717 Aug 23  2012 smartd.conf
--rw-r--r--   1 root root   1272 Jan  4  2008 smi.conf
-drwxr-xr-x   2 root root   4096 Sep 25  2014 snmp/
-drwxr-xr-x   3 root root   4096 Oct 18  2006 sound/
--rw-------   1 root root   1472 Jun 16  2010 sptmp~
-drwxr-xr-x   2 root root   4096 Sep 16  2014 squid/
-drwxr-xr-x   4 root root   4096 May 31  2012 ssh/
-drwxr-xr-x   2 root root   4096 Oct 23 10:23 stunnel/
-drwxr-xr-x   2 root root   4096 Feb 12  2014 subversion/
--r--r-----   1 root root   3553 Jan 28  2014 sudoers
--r--r-----   1 root root    800 May 25  2010 sudoers.bundaberg
--r--r-----   1 root root   3193 Apr 13  2010 sudoers.redhat
--r--r-----   1 root root   3381 Sep 15  2010 sudoers.rpmnew
--rw-------   1 root root   3500 Jun 16  2010 #sudoers.tmp#
--rw-------   1 root root   3491 Mar  7  2011 sudoers.tmp~
-drwxr-xr-x  10 root root   4096 Apr 21 01:01 sysconfig/
--rw-r--r--   1 root root    996 Mar 19  2014 sysctl.conf
--rw-r--r--   1 root root   1413 Feb 12  2014 syslog.conf
--rw-r--r--   1 root root   1661 Aug 24  2012 syslog.conf~
--rw-r--r--   1 root root    694 Jan  5  2010 syslog.conf.redhat
--rw-r--r--   1 root root 807103 Jul 12  2006 termcap
-drwxr-xr-x   5 root root   4096 Oct 14  2014 udev/
--rw-r--r--   1 root root    136 Mar 17  2009 updatedb.conf
--rw-r--r--   1 root root   1533 Jul 10  2012 vimrc
--rw-r--r--   1 root root   1533 Jul 10  2012 virc
-drwxr-xr-x   2 root root   4096 Feb 27  2013 vsftpd/
--rw-r--r--   1 root root   2678 Jul 31  2012 warnquota.conf
--rw-r--r--   1 root root  23735 Jul 12  2006 webalizer.conf
--rw-r--r--   1 root root   4204 Apr 23  2012 wgetrc
-drwxr-xr-x   2 root root   4096 Oct 22  2013 wpa_supplicant/
-drwxr-xr-x   9 root root   4096 Feb 17 01:01 X11/
-drwxr-xr-x   4 root root   4096 May 17  2010 xdg/
--rw-r--r--   1 root root   1001 Oct  1  2013 xinetd.conf
-drwxr-xr-x   2 root root   4096 Nov 25 01:01 xinetd.d/
-drwxr-xr-x   2 root root   4096 May 17  2010 xml/
-drwxr-xr-x   4 root root   4096 Sep 16  2014 yum/
--rw-r--r--   1 root root    708 Feb  7  2012 yum.conf
--rw-r--r--   1 root root    628 Dec 21  2011 yum.conf~
--rw-r--r--   1 root root    628 Dec 21  2011 yum.conf.bad
-drwxr-xr-x   2 root root   4096 Oct 14  2014 yum.repos.d/
diff --git a/lib/posixheaders.old/ansi_stdlib.h b/lib/posixheaders.old/ansi_stdlib.h
deleted file mode 100644 (file)
index 52339da..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* ansi_stdlib.h -- An ANSI Standard stdlib.h. */
-/* A minimal stdlib.h containing extern declarations for those functions
-   that bash uses. */
-
-/* Copyright (C) 1993 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, 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. */
-
-#if !defined (_STDLIB_H_)
-#define        _STDLIB_H_ 1
-
-/* String conversion functions. */
-extern int atoi ();
-extern long int atol ();
-
-/* Memory allocation functions. */
-extern char *malloc ();
-extern char *realloc ();
-extern void free ();
-
-/* Other miscellaneous functions. */
-extern void abort ();
-extern void exit ();
-extern char *getenv ();
-extern void qsort ();
-
-#endif /* _STDLIB_H  */
diff --git a/lib/posixheaders.old/filecntl.h b/lib/posixheaders.old/filecntl.h
deleted file mode 100644 (file)
index cf5054d..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* filecntl.h - Definitions to set file descriptors to close-on-exec. */
-
-/* Copyright (C) 1993 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, 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. */
-
-#if !defined (_FILECNTL_H_)
-#define _FILECNTL_H_
-
-#include <fcntl.h>
-
-/* Definitions to set file descriptors to close-on-exec, the Posix way. */
-#if !defined (FD_CLOEXEC)
-#define FD_CLOEXEC     1
-#endif
-
-#define FD_NCLOEXEC    0
-
-#define SET_CLOSE_ON_EXEC(fd)  (fcntl ((fd), F_SETFD, FD_CLOEXEC))
-#define SET_OPEN_ON_EXEC(fd)   (fcntl ((fd), F_SETFD, FD_NCLOEXEC))
-
-/* How to open a file in non-blocking mode, the Posix.1 way. */
-#if !defined (O_NONBLOCK)
-#  if defined (O_NDELAY)
-#    define O_NONBLOCK O_NDELAY
-#  else
-#    define O_NONBLOCK 0
-#  endif
-#endif
-
-#endif /* ! _FILECNTL_H_ */
diff --git a/lib/posixheaders.old/memalloc.h b/lib/posixheaders.old/memalloc.h
deleted file mode 100644 (file)
index c68961f..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/* memalloc.h -- consolidate code for including alloca.h or malloc.h and
-   defining alloca. */
-
-/* Copyright (C) 1993 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, 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. */
-
-#if !defined (_MEMALLOC_H_)
-#  define _MEMALLOC_H_
-
-#if defined (sparc) && defined (sun) && !defined (HAVE_ALLOCA_H)
-#  define HAVE_ALLOCA_H
-#endif
-
-#if defined (__GNUC__) && !defined (HAVE_ALLOCA)
-#  define HAVE_ALLOCA
-#endif
-
-#if defined (HAVE_ALLOCA_H) && !defined (HAVE_ALLOCA)
-#  define HAVE_ALLOCA
-#endif /* HAVE_ALLOCA_H && !HAVE_ALLOCA */
-
-#if defined (__GNUC__) && !defined (C_ALLOCA)
-#  undef alloca
-#  define alloca __builtin_alloca
-#else /* !__GNUC__ || C_ALLOCA */
-#  if defined (HAVE_ALLOCA_H) && !defined (C_ALLOCA)
-#    if defined (IBMESA)
-#      include <malloc.h>
-#    else /* !IBMESA */
-#      include <alloca.h>
-#    endif /* !IBMESA */
-#  else  /* !HAVE_ALLOCA_H || C_ALLOCA */
-#    if defined (__hpux) && defined (__STDC__) && !defined (alloca)
-extern void *alloca ();
-#    else
-#      if !defined (alloca)
-extern char *alloca ();
-#      endif /* !alloca */
-#    endif /* !__hpux || !__STDC__ && !alloca */
-#  endif /* !HAVE_ALLOCA_H || C_ALLOCA */
-#endif /* !__GNUC__ || C_ALLOCA */
-
-#endif /* _MEMALLOC_H_ */
diff --git a/lib/posixheaders.old/posixdir.h b/lib/posixheaders.old/posixdir.h
deleted file mode 100644 (file)
index 7480a93..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* posixdir.h -- Posix directory reading includes and defines. */
-
-/* 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. */
-
-/* This file should be included instead of <dirent.h> or <sys/dir.h>. */
-
-#if !defined (_POSIXDIR_H_)
-#define _POSIXDIR_H_
-
-#if defined (HAVE_DIRENT_H)
-#  include <dirent.h>
-#  define D_NAMLEN(d)   (strlen ((d)->d_name))
-#else
-#  if defined (HAVE_SYS_NDIR_H)
-#    include <sys/ndir.h>
-#  endif
-#  if defined (HAVE_SYS_DIR_H)
-#    include <sys/dir.h>
-#  endif
-#  if defined (HAVE_NDIR_H)
-#    include <ndir.h>
-#  endif
-#  if !defined (dirent)
-#    define dirent direct
-#  endif /* !dirent */
-#  define D_NAMLEN(d)   ((d)->d_namlen)
-#endif /* !HAVE_DIRENT_H */
-
-#if defined (STRUCT_DIRENT_HAS_D_INO) && !defined (STRUCT_DIRENT_HAS_D_FILENO)
-#  define d_fileno d_ino
-#endif
-
-#endif /* !_POSIXDIR_H_ */
diff --git a/lib/posixheaders.old/posixjmp.h b/lib/posixheaders.old/posixjmp.h
deleted file mode 100644 (file)
index 1347cc0..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */
-
-#ifndef _POSIXJMP_H_
-#define _POSIXJMP_H_
-
-#include <setjmp.h>
-
-/* This *must* be included *after* config.h */
-
-#if defined (HAVE_POSIX_SIGSETJMP)
-#  define procenv_t    sigjmp_buf
-#  if !defined (__OPENNT)
-#    undef setjmp
-#    define setjmp(x)  sigsetjmp((x), 1)
-#    undef longjmp
-#    define longjmp(x, n)      siglongjmp((x), (n))
-#  endif /* !__OPENNT */
-#else
-#  define procenv_t    jmp_buf
-#endif
-
-#endif /* _POSIXJMP_H_ */
diff --git a/lib/posixheaders.old/posixstat.h b/lib/posixheaders.old/posixstat.h
deleted file mode 100644 (file)
index bfce8c0..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* posixstat.h -- Posix stat(2) definitions for systems that
-   don't have them. */
-
-/* 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. */
-
-/* This file should be included instead of <sys/stat.h>.
-   It relies on the local sys/stat.h to work though. */
-#if !defined (_POSIXSTAT_H_)
-#define _POSIXSTAT_H_
-
-#include <sys/stat.h>
-
-#if defined (STAT_MACROS_BROKEN)
-#  undef S_ISBLK
-#  undef S_ISCHR
-#  undef S_ISDIR
-#  undef S_ISFIFO
-#  undef S_ISREG
-#  undef S_ISLNK
-#endif /* STAT_MACROS_BROKEN */
-
-/* These are guaranteed to work only on isc386 */
-#if !defined (S_IFDIR) && !defined (S_ISDIR)
-#  define S_IFDIR 0040000
-#endif /* !S_IFDIR && !S_ISDIR */
-#if !defined (S_IFMT)
-#  define S_IFMT  0170000
-#endif /* !S_IFMT */
-
-/* Posix 1003.1 5.6.1.1 <sys/stat.h> file types */
-
-/* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but
-   do not provide the S_IS* macros that Posix requires. */
-
-#if defined (_S_IFMT) && !defined (S_IFMT)
-#define S_IFMT _S_IFMT
-#endif
-#if defined (_S_IFIFO) && !defined (S_IFIFO)
-#define S_IFIFO _S_IFIFO
-#endif
-#if defined (_S_IFCHR) && !defined (S_IFCHR)
-#define S_IFCHR _S_IFCHR
-#endif
-#if defined (_S_IFDIR) && !defined (S_IFDIR)
-#define S_IFDIR _S_IFDIR
-#endif
-#if defined (_S_IFBLK) && !defined (S_IFBLK)
-#define S_IFBLK _S_IFBLK
-#endif
-#if defined (_S_IFREG) && !defined (S_IFREG)
-#define S_IFREG _S_IFREG
-#endif
-#if defined (_S_IFLNK) && !defined (S_IFLNK)
-#define S_IFLNK _S_IFLNK
-#endif
-#if defined (_S_IFSOCK) && !defined (S_IFSOCK)
-#define S_IFSOCK _S_IFSOCK
-#endif
-
-/* Test for each symbol individually and define the ones necessary (some
-   systems claiming Posix compatibility define some but not all). */
-
-#if defined (S_IFBLK) && !defined (S_ISBLK)
-#define        S_ISBLK(m)      (((m)&S_IFMT) == S_IFBLK)       /* block device */
-#endif
-
-#if defined (S_IFCHR) && !defined (S_ISCHR)
-#define        S_ISCHR(m)      (((m)&S_IFMT) == S_IFCHR)       /* character device */
-#endif
-
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-#define        S_ISDIR(m)      (((m)&S_IFMT) == S_IFDIR)       /* directory */
-#endif
-
-#if defined (S_IFREG) && !defined (S_ISREG)
-#define        S_ISREG(m)      (((m)&S_IFMT) == S_IFREG)       /* file */
-#endif
-
-#if defined (S_IFIFO) && !defined (S_ISFIFO)
-#define        S_ISFIFO(m)     (((m)&S_IFMT) == S_IFIFO)       /* fifo - named pipe */
-#endif
-
-#if defined (S_IFLNK) && !defined (S_ISLNK)
-#define        S_ISLNK(m)      (((m)&S_IFMT) == S_IFLNK)       /* symbolic link */
-#endif
-
-#if defined (S_IFSOCK) && !defined (S_ISSOCK)
-#define        S_ISSOCK(m)     (((m)&S_IFMT) == S_IFSOCK)      /* socket */
-#endif
-
-/*
- * POSIX 1003.1 5.6.1.2 <sys/stat.h> File Modes
- */
-
-#if !defined (S_IRWXU)
-#  if !defined (S_IREAD)
-#    define S_IREAD    00400
-#    define S_IWRITE   00200
-#    define S_IEXEC    00100
-#  endif /* S_IREAD */
-
-#  if !defined (S_IRUSR)
-#    define S_IRUSR    S_IREAD                 /* read, owner */
-#    define S_IWUSR    S_IWRITE                /* write, owner */
-#    define S_IXUSR    S_IEXEC                 /* execute, owner */
-
-#    define S_IRGRP    (S_IREAD  >> 3)         /* read, group */
-#    define S_IWGRP    (S_IWRITE >> 3)         /* write, group */
-#    define S_IXGRP    (S_IEXEC  >> 3)         /* execute, group */
-
-#    define S_IROTH    (S_IREAD  >> 6)         /* read, other */
-#    define S_IWOTH    (S_IWRITE >> 6)         /* write, other */
-#    define S_IXOTH    (S_IEXEC  >> 6)         /* execute, other */
-#  endif /* !S_IRUSR */
-
-#  define S_IRWXU      (S_IRUSR | S_IWUSR | S_IXUSR)
-#  define S_IRWXG      (S_IRGRP | S_IWGRP | S_IXGRP)
-#  define S_IRWXO      (S_IROTH | S_IWOTH | S_IXOTH)
-#endif /* !S_IRWXU */
-
-/* These are non-standard, but are used in builtins.c$symbolic_umask() */
-#define S_IRUGO                (S_IRUSR | S_IRGRP | S_IROTH)
-#define S_IWUGO                (S_IWUSR | S_IWGRP | S_IWOTH)
-#define S_IXUGO                (S_IXUSR | S_IXGRP | S_IXOTH)
-
-#endif /* _POSIXSTAT_H_ */
diff --git a/lib/posixheaders.old/stdc.h b/lib/posixheaders.old/stdc.h
deleted file mode 100644 (file)
index f1590c6..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* stdc.h -- macros to make source compile on both ANSI C and K&R C
-   compilers. */
-
-/* Copyright (C) 1993 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. */
-
-#if !defined (_STDC_H_)
-#define _STDC_H_
-
-/* Adapted from BSD /usr/include/sys/cdefs.h. */
-
-/* A function can be defined using prototypes and compile on both ANSI C
-   and traditional C compilers with something like this:
-       extern char *func __P((char *, char *, int)); */
-
-#if defined (__STDC__)
-
-#  if !defined (__P)
-#    define __P(protos) protos
-#  endif
-#  define __STRING(x) #x
-
-#  if !defined (__GNUC__)
-#    define inline
-#  endif
-
-#else /* !__STDC__ */
-
-#  if !defined (__P)
-#    define __P(protos) ()
-#  endif
-#  define __STRING(x) "x"
-
-#if defined (__GNUC__)         /* gcc with -traditional */
-#  if !defined (const)
-#    define const  __const
-#  endif
-#  if !defined (inline)
-#    define inline __inline
-#  endif
-#  if !defined (signed)
-#    define signed __signed
-#  endif
-#  if !defined (volatile)
-#    define volatile __volatile
-#  endif
-#else /* !__GNUC__ */
-#  if !defined (const)
-#    define const
-#  endif
-#  if !defined (inline)
-#    define inline
-#  endif
-#  if !defined (signed)
-#    define signed
-#  endif
-#  if !defined (volatile)
-#    define volatile
-#  endif
-#endif /* !__GNUC__ */
-
-#endif /* !__STDC__ */
-
-#endif /* !_STDC_H_ */
diff --git a/lib/readline/-i b/lib/readline/-i
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/NEW/xxx-autocomplete b/lib/readline/NEW/xxx-autocomplete
deleted file mode 100644 (file)
index fdc2ad0..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#if defined (READLINE_AUTOCOMPLETE)
-/* Return the list of completions for the text between START and END.
-   FOUND_QUOTE is non-zero if we're completing a quoted word; if so,
-   QUOTE_CHAR is the delimiter.  If NONTRIVIAL_P is nonzero, it gets
-   set to a flag saying whether or not the completion added anything
-   to the word.  Not part of rl_complete_internal because it's too
-   hard to separate functions without postprocess_matches possibly being
-   called twice; here to support the autocompletion code. */
-char **
-_rl_generate_completions (start, end, found_quote, quote_char, nontrivial_p)
-     int start, end, found_quote, quote_char, *nontrivial_p;
-{
-  rl_compentry_func_t *our_func;
-  char *text;
-  char **matches;
-
-  our_func = rl_completion_entry_function
-               ? rl_completion_entry_function
-               : rl_filename_completion_function;
-  text = rl_copy_text (start, end);
-  matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
-
-  /* *nontrivial_p is set if the common prefix adds something to the word
-     being completed. */
-  if (nontrivial_p)
-    *nontrivial_p = matches && strcmp (text, matches[0]) != 0;
-
-  free (text);
-
-  /* Postprocess the matches */
-  if (matches == 0)
-    return (char **)0;
-
-  if (postprocess_matches (&matches, rl_filename_completion_desired) == 0)
-    return (char **)0;
-
-  return 0;
-}
-#endif
diff --git a/lib/readline/doc/Makefile.in b/lib/readline/doc/Makefile.in
deleted file mode 100644 (file)
index d1581e6..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-# Derived by hand from the generated readline-src/doc/Makefile
-# This makefile for Readline library documentation is in -*- text -*- mode.
-# Emacs likes it that way.
-
-# Copyright (C) 1996-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/>.
-
-topdir = .
-srcdir = .
-VPATH = .
-
-prefix = /usr/local
-infodir = ${prefix}/info
-
-mandir = ${prefix}/man
-manpfx = man
-
-man1ext = 1
-man1dir = $(mandir)/$(manpfx)$(man1ext)
-man3ext = 3
-man3dir = $(mandir)/$(manpfx)$(man3ext)
-
-SHELL = /bin/sh
-RM = rm -f
-
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-
-BUILD_DIR = .
-TEXINPUTDIR = $(srcdir)
-
-MAKEINFO    = LANGUAGE= makeinfo
-TEXI2DVI    = $(srcdir)/texi2dvi
-TEXI2HTML   = $(srcdir)/texi2html
-QUIETPS     = #set this to -q to shut up dvips
-PSDPI       = 600
-DVIPS       = dvips -D ${PSDPI} $(QUIETPS) -o $@     # tricky
-DVIPDF      = dvipdfm -o $@ -p ${PAPERSIZE}
-PSPDF       = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@
-
-RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \
-       $(srcdir)/rltech.texi $(srcdir)/version.texi \
-       $(srcdir)/rluserman.texi
-HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \
-         $(srcdir)/hstech.texi $(srcdir)/version.texi
-
-# This should be a program that converts troff to an ascii-readable format
-NROFF       = groff -Tascii
-
-# This should be a program that converts troff to postscript
-GROFF       = groff
-
-DVIOBJ = readline.dvi history.dvi rluserman.dvi
-INFOOBJ = readline.info history.info rluserman.info
-PSOBJ = readline.ps history.ps rluserman.ps
-HTMLOBJ = readline.html history.html rluserman.html
-PDFOBJ = readline.pdf history.pdf rluserman.pdf
-
-INTERMEDIATE_OBJ = rlman.dvi
-
-CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) $(PDFOBJ)
-
-.SUFFIXES:      .ps .txt .dvi .html .pdf
-
-.ps.pdf:
-       $(RM) $@
-       -${PSPDF} $<
-
-.dvi.pdf:
-       $(RM) $@
-       -${DVIPDF} $<
-
-all: info dvi html ps
-nodvi: info html
-pdf: $(PDFOBJ)
-
-readline.dvi: $(RLSRC)
-       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi
-       mv rlman.dvi readline.dvi
-
-readline.info: $(RLSRC)
-       $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi
-
-rluserman.dvi: $(RLSRC)
-       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi
-
-rluserman.info: $(RLSRC)
-       $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi
-
-history.dvi: ${HISTSRC}
-       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi
-
-history.info: ${HISTSRC}
-       $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi
-
-readline.ps:   readline.dvi
-       $(RM) $@
-       $(DVIPS) readline.dvi
-
-rluserman.ps:  rluserman.dvi
-       $(RM) $@
-       $(DVIPS) rluserman.dvi
-
-history.ps:    history.dvi
-       $(RM) $@
-       $(DVIPS) history.dvi
-
-# can also use:
-#      $(MAKEINFO) --html --no-split
-# in place of
-#      $(TEXI2HTML) -menu -monolithic
-
-readline.html: ${RLSRC}
-       $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texi
-       sed -e 's:rlman.html:readline.html:' rlman.html > readline.html
-       $(RM) rlman.html
-
-rluserman.html:        ${RLSRC}
-       $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi
-
-history.html:  ${HISTSRC}
-       $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi
-
-info:  $(INFOOBJ)
-dvi:   $(DVIOBJ)
-ps:    $(PSOBJ)
-html:  $(HTMLOBJ)
-
-readline.pdf:   readline.dvi
-history.pdf:    history.dvi
-rluserman.pdf:  rluserman.dvi
-
-clean:
-       $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
-             *.fns *.kys *.tps *.vrs *.bt *.bts *.o core *.core
-
-distclean: clean
-       $(RM) $(CREATED_DOCS)
-       $(RM) $(INTERMEDIATE_OBJ)
-       $(RM) Makefile
-
-mostlyclean: clean
-
-maintainer-clean: clean
-       $(RM) $(CREATED_DOCS)
-       $(RM) $(INTERMEDIATE_OBJ)
-       $(RM) Makefile
-
-install:
-       @echo "This documentation should not be installed."
-
-uninstall:
diff --git a/lib/readline/doc/hist.texinfo b/lib/readline/doc/hist.texinfo
deleted file mode 100644 (file)
index 63ceb16..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-\input texinfo    @c -*-texinfo-*-
-@c %**start of header (This is for running Texinfo on a region.)
-@setfilename history.info
-@settitle GNU History Library
-@c %**end of header (This is for running Texinfo on a region.)
-
-@setchapternewpage odd
-
-@include manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* History: (history).       The GNU history library API
-@end direntry
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage
-@title GNU History Library
-@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@node Top
-@top GNU History Library
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-@menu
-* Using History Interactively::          GNU History User's Manual.
-* Programming with GNU History::  GNU History Programmer's Manual.
-* Concept Index::                Index of concepts described in this manual.
-* Function and Variable Index::          Index of externally visible functions
-                                 and variables.
-@end menu
-@end ifinfo
-
-@syncodeindex fn vr
-
-@include hsuser.texinfo
-@include hstech.texinfo
-
-@node Concept Index
-@appendix Concept Index
-@printindex cp
-
-@node Function and Variable Index
-@appendix Function and Variable Index
-@printindex vr
-
-@contents
-@bye
diff --git a/lib/readline/doc/history.3 b/lib/readline/doc/history.3
deleted file mode 100644 (file)
index 7ddc26a..0000000
+++ /dev/null
@@ -1,675 +0,0 @@
-.\"
-.\" MAN PAGE COMMENTS to
-.\"
-.\"    Chet Ramey
-.\"    Information Network Services
-.\"    Case Western Reserve University
-.\"    chet.ramey@case.edu
-.\"
-.\"    Last Change: Sun May 24 18:01:17 EDT 2015
-.\"
-.TH HISTORY 3 "2015 May 24" "GNU History 6.3"
-.\"
-.\" File Name macro.  This used to be `.PN', for Path Name,
-.\" but Sun doesn't seem to like that very much.
-.\"
-.de FN
-\fI\|\\$1\|\fP
-..
-.ds lp \fR\|(\fP
-.ds rp \fR\|)\fP
-.\" FnN return-value fun-name N arguments
-.de Fn1
-\fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3\fP\\*(rp
-.br
-..
-.de Fn2
-.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4\fP\\*(rp
-.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4\fP\\*(rp
-.br
-..
-.de Fn3
-.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4,\|\\$5\fP\|\\*(rp
-.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4, \\$5\fP\\*(rp
-.br
-..
-.de Vb
-\fI\\$1\fP \fB\\$2\fP
-.br
-..
-.SH NAME
-history \- GNU History Library
-.SH COPYRIGHT
-.if t The GNU History Library is Copyright \(co 1989-2014 by the Free Software Foundation, Inc.
-.if n The GNU History Library is Copyright (C) 1989-2014 by the Free Software Foundation, Inc.
-.SH DESCRIPTION
-Many programs read input from the user a line at a time.  The GNU
-History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones. 
-.PP
-.SH "HISTORY EXPANSION"
-.PP
-The history library supports a history expansion feature that
-is identical to the history expansion in
-.BR bash.
-This section describes what syntax features are available.
-.PP
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-.PP
-History expansion is usually performed immediately after a complete line
-is read.
-It takes place in two parts.
-The first is to determine which line from the history list
-to use during substitution.
-The second is to select portions of that line for inclusion into
-the current one.
-The line selected from the history is the \fIevent\fP,
-and the portions of that line that are acted upon are \fIwords\fP.
-Various \fImodifiers\fP are available to manipulate the selected words.
-The line is broken into words in the same fashion as \fBbash\fP
-does when reading input,
-so that several words that would otherwise be separated 
-are considered one word when surrounded by quotes (see the
-description of \fBhistory_tokenize()\fP below).
-History expansions are introduced by the appearance of the
-history expansion character, which is \^\fB!\fP\^ by default.
-Only backslash (\^\fB\e\fP\^) and single quotes can quote
-the history expansion character.
-.SS Event Designators
-.PP
-An event designator is a reference to a command line entry in the
-history list.
-Unless the reference is absolute, events are relative to the current
-position in the history list.
-.PP
-.PD 0
-.TP
-.B !
-Start a history substitution, except when followed by a
-.BR blank ,
-newline, = or (.
-.TP
-.B !\fIn\fR
-Refer to command line
-.IR n .
-.TP
-.B !\-\fIn\fR
-Refer to the current command minus
-.IR n .
-.TP
-.B !!
-Refer to the previous command.  This is a synonym for `!\-1'.
-.TP
-.B !\fIstring\fR
-Refer to the most recent command
-preceding the current position in the history list
-starting with
-.IR string .
-.TP
-.B !?\fIstring\fR\fB[?]\fR
-Refer to the most recent command
-preceding the current position in the history list
-containing
-.IR string .
-The trailing \fB?\fP may be omitted if
-.I string
-is followed immediately by a newline.
-.TP
-.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
-Quick substitution.  Repeat the last command, replacing
-.I string1
-with
-.IR string2 .
-Equivalent to
-``!!:s/\fIstring1\fP/\fIstring2\fP/''
-(see \fBModifiers\fP below).
-.TP
-.B !#
-The entire command line typed so far.
-.PD
-.SS Word Designators
-.PP
-Word designators are used to select desired words from the event.
-A
-.B :
-separates the event specification from the word designator.
-It may be omitted if the word designator begins with a
-.BR ^ ,
-.BR $ ,
-.BR * ,
-.BR \- ,
-or
-.BR % .
-Words are numbered from the beginning of the line,
-with the first word being denoted by 0 (zero).
-Words are inserted into the current line separated by single spaces.
-.PP
-.PD 0
-.TP
-.B 0 (zero)
-The zeroth word.  For the shell, this is the command
-word.
-.TP
-.I n
-The \fIn\fRth word.
-.TP
-.B ^
-The first argument.  That is, word 1.
-.TP
-.B $
-The last word.  This is usually the last argument, but will expand to the
-zeroth word if there is only one word in the line.
-.TP
-.B %
-The word matched by the most recent `?\fIstring\fR?' search.
-.TP
-.I x\fB\-\fPy
-A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
-.TP
-.B *
-All of the words but the zeroth.  This is a synonym
-for `\fI1\-$\fP'.  It is not an error to use
-.B *
-if there is just one
-word in the event; the empty string is returned in that case.
-.TP
-.B x*
-Abbreviates \fIx\-$\fP.
-.TP
-.B x\-
-Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
-.PD
-.PP
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-.SS Modifiers
-.PP
-After the optional word designator, there may appear a sequence of
-one or more of the following modifiers, each preceded by a `:'.
-.PP
-.PD 0
-.PP
-.TP
-.B h
-Remove a trailing file name component, leaving only the head.
-.TP
-.B t
-Remove all leading file name components, leaving the tail.
-.TP
-.B r
-Remove a trailing suffix of the form \fI.xxx\fP, leaving the
-basename.
-.TP
-.B e
-Remove all but the trailing suffix.
-.TP
-.B p
-Print the new command but do not execute it.
-.TP
-.B q
-Quote the substituted words, escaping further substitutions.
-.TP
-.B x
-Quote the substituted words as with
-.BR q ,
-but break into words at
-.B blanks
-and newlines.
-.TP
-.B s/\fIold\fP/\fInew\fP/
-Substitute
-.I new
-for the first occurrence of
-.I old
-in the event line.  Any delimiter can be used in place of /.  The
-final delimiter is optional if it is the last character of the
-event line.  The delimiter may be quoted in
-.I old
-and
-.I new
-with a single backslash.  If & appears in
-.IR new ,
-it is replaced by
-.IR old .
-A single backslash will quote the &.  If
-.I old
-is null, it is set to the last
-.I old
-substituted, or, if no previous history substitutions took place,
-the last
-.I string
-in a
-.B !?\fIstring\fR\fB[?]\fR
-search.
-.TP
-.B &
-Repeat the previous substitution.
-.TP
-.B g
-Cause changes to be applied over the entire event line.  This is
-used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
-or `\fB:&\fP'.  If used with
-`\fB:s\fP', any delimiter can be used
-in place of /, and the final delimiter is optional
-if it is the last character of the event line.
-An \fBa\fP may be used as a synonym for \fBg\fP.
-.TP
-.B G
-Apply the following `\fBs\fP' modifier once to each word in the event line.
-.PD
-.SH "PROGRAMMING WITH HISTORY FUNCTIONS"
-This section describes how to use the History library in other programs.
-.SS Introduction to History
-.PP
-The programmer using the History library has available functions
-for remembering lines on a history list, associating arbitrary data
-with a line, removing lines from the list, searching through the list
-for a line containing an arbitrary text string, and referencing any line
-in the list directly.  In addition, a history \fIexpansion\fP function
-is available which provides for a consistent user interface across
-different programs.
-.PP
-The user using programs written with the History library has the
-benefit of a consistent user interface with a set of well-known
-commands for manipulating the text of previous lines and using that text
-in new commands.  The basic history manipulation commands are
-identical to
-the history substitution provided by \fBbash\fP.
-.PP
-If the programmer desires, he can use the Readline library, which
-includes some history manipulation by default, and has the added
-advantage of command line editing.
-.PP
-Before declaring any functions using any functionality the History
-library provides in other code, an application writer should include
-the file
-.FN <readline/history.h>
-in any file that uses the
-History library's features.  It supplies extern declarations for all
-of the library's public functions and variables, and declares all of
-the public data structures.
-
-.SS History Storage
-.PP
-The history list is an array of history entries.  A history entry is
-declared as follows:
-.PP
-.Vb "typedef void *" histdata_t;
-.PP
-.nf
-typedef struct _hist_entry {
-  char *line;
-  char *timestamp;
-  histdata_t data;
-} HIST_ENTRY;
-.fi
-.PP
-The history list itself might therefore be declared as
-.PP
-.Vb "HIST_ENTRY **" the_history_list;
-.PP
-The state of the History library is encapsulated into a single structure:
-.PP
-.nf
-/*
- * A structure used to pass around the current state of the history.
- */
-typedef struct _hist_state {
-  HIST_ENTRY **entries; /* Pointer to the entries themselves. */
-  int offset;           /* The location pointer within this array. */
-  int length;           /* Number of elements within this array. */
-  int size;             /* Number of slots allocated to this array. */
-  int flags;
-} HISTORY_STATE;
-.fi
-.PP
-If the flags member includes \fBHS_STIFLED\fP, the history has been
-stifled.
-.SH "History Functions"
-.PP
-This section describes the calling sequence for the various functions
-exported by the GNU History library.
-.SS Initializing History and State Management
-This section describes functions used to initialize and manage
-the state of the History library when you want to use the history
-functions in your program.
-
-.Fn1 void using_history void
-Begin a session in which the history functions might be used.  This
-initializes the interactive variables.
-
-.Fn1 "HISTORY_STATE *" history_get_history_state void
-Return a structure describing the current state of the input history.
-
-.Fn1 void history_set_history_state "HISTORY_STATE *state"
-Set the state of the history list according to \fIstate\fP.
-
-.SS History List Management
-
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
-.Fn1 void add_history "const char *string"
-Place \fIstring\fP at the end of the history list.  The associated data
-field (if any) is set to \fBNULL\fP.
-
-.Fn1 void add_history_time "const char *string"
-Change the time stamp associated with the most recent history entry to
-\fIstring\fP.
-
-.Fn1 "HIST_ENTRY *" remove_history "int which"
-Remove history entry at offset \fIwhich\fP from the history.  The
-removed element is returned so you can free the line, data,
-and containing structure.
-
-.Fn1 "histdata_t" free_history_entry "HIST_ENTRY *histent"
-Free the history entry \fIhistent\fP and any history library private
-data associated with it.  Returns the application-specific data
-so the caller can dispose of it.
-
-.Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data"
-Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP.
-This returns the old entry so the caller can dispose of any
-application-specific data.  In the case
-of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned.
-
-.Fn1 void clear_history "void"
-Clear the history list by deleting all the entries.
-
-.Fn1 void stifle_history "int max"
-Stifle the history list, remembering only the last \fImax\fP entries.
-
-.Fn1 int unstifle_history "void"
-Stop stifling the history.  This returns the previously-set
-maximum number of history entries (as set by \fBstifle_history()\fP).
-history was stifled.  The value is positive if the history was
-stifled, negative if it wasn't.
-
-.Fn1 int history_is_stifled "void"
-Returns non-zero if the history is stifled, zero if it is not.
-
-.SS Information About the History List
-
-These functions return information about the entire history list or
-individual list entries.
-
-.Fn1 "HIST_ENTRY **" history_list "void"
-Return a \fBNULL\fP terminated array of \fIHIST_ENTRY *\fP which is the
-current input history.  Element 0 of this list is the beginning of time.
-If there is no history, return \fBNULL\fP.
-
-.Fn1 int where_history "void"
-Returns the offset of the current history element.
-
-.Fn1 "HIST_ENTRY *" current_history "void"
-Return the history entry at the current position, as determined by
-\fBwhere_history()\fP.  If there is no entry there, return a \fBNULL\fP
-pointer.
-
-.Fn1 "HIST_ENTRY *" history_get "int offset"
-Return the history entry at position \fIoffset\fP, starting from
-\fBhistory_base\fP.
-If there is no entry there, or if \fIoffset\fP
-is greater than the history length, return a \fBNULL\fP pointer.
-
-.Fn1 "time_t" history_get_time "HIST_ENTRY *"
-Return the time stamp associated with the history entry passed as the argument.
-
-.Fn1 int history_total_bytes "void"
-Return the number of bytes that the primary history entries are using.
-This function returns the sum of the lengths of all the lines in the
-history.
-
-.SS Moving Around the History List
-
-These functions allow the current index into the history list to be
-set or changed.
-
-.Fn1 int history_set_pos "int pos"
-Set the current history offset to \fIpos\fP, an absolute index
-into the list.
-Returns 1 on success, 0 if \fIpos\fP is less than zero or greater
-than the number of history entries.
-
-.Fn1 "HIST_ENTRY *" previous_history "void"
-Back up the current history offset to the previous history entry, and
-return a pointer to that entry.  If there is no previous entry, return
-a \fBNULL\fP pointer.
-
-.Fn1 "HIST_ENTRY *" next_history "void"
-If the current history offset refers to a valid history entry,
-increment the current history offset.
-If the possibly-incremented history offset refers to a valid history
-entry, return a pointer to that entry;
-otherwise, return a \fBNULL\fP pointer.
-
-.SS Searching the History List
-
-These functions allow searching of the history list for entries containing
-a specific string.  Searching may be performed both forward and backward
-from the current history position.  The search may be \fIanchored\fP,
-meaning that the string must match at the beginning of the history entry.
-
-.Fn2 int history_search "const char *string" "int direction"
-Search the history for \fIstring\fP, starting at the current history offset.
-If \fIdirection\fP is less than 0, then the search is through
-previous entries, otherwise through subsequent entries.
-If \fIstring\fP is found, then
-the current history index is set to that history entry, and the value
-returned is the offset in the line of the entry where
-\fIstring\fP was found.  Otherwise, nothing is changed, and a -1 is
-returned.
-
-.Fn2 int history_search_prefix "const char *string" "int direction"
-Search the history for \fIstring\fP, starting at the current history
-offset.  The search is anchored: matching lines must begin with
-\fIstring\fP.  If \fIdirection\fP is less than 0, then the search is
-through previous entries, otherwise through subsequent entries.
-If \fIstring\fP is found, then the
-current history index is set to that entry, and the return value is 0. 
-Otherwise, nothing is changed, and a -1 is returned. 
-
-.Fn3 int history_search_pos "const char *string" "int direction" "int pos"
-Search for \fIstring\fP in the history list, starting at \fIpos\fP, an
-absolute index into the list.  If \fIdirection\fP is negative, the search
-proceeds backward from \fIpos\fP, otherwise forward.  Returns the absolute
-index of the history element where \fIstring\fP was found, or -1 otherwise.
-
-.SS Managing the History File
-The History library can read the history from and write it to a file.
-This section documents the functions for managing a history file.
-
-.Fn1 int read_history "const char *filename"
-Add the contents of \fIfilename\fP to the history list, a line at a time.
-If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP.
-Returns 0 if successful, or \fBerrno\fP if not.
-
-.Fn3 int read_history_range "const char *filename" "int from" "int to"
-Read a range of lines from \fIfilename\fP, adding them to the history list.
-Start reading at line \fIfrom\fP and end at \fIto\fP.
-If \fIfrom\fP is zero, start at the beginning.  If \fIto\fP is less than
-\fIfrom\fP, then read until the end of the file.  If \fIfilename\fP is
-\fBNULL\fP, then read from \fI~/.history\fP.  Returns 0 if successful,
-or \fBerrno\fP if not.
-
-.Fn1 int write_history "const char *filename"
-Write the current history to \fIfilename\fP, overwriting \fIfilename\fP
-if necessary.
-If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI~/.history\fP.
-Returns 0 on success, or \fBerrno\fP on a read or write error.
-
-
-.Fn2 int append_history "int nelements" "const char *filename"
-Append the last \fInelements\fP of the history list to \fIfilename\fP.
-If \fIfilename\fP is \fBNULL\fP, then append to \fI~/.history\fP.
-Returns 0 on success, or \fBerrno\fP on a read or write error.
-
-.Fn2 int history_truncate_file "const char *filename" "int nlines"
-Truncate the history file \fIfilename\fP, leaving only the last
-\fInlines\fP lines.
-If \fIfilename\fP is \fBNULL\fP, then \fI~/.history\fP is truncated.
-Returns 0 on success, or \fBerrno\fP on failure.
-
-.SS History Expansion
-
-These functions implement history expansion.
-
-.Fn2 int history_expand "char *string" "char **output"
-Expand \fIstring\fP, placing the result into \fIoutput\fP, a pointer
-to a string.  Returns:
-.RS
-.PD 0
-.TP
-0
-If no expansions took place (or, if the only change in
-the text was the removal of escape characters preceding the history expansion
-character);
-.TP
-1
-if expansions did take place;
-.TP
--1
-if there was an error in expansion;
-.TP
-2
-if the returned line should be displayed, but not executed,
-as with the \fB:p\fP modifier.
-.PD
-.RE
-If an error ocurred in expansion, then \fIoutput\fP contains a descriptive
-error message.
-
-.Fn3 "char *" get_history_event "const char *string" "int *cindex" "int qchar"
-Returns the text of the history event beginning at \fIstring\fP +
-\fI*cindex\fP.  \fI*cindex\fP is modified to point to after the event
-specifier.  At function entry, \fIcindex\fP points to the index into
-\fIstring\fP where the history event specification begins.  \fIqchar\fP
-is a character that is allowed to end the event specification in addition
-to the ``normal'' terminating characters.
-
-.Fn1 "char **" history_tokenize "const char *string"
-Return an array of tokens parsed out of \fIstring\fP, much as the
-shell might.
-The tokens are split on the characters in the
-\fBhistory_word_delimiters\fP variable,
-and shell quoting conventions are obeyed.
-
-.Fn3 "char *" history_arg_extract "int first" "int last" "const char *string"
-Extract a string segment consisting of the \fIfirst\fP through \fIlast\fP
-arguments present in \fIstring\fP.  Arguments are split using
-\fBhistory_tokenize()\fP.
-
-.SS History Variables
-
-This section describes the externally-visible variables exported by
-the GNU History Library.
-
-.Vb int history_base
-The logical offset of the first entry in the history list.
-
-.Vb int history_length
-The number of entries currently stored in the history list.
-
-.Vb int history_max_entries
-The maximum number of history entries.  This must be changed using
-\fBstifle_history()\fP.
-
-.Vb int history_wite_timestamps
-If non-zero, timestamps are written to the history file, so they can be
-preserved between sessions.  The default value is 0, meaning that
-timestamps are not saved.
-The current timestamp format uses the value of \fIhistory_comment_char\fP
-to delimit timestamp entries in the history file.  If that variable does
-not have a value (the default), timestamps will not be written.
-
-.Vb char history_expansion_char
-The character that introduces a history event.  The default is \fB!\fP.
-Setting this to 0 inhibits history expansion.
-
-.Vb char history_subst_char
-The character that invokes word substitution if found at the start of
-a line.  The default is \fB^\fP.
-
-.Vb char history_comment_char
-During tokenization, if this character is seen as the first character
-of a word, then it and all subsequent characters up to a newline are
-ignored, suppressing history expansion for the remainder of the line.
-This is disabled by default.
-
-.Vb "char *" history_word_delimiters
-The characters that separate tokens for \fBhistory_tokenize()\fP.
-The default value is \fB"\ \et\en()<>;&|"\fP.
-
-.Vb "char *" history_no_expand_chars
-The list of characters which inhibit history expansion if found immediately
-following \fBhistory_expansion_char\fP.  The default is space, tab, newline,
-\fB\er\fP, and \fB=\fP.
-
-.Vb "char *" history_search_delimiter_chars
-The list of additional characters which can delimit a history search
-string, in addition to space, tab, \fI:\fP and \fI?\fP in the case of
-a substring search.  The default is empty.
-
-.Vb int history_quotes_inhibit_expansion
-If non-zero, double-quoted words are not scanned for the history expansion
-character or the history comment character.  The default value is 0.
-
-.Vb "rl_linebuf_func_t *" history_inhibit_expansion_function
-This should be set to the address of a function that takes two arguments:
-a \fBchar *\fP (\fIstring\fP)
-and an \fBint\fP index into that string (\fIi\fP).
-It should return a non-zero value if the history expansion starting at
-\fIstring[i]\fP should not be performed; zero if the expansion should
-be done.
-It is intended for use by applications like \fBbash\fP that use the history
-expansion character for additional purposes.
-By default, this variable is set to \fBNULL\fP.
-.SH FILES
-.PD 0 
-.TP
-.FN ~/.history
-Default filename for reading and writing saved history
-.PD
-.SH "SEE ALSO"
-.PD 0
-.TP
-\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIbash\fP(1)
-.TP
-\fIreadline\fP(3)
-.PD
-.SH AUTHORS
-Brian Fox, Free Software Foundation
-.br
-bfox@gnu.org
-.PP
-Chet Ramey, Case Western Reserve University
-.br
-chet.ramey@case.edu
-.SH BUG REPORTS
-If you find a bug in the
-.B history
-library, you should report it.  But first, you should
-make sure that it really is a bug, and that it appears in the latest
-version of the
-.B history
-library that you have.
-.PP
-Once you have determined that a bug actually exists, mail a
-bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
-If you have a fix, you are welcome to mail that
-as well!  Suggestions and `philosophical' bug reports may be mailed
-to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
-newsgroup
-.BR gnu.bash.bug .
-.PP
-Comments and bug reports concerning
-this manual page should be directed to
-.IR chet.ramey@case.edu .
diff --git a/lib/readline/doc/history.aux b/lib/readline/doc/history.aux
deleted file mode 100644 (file)
index 33115f9..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-@xrdef{Using History Interactively-title}{Using History Interactively}
-@xrdef{Using History Interactively-snt}{Chapter@tie 1}
-@xrdef{History Interaction-title}{History Expansion}
-@xrdef{History Interaction-snt}{Section@tie 1.1}
-@xrdef{Event Designators-title}{Event Designators}
-@xrdef{Event Designators-snt}{Section@tie 1.1.1}
-@xrdef{Word Designators-title}{Word Designators}
-@xrdef{Word Designators-snt}{Section@tie 1.1.2}
-@xrdef{Using History Interactively-pg}{1}
-@xrdef{History Interaction-pg}{1}
-@xrdef{Event Designators-pg}{1}
-@xrdef{Modifiers-title}{Modifiers}
-@xrdef{Modifiers-snt}{Section@tie 1.1.3}
-@xrdef{Word Designators-pg}{2}
-@xrdef{Modifiers-pg}{2}
-@xrdef{Programming with GNU History-title}{Programming with GNU History}
-@xrdef{Programming with GNU History-snt}{Chapter@tie 2}
-@xrdef{Introduction to History-title}{Introduction to History}
-@xrdef{Introduction to History-snt}{Section@tie 2.1}
-@xrdef{History Storage-title}{History Storage}
-@xrdef{History Storage-snt}{Section@tie 2.2}
-@xrdef{Programming with GNU History-pg}{4}
-@xrdef{Introduction to History-pg}{4}
-@xrdef{History Storage-pg}{4}
-@xrdef{History Functions-title}{History Functions}
-@xrdef{History Functions-snt}{Section@tie 2.3}
-@xrdef{Initializing History and State Management-title}{Initializing History and State Management}
-@xrdef{Initializing History and State Management-snt}{Section@tie 2.3.1}
-@xrdef{History List Management-title}{History List Management}
-@xrdef{History List Management-snt}{Section@tie 2.3.2}
-@xrdef{History Functions-pg}{5}
-@xrdef{Initializing History and State Management-pg}{5}
-@xrdef{History List Management-pg}{5}
-@xrdef{Information About the History List-title}{Information About the History List}
-@xrdef{Information About the History List-snt}{Section@tie 2.3.3}
-@xrdef{Moving Around the History List-title}{Moving Around the History List}
-@xrdef{Moving Around the History List-snt}{Section@tie 2.3.4}
-@xrdef{Information About the History List-pg}{6}
-@xrdef{Moving Around the History List-pg}{6}
-@xrdef{Searching the History List-title}{Searching the History List}
-@xrdef{Searching the History List-snt}{Section@tie 2.3.5}
-@xrdef{Managing the History File-title}{Managing the History File}
-@xrdef{Managing the History File-snt}{Section@tie 2.3.6}
-@xrdef{Searching the History List-pg}{7}
-@xrdef{Managing the History File-pg}{7}
-@xrdef{History Expansion-title}{History Expansion}
-@xrdef{History Expansion-snt}{Section@tie 2.3.7}
-@xrdef{History Variables-title}{History Variables}
-@xrdef{History Variables-snt}{Section@tie 2.4}
-@xrdef{History Expansion-pg}{8}
-@xrdef{History Variables-pg}{8}
-@xrdef{History Programming Example-title}{History Programming Example}
-@xrdef{History Programming Example-snt}{Section@tie 2.5}
-@xrdef{History Programming Example-pg}{10}
-@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
-@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char65{}}
-@xrdef{GNU Free Documentation License-pg}{12}
-@xrdef{Concept Index-title}{Concept Index}
-@xrdef{Concept Index-snt}{Appendix@tie @char66{}}
-@xrdef{Concept Index-pg}{20}
-@xrdef{Function and Variable Index-title}{Function and Variable Index}
-@xrdef{Function and Variable Index-snt}{Appendix@tie @char67{}}
-@xrdef{Function and Variable Index-pg}{21}
diff --git a/lib/readline/doc/history.bt b/lib/readline/doc/history.bt
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/history.cp b/lib/readline/doc/history.cp
deleted file mode 100644 (file)
index 7a2fe80..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-\entry{history expansion}{1}{history expansion}
-\entry{event designators}{1}{event designators}
-\entry{history events}{1}{history events}
-\entry{History Searching}{7}{History Searching}
-\entry{anchored search}{7}{anchored search}
diff --git a/lib/readline/doc/history.cps b/lib/readline/doc/history.cps
deleted file mode 100644 (file)
index 20db3f6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-\initial {A}
-\entry {anchored search}{7}
-\initial {E}
-\entry {event designators}{1}
-\initial {H}
-\entry {history events}{1}
-\entry {history expansion}{1}
-\entry {History Searching}{7}
diff --git a/lib/readline/doc/history.dvi b/lib/readline/doc/history.dvi
deleted file mode 100644 (file)
index fd4fae5..0000000
Binary files a/lib/readline/doc/history.dvi and /dev/null differ
diff --git a/lib/readline/doc/history.fn b/lib/readline/doc/history.fn
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/history.html b/lib/readline/doc/history.html
deleted file mode 100644 (file)
index ce35004..0000000
+++ /dev/null
@@ -1,2299 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on July, 1  2015 by texi2html 1.64 -->
-<!-- 
-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>
--->
-<HEAD>
-<TITLE>GNU History Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU History Library: ">
-<META NAME="keywords" CONTENT="GNU History Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU History Library</H1></P><P>
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC1">1. Using History Interactively</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History User's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC6">2. Programming with GNU History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History Programmer's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC19">A. GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC21">B. Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC22">C. Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
-                                 and variables.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Using History Interactively"></A>
-<H1> 1. Using History Interactively </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes how to use the GNU History Library interactively,
-from a user's standpoint.  It should be considered a user's guide.  For
-information on using the GNU History Library in your own programs,
-see section <A HREF="history.html#SEC6">2. Programming with GNU History</A>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC2">1.1 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What it feels like using History as a user.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="History Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 History Expansion </H2>
-<!--docid::SEC2::-->
-<P>
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by <CODE>csh</CODE>.  This section
-describes the syntax used to manipulate the history information.
-</P><P>
-
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-</P><P>
-
-History expansion takes place in two parts.  The first is to determine
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one.  The line selected from the history is called the
-<EM>event</EM>, and the portions of that line that are acted upon are
-called <EM>words</EM>.  Various <EM>modifiers</EM> are available to manipulate
-the selected words.  The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
-History expansions are introduced by the appearance of the
-history expansion character, which is <SAMP>`!'</SAMP> by default.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to specify which history line to use.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC4">1.1.2 Word Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying which words are of interest.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC5">1.1.3 Modifiers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Modifying the results of substitution.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Event Designators"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.1 Event Designators </H3>
-<!--docid::SEC3::-->
-<P>
-
-An event designator is a reference to a command line entry in the
-history list.
-Unless the reference is absolute, events are relative to the current
-position in the history list.
-<A NAME="IDX1"></A>
-</P><P>
-
-<DL COMPACT>
-
-<DT><CODE>!</CODE>
-<DD>Start a history substitution, except when followed by a space, tab,
-the end of the line, or <SAMP>`='</SAMP>.
-<P>
-
-<DT><CODE>!<VAR>n</VAR></CODE>
-<DD>Refer to command line <VAR>n</VAR>.
-<P>
-
-<DT><CODE>!-<VAR>n</VAR></CODE>
-<DD>Refer to the command <VAR>n</VAR> lines back.
-<P>
-
-<DT><CODE>!!</CODE>
-<DD>Refer to the previous command.  This is a synonym for <SAMP>`!-1'</SAMP>.
-<P>
-
-<DT><CODE>!<VAR>string</VAR></CODE>
-<DD>Refer to the most recent command
-preceding the current position in the history list
-starting with <VAR>string</VAR>.
-<P>
-
-<DT><CODE>!?<VAR>string</VAR>[?]</CODE>
-<DD>Refer to the most recent command
-preceding the current position in the history list
-containing <VAR>string</VAR>.
-The trailing
-<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by
-a newline.
-<P>
-
-<DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE>
-<DD>Quick Substitution.  Repeat the last command, replacing <VAR>string1</VAR>
-with <VAR>string2</VAR>.  Equivalent to
-<CODE>!!:s/<VAR>string1</VAR>/<VAR>string2</VAR>/</CODE>.
-<P>
-
-<DT><CODE>!#</CODE>
-<DD>The entire command line typed so far.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Word Designators"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.2 Word Designators </H3>
-<!--docid::SEC4::-->
-<P>
-
-Word designators are used to select desired words from the event.
-A <SAMP>`:'</SAMP> separates the event specification from the word designator.  It
-may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>,
-<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>.  Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero).  Words are
-inserted into the current line separated by single spaces.
-</P><P>
-
-For example,
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>!!</CODE>
-<DD>designates the preceding command.  When you type this, the preceding
-command is repeated in toto.
-<P>
-
-<DT><CODE>!!:$</CODE>
-<DD>designates the last argument of the preceding command.  This may be
-shortened to <CODE>!$</CODE>.
-<P>
-
-<DT><CODE>!fi:2</CODE>
-<DD>designates the second argument of the most recent command starting with
-the letters <CODE>fi</CODE>.
-</DL>
-<P>
-
-Here are the word designators:
-<DL COMPACT>
-
-<DT><CODE>0 (zero)</CODE>
-<DD>The <CODE>0</CODE>th word.  For many applications, this is the command word.
-<P>
-
-<DT><CODE><VAR>n</VAR></CODE>
-<DD>The <VAR>n</VAR>th word.
-<P>
-
-<DT><CODE>^</CODE>
-<DD>The first argument; that is, word 1.
-<P>
-
-<DT><CODE>$</CODE>
-<DD>The last argument.
-<P>
-
-<DT><CODE>%</CODE>
-<DD>The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
-<P>
-
-<DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE>
-<DD>A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>.
-<P>
-
-<DT><CODE>*</CODE>
-<DD>All of the words, except the <CODE>0</CODE>th.  This is a synonym for <SAMP>`1-$'</SAMP>.
-It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event;
-the empty string is returned in that case.
-<P>
-
-<DT><CODE><VAR>x</VAR>*</CODE>
-<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
-<P>
-
-<DT><CODE><VAR>x</VAR>-</CODE>
-<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
-<P>
-
-</DL>
-<P>
-
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-</P><P>
-
-<A NAME="Modifiers"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.1.3 Modifiers </H3>
-<!--docid::SEC5::-->
-<P>
-
-After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a <SAMP>`:'</SAMP>.
-</P><P>
-
-<DL COMPACT>
-
-<DT><CODE>h</CODE>
-<DD>Remove a trailing pathname component, leaving only the head.
-<P>
-
-<DT><CODE>t</CODE>
-<DD>Remove all leading pathname components, leaving the tail.
-<P>
-
-<DT><CODE>r</CODE>
-<DD>Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving
-the basename.
-<P>
-
-<DT><CODE>e</CODE>
-<DD>Remove all but the trailing suffix.
-<P>
-
-<DT><CODE>p</CODE>
-<DD>Print the new command but do not execute it.
-<P>
-
-<DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>
-<DD>Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the
-event line.  Any delimiter may be used in place of <SAMP>`/'</SAMP>.
-The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR>
-with a single backslash.  If <SAMP>`&#38;'</SAMP> appears in <VAR>new</VAR>,
-it is replaced by <VAR>old</VAR>.  A single backslash will quote
-the <SAMP>`&#38;'</SAMP>.  The final delimiter is optional if it is the last
-character on the input line.
-<P>
-
-<DT><CODE>&#38;</CODE>
-<DD>Repeat the previous substitution.
-<P>
-
-<DT><CODE>g</CODE>
-<DD><DT><CODE>a</CODE>
-<DD>Cause changes to be applied over the entire event line.  Used in
-conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>,
-or with <SAMP>`&#38;'</SAMP>.
-<P>
-
-<DT><CODE>G</CODE>
-<DD>Apply the following <SAMP>`s'</SAMP> modifier once to each word in the event.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Programming with GNU History"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> 2. Programming with GNU History </H1>
-<!--docid::SEC6::-->
-<P>
-
-This chapter describes how to interface programs that you write
-with the GNU History Library.
-It should be considered a technical guide.
-For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">1. Using History Interactively</A>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC7">2.1 Introduction to History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What is the GNU History library for?</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC8">2.2 History Storage</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How information is stored.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC9">2.3 History Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that you can use.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC17">2.4 History Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables that control behaviour.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC18">2.5 History Programming Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Example of using the GNU History Library.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction to History"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.1 Introduction to History </H2>
-<!--docid::SEC7::-->
-<P>
-
-Many programs read input from the user a line at a time.  The GNU
-History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones. 
-</P><P>
-
-The programmer using the History library has available functions
-for remembering lines on a history list, associating arbitrary data
-with a line, removing lines from the list, searching through the list
-for a line containing an arbitrary text string, and referencing any line
-in the list directly.  In addition, a history <EM>expansion</EM> function
-is available which provides for a consistent user interface across
-different programs.
-</P><P>
-
-The user using programs written with the History library has the
-benefit of a consistent user interface with a set of well-known
-commands for manipulating the text of previous lines and using that text
-in new commands.  The basic history manipulation commands are similar to
-the history substitution provided by <CODE>csh</CODE>.
-</P><P>
-
-If the programmer desires, he can use the Readline library, which
-includes some history manipulation by default, and has the added
-advantage of command line editing.
-</P><P>
-
-Before declaring any functions using any functionality the History
-library provides in other code, an application writer should include
-the file <CODE>&#60;readline/history.h&#62;</CODE> in any file that uses the
-History library's features.  It supplies extern declarations for all
-of the library's public functions and variables, and declares all of
-the public data structures.
-</P><P>
-
-<A NAME="History Storage"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.2 History Storage </H2>
-<!--docid::SEC8::-->
-<P>
-
-The history list is an array of history entries.  A history entry is
-declared as follows:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>typedef void *histdata_t;
-
-typedef struct _hist_entry {
-  char *line;
-  char *timestamp;
-  histdata_t data;
-} HIST_ENTRY;
-</pre></td></tr></table></P><P>
-
-The history list itself might therefore be declared as
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>HIST_ENTRY **the_history_list;
-</pre></td></tr></table></P><P>
-
-The state of the History library is encapsulated into a single structure:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/*
- * A structure used to pass around the current state of the history.
- */
-typedef struct _hist_state {
-  HIST_ENTRY **entries; /* Pointer to the entries themselves. */
-  int offset;           /* The location pointer within this array. */
-  int length;           /* Number of elements within this array. */
-  int size;             /* Number of slots allocated to this array. */
-  int flags;
-} HISTORY_STATE;
-</pre></td></tr></table></P><P>
-
-If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
-stifled.
-</P><P>
-
-<A NAME="History Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.3 History Functions </H2>
-<!--docid::SEC9::-->
-<P>
-
-This section describes the calling sequence for the various functions
-exported by the GNU History library.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to call when you
-                                               want to use history in a
-                                               program.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to manage the list
-                                       of history entries.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions returning information about
-                                       the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to change the position
-                                       in the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to search the history list
-                                       for entries containing a string.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that read and write a file
-                                       containing the history list.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to perform csh-like history
-                                       expansion.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Initializing History and State Management"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.1 Initializing History and State Management </H3>
-<!--docid::SEC10::-->
-<P>
-
-This section describes functions used to initialize and manage
-the state of the History library when you want to use the history
-functions in your program.
-</P><P>
-
-<A NAME="IDX2"></A>
-<DL>
-<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I>
-<DD>Begin a session in which the history functions might be used.  This
-initializes the interactive variables.
-</DL>
-</P><P>
-
-<A NAME="IDX3"></A>
-<DL>
-<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I>
-<DD>Return a structure describing the current state of the input history.
-</DL>
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL>
-<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
-<DD>Set the state of the history list according to <VAR>state</VAR>.
-</DL>
-</P><P>
-
-<A NAME="History List Management"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.2 History List Management </H3>
-<!--docid::SEC11::-->
-<P>
-
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-</P><P>
-
-<A NAME="IDX5"></A>
-<DL>
-<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I>
-<DD>Place <VAR>string</VAR> at the end of the history list.  The associated data
-field (if any) is set to <CODE>NULL</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX6"></A>
-<DL>
-<DT><U>Function:</U> void <B>add_history_time</B> <I>(const char *string)</I>
-<DD>Change the time stamp associated with the most recent history entry to
-<VAR>string</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX7"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
-<DD>Remove history entry at offset <VAR>which</VAR> from the history.  The
-removed element is returned so you can free the line, data,
-and containing structure.
-</DL>
-</P><P>
-
-<A NAME="IDX8"></A>
-<DL>
-<DT><U>Function:</U> histdata_t <B>free_history_entry</B> <I>(HIST_ENTRY *histent)</I>
-<DD>Free the history entry <VAR>histent</VAR> and any history library private
-data associated with it.  Returns the application-specific data
-so the caller can dispose of it.
-</DL>
-</P><P>
-
-<A NAME="IDX9"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I>
-<DD>Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
-This returns the old entry so the caller can dispose of any
-application-specific data.  In the case
-of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
-</DL>
-</P><P>
-
-<A NAME="IDX10"></A>
-<DL>
-<DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I>
-<DD>Clear the history list by deleting all the entries.
-</DL>
-</P><P>
-
-<A NAME="IDX11"></A>
-<DL>
-<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
-<DD>Stifle the history list, remembering only the last <VAR>max</VAR> entries.
-</DL>
-</P><P>
-
-<A NAME="IDX12"></A>
-<DL>
-<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I>
-<DD>Stop stifling the history.  This returns the previously-set
-maximum number of history entries (as set by <CODE>stifle_history()</CODE>).
-The value is positive if the history was
-stifled, negative if it wasn't.
-</DL>
-</P><P>
-
-<A NAME="IDX13"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I>
-<DD>Returns non-zero if the history is stifled, zero if it is not.
-</DL>
-</P><P>
-
-<A NAME="Information About the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.3 Information About the History List </H3>
-<!--docid::SEC12::-->
-<P>
-
-These functions return information about the entire history list or
-individual list entries.
-</P><P>
-
-<A NAME="IDX14"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I>
-<DD>Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the
-current input history.  Element 0 of this list is the beginning of time.
-If there is no history, return <CODE>NULL</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX15"></A>
-<DL>
-<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I>
-<DD>Returns the offset of the current history element.
-</DL>
-</P><P>
-
-<A NAME="IDX16"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I>
-<DD>Return the history entry at the current position, as determined by
-<CODE>where_history()</CODE>.  If there is no entry there, return a <CODE>NULL</CODE>
-pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX17"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
-<DD>Return the history entry at position <VAR>offset</VAR>, starting from
-<CODE>history_base</CODE> (see section <A HREF="history.html#SEC17">2.4 History Variables</A>).
-If there is no entry there, or if <VAR>offset</VAR>
-is greater than the history length, return a <CODE>NULL</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX18"></A>
-<DL>
-<DT><U>Function:</U> time_t <B>history_get_time</B> <I>(HIST_ENTRY *entry)</I>
-<DD>Return the time stamp associated with the history entry <VAR>entry</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX19"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I>
-<DD>Return the number of bytes that the primary history entries are using.
-This function returns the sum of the lengths of all the lines in the
-history.
-</DL>
-</P><P>
-
-<A NAME="Moving Around the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.4 Moving Around the History List </H3>
-<!--docid::SEC13::-->
-<P>
-
-These functions allow the current index into the history list to be
-set or changed.
-</P><P>
-
-<A NAME="IDX20"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
-<DD>Set the current history offset to <VAR>pos</VAR>, an absolute index
-into the list.
-Returns 1 on success, 0 if <VAR>pos</VAR> is less than zero or greater
-than the number of history entries.
-</DL>
-</P><P>
-
-<A NAME="IDX21"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I>
-<DD>Back up the current history offset to the previous history entry, and
-return a pointer to that entry.  If there is no previous entry, return
-a <CODE>NULL</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="IDX22"></A>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I>
-<DD>If the current history offset refers to a valid history entry,
-increment the current history offset.
-If the possibly-incremented history offset refers to a valid history
-entry, return a pointer to that entry;
-otherwise, return a <CODE>BNULL</CODE> pointer.
-</DL>
-</P><P>
-
-<A NAME="Searching the History List"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.5 Searching the History List </H3>
-<!--docid::SEC14::-->
-<P>
-
-These functions allow searching of the history list for entries containing
-a specific string.  Searching may be performed both forward and backward
-from the current history position.  The search may be <EM>anchored</EM>,
-meaning that the string must match at the beginning of the history entry.
-<A NAME="IDX23"></A>
-</P><P>
-
-<A NAME="IDX24"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I>
-<DD>Search the history for <VAR>string</VAR>, starting at the current history offset.
-If <VAR>direction</VAR> is less than 0, then the search is through
-previous entries, otherwise through subsequent entries.
-If <VAR>string</VAR> is found, then
-the current history index is set to that history entry, and the value
-returned is the offset in the line of the entry where
-<VAR>string</VAR> was found.  Otherwise, nothing is changed, and a -1 is
-returned.
-</DL>
-</P><P>
-
-<A NAME="IDX25"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I>
-<DD>Search the history for <VAR>string</VAR>, starting at the current history
-offset.  The search is anchored: matching lines must begin with
-<VAR>string</VAR>.  If <VAR>direction</VAR> is less than 0, then the search is
-through previous entries, otherwise through subsequent entries.
-If <VAR>string</VAR> is found, then the
-current history index is set to that entry, and the return value is 0. 
-Otherwise, nothing is changed, and a -1 is returned. 
-</DL>
-</P><P>
-
-<A NAME="IDX26"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I>
-<DD>Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an
-absolute index into the list.  If <VAR>direction</VAR> is negative, the search
-proceeds backward from <VAR>pos</VAR>, otherwise forward.  Returns the absolute
-index of the history element where <VAR>string</VAR> was found, or -1 otherwise.
-</DL>
-</P><P>
-
-<A NAME="Managing the History File"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.6 Managing the History File </H3>
-<!--docid::SEC15::-->
-<P>
-
-The History library can read the history from and write it to a file.
-This section documents the functions for managing a history file.
-</P><P>
-
-<A NAME="IDX27"></A>
-<DL>
-<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I>
-<DD>Add the contents of <VAR>filename</VAR> to the history list, a line at a time.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>.
-Returns 0 if successful, or <CODE>errno</CODE> if not.
-</DL>
-</P><P>
-
-<A NAME="IDX28"></A>
-<DL>
-<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I>
-<DD>Read a range of lines from <VAR>filename</VAR>, adding them to the history list.
-Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>.
-If <VAR>from</VAR> is zero, start at the beginning.  If <VAR>to</VAR> is less than
-<VAR>from</VAR>, then read until the end of the file.  If <VAR>filename</VAR> is
-<CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>.  Returns 0 if successful,
-or <CODE>errno</CODE> if not.
-</DL>
-</P><P>
-
-<A NAME="IDX29"></A>
-<DL>
-<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I>
-<DD>Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR>
-if necessary.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then write the history list to
-<TT>`~/.history'</TT>.
-Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
-</DL>
-</P><P>
-
-<A NAME="IDX30"></A>
-<DL>
-<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I>
-<DD>Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then append to <TT>`~/.history'</TT>.
-Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
-</DL>
-</P><P>
-
-<A NAME="IDX31"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I>
-<DD>Truncate the history file <VAR>filename</VAR>, leaving only the last
-<VAR>nlines</VAR> lines.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then <TT>`~/.history'</TT> is truncated.
-Returns 0 on success, or <CODE>errno</CODE> on failure.
-</DL>
-</P><P>
-
-<A NAME="History Expansion"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.3.7 History Expansion </H3>
-<!--docid::SEC16::-->
-<P>
-
-These functions implement history expansion.
-</P><P>
-
-<A NAME="IDX32"></A>
-<DL>
-<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
-<DD>Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
-to a string (see section <A HREF="history.html#SEC2">1.1 History Expansion</A>).  Returns:
-<DL COMPACT>
-<DT><CODE>0</CODE>
-<DD>If no expansions took place (or, if the only change in
-the text was the removal of escape characters preceding the history expansion
-character);
-<DT><CODE>1</CODE>
-<DD>if expansions did take place;
-<DT><CODE>-1</CODE>
-<DD>if there was an error in expansion;
-<DT><CODE>2</CODE>
-<DD>if the returned line should be displayed, but not executed,
-as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">1.1.3 Modifiers</A>).
-</DL>
-<P>
-
-If an error occurred in expansion, then <VAR>output</VAR> contains a descriptive
-error message.
-</DL>
-</P><P>
-
-<A NAME="IDX33"></A>
-<DL>
-<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I>
-<DD>Returns the text of the history event beginning at <VAR>string</VAR> +
-<VAR>*cindex</VAR>.  <VAR>*cindex</VAR> is modified to point to after the event
-specifier.  At function entry, <VAR>cindex</VAR> points to the index into
-<VAR>string</VAR> where the history event specification begins.  <VAR>qchar</VAR>
-is a character that is allowed to end the event specification in addition
-to the "normal" terminating characters.
-</DL>
-</P><P>
-
-<A NAME="IDX34"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I>
-<DD>Return an array of tokens parsed out of <VAR>string</VAR>, much as the
-shell might.  The tokens are split on the characters in the
-<VAR>history_word_delimiters</VAR> variable,
-and shell quoting conventions are obeyed.
-</DL>
-</P><P>
-
-<A NAME="IDX35"></A>
-<DL>
-<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I>
-<DD>Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
-arguments present in <VAR>string</VAR>.  Arguments are split using
-<CODE>history_tokenize</CODE>.
-</DL>
-</P><P>
-
-<A NAME="History Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.4 History Variables </H2>
-<!--docid::SEC17::-->
-<P>
-
-This section describes the externally-visible variables exported by
-the GNU History Library.
-</P><P>
-
-<A NAME="IDX36"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_base</B>
-<DD>The logical offset of the first entry in the history list.
-</DL>
-</P><P>
-
-<A NAME="IDX37"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_length</B>
-<DD>The number of entries currently stored in the history list.
-</DL>
-</P><P>
-
-<A NAME="IDX38"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_max_entries</B>
-<DD>The maximum number of history entries.  This must be changed using
-<CODE>stifle_history()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX39"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_write_timestamps</B>
-<DD>If non-zero, timestamps are written to the history file, so they can be
-preserved between sessions.  The default value is 0, meaning that
-timestamps are not saved.
-</P><P>
-
-The current timestamp format uses the value of <VAR>history_comment_char</VAR>
-to delimit timestamp entries in the history file.  If that variable does
-not have a value (the default), timestamps will not be written.
-</DL>
-</P><P>
-
-<A NAME="IDX40"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_expansion_char</B>
-<DD>The character that introduces a history event.  The default is <SAMP>`!'</SAMP>.
-Setting this to 0 inhibits history expansion.
-</DL>
-</P><P>
-
-<A NAME="IDX41"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_subst_char</B>
-<DD>The character that invokes word substitution if found at the start of
-a line.  The default is <SAMP>`^'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX42"></A>
-<DL>
-<DT><U>Variable:</U> char <B>history_comment_char</B>
-<DD>During tokenization, if this character is seen as the first character
-of a word, then it and all subsequent characters up to a newline are
-ignored, suppressing history expansion for the remainder of the line.
-This is disabled by default.
-</DL>
-</P><P>
-
-<A NAME="IDX43"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_word_delimiters</B>
-<DD>The characters that separate tokens for <CODE>history_tokenize()</CODE>.
-The default value is <CODE>" \t\n()<>;&|"</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX44"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
-<DD>The list of additional characters which can delimit a history search
-string, in addition to space, TAB, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of
-a substring search.  The default is empty.
-</DL>
-</P><P>
-
-<A NAME="IDX45"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
-<DD>The list of characters which inhibit history expansion if found immediately
-following <VAR>history_expansion_char</VAR>.  The default is space, tab, newline,
-carriage return, and <SAMP>`='</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX46"></A>
-<DL>
-<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
-<DD>If non-zero, double-quoted words are not scanned for the history expansion
-character or the history comment character.  The default value is 0.
-</DL>
-</P><P>
-
-<A NAME="IDX47"></A>
-<DL>
-<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B>
-<DD>This should be set to the address of a function that takes two arguments:
-a <CODE>char *</CODE> (<VAR>string</VAR>)
-and an <CODE>int</CODE> index into that string (<VAR>i</VAR>).
-It should return a non-zero value if the history expansion starting at
-<VAR>string[i]</VAR> should not be performed; zero if the expansion should
-be done.
-It is intended for use by applications like Bash that use the history
-expansion character for additional purposes.
-By default, this variable is set to <CODE>NULL</CODE>.
-</DL>
-</P><P>
-
-<A NAME="History Programming Example"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.5 History Programming Example </H2>
-<!--docid::SEC18::-->
-<P>
-
-The following program demonstrates simple use of the GNU History Library.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>#include &#60;stdio.h&#62;
-#include &#60;readline/history.h&#62;
-
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  char line[1024], *t;
-  int len, done = 0;
-
-  line[0] = 0;
-
-  using_history ();
-  while (!done)
-    {
-      printf ("history$ ");
-      fflush (stdout);
-      t = fgets (line, sizeof (line) - 1, stdin);
-      if (t &#38;&#38; *t)
-        {
-          len = strlen (t);
-          if (t[len - 1] == '\n')
-            t[len - 1] = '\0';
-        }
-
-      if (!t)
-        strcpy (line, "quit");
-
-      if (line[0])
-        {
-          char *expansion;
-          int result;
-
-          result = history_expand (line, &#38;expansion);
-          if (result)
-            fprintf (stderr, "%s\n", expansion);
-
-          if (result &#60; 0 || result == 2)
-            {
-              free (expansion);
-              continue;
-            }
-
-          add_history (expansion);
-          strncpy (line, expansion, sizeof (line) - 1);
-          free (expansion);
-        }
-
-      if (strcmp (line, "quit") == 0)
-        done = 1;
-      else if (strcmp (line, "save") == 0)
-        write_history ("history_file");
-      else if (strcmp (line, "read") == 0)
-        read_history ("history_file");
-      else if (strcmp (line, "list") == 0)
-        {
-          register HIST_ENTRY **the_list;
-          register int i;
-
-          the_list = history_list ();
-          if (the_list)
-            for (i = 0; the_list[i]; i++)
-              printf ("%d: %s\n", i + history_base, the_list[i]-&#62;line);
-        }
-      else if (strncmp (line, "delete", 6) == 0)
-        {
-          int which;
-          if ((sscanf (line + 6, "%d", &#38;which)) == 1)
-            {
-              HIST_ENTRY *entry = remove_history (which);
-              if (!entry)
-                fprintf (stderr, "No such entry %d\n", which);
-              else
-                {
-                  free (entry-&#62;line);
-                  free (entry);
-                }
-            }
-          else
-            {
-              fprintf (stderr, "non-numeric arg given to `delete'\n");
-            }
-        }
-    }
-}
-</FONT></pre></td></tr></table></P><P>
-
-<A NAME="GNU Free Documentation License"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> A. GNU Free Documentation License </H1>
-<!--docid::SEC19::-->
-<P>
-
-<center>
- Version 1.3, 3 November 2008
-</center>
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-<A HREF="http://fsf.org/">http://fsf.org/</A>
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-</pre></td></tr></table></P><P>
-
-<OL>
-<LI>
-PREAMBLE
-<P>
-
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document <EM>free</EM> in the sense of freedom: to
-assure everyone the effective freedom to copy and redistribute it,
-with or without modifying it, either commercially or noncommercially.
-Secondarily, this License preserves for the author and publisher a way
-to get credit for their work, while not being considered responsible
-for modifications made by others.
-</P><P>
-
-This License is a kind of "copyleft", which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-</P><P>
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-</P><P>
-
-<LI>
-APPLICABILITY AND DEFINITIONS
-<P>
-
-This License applies to any manual or other work, in any medium, that
-contains a notice placed by the copyright holder saying it can be
-distributed under the terms of this License.  Such a notice grants a
-world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein.  The "Document", below,
-refers to any such manual or work.  Any member of the public is a
-licensee, and is addressed as "you".  You accept the license if you
-copy, modify or distribute the work in a way requiring permission
-under copyright law.
-</P><P>
-
-A "Modified Version" of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-</P><P>
-
-A "Secondary Section" is a named appendix or a front-matter section
-of the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall
-subject (or to related matters) and contains nothing that could fall
-directly within that overall subject.  (Thus, if the Document is in
-part a textbook of mathematics, a Secondary Section may not explain
-any mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-</P><P>
-
-The "Invariant Sections" are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.  If a
-section does not fit the above definition of Secondary then it is not
-allowed to be designated as Invariant.  The Document may contain zero
-Invariant Sections.  If the Document does not identify any Invariant
-Sections then there are none.
-</P><P>
-
-The "Cover Texts" are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.  A Front-Cover Text may
-be at most 5 words, and a Back-Cover Text may be at most 25 words.
-</P><P>
-
-A "Transparent" copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, that is suitable for revising the document
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup, or absence of markup, has been arranged to thwart
-or discourage subsequent modification by readers is not Transparent.
-An image format is not Transparent if used for any substantial amount
-of text.  A copy that is not "Transparent" is called "Opaque".
-</P><P>
-
-Examples of suitable formats for Transparent copies include plain
-ASCII without markup, Texinfo input format, LaTeX input
-format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
-<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
-PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification.  Examples
-of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
-<FONT SIZE="-1">JPG</FONT>.  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
-<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
-not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
-PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
-output purposes only.
-</P><P>
-
-The "Title Page" means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, "Title Page" means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-</P><P>
-
-The "publisher" means any person or entity that distributes copies
-of the Document to the public.
-</P><P>
-
-A section "Entitled XYZ" means a named subunit of the Document whose
-title either is precisely XYZ or contains XYZ in parentheses following
-text that translates XYZ in another language.  (Here XYZ stands for a
-specific section name mentioned below, such as "Acknowledgements",
-"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
-of such a section when you modify the Document means that it remains a
-section "Entitled XYZ" according to this definition.
-</P><P>
-
-The Document may include Warranty Disclaimers next to the notice which
-states that this License applies to the Document.  These Warranty
-Disclaimers are considered to be included by reference in this
-License, but only as regards disclaiming warranties: any other
-implication that these Warranty Disclaimers may have is void and has
-no effect on the meaning of this License.
-</P><P>
-
-<LI>
-VERBATIM COPYING
-<P>
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-</P><P>
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-</P><P>
-
-<LI>
-COPYING IN QUANTITY
-<P>
-
-If you publish printed copies (or copies in media that commonly have
-printed covers) of the Document, numbering more than 100, and the
-Document's license notice requires Cover Texts, you must enclose the
-copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-</P><P>
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-</P><P>
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a computer-network location from which the general network-using
-public has access to download using public-standard network protocols
-a complete Transparent copy of the Document, free of added material.
-If you use the latter option, you must take reasonably prudent steps,
-when you begin distribution of Opaque copies in quantity, to ensure
-that this Transparent copy will remain thus accessible at the stated
-location until at least one year after the last time you distribute an
-Opaque copy (directly or through your agents or retailers) of that
-edition to the public.
-</P><P>
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-</P><P>
-
-<LI>
-MODIFICATIONS
-<P>
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-</P><P>
-
-<OL>
-<LI>
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document).  You may use the same title as a previous version
-if the original publisher of that version gives permission.
-<P>
-
-<LI>
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has fewer than five),
-unless they release you from this requirement.
-<P>
-
-<LI>
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-<P>
-
-<LI>
-Preserve all the copyright notices of the Document.
-<P>
-
-<LI>
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-<P>
-
-<LI>
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-<P>
-
-<LI>
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-<P>
-
-<LI>
-Include an unaltered copy of this License.
-<P>
-
-<LI>
-Preserve the section Entitled "History", Preserve its Title, and add
-to it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page.  If
-there is no section Entitled "History" in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-<P>
-
-<LI>
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on.  These may be placed in the "History" section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-<P>
-
-<LI>
-For any section Entitled "Acknowledgements" or "Dedications", Preserve
-the Title of the section, and preserve in the section all the
-substance and tone of each of the contributor acknowledgements and/or
-dedications given therein.
-<P>
-
-<LI>
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles.  Section numbers
-or the equivalent are not considered part of the section titles.
-<P>
-
-<LI>
-Delete any section Entitled "Endorsements".  Such a section
-may not be included in the Modified Version.
-<P>
-
-<LI>
-Do not retitle any existing section to be Entitled "Endorsements" or
-to conflict in title with any Invariant Section.
-<P>
-
-<LI>
-Preserve any Warranty Disclaimers.
-</OL>
-<P>
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-</P><P>
-
-You may add a section Entitled "Endorsements", provided it contains
-nothing but endorsements of your Modified Version by various
-parties--for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-</P><P>
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-</P><P>
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-</P><P>
-
-<LI>
-COMBINING DOCUMENTS
-<P>
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice, and that you preserve all their Warranty Disclaimers.
-</P><P>
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-</P><P>
-
-In the combination, you must combine any sections Entitled "History"
-in the various original documents, forming one section Entitled
-"History"; likewise combine any sections Entitled "Acknowledgements",
-and any sections Entitled "Dedications".  You must delete all
-sections Entitled "Endorsements."
-</P><P>
-
-<LI>
-COLLECTIONS OF DOCUMENTS
-<P>
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-</P><P>
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-</P><P>
-
-<LI>
-AGGREGATION WITH INDEPENDENT WORKS
-<P>
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an "aggregate" if the copyright
-resulting from the compilation is not used to limit the legal rights
-of the compilation's users beyond what the individual works permit.
-When the Document is included in an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-</P><P>
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one half of
-the entire aggregate, the Document's Cover Texts may be placed on
-covers that bracket the Document within the aggregate, or the
-electronic equivalent of covers if the Document is in electronic form.
-Otherwise they must appear on printed covers that bracket the whole
-aggregate.
-</P><P>
-
-<LI>
-TRANSLATION
-<P>
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-the original English version of this License and the original versions
-of those notices and disclaimers.  In case of a disagreement between
-the translation and the original version of this License or a notice
-or disclaimer, the original version will prevail.
-</P><P>
-
-If a section in the Document is Entitled "Acknowledgements",
-"Dedications", or "History", the requirement (section 4) to Preserve
-its Title (section 1) will typically require changing the actual
-title.
-</P><P>
-
-<LI>
-TERMINATION
-<P>
-
-You may not copy, modify, sublicense, or distribute the Document
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense, or distribute it is void, and
-will automatically terminate your rights under this License.
-</P><P>
-
-However, if you cease all violation of this License, then your license
-from a particular copyright holder is reinstated (a) provisionally,
-unless and until the copyright holder explicitly and finally
-terminates your license, and (b) permanently, if the copyright holder
-fails to notify you of the violation by some reasonable means prior to
-60 days after the cessation.
-</P><P>
-
-Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-</P><P>
-
-Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, receipt of a copy of some or all of the same material does
-not give you any rights to use it.
-</P><P>
-
-<LI>
-FUTURE REVISIONS OF THIS LICENSE
-<P>
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
-<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
-</P><P>
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License "or any later version" applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.  If the Document
-specifies that a proxy can decide which future versions of this
-License can be used, that proxy's public statement of acceptance of a
-version permanently authorizes you to choose that version for the
-Document.
-</P><P>
-
-<LI>
-RELICENSING
-<P>
-
-"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-World Wide Web server that publishes copyrightable works and also
-provides prominent facilities for anybody to edit those works.  A
-public wiki that anybody can edit is an example of such a server.  A
-"Massive Multiauthor Collaboration" (or "MMC") contained in the
-site means any set of copyrightable works thus published on the MMC
-site.
-</P><P>
-
-"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-license published by Creative Commons Corporation, a not-for-profit
-corporation with a principal place of business in San Francisco,
-California, as well as future copyleft versions of that license
-published by that same organization.
-</P><P>
-
-"Incorporate" means to publish or republish a Document, in whole or
-in part, as part of another Document.
-</P><P>
-
-An MMC is "eligible for relicensing" if it is licensed under this
-License, and if all works that were first published under this License
-somewhere other than this MMC, and subsequently incorporated in whole
-or in part into the MMC, (1) had no cover texts or invariant sections,
-and (2) were thus incorporated prior to November 1, 2008.
-</P><P>
-
-The operator of an MMC Site may republish an MMC contained in the site
-under CC-BY-SA on the same site at any time before August 1, 2009,
-provided the MMC is eligible for relicensing.
-</P><P>
-
-</OL>
-<P>
-
-<A NAME="SEC20"></A>
-<H2> ADDENDUM: How to use this License for your documents </H2>
-<!--docid::SEC20::-->
-<P>
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>  Copyright (C)  <VAR>year</VAR>  <VAR>your name</VAR>.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.3
-  or any later version published by the Free Software Foundation;
-  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-  Texts.  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
-</FONT></pre></td></tr></table></P><P>
-
-If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the "with<small>...</small>Texts." line with this:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>    with the Invariant Sections being <VAR>list their titles</VAR>, with
-    the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
-    being <VAR>list</VAR>.
-</FONT></pre></td></tr></table></P><P>
-
-If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-</P><P>
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
-</P><P>
-
-<A NAME="Concept Index"></A>
-<HR SIZE="6">
-<A NAME="SEC21"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> B. Concept Index </H1>
-<!--docid::SEC21::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
- &nbsp; 
-<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp; 
-<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
- &nbsp; 
-</td></tr></table><br><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>
-<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX23">anchored search</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC3">event designators</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX1">history events</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC2">history expansion</A></TD><TD valign=top><A HREF="history.html#SEC2">1.1 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#SEC14">History Searching</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
- &nbsp; 
-<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp; 
-<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
- &nbsp; 
-</td></tr></table><br><P>
-
-<A NAME="Function and Variable Index"></A>
-<HR SIZE="6">
-<A NAME="SEC22"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> C. Function and Variable Index </H1>
-<!--docid::SEC22::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
- &nbsp; 
-<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
- &nbsp; 
-<A HREF="history.html#vr_F" style="text-decoration:none"><b>F</b></A>
- &nbsp; 
-<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
- &nbsp; 
-<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
- &nbsp; 
-<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
- &nbsp; 
-<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
- &nbsp; 
-<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
- &nbsp; 
-<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
- &nbsp; 
-<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
- &nbsp; 
-<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
- &nbsp; 
-</td></tr></table><br><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>
-<TR><TH><A NAME="vr_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX5"><CODE>add_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX6"><CODE>add_history_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX30"><CODE>append_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX10"><CODE>clear_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX16"><CODE>current_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_F"></A>F</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX8"><CODE>free_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_G"></A>G</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX33"><CODE>get_history_event</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX35"><CODE>history_arg_extract</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX36"><CODE>history_base</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX42"><CODE>history_comment_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX32"><CODE>history_expand</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX40"><CODE>history_expansion_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX17"><CODE>history_get</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX3"><CODE>history_get_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX18"><CODE>history_get_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX47"><CODE>history_inhibit_expansion_function</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX13"><CODE>history_is_stifled</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX37"><CODE>history_length</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX14"><CODE>history_list</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX38"><CODE>history_max_entries</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX45"><CODE>history_no_expand_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX46"><CODE>history_quotes_inhibit_expansion</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX24"><CODE>history_search</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX44"><CODE>history_search_delimiter_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX26"><CODE>history_search_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX25"><CODE>history_search_prefix</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX4"><CODE>history_set_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX20"><CODE>history_set_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX41"><CODE>history_subst_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX34"><CODE>history_tokenize</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX19"><CODE>history_total_bytes</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX31"><CODE>history_truncate_file</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX43"><CODE>history_word_delimiters</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX39"><CODE>history_write_timestamps</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX22"><CODE>next_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX21"><CODE>previous_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX27"><CODE>read_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX28"><CODE>read_history_range</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX7"><CODE>remove_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX9"><CODE>replace_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX11"><CODE>stifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_U"></A>U</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX12"><CODE>unstifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX2"><CODE>using_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="vr_W"></A>W</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX15"><CODE>where_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="history.html#IDX29"><CODE>write_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
- &nbsp; 
-<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
- &nbsp; 
-<A HREF="history.html#vr_F" style="text-decoration:none"><b>F</b></A>
- &nbsp; 
-<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
- &nbsp; 
-<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
- &nbsp; 
-<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
- &nbsp; 
-<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
- &nbsp; 
-<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
- &nbsp; 
-<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
- &nbsp; 
-<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
- &nbsp; 
-<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
- &nbsp; 
-</td></tr></table><br><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="history.html#SEC2">1.1 History Expansion</A>
-<BR>
-<UL>
-<A NAME="TOC3" HREF="history.html#SEC3">1.1.1 Event Designators</A>
-<BR>
-<A NAME="TOC4" HREF="history.html#SEC4">1.1.2 Word Designators</A>
-<BR>
-<A NAME="TOC5" HREF="history.html#SEC5">1.1.3 Modifiers</A>
-<BR>
-</UL>
-</UL>
-<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
-<BR>
-<UL>
-<A NAME="TOC7" HREF="history.html#SEC7">2.1 Introduction to History</A>
-<BR>
-<A NAME="TOC8" HREF="history.html#SEC8">2.2 History Storage</A>
-<BR>
-<A NAME="TOC9" HREF="history.html#SEC9">2.3 History Functions</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A>
-<BR>
-<A NAME="TOC11" HREF="history.html#SEC11">2.3.2 History List Management</A>
-<BR>
-<A NAME="TOC12" HREF="history.html#SEC12">2.3.3 Information About the History List</A>
-<BR>
-<A NAME="TOC13" HREF="history.html#SEC13">2.3.4 Moving Around the History List</A>
-<BR>
-<A NAME="TOC14" HREF="history.html#SEC14">2.3.5 Searching the History List</A>
-<BR>
-<A NAME="TOC15" HREF="history.html#SEC15">2.3.6 Managing the History File</A>
-<BR>
-<A NAME="TOC16" HREF="history.html#SEC16">2.3.7 History Expansion</A>
-<BR>
-</UL>
-<A NAME="TOC17" HREF="history.html#SEC17">2.4 History Variables</A>
-<BR>
-<A NAME="TOC18" HREF="history.html#SEC18">2.5 History Programming Example</A>
-<BR>
-</UL>
-<A NAME="TOC19" HREF="history.html#SEC19">A. GNU Free Documentation License</A>
-<BR>
-<A NAME="TOC21" HREF="history.html#SEC21">B. Concept Index</A>
-<BR>
-<A NAME="TOC22" HREF="history.html#SEC22">C. Function and Variable Index</A>
-<BR>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
-<BR>
-<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
-<BR>
-<A NAME="TOC19" HREF="history.html#SEC19">A. GNU Free Documentation License</A>
-<BR>
-<A NAME="TOC21" HREF="history.html#SEC21">B. Concept Index</A>
-<BR>
-<A NAME="TOC22" HREF="history.html#SEC22">C. Function and Variable Index</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>July, 1  2015</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>  
-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>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section 
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-</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>
-
-<HR SIZE=1>
-<BR>  
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>July, 1  2015</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/lib/readline/doc/history.info b/lib/readline/doc/history.info
deleted file mode 100644 (file)
index 0ddd616..0000000
+++ /dev/null
@@ -1,1382 +0,0 @@
-This is history.info, produced by makeinfo version 5.2 from
-history.texi.
-
-This document describes the GNU History library (version 6.4, 28 May
-2015), a programming tool that provides a consistent user interface for
-recalling lines of previously typed input.
-
-   Copyright (C) 1988-2014 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, no Front-Cover Texts, and
-     no Back-Cover Texts.  A copy of the license is included in the
-     section entitled "GNU Free Documentation License".
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* History: (history).       The GNU history library API.
-END-INFO-DIR-ENTRY
-
-\1f
-File: history.info,  Node: Top,  Next: Using History Interactively,  Up: (dir)
-
-GNU History Library
-*******************
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-* Menu:
-
-* Using History Interactively::          GNU History User's Manual.
-* Programming with GNU History::  GNU History Programmer's Manual.
-* GNU Free Documentation License::     License for copying this manual.
-* Concept Index::                Index of concepts described in this manual.
-* Function and Variable Index::          Index of externally visible functions
-                                 and variables.
-
-\1f
-File: history.info,  Node: Using History Interactively,  Next: Programming with GNU History,  Prev: Top,  Up: Top
-
-1 Using History Interactively
-*****************************
-
-This chapter describes how to use the GNU History Library interactively,
-from a user's standpoint.  It should be considered a user's guide.  For
-information on using the GNU History Library in your own programs, *note
-Programming with GNU History::.
-
-* Menu:
-
-* History Interaction::                What it feels like using History as a user.
-
-\1f
-File: history.info,  Node: History Interaction,  Up: Using History Interactively
-
-1.1 History Expansion
-=====================
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by 'csh'.  This section describes the
-syntax used to manipulate the history information.
-
-   History expansions introduce words from the history list into the
-input stream, making it easy to repeat commands, insert the arguments to
-a previous command into the current input line, or fix errors in
-previous commands quickly.
-
-   History expansion takes place in two parts.  The first is to
-determine which line from the history list should be used during
-substitution.  The second is to select portions of that line for
-inclusion into the current one.  The line selected from the history is
-called the "event", and the portions of that line that are acted upon
-are called "words".  Various "modifiers" are available to manipulate the
-selected words.  The line is broken into words in the same fashion that
-Bash does, so that several words surrounded by quotes are considered one
-word.  History expansions are introduced by the appearance of the
-history expansion character, which is '!' by default.
-
-* Menu:
-
-* Event Designators::  How to specify which history line to use.
-* Word Designators::   Specifying which words are of interest.
-* Modifiers::          Modifying the results of substitution.
-
-\1f
-File: history.info,  Node: Event Designators,  Next: Word Designators,  Up: History Interaction
-
-1.1.1 Event Designators
------------------------
-
-An event designator is a reference to a command line entry in the
-history list.  Unless the reference is absolute, events are relative to
-the current position in the history list.
-
-'!'
-     Start a history substitution, except when followed by a space, tab,
-     the end of the line, or '='.
-
-'!N'
-     Refer to command line N.
-
-'!-N'
-     Refer to the command N lines back.
-
-'!!'
-     Refer to the previous command.  This is a synonym for '!-1'.
-
-'!STRING'
-     Refer to the most recent command preceding the current position in
-     the history list starting with STRING.
-
-'!?STRING[?]'
-     Refer to the most recent command preceding the current position in
-     the history list containing STRING.  The trailing '?' may be
-     omitted if the STRING is followed immediately by a newline.
-
-'^STRING1^STRING2^'
-     Quick Substitution.  Repeat the last command, replacing STRING1
-     with STRING2.  Equivalent to '!!:s/STRING1/STRING2/'.
-
-'!#'
-     The entire command line typed so far.
-
-\1f
-File: history.info,  Node: Word Designators,  Next: Modifiers,  Prev: Event Designators,  Up: History Interaction
-
-1.1.2 Word Designators
-----------------------
-
-Word designators are used to select desired words from the event.  A ':'
-separates the event specification from the word designator.  It may be
-omitted if the word designator begins with a '^', '$', '*', '-', or '%'.
-Words are numbered from the beginning of the line, with the first word
-being denoted by 0 (zero).  Words are inserted into the current line
-separated by single spaces.
-
-   For example,
-
-'!!'
-     designates the preceding command.  When you type this, the
-     preceding command is repeated in toto.
-
-'!!:$'
-     designates the last argument of the preceding command.  This may be
-     shortened to '!$'.
-
-'!fi:2'
-     designates the second argument of the most recent command starting
-     with the letters 'fi'.
-
-   Here are the word designators:
-
-'0 (zero)'
-     The '0'th word.  For many applications, this is the command word.
-
-'N'
-     The Nth word.
-
-'^'
-     The first argument; that is, word 1.
-
-'$'
-     The last argument.
-
-'%'
-     The word matched by the most recent '?STRING?' search.
-
-'X-Y'
-     A range of words; '-Y' abbreviates '0-Y'.
-
-'*'
-     All of the words, except the '0'th.  This is a synonym for '1-$'.
-     It is not an error to use '*' if there is just one word in the
-     event; the empty string is returned in that case.
-
-'X*'
-     Abbreviates 'X-$'
-
-'X-'
-     Abbreviates 'X-$' like 'X*', but omits the last word.
-
-   If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-\1f
-File: history.info,  Node: Modifiers,  Prev: Word Designators,  Up: History Interaction
-
-1.1.3 Modifiers
----------------
-
-After the optional word designator, you can add a sequence of one or
-more of the following modifiers, each preceded by a ':'.
-
-'h'
-     Remove a trailing pathname component, leaving only the head.
-
-'t'
-     Remove all leading pathname components, leaving the tail.
-
-'r'
-     Remove a trailing suffix of the form '.SUFFIX', leaving the
-     basename.
-
-'e'
-     Remove all but the trailing suffix.
-
-'p'
-     Print the new command but do not execute it.
-
-'s/OLD/NEW/'
-     Substitute NEW for the first occurrence of OLD in the event line.
-     Any delimiter may be used in place of '/'.  The delimiter may be
-     quoted in OLD and NEW with a single backslash.  If '&' appears in
-     NEW, it is replaced by OLD.  A single backslash will quote the '&'.
-     The final delimiter is optional if it is the last character on the
-     input line.
-
-'&'
-     Repeat the previous substitution.
-
-'g'
-'a'
-     Cause changes to be applied over the entire event line.  Used in
-     conjunction with 's', as in 'gs/OLD/NEW/', or with '&'.
-
-'G'
-     Apply the following 's' modifier once to each word in the event.
-
-\1f
-File: history.info,  Node: Programming with GNU History,  Next: GNU Free Documentation License,  Prev: Using History Interactively,  Up: Top
-
-2 Programming with GNU History
-******************************
-
-This chapter describes how to interface programs that you write with the
-GNU History Library.  It should be considered a technical guide.  For
-information on the interactive use of GNU History, *note Using History
-Interactively::.
-
-* Menu:
-
-* Introduction to History::    What is the GNU History library for?
-* History Storage::            How information is stored.
-* History Functions::          Functions that you can use.
-* History Variables::          Variables that control behaviour.
-* History Programming Example::        Example of using the GNU History Library.
-
-\1f
-File: history.info,  Node: Introduction to History,  Next: History Storage,  Up: Programming with GNU History
-
-2.1 Introduction to History
-===========================
-
-Many programs read input from the user a line at a time.  The GNU
-History library is able to keep track of those lines, associate
-arbitrary data with each line, and utilize information from previous
-lines in composing new ones.
-
-   The programmer using the History library has available functions for
-remembering lines on a history list, associating arbitrary data with a
-line, removing lines from the list, searching through the list for a
-line containing an arbitrary text string, and referencing any line in
-the list directly.  In addition, a history "expansion" function is
-available which provides for a consistent user interface across
-different programs.
-
-   The user using programs written with the History library has the
-benefit of a consistent user interface with a set of well-known commands
-for manipulating the text of previous lines and using that text in new
-commands.  The basic history manipulation commands are similar to the
-history substitution provided by 'csh'.
-
-   If the programmer desires, he can use the Readline library, which
-includes some history manipulation by default, and has the added
-advantage of command line editing.
-
-   Before declaring any functions using any functionality the History
-library provides in other code, an application writer should include the
-file '<readline/history.h>' in any file that uses the History library's
-features.  It supplies extern declarations for all of the library's
-public functions and variables, and declares all of the public data
-structures.
-
-\1f
-File: history.info,  Node: History Storage,  Next: History Functions,  Prev: Introduction to History,  Up: Programming with GNU History
-
-2.2 History Storage
-===================
-
-The history list is an array of history entries.  A history entry is
-declared as follows:
-
-     typedef void *histdata_t;
-
-     typedef struct _hist_entry {
-       char *line;
-       char *timestamp;
-       histdata_t data;
-     } HIST_ENTRY;
-
-   The history list itself might therefore be declared as
-
-     HIST_ENTRY **the_history_list;
-
-   The state of the History library is encapsulated into a single
-structure:
-
-     /*
-      * A structure used to pass around the current state of the history.
-      */
-     typedef struct _hist_state {
-       HIST_ENTRY **entries; /* Pointer to the entries themselves. */
-       int offset;           /* The location pointer within this array. */
-       int length;           /* Number of elements within this array. */
-       int size;             /* Number of slots allocated to this array. */
-       int flags;
-     } HISTORY_STATE;
-
-   If the flags member includes 'HS_STIFLED', the history has been
-stifled.
-
-\1f
-File: history.info,  Node: History Functions,  Next: History Variables,  Prev: History Storage,  Up: Programming with GNU History
-
-2.3 History Functions
-=====================
-
-This section describes the calling sequence for the various functions
-exported by the GNU History library.
-
-* Menu:
-
-* Initializing History and State Management::  Functions to call when you
-                                               want to use history in a
-                                               program.
-* History List Management::            Functions used to manage the list
-                                       of history entries.
-* Information About the History List:: Functions returning information about
-                                       the history list.
-* Moving Around the History List::     Functions used to change the position
-                                       in the history list.
-* Searching the History List::         Functions to search the history list
-                                       for entries containing a string.
-* Managing the History File::          Functions that read and write a file
-                                       containing the history list.
-* History Expansion::                  Functions to perform csh-like history
-                                       expansion.
-
-\1f
-File: history.info,  Node: Initializing History and State Management,  Next: History List Management,  Up: History Functions
-
-2.3.1 Initializing History and State Management
------------------------------------------------
-
-This section describes functions used to initialize and manage the state
-of the History library when you want to use the history functions in
-your program.
-
- -- Function: void using_history (void)
-     Begin a session in which the history functions might be used.  This
-     initializes the interactive variables.
-
- -- Function: HISTORY_STATE * history_get_history_state (void)
-     Return a structure describing the current state of the input
-     history.
-
- -- Function: void history_set_history_state (HISTORY_STATE *state)
-     Set the state of the history list according to STATE.
-
-\1f
-File: history.info,  Node: History List Management,  Next: Information About the History List,  Prev: Initializing History and State Management,  Up: History Functions
-
-2.3.2 History List Management
------------------------------
-
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
- -- Function: void add_history (const char *string)
-     Place STRING at the end of the history list.  The associated data
-     field (if any) is set to 'NULL'.
-
- -- Function: void add_history_time (const char *string)
-     Change the time stamp associated with the most recent history entry
-     to STRING.
-
- -- Function: HIST_ENTRY * remove_history (int which)
-     Remove history entry at offset WHICH from the history.  The removed
-     element is returned so you can free the line, data, and containing
-     structure.
-
- -- Function: histdata_t free_history_entry (HIST_ENTRY *histent)
-     Free the history entry HISTENT and any history library private data
-     associated with it.  Returns the application-specific data so the
-     caller can dispose of it.
-
- -- Function: HIST_ENTRY * replace_history_entry (int which, const char
-          *line, histdata_t data)
-     Make the history entry at offset WHICH have LINE and DATA.  This
-     returns the old entry so the caller can dispose of any
-     application-specific data.  In the case of an invalid WHICH, a
-     'NULL' pointer is returned.
-
- -- Function: void clear_history (void)
-     Clear the history list by deleting all the entries.
-
- -- Function: void stifle_history (int max)
-     Stifle the history list, remembering only the last MAX entries.
-
- -- Function: int unstifle_history (void)
-     Stop stifling the history.  This returns the previously-set maximum
-     number of history entries (as set by 'stifle_history()').  The
-     value is positive if the history was stifled, negative if it
-     wasn't.
-
- -- Function: int history_is_stifled (void)
-     Returns non-zero if the history is stifled, zero if it is not.
-
-\1f
-File: history.info,  Node: Information About the History List,  Next: Moving Around the History List,  Prev: History List Management,  Up: History Functions
-
-2.3.3 Information About the History List
-----------------------------------------
-
-These functions return information about the entire history list or
-individual list entries.
-
- -- Function: HIST_ENTRY ** history_list (void)
-     Return a 'NULL' terminated array of 'HIST_ENTRY *' which is the
-     current input history.  Element 0 of this list is the beginning of
-     time.  If there is no history, return 'NULL'.
-
- -- Function: int where_history (void)
-     Returns the offset of the current history element.
-
- -- Function: HIST_ENTRY * current_history (void)
-     Return the history entry at the current position, as determined by
-     'where_history()'.  If there is no entry there, return a 'NULL'
-     pointer.
-
- -- Function: HIST_ENTRY * history_get (int offset)
-     Return the history entry at position OFFSET, starting from
-     'history_base' (*note History Variables::).  If there is no entry
-     there, or if OFFSET is greater than the history length, return a
-     'NULL' pointer.
-
- -- Function: time_t history_get_time (HIST_ENTRY *entry)
-     Return the time stamp associated with the history entry ENTRY.
-
- -- Function: int history_total_bytes (void)
-     Return the number of bytes that the primary history entries are
-     using.  This function returns the sum of the lengths of all the
-     lines in the history.
-
-\1f
-File: history.info,  Node: Moving Around the History List,  Next: Searching the History List,  Prev: Information About the History List,  Up: History Functions
-
-2.3.4 Moving Around the History List
-------------------------------------
-
-These functions allow the current index into the history list to be set
-or changed.
-
- -- Function: int history_set_pos (int pos)
-     Set the current history offset to POS, an absolute index into the
-     list.  Returns 1 on success, 0 if POS is less than zero or greater
-     than the number of history entries.
-
- -- Function: HIST_ENTRY * previous_history (void)
-     Back up the current history offset to the previous history entry,
-     and return a pointer to that entry.  If there is no previous entry,
-     return a 'NULL' pointer.
-
- -- Function: HIST_ENTRY * next_history (void)
-     If the current history offset refers to a valid history entry,
-     increment the current history offset.  If the possibly-incremented
-     history offset refers to a valid history entry, return a pointer to
-     that entry; otherwise, return a 'BNULL' pointer.
-
-\1f
-File: history.info,  Node: Searching the History List,  Next: Managing the History File,  Prev: Moving Around the History List,  Up: History Functions
-
-2.3.5 Searching the History List
---------------------------------
-
-These functions allow searching of the history list for entries
-containing a specific string.  Searching may be performed both forward
-and backward from the current history position.  The search may be
-"anchored", meaning that the string must match at the beginning of the
-history entry.
-
- -- Function: int history_search (const char *string, int direction)
-     Search the history for STRING, starting at the current history
-     offset.  If DIRECTION is less than 0, then the search is through
-     previous entries, otherwise through subsequent entries.  If STRING
-     is found, then the current history index is set to that history
-     entry, and the value returned is the offset in the line of the
-     entry where STRING was found.  Otherwise, nothing is changed, and a
-     -1 is returned.
-
- -- Function: int history_search_prefix (const char *string, int
-          direction)
-     Search the history for STRING, starting at the current history
-     offset.  The search is anchored: matching lines must begin with
-     STRING.  If DIRECTION is less than 0, then the search is through
-     previous entries, otherwise through subsequent entries.  If STRING
-     is found, then the current history index is set to that entry, and
-     the return value is 0.  Otherwise, nothing is changed, and a -1 is
-     returned.
-
- -- Function: int history_search_pos (const char *string, int direction,
-          int pos)
-     Search for STRING in the history list, starting at POS, an absolute
-     index into the list.  If DIRECTION is negative, the search proceeds
-     backward from POS, otherwise forward.  Returns the absolute index
-     of the history element where STRING was found, or -1 otherwise.
-
-\1f
-File: history.info,  Node: Managing the History File,  Next: History Expansion,  Prev: Searching the History List,  Up: History Functions
-
-2.3.6 Managing the History File
--------------------------------
-
-The History library can read the history from and write it to a file.
-This section documents the functions for managing a history file.
-
- -- Function: int read_history (const char *filename)
-     Add the contents of FILENAME to the history list, a line at a time.
-     If FILENAME is 'NULL', then read from '~/.history'.  Returns 0 if
-     successful, or 'errno' if not.
-
- -- Function: int read_history_range (const char *filename, int from,
-          int to)
-     Read a range of lines from FILENAME, adding them to the history
-     list.  Start reading at line FROM and end at TO.  If FROM is zero,
-     start at the beginning.  If TO is less than FROM, then read until
-     the end of the file.  If FILENAME is 'NULL', then read from
-     '~/.history'.  Returns 0 if successful, or 'errno' if not.
-
- -- Function: int write_history (const char *filename)
-     Write the current history to FILENAME, overwriting FILENAME if
-     necessary.  If FILENAME is 'NULL', then write the history list to
-     '~/.history'.  Returns 0 on success, or 'errno' on a read or write
-     error.
-
- -- Function: int append_history (int nelements, const char *filename)
-     Append the last NELEMENTS of the history list to FILENAME.  If
-     FILENAME is 'NULL', then append to '~/.history'.  Returns 0 on
-     success, or 'errno' on a read or write error.
-
- -- Function: int history_truncate_file (const char *filename, int
-          nlines)
-     Truncate the history file FILENAME, leaving only the last NLINES
-     lines.  If FILENAME is 'NULL', then '~/.history' is truncated.
-     Returns 0 on success, or 'errno' on failure.
-
-\1f
-File: history.info,  Node: History Expansion,  Prev: Managing the History File,  Up: History Functions
-
-2.3.7 History Expansion
------------------------
-
-These functions implement history expansion.
-
- -- Function: int history_expand (char *string, char **output)
-     Expand STRING, placing the result into OUTPUT, a pointer to a
-     string (*note History Interaction::).  Returns:
-     '0'
-          If no expansions took place (or, if the only change in the
-          text was the removal of escape characters preceding the
-          history expansion character);
-     '1'
-          if expansions did take place;
-     '-1'
-          if there was an error in expansion;
-     '2'
-          if the returned line should be displayed, but not executed, as
-          with the ':p' modifier (*note Modifiers::).
-
-     If an error occurred in expansion, then OUTPUT contains a
-     descriptive error message.
-
- -- Function: char * get_history_event (const char *string, int *cindex,
-          int qchar)
-     Returns the text of the history event beginning at STRING +
-     *CINDEX.  *CINDEX is modified to point to after the event
-     specifier.  At function entry, CINDEX points to the index into
-     STRING where the history event specification begins.  QCHAR is a
-     character that is allowed to end the event specification in
-     addition to the "normal" terminating characters.
-
- -- Function: char ** history_tokenize (const char *string)
-     Return an array of tokens parsed out of STRING, much as the shell
-     might.  The tokens are split on the characters in the
-     HISTORY_WORD_DELIMITERS variable, and shell quoting conventions are
-     obeyed.
-
- -- Function: char * history_arg_extract (int first, int last, const
-          char *string)
-     Extract a string segment consisting of the FIRST through LAST
-     arguments present in STRING.  Arguments are split using
-     'history_tokenize'.
-
-\1f
-File: history.info,  Node: History Variables,  Next: History Programming Example,  Prev: History Functions,  Up: Programming with GNU History
-
-2.4 History Variables
-=====================
-
-This section describes the externally-visible variables exported by the
-GNU History Library.
-
- -- Variable: int history_base
-     The logical offset of the first entry in the history list.
-
- -- Variable: int history_length
-     The number of entries currently stored in the history list.
-
- -- Variable: int history_max_entries
-     The maximum number of history entries.  This must be changed using
-     'stifle_history()'.
-
- -- Variable: int history_write_timestamps
-     If non-zero, timestamps are written to the history file, so they
-     can be preserved between sessions.  The default value is 0, meaning
-     that timestamps are not saved.
-
-     The current timestamp format uses the value of HISTORY_COMMENT_CHAR
-     to delimit timestamp entries in the history file.  If that variable
-     does not have a value (the default), timestamps will not be
-     written.
-
- -- Variable: char history_expansion_char
-     The character that introduces a history event.  The default is '!'.
-     Setting this to 0 inhibits history expansion.
-
- -- Variable: char history_subst_char
-     The character that invokes word substitution if found at the start
-     of a line.  The default is '^'.
-
- -- Variable: char history_comment_char
-     During tokenization, if this character is seen as the first
-     character of a word, then it and all subsequent characters up to a
-     newline are ignored, suppressing history expansion for the
-     remainder of the line.  This is disabled by default.
-
- -- Variable: char * history_word_delimiters
-     The characters that separate tokens for 'history_tokenize()'.  The
-     default value is '" \t\n()<>;&|"'.
-
- -- Variable: char * history_search_delimiter_chars
-     The list of additional characters which can delimit a history
-     search string, in addition to space, TAB, ':' and '?' in the case
-     of a substring search.  The default is empty.
-
- -- Variable: char * history_no_expand_chars
-     The list of characters which inhibit history expansion if found
-     immediately following HISTORY_EXPANSION_CHAR.  The default is
-     space, tab, newline, carriage return, and '='.
-
- -- Variable: int history_quotes_inhibit_expansion
-     If non-zero, double-quoted words are not scanned for the history
-     expansion character or the history comment character.  The default
-     value is 0.
-
- -- Variable: rl_linebuf_func_t * history_inhibit_expansion_function
-     This should be set to the address of a function that takes two
-     arguments: a 'char *' (STRING) and an 'int' index into that string
-     (I).  It should return a non-zero value if the history expansion
-     starting at STRING[I] should not be performed; zero if the
-     expansion should be done.  It is intended for use by applications
-     like Bash that use the history expansion character for additional
-     purposes.  By default, this variable is set to 'NULL'.
-
-\1f
-File: history.info,  Node: History Programming Example,  Prev: History Variables,  Up: Programming with GNU History
-
-2.5 History Programming Example
-===============================
-
-The following program demonstrates simple use of the GNU History
-Library.
-
-     #include <stdio.h>
-     #include <readline/history.h>
-
-     main (argc, argv)
-          int argc;
-          char **argv;
-     {
-       char line[1024], *t;
-       int len, done = 0;
-
-       line[0] = 0;
-
-       using_history ();
-       while (!done)
-         {
-           printf ("history$ ");
-           fflush (stdout);
-           t = fgets (line, sizeof (line) - 1, stdin);
-           if (t && *t)
-             {
-               len = strlen (t);
-               if (t[len - 1] == '\n')
-                 t[len - 1] = '\0';
-             }
-
-           if (!t)
-             strcpy (line, "quit");
-
-           if (line[0])
-             {
-               char *expansion;
-               int result;
-
-               result = history_expand (line, &expansion);
-               if (result)
-                 fprintf (stderr, "%s\n", expansion);
-
-               if (result < 0 || result == 2)
-                 {
-                   free (expansion);
-                   continue;
-                 }
-
-               add_history (expansion);
-               strncpy (line, expansion, sizeof (line) - 1);
-               free (expansion);
-             }
-
-           if (strcmp (line, "quit") == 0)
-             done = 1;
-           else if (strcmp (line, "save") == 0)
-             write_history ("history_file");
-           else if (strcmp (line, "read") == 0)
-             read_history ("history_file");
-           else if (strcmp (line, "list") == 0)
-             {
-               register HIST_ENTRY **the_list;
-               register int i;
-
-               the_list = history_list ();
-               if (the_list)
-                 for (i = 0; the_list[i]; i++)
-                   printf ("%d: %s\n", i + history_base, the_list[i]->line);
-             }
-           else if (strncmp (line, "delete", 6) == 0)
-             {
-               int which;
-               if ((sscanf (line + 6, "%d", &which)) == 1)
-                 {
-                   HIST_ENTRY *entry = remove_history (which);
-                   if (!entry)
-                     fprintf (stderr, "No such entry %d\n", which);
-                   else
-                     {
-                       free (entry->line);
-                       free (entry);
-                     }
-                 }
-               else
-                 {
-                   fprintf (stderr, "non-numeric arg given to `delete'\n");
-                 }
-             }
-         }
-     }
-
-\1f
-File: history.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: Programming with GNU History,  Up: Top
-
-Appendix A GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     <http://fsf.org/>
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.  We
-     recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it can
-     be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You accept
-     the license if you copy, modify or distribute the work in a way
-     requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in the
-     notice that says that the Document is released under this License.
-     If a section does not fit the above definition of Secondary then it
-     is not allowed to be designated as Invariant.  The Document may
-     contain zero Invariant Sections.  If the Document does not identify
-     any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images composed
-     of pixels) generic paint programs or (for drawings) some widely
-     available drawing editor, and that is suitable for input to text
-     formatters or for automatic translation to a variety of formats
-     suitable for input to text formatters.  A copy made in an otherwise
-     Transparent file format whose markup, or absence of markup, has
-     been arranged to thwart or discourage subsequent modification by
-     readers is not Transparent.  An image format is not Transparent if
-     used for any substantial amount of text.  A copy that is not
-     "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and standard-conforming
-     simple HTML, PostScript or PDF designed for human modification.
-     Examples of transparent image formats include PNG, XCF and JPG.
-     Opaque formats include proprietary formats that can be read and
-     edited only by proprietary word processors, SGML or XML for which
-     the DTD and/or processing tools are not generally available, and
-     the machine-generated HTML, PostScript or PDF produced by some word
-     processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow the
-     conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the title
-     equally prominent and visible.  You may add other material on the
-     covers in addition.  Copying with changes limited to the covers, as
-     long as they preserve the title of the Document and satisfy these
-     conditions, can be treated as verbatim copying in other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a machine-readable
-     Transparent copy along with each Opaque copy, or state in or with
-     each Opaque copy a computer-network location from which the general
-     network-using public has access to download using public-standard
-     network protocols a complete Transparent copy of the Document, free
-     of added material.  If you use the latter option, you must take
-     reasonably prudent steps, when you begin distribution of Opaque
-     copies in quantity, to ensure that this Transparent copy will
-     remain thus accessible at the stated location until at least one
-     year after the last time you distribute an Opaque copy (directly or
-     through your agents or retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of copies,
-     to give them a chance to provide you with an updated version of the
-     Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with the
-     Modified Version filling the role of the Document, thus licensing
-     distribution and modification of the Modified Version to whoever
-     possesses a copy of it.  In addition, you must do these things in
-     the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of previous
-          versions (which should, if there were any, be listed in the
-          History section of the Document).  You may use the same title
-          as a previous version if the original publisher of that
-          version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on the
-          Title Page.  If there is no section Entitled "History" in the
-          Document, create one stating the title, year, authors, and
-          publisher of the Document as given on its Title Page, then add
-          an item describing the Modified Version as stated in the
-          previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in the
-          "History" section.  You may omit a network location for a work
-          that was published at least four years before the Document
-          itself, or if the original publisher of the version it refers
-          to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the section
-          all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document, unaltered
-          in their text and in their titles.  Section numbers or the
-          equivalent are not considered part of the section titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option designate
-     some or all of these sections as invariant.  To do this, add their
-     titles to the list of Invariant Sections in the Modified Version's
-     license notice.  These titles must be distinct from any other
-     section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end of
-     the list of Cover Texts in the Modified Version.  Only one passage
-     of Front-Cover Text and one of Back-Cover Text may be added by (or
-     through arrangements made by) any one entity.  If the Document
-     already includes a cover text for the same cover, previously added
-     by you or by arrangement made by the same entity you are acting on
-     behalf of, you may not add another; but you may replace the old
-     one, on explicit permission from the previous publisher that added
-     the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination all
-     of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the documents
-     in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow this
-     License in all other respects regarding verbatim copying of that
-     document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of a
-     storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly and
-     finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from you
-     under this License.  If your rights have been terminated and not
-     permanently reinstated, receipt of a copy of some or all of the
-     same material does not give you any rights to use it.
-
-  10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     <http://www.gnu.org/copyleft/>.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If the
-     Document does not specify a version number of this License, you may
-     choose any version ever published (not as a draft) by the Free
-     Software Foundation.  If the Document specifies that a proxy can
-     decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
-  11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts."  line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of free
-software license, such as the GNU General Public License, to permit
-their use in free software.
-
-\1f
-File: history.info,  Node: Concept Index,  Next: Function and Variable Index,  Prev: GNU Free Documentation License,  Up: Top
-
-Appendix B Concept Index
-************************
-
-\0\b[index\0\b]
-* Menu:
-
-* anchored search:                       Searching the History List.
-                                                               (line 10)
-* event designators:                     Event Designators.    (line  6)
-* history events:                        Event Designators.    (line  8)
-* history expansion:                     History Interaction.  (line  6)
-* History Searching:                     Searching the History List.
-                                                               (line  6)
-
-\1f
-File: history.info,  Node: Function and Variable Index,  Prev: Concept Index,  Up: Top
-
-Appendix C Function and Variable Index
-**************************************
-
-\0\b[index\0\b]
-* Menu:
-
-* add_history:                           History List Management.
-                                                               (line  9)
-* add_history_time:                      History List Management.
-                                                               (line 13)
-* append_history:                        Managing the History File.
-                                                               (line 28)
-* clear_history:                         History List Management.
-                                                               (line 34)
-* current_history:                       Information About the History List.
-                                                               (line 17)
-* free_history_entry:                    History List Management.
-                                                               (line 22)
-* get_history_event:                     History Expansion.    (line 26)
-* history_arg_extract:                   History Expansion.    (line 41)
-* history_base:                          History Variables.    (line  9)
-* history_comment_char:                  History Variables.    (line 37)
-* history_expand:                        History Expansion.    (line  8)
-* history_expansion_char:                History Variables.    (line 29)
-* history_get:                           Information About the History List.
-                                                               (line 22)
-* history_get_history_state:             Initializing History and State Management.
-                                                               (line 14)
-* history_get_time:                      Information About the History List.
-                                                               (line 28)
-* history_inhibit_expansion_function:    History Variables.    (line 62)
-* history_is_stifled:                    History List Management.
-                                                               (line 46)
-* history_length:                        History Variables.    (line 12)
-* history_list:                          Information About the History List.
-                                                               (line  9)
-* history_max_entries:                   History Variables.    (line 15)
-* history_no_expand_chars:               History Variables.    (line 52)
-* history_quotes_inhibit_expansion:      History Variables.    (line 57)
-* history_search:                        Searching the History List.
-                                                               (line 12)
-* history_search_delimiter_chars:        History Variables.    (line 47)
-* history_search_pos:                    Searching the History List.
-                                                               (line 31)
-* history_search_prefix:                 Searching the History List.
-                                                               (line 21)
-* history_set_history_state:             Initializing History and State Management.
-                                                               (line 18)
-* history_set_pos:                       Moving Around the History List.
-                                                               (line  9)
-* history_subst_char:                    History Variables.    (line 33)
-* history_tokenize:                      History Expansion.    (line 35)
-* history_total_bytes:                   Information About the History List.
-                                                               (line 31)
-* history_truncate_file:                 Managing the History File.
-                                                               (line 33)
-* history_word_delimiters:               History Variables.    (line 43)
-* history_write_timestamps:              History Variables.    (line 19)
-* next_history:                          Moving Around the History List.
-                                                               (line 19)
-* previous_history:                      Moving Around the History List.
-                                                               (line 14)
-* read_history:                          Managing the History File.
-                                                               (line  9)
-* read_history_range:                    Managing the History File.
-                                                               (line 14)
-* remove_history:                        History List Management.
-                                                               (line 17)
-* replace_history_entry:                 History List Management.
-                                                               (line 27)
-* stifle_history:                        History List Management.
-                                                               (line 37)
-* unstifle_history:                      History List Management.
-                                                               (line 40)
-* using_history:                         Initializing History and State Management.
-                                                               (line 10)
-* where_history:                         Information About the History List.
-                                                               (line 14)
-* write_history:                         Managing the History File.
-                                                               (line 22)
-
-
-\1f
-Tag Table:
-Node: Top\7f844
-Node: Using History Interactively\7f1489
-Node: History Interaction\7f1997
-Node: Event Designators\7f3421
-Node: Word Designators\7f4560
-Node: Modifiers\7f6197
-Node: Programming with GNU History\7f7420
-Node: Introduction to History\7f8164
-Node: History Storage\7f9854
-Node: History Functions\7f10989
-Node: Initializing History and State Management\7f11978
-Node: History List Management\7f12790
-Node: Information About the History List\7f14823
-Node: Moving Around the History List\7f16320
-Node: Searching the History List\7f17413
-Node: Managing the History File\7f19338
-Node: History Expansion\7f21158
-Node: History Variables\7f23068
-Node: History Programming Example\7f26138
-Node: GNU Free Documentation License\7f28815
-Node: Concept Index\7f53987
-Node: Function and Variable Index\7f54692
-\1f
-End Tag Table
diff --git a/lib/readline/doc/history.ky b/lib/readline/doc/history.ky
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/history.log b/lib/readline/doc/history.log
deleted file mode 100644 (file)
index 445928c..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/MacPorts 2014_9) (preloaded format=etex 2014.11.4)  1 JUL 2015 10:33
-entering extended mode
- restricted \write18 enabled.
- file:line:error style messages enabled.
- %&-line parsing enabled.
-**\catcode126=12 \def\normaltilde{~}\catcode126=13 \let~\normaltilde  \input ./
-./history.texi
-(././history.texi (./texinfo.tex Loading texinfo [version 2013-09-11.11]:
-\bindingoffset=\dimen16
-\normaloffset=\dimen17
-\pagewidth=\dimen18
-\pageheight=\dimen19
-\outerhsize=\dimen20
-\outervsize=\dimen21
-\cornerlong=\dimen22
-\cornerthick=\dimen23
-\topandbottommargin=\dimen24
-\headlinebox=\box16
-\footlinebox=\box17
-\margin=\insert252
-\EMsimple=\toks13
-\groupbox=\box18
-\groupinvalidhelp=\toks14
-\mil=\dimen25
-\exdentamount=\skip18
-\inmarginspacing=\skip19
-\centerpenalty=\count27
- pdf,
-\tempnum=\count28
-\lnkcount=\count29
-\filename=\toks15
-\filenamelength=\count30
-\pgn=\count31
-\toksA=\toks16
-\toksB=\toks17
-\toksC=\toks18
-\toksD=\toks19
-\boxA=\box19
-\countA=\count32
-\nopdfimagehelp=\toks20
-
-fonts,
-\sffam=\fam8
-\textleading=\dimen26
- markup,
-\fontdepth=\count33
- glyphs,
-\errorbox=\box20
- page headings,
-\titlepagetopglue=\skip20
-\titlepagebottomglue=\skip21
-\evenheadline=\toks21
-\oddheadline=\toks22
-\evenfootline=\toks23
-\oddfootline=\toks24
- tables,
-\tableindent=\dimen27
-\itemindent=\dimen28
-\itemmargin=\dimen29
-\itemmax=\dimen30
-\itemno=\count34
-\multitableparskip=\skip22
-\multitableparindent=\skip23
-\multitablecolspace=\dimen31
-\multitablelinespace=\skip24
-\colcount=\count35
-\everytab=\toks25
- conditionals,
-\doignorecount=\count36
- indexing,
-\whatsitskip=\skip25
-\whatsitpenalty=\count37
-\secondaryindent=\skip26
-\partialpage=\box21
-\doublecolumnhsize=\dimen32
-
-sectioning,
-\unnumberedno=\count38
-\chapno=\count39
-\secno=\count40
-\subsecno=\count41
-\subsubsecno=\count42
-\appendixno=\count43
-\absseclevel=\count44
-\secbase=\count45
-\chapheadingskip=\skip27
-\secheadingskip=\skip28
-\subsecheadingskip=\skip29
- toc,
-\tocfile=\write0
-\contentsrightmargin=\skip30
-\savepageno=\count46
-\lastnegativepageno=\count47
-\tocindent=\dimen33
- environments,
-\lispnarrowing=\skip31
-\envskipamount=\skip32
-\circthick=\dimen34
-\cartouter=\dimen35
-\cartinner=\dimen36
-\normbskip=\skip33
-\normpskip=\skip34
-\normlskip=\skip35
-\lskip=\skip36
-\rskip=\skip37
-\nonfillparindent=\dimen37
-\tabw=\dimen38
-\verbbox=\box22
- defuns,
-\defbodyindent=\skip38
-\defargsindent=\skip39
-\deflastargmargin=\skip40
-\defunpenalty=\count48
-\parencount=\count49
-\brackcount=\count50
- macros,
-\paramno=\count51
-\macname=\toks26
- cross references,
-\auxfile=\write1
-\savesfregister=\count52
-\toprefbox=\box23
-\printedrefnamebox=\box24
-\infofilenamebox=\box25
-\printedmanualbox=\box26
- insertions,
-\footnoteno=\count53
-\SAVEfootins=\box27
-\SAVEmargin=\box28
-
-(/opt/local/share/texmf/tex/generic/epsf/epsf.tex
-This is `epsf.tex' v2.7.4 <14 February 2011>
-\epsffilein=\read1
-\epsfframemargin=\dimen39
-\epsfframethickness=\dimen40
-\epsfrsize=\dimen41
-\epsftmp=\dimen42
-\epsftsize=\dimen43
-\epsfxsize=\dimen44
-\epsfysize=\dimen45
-\pspoints=\dimen46
-)
-\noepsfhelp=\toks27
- localization,
-\nolanghelp=\toks28
-\countUTFx=\count54
-\countUTFy=\count55
-\countUTFz=\count56
- formatting,
-\defaultparindent=\dimen47
- and turning on texinfo input format.)
-(./history.aux)
-\openout1 = `history.aux'.
-
-@cpindfile=@write2
-@fnindfile=@write3
-@vrindfile=@write4
-@tpindfile=@write5
-@kyindfile=@write6
-@pgindfile=@write7
-texinfo.tex: doing @include of version.texi
-
- (./version.texi) [1
-\openout2 = `history.cp'.
-
-\openout3 = `history.fn'.
-
-\openout4 = `history.vr'.
-
-\openout5 = `history.tp'.
-
-\openout6 = `history.ky'.
-
-\openout7 = `history.pg'.
-
-] [2] (./history.toc) [-1]
-texinfo.tex: doing @include of hsuser.texi
-
- (./hsuser.texi
-Chapter 1
-\openout0 = `history.toc'.
-
-@btindfile=@write8
- [1
-\openout8 = `history.bt'.
-
-] [2])
-texinfo.tex: doing @include of hstech.texi
-
- (./hstech.texi Chapter 2 [3] [4] [5] [6] [7] [8] [9]
-[10]) Appendix A [11]
-texinfo.tex: doing @include of fdl.texi
-
- (./fdl.texi [12] [13] [14] [15] [16] [17] [18])
-Appendix B [19] (./history.cps) Appendix C [20] (./history.vrs) [21] ) 
-Here is how much of TeX's memory you used:
- 1870 strings out of 497120
- 22323 string characters out of 6207257
- 77199 words of memory out of 5000000
- 3031 multiletter control sequences out of 15000+600000
- 32127 words of font info for 112 fonts, out of 8000000 for 9000
- 51 hyphenation exceptions out of 8191
- 15i,6n,16p,362b,565s stack positions out of 5000i,500n,10000p,200000b,80000s
-
-Output written on history.dvi (24 pages, 85260 bytes).
diff --git a/lib/readline/doc/history.pg b/lib/readline/doc/history.pg
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/history.ps b/lib/readline/doc/history.ps
deleted file mode 100644 (file)
index 81e46ee..0000000
+++ /dev/null
@@ -1,7171 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.994 Copyright 2014 Radical Eye Software
-%%Title: history.dvi
-%%CreationDate: Wed Jul  1 10:33:41 2015
-%%Pages: 24
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10 CMSL10
-%%+ CMSLTT10 CMSS10 CMTT9 CMR9 CMMI9
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -o history.ps history.dvi
-%DVIPSParameters: dpi=300
-%DVIPSSource:  TeX output 2015.07.01:1033
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
-def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
-rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
-N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
-false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
-length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
-forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
-BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
-{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
-round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
-rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
-/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
-B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
--3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
-0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI9
-%!PS-AdobeFont-1.0: CMMI9 003.002
-%%Title: CMMI9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup
-/UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI9 def
-/FontBBox {-29 -250 1075 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI9.) readonly def
-/FullName (CMMI9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB
-7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67
-7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8
-BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365
-82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC
-E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74
-91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E
-540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112
-7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8
-93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D
-EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756
-972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A
-6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149
-796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94
-DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B
-D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80
-E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D
-0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83
-F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9
-ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97
-72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F
-F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9
-4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1
-692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C
-BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109
-4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1
-CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59
-41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A
-9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20
-5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292
-2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5
-8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B
-33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28
-03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1
-749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE
-CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE
-3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F
-64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F
-90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05
-DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8
-F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D
-4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF
-49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4
-E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117
-58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE
-88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3
-B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE
-7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776
-01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46
-19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41
-194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55
-53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3
-F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4
-412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6
-C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC
-C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108
-4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831
-E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81
-AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF
-00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A
-E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91
-C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC
-B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8
-2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980
-F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50
-0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023
-28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4
-E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A
-C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42
-20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B
-7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE
-5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4
-74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4
-90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55
-3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621
-98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066
-54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7
-93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC
-19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A
-9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD
-E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84
-A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB
-107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA
-5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08
-22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95
-B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D
-403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789
-D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6
-20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6
-943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33
-AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F
-A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70
-B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA
-2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84
-2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F
-E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D
-E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F
-8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642
-87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4
-2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842
-D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC
-512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4
-4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559
-6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9
-9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A
-0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040
-9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B
-FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1
-430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8
-56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE
-718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3
-F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE
-95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B
-EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE
-6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7
-6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867
-630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111
-6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA
-89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475
-3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2
-90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47
-38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34
-EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9
-B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376
-9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9
-1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF
-1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C
-62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5
-84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2
-AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618
-D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196
-BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6
-4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6
-531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24
-FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2
-43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256
-D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6
-0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4
-E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53
-DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358
-99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD
-8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1
-8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73
-A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5
-362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3
-C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79
-E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2
-07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F
-0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6
-190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4
-5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D
-F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50
-005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8
-6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C
-D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9
-F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087
-F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE
-2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752
-F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0
-0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD
-73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2
-62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79
-5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98
-F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F
-6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7
-DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109
-EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222
-E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107
-536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18
-36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF
-B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3
-F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0
-431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900
-5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C
-074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78
-E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77
-2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600
-324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F
-FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR9
-%!PS-AdobeFont-1.0: CMR9 003.002
-%%Title: CMR9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup
-/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR9 def
-/FontBBox {-39 -250 1036 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR9.) readonly def
-/FullName (CMR9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 49 /one put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 72 /H put
-dup 83 /S put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340
-15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E
-ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4
-B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029
-85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C
-DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955
-F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D
-2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5
-B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7
-78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7
-E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3
-41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277
-B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072
-55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA
-700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9
-8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A
-F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4
-FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4
-3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15
-B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2
-AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013
-461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC
-CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85
-CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C
-4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F
-291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223
-D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181
-C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115
-D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9
-9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405
-2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380
-A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB
-2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E
-2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6
-AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577
-9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB
-B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67
-0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D
-9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B
-42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0
-C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35
-623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6
-B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4
-E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97
-CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D
-07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7
-53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350
-EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9
-52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88
-F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC
-D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3
-81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D
-B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6
-B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A
-31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF
-E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293
-846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733
-46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E
-44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08
-A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A
-BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5
-1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4
-D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344
-6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A
-E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E
-24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E
-75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D
-EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51
-C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0
-5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034
-099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281
-7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE
-53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84
-7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F
-7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C
-D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933
-CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD
-866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B
-B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826
-ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B
-B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64
-FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B
-40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643
-D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8
-2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787
-39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2
-1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4
-F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9
-253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B
-14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085
-6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E
-E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B
-9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E
-EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339
-FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F
-289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3
-A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5
-5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46
-5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652
-152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE
-67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3
-BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59
-3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88
-713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF
-2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5
-D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143
-6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB
-A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9
-F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95
-26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A
-C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970
-350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700
-70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5
-F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95
-F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8
-9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2
-DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473
-F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D
-064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF
-1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325
-A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E
-E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF
-01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C
-40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C
-72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645
-24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1
-EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775
-D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311
-83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483
-5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448
-1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69
-AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC
-4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3
-7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9
-65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063
-B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6
-FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6
-4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490
-8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6
-1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3
-10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B
-C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4
-8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A
-C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0
-7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F
-852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C
-3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997
-648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD
-855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE
-1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C
-1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0
-B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7
-D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99
-24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C
-552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733
-6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0
-800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8
-6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659
-E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4
-5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2
-00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F
-E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4
-82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7
-6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3
-128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D
-744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507
-84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF
-AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86
-5C7A69BCDFE8ECE3C5F1C047BDAC4B2DAF36832BB25487385C650FC3C30A0894
-2CEB8973FA2E6C749D88789C550C32B2230FB689F0DB5E9F5E2A8133F6477232
-AD8B11FBDB46362C03A2967EC7E875CC0D0C94437517736307F4B8887FD275E2
-E346171058EC303E62B84EA810FCEBB2905DC186B95AFC6AD4127429E71BFC7B
-79E612C18501DFE5AC0E7921BF1C6BD483FD867BC2938609EE52C0271A7ED1FD
-EFEA3CC6F0872C28108F7EBBF5BF770C0BA6C712275E1239FA44736247CBAAD5
-B856D7BD6E5E186AC4C3913293D99529B8F9EAC85FE548406DE5D90A058F1106
-F98799495DBB3A05C04BD649053FD29380E217942F71F70C30735423F6F13DC7
-F5015DA9043FA42C173D55CAF2F4419B78FF473EA32F1D9CBF39A8FE95BCC238
-18762B74BB01E3C1A16BA03D8ACAF3911F4540B0380C71A587A3935D91E28F1A
-726585BD5B7DBE7EDFA7AEF1C229A6B641DE844681E630F99516B2597A017D31
-D37090CE6BB8078645068614985C5B2F0BABADF22F895E198BCC15CE58596999
-BAD4143D84939903284508FAB20269A4CEF627F5498EE70D41B0F123880B680F
-B004DDC927339C58FA023E7859D68CDF0BDC80C682B27F74034B1504F242B6F8
-1920A9ED6566B7B423242B4CC75114C0128EBF99E5609DA559E0BC5463506624
-A7833CD5A834C6C082D797940090B12CAD35B2AAE796B0550FD7BCCF142DF000
-14433A1D8E062D5207D5E38FC52F40EEB801924DC4B86318921169C7F112991F
-DA63181543D42A274390AF57791BD9AB85DE31338F5131E0F8E914B126EF5B2B
-FEDF4CEFCB3FAB423EE2021A2D8761ACD1B59B8A9BB23D4218042307E484EFC0
-157825F1BD6E1D523CE620E159D1A91B4EF0DBFAC9967E6C64960E96045A86A6
-B2AFCF21664A704661344F2B8EDE6F118DA3489F03F9BA2DF35DE06DC843B544
-6A9665CD685F3EA8125501337D3D039A7A20A69945319C2F6F3FC4F44DA78EAA
-73C8BD090AA8C9D2AE858A1B9980375150B6AEB708E365D92A33CFB8F642626A
-AF74411CE1DFA7A9B62EF1CD2DAC4E5575DAE436A65A71B1418AC11E31ABD7AB
-F79F18CC4063D04D629A1A05A5DAB4C473CC5665A315BF1B163C9BB372A846BF
-0AA1C997ECD15A231C3BD4FD5EBD0F3EE4BCC573C891636572A75314282E4770
-738C4CD4E71230409EA873F16CF1D79BF8B9D6A91FC2B10112958F65E77DAD5A
-6698A5F4EAA1305634F6B5F4FCFB4ED01074CCFE4A716660BFAACF18B72289E1
-2A17630A94699E2A1BD960438C77F7F10BA883CB2046E89C63D99A32A2457E35
-182EB3D5EB81841AE33E7203015795FA97DCB17BB6C4BE1C39B7DAE297CD9ED4
-A59FE7A1E816B04DAD86E4A3D0F951A9357BEC5619407EEF700397636C1228B9
-B2F296281350C23CEE1D869C4B895055CA53823F4F7EDDA13852C352BE7DCD8F
-F3A61799D445E7D7D297D4CBAD7F8FE89BCABE2D909D8880D76CE3FAA6B253C0
-F50F4755B4CB54F6664369DCBA5155F6786FFBB998359BDA06D7C9347A8F04A5
-7DC778A5E2BF9E46CBE6493F71BA1590EFF98DA779BC4F16A0E3C65300075109
-EE0D26E453BD84D8DB29F008BA36A2EF07B89FEF779E5A5B5853AA7B9B772ADE
-E9B6A00B0AC7F31A39DEF7A9D6454D0F598F0BF61BA6E5F2E03B2F14E95B0822
-D8FD612178B079E347C4A450E35876E64BAAAA1DFCC4C9FF1C6FCAB22732A826
-C8C1B277C4778AF880731746DEB1D6B13BEC1C0302469AA73DB6FA641CA5E18C
-E69694439509E39668443555D82D48982CDBF1CDF03816478F4DD0385F607B2E
-5DCBE14CD2862B98D50272A90500929A29FC28C5082714DC267DAE4473D7364C
-E7811D0AF5DDE878E238A3AD7D5443B4F00F21ED24500CEBD0B151B6F0BA2438
-370EF5A8CE6E7831AA484B4D1B5B7A81EC2EA6097583C0BD5A7EEA6053E92356
-A40D995C1D5645DA2A09820F481FA138F53833A66AE99895A9742DC5470C03C1
-3D173F63839B6621E7C31A5EAE998A8DC48AABE64E88C4E9B2508B4F0E99CD92
-529CE2D03F2F81F93AA3B9AF63A2DDD311FAA11FBF9BE796C32DDDBAAB62BE9C
-28EE2F7DD5E19A37F5827E75EF663BCA362A7EEBE5A0EA4A9E439E2D984C6D9C
-91064251634647EE73B9B64FF9D4582CFB4CF50A28D45B4048131FD9F44E3343
-0B33961F25DC7A3699CFE9C6D0B53FED7CDA1D360824AD00E38C1523120A5DE2
-8F1147C45F72B4DF23C28A17550430AC498252B325F677CE0A5FAA5F161F5DC1
-89A0BF14074AB50827E4BF106FBC2DD43B1FEBBE54E3957E1D7061C174BE9377
-1F6BBD30784F58DA5D2B3FBD83183E2B068CB76FE7C2418EEB63B7E32E3434BE
-5A5C4AD422D2E318279A852A3342621E4B5144714B8DBC3884F71696B0F0D077
-769D265281874C1C8FE0735534968B9FDF4BBAD71EAE9CED26F3CE9ABE551DA5
-ABE186B6714528F6A0A4778B1B40BC5E002629EB57DCA82BE5B78F0C62C0C348
-6D0ACF7CCE2C86F7E95C001887FCEE5705717C0091725C749D0925F25DA3ED5A
-007EA1B516141490873FE59D98D7F675A1CE88677A4D60A4935BFF205976E3A2
-4AB183DC8CE6BA6EEFDAC1A9CF8AFB8F1D7C149649233A0B3B1029BFC68FC0BB
-6DDB38A35BB57C11213542C9FEF471B5E534316D4758279135435F94956D6F96
-2A3FC58287046368CDD9A702027BC1EECA0ED3E9A193B5B5884520EEE6EBD6C1
-831289A3D59F528C571BA2BC4CF48961747BC5DAE646F4FAF597992149A836D3
-2729D399F25BD0797C2AC6EB1AE699B32A33F0473069E93939A764B0A4EE04CF
-179E3D99F05FAFB15536C12FBAC1AEA67BFA14066CB75F5E31D49D98D58C3093
-C305082867C632753BE5934925D668589D7228E3264D28347014DAEFBB9B1525
-26B812D07A3A26C3A3743EAB6D3BEF4C95CA337D9EE2EFAB61B3DB4ADED6F8E6
-E3F2B5DEAA52520859106369FABB1296A8F0EE110947AC99CF23759F114D0C39
-1FC7207B0558CBEFB9728C76DA4E415851D843C568DD513ABB62827EBF4549E8
-6CDAD8F188EB40A2DD4F9A2F65907A40B6FA144CDE6783DF345707C81AAD30FA
-9DCE1EBF7546127868731D78E42C9ED2EE38F457D8F46314527B547EDD5B7599
-B41DBE7B2EA465605A77D28C64450D2A5FB03BB394F6B4F64B19BD6912EF2F3E
-1C741F20850731AFC9A0522261989BDBDEFF4E8900D7C95772EF37EF9498EBD9
-019E8727D57B7EA83C91030D7E1AC11579525763417730CECABDA5E7DB8612E8
-A52CEA8B3DB8C6B8523FBD6D66D33B3ABE53B079F609315FC8353C21CD4039FB
-31CF443F5DC600CAD9A5E71666A0C75A65F0D419A0C15CF7229C291E7FE165A6
-5EE33E97D2A634D6C032F79BCE3C2805BD9B4D5C1AC257FF84D2BAB0FD3AA650
-5CD776C77E31A42595E05861A21EB576B8D011DA7A9CD6BE2C936127A2A53080
-0A4985B2993E887D1A102ABFF6D8256141C609A7C1EC0CE0117F552658D447D0
-20F22F401E828DDC2F021AB0746F9725B1D5830E54A87CDA8B587D34D3B29D4F
-1A423821CE6869EEFC900E23098B8FA08C859B1068BFB0782E41C966167A1354
-87F9D93588BC44957D374DD379C681FC1176804ECFD862E17A7327CEF06F8AE1
-F9F9D1925081EC834F796046453C9EB521C8B1C698D84EB79C028A299AC1A2F7
-B100CD9A47E543D607556CBE5A5FF7AACAB7940B72232D8EF35EA7446747CC09
-015A94D27EBB6EAC17D8CA55CF38E7666A079B26DF6A0BE875A1F7842ACF8373
-61566F41BC0C1299CF3718AE15E134891C8558A53524C8F5DB8059F9D8FF1A8D
-D82E318B7150643A06D2C80774553D4C2304A4B3AEC55FD925E786F3A66225EB
-3604AF69E905667B1758CD3389EC8885C20BB52DE35D8C1B278F2EB1303E788F
-21A511C1454F87837A881C9792B45C40D11A13B7098BD0B6F64CF5E3FDAC55D2
-A714F7640D6B06B478DECF45AFD52889B9DEF8382DCF1EE772E9CB017184658A
-4E7A7453DB9AF243913A16F0C070C4B18D5BFA472910904DB558FCA985B7A736
-9BE39DC1B3243D4590382F831FE37D18018810B3CC1F9B1C423A80EB89D27AAF
-CD36773E0685D37CBDD85A21593330984D922ACB83382D4BD9C6A8E211150546
-45FD89E96BF623167F5810E647FD7DCEC31DF1EE3E56B7480AE7C89FEEDF7437
-31605633742CF0B3CEA5C9ABCAAC619595710550CBEC15DEBD4C8E856E4D67CE
-61958B5C07E803DF29129DB3E22CB7B44ECC460902FE007AE0EB00BD40F82019
-A49EABAF85C7E924FF5E86F4213FB27D13D7C8F42A3ACCAE2B128B7BB80A25DC
-8D92A3BD5A141972AEF7109C9195BD575C11B09D0F0331588DF55D0F5D60A3CE
-02BFCF3CE21541359B661E382013B4AF90FA5DCD62A89957AD8F5360DE680AE9
-5DA8AAE4A6F8B014A728C20B0AC74AC27BED3ACC7FCDB1C68B8F8DF366E9A36E
-DD93A05D8492B9A8B0FB802FE1A565196CA99FA13414D31C6FB973646EEE0AB5
-2DABA1E971CECE0E73E91564ACA84D820F04A1B9BB26DA23A6C9C72BE9080BCE
-BC6215C814B0DD42560A4698926E1D690DED244ECE4C6FBA0EB382768430CEE3
-C177DF89DCA9366A9B7CA0E20AAFA9AF212B7276F59162B8C17E320FB90305BD
-5170B906C1ED3919B05B1F5A53A568A6386B58BCE199866661CBE1A0987B7DD8
-2324A14ED46E8188F1F0923AAF31262E810258AEA306D5D1F69BE45838BB628F
-76F06EBC9C1E6AC7D79751B9CF754B357F3BE729B4E2DF79B8CDAAC20B9025A8
-028B9BD70AC9F99703BB98F10C1078120A61EB88F9D5C28A18525BEA63320AFC
-9E47683FCE5D25FCCAE1DE61B8FC1A07410930A9C727FE0508E5BA44E88AFEF6
-EEC310AAD6108D35474A6630E1C46DD554C863037C5AD8A30A0CB5A4BC253761
-73ABAA059099A509332E7AE9322E238917BEE64568F25D8D86A7E701DB05C26D
-23B198F113E5D5DA82B73D761039EA0D875882A81C7D01153C2BB5199E734A4C
-6E1ED3792206DC26E3E5B9F07DD32EDBCC5858802FE37AF59C1389B3F1584906
-3E6B654BAF5F2ECF1B46CFB191A71A474D2FF0079C04984101F28D14B9E02598
-051C970501305764635FBB7B430183A6DBD1148C44F4A72E038B91279644CDC9
-6FE5F66685DF70965070F07B2A6FDB9513A3F043C6B4A2C994938ACFB5FE28E9
-EFB9C29764D389A24AB87AB2F3DEEC12B5366709379DF99701B806F55C9C1363
-F4E15C65E9FFFF0E34B41851D55E64617DAC2A4A1995BFDE0B8A6731A7D6FA1B
-A8E8454B75550D126DAB2504427DC6271E7C28E1819F82FB8F1E8187C263E1D5
-D1D0B5FFC753DFFE8E89AFDC8877EC86B065F6E0DA28C0B1AB4641B6E7489DDC
-510E61285FB5F86D41EBB00E910A4366AC1032D6C3A25AE9475F9D3E471EA2C4
-CFC8AF583E8FD32A343DB232D62E4B74B1324D954898E62E0F78BC9242B6A987
-8CC59BC0D782B43D1413ECF446E96A3F01D2417B8824045B88C5088BA527654C
-B91FE8DCA8A3F496183F09DF6DBD82F838544FF3F0629017D1C66F17F95E9354
-74262F963D7628C34B8C611EFD8562E2EF4CC046F3A76F947175DD5BA4512571
-554C97FF31FBDA97D43878C1F25FE8B7FF39072FC5AED9D4915D422F2123EBCC
-5166D067E22BD4DFEC3B6E900DF26360BCED7B19C93E9A2F8840F8D2AEC81319
-5A89E68D2A058DFF7739A26EA3AC51ABC4EC64E8FE3D048904EA84F8157250A5
-2E15EE3DFFF6F7EB09B7E9F5588F3972FB237E9D2C9B21313B395C5BEF3DC9F6
-1A1A6427A8B3073DE01BC97BAB5E4EECF579ABA2BC1C5CFA1595D84644C1E878
-5F43039E33720474549DA92981179E57A5F1863E5E4AEE339B1D17BEA23F4179
-BB99C81D0F0C03C7570AF9D1A449C429A1CB1CEF96593B9A96DADB85EF029054
-6A447C0C7248B93CC89279777A7F13FA1DFDC2AA8D15DACF142564F775918344
-06EE270BB9C547A8B42F39A4935E10F1A8EA693886E260AE4892183939A74856
-6350ED2C30CB64D6D8C93C1FB50FC422531BB8EAF0D14035C68A5E57D8B63540
-E2BA0FA8F85181C14509D681F26BFB2C3B743FE3BCA00815451316A048921FFE
-3D1D9A3A3965EFAC0674D04D2277AD29872ABFEA2DCACCF96CB82EDC82EC69B0
-801B6978E72C99952C47C550FBB02D8E94207DD447F49FE64A9F5E901E0E468F
-4577E7D4D60B27E5759EF294AB176792134256FC15EEF6BC7AC4C3BCFD6785D2
-C1A0EFB848D460B6514016CDF5E8B71448B4DDE0D284A3BCD092FCA2CD74A775
-323E459AC86A80B28095FB9BC6DA2BDA3FEDAACC0200FE06C5F06A72316B081B
-912204EEF94EF4058A5EC1A03C8D93FC2538C7D10F21F251C3AB960FCA92CD6E
-AF30FFD61A99BA9A71B1C5C3CAD50DB5030779FCB1A08EC63E618D37C268C6BB
-20D3A28842D0691BC06A3AB8EEED418349484EC7A59D138896A25B96C28809C9
-0EBCC502554C43D32EF03B0FFBB60E4FB8DF595F9ED1B22CAB3E64A00E1DD989
-D99FF3D9F4FA909160953B21DEFB2304F1BA6670C0B4682BA3DAFC72D6D099B5
-E99EA8FE6C0EBDC55538BA3A640A6629B8FD2176614F0DA0F18F38D9C45277DA
-6740C92A79DF260F7BAC06624A0A234E9469325651B78EB1225E80B16E0BD886
-F51AF93935A7C3A89D53C843175D5A1F203711A6CA3B274A7C701CD0C220C2E9
-97269E4303F7A0A0BDD6152853F3AF6706A2131E03049CDBA341AE64B471096E
-D9F137DF915F647433457E21039254ADD4AB7151D10DAAF847F7C2F944E37109
-6A96944FD625921097D50747CB3FF83F63D20AFF8DB8E41A09291C1EC88D203D
-3E14E4399F99FA2418ED6123B4F10AB77C5BF70865F724154DE8C865AE961311
-339384697B5EF13A2AB683C61BE6A1DBD398D658E3AAD218D7215A54C9EBC6CB
-3B871F31B92C54DD21C949D92156F5CCEDA66B011B897E6FC35280E265EE85CB
-1F4C2A9986D66EB0DF6F7964746660AA9C33ADA1EC442F58EA0395F191E4D5CB
-1AC70CA61217ED3CDE65FE557B65609D2341A285A0A4839DE7B18D0FBB613A01
-EA65695AF6670F966383AA9F7CE593E1F3F5D6166EB9428BAAA28A23C97E9A0D
-F94EB513F606EE7820624A30E8F649FBD0575B9154DF540B552B468B2EA04AEF
-F6988F7738E03B7874B6D3F559C27450986317C6AA14FDAFBCC02ABC67654294
-00DD505D2F43ECED8B66CBDFFAD7F2B6BC7A6274A2357B8788C5AB7247C4B1B9
-CA86A93FDE5929F55591356DF98D8639D5377F95E905C9405D7B3FDB6AB0B544
-AC1D25EE715175AB14D3A744FC162B17D77AB78CEA2D77D40F8C51F3D81DD7D7
-C739085563C4AE733983955162C3BC0FFE1786895DAD7D74B8182D24B0EC5A3F
-1BE40E4AA7D1B6AC054521E4866C33295DB285B46E60EDFF6FA713DE9B898B2B
-77F28006E0B0CF79735C5DC43DFA7CD12CF97F5088C3E1B6D03FE6E0C6FA2117
-D04D3461B5BE775E42459EF5B575D103CE04C81BFDAB13DF159B57E185CE3820
-826237956BD1DB20DC1050C7B5FE5952C5969C23287133C916FD1F7C118144F2
-245C3DFDAAE1F894A316E509DDF8791ABD3184308979425D8F2111FED08AA1A6
-B04DCF4C55C97A6D88BE68B894A320C4C076F6FFE08061D5A3C948BABF51A203
-021A9A44AD02FB503721B2A1774DD40BCC58703589BB5BB12F61ACC2C2436787
-7C6F29B020E6DDE82A63B151CAF36614ABB824AE419D7CB40BF13EE125E79AF7
-02341AAE559D60B7C4A04E6670BC98BD77C42D64EDFE41A627152A7DD2003505
-DE4C76D7B8C81A3026E997E813DFF174DE463D25BD6E0B16AA31925ADD94C833
-D97840E6769F89A78C17ACEE219A53E43178C0DE73E2E788ABEE172D57263E82
-F3D410B0C8379CFCB8C8B9221112FD0105D71BDF413E9BFDCD9663D25EFABC20
-9F08D3CF23F02E5A5A59DEC8CA302DC74EC2EB8E0BFCEF3ED01F780BC0014EAD
-B19082BE83A0950764B2FBE500ADD51CADFE1CE5841B7B50ADF05395066BEC82
-ADD6BC011F6A6307212D32B34E6B18C777B80E69B1E080A0CD32BEC890506FFB
-3EC595E5CA6998459702E6D63583D2C19BD5014BB715322469B59BC9CB4401B9
-9D3CBB92E68702A96130575FEFADF62F4D5AD8C72A46DDAD10095F11559DC2A5
-7A959BD8FF401A02178431C47EF1A7AB7C01ABFE023D54E3AB9B5F70337A4EDE
-49DCE9AEC1387D4438F6EC6F0C8A7951404730385BE0F063662732EBC81000F1
-5DBBFA0C9FB29D09AB4A5A1B88DE884F26B43509B1A5112B010953AD98BC9BB1
-880523106EAD24FCD78EEE1211AB56AD9EC5B78A45CA152EC72D
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSLTT10
-%!PS-AdobeFont-1.0: CMSLTT10 003.002
-%%Title: CMSLTT10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
-/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSLTT10 def
-/FontBBox {-20 -233 617 696 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def
-/FullName (CMSLTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 49 /one put
-dup 50 /two put
-dup 97 /a put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
-2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
-6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
-979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
-ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
-B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
-A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
-3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
-D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
-6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
-3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
-4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
-DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
-753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
-54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
-107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
-7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
-328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
-85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
-2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
-308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
-CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
-739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
-FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
-F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
-3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
-A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
-55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
-A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
-69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
-82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
-8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
-0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
-0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
-1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
-D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
-B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
-170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
-767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
-EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
-AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
-826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
-8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
-345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
-67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
-802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
-20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
-5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
-0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
-22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
-4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
-CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
-4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
-0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
-220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
-7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
-27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
-B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
-7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
-A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
-45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
-F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
-C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
-AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
-DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
-FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
-997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
-3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
-2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
-31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
-A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
-43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
-4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
-94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
-425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
-FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
-51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
-859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
-E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
-2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
-82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
-22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
-200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
-892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
-0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
-437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
-BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
-E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
-DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
-CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
-80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
-FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
-9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
-031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
-9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
-9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
-4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
-57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
-2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
-0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
-03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
-22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
-06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
-39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
-E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
-A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
-9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
-B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
-79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
-2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
-8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
-1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
-0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
-BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
-312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
-B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
-9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
-A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
-91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
-7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
-78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
-7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
-766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
-016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
-C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
-8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
-E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
-6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
-B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
-44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
-C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
-5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
-42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
-F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
-CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
-9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
-82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
-0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
-F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
-EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
-E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
-D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
-F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
-14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
-BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
-9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
-6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
-6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
-4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
-C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
-A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
-9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
-42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
-7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
-1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
-4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
-CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
-D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
-CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
-0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
-92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
-57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
-5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
-57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
-8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
-C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
-7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
-B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
-EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
-D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
-DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
-F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
-D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
-56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
-46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
-52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
-19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
-465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
-0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
-078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B
-DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339
-F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6291
-4663BAB0C9AF29F46951712C354B1EB67CF3FFF6DB1FD83F056774CC7F2283B2
-49B075479604C9B305D9C4587AC495570DF9C4F05525921AFF53D81C0D5AB7B5
-6F00251395F7675345C050C6679867C964E82EE6981E93684B0B28AEEE03B79E
-4C26DF3A514E97F57A397BEA4315C09652254E780916102F48220688AF69BE44
-0C2CD2F43A576F4606BF4F1817C78B7068368AE36D593EC32F0C344B0D728A55
-089C518FC3D903FBF3FC98EAC7567224389B666D105516F48B7F46FF5A13572C
-AA7A87B6AD749B9718946CFD1AE8B6D3CC90CF6A87B9B2F0C2F56D5FDA37CB61
-6AC4D8EFFF054CC016233A437E615F13A2A393CF269C603D2D57683047A0685A
-E19032F5857E84E9DF2D16FCCDCE2C3679DD509E5A6058CC9FD78A7846017FD0
-178C712CA8D1B9A9D2DFEF19887D01D19B7C3AB4A02D5CFDED33131B7E46AB35
-3091A04328F530A8296C6F35EFA6182ABBB64C78682160034BC4D9F68EFD6000
-0B844CCF122E632068853944E646E33AA88CB79B127254FB45132447BA9D7AC4
-219AD1D5FD4D77723C4026768A051FFCF2AF1B7E22D2D598D0BB54669B0B81F6
-E010506C1FFF5BF04BC512CD766A955212B373C41EFA8733798257736CFF8B51
-52BE941B6791353A134E451A83BEA38C0A187DDFD23C2B7EEAC1A2505D0355DF
-840C695952357E8780A6C9F47BD189EAC599A7C278B5E1E61467EB671953C2A1
-C71E035F3C66D88DF56CD37A37A400BB39D5CFB15A5007F9B339A5DD70ECA10C
-BA6B38B84502FD74512D99E4B8E06409664C7523EB035E6188DD37140CD7FE55
-3878C6AA72F2065C7DC50D34DF0308A2798BA4E69E96AF19B916002EFAD38731
-EF1E8CB091AD21DBB2CDF345E5833EC2E51984A841B3EF04E0AE87D470288B7D
-D42BB81C4A732FDED84096C947AC915AC401AED151DB68FAAC3A721833673B14
-3F7BB8111DC05BB7F707A9F57ABAD8B53337203640BA33B1689C9E431991EA36
-EEB231066F374E62432DDD055189844E5695469DC4511CFFD616FC4803C864D0
-873874A028907E5D0B8308DB5A19C65348926A62DF837AC247E7D6A55E23C696
-5313A67FFD96DE214B403B5A8CDD93E4CA1945C89EC9057D0456621EFCC1C42F
-61E7C1DBA1F6EDE6A4BDD6D319C6341059F62609F14EF9E82C965D20C44BCBC6
-06B539365913C49FC2942C94E574415896FD459F5BCA2AE963891433545C5A11
-A85AE5ACC8E5995CFEA2482BD2BB3CC844F2D3A83821ADD3724A180D1F042206
-00581E061573D63C543AC5B9585B2A5D201A84A3434595C18761BEFDD00CA4E7
-2956D4486197F5AA7024E5FBE2FE197BB6491508E89A67574A63AE346019D4D7
-D4D23DE0B9D1D544ED82E0068BEDC5CB1E953204D731D9FA5AD7E8567E10B3F9
-F54F745A44FE06E6B2CEF76DCE87281F2D4B57C343844CAC894C1E3074873B21
-CC6DD0DDB106CBC6FF0DC13CE3132E9B86DC5DEAF638C0B240151ECC41DEABCA
-0F1573C9B6A83E176FE8B160770AEB16E1AC0BE350165E28DBE259ED7BB1200D
-83708D25774547C2D86354CD161F8DF70140EEB8DFEBF8B916005C5A5D3C1D59
-6FBD8EAAC2A93F3061E700D2CD04E803DA26401743B9AC7CCBA5F99E88E401C0
-453CBFB8309877E1003A65A898AF76F89C54FE4D5A4B51F07920967757FEEE7B
-0836ECB7F66E922DAF520F32D9ECD0B83CD7719CB95579B6FC27D6E3E7DE3E8B
-03965C6925CF9FCA4F06EDFE9EA48244C7A315B866D6B3F5C767B2B15FBCCD5E
-A609DB4FCAB2C2246D320DF17D60DEBD6C2E78FF32CB7D120E9D1251E0866D14
-8B393910D9FBB4225C1B384BAD153C2B1FED53725B3F4FA46CB6DB649F6F1380
-9ADDBD04FFF2A8F3E53A6AFD44A55A1C394E2FCC723EFE4A30FE24963472BC9A
-F349542BDE1FC7CE25DF0484ED3A1A344007FD9BDB04E863BBFB60996570557A
-71EE4C77B244331147C5A70059A74064B3F2556E0B70E3A4BE685712379C35A4
-E616230DD8C716EFC1E318BFC8770272A3A7DBA0E0EEB60419207B6B2855124E
-70575EB86D2DABC9738141D3C2DAA80F4488F1AA94B3F0FAA24683F2370B1ABF
-6D06D5C0BB9063171E0F8FA31D56A9793738B7653E05EC4D5F136BA8C6BE6256
-2B0B79DAF5F989CEF8E5F0F42888D8EC9A32F2074DC9174776DEC9C3166E5B81
-F44F7AFB85FF7F7E244D3D64856D71340A13B267D04F25CD68126F443E1215EB
-3615891A22B8A27FACCABEAEDAAEF7F7DF4C0BB15C1B652ED6033A76C4538F10
-324713DB4683F0A7C272895A0D9AAED5BDEC07080F9F19D61934A6B344216873
-A618463B816701EAF3F507FA0C10FC3BD12A1118E5357F2C502DD25315363362
-D0FA6C0BC28691C752DF717A651E8B0FB5B88696BC3ED7E23020CA9D6BD8D03F
-7292E2C07399C40B9EDB7D161908BA250227EF489C16217EBDC6C3465481973B
-72146FB3051DF328ADBD7A98986E7227821E2C24DF994A24884266AD2BCF0AC6
-B36A938DAF8E8A40AB859290FA078CEDAC6B0210A181ADBC199AAEE6793F4F61
-5504E4CCFD6DCA48F246F7F969633C70C5667B663E229592963ACD8A6982C6F8
-F52F5116DEEEDE61302F89D92EE1CE0B1BA22CF9F017D7747394BC2ED5BC0141
-6B247B07D0D2CFDAF75ECFCFA5D1CCE76CC9FFEC345B1B3A34194EDB4C75A06A
-B03502F7702D368F2BC048F42CDD18829CA3D96CC07946DB257A3580787A5C40
-802A085E900E4785B1B9081DF4F0CC55CD292B034B4FFDC1E8326FB3170653CB
-844636627878DDFFDE6CD0F6D8EE3FAC7AF79E03C3238AB517874DF858BF4D17
-971BDC9EE0152E969BB876784D35317FF452AE220819D1F48DEF67D8F296735D
-BF445BD8815B21C3D9CB5A262DFCE53AC150206B32889B1E6A6C48452AA56EE8
-E66A7F99EE0F7B5AA66109DA632FAA425646350E58EE8D9FDDAF4DAFCC33DADD
-C64D2A62092406E28C9483DB256D0BE9876D3E95F2715264B842193BF2860BA0
-98A8DBD3043742744C8C60E4AF996C733570050B09D1CDEC63CA7AAC157CA349
-B9E6188BA077DFE2FFAC844F6B6C3152670DB3C7FD149DDE67054B869A6EB19C
-C8756AD1987CEE857262450FC870503F54A0B2A6574F9BA63F43B72DE9CF0528
-52BEE0FE270AA0D2E6B0D87B361CEFCB7F4635E4ACB38311428542A954C551D9
-BF33B8194311C20FA0D97D411ECED2312DA77197E09239660AC6A9465B06E3A3
-2AE9EAACF07AAE6D297DA00E3A366B0465E48117600936C8EFAB79D9D2A156E3
-EF0EEA375EBAE7DE404ADACBDBB45F830E8BD185C8348316EE978598A80C83B7
-24F89C1BA0BCCB2AA96B71D51BD66C3B87F58F9951F9872033109BE5CF1B4D68
-B17EE96C0AA378FB7E1163A6F6BC130AFD2666C214414383D9E0EBCD993C7A32
-0206A4DA1040CBE19B348701EC6015EF37BD273A46BDB64CDD80927BCB9D7B49
-B5F7F69DB66215CFBAA85F8CE86B788520DE516F36F7ABC6AEB7EDAA268F8523
-6008CA78284EA582E23C0F6E09B8C67C24711D65FC2C7C3AF48F8630D6AB7516
-CC29F74199D60E0EDE2F50B3A1CE95354CBD122E1DEB06128527016F23E8696B
-053936A66BBEF29330F33D578CF456CC65EF39AC87BF10B0C677C4E6D8B06915
-ECFF2EAA9CF67139BA9249D581E9243AAD3E59FDAAC3B28A87758412D6F5D8F8
-F79EC4C47A045BA16D3D6AE0F9AFB29C7A20DEA61B932FD7240087F64EBC6379
-DC0E3F1DB7388853857E457D3B09536455528047E4DA6AA7938E3F656986B61A
-21E73D3773CC66D813DC3DDD01C5E60E3CC098764E3C4EB309B6482A10F2C928
-B10AF5138C4225967A8A801F0DEE929E63B1A16FCF9A4D75723BD63EA3458FC2
-E3218E41839E091E134B655ED4049352A59B9BB7447BE1987ADB2C8309ABC25F
-6743C6CBA2C0049869BCF800838E8356B5754274ADBCDA4F42034B5F49B971A9
-E2FF41AC8951BDC0BCB23F90919477D227FB3DE0C205C53C6D1D4A995212AF25
-06255B0BA2AB068CCE1685842774F1325B2594DD2C59BF414C6235879089A789
-6AD3DCEA1F8271CA3F41269AA934CC3A60C25A91FC73FCAA66D7068176C8F777
-01002FEB2343AB559B310FC5ECAE480FE0FC6A3D10B6037831852A654E2C326A
-4EB26FE7155EAE63324E6796724B435522DC5935691F11D0B1DA1040F720768A
-DCEE90219413C6358C7A602B978339B22103890EC4ACB3425DA4A1DE274BF619
-281DD83B9FBFFF431B06164A34F15CE90D76642D0587036FBE526ABFF1FA0694
-526C25F271910751C5DB07ACB4429059B6B9C5644FFFE2C622F5F7B6ED859249
-DD3E98EF0C0D6E0DB6CA03DD87BB9331797889A65C4708FE9A696041FC5D1EBF
-107589B49CF9A04EE49AFBD59FA7FE9E3DAD2C46F44F6F54237302E498B80C61
-A975FFF794971CB55252D049E414DB833A05BFB0AD2FF340D73893A3286A17AB
-C4ED27AE133D7FFD9FF0F2C9B96E83E566EBA52E5626CAACC6A569327C4F74C3
-ECF1DA1AA4E562073458A21785766FB65F487CB2DB656C438FCD2D6D33692FF7
-AA14958C5AAF35F8056304978BCA5901BFF9879441A81CBD9C270230A19269BF
-110EE3382AC29404412E2B975D6C11CC5AD1825E10F74C632A7F54834C6BC433
-0EA2A0B303057D8AF4C222CE233E408D02E0E8DC600BAA5A6D14025CE0459A34
-B57B8CB8AF49A804EBDFED5276AD608FF1C8A9F299B9B5802225ACC1016F627C
-9F457B3CDA742A6EC8507782C5009DD5F26090A1FB624186840F174609517773
-DC17E6EF8DEEBDABCD84172AEAE450A585EA54FFCABB66E652B885000A457D7D
-17B159385131907E7B82A978B73ECE7ADFA85E755CF11D4123BBE0991BB733E6
-17F193AB516AF3D0D2A17FE00A9B3264953206CE596101D32EC850F5A5890CEF
-00C261F646555B7BC183
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.0: CMR10 003.002
-%%Title: CMR10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
-/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR10 def
-/FontBBox {-40 -250 1009 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 14 /ffi put
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 124 /emdash put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
-569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
-24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
-2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
-8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
-3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
-D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
-D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
-03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
-767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
-8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
-DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
-94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
-22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
-72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
-8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
-344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
-64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
-07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
-1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
-78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
-CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
-7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
-BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
-4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
-5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
-EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
-EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
-4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
-0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
-C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
-314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
-DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
-EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
-DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
-DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
-7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
-1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
-69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
-EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
-7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
-CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
-38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
-22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
-0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
-BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
-4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
-3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
-B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
-15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
-849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
-FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
-4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
-1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
-84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
-7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
-CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
-4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
-3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
-F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
-F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
-DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
-D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
-56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
-8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
-59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
-49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
-87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
-8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
-C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
-D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
-D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
-F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
-0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
-5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
-229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
-17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
-01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
-F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
-3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
-689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
-4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
-A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
-DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
-364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
-7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
-26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
-43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
-8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
-C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
-94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
-C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
-B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
-4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
-7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
-204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
-B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
-7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
-279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
-E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
-CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
-65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
-BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
-6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
-B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
-63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
-4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
-A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
-67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
-DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
-5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
-C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
-9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
-B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
-963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
-D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
-B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
-72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
-B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
-8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
-3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
-668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
-ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
-69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
-C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
-3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
-407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
-11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
-2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
-4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
-2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
-9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
-CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
-DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
-0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
-5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
-9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
-EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
-09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
-2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
-AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
-324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
-486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
-EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
-52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
-9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
-4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
-B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
-BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
-6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
-B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
-16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
-E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
-546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
-6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
-559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
-C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
-ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
-04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
-7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
-8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
-A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
-94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
-C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
-41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
-7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
-18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
-9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
-E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
-5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
-4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
-E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
-9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
-89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
-7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
-AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
-3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
-61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
-F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
-D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
-652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
-07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
-6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
-EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
-BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
-2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84
-246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F
-525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE
-EF6868298CD26E5B9EF345BFA3EC2911E2B96A0B40AEAB95BDCCEE38F5EC170D
-3BFB792D2DDA7E57BD2FB7669484EF9322A1BEE009594901095DE2BA9A15A0EE
-4DD77404CEF16EA6C31FC04A8FBDEF27B9FC1AD3264388B0B12D8E476305B912
-30B51624D4605C45B514473F327DC3EE8BA69032A95301CF714F225A92C253D0
-D943C80B9CD0524C5B87A8D052D2E47A9725EF869D3B89097CC13CA9BC695FF8
-A9468004450A76A13B7EE78A03CC18917EC44036C2DD237344E594569B8F2DDB
-21F7619180B8C760741961CCBE54FD6DD07C4CF73B346099234A1EFFEFC88574
-6324E4232BA18A38EC9F0B780C298877EF0AF42C1EBC2EB52DB64A1E1E352503
-36AA29953A073B864FCB31BA938A4163D000A159ED4D345331FA1EB4009CFF67
-1D107BABA6AAA48075C6C50BC7683929EC146594E55B01D4F5B582328284068B
-2AB05CE92EEE1DF4557DFC8FEF287CB7F961F4F1828EA48B0ACF5C63E1EEC8FB
-6A0EFF132268B7DDF7B465D4A21B05993F4A4CFD168A700D04A7303BC2C00391
-392C3FF97E770E6FAFFFE501242B20B4F7B6C17331C64BDBA3E59695E176CC79
-E7632AC6D2E920AA048BD1EBCF9909D8C314D2EF3CFC5CF88D8570BAA814D467
-96D86CF4415C5B739FA6FE7B4C228F06268D28EE33381982E7B005C26D2604B3
-AA363CA4732B9BB0E4D4EE50556D777258A7BC232087C9F00B0D5EF70270B40D
-3071E14E4E5AB5AF1C686C5A7C268D36A0787DC9300D4CFA004F89A73FFEF780
-E6BBC957E31B764159C3ADF752E6E1A6C3B5B855F8A483497A347B601E3C8DE0
-362D76B715916113CBD2D3765197074104C7E17B87670CDD5C227A1467BD678A
-BE442F196034B02132850CCB77143C2873447FDB8767C462C63916D9D4A13198
-B7910E1B274B27644DFB2E8372C8CD55E6E2AA5CA952A079E1E6389927495921
-CA39D69ECB4DF382FD2DC213EE382BA1A48CA886CB6AEF2B0C50CAB47B1FC40B
-2C95E13190C92480439E3C56188D162C294F24987AAF4E15E8FF7ABBFF2A12FD
-AEB884FCFFD671EEB94CC075B815C6A45549EC23DB85923F4C37221641B75CE0
-C5C8FA8403C2C9FFCB66CC74C5160D6C7042DDFF33A954DD01C8E21B21F8F364
-F6FC735507D0DB5F68F2D8B520AAA7E0F1D503211339F9466006E9A148F39874
-A1488F1F0458409D442D2BF5935A655AD4656A8411543F58C63DFF9C4FE56256
-7F9F876B56BEB208F9DCA363D2E0F7DF3CCAFD5F9674675BF622CBFC2D1CEFA2
-7A5323971101D3641E99D84197B00D67436843EB9CF74C273062159C361A07C6
-E3F1E0E4666ABFD5C9AA8F914F05D02EE1906FCB66E421C73243257170617FEC
-2F02D5A7F3347CC0D290E52FA815C4D5D2A16A4D4A5E0B50165B0C5C77B675F1
-0EF343D70813346EC4D7384A9D9A091984AF29C810F8C3D4247D37F91C5DA967
-747890DFFB25E67F6FB766168487AE8BD8E49C55BC1B68B831E3F510BA1DA3A3
-9F810B865FA98AF89696CF7489BACBC1033A1C929023588E9E03FAD6D901DC52
-A2F5EB74DB679A16DE42F7B47BCBE16617EDC7328A2CEB2C23733D98ED753C66
-502DD2FC75CE2905A429B5B56C62C1C0FCE17144D96E0C615E7FEA48EFA05D9D
-344ED266BD96C3296D6005D289228C62D572167E369AC65724E0E62AEAF608C3
-423FD37E586D41B2AF9B10E0A36312AC1A6F61418BEBF528932FE61881636837
-47CFEDDFEB25F7FC156AC7D6E78D608A91270FF6D1D510E8CD61C289F3E7960C
-B6093B333A0CA3CB8BE51107C5C1C085B3CF6D6F61379420AC1E5D9A3FABF084
-80D6C719D93BF74A99D681726C81F9F83949E06A560F3B3905C0766134533256
-6CEECBBE3EDC220193964706085526386391260838C2E885C88F882E29F31F69
-149CB1B4B788BE82AEBD32B5A8F07D1F537D85077B4BD1FF945EED4BB41B79FC
-CA0B25D1D761129A6043D701AB1F6655C06DF7B0891C3C5224977B9464A6A794
-5FAC6547F7548402420976CA3A644E5A7CD7F64974B71872B02756FF6A135EE7
-BA60B9974A0A2CFA4E46D91B929A3A0DECDF44C39CC06BC2105538856718CF59
-59B1D9BD88735ED4D83C17A67031178B43CFEB4C301E551D708F5F08E80E5A1E
-5579CDA06C9902E412052CE7714A8BE29DF9911F556899F819A7FC2565522182
-20918E8C476DFC00F79BCC4248BCAC6615891C3115B30A39B365044CDA0AB26F
-C8966DB46FB9FB7B7BB37C48B7CC4852C8C05A57D92ED8E6AAE6EE5A60BC81B8
-C0B22E5E74610495094F12BA6D60DA3190C4CAC7F46D740005264BDBCDE61FB2
-50B8DF1CBF41195E616F4595F7860F1538363D529E3E3FD2D408B56CE034521F
-3D9AD6C30174D0AC1A9F9151C8C8DB6E7624290CEB82632679BD0A01EC30B3CF
-FCE72F32F4443E137EA554CDEF84B62CFE21A5E8BFB2EE52C87CBD603C8E0FC7
-35A9ADA5E49FC4C7E3F1538C84761186C045B9F11074F8061F0F4BE061D22C85
-2BDC140F6CCD858B1A4E9AE9444B4EE3DAEFF4E3760A8B851ED3B9780F990595
-36210570D82E9DE83AFB3A20D0D955F69FD838B6F9F785231A84D8BF9F434665
-CB62D518CD5F4623711E022DF76D2CF20202FBA15A1D1070FEA87D6BE954DEE0
-370280ED09237334FCA7AFB1A0CBC9A153A25A929BEF57B202A5889958A9AEDA
-535781A11DA8E2BB5C885BCB83053BEDE8436846C7B54B41703839F861F95D5E
-3C34C4DC8FAADB39D20DC53F642A28B92D0BF1B02876E348B088AC9B2C55DB06
-808BA40658ABE50D6956C9B1201C8D3D97CF9ACBE1FCDB7E7C02D1BB8D87AE61
-2902D77900C11D1DA6CE808C425A7EC0B31BBDC690E98A09AB656294A1B17E00
-2D12DDCAA5E0F1B44EC9D7CDFB5E916045F5CE852D3FF3E8D421A11356EB4392
-F7DA22AFA6C18C7F507F5D8892E8F1DF11E5CC965A61D732F12EFA8339951645
-CC3AF8C3EC88C5B372729EBBD3530439E0E8AE43B43CF57A5258AE8AB259EB71
-9E1F057688B110D4177CF54B1D56D2EAB6B1DB603D6536EA9B9EA11DD57E7F3E
-DB574B05043CEDD701DF8C0982EE726187EAF637ADC279BF7C83A244D3EA9800
-F9797A4D3E4D5F6669B49D2B37CC9BB1C9244B54DD62A5C4BE533DF46F618D3B
-9FE2203DC6C75B25AD6B49B2A760D3604F156ACD80CF5458FEEA64E243B2E527
-E750720E97CCFFE2322734D5DD0FB1A8FD8FA77AD87AA1C8EA1B023F70BCCF92
-624F9A6B0B27B5C8A5AD21D8C08F62BA1738359A4D78439A7A580D605929D6D7
-60790297E11930F43BA89832A2D351CAD0F77AF8BB70A2DD5DEDD4B34FCBC714
-C2BEA2C26F768EE44D27F39021F5AC95FEF199F6ACC4A2F3109E081A3AC7F42D
-1767C2A82683BED075A3293189784AC8D12F17FC3C15B83915E0425926D6069C
-16D58DCF97B1D8E1021F51C47BDB1286B5F9CB60A2B2B7D3F219F20C8651DCCF
-80B30FC5B20DD6D887BD571450A3A005F5980E90A649DEDD316A452589B2BBA4
-BE8625C231E5D4886124B24580C7795F7B3D063667F400C18150A80DEA255943
-B9BC4E1F0A0E5F5BFEF9F7322C836AE892F91A4B3291F216F99654C54BDEB5DD
-87563AEAEED8D8E65D1B60795F1011C3CC63B8FAA15B381E04E1FBC2A5BA5EC8
-B76DCA2AE3686F7D71CF0662338C5E468C0E8155715EE8DD963FA7C257214DB0
-6E523E1370D0F14165FDEF1C9D2F9DDDB4C61DC764B946DC40BB897E8A0BD7A9
-A7D9B684B5899E1A8F4CF9FF67EE19B4FCB61AA4463C5F06309C7B10A131AC21
-63E04A69A223818185F44D48ED721CCCD98737DF4BD3CF6924C6EF30372E9E38
-22B3230829B054EC1B8B42D29059AB5E706E5EBD6CAFA57502005BB170E5B471
-8BC330C11C068849A61C37E5AEDFF994D9A53E73E12D3F7BF63CD6C435055F5C
-875056658B8141B78E3E5050E3F8209CEDC015445893B5B798DED6777B98017B
-4B9766F79E20DE51B4081215A072BF3BFDA0AA741D3EAB7F35138C2B32982453
-5681A66A99A21F0663C8B559FA49AD7B854BD648335DC7B8F72EA85CEC66231B
-AE8F8FA55020FEB0FDA90055CE8255D02C0E2FCC829AEC8EFBAA08071CDD03E3
-9FE8C4F28DB460E0AE8514E319ADE43559B190D9104C78DEB8DCD9E1B2118746
-3DF257B5DA0A52F0F6F0F70352C2B1F851F14F3251A2CEF2B15590E4E80363ED
-652CEA14D0CD2FAF8CD0CD6A7888159FEFC0A3D8978F49D85DC8BFBF33FEE7B3
-C0B040618510F483EF114F46A509E86D08D9470B9A6293083E6FBD511C388D8E
-5A16B5777FC9FF933366757609163E9567B121906BAAB48B1D3CEF9D0B1028C2
-18E9B6536DDA27ACD9816D2D1D5571038F936FE496081B801485F9CCAFC7EE0A
-34D2BF741863A5F639D9D4E123EE90AEB355314E4E38F3F4C243CAD3112A0504
-48BBD089B189203DF7ED4933819A0C1D57ED8AE20B2B15F19F8A0CFD927CAC50
-116B04C25A4E5B20C4C5864A8DCF8CC9BDF5CEA59D1EC52EF62CB642A8FCF1C9
-3E036AA4DD6F4ADBA4F8CD013C622F831397B8640936910C6D1F82ACC6451C68
-760E14BF5B7845762DFE0037BABBE5046C5F3CE3874702EE51D1A463F3B86C69
-7C758A4B1960E1A796F07859A9B1860AE5BC7D5703E63A37B9334D67613241C2
-5B606439A6AB29FA7386317DB876D26FAC05188B4C59672F2CD9A750A0E70CD5
-AD69A8609AB0C78F625E7749C770391D5426D9C3CD1CD7D37445D9718C07A37B
-5BECECE3E6F3147731D5C12C4946F88A7C82500F8C495FFA7E2FFF6A9C2F0BFA
-8EF861E6C369C8DF969B5FB0F02CAC74E8E080B16BEF1CF0D1A81E90FA1612F1
-FCF086961FDD981A8698FBDCE44A80E4290B7B553D9F46BDF6E346627437903D
-499C80A29BE6E7A2C03D943D23C41F1B85C92FE922EE3A3E0601565564C55116
-17F01B2DC9FACA12AC59950EA410D5533B0C31D89FA68D07E9FF1139554C7920
-FF84CB51E13B7FA3EE6A32DDD9FCC192B576A871CBC9E04C5C66ABED560AFF24
-6D6271979BC7D04F7287E32F52B1D2DF60B7D7A53A7D776FC36D70E9C6F54E97
-44F15C5ABF2547DB40EC913EF0B9597A721563C3664E74E7283E9030CAE36B7A
-B14E781BC772691347ED48EBAFDF23EDC452EE8A118A840A185B7C1DFB7F3AF1
-A2D64EFBA1C9F662A35F3B46CC8E2D7E7A7F63F9BFEBB6E4A6DB8FF0BDC83E9A
-A70438435C3B8A780F7F92578501656FF963ED66A73921E014A46385450D26F5
-B73EDA0630201BEE50325B0F76B55E77BC55F4401251D083225EA5777F42A7C7
-748FAE7C22E6A17E04BA9F6D451B35A63DA6F3D80B0365E159B3E993E0DAA242
-2212784C9651F9A0766F473DF743748FAF491CB69728C2473ECC5524E0F2997C
-2650BC1F945EDA4CE833980E706C4D413F7929804A0B1D182E26052876D6B836
-01284296115233D90D2D0FE83317D4AA206A67207BD899DAC1D726C937A34193
-F0B6EEDECB391C6434144275295014BA4283D4346BCC495AE3EC6EE9C4FA7711
-BB6004D39D7BE17FAF0241F2798C36C451BCC4227899837FC244BEC3432ADE1D
-9E4F47F45E9B1D2C832FEF6896C92A207AAED7AA924520D096F983D66DCAF476
-83A2F6F1844E7EC5195EDD3E5FBD0FBAABACE5D13BF754BB2B0CC8FC633D83BA
-3BB65BD9837B109AC1B5B255298E6B65AE4CEC0FFE24DDC3D1883FB0D6F8FE65
-94D0A898278E0313303CF7DE2E37BE0152A1D4CDBA04ED61D54555B1B107D9CC
-C08C89BD2A19050191867EFAB8FD582226B03D7ACFA97C6D404BF99F39EAB7AA
-9AA9397B57CD7CAC1B338C21579A593D7DE1241E6F77366CAB10C3FAA772C663
-BD1051F9D791A84C35196E74D28D342553D344199CBEF83D3A6ABF05A4779B16
-EAC70F7CEE167132D04BE5F56F8F20927DC3C7A20239AC6AAC2B57BBC83174D6
-25F59228ED58B5D492B16ACF3EECA04054F59247A8E318B6F5A09F0A8B3820B7
-2CE711056E3A3ED9300B6F2DFE2C665D7C3351D40A779FEDA09B406E804BFFDB
-9831478F237DAF6352CADC53D6AE85A14E5FC7C0C1BA4009FF962FAA52499506
-C6F3C18BD4C13C1272D844EE151CB5A0DB0188AB7FA2DD47A6A2CE8554A7CB82
-C0CC30593F062451363778FD5A8D39C60835825D63CF3BEF323C8CBEF3055F61
-294FE558C7542977A3C520DE15A984C6D82041E06C356FD7BE75D601CB95816F
-F05AA3F53144B7D768F6732339FB8E6A068F8E021C1BDDB26572385FD1B3794A
-0E1C780576819CA271C78010D8416F6B19912227CE781CDF6AFEC335138203D0
-ADEA0617451CE0BEB024CDE135922C72FE0932F10589F0FF9F1DA721D32B1583
-8D032EB9049E4AC34B3AF16C4DC1A85CDD8B047035ED7D50CF8D9D02621BF6C8
-2CCAA23DE753C7B0B8818B68D625F44A54689C0B1CA36FA7C68A567FDAB813A1
-8B34DFF1300D5E42067F51ADDF7DC9BEC7D4376D304A417741E17AE427639676
-407472CBFAABB5AB329AA7CCF130B3EC6DD588A1F44409FD239238B1A8884382
-F04198DD7C5DC5E2288FE0B206C9D9516D468AA6E2B1183E2E906F9DE47C9209
-578321590CF839C9FFD5FBC3393FFC75322B4E703EFE69534745D579B74AAE3A
-2336823D2DD5F477F39AA9386736476F5C0B1CB19457D44AD6417BA503475D23
-51A99BDC97751E7172363DB670AA50D21920E98BC1DE7349EF8B8C1E72CACB47
-557B3E2BC30454F75CCC41B84A67648E894AA0A43C5A2BFB5BEE8D0BB07910B3
-47EDA7B547EF357C2553933E0BDC0F05D596E4C55B33AD63E924164DEC1934E4
-58F937DADD65AC866E4EA2BF02D36C54AE3E3727A8FF9F3658337D2BFAED5908
-5BE3C1F4503843FFA47C83B3D9CBF1DF2AED7A6B97A7E68CB6B9E5420E70C5C4
-36843B29D902584DF95CCD8C34647E87E2335371DCD89E495A92033BA482A62A
-0D2D3A7BB06506E42A4926CA0AFF80EC8DA63D7B73E8A04B25312F03251B512D
-76BBFD76C1F5207FD6A8E69ED9BF063C7DDD0FD4C6974BBC531429EBB55BB715
-0D08FCB2F80275425FE42E87AEDCE78D2BDC07CED8BC49D260D1671BA0ABDDB8
-98E0F7BA7EDA086F4E3585157A71CCEEA35750B9DC3195E3396F1161EE1E1D25
-E6FE6E0B022A9625B5866B8EF59DFE5391AA7F033886402C654F4834F4E43138
-EBAAA758DFC8C27356F012F4D0F398EB8D013678059D8419C2D947F3FB2BDA1F
-70A5FCB549BFFAC288ACA7051BDAEA41A4AE0341035B4365A63C553DB80CE429
-02670706A74AD397B49AF535067EB07CC3CB86704ED45301DDFD5238E7DF5ADA
-8DF465E45F7514D7A0BAA202305CEC73032FC09294480796251045AFBCD6B081
-8EE4481D29E817C7DC32539B364076672596DC24CA8AC45D60A8536865FB475A
-3DB48E98C675A8BFA39792AFD17B5251D56F0D5C27E229DFA75FA3560E7ECFBB
-8164E4FF15421846BA40EE13146A316D530287CC8652B58804B95C53F6FA9DF6
-F84DE1E222C5D69E45E12C06C97E672D456E21B95584F8371FE34ECB0E6174BB
-468EA60BB0C06B3DF48D996D9083F70181799CECC224FE60736CFCC6F246E5E2
-EF465A6B1B411ACB7474A59BECA5935DFD15F5C18160D4AD4DE9767D6213C35E
-08AB18F834CAB32013AEB8C634DD6382D4C7E49F10BC5113214A18A5EB31A0D6
-923630A849327C1CAFEA3B8F5EBA83668E03EBE084ABC1A4C1DEFB333ACE0696
-EB20FAB6FE6E61D38457C8E10D8FB7595C627E8FBE2D5563C4D50A6E1F3DCFF1
-F5A2DF1A62301665C0E44C2257B4516B515FC995A52D4DBD54B3D4EFBFC63A8D
-F07C27065CFE19527AE04A9CA14935B7399E30EF88D2B63891A58044D7CE07F2
-916EB8E9C65388A73956B3D82B4B41AC378B4B75AC304A32339CA7701636B6A3
-84254743EA5F8525897D4FB054698031D1FFF4C971A10440212DE812752425D1
-E71B02AAD20E994357EC8436BF1B74F016DD41D6B1F6C1578E4B261ADE5A7B31
-2ECA2C16294C9309F200AE0AB5BDAF2BBCB3E97B0FC5556BD8208E50CDEB88BD
-F137D2F72258B6E41092F1256CA4AD867338DE757E29298F404FF94F247A805B
-40524952A6D8581F065B11B6324F9F2821A3AAC2E7A583771EEE640F2FD0975D
-299EACAB2A99942480DCCC95BC7CEA846EB1B2423FCE304596A2581583450455
-CD1D56843DF8FFBA723FBE4A4AD8E539828BF48BFB4D0C4EAA68EADB81A2C58B
-EBF89CF83017DE3382BEF407B493FA5EEF810C740C3C8B646292AECE9A5180CE
-07ADE6E6B2935B90BC521D3ECBE25B43F14DABCF49F378C26CDD2B27C690EAE1
-E888EDC3C963F55F1AD13C8FBED4BE0BEFEF31C0636913B47205DB1D0DDDBEEF
-4441A3DE9825160AD57948567EDE8660567998D41A0AE2D9A9B5BD4207F2A0F3
-EE82DDE22D16C32A583613E0EC2BA331EA91042B8FA2865A8A7DE1BDAD0B6D33
-3DB1409222AAD20577ABAA7A2DD6B302803FC7B4244ACFF725E37CB5926563D2
-82AEF220424600581E25001DE71E1385C9D690747BCE051539AB8B03B2EA77BC
-39B27AA8F63CA37E3886C50E125D3886C5132869596039589AD6A8421C8B7AF8
-B0EE2872AF974A4B779F09DC1DF2BBF673A7FB32BD1BF3D8D99A94E1BCDFEF81
-37B2D7BBB80ABEC1EAD544448E6A49DF730A1B7F63267C9DDFE81131867F0C0A
-8D2B37E8B0AF2A6265C57CF9BCF98A01998081E7BBB94DD53FCAE52F3F5010C7
-AFB011FC6FA98FFDF173FA0F935D33EC3DE55890BFAD217870974C00CBBB6C67
-1CC558F6FB2C30B28B9987721722A27EBFA924A382569E3D7C47A3220F21EAB9
-1011D71B104BAD1A47CDD9CD64487A8E9721CABFDB83FDEC748EBF0D08E77CFF
-1A54D0B3ABF4024DAA403436C9F6CABF3B6CA7089776ACB183AC01C8E7F287FF
-9DA7959C4B7D73F00976AC5C3E4B810DBCCE732E4C9ED9EF8006AFC7314F0055
-FA3FAEC780434F273ADD7D07C2006E4B755B24A26341AA5AC2DCE258F8B03409
-188109067E22F078E093A76FA372C87CAD401794D94317B2665DCC7E21FDF901
-E1511307385B6EE148FE1666BB616351F48A8082ABF94040CDB058DD584364F8
-CBE3E94DBB8A2450D18D435FF5C8CF2DBA1EB562E957A83F184C9F3CC43C1860
-E6FBEE91C4D240C61D7A7D554A17B90D0A9CE1E7AAF7840846B3F1A1BB9926A7
-CF8E9DA56DB81D35CB3687E9818CE74C0336DF7B2CEFD8BC432268AC93EB34E2
-3D361A8387BC92B459F645BC069A49628D7382E22EB249BC7CAAE98AC55FBD24
-F570D8D654B54710B809234AA2E662D2ACC44E1FE1AA63A497FDD94A46B9D1BC
-E37B29430A5E0C2E592F13BE227CD9A6556E9A0E1C3EAD9DCD742D1F9CF62014
-5EA4510003418D1881C4EF1589A8B9EFB52DDBB67BCFC4E55B134A3C2E31AC1C
-4658B592EF69C2E23E335499A35B91A58DF9A947712DD55BDCDB7E0AADD53E29
-2777329340EC29A51E9020B8EBABB7B066113ED3A4791D3FBCABADC40CC45FB6
-8744DC0116379D2649B216366C6FC83999E1FC558EEE5E17E13A12B252E5F7A9
-E760CD51C96C1B4815BFE37D4D39621BCD10DA9428CF186E61E9921585C1944F
-DDC084DC9216FAB69CF54E456D47F65B3FB02F34B0CC998E12E41110A4791465
-19780824EE2AC1B799655553375ECB24149100E539C23829944BCC82211A85E8
-6A2D3559BBC0EDFEC2DA02AE3BB86A9E30AD5BF95E5CD956297C1F6AE85D0768
-1F9D96DD8EAAAD78CFBB543E913951A78D3262CF08BE0DDE7D870FDA94C51A1B
-1F8544122EDB7653E66D772E3EBCBCE4419F17500D8469EF4FBF93144B20DCD7
-39B815E0B09D0BC3283E8B7A907F203EA3B22924419C1C3A8DEEAD335FD538F6
-0D5ED1581BB64FAD4979D67D51F18B047E096747FC50C6A2B48377E458038374
-7FF93A3A46E09ADA5A844EAAA3EEFA1625510D3AB7A74764FFB229725FDA314A
-72CCE353A9693869F26CB904505B089DE6D41825336318DA00DAFD986779D4DE
-E8DC47E496A9936DD3CF46719D5E832E3B7C85B44D16D4BB588CADCCB90CBBF3
-3589F08AF2AF77D7ECC3AB68D6409221B2ED853012C693C522407B4E97DD4F89
-9EAA4CDA6C85F8B65F5E165399F6CA79550965F3AAF7D875CA947FD6BC42A4DA
-1AF797BDBAEE65A1C3BAF00E8E48FE567E757715166DD2757F7DE6C45FE4B3FC
-A0C76D12FCB66B4CE9CCB47060AA5CB3FD427BCA5B549A4AF34CA654D9421C26
-9EA4106806950525CA856624E9EFF9DC5B598AE4AFE928447D0704D4EE99DF07
-69AC51F4D3163B7424059ABA4381DBBBD5C8C7DEEF723F163AE69C48962C34D5
-7514F73FAF946C121EA5848C29E127DD0FDACDCB6B1AF4414EA369093282383D
-0213B391666CF596FAB2AA27270FC273E32B90D3209091D8360A0D50F8F28D23
-F7B8B097E2FCF2DCE92A7D5AB68EE680B691C2DC7BB846FD5132EB5789A30B8E
-9B849C18E8560E9F49764CB89FE01E2E9968C769BAF6B44E08E45E563EB14BC0
-70601E5133AAC33723E934677518C54A235EE9E4A832B363DE44FD82D37BEEF1
-E9C842EF2570C97C3C5D6C0DE94DED4DC5B6681E4A04BAA725F0D9061B16C431
-8ED6859AA5E5BF254BD3C29F100293FEF2D0D6EDAF428490E13B06527B5FCC90
-54768BCE8007EAA2EB1AE14F3F577CC243BA416AB6E43E92EC4FC99775BC1D92
-CECEA05EB8ADDA826E364921ABE388295AAEC6678C08D26415B2725025C70089
-9F12735F37C45F00218EA2E398A8CB173086C43B2A7EE4C95852110F8DCD12DD
-64AEA60156E560E8D8D84285B523515EC15888E9912C6C1AB91290E1D57D7595
-1DF73319FCA62BE7C04F4E9968F7E453C384899736D48EE6FF64DF1260057C37
-3082E207F796CE6AB2271E3F31AD2FF83B99FC3DF2826C07F4E4CD05077DCD69
-A3B9EC76BC02C12A468AC4C0D7D83FD4BB4BC8ACF9C312CE3144E76D2F3C6246
-A210DCC9834608CD0A52CC551FBC059B88BC2CEE954AC6B5811281737EC83C8D
-72B39D016B0ECCED40BDC58706910851447C80E3FFFA9D57898204F9815DB6DB
-1EB38FC10637CC50768703AF9FAE89A94B424A3C647A7870B26970954CEAAD68
-E069ECBADBFC0519C33AEECE55AA93C75B6CF907DF65B98C7A9B043E4BB5840A
-88DBB212EA2E86888D36B76D270926739B48D6435C1547D703FEA7B989CA60A4
-87CDF9DF654919F730787D58680BAD0E5B506FDC2BF0C89569CFAF6BE11F80B2
-07D69B417562178E087AE3AE9380CAF8CEEE40FD3989BB50E8521963B0617401
-2996B2C32A3F03B7F312A211B605932233E7C230FA084BB912BFB20E85D721C9
-532D22AB85802085C715206297C09713C3142039602BA9D607F7A52FEA25B0D9
-FDB7E9FB15499E3DE1E47CCF2500BA8B8798497469DF248B8244493738C81815
-1008200E9457B4CCA5740897B17F8832515EBAA84A237E17542B359F173E7868
-64E99FD8159C9051E876C235E434BD5920F55084DD7F31C6FD2B6CB58E5FF307
-0AF6020EA9012AEA47F9BCF018C30885988ADD1A630C2F1CBBCFD5A2C95028AA
-6FC89D43E089957267B6F94C7F4E05FCFBAC85E879D27F7BA921FEDB4B551F9F
-3B5D3197C0FCFE264D45F6C1181BA26796006B94BEFDC342C7CCDDBFAF332F8A
-D96D8D6C52ACBB10C871DAA7162501071CBC04CE01D8FDBAB48393E59ACCF1C3
-9EE4972D7DABC3E639B1C2722F346553DA9E9F163DCE4CC7CB2D1B966F561A07
-8862C3230BDB104C55DE3436ACA77800229637A6DFE1F041DB4B45B2D1A5481A
-6641D77981CDA367CD23E64AD5355B484930C7B09B47ED6C79851844099A68C7
-1F4E6ABBDDD7490259E856C267804A4EAF61246AB4C1233F025EE81793312479
-CECC3813C2D887855573122E59FAD0B85DBD9AF66203F4618F22D6D56E1F7323
-2BE1ABF7702D8BACA8AAB9FDEAB48E3ED56BC0D3E4696505E16473CAD93D0559
-54E8991E7F146F4D4C9E3DFD35012F5830B57FA04BA42BEC724E5708FFB6D521
-B209D2F6CDA86560921C705D6A99F822DD3B182B0BAC8AB381653298B82C86E5
-098FBC2E1E30DDA83919362D1BCF4D91702B16E849E032B44EC2482369B4C342
-211E7382390388FDDAC362431B45DCB55FEAA7C48C30996C47B0E21BB32FAA7B
-14D6F0DB95C450B59975CE25D65E727148BC7400E00C249A415AA52DA829F547
-8D7AF32D029BFB27EA195EA3E8A038493FE5BDDFD89597C420CA1ADDD2D5AE9D
-D3BF13CE3B530D78BB7413F47056F663395BEAFAF4002BAA6E9FFD3F1F0C7C72
-03592F5627EA49F1C0E8C95813E1C30BC256C99A2F34A027D4552B650B0376EB
-9BC2482C80F19BD6F9315C71A185EB246091F6D7D019637100B555077B1549FF
-27446A2CA0C8C815B6CCEE95CF19B78908DEDB25C1F9A5E6C36FFE65E0A8F694
-8A3E847529C50351F6CF88F1F3B901A78378BAE535678A6C60D7DF4A00505B14
-FAFB1A1AE87CE09E1E90769C046C11309AA7BD8476AFAAC0EA48E6D32842E0FA
-10CEE024B1B178D8B9A15E29F825E42564A8F8F1E1F1EC760FC03F1D5773DB78
-E177A95C3D2E3FFEBA469404A866E662D217FEF7A99D6BEDF9F144A2A8B97542
-9423BDE10EED471B99F70661A7AC7A260C6C32EB4D00F21F7A3A5257EC597EE4
-885981989562FB08DBFCE4ADCBE6D9A1C92F6E9FF65A23BDF943835BBB7C29C4
-0D7C987B626819583D4D52DA32BF7DF15C21BE5BB64B575C7F4B149AC539ACBD
-A49DF3F0480DCD61E3C14BBC956DE5D968E74DF4141BEB0106E6C5F7828E4F77
-4EC7F0775CF320C26323EBD09354B3E2A52973E75E54CB42F6B0F5C10AE8A8E6
-EB93124C15AD140C971D2E2D9C2B5275F93BA3B01556B72B7630CBE7AAF3D997
-E82D11875B82071FE770B13C232388C07F2E6F7E9C6930F4D7379BF74FC3436C
-D301123050BECE20F2BF95FAD2E57FC50203EE6EC6D9420BF8C218D3D2F8B236
-6572EB16DE1CB2AF00CF19C56BFD8D333FE1DA4494933BAD214701819B0C2ACE
-FD02F0682306A6B0039002B0B7095D992A30CB675CDA3D4B196C447F102DB4B2
-FCE3AAF81D94B2FA40B31EAC2BEC613654B1D885EA590F675E6106BFD0575B1B
-4AA50D0583A2BA2F79AFC2EF5640A9EDF12F6BFE45ADBBBA43B773B36DE8DD60
-C4BB8FB6F09A334FD947877A785AFCC4F9D366326F5B609ABF1E0CB8942560D7
-68D0FA410EB83A9BE859840A9E024FDF850DCBF5FA8D649B40505AE64B1BEEA3
-6776EC44EA3298203B09990EAAA5FA937CB648A0377173CAAED6432A38B48DC7
-906B730B6BFEB2B9B166526D1E8D4110C6A2A4CE1ADD2D0C9C179621F7867669
-31D3A28EA97D1281E80B4B6A4F223D1FF77F8960CDB83E5768F3A8FE52120CA6
-15164AA799E18FCBFD91697783BA537FA897D58726F5F3BAC1F0B20B57583374
-35837E9EE8DD0DE39B6CFB69EE47ADEE4624EDF65E43781EDD056024FE108280
-29E5A39815F494C65020B91F68D1187F815ED8A312150B414D9DA84F542E0F15
-32351B82F2322C9200F987E477807E9E4051D4057240E99D42E6852164704F26
-81A939AF1E3BD237C4FA341C702F7AB978F63CBA8DF745DC2C57AD5511D89AE5
-B4A80BFC57B1A5CA1A110D3BD5859EF41959EB364DF07CE50F709B30EA099EB9
-01C010ED4F4DA9AB062BB8E10F515559D2FEEE69C579859E43962AF7640A705B
-2C3086E862AB4297EF9625C58AF049BDC0840F9562D8D8BC686CDECA7D4259C7
-4C86D8C92909BAB7FA09AA2E83B4089B246F8B4AB7A086C5B9943773C496C62E
-9E6344BBD213B44C821CDDA42B1BE933F74BC8FDFD0A85070F50D4881C7E875E
-DD689E97ABBF6AEEA6E8C8BA377BF3E4A8EEBBB1D47FBDAEC3B88462A62CF500
-727EF93FD166092861FB67303490DCC4504B759BE754808BEDD580E6DC38223B
-E02EE2D9BB8F32E2D3386376F8E49A853F7C81650DBD33E23437EC98F4A6F7EC
-12705E52817A7B647F4CDE1B173EC370C78589E329D93C35895CA8B3EA2B945D
-E30630DBCB2B8ACC49846C7835869202FB5231ED9167F307CBA31D2DC0B423D8
-65DE2E24CABD53913C01C388F64BB66976FE3B0B421AAE861E0C0D495D5E0B26
-1D207792F1072BABB49156544C024118BF0D239BCB1AEF8AB7F38EEB34C88CEC
-C7401AA6177E9B7849AAA081334E04A2205077A90C0377A363F22091678371F2
-36A088CF84558630C3F370FE00FE97209AF40D77C6F70B1B4028F1680FF6268D
-EC09B05DB3F8DEE17678CFC46AE78E02DD01454A9A8ABBAE157086DDC92AD22B
-DBE7861A2909232DE46FFDB6FC84989B2B137C564FE84961BCD663B592FF2A85
-A65D7B595113AA7DA8463F852A28233A754591A5F2D7F70649A12EB8CFA35361
-1410C7E2F08EB5353A91CBF2109D6E279758B8E458DC7737369AA35B330A9229
-B73DFB9E1745410440E440DEC966C0B21349149E08D57740773B1F17161217AE
-B0605236A44353081EA2248CBE9E8F4A0CE1499354F6475C10346F337227B8C0
-2474942B49CF891C5D0953B1015203B1BFE0A7528C900968D16A876AFD9BF28F
-43EAD0516A38FE48F7091219A717617CEF422F7E2054F3E40D7D6239F6744E44
-86F62AD7ABB61DB0E75B245B44E7A6FF9D72DAB469A07D8046DAA059CA891766
-1420C7A397CEFC7CBFC41A09C54FEC6E77312347C14CB8D87B313A0E7F2CABEF
-CEAC4B9E15C279A18BABC098027A02EEA025F481769AAC7A89F9F419A9EE5908
-351B0D25A2F9FB805227F0ABC3D4A87C63C59E80B1BF915FBB1E1E164568CCEB
-1EB5B1A19180F370EBF2DD11827844584475357DE9E31A138874E567B8E1DA93
-FC5D6084A3737CA8EE391773F3F91C243AF33013891B4E7DCBA7BBE1E06C5031
-C3C0FD60806B7052C5F7B069BFCF4F879914D9C2827EB53C505D5C738E1564D1
-1FE8A3EFE5B3EDE0B766E816FF02473739FC5BED647CEB758C6D7457ACD5E352
-1C3F13E6F1DBA43FACA8FB3D257B24902EBC64B10C7701AD3850BD845140C3D1
-A6CB630AFD8E81ED647D65D7F51803369D37DA44F36D8AC77976AF53B9C4E56C
-84D5969C27EE9DA518FBBD8430D5769AD02F28B6036D5D8AB73C784734C22D5C
-7200D0A706326DB04C52907DC99648D46F2741B3A9BADAF9040F2CA68642156D
-E597FD6BDBB5658C87501440DA17A44557EDDEF1C576F8FE343A6E2DE27CDB35
-8E62AA7C8367E3E44DA6E435DA063BAC3DE82D73AA2A147CC5A844187D29B83C
-D12D91B9018718B53C9CB11CABDC9F7A8848C19E73E1DA7067632DFED7994B8D
-3A5E1260D0315558BA94389D996A960836FD9C7570F02C453129DA181B2BB9B6
-56BDBA69A47729BB3EE50403667025273C0FA725D6742B32DF5E58BAF48BA6BD
-DB77F2571F3643E792CC757B8F1AABD13B60965B5F1AEFC5108B68126149F4F5
-F54E72341790C7D75372F0550FF3C9FA8844DE0C6E71C261F94C2A763C6853CB
-6179437BFB20949F530804A81C8C71B2E04531E2F3E0C158040763FF38F69682
-F8FE6FC7F914C9BD77FD51B7F533FADAC22C819B6F7E3094BA3B4F96A74E43BF
-240DB5BC95B8577597AB79D6ECCAB0D65EE279F5CB8527B05BB521EF2F7F23C8
-42349BEDFD0E303A7969A9383A6290B9ACFF7C7D402EA8A7C9517F01C28D31A7
-5B705C785F6418B802A18AB458C03291A0751FB55AB25515926778649BF7DC53
-8E94F949469AB3EEC16FCA42F98220A5EAEE73D6E82C71779E8892B2BE652796
-E12C2B6E3D535037013D60F8211EBA7119383CEE9B06981BFB98666749064BEF
-338B4AD1C6300DA217F38EBF093C867A7B019F1C8F4C64226FAEFC38027AC7F3
-A528689C44EC4CC0D0612AEF76650826D2B16F53675A57273A78A911647D112A
-193F579ADA161BB62859141F9893013F55D636A595E532BCA11F26E5846724EE
-E6F3026983BA6E24C1E462CB599D2C6F3E7C0803244D9A773D1DE70325786EF5
-C42D2E9F3DDA5F7108E3C28357AD1F088404AFF56EF5BC9ABC92A32BD46FAD66
-4BF53BD32E3A6781F4DA33E25E0075638D941389DCF2D5F3FA3C9AD7DC26BC19
-28D04510B6DC27C7C6EF0EF6189968C8759920E15F65108B389BAA1D2047B977
-E1818381DF9FC5FC217DBBDCA80BAB7B98E7A00A97AA3BD47EF50ED526FC8583
-1FF5B2B4B470642E3F575F4C0B1FC5EBBDA263F89E6D644E2F56DBC6FB50D23A
-A04A2ED571997F30657BEDF19D268F69D7A624FB11BBE30E94448708D077A238
-CD4543C8E805BC0DE96A0F4E14E721CA75A34DF4F911034DCAF94C190380D55E
-77BBA860C105DCBA06BB201281A02830F8FE7951855ECD7E13A2514B2EC6A93D
-A40D690A17709E21DA5305E3DFFB395708581573005A777EAFA0403B2F6ABC0B
-EAD09C5C3E2B111D8E3687DDA302B8AC5B11341E916A63832439057BC72B2E67
-7BAA5ECF2A8FB4D60751A1F209BA3F80E2BDDD496106EE382F0B704B94A7EB2D
-1659474F5B80774BB710BA2A744794A74061970230B044218212BF7C908A9F5C
-8575922D7E0D13FE10CC1E548C182F402346C6E256C3C77E871703214488172A
-76E46E6B5BF7B7704AA57E3C8CE8EABC9F8BF0A53538F3A09F27ABC005117354
-39F733BCE06C01F617CA9552C01B0ECC3AD05D9C04E67CB7C194007C4C64A460
-726BA5371B9B33A713C6B3D69A6DDA20E104580E1CCF7B0958E5086B31C28AF0
-D645B982521DDF76581C7DE21C7FA385F5A5AE637169427D13300AA66B53DBCC
-4CC79A0320A2C5379B7A9A54AC967163DBFB993753FA7AF4E4F7AB3710BDBF8C
-3F10A9BCC0BB17ADB5C5727895910CD7CA7F4923F00B07FD16318E0A53633A3B
-0501EA6D8851CB557D80120DF270B85DC721881CD897BEB71CD7EEC64CA12990
-E8E580E138EF6F9EE2F8EBD3DDC3C5F63AAF381ECC7350379646788EDDE61725
-C72975D2DBD54F7E7B5B1DCF78969BBCFDF726C8F7CB93F39CA28715C943C782
-5CD1C1DDB42404E24E079ECB45A8C3625039AAE73D365CDE69473537D4E575A1
-1D017E12D1FB54B41D956915EB6315A82EF3CA876200D5CF0973CE5F56649FEB
-F62747208C08C8C61A0AE81FC3A538B16DDB109177C7A686A256CF37D55DBDA7
-8F807AD40060A99A44BEDF27C3B7178199E750C91119A7AF35496F6F1ACBD666
-B5E1C8F49FF59AC5C5648011E2D0F7F85596705D4DF9CA26541624DD059E8E70
-4E74F1743A6C6DFE15BF1FAC3CD9A004F3AD0828489706818A60C1661B9E09D3
-3F18885643D21E8EFFA14F48E22ED8124BFBB4398024C177B02C760A59F7C0CE
-E1B619449022B819131DDCD178F826A0C2E9389C2B8B44B229F954FEB4D5FC0E
-CA84B53501FC1767BEED2381CF24BD89BAC6BFE1868C78416159F6F933E7C828
-DB743BC92B2EC3DC2DBB0E14F569EF1BCFF9182C04627D1E2BD48EF654850CD8
-7151797484EAFF38C38F8577737F5EE125EF08565E4F6E6603CB9CAFA165A355
-4B06608C939495934D515A13D319F3F8C4C1425363C897D025D28BF1A4BFA09E
-0F97561179C2C0F030F0B6A3C8591537506D9FDF232AC0BC848E517E61F2AB95
-88D386584AB5F92CE4C68D1F419A32576D47EA6CEF4B37946B1E3DAB1E67FED4
-A5B70D62A9F69C227C21C8AB490DB86DFB4CA788B6CBFF8F02B920F739B141DE
-1A095167465D82714F492EA9D2B4F7BF14719BAB487EF25F8BD1B377FEC95E66
-F3D7020294E06E743A606D61B27DE20252F211737C4026FF7B9B4945DBFC9809
-8E1594CE15A1D7E5270B7448CDEC0E7D728AF99771E64A43B27A041FCE6B963D
-42B6E1975F5F8F8C26602DC75D04ACF27CB1DA2B0841529E26CE6A1D0E5E9B31
-0C191C39FDB29C4505CAAC095E91619AD29468DE658EFE5D5198FE5EEFB0A2E1
-4D6A7F1BBBBE87D543592D0E658FAD7B5A002D6464C9A413D8952C533DAE8507
-B88888C8BFC31C3F8838653527A3AF640BB9CF67FBB5844FA83E7D9D51D801F5
-62C12CA2D6070801067033521249A56C5B0B77B19811FAD4951E34A6CE5CA1A8
-443E4C5B72CAD2FFE1650FFF90A91EE8D7DD95D77F681C1858857EC9C449AA1B
-C0D7145473917BC9E1D8D6A691C91E1A9DBABCAB74BB080F506E992C1A974E26
-00C556FE22EA28DF85CE94B3898AD28F137ED56D605CE095BAD1AC60BC6B73CF
-85EA4ED98FC0ED5971DC5A75F289698FB94A4FEA6479479FB2A9BFED1859F69D
-1EDF8BEFD567FA71B725B11D55B06CF0E95F817DD67612B41AD48934A4D5ED7B
-D888DD698395041DB1C9290F599BF0ACD24AD9EEE1ABCFEFABFFEEA96A02D292
-C78CBAF56DC3AE9E909A2856E2614E2EB9D4F46289AF8248CACE1CFF69C66F94
-F5B939A523DD14332C225110DA3446A4818FDD67B5D16FDACA990DDE72B9F10B
-F3924237D2B6069030B76DECAFFA70FE97F5C5C684A750AC53EE37B1E27C5910
-48BDAC0DE147D16BEA29E4A67AB88588CD8F3B50C4EA3A18D81778949CB17F14
-E4B19BBB9FE53ED4105C05FC9180CFF9F59F956CA0A6D11230499F04724051CA
-B98968E61ED0DF26ACB0D0EB7EC9BA825547B42F4A439AF0F1B4D4F9F4518ED9
-4A80B709484E08438B6D103CA4F0C7C8CE75889EC2C501A375FD8D91722D5FF8
-195D24FB5D569630D94FDEFA35A8D881FF0271B3D451A884D106735D4A2361A6
-D71626BBDF60991E20045C1B980FDCA1F436C1EC063C9B454E55062FE19F88B3
-C84211C2D38911CCC65C1B10931EBC9D633FF04826D1875DE425E69D60905013
-3280E96B205088FA4C3AA2665B595DC5BE5AFF1C29FE961869F3A03AC93569CF
-A1EF8D26E4FCB55CC541FAD73B55A60A9AFDB07C4F26B7AAD34193D5D3E55B6E
-53B7E8C23EF6AF8D363C59A59C1C5DF268B43E3BDE031C960662E3B308BDE103
-5717C31227ED287DE82B9C1923F0FB2885C2AA2839273128EA545CB9704CC989
-C4B324BB68E070E9F0810137F4B1FDAD4B7E959872BDB8929AE4855EB15D88BF
-F1A10FDD74B735B9EE49465875B67070F6D6CA219A64FA86934A4CB5EDF7073B
-B814B8C9892EF9A90129E3C0D84BC60C0DAED6A7CA8EF9164BAA7B3B11736AF8
-C58302F9578CAF243178E37C0CC8C3C9544AFA68952BF4B02890A0D000645694
-7AEBF900234A5374E199A5D90F10E57A1C123DEA596AC51BFD29DF7433141F90
-E0656BECAFED14399A3CB3A7CC99D5B2A8F88FAF17C9EEE84C08D0EADBC15B41
-7B21B8BF97FE52CEB94EBA37CEEB39EF757F7FC8A76B150796A27C646D5C85DD
-69AFE8AAF7465D0BE73B348CCD8E6493AACB6CEA5C15A9636C2DF301E5C7F72C
-B8C6BA861E90D2015817619C9A013CA9E7D22D26C6E8393187F8179E1693EDEA
-F2531A7555FF7BA758D3792108786E9745DC6B235D02AEC8A65A45CD310169BB
-F8AE3BA1C8A88A4C2A8C2C730F428FDDE333C75558417E41F95D6DC547E0AE93
-134F547C8F7BCA1D2FF766A9E2A2C799C529348871F5A56D5B8ADEA3B2A11DF0
-545A0A5930AC1EB9B33D296DB9F1E8B815B741D855622350EC35DA65E002610F
-4EBA010D0E018E168377533CC24CF7F4B79C90FD7C4AFAD40756621200E45012
-6C65F1359854128910451346DB93A34374EBE00140D3BB639CC14901E7C448EA
-B7C6F6D76DD96CDB8910BC20869B7E235BEA990DC962554C1D92EC9625813BAC
-252E58DF9D422C9C3645A999A3F25B5ECBE2B43926E2E9951E47DDC1E302FAC5
-921AF039D110CAB81962ED99254457E99A142A2F3230492827806417B1480691
-BE5511A7C1FAEC3B11745B30A10B8DDBFCBAC3B3B8122115F3E869C36AF8584C
-ACCD78A3B88E09C7AC348187D3D9B650827FACB330B2492DA961EAF8CBBE87C6
-8ADD19B167EBE1A73EEFD7CC9239DBE4E8438A4A16A28F97A1C6CEB14F543C23
-238478AC9630CDC4CD3A01C8DF7E06C8B8F033A32D2B4BF1C23CAA5366367DDC
-D3CA457D69489D0C84E56D50796B28F8BD089108F4D8C7FF554CC68309055B12
-9F910D46D48AFF711073F5453D8DE7A781FD9DF4CF4B28799093DD8FC2055BCE
-E8129ED81391F18F26EED523B9BCC59E941DDED79B23E74FC37BFAE9724A9E24
-5304601310BE6FF3B480C7BA9E0B72E4C6FC8BE2A0A9407109E1770ABC56FBC0
-A8A44AC1496D3F41A74B8AB00435E679E7B107C133F3669697E8341B70DEDED3
-48D6BCDD9BF9D336F25E5739A9CB1420D6F1813D1282C0E0EFBFD8DDE2C66089
-8B82A466300D6356A3257222AD8B28F8185085218997DFE0FE1A1CE1AF554B98
-A1699E9068CB49374FDEFFA433B638B71284FAA1211B65898C3C056802FD3AD2
-3AA4F680922D437146E4F7DEC9CB8ABF1A8EBFCCFB7DC9B3BCE38C8C4F2A578F
-51B3AA15BD2BA58496CF4BF26DB0DE0CE1214674239166AAA4A25606920B81D2
-A0AD21E24B3AC6A74368F9E7F116BBA02DD2AECEC99F41BC3D955D43C2E22F2C
-7C81B1EB554351D47461805FEEF5CB89426AD58246617F6E5135F7F735822D2A
-8A41C2A685086F145175154762EB694EF1A877670A51C4A86139E64063A80933
-61B9C6111F450BE26BB644316FE30986368945EFA43F6BD4BE3840F578C6B7E5
-64E8BB87AF2A7E2F4A8B1AA257C2DEB9C8BDA8A5274E5076756B3E942A44F1BA
-D26498BF571F450D904733A0F796238403E5A781E640330D70AD296F6D74B679
-B0B1168B656E9B28E4BC7026FD15197875D89A72696FD7B20A3EE4ECA24B78B6
-6391F8DE690ED48966603F2186424B17A28CD3B64BE1E3768D8AE01954A4DC91
-CDD6F3A30D3C4EB5F9C2CE00A5A64086FFE87EBD9B4ED432FE59DDBA942F72B0
-F6B3C8CA4CCFA5DD2BB195FBE297F6E65CF6C06E9D4475EA2C41D61D39F0B25B
-889E1EF856FF0817142ABA12DE2C80A2FBE0C0D98A60952D93E3AB87C644D4AA
-B7CD2011876AD53DE27BB957F69F4C4E48B292D916CEE8BDCF3AA2FF9C72E580
-EB5482E26EB7719FC7BEBAEA7102D55048289FBEF5C5829D96A437F4F7CA57CF
-9FDE380071F7859DC68EFD00288063EBAC1112227AF649694E3D2D63B6AFDD3C
-7702EEE2F4ED8D760D2023EE1193D3266AD408AB8A3FFBBF6FB9FB1E8E849F75
-D79AA064A146C42EBEC6B1F5B77A02D9C92DFE729DB8F03C6E67E9587346ADCE
-213F08F02AE6C6D2340E8F041B212A760F0EB6D4C4F7AD11C0C7D003C384E9EC
-8009BBF3B5351BAC77CBB2DEC5547D9C9F2ECFEBCAB4D48B5985E891E51C7BFA
-0A02C7B166565EE79D8D5BDCA41C79C69399102BAB4561B1171CA99A57550363
-3231BB3E3F48BEAE734E65310AFB89A170D7D2C23690D07050E6246647B2A3C5
-BF170818138683EA1B4DEA8C2F018D0FD5778BEA72C72E6CDA1458BC8D1E553D
-E61050AA240D0677D9DA9D9C22810CBC6C0E441C02B27BEF9BB48027E07FC495
-9E83F67BE50872095AD837B6BF75C0B5669091CD4923EE8929877CD0BBC624F9
-17B90C8D5FCE286F68DE2FC1508373EE9F9FA6F5A3978C75F52DDC397E368A0B
-57F5B40322053BBAFE6C7F8F293E0E3BACFE054A8AA7DCC3FF253F58C75B9D12
-4669407237089506FE8CC6A24A1025C8B4673B48FF3174C042C4D66BE2AC584F
-6A346027B020024CB9816965E99F62488D47EF144740C30CDDD2562F6BAC56EE
-04AE0AA4421F68C2525130D92002CE82F361624166C24F7C2B11C69310B93719
-0947BA4E74BA25398727049E1E8C94669B709718B2BA25D889BA48D66B0A9EF9
-173C6CF93116BC0DCE2DD62D2A936341BA360D901BF23D9A6579977464D12A3E
-14A083FB37A4049BDC5F4D9E8D49D05FC4213B01CFB0231D2B03F552F366846B
-7AB75D68EB74D57CA505C571AE2086BBB8072B00881A57AEBE38304FD73F20D1
-B3A3F4DBA7CD736A475A04B7785C64F8802DD8483C75E50F385FE63D063E7ADB
-0FC45DC313B0585C605D1529D226FE08FF7ACA26E0CB2C1B23444E976107731F
-1795EE18D69C11B9969542AA52BF0D3C4D00862494DF946B74718DB8FC586DAF
-64BAE620E3C1512720B0ACB343DA448A0419975CD986B40D91192158129232C5
-85E18BBA914D219AE5979CF98BC9A4006687095BB53215DEE575D4FF7FDFE94A
-25A05F1CCE048E2F7A801C7AFACD586C218C1A04B43F167EEA5D6A4EC9DB4FB8
-C2E56225709D9AF95C88DFFF3B7EB9C337069278D51F0824C96DF582C630BEE2
-C4DFA3E9C9CE76D1B52A23CBAAC840EEC8B3786D45834D55942B46B6B4C612AF
-BFB077F21E0F7F0EC6436BDF1704EAC52789C75F7900EB441EF83E37C780A699
-2E3B2F5222D7FC4440FFBD93A01205FC7E64CBE9849BD01FD4448B343FEA4101
-9FFF4E1527F81F4DF3FEE2F42953C4BD655A50BDC6EFC02E25A5D8695544E166
-7ECC195622F1911EE8D637DCEFD8686B01A130671BA5597768246CEEDB1DC252
-214E01AB3AF7AB7E3D766C1FF37CFEFC2FBD4448DE566042D46B3F2A0CD85D27
-52F4CBBF632139E86B8A2669321B4488AEE0E3EE016440B026BA4F3CDB798BF5
-1E026DE9653F2851D1B095C7272112CC642066872578C2063921B1F1DC1DC37E
-6FCA614E9EDC7EFBCADDF112E3127B753D0DBA1F920964D69C779343ABB1B56C
-EEF95475F7CCE12C08A5AC0502C65284DD6F34C8FC31E6D696D9B1075B6CA4E6
-8857AE5D9267CF640DBEB733B3FA1DF1EE67D578445DA58492A8BC190AE91CAE
-DFE1F1C833312BD85578E1D63F8E593432BE3D4A9307127750DD9F9509660664
-92F85F9C97860433F1190C2448AAEE97CEFD9E048681D41D17F5CD3B8C6C3AC9
-E7D46179623C806085BB5D23E6ED26B2D900515216EFC224A9F25660536467B8
-B47665F6514284E567397A7AC78784A8CF47B61DDC9A66B74C04FADC5074B8C0
-476EAE541AB9F94E990FFC31CD94CAA9E93966096383C1951B00C4E79B51A728
-7526A4FD3A5F6E9D673555CD7142C94EDE73E8A3295341698D777405898E3B4A
-E149CB4E9EF567CC18C35C3BA9354CDE55382A6569A8D0B2B7453E5008347B32
-8B5745431E577B3525D343EEE8C0CE5CBE1CC6D3FD13AE8C5C9F672B10451183
-3BDB33698C0D220902195138EF44A545EA6092A79C9F4AF24D73B735E3733FE6
-67E47D76CE584299B16295BE997949021F949E035F49593BC128DFA89182F89B
-2FC9EDE36D2010B1BA62A6D900B00C4524AC6981F0DDEE41043ED7500F574409
-C275BD142BE36AD2F5B08121EB0EFD58E8EDF388CEE211D4FC3C2D04D09E8757
-17CF2869D202B2302BF7F5741F4DF47C1D76962A3DE9E718ACF684751BD968F4
-6B3488D623E734451674276CE47A465AE3F50B50A938C17DAEDBD7E40737FC3D
-35A709ED283B930E0381A174F3804E78BDF8B8761BC37179A96FA636127145B8
-639577E80613C9A547AA8C3441C85E8408C0C4C1A5143A3179F9366DECA49F47
-324BCB48FFBF44DC15A98DF0A4F9331BCD908E5D516881A82ADA22B906A85015
-6643813BFBBFBD2790451F64AF61E0252CA23D2C44BB92D546B50DF7C2F5F3B9
-560117B9EC0D5DEC65A4404FD7CAB019E50B6C468DA7B5D2239F298DB98C83EC
-8611CDF1D5207EE2F8F817958D2ECDC5557BA2D8023B69FE98BF4ADEBA5610DD
-F12B997F1D998441952BD2EB089AF2C6CC99FAD2E7E9AF14648BF99A09355470
-F32C0A511E8A02FE7E24F7E535020C6FA0FC4D9015532467666B0192BAE64768
-756C8AC401A71864A830359DEAC2919113979FE4DA48292EFC5DDD97A53377ED
-CB29E122DACB9C126F687AD2684F4EF885727C84F09CA8C579D48ADEF1F47859
-DA6848081327E0316788D90F3F59452FC9EBDA175845FF0FD6178A0582E20436
-4BCE9A140877B4DE31EC9006341568BDCCC9DF9DDA0B086DCF1D5A8BCE4060B4
-1F13F5A274242B4A0990BE59BC8DD36A2AC264258E19CFDC1AA63432D07E9DFD
-C35528A40580887195D79101345AEBBD0041A765274D09780B2BE95BD42CD1E6
-A5B490374097FA0E5B6F196A3C47C18E8499717C07A36BF3DEC7064845253515
-E0299143BEED08AE775CADA4F8ACEB96D70F08779BEBF179B2BFB0DCB0F1C126
-35B6BAB5C1F755CC9C40D5506135F11A22F802A9F3C79342B6FB9522729E681C
-C4A93373F8E6DB2CABFA5B7CAB4C243C975EFF5C5D634D4D311EEFADBF115E41
-1C3EA696F82803A071B80E18BE67F7828DB353FDE5B51073E86E68486CDCE01F
-5D79F3E3DB087505FCEF1F9B01908F1D9FE1EBEB25B6DDB40C119D5B28DECDDF
-0F579BBDE6CA59B903368E3460730A756FBEBA62903512DEFDA5CE765C479DC4
-5658ED736D9EEE0CCA46CD2676C475FD3F8E2BFEEF43E7B959F19468FDEDAB2E
-BDFF5ACA6119413724BA04E9B006C4AC43CF2A16FFDD90A1E46F52C661328295
-B245F8
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT9
-%!PS-AdobeFont-1.0: CMTT9 003.002
-%%Title: CMTT9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
-/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT9 def
-/FontBBox {-6 -233 542 698 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
-/FullName (CMTT9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 54 /six put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
-42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
-4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
-689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
-0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
-610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
-3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
-C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
-995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
-EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
-2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
-4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
-B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
-D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
-510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
-BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
-93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
-F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
-45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
-4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
-088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
-9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
-09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
-E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
-0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
-FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
-94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
-03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
-409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
-45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
-39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
-58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
-84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
-0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
-F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
-B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
-D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
-3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
-7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
-8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
-712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
-C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
-E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
-A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
-2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
-757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
-54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
-DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
-08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
-6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
-A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
-336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
-E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
-3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
-E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
-1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
-FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
-A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
-465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
-3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
-CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
-573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
-9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
-15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
-D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
-15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
-64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
-D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
-D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
-576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
-ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
-EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
-9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
-3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
-1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
-FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
-C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
-4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
-CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
-3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
-D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
-BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
-1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
-4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
-C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
-80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
-AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
-59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
-3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
-14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
-B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
-F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
-54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
-34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
-825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
-BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
-4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
-66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
-2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
-F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
-1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
-37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
-741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
-39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
-887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
-B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
-15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
-5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
-80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
-A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
-BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
-2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
-B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
-F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
-9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
-CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
-DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
-6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
-7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
-D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
-9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
-EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
-0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
-1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
-85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
-EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
-D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
-E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
-88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
-E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
-01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
-54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
-97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
-B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
-D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
-18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
-A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
-1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
-31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
-408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
-1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
-29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
-BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
-AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
-0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
-99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
-480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
-D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
-FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
-587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
-A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
-C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
-AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
-AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
-48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
-385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
-8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
-4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
-839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
-320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
-7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
-DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
-DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
-461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
-BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
-1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
-3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
-0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
-EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
-AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
-F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
-097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA
-53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7
-39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78
-77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0
-1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A20114
-2248276B7E4F8924750C8361FDB1FA328B434499FE5DF14B96C1F5D03F1F2702
-C77057AF82D3982C5EF8EA40D0B923249FD9810464A9EF6D1A99402DDF08120F
-FE77568235A193F5DAF57231E5095D4EF505A0FCD8E538D53C5E23E226B487CC
-568F94438B050A4ACB53340A4054B02E8F4D8BB42E72FFD1124BFA91C22F3F76
-3F3015809D6EA1CDBF7827ECF8893F550132A618BCA2B9CEC7A329460CF59E2E
-3F0E70D05F42D3E37130429C984D24F49529F647CFCB675C7CB79749E35DBA8E
-E8A0B56EE8FD852899BA52B789CF2A5D4F1C948FD5F5C57DC8475E65C83FC690
-28EDD11C5A7149D68B924EF92D73A70D37AFBB433D1563A034361A4415C1722B
-7599BA7ABFB5D0189D99B2C48024088699820761A73762B4BEA323121D893572
-DB414C845757270E9F21A5B2BBDEABEC09C5D030ACDBF5FD8FB7F9D62F13A93E
-AB6060F37CA8DFCFEFDF62CF0222FC4298247FF97BEFB153EB48A5654F570E17
-1E1DFD669AD81A441A98F39A41352DD1447E6B923B88395230C74CF703375B82
-8200F0186280DD3701067721E2DA2947A499A0974C5ED5C7BF3A226319D5E60E
-FC29B2484C062A0FC798C291CD5DF9CCDE6D548E2FD14853CBF563792BB38EA2
-29E2FF53230B91825B5D239571581541B8BC60EB5CC943808DE2E587CD56AED3
-BEC3DAA382464FA0DF0DCFC029DAB0DD3E3180ACFD8C81AC0484F0C096DCBA59
-430CF139C30F8E45F15CCDCBBE3F96907ECC42F00DA70994C7E3DA894A5E4367
-9131033E06F1AF4FE22FBBC261B490641D914837EC2715CB72E5DE97FDCAB119
-77C8401699DE82B21695A2BBA34DE7E23FA3E4506CA817F20331D0710D2C9B08
-F03F2C3322E96BFB5064EC80EF4DFEBD8367BB7EDA4344562CCD23259F7ACB48
-04A9AD253332216DEF772A5438B95FCE3393CCBD5CFD3564B70A6B785E3FB2B5
-A90A86D161B6F70006DC30254CFE76B55FEE58F2DEDC34C6DDCBF1A75674F657
-2214FB982FDB68CFA80DE2485479759CE3DC6A7E73ED2BC4F1E12B16DA41A1C5
-7BFC746498B0388AB63258419384F06BB89531E3CE7A320CC929BBA524CE6B78
-7E9523EAEDAE6E724E6172A76C8B844B721C4CB17E831211FCB830B1ADDDAF2B
-F101C2E3F973E3EBF963B70A5B403CEF7E3D869AE8461BA22A21944F954F0784
-911D337209C32F1ED5585735149343A8DF86749E395907A4DF47E3DD955632F4
-2119F02BC4688C047960306B85C79FA5011A0A947B3D998078763E196AFC24C3
-F4C5B764B1A90C2FC34808D92BB87AAA5328D35AFC5F6036147C906B7D1A3499
-65C100A777CE69E53BB32D79075918510681B6932CDD71EA32D2B8D624249414
-E5490FA6B660AB817752C9A70ABAD21AB8B1227D4C87532ECC8B504902FD53BE
-5A130CFFCCE869C76BDE799CB07BE6E8A364CC42FCF642314329FA02D641D85A
-20F2B7E13DEA7FF35CD9BA932B1ADC1BC32DD07EB048F4E87C200FC186942E89
-9CA9E82EFC02119549CBA415130B0D98A471C970EB1EF7A3E8B7B8242F7E81C8
-EF86B46A99759F12C62138634EF26C0D0942BAF165A40347CCCA16FC278F875A
-B0CC1515417283D9D093ACA02D40284BDF8604CF49C1BC391A14BF2FA0D2CBF0
-FC6C63080242FB76CD082CD5F8B74D44AA03208458D4E76D5979CEED233CED2A
-111A6D222DA6023A10721B41C8E3AAF75B687A8BFC5719E21101D005BB811172
-4621B2493D36C2E4834F7187895F9AA31F67C06EF7F4C77B220D4FB889F8ED08
-B29E10164249A7D5B7E5F0984DE91C1C5B28439EBD117BD235B700F0A962F781
-5D085D110C2E73A70FBF1116A3089843598D04568166C344A1F41758470B6ED7
-9184178DF09FEE308F775400B5573AADA47232243060D683C4E7850B70E7D798
-802BCF2038A79D9C02702EF781BEDD831FAB3615DAE92498B0618859A00CF942
-50187C26853134D471D76842C893C6D041566BC2A51858E41FC0E3DB1672B373
-8F565BAE23909602161C8FA3B0A8CFA5B5A525EB95E477627C24707B7BCEDDB0
-C8321822C491A5A86355857CB3BA92D4C5DC550FBCBB42A024479E71BC219C3F
-DE97CDDB5FC69007024B01BA460B522CDCF5D300293F8375127DCB1ABD94DBB5
-A08B40555BA14BFC5E23F8165BA7B45154D3FF754428AEE97A1CFF07DFE06AE2
-9C4D711D48AFDE0BC3A50FA23D09516EC4CBD986F746CACB8C95BA69DD20B1F2
-08841D940741C960DB0E48623644599B17A04E7F500B64569516376156449033
-2A8943AC82EBFE91990FCC2C99AEE28247B3D4DA7C5BF4DEAFDFA2CDD3D08BEC
-E4EAE749EC0F9A6A28850F201E3B2C79E920FBEA1A7F3CBE19F3F3B2BBA2009A
-729D26431A31A7A3405F9BAB02A9F451A3591AA29334FCE6E7DAEB68DC34690F
-E189556BD67A31FE42BAFB929CCB0B6ACC4DC1649B03AE11042803B9A21C879E
-DA2E857A305DD86DDFDF10BDD0B7FE06FCE80BF6728A9BF434AA27A1FA11A164
-D1584D7829EE7053D34AC69CE905871C3166C96740EBF60FE64730C11A63CC23
-4EE4318CEEFB38885A3011812172A1C0ED6CAEDF62CDA8CFF9D0081F4B32FBED
-6890FAC82FD2128DC38266AF0DE70FD90489229153F5D172B496B937D2BB8D65
-2A86CDDB601218AD60E1B68CE245ED1D0E58CA1936908A114FC8C7A1EC53E3C4
-64FCE5D1D94C899EC235DDE3748392BD878EBB8005B92F092F6470F435DBD0F6
-59FF0448F92A1D6612BC766242754CECD05FDD77F837B411DD4DAF18DE438B44
-833E0228C3349A29BDCA5EB57C81832D9703293BFDA307F8B3084AB5E82CAEBF
-DC71070017586387A94E218DF6DADDA303D892AC7198249FC769E64EB4010725
-5704E6FD548FFBBEB2AF71FD922B8205FF782BFEDC44161AF9C6C366B837CC10
-D2DAE81100064589CF1FD53847A0FE243383CC02D9C77E08FCF101D3C2C1C5AB
-3177425910BB80B7626B8BE707271BF4A40B4143DBFAF11F30606698652A866C
-AC430FA8C48362C122C3D3E1A6CD487D49ED49B14270869E8D9AB138DFCE62A4
-94DE6402E94C6923D5C7AB32B6C1C595ACB6B6C6D4637C0C33E5D278803A29C5
-1970489E0DD6220824B012752FC60AF3D0CAFBE07E0D918E62A723A9E71F504D
-A5284AE855EA175D724B976D989CC7BBFA69019BB3958B7D61978959C2B12719
-788FC7AAB8029B8895621F618DD67578AA066BBCC56649293791A1F07307A232
-58EF97F617517F20843F0B317C6BC6F3EF64AD70DD35E6B25AEE4345CE0D3DEB
-8DF2284BD0EE20D326FD65F759826D48148C4057DA66FE14CC14ED33F79B2F17
-69AC90656F331371D13685AC5090A8653D3B256C5FCAE10A86011E25FF042BED
-D1346BC6046B0FD5BF7B8C2100A5CCE4DCBF9E882191AEF91C300FFB3EF52F03
-EECE89C7D8B46A2C8F993C0A47B3494099403E9042EDC07CB6862531B2024899
-A378960B55D3FE5998290457BA27337104887CE83A7CCB5E243097A7A86EBB37
-600E7AB7655D3003A6E37AB275BDC82FB30F8E7AA1072AE291BC692A7B8C913E
-0FE58AE6C100BEE929F86495D735CD59D277728A4C1D8CDB025785F09D14DCFF
-AC86E32A4A582CC053B4A60519EA32000AC3F372739D6973CE3C2DAB2794D923
-AE6379DE839B195DB3A1EF5A7D1C40EC956F4928CC9C9BA7ABE78135DE7E8FE0
-0A243119A8A652396BEE0C84C2B0FD19FC42B64CBF9D22CB75663FD43AC3EF1C
-555611B1BA1D45F85D27FA3DF97F57C321AFA39566D5796BD7DA9D776214C53E
-A8ADB3C7478A2E779597D1F66C6E3B027E29C02A32CD02A6C8957ACFED6390F1
-11DB06ABFFF7AE18923D4E4EF99EF4E0F58245357A9FF20283BD0A045446CE2B
-BDD97A4856CE8898CFD1A69BC87A1D8B155A9E3C337AB860D4B9C518580AC24D
-C89557495A65113EEE53502254B60A6457C73EDE878025E25760D1BF4050755F
-7E73C95A73D7D83BCFC1EE63FFBED31D55149F98BBE60CB0075878C088C1C932
-B3EBAA3FA7A98E01BBB900BC12C83E90E2E51BBD8F2C1FAA5DCCDAD3E89368C0
-2441328E2963044B19A6014289D088C0434921CDAE975E9A547E41089F4B24A5
-93435B3698FBBD0D4765CAD1DB922F95AD9452C483B53BAF5091EB7C5627BA57
-0B89514654C04DF4552809C7C1EB967137FEA20FA1D92D261632AA66AC66C2BD
-4E6584871E1CC55B702F05A97389C51BDA4FB131E9BAAC3345792E0657089179
-909CB2EB0529A23BE5FD4AA804492AD5466AAC0B6534A63ABA1DA4EFEE1FC003
-160F7EBA31A4BC54C4E327E40DCC1112B17D53D4BC3887FAD8189B8AAC3658A5
-B44B1F10ADB62190E9A097637951B18DB403C20D93A65F602EF033D3EBAE895D
-02CC3E72176D6BFC26B7AE9024945BC787B07310628D702580C0622EE5B624CE
-45F40BD8C49CE83F7F807D586193961D3F2E802A57C299070B2D0F760BAC8879
-7D619D7356596434A7822983D64F157ADADEEA2DAC8DDC362504FE79EB29F3D3
-84354E9709F5968B0891E10C66EF859EA472E26F0DA704617370757C40FF2A61
-6005169BAF7B3F6AC6AD6F4CA4E92B666C5942946303D7E8F284619CFB0C23B3
-B2CE3368C46FA4EE95B893B3987FE902D0A553962D230730F00960E5EB7A4095
-8DB86FC8FC5E1B519A63A10EB05B239BD980614EBE9F47A630A3E9960D1B1B30
-ACF15F2B9BA83899455CB66EDE2804E4FCD5390BC6184AA466B65AF9C273C6CC
-4CC9EFDD9DA23C2B6EE6D41897D75622D13639B48A934B71D8B5727FD3716690
-9DB0B5CB21D990281E88930682FAC6C5F4E2F6B6275648A15CD4976BD7A2C3C9
-3088AFB5C74CC7B013013FC07C1B0F3855B346153B65C1DBDCCE354C46997443
-F0D88F3A566016F9DE8CC72E2533AB3D608C3879CA50A44987521E4AA87C7535
-70D52212A6E9B20188A29AC8EC5BBDC36E5905AE8A98D98BEDB04CBCB86803E3
-9C11481DC384480BA84D6739749755EEA5D13825E2A73CE60C4D9E895213DA3F
-D17614DE23A4F5BBB77CED37BC0EDD509FC982B6A384D354404888BF640EEE32
-011B752126CDC123D644359A67CA221B943FC9F9AD3C21C6A6C200E1116C4EA3
-6342DEB13641F27465E8BA07492CE3478456F4AD33F11396C683B645A9265A8F
-BFEA4B15045B6D086722C4DDCF6636F10B0C7AEF67DF5263BB3C3B0205BBBA6A
-3CBB91361E9D6DCA886DA4811976AEEBDF9F693EF2B9C92AEFF1150396924FA5
-6773EDDB28EDD632A6AB358D8D9481B681A4132718ADF8114A886D485BFE3B3D
-5E4D38E5993452235ACE90DE18F05D3D8BA1BADA1C91E115FB44D97F3950404F
-BF60DE067BEA3DE4107DD9C602A1F79DB07FE8B9578253DE009329954D4FDFAC
-03538C871E0E861A27010FA65520E2D64538E16207EB2E7480E120E7E951E687
-53B3A675C2B7A33C87F74C712C6A3F7AECAE4B93B854BBD64B290AD73F418E24
-ECC55323BC26742A57ADD9A875D54845CC152A0387796B2D4240D8FD233B7ADC
-24320EF503F00864E616875A4A78E5C6812E4C080E1A9ED6FA5BAD10CA19F60E
-75E9555D3DD97FA9D4FFFDD0A7F1976A5E6162C9274BCF9B54E70045C2DBCD45
-DB89D6132634D5A247EE4D86CAF91169A3828801D6C809BA93731FDB1DAA57FE
-32943D7D3777547C5667A36711BBD59519106F08EEA586F6AC76000B4B11F0ED
-AE10745950A200C4854DB95E19793DA183C0D65EA822A6E4B74D958C3C04C3BF
-535B18FAB3A2ED655122C1936B010C5C386C4B7B9F0BE1D3540898DADCEDC7EE
-15BD873F84D16075241F458C0CB77190A9AFDBCC06B8F9EF0826EB30ACAD19E7
-E6F677680A43F868621D5F159E7D4FA6D02298013A38D07B95215341D825E7D2
-6645DC4548F7638FA0E7C6623DB99DD3E5AFF3E98CE808EB2269D04F2974180C
-5C6835B702BCB803ECED3E509E11F549D99E104D0072FD0AE0E3368B8BAAE93F
-D7FE42F04D18D1334487A4E264FE55637FB75AEDC315E26FA1B786EB7DD8B92D
-FFD25EC6CC2987C62DFFA29E8AD556D63CB52C5AC6892B6E1FF5634AA04381BC
-1511469606DF08C618CF6458060F97F504AC0EA6313834D1A7CBF35EFFF4ED85
-5E0778A7C485E61DAE41A5962822016DB270FCBAA00F6AEAFA29A4EBAD761C68
-209ED228DF25730626741D50E19D1766BB895830397C8C1A72DB3BBA55F7DA7D
-4148C1D90B37EF217AC492993BA2CEF9F2842004547AE32AD8A8999B3077AFEF
-7672A0D505B382E6A41E9FA2D11C617A44D5AAC2042184266017C39B29540FC6
-08B70ADDC1BDC711390DCF933A70D9DAD03EDAF54F8C38C9EFFD8EAD1FF65D45
-11AD1CA1BE49E98BEF8BA210FDC8F146CA563F9A51AF0B1178502382A7482EDC
-EF1E313E3AD947109B58112FC644CF77308D2A8B377F5FB494E28B64E96B3F2D
-7DC3A2D3F8E95EADBE7C11F92CC922FE78E07900D69898F357910436C69B63DA
-2ECFCFC37CAE957B83C5B9E232E308B5090BB2A99C1A19ECA4763FFE3C9BB3F7
-E7A8A66023438A6D0A2320F3CABF171C0B1910141987305A01E08FCB9D07BACB
-54F5E23C26E05F97B2D8D4C29C3442EC472FC39C278AD0BE6DC19D91433BB8F2
-0745D9639D35B97D9FEFEFDB3AECA7C3765A5E88B59B40E00A0088440F1D6E0E
-01792EEBBECDE832E58A843D333DF394AE900C45C42C756D27DCC4B6CF6390C3
-8450BC057D44E6E83D6CC28F81E99363615CDB0AAA8DD56BD454491A6E9F6B77
-455CA95CF08A14C6326E78AA6FA39CA2053D332E1218056A952D1123C1C73A9F
-6021124CAB7F23CC38A67F3FF7AD39041A290926E85E75D9ECBD7C78C05D8E5E
-F004D7B65CA97608F35E17C91A8C3ABBF76237B4B171AC566A0B9C34F578D551
-1FB4317A794CE695A872463510543E212A8E61CBC6D762730E1FCBA388369494
-9AB9DAB46D412CD198968F40A60335DFE34F255581923EE62B5A8984E50B34F8
-AFF6606331FEECE433749E039AA1B74D4C6A27AA1F6730A86A7EBD67BD70C0C0
-0D3999DE78836667371883ACEBFD70A6CD51D417ABEC5B2324D863D8DFBA6918
-8ADBB879EE3823AF3DBD47E280814FA603F4B13AA966A7F7114BB0130E518715
-C442CB4AE0D51C1F8811B902D25E8B2515DD537E9292429711D725F5613182A3
-4AC989EE031908DD115C98349B9695F13969A43395604C2E19CA305FD1D60226
-9CDC9C26724DE6F6B4819262B8E8A1114F633933B8E18AF2ED71BBAF27277935
-41590F61F257066BC3F5A53A41E4AAC48C871C4CD6AD9FF3781B6038AE360DD7
-955A4818950DA028D308779858C29E6D010F28451A3676A3EBF13F4F82A25D3F
-C470BC73BCA4C342967F3F77A0B971E5AF9AC80D5595FCDE497B774902B89B80
-A58E83E55E40AE05E9BBC2C8BF914FAA83EE695EB109B713DB0A3FC67E102096
-A7719209AD328C46C3F913A6CB7C78A290749BDE09D0C5C7947C715F1359C493
-26A276EB34D9E0D1CCE459296FEC388078992BB794AEA66BB7C80743716FD0E9
-E1D47B891D95ABA42352651B832AF5D8777AD257FC26E614C9B1807EB829951A
-0153E30FF02B63ED75A314E206532D5A6F02F7D31EF1A4FDAF1DDB327DD36287
-EC0226F0823954EB663F735073878B115EF2B0B069543626DD0292BA4C59974A
-3710A723D9C00EEB118E98DA3A8934845C44C3F988B4553497248C3342122E2D
-A76A1FA97E5D1061D824999E0A67025E4BF678088B6B57B444C290DEE9D7C3AB
-B6848C14EF2FC6776A47BEE20CBFE61F667E9132E00EB96A581B154B437C8E2E
-9E16A414F99AB459D532768C7905A37AC6F0DFE133B7D43F58AA2D43C0B63486
-E769429461C0C574376291A00DC3E084CA171F9F546AD307098FE9E3AAD1DD61
-DADD7AAB91DD6C00DABF4E6BDDD8BDD51D687F2E1B7162301F2B80BFCDDFC3DD
-EC3AF5030F284E2B869C89A196762FE21725A7F614C16144E0891EC814DF7CF0
-5D4D3F66D56EEBAB3F8539D890B7D7C869648B58E6A51793C213A5D5D335E27E
-3C6B2105D07E8751915662AA0B8F51FBA97169A66CF2195E09125F056735520E
-6FC8AE0C5EBC2BF6380C1C6176B8C51F51772FB260C83C7CD256573AD0F36304
-710A857C900B2BE113C5316A1825771F94321863F2E703AE4412E73001758478
-94610FA250C774178992AE169A24F246F58632CFC2704CC92439AADC4ECDBE42
-A35B595E632698D4AB4A56A8AA56BA77F732643753E34F6A6372BADB7DC4B872
-3C336F6A425707F3A484CB46707D39C785419AA3B53A3346E1B51878AF2C93D6
-5F81B5D88FD4AD6B0250E16394EF95AECF15B3F00D4247DB499B13FE31B73010
-D2494176F67B8437C97401626DF51355C93C404461C4ABB7D92FFFC765E0BE89
-84A227B1FEA694D32FCFF15D3EACBF9D33C5AD275B6AB76D2B79A3E0D0F7EE94
-2046ACA982FD57F2415B6914733CA58DA9AD53B5169D973C3686FB1EE4CFB94B
-8099312D9758B884768E82043A6345CFC2D05AD742B2B50A932D310200EA0207
-FA6F0F78DF0F234C27C9A7D15491E6729C7665AF2BC732116EA2A2BD75A83596
-6E4381DDD537450C431BFDDF20A784EF02B1FB68D64EA9B4DD4EDBC17AC6C60C
-38D99AF68F29D5AE73FCEE7A36E77A46137953E9846F5B8F1E89A5A184AC3B66
-9906B2715E3CA27FBD9A51220FC6B0CB3D7A2A1617D3C6B1ED4C98CEF3941EB2
-508605E64D3ADA65B6260F0EDF3B483A7FD014F88E32BAAB33541FB16DE5FC99
-D77018CE78471A24DC42A3E0CA3979527D049887023D024A3002B37EAEC9AC04
-2D5F14E26213FE6047D0F4DDFB27972AF90D39BBD19417C0E7D682DE0F82900F
-C24B570F2EE7F2191FEF466CEB9846B1F387324D5B12B9795A13D8D454FF23DE
-9D9221B1DE88CF14649B6C9F1FEB572D2BB11470C5D4AAF80CDC4E07E72E4FE2
-658D8835158AD7B8AD06687BE521A647752838BBEFC0C9356A0CF1B73542B6CD
-1DD5606CB6A9F6263B799230463616775209C2B2B8EC69C0FB00BFF103053EEF
-D164BE0ADD2D7234F5B93D9C79DBACF53630479948CB151A4BA659D490BD6B1B
-FE49EBEB01949EA4EFD789DC7F584D2D0FF4C2307BD49844C0A09B1152699CFD
-00451F12C8041BC3569CDC068613BF42A3505E1E1EF7C15DCE095D4837A3B075
-A1B8E329A5A264BD10C3C78FEBF4FD5963C0443E1B36B718ABC713CD4980DA0C
-7E7B786EB989FF2DFD627A6132E360712F222988A4E6459225F4438F7464B01A
-9B7F2C6EE557F6BF291DDBCF5BB3381F8C5AFD3DCB67CB8D885C38CB5CE49EB3
-DA040612837DCE5DB1A56ACC3819EAE607D852BF64EC9BC75371A948541AF8EB
-DC5BC4583E013D578715034B7753D0BC6F55AB54C87B7FC771B1D0140341736E
-F99D7610E03ED6EECDD1046ADA13B865E118FB4322880C19BF933549CA1E31BB
-DE2DB4F370E015CF1DCBC99D792297189D7BDBE5EEDE7E30EE6650F33161D319
-6F6BD222E804A6507BA2ACA37284B25E455B0537185DAF8773008BD6EBD113BC
-7B27B47AB8E9CC8B6A21BD6FB58E3FA32C81CC3EFE9135234AAE897E191A2600
-A6AE60220207E885422BB1B48B2AF4D4CD98554CA3BD3BB720FDA9E8540A1FD0
-4B15777D2A23C60AE4E9A80B1A9A6273FEFEBB7AA57DD4931D88934A91490B06
-F5AEF60987734D8435BCB113E56FE6F3FB2D3A0C057DF82611163D91E032B44F
-3257510434B96168D0A1C91C12F669FAB09961CAA5759CB880F7CC8581FEB999
-8D73181255DCDE6852FBF100DB92B70EA8C7E2B82C5C2D1B069E0B126FB09845
-1F828A67AA70CD628BDEF776931920AA91A1861662B30367A8B75F7DB9585601
-F3BC666F1E422E884A49156FB8DEE987F064788373A9C98B9A01C5E8526B6120
-177D3BA99D17A99CFF561B8EA85AA74FB443F02AF95BADB1496CE49FAB52B3AB
-6284DDC0B6F8E286FF527B0653FC3BCE3A791536C6662EEF3F21023DCF65B05D
-3506D713EB4CAD909E57C9672D911DB320ACFCC0724F25E49DB713B979A9FE44
-329918977D00E41BDCB4A8BBC984FD743BAFA0AF1845BE4AE1D47428D124909D
-BE639284E91D71CF630078EA2FB7408731A88E28A9768961C52E2E3FA37F3FD1
-E34F85E189D822C9ECB971D9CD819CA028A138D741DFE1FE8373E3A7C3373270
-82AA6B286D19C1DD7D16D61326009A75E2F23A68A5ACBCD453E5516D9198C125
-3E3C172A730443463B36110E4B1CE6776077CF23700A36A4A434C641331626E4
-4591E792928383A7463F3264DA88C9A22140B0752EB0EFF7BE8B684131FF4F4C
-19377AE97D4EF96532FD72DBA9570CF8F52457CA48FB99ED65B8AE6E8AC2F982
-03B338CFD36CB681279E9094CA6F110BBD4D633629CFB0C5DA424D2003CBF6DF
-1965ADE0281C20C9C872A1B987BE11FF533F03EB9173739D68EA0E2FDE0C5BB2
-9428A037DAF9AC7560A3551FAD938B6BA40D5F8F12BE6960325EE234F255DFCB
-FD86DBAF8B027C2A34C8AA4F0D0EAA3CB020591A784B25BEF370C99AE34E2202
-6395AE62B5B71DD4A551BDFCBBFE8F7FA64CFF587EE5B03A8445BF66BF7DF203
-6ED5104402FB9B5560FDF3AD85617DFFB4C8D0FB27931073F3CA6C55E6E54E02
-82CB95E852170FAEC9D6E26B3B49152C3DBCD5BB22F5B212999D21D23CF371A6
-02E8AADD793585C7B8BED25D7E6FC8509848EF83DA8B0CEBACFA64D22BFB0772
-D5C50A431235520DE11BE4F280049613E70B53629E6D79305EC6333BC8485378
-25630D8BD49F12963C1EDA7FEECE66B6989C18598F9F1D0E1DF584F83303AF24
-29A47FA93BEB04D73913C112AF4F17BEC47D7A7658FC08346AFE4B2A7146BD61
-5DC0395C52A0920393DBCBFB31CAE13E8B0C1AD9BE8AFC3CA81066890BB79CAC
-C8B083ED7853EB74795371A2C72983CD9F35C771C0707D9140C22F7E9D148D8B
-D8FD578E160ADA08568B9ADB7075F426097A0C3BD72C557D7B8D808A1D24BA33
-06E970953C6A952AB7B9FA9DBD3AF93F39D953992396CB4A8CA699916FC666C1
-BF279C4ADF1615EE65BF22C3DC916B0F9F7B2CC54EBEBFC9E6F47290896130AE
-DE1B1B599CCC39208D4142D529A8BF191B99B1C49E60F969647EF6FF5304103C
-235F10E72AA15473AD31B7DFDCEBFEA40B73D98528B9BA34115E2D428AF84702
-BD9B3296285CABADD2038A505F67CBC6226A942561D5076803C8E57012BDC5D0
-143BA3A2F5C501AF422AEFB95116C5C40BFFACF1BF7F663D35551F8B270ADFA1
-7C29847D1FC9C91188A3E30D35A357033C213FD9C4AAFFDFCEE8E56D0F494570
-377825DB4DC78A2E4910321F7A99CA19D8F63B6AC5DB9DD3D25A6B7BD9B59A0E
-DB5F0A25DEC3BBC96B3D26FAB85CE144D7834A1CE02AC05898F11B8415A3CF25
-AC20EA39612951A5AA6246DD379656C8E42007491461F6C237C6A21A4633ABC7
-9096E45DCEFBFE5750F7D223C6D00DF0974B98FD99190E48E04D6AF706F3C9C2
-4CC83AC842856F85563B0D48DF0B04B2FD6F3FFDD891F608782ED50A2C3BE1B9
-2CBAA891ADDB4D65F2651F1DAD6C4A0A77B25F3B6867EAF356D30ADE19D406B6
-B96E61E18FA814F25A4EC9A7DB9A97E7062DCA91768C2C57FB065B001D966263
-21276E0CBB1ADB60360598561888946F39E0AAB25881B90D6B08698243086340
-5EEA694B7CCCC012165C4E32F2272314252B5C937BB54329C078C37E8BBEBD96
-82813CF7DFFDAB3F2DE684630B10BCD386D19E8E653E220F4403C5831EE96069
-94F23EAD50696129006B8CC3160DE8086C978E92886169CADEDDC53C6D0EB174
-DE2D95EE0AF5754A954E7806D202964D8E679CD7F93B8E5BBE02AB2417524888
-1AC98AE1FA2D369C70C0179F086FD3B2A759D6219B6BC48252F970893C5C1DE9
-5CCEA71B1A0F10BBECD9A63D30F6469E0AC94EFF99322190057B2FD5A1507AA3
-D242FF2C3DA7CA93452BD6C658831FEFA2A2D0282EF662C3B0B8220176860CB9
-4E2BA62E6E57048875EAF30B0093B782764422692D0067375843F96647735D41
-8C19C1ABC9D8B0BDF3D97F21C5900BA2D9E45A0979B21FE7CA2FD50319EBE343
-8A16E6DF19AE467FB3C19FDCBA1017211E259A3D8EC4714E38C8405C5B008626
-175E959124BDE96372905BB9555798DF405DE23830F3F26BAE7058034A0FA2FC
-0BE9640C22D88A8547FA1938DE72515AC0847A820BB6116C81FDC85DBCBB4BC7
-D81815E0260D9FA0E759375A9E4721CC2204F4CE00D0CA74E51871FA34875C68
-0B1E05DE1DCDDD21BF3AEF51482BBC19DC6E1AF3C2E3C915102FCA956BA86CFB
-9FA5F50BA977A472DDDB35E477ED5AEA56C005157C7AC7627E529F60BDDB7422
-BF4C061D7029C0F85DE7D266263FD23FA9EEEBE58ADA311BB0D36FF1FF0802B1
-299762D3930C34D69EE4CE17AAA7326835A4D553BB045C4A216A4AEA82AF36FD
-73944CB69AE75F9E79369F833EDF5930646C3BE057F457B21BC52206693E19F9
-A390AB95E0FCBE021308220B9DCFA3A2C43627F105464F41CA9ACBF51DD01816
-87595BFA78440BDE4C69A41DAC308F5D19720E1F01C2B3829160738FB498B2F9
-C52ED576618B3998576443454A07B7784FA0CCC0831461954C05C364D9B0B09F
-467043627E67D7FD66D583E92183A52C3EF8C0179E05661D41DF119605ED3202
-3B3E1C232040B475CDEA8E0AB92B881720A079F93014937C4BB2450C8A7A6182
-820CF7BFD92B71B2924972DF468BD9E120C8C3C96A3D38059DC95E2497BDF251
-639DF3BA5D34B763AB8E8716FD5A9B8E1AA0E1C445B5417B16B3A2DE03C1564B
-32A17598D24AEB4C51DCDD7D28BD0ECC39BCA860E5FA32FB8DA4FC960E488E52
-EC7A3B42A9701DA7CE09FE0DC6844E26960C6B6F1D6EB3C07C903866117B3FE9
-D51AD8C654048C70A94434B5A2C6FEA57D5071679FD41EBE6E6EB7C94FA9E49F
-13534142F2FFFC56632873F5EDD88190A727A57EAFA05E07EECFB8E901A978FF
-66B1B6026D59E36EE4D11B667161B01021B1697EAA4DAE1789C85E90276D6E80
-3AE9EF553659116F60CA3790D10BB50E21DFF508E8C13AE909A031F320ED684A
-4757DE36C67EF5A61A9382DDE8026F044EE45D9299BE637CE9F3FF1DF2612E94
-F1AA8C6C9CF3E7A7DD54EA60DAC781FDFC79FA23A549F9D045B7D33815AD1862
-B2443B02B7017DC77784967E9535452F3466796A1A79AFAEF033087852EEED3B
-F73B887659C3B5FCEFD0B3C6CBE54FDC4997B52331FD58FAB9A3636DA029B88A
-85B74A691D803AA3A9C24032582F11E3EE8369B5F3B5E9D121896A29F2E6C65E
-48692E4DAD0296BE653A632609DF2C7536DBCDCEBA1F3EA21D6E4848780E53C3
-C850611024B2F2CE430F725091F4D94262A1963B6434A3B7F7DD2D48725A9530
-D1588A863EF323BBB5A628472E87FDAC1F10EEEDF42334AD39F659AB1D3C174D
-E9CF07772CC74C112916CCE5E02EA1F813DD7BA5A2B8F5EE63529C4509900B2F
-410B7B16E6119ADF83659EC1A742688C1A1699682B90C518B3DE85479C890E29
-A99E798A4BB845A982169F7301CF3C4BBF583E6D79AD2E49CEAEC0E7D2311FA7
-5756E69122F4CD6AF69057EB6D76BFF0C19343048B230A20361E33297D683AE1
-45D1687D84ABD5C8BB836048B9B5E650ABBE68E66EF27C89AE01DE9BF0E1A0EF
-C5DAD166222EAA95986D0A31AD4FFB210D8DB5582D92AB2085FB6207313E3BD0
-0B8D05218DCD8124F8E9AEE538C455AC0F3A121C53A27B963680D625AF421DFF
-718D0682B8FC8994D10F80EE7CFEF3C7A22A2622E8B685132DB7AD8B8EB74891
-A10B4DCEAE8EE380EDAA8F13931F9D3DCE875161CF52277757980ABFE42A15A2
-9427A355A1D0E43D51E5259C1236925DC69CC205D8C4286E7579F990A29F6A98
-C0148F081FEE5FEBA4CE1267AE67C854987B9B70A41F730768967A58046D80F4
-9FC01AC85AF924C87CF6A97D017E382E2C888BB1C80138263B8E0DA15F82E169
-7D23A24302AAB8CADEECA545700D979261D1F7F1142F2C0CC2F3390F58123B88
-77DCF0DAC085BAF095BD3E158572FDD033E44E067F0D0447071AA62B1B4FF680
-B841E0C19E5443970C937F80966046D7A00A5DD1AF38C18D95AE7732AB983511
-30622485D8DFE310AA3613DB5F351C9D1DBA6FCD686E38148967004A5EBCAA78
-9B6B31B3244FAA863022D2762D43BDED9A8CFE51DC9A8F545441E3A478F0933E
-B187A85A04E4857AC883BAC5F42A890C93D38C495F783CAF9780B6D2BF160363
-2EC4DAEB9039526E575A4183F9C02B56785C6AD690B48110030507634EA65649
-EBC356154C92197E63103FBB8E22D39003AE100B70A920CCF051D95BFA98A5FD
-912B94289DDCB7C05C6ED85A75E27FD5F74F86486E23D2988B6DB358F41471AE
-FAE134BF06EA5B5D1831D9D68FA9791B72D3A2E54D1DE5C2C6A8DA1DBF18C280
-C6073F817125B132928E2EFBA35BCFBE39C1B88FFD602D2D216EF0473CAE549D
-C6D0A2E6E82E68404259516F3591FD433517D9C9FCEFBC9A5CF7B5B27F5AB430
-AB18435EC8BB9AC2843258FB72004AF4CF43228AAA717CFCE311ED7A785D1D19
-41A7D56339F7D5A6DCBD8C2473738D9EE6F0AED82C56E7CC01CC7812ECE57061
-43A65CF7C781FE0994ABAD729D54FF48C029DE1F8473FE2A77EEA482C87C0D31
-E3D8B7C0B58C7B93A535B401725657E2B81F602C0EC9D5E38C1AF15718346664
-0E95B89D0987153BEF53185D351D2AB2EBB8F88B44580A7C8D9114A1CB01D29A
-788656E462955BEB11A3CC309E5349B033F33B0213C10166D67A24C877199DA0
-76F0D03ECDB6EED7C23062FAD575FB03D34ECAA6CE3F3EF5A4A4F44B94955424
-60598749E3D93B9FF2260A1EED71D6FE5D321F658DB5155130BC84C8AF3CE339
-8F16E09681886C2A8456B547144B3E52571AC2E8E30E6CE628C48BE2D08E67C6
-D2A79325EF9C6C4B9FBC621FDDCD1A9D62A618E924345ACF81154B583589DB80
-6F572ED120A7067A893DFFFD64DBC2D7859B9329E417C0713A5FB0C19B10DE49
-864629DAB75E73C3E82198B00E9F40AA40E51D8D64AB90C14E94F51298C8F20E
-FAEE0DB31426337836E77546A68D0C3BE4AE7E54A693E6645F4C86F0199BDF70
-C9960A3CF831EF539CECE72B563E7DAA9423BC14BCB069F045D906DE885D7425
-726DA4C547B99590E71B83335247A025A7D3DF1F6C37A9B330A62E8E09462C89
-EBAC587566817177EFC52550D10043D933196549C0FE765F2581E74ACC018898
-27561470E34FBE6D2A2685E6520A4414D7EE1E8A038E082CD20FDB77811766FA
-D06186B6AF02B84B0FE903B99ABF0C8C595D951458
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSS10
-%!PS-AdobeFont-1.0: CMSS10 003.002
-%%Title: CMSS10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSS10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup
-/UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSS10 def
-/FontBBox {-61 -250 999 759 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSS10.) readonly def
-/FullName (CMSS10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 40 /parenleft put
-dup 41 /parenright put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
-7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
-DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
-511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
-1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
-028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
-1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48
-63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3
-274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F
-388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B
-E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D
-AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4
-154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B
-4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200
-29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5
-CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5
-C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16
-131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682
-302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575
-F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378
-AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49
-28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18
-121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A
-A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D
-8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7
-69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7
-BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960
-C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92
-B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8
-8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01
-161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565
-F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E
-A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14
-0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674
-D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169
-B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434
-DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5
-261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA
-B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2
-64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038
-F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29
-AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3
-CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF
-5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091
-73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5
-A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D
-EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F
-1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6
-D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C
-13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7
-C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8
-08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220
-B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3
-23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA
-56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788
-2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB
-DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE
-3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D
-5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D
-9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5
-2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7
-F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB
-73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5
-B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007
-11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7
-03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE
-F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7
-5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1
-60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7
-622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F
-BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5
-C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16
-8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474
-1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647
-F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F
-D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE
-257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA
-7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315
-611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4
-246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97
-E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698
-AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1
-EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68
-0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A
-94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120
-73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680
-AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443
-8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070
-5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE
-6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28
-B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378
-129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B
-AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB
-8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C
-B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6
-753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD
-A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4
-93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE
-207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433
-3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26
-7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80
-D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825
-09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C
-5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105
-B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29
-E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26
-C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90
-F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9
-7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989
-99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A
-96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982
-1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B
-48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F
-4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A
-45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3
-D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81
-838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794
-5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA
-ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200
-DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF
-E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240
-5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5
-46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D
-491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A
-DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318
-F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B
-0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287
-EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298
-E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0
-0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD
-ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D
-8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C
-8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741
-A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447
-4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1
-AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C
-2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780
-14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A
-647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E
-6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6
-4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36
-D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD
-60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627
-4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289
-BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0
-1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194
-6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE
-65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF
-D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7
-6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9
-85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC
-7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853
-BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4
-9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440
-6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3
-2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A
-374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336
-39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6
-AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F
-1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8
-E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6
-AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD
-B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684
-CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF
-9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3
-DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441
-670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD
-99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B
-8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900
-E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A
-F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1
-DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2
-99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E
-DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF
-51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A
-40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5
-AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977
-DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093
-8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2
-BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49
-BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A
-0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0
-4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A
-8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E
-5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C
-7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E
-4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC
-717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1
-FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37
-25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0
-
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT10
-%!PS-AdobeFont-1.0: CMTT10 003.002
-%%Title: CMTT10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
-/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT10 def
-/FontBBox {-4 -233 537 696 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 65 /A put
-dup 66 /B put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
-7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
-6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
-14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
-0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
-3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
-BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
-D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
-FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
-556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
-8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
-F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
-B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
-125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
-A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
-4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
-56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
-E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
-15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
-2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
-05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
-6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
-04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
-C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
-70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
-4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
-A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
-62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
-240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
-69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
-ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
-121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
-0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
-D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
-0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
-D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
-550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
-CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
-9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
-FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
-7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
-E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
-50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
-2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
-9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
-44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
-49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
-385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
-8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
-6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
-EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
-E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
-C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
-484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
-4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
-0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
-6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
-5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
-1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
-909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
-BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
-CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
-2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
-CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
-EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
-0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
-9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
-D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
-21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
-7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
-52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
-FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
-AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
-F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
-067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
-E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
-C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
-5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
-0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
-CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
-2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
-E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
-56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
-F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
-E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
-0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
-67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
-EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
-CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
-9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
-9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
-C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
-327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
-F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
-60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
-A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
-B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
-0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
-1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
-DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
-55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
-7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
-75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
-E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
-8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
-F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
-8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
-D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
-54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
-49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
-CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
-34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
-1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
-6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
-DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
-E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
-4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
-2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
-ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
-3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
-97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
-FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
-A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
-639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
-D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
-E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
-1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
-A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
-F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
-5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
-4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
-664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
-4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
-35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
-1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
-01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
-5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
-2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
-DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
-BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
-39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
-C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
-99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
-7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
-D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
-6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
-5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
-6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
-F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
-E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
-39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
-7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
-ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
-6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
-2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
-1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
-06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
-5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
-288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
-7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
-759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
-E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
-03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
-6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
-314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
-74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
-906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
-673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
-A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
-931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
-CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
-E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
-4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
-2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
-F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
-E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
-E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
-251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
-7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
-46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
-E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
-DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A594210F
-B5200157C0F02340FDD61392BE9B0D9C46C1A0C4A3AB05918672D6D6020D3A88
-8C18A08AFA6BBD8A513A3C06A29A0FE923ADB6F9996F3516967E5066FAEDE5F2
-8317ADC676E012A737EFA5B743C0FEDB224E360B05D089459F860F97BA62BABC
-E86CF3127088FE3ADCC29BBCC991BF7A13A3A5BE34409C002DCF2B05C095A01A
-12BBB5C8F3CE43DCDA76D261E3F7734DE2DB7D9A323CD68D78DB2A5DFBF469C3
-D02FFFD3B21DFE7CBA8B9C7F438CDF8944DD5A06583A75079194054F8C06AA13
-1698FDF6B55E5B1B11C5AE8BD7FBDB7BA6E90FDCD1802F2EC862FB85A143D7B2
-99223ED8525202C26A53ECB0894A7A3A64569699C1C085B3CF6D6F6130C45C7F
-D74B5E4EF480988AA30EAC8CD07D10E5195B7199058C8B8EFBA9F66BBECEA137
-33037B3072C48E8295A2185EB3B83956FB26033581A702C8A2C65FEE3EC92CBE
-4FAB38A2F5BCDA2F6F6698E3A87BB14E848E1A67E3FF1DCC92B85461BF16C111
-6D3A59FCCE098512A2B17ACB186BBCB369B984A363525211D9B83BA91C2B1EA4
-3133C3CB489173988833DF780EBFFB461090B51E5C6454E4ACEFD98F22E80F8A
-23ECAE2A7803B9200043E29AE21F7EDB5D73EC2BC7EFEC3468C239A1E1C5A2F3
-B6A3D13C41A83DECA870ADAA461BAE73B44B9CBD7D9FC1D8BA7F096402CED6D3
-0C0D5640646143431C318824FC397E06BA888D966E976366613AE3075D3ADF08
-7E1730EFF0C108B268253AD90C929A8F9CE53FA3344692B4F2C8EE88C508D30C
-7D3713DFBF78CB79AD34CFA007500B8D1EFB46C3902B183CE019A4656F585B91
-337C8FB23A923689F96FA3FA862ACDB4DFCC63C202DEE6D52253A210F7FE163E
-BF0466BFC1104F859AC97006C5DAC76B68FBBBA1E86D352FF8299D5D94B6111C
-4E4961C13C1980ED85E5BABDBC25E26BD2611CF9644C28F3F783C91FB71E6511
-3305932CDB949C97E3C994AA9DE2E3069DB02FC5D1A7B552291D4FC01BD06992
-7BB266B91E315382D3FBEE6578EF6BC38C8AC5D27C8075C3C6C90E1133DEABA2
-600409713AABEDFB90A7D59DE9B1C55D5BF69E81500342759F8EAB102276AE4C
-62226488BE3548335C8B5DF636318A758825ED631CC7897D81D8DB5E1BDC5FA5
-472B07CAF20A93B34EE07C1F1B35CCE504BD00584F0AC929F8D276FBE1A906DA
-76508D83491CE04DFA2D053CC70BD6F6D4F4FC37AE9574F0427F56D04FB60C65
-40CD0C4F9D4B202B68C573C3883AF97D3679B67A9750ED2F7FA8C39E69967DA9
-2D0BCBB592BB6DA1C14CFE5AE55BD8E1EF4D4D5CAD9543A3ADB8346D4F0372E7
-7BAFCFBDBD48211C061927D955929DF620C0B3F9C5C62E8C2EBCB8C31065CC45
-36857F4A093AE79BEBA97AE481ADCA3F806C26D1C407AC716C6CD1680E4FB711
-EB5837E62986F81259FDD4BB7EF510B5A8068E167B6E9F79A85EAE7933D0593F
-E2E47F110DA4F91FE1D1C9EBAEA7AC1EE47C32B850413D2F151439B2CE1CADB4
-7D369343F4FE7A23FE7225240EE5BB2EAD003B791E184C05E16E5B1237336108
-42E036A6736612F2D560738B460C36B7D6BC9ACC66DDC5835744F58900D88F88
-32F5A49330101FE11A2DCC0E1BE4BB40B798C0B17F06E93373736FF86328A280
-439E9293434FEDB5174FB34CABE580EE7389CAF1DABBA6A053D514BE0C3F9CF0
-F3B9E5D971C3E42711FE1426DD84C2A1462CE67A7E9CDA86B3581FE979B06C4B
-E02A9FC63EB240C890DDA668C586795961871B93E01E80D140B1D3E84DC0A522
-86CE9CF8612A35940CF0DC3BFACCDAC376BDBB3A4B063E64C59C61CEDB570B32
-315481B2D8127B9B6462C898A7FA5037DA8D88EFBCBE60B4A803C0E5D4722760
-2FEDD14E231C6377F18BAC84FC907E25108902B9353CA450AFA7A2B028395D93
-C547ACC959FC5F66D49CAFBF6090C67CA7CE8267C80C7AC2BD031CEA01EDE032
-D124162800A144E00AF57B0F7683630F58A223111D278B122D39F1040A35A543
-E850DA1DC3B6C24B1D0FDFD347427E1E0C089F7AF6F499B6DDC5D184EF6C3C22
-2E4BC5A1E7741BD398A43D47BC25601671460EC39CEE52C9A63F03E014100CA3
-9107C794F2A7EB2B5F75EBB0D1ADDBADBE84A42B32247BB1F48A1EA537D9B93A
-9BE5CAEC478D7AAB59D92F1F96A76025C2EBBAB8480A7E7D1DA3C64540ACF041
-1FF7A968795CD24C3B6302C9B95EE6AF47BF5B6F6AD4103A229AECD3B8D6F6F5
-08EC913E120825E699EE78D8CD1202D2F57E2F7FF64AA7BC0B3A947FB07A149E
-59A402E894363FE848DF9B84029A1CB228B5DCD030B86DAF7D7032AA640FA603
-E7B28A4703D4D84D1B7BC417562B51DDEFAD015AF7A25409DF2DA380590D680C
-5E9EC71AC9372D3EFDA6667CFD495C86E4233A490B9C4C72666174B0D320AFCA
-66543CFB72EC10CE2E1E7625D2616C2571B6B2E33430E28BCED3FF154726E618
-14F68511ECD14AC32539B0BEE272A1FD7BDD577A27C6D3BAE6AE3A25A924B50F
-95A815EBAD7947FCB8C58C70A83181B8AA858A70D10F396AE89524407EB2ED07
-68EA77EE29E32F040655EEC1FE51069E22329FCA0F3FD24DD2431A46634AD6D5
-F242F5ED8508E7E1F2E6F8261558B2DB9CC40ABA2FA86E8C9F6D1112AA3EF18D
-0D5BFB642F77D4DD7FC8D3CD74C6434DD634FCA744B58D80D76D446922068DD2
-EB47C42C2EE8C96CC501699E50BB54274133348ECE59A563B4BE5B7CE1DED13F
-0047C7A6B6CB384C8444936BD165B9C6A43EC34FB1BA55E7D63BBD9ACEA2F622
-CF42EED2C3557519B5473BA4B765C75A66369389FC5B07B79B87015A90D2BEBB
-E91BDDA7F6DE559E13D6DB081965B83B050F97BEA2BA3FE20B1C80DB18388C0D
-2FAE933C71CE4123BA815A50D93D97C29698C0C0C96838271AFAB4FF2BC830E6
-184087C68A05C6ADCF9D87F949AC5667C0D2F8538D8D7A0862C62EDEB58CE413
-3AD8C8280432E93ED5DD49EB1C47818D8EDE3B6BA4CD8D21EDD7071FB490ED10
-C910F5399547FBF372840036E3D167CE36B7DA6E3EE3975934FD51A1B77FC8EB
-E576AC8AF5D3A9DE883BDD29FE161F0FD1FE61BAAC76E47CC4E4403A947ED8A0
-36BE4184200F11DE0975421241E77D372C9FCCF8305F9E4679E87E7D0C9311E5
-7CE314162DC520519578434AFC3E6694FC3C907BE36C433FEA335F47BC2332C4
-E8AB9E715BB21D8016162429932C527FEC90A076BADCE3F14E6A8BB84B85F640
-BE5CCB23E63C3334A84E606D014AFA5D22189E5F6697AE6958C6E4A9B14A1EA7
-8A3C53174BE2458BA347038C3C67A8215EEB9909833F1973860F73C3C8E1BDB7
-B3A4830A7A82BCAE2574C9662D9B79F7C9209F388EB655655268240DB3E87310
-966464371A5F1C833894978FF20B2DED89C69ED956DDAB5B3B10A121D49DAC62
-D56399106138052C66D44439EFFB6BA49FAD8823EFE66850FD534A86074C5EE6
-141351C5319252D5DCF7FB36F0F868BA5BE6469BAAC008ADB1FFC72E4BEC7C57
-6DB7B4B8BB56F2990E8A5F8368A67FAEBE4FF86FFFC5F914396E9D4536E3BFF0
-32FF663883563606D288E4F747853EC60A535E19ECB75D4661F1967B55A7535F
-E6E214BA61CE6D84BC6F7D78FA0F7DA7E20B4DD668D016CD47C81E1E832F9D19
-4CC0907B9A1CDD2C241A672A025EABF26DEEAF4074289CF072CDF858B4E61536
-819A7B6A9F51F9EF82AA614FCF4C3C373E77A5B0413856EADE27601CF60EEBC6
-0FE89D9A1D11129AC54B76C6215EE2DD0076C187D039351A8289809783D3FDE8
-70F11D780FA6412CFA96D04798EF3209A1B6F81B14F283D5B3C8F118897F7D05
-9FE1769DA0CB6048672F61B429FEE444967B4279B24C20890EE7B159132DCC36
-DACCE06AFB113A96D8395BF21AE603D578C46E70012AD1E73448E306006DDE55
-AF7EC201895FC7C241549CA800439276011BFFB3C8FAB1DE36C1108DCBE67B71
-56CD9CAD7F14A6BEF3CC4B5E8711BA4ECF0ACAFBE613D5B96EECC0794FF10999
-9EFCC16247FC0F4A09BF9BDB5F840EC4BB48DA4D8B5995FF535B45FB134DD2FE
-F2CBD655AC6F137EDAC2113F8E0C180E069C359B294B2F4C0055A06742D6AACF
-35A519D3922F28C867ADA92F4961CA18A3D104BCA99E0B6452111DA91D39489B
-DBA169A25988765832AAE78B7263C2FED70309078F0EF08AC8614F475A0C5258
-E68536E981EB9270B22D2B94D2892C1D6E447AF65EA74CB0A90A620CF61F1CE5
-FC70CC7E6723171DB1E20AB4BC2AEFA9389F598222025D691E8525A478DCF513
-6C72364F2666AB46677197399C3D68B4CF1F4F87F430A5806E2FD9E798D7AC5C
-977D23EE3000795422818868AADCCC0AFA560830FB9E33D5D8B7C5E4A714FECC
-7EF122247BB79641B10008EBE4AF583E7B89C97821C05075F46208FBA9F88B24
-EBB4E80F0D93999670A3AA0BB5B7B5B72C35D317D27DF658382D849CFBED8D3F
-64D88411ED621ADAD8948E9AC5A874837387E435C19EA34F010B27A0279036D0
-0927647212F62332627582F78239539D7332B563CB823437958240F278E6CC47
-BA53C09452990A4453F5119221D998B69C370EEB7FBB5EC946A2667805EDDE1C
-FCCEDF03BF98C2104673D26A09A249D57690B135537625E48258392840A73967
-B967BE08B211837E50410E273B27B856F66772430F326E9BD0E619D70AF5190A
-D70D7497AA36C39A7579AA36BB89BE2CBBEB16DFB15042C9C2F37FF83E7DF8A5
-36AC3F8AA0D7A78D430B643B6ED36DCA486A81B06951777335704851651CB4F0
-5AFAE9EB706E9A3F8E4F7F131D9F24AD2ACD0F05144FE7CF8B09046628788B6C
-FAFB39E3709836C7B514C2FA8C9CA76A6CAE796E9D52AA6A0EF7260A10B429FF
-F91B1AE060E64B6E61A87484137BF6BA7709730C694015AE6DEEB97C9509C929
-4CAB68E161E10FCF6E84D76C391343E4FA361B1E9F88AA2889B1684803269963
-82BD49E653DD8D19247EA3074E60ABA1ED612C056B4F18962DE3086EA2283B43
-9FD66FC6C08DBC5AC5DBBEBC7998D0EC16805E4080DF1C7F587FE226D9F76290
-11B51364BB712DE2A413FF159C357534005A20CA77AC8F3437D7BCA1C2BE92DC
-FD81A74C007BDA36766FFBAD0AF3EFC3B60E24B2FC23E6E71FC11365B2E3022C
-2C04E123D06919429FCD9F938F5ABB037B7C03061B9E7D883D953C20CE325C61
-8944BF344D96FCB68BE7B872BA1FA3616D43C7C375A0845B5A0B469A091E4D59
-676D53E592DD776AA99EF8196D1D1485AAC1D0EEAE079F0627DFD3B8F5D96E86
-92BB272BF1A20FC52C709B4F9DF4805671082013007D6338185B6BA6AC572AA5
-53CDD41F0CD270EE38ADC8FAA95AA16B68768DCDB552DEA2D6825EAE1B9038B4
-48CEADED7C157695843FD9CF8D6B17D3B1B2F08DA18EA57CB90F47C8D2DC9F0B
-EC8AC42A758E812A549294FC224188F68B6894B08FDBB5EF274E41ADE95680AF
-133B6D6CA99E90B527DE9B15F0C21FA640861E82F83327CEF9B0D4F6E689D1F1
-6A92852DBEFD22B6F8DFBA577E173DD275621BA99E3BFF9C4F8FCD7420DE5810
-A851488A5B968401A3CD8197DB19746EFC0331125B0A7016A9B8F84B0F8C7DC3
-60FBA1201BE6645E37BB02824B2D712BBFB4442215E19D44084D066DA95D75BA
-4446DB751955EA3C4BA900CE491EFC809EA1F8161175F282098ED54778DE77A9
-598AD316C3C7BC26B301B7A12F1A82DA58D466939A23D7A786C9201930E4B750
-AD10988EC2E5B461A2286CC39695B6A5A05B151BDB13066720F467C67EA9744B
-944AB6261D889C365DB55E03334B29679A5F0FC301AA6FC0870B84B8263B1392
-DDD3153B380FE80463ECDEF1318E838BB899D2F420D6C4F99A56D64A5D618E99
-C86CA73DB8BCD3E76A869864DB0A7276F47EF594690C3CAE6E1C47C11887DA03
-22B6F2E6E97A7338221E38AEF20726C9687D1B8280EACE8E8B0B842EDDFBC123
-A6A090B89D5AD42C312418FDD834FD4F354AAAD5002ECC573FCA75E359B52C48
-3ED5A6944A4B5CA3E6EE7FE01C70F8E059B986D7F54D003858569C207F6D4E21
-51572D716A821B7FF136B2FC6649809599F77990E1935842AA0B34DD9AC288DD
-C7A08C49F96C99D716E17E84BF3B622D3DA4ABD0F7C2CD9247F84FF0A0CE3CD0
-54A635725EB0A9B2BE2F6D421DF42C12A8F83CE4964A184D4CD2CC13056004FF
-2654106BD9C6767094C7162231201C4E1FA16D5926BDA3B7467CA4937CA4319E
-3C96B6C0E0043BED230592B06E18C7A1319A778DE99FFD8D9E4C75400CE635F1
-85EF89D9BF91A246F4CBA5FF0C62748C958E3EE1F71CDE61E4C919CE74AB7E3F
-5E5D26C498C7DEE52EA37F00A94F28A7ECF0F0A9EACC292A03E3F107A6C5F6F8
-1EAA1ACADE655FD7A0A67D8682478F68B317EDAEFFF7B7461E0771DFAB0A948A
-28E05549C7575588FD72FE2DD72FD72ECAF8D81CE40A818A655875C0B4894C23
-C3A2E904FEE3ED5473091A41D3A209B818A91D6F1B41BF8E92A270FCAE2D7A0F
-FD60F2294DFCC98D65E33AD49E462599908E4DE5ED7E10BCCEAD3CD5A0B380B3
-E2EB703723E4DF58B08F92BA0293BD16FACB5C78B9A1729E78BA2B7A89572709
-9BD8806875F67C87CC1141E0ECC1C6A4897BD31556C81FA3E2F1E7A568531E6B
-81CBD2DAB4B86410D615E8641F8064FF925171E54E165F33DCFA5113AFAB1E11
-C0678CE2689C7CFCCCA3EAF5D84E715307EDBC68FE1703BC6601E0BDFD4D181A
-C6D7355D4D5A6509777D97F21834D834D905F58303433A49AA135FB8C7E7320C
-24552D6F7E26065CAF3EC1BE08D14C539CB5787D6F119875F18ABBEC5B02D9BF
-CBBE4C315C7773DA59178EBBE098919CDB2B93A3DA0113CF5E4553EEACD7D937
-D092CEF9DB58D3F69D577CA9C3415C710CE46E35D6B252186EF35D59BB97492D
-496192F8D8BCA202442791B0B0A7149AE9BCE292AC6FC53B71D5F8349FF82C81
-91684F71BF4CB9C72FA83B1E6549FADF452B3CE23C6DD3E788538AD9A02E702B
-54BD07B019930E70D793BCE8E83475566B418C27352E1B7947F9E46BC0E5290B
-7AC28B606FB74834085DB3ACE48669824239C4C85AE31C385C4A747E91EA352F
-E6CF035FDC13E146F78A06CF3D1DD83DCED5B0D10760E3A7273AE3172B4455CD
-3BD17AE58B6E2B2D143AED816423A5DCDAFE0532E1A5E7E8CCCA0F3D4D3B98D2
-C3AB43FD353E11C880917EE3189DDE2C1EF5B0E613303BCBB31183DAE43E06B2
-9E8975C9CFEF26E225D83D6161C80FA6B142A3CBECEFFD2355AF6A2F9C590EB1
-8FD3320F35150EFE4F96991345A1D430BCA481C86EC5993915FA62731A551E5D
-B680D4BA1BD02388006737C078F4D104D6F4D38F67F60EEA66C8AF2CBD5CC158
-B342D6E992518A73CF14856DA38EA231FB26A6BB6D0222F5089712B721C80E73
-02051D4DC608B394B2712362EEE267B5FEDCA41425981F8A746C31998132FA2A
-11DBC1F88FD70E24ED19816541549859749854AC92E7000EEBEFD20FFD090D4A
-88F4F27FB18D9E951827E39837B26B12A6C042B60257CFFC9195B371A1AF8E09
-32C39E5B183DB4207C4FA28BA0861A0C4E81C6378F575D56AE2642F46E33F460
-A6293898DF193C8AA496E3800FC23AE3B69463FE9DC9D8776A83F2086DFF16E4
-D5C41FB0C09F1DD405193DFBB68A5EA027E034C69036D40C7BECBE1C6EBB13A5
-1AC11FB6075C973A0A50DA0BDF3E371F4451915C23FC1B1DCAD3085717E6F190
-088A6406038C39B1D8E5AC6C510CFA62222E079A5F94DB168104F4AD2D97253D
-7EDFD74115F05048D4A02AF14202CAAFE8F24BAC11281B4896AFA52058BAF641
-2645E49EE964530DEDDA4FD27FC52ADB572722E1E8CCF51EC924213FF00EF0A8
-0BDD64D37B8A6D5EEEFE09DBA2E131A6EF79625983D31717CFC77C1B8B26EC15
-83ED97C8543A876B22D31EFB2A33F7E6FD2ECD86FF9D428C800E761E49AC8A42
-39BCA596FC08EF4F36E1167B1E9A4391E74E38EF571A2C302AF4C249A54A8297
-C4FD21781920A37057A39B11114EA01A605D249726A950AB9CA13742904614EB
-90EA7993298FF3759BFDE6697E3527036C4B8F37EE3D77BF6DC844E3FFE37161
-C48ED17D1376ED07B8CDBA21F5FF282E1960C5F28219D8B0BC110E7BA3E19C3A
-52F42215A32A050A9E7479065B1FDB644FC88F615877D6A78353945121DC3552
-3F821B76B49A45B668120CC59C1EF57BE66CC57CD0311D57DDDC160872E598C0
-3DC70F7294FFB2C3FFFC14B05934008892DCC197128D644E77767AA88D86FAD1
-51AC3093BE3D8B801C36F94444B23EC3152C3DE0208D109BBE9DB2C632C4A425
-5E49049D29785AD20C3FB106CF1AC5322F33177F4BAA9B5D4C86BBBB5374649F
-83E7565448E89FBAF449922313E96A0C7C0AA2279DED3EED0CF58101DEE159C5
-92DBDAD0A4EDB2FEA9A8CF30E41A12E1E426A92743C7BBDE0EBC948C9CF07AB7
-FA41FC082F303281BEE558A79E3E77B31C752B2840298222F218D813CA7263F4
-51488CFD1A57D7B00FCF5F246CFA7B6438CC0A0071148424D3A7114A358F36B3
-71CB463BB9212F29A5289D0EFC07DE6A4536A030DA9096148ECE837611D1AC32
-66FE24CE590349E3ED0B7DAF61EBE669689B7EA383BB8396A0662C6B7DB61B09
-844EC6A4D0ECA6F09E1D7B3C0C194EC7203DD92D563CD5E4578112B5977C9B1E
-ACD4DA7A6388C0835D021838CB190C1C4A0C43AB7DB4F53A511165201BD8DEF5
-CDB21DCEE81240FE961ED84FAC75E1A0C834D0F07D22D0A30F12126222E51C31
-950433A6EA3DE6438E09724BCB18D6E54CEF6B8B058D1E43409736B7B6BD7D99
-1E2390FAD64F6693F6F1DEBCF5AEFC0DEAC1800CFD326C61A5DD28C269F29F84
-54A07482A7D3F57B789D5597FE88BC127420CB07B3B926EF18D385A7A326A2B0
-87ADE9EDE8EF8887421E66924001C11325535E66EE4C351CC07F878550B5BB7D
-6F3FF0178E710D1AB430A2EFE9ACAF098834059E52D687036ADFB3118F20A78A
-28C559EF84C6CB99087FC344888536F3992571426A9D9F41C26D46B9AE842A7B
-DB9C9160D33BE70543B73BEC74D164E780EE98052D76C2AC8984D0DA790F775E
-6D65AE5C896E2D1A9DBC6F1B9BDA40D6F610E32B4BC21AC198E9F5CA5FFBD93D
-AE97C90881FF85E9E12961B57FDD3103B1EEB05AB42507EA5240A9D3A45714E2
-F79C63CA55E414218EDFEDEE8B782BA3E5D66350AC0F17882486C577DB57BA58
-9B1024388912484C6BF9A0AC48AD306AF2034E7260B35DD6CBB70D48AD716529
-5742DCA4C092EB0E1C420934E7317F0BED25F7F5E190FB708F2CE4AE0D14565C
-D1A77BAF88C75FCC37BDF41010F5D3510121B92338FCA01F4464B178391B5C95
-5F1DB500644C369A7E678F2BAC5FC1124DC7D457376F955351C060D66B75297C
-3D0EBB38119D5F9A930E1063B7DCA33208194907197635F839DE10D98A5A61BA
-6638ACC396C609DF13BEEA0264D39E3D4FEBB8598ADEEF96B0B1BC242ACF137A
-F18B6363ADB7CB53BA96EB2076C7387F1A70C6550A5631B398392DA54EA178FE
-DDF58D0D1ED403F88489AFFBB86C7847DBF7F21BE25847B82DBCC87B46477839
-BCC43986721734097461B8C6B9D0BF2B6EF3C15D44885433D2842A5EE41F2075
-DE45DBBDDA19BB853D41142E1F55B2245ABEC6C01F3254357593397EACBE6A3D
-4956A31982B83A688E0CF2F7426FA7C48DF17DEABC4D213DD5DEC551EFDC7218
-28A68B9EB46AF707919FA0C06451FCFDED1ADD901032B2D403B20D6E8F63E43E
-35591142FBBA5F13299E1C17D38A36AD3B0B89EE2A3DD3BBF875FFFEED310D68
-FB7734479D284B2C0EB236E23202E1BA84A243593E213112286C032D6BE17238
-0C078B117E4B25AC190D251C1ACB6B933C387BF6F02F2DFD8E7B237B52A1AA01
-8E826235AFA451E3CC27B40D67931869C8C0EA92D1E08FC9C546C24F60895113
-E9218BBCB58BF09F9220FFBBDD1B1CBB060B5BB3AE83501A79A78BB15D62B87C
-031435CF68E4CC06593B3B3C5078251F615EF33FEF992E75F84E4D0B6769F73E
-E045A2A6B868AB740A5DDF2FEB58BD2FD74278F9C551522D7E5C722C9CEE6EEE
-D00182BF7E5E2C96058D5FB62D08AE837C727A147DA3A72B7C5487AE97C908AB
-9BD6FFB71D1F69C903FDAD725BEABFD77E775A451B7EEC6881D18D5748E81EC3
-54BC98BBB1FD5BA0E0189445CD489C32BF42884E7964A44054A656921857A2B9
-7A04681CB650B641E19CB6709F10815537F88C9BDA1B55D77648643E2915D2A7
-F46A6E9CBB8874EC1240EBE59C91A99D484DEBEBA60A760DACB8C4BD004547C5
-97FB6384AFC98CD9BB053F335A28A11061CB3C6331B61A9AD32286D360D0DCCF
-4ADE09AE98C56962017816C3563BC9D98C38CC09B1C11A36C17EF18E9C8FCD55
-BE0FD8965DE846D2AF3025861CA5A7C19C2E80CB74F86CD53E8CC9DE6BE3BC10
-386D56410A624BD602018985FA9C49730F20D19ED91BD77F29BAC81CA59ACDA6
-CF14046FB202FF5D7A20D3A46FA47D7D7B85B87B18353FDB263983D9501F49B1
-7A6938C305280A288A18B896725FB13CF0CDC435ECAE7B83428E5D60B6252082
-38EBBC2930019564CA04B7AC91B949ED72EC204BAFB469F56A69A3C1C4326999
-E300C14341F9E836005CF3F1D73C67A459D83832300ED1E6C3E027B828F39C86
-53EB935D1D8D8222144EFBED18CE0548FC8B0996B192D92A69001A8CF42F5391
-7DC08F94FB9DE42AFB9468F27A1B6013E86510A8570DE5743B07B069FBA9A38C
-F923D368622DB5A489A7B7E988BF8A7367B6E713FEA38726CBFE1A3A716B9BFB
-6079389DE1341CC21795033C8AF45ACFEA4D61EB463CC92E543EB7150B5C009A
-6DEF0A41CED12566968B60527F925ADDCE4C13F2046DC05F20201D9F5BE85564
-BD91E07D49C8EBD39BFD36CE3D25B3823FEFAF33783150B23CB4546E81BE7921
-7E7F3988BA130605D007BA0D32C76F4182628AE9C77F5BCE45BE41ABF426FDEE
-276CF14DCD5DB2FF86757BA0FD92C09D343C20E2D28C90FE748C49B5112F34BF
-A7698C19D54FA504F6DDD3861F9199E9093051851212C61071BD7007E43A3190
-844B5DEC290B844ECF3723DA15F60E49D9BEC8B2D1C4B757A35819001FEB97A9
-EC1CDB6E0A5C047EBD0E58118C1F4AC99ABB99926068E157367D91D2D45B580C
-D969FC8F66C4B195084888D50E99A1813BCC3B2E137FA09BB94C96F3CABA8A31
-8DEAE7E321FBA6BBF275E7FDCB0A9EBCCAC180BBFB8278854047284F3B4AA610
-D8D6C8B944BA4E336D68E3FAFC62367EC250213DCFCE27E0B88EA9E85CE24281
-BDC1FD6101E5C1D85F6C16A6F76A529EE35B53CA3B49F612C005AC54DB9DB8FB
-B1376B9DA3B5EF2616A005C012112C7C10DA19B9378A506027E493480D441493
-764D48AD4C8E3CC115279F3687E89D87156E3FB7C062411360B8F7BFA4FEFD03
-6310B69D83D8322DB0E5AA6218A96BBA3DEB66FB67C22587FCB01779F21B9EDE
-2902AE0DDD9FF27D9AC17D5A6D0967A02A20CEA11EBB416B9C2C91D1F70C485A
-39D7816D9B1E573C3BE6D6D002378C5A220CFA7ADB2DC09D9C4A1DD38D06BE06
-AC204C44772FC9BA8CB5A7AC8E927A152BB4EDDF4528FA2D36436CAB54182D33
-6205FAAB5932FC8FA1EC3DD1252A4C947405B72330C4418216D136C4B20B96CF
-22CA8E2B471325B294C61C59FD32E7D2C148F8565DBBCD90B66FA40A83D4AC60
-AC9F8DA1CB5D4E222C27767543EA86D83C3C66C8604A4FBBEA67B6833065E014
-04DEF898EBAC3CD067C2E706E7D1C68F3A236EAE478040B730CE590ED38FE340
-52EA7C1844C49B8911621046AB717AE6FBF3719F7941EC91235F21855B7FBF90
-62C8F23BC153B74FA398F7ECE19CB38A490E534700F97E64984366C1061BEDBA
-6358B94BD318574792A1D00851943BC899B60AB66FF8C64AC97E925AACF493CA
-CF1E2BDAC575E9EA58F82878A5C531CDFA79329DAF07A5D1FEEDBF771C205DB0
-8F7FF003D0D4D382F175CE5DB7BD66FC2D4025FF06C96B99F37683D32B76D83C
-4E4EA738FF8B368AD737273A5B5270C705D8D1824D1D21A8AF0ED7EB23619FB8
-177A61E80C32CFCFD788B203F05B3B3B49F76FAFF5650CBB65FE0FA2FB5D5282
-172A2835ADBAF0B9BC69CDF82AFB639285A250ED1340182F0B8A7CD3EB6E481F
-B1479530461DDAF09C567BF3A814A2B96F4681FB1ECF0FAE7D75EC91643AA71D
-6A129F07276A8C7BACA7D0468CE0386D7667DFE04B09677D502A05C3874586AA
-DAAA13ABD2FB93B8F92F72CA2F38AF9D643F0C1A7786A15DEC80F3F13DC2EB0A
-956A5DC1211D02E732476EFB7D999C63CE53B27759D7D93B47383DB234C4C384
-E5E664206B8C833335CA6A89730543071E483CB92DA30755A982E25E1A268AE6
-D1355E15CA20BFD7B9EA1F89C3C07F0EEDFDEA65F8A82C39BE3AE22E727D22F7
-C8DD4788497AF3E6D9AF79471F575F989158977D3277AB36597BE0EC8347DD33
-BF0D93288549C90642004A9F969893798F93C1EF3C7A6CAB9CADEBB6787C18CC
-2232972AFD6BBC6317FA46765FA74DBD6F1FFD5491E0E6335F0D08605883DA1D
-9E3A80097856D540B61473D573A9AF12B79AD066F09B2BAAEC9E46CBFD1046A9
-1C07FD78B5C98E0F9847157361293ABBAE194FA860141A43482C7CA75F781351
-E762FC9E3F892735C496DFB7045E86C7943775D96ACCF2DFA451089EBD4BA12B
-DDE24237724CA3ABB3AA061213185206F058C2CAFDF35535C1AB6EB38065CDFD
-E57123DB9B0C933C6796B59DB405093C8E429A0511B6A23D2A6FEE64DAF67F99
-0A4B3772003EAC01BE1ED68FBA87079D0100BFBE054A3EAE2CAE8B01971FF85E
-352F86A1A29ED975D4D69C748D244345E7486974F0D402ACED2B7DAD1E1C53FB
-A029DF4E5CBFD64C694B1D911E53900A38DFA5FBE785D35A2595BA71D5209E3F
-803726BC42832EF1FFB227F6BC5691B2DD989BD48CAE99B4B69807E55DEEE2E6
-1C2E43A3F90F08DA4049A65C2EBB68AB37CE0AF7C4ED41B27BDAFE3D37E982B5
-17CD994BA4F8C064FBB1C4D477E177371D0589C4078CE74A1DC6BFBD2C76C8C4
-4DF12316FC2294A8C834A2A1AB1271A7C3CAF90507679280F4BD0C6FF1121BA7
-45ADFA2BAF226982DB7781A96434FA8495F971BB17475C7CDDD134AA6E87946E
-EC2BA6AE663F4317DB621CE3D2644A5B3B5F577DEBB33407D13D5BDB873A9622
-5E0F138FF5EED620E4ECDCFC4BC8D43E46BC62FD90F59B06938D1405DD8F92AC
-7985F4DBE35AB0AD927A7AA1AED8A3FCC9992B89D9CF9EFE02517A602C10CAA4
-44C9FABBBF210F406B358DF144827E04540B47B01AA6631DF583A36A10944787
-AF2F517BE8D6B8B43C4A97F49132467F0243735AAD44908C4FB05137A7374EC2
-BBF2CA497924F050E7902E06785CD6BE7550360283D231BD53628F576B92B6C7
-3A67EDB5366C3DD053660561D5EC2C7D7337E4A89AE89EE9F2ADF4D99A75ED5B
-78C496422AA1B58B8ABC81F5AF8BDA7A3C65D221977FC6EDBAA2E98F26358788
-29E0DC0A30527D64CBC82F2CCAE18ACCC1B2A64DF31030F0F14F233B5306D623
-DCB30263BD18592A089CE4C2D0390126741EE14F7558ED949D13DDC9EEF0AB4A
-3166F740E41EDA16F729F76E42DC1D18B2EC06D694781851E9C9ADDD139F7768
-627A1D4BD88C1505F31911B1BF4AA76BF6866EF658F607EA4272095480CDF526
-DD9FCE4FBD76AB86C887FEBD791AC89EE99AB5A2903FC1D4ECDBBC4AED1E2568
-DC74937B487A36FDEFD62C230258B15372F25FDEF0B59A482A6FA149248743EB
-ADFCCAF718FD9D6B8576F8DC7DBBB96DD1FD3AD502F6F9FDEACDABD1A9D54290
-C3417857F1818AB3AB34C1BAC6BD65D7A1A5B3480921E9E48546BB99D41FC796
-D2D373042F1F4A796F8FA1AD43F1BCD937534ABB4BEE3F1BE7592C158885353A
-C2DF29E4E95EE1D526A064B5EBB9C5A53DF45876AF31DEABCEADCB5E4000497F
-7A0CE6E11077A22DA49AE3416E9B3EA88F151CA288979D90D1F5B9CEC9F1B36A
-7D5546E3B317556F0CBB4375AD06D7834A2B16B0F4A2BC18B3775EF4817CCB4B
-51C75736D8E5CEE393965FBEDB98568BACC0CE59D39E0DB30D4D735566681A7A
-D7F39C19B682DC7B98B87772E9FDFF1A9848463EF22C76724B4FBFB5765DE1FE
-E57B45C65CCA8150A80DEA255943EADA2DD043C239AFFB5FCFB187B763A3BB27
-CC0BC3936F5E9F833A745B3FD079BC7489104F77880229227F07B294BB9B14D7
-62909E582CFC20A5C57CB42D90863F4B7A2BC6EFFE6CB02490D1E1953C5C5B77
-BD5A751FA40E2E681D55AD39F5FEC3D1B564BD77899552874802D7E7C1236388
-07E672122D3C4591E895B2792DB4E265AC250D2511AD07E43490004486C43471
-38FB164E23466689B3CBD57555E84337B5D7F0B809B9524CA5AF7D1406F80EAB
-C72BFC9987447C62D70B4D88A54A6B8BED5F7200A00F59432CAEBD1120BC882E
-82CA6223D0F60FE03319260659263AAAFA9A309D6B87A926821520FBA6B269CB
-C0245426B25DB5B5C9202AF788D8CE53F20EA1F18BB16EE5373AB5593AF0BDA4
-D0BCF44B51AB29CEF3295C3CDE1A112043AB47F05812A5FBABEC2FBBF404C331
-BE74B93237561CBFB1627AC5883F56EAD46A8B2132E352EAEFF95D79A9C36731
-EF7DE5EC66671E4231A6784977C2883AC1597C73E047FFCF49D0E16E4355A8B6
-60EA0698EDE972C32F0FD19754134B5D83C3FDB82D4F8904DDA62E22E2743A89
-E79421A43FCAB3E6FF90C36E5A5B4F2FA2FEA6D0EE41AA3C44B727AF545A3B45
-2D931C1BB522CE068979A7DED0470409E7999EEBD6C58A1F1909CDD00ED2180D
-44A271811E80B3950222BA531719FC4B0ADB6255BAA63787774E2947CCA6519D
-E51D71A2ABD77B282CC8B4F8BAD57ADFED6818B3C24ABE0E668AB63CF2F17731
-2F7C7A492A47EB38DBFAC5A36BBA799375A4EDDF6A0122789BF6F58F8EC9F0C1
-49CF01C136A792BE4C6118DCDC0675459ECCCA754ECDA9D170708CE58A230DB7
-D753C45E7434FFE711AA5DA45393DCA8B5C8920A95C94F3B89776C23B53F70BA
-B6D217CA58C551206918303DB33B6081E3391F10DDC5F58B1790028AA2150AFB
-085185754358891D30992FFA2C23DB2A04521107101C2B52A1A168E2CE7C85FC
-37D32B44FD1DC3BE4B28BBA9A9F91229C79997F5184F5E7143C838FDC8196C52
-0B33A375B320A025180846736F0649DCA8FC61EBB6CC1974A4134EA26E6F5E5C
-A73992547B9A4E6BDA10FF2B41C9215F2F9AC755DB11C1CDAF34396E4B92DB64
-83034FC2023D846B33DC7CD297527F183540456192DCF23BCB4A1DBBB7A2ECBB
-D938F9F3C03AA46A1893059A722AE7FA05CE716AC8D446D7F038D6C72C172A5F
-05F91CB5FD5427E6C156F126F6B2014F97F5792F77CCDA6A802CD7E3405FA66B
-E32EECF53CA9071D1EE20AAFA9AF3DBF4CBD250650870F0B9A3923BC4484F349
-EB072F3244C98AB39B6F708A4A52C0EA243DEB4DD77BBCE573A2E56323A18A0F
-504EE24F90A29AFC5FD3002749E953E1E1E6E6E8989A029BADA9CA0A261884EB
-C6BC3BDE99849D6F05D8D1ABAF82A452EE116463444BE4D3DE38F63938BF69BD
-10EEA7C68AA8077F412060D185E4187120926B4B209A74497A3C9065F1BAE8A3
-C5DF1A6A01349D7E8D215FAA03677C682022A26D3179CABD03A0C4BC6B303BFF
-BC7B3FAF26B96747A840C12EF14E16A2DEC76B243519B53E04038D3FB13A2C24
-B531C3147B51A8C3623F4C161B4097364608D5871A29006F7ACDE5ADA1F82C11
-11BD9E2AAEA52D352D70FA4C94809422ED65C03C4A72DBE2FBF26F4CEACE9DDA
-F6D895413EC28F2F61F40D67AB8798DF36773780B292455A689B4B70F03D18E1
-EEDF66F3C5823D47156B6B2D1A1006C513FCCA31D101DEBD474E72B49B664F35
-86EBB75BDCCB5F4AF8B583B835449F7CAEE5E97A819AC9ECEDDD6AB2E7B326D2
-A92F7568D8301B1F1485F234B32632E8725F8B637EEFA1397FF031342A03B602
-815005BE674B52CD4744E20CCD2DB8F7F58D0717FCDF04001101A51B0926D53B
-BFF990D7B01091B64F85C9397DBE3F48A17BD2584141B3229CEAAA3F0546EC6A
-4B9FBD4EED3EB6F78F8FE6D342B13F5BEEB210E4A527D83B9354A085AC87B359
-4E5DB704BF8363E95FF526A56182093FBC89926FA47D90178A91CAA8D5A73F2A
-E38BFCF454444A79EB4AAA502292C08166EC7CBC37014DC7DCEB4DDDFF7B9A29
-75A5DC4C86D19B4E9901464C7E81F251DD00CEB0A87C6DC15EDE276E8976DC6E
-77642A3B502A160CA2AE5EF55BEFC154602E96F496F7A4D2F3D345F51B28543C
-DE2412AE9C332C5141F664C9B5BA61806420359A29A473E0BCA4FC49853F6622
-A6EF486456683FF69DFE32EA117216FF797E3CFD8C4FE436CA7E1AF5F91DFDD0
-408876DFC19DB1CD9EB2CE9AE76EEEE3E73E0F37BDBF4010B581C510B3DB0CA2
-C340B265B989E1E682B4FF9EE3CF10B9166604FA8262B123C7333E91CEEC975C
-80D73B4DE4F9A065B1D86A040B69197EDDFC955054AEBED3B93C9EE76A139D91
-D8F1967EC2579F6E111AFCA78FDCA67DC154D4DB3CAD540024BDCAC2A28537F4
-51BCBD448C87549379CE17DC363254735D586FC39A5BBCB4EFE907F37B4E9842
-12BFA21977D0D519B0628AA31C58EF538A78402BC7611FFC01B6049A8437D319
-9A9A1375578B7D36F14F6A31E2717F1DB8A55CB0624BD9BB4ACFEF4594715AD3
-BEB006D593E3D0FB36A82813A39AA70E
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMBX12
-%!PS-AdobeFont-1.0: CMBX12 003.002
-%%Title: CMBX12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
-/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMBX12 def
-/FontBBox {-53 -251 1139 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 44 /comma put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
-0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
-2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
-1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
-42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
-FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
-78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
-22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
-A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
-4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
-4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
-95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
-9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
-5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
-9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
-CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
-BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
-9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
-EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
-D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
-2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
-947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
-0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
-4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
-BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
-F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
-6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
-D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
-F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
-481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
-FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
-419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
-7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
-70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
-2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
-0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
-9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
-C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
-1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
-A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
-21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
-7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
-17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
-30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
-3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
-96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
-B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
-1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
-57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
-B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
-8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
-8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
-B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
-BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
-21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
-D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
-FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
-A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
-A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
-A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
-DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
-7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
-07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
-BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
-8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
-E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
-B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
-45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
-2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
-5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
-A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
-5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
-E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
-5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
-6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
-8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
-BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
-9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
-B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
-B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
-8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
-595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
-FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
-13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
-FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
-DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
-313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
-C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
-F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
-DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
-8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
-E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
-A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
-C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
-417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
-19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
-9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
-12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
-3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
-A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
-90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
-3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
-B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
-82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
-1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
-AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
-9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
-2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
-99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
-31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
-3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
-F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
-70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
-5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
-84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
-BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
-8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
-5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
-9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
-F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
-94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
-0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
-E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
-7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
-596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
-F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
-7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
-1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
-AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
-4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
-744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
-67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
-054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
-6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
-8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
-CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
-EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
-C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
-57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
-5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
-C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
-CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
-848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
-B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
-77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
-87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
-3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
-409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
-A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
-72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
-99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
-8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
-E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
-82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
-C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
-EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
-23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
-59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
-C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
-1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
-403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
-1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
-75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
-0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
-82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
-C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
-A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
-9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
-0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C
-5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060
-62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D
-6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E
-1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5
-648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1
-FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6
-754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A
-E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE
-E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4
-0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61
-CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05
-43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624
-2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30
-712D165DB6598B1DA7014496E3367E39C2B1263ECDA94AF1363599B3B91E3345
-35E38C1FAA3A2254373D2EFC8A090D9EEC1B9890886F53064FEBF025DEFF64DD
-727DDCCE1946D6268F7C1BA2A29C4D2EEAF3464C06966889A2A9474A48C998B7
-9FD37B0F77BEC0938C8A4F7DC2F30D810934DD9074A0D4913252219B1705CBAC
-670A7070241F1EFF0C74823ACAD9FA869819B991B6D673547E7AA858675FEC15
-4E4790AEF4FB6FA3F8A300812A9E42A84A1E5FA0C32CDF7432717B1B7A7A483E
-D8C59D0AF0A55325EF895A8CF09FAD951C4FA994219F6954E79C036C4F0DA60D
-759F935C5AD99856DB6F328F1DE82E6182E6A2623FA9EBEB12439F4CA16EDE63
-C435C266CEE4DB3DC956A4298E32FE7AD1A1D82919A2D780ECDD3A9EFD11574C
-2E17148C75724C96F6806D9816FF74C1ED53860EC32078E31235F1F0726307EB
-571D3D1051B1DFCA062172113B368DF7F927E25B8B5D5C903F954694EA680AB9
-5A7ABC4F9811ECCC659600935A2D2B417355CED0E9DE8BF235FB36DB6E4EA73D
-800C7241C3425690CE532B53686707C645B40D6E941BE510C80291AD80F2DA2B
-F4ADCE3CBEE1F8CCF8749E97308D8A3073A64B3CD76EE03470F63E1ED2CB2322
-8A8096DDF82AF8324B2A3F80862B1793CA077D2CD22E0944FC49D24570FA2B21
-EA42BB32AE43705A0598CD92A5D655BE65388EA131384900D8B4685BFCE716DE
-71FDE7E6D31149AFD27E9E5D06B8C065ED8FF07F5BAD5BE43F11BF9B9133848E
-0FB1C843F0760B43B880E2F95BA5FAC887180BD94FCD6D373246804B4F707E6C
-A55EA48C62FF983CE5B83DD415E6B3199F9F79B9F2E18F3D81A2E50C067C8A16
-27AD4655FCD22787EBBBC38740A6A0C96F1C5E0612F75A15F13DC8CE2F1E888F
-610E3A828DA46E7D6ECDE8CE3051B85E0C570AA0AB2736C44853515983134AE3
-09F3A196294C6B1588D5101DD81DB9130B9EACDDB522BDDA775D909B05A0FB5D
-4BAC2017418AE9D268458B7859D5F6719D6FF1DDF6F3F1771058610B2B1A16FA
-1429B29491E4C240C70462CAD84EDD453B92DAC60CF9787F7EAEDD20AEF16F02
-88533ECD8654FC44118D7109E67867D4B627F2C3E5BACD66F44D55B7DE146094
-462E3EA9E94018CD6B679E78A506A412F6A63224F5097337B1EFA51AE58E8DAA
-A77C7108462A4D76C4EA7217892A27D761615BA12EC2461AD67393CE6FB3656C
-86EB58528BD1C2AB9339EE79C99363878B2C2D1B0F878903FC334406FFA0E2C6
-21C7CD68FC90E302B9D4D12E4E1C316A4DD68408DEB1A969EA71CB7F9D77696D
-B05E9D7A5F74A78F6148319CC1266DECB2C3DA32CE22BCC9C8DC3DAF75DE40C0
-9EB284191D60B67ACA3B6BAD432DFCBEFE767AA7905D56E4D6117C880228108D
-E845568849BA09DBABFBD2A66D39534824BB4BC38F4456DE7D352E0322B400E1
-95153F5C46078216551C9F9AE4FDFE0DDA73A683E7F185657C98548A8EC0CC14
-2348E86CA5898D92B737ED43782B68A04D6A87556CF22A2CD17A5460F479AB41
-B3EBD3CDF3B1EF9DADB4E47348A5F2BE83548140FE6D3FF4066DC58EAB1F0564
-C58DD09B22920000B72B190C0C9E40D1E4F761177967025F42B028404728AB26
-7667E6B7FE7D96B736B0BF95650C3B93F9208C0319870D0447C84EDDD311F2D1
-B2D97834F9B643BA80EFE63A822A47B5069F7527244F543C9B335AF37601D0F9
-0E5B4AA0786E9818F20B9D30F1AFAF94C946FD6F755303A1DF9705E2750F28A7
-9032C8BD5075E6544736B27D19088D2EEDF0B15587792D0CBBF16B0BBB8541D8
-FD843B5EF247A5789C2131A46BBF89A146F11CE1B2065DED3BAEDB7982DABDB0
-96A5BB14CBC12B0E82135DDA2E514ABEE3986A64E1FCD334F62809DEE57C3CE8
-4F7149AE9D3CB21E272F62F093DE1B92D646DF2529D415EC0C9F7CA770CCC88E
-228413ED2F3875B8591C7A9A93C84176E16FE8A23C751014185DE91EAB2BFF28
-A6483034E9D6BD5A0E4579429EA264E8563AB38AF47FBEB47310EF1CD1618F0B
-158C0281F7CCCAFA53EA0747A30A76198B42F83CC5A8C4CDD3F21EAC95962683
-9636663952CD428830AA9764A093EABDCBDD8E7ED2F9DC4867B0B7856A0DEDC4
-501D79DD91A829DC0F6250EBC447488562F2DDC910954B2A064E2DC7FEB6D61E
-3BE266D23958B761557EF7AA4B13BEAE7C175150582561423EBC7DD345EEADED
-9FF13E29DC064F3CB241DB7C15DA5BD4ED2E4A35C7C678CB3CC968DA32D7E462
-5A283ABA6A7C37CBE6AC3F50CDE010C5A58597CFA0D6F2B18FCB7EB1F1F4351A
-238EFD32DE3C8669030B448A17D7B8DCC65D4791E86A1356982C4350D3BB7C98
-48E7084DD80FBC46E8355FEE4E2843F0E380A2E0DA53DE95F17ECD3439C3E8E4
-5BB55B66A3CB5566AB01D52BB475A23CADC961CA7434A5C67112F872111DA282
-D4B54B1D8AF177FDD13BDC58E23B567085138423BD1383ED7FE72AD5B4488E00
-81939745F9D5EEEC314C158B2B89C96160CE1157A97DF95966E68A20D7C7D1C3
-1C0DD39D2B32125ACACD1F0E7031024C645190BAE4017A0EC71A457AA7BD8FDC
-A046D20573A2BD1B1140A55AC771D9F649F59C8808242F83C0D0E4DD89EB9A01
-F6004778FA6DCF36C281A772D1BA8951C4FB2C4008331C86962ED087B35ECED2
-0AF6D2997C8A54185EEE781BCE2AEF2B6048F83565091AE2D09E586B6B873263
-7968321C68E3FE5F769C954E826B7AF6443DF7C85575D0198BC9D1DA51E57659
-4CB4E641B22EA1C0F5271CCDED2CEEB62EDBFB50C87F67095D5433BB06F9A2E4
-65FA29E817A77EB3EAC6BC204DC698CE495A9258D396172737E0CE46A0B83EB2
-5AD787FD9867C417FEAA6E9A2B82A45A1C113CD61FD52DB3DC784B8CA34B45D4
-5BA4A51926490399DA34AFC6EF914D03E89DEA7E8D29E3A08DD7446AB998AC00
-11E38EC4CD4AC0CC5443EE9ED3FE03A4A278F2BFDCFF7A329AAA92C197877638
-F7EA2CCE9B98E138A8A29105D3FBE66558C38895BFADC76513B92AE600CA52CD
-2B3956A59AE3598AE3E4771F88D44C53B8BC449C9EBBC24CDF6474BCEC4CFF67
-886EEB78E02D0CDC70A8B57CDE753B26F82BA6A2715658135288ECF075076846
-0B2EF7A1A8F85370FC569D9996B2FE538BA27409D3048ED533833B0C38F50681
-069E6B906E338DF1A95EA7A207376B5760D0B97C6048E81569438A42FDFA0F5F
-982B146210B9DA0C6C6DDE7E4DFD1F82E5BD3C7AB433376459C733A45B100245
-3B5866783490B198BF8FE1E584C8AAB115385CB8EF1BDD80440A55618BE07866
-991AF27FBCC24BF1BA2BA12C383FF1AFB9E55BF595725DF2BFAB550C24E78D72
-6B14E4D06A56F56F4F9B251148942B3C1B164486CFDA0229F5B7F7C0EFA1E537
-7DEFA36C979B689C1176354C30CC71CD4F0BCD57255910083F5094DB930A4EDA
-C7932CF89109B949A0BEA607ACF8D3AA7A776131DBE2107CFBF9B01B36A94AA6
-30F3DFDFC9A4E45462CDF9C4F81809302C453CEC88F6A4BCD6D7D8247CBB5401
-75249615C893B72E59FADF3218D8EE1F7C4D293117F5123F7E32B5C5A661F3ED
-ADDE9B641E4621E7799835A368485A9FD6DB7AE67C6B3885F6897B72C6913566
-6C0C76696E2B9AC2363D2ED40B1BA1AAD0F057E08084520D3CEA5A4266F1C930
-DDBBA464B2598F52E1AE4DD27D3531DF8AACE18308F4F6CA7F242C28385256D2
-532A7274D2EB76BC042B262791FCB22DFEB88B58A05BE03B7544903D3286D337
-FB76E55A88075085277A3C575C90BA6D9E32348310D7DDCBCDF0A081B4E1B0ED
-8B99BF5E7DF1163F3B29AED8E28A4411C081260AAD1886928BDCB86FCD749BFC
-1A1CB0FC67710782B39DA2FA325B4268976AD25FCCCAB6C182AE32D875F9DE40
-C80A94A879B57E0B2F837B97431AB798C96D701E54F72189346DCB00481A5824
-1F97C835D74853A10DB246FE1439522612511F43ECB4AF09230A45A481E5B902
-9F4539F15C3FB2935865E926E98E2302B33079748D5766A5FE5DA049A1B9DB0D
-6308568B14BEC56F77C9927CCF0F2E8CE7CEA50CC8631377C9528A0C4B74D83C
-719C42B43ACA8038CF9E5E459679CE792C7B139DEC9EAC296BC6477F298A947A
-24EE80E965F698545EA273D248D4DBECBEBCE1E134BE54C152A6AB4995C1DDA9
-111A90359B7E0E5B2A988A23BD4AE672281C8E4AEA7EBEA28F24B7ADBE1E01BD
-1D04D26FD410402697D836F44E933843615D845FA80113EC9CC7A69F4DB42B98
-6D0CD2E16FAB1658318B8A97A1F34C988784C75AAE519F3AA7288796B3D12095
-84301CFA059C88ACCB48D48431D0E9522D2495B690349CE3B483C2285EE1BACE
-D6CE67E7F3A21BA39704724F864DA1C235DCB8DB56098565CDEF44E305AB8628
-735A8C82E7E505FB7275CB96F93365A19A271B92D3B98F4788140106C52F1940
-01DE66EC903EEA626B750178E619461F87A60ADF4FBC973250EA990AA83B2ECE
-273DDE3BB1365E2188ED6036407055A86070985E2297B78BA239072F9CE4E4EF
-93BD74E65A8E16CFF23E74ED2C4E68371C1B3C75FBBF229CA7C9F9A47FEDCF64
-B4FC65899D911FFDED2A22D602FDE54A5C2E1E76A614CA7BCB7116BC7E999E9A
-3F39606BCA2CE5DA129DCFD3BD54AB968E57CE2F8875C4470F7E698D9D6B32C4
-F9027740B601899FAC7D2006B4273390E1589EFC0D93844939EAF512A6F9283D
-5B79BB57CAEF154AFEFCD6DA55C60851F816E82F301EB50316436B40480CDC8C
-E89019440DC665025E354B4BC38B5845BE84A6A32189BF236495D0ADF0C8135C
-834E0FD078525A23A318583741C0A1ED8991FEE67A6B08B76F2752794A1D9802
-C1DC7963C44F094AB682F837A924DE22831B7CAC3E7F64F20D22AD2E4778084B
-F9699DF59CCD03721DE396B7E67FD5C96BFB4BC5444F499AAEF31154410C2556
-8D94D6959DD3995EE172CC7566EF0153021E08E0B729CC91F38B7BF99AD3E578
-07B364D653874D0EEF20C1BB350D62B486F338957279EBF6B9F1D031C8BE8304
-CD3824423843E184B750FC44CDEAF1FBB62647CFFD159C6FD0CD03A5B2B5C5A6
-BA96A3B3F2175E77B2503B7A31296C3800D40D08B1D05CCE4F4AD9C5B8517DD4
-CBEB91317E2897DD3A87F207AE00A5563A12F784B35067F7C5F90B0E759566B1
-F4719B6999FB99D4DBCAB822F414D1E56437E804F298A33ADC3BC529A4EA12EE
-0E187D2B42A39F5D441076C0172A3FEC9EC49E4B4B7D2F14A06030D729C4DCF2
-E95A9FC23833A7A552EB73CE347A708EA75833A66153B3597226AA3502F405FE
-2F0089D65BA3BD10B6E56D3D2AE1A4F0F57BB4E7D614692947C507145DC09140
-36A2FEDA5218BEC7C73B14EFFFD1DCED9C2F05BE603AABAAF449FF8274F63C8E
-B9BCC8EE19B6768FC3E240AC120A077985D7BCA277FD06B8443C4054B6E5ABEC
-65DB5B6CF2608AF1A35C0C250286AE6ACAC5AAD9F1E84D1554B703787DEAB48B
-B6543964A4C4AC2E10A6F52E585C3615BD921A7EF6FF05B56BB06F6C16870F58
-EF65326F9BC799F033FD4719F85E577CA11E20D52BD6A92A1459B54CD0FE1C45
-6022225FB9F637808ACED409924D2BED4904B1A6F5DBAD0BCAAB333252D9C447
-E1292928ADB52C414EAC5ED54461423F4A745F2ED469665686AA3F6DBF914753
-54DA90D47DC2036B888BB3E8C81BD96B6636D4985E984881B499631D913DE2D0
-1F873D57A48F9392565BF27D26B9126CABD10487328114DA1398B4DA422C28F7
-0F7CAC19FA6B2DAC11B14A4E1BA4D0FCC14C5581D90B100B617EDE37195A67F2
-6DC5371AEBC0A60D1E9E8D428C91DE7147E937463D3A83A5753FEF4F3D852FA4
-3BB4E2826F8B7FCDF057E81BAE3EA08B88C5E347A9AADF338541E6EC02DEF8BE
-7B759CD47BB9278B8629BB7596CE548B323465C7ECE9BA5592B48F50BD0F4951
-E844F5603136866A4C5FB0C77ED355E6A3F87446488A24862B1D40CA4DE8D2E2
-69F4354A49227A5E67A5891FAB0EDDCF3DA61D73F4B2D46455006271E2E0BB13
-70742CBBED0D47D41E67ACB89590756AF739890A55DEB3D7CD5635E0F29E9492
-46BCCC5B8ABE6338B2A6ECE693B7D122BCE504473B21AC6FFDB70FE1CC44AA9A
-61DED2E1DE627A05AA6AB2BF2F6422FE9289E11D89F01B258BA82B3044190E93
-FCC3F51275C66BC7AE817748C20E9219B286D4CB3FCD571C998D6CF54AC0D01D
-0FC050EFAEADFC4FB61CE293186009A31354B3CA20660A7B313FC47A7D539E35
-7AB260BEFE7E78BCD3FF014C25470192B83FD8EAB975A2F25F25F7B3DA8D3920
-9DF9BBDCBAAFCB8D1F9C266911FE077D122BF2FA2C456292022C06B2A96134D4
-03736C80CB87AA5739F79265B104B9B283887E87D3260A465A2DE3C094B54C2B
-A719FCB674F0C533B5292AECA87BD9E1FAE18FA59B527C9635B77A0C45ED0143
-BE4619A37DDED3C900D0D4AE9E29CCD4A6E69B6F411C044B62DF38C8E972A5BA
-F854FCFD80D9E30D9B90C31508D48E1A4CBAD9975AF4789777EED902926695AD
-30FE874641C1B6BBD9E1BB245989761171D76889C92AAE8A1A2C38D44EEFAFF9
-987B900CECB3A6E605206F3400788C15D43A709E9102C9FC4C684661CD8F4E4F
-3D2CB2E680D49E047C3E0B37F8DD9B5B61450CF233911B65CE6CF06A00D5AE59
-198DFC3FFAD98F7B4D1FC954F0F8055CD1B69BB2E2B70DA9FA38FA35156278A2
-C435743D67A19A6B6E00B9439C0D87BACE1BD70F35B957EE067E1761DE46926A
-BFC6EDA3B9FE5CE82263F920C8315F4AD330AB6BFE13EE717546963CDB255B6A
-CBA0813A3EECB29E69A4431D9DB1AFD0AEC7DDDDA1687111F2617121B67583EF
-DE27ACD00BDE56BB8B24E6B3A3667C7AA290A79565CAA5A39B92A6A11E169FD4
-7AB929769405DE2304F19279DDF488E5850C8D7CC06D8496045CAA536B874437
-5D12F4222F7BC3424D9BBEC58E3C915BCC8AA2305FA6E3A6C8F7572F31FEB8BE
-67115FF318D1B739290E0D86DF67BBF7FE2D7DB4CE34A8E72088F136EBEB1699
-BF088B5F1174356C62AE6C05C1112DDF7F125C4439FBCD41EB205CF446CC5CE0
-4087A97383F17D4D85E88FCA852A4111DDC13B76BE2D31D63B5B80A6633DE83A
-C68FD3FDA1D4DD30C209A403F431D7C0B902086D705E715CC98993A65B4536E0
-60ED2902D3C6BDB9FE7824823E9D4DD4CEC7AE050D8D24C5FF51260E843ED9FB
-A3E5D974CF96944C02C355F9983BADB66964A497BF5ADE9DBAE5C8A91FAC4F4A
-A221832EA664846F6768D695CE6F4A57019B7EFBA228AC627D8E0FAE8E751DAC
-B1D1070C0B041533047DABCEB90E6DCA94A67E07561275074785873E30931043
-D88F686F5C9DF58C68FBF02EE9601B100C2853483977D5DFE6B9893964249A1E
-85024E3EBD3E5522CA0D42A7F8D8096125D26203D91E93F7F53AC3B169B23274
-E9A7F6A82A485FB1DEA2A3856468A614788A7FF667786E31A7BFF05AD49511FD
-1BBDF9C122DF2F4A90216071D2F40C4090A3E75C4722E7DD31F20E6534FC9D2D
-2B11C29FA0B9F3C12CAF72B22D7EBA6AA3F46064EC7AD5B568C146C4D11E1120
-1CC423CC64CDA283B703F2B6CC53B03FEC8184A1E12E0E64911380DA56B54C87
-7E20DF53C6C1A8A3B8A51364C2190C0040829B21CFE32DFD3EBAD356AB714AFE
-A9F3F17F640B7FA4F1D1932AC77BD494673A92D722106C6FA707A8941A6E06B7
-B6B784846119D6004970B75D63D4B36167792E976662CF7863690F69C6509065
-F8A6039B0A121CDED1873FC0CA517465C1E882E7A6EDC6BD75C93E67832DA0F5
-3F0390D36BF3BBBFA1B77A24291EB5823D6181A089791510A76D296E93A24F0E
-522C9EAC4B02C645D46263E0CDFA9248B9725C0089FB2DA78F7682E7BC5BE375
-CFFD2591ACDA56B9BECBC342B9CE42F5BC408D3916FCD13D26BAA1453B8AFD94
-6F276E545ACF4CAFB8BFD01E1F6EB808E994579C520EB85621580E36C867FC29
-D82C550E3F35DB262099FD8A37EFDA8A86C63C598B31AF3FC5D6E1BDC48D8B36
-0ED11930A54BD46D85C1A89C1F18F604A77985EF33730705399F862C735CB471
-7A517CA778890CDFB9C35698D33F6A38A67A631F24DB95DB22D7586A416CF5AE
-0F119125EF16AFF97225C3C373E7951287022EC3CD188766105957157C3C1A01
-BA2F130290B5F98CE4445952368130FE3468186ECD90E24BF958039E4C724A4F
-4EBE6713B7D2F93B08EEF45A6989AB58D57DC8881794CF1171FE178660EAF026
-395BD7395CB6B7BE49DBBA28CBC30231825E89394F10A831CCC58DF042B9581D
-B88EC2324279CE19DA29B876FC0825ED9185111496559F3F4CD7EA3E69B3A2E1
-B630894A968F3565AD07F2616A8BB372EE1CA0A58EBC41B3AB02665CC948A506
-2A9DAC0FEC368BB04F932DD9715CEF6E0CA2159BA9DE52C6AF32F29D55162322
-6B2E952C516B41C52538D91F7C64B521489227A3F826D87808D7F38202C6F885
-2FD6038A468040FD5177838E5950F3B171F6E2153970DD9C6F6E78963944DE0B
-EFC46867EB5A50230BAC696C793853E25A114E8E01B14FA2E91D2403958DC8A2
-D24D31077B4253B5C483641D635534EC6AEBD65B7C81536CBC3485BA387B9205
-7D813C9FFF6DDE964833FC7D47C07158C23408428AA82F8A2A6F299C0DB08D79
-3570679F5C034238C73C916057A96E52AA459ED450609B8D6464FB024A5A371D
-91CB9BAED1C113250458869F997E6315685AFA17E5C328906B4FC9A78E539913
-5928CDA343416B4C0242063E9C49122EDB38B9063450CCDBAEC1C16C15E948CB
-F970CBA676162360A81647F39EBEDD54B9C53328529C640983B5BE0F04595E73
-A6D84F5CFD86E1DA42F7BE7EE33441F3FCE0E9451442D89D8302CC76F39CC7CF
-A5E6DA8CE227CD42C4F99DB10D829D85153BF7A08CF72FB88DFE10D08CFA5060
-CD6421C8EB301AFC38A80243D2D370368D052927DBB3826841995BBDB2EFBFC8
-4F51617E83234AA906DEC34BEB84BC0C511D28A87CCAB72D216BAD9E0F952108
-44E369E2454C0BBADB42C925FD4E9C93EEEF2536F78392C409EE0C303996E8DD
-5BB7B707572A73EC0AD84F9BA5D2CE3DA82341D24D6E0B262805BA7327EB65F0
-B63B291C25DA70E6A96D5CAB02E7DB6BDDA2D7C396D53683990B6D4A1D71B5FB
-CBC19A35861EF6BC34AE92E91E83373DFEA17417A7E2CEF7AD0EF3F225ECDD34
-A4689BFA6A8BC960D1A52B6A76DE5F14313C9C71A362E0E994A3CB4558DB50CD
-AC27CE99DF1365F0F41A0330E09230E6F0ED06AEDC01884896B7573BE864191E
-68DC62FAA0EB8287BBFC5AD4A727BB6B86559C56DE8E80AD99705154061ADF05
-4AD4CDCDB4EFA9B54DDEAAAE2A958852394157EEED67711709EF83D7D3F00552
-85F2D406430AE2811102D65E8A2A07F89B54EF5FDDFA18F61D4B085F64A5380C
-22174B1BEE78F87A2C26F536E19237664DAD98E133A61BFD8FA5FEC3EB1C46A2
-C6F08BE7796A48C7ECF465D6C37F17FBE0BEF0D86EF0D15B3837296D54F6AA71
-EFE01EC5E9757DBBB47C75FAAE85A54C120706B7773F333E18743CDD7F4CC731
-2AFC6D802559241F6DAEF43CEE59F17C822287B4E4329C78FFB4DB8C7DB43AA8
-18D7D6FA43777D86FC8ED11D9F224AD16B465ED8E336C25F2378F0E95331FE7F
-3B3311FE4FCE9A9ACB68D7C593BBF9CC3F673AD543E7478AAF5C63E3A693E1A4
-51DC5A57EA09877B108DA38C5B0E20D2C8CF289176771F8C37C5B4E27B226444
-415DEE0B03787D6B75CA699CB7A523896278997313ADB1B18376B60836E67425
-D2AE291D57D98FD81920B43A27B94C4C744C88319202882DD992AC629C7863CC
-4449BF8A3B3E5EA87DB73DC6FE8154B5A6A8B901F48DB794DA5CF68C8BFC5B7B
-0871E3CD12C3AC4FFB89E9DF8CF6EE7DCBAC75C2FBF6D438FA3A9E3E9ED28F64
-0ACE37249776819C76B27DC7BC143B0DD9AC2616654A07C89E8C802594743887
-8DE2A0652A749D10490B1D1AE370F4AE264A99CD5E18499F49E0FFDA8AD5C1DE
-ABFF4F31BD58BD70130BD06F7C9572DBADBC772599D6E8387C9843C26E735767
-2511AA31CDA3319F04E28C3CB6E237ABFD25755C83CAED8C8EAC611B76EB320A
-42B8A30198E25B3437E92A4A25A24E47441D27053BA43646A4789C9528B39D20
-AEFC8122CE90D56367DA42FC11667053F0965D517E29F5ECE2B299359074FAAC
-55DEE7B2990842659F7291201F64BC1C8894AD4F4E96652F3F5B961987822D33
-A4395C5F14A725292E57033E54FFAC2ECDD9DCC87E2679FA9C66C417931083F6
-F0B744B1B778842A06A6B37ACC004498963FC7CF1FB974E541048D9EA7AE0A31
-8F4CC57829591FC768CE6DF3F2D1799497C0AA490BE315E7D18D0FD16603B76E
-774BAA198A68EEAF6FB9F7231E1FAFF9FA79ECBEC159EB5C0DED1E8AB66518E5
-5D7756A9B7A28FE7A252F49F9C0ECBE8F0479518A43F100FB331EC3AE7CD14AA
-8C430E37B4681B2FFFF4B4DA18FD1CE2FE96173A9D83DE9AF9F1D10A51374A68
-217AC73D2ACFFF9EA4634AFA242A3F6151F631938D3519F72684DB67059BA07E
-3043F72CCACDEF6686F67938D3B08A029EC0C31680AC2B8B7AE1E1163DF458A1
-53362709163C570E61F245899FC8B9DE5A10455C356B16DC1CE9602903337BF4
-700C6D50EB0079E1AB1FDB18090B90E809C9199D8C5A302D5C1295339AF1079D
-E0BCC727D07BA7279642F7EA8A6F67868ACB094F0D0788596165EF8B49B6326A
-F247290247952F39819843D7116DBCD690B81606EC83BA24DBCE9698F5562840
-0DE42F70742FE181C1438F5754B5666618BC3753703A31BD70B85132BB94441E
-CC9513B8013454CFA3EDF734AA19CD69F7152D4B8E532AB2F5ECEC8924D875F6
-E0555BBDF4C2E5869AB718282D95E340A0329B0C5D83E5305043A49FB4B5A240
-67995F3A3D005C5163E617656023871F92A94C4D213687C966B3C9F63125E5AB
-01C05090211BC7EB869F4B6D89E07E7AB52C998AE4B99B885798E78797BAB10F
-7BE7E2A26C19A7FC59C1EECCB1880558226F4467E4CA6139AD7CF7A3C0BC8913
-80A4C1633F322A96E12E4F543B5A2248AE5CB39E5DC2C653A684A7FC4C3EC3DD
-1AD06698904F052A50EF846BF80894249694CE2EEC636537C2FCB7C43450E49D
-FFEFBAD97A680C396D378C2AE1929D6690EA995CE336AE9566805C870F3F0AFC
-E84D4D4C2CC87728CE73F3A8120E128623D9DF7A16B7263A510D4DEE7787A3C7
-D3FAF1FAD037BB27DA9993150B68E2E1A082C07100F85C38782CB18E91094C21
-992EF3FBC9469D9F020BD9CF531CDAAFD75486F38FD7D20A2058AB8BC616AE29
-E365DD8EEB3F44079C43CF858D6E76ABF8B0305D8D1AF1CDC286B1C9F5E37C10
-93F14C80D2EAFC34CA398DDE1813A84E326E9F6B6A819DE8F610F5D663EC9A61
-9DCF5FFB482585F3D3FC88654D54BA78371D57AB091DF691B2FB7ED4DE65A187
-E828E1B4B2C117D240DD39C10EB7E328E0EB397A2E115CFBF993C6FD7B8B360C
-7B5A151752770C955E92CD6CC2930224FC37B4B2187C9D2D187D4D1AD0F38C0F
-4EC13A1246E17C5966D4B422BD54C6ED89A412551445259542A738614BD601D5
-2B30960A21B43523EE6CEEB986C9589226149CD11C88167086CC4887C1E461E8
-E6849E06F0136891EF87B31E5F8DCCEF1F13D68A656E97DCB871D8266C18A828
-01FC5B137FFAB775EAF3F2B5FC8E0896CAEB74C49D2865CD2E8221FF4C2EED39
-86CFD47CBF99462F79B851ABB16C0AEE142A49D5B6C4890F6FA7614143525C93
-598BD152C550D1555E347A55F1374C933A632AE1595C462440C0BC39762EBDD8
-00EB2088CD8BE7F2CF72C786752D93C5C332E23D7513D4DE6C7AB0C9D45D6484
-42BCB92C2723CA156DA4E9299E96F73A561E1CC07341B260507EA0FBA3AD152A
-1B2E3BB97CDE40504B854EDEBD5911576E4E8E38C4EC3C608C46496F2E0019D5
-B2B40B1FB30EB0C40A09833F601276EDD33BCA07A303CF538BF9B6094674C027
-086EF007C47C7D94B8F52260B56FC93C4C2A2D5FEDE93973899DCC6B5559F624
-ADE46D85BF96AEBA8F41886F6C3C3B1D3941597D538B5E9E84E6917E8EF733AA
-DCE8AF32668E3B37BC3BC583E7AF46949503190D2E2F40AE88ABF04DF1E00F1B
-2FE36C5E26217E65ACFE7E66E37C7B4965C498EC6B54366C5B2623A01E1E0B31
-81FC272AC22B2ADB83924FED315F5FFDF61096FE04DD5DD1BCCE5BEE249D8AAA
-9E68E100F649F6AB28E0E5CCD500829C5208EBC81E6FF341B3D949A4FA77C53D
-C3462D081D83DFAC2515A36117BFE1D28FFD12150A671B9EF2D36C3EF576AEAB
-CC9A4A0173A276C244C99DC0B5D0E8DEC8B387D314C39EC21CBB0A68F265EF85
-D93C616BAC896557AF3F3A07745E3D9935FD2B26111238014BA0883D7F40A82F
-E734890FB938D86891CBF35E1D3BB3182FD42EC693803583F3F90899F6D1784B
-AD28CFE00C8779AC9C63349393F6ED5BAAE66EE4BD51F820F46033624E3D492A
-04C0BE71EDA498A8FD8BF51652F5481186088DFC976C58C52846A02359AA64D3
-9185E80BBAC4DFF0829FEC904B68B8EE46078D6D2B588621CF215D7D30B5A82B
-C448E3B31494184A2D596C0A7718020394F50F51673A8BC41CBA7C1C1EE64D61
-BD9FEF88F26784302B7D2004B66E9A3F18BF0D3E2C82CC8711DFF27B252638DA
-32A678CB4D26C1EA13BBF774706E82813823DA958B6F9B4DE46020F7AD2BA4CB
-CDCAF61E9A84DF3718EAE6FF9705601480E82CA7E7A58CA1E235BCDF4EB3A5D3
-C9858869C1CE47D36E0DA51E2157A37918D1EA6DE1FC48937CD77E03139B6632
-19853C54930BEE792BFE3E93740A6753CE3D609EC4971E706941EA0B76DA4E8E
-3059FEC3D70E7E1253A03F09F8A1FCB6FA2173F6A5661A93C2A9D131591547ED
-D1B2278CBD5C2C7207F6E065C9BB5FD0263651494DF9B4C05A932D33963B4E7C
-920FCA746B777F4D2CEE25750D539CC4600089C3E10A5BC754526B18EBCC14DA
-D07F328883F52FFF5F862FDEB61732A9970078178AD0B7CA87E4FEE14DB55F2C
-88B743F55281BBBA27576AD16A730A42D4E1584BCF185867A10E266B43D64241
-D21E5C40E18E75D901C9EFEBFE00D90C454AADC7226F659D7D17201D6E7595F1
-EB85E4DB32D3801CDE200BC3CCC36A7FA0ABE6979C968AA689E0574EA8E8F93D
-E15F0F02565A70DB3C5A814E2C532D2BC2459A51C364ADE0FB1230FEC4DFD6FB
-3F2C59C3A3CC22CA60C752AC8B313A41C4DFA18DF14DB76E8EDC6DBA37CDA689
-97F4EB6C832EBA543FB55C0492862CE28CFB1F28E0E5FFAA32DF8FDCA241DB55
-5619583FAD76D504EF599F233C424359768F6E8F0CEA95774901577277DFD8F9
-0418598E
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSL10
-%!PS-AdobeFont-1.0: CMSL10 003.002
-%%Title: CMSL10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
-/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSL10 def
-/FontBBox {-62 -250 1123 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
-/FullName (CMSL10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 42 /asterisk put
-dup 44 /comma put
-dup 49 /one put
-dup 50 /two put
-dup 65 /A put
-dup 69 /E put
-dup 72 /H put
-dup 73 /I put
-dup 78 /N put
-dup 79 /O put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 93 /bracketright put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
-DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
-7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
-C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
-25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
-7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
-299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
-80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
-5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
-8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
-5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
-F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
-966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
-A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
-9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
-A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
-94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
-DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
-E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
-5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
-8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
-155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
-4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
-44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
-8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
-04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
-A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
-F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
-111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
-8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
-567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
-C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
-C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
-51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
-66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
-9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
-2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
-4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
-5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
-0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
-233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
-BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
-62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
-B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
-DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
-C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
-CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
-38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
-FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
-303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
-8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
-8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
-C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
-9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
-4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
-03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
-93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
-91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
-FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
-06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
-95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
-9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
-7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
-6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
-5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
-3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
-CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
-797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
-DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
-CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
-8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
-04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
-78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
-730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
-021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
-CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
-90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
-97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
-F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
-4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
-40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
-3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
-362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
-DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
-7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
-04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
-DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
-C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
-B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
-9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
-3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
-D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
-B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
-74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
-44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
-A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
-3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
-BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
-01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
-6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
-DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
-CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
-683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
-87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
-550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
-2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
-17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
-3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
-F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
-B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
-1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
-61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
-124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
-ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
-0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
-D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
-F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
-BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
-75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
-8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
-B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
-7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
-F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
-F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
-322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
-523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
-6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
-66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
-B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
-5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
-093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
-B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
-6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
-EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
-A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
-8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
-144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
-7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
-172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
-254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
-5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
-011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
-B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
-0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
-3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
-E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
-993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
-0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
-18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
-ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
-CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
-1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
-A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
-6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
-BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
-DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
-1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
-93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
-E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
-4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
-F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
-4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
-361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
-95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
-AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
-50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
-88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
-AB7916D44EC2210CB941B83BC0F1C097792CFFE7112D039CF77EAE73CB4E02BF
-60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075
-1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649
-F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289
-1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C
-C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627
-73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B
-E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866
-2F2CF263CBDE3B77E12E7D863F0A87788D89A93707CFEB6A5EA14C8BAC433C65
-56730E3E8985960FC4D00F2B821A9218A20F11EEC2D6A153C403EC4BCD0B7573
-5BA5398D8A252EA71E8928674FAB4CFC6C2FC36E7CB12136830849198CB0B249
-74C07C83EC06B2E0A5323E3320ED056D02B614EAD64E0F8F083F5892BC3881A7
-A9279ED632967D7F5BBA2B7CA37F7BE21987D8BD349C3DADF4682D4088DDBB35
-D6F8F74749063C4F59AF41B9AC950E6E588B3856C7F7AA1C9030B9AEE3D70321
-2DA63309EA56951A6E077EE1FEB9BA112BA69982E9EDCFC5A3B462FCA9D16A5B
-951C2128F30DAFEAB3007F0DC4F16F3D38371618A2F4848A9D0D59062E63CBD4
-E4E0F337CEEA736493E344617B5F1EBC96096B66ADEFD26110B4A59C69FC619F
-4CBB9FAC2C9314C831A6399B611D597F4F817603450983BEEE834691DD492844
-A222BFBD54593B70F18BBEF4D0969B1EA062F7DC61DB08F88E988B58EF871C3E
-EE1F380B98FBA95CA4E524DFC9DB291A5222D9792B9AE3A1F64E868B1BA4B5EA
-E2BC7C68C837776B01738FD3B8D41A3091D8B9A27050E56E0AA39F8F3AE52AC6
-42D30C4363786477D1C2D2FD832C7E2418A7B1E24FAEA7AB5AD1B99E319E3319
-BA790965EFBEDC46D4E7699CD4FA57A28ABCF8D4C05D4C7618C133ED3180C465
-80FAD466CB46D5FD53216F0F15EB9776562B7B6F808A9D8D9F4DE099D7C99C9D
-06588071FA8C36F774B05C0D65259DD0514539030DCDBAB67D6E1A19B2A6A547
-3BACEF7DCCA65B35BF4FCA3531D08DC5A301E0C112FAE9D9173B7B47E7F7C531
-3103B70633AA09E4F87D64CF5E3B7FEC94276E910FAED3C4B30C32C3743A5C39
-B5FBFB0D16C2B1998F53A0C3CB48DF19B4FA9E98BA3D503F5B82EDC2EFCD8521
-8C9006735D194CCCB8DEDF3D465F2C057E1F8F2D35B362EF9D084D429BB71584
-62AE48163478E7FB8AD99F01600BAA8B77C6F98DB7DCBE7E0C46B917EDD2CFA1
-F209D9A01CC283B773BC469257401809BFAAACC0C9980C497DEEA796A60B992E
-39F098D4218AC55FF0ECE7BE1CA314F586AE82CE5B71E4AE1D768BB52FDAA949
-AD21F4FBFC0EF3CDD44FE8D92EB97776F618AD9E38553BD0492149B3BACD7FBD
-7440BB8786D93167C8E4FCF61AC3D360B06C4424F4D46FA91B862D7A27BCEEE6
-C3ADEAB1CD0F8A8752EFCCB3E592162C57933169DA1DAEBFC2C866C10A5F7840
-5447A38BD856996DDD56BCAFDFDA2979FBA4AB6D4FB7E70E20B76F5A2AA3442A
-4EEF4B1CDBCB3278A1F55C99C7C4F7F34C81B063F8255348553E00D3CD5F5A33
-C7FA5E4FFF58B2D19B9D04915B1A33903ECD61512AEEFB41E67535D32AAFA528
-10FA9F87F68EF03DE847AD8BE921CF3D20D06098BE223F66DED6AD3BBA11F79F
-CE8F4EC2A83A6264406B36A48FF893E972BBD98613C6BA7C27804BCF2FD5A4CA
-D8DAA8D54F14C21A361CD594B9F76822908797D78288D86EBF0E627CC4C8F79C
-CBED3B764D2CA0D05BEDABDBAC5E09E2080CE815A76245D0E0F13314ADCE77A8
-6656CFD4C2460601ACED80939C44F600BCA055BB0332198CC80ABD2A7E361E26
-2AE4C41F97E34A97897586C5D79FFB57F5BEF34EC91CFEF1FF1F64F7D1FE945F
-F0DA4CCA520C5941F83318E765966FF0B9729FAED847F59264E7C5752AEB8AB1
-77426AFF9CE3AF2C1A3FC8F8EFC4B6E74A2201B08036FAEE8F74D6E74A0D397C
-7A7CE3E2D1F9BC1CDC1FDBE1647CA8FDD2AD012EBA5D8D4DBBA99BCF9ED3EEA8
-E8773C09545D482E30653D9FBCC67B925D48363D75B11A0E402D9585C2D5D053
-EBF046430962FA0D514308B0E9DCC14CFB51C0F9836B2244650E77777826DC35
-B5480DF48F8D9A9D731D50FAE55365BAACBE23E7FD0F4F6E22EE8B17F1CB806E
-3FA29E94280B973A85EB8CB57C047605811637076E0D98C349353BD4207FCA1D
-A11094D4DCDBB76B4AF79BBBC627ED1D176D82FE6CF34A24EF452B1F26F543ED
-2193C75C0C003B6B3C030BD9AC90C312698C4EEEF07D64753999E7E45C326DE9
-D5F1F3717D94E94E4B27F809444E1E474358D138DFABCBD6FC00E5DF2B6628F9
-89CC2B4821E8486147E9EB9CC942809FD4514C3FFCB1A9DEAEFF56EF66277F41
-8E3F7CB7997BDFAAC4429B1FBE3CEDC59DB54BA0A335AF065DE6A9981D9CB365
-86B48861A11FE0AC44C1C6CC9EFE479427C4CC328AC44D3C4312EA23A04F6D82
-A9A0062AB6D412C5A1A8CB99E7527C3B37FF79343AB8ACD53B6090341960823C
-D6F5B332A2EA6C19E5B237FED411F3C088AFFB94F1AE2E4EBCD67885214C1333
-3644DA63A8BAD52C9408C0E34AF8ED898422A0A2A4B8E9698142B53D76462200
-36CF4D53F66C51AFE6336651AC3CE180B9C382998331BFB6A86B973955D28045
-E5106EF370EBD1B57300A0EC9EAF11BA81A19131076A75D6364556F0CCB5FBA3
-872299EBC8A91563904119DA00450E360B5B7C5B6A6EEA87C10DE6B911109D46
-FBF66B637688E63AFBA42D647637A654D7D16F5A85382EBF72A7103359CB5899
-AFA4C0217EF645D765BA796BC00788DB7590F64EF066F5DEB3321090F544FFA6
-1F2185AE24C9C6051D625C2FF4D0CE0A476178E9DEE5A1A76E2139419AC8C875
-CABCCB25A1A1D18E4422015C6B8BB9EAC87F01E6DC4B5C194A0AFDAFADCABC1A
-14F9B80BC7CF2B18E2C9140ECB160CE260278344E3168A17DFB3612E8336800D
-FF3A13DBE3EDA20852D38D89CAA2B692EAF9E380302C7587C5ABE01A862FD37C
-1BD1315ECE39E266FEF9D847FD2A45DDD7A3E662C4182233EF90573138EEE323
-F64817AA1398052715686BCF461D29AAB9957671EF40869821CD6D5D499C0862
-17951DC682C529CBE8E8C0D49A5E6FA0956B2BD29EF5870CC2A2AF06EC743EAE
-6D9530AE87BF2018CEF6408BC4D97086451A0124A841A094C34F2A6FEAA97D68
-7F60A45619136B914439B1B12326314B821BEC74CC70ACB09953F287C5A0932B
-FF84B72200A20FFCC7F0038B44A5A0E9958490F023D786EB9E2C7C88D95C1EB5
-570424C0A458E89B31F2E681B99CEEC4F6A72E7BC4B7E6F159C84268138AE583
-138484A95D42F3743423480678BC749D90B1E0233071693B87E9277F3A1D9D43
-1A0CCAC46EB872FD71CE75BFE106580A89DE930211125CC6255361FAAF2DAF57
-9F4A86FB8F1FD6BFF647488691B113F5F4621614E87502EC3AD9C70B8770755F
-ECEC384171BE34CB185439F8B1CA228A0E1E2FA02D38FC2E6B1A1B1BDDA7648E
-C39306D18013CDF6F9FE27861C172CC1E5EBCA0F9395DA7C363799EB6476A573
-CC95218E4B1387908DD37C402C5E14DB7E1236B1BC094407906120EFCE4D620B
-6D8279BA52D64C5C3BE3D6E162975B61D1B8630C10A5F342D4244C9793C6651B
-10B0B67CB877E7BBD8190FDB646C044734EDA86407D9E3414404E392EF366FCD
-C7461F6E08AB2B09B4FCC7C98C97E4ED4CDFBFF8AC9EE7E97C1A7B3A0DDAA3C2
-F9849E4003A8F043BA005D297E5A292982CBB759439F9011B3261433C8EB3F92
-E3AE95248806CB2665DCDF4B3759A48E1EE84BB1B8693AE805F4631974522203
-3F467FDC225087213BF2D79B8B148A47D96DCF3F22F3005FF5541898F95B54C5
-07B931899E8EA1BD0F4F46457F63D64E57CE355BBA9EC53AC8257B1B37ABF0EB
-3429392E1427A120FEFAA66D1FDDED3F1D26439168690F10CA3C48C8921735D7
-E059470DF5C64F1EA4A20857EBFB70FD768C2DF77B90FD83D907268269F2D233
-D603056697E13F1B46DE86C3153A92A619912D6E5316E0D1DD7F5DD8C7FF1B5F
-F2FB39A652F6536A5BAD407AB9A5C9D93CA5A6284A9FAB4D353D54C5CE177C95
-C2C3E5918524DA01F22BDC2E60FD35D43C46686877A088099F000C632412562B
-D30BFA5DA02A94740A250DA5F130E3ADCDC390F2BDB1192DC7C5A7E4D7D908AE
-2E2D50846BBD1191FA262B2E38416B5F99EF71510530CD803DA1303CEA9CD053
-24ED32D8F992521D8F3B358A56B42D89EC455210D052023EEFC35FBD2CEE6A76
-A9F715D6A19BAACB7A6E56E4DF72F516C4F9354024800017E30C3D97EF968CF0
-07992318D1C9B8DC96AA1639B0B0F460D679D6306B34CE67203A97C9A2043AC3
-671DA26BFA89B90E564C29089000CE852D7E76776ED7BB562036B78CC746FD2A
-B45880E09EEF0F7BF4BEB7FD573382968226E4AD9094D801F07B16E63B83850E
-88111A93497978E539051BD0176D51E8888C1CB09AB7B64333C87C5574772010
-A74416F6D539634394B1BFFAED30DA7F67B36781606366C11D722A8C712638E9
-0341CBA1A31CF39EA1EFDECD7969DC31B06538765A2E1C8C7267737847BDFEF8
-971FBBFF86F375979CF48E6A34FC82FA9E2A934764DC72035324577A84225BE3
-D0BB79BA56D8EAB0DDCB541E50A2DBB501D7CB45D8FE16C9655ADA08BFFCC38B
-3077D05BA9ADC17F6EFE5F85125AE6A8935B00856BD588BDF0562E5224A4A4F5
-3A863355F6067AC8BD4ADBAAC72A99F351D82404292DBE2EFAC89921EE4B4784
-28661DEB2AF55AE6EEEAF6FB1C7483135D0D15ABFCA646FF3D64EC992ABA0FD5
-A8FCFDBA5080ADC60FC4B93CF4A84FC30E122C67D92DB0DA18DFDCB0D6BA9FD9
-E0F8C0286FF73E9129F37A863033C1E933896E2D47785B8FEE054EBAB376D670
-3346EFE8319B56827B4448429C5CD70ED1138B209FE7CE20CB3CF16612657665
-73856F9D127751D0F82A61FA10A366060746C0A627E39ADBB3B6A3056998D623
-1A08E7F86E6CB07B00AF5781F287BB62B553BB1490CE885BEBB92C9240F1EFF2
-CD6B893C8CF63B600B2FC17BC96AFB51C0BCE68427D843E5F98851B5AF735302
-EB6EC9BE8DE93BC5C6F48B309CEC0006D15506538F01AE8773F457CDB07D8A98
-EE767B499D60D9F115A692949754FF4983B95599F4DE322CA7F9DFAAC1658C36
-C2268D5569835DCE35DB6E40030CB28B30E31AD16AC8395F66F39F5D9DCC0E5A
-273E3111A4DD69ADE07B9FA18C7A7EA669164C6851A72EFFFFEA3E18B5B87D7F
-9A5331599ECC82C362A2103DD50E9D8825898D360C73A7E1E4E9ED66130746F8
-3BF5542959DC2210652383EFF1857D9657C67984629BC1E14570EB254C3D5043
-1E8A0347F9ED66FBF17BDA2C713CD7DC0F5347F06B3432967D1D0C4F7211B5B5
-CCD61164D5C9F01A0BA207D6EA2724F67F84BA845A28F1DCFB5E59D4DC57BFE1
-50864ADC1A703DBA46EF00F2F4ACA298EC1C1DCD26D647014806CECCC8A93E87
-158F2982A72C2B7167A87207D637B92826AFE261D9763A456F90E735DDFDBD09
-1C176B0C0D1774D9FAA5462C2943715E71F3C8CCB0BEF0AEBB5D00812E64CFEE
-282505EE165C6777C37A0CB2B7066F4CCF84B1578DC1A1165D1C60324CFA0263
-08FD152E9D3BC399CF45036466B70C54DF463A19923356834E49FBAA86250899
-4F1DA6637091255FB9B16BFC9DB377AC505FBBD1DAF88233EFCE65F1F91D7428
-10BAFF60705AFB67647EF947A26D86E868681A18E60CBBB552B96FD411100658
-1EF8A14F2E4373667B2879ABCB2D13D97A7084B345EDFEBC6B329CFF8F828330
-8DAA4AE60B8B3BBE78C05ACD0DC43A6907EC875605F84716A4E95FB406A4EC1E
-C5DA35309A932CAB84F62A9045A2D391A7728D51B18ACB5CA1FD1AE58976FDA8
-1F8D86E3052DA3A64360E1DF8B9407979E583F2EB2752C8317B255F73A2F87DF
-8BB2B5FE9464B360868C02DC6182C634140D9D51206B57DA40198D911CEF0691
-9EC2165F4BC87618D1177D281B5AD42F39FB0B76F678BAB0A757130078135EAA
-BB8A0260B772B9A748752D281FA0568790E80AFCBB1340C5E6DC160471802D8D
-D754FEE5FBA6532EAF51163DF21702C81E315834EE88F771CC9CF1D33E20F561
-1E3E661D89EC5C535FF486DDD590AD7F072B432EB842C7A6CE4C52C2A5C1B80B
-EBBC113C933400A257B2E16888290B16DC53991FDC668B304842C8600B9313E9
-08D29D7F02375F216DEE47DFD6E1D3C04F2D50977387457AF1A7FEA816D34427
-0278A675204C264FFE5C0EE3A21CD6BE7FB3A025CD33D6FB112BB0D0D20A416B
-EBCF0FCDD560A5E0983019CC7AF66D92B52C881153E8E12AD300571ACB5BAE05
-17C00671628B1E76E899D116B9A140BDD9CBCCDA64600402E6341305E77B1A7F
-418E108F85A4427F425784705844344B6F405352259DC6DE7584C7E0E5E2D22B
-6BA08FDA205B0DB705E8FBC9C917A0CE1C4AE14C17A0E98042CCAD0D2279BC79
-FB504AD1E264015F95B5DECD45332947C70C69FA10CE0B5FE6C933960B4866DA
-43E4B1283ADC307D18ABDFE9A8A2B10E862C5A771B346896C7FACE788569E483
-FE26378F52AF1D05FF2CF8C09119F7250D4EDB175CB7B958A8013CF68483A2FF
-93A39E2D0C51D4DEBC50E275869570686EA784F7F13401D7CD2619FC435F1344
-320D875C32319F796E494F75604B326CBACA2D5E16F37DF3E0BE72A649BA7562
-7EE30478DC8DE07D32A0FF5C7072D0A4C4CF36CD9E3E1DD20BD28B90776865E3
-16334B2A74EBFA0185FA602445ED88AC4FC8ABD184BD0FEB2713A6DEF4CA992C
-FED715F768F9D9842BB6DBF76B201A04D23055193A9C93CCD0717A2045A7E0B9
-0D6466D1B7FCBFDA58AB8F758593FA72A067C5C627C52EF12587397C6D626AE1
-28C12AE56AA1ED22573AC2897FBB7CF56EBD98BFBE369545F66FE6B4350EE538
-A419F9F61A592B7A54179B1CD577380DECBA2465B62EB9662BF2B82EB64279F5
-728D63F13B123102FD0727CCB312918FF43FF5543BDF8A0B01A7881E71F4D05A
-531BE4A89EA6809F2BB681A9DE9F53E37FA6E2E710086DFBD2FB8A7EC5060864
-9DB12C1E043A0C0FDB3EA5EDC78F400753FDA077EAD9EFB407EFF4A4ACDC3BC1
-0A149991A58B908EEB75581D2E2EF47E64EF9145485F652379E9A3C01117EDA2
-281D91D363E8D7588F24794AD2CF2590995A3339C7430364163AEC6E31529CEF
-EDE730EFB5FBC05DFB61BC9BC79367E9FBDCA34A4A537F78AF4F141DF5291A77
-A2225E7B7EA8DE8048F644DBEA4A47DDD8F275A462452E5737F8EFC04EF2D779
-25BD61881D197873B097172331B61256D45FFB8447D6774AB3BD150CEF43E0BD
-043C86D3C7427A3D521D2C484715E4A48693D647DE2D84003B48AED1A96FF440
-4A586D53BA76A434AC33BA6F9C6F4B443135F1F35FB197B0FC92080ACEBB2DAC
-A46B38126DC5B87DB7E1E83C7DE21AE5C7156CA18005ED6AD02B4CDF99E1B21F
-978FAFC5954EEDE6E394FEB95CC559A6DABF05ACDC0796DA6A39DD25A7BC9477
-C4795C728928C1A9EE1672205D07B1EFAA8F4BB2BB413D45738E8D474CDE2299
-552B37BF12EE136DC692F5E742D809DFE6D18BF866909A87A2C62C526BCE085E
-FE8C7ACCAF4A4B9561E3E3BE14A8633B885B86EC57C0D8095751536548C74963
-054189593A7BDE80B28F6642190AA560ED47BFA85FBA91557627D3EE2BA2E851
-DE2E17EFDEC23189CB308311FA623EF6F86EC34E231304DEEDF5E9C6BF964126
-F79D5EBB5F22C70CA5EE66991CB1FAEEF95E7E14BD5D25E2871CBD2163DA990C
-FFDA3D174140C7635710C1B3B927989111A6D37C8749EED67FBDD93D0A45E873
-E7398025B1DE7F4238A118977749B489923B4E6AE60162B6105F5E1FA02ABA5C
-84C1B26EFA27D1A5F58822A1897A374F73EECCE0422CC1D0177505F132DD4C55
-6AC7783729BB7B6A1CD33FC430A264F229D0C5A69DCF9F804FD1F01D575E77E2
-67FC00F6ECF7B3F592A7A49E410E8314BE48BDC95560401700C11A15DFEB6B2C
-189646F7FE7CAA7F938227F0B232BABE8865E8D3B764AFE6EB635ACAC6BA7C40
-CBFD610D215D07209EDB7B60807FD3DEA51E9DB40968DA07248168B6DD4C3003
-F5402EE2695D212B4DC983CC2EF4FC5BD59320EB462C88F2F4B62CEB6E22A726
-09961D7E4F09260BD5711713C32FCE1689E2CC03BB005EBAEA2A942AF20E3635
-D99B2D1C6E349EE350C923EFB6815F8BBA40D947E2619D62053E72601EAB54ED
-5F20652B03C8E7E1D65896252B7D436B77D3692C115D114F5042605050C3E06B
-2637DA6F0CC97AF4D51242D59D335491D67E95B7149C3D323BEAD304478F4196
-7E473D7DD7C9B6E1E8EEDFDA487697286F939A445B5ECE89437FEBD59AF5836A
-0FC41F7AEBCEC8EAC56D827587843055E19629E6BA0644DA586493763589549B
-C39EE3725E9C20692F2023862A3D29C4116F875DCF7D2BB4E79BFD54991A4FD9
-A7E852BBD7CDB42B624C969FA6A7DA55CD2E92AADC4243ADFD124D941152C53F
-E3764D1EAD5A6623D94036E1A88C37791DD21C59727E6ED28FC5F644B6CEE4E4
-9132042DF830F9DE1E6B78EC16EBF7687C4A4D07DF3ED52554F76996D88E40E8
-C30572AD06D64FCD20532C2B6BE71E65136EAAF008638C9EF102EB32243FA5E7
-1DDA1FEBF85FD71337C818C953219F592640A6171229F0D8E1447C4AB0E6622B
-5124945199A32EDB5125FAD3C022FF2D0AE256749223A16829FB4E1A0B60590F
-4268047D9DF9CCC59D3562D5E44E29E0F066F23AEEE045707647A75811D0351D
-AA4CC0841BDB7A63EA0BA675E4CE4CDE08975FA95C99A9CBA60817A52B5E6417
-199173813190A6151058DB86852F2C1BE4DDD1266F911F2882B5376B60C9C38C
-95B39F8511CAEB1E3003C279A4CA1FC38FF69C833DCCB586FDFE22BBB49D263C
-6444EF2C6CB9979D0CF54FC8EB7BB49EB3569DDFCB71D0966D0F0D2CD69698DB
-3862AA0B9B3D90FDE9B4BB39726EC682E8974AF9075539D975CE0CF5803EDD6F
-9F9ED36969486CD805C96E5DAE2D50F1246F36E95A974327579DAA83A63AF308
-7BFCFF42022C2D949B430C14B7536CA6AA82930B14112F87E9854AC8D6185267
-0528A7107D396A034E337A4B73BFCC2F323D5768A1E987A2BF2C8F2306404EB1
-26B3D2070A0CCE97065387D57FD9F733FD66997BE2E407F100E5E4021BAA9410
-E07A7128B51C9D320BA607C06C7F184BC27E0B7002C0B4F19685B4A08E2DF900
-16E82D6CDB0885F9260DFCE170996D78E8869A19125249AF59BF153D71E5F00E
-433DCE51F0D8065D54B605A30D0A6108C34F4EB8E56D33ECB111BD38EC94ABB5
-732AB831EF6CEE8B863D6C7CA4B95C2A154B94A16ED47B4A144153ABCDD8D206
-7CDC3843F264A5B786AE843CE7D83B2DACDD82E09D38FDC0FCC56F0D8B91D8AC
-51CF7E1DF59B11B4C5981C25E3C081E27866A3AD792C58C11C05B9EEC61AA9E5
-BC923F96864DD5A754205EEEDEDA4B63E8DFE69C2478905CE7E277EC00EEE7BB
-C2B1765F00DA731BCEBE209D595FC9E0F89F1AE7260D59375B89F88641E9C697
-E7766ACD81AE325EA386137FA6712FE56A3D4074BEEC88D76076E31C96838A2D
-7C6BF02DCC26F98A18C4206B33ABF6E6CB0D36E21735B89C64964CF4E1B9A8B5
-DDD1097309B975DD6D75824FB2D6C92EA2D010AA792228FC89B079771322BFF3
-E91B92AFAFE64D84CF391236A83524B3D4957B1A2C78ABE1EA4312FC347D1430
-43EEAD380C9ADDF5F459AFCC91682F8318DD22606240DF454E445491F07DA7EF
-58D0C679D9E887ECB473520581DEF2DE4B2A04B5B849BAC43A414E11AA3A5B41
-A7EAA9691400A3E935D922374043C8528394883DE9D7C98F9F7C814CFE8C7A46
-D52353B0AE2461F404503C38D956ED7C9EB65E3A0058F9A26333B034B7C0A97D
-28B8AD14F4DBB4D12122055E08FF3BC08D4709447D1C7A1CDE89AB45435DC837
-ACD2B64D368CB767F9B1D06D720E3271EBC715D0E2711D6C343F09039033A82D
-6716650CFDA57CEFCF25E8B86E243E77B4364B04BCA2D3BFA335C55FBB2ABA8B
-98CC06C87794FC020E7E0041CFAA75A6EEE43F6A5CB49E75EDA9D28AC1310D58
-DB1E938AEC9700C3F5102BAA6434D528C1C388BF13126C9E38173A1593895140
-42B9C08F98BE436EB5AB4B41B5B7422D853F982A5A1993FF9C03CB7A2068FA75
-F8E261E683E6F183EBEEEE8F407BF7024C6C66B0DF0379FD4A636F0EAF3940A5
-F48A71B8DB7473892474063353CEDAE734B034D9F7CC60FF1FF349F9C073B88B
-66E84AFCDE225BF8603C28BC8114DA9E9713C0246B4791AB5E55E0EA415D0163
-CEB21A1007D6F060E4DFB0902980B806E8476149241CF2388A4F3A75DC92CBEC
-303CA5829ED4BDE069F7FD3986D51D8A0BC0C7B6DE0FD5023A0B90075DEBAA48
-F5A62FC091642A061800CEC50FDD9BB3BD9E016391DBE31871B6EF431BC14A0D
-486D3827016B5A68A223117D416E86064A90A4B3B447977C0A681DBD07FCDC53
-90D92DEFF3BBAE3404AF40A5D357AD532BF82A67293799A1223A0D4B21A7C590
-D38CB008D97C51A2F2A64B35658795EF6CD44186263539760637F9C8DC75CC3E
-0F5F14E7B46302816ABAD623C664CE96B237E61EDBFE55DC5D00D858B75C8F25
-D33E2ED4643AE95E2470AE34CDFDA6C2B6D88AB81370F0C6A52E734164FB7611
-54414E4FF7B929DF6C3774EC50D769E41EFA98A21277ACF2C9F23F042F74BDD6
-B83A3156141787EBBAC8443CC276DEC97AFB922E5F4FFB16B79F913B874D29E4
-E88768568C31B1E14F081CDBBCF94D7DC3F16FDCA2918B8D1193BF99D756EFE1
-49BD3C3A0CE71BD20D416E0DCB6F83E8C3B9B4050A25DCF54962BB07865E3F24
-EDD4946718F7210D839E1EF0445D68D10D8926470541CFC9F5A336363BF66E5C
-9AEBCFFFB906E377ABE9025662729660B5AE961DFF59B4B11656295F0487E01D
-0E9DA65A913F371EBEC1D8C89154D739423F6BDCF53437BB665DF3D17BEF6F3F
-59D532D76B53A6240DEE8D68EDF71700AA468CC3E0CDD8DD50C3051608119713
-F4D5E13CA685FD48D03E71726BCB26A4C885B025179C6C7BCBBB669EC6CA544E
-16BE90184A5DF4A9532277C765CB25678D798E3E6BAFCCC1B0B31880526BFFFC
-B707D24FD48BC2DFB593285989EB1135D47FD2E30330943C5424550C4C17934D
-2CC69FB31F81916BCB774D27AE711B0754E25655927429C626799846240E7AE7
-5F662E4851322F94A14A73BB355C6DEEEB0809B730812B0798A4E0CDE08A0594
-1D8C3FC7E055BCC948D74DDD4AFB62533B78BE85310B9BCCF61F1038BFFE4A3E
-7B982D1756B58331F924D67A55F86CDB5BB347DD4EB04271D0FD2D25D3EF6682
-2EEE955197ED008219F386F41539875CD8DD847499F9E56545DE11C43036CD5C
-E5C5262A59EE74E0CD303056D37C61F555DEEFC997CC80B06C47F90A3C46D097
-610A281CF632C8E2F7B0D2F84A434BD575B49A795EA04CA3CA5AA86B299E9F77
-78FC4C37568A66996722B764000A7915EED0B05CEC2942FF564B7C784B2A68A2
-8CAFC810C16DE4691C98A7C99ECBB03BC1A16C7AA61931FEDE0E139AA1E294AF
-9D0A84607DEEEC4DD4C35D5C9798655960A8F335FFF479D061EEC26555110D4C
-5877552A318CACE59A4561BEE79F36E292C427F36EBCAEDCFDE161707FFA98F2
-C87E128FC6998F2241E4A62C4860BBF4C6496DBB4F218D5FC94C2A40523B20A4
-5A5C9FF7E16C377EFDEDD5B018D40AB01F26815275529D1359B60658FA1B7BAB
-FDF854786A00D61E1122C91C3DDFB2D8B66CC9E523CA09404A885256AC627FB4
-E41918676F3E2B7762A1AF4DD985A4E133EED84E239E38BF4A737E2719409464
-6A368163AE86C54CCBFAAE1B512103E458B2ACEB514D0C3227242B0969FD8F29
-9DB6568F5EA741F84395753D67E291D1B08401574E79FB07969ADECF750D3FAD
-C12CAA382468F626D5D541C6A9BE2657A4C2504AFE6672F60DC3B3CF1A7F74BC
-3B0157D9F19709623D01E657890A40C85B10868DAF4BF1D37C8FCD5D7D3E86AA
-02A5FF16B3487240D84AFA03354B666C20D144D59AA23A265DA4E1D0AED3A934
-C64F4C0738F8B1315BE988949C371284E5299E6BE88AF64E94DEE15E43EBDB03
-AD261E1DC736BB5F413437F4CAA0C586AAF9801A041347627DE8DE18927C2CC6
-A47653C740D5EAE722D730E17951E481DB07F3A0DBDFC4E3B7272F9FEF143A65
-B18E766CEF8E256DDC5409DBE5CC46009BEF3195BEF390F8E2AD6D972B62A0E6
-91D73A39FB27D355DC79BD514F9AC5B38FB6196CDA5DEC54E5A044661BD66975
-2777FC133B8AC7A4B56A21F018079320A3F5F5997855117658B1DF49F5D259FC
-80FF80DAAF9723E2A85467CD60861DAA5A8C80CDB1FDAEDEC2C603D44EBE2789
-91800C4D327350CA005467F8E4941F1DD74B61C5BC8885D73FD4C68EF69FAE01
-2C87B96DC09B516B2250C7E6A1F640D61A557F471C7CE4837317F885F94E7DC5
-C561168BB8C390AECB871C6A782B1C82C1AFAB46C339ACF9B4C411C9CE0437EB
-
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMCSC10
-%!PS-AdobeFont-1.0: CMCSC10 003.002
-%%Title: CMCSC10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMCSC10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup
-/UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMCSC10 def
-/FontBBox {14 -250 1077 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMCSC10.) readonly def
-/FullName (CMCSC10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 97 /a put
-dup 99 /c put
-dup 103 /g put
-dup 105 /i put
-dup 110 /n put
-dup 115 /s put
-dup 117 /u put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2
-048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31
-CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2
-0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3
-D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D
-567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3
-DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF
-435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E
-2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148
-D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1
-DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70
-8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F
-DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C
-9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E
-1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49
-59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402
-A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA
-90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E
-3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB
-3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41
-736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198
-E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94
-17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D
-FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E
-1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085
-35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367
-3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1
-5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245
-658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD
-8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F
-CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9
-D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7
-606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C
-64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8
-F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00
-C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7
-072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3
-7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317
-1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B
-5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3
-2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06
-491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C
-B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07
-8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F
-9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568
-4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781
-AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E
-36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA
-88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85
-5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3
-5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8
-AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152
-7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0
-CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8
-E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF
-53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9
-FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A
-94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4
-E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC
-4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B
-D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428
-F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4
-5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460
-7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2
-361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579
-5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7
-83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F
-8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3
-F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC
-F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327
-EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15
-B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D
-F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4
-8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE
-07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE
-8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4
-12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B
-E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA
-EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B
-EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207
-A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29
-0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F
-AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24
-3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128
-2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037
-215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE
-E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720
-70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5
-37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE
-BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A
-EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F
-AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A
-0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F
-7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8
-9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5
-28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A
-962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E
-F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3
-3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC
-3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5
-15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8
-DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF
-72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512
-D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588
-462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026
-465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607
-6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7
-8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A
-AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20
-53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34
-E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF
-E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605
-8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395
-CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064
-46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C
-AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7
-391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015
-55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643
-0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1
-0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8
-3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A
-22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384
-5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0
-20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3
-B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E
-AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED
-CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B
-7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9
-B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED
-A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201
-213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B
-57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE
-DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082
-9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271
-C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC
-F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F
-54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E
-C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051
-1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90
-7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287
-72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A
-DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC
-5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2
-7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901
-EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4
-62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1
-0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A
-94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6
-5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED
-D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E
-74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88
-159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5
-2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD
-D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143
-40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E
-DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977
-CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F
-C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A
-1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A
-7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5
-D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614
-37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874
-357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68
-6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435
-6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53
-686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F
-D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8
-EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6
-3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D
-E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3
-154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD
-9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092
-40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6
-A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE
-002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54
-810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D
-637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24
-1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1
-859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF
-6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE
-2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858
-89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A
-38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045
-9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F
-774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9
-75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC
-660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9
-2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C
-8BC2F3AB0BF5A6E5619BE16DF43BB090930493E00607B9F8C32D24F07482266E
-09ACF6B41349E00C8B421ED5C40D3C40923D21F107185B5A135B36FBADE488C1
-8F0C2DEF08A6B185F2D25B8FD8DE7EBC71DD9C15C9F590FCD7B4B8E9690079F5
-39D809ABDDD79A632C99FBDFEDE0A89341919C6B397AD1C8FB7F3BF8C52C1B46
-7BFA51A4DA496B810689769986D6A625AEA159AB2F6C7EDA6E04F0B2631E5E0F
-942624C194230D8A6EF32B3E1B4A5C37C6092246B328CFC926D17AE3B559ECD6
-2FA448C0FA94956EFED3BD7920EF42BB3F25907F097FA990FBEB88E78FDC74AF
-D3D7BC983DE0F33C53780C9A8E98A40C2EFEE93067232133F83C4EB0B2AF0EFE
-D1B3417DE2966B2BA85FB7A32A1B6B57D0EC8645FE35571746F760EF7ED4B9FC
-53857A279CF19C0625D3FA9733C918A74E592DDA7FC1B088A8E323C9845306B2
-9C474BF8FC5F285E76B64020C2A377AA104483039805B8963116E882A0ED9417
-F56A2B0CC9B0857AB0D1B0FB080AC608952DE7DE07F81AF14AB81F90A76F288F
-3B1095F9BD7BF8FAE8294990F0EFA45CDDCE3E24BE64C706C5031856E795A079
-C062F5C28B2429CAE52817C005CB1CB8F97FC6DB2E731FF72D8CD75FE7314C11
-3C83F93A5D1F5A4D928A8D9CBF8F66980FA36717E2BD4D7B52C7F7931CB91E80
-396D5593E022810BA1D5952138AA44DA13E001BE8F854D1AC6773C10F5E8C5E5
-FAC9C1C00D691A1D84FA88AB7A972CB521449280428B3B6B62AA1D7586C5016C
-FD2F558F09577665CB2CA7998B1F54661994EDF2B82229F55A9C657B1E0206FF
-4F8D30F309A2C988FE06D7E6A77AE5A44765FB88A4CED66F8DC8FD7469C483E1
-9849B7A365121843AA23E554102363A21342EEF1C13688E9FA27ACBC3E479F5B
-E64E99C1DB82AC245BE81B1898EAF293D9CE70F1E5B2F5052CF248028DE1944F
-E1416FF897BB9855119C4F5D237A38CAAC27F5E4A9696EDAAA485305A3691ECC
-C283663B80248DF419E3F267BD10B935E88850FD369A91F34A6F3AA6A11A6254
-63FA3BB611268DCD43DAF1F273CFF5AA40177709DD3B5029D6135A47D7E4A76F
-03EDD4DBFAD427D55EDB1D318749E5F3D7F3CFF981214960E8AAD77C0B9BBD24
-29089C360B059722B67B148CA77CC7BD0A3AD65539A373359FDAEAEAF0FB3455
-3D781BB5D8ABE9FCA148C0D612FCB9E33BAD7492CBE37F4ACD720B61B638C141
-CF3F06378534263DF7A7016BC0F159120F2B211FC57203652189D3D1F1EB2FBA
-73248CEB7DCEF5DCACF8250B1582BDA94E3C2E4565EE0D7450761F0EE8A8B0B9
-F62F5D5048E22205C8F61EE206359DFA6318C8F9F67FEA6C0A13A9A4E2F195CF
-2E83FD136DF96EAD2F930FEC1461C89B7755EB308D92A51834C0D0868CF34731
-4FEBCE3AC5B80C92BC4E3364C61F68C34A146D2901A2E4E2EDD9AAE00D964486
-2DD43FAA44163CBDCDD514EC0C9276900A047CB0FB70E21E618AC4B18495D9E2
-2D227915E49156E06E3753326CBCFADAE75F6505CB19D1E803BC2A83D5F3B200
-E4E8D4BD1CA4A3695FBCD4965AAE58587DC18B677E85E05F80FF870EC8B383C9
-21AEF9EF540EB0D7F7F73A56ED422C876FF091DBDCB4B2B7E3A4A25816EB6F8F
-719CDE34FA58AA1738EAF33A81CB0F8B4A35804D62EFF869B14C4E275E4899C4
-9CF66CAE18DD7E93D4DE571177E8B1E3ADA0C216D2C984B9F2E23E8CEB48228E
-D76C7CCD00
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.0: CMMI10 003.002
-%%Title: CMMI10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
-/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI10 def
-/FontBBox {-32 -250 1048 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI10.) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
-1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
-7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
-0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
-EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
-404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
-78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
-A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
-88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
-C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
-BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
-98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
-E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
-143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
-981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
-88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
-4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
-FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
-347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
-FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
-C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
-B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
-F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
-29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
-36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
-048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
-80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
-9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
-75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
-4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
-74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
-D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
-E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
-EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
-543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
-710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
-EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
-7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
-03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
-01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
-500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
-F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
-AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
-1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
-85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
-4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
-6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
-55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
-085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
-BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
-2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
-CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
-BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
-D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
-991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
-6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
-E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
-E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
-B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
-4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
-1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
-B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
-8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
-FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
-AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
-BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
-E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
-38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
-7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
-2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
-DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
-22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
-8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
-44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
-D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
-42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
-C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
-0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
-66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
-E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
-6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
-1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
-B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
-897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
-EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
-A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
-F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
-A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
-2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
-51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
-598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
-87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
-178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
-4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
-7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
-AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
-3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
-337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
-C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
-DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
-7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
-6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
-98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
-821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
-C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
-7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
-B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
-A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
-23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
-C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
-969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
-3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
-9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
-1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
-B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
-95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
-FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
-44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
-FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
-E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
-633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
-6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
-FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
-375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
-6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
-EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
-E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
-F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
-DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
-D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
-D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
-9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
-9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
-B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
-D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
-8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
-FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
-B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
-00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
-909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
-5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
-7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
-BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
-C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
-BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
-BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
-4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
-94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
-F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
-E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
-92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
-63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
-CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
-B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
-5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
-86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
-AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
-3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
-35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
-155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
-AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
-E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
-226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
-9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
-8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
-919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
-A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
-9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
-523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7
-88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D
-2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF
-AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66
-B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22
-CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744
-3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8
-404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84
-262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953
-084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341
-E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI12
-%!PS-AdobeFont-1.0: CMMI12 003.002
-%%Title: CMMI12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup
-/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI12 def
-/FontBBox {-31 -250 1026 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI12.) readonly def
-/FullName (CMMI12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE
-882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3
-2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A
-7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541
-0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69
-987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7
-609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC
-182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A
-CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A
-1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE
-C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D
-3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6
-D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E
-E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200
-761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24
-8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F
-68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D
-10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4
-262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6
-922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16
-56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26
-32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA
-7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460
-7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A
-46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD
-754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF
-88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F
-CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A
-7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760
-8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0
-BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B
-CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25
-8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B
-D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300
-135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A
-C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812
-1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86
-07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39
-14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D
-7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D
-2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D
-639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3
-D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F
-90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948
-10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E
-1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E
-8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC
-D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9
-1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33
-9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875
-EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE
-DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3
-60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8
-FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D
-203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608
-FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09
-DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F
-2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D
-244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077
-31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B
-724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8
-F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7
-D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA
-AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907
-CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF
-01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D
-CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA
-287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605
-8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9
-9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1
-6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5
-7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C
-192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA
-AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4
-A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9
-50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67
-A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912
-3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF
-CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6
-5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96
-8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE
-084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7
-92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2
-AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27
-97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF
-92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5
-7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824
-5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199
-13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76
-6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1
-5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5
-6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83
-F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E
-A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4
-7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A
-9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817
-E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962
-AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD
-F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8
-0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003
-1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31
-7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E
-38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8
-5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F
-3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B
-B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85
-15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B
-AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674
-6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6
-CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322
-EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82
-A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D
-806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4
-461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1
-4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361
-9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C
-172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6
-69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E
-ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690
-356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0
-E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78
-7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C
-B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A
-31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF
-EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7
-98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30
-C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61
-AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208
-E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900
-76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40
-8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573
-CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7
-761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A
-2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138
-89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60
-D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF
-C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485
-D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8
-B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39
-AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F
-D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3
-866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD
-207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73
-756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7
-60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD
-A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A
-1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4
-A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048
-C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3
-03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321
-1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B
-97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE
-D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8
-4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF
-94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97
-201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7
-9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000
-CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7
-29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939
-4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED
-66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31
-14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53
-84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74
-6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12
-49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C
-224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5
-5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4
-A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498
-1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D
-5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6
-40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C
-E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B
-C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD
-CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D
-2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE
-710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45
-FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8
-FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736
-5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.0: CMSY10 003.002
-%%Title: CMSY10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
-/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSY10 def
-/FontBBox {-29 -960 1116 775 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
-7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
-DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
-511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
-1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
-028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
-1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
-3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
-91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
-E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
-11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
-C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
-D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
-B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
-93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
-10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
-7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
-B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
-491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
-F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
-019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
-915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
-356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
-5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
-9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
-3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
-FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
-720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
-D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
-BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
-7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
-DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
-AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
-A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
-0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
-AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
-CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
-0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
-5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
-5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
-E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
-54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
-E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
-A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
-4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
-4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
-038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
-B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
-5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
-B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
-A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
-2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
-CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
-455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
-FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
-16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
-16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
-483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
-67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
-3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
-1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
-93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
-051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
-8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
-8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
-6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
-06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
-84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
-D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
-DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
-0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
-8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
-C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
-754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
-1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
-CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
-1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
-153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
-905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
-617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
-8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
-98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
-53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
-888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
-052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
-CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
-A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
-07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
-B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
-10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
-CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
-3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
-D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
-849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
-648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
-84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
-2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
-2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
-9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
-B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
-D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
-135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
-EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
-C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
-7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
-4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
-9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
-050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
-3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
-C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
-843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
-CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
-B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
-3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
-19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
-FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
-17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
-8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
-CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
-F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
-1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
-4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
-2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
-9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
-E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
-8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
-BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
-04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
-C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
-ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
-4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
-84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
-C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
-09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
-D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
-56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
-035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
-FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
-CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
-B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
-F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
-CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
-0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
-B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
-33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
-4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
-F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
-2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
-CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
-88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
-17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
-55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
-A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
-2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
-406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
-AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
-60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
-C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
-5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
-822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
-94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
-D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
-343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
-894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
-DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
-DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
-8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
-A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
-DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
-E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
-DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
-4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
-5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
-02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
-88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
-60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
-71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
-9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
-A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
-AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
-F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
-A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
-AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
-EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
-EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
-CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
-86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
-AE5400775223E684BFCB
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-TeXDict begin 39158280 55380996 1000 300 300 (history.dvi)
-@start /Fa 197[11 58[{}1 37.3599 /CMMI9 rf /Fb 134[20
-20 1[20 1[15 15 15 1[21 19 21 4[11 21 19 1[17 21 17 1[19
-13[21 10[29 14[19 19 19 19 19 3[19 49[{}24 37.3599 /CMR9
-rf /Fc 134[20 3[20 20 20 20 2[20 20 20 20 2[20 20 2[20
-3[20 97[{}13 37.3599 /CMSLTT10 rf /Fd 167[31 3[30 23
-2[28 1[31 38 26 1[21 1[31 33 27 1[32 30 67[{}13 41.511
-/CMR10 rf /Fe 130[20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 1[20 20 20 20 20 20 20 20 20 20
-20 1[20 20 20 1[20 2[20 20 20 20 20 1[20 1[20 1[20 2[20
-20 20 20 20 20 20 20 20 2[20 20 20 20 20 3[20 1[20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-33[{}77 37.3599 /CMTT9 rf /Ff 214[18 18 40[{}2 45.4545
-/CMSS10 rf /Fg 133[26 26 26 26 26 26 26 26 26 26 26 26
-26 26 26 26 1[26 26 26 26 26 26 26 26 26 1[26 5[26 4[26
-26 26 2[26 26 4[26 26 2[26 3[26 22[26 42[{}37 49.8132
-/CMTT10 rf /Fh 134[24 24 24 1[24 24 24 24 2[24 24 1[24
-2[24 1[24 24 24 24 49[24 24 49[{}17 45.4545 /CMSLTT10
-rf /Fi 133[27 32 32 1[32 34 24 24 25 1[34 31 34 51 17
-2[17 34 31 19 28 34 27 34 30 9[63 3[34 5[58 37 2[23 48
-1[39 40 47 2[46 9[31 31 31 31 31 31 31 2[17 33[34 12[{}41
-54.5455 /CMBX12 rf /Fj 134[24 24 33 24 25 18 18 18 24
-25 23 25 38 13 2[13 25 23 14 20 25 20 1[23 3[13 1[13
-1[34 4[33 25 33 2[35 34 4[16 34 2[31 3[34 14[23 23 4[13
-1[23 29[25 27 11[{}40 45.4545 /CMSL10 rf /Fk 138[28 1[21
-4[28 4[14 1[29 3[27 1[28 97[{}7 45.4545 /CMCSC10 rf /Fl
-197[13 58[{}1 45.4545 /CMMI10 rf /Fm 197[16 58[{}1 59.7758
-/CMMI12 rf /Fn 134[43 43 58 43 45 31 32 33 1[45 40 45
-67 22 2[22 45 40 25 37 45 36 45 39 10[61 62 56 3[55 1[63
-1[48 2[30 63 63 51 1[62 58 57 61 14[40 40 49[{}38 71.731
-/CMBX12 rf /Fo 242[45 13[{}1 45.4545 /CMSY10 rf /Fp 134[35
-35 49 35 37 26 27 27 1[37 34 37 56 19 2[19 37 34 21 31
-37 30 37 33 9[69 51 52 1[37 50 1[46 1[53 64 40 2[25 53
-53 42 44 52 49 48 51 6[19 4[34 34 34 34 34 34 1[19 1[19
-44[{}49 59.7758 /CMBX12 rf /Fq 129[24 24 24 24 24 24
-1[24 24 24 24 24 24 1[24 24 24 24 24 24 1[24 24 24 24
-24 24 24 24 24 1[24 24 24 24 24 1[24 3[24 24 24 24 1[24
-24 24 1[24 2[24 24 24 24 24 24 1[24 24 1[24 24 24 24
-24 24 7[24 24 24 24 24 24 1[24 24 24 24 1[24 24 24 24
-24 24 33[{}71 45.4545 /CMTT10 rf /Fr 131[45 23 20 24
-24 33 24 25 18 18 18 24 25 23 25 38 13 24 14 13 25 23
-14 20 25 20 25 23 13 2[13 23 13 28 34 34 47 34 34 33
-25 33 35 31 35 34 42 28 35 23 16 34 36 30 31 35 33 32
-34 5[13 13 23 23 23 23 23 23 23 23 23 23 23 13 15 13
-2[18 18 13 4[23 19[38 25 25 27 11[{}82 45.4545 /CMR10
-rf /Fs 134[51 4[38 38 40 2[48 5[27 6[54 47 11[74 6[76
-1[58 3[76 76 71[{}13 86.0772 /CMBX12 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: a4
-/setpagedevice where
-{ pop << /PageSize [595 842] >> setpagedevice }
-{ /a4 where { pop a4 } if }
-ifelse
-%%EndPaperSize
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 75 659 a Fs(GNU)33 b(History)e(Library)p
-75 709 1800 17 v 960 757 a Fr(Edition)14 b(6.4,)g(for)h
-Fq(History)f(Library)g Fr(V)l(ersion)h(6.4.)1682 811
-y(Ma)o(y)f(2015)75 2467 y Fp(Chet)22 b(Ramey)-6 b(,)23
-b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
-2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
-b(oundation)p 75 2570 1800 9 v eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 75 2207 a Fr(This)15 b(do)q(cumen)o(t)i(describ)q
-(es)f(the)g(GNU)g(History)e(library)h(\(v)o(ersion)g(6.4,)f(28)h(Ma)o
-(y)g(2015\),)f(a)i(program-)75 2262 y(ming)i(to)q(ol)g(that)h(pro)o
-(vides)f(a)h(consisten)o(t)f(user)h(in)o(terface)f(for)h(recalling)e
-(lines)i(of)f(previously)h(t)o(yp)q(ed)75 2316 y(input.)75
-2384 y(Cop)o(yrigh)o(t)301 2383 y(c)289 2384 y Fo(\015)c
-Fr(1988{2014)e(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)195
-2451 y(P)o(ermission)9 b(is)h(gran)o(ted)f(to)h(cop)o(y)l(,)h
-(distribute)e(and/or)h(mo)q(dify)g(this)f(do)q(cumen)o(t)i(under)g(the)
-195 2506 y(terms)h(of)g(the)h(GNU)g(F)l(ree)f(Do)q(cumen)o(tation)g
-(License,)h(V)l(ersion)g(1.3)f(or)g(an)o(y)g(later)g(v)o(ersion)195
-2560 y(published)23 b(b)o(y)f(the)h(F)l(ree)f(Soft)o(w)o(are)f(F)l
-(oundation;)k(with)c(no)i(In)o(v)m(arian)o(t)e(Sections,)j(no)195
-2615 y(F)l(ron)o(t-Co)o(v)o(er)13 b(T)l(exts,)h(and)g(no)h(Bac)o(k-Co)o
-(v)o(er)e(T)l(exts.)20 b(A)14 b(cop)o(y)g(of)g(the)h(license)f(is)g
-(included)195 2670 y(in)h(the)g(section)g(en)o(titled)f(\\GNU)h(F)l
-(ree)g(Do)q(cumen)o(tation)g(License".)p eop end
-%%Page: -1 3
-TeXDict begin -1 2 bop 1862 -58 a Fr(i)75 149 y Fn(T)-7
-b(able)28 b(of)e(Con)n(ten)n(ts)75 320 y Fp(1)67 b(Using)21
-b(History)h(In)n(teractiv)n(ely)12 b Fm(:)f(:)g(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fp(1)137
-389 y Fr(1.1)45 b(History)14 b(Expansion)f Fl(:)7 b(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)27 b Fr(1)200 444 y(1.1.1)43 b(Ev)o(en)o(t)15
-b(Designators)8 b Fl(:)d(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 b Fr(1)200
-499 y(1.1.2)43 b(W)l(ord)15 b(Designators)c Fl(:)6 b(:)h(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-25 b Fr(2)200 553 y(1.1.3)43 b(Mo)q(di\014ers)6 b Fl(:)h(:)g(:)h(:)f(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)20 b Fr(2)75
-675 y Fp(2)67 b(Programming)22 b(with)g(GNU)g(History)16
-b Fm(:)10 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)39
-b Fp(4)137 743 y Fr(2.1)45 b(In)o(tro)q(duction)15 b(to)f(History)5
-b Fl(:)h(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Fr(4)137 798 y(2.2)45
-b(History)14 b(Storage)d Fl(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)26 b Fr(4)137 853 y(2.3)45 b(History)14 b(F)l(unctions)c
-Fl(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)24 b Fr(5)200
-907 y(2.3.1)43 b(Initializing)14 b(History)g(and)h(State)g(Managemen)o
-(t)5 b Fl(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)19 b Fr(5)200 962 y(2.3.2)43 b(History)14 b(List)h(Managemen)o
-(t)5 b Fl(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)20 b Fr(5)200 1017 y(2.3.3)43 b(Information)15 b(Ab)q(out)g(the)g
-(History)f(List)7 b Fl(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fr(6)200
-1072 y(2.3.4)43 b(Mo)o(ving)14 b(Around)i(the)f(History)f(List)8
-b Fl(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fr(6)200
-1127 y(2.3.5)43 b(Searc)o(hing)15 b(the)h(History)e(List)9
-b Fl(:)d(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
-b Fr(7)200 1181 y(2.3.6)43 b(Managing)14 b(the)i(History)e(File)7
-b Fl(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)21
-b Fr(7)200 1236 y(2.3.7)43 b(History)14 b(Expansion)5
-b Fl(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Fr(8)137 1291 y(2.4)45
-b(History)14 b(V)l(ariables)5 b Fl(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)19 b Fr(8)137 1346 y(2.5)45 b(History)14 b(Programming)f
-(Example)7 b Fl(:)f(:)i(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-21 b Fr(10)75 1467 y Fp(App)r(endix)i(A)80 b(GNU)22 b(F)-6
-b(ree)23 b(Do)r(cumen)n(tation)e(License)223 1533 y Fm(:)10
-b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b
-Fp(12)75 1668 y(App)r(endix)23 b(B)83 b(Concept)22 b(Index)12
-b Fm(:)f(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)35 b Fp(20)75 1803 y(App)r(endix)23 b(C)82
-b(F)-6 b(unction)24 b(and)f(V)-6 b(ariable)22 b(Index)17
-b Fm(:)11 b(:)f(:)g(:)40 b Fp(21)p eop end
-%%Page: 1 4
-TeXDict begin 1 3 bop 75 -58 a Fr(Chapter)15 b(1:)k(Using)c(History)f
-(In)o(teractiv)o(ely)1005 b(1)75 149 y Fn(1)41 b(Using)27
-b(History)h(In)n(teractiv)n(ely)75 276 y Fr(This)21 b(c)o(hapter)g
-(describ)q(es)h(ho)o(w)f(to)f(use)i(the)f Fk(gnu)g Fr(History)f
-(Library)h(in)o(teractiv)o(ely)l(,)g(from)f(a)h(user's)75
-330 y(standp)q(oin)o(t.)37 b(It)21 b(should)g(b)q(e)h(considered)f(a)g
-(user's)g(guide.)37 b(F)l(or)21 b(information)e(on)i(using)g(the)g
-Fk(gnu)75 385 y Fr(History)16 b(Library)h(in)h(y)o(our)f(o)o(wn)g
-(programs,)f(see)i(Chapter)f(2)h([Programming)d(with)i(GNU)g(History],)
-75 440 y(page)e(4.)75 561 y Fp(1.1)33 b(History)21 b(Expansion)75
-640 y Fr(The)i(History)e(library)h(pro)o(vides)g(a)g(history)g
-(expansion)g(feature)g(that)g(is)h(similar)d(to)i(the)h(history)75
-695 y(expansion)f(pro)o(vided)h(b)o(y)f Fq(csh)p Fr(.)41
-b(This)22 b(section)g(describ)q(es)h(the)g(syn)o(tax)e(used)i(to)f
-(manipulate)g(the)75 750 y(history)14 b(information.)137
-820 y(History)g(expansions)h(in)o(tro)q(duce)h(w)o(ords)e(from)g(the)i
-(history)e(list)g(in)o(to)g(the)i(input)f(stream,)f(making)75
-875 y(it)g(easy)h(to)g(rep)q(eat)g(commands,)g(insert)g(the)g(argumen)o
-(ts)f(to)h(a)g(previous)g(command)g(in)o(to)f(the)h(curren)o(t)75
-930 y(input)g(line,)g(or)f(\014x)i(errors)e(in)h(previous)g(commands)g
-(quic)o(kly)l(.)137 1000 y(History)i(expansion)i(tak)o(es)e(place)h(in)
-h(t)o(w)o(o)e(parts.)28 b(The)19 b(\014rst)f(is)f(to)h(determine)h
-(whic)o(h)f(line)g(from)75 1055 y(the)j(history)e(list)h(should)h(b)q
-(e)g(used)g(during)g(substitution.)35 b(The)21 b(second)g(is)f(to)g
-(select)h(p)q(ortions)e(of)75 1110 y(that)c(line)g(for)f(inclusion)h
-(in)o(to)f(the)i(curren)o(t)f(one.)20 b(The)c(line)e(selected)i(from)f
-(the)g(history)f(is)h(called)g(the)75 1164 y Fj(ev)o(en)o(t)p
-Fr(,)e(and)h(the)g(p)q(ortions)f(of)g(that)g(line)g(that)g(are)g(acted)
-h(up)q(on)g(are)f(called)h Fj(w)o(ords)p Fr(.)k(V)l(arious)13
-b Fj(mo)q(di\014ers)75 1219 y Fr(are)j(a)o(v)m(ailable)f(to)h
-(manipulate)g(the)g(selected)h(w)o(ords.)23 b(The)17
-b(line)f(is)g(brok)o(en)g(in)o(to)g(w)o(ords)f(in)i(the)f(same)75
-1274 y(fashion)11 b(that)f(Bash)i(do)q(es,)g(so)f(that)g(sev)o(eral)f
-(w)o(ords)h(surrounded)h(b)o(y)f(quotes)h(are)f(considered)g(one)h(w)o
-(ord.)75 1329 y(History)17 b(expansions)h(are)h(in)o(tro)q(duced)f(b)o
-(y)g(the)h(app)q(earance)g(of)f(the)g(history)g(expansion)g(c)o
-(haracter,)75 1384 y(whic)o(h)d(is)g(`)p Fq(!)p Fr(')f(b)o(y)h
-(default.)75 1486 y Fi(1.1.1)30 b(Ev)n(en)n(t)21 b(Designators)75
-1560 y Fr(An)c(ev)o(en)o(t)f(designator)f(is)h(a)g(reference)h(to)f(a)g
-(command)g(line)g(en)o(try)g(in)g(the)h(history)e(list.)23
-b(Unless)16 b(the)75 1614 y(reference)g(is)f(absolute,)f(ev)o(en)o(ts)h
-(are)g(relativ)o(e)e(to)i(the)g(curren)o(t)g(p)q(osition)f(in)h(the)h
-(history)e(list.)75 1699 y Fq(!)216 b Fr(Start)16 b(a)g(history)g
-(substitution,)f(except)j(when)f(follo)o(w)o(ed)e(b)o(y)h(a)h(space,)g
-(tab,)f(the)h(end)g(of)315 1753 y(the)e(line,)g(or)f(`)p
-Fq(=)p Fr('.)75 1836 y Fq(!)p Fh(n)192 b Fr(Refer)16
-b(to)e(command)h(line)g Fj(n)p Fr(.)75 1919 y Fq(!-)p
-Fh(n)168 b Fr(Refer)16 b(to)e(the)i(command)f Fj(n)g
-Fr(lines)g(bac)o(k.)75 2002 y Fq(!!)192 b Fr(Refer)16
-b(to)e(the)i(previous)e(command.)20 b(This)15 b(is)g(a)g(synon)o(ym)g
-(for)f(`)p Fq(!-1)p Fr('.)75 2084 y Fq(!)p Fh(string)72
-b Fr(Refer)13 b(to)f(the)h(most)e(recen)o(t)i(command)f(preceding)h
-(the)g(curren)o(t)f(p)q(osition)g(in)g(the)h(history)315
-2139 y(list)h(starting)g(with)g Fj(string)p Fr(.)75 2222
-y Fq(!?)p Fh(string)p Fq([?])315 2277 y Fr(Refer)f(to)f(the)h(most)e
-(recen)o(t)i(command)f(preceding)h(the)g(curren)o(t)f(p)q(osition)g(in)
-g(the)h(history)315 2331 y(list)i(con)o(taining)f Fj(string)p
-Fr(.)21 b(The)c(trailing)c(`)p Fq(?)p Fr(')i(ma)o(y)h(b)q(e)g(omitted)f
-(if)g(the)h Fj(string)j Fr(is)d(follo)o(w)o(ed)315 2386
-y(immediately)e(b)o(y)h(a)g(newline.)75 2469 y Fq(^)p
-Fh(string1)p Fq(^)p Fh(string2)p Fq(^)315 2524 y Fr(Quic)o(k)h
-(Substitution.)21 b(Rep)q(eat)c(the)f(last)e(command,)i(replacing)f
-Fj(string1)j Fr(with)e Fj(string2)p Fr(.)315 2578 y(Equiv)m(alen)o(t)f
-(to)f Fq(!!:s/)p Fh(string1)p Fq(/)p Fh(string2)p Fq(/)p
-Fr(.)75 2661 y Fq(!#)192 b Fr(The)15 b(en)o(tire)g(command)g(line)g(t)o
-(yp)q(ed)h(so)e(far.)p eop end
-%%Page: 2 5
-TeXDict begin 2 4 bop 75 -58 a Fr(Chapter)15 b(1:)k(Using)c(History)f
-(In)o(teractiv)o(ely)1005 b(2)75 149 y Fi(1.1.2)30 b(W)-5
-b(ord)20 b(Designators)75 223 y Fr(W)l(ord)13 b(designators)g(are)g
-(used)h(to)f(select)g(desired)h(w)o(ords)f(from)g(the)g(ev)o(en)o(t.)19
-b(A)14 b(`)p Fq(:)p Fr(')f(separates)g(the)g(ev)o(en)o(t)75
-278 y(sp)q(eci\014cation)18 b(from)g(the)g(w)o(ord)g(designator.)29
-b(It)18 b(ma)o(y)g(b)q(e)h(omitted)e(if)h(the)h(w)o(ord)e(designator)h
-(b)q(egins)75 333 y(with)c(a)h(`)p Fq(^)p Fr(',)f(`)p
-Fq($)p Fr(',)f(`)p Fq(*)p Fr(',)h(`)p Fq(-)p Fr(',)g(or)g(`)p
-Fq(\045)p Fr('.)19 b(W)l(ords)14 b(are)h(n)o(um)o(b)q(ered)h(from)e
-(the)h(b)q(eginning)g(of)f(the)h(line,)g(with)f(the)75
-387 y(\014rst)g(w)o(ord)g(b)q(eing)h(denoted)g(b)o(y)g(0)f(\(zero\).)19
-b(W)l(ords)14 b(are)h(inserted)f(in)o(to)g(the)h(curren)o(t)f(line)h
-(separated)f(b)o(y)75 442 y(single)h(spaces.)137 513
-y(F)l(or)g(example,)75 599 y Fq(!!)192 b Fr(designates)17
-b(the)h(preceding)h(command.)28 b(When)18 b(y)o(ou)g(t)o(yp)q(e)g
-(this,)g(the)g(preceding)g(com-)315 653 y(mand)d(is)g(rep)q(eated)h(in)
-f(toto.)75 737 y Fq(!!:$)144 b Fr(designates)11 b(the)g(last)f(argumen)
-o(t)g(of)h(the)g(preceding)h(command.)19 b(This)10 b(ma)o(y)h(b)q(e)h
-(shortened)315 792 y(to)j Fq(!$)p Fr(.)75 875 y Fq(!fi:2)120
-b Fr(designates)14 b(the)h(second)g(argumen)o(t)f(of)g(the)h(most)f
-(recen)o(t)g(command)h(starting)e(with)h(the)315 930
-y(letters)g Fq(fi)p Fr(.)137 1015 y(Here)i(are)f(the)g(w)o(ord)f
-(designators:)75 1101 y Fq(0)h(\(zero\))57 b Fr(The)15
-b Fq(0)p Fr(th)g(w)o(ord.)20 b(F)l(or)14 b(man)o(y)h(applications,)e
-(this)i(is)g(the)g(command)g(w)o(ord.)75 1184 y Fh(n)216
-b Fr(The)15 b Fj(n)p Fr(th)h(w)o(ord.)75 1268 y Fq(^)216
-b Fr(The)15 b(\014rst)g(argumen)o(t;)f(that)h(is,)f(w)o(ord)h(1.)75
-1351 y Fq($)216 b Fr(The)15 b(last)g(argumen)o(t.)75
-1435 y Fq(\045)216 b Fr(The)15 b(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)g
-(most)g(recen)o(t)g(`)p Fq(?)p Fh(string)p Fq(?)p Fr(')e(searc)o(h.)75
-1518 y Fh(x)p Fq(-)p Fh(y)168 b Fr(A)15 b(range)g(of)g(w)o(ords;)f(`)p
-Fq(-)p Fh(y)p Fr(')g(abbreviates)h(`)p Fq(0-)p Fh(y)p
-Fr('.)75 1602 y Fq(*)216 b Fr(All)13 b(of)h(the)f(w)o(ords,)g(except)i
-(the)f Fq(0)p Fr(th.)19 b(This)13 b(is)h(a)f(synon)o(ym)h(for)f(`)p
-Fq(1-$)p Fr('.)18 b(It)c(is)f(not)h(an)g(error)315 1657
-y(to)g(use)h(`)p Fq(*)p Fr(')f(if)h(there)f(is)h(just)f(one)h(w)o(ord)f
-(in)h(the)g(ev)o(en)o(t;)f(the)h(empt)o(y)g(string)f(is)g(returned)h
-(in)315 1712 y(that)f(case.)75 1795 y Fh(x)p Fq(*)192
-b Fr(Abbreviates)15 b(`)p Fh(x)p Fq(-$)p Fr(')75 1879
-y Fh(x)p Fq(-)192 b Fr(Abbreviates)15 b(`)p Fh(x)p Fq(-$)p
-Fr(')f(lik)o(e)g(`)p Fh(x)p Fq(*)p Fr(',)g(but)h(omits)f(the)i(last)e
-(w)o(ord.)137 1964 y(If)j(a)g(w)o(ord)f(designator)g(is)h(supplied)g
-(without)f(an)h(ev)o(en)o(t)f(sp)q(eci\014cation,)h(the)g(previous)g
-(command)75 2019 y(is)e(used)g(as)g(the)h(ev)o(en)o(t.)75
-2122 y Fi(1.1.3)30 b(Mo)r(di\014ers)75 2196 y Fr(After)14
-b(the)g(optional)f(w)o(ord)h(designator,)f(y)o(ou)h(can)g(add)h(a)f
-(sequence)h(of)f(one)g(or)g(more)g(of)g(the)g(follo)o(wing)75
-2250 y(mo)q(di\014ers,)h(eac)o(h)g(preceded)i(b)o(y)e(a)g(`)p
-Fq(:)p Fr('.)75 2336 y Fq(h)216 b Fr(Remo)o(v)o(e)15
-b(a)g(trailing)e(pathname)i(comp)q(onen)o(t,)g(lea)o(ving)f(only)h(the)
-g(head.)75 2419 y Fq(t)216 b Fr(Remo)o(v)o(e)15 b(all)f(leading)h
-(pathname)g(comp)q(onen)o(ts,)g(lea)o(ving)f(the)h(tail.)75
-2503 y Fq(r)216 b Fr(Remo)o(v)o(e)15 b(a)g(trailing)e(su\016x)i(of)g
-(the)g(form)g(`)p Fq(.)p Fh(suffix)p Fr(',)e(lea)o(ving)h(the)h
-(basename.)75 2586 y Fq(e)216 b Fr(Remo)o(v)o(e)15 b(all)f(but)i(the)f
-(trailing)e(su\016x.)75 2670 y Fq(p)216 b Fr(Prin)o(t)14
-b(the)h(new)h(command)f(but)g(do)g(not)g(execute)h(it.)p
-eop end
-%%Page: 3 6
-TeXDict begin 3 5 bop 75 -58 a Fr(Chapter)15 b(1:)k(Using)c(History)f
-(In)o(teractiv)o(ely)1005 b(3)75 149 y Fq(s/)p Fh(old)p
-Fq(/)p Fh(new)p Fq(/)315 204 y Fr(Substitute)16 b Fj(new)k
-Fr(for)c(the)h(\014rst)e(o)q(ccurrence)j(of)e Fj(old)h
-Fr(in)f(the)h(ev)o(en)o(t)f(line.)23 b(An)o(y)16 b(delimiter)315
-259 y(ma)o(y)c(b)q(e)h(used)g(in)f(place)g(of)g(`)p Fq(/)p
-Fr('.)18 b(The)13 b(delimiter)e(ma)o(y)h(b)q(e)h(quoted)f(in)h
-Fj(old)g Fr(and)g Fj(new)k Fr(with)11 b(a)315 314 y(single)i(bac)o
-(kslash.)19 b(If)c(`)p Fq(&)p Fr(')e(app)q(ears)h(in)g
-Fj(new)p Fr(,)g(it)f(is)h(replaced)g(b)o(y)g Fj(old)p
-Fr(.)19 b(A)14 b(single)g(bac)o(kslash)315 369 y(will)i(quote)h(the)h
-(`)p Fq(&)p Fr('.)25 b(The)17 b(\014nal)h(delimiter)e(is)h(optional)f
-(if)g(it)h(is)g(the)g(last)f(c)o(haracter)h(on)315 423
-y(the)e(input)g(line.)75 503 y Fq(&)216 b Fr(Rep)q(eat)16
-b(the)f(previous)g(substitution.)75 583 y Fq(g)75 638
-y(a)216 b Fr(Cause)19 b(c)o(hanges)h(to)e(b)q(e)i(applied)f(o)o(v)o(er)
-g(the)g(en)o(tire)g(ev)o(en)o(t)g(line.)32 b(Used)20
-b(in)f(conjunction)315 692 y(with)c(`)p Fq(s)p Fr(',)e(as)i(in)g
-Fq(gs/)p Fh(old)p Fq(/)p Fh(new)p Fq(/)p Fr(,)f(or)g(with)h(`)p
-Fq(&)p Fr('.)75 772 y Fq(G)216 b Fr(Apply)15 b(the)h(follo)o(wing)d(`)p
-Fq(s)p Fr(')h(mo)q(di\014er)h(once)h(to)e(eac)o(h)h(w)o(ord)g(in)g(the)
-g(ev)o(en)o(t.)p eop end
-%%Page: 4 7
-TeXDict begin 4 6 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)888 b(4)75 149 y Fn(2)41 b(Programming)29
-b(with)e(GNU)h(History)75 261 y Fr(This)21 b(c)o(hapter)f(describ)q(es)
-i(ho)o(w)e(to)h(in)o(terface)f(programs)g(that)g(y)o(ou)h(write)f(with)
-g(the)h Fk(gnu)g Fr(History)75 316 y(Library)l(.)i(It)17
-b(should)f(b)q(e)h(considered)g(a)f(tec)o(hnical)g(guide.)24
-b(F)l(or)15 b(information)g(on)h(the)h(in)o(teractiv)o(e)e(use)75
-371 y(of)g Fk(gnu)g Fr(History)l(,)f(see)h(Chapter)g(1)g([Using)f
-(History)g(In)o(teractiv)o(ely],)g(page)h(1.)75 485 y
-Fp(2.1)33 b(In)n(tro)r(duction)23 b(to)f(History)75 565
-y Fr(Man)o(y)15 b(programs)e(read)j(input)f(from)f(the)h(user)h(a)f
-(line)g(at)f(a)h(time.)k(The)d Fk(gnu)f Fr(History)f(library)g(is)g
-(able)75 620 y(to)g(k)o(eep)g(trac)o(k)g(of)g(those)g(lines,)g(asso)q
-(ciate)f(arbitrary)g(data)h(with)f(eac)o(h)i(line,)f(and)g(utilize)g
-(information)75 675 y(from)g(previous)h(lines)g(in)g(comp)q(osing)g
-(new)g(ones.)137 741 y(The)f(programmer)f(using)g(the)h(History)f
-(library)f(has)i(a)o(v)m(ailable)e(functions)i(for)f(remem)o(b)q(ering)
-g(lines)75 796 y(on)d(a)g(history)g(list,)f(asso)q(ciating)g(arbitrary)
-g(data)g(with)h(a)g(line,)h(remo)o(ving)e(lines)h(from)f(the)i(list,)f
-(searc)o(hing)75 850 y(through)17 b(the)h(list)e(for)h(a)h(line)f(con)o
-(taining)f(an)i(arbitrary)e(text)h(string,)g(and)h(referencing)g(an)o
-(y)f(line)g(in)75 905 y(the)e(list)g(directly)l(.)20
-b(In)c(addition,)e(a)h(history)f Fj(expansion)h Fr(function)h(is)e(a)o
-(v)m(ailable)g(whic)o(h)i(pro)o(vides)f(for)f(a)75 960
-y(consisten)o(t)g(user)i(in)o(terface)e(across)h(di\013eren)o(t)f
-(programs.)137 1026 y(The)g(user)h(using)e(programs)g(written)g(with)g
-(the)h(History)f(library)g(has)h(the)g(b)q(ene\014t)h(of)e(a)h
-(consisten)o(t)75 1081 y(user)20 b(in)o(terface)e(with)h(a)g(set)h(of)f
-(w)o(ell-kno)o(wn)f(commands)i(for)e(manipulating)h(the)g(text)g(of)g
-(previous)75 1136 y(lines)13 b(and)h(using)g(that)f(text)g(in)h(new)g
-(commands.)19 b(The)14 b(basic)g(history)e(manipulation)h(commands)g
-(are)75 1191 y(similar)g(to)i(the)g(history)f(substitution)g(pro)o
-(vided)h(b)o(y)h Fq(csh)p Fr(.)137 1257 y(If)f(the)g(programmer)f
-(desires,)g(he)h(can)g(use)g(the)g(Readline)g(library)l(,)f(whic)o(h)g
-(includes)i(some)e(history)75 1312 y(manipulation)g(b)o(y)h(default,)f
-(and)i(has)f(the)g(added)h(adv)m(an)o(tage)f(of)f(command)h(line)g
-(editing.)137 1378 y(Before)k(declaring)g(an)o(y)f(functions)h(using)g
-(an)o(y)g(functionalit)o(y)e(the)i(History)f(library)g(pro)o(vides)g
-(in)75 1433 y(other)c(co)q(de,)h(an)f(application)f(writer)g(should)i
-(include)f(the)h(\014le)f Fq(<readline/history.h>)e Fr(in)i(an)o(y)g
-(\014le)75 1487 y(that)d(uses)h(the)h(History)d(library's)h(features.)
-18 b(It)12 b(supplies)g(extern)g(declarations)f(for)g(all)g(of)h(the)g
-(library's)75 1542 y(public)j(functions)g(and)h(v)m(ariables,)e(and)h
-(declares)g(all)f(of)h(the)h(public)f(data)f(structures.)75
-1656 y Fp(2.2)33 b(History)21 b(Storage)75 1736 y Fr(The)15
-b(history)g(list)f(is)g(an)h(arra)o(y)f(of)h(history)f(en)o(tries.)20
-b(A)15 b(history)f(en)o(try)h(is)f(declared)i(as)f(follo)o(ws:)195
-1802 y Fq(typedef)23 b(void)g(*histdata_t;)195 1912 y(typedef)g(struct)
-g(_hist_entry)f({)243 1967 y(char)h(*line;)243 2021 y(char)g
-(*timestamp;)243 2076 y(histdata_t)f(data;)195 2131 y(})i(HIST_ENTRY;)
-137 2197 y Fr(The)16 b(history)e(list)g(itself)g(migh)o(t)g(therefore)h
-(b)q(e)h(declared)f(as)195 2264 y Fq(HIST_ENTRY)22 b
-(**the_history_list;)137 2330 y Fr(The)16 b(state)e(of)h(the)g(History)
-f(library)g(is)h(encapsulated)g(in)o(to)f(a)h(single)g(structure:)195
-2396 y Fq(/*)219 2451 y(*)24 b(A)f(structure)g(used)g(to)h(pass)f
-(around)g(the)h(current)f(state)g(of)g(the)h(history.)219
-2506 y(*/)195 2560 y(typedef)f(struct)g(_hist_state)f({)243
-2615 y(HIST_ENTRY)g(**entries;)h(/*)g(Pointer)g(to)h(the)f(entries)g
-(themselves.)g(*/)243 2670 y(int)g(offset;)262 b(/*)23
-b(The)h(location)f(pointer)f(within)h(this)h(array.)f(*/)p
-eop end
-%%Page: 5 8
-TeXDict begin 5 7 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)888 b(5)243 149 y Fq(int)23 b(length;)262
-b(/*)23 b(Number)g(of)h(elements)f(within)g(this)g(array.)g(*/)243
-204 y(int)g(size;)310 b(/*)23 b(Number)g(of)h(slots)f(allocated)g(to)g
-(this)h(array.)f(*/)243 259 y(int)g(flags;)195 314 y(})h
-(HISTORY_STATE;)137 382 y Fr(If)16 b(the)f(\015ags)g(mem)o(b)q(er)g
-(includes)h Fq(HS_STIFLED)p Fr(,)d(the)i(history)g(has)g(b)q(een)h
-(sti\015ed.)75 500 y Fp(2.3)33 b(History)21 b(F)-6 b(unctions)75
-580 y Fr(This)17 b(section)f(describ)q(es)i(the)f(calling)f(sequence)i
-(for)f(the)g(v)m(arious)g(functions)f(exp)q(orted)i(b)o(y)f(the)g
-Fk(gnu)75 635 y Fr(History)d(library)l(.)75 735 y Fi(2.3.1)30
-b(Initializing)20 b(History)h(and)f(State)g(Managemen)n(t)75
-809 y Fr(This)11 b(section)f(describ)q(es)i(functions)f(used)g(to)g
-(initialize)e(and)i(manage)f(the)i(state)e(of)g(the)h(History)f
-(library)75 864 y(when)16 b(y)o(ou)f(w)o(an)o(t)f(to)g(use)i(the)f
-(history)f(functions)h(in)g(y)o(our)g(program.)1675 958
-y([F)l(unction])-1801 b Fg(void)27 b(using_history)d
-Ff(\()p Fj(v)o(oid)p Ff(\))195 1013 y Fr(Begin)c(a)g(session)f(in)h
-(whic)o(h)g(the)g(history)f(functions)g(migh)o(t)g(b)q(e)i(used.)34
-b(This)20 b(initializes)e(the)195 1068 y(in)o(teractiv)o(e)c(v)m
-(ariables.)1675 1162 y([F)l(unction])-1801 b Fg(HISTORY_STATE)28
-b(*)e(history_get_history_s)q(tate)g Ff(\()p Fj(v)o(oid)p
-Ff(\))195 1217 y Fr(Return)16 b(a)f(structure)g(describing)g(the)g
-(curren)o(t)g(state)f(of)h(the)g(input)h(history)l(.)1675
-1311 y([F)l(unction])-1801 b Fg(void)27 b(history_set_history_state)f
-Ff(\()p Fj(HISTOR)l(Y)p 1109 1311 14 2 v 22 w(ST)l(A)l(TE)15
-b(*state)p Ff(\))195 1366 y Fr(Set)g(the)h(state)e(of)h(the)g(history)f
-(list)g(according)h(to)f Fj(state)p Fr(.)75 1467 y Fi(2.3.2)30
-b(History)20 b(List)h(Managemen)n(t)75 1540 y Fr(These)16
-b(functions)g(manage)g(individual)f(en)o(tries)g(on)h(the)g(history)f
-(list,)g(or)g(set)h(parameters)f(managing)75 1595 y(the)g(list)f
-(itself.)1675 1690 y([F)l(unction])-1801 b Fg(void)27
-b(add_history)d Ff(\()p Fj(const)15 b(c)o(har)g(*string)p
-Ff(\))195 1744 y Fr(Place)g Fj(string)i Fr(at)e(the)g(end)h(of)e(the)h
-(history)f(list.)19 b(The)c(asso)q(ciated)f(data)h(\014eld)g(\(if)f(an)
-o(y\))g(is)h(set)g(to)195 1799 y Fq(NULL)p Fr(.)1675
-1894 y([F)l(unction])-1801 b Fg(void)27 b(add_history_time)e
-Ff(\()p Fj(const)15 b(c)o(har)f(*string)p Ff(\))195 1948
-y Fr(Change)h(the)g(time)g(stamp)g(asso)q(ciated)f(with)h(the)g(most)f
-(recen)o(t)h(history)g(en)o(try)f(to)h Fj(string)p Fr(.)1675
-2043 y([F)l(unction])-1801 b Fg(HIST_ENTRY)28 b(*)e(remove_history)f
-Ff(\()p Fj(in)o(t)14 b(whic)o(h)p Ff(\))195 2098 y Fr(Remo)o(v)o(e)23
-b(history)e(en)o(try)i(at)f(o\013set)g Fj(whic)o(h)g
-Fr(from)g(the)h(history)l(.)42 b(The)23 b(remo)o(v)o(ed)f(elemen)o(t)g
-(is)195 2152 y(returned)16 b(so)e(y)o(ou)h(can)h(free)f(the)g(line,)g
-(data,)f(and)h(con)o(taining)f(structure.)1675 2247 y([F)l(unction])
--1801 b Fg(histdata_t)28 b(free_history_entry)d Ff(\()p
-Fj(HIST)p 985 2247 V 20 w(ENTR)l(Y)16 b(*histen)o(t)p
-Ff(\))195 2302 y Fr(F)l(ree)e(the)g(history)f(en)o(try)h
-Fj(histen)o(t)g Fr(and)g(an)o(y)g(history)f(library)g(priv)m(ate)g
-(data)h(asso)q(ciated)f(with)g(it.)195 2356 y(Returns)j(the)f
-(application-sp)q(eci\014c)g(data)f(so)h(the)h(caller)e(can)h(disp)q
-(ose)h(of)e(it.)1675 2451 y([F)l(unction])-1801 b Fg(HIST_ENTRY)28
-b(*)e(replace_history_entry)g Ff(\()p Fj(in)o(t)14 b(whic)o(h,)h(const)
-g(c)o(har)f(*line,)283 2506 y(histdata)p 449 2506 V 18
-w(t)h(data)p Ff(\))195 2560 y Fr(Mak)o(e)e(the)h(history)f(en)o(try)g
-(at)g(o\013set)g Fj(whic)o(h)h Fr(ha)o(v)o(e)f Fj(line)j
-Fr(and)e Fj(data)p Fr(.)19 b(This)13 b(returns)h(the)g(old)f(en)o(try)
-195 2615 y(so)18 b(the)h(caller)e(can)i(disp)q(ose)g(of)f(an)o(y)g
-(application-sp)q(eci\014c)g(data.)30 b(In)19 b(the)g(case)f(of)g(an)h
-(in)o(v)m(alid)195 2670 y Fj(whic)o(h)p Fr(,)c(a)g Fq(NULL)f
-Fr(p)q(oin)o(ter)h(is)g(returned.)p eop end
-%%Page: 6 9
-TeXDict begin 6 8 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)888 b(6)1675 149 y([F)l(unction])-1801
-b Fg(void)27 b(clear_history)d Ff(\()p Fj(v)o(oid)p Ff(\))195
-204 y Fr(Clear)14 b(the)i(history)e(list)g(b)o(y)h(deleting)g(all)f
-(the)h(en)o(tries.)1675 297 y([F)l(unction])-1801 b Fg(void)27
-b(stifle_history)e Ff(\()p Fj(in)o(t)14 b(max)p Ff(\))195
-352 y Fr(Sti\015e)h(the)g(history)g(list,)e(remem)o(b)q(ering)i(only)g
-(the)g(last)f Fj(max)k Fr(en)o(tries.)1675 445 y([F)l(unction])-1801
-b Fg(int)27 b(unstifle_history)e Ff(\()p Fj(v)o(oid)p
-Ff(\))195 500 y Fr(Stop)14 b(sti\015ing)e(the)i(history)l(.)19
-b(This)13 b(returns)g(the)h(previously-set)f(maxim)o(um)g(n)o(um)o(b)q
-(er)h(of)f(history)195 555 y(en)o(tries)g(\(as)f(set)i(b)o(y)f
-Fq(stifle_history\(\))p Fr(\).)k(The)c(v)m(alue)h(is)f(p)q(ositiv)o(e)f
-(if)h(the)h(history)e(w)o(as)g(sti\015ed,)195 609 y(negativ)o(e)i(if)h
-(it)f(w)o(asn't.)1675 702 y([F)l(unction])-1801 b Fg(int)27
-b(history_is_stifled)e Ff(\()p Fj(v)o(oid)p Ff(\))195
-757 y Fr(Returns)16 b(non-zero)f(if)g(the)g(history)f(is)h(sti\015ed,)g
-(zero)g(if)f(it)h(is)g(not.)75 857 y Fi(2.3.3)30 b(Information)19
-b(Ab)r(out)i(the)f(History)h(List)75 931 y Fr(These)16
-b(functions)f(return)g(information)e(ab)q(out)i(the)g(en)o(tire)g
-(history)f(list)g(or)h(individual)f(list)g(en)o(tries.)1675
-1024 y([F)l(unction])-1801 b Fg(HIST_ENTRY)28 b(**)e(history_list)f
-Ff(\()p Fj(v)o(oid)p Ff(\))195 1078 y Fr(Return)16 b(a)f
-Fq(NULL)f Fr(terminated)h(arra)o(y)f(of)h Fq(HIST_ENTRY)f(*)h
-Fr(whic)o(h)g(is)f(the)i(curren)o(t)f(input)g(history)l(.)195
-1133 y(Elemen)o(t)g(0)g(of)f(this)h(list)f(is)h(the)g(b)q(eginning)g
-(of)g(time.)k(If)d(there)f(is)g(no)g(history)l(,)f(return)h
-Fq(NULL)p Fr(.)1675 1226 y([F)l(unction])-1801 b Fg(int)27
-b(where_history)d Ff(\()p Fj(v)o(oid)p Ff(\))195 1281
-y Fr(Returns)16 b(the)f(o\013set)f(of)h(the)g(curren)o(t)g(history)f
-(elemen)o(t.)1675 1374 y([F)l(unction])-1801 b Fg(HIST_ENTRY)28
-b(*)e(current_history)f Ff(\()p Fj(v)o(oid)p Ff(\))195
-1429 y Fr(Return)13 b(the)g(history)e(en)o(try)h(at)g(the)g(curren)o(t)
-h(p)q(osition,)e(as)h(determined)h(b)o(y)f Fq(where_history\(\))p
-Fr(.)195 1484 y(If)j(there)h(is)e(no)i(en)o(try)e(there,)h(return)g(a)g
-Fq(NULL)g Fr(p)q(oin)o(ter.)1675 1577 y([F)l(unction])-1801
-b Fg(HIST_ENTRY)28 b(*)e(history_get)e Ff(\()p Fj(in)o(t)14
-b(o\013set)p Ff(\))195 1631 y Fr(Return)21 b(the)g(history)f(en)o(try)g
-(at)h(p)q(osition)e Fj(o\013set)p Fr(,)i(starting)e(from)h
-Fq(history_base)f Fr(\(see)i(Sec-)195 1686 y(tion)15
-b(2.4)g([History)g(V)l(ariables],)f(page)i(8\).)22 b(If)16
-b(there)g(is)g(no)g(en)o(try)f(there,)h(or)g(if)f Fj(o\013set)h
-Fr(is)g(greater)195 1741 y(than)f(the)g(history)f(length,)h(return)g(a)
-g Fq(NULL)g Fr(p)q(oin)o(ter.)1675 1834 y([F)l(unction])-1801
-b Fg(time_t)27 b(history_get_time)e Ff(\()p Fj(HIST)p
-828 1834 14 2 v 20 w(ENTR)l(Y)16 b(*en)o(try)p Ff(\))195
-1889 y Fr(Return)g(the)f(time)g(stamp)f(asso)q(ciated)h(with)f(the)h
-(history)g(en)o(try)f Fj(en)o(try)p Fr(.)1675 1982 y([F)l(unction])
--1801 b Fg(int)27 b(history_total_bytes)e Ff(\()p Fj(v)o(oid)p
-Ff(\))195 2037 y Fr(Return)14 b(the)g(n)o(um)o(b)q(er)g(of)g(b)o(ytes)f
-(that)g(the)h(primary)f(history)g(en)o(tries)g(are)h(using.)19
-b(This)13 b(function)195 2091 y(returns)i(the)g(sum)h(of)e(the)i
-(lengths)e(of)h(all)f(the)i(lines)e(in)h(the)h(history)l(.)75
-2191 y Fi(2.3.4)30 b(Mo)n(ving)21 b(Around)f(the)h(History)g(List)75
-2265 y Fr(These)16 b(functions)f(allo)o(w)e(the)i(curren)o(t)g(index)h
-(in)o(to)e(the)h(history)f(list)g(to)h(b)q(e)h(set)f(or)f(c)o(hanged.)
-1675 2358 y([F)l(unction])-1801 b Fg(int)27 b(history_set_pos)e
-Ff(\()p Fj(in)o(t)14 b(p)q(os)p Ff(\))195 2413 y Fr(Set)k(the)h(curren)
-o(t)f(history)f(o\013set)h(to)f Fj(p)q(os)p Fr(,)i(an)f(absolute)g
-(index)h(in)o(to)e(the)h(list.)28 b(Returns)19 b(1)f(on)195
-2467 y(success,)d(0)g(if)g Fj(p)q(os)i Fr(is)e(less)g(than)g(zero)g(or)
-g(greater)f(than)h(the)g(n)o(um)o(b)q(er)h(of)e(history)h(en)o(tries.)
-1675 2560 y([F)l(unction])-1801 b Fg(HIST_ENTRY)28 b(*)e
-(previous_history)f Ff(\()p Fj(v)o(oid)p Ff(\))195 2615
-y Fr(Bac)o(k)14 b(up)h(the)g(curren)o(t)f(history)f(o\013set)h(to)f
-(the)i(previous)f(history)f(en)o(try)l(,)h(and)h(return)f(a)g(p)q(oin)o
-(ter)195 2670 y(to)h(that)f(en)o(try)l(.)20 b(If)15 b(there)g(is)g(no)g
-(previous)g(en)o(try)l(,)g(return)g(a)g Fq(NULL)g Fr(p)q(oin)o(ter.)p
-eop end
-%%Page: 7 10
-TeXDict begin 7 9 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)888 b(7)1675 149 y([F)l(unction])-1801
-b Fg(HIST_ENTRY)28 b(*)e(next_history)f Ff(\()p Fj(v)o(oid)p
-Ff(\))195 204 y Fr(If)11 b(the)f(curren)o(t)g(history)f(o\013set)h
-(refers)g(to)f(a)h(v)m(alid)g(history)g(en)o(try)l(,)g(incremen)o(t)g
-(the)h(curren)o(t)f(history)195 259 y(o\013set.)18 b(If)c(the)g(p)q
-(ossibly-incremen)o(ted)g(history)e(o\013set)h(refers)g(to)g(a)h(v)m
-(alid)f(history)g(en)o(try)l(,)g(return)195 314 y(a)i(p)q(oin)o(ter)g
-(to)f(that)h(en)o(try;)f(otherwise,)g(return)h(a)g Fq(BNULL)g
-Fr(p)q(oin)o(ter.)75 411 y Fi(2.3.5)30 b(Searc)n(hing)21
-b(the)f(History)h(List)75 485 y Fr(These)e(functions)e(allo)o(w)g
-(searc)o(hing)g(of)h(the)g(history)g(list)e(for)i(en)o(tries)g(con)o
-(taining)e(a)i(sp)q(eci\014c)h(string.)75 540 y(Searc)o(hing)13
-b(ma)o(y)h(b)q(e)g(p)q(erformed)g(b)q(oth)g(forw)o(ard)e(and)i(bac)o
-(kw)o(ard)f(from)g(the)h(curren)o(t)g(history)e(p)q(osition.)75
-594 y(The)k(searc)o(h)f(ma)o(y)g(b)q(e)i Fj(anc)o(hored)p
-Fr(,)e(meaning)g(that)g(the)h(string)f(m)o(ust)g(matc)o(h)g(at)g(the)h
-(b)q(eginning)g(of)f(the)75 649 y(history)f(en)o(try)l(.)1675
-738 y([F)l(unction])-1801 b Fg(int)27 b(history_search)d
-Ff(\()p Fj(const)15 b(c)o(har)g(*string,)e(in)o(t)i(direction)p
-Ff(\))195 793 y Fr(Searc)o(h)g(the)f(history)f(for)h
-Fj(string)p Fr(,)f(starting)g(at)h(the)h(curren)o(t)f(history)f
-(o\013set.)19 b(If)c Fj(direction)e Fr(is)h(less)195
-848 y(than)20 b(0,)g(then)h(the)f(searc)o(h)f(is)h(through)g(previous)f
-(en)o(tries,)i(otherwise)e(through)g(subsequen)o(t)195
-903 y(en)o(tries.)g(If)d Fj(string)i Fr(is)d(found,)g(then)g(the)h
-(curren)o(t)f(history)f(index)h(is)g(set)g(to)g(that)f(history)g(en)o
-(try)l(,)195 958 y(and)j(the)g(v)m(alue)g(returned)g(is)f(the)h
-(o\013set)e(in)i(the)g(line)f(of)g(the)h(en)o(try)g(where)g
-Fj(string)i Fr(w)o(as)d(found.)195 1012 y(Otherwise,)f(nothing)f(is)h
-(c)o(hanged,)g(and)h(a)e(-1)h(is)g(returned.)1675 1101
-y([F)l(unction])-1801 b Fg(int)27 b(history_search_prefix)f
-Ff(\()p Fj(const)14 b(c)o(har)h(*string,)f(in)o(t)g(direction)p
-Ff(\))195 1156 y Fr(Searc)o(h)20 b(the)h(history)e(for)h
-Fj(string)p Fr(,)g(starting)e(at)i(the)g(curren)o(t)h(history)e
-(o\013set.)34 b(The)20 b(searc)o(h)g(is)195 1211 y(anc)o(hored:)g(matc)
-o(hing)13 b(lines)i(m)o(ust)f(b)q(egin)h(with)f Fj(string)p
-Fr(.)19 b(If)c Fj(direction)f Fr(is)g(less)g(than)h(0,)f(then)h(the)195
-1266 y(searc)o(h)g(is)h(through)f(previous)g(en)o(tries,)g(otherwise)g
-(through)g(subsequen)o(t)h(en)o(tries.)21 b(If)16 b Fj(string)i
-Fr(is)195 1321 y(found,)f(then)g(the)f(curren)o(t)h(history)e(index)i
-(is)f(set)g(to)g(that)g(en)o(try)l(,)g(and)h(the)f(return)h(v)m(alue)g
-(is)f(0.)195 1375 y(Otherwise,)f(nothing)f(is)h(c)o(hanged,)g(and)h(a)e
-(-1)h(is)g(returned.)1675 1465 y([F)l(unction])-1801
-b Fg(int)27 b(history_search_pos)e Ff(\()p Fj(const)15
-b(c)o(har)g(*string,)e(in)o(t)i(direction,)f(in)o(t)g(p)q(os)p
-Ff(\))195 1519 y Fr(Searc)o(h)j(for)g Fj(string)j Fr(in)d(the)g
-(history)f(list,)g(starting)f(at)i Fj(p)q(os)p Fr(,)g(an)g(absolute)g
-(index)g(in)o(to)f(the)i(list.)195 1574 y(If)g Fj(direction)g
-Fr(is)f(negativ)o(e,)h(the)g(searc)o(h)g(pro)q(ceeds)g(bac)o(kw)o(ard)g
-(from)f Fj(p)q(os)p Fr(,)h(otherwise)g(forw)o(ard.)195
-1629 y(Returns)23 b(the)f(absolute)f(index)h(of)g(the)g(history)f
-(elemen)o(t)h(where)g Fj(string)j Fr(w)o(as)c(found,)j(or)d(-1)195
-1684 y(otherwise.)75 1781 y Fi(2.3.6)30 b(Managing)20
-b(the)g(History)h(File)75 1855 y Fr(The)14 b(History)e(library)g(can)h
-(read)g(the)h(history)e(from)h(and)g(write)f(it)h(to)g(a)g(\014le.)19
-b(This)13 b(section)g(do)q(cumen)o(ts)75 1910 y(the)i(functions)g(for)g
-(managing)f(a)h(history)f(\014le.)1675 1999 y([F)l(unction])-1801
-b Fg(int)27 b(read_history)d Ff(\()p Fj(const)15 b(c)o(har)g
-(*\014lename)p Ff(\))195 2053 y Fr(Add)g(the)g(con)o(ten)o(ts)f(of)h
-Fj(\014lename)i Fr(to)d(the)h(history)f(list,)f(a)i(line)f(at)h(a)f
-(time.)19 b(If)c Fj(\014lename)j Fr(is)c Fq(NULL)p Fr(,)195
-2108 y(then)i(read)f(from)f Fq(~/.history)p Fr(.)19 b(Returns)c(0)g(if)
-g(successful,)g(or)g Fq(errno)f Fr(if)h(not.)1675 2197
-y([F)l(unction])-1801 b Fg(int)27 b(read_history_range)e
-Ff(\()p Fj(const)15 b(c)o(har)g(*\014lename,)f(in)o(t)h(from,)f(in)o(t)
-g(to)p Ff(\))195 2252 y Fr(Read)h(a)e(range)h(of)f(lines)h(from)f
-Fj(\014lename)p Fr(,)h(adding)g(them)g(to)f(the)h(history)f(list.)18
-b(Start)13 b(reading)h(at)195 2307 y(line)f Fj(from)f
-Fr(and)h(end)h(at)f Fj(to)p Fr(.)18 b(If)c Fj(from)e
-Fr(is)h(zero,)g(start)f(at)g(the)h(b)q(eginning.)20 b(If)13
-b Fj(to)i Fr(is)d(less)h(than)g Fj(from)p Fr(,)195 2362
-y(then)k(read)f(un)o(til)g(the)h(end)g(of)f(the)h(\014le.)24
-b(If)16 b Fj(\014lename)k Fr(is)c Fq(NULL)p Fr(,)g(then)g(read)h(from)f
-Fq(~/.history)p Fr(.)195 2417 y(Returns)g(0)f(if)f(successful,)h(or)g
-Fq(errno)g Fr(if)f(not.)1675 2506 y([F)l(unction])-1801
-b Fg(int)27 b(write_history)d Ff(\()p Fj(const)15 b(c)o(har)g
-(*\014lename)p Ff(\))195 2560 y Fr(W)l(rite)h(the)i(curren)o(t)f
-(history)f(to)h Fj(\014lename)p Fr(,)g(o)o(v)o(erwriting)e
-Fj(\014lename)20 b Fr(if)c(necessary)l(.)27 b(If)17 b
-Fj(\014lename)195 2615 y Fr(is)c Fq(NULL)p Fr(,)g(then)h(write)f(the)g
-(history)g(list)f(to)h Fq(~/.history)p Fr(.)18 b(Returns)c(0)f(on)h
-(success,)g(or)f Fq(errno)g Fr(on)195 2670 y(a)i(read)g(or)g(write)f
-(error.)p eop end
-%%Page: 8 11
-TeXDict begin 8 10 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)888 b(8)1675 149 y([F)l(unction])-1801
-b Fg(int)27 b(append_history)d Ff(\()p Fj(in)o(t)15 b(nelemen)o(ts,)f
-(const)h(c)o(har)g(*\014lename)p Ff(\))195 204 y Fr(App)q(end)k(the)e
-(last)f Fj(nelemen)o(ts)k Fr(of)c(the)i(history)e(list)g(to)h
-Fj(\014lename)p Fr(.)26 b(If)18 b Fj(\014lename)i Fr(is)d
-Fq(NULL)p Fr(,)g(then)195 259 y(app)q(end)f(to)f Fq(~/.history)p
-Fr(.)j(Returns)e(0)f(on)g(success,)h(or)e Fq(errno)h
-Fr(on)g(a)g(read)g(or)g(write)f(error.)1675 352 y([F)l(unction])-1801
-b Fg(int)27 b(history_truncate_file)f Ff(\()p Fj(const)14
-b(c)o(har)h(*\014lename,)g(in)o(t)f(nlines)p Ff(\))195
-407 y Fr(T)l(runcate)19 b(the)h(history)e(\014le)h Fj(\014lename)p
-Fr(,)h(lea)o(ving)e(only)h(the)g(last)f Fj(nlines)j Fr(lines.)32
-b(If)20 b Fj(\014lename)h Fr(is)195 462 y Fq(NULL)p Fr(,)14
-b(then)i Fq(~/.history)e Fr(is)g(truncated.)20 b(Returns)c(0)f(on)g
-(success,)g(or)g Fq(errno)f Fr(on)i(failure.)75 562 y
-Fi(2.3.7)30 b(History)20 b(Expansion)75 635 y Fr(These)c(functions)f
-(implemen)o(t)f(history)g(expansion.)1675 729 y([F)l(unction])-1801
-b Fg(int)27 b(history_expand)d Ff(\()p Fj(c)o(har)15
-b(*string,)f(c)o(har)g(**output)p Ff(\))195 783 y Fr(Expand)k
-Fj(string)p Fr(,)e(placing)g(the)i(result)e(in)o(to)g
-Fj(output)p Fr(,)i(a)e(p)q(oin)o(ter)h(to)g(a)g(string)f(\(see)h
-(Section)g(1.1)195 838 y([History)d(In)o(teraction],)f(page)i(1\).)20
-b(Returns:)195 919 y Fq(0)216 b Fr(If)19 b(no)g(expansions)f(to)q(ok)g
-(place)h(\(or,)f(if)h(the)f(only)h(c)o(hange)f(in)h(the)g(text)f(w)o
-(as)g(the)435 974 y(remo)o(v)m(al)c(of)h(escap)q(e)h(c)o(haracters)e
-(preceding)h(the)g(history)f(expansion)h(c)o(haracter\);)195
-1054 y Fq(1)216 b Fr(if)15 b(expansions)g(did)g(tak)o(e)f(place;)195
-1134 y Fq(-1)192 b Fr(if)15 b(there)g(w)o(as)f(an)h(error)g(in)g
-(expansion;)195 1214 y Fq(2)216 b Fr(if)13 b(the)h(returned)g(line)g
-(should)g(b)q(e)g(displa)o(y)o(ed,)f(but)h(not)f(executed,)i(as)e(with)
-g(the)h Fq(:p)435 1269 y Fr(mo)q(di\014er)h(\(see)g(Section)g(1.1.3)f
-([Mo)q(di\014ers],)g(page)h(2\).)195 1350 y(If)g(an)h(error)e(o)q
-(ccurred)i(in)f(expansion,)g(then)g Fj(output)h Fr(con)o(tains)e(a)h
-(descriptiv)o(e)g(error)g(message.)1675 1443 y([F)l(unction])-1801
-b Fg(char)27 b(*)f(get_history_event)f Ff(\()p Fj(const)15
-b(c)o(har)g(*string,)e(in)o(t)i(*cindex,)g(in)o(t)f(qc)o(har)p
-Ff(\))195 1498 y Fr(Returns)23 b(the)g(text)f(of)h(the)f(history)g(ev)o
-(en)o(t)h(b)q(eginning)f(at)h Fj(string)i Fq(+)e Fj(*cindex)p
-Fr(.)42 b Fj(*cindex)26 b Fr(is)195 1552 y(mo)q(di\014ed)15
-b(to)f(p)q(oin)o(t)g(to)g(after)g(the)h(ev)o(en)o(t)f(sp)q(eci\014er.)
-21 b(A)o(t)14 b(function)g(en)o(try)l(,)h Fj(cindex)j
-Fr(p)q(oin)o(ts)c(to)g(the)195 1607 y(index)k(in)o(to)f
-Fj(string)k Fr(where)d(the)g(history)f(ev)o(en)o(t)h(sp)q
-(eci\014cation)f(b)q(egins.)29 b Fj(qc)o(har)21 b Fr(is)c(a)h(c)o
-(haracter)195 1662 y(that)13 b(is)g(allo)o(w)o(ed)f(to)g(end)i(the)g
-(ev)o(en)o(t)f(sp)q(eci\014cation)h(in)f(addition)f(to)h(the)h
-(\\normal")e(terminating)195 1717 y(c)o(haracters.)1675
-1810 y([F)l(unction])-1801 b Fg(char)27 b(**)f(history_tokenize)f
-Ff(\()p Fj(const)15 b(c)o(har)g(*string)p Ff(\))195 1865
-y Fr(Return)h(an)f(arra)o(y)g(of)g(tok)o(ens)g(parsed)g(out)g(of)g
-Fj(string)p Fr(,)f(m)o(uc)o(h)i(as)f(the)g(shell)g(migh)o(t.)20
-b(The)15 b(tok)o(ens)195 1920 y(are)g(split)f(on)i(the)f(c)o(haracters)
-f(in)h(the)h Fj(history)p 1004 1920 14 2 v 19 w(w)o(ord)p
-1121 1920 V 19 w(delimiters)g Fr(v)m(ariable,)e(and)i(shell)f(quoting)
-195 1974 y(con)o(v)o(en)o(tions)f(are)h(ob)q(ey)o(ed.)1675
-2068 y([F)l(unction])-1801 b Fg(char)27 b(*)f(history_arg_extract)g
-Ff(\()p Fj(in)o(t)14 b(\014rst,)g(in)o(t)h(last,)e(const)i(c)o(har)g
-(*string)p Ff(\))195 2122 y Fr(Extract)k(a)h(string)f(segmen)o(t)h
-(consisting)f(of)h(the)g Fj(\014rst)h Fr(through)f Fj(last)g
-Fr(argumen)o(ts)f(presen)o(t)h(in)195 2177 y Fj(string)p
-Fr(.)f(Argumen)o(ts)c(are)f(split)h(using)g Fq(history_tokenize)p
-Fr(.)75 2294 y Fp(2.4)33 b(History)21 b(V)-6 b(ariables)75
-2374 y Fr(This)13 b(section)g(describ)q(es)h(the)g(externally-visible)e
-(v)m(ariables)g(exp)q(orted)i(b)o(y)f(the)h Fk(gnu)f
-Fr(History)g(Library)l(.)1685 2467 y([V)l(ariable])-1801
-b Fg(int)27 b(history_base)195 2522 y Fr(The)15 b(logical)f(o\013set)g
-(of)h(the)g(\014rst)g(en)o(try)g(in)g(the)g(history)f(list.)1685
-2615 y([V)l(ariable])-1801 b Fg(int)27 b(history_length)195
-2670 y Fr(The)15 b(n)o(um)o(b)q(er)h(of)f(en)o(tries)f(curren)o(tly)h
-(stored)g(in)g(the)g(history)f(list.)p eop end
-%%Page: 9 12
-TeXDict begin 9 11 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)888 b(9)1685 149 y([V)l(ariable])-1801
-b Fg(int)27 b(history_max_entries)195 204 y Fr(The)c(maxim)o(um)f(n)o
-(um)o(b)q(er)h(of)g(history)f(en)o(tries.)42 b(This)23
-b(m)o(ust)f(b)q(e)i(c)o(hanged)f(using)g Fq(stifle_)195
-259 y(history\(\))p Fr(.)1685 371 y([V)l(ariable])-1801
-b Fg(int)27 b(history_write_timestamps)195 426 y Fr(If)c(non-zero,)h
-(timestamps)d(are)h(written)f(to)h(the)g(history)f(\014le,)j(so)e(they)
-g(can)h(b)q(e)g(preserv)o(ed)195 481 y(b)q(et)o(w)o(een)16
-b(sessions.)j(The)c(default)g(v)m(alue)g(is)g(0,)g(meaning)g(that)f
-(timestamps)g(are)h(not)g(sa)o(v)o(ed.)195 558 y(The)21
-b(curren)o(t)g(timestamp)e(format)h(uses)h(the)f(v)m(alue)h(of)g
-Fj(history)p 1350 558 14 2 v 19 w(commen)o(t)p 1550 558
-V 19 w(c)o(har)j Fr(to)c(delimit)195 613 y(timestamp)g(en)o(tries)g(in)
-h(the)h(history)e(\014le.)38 b(If)21 b(that)f(v)m(ariable)h(do)q(es)g
-(not)g(ha)o(v)o(e)g(a)g(v)m(alue)g(\(the)195 668 y(default\),)14
-b(timestamps)g(will)g(not)h(b)q(e)h(written.)1685 780
-y([V)l(ariable])-1801 b Fg(char)27 b(history_expansion_char)195
-835 y Fr(The)18 b(c)o(haracter)f(that)g(in)o(tro)q(duces)g(a)g(history)
-g(ev)o(en)o(t.)27 b(The)18 b(default)f(is)g(`)p Fq(!)p
-Fr('.)26 b(Setting)17 b(this)g(to)g(0)195 889 y(inhibits)d(history)h
-(expansion.)1685 1002 y([V)l(ariable])-1801 b Fg(char)27
-b(history_subst_char)195 1056 y Fr(The)21 b(c)o(haracter)e(that)h(in)o
-(v)o(ok)o(es)f(w)o(ord)h(substitution)f(if)h(found)g(at)g(the)h(start)e
-(of)h(a)g(line.)35 b(The)195 1111 y(default)15 b(is)f(`)p
-Fq(^)p Fr('.)1685 1223 y([V)l(ariable])-1801 b Fg(char)27
-b(history_comment_char)195 1278 y Fr(During)18 b(tok)o(enization,)g(if)
-g(this)h(c)o(haracter)f(is)g(seen)i(as)e(the)h(\014rst)g(c)o(haracter)f
-(of)g(a)h(w)o(ord,)g(then)195 1333 y(it)i(and)h(all)e(subsequen)o(t)j
-(c)o(haracters)d(up)j(to)e(a)g(newline)g(are)h(ignored,)g(suppressing)g
-(history)195 1388 y(expansion)15 b(for)g(the)g(remainder)g(of)g(the)g
-(line.)k(This)c(is)g(disabled)g(b)o(y)g(default.)1685
-1500 y([V)l(ariable])-1801 b Fg(char)27 b(*)f(history_word_delimiters)
-195 1555 y Fr(The)14 b(c)o(haracters)f(that)g(separate)g(tok)o(ens)h
-(for)f Fq(history_tokenize\(\))p Fr(.)k(The)d(default)f(v)m(alue)h(is)f
-Fq(")195 1610 y(\\t\\n\(\)<>;&|")p Fr(.)1685 1722 y([V)l(ariable])-1801
-b Fg(char)27 b(*)f(history_search_delimite)q(r_chars)195
-1777 y Fr(The)13 b(list)f(of)h(additional)e(c)o(haracters)h(whic)o(h)h
-(can)h(delimit)d(a)i(history)f(searc)o(h)h(string,)f(in)h(addition)195
-1831 y(to)i(space,)g(T)l(AB,)g(`)p Fq(:)p Fr(')f(and)h(`)p
-Fq(?)p Fr(')g(in)g(the)g(case)g(of)g(a)g(substring)f(searc)o(h.)20
-b(The)c(default)e(is)h(empt)o(y)l(.)1685 1944 y([V)l(ariable])-1801
-b Fg(char)27 b(*)f(history_no_expand_chars)195 1998 y
-Fr(The)15 b(list)f(of)g(c)o(haracters)g(whic)o(h)h(inhibit)f(history)g
-(expansion)h(if)f(found)i(immediately)d(follo)o(wing)195
-2053 y Fj(history)p 337 2053 V 19 w(expansion)p 552 2053
-V 20 w(c)o(har)p Fr(.)20 b(The)15 b(default)g(is)f(space,)i(tab,)e
-(newline,)h(carriage)f(return,)g(and)i(`)p Fq(=)p Fr('.)1685
-2165 y([V)l(ariable])-1801 b Fg(int)27 b(history_quotes_inhibit_exp)q
-(ansion)195 2220 y Fr(If)14 b(non-zero,)g(double-quoted)h(w)o(ords)e
-(are)g(not)h(scanned)h(for)e(the)h(history)f(expansion)h(c)o(haracter)
-195 2275 y(or)h(the)g(history)f(commen)o(t)h(c)o(haracter.)k(The)c
-(default)g(v)m(alue)h(is)e(0.)1685 2387 y([V)l(ariable])-1801
-b Fg(rl_linebuf_func_t)29 b(*)d(history_inhibit_expansi)q(on_func)q
-(tion)195 2442 y Fr(This)16 b(should)h(b)q(e)g(set)g(to)f(the)g
-(address)h(of)f(a)h(function)f(that)g(tak)o(es)g(t)o(w)o(o)f(argumen)o
-(ts:)22 b(a)17 b Fq(char)d(*)195 2497 y Fr(\()p Fj(string)t
-Fr(\))d(and)j(an)f Fq(int)g Fr(index)h(in)o(to)e(that)g(string)h(\()p
-Fj(i)r Fr(\).)18 b(It)c(should)f(return)g(a)g(non-zero)h(v)m(alue)f(if)
-g(the)195 2552 y(history)h(expansion)g(starting)f(at)h
-Fj(string[i])g Fr(should)h(not)f(b)q(e)h(p)q(erformed;)g(zero)f(if)g
-(the)h(expansion)195 2606 y(should)h(b)q(e)h(done.)22
-b(It)16 b(is)g(in)o(tended)g(for)f(use)i(b)o(y)f(applications)e(lik)o
-(e)h(Bash)h(that)g(use)g(the)g(history)195 2661 y(expansion)f(c)o
-(haracter)g(for)f(additional)g(purp)q(oses.)20 b(By)c(default,)e(this)h
-(v)m(ariable)f(is)h(set)g(to)f Fq(NULL)p Fr(.)p eop end
-%%Page: 10 13
-TeXDict begin 10 12 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)866 b(10)75 149 y Fp(2.5)33 b(History)21
-b(Programming)h(Example)75 229 y Fr(The)15 b(follo)o(wing)e(program)h
-(demonstrates)h(simple)g(use)g(of)g(the)g Fk(gnu)g Fr(History)f
-(Library)l(.)195 316 y Fe(#include)j(<stdio.h)o(>)195
-360 y(#include)g(<readlin)o(e/h)o(is)o(tor)o(y.h)o(>)195
-447 y(main)h(\(argc,)f(argv\))293 491 y(int)i(argc;)293
-534 y(char)f(**argv;)195 578 y({)234 621 y(char)g(line[1024])o(,)f(*t;)
-234 665 y(int)i(len,)f(done)g(=)h(0;)234 752 y(line[0])e(=)i(0;)234
-839 y(using_hist)o(ory)d(\(\);)234 883 y(while)i(\(!done\))273
-927 y({)313 970 y(printf)f(\("history)o($)g("\);)313
-1014 y(fflush)g(\(stdout\);)313 1057 y(t)i(=)g(fgets)f(\(line,)f
-(sizeof)g(\(line\))h(-)h(1,)g(stdin\);)313 1101 y(if)g(\(t)f(&&)h(*t\))
-352 1144 y({)391 1188 y(len)g(=)g(strlen)e(\(t\);)391
-1232 y(if)i(\(t[len)e(-)i(1])g(==)g('\\n'\))430 1275
-y(t[len)f(-)h(1])g(=)g('\\0';)352 1319 y(})313 1406 y(if)g(\(!t\))352
-1450 y(strcpy)e(\(line,)g("quit"\);)313 1537 y(if)i(\(line[0])o(\))352
-1580 y({)391 1624 y(char)f(*expansion)o(;)391 1667 y(int)h(result;)391
-1755 y(result)e(=)j(history_e)o(xp)o(and)c(\(line,)h(&expansion)o(\);)
-391 1798 y(if)i(\(result\))430 1842 y(fprintf)e(\(stderr,)g
-("\045s\\n",)g(expansion)o(\);)391 1929 y(if)i(\(result)e(<)i(0)g(||)g
-(result)e(==)i(2\))430 1973 y({)470 2016 y(free)f(\(expansio)o(n\))o(;)
-470 2060 y(continue)o(;)430 2103 y(})391 2191 y(add_histor)o(y)e
-(\(expansion\))o(;)391 2234 y(strncpy)h(\(line,)g(expansion,)f(sizeof)h
-(\(line\))h(-)h(1\);)391 2278 y(free)f(\(expansion)o(\);)352
-2321 y(})313 2408 y(if)h(\(strcmp)d(\(line,)i("quit"\))f(==)h(0\))352
-2452 y(done)g(=)h(1;)313 2496 y(else)f(if)h(\(strcmp)d(\(line,)i
-("save"\))f(==)i(0\))352 2539 y(write_his)o(tor)o(y)d(\("history_f)o
-(il)o(e"\))o(;)313 2583 y(else)i(if)h(\(strcmp)d(\(line,)i("read"\))f
-(==)i(0\))352 2626 y(read_hist)o(ory)d(\("history)o(_fi)o(le)o("\);)313
-2670 y(else)i(if)h(\(strcmp)d(\(line,)i("list"\))f(==)i(0\))p
-eop end
-%%Page: 11 14
-TeXDict begin 11 13 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(History)866 b(11)352 149 y Fe({)391 193
-y(register)17 b(HIST_ENTR)o(Y)f(**the_list;)391 237 y(register)h(int)h
-(i;)391 324 y(the_list)f(=)i(history_l)o(ist)d(\(\);)391
-367 y(if)j(\(the_list)o(\))430 411 y(for)g(\(i)g(=)g(0;)g(the_list[)o
-(i])o(;)e(i++\))470 455 y(printf)g(\("\045d:)h(\045s\\n",)f(i)i(+)g
-(history_ba)o(se,)d(the_list[)o(i]-)o(>li)o(ne)o(\);)352
-498 y(})313 542 y(else)i(if)h(\(strncmp)d(\(line,)h("delete",)g(6\))h
-(==)h(0\))352 585 y({)391 629 y(int)g(which;)391 672
-y(if)g(\(\(sscanf)d(\(line)i(+)h(6,)g("\045d",)f(&which\)\))e(==)j(1\))
-430 716 y({)470 760 y(HIST_ENT)o(RY)d(*entry)i(=)h(remove_hi)o(sto)o
-(ry)d(\(which\);)470 803 y(if)i(\(!entry\))509 847 y(fprintf)f
-(\(stderr,)f("No)j(such)f(entry)f(\045d\\n",)h(which\);)470
-890 y(else)509 934 y({)548 978 y(free)g(\(entry->li)o(ne)o(\);)548
-1021 y(free)g(\(entry\);)509 1065 y(})430 1108 y(})391
-1152 y(else)430 1196 y({)470 1239 y(fprintf)e(\(stderr,)h("non-numer)o
-(ic)f(arg)i(given)g(to)h(`delete'\\n)o("\))o(;)430 1283
-y(})352 1326 y(})273 1370 y(})195 1413 y(})p eop end
-%%Page: 12 15
-TeXDict begin 12 14 bop 75 -58 a Fr(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(12)75 149
-y Fn(App)r(endix)26 b(A)41 b(GNU)27 b(F)-7 b(ree)26 b(Do)r(cumen)n
-(tation)j(License)679 251 y Fr(V)l(ersion)15 b(1.3,)f(3)h(No)o(v)o(em)o
-(b)q(er)g(2008)195 318 y(Cop)o(yrigh)o(t)421 317 y(c)409
-318 y Fo(\015)g Fr(2000,)f(2001,)f(2002,)h(2007,)g(2008)g(F)l(ree)h
-(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)195 373 y Fq(http://fsf.org/)
-195 482 y Fr(Ev)o(ery)o(one)h(is)f(p)q(ermitted)h(to)g(cop)o(y)g(and)g
-(distribute)g(v)o(erbatim)f(copies)195 537 y(of)h(this)f(license)i(do)q
-(cumen)o(t,)f(but)g(c)o(hanging)g(it)f(is)h(not)g(allo)o(w)o(ed.)100
-603 y(0.)29 b(PREAMBLE)165 670 y(The)19 b(purp)q(ose)g(of)f(this)g
-(License)i(is)e(to)g(mak)o(e)g(a)g(man)o(ual,)g(textb)q(o)q(ok,)h(or)f
-(other)g(functional)g(and)165 725 y(useful)d(do)q(cumen)o(t)h
-Fj(free)h Fr(in)e(the)g(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
-o(one)f(the)i(e\013ectiv)o(e)e(freedom)165 780 y(to)h(cop)o(y)h(and)g
-(redistribute)f(it,)f(with)h(or)g(without)g(mo)q(difying)g(it,)g
-(either)g(commercially)f(or)i(non-)165 834 y(commercially)l(.)25
-b(Secondarily)l(,)17 b(this)g(License)h(preserv)o(es)f(for)g(the)g
-(author)g(and)h(publisher)f(a)g(w)o(a)o(y)165 889 y(to)g(get)h(credit)g
-(for)f(their)h(w)o(ork,)f(while)h(not)g(b)q(eing)g(considered)g(resp)q
-(onsible)g(for)g(mo)q(di\014cations)165 944 y(made)d(b)o(y)g(others.)
-165 1010 y(This)c(License)i(is)e(a)g(kind)h(of)f(\\cop)o(yleft",)f
-(whic)o(h)i(means)f(that)g(deriv)m(ativ)o(e)g(w)o(orks)g(of)g(the)h(do)
-q(cumen)o(t)165 1065 y(m)o(ust)k(themselv)o(es)h(b)q(e)h(free)e(in)h
-(the)g(same)g(sense.)26 b(It)16 b(complemen)o(ts)h(the)g(GNU)g(General)
-f(Public)165 1120 y(License,)g(whic)o(h)f(is)f(a)h(cop)o(yleft)g
-(license)g(designed)g(for)g(free)g(soft)o(w)o(are.)165
-1187 y(W)l(e)g(ha)o(v)o(e)f(designed)h(this)g(License)g(in)g(order)f
-(to)g(use)h(it)f(for)h(man)o(uals)e(for)h(free)h(soft)o(w)o(are,)e(b)q
-(ecause)165 1241 y(free)21 b(soft)o(w)o(are)e(needs)j(free)f(do)q
-(cumen)o(tation:)31 b(a)21 b(free)g(program)f(should)h(come)g(with)g
-(man)o(uals)165 1296 y(pro)o(viding)13 b(the)i(same)f(freedoms)g(that)g
-(the)g(soft)o(w)o(are)f(do)q(es.)20 b(But)14 b(this)g(License)h(is)f
-(not)g(limited)g(to)165 1351 y(soft)o(w)o(are)g(man)o(uals;)g(it)g(can)
-i(b)q(e)g(used)g(for)e(an)o(y)h(textual)g(w)o(ork,)f(regardless)g(of)h
-(sub)s(ject)g(matter)f(or)165 1406 y(whether)i(it)f(is)g(published)h
-(as)g(a)f(prin)o(ted)h(b)q(o)q(ok.)21 b(W)l(e)16 b(recommend)g(this)f
-(License)i(principally)e(for)165 1461 y(w)o(orks)f(whose)h(purp)q(ose)h
-(is)f(instruction)f(or)h(reference.)100 1527 y(1.)29
-b(APPLICABILITY)17 b(AND)e(DEFINITIONS)165 1594 y(This)20
-b(License)g(applies)g(to)f(an)o(y)h(man)o(ual)f(or)g(other)h(w)o(ork,)g
-(in)g(an)o(y)f(medium,)i(that)e(con)o(tains)g(a)165 1648
-y(notice)h(placed)h(b)o(y)g(the)g(cop)o(yrigh)o(t)e(holder)i(sa)o(ying)
-f(it)g(can)h(b)q(e)g(distributed)f(under)i(the)f(terms)165
-1703 y(of)d(this)g(License.)32 b(Suc)o(h)19 b(a)g(notice)f(gran)o(ts)f
-(a)i(w)o(orld-wide,)f(ro)o(y)o(alt)o(y-free)f(license,)i(unlimited)f
-(in)165 1758 y(duration,)23 b(to)f(use)h(that)f(w)o(ork)g(under)h(the)g
-(conditions)f(stated)g(herein.)42 b(The)23 b(\\Do)q(cumen)o(t",)165
-1813 y(b)q(elo)o(w,)14 b(refers)g(to)f(an)o(y)h(suc)o(h)g(man)o(ual)g
-(or)f(w)o(ork.)19 b(An)o(y)14 b(mem)o(b)q(er)h(of)e(the)i(public)f(is)g
-(a)g(licensee,)g(and)165 1868 y(is)e(addressed)h(as)f(\\y)o(ou".)18
-b(Y)l(ou)13 b(accept)g(the)f(license)h(if)f(y)o(ou)g(cop)o(y)l(,)h(mo)q
-(dify)f(or)g(distribute)f(the)i(w)o(ork)165 1922 y(in)i(a)g(w)o(a)o(y)f
-(requiring)h(p)q(ermission)f(under)i(cop)o(yrigh)o(t)e(la)o(w.)165
-1989 y(A)j(\\Mo)q(di\014ed)g(V)l(ersion")f(of)g(the)h(Do)q(cumen)o(t)g
-(means)g(an)o(y)f(w)o(ork)g(con)o(taining)g(the)h(Do)q(cumen)o(t)f(or)
-165 2044 y(a)i(p)q(ortion)g(of)h(it,)f(either)h(copied)g(v)o(erbatim,)f
-(or)g(with)g(mo)q(di\014cations)g(and/or)g(translated)g(in)o(to)165
-2099 y(another)d(language.)165 2165 y(A)e(\\Secondary)g(Section")g(is)f
-(a)h(named)g(app)q(endix)h(or)e(a)h(fron)o(t-matter)e(section)h(of)h
-(the)g(Do)q(cumen)o(t)165 2220 y(that)d(deals)g(exclusiv)o(ely)g(with)g
-(the)h(relationship)e(of)i(the)f(publishers)h(or)f(authors)g(of)g(the)h
-(Do)q(cumen)o(t)165 2275 y(to)18 b(the)h(Do)q(cumen)o(t's)f(o)o(v)o
-(erall)f(sub)s(ject)h(\(or)g(to)g(related)g(matters\))f(and)i(con)o
-(tains)f(nothing)g(that)165 2329 y(could)i(fall)f(directly)h(within)f
-(that)g(o)o(v)o(erall)g(sub)s(ject.)34 b(\(Th)o(us,)21
-b(if)f(the)g(Do)q(cumen)o(t)g(is)g(in)g(part)f(a)165
-2384 y(textb)q(o)q(ok)12 b(of)f(mathematics,)g(a)g(Secondary)h(Section)
-g(ma)o(y)f(not)h(explain)f(an)o(y)h(mathematics.\))17
-b(The)165 2439 y(relationship)12 b(could)i(b)q(e)g(a)g(matter)e(of)i
-(historical)d(connection)j(with)f(the)h(sub)s(ject)f(or)h(with)f
-(related)165 2494 y(matters,)k(or)g(of)g(legal,)g(commercial,)g
-(philosophical,)g(ethical)g(or)g(p)q(olitical)f(p)q(osition)h
-(regarding)165 2549 y(them.)165 2615 y(The)c(\\In)o(v)m(arian)o(t)f
-(Sections")g(are)h(certain)f(Secondary)h(Sections)g(whose)g(titles)e
-(are)i(designated,)f(as)165 2670 y(b)q(eing)i(those)f(of)g(In)o(v)m
-(arian)o(t)f(Sections,)h(in)h(the)f(notice)g(that)f(sa)o(ys)h(that)g
-(the)g(Do)q(cumen)o(t)g(is)g(released)p eop end
-%%Page: 13 16
-TeXDict begin 13 15 bop 75 -58 a Fr(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(13)165 149
-y(under)15 b(this)e(License.)20 b(If)14 b(a)g(section)f(do)q(es)h(not)g
-(\014t)f(the)h(ab)q(o)o(v)o(e)g(de\014nition)g(of)f(Secondary)h(then)g
-(it)f(is)165 204 y(not)j(allo)o(w)o(ed)e(to)h(b)q(e)i(designated)f(as)f
-(In)o(v)m(arian)o(t.)21 b(The)c(Do)q(cumen)o(t)e(ma)o(y)h(con)o(tain)f
-(zero)h(In)o(v)m(arian)o(t)165 259 y(Sections.)j(If)12
-b(the)h(Do)q(cumen)o(t)f(do)q(es)h(not)f(iden)o(tify)f(an)o(y)h(In)o(v)
-m(arian)o(t)g(Sections)g(then)h(there)f(are)g(none.)165
-334 y(The)19 b(\\Co)o(v)o(er)e(T)l(exts")g(are)h(certain)g(short)g
-(passages)g(of)f(text)h(that)g(are)g(listed,)g(as)g(F)l(ron)o(t-Co)o(v)
-o(er)165 389 y(T)l(exts)12 b(or)g(Bac)o(k-Co)o(v)o(er)g(T)l(exts,)g(in)
-h(the)f(notice)g(that)g(sa)o(ys)g(that)g(the)g(Do)q(cumen)o(t)h(is)f
-(released)g(under)165 444 y(this)g(License.)20 b(A)13
-b(F)l(ron)o(t-Co)o(v)o(er)e(T)l(ext)i(ma)o(y)f(b)q(e)i(at)e(most)g(5)h
-(w)o(ords,)f(and)h(a)g(Bac)o(k-Co)o(v)o(er)f(T)l(ext)h(ma)o(y)165
-499 y(b)q(e)j(at)e(most)h(25)f(w)o(ords.)165 574 y(A)k(\\T)l(ransparen)
-o(t")e(cop)o(y)i(of)f(the)h(Do)q(cumen)o(t)g(means)f(a)h(mac)o
-(hine-readable)f(cop)o(y)l(,)h(represen)o(ted)165 629
-y(in)g(a)f(format)g(whose)g(sp)q(eci\014cation)h(is)g(a)o(v)m(ailable)e
-(to)h(the)h(general)g(public,)g(that)f(is)g(suitable)h(for)165
-684 y(revising)d(the)h(do)q(cumen)o(t)g(straigh)o(tforw)o(ardly)d(with)
-i(generic)h(text)f(editors)g(or)g(\(for)g(images)g(com-)165
-738 y(p)q(osed)d(of)g(pixels\))f(generic)h(pain)o(t)f(programs)g(or)g
-(\(for)g(dra)o(wings\))g(some)g(widely)g(a)o(v)m(ailable)g(dra)o(wing)
-165 793 y(editor,)j(and)g(that)g(is)g(suitable)g(for)g(input)g(to)g
-(text)g(formatters)f(or)h(for)g(automatic)f(translation)g(to)165
-848 y(a)g(v)m(ariet)o(y)g(of)g(formats)f(suitable)g(for)h(input)h(to)e
-(text)h(formatters.)18 b(A)13 b(cop)o(y)h(made)f(in)g(an)h(otherwise)
-165 903 y(T)l(ransparen)o(t)k(\014le)h(format)e(whose)i(markup,)g(or)g
-(absence)g(of)g(markup,)g(has)f(b)q(een)i(arranged)f(to)165
-958 y(th)o(w)o(art)12 b(or)g(discourage)h(subsequen)o(t)h(mo)q
-(di\014cation)f(b)o(y)g(readers)g(is)g(not)g(T)l(ransparen)o(t.)18
-b(An)c(image)165 1012 y(format)i(is)h(not)f(T)l(ransparen)o(t)h(if)g
-(used)g(for)g(an)o(y)g(substan)o(tial)e(amoun)o(t)i(of)f(text.)26
-b(A)17 b(cop)o(y)g(that)f(is)165 1067 y(not)f(\\T)l(ransparen)o(t")f
-(is)h(called)f(\\Opaque".)165 1143 y(Examples)26 b(of)g(suitable)g
-(formats)f(for)h(T)l(ransparen)o(t)g(copies)g(include)h(plain)f
-Fk(asci)q(i)g Fr(without)165 1197 y(markup,)18 b(T)l(exinfo)g(input)g
-(format,)f(LaT)879 1207 y(E)905 1197 y(X)h(input)g(format,)f
-Fd(SGML)h Fr(or)f Fd(XML)i Fr(using)e(a)h(publicly)165
-1252 y(a)o(v)m(ailable)g Fd(DTD)p Fr(,)i(and)g(standard-conforming)f
-(simple)g Fd(HTML)p Fr(,)i(P)o(ostScript)d(or)i Fd(PDF)g
-Fr(designed)165 1307 y(for)e(h)o(uman)i(mo)q(di\014cation.)30
-b(Examples)19 b(of)g(transparen)o(t)f(image)g(formats)g(include)h
-Fd(PNG)p Fr(,)h Fd(X)o(CF)165 1362 y Fr(and)f Fd(JPG)p
-Fr(.)33 b(Opaque)20 b(formats)e(include)h(proprietary)f(formats)g(that)
-h(can)g(b)q(e)h(read)f(and)h(edited)165 1417 y(only)26
-b(b)o(y)h(proprietary)f(w)o(ord)g(pro)q(cessors,)j Fd(SGML)d
-Fr(or)h Fd(XML)g Fr(for)f(whic)o(h)g(the)h Fd(DTD)g Fr(and/or)165
-1471 y(pro)q(cessing)j(to)q(ols)g(are)g(not)g(generally)g(a)o(v)m
-(ailable,)i(and)f(the)g(mac)o(hine-generated)f Fd(HTML)p
-Fr(,)165 1526 y(P)o(ostScript)14 b(or)h Fd(PDF)g Fr(pro)q(duced)h(b)o
-(y)f(some)g(w)o(ord)g(pro)q(cessors)g(for)f(output)h(purp)q(oses)h
-(only)l(.)165 1601 y(The)h(\\Title)f(P)o(age")g(means,)i(for)e(a)h
-(prin)o(ted)g(b)q(o)q(ok,)g(the)g(title)f(page)h(itself,)g(plus)g(suc)o
-(h)g(follo)o(wing)165 1656 y(pages)d(as)f(are)h(needed)h(to)e(hold,)h
-(legibly)l(,)e(the)i(material)e(this)i(License)g(requires)g(to)f(app)q
-(ear)h(in)g(the)165 1711 y(title)e(page.)19 b(F)l(or)13
-b(w)o(orks)f(in)h(formats)f(whic)o(h)h(do)g(not)g(ha)o(v)o(e)g(an)o(y)g
-(title)f(page)h(as)g(suc)o(h,)h(\\Title)e(P)o(age")165
-1766 y(means)j(the)h(text)e(near)i(the)f(most)g(prominen)o(t)f(app)q
-(earance)i(of)f(the)g(w)o(ork's)f(title,)g(preceding)i(the)165
-1821 y(b)q(eginning)f(of)g(the)g(b)q(o)q(dy)h(of)f(the)g(text.)165
-1896 y(The)j(\\publisher")e(means)i(an)o(y)f(p)q(erson)g(or)g(en)o(tit)
-o(y)f(that)h(distributes)g(copies)g(of)g(the)g(Do)q(cumen)o(t)165
-1951 y(to)e(the)g(public.)165 2026 y(A)g(section)f(\\En)o(titled)g
-(XYZ")g(means)h(a)g(named)g(subunit)g(of)f(the)h(Do)q(cumen)o(t)g
-(whose)g(title)e(either)165 2081 y(is)g(precisely)h(XYZ)g(or)f(con)o
-(tains)g(XYZ)h(in)g(paren)o(theses)g(follo)o(wing)d(text)j(that)f
-(translates)f(XYZ)i(in)165 2136 y(another)e(language.)18
-b(\(Here)13 b(XYZ)f(stands)g(for)g(a)g(sp)q(eci\014c)i(section)e(name)g
-(men)o(tioned)g(b)q(elo)o(w,)h(suc)o(h)165 2191 y(as)h(\\Ac)o(kno)o
-(wledgemen)o(ts",)e(\\Dedications",)h(\\Endorsemen)o(ts",)g(or)g
-(\\History".\))18 b(T)l(o)13 b(\\Preserv)o(e)165 2245
-y(the)k(Title")e(of)i(suc)o(h)g(a)f(section)h(when)g(y)o(ou)f(mo)q
-(dify)h(the)g(Do)q(cumen)o(t)f(means)h(that)f(it)g(remains)g(a)165
-2300 y(section)f(\\En)o(titled)f(XYZ")g(according)h(to)g(this)f
-(de\014nition.)165 2375 y(The)g(Do)q(cumen)o(t)g(ma)o(y)f(include)h(W)l
-(arran)o(t)o(y)e(Disclaimers)g(next)i(to)g(the)g(notice)f(whic)o(h)h
-(states)f(that)165 2430 y(this)j(License)i(applies)f(to)f(the)h(Do)q
-(cumen)o(t.)25 b(These)17 b(W)l(arran)o(t)o(y)e(Disclaimers)h(are)g
-(considered)i(to)165 2485 y(b)q(e)h(included)h(b)o(y)f(reference)g(in)g
-(this)f(License,)i(but)f(only)f(as)h(regards)f(disclaiming)f(w)o(arran)
-o(ties:)165 2540 y(an)o(y)h(other)g(implication)f(that)h(these)g(W)l
-(arran)o(t)o(y)f(Disclaimers)g(ma)o(y)g(ha)o(v)o(e)h(is)g(v)o(oid)g
-(and)h(has)f(no)165 2595 y(e\013ect)d(on)g(the)g(meaning)g(of)g(this)g
-(License.)100 2670 y(2.)29 b(VERBA)l(TIM)16 b(COPYING)p
-eop end
-%%Page: 14 17
-TeXDict begin 14 16 bop 75 -58 a Fr(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(14)165 149
-y(Y)l(ou)19 b(ma)o(y)g(cop)o(y)f(and)i(distribute)e(the)h(Do)q(cumen)o
-(t)g(in)g(an)o(y)g(medium,)g(either)g(commercially)e(or)165
-204 y(noncommercially)l(,)k(pro)o(vided)g(that)g(this)g(License,)i(the)
-e(cop)o(yrigh)o(t)f(notices,)i(and)g(the)f(license)165
-259 y(notice)d(sa)o(ying)e(this)i(License)g(applies)g(to)f(the)h(Do)q
-(cumen)o(t)g(are)f(repro)q(duced)i(in)f(all)f(copies,)h(and)165
-314 y(that)13 b(y)o(ou)g(add)g(no)g(other)g(conditions)g(whatso)q(ev)o
-(er)f(to)h(those)g(of)g(this)g(License.)20 b(Y)l(ou)13
-b(ma)o(y)g(not)g(use)165 369 y(tec)o(hnical)j(measures)g(to)g(obstruct)
-g(or)g(con)o(trol)f(the)h(reading)g(or)g(further)h(cop)o(ying)f(of)g
-(the)g(copies)165 423 y(y)o(ou)c(mak)o(e)g(or)f(distribute.)19
-b(Ho)o(w)o(ev)o(er,)11 b(y)o(ou)h(ma)o(y)g(accept)g(comp)q(ensation)g
-(in)g(exc)o(hange)h(for)e(copies.)165 478 y(If)16 b(y)o(ou)g
-(distribute)f(a)h(large)f(enough)i(n)o(um)o(b)q(er)f(of)g(copies)g(y)o
-(ou)g(m)o(ust)f(also)g(follo)o(w)g(the)h(conditions)165
-533 y(in)f(section)g(3.)165 600 y(Y)l(ou)c(ma)o(y)e(also)h(lend)g
-(copies,)h(under)g(the)g(same)f(conditions)f(stated)h(ab)q(o)o(v)o(e,)h
-(and)f(y)o(ou)g(ma)o(y)g(publicly)165 655 y(displa)o(y)k(copies.)100
-722 y(3.)29 b(COPYING)16 b(IN)f(QUANTITY)165 789 y(If)e(y)o(ou)f
-(publish)h(prin)o(ted)f(copies)h(\(or)e(copies)i(in)f(media)h(that)e
-(commonly)h(ha)o(v)o(e)g(prin)o(ted)h(co)o(v)o(ers\))e(of)165
-844 y(the)16 b(Do)q(cumen)o(t,)g(n)o(um)o(b)q(ering)f(more)h(than)g
-(100,)e(and)i(the)g(Do)q(cumen)o(t's)g(license)g(notice)f(requires)165
-898 y(Co)o(v)o(er)h(T)l(exts,)h(y)o(ou)g(m)o(ust)g(enclose)g(the)g
-(copies)g(in)g(co)o(v)o(ers)g(that)f(carry)l(,)h(clearly)f(and)i
-(legibly)l(,)e(all)165 953 y(these)k(Co)o(v)o(er)e(T)l(exts:)29
-b(F)l(ron)o(t-Co)o(v)o(er)18 b(T)l(exts)h(on)g(the)h(fron)o(t)f(co)o(v)
-o(er,)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l(exts)g(on)165
-1008 y(the)c(bac)o(k)f(co)o(v)o(er.)19 b(Both)14 b(co)o(v)o(ers)g(m)o
-(ust)g(also)g(clearly)g(and)g(legibly)g(iden)o(tify)g(y)o(ou)g(as)g
-(the)h(publisher)165 1063 y(of)i(these)g(copies.)26 b(The)17
-b(fron)o(t)f(co)o(v)o(er)h(m)o(ust)f(presen)o(t)i(the)f(full)f(title)g
-(with)h(all)f(w)o(ords)g(of)h(the)g(title)165 1117 y(equally)e
-(prominen)o(t)g(and)g(visible.)20 b(Y)l(ou)c(ma)o(y)e(add)i(other)f
-(material)e(on)j(the)f(co)o(v)o(ers)g(in)g(addition.)165
-1172 y(Cop)o(ying)i(with)h(c)o(hanges)g(limited)f(to)g(the)h(co)o(v)o
-(ers,)g(as)g(long)f(as)h(they)g(preserv)o(e)g(the)g(title)f(of)h(the)
-165 1227 y(Do)q(cumen)o(t)g(and)h(satisfy)e(these)i(conditions,)f(can)h
-(b)q(e)g(treated)f(as)h(v)o(erbatim)e(cop)o(ying)h(in)g(other)165
-1282 y(resp)q(ects.)165 1349 y(If)f(the)f(required)h(texts)e(for)h
-(either)g(co)o(v)o(er)g(are)g(to)q(o)g(v)o(oluminous)f(to)h(\014t)g
-(legibly)l(,)f(y)o(ou)h(should)h(put)165 1404 y(the)g(\014rst)f(ones)g
-(listed)g(\(as)f(man)o(y)h(as)g(\014t)h(reasonably\))e(on)h(the)h
-(actual)f(co)o(v)o(er,)f(and)i(con)o(tin)o(ue)f(the)165
-1458 y(rest)f(on)o(to)f(adjacen)o(t)h(pages.)165 1525
-y(If)f(y)o(ou)f(publish)h(or)f(distribute)f(Opaque)j(copies)e(of)g(the)
-h(Do)q(cumen)o(t)f(n)o(um)o(b)q(ering)h(more)f(than)g(100,)165
-1580 y(y)o(ou)h(m)o(ust)f(either)h(include)g(a)g(mac)o(hine-readable)g
-(T)l(ransparen)o(t)f(cop)o(y)h(along)f(with)g(eac)o(h)h(Opaque)165
-1635 y(cop)o(y)l(,)k(or)f(state)g(in)g(or)g(with)g(eac)o(h)g(Opaque)i
-(cop)o(y)e(a)g(computer-net)o(w)o(ork)g(lo)q(cation)f(from)h(whic)o(h)
-165 1690 y(the)12 b(general)g(net)o(w)o(ork-using)f(public)h(has)g
-(access)g(to)g(do)o(wnload)f(using)h(public-standard)g(net)o(w)o(ork)
-165 1745 y(proto)q(cols)18 b(a)h(complete)h(T)l(ransparen)o(t)e(cop)o
-(y)i(of)f(the)g(Do)q(cumen)o(t,)h(free)g(of)f(added)h(material.)31
-b(If)165 1799 y(y)o(ou)19 b(use)h(the)f(latter)f(option,)i(y)o(ou)f(m)o
-(ust)g(tak)o(e)f(reasonably)h(pruden)o(t)h(steps,)g(when)g(y)o(ou)f(b)q
-(egin)165 1854 y(distribution)f(of)g(Opaque)i(copies)f(in)g(quan)o(tit)
-o(y)l(,)g(to)f(ensure)i(that)e(this)h(T)l(ransparen)o(t)f(cop)o(y)h
-(will)165 1909 y(remain)c(th)o(us)f(accessible)h(at)g(the)g(stated)g
-(lo)q(cation)e(un)o(til)i(at)f(least)g(one)i(y)o(ear)e(after)g(the)i
-(last)e(time)165 1964 y(y)o(ou)k(distribute)g(an)g(Opaque)h(cop)o(y)f
-(\(directly)g(or)g(through)g(y)o(our)g(agen)o(ts)f(or)h(retailers\))f
-(of)h(that)165 2019 y(edition)d(to)f(the)h(public.)165
-2086 y(It)i(is)g(requested,)h(but)f(not)g(required,)h(that)e(y)o(ou)h
-(con)o(tact)g(the)g(authors)g(of)f(the)i(Do)q(cumen)o(t)f(w)o(ell)165
-2140 y(b)q(efore)e(redistributing)e(an)o(y)h(large)f(n)o(um)o(b)q(er)i
-(of)e(copies,)h(to)g(giv)o(e)g(them)g(a)g(c)o(hance)h(to)e(pro)o(vide)h
-(y)o(ou)165 2195 y(with)h(an)g(up)q(dated)h(v)o(ersion)e(of)h(the)g(Do)
-q(cumen)o(t.)100 2262 y(4.)29 b(MODIFICA)l(TIONS)165
-2329 y(Y)l(ou)13 b(ma)o(y)f(cop)o(y)h(and)g(distribute)f(a)g(Mo)q
-(di\014ed)h(V)l(ersion)g(of)f(the)h(Do)q(cumen)o(t)f(under)i(the)f
-(conditions)165 2384 y(of)d(sections)g(2)g(and)h(3)f(ab)q(o)o(v)o(e,)h
-(pro)o(vided)f(that)g(y)o(ou)g(release)g(the)h(Mo)q(di\014ed)g(V)l
-(ersion)f(under)h(precisely)165 2439 y(this)j(License,)h(with)f(the)g
-(Mo)q(di\014ed)h(V)l(ersion)f(\014lling)g(the)h(role)e(of)i(the)f(Do)q
-(cumen)o(t,)g(th)o(us)h(licensing)165 2493 y(distribution)h(and)h(mo)q
-(di\014cation)f(of)h(the)g(Mo)q(di\014ed)g(V)l(ersion)g(to)f(who)q(ev)o
-(er)h(p)q(ossesses)h(a)e(cop)o(y)h(of)165 2548 y(it.)i(In)d(addition,)e
-(y)o(ou)h(m)o(ust)f(do)h(these)h(things)f(in)g(the)g(Mo)q(di\014ed)g(V)
-l(ersion:)178 2615 y(A.)30 b(Use)17 b(in)f(the)g(Title)f(P)o(age)h
-(\(and)g(on)h(the)f(co)o(v)o(ers,)g(if)f(an)o(y\))h(a)g(title)f
-(distinct)h(from)f(that)h(of)g(the)255 2670 y(Do)q(cumen)o(t,)h(and)g
-(from)f(those)h(of)f(previous)h(v)o(ersions)f(\(whic)o(h)g(should,)h
-(if)g(there)g(w)o(ere)f(an)o(y)l(,)p eop end
-%%Page: 15 18
-TeXDict begin 15 17 bop 75 -58 a Fr(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(15)255 149
-y(b)q(e)16 b(listed)f(in)h(the)g(History)e(section)h(of)g(the)h(Do)q
-(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g(same)f(title)f(as)
-255 204 y(a)h(previous)g(v)o(ersion)f(if)h(the)g(original)e(publisher)j
-(of)f(that)f(v)o(ersion)g(giv)o(es)h(p)q(ermission.)180
-273 y(B.)30 b(List)15 b(on)g(the)g(Title)g(P)o(age,)f(as)h(authors,)f
-(one)h(or)g(more)g(p)q(ersons)g(or)g(en)o(tities)f(resp)q(onsible)i
-(for)255 328 y(authorship)d(of)f(the)h(mo)q(di\014cations)f(in)h(the)g
-(Mo)q(di\014ed)h(V)l(ersion,)f(together)f(with)g(at)h(least)f(\014v)o
-(e)255 382 y(of)g(the)g(principal)f(authors)g(of)h(the)g(Do)q(cumen)o
-(t)g(\(all)e(of)i(its)f(principal)g(authors,)h(if)f(it)g(has)h(few)o
-(er)255 437 y(than)j(\014v)o(e\),)g(unless)g(they)g(release)g(y)o(ou)g
-(from)f(this)h(requiremen)o(t.)180 506 y(C.)29 b(State)15
-b(on)g(the)h(Title)e(page)h(the)h(name)f(of)g(the)g(publisher)h(of)f
-(the)g(Mo)q(di\014ed)h(V)l(ersion,)f(as)g(the)255 560
-y(publisher.)178 629 y(D.)29 b(Preserv)o(e)15 b(all)f(the)h(cop)o
-(yrigh)o(t)f(notices)h(of)g(the)g(Do)q(cumen)o(t.)181
-697 y(E.)30 b(Add)16 b(an)g(appropriate)f(cop)o(yrigh)o(t)f(notice)h
-(for)g(y)o(our)g(mo)q(di\014cations)g(adjacen)o(t)h(to)f(the)g(other)
-255 752 y(cop)o(yrigh)o(t)f(notices.)183 821 y(F.)29
-b(Include,)15 b(immediately)e(after)g(the)h(cop)o(yrigh)o(t)e(notices,)
-i(a)f(license)h(notice)g(giving)f(the)h(public)255 875
-y(p)q(ermission)e(to)f(use)i(the)f(Mo)q(di\014ed)h(V)l(ersion)f(under)h
-(the)f(terms)g(of)f(this)h(License,)h(in)f(the)h(form)255
-930 y(sho)o(wn)i(in)g(the)g(Addendum)i(b)q(elo)o(w.)177
-999 y(G.)29 b(Preserv)o(e)11 b(in)g(that)g(license)g(notice)h(the)f
-(full)g(lists)f(of)h(In)o(v)m(arian)o(t)g(Sections)g(and)g(required)h
-(Co)o(v)o(er)255 1054 y(T)l(exts)j(giv)o(en)g(in)g(the)g(Do)q(cumen)o
-(t's)g(license)g(notice.)178 1122 y(H.)30 b(Include)16
-b(an)f(unaltered)h(cop)o(y)f(of)f(this)h(License.)196
-1191 y(I.)30 b(Preserv)o(e)16 b(the)g(section)g(En)o(titled)f
-(\\History",)f(Preserv)o(e)h(its)h(Title,)e(and)j(add)f(to)f(it)h(an)g
-(item)255 1245 y(stating)d(at)g(least)g(the)h(title,)f(y)o(ear,)g(new)i
-(authors,)e(and)h(publisher)g(of)g(the)g(Mo)q(di\014ed)g(V)l(ersion)255
-1300 y(as)h(giv)o(en)g(on)h(the)g(Title)e(P)o(age.)21
-b(If)16 b(there)g(is)f(no)h(section)f(En)o(titled)f(\\History")g(in)i
-(the)g(Do)q(cu-)255 1355 y(men)o(t,)h(create)g(one)h(stating)e(the)h
-(title,)g(y)o(ear,)g(authors,)g(and)g(publisher)h(of)f(the)g(Do)q
-(cumen)o(t)255 1410 y(as)h(giv)o(en)f(on)h(its)f(Title)g(P)o(age,)h
-(then)h(add)f(an)g(item)f(describing)h(the)g(Mo)q(di\014ed)g(V)l
-(ersion)g(as)255 1465 y(stated)d(in)g(the)g(previous)g(sen)o(tence.)189
-1533 y(J.)30 b(Preserv)o(e)16 b(the)g(net)o(w)o(ork)f(lo)q(cation,)g
-(if)h(an)o(y)l(,)g(giv)o(en)g(in)g(the)g(Do)q(cumen)o(t)g(for)g(public)
-g(access)h(to)255 1588 y(a)e(T)l(ransparen)o(t)g(cop)o(y)h(of)f(the)g
-(Do)q(cumen)o(t,)h(and)f(lik)o(ewise)g(the)g(net)o(w)o(ork)g(lo)q
-(cations)f(giv)o(en)h(in)255 1643 y(the)h(Do)q(cumen)o(t)g(for)f
-(previous)g(v)o(ersions)g(it)g(w)o(as)g(based)i(on.)k(These)c(ma)o(y)e
-(b)q(e)h(placed)g(in)g(the)255 1697 y(\\History")11 b(section.)18
-b(Y)l(ou)13 b(ma)o(y)f(omit)f(a)h(net)o(w)o(ork)g(lo)q(cation)f(for)h
-(a)g(w)o(ork)g(that)g(w)o(as)f(published)255 1752 y(at)17
-b(least)g(four)h(y)o(ears)f(b)q(efore)h(the)g(Do)q(cumen)o(t)g(itself,)
-f(or)g(if)h(the)f(original)f(publisher)i(of)g(the)255
-1807 y(v)o(ersion)c(it)h(refers)g(to)f(giv)o(es)h(p)q(ermission.)177
-1875 y(K.)30 b(F)l(or)11 b(an)o(y)h(section)f(En)o(titled)g(\\Ac)o(kno)
-o(wledgemen)o(ts")g(or)g(\\Dedications",)f(Preserv)o(e)i(the)g(Title)
-255 1930 y(of)h(the)g(section,)g(and)g(preserv)o(e)h(in)f(the)g
-(section)g(all)f(the)i(substance)f(and)h(tone)f(of)g(eac)o(h)g(of)g
-(the)255 1985 y(con)o(tributor)h(ac)o(kno)o(wledgemen)o(ts)g(and/or)h
-(dedications)f(giv)o(en)h(therein.)184 2054 y(L.)30 b(Preserv)o(e)17
-b(all)g(the)h(In)o(v)m(arian)o(t)f(Sections)g(of)h(the)f(Do)q(cumen)o
-(t,)h(unaltered)g(in)f(their)h(text)f(and)255 2108 y(in)h(their)f
-(titles.)27 b(Section)18 b(n)o(um)o(b)q(ers)g(or)g(the)g(equiv)m(alen)o
-(t)f(are)h(not)g(considered)g(part)f(of)h(the)255 2163
-y(section)d(titles.)171 2232 y(M.)29 b(Delete)15 b(an)o(y)g(section)g
-(En)o(titled)f(\\Endorsemen)o(ts".)20 b(Suc)o(h)c(a)f(section)g(ma)o(y)
-f(not)h(b)q(e)h(included)255 2286 y(in)f(the)g(Mo)q(di\014ed)h(V)l
-(ersion.)178 2355 y(N.)30 b(Do)14 b(not)f(retitle)g(an)o(y)h(existing)f
-(section)h(to)g(b)q(e)g(En)o(titled)g(\\Endorsemen)o(ts")f(or)h(to)f
-(con\015ict)h(in)255 2410 y(title)g(with)g(an)o(y)h(In)o(v)m(arian)o(t)
-g(Section.)177 2478 y(O.)30 b(Preserv)o(e)15 b(an)o(y)g(W)l(arran)o(t)o
-(y)e(Disclaimers.)165 2560 y(If)k(the)g(Mo)q(di\014ed)g(V)l(ersion)f
-(includes)h(new)g(fron)o(t-matter)e(sections)h(or)g(app)q(endices)i
-(that)e(qualify)165 2615 y(as)e(Secondary)g(Sections)g(and)g(con)o
-(tain)f(no)h(material)e(copied)i(from)f(the)h(Do)q(cumen)o(t,)g(y)o(ou)
-f(ma)o(y)h(at)165 2670 y(y)o(our)i(option)f(designate)h(some)g(or)f
-(all)g(of)h(these)h(sections)e(as)h(in)o(v)m(arian)o(t.)22
-b(T)l(o)15 b(do)i(this,)e(add)h(their)p eop end
-%%Page: 16 19
-TeXDict begin 16 18 bop 75 -58 a Fr(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(16)165 149
-y(titles)16 b(to)h(the)h(list)f(of)g(In)o(v)m(arian)o(t)g(Sections)h
-(in)f(the)h(Mo)q(di\014ed)g(V)l(ersion's)f(license)h(notice.)27
-b(These)165 204 y(titles)14 b(m)o(ust)h(b)q(e)g(distinct)g(from)f(an)o
-(y)h(other)g(section)g(titles.)165 275 y(Y)l(ou)21 b(ma)o(y)g(add)g(a)g
-(section)g(En)o(titled)f(\\Endorsemen)o(ts",)h(pro)o(vided)g(it)g(con)o
-(tains)f(nothing)h(but)165 330 y(endorsemen)o(ts)15 b(of)f(y)o(our)h
-(Mo)q(di\014ed)g(V)l(ersion)f(b)o(y)h(v)m(arious)f(parties|for)g
-(example,)h(statemen)o(ts)e(of)165 385 y(p)q(eer)h(review)f(or)h(that)e
-(the)i(text)f(has)h(b)q(een)g(appro)o(v)o(ed)g(b)o(y)f(an)h
-(organization)d(as)j(the)f(authoritativ)o(e)165 440 y(de\014nition)i
-(of)g(a)g(standard.)165 511 y(Y)l(ou)f(ma)o(y)g(add)g(a)g(passage)g(of)
-f(up)i(to)e(\014v)o(e)i(w)o(ords)e(as)h(a)g(F)l(ron)o(t-Co)o(v)o(er)e
-(T)l(ext,)i(and)g(a)g(passage)g(of)f(up)165 566 y(to)g(25)g(w)o(ords)g
-(as)g(a)g(Bac)o(k-Co)o(v)o(er)g(T)l(ext,)g(to)g(the)g(end)i(of)e(the)g
-(list)g(of)g(Co)o(v)o(er)f(T)l(exts)i(in)f(the)h(Mo)q(di\014ed)165
-621 y(V)l(ersion.)28 b(Only)18 b(one)g(passage)f(of)h(F)l(ron)o(t-Co)o
-(v)o(er)e(T)l(ext)i(and)g(one)g(of)f(Bac)o(k-Co)o(v)o(er)g(T)l(ext)h
-(ma)o(y)f(b)q(e)165 675 y(added)d(b)o(y)g(\(or)f(through)g(arrangemen)o
-(ts)g(made)h(b)o(y\))f(an)o(y)h(one)g(en)o(tit)o(y)l(.)k(If)c(the)g(Do)
-q(cumen)o(t)g(already)165 730 y(includes)j(a)g(co)o(v)o(er)f(text)h
-(for)f(the)h(same)g(co)o(v)o(er,)f(previously)g(added)i(b)o(y)f(y)o(ou)
-g(or)f(b)o(y)h(arrangemen)o(t)165 785 y(made)h(b)o(y)f(the)h(same)f(en)
-o(tit)o(y)g(y)o(ou)g(are)g(acting)g(on)g(b)q(ehalf)h(of,)g(y)o(ou)f(ma)
-o(y)g(not)g(add)h(another;)g(but)165 840 y(y)o(ou)f(ma)o(y)f(replace)h
-(the)g(old)g(one,)g(on)g(explicit)f(p)q(ermission)g(from)h(the)g
-(previous)g(publisher)g(that)165 895 y(added)f(the)f(old)g(one.)165
-966 y(The)e(author\(s\))e(and)i(publisher\(s\))f(of)h(the)g(Do)q(cumen)
-o(t)f(do)h(not)f(b)o(y)h(this)f(License)i(giv)o(e)e(p)q(ermission)165
-1021 y(to)j(use)g(their)g(names)g(for)f(publicit)o(y)h(for)f(or)h(to)f
-(assert)h(or)f(imply)h(endorsemen)o(t)g(of)g(an)o(y)g(Mo)q(di\014ed)165
-1075 y(V)l(ersion.)100 1147 y(5.)29 b(COMBINING)16 b(DOCUMENTS)165
-1218 y(Y)l(ou)k(ma)o(y)e(com)o(bine)h(the)h(Do)q(cumen)o(t)f(with)g
-(other)g(do)q(cumen)o(ts)g(released)h(under)g(this)f(License,)165
-1273 y(under)h(the)f(terms)g(de\014ned)h(in)f(section)g(4)f(ab)q(o)o(v)
-o(e)h(for)g(mo)q(di\014ed)g(v)o(ersions,)g(pro)o(vided)g(that)f(y)o(ou)
-165 1328 y(include)13 b(in)f(the)h(com)o(bination)f(all)f(of)h(the)h
-(In)o(v)m(arian)o(t)f(Sections)h(of)f(all)f(of)i(the)f(original)f(do)q
-(cumen)o(ts,)165 1382 y(unmo)q(di\014ed,)j(and)g(list)e(them)h(all)g
-(as)g(In)o(v)m(arian)o(t)f(Sections)i(of)f(y)o(our)f(com)o(bined)i(w)o
-(ork)e(in)h(its)g(license)165 1437 y(notice,)h(and)i(that)e(y)o(ou)h
-(preserv)o(e)g(all)g(their)f(W)l(arran)o(t)o(y)g(Disclaimers.)165
-1508 y(The)h(com)o(bined)h(w)o(ork)e(need)i(only)e(con)o(tain)h(one)g
-(cop)o(y)g(of)g(this)f(License,)i(and)f(m)o(ultiple)f(iden)o(tical)165
-1563 y(In)o(v)m(arian)o(t)i(Sections)g(ma)o(y)f(b)q(e)i(replaced)g
-(with)e(a)h(single)g(cop)o(y)l(.)23 b(If)16 b(there)h(are)f(m)o
-(ultiple)f(In)o(v)m(arian)o(t)165 1618 y(Sections)e(with)g(the)g(same)g
-(name)h(but)f(di\013eren)o(t)g(con)o(ten)o(ts,)g(mak)o(e)g(the)g(title)
-f(of)h(eac)o(h)h(suc)o(h)f(section)165 1673 y(unique)18
-b(b)o(y)e(adding)h(at)g(the)g(end)g(of)g(it,)f(in)h(paren)o(theses,)g
-(the)g(name)g(of)g(the)g(original)e(author)h(or)165 1728
-y(publisher)d(of)f(that)g(section)g(if)g(kno)o(wn,)g(or)g(else)g(a)h
-(unique)g(n)o(um)o(b)q(er.)19 b(Mak)o(e)12 b(the)g(same)h(adjustmen)o
-(t)165 1782 y(to)f(the)g(section)g(titles)f(in)h(the)g(list)f(of)h(In)o
-(v)m(arian)o(t)f(Sections)h(in)g(the)h(license)f(notice)g(of)g(the)g
-(com)o(bined)165 1837 y(w)o(ork.)165 1908 y(In)21 b(the)g(com)o
-(bination,)f(y)o(ou)h(m)o(ust)f(com)o(bine)g(an)o(y)g(sections)h(En)o
-(titled)e(\\History")g(in)i(the)f(v)m(ari-)165 1963 y(ous)c(original)e
-(do)q(cumen)o(ts,)i(forming)f(one)i(section)e(En)o(titled)g
-(\\History";)g(lik)o(ewise)f(com)o(bine)i(an)o(y)165
-2018 y(sections)f(En)o(titled)g(\\Ac)o(kno)o(wledgemen)o(ts",)g(and)h
-(an)o(y)f(sections)h(En)o(titled)e(\\Dedications".)21
-b(Y)l(ou)165 2073 y(m)o(ust)15 b(delete)g(all)f(sections)h(En)o(titled)
-f(\\Endorsemen)o(ts.")100 2144 y(6.)29 b(COLLECTIONS)17
-b(OF)e(DOCUMENTS)165 2215 y(Y)l(ou)h(ma)o(y)f(mak)o(e)h(a)f(collection)
-g(consisting)g(of)g(the)h(Do)q(cumen)o(t)g(and)g(other)g(do)q(cumen)o
-(ts)g(released)165 2270 y(under)22 b(this)f(License,)i(and)e(replace)g
-(the)g(individual)g(copies)g(of)g(this)f(License)i(in)f(the)g(v)m
-(arious)165 2325 y(do)q(cumen)o(ts)h(with)e(a)h(single)g(cop)o(y)g
-(that)f(is)h(included)h(in)f(the)g(collection,)h(pro)o(vided)f(that)f
-(y)o(ou)165 2380 y(follo)o(w)d(the)h(rules)h(of)f(this)g(License)h(for)
-f(v)o(erbatim)f(cop)o(ying)h(of)g(eac)o(h)h(of)f(the)h(do)q(cumen)o(ts)
-g(in)f(all)165 2434 y(other)d(resp)q(ects.)165 2506 y(Y)l(ou)h(ma)o(y)f
-(extract)g(a)g(single)g(do)q(cumen)o(t)h(from)f(suc)o(h)h(a)g
-(collection,)e(and)i(distribute)f(it)g(individu-)165
-2560 y(ally)h(under)j(this)e(License,)h(pro)o(vided)f(y)o(ou)g(insert)g
-(a)h(cop)o(y)f(of)g(this)g(License)h(in)o(to)f(the)g(extracted)165
-2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)e(this)i(License)h(in)f(all)g
-(other)f(resp)q(ects)i(regarding)f(v)o(erbatim)f(cop)o(ying)g(of)165
-2670 y(that)f(do)q(cumen)o(t.)p eop end
-%%Page: 17 20
-TeXDict begin 17 19 bop 75 -58 a Fr(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(17)100 149
-y(7.)29 b(A)o(GGREGA)l(TION)15 b(WITH)h(INDEPENDENT)e(W)o(ORKS)165
-221 y(A)g(compilation)e(of)i(the)g(Do)q(cumen)o(t)g(or)f(its)h(deriv)m
-(ativ)o(es)f(with)g(other)h(separate)f(and)i(indep)q(enden)o(t)165
-275 y(do)q(cumen)o(ts)i(or)f(w)o(orks,)g(in)g(or)g(on)h(a)f(v)o(olume)g
-(of)g(a)h(storage)e(or)h(distribution)g(medium,)g(is)g(called)165
-330 y(an)f(\\aggregate")e(if)h(the)i(cop)o(yrigh)o(t)d(resulting)h
-(from)h(the)g(compilation)e(is)i(not)f(used)i(to)e(limit)g(the)165
-385 y(legal)e(righ)o(ts)g(of)h(the)g(compilation's)f(users)h(b)q(ey)o
-(ond)h(what)f(the)g(individual)f(w)o(orks)h(p)q(ermit.)19
-b(When)165 440 y(the)g(Do)q(cumen)o(t)g(is)g(included)h(in)f(an)g
-(aggregate,)f(this)h(License)h(do)q(es)g(not)e(apply)h(to)g(the)g
-(other)165 495 y(w)o(orks)14 b(in)h(the)g(aggregate)f(whic)o(h)h(are)g
-(not)g(themselv)o(es)g(deriv)m(ativ)o(e)f(w)o(orks)g(of)h(the)g(Do)q
-(cumen)o(t.)165 566 y(If)d(the)f(Co)o(v)o(er)f(T)l(ext)i(requiremen)o
-(t)f(of)g(section)g(3)g(is)g(applicable)f(to)h(these)h(copies)f(of)g
-(the)g(Do)q(cumen)o(t,)165 621 y(then)h(if)e(the)i(Do)q(cumen)o(t)f(is)
-f(less)h(than)g(one)h(half)e(of)h(the)g(en)o(tire)g(aggregate,)f(the)h
-(Do)q(cumen)o(t's)g(Co)o(v)o(er)165 675 y(T)l(exts)i(ma)o(y)g(b)q(e)h
-(placed)f(on)g(co)o(v)o(ers)g(that)f(brac)o(k)o(et)h(the)g(Do)q(cumen)o
-(t)g(within)g(the)g(aggregate,)f(or)h(the)165 730 y(electronic)k(equiv)
-m(alen)o(t)g(of)g(co)o(v)o(ers)g(if)g(the)h(Do)q(cumen)o(t)f(is)g(in)g
-(electronic)g(form.)27 b(Otherwise)17 b(they)165 785
-y(m)o(ust)e(app)q(ear)g(on)g(prin)o(ted)g(co)o(v)o(ers)g(that)f(brac)o
-(k)o(et)h(the)g(whole)g(aggregate.)100 856 y(8.)29 b(TRANSLA)l(TION)165
-928 y(T)l(ranslation)18 b(is)i(considered)g(a)g(kind)g(of)f(mo)q
-(di\014cation,)h(so)g(y)o(ou)g(ma)o(y)f(distribute)g(translations)165
-982 y(of)j(the)g(Do)q(cumen)o(t)g(under)h(the)f(terms)g(of)g(section)f
-(4.)41 b(Replacing)22 b(In)o(v)m(arian)o(t)g(Sections)g(with)165
-1037 y(translations)f(requires)h(sp)q(ecial)h(p)q(ermission)f(from)g
-(their)g(cop)o(yrigh)o(t)f(holders,)j(but)f(y)o(ou)g(ma)o(y)165
-1092 y(include)13 b(translations)d(of)i(some)g(or)f(all)g(In)o(v)m
-(arian)o(t)h(Sections)g(in)g(addition)g(to)f(the)h(original)f(v)o
-(ersions)165 1147 y(of)k(these)h(In)o(v)m(arian)o(t)f(Sections.)22
-b(Y)l(ou)15 b(ma)o(y)g(include)i(a)e(translation)f(of)h(this)g
-(License,)h(and)g(all)f(the)165 1201 y(license)21 b(notices)f(in)g(the)
-h(Do)q(cumen)o(t,)g(and)g(an)o(y)f(W)l(arran)o(t)o(y)f(Disclaimers,)h
-(pro)o(vided)g(that)g(y)o(ou)165 1256 y(also)f(include)h(the)g
-(original)f(English)g(v)o(ersion)g(of)h(this)f(License)i(and)f(the)g
-(original)e(v)o(ersions)h(of)165 1311 y(those)e(notices)f(and)i
-(disclaimers.)24 b(In)18 b(case)f(of)f(a)h(disagreemen)o(t)f(b)q(et)o
-(w)o(een)i(the)f(translation)e(and)165 1366 y(the)j(original)d(v)o
-(ersion)i(of)g(this)g(License)i(or)e(a)g(notice)g(or)g(disclaimer,)g
-(the)h(original)d(v)o(ersion)i(will)165 1421 y(prev)m(ail.)165
-1492 y(If)e(a)f(section)f(in)i(the)f(Do)q(cumen)o(t)g(is)g(En)o(titled)
-f(\\Ac)o(kno)o(wledgemen)o(ts",)g(\\Dedications",)g(or)g(\\His-)165
-1547 y(tory",)f(the)h(requiremen)o(t)g(\(section)f(4\))h(to)f(Preserv)o
-(e)h(its)g(Title)f(\(section)g(1\))h(will)f(t)o(ypically)f(require)165
-1601 y(c)o(hanging)k(the)g(actual)f(title.)100 1673 y(9.)29
-b(TERMINA)l(TION)165 1744 y(Y)l(ou)15 b(ma)o(y)f(not)h(cop)o(y)l(,)f
-(mo)q(dify)l(,)h(sublicense,)g(or)f(distribute)g(the)h(Do)q(cumen)o(t)g
-(except)h(as)e(expressly)165 1799 y(pro)o(vided)19 b(under)h(this)f
-(License.)33 b(An)o(y)19 b(attempt)f(otherwise)h(to)f(cop)o(y)l(,)i(mo)
-q(dify)l(,)g(sublicense,)g(or)165 1854 y(distribute)14
-b(it)h(is)g(v)o(oid,)f(and)h(will)f(automatically)f(terminate)h(y)o
-(our)g(righ)o(ts)g(under)i(this)f(License.)165 1925 y(Ho)o(w)o(ev)o
-(er,)g(if)h(y)o(ou)g(cease)g(all)f(violation)f(of)i(this)g(License,)h
-(then)f(y)o(our)g(license)g(from)f(a)h(particular)165
-1980 y(cop)o(yrigh)o(t)h(holder)g(is)h(reinstated)f(\(a\))g(pro)o
-(visionally)l(,)f(unless)i(and)g(un)o(til)f(the)h(cop)o(yrigh)o(t)e
-(holder)165 2034 y(explicitly)j(and)i(\014nally)e(terminates)h(y)o(our)
-f(license,)j(and)e(\(b\))g(p)q(ermanen)o(tly)l(,)h(if)f(the)g(cop)o
-(yrigh)o(t)165 2089 y(holder)d(fails)f(to)h(notify)f(y)o(ou)h(of)g(the)
-g(violation)e(b)o(y)i(some)g(reasonable)g(means)g(prior)f(to)h(60)f(da)
-o(ys)165 2144 y(after)e(the)i(cessation.)165 2215 y(Moreo)o(v)o(er,)e
-(y)o(our)h(license)h(from)f(a)g(particular)g(cop)o(yrigh)o(t)f(holder)i
-(is)f(reinstated)g(p)q(ermanen)o(tly)g(if)165 2270 y(the)f(cop)o(yrigh)
-o(t)f(holder)g(noti\014es)h(y)o(ou)f(of)h(the)g(violation)e(b)o(y)h
-(some)h(reasonable)f(means,)h(this)f(is)h(the)165 2325
-y(\014rst)g(time)f(y)o(ou)g(ha)o(v)o(e)h(receiv)o(ed)g(notice)f(of)h
-(violation)e(of)h(this)h(License)g(\(for)f(an)o(y)h(w)o(ork\))f(from)g
-(that)165 2380 y(cop)o(yrigh)o(t)i(holder,)g(and)h(y)o(ou)g(cure)g(the)
-g(violation)e(prior)i(to)f(30)g(da)o(ys)h(after)f(y)o(our)g(receipt)h
-(of)g(the)165 2434 y(notice.)165 2506 y(T)l(ermination)d(of)g(y)o(our)g
-(righ)o(ts)g(under)h(this)f(section)h(do)q(es)g(not)f(terminate)g(the)h
-(licenses)f(of)h(parties)165 2560 y(who)19 b(ha)o(v)o(e)g(receiv)o(ed)g
-(copies)g(or)f(righ)o(ts)g(from)g(y)o(ou)h(under)h(this)e(License.)33
-b(If)19 b(y)o(our)g(righ)o(ts)e(ha)o(v)o(e)165 2615 y(b)q(een)d
-(terminated)e(and)i(not)e(p)q(ermanen)o(tly)h(reinstated,)f(receipt)h
-(of)g(a)g(cop)o(y)g(of)f(some)h(or)f(all)g(of)h(the)165
-2670 y(same)i(material)e(do)q(es)j(not)f(giv)o(e)f(y)o(ou)h(an)o(y)g
-(righ)o(ts)f(to)g(use)i(it.)p eop end
-%%Page: 18 21
-TeXDict begin 18 20 bop 75 -58 a Fr(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(18)77 149
-y(10.)29 b(FUTURE)15 b(REVISIONS)j(OF)d(THIS)h(LICENSE)165
-217 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l(oundation)h(ma)o(y)g
-(publish)h(new,)h(revised)f(v)o(ersions)f(of)g(the)h(GNU)g(F)l(ree)165
-271 y(Do)q(cumen)o(tation)15 b(License)i(from)e(time)g(to)h(time.)21
-b(Suc)o(h)c(new)f(v)o(ersions)g(will)e(b)q(e)j(similar)d(in)i(spirit)
-165 326 y(to)h(the)g(presen)o(t)g(v)o(ersion,)g(but)g(ma)o(y)f
-(di\013er)h(in)g(detail)f(to)h(address)g(new)g(problems)g(or)g
-(concerns.)165 381 y(See)f Fq(http://www.gnu.org/copyle)o(ft/)p
-Fr(.)165 448 y(Eac)o(h)f(v)o(ersion)e(of)i(the)g(License)g(is)f(giv)o
-(en)g(a)h(distinguishing)e(v)o(ersion)h(n)o(um)o(b)q(er.)20
-b(If)15 b(the)g(Do)q(cumen)o(t)165 503 y(sp)q(eci\014es)23
-b(that)f(a)h(particular)e(n)o(um)o(b)q(ered)j(v)o(ersion)d(of)i(this)f
-(License)h(\\or)f(an)o(y)g(later)g(v)o(ersion")165 558
-y(applies)16 b(to)f(it,)h(y)o(ou)g(ha)o(v)o(e)g(the)g(option)f(of)h
-(follo)o(wing)e(the)i(terms)g(and)g(conditions)g(either)g(of)g(that)165
-613 y(sp)q(eci\014ed)k(v)o(ersion)e(or)h(of)f(an)o(y)h(later)f(v)o
-(ersion)g(that)g(has)h(b)q(een)h(published)g(\(not)e(as)g(a)h(draft\))f
-(b)o(y)165 667 y(the)e(F)l(ree)h(Soft)o(w)o(are)e(F)l(oundation.)22
-b(If)17 b(the)g(Do)q(cumen)o(t)f(do)q(es)g(not)g(sp)q(ecify)h(a)f(v)o
-(ersion)g(n)o(um)o(b)q(er)g(of)165 722 y(this)h(License,)h(y)o(ou)f(ma)
-o(y)f(c)o(ho)q(ose)i(an)o(y)e(v)o(ersion)h(ev)o(er)g(published)h(\(not)
-e(as)h(a)g(draft\))f(b)o(y)i(the)f(F)l(ree)165 777 y(Soft)o(w)o(are)e
-(F)l(oundation.)21 b(If)16 b(the)g(Do)q(cumen)o(t)g(sp)q(eci\014es)h
-(that)e(a)h(pro)o(xy)f(can)h(decide)h(whic)o(h)f(future)165
-832 y(v)o(ersions)f(of)h(this)g(License)h(can)f(b)q(e)h(used,)g(that)f
-(pro)o(xy's)f(public)h(statemen)o(t)g(of)g(acceptance)g(of)g(a)165
-887 y(v)o(ersion)e(p)q(ermanen)o(tly)h(authorizes)g(y)o(ou)g(to)f(c)o
-(ho)q(ose)i(that)e(v)o(ersion)g(for)h(the)g(Do)q(cumen)o(t.)77
-954 y(11.)29 b(RELICENSING)165 1021 y(\\Massiv)o(e)17
-b(Multiauthor)g(Collab)q(oration)f(Site")i(\(or)g(\\MMC)g(Site"\))f
-(means)i(an)o(y)f(W)l(orld)g(Wide)165 1076 y(W)l(eb)g(serv)o(er)g(that)
-f(publishes)h(cop)o(yrigh)o(table)e(w)o(orks)h(and)h(also)f(pro)o
-(vides)h(prominen)o(t)f(facilities)165 1131 y(for)c(an)o(yb)q(o)q(dy)h
-(to)f(edit)h(those)f(w)o(orks.)19 b(A)14 b(public)f(wiki)g(that)g(an)o
-(yb)q(o)q(dy)h(can)g(edit)g(is)f(an)h(example)f(of)165
-1186 y(suc)o(h)k(a)g(serv)o(er.)24 b(A)17 b(\\Massiv)o(e)e(Multiauthor)
-g(Collab)q(oration")g(\(or)h(\\MMC"\))f(con)o(tained)h(in)h(the)165
-1240 y(site)e(means)g(an)o(y)g(set)g(of)f(cop)o(yrigh)o(table)g(w)o
-(orks)g(th)o(us)h(published)h(on)f(the)g(MMC)g(site.)165
-1308 y(\\CC-BY-SA")j(means)f(the)h(Creativ)o(e)e(Commons)h(A)o
-(ttribution-Share)f(Alik)o(e)h(3.0)g(license)g(pub-)165
-1362 y(lished)c(b)o(y)h(Creativ)o(e)e(Commons)g(Corp)q(oration,)g(a)h
-(not-for-pro\014t)g(corp)q(oration)f(with)h(a)g(principal)165
-1417 y(place)g(of)f(business)i(in)f(San)g(F)l(rancisco,)f(California,)f
-(as)h(w)o(ell)g(as)h(future)g(cop)o(yleft)f(v)o(ersions)g(of)h(that)165
-1472 y(license)i(published)h(b)o(y)f(that)g(same)f(organization.)165
-1539 y(\\Incorp)q(orate")h(means)g(to)g(publish)g(or)g(republish)g(a)g
-(Do)q(cumen)o(t,)g(in)g(whole)g(or)g(in)g(part,)g(as)g(part)165
-1594 y(of)g(another)g(Do)q(cumen)o(t.)165 1661 y(An)e(MMC)g(is)f
-(\\eligible)g(for)g(relicensing")h(if)f(it)h(is)f(licensed)i(under)g
-(this)e(License,)i(and)f(if)g(all)f(w)o(orks)165 1716
-y(that)20 b(w)o(ere)h(\014rst)g(published)g(under)h(this)e(License)i
-(somewhere)f(other)g(than)g(this)f(MMC,)g(and)165 1771
-y(subsequen)o(tly)e(incorp)q(orated)e(in)i(whole)f(or)g(in)g(part)g(in)
-o(to)f(the)h(MMC,)f(\(1\))h(had)g(no)h(co)o(v)o(er)f(texts)165
-1826 y(or)e(in)o(v)m(arian)o(t)e(sections,)i(and)g(\(2\))f(w)o(ere)h
-(th)o(us)g(incorp)q(orated)g(prior)f(to)h(No)o(v)o(em)o(b)q(er)g(1,)f
-(2008.)165 1893 y(The)21 b(op)q(erator)e(of)h(an)g(MMC)f(Site)h(ma)o(y)
-g(republish)h(an)f(MMC)f(con)o(tained)h(in)g(the)h(site)e(under)165
-1948 y(CC-BY-SA)d(on)f(the)g(same)g(site)f(at)h(an)o(y)f(time)h(b)q
-(efore)g(August)g(1,)g(2009,)e(pro)o(vided)i(the)g(MMC)f(is)165
-2002 y(eligible)g(for)h(relicensing.)p eop end
-%%Page: 19 22
-TeXDict begin 19 21 bop 75 -58 a Fr(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(19)75 149
-y Fp(ADDENDUM:)20 b(Ho)n(w)h(to)h(use)g(this)g(License)g(for)g(y)n(our)
-h(do)r(cumen)n(ts)75 229 y Fr(T)l(o)17 b(use)h(this)e(License)i(in)g(a)
-f(do)q(cumen)o(t)g(y)o(ou)g(ha)o(v)o(e)g(written,)g(include)g(a)g(cop)o
-(y)g(of)g(the)h(License)g(in)f(the)75 284 y(do)q(cumen)o(t)f(and)f(put)
-g(the)h(follo)o(wing)d(cop)o(yrigh)o(t)g(and)j(license)f(notices)g
-(just)g(after)f(the)h(title)f(page:)234 340 y Fe(Copyright)i(\(C\))38
-b Fc(year)g(your)18 b(name)p Fe(.)234 384 y(Permission)e(is)j(granted)e
-(to)i(copy,)e(distribute)f(and/or)h(modify)h(this)g(document)234
-427 y(under)g(the)g(terms)g(of)h(the)f(GNU)h(Free)f(Documenta)o(tio)o
-(n)e(License,)h(Version)g(1.3)234 471 y(or)i(any)g(later)e(version)g
-(published)f(by)j(the)g(Free)f(Software)e(Foundation)o(;)234
-514 y(with)i(no)h(Invariant)d(Sections,)g(no)j(Front-Cove)o(r)e(Texts,)
-g(and)h(no)h(Back-Cover)234 558 y(Texts.)37 b(A)19 b(copy)f(of)h(the)g
-(license)e(is)h(included)f(in)i(the)f(section)f(entitled)g(``GNU)234
-601 y(Free)h(Documentat)o(ion)e(License'')o(.)137 669
-y Fr(If)k(y)o(ou)g(ha)o(v)o(e)g(In)o(v)m(arian)o(t)f(Sections,)h(F)l
-(ron)o(t-Co)o(v)o(er)f(T)l(exts)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l
-(exts,)i(replace)f(the)75 724 y(\\with)s(.)10 b(.)g(.)5
-b(T)l(exts.")20 b(line)15 b(with)f(this:)273 780 y Fe(with)19
-b(the)f(Invariant)e(Sections)h(being)g Fc(list)h(their)g(titles)p
-Fe(,)f(with)273 823 y(the)i(Front-Cov)o(er)d(Texts)i(being)g
-Fc(list)p Fe(,)f(and)i(with)f(the)g(Back-Cover)e(Texts)273
-867 y(being)i Fc(list)p Fe(.)137 934 y Fr(If)g(y)o(ou)f(ha)o(v)o(e)h
-(In)o(v)m(arian)o(t)f(Sections)g(without)g(Co)o(v)o(er)f(T)l(exts,)i
-(or)f(some)g(other)g(com)o(bination)g(of)g(the)75 989
-y(three,)e(merge)g(those)g(t)o(w)o(o)f(alternativ)o(es)f(to)i(suit)f
-(the)h(situation.)137 1056 y(If)d(y)o(our)g(do)q(cumen)o(t)g(con)o
-(tains)f(non)o(trivial)f(examples)i(of)f(program)g(co)q(de,)i(w)o(e)f
-(recommend)g(releasing)75 1111 y(these)22 b(examples)f(in)g(parallel)g
-(under)h(y)o(our)f(c)o(hoice)g(of)g(free)h(soft)o(w)o(are)e(license,)i
-(suc)o(h)g(as)g(the)f(GNU)75 1166 y(General)15 b(Public)g(License,)g
-(to)g(p)q(ermit)g(their)f(use)i(in)f(free)g(soft)o(w)o(are.)p
-eop end
-%%Page: 20 23
-TeXDict begin 20 22 bop 75 -58 a Fr(App)q(endix)16 b(B:)f(Concept)h
-(Index)1197 b(20)75 149 y Fn(App)r(endix)26 b(B)41 b(Concept)27
-b(Index)75 319 y Fp(A)75 377 y Fb(anc)o(hored)14 b(searc)o(h)s
-Fa(:)7 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16
-b Fb(7)75 494 y Fp(E)75 552 y Fb(ev)o(en)o(t)d(designators)c
-Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21
-b Fb(1)1012 319 y Fp(H)1012 426 y Fb(history)14 b(ev)o(en)o(ts)s
-Fa(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)16 b Fb(1)1012 493 y(history)e(expansion)6 b Fa(:)i(:)e(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19 b Fb(1)1012 561 y(History)13
-b(Searc)o(hing)5 b Fa(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)18 b Fb(7)p eop end
-%%Page: 21 24
-TeXDict begin 21 23 bop 75 -58 a Fr(App)q(endix)16 b(C:)f(F)l(unction)g
-(and)g(V)l(ariable)g(Index)918 b(21)75 149 y Fn(App)r(endix)26
-b(C)41 b(F)-7 b(unction)27 b(and)g(V)-7 b(ariable)28
-b(Index)75 319 y Fp(A)75 377 y Fe(add_histor)o(y)s Fa(:)s(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16
-b Fb(5)75 421 y Fe(add_histor)o(y_)o(tim)o(e)5 b Fa(:)s(:)h(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(5)75 465 y Fe(append_his)o(to)o(ry)
-8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
-b Fb(8)75 591 y Fp(C)75 649 y Fe(clear_hist)o(or)o(y)6
-b Fa(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(6)75 693 y Fe(current_hi)o(st)o(ory)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)19 b Fb(6)75 819 y Fp(F)75
-878 y Fe(free_histo)o(ry)o(_en)o(tr)o(y)8 b Fa(:)f(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)24 b Fb(5)75 1004 y Fp(G)75 1062 y Fe(get_histor)o(y_)o
-(eve)o(nt)s Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(8)75 1189 y Fp(H)75 1247 y Fe(history_ar)o(g_)o(ext)o(ra)o(ct)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(8)75 1291
-y Fe(history_ba)o(se)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)23 b Fb(8)75 1334 y Fe(history_co)o(mm)o(ent)o(_c)o
-(har)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fb(9)75 1378
-y Fe(history_ex)o(pa)o(nd)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)20 b Fb(8)75 1422 y Fe(history_ex)o(pa)o(nsi)o(on)o
-(_ch)o(ar)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fb(9)75 1465
-y Fe(history_ge)o(t)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(6)75 1509 y Fe(history_ge)o(t_)o
-(his)o(to)o(ry_)o(sta)o(te)7 b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)23 b Fb(5)75 1553
-y Fe(history_ge)o(t_)o(tim)o(e)5 b Fa(:)s(:)h(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)18 b Fb(6)75 1597 y Fe(history_in)o(hi)o(bit)o(_e)o
-(xpa)o(nsi)o(on)o(_fu)o(nc)o(tio)o(n)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g
-(:)g(:)21 b Fb(9)75 1640 y Fe(history_is)o(_s)o(tif)o(le)o(d)8
-b Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(6)75
-1684 y Fe(history_le)o(ng)o(th)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(8)75 1728 y Fe(history_li)o(st)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
-b Fb(6)75 1771 y Fe(history_ma)o(x_)o(ent)o(ri)o(es)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(9)75 1815
-y Fe(history_no)o(_e)o(xpa)o(nd)o(_ch)o(ars)t Fa(:)s(:)6
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)17 b Fb(9)75 1859 y Fe(history_qu)o(ot)o(es_)o(in)o(hib)o
-(it_)o(ex)o(pan)o(si)o(on)7 b Fa(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)23 b Fb(9)75 1902 y Fe(history_se)o(ar)o(ch)8 b Fa(:)s(:)e(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(7)75
-1946 y Fe(history_se)o(ar)o(ch_)o(de)o(lim)o(ite)o(r_)o(cha)o(rs)t
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(9)75 1990 y Fe(history_se)o(ar)o(ch_)o(po)o(s)8
-b Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(7)1012
-319 y Fe(history_sea)o(rc)o(h_p)o(re)o(fix)7 b Fa(:)s(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)21 b Fb(7)1012 363 y Fe(history_set)o(_h)o(ist)o(or)o(y_s)o(ta)o
-(te)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)24 b Fb(5)1012 406 y Fe(history_set)o(_p)o(os)6
-b Fa(:)s(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(6)1012 450 y Fe(history_sub)o(st)o(_ch)o(ar)8 b
-Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)24 b Fb(9)1012
-494 y Fe(history_tok)o(en)o(ize)t Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)18 b Fb(8)1012 537 y Fe(history_tot)o(al)o(_by)o(te)o
-(s)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(6)1012
-581 y Fe(history_tru)o(nc)o(ate)o(_f)o(ile)7 b Fa(:)s(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)21 b Fb(8)1012 624 y Fe(history_wor)o(d_)o(del)o(im)o(ite)o(rs)t
-Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)18 b Fb(9)1012 668 y Fe(history_wri)o(te)o(_ti)o
-(me)o(sta)o(mp)o(s)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(9)1012
-794 y Fp(N)1012 852 y Fe(next_histor)o(y)7 b Fa(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(7)1012
-978 y Fp(P)1012 1036 y Fe(previous_hi)o(st)o(ory)t Fa(:)t(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18 b Fb(6)1012
-1162 y Fp(R)1012 1220 y Fe(read_histor)o(y)7 b Fa(:)f(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(7)1012
-1264 y Fe(read_histor)o(y_)o(ran)o(ge)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)24 b Fb(7)1012 1307 y Fe(remove_hist)o(or)o(y)8
-b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(5)1012 1351 y Fe(replace_his)o(to)o(ry_)o(en)o(try)7
-b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(5)1012 1477 y Fp(S)1012
-1535 y Fe(stifle_hist)o(or)o(y)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(6)1012 1661 y Fp(U)1012
-1719 y Fe(unstifle_hi)o(st)o(ory)t Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)18 b Fb(6)1012 1762 y Fe(using_histo)o(ry)6
-b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(5)1012 1888 y Fp(W)1012 1946 y Fe(where_histo)o(ry)6
-b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(6)1012 1990 y Fe(write_histo)o(ry)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(7)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/lib/readline/doc/history.tmp b/lib/readline/doc/history.tmp
deleted file mode 100644 (file)
index d67b98f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-This document describes the GNU History library
-(version @value{VERSION}, @value{UPDATED}),
-a programming tool that provides a consistent user interface for
-recalling lines of previously typed input.
-
-Copyright @copyright{} 1988--2014 Free Software Foundation, Inc.
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-@end quotation
-@empty 
diff --git a/lib/readline/doc/history.toc b/lib/readline/doc/history.toc
deleted file mode 100644 (file)
index 56b563c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-@numchapentry{Using History Interactively}{1}{Using History Interactively}{1}
-@numsecentry{History Expansion}{1.1}{History Interaction}{1}
-@numsubsecentry{Event Designators}{1.1.1}{Event Designators}{1}
-@numsubsecentry{Word Designators}{1.1.2}{Word Designators}{2}
-@numsubsecentry{Modifiers}{1.1.3}{Modifiers}{2}
-@numchapentry{Programming with GNU History}{2}{Programming with GNU History}{4}
-@numsecentry{Introduction to History}{2.1}{Introduction to History}{4}
-@numsecentry{History Storage}{2.2}{History Storage}{4}
-@numsecentry{History Functions}{2.3}{History Functions}{5}
-@numsubsecentry{Initializing History and State Management}{2.3.1}{Initializing History and State Management}{5}
-@numsubsecentry{History List Management}{2.3.2}{History List Management}{5}
-@numsubsecentry{Information About the History List}{2.3.3}{Information About the History List}{6}
-@numsubsecentry{Moving Around the History List}{2.3.4}{Moving Around the History List}{6}
-@numsubsecentry{Searching the History List}{2.3.5}{Searching the History List}{7}
-@numsubsecentry{Managing the History File}{2.3.6}{Managing the History File}{7}
-@numsubsecentry{History Expansion}{2.3.7}{History Expansion}{8}
-@numsecentry{History Variables}{2.4}{History Variables}{8}
-@numsecentry{History Programming Example}{2.5}{History Programming Example}{10}
-@appentry{GNU Free Documentation License}{A}{GNU Free Documentation License}{12}
-@appentry{Concept Index}{B}{Concept Index}{20}
-@appentry{Function and Variable Index}{C}{Function and Variable Index}{21}
diff --git a/lib/readline/doc/history.tp b/lib/readline/doc/history.tp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/history.vr b/lib/readline/doc/history.vr
deleted file mode 100644 (file)
index cd7edb2..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-\entry{using_history}{5}{\code {using_history}}
-\entry{history_get_history_state}{5}{\code {history_get_history_state}}
-\entry{history_set_history_state}{5}{\code {history_set_history_state}}
-\entry{add_history}{5}{\code {add_history}}
-\entry{add_history_time}{5}{\code {add_history_time}}
-\entry{remove_history}{5}{\code {remove_history}}
-\entry{free_history_entry}{5}{\code {free_history_entry}}
-\entry{replace_history_entry}{5}{\code {replace_history_entry}}
-\entry{clear_history}{6}{\code {clear_history}}
-\entry{stifle_history}{6}{\code {stifle_history}}
-\entry{unstifle_history}{6}{\code {unstifle_history}}
-\entry{history_is_stifled}{6}{\code {history_is_stifled}}
-\entry{history_list}{6}{\code {history_list}}
-\entry{where_history}{6}{\code {where_history}}
-\entry{current_history}{6}{\code {current_history}}
-\entry{history_get}{6}{\code {history_get}}
-\entry{history_get_time}{6}{\code {history_get_time}}
-\entry{history_total_bytes}{6}{\code {history_total_bytes}}
-\entry{history_set_pos}{6}{\code {history_set_pos}}
-\entry{previous_history}{6}{\code {previous_history}}
-\entry{next_history}{7}{\code {next_history}}
-\entry{history_search}{7}{\code {history_search}}
-\entry{history_search_prefix}{7}{\code {history_search_prefix}}
-\entry{history_search_pos}{7}{\code {history_search_pos}}
-\entry{read_history}{7}{\code {read_history}}
-\entry{read_history_range}{7}{\code {read_history_range}}
-\entry{write_history}{7}{\code {write_history}}
-\entry{append_history}{8}{\code {append_history}}
-\entry{history_truncate_file}{8}{\code {history_truncate_file}}
-\entry{history_expand}{8}{\code {history_expand}}
-\entry{get_history_event}{8}{\code {get_history_event}}
-\entry{history_tokenize}{8}{\code {history_tokenize}}
-\entry{history_arg_extract}{8}{\code {history_arg_extract}}
-\entry{history_base}{8}{\code {history_base}}
-\entry{history_length}{8}{\code {history_length}}
-\entry{history_max_entries}{9}{\code {history_max_entries}}
-\entry{history_write_timestamps}{9}{\code {history_write_timestamps}}
-\entry{history_expansion_char}{9}{\code {history_expansion_char}}
-\entry{history_subst_char}{9}{\code {history_subst_char}}
-\entry{history_comment_char}{9}{\code {history_comment_char}}
-\entry{history_word_delimiters}{9}{\code {history_word_delimiters}}
-\entry{history_search_delimiter_chars}{9}{\code {history_search_delimiter_chars}}
-\entry{history_no_expand_chars}{9}{\code {history_no_expand_chars}}
-\entry{history_quotes_inhibit_expansion}{9}{\code {history_quotes_inhibit_expansion}}
-\entry{history_inhibit_expansion_function}{9}{\code {history_inhibit_expansion_function}}
diff --git a/lib/readline/doc/history.vrs b/lib/readline/doc/history.vrs
deleted file mode 100644 (file)
index 4e517fd..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-\initial {A}
-\entry {\code {add_history}}{5}
-\entry {\code {add_history_time}}{5}
-\entry {\code {append_history}}{8}
-\initial {C}
-\entry {\code {clear_history}}{6}
-\entry {\code {current_history}}{6}
-\initial {F}
-\entry {\code {free_history_entry}}{5}
-\initial {G}
-\entry {\code {get_history_event}}{8}
-\initial {H}
-\entry {\code {history_arg_extract}}{8}
-\entry {\code {history_base}}{8}
-\entry {\code {history_comment_char}}{9}
-\entry {\code {history_expand}}{8}
-\entry {\code {history_expansion_char}}{9}
-\entry {\code {history_get}}{6}
-\entry {\code {history_get_history_state}}{5}
-\entry {\code {history_get_time}}{6}
-\entry {\code {history_inhibit_expansion_function}}{9}
-\entry {\code {history_is_stifled}}{6}
-\entry {\code {history_length}}{8}
-\entry {\code {history_list}}{6}
-\entry {\code {history_max_entries}}{9}
-\entry {\code {history_no_expand_chars}}{9}
-\entry {\code {history_quotes_inhibit_expansion}}{9}
-\entry {\code {history_search}}{7}
-\entry {\code {history_search_delimiter_chars}}{9}
-\entry {\code {history_search_pos}}{7}
-\entry {\code {history_search_prefix}}{7}
-\entry {\code {history_set_history_state}}{5}
-\entry {\code {history_set_pos}}{6}
-\entry {\code {history_subst_char}}{9}
-\entry {\code {history_tokenize}}{8}
-\entry {\code {history_total_bytes}}{6}
-\entry {\code {history_truncate_file}}{8}
-\entry {\code {history_word_delimiters}}{9}
-\entry {\code {history_write_timestamps}}{9}
-\initial {N}
-\entry {\code {next_history}}{7}
-\initial {P}
-\entry {\code {previous_history}}{6}
-\initial {R}
-\entry {\code {read_history}}{7}
-\entry {\code {read_history_range}}{7}
-\entry {\code {remove_history}}{5}
-\entry {\code {replace_history_entry}}{5}
-\initial {S}
-\entry {\code {stifle_history}}{6}
-\initial {U}
-\entry {\code {unstifle_history}}{6}
-\entry {\code {using_history}}{5}
-\initial {W}
-\entry {\code {where_history}}{6}
-\entry {\code {write_history}}{7}
diff --git a/lib/readline/doc/hstech.texinfo b/lib/readline/doc/hstech.texinfo
deleted file mode 100644 (file)
index 9494446..0000000
+++ /dev/null
@@ -1,550 +0,0 @@
-@ignore
-This file documents the user interface to the GNU History library.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-Authored by Brian Fox and Chet Ramey.
-
-Permission is granted to make and distribute verbatim copies of this manual
-provided the copyright notice and this permission notice are preserved on
-all copies.
-
-Permission is granted to process this file through Tex and print the
-results, provided the printed document carries copying permission notice
-identical to this one except for the removal of this paragraph (this
-paragraph not being relevant to the printed manual).
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-GNU Copyright statement is available to the distributee, and provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end ignore
-
-@node Programming with GNU History
-@chapter Programming with GNU History
-
-This chapter describes how to interface programs that you write
-with the @sc{gnu} History Library.
-It should be considered a technical guide.
-For information on the interactive use of @sc{gnu} History, @pxref{Using
-History Interactively}.
-
-@menu
-* Introduction to History::    What is the GNU History library for?
-* History Storage::            How information is stored.
-* History Functions::          Functions that you can use.
-* History Variables::          Variables that control behaviour.
-* History Programming Example::        Example of using the GNU History Library.
-@end menu
-
-@node Introduction to History
-@section Introduction to History
-
-Many programs read input from the user a line at a time.  The @sc{gnu}
-History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones. 
-
-The programmer using the History library has available functions
-for remembering lines on a history list, associating arbitrary data
-with a line, removing lines from the list, searching through the list
-for a line containing an arbitrary text string, and referencing any line
-in the list directly.  In addition, a history @dfn{expansion} function
-is available which provides for a consistent user interface across
-different programs.
-
-The user using programs written with the History library has the
-benefit of a consistent user interface with a set of well-known
-commands for manipulating the text of previous lines and using that text
-in new commands.  The basic history manipulation commands are similar to
-the history substitution provided by @code{csh}.
-
-If the programmer desires, he can use the Readline library, which
-includes some history manipulation by default, and has the added
-advantage of command line editing.
-
-Before declaring any functions using any functionality the History
-library provides in other code, an application writer should include
-the file @code{<readline/history.h>} in any file that uses the
-History library's features.  It supplies extern declarations for all
-of the library's public functions and variables, and declares all of
-the public data structures.
-
-@node History Storage
-@section History Storage
-
-The history list is an array of history entries.  A history entry is
-declared as follows:
-
-@example
-typedef void *histdata_t;
-
-typedef struct _hist_entry @{
-  char *line;
-  histdata_t data;
-@} HIST_ENTRY;
-@end example
-
-The history list itself might therefore be declared as
-
-@example
-HIST_ENTRY **the_history_list;
-@end example
-
-The state of the History library is encapsulated into a single structure:
-
-@example
-/*
- * A structure used to pass around the current state of the history.
- */
-typedef struct _hist_state @{
-  HIST_ENTRY **entries; /* Pointer to the entries themselves. */
-  int offset;           /* The location pointer within this array. */
-  int length;           /* Number of elements within this array. */
-  int size;             /* Number of slots allocated to this array. */
-  int flags;
-@} HISTORY_STATE;
-@end example
-
-If the flags member includes @code{HS_STIFLED}, the history has been
-stifled.
-
-@node History Functions
-@section History Functions
-
-This section describes the calling sequence for the various functions
-exported by the @sc{gnu} History library.
-
-@menu
-* Initializing History and State Management::  Functions to call when you
-                                               want to use history in a
-                                               program.
-* History List Management::            Functions used to manage the list
-                                       of history entries.
-* Information About the History List:: Functions returning information about
-                                       the history list.
-* Moving Around the History List::     Functions used to change the position
-                                       in the history list.
-* Searching the History List::         Functions to search the history list
-                                       for entries containing a string.
-* Managing the History File::          Functions that read and write a file
-                                       containing the history list.
-* History Expansion::                  Functions to perform csh-like history
-                                       expansion.
-@end menu
-
-@node Initializing History and State Management
-@subsection Initializing History and State Management
-
-This section describes functions used to initialize and manage
-the state of the History library when you want to use the history
-functions in your program.
-
-@deftypefun void using_history (void)
-Begin a session in which the history functions might be used.  This
-initializes the interactive variables.
-@end deftypefun
-
-@deftypefun {HISTORY_STATE *} history_get_history_state (void)
-Return a structure describing the current state of the input history.
-@end deftypefun
-
-@deftypefun void history_set_history_state (HISTORY_STATE *state)
-Set the state of the history list according to @var{state}.
-@end deftypefun
-
-@node History List Management
-@subsection History List Management
-
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
-@deftypefun void add_history (const char *string)
-Place @var{string} at the end of the history list.  The associated data
-field (if any) is set to @code{NULL}.
-@end deftypefun
-
-@deftypefun {HIST_ENTRY *} remove_history (int which)
-Remove history entry at offset @var{which} from the history.  The
-removed element is returned so you can free the line, data,
-and containing structure.
-@end deftypefun
-
-@deftypefun {HIST_ENTRY *} replace_history_entry (int which, const char *line, histdata_t data)
-Make the history entry at offset @var{which} have @var{line} and @var{data}.
-This returns the old entry so you can dispose of the data.  In the case
-of an invalid @var{which}, a @code{NULL} pointer is returned.
-@end deftypefun
-
-@deftypefun void clear_history (void)
-Clear the history list by deleting all the entries.
-@end deftypefun
-
-@deftypefun void stifle_history (int max)
-Stifle the history list, remembering only the last @var{max} entries.
-@end deftypefun
-
-@deftypefun int unstifle_history (void)
-Stop stifling the history.  This returns the previously-set
-maximum number of history entries (as set by @code{stifle_history()}).
-The value is positive if the history was
-stifled, negative if it wasn't.
-@end deftypefun
-
-@deftypefun int history_is_stifled (void)
-Returns non-zero if the history is stifled, zero if it is not.
-@end deftypefun
-
-@node Information About the History List
-@subsection Information About the History List
-
-These functions return information about the entire history list or
-individual list entries.
-
-@deftypefun {HIST_ENTRY **} history_list (void)
-Return a @code{NULL} terminated array of @code{HIST_ENTRY *} which is the
-current input history.  Element 0 of this list is the beginning of time.
-If there is no history, return @code{NULL}.
-@end deftypefun
-
-@deftypefun int where_history (void)
-Returns the offset of the current history element.
-@end deftypefun
-
-@deftypefun {HIST_ENTRY *} current_history (void)
-Return the history entry at the current position, as determined by
-@code{where_history()}.  If there is no entry there, return a @code{NULL}
-pointer.
-@end deftypefun
-
-@deftypefun {HIST_ENTRY *} history_get (int offset)
-Return the history entry at position @var{offset}, starting from
-@code{history_base} (@pxref{History Variables}).
-If there is no entry there, or if @var{offset}
-is greater than the history length, return a @code{NULL} pointer.
-@end deftypefun
-
-@deftypefun int history_total_bytes (void)
-Return the number of bytes that the primary history entries are using.
-This function returns the sum of the lengths of all the lines in the
-history.
-@end deftypefun
-
-@node Moving Around the History List
-@subsection Moving Around the History List
-
-These functions allow the current index into the history list to be
-set or changed.
-
-@deftypefun int history_set_pos (int pos)
-Set the current history offset to @var{pos}, an absolute index
-into the list.
-Returns 1 on success, 0 if @var{pos} is less than zero or greater
-than the number of history entries.
-@end deftypefun
-
-@deftypefun {HIST_ENTRY *} previous_history (void)
-Back up the current history offset to the previous history entry, and
-return a pointer to that entry.  If there is no previous entry, return
-a @code{NULL} pointer.
-@end deftypefun
-
-@deftypefun {HIST_ENTRY *} next_history (void)
-Move the current history offset forward to the next history entry, and
-return the a pointer to that entry.  If there is no next entry, return
-a @code{NULL} pointer.
-@end deftypefun
-
-@node Searching the History List
-@subsection Searching the History List
-@cindex History Searching
-
-These functions allow searching of the history list for entries containing
-a specific string.  Searching may be performed both forward and backward
-from the current history position.  The search may be @dfn{anchored},
-meaning that the string must match at the beginning of the history entry.
-@cindex anchored search
-
-@deftypefun int history_search (const char *string, int direction)
-Search the history for @var{string}, starting at the current history offset.
-If @var{direction} is less than 0, then the search is through
-previous entries, otherwise through subsequent entries.
-If @var{string} is found, then
-the current history index is set to that history entry, and the value
-returned is the offset in the line of the entry where
-@var{string} was found.  Otherwise, nothing is changed, and a -1 is
-returned.
-@end deftypefun
-
-@deftypefun int history_search_prefix (const char *string, int direction)
-Search the history for @var{string}, starting at the current history
-offset.  The search is anchored: matching lines must begin with
-@var{string}.  If @var{direction} is less than 0, then the search is
-through previous entries, otherwise through subsequent entries.
-If @var{string} is found, then the
-current history index is set to that entry, and the return value is 0. 
-Otherwise, nothing is changed, and a -1 is returned. 
-@end deftypefun
-
-@deftypefun int history_search_pos (const char *string, int direction, int pos)
-Search for @var{string} in the history list, starting at @var{pos}, an
-absolute index into the list.  If @var{direction} is negative, the search
-proceeds backward from @var{pos}, otherwise forward.  Returns the absolute
-index of the history element where @var{string} was found, or -1 otherwise.
-@end deftypefun
-
-@node Managing the History File
-@subsection Managing the History File
-
-The History library can read the history from and write it to a file.
-This section documents the functions for managing a history file.
-
-@deftypefun int read_history (const char *filename)
-Add the contents of @var{filename} to the history list, a line at a time.
-If @var{filename} is @code{NULL}, then read from @file{~/.history}.
-Returns 0 if successful, or @code{errno} if not.
-@end deftypefun
-
-@deftypefun int read_history_range (const char *filename, int from, int to)
-Read a range of lines from @var{filename}, adding them to the history list.
-Start reading at line @var{from} and end at @var{to}.
-If @var{from} is zero, start at the beginning.  If @var{to} is less than
-@var{from}, then read until the end of the file.  If @var{filename} is
-@code{NULL}, then read from @file{~/.history}.  Returns 0 if successful,
-or @code{errno} if not.
-@end deftypefun
-
-@deftypefun int write_history (const char *filename)
-Write the current history to @var{filename}, overwriting @var{filename}
-if necessary.
-If @var{filename} is @code{NULL}, then write the history list to
-@file{~/.history}.
-Returns 0 on success, or @code{errno} on a read or write error.
-@end deftypefun
-
-@deftypefun int append_history (int nelements, const char *filename)
-Append the last @var{nelements} of the history list to @var{filename}.
-If @var{filename} is @code{NULL}, then append to @file{~/.history}.
-Returns 0 on success, or @code{errno} on a read or write error.
-@end deftypefun
-
-@deftypefun int history_truncate_file (const char *filename, int nlines)
-Truncate the history file @var{filename}, leaving only the last
-@var{nlines} lines.
-If @var{filename} is @code{NULL}, then @file{~/.history} is truncated.
-Returns 0 on success, or @code{errno} on failure.
-@end deftypefun
-
-@node History Expansion
-@subsection History Expansion
-
-These functions implement history expansion.
-
-@deftypefun int history_expand (char *string, char **output)
-Expand @var{string}, placing the result into @var{output}, a pointer
-to a string (@pxref{History Interaction}).  Returns:
-@table @code
-@item 0
-If no expansions took place (or, if the only change in
-the text was the removal of escape characters preceding the history expansion
-character);
-@item 1
-if expansions did take place;
-@item -1
-if there was an error in expansion;
-@item 2
-if the returned line should be displayed, but not executed,
-as with the @code{:p} modifier (@pxref{Modifiers}).
-@end table
-
-If an error ocurred in expansion, then @var{output} contains a descriptive
-error message.
-@end deftypefun
-
-@deftypefun {char *} get_history_event (const char *string, int *cindex, int qchar)
-Returns the text of the history event beginning at @var{string} +
-@var{*cindex}.  @var{*cindex} is modified to point to after the event
-specifier.  At function entry, @var{cindex} points to the index into
-@var{string} where the history event specification begins.  @var{qchar}
-is a character that is allowed to end the event specification in addition
-to the ``normal'' terminating characters.
-@end deftypefun
-
-@deftypefun {char **} history_tokenize (const char *string)
-Return an array of tokens parsed out of @var{string}, much as the
-shell might.  The tokens are split on the characters in the
-@var{history_word_delimiters} variable,
-and shell quoting conventions are obeyed.
-@end deftypefun
-
-@deftypefun {char *} history_arg_extract (int first, int last, const char *string)
-Extract a string segment consisting of the @var{first} through @var{last}
-arguments present in @var{string}.  Arguments are split using
-@code{history_tokenize}.
-@end deftypefun
-
-@node History Variables
-@section History Variables
-
-This section describes the externally-visible variables exported by
-the @sc{gnu} History Library.
-
-@deftypevar int history_base
-The logical offset of the first entry in the history list.
-@end deftypevar
-
-@deftypevar int history_length
-The number of entries currently stored in the history list.
-@end deftypevar
-
-@deftypevar int history_max_entries
-The maximum number of history entries.  This must be changed using
-@code{stifle_history()}.
-@end deftypevar
-
-@deftypevar char history_expansion_char
-The character that introduces a history event.  The default is @samp{!}.
-Setting this to 0 inhibits history expansion.
-@end deftypevar
-
-@deftypevar char history_subst_char
-The character that invokes word substitution if found at the start of
-a line.  The default is @samp{^}.
-@end deftypevar
-
-@deftypevar char history_comment_char
-During tokenization, if this character is seen as the first character
-of a word, then it and all subsequent characters up to a newline are
-ignored, suppressing history expansion for the remainder of the line.
-This is disabled by default.
-@end deftypevar
-
-@deftypevar {char *} history_word_delimiters
-The characters that separate tokens for @code{history_tokenize()}.
-The default value is @code{" \t\n()<>;&|"}.
-@end deftypevar
-
-@deftypevar {char *} history_no_expand_chars
-The list of characters which inhibit history expansion if found immediately
-following @var{history_expansion_char}.  The default is space, tab, newline,
-carriage return, and @samp{=}.
-@end deftypevar
-
-@deftypevar {char *} history_search_delimiter_chars
-The list of additional characters which can delimit a history search
-string, in addition to space, TAB, @samp{:} and @samp{?} in the case of
-a substring search.  The default is empty.
-@end deftypevar
-
-@deftypevar int history_quotes_inhibit_expansion
-If non-zero, single-quoted words are not scanned for the history expansion
-character.  The default value is 0.
-@end deftypevar
-
-@deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function
-This should be set to the address of a function that takes two arguments:
-a @code{char *} (@var{string})
-and an @code{int} index into that string (@var{i}).
-It should return a non-zero value if the history expansion starting at
-@var{string[i]} should not be performed; zero if the expansion should
-be done.
-It is intended for use by applications like Bash that use the history
-expansion character for additional purposes.
-By default, this variable is set to @code{NULL}.
-@end deftypevar
-
-@node History Programming Example
-@section History Programming Example
-
-The following program demonstrates simple use of the @sc{gnu} History Library.
-
-@smallexample
-#include <stdio.h>
-#include <readline/history.h>
-
-main (argc, argv)
-     int argc;
-     char **argv;
-@{
-  char line[1024], *t;
-  int len, done = 0;
-
-  line[0] = 0;
-
-  using_history ();
-  while (!done)
-    @{
-      printf ("history$ ");
-      fflush (stdout);
-      t = fgets (line, sizeof (line) - 1, stdin);
-      if (t && *t)
-        @{
-          len = strlen (t);
-          if (t[len - 1] == '\n')
-            t[len - 1] = '\0';
-        @}
-
-      if (!t)
-        strcpy (line, "quit");
-
-      if (line[0])
-        @{
-          char *expansion;
-          int result;
-
-          result = history_expand (line, &expansion);
-          if (result)
-            fprintf (stderr, "%s\n", expansion);
-
-          if (result < 0 || result == 2)
-            @{
-              free (expansion);
-              continue;
-            @}
-
-          add_history (expansion);
-          strncpy (line, expansion, sizeof (line) - 1);
-          free (expansion);
-        @}
-
-      if (strcmp (line, "quit") == 0)
-        done = 1;
-      else if (strcmp (line, "save") == 0)
-        write_history ("history_file");
-      else if (strcmp (line, "read") == 0)
-        read_history ("history_file");
-      else if (strcmp (line, "list") == 0)
-        @{
-          register HIST_ENTRY **the_list;
-          register int i;
-
-          the_list = history_list ();
-          if (the_list)
-            for (i = 0; the_list[i]; i++)
-              printf ("%d: %s\n", i + history_base, the_list[i]->line);
-        @}
-      else if (strncmp (line, "delete", 6) == 0)
-        @{
-          int which;
-          if ((sscanf (line + 6, "%d", &which)) == 1)
-            @{
-              HIST_ENTRY *entry = remove_history (which);
-              if (!entry)
-                fprintf (stderr, "No such entry %d\n", which);
-              else
-                @{
-                  free (entry->line);
-                  free (entry);
-                @}
-            @}
-          else
-            @{
-              fprintf (stderr, "non-numeric arg given to `delete'\n");
-            @}
-        @}
-    @}
-@}
-@end smallexample
diff --git a/lib/readline/doc/hsuser.texinfo b/lib/readline/doc/hsuser.texinfo
deleted file mode 100644 (file)
index 418bfa8..0000000
+++ /dev/null
@@ -1,437 +0,0 @@
-@ignore
-This file documents the user interface to the GNU History library.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-Authored by Brian Fox and Chet Ramey.
-
-Permission is granted to make and distribute verbatim copies of this manual
-provided the copyright notice and this permission notice are preserved on
-all copies.
-
-Permission is granted to process this file through Tex and print the
-results, provided the printed document carries copying permission notice
-identical to this one except for the removal of this paragraph (this
-paragraph not being relevant to the printed manual).
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-GNU Copyright statement is available to the distributee, and provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end ignore
-
-@node Using History Interactively
-@chapter Using History Interactively
-
-@ifclear BashFeatures
-@defcodeindex bt
-@end ifclear
-
-@ifset BashFeatures
-This chapter describes how to use the @sc{gnu} History Library
-interactively, from a user's standpoint.
-It should be considered a user's guide.
-For information on using the @sc{gnu} History Library in other programs,
-see the @sc{gnu} Readline Library Manual.
-@end ifset
-@ifclear BashFeatures
-This chapter describes how to use the @sc{gnu} History Library interactively,
-from a user's standpoint.  It should be considered a user's guide.  For
-information on using the @sc{gnu} History Library in your own programs,
-@pxref{Programming with GNU History}.
-@end ifclear
-
-@ifset BashFeatures
-@menu
-* Bash History Facilities::    How Bash lets you manipulate your command
-                               history.
-* Bash History Builtins::      The Bash builtin commands that manipulate
-                               the command history.
-* History Interaction::                What it feels like using History as a user.
-@end menu
-@end ifset
-@ifclear BashFeatures
-@menu
-* History Interaction::                What it feels like using History as a user.
-@end menu
-@end ifclear
-
-@ifset BashFeatures
-@node Bash History Facilities
-@section Bash History Facilities
-@cindex command history
-@cindex history list
-
-When the @option{-o history} option to the @code{set} builtin
-is enabled (@pxref{The Set Builtin}),
-the shell provides access to the @dfn{command history},
-the list of commands previously typed.
-The value of the @env{HISTSIZE} shell variable is used as the
-number of commands to save in a history list.
-The text of the last @env{$HISTSIZE}
-commands (default 500) is saved.
-The shell stores each command in the history list prior to
-parameter and variable expansion
-but after history expansion is performed, subject to the
-values of the shell variables
-@env{HISTIGNORE} and @env{HISTCONTROL}.
-
-When the shell starts up, the history is initialized from the
-file named by the @env{HISTFILE} variable (default @file{~/.bash_history}).
-The file named by the value of @env{HISTFILE} is truncated, if
-necessary, to contain no more than the number of lines specified by
-the value of the @env{HISTFILESIZE} variable.
-When an interactive shell exits, the last
-@env{$HISTSIZE} lines are copied from the history list to the file
-named by @env{$HISTFILE}.
-If the @code{histappend} shell option is set (@pxref{Bash Builtins}),
-the lines are appended to the history file,
-otherwise the history file is overwritten.
-If @env{HISTFILE}
-is unset, or if the history file is unwritable, the history is
-not saved.  After saving the history, the history file is truncated
-to contain no more than @env{$HISTFILESIZE}
-lines.  If @env{HISTFILESIZE} is not set, no truncation is performed.
-
-The builtin command @code{fc} may be used to list or edit and re-execute
-a portion of the history list.
-The @code{history} builtin may be used to display or modify the history
-list and manipulate the history file.
-When using command-line editing, search commands
-are available in each editing mode that provide access to the
-history list (@pxref{Commands For History}).
-
-The shell allows control over which commands are saved on the history
-list.  The @env{HISTCONTROL} and @env{HISTIGNORE}
-variables may be set to cause the shell to save only a subset of the
-commands entered.
-The @code{cmdhist}
-shell option, if enabled, causes the shell to attempt to save each
-line of a multi-line command in the same history entry, adding
-semicolons where necessary to preserve syntactic correctness.
-The @code{lithist}
-shell option causes the shell to save the command with embedded newlines
-instead of semicolons.
-The @code{shopt} builtin is used to set these options.
-@xref{Bash Builtins}, for a description of @code{shopt}.
-
-@node Bash History Builtins
-@section Bash History Builtins
-@cindex history builtins
-
-Bash provides two builtin commands which manipulate the
-history list and history file.
-
-@table @code
-
-@item fc
-@btindex fc
-@example
-@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]}
-@code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
-@end example
-
-Fix Command.  In the first form, a range of commands from @var{first} to
-@var{last} is selected from the history list.  Both @var{first} and
-@var{last} may be specified as a string (to locate the most recent
-command beginning with that string) or as a number (an index into the
-history list, where a negative number is used as an offset from the
-current command number).  If @var{last} is not specified it is set to
-@var{first}.  If @var{first} is not specified it is set to the previous
-command for editing and @minus{}16 for listing.  If the @option{-l} flag is
-given, the commands are listed on standard output.  The @option{-n} flag
-suppresses the command numbers when listing.  The @option{-r} flag
-reverses the order of the listing.  Otherwise, the editor given by
-@var{ename} is invoked on a file containing those commands.  If
-@var{ename} is not given, the value of the following variable expansion
-is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}.  This says to use the
-value of the @env{FCEDIT} variable if set, or the value of the
-@env{EDITOR} variable if that is set, or @code{vi} if neither is set.
-When editing is complete, the edited commands are echoed and executed.
-
-In the second form, @var{command} is re-executed after each instance
-of @var{pat} in the selected command is replaced by @var{rep}.
-
-A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so
-that typing @samp{r cc} runs the last command beginning with @code{cc}
-and typing @samp{r} re-executes the last command (@pxref{Aliases}).
-
-@item history
-@btindex history
-@example
-history [@var{n}]
-history -c
-history -d @var{offset}
-history [-anrw] [@var{filename}]
-history -ps @var{arg}
-@end example
-
-With no options, display the history list with line numbers.
-Lines prefixed with a @samp{*} have been modified.
-An argument of @var{n} lists only the last @var{n} lines.
-Options, if supplied, have the following meanings:
-
-@table @code
-@item -c
-Clear the history list.  This may be combined
-with the other options to replace the history list completely.
-
-@item -d @var{offset}
-Delete the history entry at position @var{offset}.
-@var{offset} should be specified as it appears when the history is
-displayed.
-
-@item -a
-Append the new
-history lines (history lines entered since the beginning of the
-current Bash session) to the history file.
-
-@item -n
-Append the history lines not already read from the history file
-to the current history list.  These are lines appended to the history
-file since the beginning of the current Bash session.
-
-@item -r
-Read the current history file and append its contents to
-the history list.
-
-@item -w
-Write out the current history to the history file.
-
-@item -p
-Perform history substitution on the @var{arg}s and display the result
-on the standard output, without storing the results in the history list.
-
-@item -s
-The @var{arg}s are added to the end of
-the history list as a single entry.
-
-@end table
-
-When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is
-used, if @var{filename}
-is given, then it is used as the history file.  If not, then
-the value of the @env{HISTFILE} variable is used.
-
-@end table
-@end ifset
-
-@node History Interaction
-@section History Expansion
-@cindex history expansion
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by @code{csh}.  This section
-describes the syntax used to manipulate the history information.
-
-History expansions introduce words from the history list into
-the input stream, making it easy to repeat commands, insert the
-arguments to a previous command into the current input line, or
-fix errors in previous commands quickly.
-
-History expansion takes place in two parts.  The first is to determine
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one.  The line selected from the history is called the
-@dfn{event}, and the portions of that line that are acted upon are
-called @dfn{words}.  Various @dfn{modifiers} are available to manipulate
-the selected words.  The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
-History expansions are introduced by the appearance of the
-history expansion character, which is @samp{!} by default.
-@ifset BashFeatures
-Only @samp{\} and @samp{'} may be used to escape the history expansion
-character.
-@end ifset
-
-@ifset BashFeatures
-Several shell options settable with the @code{shopt}
-builtin (@pxref{Bash Builtins}) may be used to tailor
-the behavior of history expansion.  If the
-@code{histverify} shell option is enabled, and Readline
-is being used, history substitutions are not immediately passed to
-the shell parser.
-Instead, the expanded line is reloaded into the Readline
-editing buffer for further modification.
-If Readline is being used, and the @code{histreedit}
-shell option is enabled, a failed history expansion will be
-reloaded into the Readline editing buffer for correction.
-The @option{-p} option to the @code{history} builtin command
-may be used to see what a history expansion will do before using it.
-The @option{-s} option to the @code{history} builtin may be used to
-add commands to the end of the history list without actually executing
-them, so that they are available for subsequent recall.
-This is most useful in conjunction with Readline.
-
-The shell allows control of the various characters used by the
-history expansion mechanism with the @code{histchars} variable.
-@end ifset
-
-@menu
-* Event Designators::  How to specify which history line to use.
-* Word Designators::   Specifying which words are of interest.
-* Modifiers::          Modifying the results of substitution.
-@end menu
-
-@node Event Designators
-@subsection Event Designators
-@cindex event designators
-
-An event designator is a reference to a command line entry in the
-history list.
-@cindex history events
-
-@table @asis
-
-@item @code{!}
-Start a history substitution, except when followed by a space, tab,
-the end of the line, @samp{=} or @samp{(}.
-
-@item @code{!@var{n}}
-Refer to command line @var{n}.
-
-@item @code{!-@var{n}}
-Refer to the command @var{n} lines back.
-
-@item @code{!!}
-Refer to the previous command.  This is a synonym for @samp{!-1}.
-
-@item @code{!@var{string}}
-Refer to the most recent command starting with @var{string}.
-
-@item @code{!?@var{string}[?]}
-Refer to the most recent command containing @var{string}.  The trailing
-@samp{?} may be omitted if the @var{string} is followed immediately by
-a newline.
-
-@item @code{^@var{string1}^@var{string2}^}
-Quick Substitution.  Repeat the last command, replacing @var{string1}
-with @var{string2}.  Equivalent to
-@code{!!:s/@var{string1}/@var{string2}/}.
-
-@item @code{!#}
-The entire command line typed so far.
-
-@end table
-
-@node Word Designators
-@subsection Word Designators
-
-Word designators are used to select desired words from the event.
-A @samp{:} separates the event specification from the word designator.  It
-may be omitted if the word designator begins with a @samp{^}, @samp{$},
-@samp{*}, @samp{-}, or @samp{%}.  Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero).  Words are
-inserted into the current line separated by single spaces.
-
-@need 0.75
-For example,
-
-@table @code
-@item !!
-designates the preceding command.  When you type this, the preceding
-command is repeated in toto.
-
-@item !!:$
-designates the last argument of the preceding command.  This may be
-shortened to @code{!$}.
-
-@item !fi:2
-designates the second argument of the most recent command starting with
-the letters @code{fi}.
-@end table
-
-@need 0.75
-Here are the word designators:
-@table @code
-
-@item 0 (zero)
-The @code{0}th word.  For many applications, this is the command word.
-
-@item @var{n}
-The @var{n}th word.
-
-@item ^
-The first argument; that is, word 1.
-
-@item $
-The last argument.
-
-@item %
-The word matched by the most recent @samp{?@var{string}?} search.
-
-@item @var{x}-@var{y}
-A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
-
-@item *
-All of the words, except the @code{0}th.  This is a synonym for @samp{1-$}.
-It is not an error to use @samp{*} if there is just one word in the event;
-the empty string is returned in that case.
-
-@item @var{x}*
-Abbreviates @samp{@var{x}-$}
-
-@item @var{x}-
-Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
-
-@end table
-
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-@node Modifiers
-@subsection Modifiers
-
-After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a @samp{:}.
-
-@table @code
-
-@item h
-Remove a trailing pathname component, leaving only the head.
-
-@item t
-Remove all leading  pathname  components, leaving the tail.
-
-@item r
-Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
-the basename.
-
-@item e
-Remove all but the trailing suffix.
-
-@item p
-Print the new command but do not execute it.
-
-@ifset BashFeatures
-@item q
-Quote the substituted words, escaping further substitutions.
-
-@item x
-Quote the substituted words as with @samp{q},
-but break into words at spaces, tabs, and newlines.
-@end ifset
-
-@item s/@var{old}/@var{new}/
-Substitute @var{new} for the first occurrence of @var{old} in the
-event line.  Any delimiter may be used in place of @samp{/}.
-The delimiter may be quoted in @var{old} and @var{new}
-with a single backslash.  If @samp{&} appears in @var{new},
-it is replaced by @var{old}.  A single backslash will quote
-the @samp{&}.  The final delimiter is optional if it is the last
-character on the input line.
-
-@item &
-Repeat the previous substitution.
-
-@item g
-Cause changes to be applied over the entire event line.  Used in
-conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
-or with @samp{&}.
-
-@end table
diff --git a/lib/readline/doc/manvers.texinfo b/lib/readline/doc/manvers.texinfo
deleted file mode 100644 (file)
index 1206cf0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-@ignore
-Copyright (C) 1988-2002 Free Software Foundation, Inc. 
-@end ignore
-
-@set EDITION 4.3
-@set VERSION 4.3
-@set UPDATED 2002 March 4
-@set UPDATE-MONTH March 2002
-
-@set LASTCHANGE Mon Mar  4 12:00:16 EST 2002
diff --git a/lib/readline/doc/readline.3 b/lib/readline/doc/readline.3
deleted file mode 100644 (file)
index 765c8fa..0000000
+++ /dev/null
@@ -1,1483 +0,0 @@
-.\"
-.\" MAN PAGE COMMENTS to
-.\"
-.\"    Chet Ramey
-.\"    Information Network Services
-.\"    Case Western Reserve University
-.\"    chet.ramey@case.edu
-.\"
-.\"    Last Change: Wed Nov 19 18:32:58 EST 2014
-.\"
-.TH READLINE 3 "2014 November 19" "GNU Readline 6.3"
-.\"
-.\" File Name macro.  This used to be `.PN', for Path Name,
-.\" but Sun doesn't seem to like that very much.
-.\"
-.de FN
-\fI\|\\$1\|\fP
-..
-.SH NAME
-readline \- get a line from a user with editing
-.SH SYNOPSIS
-.LP
-.nf
-.ft B
-#include <stdio.h>
-#include <readline/readline.h>
-#include <readline/history.h>
-.ft
-.fi
-.LP
-.nf
-\fIchar *\fP
-.br
-\fBreadline\fP (\fIconst char *prompt\fP);
-.fi
-.SH COPYRIGHT
-.if n Readline is Copyright (C) 1989\-2014 Free Software Foundation,  Inc.
-.if t Readline is Copyright \(co 1989\-2014 Free Software Foundation, Inc.
-.SH DESCRIPTION
-.LP
-.B readline
-will read a line from the terminal
-and return it, using
-.B prompt
-as a prompt.  If 
-.B prompt
-is \fBNULL\fP or the empty string, no prompt is issued.
-The line returned is allocated with
-.IR malloc (3);
-the caller must free it when finished.  The line returned
-has the final newline removed, so only the text of the line
-remains.
-.LP
-.B readline
-offers editing capabilities while the user is entering the
-line.
-By default, the line editing commands
-are similar to those of emacs.
-A vi\-style line editing interface is also available.
-.LP
-This manual page describes only the most basic use of \fBreadline\fP.
-Much more functionality is available; see
-\fIThe GNU Readline Library\fP and \fIThe GNU History Library\fP
-for additional information.
-.SH RETURN VALUE
-.LP
-.B readline
-returns the text of the line read.  A blank line
-returns the empty string.  If
-.B EOF
-is encountered while reading a line, and the line is empty,
-.B NULL
-is returned.  If an
-.B EOF
-is read with a non\-empty line, it is
-treated as a newline.
-.SH NOTATION
-.LP
-An Emacs-style notation is used to denote
-keystrokes.  Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
-means Control\-N.  Similarly,
-.I meta
-keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X.  (On keyboards
-without a
-.I meta
-key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
-then the
-.I x
-key.  This makes ESC the \fImeta prefix\fP.
-The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
-or press the Escape key
-then hold the Control key while pressing the
-.I x
-key.)
-.PP
-Readline commands may be given numeric
-.IR arguments ,
-which normally act as a repeat count.  Sometimes, however, it is the
-sign of the argument that is significant.  Passing a negative argument
-to a command that acts in the forward direction (e.g., \fBkill\-line\fP)
-causes that command to act in a backward direction.
-Commands whose behavior with arguments deviates from this are noted
-below.
-.PP
-When a command is described as \fIkilling\fP text, the text
-deleted is saved for possible future retrieval
-(\fIyanking\fP).  The killed text is saved in a
-\fIkill ring\fP.  Consecutive kills cause the text to be
-accumulated into one unit, which can be yanked all at once.
-Commands which do not kill text separate the chunks of text
-on the kill ring.
-.SH INITIALIZATION FILE
-.LP
-Readline is customized by putting commands in an initialization
-file (the \fIinputrc\fP file).
-The name of this file is taken from the value of the
-.B INPUTRC
-environment variable.  If that variable is unset, the default is
-.IR ~/.inputrc .
-If that file  does not exist or cannot be read, the ultimate default is
-.IR /etc/inputrc .
-When a program which uses the readline library starts up, the
-init file is read, and the key bindings and variables are set.
-There are only a few basic constructs allowed in the
-readline init file.  Blank lines are ignored.
-Lines beginning with a \fB#\fP are comments.
-Lines beginning with a \fB$\fP indicate conditional constructs.
-Other lines denote key bindings and variable settings.
-Each program using this library may add its own commands
-and bindings.
-.PP
-For example, placing
-.RS
-.PP
-M\-Control\-u: universal\-argument
-.RE
-or
-.RS
-C\-Meta\-u: universal\-argument
-.RE
-.sp
-into the
-.I inputrc
-would make M\-C\-u execute the readline command
-.IR universal\-argument .
-.PP
-The following symbolic character names are recognized while
-processing key bindings:
-.IR DEL ,
-.IR ESC ,
-.IR ESCAPE ,
-.IR LFD ,
-.IR NEWLINE ,
-.IR RET ,
-.IR RETURN ,
-.IR RUBOUT ,
-.IR SPACE ,
-.IR SPC ,
-and
-.IR TAB .
-.PP
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a \fImacro\fP).
-.PP
-.SS Key Bindings
-.PP
-The syntax for controlling key bindings in the
-.I inputrc
-file is simple.  All that is required is the name of the
-command or the text of a macro and a key sequence to which
-it should be bound.  The name may be specified in one of two ways:
-as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
-prefixes, or as a key sequence.
-The name and key sequence are separated by a colon.  There can be no
-whitespace between the name and the colon.
-.PP
-When using the form \fBkeyname\fP:\^\fIfunction-name\fP or \fImacro\fP,
-.I keyname
-is the name of a key spelled out in English.  For example:
-.sp
-.RS
-Control\-u: universal\-argument
-.br
-Meta\-Rubout: backward\-kill\-word
-.br
-Control\-o: "> output"
-.RE
-.LP
-In the above example,
-.I C\-u
-is bound to the function
-.BR universal\-argument ,
-.I M-DEL
-is bound to the function
-.BR backward\-kill\-word ,
-and
-.I C\-o
-is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-.if t \f(CW> output\fP
-.if n ``> output''
-into the line).
-.PP
-In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
-.B keyseq
-differs from
-.B keyname
-above in that strings denoting
-an entire key sequence may be specified by placing the sequence
-within double quotes.  Some GNU Emacs style key escapes can be
-used, as in the following example, but the symbolic character names
-are not recognized.
-.sp
-.RS
-"\eC\-u": universal\-argument
-.br
-"\eC\-x\eC\-r": re\-read\-init\-file
-.br
-"\ee[11~": "Function Key 1"
-.RE
-.PP
-In this example,
-.I C-u
-is again bound to the function
-.BR universal\-argument .
-.I "C-x C-r"
-is bound to the function
-.BR re\-read\-init\-file ,
-and
-.I "ESC [ 1 1 ~"
-is bound to insert the text
-.if t \f(CWFunction Key 1\fP.
-.if n ``Function Key 1''.
-.PP
-The full set of GNU Emacs style escape sequences available when specifying
-key sequences is
-.RS
-.PD 0
-.TP
-.B \eC\-
-control prefix
-.TP
-.B \eM\-
-meta prefix
-.TP
-.B \ee
-an escape character
-.TP
-.B \e\e
-backslash
-.TP
-.B \e"
-literal ", a double quote
-.TP
-.B \e'
-literal ', a single quote
-.RE
-.PD
-.PP
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-.RS
-.PD 0
-.TP
-.B \ea
-alert (bell)
-.TP
-.B \eb
-backspace
-.TP
-.B \ed
-delete
-.TP
-.B \ef
-form feed
-.TP
-.B \en
-newline
-.TP
-.B \er
-carriage return
-.TP
-.B \et
-horizontal tab
-.TP
-.B \ev
-vertical tab
-.TP
-.B \e\fInnn\fP
-the eight-bit character whose value is the octal value \fInnn\fP
-(one to three digits)
-.TP
-.B \ex\fIHH\fP
-the eight-bit character whose value is the hexadecimal value \fIHH\fP
-(one or two hex digits)
-.RE
-.PD
-.PP
-When entering the text of a macro, single or double quotes should
-be used to indicate a macro definition.  Unquoted text
-is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including " and '.
-.PP
-.B Bash
-allows the current readline key bindings to be displayed or modified
-with the
-.B bind
-builtin command.  The editing mode may be switched during interactive
-use by using the
-.B \-o
-option to the
-.B set
-builtin command.  Other programs using this library provide
-similar mechanisms.  The
-.I inputrc
-file may be edited and re-read if a program does not provide
-any other means to incorporate new bindings.
-.SS Variables
-.PP
-Readline has variables that can be used to further customize its
-behavior.  A variable may be set in the
-.I inputrc
-file with a statement of the form
-.RS
-.PP
-\fBset\fP \fIvariable\-name\fP \fIvalue\fP
-.RE
-.PP
-Except where noted, readline variables can take the values
-.B On
-or
-.B Off
-(without regard to case).
-Unrecognized variable names are ignored.
-When a variable value is read, empty or null values, "on" (case-insensitive),
-and "1" are equivalent to \fBOn\fP.  All other values are equivalent to
-\fBOff\fP.
-The variables and their default values are:
-.PP
-.PD 0
-.TP
-.B bell\-style (audible)
-Controls what happens when readline wants to ring the terminal bell.
-If set to \fBnone\fP, readline never rings the bell.  If set to
-\fBvisible\fP, readline uses a visible bell if one is available.
-If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
-.TP
-.B bind\-tty\-special\-chars (On)
-If set to \fBOn\fP (the default), readline attempts to bind the control
-characters   treated specially by the kernel's terminal driver to their
-readline equivalents.
-.TP
-.B blink\-matching\-paren (Off)
-If set to \fBOn\fP, readline attempts to briefly move the cursor to an
-opening parenthesis when a closing parenthesis is inserted.
-.TP
-.B colored\-completion\-prefix (Off)
-If set to \fBOn\fP, when listing completions, readline displays the
-common prefix of the set of possible completions using a different color.
-The color definitions are taken from the value of the \fBLS_COLORS\fP
-environment variable.
-.TP
-.B colored\-stats (Off)
-If set to \fBOn\fP, readline displays possible completions using different
-colors to indicate their file type.
-The color definitions are taken from the value of the \fBLS_COLORS\fP
-environment variable.
-.TP
-.B comment\-begin (``#'')
-The string that is inserted in \fBvi\fP mode when the
-.B insert\-comment
-command is executed.
-This command is bound to
-.B M\-#
-in emacs mode and to
-.B #
-in vi command mode.
-.TP
-.B completion\-display\-width (-1)
-The number of screen columns used to display possible matches
-when performing completion.
-The value is ignored if it is less than 0 or greater than the terminal
-screen width.
-A value of 0 will cause matches to be displayed one per line.
-The default value is -1.
-.TP 
-.B completion\-ignore\-case (Off)
-If set to \fBOn\fP, readline performs filename matching and completion
-in a case\-insensitive fashion.
-.TP
-.B completion\-map\-case (Off)
-If set to \fBOn\fP, and \fBcompletion\-ignore\-case\fP is enabled, readline
-treats hyphens (\fI\-\fP) and underscores (\fI_\fP) as equivalent when
-performing case\-insensitive filename matching and completion.
-.TP
-.B completion\-prefix\-display\-length (0)
-The length in characters of the common prefix of a list of possible
-completions that is displayed without modification.  When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
-.TP
-.B completion\-query\-items (100)
-This determines when the user is queried about viewing
-the number of possible completions
-generated by the \fBpossible\-completions\fP command.
-It may be set to any integer value greater than or equal to
-zero.  If the number of possible completions is greater than
-or equal to the value of this variable, the user is asked whether
-or not he wishes to view them; otherwise they are simply listed
-on the terminal.  A negative value causes readline to never ask.
-.TP
-.B convert\-meta (On)
-If set to \fBOn\fP, readline will convert characters with the
-eighth bit set to an ASCII key sequence
-by stripping the eighth bit and prefixing it with an
-escape character (in effect, using escape as the \fImeta prefix\fP).
-.TP
-.B disable\-completion (Off)
-If set to \fBOn\fP, readline will inhibit word completion.  Completion 
-characters will be inserted into the line as if they had been
-mapped to \fBself-insert\fP.
-.TP
-.B editing\-mode (emacs)
-Controls whether readline begins with a set of key bindings similar
-to \fIEmacs\fP or \fIvi\fP.
-.B editing\-mode
-can be set to either
-.B emacs
-or
-.BR vi .
-.TP
-.B echo\-control\-characters (On)
-When set to \fBOn\fP, on operating systems that indicate they support it,
-readline echoes a character corresponding to a signal generated from the
-keyboard.
-.TP
-.B enable\-bracketed\-paste (Off)
-When set to \fBOn\fP, readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard.  This can prevent pasted characters
-from being interpreted as editing commands.
-.TP
-.B enable\-keypad (Off)
-When set to \fBOn\fP, readline will try to enable the application
-keypad when it is called.  Some systems need this to enable the
-arrow keys.
-.TP
-.B enable\-meta\-key (On)
-When set to \fBOn\fP, readline will try to enable any meta modifier
-key the terminal claims to support when it is called.  On many terminals,
-the meta key is used to send eight-bit characters.
-.TP
-.B expand\-tilde (Off)
-If set to \fBOn\fP, tilde expansion is performed when readline
-attempts word completion.
-.TP
-.B history\-preserve\-point (Off)
-If set to \fBOn\fP, the history code attempts to place point at the 
-same location on each history line retrieved with \fBprevious-history\fP 
-or \fBnext-history\fP.
-.TP
-.B history\-size (unset)
-Set the maximum number of history entries saved in the history list.
-If set to zero, any existing history entries are deleted and no new entries
-are saved.
-If set to a value less than zero, the number of history entries is not
-limited.
-By default, the number of history entries is not limited.
-.TP
-.B horizontal\-scroll\-mode (Off)
-When set to \fBOn\fP, makes readline use a single line for display,
-scrolling the input horizontally on a single screen line when it
-becomes longer than the screen width rather than wrapping to a new line.
-.TP
-.B input\-meta (Off)
-If set to \fBOn\fP, readline will enable eight-bit input (that is,
-it will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support.  The name
-.B meta\-flag
-is a synonym for this variable.
-.TP
-.B isearch\-terminators (``C\-[ C\-J'')
-The string of characters that should terminate an incremental
-search without subsequently executing the character as a command.
-If this variable has not been given a value, the characters
-\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
-.TP
-.B keymap (emacs)
-Set the current readline keymap.  The set of legal keymap names is
-\fIemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
-vi-command\fP, and
-.IR vi-insert .
-\fIvi\fP is equivalent to \fIvi-command\fP; \fIemacs\fP is
-equivalent to \fIemacs-standard\fP.  The default value is
-.IR emacs .
-The value of
-.B editing\-mode
-also affects the default keymap.
-.TP
-.B emacs\-mode\-string (@)
-This string is displayed immediately before the last line of the primary
-prompt when emacs editing mode is active.  The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the \e1 and \e2 escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control 
-sequence into the mode string.
-.TP
-.B keyseq\-timeout (500)
-Specifies the duration \fIreadline\fP will wait for a character when reading an
-ambiguous key sequence (one that can form a complete key sequence using
-the input read so far, or can take additional input to complete a longer 
-key sequence).
-If no input is received within the timeout, \fIreadline\fP will use the shorter
-but complete key sequence.
-The value is specified in milliseconds, so a value of 1000 means that
-\fIreadline\fP will wait one second for additional input.
-If this variable is set to a value less than or equal to zero, or to a
-non-numeric value, \fIreadline\fP will wait until another key is pressed to
-decide which key sequence to complete.
-.TP
-.B mark\-directories (On)
-If set to \fBOn\fP, completed directory names have a slash
-appended.
-.TP
-.B mark\-modified\-lines (Off)
-If set to \fBOn\fP, history lines that have been modified are displayed
-with a preceding asterisk (\fB*\fP).
-.TP
-.B mark\-symlinked\-directories (Off)
-If set to \fBOn\fP, completed names which are symbolic links to directories
-have a slash appended (subject to the value of
-\fBmark\-directories\fP).
-.TP
-.B match\-hidden\-files (On)
-This variable, when set to \fBOn\fP, causes readline to match files whose 
-names begin with a `.' (hidden files) when performing filename
-completion.
-If set to \fBOff\fP, the leading `.' must be
-supplied by the user in the filename to be completed.
-.TP
-.B menu\-complete\-display\-prefix (Off)
-If set to \fBOn\fP, menu completion displays the common prefix of the
-list of possible completions (which may be empty) before cycling through
-the list.
-.TP
-.B output\-meta (Off)
-If set to \fBOn\fP, readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence.
-.TP
-.B page\-completions (On)
-If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
-to display a screenful of possible completions at a time.
-.TP
-.B print\-completions\-horizontally (Off)
-If set to \fBOn\fP, readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-.TP
-.B revert\-all\-at\-newline (Off)
-If set to \fBOn\fP, readline will undo all changes to history lines
-before returning when \fBaccept\-line\fP is executed.  By default,
-history lines may be modified and retain individual undo lists across
-calls to \fBreadline\fP.
-.TP
-.B show\-all\-if\-ambiguous (Off)
-This alters the default behavior of the completion functions.  If
-set to
-.BR On ,
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-.TP
-.B show\-all\-if\-unmodified (Off)
-This alters the default behavior of the completion functions in
-a fashion similar to \fBshow\-all\-if\-ambiguous\fP.
-If set to
-.BR On , 
-words which have more than one possible completion without any
-possible partial completion (the possible completions don't share 
-a common prefix) cause the matches to be listed immediately instead
-of ringing the bell.
-.TP
-.B show\-mode\-in\-prompt (Off)
-If set to \fBOn\fP, add a character to the beginning of the prompt
-indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
-.TP
-.B skip\-completed\-text (Off)
-If set to \fBOn\fP, this alters the default completion behavior when
-inserting a single match into the line.  It's only active when
-performing completion in the middle of a word.  If enabled, readline
-does not insert characters from the completion that match characters
-after point in the word being completed, so portions of the word
-following the cursor are not duplicated.
-.TP
-.B vi\-cmd\-mode\-string ((cmd))
-This string is displayed immediately before the last line of the primary
-prompt when vi editing mode is active and in command mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the \e1 and \e2 escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-.TP
-.B vi\-ins\-mode\-string ((ins))
-This string is displayed immediately before the last line of the primary
-prompt when vi editing mode is active and in insertion mode.  
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and  
-backslash escape sequences is available.
-Use the \e1 and \e2 escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control 
-sequence into the mode string.
-.TP
-.B visible\-stats (Off)
-If set to \fBOn\fP, a character denoting a file's type as reported  
-by \fIstat\fP(2) is appended to the filename when listing possible
-completions.
-.PD
-.SS Conditional Constructs
-.PP
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests.  There are four parser directives used.
-.IP \fB$if\fP
-The
-.B $if
-construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-readline.  The text of the test extends to the end of the line;
-no characters are required to isolate it.
-.RS
-.IP \fBmode\fP
-The \fBmode=\fP form of the \fB$if\fP directive is used to test
-whether readline is in emacs or vi mode.
-This may be used in conjunction
-with the \fBset keymap\fP command, for instance, to set bindings in
-the \fIemacs-standard\fP and \fIemacs-ctlx\fP keymaps only if
-readline is starting out in emacs mode.
-.IP \fBterm\fP
-The \fBterm=\fP form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys.  The word on the right side of the
-.B =
-is tested against the full name of the terminal and the portion
-of the terminal name before the first \fB\-\fP.  This allows
-.I sun
-to match both
-.I sun
-and
-.IR sun\-cmd ,
-for instance.
-.IP \fBapplication\fP
-The \fBapplication\fP construct is used to include
-application-specific settings.  Each program using the readline
-library sets the \fIapplication name\fP, and an initialization
-file can test for a particular value.
-This could be used to bind key sequences to functions useful for
-a specific program.  For instance, the following command adds a
-key sequence that quotes the current or previous word in \fBbash\fP:
-.sp 1
-.RS
-.nf
-\fB$if\fP Bash
-# Quote the current or previous word
-"\eC-xq": "\eeb\e"\eef\e""
-\fB$endif\fP
-.fi
-.RE
-.RE
-.IP \fB$endif\fP
-This command, as seen in the previous example, terminates an
-\fB$if\fP command.
-.IP \fB$else\fP
-Commands in this branch of the \fB$if\fP directive are executed if
-the test fails.
-.IP \fB$include\fP
-This directive takes a single filename as an argument and reads commands
-and bindings from that file.  For example, the following directive
-would read \fI/etc/inputrc\fP:
-.sp 1
-.RS
-.nf
-\fB$include\fP \^ \fI/etc/inputrc\fP
-.fi 
-.RE
-.SH SEARCHING
-.PP
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes:
-.I incremental
-and
-.IR non-incremental .
-.PP
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-\fBC\-r\fP.  Typing \fBC\-s\fP searches forward through the history.
-The characters present in the value of the \fBisearch-terminators\fP
-variable are used to terminate an incremental search.
-If that variable has not been assigned a value the \fIEscape\fP and
-\fBC\-J\fP characters will terminate an incremental search.
-\fBC\-G\fP will abort an incremental search and restore the original
-line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-.PP
-To find other matching entries in the history list, type \fBC\-s\fP or
-\fBC\-r\fP as appropriate.
-This will search backward or forward in the history for the next
-line matching the search string typed so far.
-Any other key sequence bound to a readline command will terminate
-the search and execute that command.
-For instance, a newline will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-.PP
-Non-incremental searches read the entire search string before starting
-to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
-.SH EDITING COMMANDS
-.PP
-The following is a list of the names of the commands and the default
-key sequences to which they are bound.
-Command names without an accompanying key sequence are unbound by default.
-.PP
-In the following descriptions, \fIpoint\fP refers to the current cursor
-position, and \fImark\fP refers to a cursor position saved by the
-\fBset\-mark\fP command.
-The text between the point and mark is referred to as the \fIregion\fP.
-.SS Commands for Moving
-.PP
-.PD 0
-.TP
-.B beginning\-of\-line (C\-a)
-Move to the start of the current line.
-.TP
-.B end\-of\-line (C\-e)
-Move to the end of the line.
-.TP
-.B forward\-char (C\-f)
-Move forward a character.
-.TP
-.B backward\-char (C\-b)
-Move back a character.
-.TP
-.B forward\-word (M\-f)
-Move forward to the end of the next word.  Words are composed of
-alphanumeric characters (letters and digits).
-.TP
-.B backward\-word (M\-b)
-Move back to the start of the current or previous word.  Words are
-composed of alphanumeric characters (letters and digits).
-.TP
-.B clear\-screen (C\-l)
-Clear the screen leaving the current line at the top of the screen.
-With an argument, refresh the current line without clearing the
-screen.
-.TP
-.B redraw\-current\-line
-Refresh the current line.
-.PD
-.SS Commands for Manipulating the History
-.PP
-.PD 0
-.TP
-.B accept\-line (Newline, Return)
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-\fBadd_history()\fP.
-If the line is a modified history line, the history line is restored to its original state.
-.TP
-.B previous\-history (C\-p)
-Fetch the previous command from the history list, moving back in
-the list.
-.TP
-.B next\-history (C\-n)
-Fetch the next command from the history list, moving forward in the
-list.
-.TP
-.B beginning\-of\-history (M\-<)
-Move to the first line in the history.
-.TP
-.B end\-of\-history (M\->)
-Move to the end of the input history, i.e., the line currently being
-entered.
-.TP
-.B reverse\-search\-history (C\-r)
-Search backward starting at the current line and moving `up' through
-the history as necessary.  This is an incremental search.
-.TP
-.B forward\-search\-history (C\-s)
-Search forward starting at the current line and moving `down' through
-the history as necessary.  This is an incremental search.
-.TP
-.B non\-incremental\-reverse\-search\-history (M\-p)
-Search backward through the history starting at the current line
-using a non-incremental search for a string supplied by the user.
-.TP
-.B non\-incremental\-forward\-search\-history (M\-n)
-Search forward through the history using a non-incremental search
-for a string supplied by the user.
-.TP
-.B history\-search\-backward
-Search backward through the history for the string of characters
-between the start of the current line and the current cursor
-position (the \fIpoint\fP).
-The search string must match at the beginning of a history line.
-This is a non-incremental search.
-.TP
-.B history\-search\-forward
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-The search string must match at the beginning of a history line.
-This is a non-incremental search.
-.TP
-.B history\-substring\-search\-backward
-Search backward through the history for the string of characters
-between the start of the current line and the current cursor
-position (the \fIpoint\fP).
-The search string may match anywhere in a history line.
-This is a non-incremental search.
-.TP
-.B history\-substring\-search\-forward
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-The search string may match anywhere in a history line.
-This is a non-incremental search.
-.TP
-.B yank\-nth\-arg (M\-C\-y)
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument
-.IR n ,
-insert the \fIn\fPth word from the previous command (the words
-in the previous command begin with word 0).  A negative argument
-inserts the \fIn\fPth word from the end of the previous command.
-Once the argument \fIn\fP is computed, the argument is extracted
-as if the "!\fIn\fP" history expansion had been specified.
-.TP
-.B
-yank\-last\-arg (M\-.\^, M\-_\^)
-Insert the last argument to the previous command (the last word of
-the previous history entry).
-With a numeric argument, behave exactly like \fByank\-nth\-arg\fP.
-Successive calls to \fByank\-last\-arg\fP move back through the history
-list, inserting the last word (or the word specified by the argument to
-the first call) of each line in turn.
-Any numeric argument supplied to these successive calls determines
-the direction to move through the history.  A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the "!$" history expansion had been specified.
-.PD
-.SS Commands for Changing Text
-.PP
-.PD 0
-.TP
-.B \fIend\-of\-file\fP (usually C\-d)
-The character indicating end-of-file as set, for example, by
-.if t \f(CWstty\fP.
-.if n ``stty''.
-If this character is read when there are no characters
-on the line, and point is at the beginning of the line, Readline
-interprets it as the end of input and returns
-.SM
-.BR EOF .
-.TP
-.B delete\-char (C\-d)
-Delete the character at point.
-If this function is bound to the
-same character as the tty \fBEOF\fP character, as \fBC\-d\fP
-commonly is, see above for the effects.
-.TP
-.B backward\-delete\-char (Rubout)
-Delete the character behind the cursor.  When given a numeric argument,
-save the deleted text on the kill ring.
-.TP
-.B forward\-backward\-delete\-char   
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted.
-.TP
-.B quoted\-insert (C\-q, C\-v)
-Add the next character that you type to the line verbatim.  This is
-how to insert characters like \fBC\-q\fP, for example.
-.TP
-.B tab\-insert (M-TAB)
-Insert a tab character.
-.TP
-.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
-Insert the character typed.
-.TP
-.B transpose\-chars (C\-t)
-Drag the character before point forward over the character at point,
-moving point forward as well.
-If point is at the end of the line, then this transposes
-the two characters before point.
-Negative arguments have no effect.
-.TP
-.B transpose\-words (M\-t)
-Drag the word before point past the word after point,
-moving point over that word as well.
-If point is at the end of the line, this transposes
-the last two words on the line.
-.TP
-.B upcase\-word (M\-u)
-Uppercase the current (or following) word.  With a negative argument,
-uppercase the previous word, but do not move point.
-.TP
-.B downcase\-word (M\-l)
-Lowercase the current (or following) word.  With a negative argument,
-lowercase the previous word, but do not move point.
-.TP
-.B capitalize\-word (M\-c)
-Capitalize the current (or following) word.  With a negative argument,
-capitalize the previous word, but do not move point.
-.TP
-.B overwrite\-mode
-Toggle overwrite mode.  With an explicit positive numeric argument,
-switches to overwrite mode.  With an explicit non-positive numeric
-argument, switches to insert mode.  This command affects only
-\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
-Each call to \fIreadline()\fP starts in insert mode.
-In overwrite mode, characters bound to \fBself\-insert\fP replace
-the text at point rather than pushing the text to the right.
-Characters bound to \fBbackward\-delete\-char\fP replace the character
-before point with a space.  By default, this command is unbound.
-.PD
-.SS Killing and Yanking
-.PP
-.PD 0
-.TP
-.B kill\-line (C\-k)
-Kill the text from point to the end of the line.
-.TP
-.B backward\-kill\-line (C\-x Rubout)
-Kill backward to the beginning of the line.
-.TP
-.B unix\-line\-discard (C\-u)
-Kill backward from point to the beginning of the line.
-The killed text is saved on the kill-ring.
-.\" There is no real difference between this and backward-kill-line
-.TP
-.B kill\-whole\-line
-Kill all characters on the current line, no matter where point is.
-.TP
-.B kill\-word (M\-d)
-Kill from point the end of the current word, or if between
-words, to the end of the next word.  Word boundaries are the same as
-those used by \fBforward\-word\fP.
-.TP
-.B backward\-kill\-word (M\-Rubout)
-Kill the word behind point.
-Word boundaries are the same as those used by \fBbackward\-word\fP.
-.TP
-.B unix\-word\-rubout (C\-w)
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-.TP
-.B unix\-filename\-rubout
-Kill the word behind point, using white space and the slash character
-as the word boundaries.
-The killed text is saved on the kill-ring.
-.TP
-.B delete\-horizontal\-space (M\-\e)
-Delete all spaces and tabs around point.
-.TP
-.B kill\-region
-Kill the text between the point and \fImark\fP (saved cursor position).
-This text is referred to as the \fIregion\fP.
-.TP
-.B copy\-region\-as\-kill
-Copy the text in the region to the kill buffer.
-.TP
-.B copy\-backward\-word
-Copy the word before point to the kill buffer.
-The word boundaries are the same as \fBbackward\-word\fP.
-.TP
-.B copy\-forward\-word
-Copy the word following point to the kill buffer.
-The word boundaries are the same as \fBforward\-word\fP.
-.TP
-.B yank (C\-y)
-Yank the top of the kill ring into the buffer at point.
-.TP
-.B yank\-pop (M\-y)
-Rotate the kill ring, and yank the new top.  Only works following
-.B yank
-or
-.BR yank\-pop .
-.PD
-.SS Numeric Arguments
-.PP
-.PD 0
-.TP
-.B digit\-argument (M\-0, M\-1, ..., M\-\-)
-Add this digit to the argument already accumulating, or start a new
-argument.  M\-\- starts a negative argument.
-.TP
-.B universal\-argument
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing
-.B universal\-argument
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-.PD
-.SS Completing
-.PP
-.PD 0
-.TP
-.B complete (TAB)
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-.BR Bash ,
-for instance, attempts completion treating the text as a variable
-(if the text begins with \fB$\fP), username (if the text begins with
-\fB~\fP), hostname (if the text begins with \fB@\fP), or
-command (including aliases and functions) in turn.  If none
-of these produces a match, filename completion is attempted.
-.BR Gdb ,
-on the other hand,
-allows completion of program functions and variables, and
-only attempts filename completion under certain circumstances.
-.TP
-.B possible\-completions (M\-?)
-List the possible completions of the text before point.
-When displaying completions, readline sets the number of columns used
-for display to the value of \fBcompletion-display-width\fP, the value of
-the environment variable
-.SM
-.BR COLUMNS ,
-or the screen width, in that order.
-.TP
-.B insert\-completions (M\-*)
-Insert all completions of the text before point
-that would have been generated by
-\fBpossible\-completions\fP.
-.TP
-.B menu\-complete
-Similar to \fBcomplete\fP, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of \fBmenu\-complete\fP steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of \fBbell\-style\fP)
-and the original text is restored.
-An argument of \fIn\fP moves \fIn\fP positions forward in the list
-of matches; a negative argument may be used to move backward 
-through the list.
-This command is intended to be bound to \fBTAB\fP, but is unbound
-by default.
-.TP
-.B menu\-complete\-backward
-Identical to \fBmenu\-complete\fP, but moves backward through the list
-of possible completions, as if \fBmenu\-complete\fP had been given a
-negative argument.  This command is unbound by default.
-.TP
-.B delete\-char\-or\-list
-Deletes the character under the cursor if not at the beginning or
-end of the line (like \fBdelete-char\fP).
-If at the end of the line, behaves identically to
-\fBpossible-completions\fP.
-.PD
-.SS Keyboard Macros
-.PP
-.PD 0
-.TP
-.B start\-kbd\-macro (C\-x (\^)
-Begin saving the characters typed into the current keyboard macro.
-.TP
-.B end\-kbd\-macro (C\-x )\^)
-Stop saving the characters typed into the current keyboard macro
-and store the definition.
-.TP
-.B call\-last\-kbd\-macro (C\-x e)
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-.B print\-last\-kbd\-macro ()
-Print the last keyboard macro defined in a format suitable for the
-\fIinputrc\fP file.
-.PD
-.SS Miscellaneous
-.PP
-.PD 0
-.TP
-.B re\-read\-init\-file (C\-x C\-r)
-Read in the contents of the \fIinputrc\fP file, and incorporate
-any bindings or variable assignments found there.
-.TP
-.B abort (C\-g)
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-.BR bell\-style ).
-.TP
-.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
-If the metafied character \fIx\fP is lowercase, run the command
-that is bound to the corresponding uppercase character.
-.TP
-.B prefix\-meta (ESC)
-Metafy the next character typed.
-.SM
-.B ESC
-.B f
-is equivalent to
-.BR Meta\-f .
-.TP
-.B undo (C\-_, C\-x C\-u)
-Incremental undo, separately remembered for each line.
-.TP
-.B revert\-line (M\-r)
-Undo all changes made to this line.  This is like executing the
-.B undo
-command enough times to return the line to its initial state.
-.TP
-.B tilde\-expand (M\-&)
-Perform tilde expansion on the current word.
-.TP
-.B set\-mark (C\-@, M\-<space>)
-Set the mark to the point.  If a
-numeric argument is supplied, the mark is set to that position.
-.TP
-.B exchange\-point\-and\-mark (C\-x C\-x)
-Swap the point with the mark.  The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-.TP
-.B character\-search (C\-])
-A character is read and point is moved to the next occurrence of that
-character.  A negative count searches for previous occurrences.
-.TP
-.B character\-search\-backward (M\-C\-])
-A character is read and point is moved to the previous occurrence of that
-character.  A negative count searches for subsequent occurrences.
-.TP
-.B skip\-csi\-sequence
-Read enough characters to consume a multi-key sequence such as those
-defined for keys like Home and End.  Such sequences begin with a
-Control Sequence Indicator (CSI), usually ESC\-[.  If this sequence is
-bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
-stray characters into the editing buffer.  This is unbound by default,
-but usually bound to ESC\-[.
-.TP
-.B insert\-comment (M\-#)
-Without a numeric argument, the value of the readline
-.B comment\-begin
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value   
-of \fBcomment\-begin\fP, the value is inserted, otherwise             
-the characters in \fBcomment-begin\fP are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-The default value of
-.B comment\-begin
-makes the current line a shell comment.
-If a numeric argument causes the comment character to be removed, the line
-will be executed by the shell.
-.TP
-.B dump\-functions
-Print all of the functions and their key bindings to the
-readline output stream.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B dump\-variables
-Print all of the settable variables and their values to the
-readline output stream.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B dump\-macros
-Print all of the readline key sequences bound to macros and the
-strings they output.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an \fIinputrc\fP file.
-.TP
-.B emacs\-editing\-mode (C\-e)
-When in
-.B vi
-command mode, this causes a switch to
-.B emacs
-editing mode.
-.TP
-.B vi\-editing\-mode (M\-C\-j)
-When in
-.B emacs
-editing mode, this causes a switch to
-.B vi
-editing mode.
-.PD
-.SH DEFAULT KEY BINDINGS
-.LP
-The following is a list of the default emacs and vi bindings.
-Characters with the eighth bit set are written as M\-<character>, and
-are referred to as
-.I metafied
-characters.
-The printable ASCII characters not mentioned in the list of emacs
-standard bindings are bound to the
-.B self\-insert
-function, which just inserts the given character into the input line.
-In vi insertion mode, all characters not specifically mentioned are
-bound to
-.BR self\-insert .
-Characters assigned to signal generation by
-.IR stty (1)
-or the terminal driver, such as C-Z or C-C,
-retain that function.
-Upper and lower case metafied characters are bound to the same function in
-the emacs mode meta keymap.
-The remaining characters are unbound, which causes readline
-to ring the bell (subject to the setting of the
-.B bell\-style
-variable).
-.SS Emacs Mode
-.RS +.6i
-.nf
-.ta 2.5i
-.sp
-Emacs Standard bindings
-.sp
-"C-@"  set-mark
-"C-A"  beginning-of-line
-"C-B"  backward-char
-"C-D"  delete-char
-"C-E"  end-of-line
-"C-F"  forward-char
-"C-G"  abort
-"C-H"  backward-delete-char
-"C-I"  complete
-"C-J"  accept-line
-"C-K"  kill-line
-"C-L"  clear-screen
-"C-M"  accept-line
-"C-N"  next-history
-"C-P"  previous-history
-"C-Q"  quoted-insert
-"C-R"  reverse-search-history
-"C-S"  forward-search-history
-"C-T"  transpose-chars
-"C-U"  unix-line-discard
-"C-V"  quoted-insert
-"C-W"  unix-word-rubout
-"C-Y"  yank
-"C-]"  character-search
-"C-_"  undo
-"\^ " to "/"  self-insert
-"0"  to "9"  self-insert
-":"  to "~"  self-insert
-"C-?"  backward-delete-char
-.PP
-Emacs Meta bindings
-.sp
-"M-C-G"  abort
-"M-C-H"  backward-kill-word
-"M-C-I"  tab-insert
-"M-C-J"  vi-editing-mode
-"M-C-M"  vi-editing-mode
-"M-C-R"  revert-line
-"M-C-Y"  yank-nth-arg
-"M-C-["  complete
-"M-C-]"  character-search-backward
-"M-space"  set-mark
-"M-#"  insert-comment
-"M-&"  tilde-expand
-"M-*"  insert-completions
-"M--"  digit-argument
-"M-."  yank-last-arg
-"M-0"  digit-argument
-"M-1"  digit-argument
-"M-2"  digit-argument
-"M-3"  digit-argument
-"M-4"  digit-argument
-"M-5"  digit-argument
-"M-6"  digit-argument
-"M-7"  digit-argument
-"M-8"  digit-argument
-"M-9"  digit-argument
-"M-<"  beginning-of-history
-"M-="  possible-completions
-"M->"  end-of-history
-"M-?"  possible-completions
-"M-B"  backward-word
-"M-C"  capitalize-word
-"M-D"  kill-word
-"M-F"  forward-word
-"M-L"  downcase-word
-"M-N"  non-incremental-forward-search-history
-"M-P"  non-incremental-reverse-search-history
-"M-R"  revert-line
-"M-T"  transpose-words
-"M-U"  upcase-word
-"M-Y"  yank-pop
-"M-\e"  delete-horizontal-space
-"M-~"  tilde-expand
-"M-C-?"  backward-kill-word
-"M-_"  yank-last-arg
-.PP
-Emacs Control-X bindings
-.sp
-"C-XC-G"  abort
-"C-XC-R"  re-read-init-file
-"C-XC-U"  undo
-"C-XC-X"  exchange-point-and-mark
-"C-X("  start-kbd-macro
-"C-X)"  end-kbd-macro
-"C-XE"  call-last-kbd-macro
-"C-XC-?"  backward-kill-line
-.sp
-.RE
-.SS VI Mode bindings
-.RS +.6i
-.nf
-.ta 2.5i
-.sp
-.PP
-VI Insert Mode functions
-.sp
-"C-D"  vi-eof-maybe
-"C-H"  backward-delete-char
-"C-I"  complete
-"C-J"  accept-line
-"C-M"  accept-line
-"C-R"  reverse-search-history
-"C-S"  forward-search-history
-"C-T"  transpose-chars
-"C-U"  unix-line-discard
-"C-V"  quoted-insert
-"C-W"  unix-word-rubout
-"C-Y"  yank
-"C-["  vi-movement-mode
-"C-_"  undo
-"\^ " to "~"  self-insert
-"C-?"  backward-delete-char
-.PP
-VI Command Mode functions
-.sp
-"C-D"  vi-eof-maybe
-"C-E"  emacs-editing-mode
-"C-G"  abort
-"C-H"  backward-char
-"C-J"  accept-line
-"C-K"  kill-line
-"C-L"  clear-screen
-"C-M"  accept-line
-"C-N"  next-history
-"C-P"  previous-history
-"C-Q"  quoted-insert
-"C-R"  reverse-search-history
-"C-S"  forward-search-history
-"C-T"  transpose-chars
-"C-U"  unix-line-discard
-"C-V"  quoted-insert
-"C-W"  unix-word-rubout
-"C-Y"  yank
-"C-_"  vi-undo
-"\^ "  forward-char
-"#"  insert-comment
-"$"  end-of-line
-"%"  vi-match
-"&"  vi-tilde-expand
-"*"  vi-complete
-"+"  next-history
-","  vi-char-search
-"-"  previous-history
-"."  vi-redo
-"/"  vi-search
-"0"  beginning-of-line
-"1" to "9"  vi-arg-digit
-";"  vi-char-search
-"="  vi-complete
-"?"  vi-search
-"A"  vi-append-eol
-"B"  vi-prev-word
-"C"  vi-change-to
-"D"  vi-delete-to
-"E"  vi-end-word
-"F"  vi-char-search
-"G"  vi-fetch-history
-"I"  vi-insert-beg
-"N"  vi-search-again
-"P"  vi-put
-"R"  vi-replace
-"S"  vi-subst
-"T"  vi-char-search
-"U"  revert-line
-"W"  vi-next-word
-"X"  backward-delete-char
-"Y"  vi-yank-to
-"\e"  vi-complete
-"^"  vi-first-print
-"_"  vi-yank-arg
-"`"  vi-goto-mark
-"a"  vi-append-mode
-"b"  vi-prev-word
-"c"  vi-change-to
-"d"  vi-delete-to
-"e"  vi-end-word
-"f"  vi-char-search
-"h"  backward-char
-"i"  vi-insertion-mode
-"j"  next-history
-"k"  prev-history
-"l"  forward-char
-"m"  vi-set-mark
-"n"  vi-search-again
-"p"  vi-put
-"r"  vi-change-char
-"s"  vi-subst
-"t"  vi-char-search
-"u"  vi-undo
-"w"  vi-next-word
-"x"  vi-delete
-"y"  vi-yank-to
-"|"  vi-column
-"~"  vi-change-case
-.RE
-.SH "SEE ALSO"
-.PD 0
-.TP
-\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
-.TP
-\fIbash\fP(1)
-.PD
-.SH FILES
-.PD 0
-.TP
-.FN ~/.inputrc
-Individual \fBreadline\fP initialization file
-.PD
-.SH AUTHORS
-Brian Fox, Free Software Foundation
-.br
-bfox@gnu.org
-.PP
-Chet Ramey, Case Western Reserve University
-.br
-chet.ramey@case.edu
-.SH BUG REPORTS
-If you find a bug in
-.B readline,
-you should report it.  But first, you should
-make sure that it really is a bug, and that it appears in the latest
-version of the
-.B readline
-library that you have.
-.PP
-Once you have determined that a bug actually exists, mail a
-bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
-If you have a fix, you are welcome to mail that
-as well!  Suggestions and `philosophical' bug reports may be mailed
-to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
-newsgroup
-.BR gnu.bash.bug .
-.PP
-Comments and bug reports concerning
-this manual page should be directed to
-.IR chet.ramey@case.edu .
-.SH BUGS
-.PP
-It's too big and too slow.
diff --git a/lib/readline/doc/readline.dvi b/lib/readline/doc/readline.dvi
deleted file mode 100644 (file)
index 5cae65f..0000000
Binary files a/lib/readline/doc/readline.dvi and /dev/null differ
diff --git a/lib/readline/doc/readline.html b/lib/readline/doc/readline.html
deleted file mode 100644 (file)
index 088c260..0000000
+++ /dev/null
@@ -1,7443 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on July, 1  2015 by texi2html 1.64 -->
-<!-- 
-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>
--->
-<HEAD>
-<TITLE>GNU Readline Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU Readline Library: ">
-<META NAME="keywords" CONTENT="GNU Readline Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU Readline Library</H1></P><P>
-
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs which
-provide a command line interface.
-The Readline home page is <A HREF="http://www.gnu.org/software/readline/">http://www.gnu.org/software/readline/</A>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC23">2. Programming with GNU Readline</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline Programmer's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC50">A. GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC52">Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC53">Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
-                                  and variables.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Command Line Editing"></A>
-<H1> 1. Command Line Editing </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes the basic features of the GNU
-command line editing interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
-                               available for binding</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
-                               behave like the vi editor.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction and Notation"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 Introduction to Line Editing </H2>
-<!--docid::SEC2::-->
-<P>
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-</P><P>
-
-The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
-produced when the <KBD>k</KBD> key is pressed while the Control key
-is depressed.
-</P><P>
-
-The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
-key is pressed.
-The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
-On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
-the space bar), the <KBD>ALT</KBD> on the left side is generally set to
-work as a Meta key.
-The <KBD>ALT</KBD> key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-</P><P>
-
-If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
-<EM>first</EM>, and then typing <KBD>k</KBD>.
-Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
-</P><P>
-
-The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
-character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
-</P><P>
-
-In addition, several keys have their own names.  Specifically,
-<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
-stand for themselves when seen in this text, or in an init file
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
-produce the desired character.
-The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
-some keyboards.
-</P><P>
-
-<A NAME="Readline Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.2 Readline Interaction </H2>
-<!--docid::SEC3::-->
-<P>
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press <KBD>RET</KBD>.  You do not have to be at the
-end of the line to press <KBD>RET</KBD>; the entire line is accepted
-regardless of the location of the cursor within the line.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Bare Essentials"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.1 Readline Bare Essentials </H3>
-<!--docid::SEC4::-->
-<P>
-
-In order to enter characters into the line, simply type them.  The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-</P><P>
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters.  In
-that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
-correct your mistake.  Afterwards, you can move the cursor to the right
-with <KBD>C-f</KBD>.
-</P><P>
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted.  Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text.  A list of the bare
-essentials for editing the text of an input line follows.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-b</KBD>
-<DD>Move back one character.
-<DT><KBD>C-f</KBD>
-<DD>Move forward one character.
-<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
-<DD>Delete the character to the left of the cursor.
-<DT><KBD>C-d</KBD>
-<DD>Delete the character underneath the cursor.
-<DT>Printing characters
-<DD>Insert the character into the line at the cursor.
-<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
-<DD>Undo the last editing command.  You can undo all the way back to an
-empty line.
-</DL>
-<P>
-
-(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
-delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
-to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
-than the character to the left of the cursor.)
-</P><P>
-
-<A NAME="Readline Movement Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.2 Readline Movement Commands </H3>
-<!--docid::SEC5::-->
-<P>
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line.  For your convenience, many
-other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
-<KBD>C-d</KBD>, and <KBD>DEL</KBD>.  Here are some commands for moving more rapidly
-about the line.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-a</KBD>
-<DD>Move to the start of the line.
-<DT><KBD>C-e</KBD>
-<DD>Move to the end of the line.
-<DT><KBD>M-f</KBD>
-<DD>Move forward a word, where a word is composed of letters and digits.
-<DT><KBD>M-b</KBD>
-<DD>Move backward a word.
-<DT><KBD>C-l</KBD>
-<DD>Clear the screen, reprinting the current line at the top.
-</DL>
-<P>
-
-Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
-forward a word.  It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-</P><P>
-
-<A NAME="Readline Killing Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.3 Readline Killing Commands </H3>
-<!--docid::SEC6::-->
-<P>
-
-<A NAME="IDX1"></A>
-<A NAME="IDX2"></A>
-</P><P>
-
-<EM>Killing</EM> text means to delete the text from the line, but to save
-it away for later use, usually by <EM>yanking</EM> (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-</P><P>
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-</P><P>
-
-When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-<A NAME="IDX3"></A>
-</P><P>
-
-Here is the list of commands for killing text.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-k</KBD>
-<DD>Kill the text from the current cursor position to the end of the line.
-<P>
-
-<DT><KBD>M-d</KBD>
-<DD>Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by <KBD>M-f</KBD>.
-<P>
-
-<DT><KBD>M-<KBD>DEL</KBD></KBD>
-<DD>Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by <KBD>M-b</KBD>.
-<P>
-
-<DT><KBD>C-w</KBD>
-<DD>Kill from the cursor to the previous whitespace.  This is different than
-<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
-<P>
-
-</DL>
-<P>
-
-Here is how to <EM>yank</EM> the text back into the line.  Yanking
-means to copy the most-recently-killed text from the kill buffer.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-y</KBD>
-<DD>Yank the most recently killed text back into the buffer at the cursor.
-<P>
-
-<DT><KBD>M-y</KBD>
-<DD>Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
-</DL>
-<P>
-
-<A NAME="Readline Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.4 Readline Arguments </H3>
-<!--docid::SEC7::-->
-<P>
-
-You can pass numeric arguments to Readline commands.  Sometimes the
-argument acts as a repeat count, other times it is the <I>sign</I> of the
-argument that is significant.  If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
-start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
-</P><P>
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command.  If the first `digit' typed is a minus
-sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative.  Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command.  For example, to give
-the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
-which will delete the next ten characters on the input line.
-</P><P>
-
-<A NAME="Searching"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.5 Searching for Commands in the History </H3>
-<!--docid::SEC8::-->
-<P>
-
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes:  <EM>incremental</EM> and <EM>non-incremental</EM>.
-</P><P>
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-<KBD>C-r</KBD>.  Typing <KBD>C-s</KBD> searches forward through the history.
-The characters present in the value of the <CODE>isearch-terminators</CODE> variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the <KBD>ESC</KBD> and
-<KBD>C-J</KBD> characters will terminate an incremental search.
-<KBD>C-g</KBD> will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-</P><P>
-
-To find other matching entries in the history list, type <KBD>C-r</KBD> or
-<KBD>C-s</KBD> as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a <KBD>RET</KBD> will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-</P><P>
-
-Readline remembers the last incremental search string.  If two
-<KBD>C-r</KBD>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-</P><P>
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
-</P><P>
-
-<A NAME="Readline Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.3 Readline Init File </H2>
-<!--docid::SEC9::-->
-<P>
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an <EM>inputrc</EM> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the environment variable <CODE>INPUTRC</CODE>.  If
-that variable is unset, the default is <TT>`~/.inputrc'</TT>.  If that
-file does not exist or cannot be read, the ultimate default is
-<TT>`/etc/inputrc'</TT>.
-</P><P>
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-</P><P>
-
-In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Init File Syntax"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.1 Readline Init File Syntax </H3>
-<!--docid::SEC10::-->
-<P>
-
-There are only a few basic constructs allowed in the
-Readline init file.  Blank lines are ignored.
-Lines beginning with a <SAMP>`#'</SAMP> are comments.
-Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
-constructs (see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>).  Other lines
-denote variable settings and key bindings.
-</P><P>
-
-<DL COMPACT>
-<DT>Variable Settings
-<DD>You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the <CODE>set</CODE> command within the init file.
-The syntax is simple:
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
-</pre></td></tr></table></P><P>
-
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-<CODE>vi</CODE> line editing commands:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
-</pre></td></tr></table></P><P>
-
-Variable names and values, where appropriate, are recognized without regard
-to case.  Unrecognized variable names are ignored.
-</P><P>
-
-Boolean variables (those that can be set to on or off) are set to on if
-the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1.  Any other
-value results in the variable being set to off.
-</P><P>
-
-A great deal of run-time behavior is changeable with the following
-variables.
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL COMPACT>
-
-<DT><CODE>bell-style</CODE>
-<DD><A NAME="IDX5"></A>
-Controls what happens when Readline wants to ring the terminal bell.
-If set to <SAMP>`none'</SAMP>, Readline never rings the bell.  If set to
-<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
-If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
-the terminal's bell.
-<P>
-
-<DT><CODE>bind-tty-special-chars</CODE>
-<DD><A NAME="IDX6"></A>
-If set to <SAMP>`on'</SAMP> (the default), Readline attempts to bind the control
-characters   treated specially by the kernel's terminal driver to their
-Readline equivalents.
-<P>
-
-<DT><CODE>blink-matching-paren</CODE>
-<DD><A NAME="IDX7"></A>
-If set to <SAMP>`on'</SAMP>, Readline attempts to briefly move the cursor to an
-opening parenthesis when a closing parenthesis is inserted.  The default
-is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>colored-completion-prefix</CODE>
-<DD><A NAME="IDX8"></A>
-If set to <SAMP>`on'</SAMP>, when listing completions, Readline displays the
-common prefix of the set of possible completions using a different color.
-The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
-environment variable.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>colored-stats</CODE>
-<DD><A NAME="IDX9"></A>
-If set to <SAMP>`on'</SAMP>, Readline displays possible completions using different
-colors to indicate their file type.
-The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
-environment variable.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>comment-begin</CODE>
-<DD><A NAME="IDX10"></A>
-The string to insert at the beginning of the line when the
-<CODE>insert-comment</CODE> command is executed.  The default value
-is <CODE>"#"</CODE>.
-<P>
-
-<DT><CODE>completion-display-width</CODE>
-<DD><A NAME="IDX11"></A>
-The number of screen columns used to display possible matches
-when performing completion.
-The value is ignored if it is less than 0 or greater than the terminal
-screen width.
-A value of 0 will cause matches to be displayed one per line.
-The default value is -1.
-<P>
-
-<DT><CODE>completion-ignore-case</CODE>
-<DD><A NAME="IDX12"></A>
-If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>completion-map-case</CODE>
-<DD><A NAME="IDX13"></A>
-If set to <SAMP>`on'</SAMP>, and <VAR>completion-ignore-case</VAR> is enabled, Readline
-treats hyphens (<SAMP>`-'</SAMP>) and underscores (<SAMP>`_'</SAMP>) as equivalent when
-performing case-insensitive filename matching and completion.
-<P>
-
-<DT><CODE>completion-prefix-display-length</CODE>
-<DD><A NAME="IDX14"></A>
-The length in characters of the common prefix of a list of possible
-completions that is displayed without modification.  When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
-<P>
-
-<DT><CODE>completion-query-items</CODE>
-<DD><A NAME="IDX15"></A>
-The number of possible completions that determines when the user is
-asked whether the list of possibilities should be displayed.
-If the number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-A negative value means Readline should never ask.
-The default limit is <CODE>100</CODE>.
-<P>
-
-<DT><CODE>convert-meta</CODE>
-<DD><A NAME="IDX16"></A>
-If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
-eighth bit set to an ASCII key sequence by stripping the eighth
-bit and prefixing an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence.  The default value is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>disable-completion</CODE>
-<DD><A NAME="IDX17"></A>
-If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
-Completion  characters will be inserted into the line as if they had
-been mapped to <CODE>self-insert</CODE>.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>editing-mode</CODE>
-<DD><A NAME="IDX18"></A>
-The <CODE>editing-mode</CODE> variable controls which default set of
-key bindings is used.  By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs.  This variable can be
-set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
-<P>
-
-<DT><CODE>emacs-mode-string</CODE>
-<DD><A NAME="IDX19"></A>
-This string is displayed immediately before the last line of the primary
-prompt when emacs editing mode is active.  The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-The default is <SAMP>`@'</SAMP>.
-<P>
-
-<DT><CODE>echo-control-characters</CODE>
-<DD><A NAME="IDX20"></A>
-When set to <SAMP>`on'</SAMP>, on operating systems that indicate they support it,
-readline echoes a character corresponding to a signal generated from the
-keyboard.  The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>enable-bracketed-paste</CODE>
-<DD><A NAME="IDX21"></A>
-When set to <SAMP>`On'</SAMP>, Readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard.  This can prevent pasted characters
-from being interpreted as editing commands.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>enable-keypad</CODE>
-<DD><A NAME="IDX22"></A>
-When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
-keypad when it is called.  Some systems need this to enable the
-arrow keys.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>enable-meta-key</CODE>
-<DD>When set to <SAMP>`on'</SAMP>, Readline will try to enable any meta modifier
-key the terminal claims to support when it is called.  On many terminals,
-the meta key is used to send eight-bit characters.
-The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>expand-tilde</CODE>
-<DD><A NAME="IDX23"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>history-preserve-point</CODE>
-<DD><A NAME="IDX24"></A>
-If set to <SAMP>`on'</SAMP>, the history code attempts to place the point (the
-current cursor position) at the
-same location on each history line retrieved with <CODE>previous-history</CODE>
-or <CODE>next-history</CODE>.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>history-size</CODE>
-<DD><A NAME="IDX25"></A>
-Set the maximum number of history entries saved in the history list.
-If set to zero, any existing history entries are deleted and no new entries
-are saved.
-If set to a value less than zero, the number of history entries is not
-limited.
-By default, the number of history entries is not limited.
-<P>
-
-<DT><CODE>horizontal-scroll-mode</CODE>
-<DD><A NAME="IDX26"></A>
-This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>.  Setting it
-to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line.  By default,
-this variable is set to <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>input-meta</CODE>
-<DD><A NAME="IDX27"></A>
-<A NAME="IDX28"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support.  The
-default value is <SAMP>`off'</SAMP>.  The name <CODE>meta-flag</CODE> is a
-synonym for this variable.
-<P>
-
-<DT><CODE>isearch-terminators</CODE>
-<DD><A NAME="IDX29"></A>
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see section <A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>).
-If this variable has not been given a value, the characters <KBD>ESC</KBD> and
-<KBD>C-J</KBD> will terminate an incremental search.
-<P>
-
-<DT><CODE>keymap</CODE>
-<DD><A NAME="IDX30"></A>
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
-<CODE>emacs</CODE>,
-<CODE>emacs-standard</CODE>,
-<CODE>emacs-meta</CODE>,
-<CODE>emacs-ctlx</CODE>,
-<CODE>vi</CODE>,
-<CODE>vi-move</CODE>,
-<CODE>vi-command</CODE>, and
-<CODE>vi-insert</CODE>.
-<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
-equivalent to <CODE>emacs-standard</CODE>.  The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
-default keymap.
-<P>
-
-<DT><CODE>keyseq-timeout</CODE>
-<DD>Specifies the duration Readline will wait for a character when reading an
-ambiguous key sequence (one that can form a complete key sequence using
-the input read so far, or can take additional input to complete a longer
-key sequence).
-If no input is received within the timeout, Readline will use the shorter
-but complete key sequence.
-Readline uses this value to determine whether or not input is
-available on the current input source (<CODE>rl_instream</CODE> by default).
-The value is specified in milliseconds, so a value of 1000 means that
-Readline will wait one second for additional input.
-If this variable is set to a value less than or equal to zero, or to a
-non-numeric value, Readline will wait until another key is pressed to
-decide which key sequence to complete.
-The default value is <CODE>500</CODE>.
-<P>
-
-<DT><CODE>mark-directories</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
-appended.  The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>mark-modified-lines</CODE>
-<DD><A NAME="IDX31"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
-asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
-This variable is <SAMP>`off'</SAMP> by default.
-<P>
-
-<DT><CODE>mark-symlinked-directories</CODE>
-<DD><A NAME="IDX32"></A>
-If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<CODE>mark-directories</CODE>).
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>match-hidden-files</CODE>
-<DD><A NAME="IDX33"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
-names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
-completion.
-If set to <SAMP>`off'</SAMP>, the leading <SAMP>`.'</SAMP> must be
-supplied by the user in the filename to be completed.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>menu-complete-display-prefix</CODE>
-<DD><A NAME="IDX34"></A>
-If set to <SAMP>`on'</SAMP>, menu completion displays the common prefix of the
-list of possible completions (which may be empty) before cycling through
-the list.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>output-meta</CODE>
-<DD><A NAME="IDX35"></A>
-If set to <SAMP>`on'</SAMP>, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>page-completions</CODE>
-<DD><A NAME="IDX36"></A>
-If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
-to display a screenful of possible completions at a time.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>print-completions-horizontally</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>revert-all-at-newline</CODE>
-<DD><A NAME="IDX37"></A>
-If set to <SAMP>`on'</SAMP>, Readline will undo all changes to history lines
-before returning when <CODE>accept-line</CODE> is executed.  By default,
-history lines may be modified and retain individual undo lists across
-calls to <CODE>readline</CODE>.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-all-if-ambiguous</CODE>
-<DD><A NAME="IDX38"></A>
-This alters the default behavior of the completion functions.  If
-set to <SAMP>`on'</SAMP>, 
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-all-if-unmodified</CODE>
-<DD><A NAME="IDX39"></A>
-This alters the default behavior of the completion functions in
-a fashion similar to <VAR>show-all-if-ambiguous</VAR>.
-If set to <SAMP>`on'</SAMP>, 
-words which have more than one possible completion without any
-possible partial completion (the possible completions don't share
-a common prefix) cause the matches to be listed immediately instead
-of ringing the bell.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-mode-in-prompt</CODE>
-<DD><A NAME="IDX40"></A>
-If set to <SAMP>`on'</SAMP>, add a character to the beginning of the prompt
-indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>skip-completed-text</CODE>
-<DD><A NAME="IDX41"></A>
-If set to <SAMP>`on'</SAMP>, this alters the default completion behavior when
-inserting a single match into the line.  It's only active when
-performing completion in the middle of a word.  If enabled, readline
-does not insert characters from the completion that match characters
-after point in the word being completed, so portions of the word
-following the cursor are not duplicated.
-For instance, if this is enabled, attempting completion when the cursor
-is after the <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in <SAMP>`Makefile'</SAMP>
-rather than <SAMP>`Makefilefile'</SAMP>, assuming there is a single possible
-completion.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>vi-cmd-mode-string</CODE>
-<DD><A NAME="IDX42"></A>
-This string is displayed immediately before the last line of the primary
-prompt when vi editing mode is active and in command mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-The default is <SAMP>`(cmd)'</SAMP>.
-<P>
-
-<DT><CODE>vi-ins-mode-string</CODE>
-<DD><A NAME="IDX43"></A>
-This string is displayed immediately before the last line of the primary
-prompt when vi editing mode is active and in insertion mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-The default is <SAMP>`(ins)'</SAMP>.
-<P>
-
-<DT><CODE>visible-stats</CODE>
-<DD><A NAME="IDX44"></A>
-If set to <SAMP>`on'</SAMP>, a character denoting a file's type
-is appended to the filename when listing possible
-completions.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-</DL>
-<P>
-
-<DT>Key Bindings
-<DD>The syntax for controlling key bindings in the init file is
-simple.  First you need to find the name of the command that you
-want to change.  The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-<P>
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command.
-There can be no space between the key name and the colon -- that will be
-interpreted as part of the key name.
-The name of the key can be expressed in different ways, depending on
-what you find most comfortable.
-</P><P>
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
-</P><P>
-
-<DL COMPACT>
-<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyname</VAR> is the name of a key spelled out in English.  For example:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "&#62; output"
-</pre></td></tr></table><P>
-
-In the above example, <KBD>C-u</KBD> is bound to the function
-<CODE>universal-argument</CODE>,
-<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
-<KBD>C-o</KBD> is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-<SAMP>`&#62; output'</SAMP> into the line).
-</P><P>
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-<VAR>DEL</VAR>,
-<VAR>ESC</VAR>,
-<VAR>ESCAPE</VAR>,
-<VAR>LFD</VAR>,
-<VAR>NEWLINE</VAR>,
-<VAR>RET</VAR>,
-<VAR>RETURN</VAR>,
-<VAR>RUBOUT</VAR>,
-<VAR>SPACE</VAR>,
-<VAR>SPC</VAR>,
-and
-<VAR>TAB</VAR>.
-</P><P>
-
-<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes.  Some GNU Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-</pre></td></tr></table></P><P>
-
-In the above example, <KBD>C-u</KBD> is again bound to the function
-<CODE>universal-argument</CODE> (just as it was in the first example),
-<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
-and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
-the text <SAMP>`Function Key 1'</SAMP>.
-</P><P>
-
-</DL>
-<P>
-
-The following GNU Emacs style escape sequences are available when
-specifying key sequences:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE><KBD>\C-</KBD></CODE>
-<DD>control prefix
-<DT><CODE><KBD>\M-</KBD></CODE>
-<DD>meta prefix
-<DT><CODE><KBD>\e</KBD></CODE>
-<DD>an escape character
-<DT><CODE><KBD>\\</KBD></CODE>
-<DD>backslash
-<DT><CODE><KBD>\"</KBD></CODE>
-<DD><KBD>"</KBD>, a double quotation mark
-<DT><CODE><KBD>\'</KBD></CODE>
-<DD><KBD>'</KBD>, a single quote or apostrophe
-</DL>
-<P>
-
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>\a</CODE>
-<DD>alert (bell)
-<DT><CODE>\b</CODE>
-<DD>backspace
-<DT><CODE>\d</CODE>
-<DD>delete
-<DT><CODE>\f</CODE>
-<DD>form feed
-<DT><CODE>\n</CODE>
-<DD>newline
-<DT><CODE>\r</CODE>
-<DD>carriage return
-<DT><CODE>\t</CODE>
-<DD>horizontal tab
-<DT><CODE>\v</CODE>
-<DD>vertical tab
-<DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>HH</VAR></CODE>
-<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
-(one or two hex digits)
-</DL>
-<P>
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
-For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
-insert a single <SAMP>`\'</SAMP> into the line:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
-</pre></td></tr></table></P><P>
-
-</DL>
-<P>
-
-<A NAME="Conditional Init Constructs"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.2 Conditional Init Constructs </H3>
-<!--docid::SEC11::-->
-<P>
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests.  There are four parser directives used.
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>$if</CODE>
-<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline.  The text of the test extends to the end of the line;
-no characters are required to isolate it.
-<P>
-
-<DL COMPACT>
-<DT><CODE>mode</CODE>
-<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
-whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
-This may be used in conjunction
-with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
-the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
-Readline is starting out in <CODE>emacs</CODE> mode.
-<P>
-
-<DT><CODE>term</CODE>
-<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys.  The word on the right side of the
-<SAMP>`='</SAMP> is tested against both the full name of the terminal and
-the portion of the terminal name before the first <SAMP>`-'</SAMP>.  This
-allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
-for instance.
-<P>
-
-<DT><CODE>application</CODE>
-<DD>The <VAR>application</VAR> construct is used to include
-application-specific settings.  Each program using the Readline
-library sets the <VAR>application name</VAR>, and you can test for
-a particular value. 
-This could be used to bind key sequences to functions useful for
-a specific program.  For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-</pre></td></tr></table></DL>
-<P>
-
-<DT><CODE>$endif</CODE>
-<DD>This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-<P>
-
-<DT><CODE>$else</CODE>
-<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
-the test fails.
-<P>
-
-<DT><CODE>$include</CODE>
-<DD>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
-</pre></td></tr></table></DL>
-<P>
-
-<A NAME="Sample Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.3 Sample Init File </H3>
-<!--docid::SEC12::-->
-<P>
-
-Here is an example of an <VAR>inputrc</VAR> file.  This illustrates key
-binding, variable assignment, and conditional syntax.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre># This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library.  Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any system-wide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs 
-
-$if mode=emacs
-
-Meta-Control-h:        backward-kill-word      Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD":        backward-char
-#"\M-OC":        forward-char
-#"\M-OA":        previous-history
-#"\M-OB":        next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D":        backward-char
-"\M-[C":        forward-char
-"\M-[A":        previous-history
-"\M-[B":        next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD":       backward-char
-#"\M-\C-OC":       forward-char
-#"\M-\C-OA":       previous-history
-#"\M-\C-OB":       next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D":       backward-char
-#"\M-\C-[C":       forward-char
-#"\M-\C-[A":       previous-history
-#"\M-\C-[B":       next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding.  This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-</pre></td></tr></table></P><P>
-
-<A NAME="Bindable Readline Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.4 Bindable Readline Commands </H2>
-<!--docid::SEC13::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-This section describes Readline commands that may be bound to key
-sequences.
-Command names without an accompanying key sequence are unbound by default.
-</P><P>
-
-In the following descriptions, <EM>point</EM> refers to the current cursor
-position, and <EM>mark</EM> refers to a cursor position saved by the
-<CODE>set-mark</CODE> command.
-The text between the point and mark is referred to as the <EM>region</EM>.
-</P><P>
-
-<A NAME="Commands For Moving"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.1 Commands For Moving </H3>
-<!--docid::SEC14::-->
-<DL COMPACT>
-<A NAME="IDX45"></A>
-<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD><A NAME="IDX46"></A>
-Move to the start of the current line.
-<P>
-
-<A NAME="IDX47"></A>
-<DT><CODE>end-of-line (C-e)</CODE>
-<DD><A NAME="IDX48"></A>
-Move to the end of the line.
-<P>
-
-<A NAME="IDX49"></A>
-<DT><CODE>forward-char (C-f)</CODE>
-<DD><A NAME="IDX50"></A>
-Move forward a character.
-<P>
-
-<A NAME="IDX51"></A>
-<DT><CODE>backward-char (C-b)</CODE>
-<DD><A NAME="IDX52"></A>
-Move back a character.
-<P>
-
-<A NAME="IDX53"></A>
-<DT><CODE>forward-word (M-f)</CODE>
-<DD><A NAME="IDX54"></A>
-Move forward to the end of the next word.
-Words are composed of letters and digits.
-<P>
-
-<A NAME="IDX55"></A>
-<DT><CODE>backward-word (M-b)</CODE>
-<DD><A NAME="IDX56"></A>
-Move back to the start of the current or previous word.
-Words are composed of letters and digits.
-<P>
-
-<A NAME="IDX57"></A>
-<DT><CODE>clear-screen (C-l)</CODE>
-<DD><A NAME="IDX58"></A>
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-<P>
-
-<A NAME="IDX59"></A>
-<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX60"></A>
-Refresh the current line.  By default, this is unbound.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For History"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.2 Commands For Manipulating The History </H3>
-<!--docid::SEC15::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX61"></A>
-<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX62"></A>
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-<CODE>add_history()</CODE>.
-If this line is a modified history line, the history line is restored
-to its original state.
-<P>
-
-<A NAME="IDX63"></A>
-<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX64"></A>
-Move `back' through the history list, fetching the previous command.
-<P>
-
-<A NAME="IDX65"></A>
-<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX66"></A>
-Move `forward' through the history list, fetching the next command.
-<P>
-
-<A NAME="IDX67"></A>
-<DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD><A NAME="IDX68"></A>
-Move to the first line in the history.
-<P>
-
-<A NAME="IDX69"></A>
-<DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD><A NAME="IDX70"></A>
-Move to the end of the input history, i.e., the line currently
-being entered.
-<P>
-
-<A NAME="IDX71"></A>
-<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX72"></A>
-Search backward starting at the current line and moving `up' through
-the history as necessary.  This is an incremental search.
-<P>
-
-<A NAME="IDX73"></A>
-<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX74"></A>
-Search forward starting at the current line and moving `down' through
-the history as necessary.  This is an incremental search.
-<P>
-
-<A NAME="IDX75"></A>
-<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX76"></A>
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-The search string may match anywhere in a history line.
-<P>
-
-<A NAME="IDX77"></A>
-<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX78"></A>
-Search forward starting at the current line and moving `down'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-The search string may match anywhere in a history line.
-<P>
-
-<A NAME="IDX79"></A>
-<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX80"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-The search string must match at the beginning of a history line.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX81"></A>
-<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX82"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point.
-The search string must match at the beginning of a history line.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX83"></A>
-<DT><CODE>history-substr-search-forward ()</CODE>
-<DD><A NAME="IDX84"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-The search string may match anywhere in a history line.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX85"></A>
-<DT><CODE>history-substr-search-backward ()</CODE>
-<DD><A NAME="IDX86"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point.
-The search string may match anywhere in a history line.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX87"></A>
-<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX88"></A>
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument <VAR>n</VAR>,
-insert the <VAR>n</VAR>th word from the previous command (the words
-in the previous command begin with word 0).  A negative argument
-inserts the <VAR>n</VAR>th word from the end of the previous command.
-Once the argument <VAR>n</VAR> is computed, the argument is extracted
-as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
-<P>
-
-<A NAME="IDX89"></A>
-<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX90"></A>
-Insert last argument to the previous command (the last word of the
-previous history entry).
-With a numeric argument, behave exactly like <CODE>yank-nth-arg</CODE>.
-Successive calls to <CODE>yank-last-arg</CODE> move back through the history
-list, inserting the last word (or the word specified by the argument to
-the first call) of each line in turn.
-Any numeric argument supplied to these successive calls determines
-the direction to move through the history.  A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the <SAMP>`!$'</SAMP> history expansion had been specified.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Text"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.3 Commands For Changing Text </H3>
-<!--docid::SEC16::-->
-<P>
-
-<DL COMPACT>
-
-<A NAME="IDX91"></A>
-<DT><CODE><I>end-of-file</I> (usually C-d)</CODE>
-<DD><A NAME="IDX92"></A>
-The character indicating end-of-file as set, for example, by
-<CODE>stty</CODE>.  If this character is read when there are no characters
-on the line, and point is at the beginning of the line, Readline
-interprets it as the end of input and returns EOF.
-<P>
-
-<A NAME="IDX93"></A>
-<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX94"></A>
-Delete the character at point.  If this function is bound to the
-same character as the tty EOF character, as <KBD>C-d</KBD>
-commonly is, see above for the effects.
-<P>
-
-<A NAME="IDX95"></A>
-<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX96"></A>
-Delete the character behind the cursor.  A numeric argument means
-to kill the characters instead of deleting them.
-<P>
-
-<A NAME="IDX97"></A>
-<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX98"></A>
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted.  By default, this is not bound to a key.
-<P>
-
-<A NAME="IDX99"></A>
-<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX100"></A>
-Add the next character typed to the line verbatim.  This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
-<P>
-
-<A NAME="IDX101"></A>
-<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX102"></A>
-Insert a tab character.
-<P>
-
-<A NAME="IDX103"></A>
-<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX104"></A>
-Insert yourself.
-<P>
-
-<A NAME="IDX105"></A>
-<DT><CODE>bracketed-paste-begin ()</CODE>
-<DD><A NAME="IDX106"></A>
-This function is intended to be bound to the "bracketed paste" escape
-sequence sent by some terminals, and such a binding is assigned by default.
-It allows Readline to insert the pasted text as a single unit without treating
-each character as if it had been read from the keyboard.  The characters
-are inserted as if each one was bound to <CODE>self-insert</CODE>) instead of
-executing any editing commands.
-<P>
-
-<A NAME="IDX107"></A>
-<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX108"></A>
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well.  If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-<P>
-
-<A NAME="IDX109"></A>
-<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX110"></A>
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-<P>
-
-<A NAME="IDX111"></A>
-<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX112"></A>
-Uppercase the current (or following) word.  With a negative argument,
-uppercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX113"></A>
-<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX114"></A>
-Lowercase the current (or following) word.  With a negative argument,
-lowercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX115"></A>
-<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX116"></A>
-Capitalize the current (or following) word.  With a negative argument,
-capitalize the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX117"></A>
-<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX118"></A>
-Toggle overwrite mode.  With an explicit positive numeric argument,
-switches to overwrite mode.  With an explicit non-positive numeric
-argument, switches to insert mode.  This command affects only
-<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
-Each call to <CODE>readline()</CODE> starts in insert mode.
-<P>
-
-In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
-the text at point rather than pushing the text to the right.
-Characters bound to <CODE>backward-delete-char</CODE> replace the character
-before point with a space.
-</P><P>
-
-By default, this command is unbound.
-</P><P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Killing"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.4 Killing And Yanking </H3>
-<!--docid::SEC17::-->
-<P>
-
-<DL COMPACT>
-
-<A NAME="IDX119"></A>
-<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX120"></A>
-Kill the text from point to the end of the line.
-<P>
-
-<A NAME="IDX121"></A>
-<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX122"></A>
-Kill backward from the cursor to the beginning of the current line.
-<P>
-
-<A NAME="IDX123"></A>
-<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX124"></A>
-Kill backward from the cursor to the beginning of the current line.
-<P>
-
-<A NAME="IDX125"></A>
-<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX126"></A>
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-<P>
-
-<A NAME="IDX127"></A>
-<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX128"></A>
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as <CODE>forward-word</CODE>.
-<P>
-
-<A NAME="IDX129"></A>
-<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX130"></A>
-Kill the word behind point.
-Word boundaries are the same as <CODE>backward-word</CODE>.
-<P>
-
-<A NAME="IDX131"></A>
-<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX132"></A>
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-<P>
-
-<A NAME="IDX133"></A>
-<DT><CODE>unix-filename-rubout ()</CODE>
-<DD><A NAME="IDX134"></A>
-Kill the word behind point, using white space and the slash character
-as the word boundaries.
-The killed text is saved on the kill-ring.
-<P>
-
-<A NAME="IDX135"></A>
-<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX136"></A>
-Delete all spaces and tabs around point.  By default, this is unbound.
-<P>
-
-<A NAME="IDX137"></A>
-<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX138"></A>
-Kill the text in the current region.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX139"></A>
-<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX140"></A>
-Copy the text in the region to the kill buffer, so it can be yanked
-right away.  By default, this command is unbound.
-<P>
-
-<A NAME="IDX141"></A>
-<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX142"></A>
-Copy the word before point to the kill buffer.
-The word boundaries are the same as <CODE>backward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX143"></A>
-<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX144"></A>
-Copy the word following point to the kill buffer.
-The word boundaries are the same as <CODE>forward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX145"></A>
-<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX146"></A>
-Yank the top of the kill ring into the buffer at point.
-<P>
-
-<A NAME="IDX147"></A>
-<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX148"></A>
-Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
-</DL>
-<P>
-
-<A NAME="Numeric Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.5 Specifying Numeric Arguments </H3>
-<!--docid::SEC18::-->
-<DL COMPACT>
-
-<A NAME="IDX149"></A>
-<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX150"></A>
-Add this digit to the argument already accumulating, or start a new
-argument.  <KBD>M--</KBD> starts a negative argument.
-<P>
-
-<A NAME="IDX151"></A>
-<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX152"></A>
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing <CODE>universal-argument</CODE>
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit nor minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-</DL>
-<P>
-
-<A NAME="Commands For Completion"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.6 Letting Readline Type For You </H3>
-<!--docid::SEC19::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX153"></A>
-<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX154"></A>
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-The default is filename completion.
-<P>
-
-<A NAME="IDX155"></A>
-<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX156"></A>
-List the possible completions of the text before point.
-When displaying completions, Readline sets the number of columns used
-for display to the value of <CODE>completion-display-width</CODE>, the value of
-the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
-<P>
-
-<A NAME="IDX157"></A>
-<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX158"></A>
-Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
-<P>
-
-<A NAME="IDX159"></A>
-<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX160"></A>
-Similar to <CODE>complete</CODE>, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of <CODE>menu-complete</CODE> steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of <CODE>bell-style</CODE>)
-and the original text is restored.
-An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
-by default.
-<P>
-
-<A NAME="IDX161"></A>
-<DT><CODE>menu-complete-backward ()</CODE>
-<DD><A NAME="IDX162"></A>
-Identical to <CODE>menu-complete</CODE>, but moves backward through the list
-of possible completions, as if <CODE>menu-complete</CODE> had been given a
-negative argument.
-<P>
-
-<A NAME="IDX163"></A>
-<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX164"></A>
-Deletes the character under the cursor if not at the beginning or
-end of the line (like <CODE>delete-char</CODE>).
-If at the end of the line, behaves identically to
-<CODE>possible-completions</CODE>.
-This command is unbound by default.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Keyboard Macros"></A>
-<HR SIZE="6">
-<A NAME="SEC20"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.7 Keyboard Macros </H3>
-<!--docid::SEC20::-->
-<DL COMPACT>
-
-<A NAME="IDX165"></A>
-<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX166"></A>
-Begin saving the characters typed into the current keyboard macro.
-<P>
-
-<A NAME="IDX167"></A>
-<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX168"></A>
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-<P>
-
-<A NAME="IDX169"></A>
-<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX170"></A>
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-<P>
-
-<A NAME="IDX171"></A>
-<DT><CODE>print-last-kbd-macro ()</CODE>
-<DD><A NAME="IDX172"></A>
-Print the last keboard macro defined in a format suitable for the
-<VAR>inputrc</VAR> file.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Miscellaneous Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC21"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.8 Some Miscellaneous Commands </H3>
-<!--docid::SEC21::-->
-<DL COMPACT>
-
-<A NAME="IDX173"></A>
-<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX174"></A>
-Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
-any bindings or variable assignments found there.
-<P>
-
-<A NAME="IDX175"></A>
-<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX176"></A>
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-<CODE>bell-style</CODE>).
-<P>
-
-<A NAME="IDX177"></A>
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX178"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
-<P>
-
-<A NAME="IDX179"></A>
-<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX180"></A>
-Metafy the next character typed.  This is for keyboards
-without a meta key.  Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
-<KBD>M-f</KBD>.
-<P>
-
-<A NAME="IDX181"></A>
-<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX182"></A>
-Incremental undo, separately remembered for each line.
-<P>
-
-<A NAME="IDX183"></A>
-<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX184"></A>
-Undo all changes made to this line.  This is like executing the <CODE>undo</CODE>
-command enough times to get back to the beginning.
-<P>
-
-<A NAME="IDX185"></A>
-<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX186"></A>
-Perform tilde expansion on the current word.
-<P>
-
-<A NAME="IDX187"></A>
-<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX188"></A>
-Set the mark to the point.  If a
-numeric argument is supplied, the mark is set to that position.
-<P>
-
-<A NAME="IDX189"></A>
-<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX190"></A>
-Swap the point with the mark.  The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-<P>
-
-<A NAME="IDX191"></A>
-<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX192"></A>
-A character is read and point is moved to the next occurrence of that
-character.  A negative count searches for previous occurrences.
-<P>
-
-<A NAME="IDX193"></A>
-<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX194"></A>
-A character is read and point is moved to the previous occurrence
-of that character.  A negative count searches for subsequent
-occurrences.
-<P>
-
-<A NAME="IDX195"></A>
-<DT><CODE>skip-csi-sequence ()</CODE>
-<DD><A NAME="IDX196"></A>
-Read enough characters to consume a multi-key sequence such as those
-defined for keys like Home and End.  Such sequences begin with a
-Control Sequence Indicator (CSI), usually ESC-[.  If this sequence is
-bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
-stray characters into the editing buffer.  This is unbound by default,
-but usually bound to ESC-[.
-<P>
-
-<A NAME="IDX197"></A>
-<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX198"></A>
-Without a numeric argument, the value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle:  if
-the characters at the beginning of the line do not match the value
-of <CODE>comment-begin</CODE>, the value is inserted, otherwise
-the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-<P>
-
-<A NAME="IDX199"></A>
-<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX200"></A>
-Print all of the functions and their key bindings to the
-Readline output stream.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file.  This command is unbound by default.
-<P>
-
-<A NAME="IDX201"></A>
-<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX202"></A>
-Print all of the settable variables and their values to the
-Readline output stream.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file.  This command is unbound by default.
-<P>
-
-<A NAME="IDX203"></A>
-<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX204"></A>
-Print all of the Readline key sequences bound to macros and the
-strings they output.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file.  This command is unbound by default.
-<P>
-
-<A NAME="IDX205"></A>
-<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX206"></A>
-When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
-editing mode.
-<P>
-
-<A NAME="IDX207"></A>
-<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX208"></A>
-When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
-editing mode.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Readline vi Mode"></A>
-<HR SIZE="6">
-<A NAME="SEC22"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.5 Readline vi Mode </H2>
-<!--docid::SEC22::-->
-<P>
-
-While the Readline library does not have a full set of <CODE>vi</CODE>
-editing functions, it does contain enough to allow simple editing
-of the line.  The Readline <CODE>vi</CODE> mode behaves as specified in
-the POSIX standard.
-</P><P>
-
-In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
-editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode
-when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode).
-The Readline default is <CODE>emacs</CODE> mode.
-</P><P>
-
-When you enter a line in <CODE>vi</CODE> mode, you are already placed in
-`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>.  Pressing <KBD>ESC</KBD>
-switches you into `command' mode, where you can edit the text of the
-line with the standard <CODE>vi</CODE> movement keys, move to previous
-history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
-so forth.
-</P><P>
-
-This document describes the GNU Readline Library, a utility for aiding
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-</P><P>
-
-Copyright (C) 1988--2014 Free Software Foundation, Inc.
-</P><P>
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-</P><P>
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-</P><P>
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-</P><P>
-
-<A NAME="Programming with GNU Readline"></A>
-<HR SIZE="6">
-<A NAME="SEC23"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> 2. Programming with GNU Readline </H1>
-<!--docid::SEC23::-->
-<P>
-
-This chapter describes the interface between the GNU Readline Library and
-other programs.  If you are a programmer, and you wish to include the
-features found in GNU Readline
-such as completion, line editing, and interactive history manipulation
-in your own programs, this section is for you.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using the default behavior of Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC25">2.2 Custom Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Adding your own functions to Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables accessible to custom
-                                       functions.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions which Readline supplies to
-                                       aid in writing your own custom
-                                       functions.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How Readline behaves when it receives signals.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC45">2.6 Custom Completers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Supplanting or supplementing Readline's
-                       completion functions.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Basic Behavior"></A>
-<HR SIZE="6">
-<A NAME="SEC24"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.1 Basic Behavior </H2>
-<!--docid::SEC24::-->
-<P>
-
-Many programs provide a command line interface, such as <CODE>mail</CODE>,
-<CODE>ftp</CODE>, and <CODE>sh</CODE>.  For such programs, the default behaviour of
-Readline is sufficient.  This section describes how to use Readline in
-the simplest way possible, perhaps to replace calls in your code to
-<CODE>gets()</CODE> or <CODE>fgets()</CODE>.
-</P><P>
-
-<A NAME="IDX209"></A>
-<A NAME="IDX210"></A>
-</P><P>
-
-The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR>
-and then reads and returns a single line of text from the user.
-If <VAR>prompt</VAR> is <CODE>NULL</CODE> or the empty string, no prompt is displayed.
-The line <CODE>readline</CODE> returns is allocated with <CODE>malloc()</CODE>;
-the caller should <CODE>free()</CODE> the line when it has finished with it.
-The declaration for <CODE>readline</CODE> in ANSI C is
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE>
-</pre></td></tr></table></P><P>
-
-So, one might say
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *line = readline ("Enter a line: ");</CODE>
-</pre></td></tr></table>in order to read a line of text from the user.
-The line returned has the final newline removed, so only the
-text remains.
-</P><P>
-
-If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line, and the
-line is empty at that point, then <CODE>(char *)NULL</CODE> is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-</P><P>
-
-If you want the user to be able to get at the line later, (with
-<KBD>C-p</KBD> for example), you must call <CODE>add_history()</CODE> to save the
-line away in a <EM>history</EM> list of such lines.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>add_history (line)</CODE>;
-</pre></td></tr></table></P><P>
-
-For full details on the GNU History Library, see the associated manual.
-</P><P>
-
-It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line.  Here is
-a function which usefully replaces the standard <CODE>gets()</CODE> library
-function, and has the advantage of no static buffer to overflow:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* A static variable for holding the line. */
-static char *line_read = (char *)NULL;
-
-/* Read a string, and return a pointer to it.
-   Returns NULL on EOF. */
-char *
-rl_gets ()
-{
-  /* If the buffer has already been allocated,
-     return the memory to the free pool. */
-  if (line_read)
-    {
-      free (line_read);
-      line_read = (char *)NULL;
-    }
-
-  /* Get a line from the user. */
-  line_read = readline ("");
-
-  /* If the line has any text in it,
-     save it on the history. */
-  if (line_read &#38;&#38; *line_read)
-    add_history (line_read);
-
-  return (line_read);
-}
-</pre></td></tr></table></P><P>
-
-This function gives the user the default behaviour of <KBD>TAB</KBD>
-completion: completion on file names.  If you do not want Readline to
-complete on filenames, you can change the binding of the <KBD>TAB</KBD> key
-with <CODE>rl_bind_key()</CODE>.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int rl_bind_key (int <VAR>key</VAR>, rl_command_func_t *<VAR>function</VAR>);</CODE>
-</pre></td></tr></table></P><P>
-
-<CODE>rl_bind_key()</CODE> takes two arguments: <VAR>key</VAR> is the character that
-you want to bind, and <VAR>function</VAR> is the address of the function to
-call when <VAR>key</VAR> is pressed.  Binding <KBD>TAB</KBD> to <CODE>rl_insert()</CODE>
-makes <KBD>TAB</KBD> insert itself.
-<CODE>rl_bind_key()</CODE> returns non-zero if <VAR>key</VAR> is not a valid
-ASCII character code (between 0 and 255).
-</P><P>
-
-Thus, to disable the default <KBD>TAB</KBD> behavior, the following suffices:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>rl_bind_key ('\t', rl_insert);</CODE>
-</pre></td></tr></table></P><P>
-
-This code should be executed once at the start of your program; you
-might write a function called <CODE>initialize_readline()</CODE> which
-performs this and other desired initializations, such as installing
-custom completers (see section <A HREF="readline.html#SEC45">2.6 Custom Completers</A>).
-</P><P>
-
-<A NAME="Custom Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC25"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.2 Custom Functions </H2>
-<!--docid::SEC25::-->
-<P>
-
-Readline provides many functions for manipulating the text of
-the line, but it isn't possible to anticipate the needs of all
-programs.  This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
-customized functionality to Readline.
-</P><P>
-
-Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an
-application writer should include the file <CODE>&#60;readline/readline.h&#62;</CODE>
-in any file that uses Readline's features.  Since some of the definitions
-in <CODE>readline.h</CODE> use the <CODE>stdio</CODE> library, the file
-<CODE>&#60;stdio.h&#62;</CODE> should be included before <CODE>readline.h</CODE>.
-</P><P>
-
-<CODE>readline.h</CODE> defines a C preprocessor variable that should
-be treated as an integer, <CODE>RL_READLINE_VERSION</CODE>, which may
-be used to conditionally compile application code depending on
-the installed Readline version.  The value is a hexadecimal
-encoding of the major and minor version numbers of the library,
-of the form 0x<VAR>MMmm</VAR>.  <VAR>MM</VAR> is the two-digit major
-version number; <VAR>mm</VAR> is the two-digit minor version number. 
-For Readline 4.2, for example, the value of
-<CODE>RL_READLINE_VERSION</CODE> would be <CODE>0x0402</CODE>. 
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">C declarations to make code readable.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC27">2.2.2 Writing a New Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables and calling conventions.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Typedefs"></A>
-<HR SIZE="6">
-<A NAME="SEC26"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.2.1 Readline Typedefs </H3>
-<!--docid::SEC26::-->
-<P>
-
-For readability, we declare a number of new object types, all pointers
-to functions.
-</P><P>
-
-The reason for declaring these new types is to make it easier to write
-code describing pointers to C functions with appropriately prototyped
-arguments and return values.
-</P><P>
-
-For instance, say we want to declare a variable <VAR>func</VAR> as a pointer
-to a function which takes two <CODE>int</CODE> arguments and returns an
-<CODE>int</CODE> (this is the type of all of the Readline bindable functions).
-Instead of the classic C declaration
-</P><P>
-
-<CODE>int (*func)();</CODE>
-</P><P>
-
-or the ANSI-C style declaration
-</P><P>
-
-<CODE>int (*func)(int, int);</CODE>
-</P><P>
-
-we may write
-</P><P>
-
-<CODE>rl_command_func_t *func;</CODE>
-</P><P>
-
-The full list of function pointer types available is
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>typedef int rl_command_func_t (int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_compentry_func_t (const char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char **rl_completion_func_t (const char *, int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_quote_func_t (char *, int, char *);</CODE>
-<DD><P>
-
-<DT><CODE>typedef char *rl_dequote_func_t (char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_compignore_func_t (char **);</CODE>
-<DD><P>
-
-<DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_hook_func_t (void);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_getc_func_t (FILE *);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_linebuf_func_t (char *, int);</CODE>
-<DD><P>
-
-<DT><CODE>typedef int rl_intfunc_t (int);</CODE>
-<DD><DT><CODE>#define rl_ivoidfunc_t rl_hook_func_t</CODE>
-<DD><DT><CODE>typedef int rl_icpfunc_t (char *);</CODE>
-<DD><DT><CODE>typedef int rl_icppfunc_t (char **);</CODE>
-<DD><P>
-
-<DT><CODE>typedef void rl_voidfunc_t (void);</CODE>
-<DD><DT><CODE>typedef void rl_vintfunc_t (int);</CODE>
-<DD><DT><CODE>typedef void rl_vcpfunc_t (char *);</CODE>
-<DD><DT><CODE>typedef void rl_vcppfunc_t (char **);</CODE>
-<DD><P>
-
-</DL>
-<P>
-
-<A NAME="Function Writing"></A>
-<HR SIZE="6">
-<A NAME="SEC27"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.2.2 Writing a New Function </H3>
-<!--docid::SEC27::-->
-<P>
-
-In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-</P><P>
-
-The calling sequence for a command <CODE>foo</CODE> looks like
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int foo (int count, int key)</CODE>
-</pre></td></tr></table></P><P>
-
-where <VAR>count</VAR> is the numeric argument (or 1 if defaulted) and
-<VAR>key</VAR> is the key that invoked this function.
-</P><P>
-
-It is completely up to the function as to what should be done with the
-numeric argument.  Some functions use it as a repeat count, some
-as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example).  Some choose to
-ignore it.  In general, if a
-function uses the numeric argument as a repeat count, it should be able
-to do something useful with both negative and positive arguments.
-At the very least, it should be aware that it can be passed a
-negative argument.
-</P><P>
-
-A command function should return 0 if its action completes successfully,
-and a value greater than zero if some error occurs.
-This is the convention obeyed by all of the builtin Readline bindable
-command functions.
-</P><P>
-
-<A NAME="Readline Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC28"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.3 Readline Variables </H2>
-<!--docid::SEC28::-->
-<P>
-
-These variables are available to function writers.
-</P><P>
-
-<A NAME="IDX211"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_line_buffer</B>
-<DD>This is the line gathered so far.  You are welcome to modify the
-contents of the line, but see <A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>.  The
-function <CODE>rl_extend_line_buffer</CODE> is available to increase
-the memory allocated to <CODE>rl_line_buffer</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX212"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_point</B>
-<DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
-(the <EM>point</EM>).
-</DL>
-</P><P>
-
-<A NAME="IDX213"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_end</B>
-<DD>The number of characters present in <CODE>rl_line_buffer</CODE>.  When
-<CODE>rl_point</CODE> is at the end of the line, <CODE>rl_point</CODE> and
-<CODE>rl_end</CODE> are equal.
-</DL>
-</P><P>
-
-<A NAME="IDX214"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_mark</B>
-<DD>The <VAR>mark</VAR> (saved position) in the current line.  If set, the mark
-and point define a <EM>region</EM>.
-</DL>
-</P><P>
-
-<A NAME="IDX215"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_done</B>
-<DD>Setting this to a non-zero value causes Readline to return the current
-line immediately.
-</DL>
-</P><P>
-
-<A NAME="IDX216"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_num_chars_to_read</B>
-<DD>Setting this to a positive value before calling <CODE>readline()</CODE> causes
-Readline to return after accepting that many characters, rather
-than reading up to a character bound to <CODE>accept-line</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX217"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_pending_input</B>
-<DD>Setting this to a value makes it the next keystroke read.  This is a
-way to stuff a single character into the input stream.
-</DL>
-</P><P>
-
-<A NAME="IDX218"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_dispatching</B>
-<DD>Set to a non-zero value if a function is being called from a key binding;
-zero otherwise.  Application functions can test this to discover whether
-they were called directly or by Readline's dispatching mechanism.
-</DL>
-</P><P>
-
-<A NAME="IDX219"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_erase_empty_line</B>
-<DD>Setting this to a non-zero value causes Readline to completely erase
-the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line.  The cursor is moved to
-the beginning of the newly-blank line.
-</DL>
-</P><P>
-
-<A NAME="IDX220"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_prompt</B>
-<DD>The prompt Readline uses.  This is set from the argument to
-<CODE>readline()</CODE>, and should not be assigned to directly.
-The <CODE>rl_set_prompt()</CODE> function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) may
-be used to modify the prompt string after calling <CODE>readline()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX221"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_display_prompt</B>
-<DD>The string displayed as the prompt.  This is usually identical to
-<VAR>rl_prompt</VAR>, but may be changed temporarily by functions that
-use the prompt string as a message area, such as incremental search.
-</DL>
-</P><P>
-
-<A NAME="IDX222"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_already_prompted</B>
-<DD>If an application wishes to display the prompt itself, rather than have
-Readline do it the first time <CODE>readline()</CODE> is called, it should set
-this variable to a non-zero value after displaying the prompt.
-The prompt must also be passed as the argument to <CODE>readline()</CODE> so
-the redisplay functions can update the display properly.
-The calling application is responsible for managing the value; Readline
-never sets it.
-</DL>
-</P><P>
-
-<A NAME="IDX223"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_library_version</B>
-<DD>The version number of this revision of the library.
-</DL>
-</P><P>
-
-<A NAME="IDX224"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_readline_version</B>
-<DD>An integer encoding the current version of the library.  The encoding is
-of the form 0x<VAR>MMmm</VAR>, where <VAR>MM</VAR> is the two-digit major version
-number, and <VAR>mm</VAR> is the two-digit minor version number.
-For example, for Readline-4.2, <CODE>rl_readline_version</CODE> would have the
-value 0x0402.
-</DL>
-</P><P>
-
-<A NAME="IDX225"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_gnu_readline_p</B>
-<DD>Always set to 1, denoting that this is GNU readline rather than some
-emulation.
-</DL>
-</P><P>
-
-<A NAME="IDX226"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_terminal_name</B>
-<DD>The terminal type, used for initialization.  If not set by the application,
-Readline sets this to the value of the <CODE>TERM</CODE> environment variable
-the first time it is called.
-</DL>
-</P><P>
-
-<A NAME="IDX227"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_readline_name</B>
-<DD>This variable is set to a unique name by each application using Readline.
-The value allows conditional parsing of the inputrc file
-(see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX228"></A>
-<DL>
-<DT><U>Variable:</U> FILE * <B>rl_instream</B>
-<DD>The stdio stream from which Readline reads input.
-If <CODE>NULL</CODE>, Readline defaults to <VAR>stdin</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX229"></A>
-<DL>
-<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
-<DD>The stdio stream to which Readline performs output.
-If <CODE>NULL</CODE>, Readline defaults to <VAR>stdout</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX230"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_prefer_env_winsize</B>
-<DD>If non-zero, Readline gives values found in the <CODE>LINES</CODE> and
-<CODE>COLUMNS</CODE> environment variables greater precedence than values fetched
-from the kernel when computing the screen dimensions.
-</DL>
-</P><P>
-
-<A NAME="IDX231"></A>
-<DL>
-<DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B>
-<DD>The address of the last command function Readline executed.  May be used to
-test whether or not a function is being executed twice in succession, for
-example.
-</DL>
-</P><P>
-
-<A NAME="IDX232"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B>
-<DD>If non-zero, this is the address of a function to call just
-before <CODE>readline</CODE> prints the first prompt.
-</DL>
-</P><P>
-
-<A NAME="IDX233"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B>
-<DD>If non-zero, this is the address of a function to call after
-the first prompt has been printed and just before <CODE>readline</CODE>
-starts reading input characters.
-</DL>
-</P><P>
-
-<A NAME="IDX234"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B>
-<DD>If non-zero, this is the address of a function to call periodically
-when Readline is waiting for terminal input.
-By default, this will be called at most ten times a second if there
-is no keyboard input.
-</DL>
-</P><P>
-
-<A NAME="IDX235"></A>
-<DL>
-<DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream.  By default, it is set to
-<CODE>rl_getc</CODE>, the default Readline character input function
-(see section <A HREF="readline.html#SEC37">2.4.8 Character Input</A>).
-In general, an application that sets <VAR>rl_getc_function</VAR> should consider
-setting <VAR>rl_input_available_hook</VAR> as well.
-</DL>
-</P><P>
-
-<A NAME="IDX236"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_signal_event_hook</B>
-<DD>If non-zero, this is the address of a function to call if a read system
-call is interrupted when Readline is reading terminal input.
-</DL>
-</P><P>
-
-<A NAME="IDX237"></A>
-<DL>
-<DT><U>Variable:</U> rl_hook_func_t * <B>rl_input_available_hook</B>
-<DD>If non-zero, Readline will use this function's return value when it needs
-to determine whether or not there is available input on the current input
-source.
-The default hook checks <CODE>rl_instream</CODE>; if an application is using a
-different input source, it should set the hook appropriately.
-Readline queries for available input when implementing intra-key-sequence
-timeouts during input and incremental searches.
-This may use an application-specific timeout before returning a value;
-Readline uses the value passed to <CODE>rl_set_keyboard_input_timeout()</CODE>
-or the value of the user-settable <VAR>keyseq-timeout</VAR> variable.
-This is designed for use by applications using Readline's callback interface
-(see section <A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>), which may not use the traditional
-<CODE>read(2)</CODE> and file descriptor interface, or other applications using
-a different input mechanism.
-If an application uses an input mechanism or hook that can potentially exceed
-the value of <VAR>keyseq-timeout</VAR>, it should increase the timeout or set
-this hook appropriately even when not using the callback interface.
-In general, an application that sets <VAR>rl_getc_function</VAR> should consider
-setting <VAR>rl_input_available_hook</VAR> as well.
-</DL>
-</P><P>
-
-<A NAME="IDX238"></A>
-<DL>
-<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to update the display with the current contents of the editing buffer.
-By default, it is set to <CODE>rl_redisplay</CODE>, the default Readline
-redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX239"></A>
-<DL>
-<DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal.  The function takes a single argument, an
-<CODE>int</CODE> flag that says whether or not to use eight-bit characters.
-By default, this is set to <CODE>rl_prep_terminal</CODE>
-(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX240"></A>
-<DL>
-<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B>
-<DD>If non-zero, Readline will call indirectly through this pointer
-to reset the terminal.  This function should undo the effects of
-<CODE>rl_prep_term_function</CODE>.
-By default, this is set to <CODE>rl_deprep_terminal</CODE>
-(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX241"></A>
-<DL>
-<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
-<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
-currently executing readline function was found.
-</DL>
-</P><P>
-
-<A NAME="IDX242"></A>
-<DL>
-<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
-<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
-last key binding occurred.
-</DL>
-</P><P>
-
-<A NAME="IDX243"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_executing_macro</B>
-<DD>This variable is set to the text of any currently-executing macro.
-</DL>
-</P><P>
-
-<A NAME="IDX244"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_executing_key</B>
-<DD>The key that caused the dispatch to the currently-executing Readline function.
-</DL>
-</P><P>
-
-<A NAME="IDX245"></A>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_executing_keyseq</B>
-<DD>The full key sequence that caused the dispatch to the currently-executing
-Readline function.
-</DL>
-</P><P>
-
-<A NAME="IDX246"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_key_sequence_length</B>
-<DD>The number of characters in <VAR>rl_executing_keyseq</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX247"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_readline_state</B>
-<DD>A variable with bit values that encapsulate the current Readline state.
-A bit is set with the <CODE>RL_SETSTATE</CODE> macro, and unset with the
-<CODE>RL_UNSETSTATE</CODE> macro.  Use the <CODE>RL_ISSTATE</CODE> macro to test
-whether a particular state bit is set.  Current state bits include:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>RL_STATE_NONE</CODE>
-<DD>Readline has not yet been called, nor has it begun to initialize.
-<DT><CODE>RL_STATE_INITIALIZING</CODE>
-<DD>Readline is initializing its internal data structures.
-<DT><CODE>RL_STATE_INITIALIZED</CODE>
-<DD>Readline has completed its initialization.
-<DT><CODE>RL_STATE_TERMPREPPED</CODE>
-<DD>Readline has modified the terminal modes to do its own input and redisplay.
-<DT><CODE>RL_STATE_READCMD</CODE>
-<DD>Readline is reading a command from the keyboard.
-<DT><CODE>RL_STATE_METANEXT</CODE>
-<DD>Readline is reading more input after reading the meta-prefix character.
-<DT><CODE>RL_STATE_DISPATCHING</CODE>
-<DD>Readline is dispatching to a command.
-<DT><CODE>RL_STATE_MOREINPUT</CODE>
-<DD>Readline is reading more input while executing an editing command.
-<DT><CODE>RL_STATE_ISEARCH</CODE>
-<DD>Readline is performing an incremental history search.
-<DT><CODE>RL_STATE_NSEARCH</CODE>
-<DD>Readline is performing a non-incremental history search.
-<DT><CODE>RL_STATE_SEARCH</CODE>
-<DD>Readline is searching backward or forward through the history for a string.
-<DT><CODE>RL_STATE_NUMERICARG</CODE>
-<DD>Readline is reading a numeric argument.
-<DT><CODE>RL_STATE_MACROINPUT</CODE>
-<DD>Readline is currently getting its input from a previously-defined keyboard
-macro.
-<DT><CODE>RL_STATE_MACRODEF</CODE>
-<DD>Readline is currently reading characters defining a keyboard macro.
-<DT><CODE>RL_STATE_OVERWRITE</CODE>
-<DD>Readline is in overwrite mode.
-<DT><CODE>RL_STATE_COMPLETING</CODE>
-<DD>Readline is performing word completion.
-<DT><CODE>RL_STATE_SIGHANDLER</CODE>
-<DD>Readline is currently executing the readline signal handler.
-<DT><CODE>RL_STATE_UNDOING</CODE>
-<DD>Readline is performing an undo.
-<DT><CODE>RL_STATE_INPUTPENDING</CODE>
-<DD>Readline has input pending due to a call to <CODE>rl_execute_next()</CODE>.
-<DT><CODE>RL_STATE_TTYCSAVED</CODE>
-<DD>Readline has saved the values of the terminal's special characters.
-<DT><CODE>RL_STATE_CALLBACK</CODE>
-<DD>Readline is currently using the alternate (callback) interface
-(see section <A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>).
-<DT><CODE>RL_STATE_VIMOTION</CODE>
-<DD>Readline is reading the argument to a vi-mode "motion" command.
-<DT><CODE>RL_STATE_MULTIKEY</CODE>
-<DD>Readline is reading a multiple-keystroke command.
-<DT><CODE>RL_STATE_VICMDONCE</CODE>
-<DD>Readline has entered vi command (movement) mode at least one time during
-the current call to <CODE>readline()</CODE>.
-<DT><CODE>RL_STATE_DONE</CODE>
-<DD>Readline has read a key sequence bound to <CODE>accept-line</CODE>
-and is about to return the line to the caller.
-</DL>
-<P>
-
-</DL>
-</P><P>
-
-<A NAME="IDX248"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_explicit_arg</B>
-<DD>Set to a non-zero value if an explicit numeric argument was specified by
-the user.  Only valid in a bindable command function.
-</DL>
-</P><P>
-
-<A NAME="IDX249"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_numeric_arg</B>
-<DD>Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function.  Only valid in a bindable
-command function.
-</DL>
-</P><P>
-
-<A NAME="IDX250"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_editing_mode</B>
-<DD>Set to a value denoting Readline's current editing mode.  A value of
-<VAR>1</VAR> means Readline is currently in emacs mode; <VAR>0</VAR>
-means that vi mode is active.
-</DL>
-</P><P>
-
-<A NAME="Readline Convenience Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC29"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.4 Readline Convenience Functions </H2>
-<!--docid::SEC29::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to give a function you write a name.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Making keymaps.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Changing Keymaps.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Translate function names to
-                                               key sequences.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to make your functions undoable.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to control line display.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to modify <CODE>rl_line_buffer</CODE>.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to read keyboard input.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to manage terminal settings.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Generally useful functions and hooks.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that don't fall into any category.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using Readline in a `callback' fashion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC42">2.4.13 A Readline Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example Readline function.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC43">2.4.14 Alternate Interface Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example program using the alternate interface.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Function Naming"></A>
-<HR SIZE="6">
-<A NAME="SEC30"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.1 Naming a Function </H3>
-<!--docid::SEC30::-->
-<P>
-
-The user can dynamically change the bindings of keys while using
-Readline.  This is done by representing the function with a descriptive
-name.  The user is able to type the descriptive name when referring to
-the function.  Thus, in an init file, one might find
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Meta-Rubout:  backward-kill-word
-</pre></td></tr></table></P><P>
-
-This binds the keystroke <KBD>Meta-Rubout</KBD> to the function
-<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>.  You, as the
-programmer, should bind the functions you write to descriptive names as
-well.  Readline provides a function for doing that:
-</P><P>
-
-<A NAME="IDX251"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I>
-<DD>Add <VAR>name</VAR> to the list of named functions.  Make <VAR>function</VAR> be
-the function that gets called.  If <VAR>key</VAR> is not -1, then bind it to
-<VAR>function</VAR> using <CODE>rl_bind_key()</CODE>.
-</DL>
-</P><P>
-
-Using this function alone is sufficient for most applications.
-It is the recommended way to add a few functions to the default
-functions that Readline has built in.
-If you need to do something other than adding a function to Readline,
-you may need to use the underlying functions described below.
-</P><P>
-
-<A NAME="Keymaps"></A>
-<HR SIZE="6">
-<A NAME="SEC31"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.2 Selecting a Keymap </H3>
-<!--docid::SEC31::-->
-<P>
-
-Key bindings take place on a <EM>keymap</EM>.  The keymap is the
-association between the keys that the user types and the functions that
-get run.  You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-</P><P>
-
-<A NAME="IDX252"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I>
-<DD>Returns a new, empty keymap.  The space for the keymap is allocated with
-<CODE>malloc()</CODE>; the caller should free it by calling
-<CODE>rl_free_keymap()</CODE> when done.
-</DL>
-</P><P>
-
-<A NAME="IDX253"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
-<DD>Return a new keymap which is a copy of <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX254"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I>
-<DD>Return a new keymap with the printing characters bound to rl_insert,
-the lowercase Meta characters bound to run their equivalents, and
-the Meta digits bound to produce numeric arguments.
-</DL>
-</P><P>
-
-<A NAME="IDX255"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
-<DD>Free the storage associated with the data in <VAR>keymap</VAR>.
-The caller should free <VAR>keymap</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX256"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_free_keymap</B> <I>(Keymap keymap)</I>
-<DD>Free all storage associated with <VAR>keymap</VAR>.  This calls
-<CODE>rl_discard_keymap</CODE> to free subordindate keymaps and macros.
-</DL>
-</P><P>
-
-Readline has several internal keymaps.  These functions allow you to
-change which keymap is active.
-</P><P>
-
-<A NAME="IDX257"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I>
-<DD>Returns the currently active keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX258"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
-<DD>Makes <VAR>keymap</VAR> the currently active keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX259"></A>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I>
-<DD>Return the keymap matching <VAR>name</VAR>.  <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX260"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
-<DD>Return the name matching <VAR>keymap</VAR>.  <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="Binding Keys"></A>
-<HR SIZE="6">
-<A NAME="SEC32"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.3 Binding Keys </H3>
-<!--docid::SEC32::-->
-<P>
-
-Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: <CODE>emacs_standard_keymap</CODE>,
-<CODE>emacs_meta_keymap</CODE>, <CODE>emacs_ctlx_keymap</CODE>,
-<CODE>vi_movement_keymap</CODE>, and <CODE>vi_insertion_keymap</CODE>.
-<CODE>emacs_standard_keymap</CODE> is the default, and the examples in
-this manual assume that.
-</P><P>
-
-Since <CODE>readline()</CODE> installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to <CODE>readline()</CODE> will be overridden.
-An alternate mechanism is to install custom key bindings in an
-initialization function assigned to the <CODE>rl_startup_hook</CODE> variable
-(see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>).
-</P><P>
-
-These functions manage key bindings.
-</P><P>
-
-<A NAME="IDX261"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I>
-<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap.
-Returns non-zero in the case of an invalid <VAR>key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX262"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
-<DD>Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>.
-Returns non-zero in the case of an invalid <VAR>key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX263"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key_if_unbound</B> <I>(int key, rl_command_func_t *function)</I>
-<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in the
-currently active keymap.
-Returns non-zero in the case of an invalid <VAR>key</VAR> or if <VAR>key</VAR> is
-already bound.
-</DL>
-</P><P>
-
-<A NAME="IDX264"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key_if_unbound_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
-<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
-Returns non-zero in the case of an invalid <VAR>key</VAR> or if <VAR>key</VAR> is
-already bound.
-</DL>
-</P><P>
-
-<A NAME="IDX265"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
-<DD>Bind <VAR>key</VAR> to the null function in the currently active keymap.
-Returns non-zero in case of error.
-</DL>
-</P><P>
-
-<A NAME="IDX266"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
-<DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
-Returns non-zero in case of error.
-</DL>
-</P><P>
-
-<A NAME="IDX267"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
-<DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX268"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I>
-<DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX269"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_keyseq</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
-<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
-<VAR>function</VAR>, beginning in the current keymap.
-This makes new keymaps as necessary.
-The return value is non-zero if <VAR>keyseq</VAR> is invalid.
-</DL>
-</P><P>
-
-<A NAME="IDX270"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_keyseq_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
-<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
-<VAR>function</VAR>.  This makes new keymaps as necessary.
-Initial bindings are performed in <VAR>map</VAR>.
-The return value is non-zero if <VAR>keyseq</VAR> is invalid.
-</DL>
-</P><P>
-
-<A NAME="IDX271"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
-<DD>Equivalent to <CODE>rl_bind_keyseq_in_map</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX272"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
-<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in the
-currently active keymap.
-Returns non-zero in the case of an invalid <VAR>keyseq</VAR> or if <VAR>keyseq</VAR> is
-already bound.
-</DL>
-</P><P>
-
-<A NAME="IDX273"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
-<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
-Returns non-zero in the case of an invalid <VAR>keyseq</VAR> or if <VAR>keyseq</VAR> is
-already bound.
-</DL>
-</P><P>
-
-<A NAME="IDX274"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I>
-<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary
-pointer <VAR>data</VAR>.  <VAR>type</VAR> says what kind of data is pointed to by
-<VAR>data</VAR>; this can be a function (<CODE>ISFUNC</CODE>), a macro
-(<CODE>ISMACR</CODE>), or a keymap (<CODE>ISKMAP</CODE>).  This makes new keymaps as
-necessary.  The initial keymap in which to do bindings is <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX275"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
-<DD>Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and
-perform any key bindings and variable assignments found
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX276"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I>
-<DD>Read keybindings and variable assignments from <VAR>filename</VAR>
-(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
-</DL>
-</P><P>
-
-<A NAME="Associating Function Names and Bindings"></A>
-<HR SIZE="6">
-<A NAME="SEC33"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.4 Associating Function Names and Bindings </H3>
-<!--docid::SEC33::-->
-<P>
-
-These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence.  You may also
-associate a new function name with an arbitrary function.
-</P><P>
-
-<A NAME="IDX277"></A>
-<DL>
-<DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I>
-<DD>Return the function with name <VAR>name</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX278"></A>
-<DL>
-<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq</B> <I>(const char *keyseq, Keymap map, int *type)</I>
-<DD>Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
-If <VAR>map</VAR> is <CODE>NULL</CODE>, the current keymap is used.  If <VAR>type</VAR> is
-not <CODE>NULL</CODE>, the type of the object is returned in the <CODE>int</CODE> variable
-it points to (one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>).
-</DL>
-</P><P>
-
-<A NAME="IDX279"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I>
-<DD>Return an array of strings representing the key sequences used to
-invoke <VAR>function</VAR> in the current keymap.
-</DL>
-</P><P>
-
-<A NAME="IDX280"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
-<DD>Return an array of strings representing the key sequences used to
-invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX281"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
-<DD>Print the readline function names and the key sequences currently
-bound to them to <CODE>rl_outstream</CODE>.  If <VAR>readable</VAR> is non-zero,
-the list is formatted in such a way that it can be made part of an
-<CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX282"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I>
-<DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX283"></A>
-<DL>
-<DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I>
-<DD>Return a NULL terminated array of known function names.  The array is
-sorted.  The array itself is allocated, but not the strings inside.  You
-should free the array, but not the pointers, using <CODE>free</CODE> or
-<CODE>rl_free</CODE> when you are done.
-</DL>
-</P><P>
-
-<A NAME="IDX284"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I>
-<DD>Add <VAR>name</VAR> to the list of bindable Readline command names, and make
-<VAR>function</VAR> the function to be called when <VAR>name</VAR> is invoked.
-</DL>
-</P><P>
-
-<A NAME="Allowing Undoing"></A>
-<HR SIZE="6">
-<A NAME="SEC34"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.5 Allowing Undoing </H3>
-<!--docid::SEC34::-->
-<P>
-
-Supporting the undo command is a painless thing, and makes your
-functions much more useful.  It is certainly easy to try
-something if you know you can undo it.
-</P><P>
-
-If your function simply inserts text once, or deletes text once, and
-uses <CODE>rl_insert_text()</CODE> or <CODE>rl_delete_text()</CODE> to do it, then
-undoing is already done for you automatically.
-</P><P>
-
-If you do multiple insertions or multiple deletions, or any combination
-of these operations, you should group them together into one operation.
-This is done with <CODE>rl_begin_undo_group()</CODE> and
-<CODE>rl_end_undo_group()</CODE>.
-</P><P>
-
-The types of events that can be undone are:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; 
-</FONT></pre></td></tr></table></P><P>
-
-Notice that <CODE>UNDO_DELETE</CODE> means to insert some text, and
-<CODE>UNDO_INSERT</CODE> means to delete some text.  That is, the undo code
-tells what to undo, not how to undo it.  <CODE>UNDO_BEGIN</CODE> and
-<CODE>UNDO_END</CODE> are tags added by <CODE>rl_begin_undo_group()</CODE> and
-<CODE>rl_end_undo_group()</CODE>.
-</P><P>
-
-<A NAME="IDX285"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I>
-<DD>Begins saving undo information in a group construct.  The undo
-information usually comes from calls to <CODE>rl_insert_text()</CODE> and
-<CODE>rl_delete_text()</CODE>, but could be the result of calls to
-<CODE>rl_add_undo()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX286"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I>
-<DD>Closes the current undo group started with <CODE>rl_begin_undo_group
-()</CODE>.  There should be one call to <CODE>rl_end_undo_group()</CODE>
-for each call to <CODE>rl_begin_undo_group()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX287"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
-<DD>Remember how to undo an event (according to <VAR>what</VAR>).  The affected
-text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX288"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I>
-<DD>Free the existing undo list.
-</DL>
-</P><P>
-
-<A NAME="IDX289"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I>
-<DD>Undo the first thing on the undo list.  Returns <CODE>0</CODE> if there was
-nothing to undo, non-zero if something was undone.
-</DL>
-</P><P>
-
-Finally, if you neither insert nor delete text, but directly modify the
-existing text (e.g., change its case), call <CODE>rl_modifying()</CODE>
-once, just before you modify the text.  You must supply the indices of
-the text range that you are going to modify.
-</P><P>
-
-<A NAME="IDX290"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
-<DD>Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a
-single undo unit.  It is assumed that you will subsequently modify
-that text.
-</DL>
-</P><P>
-
-<A NAME="Redisplay"></A>
-<HR SIZE="6">
-<A NAME="SEC35"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.6 Redisplay </H3>
-<!--docid::SEC35::-->
-<P>
-
-<A NAME="IDX291"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I>
-<DD>Change what's displayed on the screen to reflect the current contents
-of <CODE>rl_line_buffer</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX292"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I>
-<DD>Force the line to be updated and redisplayed, whether or not
-Readline thinks the screen display is correct.
-</DL>
-</P><P>
-
-<A NAME="IDX293"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I>
-<DD>Tell the update functions that we have moved onto a new (empty) line,
-usually after outputting a newline.
-</DL>
-</P><P>
-
-<A NAME="IDX294"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I>
-<DD>Tell the update functions that we have moved onto a new line, with
-<VAR>rl_prompt</VAR> already displayed.
-This could be used by applications that want to output the prompt string
-themselves, but still need Readline to know the prompt string length for
-redisplay.
-It should be used after setting <VAR>rl_already_prompted</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX295"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I>
-<DD>Reset the display state to a clean state and redisplay the current line
-starting on a new line.
-</DL>
-</P><P>
-
-<A NAME="IDX296"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I>
-<DD>Move the cursor to the start of the next screen line.
-</DL>
-</P><P>
-
-<A NAME="IDX297"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I>
-<DD>Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>.
-If Readline has not been set to display meta characters directly, this
-will convert meta characters to a meta-prefixed key sequence.
-This is intended for use by applications which wish to do their own
-redisplay.
-</DL>
-</P><P>
-
-<A NAME="IDX298"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, <small>...</small>)</I>
-<DD>The arguments are a format string as would be supplied to <CODE>printf</CODE>,
-possibly containing conversion specifications such as <SAMP>`%d'</SAMP>, and
-any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the <EM>echo area</EM>.  The echo area
-is also used to display numeric arguments and search strings.
-You should call <CODE>rl_save_prompt</CODE> to save the prompt information
-before calling this function.
-</DL>
-</P><P>
-
-<A NAME="IDX299"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
-<DD>Clear the message in the echo area.  If the prompt was saved with a call to
-<CODE>rl_save_prompt</CODE> before the last call to <CODE>rl_message</CODE>,
-call <CODE>rl_restore_prompt</CODE> before calling this function.
-</DL>
-</P><P>
-
-<A NAME="IDX300"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I>
-<DD>Save the local Readline prompt display state in preparation for
-displaying a new message in the message area with <CODE>rl_message()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX301"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I>
-<DD>Restore the local Readline prompt display state saved by the most
-recent call to <CODE>rl_save_prompt</CODE>.
-if <CODE>rl_save_prompt</CODE> was called to save the prompt before a call
-to <CODE>rl_message</CODE>, this function should be called before the
-corresponding call to <CODE>rl_clear_message</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX302"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I>
-<DD>Expand any special character sequences in <VAR>prompt</VAR> and set up the
-local Readline prompt redisplay variables.
-This function is called by <CODE>readline()</CODE>.  It may also be called to
-expand the primary prompt if the <CODE>rl_on_new_line_with_prompt()</CODE>
-function or <CODE>rl_already_prompted</CODE> variable is used.
-It returns the number of visible characters on the last line of the
-(possibly multi-line) prompt.
-Applications may indicate that the prompt contains characters that take
-up no physical screen space when displayed by bracketing a sequence of
-such characters with the special markers <CODE>RL_PROMPT_START_IGNORE</CODE>
-and <CODE>RL_PROMPT_END_IGNORE</CODE> (declared in <TT>`readline.h'</TT>).  This may
-be used to embed terminal-specific escape sequences in prompts.
-</DL>
-</P><P>
-
-<A NAME="IDX303"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I>
-<DD>Make Readline use <VAR>prompt</VAR> for subsequent redisplay.  This calls
-<CODE>rl_expand_prompt()</CODE> to expand the prompt and sets <CODE>rl_prompt</CODE>
-to the result.
-</DL>
-</P><P>
-
-<A NAME="Modifying Text"></A>
-<HR SIZE="6">
-<A NAME="SEC36"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.7 Modifying Text </H3>
-<!--docid::SEC36::-->
-<P>
-
-<A NAME="IDX304"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I>
-<DD>Insert <VAR>text</VAR> into the line at the current cursor position.
-Returns the number of characters inserted.
-</DL>
-</P><P>
-
-<A NAME="IDX305"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
-<DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
-Returns the number of characters deleted.
-</DL>
-</P><P>
-
-<A NAME="IDX306"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
-<DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
-the current line.
-</DL>
-</P><P>
-
-<A NAME="IDX307"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
-<DD>Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line
-to the kill ring, appending or prepending to the last kill if the
-last command was a kill command.  The text is deleted.
-If <VAR>start</VAR> is less than <VAR>end</VAR>,
-the text is appended, otherwise prepended.  If the last command was
-not a kill, a new kill ring slot is used.
-</DL>
-</P><P>
-
-<A NAME="IDX308"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I>
-<DD>Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked
-by a key bound to a macro.  Not especially useful; use
-<CODE>rl_insert_text()</CODE> instead.
-</DL>
-</P><P>
-
-<A NAME="Character Input"></A>
-<HR SIZE="6">
-<A NAME="SEC37"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.8 Character Input </H3>
-<!--docid::SEC37::-->
-<P>
-
-<A NAME="IDX309"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I>
-<DD>Return the next character available from Readline's current input stream.
-This handles input inserted into
-the input stream via <VAR>rl_pending_input</VAR> (see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>)
-and <CODE>rl_stuff_char()</CODE>, macros, and characters read from the keyboard.
-While waiting for input, this function will call any function assigned to
-the <CODE>rl_event_hook</CODE> variable.
-</DL>
-</P><P>
-
-<A NAME="IDX310"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I>
-<DD>Return the next character available from <VAR>stream</VAR>, which is assumed to
-be the keyboard.
-</DL>
-</P><P>
-
-<A NAME="IDX311"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
-<DD>Insert <VAR>c</VAR> into the Readline input stream.  It will be "read"
-before Readline attempts to read characters from the terminal with
-<CODE>rl_read_key()</CODE>.  Up to 512 characters may be pushed back.
-<CODE>rl_stuff_char</CODE> returns 1 if the character was successfully inserted;
-0 otherwise.
-</DL>
-</P><P>
-
-<A NAME="IDX312"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I>
-<DD>Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE>
-is called.  This sets <VAR>rl_pending_input</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX313"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I>
-<DD>Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any
-previous call to <CODE>rl_execute_next()</CODE>.  This works only if the
-pending input has not already been read with <CODE>rl_read_key()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX314"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I>
-<DD>While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will
-wait for <VAR>u</VAR> microseconds for input before calling any function
-assigned to <CODE>rl_event_hook</CODE>.  <VAR>u</VAR> must be greater than or equal
-to zero (a zero-length timeout is equivalent to a poll).
-The default waiting period is one-tenth of a second.
-Returns the old timeout value.
-</DL>
-</P><P>
-
-<A NAME="Terminal Management"></A>
-<HR SIZE="6">
-<A NAME="SEC38"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.9 Terminal Management </H3>
-<!--docid::SEC38::-->
-<P>
-
-<A NAME="IDX315"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I>
-<DD>Modify the terminal settings for Readline's use, so <CODE>readline()</CODE>
-can read a single character at a time from the keyboard.
-The <VAR>meta_flag</VAR> argument should be non-zero if Readline should
-read eight-bit input.
-</DL>
-</P><P>
-
-<A NAME="IDX316"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I>
-<DD>Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in
-the state in which it was before the most recent call to
-<CODE>rl_prep_terminal()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX317"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I>
-<DD>Read the operating system's terminal editing characters (as would be
-displayed by <CODE>stty</CODE>) to their Readline equivalents.
-The bindings are performed in <VAR>kmap</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX318"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_tty_unset_default_bindings</B> <I>(Keymap kmap)</I>
-<DD>Reset the bindings manipulated by <CODE>rl_tty_set_default_bindings</CODE> so
-that the terminal editing characters are bound to <CODE>rl_insert</CODE>.
-The bindings are performed in <VAR>kmap</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX319"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I>
-<DD>Reinitialize Readline's idea of the terminal settings using
-<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>).
-If <VAR>terminal_name</VAR> is <CODE>NULL</CODE>, the value of the <CODE>TERM</CODE>
-environment variable is used.
-</DL>
-</P><P>
-
-<A NAME="Utility Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC39"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.10 Utility Functions </H3>
-<!--docid::SEC39::-->
-<P>
-
-<A NAME="IDX320"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_save_state</B> <I>(struct readline_state *sp)</I>
-<DD>Save a snapshot of Readline's internal state to <VAR>sp</VAR>.
-The contents of the <VAR>readline_state</VAR> structure are documented
-in <TT>`readline.h'</TT>.
-The caller is responsible for allocating the structure.
-</DL>
-</P><P>
-
-<A NAME="IDX321"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_restore_state</B> <I>(struct readline_state *sp)</I>
-<DD>Restore Readline's internal state to that stored in <VAR>sp</VAR>, which must
-have been saved by a call to <CODE>rl_save_state</CODE>.
-The contents of the <VAR>readline_state</VAR> structure are documented
-in <TT>`readline.h'</TT>.
-The caller is responsible for freeing the structure.
-</DL>
-</P><P>
-
-<A NAME="IDX322"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_free</B> <I>(void *mem)</I>
-<DD>Deallocate the memory pointed to by <VAR>mem</VAR>.  <VAR>mem</VAR> must have been
-allocated by <CODE>malloc</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX323"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I>
-<DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>.
-The point and mark are preserved, if possible.
-If <VAR>clear_undo</VAR> is non-zero, the undo list associated with the
-current line is cleared.
-</DL>
-</P><P>
-
-<A NAME="IDX324"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_extend_line_buffer</B> <I>(int len)</I>
-<DD>Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
-characters, possibly reallocating it if necessary.
-</DL>
-</P><P>
-
-<A NAME="IDX325"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
-<DD>Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; <CODE>readline()</CODE> calls it before
-reading any input.
-</DL>
-</P><P>
-
-<A NAME="IDX326"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I>
-<DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX327"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is an alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX328"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I>
-<DD>A convenience function for displaying a list of strings in
-columnar format on Readline's output stream.  <CODE>matches</CODE> is the list
-of strings, in argv format, such as a list of completion matches.
-<CODE>len</CODE> is the number of strings in <CODE>matches</CODE>, and <CODE>max</CODE>
-is the length of the longest string in <CODE>matches</CODE>.  This function uses
-the setting of <CODE>print-completions-horizontally</CODE> to select how the
-matches are displayed (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
-When displaying completions, this function sets the number of columns used
-for display to the value of <CODE>completion-display-width</CODE>, the value of
-the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
-</DL>
-</P><P>
-
-The following are implemented as macros, defined in <CODE>chardefs.h</CODE>.
-Applications should refrain from using them.
-</P><P>
-
-<A NAME="IDX329"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX330"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
-</DL>
-</P><P>
-
-<A NAME="IDX331"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I>
-<DD>Return 1 if <VAR>c</VAR> is a numeric character.
-</DL>
-</P><P>
-
-<A NAME="IDX332"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
-uppercase character.
-</DL>
-</P><P>
-
-<A NAME="IDX333"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
-lowercase character.
-</DL>
-</P><P>
-
-<A NAME="IDX334"></A>
-<DL>
-<DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I>
-<DD>If <VAR>c</VAR> is a number, return the value it represents.
-</DL>
-</P><P>
-
-<A NAME="Miscellaneous Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC40"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.11 Miscellaneous Functions </H3>
-<!--docid::SEC40::-->
-<P>
-
-<A NAME="IDX335"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I>
-<DD>Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>.
-The binding is performed in <VAR>map</VAR>.  When <VAR>keyseq</VAR> is invoked, the
-<VAR>macro</VAR> will be inserted into the line.  This function is deprecated;
-use <CODE>rl_generic_bind()</CODE> instead.
-</DL>
-</P><P>
-
-<A NAME="IDX336"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I>
-<DD>Print the key sequences bound to macros and their values, using
-the current keymap, to <CODE>rl_outstream</CODE>.
-If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
-that it can be made part of an <CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX337"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I>
-<DD>Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>.
-This behaves as if the readline command
-<SAMP>`set <VAR>variable</VAR> <VAR>value</VAR>'</SAMP> had been executed in an <CODE>inputrc</CODE>
-file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
-</DL>
-</P><P>
-
-<A NAME="IDX338"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_variable_value</B> <I>(const char *variable)</I>
-<DD>Return a string representing the value of the Readline variable <VAR>variable</VAR>.
-For boolean variables, this string is either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX339"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I>
-<DD>Print the readline variable names and their current values
-to <CODE>rl_outstream</CODE>.
-If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
-that it can be made part of an <CODE>inputrc</CODE> file and re-read.
-</DL>
-</P><P>
-
-<A NAME="IDX340"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I>
-<DD>Set the time interval (in microseconds) that Readline waits when showing
-a balancing character when <CODE>blink-matching-paren</CODE> has been enabled.
-</DL>
-</P><P>
-
-<A NAME="IDX341"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_get_termcap</B> <I>(const char *cap)</I>
-<DD>Retrieve the string value of the termcap capability <VAR>cap</VAR>.
-Readline fetches the termcap entry for the current terminal name and
-uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line.  Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
-</DL>
-</P><P>
-
-<A NAME="IDX342"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_clear_history</B> <I>(void)</I>
-<DD>Clear the history list by deleting all of the entries, in the same manner
-as the History library's <CODE>clear_history()</CODE> function.
-This differs from <CODE>clear_history</CODE> because it frees private data
-Readline saves in the history list.
-</DL>
-</P><P>
-
-<A NAME="Alternate Interface"></A>
-<HR SIZE="6">
-<A NAME="SEC41"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.12 Alternate Interface </H3>
-<!--docid::SEC41::-->
-<P>
-
-An alternate interface is available to plain <CODE>readline()</CODE>.  Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to <CODE>select()</CODE>
-on various file descriptors.  To accommodate this need, readline can
-also be invoked as a `callback' function from an event loop.  There
-are functions available to make this easy.
-</P><P>
-
-<A NAME="IDX343"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I>
-<DD>Set up the terminal for readline I/O and display the initial
-expanded value of <VAR>prompt</VAR>.  Save the value of <VAR>lhandler</VAR> to
-use as a handler function to call when a complete line of input has been
-entered.
-The handler function receives the text of the line as an argument.
-As with <CODE>readline()</CODE>, the handler function should <CODE>free</CODE> the
-line when it it finished with it.
-</DL>
-</P><P>
-
-<A NAME="IDX344"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I>
-<DD>Whenever an application determines that keyboard input is available, it
-should call <CODE>rl_callback_read_char()</CODE>, which will read the next
-character from the current input source.
-If that character completes the line, <CODE>rl_callback_read_char</CODE> will
-invoke the <VAR>lhandler</VAR> function installed by
-<CODE>rl_callback_handler_install</CODE> to process the line.
-Before calling the <VAR>lhandler</VAR> function, the terminal settings are
-reset to the values they had before calling
-<CODE>rl_callback_handler_install</CODE>.
-If the <VAR>lhandler</VAR> function returns,
-and the line handler remains installed,
-the terminal settings are modified for Readline's use again.
-<CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a
-<CODE>NULL</CODE> line.
-</DL>
-</P><P>
-
-<A NAME="IDX345"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_sigcleanup</B> <I>(void)</I>
-<DD>Clean up any internal state the callback interface uses to maintain state
-between calls to rl_callback_read_char (e.g., the state of any active
-incremental searches).  This is intended to be used by applications that
-wish to perform their own signal handling; Readline's internal signal handler
-calls this when appropriate.
-</DL>
-</P><P>
-
-<A NAME="IDX346"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I>
-<DD>Restore the terminal to its initial state and remove the line handler.
-You may call this function from within a callback as well as independently.
-If the <VAR>lhandler</VAR> installed by <CODE>rl_callback_handler_install</CODE>
-does not exit the program, either this function or the function referred
-to by the value of <CODE>rl_deprep_term_function</CODE> should be called before
-the program exits to reset the terminal settings.
-</DL>
-</P><P>
-
-<A NAME="A Readline Example"></A>
-<HR SIZE="6">
-<A NAME="SEC42"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.13 A Readline Example </H3>
-<!--docid::SEC42::-->
-<P>
-
-Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase.  If
-this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would
-change the case of the character under point.  Typing <SAMP>`M-1 0 M-c'</SAMP>
-would change the case of the following 10 characters, leaving the cursor on
-the last character changed.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* Invert the case of the COUNT following characters. */
-int
-invert_case_line (count, key)
-     int count, key;
-{
-  register int start, end, i;
-
-  start = rl_point;
-
-  if (rl_point &#62;= rl_end)
-    return (0);
-
-  if (count &#60; 0)
-    {
-      direction = -1;
-      count = -count;
-    }
-  else
-    direction = 1;
-      
-  /* Find the end of the range to modify. */
-  end = start + (count * direction);
-
-  /* Force it to be within range. */
-  if (end &#62; rl_end)
-    end = rl_end;
-  else if (end &#60; 0)
-    end = 0;
-
-  if (start == end)
-    return (0);
-
-  if (start &#62; end)
-    {
-      int temp = start;
-      start = end;
-      end = temp;
-    }
-
-  /* Tell readline that we are modifying the line,
-     so it will save the undo information. */
-  rl_modifying (start, end);
-
-  for (i = start; i != end; i++)
-    {
-      if (_rl_uppercase_p (rl_line_buffer[i]))
-        rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
-      else if (_rl_lowercase_p (rl_line_buffer[i]))
-        rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
-    }
-  /* Move point to on top of the last character changed. */
-  rl_point = (direction == 1) ? end - 1 : start;
-  return (0);
-}
-</pre></td></tr></table></P><P>
-
-<A NAME="Alternate Interface Example"></A>
-<HR SIZE="6">
-<A NAME="SEC43"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.4.14 Alternate Interface Example </H3>
-<!--docid::SEC43::-->
-<P>
-
-Here is a complete program that illustrates Readline's alternate interface.
-It reads lines from the terminal and displays them, providing the
-standard history and TAB completion functions.
-It understands the EOF character or "exit" to exit the program.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* Standard include files. stdio.h is required. */
-#include &#60;stdlib.h&#62;
-#include &#60;unistd.h&#62;
-
-/* Used for select(2) */
-#include &#60;sys/types.h&#62;
-#include &#60;sys/select.h&#62;
-
-#include &#60;stdio.h&#62;
-
-/* Standard readline include files. */
-#include &#60;readline/readline.h&#62;
-#include &#60;readline/history.h&#62;
-
-static void cb_linehandler (char *);
-
-int running;
-const char *prompt = "rltest$ ";
-
-/* Callback function called for each line when accept-line executed, EOF
-   seen, or EOF character read.  This sets a flag and returns; it could
-   also call exit(3). */
-static void
-cb_linehandler (char *line)
-{
-  /* Can use ^D (stty eof) or `exit' to exit. */
-  if (line == NULL || strcmp (line, "exit") == 0)
-    {
-      if (line == 0)
-        printf ("\n");
-      printf ("exit\n");
-      /* This function needs to be called to reset the terminal settings,
-         and calling it from the line handler keeps one extra prompt from
-         being displayed. */
-      rl_callback_handler_remove ();
-
-      running = 0;
-    }
-  else
-    {
-      if (*line)
-        add_history (line);
-      printf ("input line: %s\n", line);
-      free (line);
-    }
-}
-
-int
-main (int c, char **v)
-{
-  fd_set fds;
-  int r;
-
-  /* Install the line handler. */
-  rl_callback_handler_install (prompt, cb_linehandler);
-
-  /* Enter a simple event loop.  This waits until something is available
-     to read on readline's input stream (defaults to standard input) and
-     calls the builtin character read callback to read it.  It does not
-     have to modify the user's terminal settings. */
-  running = 1;
-  while (running)
-    {
-      FD_ZERO (&#38;fds);
-      FD_SET (fileno (rl_instream), &#38;fds);    
-
-      r = select (FD_SETSIZE, &#38;fds, NULL, NULL, NULL);
-      if (r &#60; 0)
-        {
-          perror ("rltest: select");
-          rl_callback_handler_remove ();
-          break;
-        }
-
-      if (FD_ISSET (fileno (rl_instream), &#38;fds))
-        rl_callback_read_char ();
-    }
-
-  printf ("rltest: Event loop has exited\n");
-  return 0;
-}
-</pre></td></tr></table></P><P>
-
-<A NAME="Readline Signal Handling"></A>
-<HR SIZE="6">
-<A NAME="SEC44"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.5 Readline Signal Handling </H2>
-<!--docid::SEC44::-->
-<P>
-
-Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process.  They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his terminal,
-or a network connection being broken.  There is a class of signals that can
-be sent to the process currently reading input from the keyboard.  Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually. 
-</P><P>
-
-Readline contains an internal signal handler that is installed for a
-number of signals (<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>,
-<CODE>SIGHUP</CODE>, 
-<CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>).
-When one of these signals is received, the signal handler
-will reset the terminal attributes to those that were in effect before
-<CODE>readline()</CODE> was called, reset the signal handling to what it was
-before <CODE>readline()</CODE> was called, and resend the signal to the calling
-application.
-If and when the calling application's signal handler returns, Readline
-will reinitialize the terminal and continue to accept input.
-When a <CODE>SIGINT</CODE> is received, the Readline signal handler performs
-some additional work, which will cause any partially-entered line to be
-aborted (see the description of <CODE>rl_free_line_state()</CODE> below).
-</P><P>
-
-There is an additional Readline signal handler, for <CODE>SIGWINCH</CODE>, which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an <CODE>xterm</CODE>).  The Readline <CODE>SIGWINCH</CODE>
-handler updates Readline's internal screen size information, and then calls
-any <CODE>SIGWINCH</CODE> signal handler the calling application has installed. 
-Readline calls the application's <CODE>SIGWINCH</CODE> signal handler without
-resetting the terminal to its original state.  If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a <CODE>longjmp</CODE> back to a main processing loop), it <EM>must</EM>
-call <CODE>rl_cleanup_after_signal()</CODE> (described below), to restore the
-terminal state.
-</P><P>
-
-When an application is using the callback interface
-(see section <A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>), Readline installs signal handlers only for
-the duration of the call to <CODE>rl_callback_read_char</CODE>.  Applications
-using the callback interface should be prepared to clean up Readline's
-state if they wish to handle the signal before the line handler completes
-and restores the terminal state.
-</P><P>
-
-Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received.  It is important that applications change the
-values of these variables only when calling <CODE>readline()</CODE>, not in
-a signal handler, so Readline's internal signal state is not corrupted.
-</P><P>
-
-<A NAME="IDX347"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_catch_signals</B>
-<DD>If this variable is non-zero, Readline will install signal handlers for
-<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, <CODE>SIGHUP</CODE>, <CODE>SIGALRM</CODE>,
-<CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>.
-</P><P>
-
-The default value of <CODE>rl_catch_signals</CODE> is 1.
-</DL>
-</P><P>
-
-<A NAME="IDX348"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
-<DD>If this variable is set to a non-zero value,
-Readline will install a signal handler for <CODE>SIGWINCH</CODE>.
-</P><P>
-
-The default value of <CODE>rl_catch_sigwinch</CODE> is 1.
-</DL>
-</P><P>
-
-<A NAME="IDX349"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_change_environment</B>
-<DD>If this variable is set to a non-zero value,
-and Readline is handling <CODE>SIGWINCH</CODE>, Readline will modify the
-<VAR>LINES</VAR> and <VAR>COLUMNS</VAR> environment variables upon receipt of a
-<CODE>SIGWINCH</CODE>
-</P><P>
-
-The default value of <CODE>rl_change_environment</CODE> is 1.
-</DL>
-</P><P>
-
-If an application does not wish to have Readline catch any signals, or
-to handle signals other than those Readline catches (<CODE>SIGHUP</CODE>,
-for example), 
-Readline provides convenience functions to do the necessary terminal
-and internal state cleanup upon receipt of a signal.
-</P><P>
-
-<A NAME="IDX350"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I>
-<DD>This function will reset the state of the terminal to what it was before
-<CODE>readline()</CODE> was called, and remove the Readline signal handlers for
-all signals, depending on the values of <CODE>rl_catch_signals</CODE> and
-<CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX351"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I>
-<DD>This will free any partial state associated with the current input line
-(undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument).  This
-should be called before <CODE>rl_cleanup_after_signal()</CODE>.  The
-Readline signal handler for <CODE>SIGINT</CODE> calls this to abort the
-current input line.
-</DL>
-</P><P>
-
-<A NAME="IDX352"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I>
-<DD>This will reinitialize the terminal and reinstall any Readline signal
-handlers, depending on the values of <CODE>rl_catch_signals</CODE> and
-<CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-If an application does not wish Readline to catch <CODE>SIGWINCH</CODE>, it may
-call <CODE>rl_resize_terminal()</CODE> or <CODE>rl_set_screen_size()</CODE> to force
-Readline to update its idea of the terminal size when a <CODE>SIGWINCH</CODE>
-is received.
-</P><P>
-
-<A NAME="IDX353"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_echo_signal_char</B> <I>(int sig)</I>
-<DD>If an application wishes to install its own signal handlers, but still
-have readline display characters that generate signals, calling this
-function with <VAR>sig</VAR> set to <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, or
-<CODE>SIGTSTP</CODE> will display the character generating that signal.
-</DL>
-</P><P>
-
-<A NAME="IDX354"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I>
-<DD>Update Readline's internal screen size by reading values from the kernel.
-</DL>
-</P><P>
-
-<A NAME="IDX355"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I>
-<DD>Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and
-<VAR>cols</VAR> columns.  If either <VAR>rows</VAR> or <VAR>columns</VAR> is less than
-or equal to 0, Readline's idea of that terminal dimension is unchanged.
-</DL>
-</P><P>
-
-If an application does not want to install a <CODE>SIGWINCH</CODE> handler, but
-is still interested in the screen dimensions, Readline's idea of the screen
-size may be queried.
-</P><P>
-
-<A NAME="IDX356"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I>
-<DD>Return Readline's idea of the terminal's size in the
-variables pointed to by the arguments.
-</DL>
-</P><P>
-
-<A NAME="IDX357"></A>
-<DL>
-<DT><U>Function:</U> void <B>rl_reset_screen_size</B> <I>(void)</I>
-<DD>Cause Readline to reobtain the screen size and recalculate its dimensions.
-</DL>
-</P><P>
-
-The following functions install and remove Readline's signal handlers.
-</P><P>
-
-<A NAME="IDX358"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I>
-<DD>Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>,
-<CODE>SIGTERM</CODE>, <CODE>SIGHUP</CODE>, <CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>,
-<CODE>SIGTTOU</CODE>, and <CODE>SIGWINCH</CODE>, depending on the values of
-<CODE>rl_catch_signals</CODE> and <CODE>rl_catch_sigwinch</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX359"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I>
-<DD>Remove all of the Readline signal handlers installed by
-<CODE>rl_set_signals()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="Custom Completers"></A>
-<HR SIZE="6">
-<A NAME="SEC45"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 2.6 Custom Completers </H2>
-<!--docid::SEC45::-->
-<P>
-
-Typically, a program that reads commands from the user has a way of
-disambiguating commands and data.  If your program is one of these, then
-it can provide completion for commands, data, or both.
-The following sections describe how your program and Readline
-cooperate to provide this service.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The logic used to do completion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions provided by Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables which control completion.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC49">2.6.4 A Short Completion Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example of writing completer subroutines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="How Completing Works"></A>
-<HR SIZE="6">
-<A NAME="SEC46"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.1 How Completing Works </H3>
-<!--docid::SEC46::-->
-<P>
-
-In order to complete some text, the full list of possible completions
-must be available.  That is, it is not possible to accurately
-expand a partial word without knowing all of the possible words
-which make sense in that context.  The Readline library provides
-the user interface to completion, and two of the most common
-completion functions:  filename and username.  For completing other types
-of text, you must write your own completion function.  This section
-describes exactly what such functions must do, and provides an example.
-</P><P>
-
-There are three major functions used to perform completion:
-</P><P>
-
-<OL>
-<LI>
-The user-interface function <CODE>rl_complete()</CODE>.  This function is
-called with the same arguments as other bindable Readline functions:
-<VAR>count</VAR> and <VAR>invoking_key</VAR>.
-It isolates the word to be completed and calls
-<CODE>rl_completion_matches()</CODE> to generate a list of possible completions.
-It then either lists the possible completions, inserts the possible
-completions, or actually performs the
-completion, depending on which behavior is desired.
-<P>
-
-<LI>
-The internal function <CODE>rl_completion_matches()</CODE> uses an
-application-supplied <EM>generator</EM> function to generate the list of
-possible matches, and then returns the array of these matches.
-The caller should place the address of its generator function in
-<CODE>rl_completion_entry_function</CODE>.
-<P>
-
-<LI>
-The generator function is called repeatedly from
-<CODE>rl_completion_matches()</CODE>, returning a string each time.  The
-arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>.
-<VAR>text</VAR> is the partial word to be completed.  <VAR>state</VAR> is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call.  The generator function returns
-<CODE>(char *)NULL</CODE> to inform <CODE>rl_completion_matches()</CODE> that there are
-no more possibilities left.  Usually the generator function computes the
-list of possible completions when <VAR>state</VAR> is zero, and returns them
-one at a time on subsequent calls.  Each string the generator function
-returns as a match must be allocated with <CODE>malloc()</CODE>; Readline
-frees the strings when it has finished with them.
-Such a generator function is referred to as an
-<EM>application-specific completion function</EM>.
-<P>
-
-</OL>
-<P>
-
-<A NAME="IDX360"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD>Complete the word at or before point.  You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>rl_completion_matches()</CODE>).  The default is to do filename completion.
-</DL>
-</P><P>
-
-<A NAME="IDX361"></A>
-<DL>
-<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
-<DD>This is a pointer to the generator function for
-<CODE>rl_completion_matches()</CODE>.
-If the value of <CODE>rl_completion_entry_function</CODE> is
-<CODE>NULL</CODE> then the default filename generator
-function, <CODE>rl_filename_completion_function()</CODE>, is used.
-An <EM>application-specific completion function</EM> is a function whose
-address is assigned to <CODE>rl_completion_entry_function</CODE> and whose
-return values are used to  generate possible completions.
-</DL>
-</P><P>
-
-<A NAME="Completion Functions"></A>
-<HR SIZE="6">
-<A NAME="SEC47"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.2 Completion Functions </H3>
-<!--docid::SEC47::-->
-<P>
-
-Here is the complete list of callable completion functions present in
-Readline.
-</P><P>
-
-<A NAME="IDX362"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
-<DD>Complete the word at or before point.  <VAR>what_to_do</VAR> says what to do
-with the completion.  A value of <SAMP>`?'</SAMP> means list the possible
-completions.  <SAMP>`TAB'</SAMP> means do standard completion.  <SAMP>`*'</SAMP> means
-insert all of the possible completions.  <SAMP>`!'</SAMP> means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion.  <SAMP>`@'</SAMP> is similar to <SAMP>`!'</SAMP>, but
-possible completions are not listed if the possible completions share
-a common prefix.
-</DL>
-</P><P>
-
-<A NAME="IDX363"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD>Complete the word at or before point.  You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>rl_completion_matches()</CODE> and <CODE>rl_completion_entry_function</CODE>).
-The default is to do filename
-completion.  This calls <CODE>rl_complete_internal()</CODE> with an
-argument depending on <VAR>invoking_key</VAR>.
-</DL>
-</P><P>
-
-<A NAME="IDX364"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I>
-<DD>List the possible completions.  See description of <CODE>rl_complete
-()</CODE>.  This calls <CODE>rl_complete_internal()</CODE> with an argument of
-<SAMP>`?'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX365"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I>
-<DD>Insert the list of possible completions into the line, deleting the
-partially-completed word.  See description of <CODE>rl_complete()</CODE>.
-This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SAMP>.
-</DL>
-</P><P>
-
-<A NAME="IDX366"></A>
-<DL>
-<DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I>
-<DD>Returns the appropriate value to pass to <CODE>rl_complete_internal()</CODE>
-depending on whether <VAR>cfunc</VAR> was called twice in succession and
-the values of the <CODE>show-all-if-ambiguous</CODE> and
-<CODE>show-all-if-unmodified</CODE> variables.
-Application-specific completion functions may use this function to present
-the same interface as <CODE>rl_complete()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX367"></A>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I>
-<DD>Returns an array of strings which is a list of completions for
-<VAR>text</VAR>.  If there are no completions, returns <CODE>NULL</CODE>.
-The first entry in the returned array is the substitution for <VAR>text</VAR>.
-The remaining entries are the possible completions.  The array is
-terminated with a <CODE>NULL</CODE> pointer.
-</P><P>
-
-<VAR>entry_func</VAR> is a function of two args, and returns a
-<CODE>char *</CODE>.  The first argument is <VAR>text</VAR>.  The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls.  <VAR>entry_func</VAR> returns a <CODE>NULL</CODE>  pointer to the caller
-when there are no more matches.
-</DL>
-</P><P>
-
-<A NAME="IDX368"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I>
-<DD>A generator function for filename completion in the general case.
-<VAR>text</VAR> is a partial filename.
-The Bash source is a useful reference for writing application-specific
-completion functions (the Bash completion functions call this and other
-Readline functions).
-</DL>
-</P><P>
-
-<A NAME="IDX369"></A>
-<DL>
-<DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I>
-<DD>A completion generator for usernames.  <VAR>text</VAR> contains a partial
-username preceded by a random character (usually <SAMP>`~'</SAMP>).  As with all
-completion generators, <VAR>state</VAR> is zero on the first call and non-zero
-for subsequent calls.
-</DL>
-</P><P>
-
-<A NAME="Completion Variables"></A>
-<HR SIZE="6">
-<A NAME="SEC48"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.3 Completion Variables </H3>
-<!--docid::SEC48::-->
-<P>
-
-<A NAME="IDX370"></A>
-<DL>
-<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
-<DD>A pointer to the generator function for <CODE>rl_completion_matches()</CODE>.
-<CODE>NULL</CODE> means to use <CODE>rl_filename_completion_function()</CODE>,
-the default filename completer.
-</DL>
-</P><P>
-
-<A NAME="IDX371"></A>
-<DL>
-<DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B>
-<DD>A pointer to an alternative function to create matches.
-The function is called with <VAR>text</VAR>, <VAR>start</VAR>, and <VAR>end</VAR>.
-<VAR>start</VAR> and <VAR>end</VAR> are indices in <CODE>rl_line_buffer</CODE> defining
-the boundaries of <VAR>text</VAR>, which is a character string.
-If this function exists and returns <CODE>NULL</CODE>, or if this variable is
-set to <CODE>NULL</CODE>, then <CODE>rl_complete()</CODE> will call the value of
-<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise the
-array of strings returned will be used.
-If this function sets the <CODE>rl_attempted_completion_over</CODE>
-variable to a non-zero value, Readline will not perform its default
-completion even if this function returns no matches.
-</DL>
-</P><P>
-
-<A NAME="IDX372"></A>
-<DL>
-<DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B>
-<DD>A pointer to a function that will quote a filename in an
-application-specific fashion.  This is called if filename completion is being
-attempted and one of the characters in <CODE>rl_filename_quote_characters</CODE>
-appears in a completed filename.  The function is called with
-<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>.  The <VAR>text</VAR>
-is the filename to be quoted.  The <VAR>match_type</VAR> is either
-<CODE>SINGLE_MATCH</CODE>, if there is only one completion match, or
-<CODE>MULT_MATCH</CODE>.  Some functions use this to decide whether or not to
-insert a closing quote character.  The <VAR>quote_pointer</VAR> is a pointer
-to any opening quote character the user typed.  Some functions choose
-to reset this character.
-</DL>
-</P><P>
-
-<A NAME="IDX373"></A>
-<DL>
-<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B>
-<DD>A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem.  It is called with <VAR>text</VAR>, the text of the word
-to be dequoted, and <VAR>quote_char</VAR>, which is the quoting character 
-that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>).  If
-<VAR>quote_char</VAR> is zero, the filename was not in an embedded string.
-</DL>
-</P><P>
-
-<A NAME="IDX374"></A>
-<DL>
-<DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B>
-<DD>A pointer to a function to call that determines whether or not a specific
-character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses.  The function is called with
-two arguments: <VAR>text</VAR>, the text of the line, and <VAR>index</VAR>, the
-index of the character in the line.  It is used to decide whether a
-character found in <CODE>rl_completer_word_break_characters</CODE> should be
-used to break words for the completer.
-</DL>
-</P><P>
-
-<A NAME="IDX375"></A>
-<DL>
-<DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B>
-<DD>This function, if defined, is called by the completer when real filename
-completion is done, after all the matching names have been generated.
-It is passed a <CODE>NULL</CODE> terminated array of matches.
-The first element (<CODE>matches[0]</CODE>) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
-</DL>
-</P><P>
-
-<A NAME="IDX376"></A>
-<DL>
-<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B>
-<DD>This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes.
-It could be used to expand symbolic links or shell variables in pathnames.
-It is called with the address of a string (the current directory name) as an
-argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
-Any modified directory name should have a trailing slash.
-The modified value will be used as part of the completion, replacing
-the directory portion of the pathname the user typed.
-At the least, even if no other expansion is performed, this function should
-remove any quote characters from the directory name, because its result will
-be passed directly to <CODE>opendir()</CODE>.
-</P><P>
-
-The directory completion hook returns an integer that should be non-zero if
-the function modifies its directory argument.
-The function should not modify the directory argument if it returns 0.
-</DL>
-</P><P>
-
-<A NAME="IDX377"></A>
-<DL>
-<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_rewrite_hook;</B>
-<DD>If non-zero, this is the address of a function to call when completing
-a directory name.  This function takes the address of the directory name
-to be modified as an argument.  Unlike <CODE>rl_directory_completion_hook</CODE>,
-it only modifies the directory name used in <CODE>opendir</CODE>, not what is
-displayed when the possible completions are printed or inserted.  It is
-called before rl_directory_completion_hook.
-At the least, even if no other expansion is performed, this function should
-remove any quote characters from the directory name, because its result will
-be passed directly to <CODE>opendir()</CODE>.
-</P><P>
-
-The directory rewrite hook returns an integer that should be non-zero if
-the function modfies its directory argument.
-The function should not modify the directory argument if it returns 0.
-</DL>
-</P><P>
-
-<A NAME="IDX378"></A>
-<DL>
-<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_filename_stat_hook</B>
-<DD>If non-zero, this is the address of a function for the completer to
-call before deciding which character to append to a completed name.
-This function modifies its filename name argument, and the modified value
-is passed to <CODE>stat()</CODE> to determine the file's type and characteristics.
-This function does not need to remove quote characters from the filename.
-</P><P>
-
-The stat hook returns an integer that should be non-zero if
-the function modfies its directory argument.
-The function should not modify the directory argument if it returns 0.
-</DL>
-</P><P>
-
-<A NAME="IDX379"></A>
-<DL>
-<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_rewrite_hook</B>
-<DD>If non-zero, this is the address of a function called when reading
-directory entries from the filesystem for completion and comparing
-them to the partial word to be completed.  The function should
-perform any necessary application or system-specific conversion on
-the filename, such as converting between character sets or converting
-from a filesystem format to a character input format.
-The function takes two arguments: <VAR>fname</VAR>, the filename to be converted,
-and <VAR>fnlen</VAR>, its length in bytes.
-It must either return its first argument (if no conversion takes place)
-or the converted filename in newly-allocated memory.  The converted
-form is used to compare against the word to be completed, and, if it
-matches, is added to the list of matches.  Readline will free the
-allocated string.
-</DL>
-</P><P>
-
-<A NAME="IDX380"></A>
-<DL>
-<DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B>
-<DD>If non-zero, then this is the address of a function to call when
-completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
-It takes three arguments:
-(<CODE>char **</CODE><VAR>matches</VAR>, <CODE>int</CODE> <VAR>num_matches</VAR>, <CODE>int</CODE> <VAR>max_length</VAR>)
-where <VAR>matches</VAR> is the array of matching strings,
-<VAR>num_matches</VAR> is the number of strings in that array, and
-<VAR>max_length</VAR> is the length of the longest string in that array.
-Readline provides a convenience function, <CODE>rl_display_match_list</CODE>,
-that takes care of doing the display to Readline's output stream.
-You may call that function from this hook.
-</DL>
-</P><P>
-
-<A NAME="IDX381"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B>
-<DD>The basic list of characters that signal a break between words for the
-completer routine.  The default value of this variable is the characters
-which break words for completion in Bash:
-<CODE>" \t\n\"\\'`@$>&#60;=;|&#38;{("</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX382"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B>
-<DD>A list of quote characters which can cause a word break.
-</DL>
-</P><P>
-
-<A NAME="IDX383"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B>
-<DD>The list of characters that signal a break between words for
-<CODE>rl_complete_internal()</CODE>.  The default list is the value of
-<CODE>rl_basic_word_break_characters</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX384"></A>
-<DL>
-<DT><U>Variable:</U> rl_cpvfunc_t * <B>rl_completion_word_break_hook</B>
-<DD>If non-zero, this is the address of a function to call when Readline is
-deciding where to separate words for word completion.  It should return
-a character string like <CODE>rl_completer_word_break_characters</CODE> to be
-used to perform the current completion.  The function may choose to set
-<CODE>rl_completer_word_break_characters</CODE> itself.  If the function
-returns <CODE>NULL</CODE>, <CODE>rl_completer_word_break_characters</CODE> is used.
-</DL>
-</P><P>
-
-<A NAME="IDX385"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B>
-<DD>A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
-<CODE>rl_completer_word_break_characters</CODE> are treated as any other character,
-unless they also appear within this list.
-</DL>
-</P><P>
-
-<A NAME="IDX386"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B>
-<DD>A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename.  The default is the null string.
-</DL>
-</P><P>
-
-<A NAME="IDX387"></A>
-<DL>
-<DT><U>Variable:</U> const char * <B>rl_special_prefixes</B>
-<DD>The list of characters that are word break characters, but should be
-left in <VAR>text</VAR> when it is passed to the completion function.
-Programs can use this to help determine what kind of completing to do.
-For instance, Bash sets this variable to "$@" so that it can complete
-shell variables and hostnames.
-</DL>
-</P><P>
-
-<A NAME="IDX388"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_query_items</B>
-<DD>Up to this many items will be displayed in response to a
-possible-completions call.  After that, readline asks the user if she is sure
-she wants to see them all.  The default value is 100.  A negative value 
-indicates that Readline should never ask the user.
-</DL>
-</P><P>
-
-<A NAME="IDX389"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_append_character</B>
-<DD>When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text.  The
-default is a space character (<SAMP>` '</SAMP>).  Setting this to the null
-character (<SAMP>`\0'</SAMP>) prevents anything being appended automatically.
-This can be changed in application-specific completion functions to
-provide the "most sensible word separator character" according to
-an application-specific command line syntax specification.
-</DL>
-</P><P>
-
-<A NAME="IDX390"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_suppress_append</B>
-<DD>If non-zero, <VAR>rl_completion_append_character</VAR> is not appended to
-matches at the end of the command line, as described above.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
-</DL>
-</P><P>
-
-<A NAME="IDX391"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_quote_character</B>
-<DD>When Readline is completing quoted text, as delimited by one of the
-characters in <VAR>rl_completer_quote_characters</VAR>, it sets this variable
-to the quoting character found.
-This is set before any application-specific completion function is called.
-</DL>
-</P><P>
-
-<A NAME="IDX392"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_suppress_quote</B>
-<DD>If non-zero, Readline does not append a matching quote character when
-performing completion on a quoted string.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
-</DL>
-</P><P>
-
-<A NAME="IDX393"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_found_quote</B>
-<DD>When Readline is completing quoted text, it sets this variable
-to a non-zero value if the word being completed contains or is delimited
-by any quoting characters, including backslashes.
-This is set before any application-specific completion function is called.
-</DL>
-</P><P>
-
-<A NAME="IDX394"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_mark_symlink_dirs</B>
-<DD>If non-zero, a slash will be appended to completed filenames that are
-symbolic links to directory names, subject to the value of the
-user-settable <VAR>mark-directories</VAR> variable.
-This variable exists so that application-specific completion functions
-can override the user's global preference (set via the
-<VAR>mark-symlinked-directories</VAR> Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application-specific completion function is called, so unless that
-function modifies the value, the user's preferences are honored.
-</DL>
-</P><P>
-
-<A NAME="IDX395"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
-<DD>If non-zero, then duplicates in the matches are removed.
-The default is 1.
-</DL>
-</P><P>
-
-<A NAME="IDX396"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
-<DD>Non-zero means that the results of the matches are to be treated as
-filenames.  This is <EM>always</EM> zero when completion is attempted,
-and can only be changed
-within an application-specific completion function.  If it is set to a
-non-zero value by such a function, directory names have a slash appended
-and Readline attempts to quote completed filenames if they contain any
-characters in <CODE>rl_filename_quote_characters</CODE> and
-<CODE>rl_filename_quoting_desired</CODE> is set to a non-zero value.
-</DL>
-</P><P>
-
-<A NAME="IDX397"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
-<DD>Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-<CODE>rl_filename_quote_chars</CODE>.  This is <EM>always</EM> non-zero
-when completion is attempted, and can only be changed within an
-application-specific completion function.
-The quoting is effected via a call to the function pointed to
-by <CODE>rl_filename_quoting_function</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX398"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
-<DD>If an application-specific completion function assigned to
-<CODE>rl_attempted_completion_function</CODE> sets this variable to a non-zero
-value, Readline will not perform its default filename completion even
-if the application's completion function returns no matches.
-It should be set only by an application's completion function.
-</DL>
-</P><P>
-
-<A NAME="IDX399"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_sort_completion_matches</B>
-<DD>If an application sets this variable to 0, Readline will not sort the
-list of completions (which implies that it cannot remove any duplicate
-completions).  The default value is 1, which means that Readline will
-sort the completions and, depending on the value of
-<CODE>rl_ignore_completion_duplicates</CODE>, will attempt to remove duplicate
-matches.
-</DL>
-</P><P>
-
-<A NAME="IDX400"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_type</B>
-<DD>Set to a character describing the type of completion Readline is currently
-attempting; see the description of <CODE>rl_complete_internal()</CODE>
-(see section <A HREF="readline.html#SEC47">2.6.2 Completion Functions</A>) for the list of characters.
-This is set to the appropriate value before any application-specific
-completion function is called, allowing such functions to present
-the same interface as <CODE>rl_complete()</CODE>.
-</DL>
-</P><P>
-
-<A NAME="IDX401"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_invoking_key</B>
-<DD>Set to the final character in the key sequence that invoked one of the
-completion functions that call <CODE>rl_complete_internal()</CODE>.  This is
-set to the appropriate value before any application-specific completion
-function is called.
-</DL>
-</P><P>
-
-<A NAME="IDX402"></A>
-<DL>
-<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
-<DD>If this variable is non-zero, completion is inhibited.  The completion
-character will be inserted as any other bound to <CODE>self-insert</CODE>.
-</DL>
-</P><P>
-
-<A NAME="A Short Completion Example"></A>
-<HR SIZE="6">
-<A NAME="SEC49"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 2.6.4 A Short Completion Example </H3>
-<!--docid::SEC49::-->
-<P>
-
-Here is a small application demonstrating the use of the GNU Readline
-library.  It is called <CODE>fileman</CODE>, and the source code resides in
-<TT>`examples/fileman.c'</TT>.  This sample application provides
-completion of command names, line editing features, and access to the
-history list.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>/* fileman.c -- A tiny application which demonstrates how to use the
-   GNU Readline library.  This application interactively allows users
-   to manipulate files and their modes. */
-
-#ifdef HAVE_CONFIG_H
-#  include &#60;config.h&#62;
-#endif
-
-#include &#60;sys/types.h&#62;
-#ifdef HAVE_SYS_FILE_H
-#  include &#60;sys/file.h&#62;
-#endif
-#include &#60;sys/stat.h&#62;
-
-#ifdef HAVE_UNISTD_H
-#  include &#60;unistd.h&#62;
-#endif
-
-#include &#60;fcntl.h&#62;
-#include &#60;stdio.h&#62;
-#include &#60;errno.h&#62;
-
-#if defined (HAVE_STRING_H)
-#  include &#60;string.h&#62;
-#else /* !HAVE_STRING_H */
-#  include &#60;strings.h&#62;
-#endif /* !HAVE_STRING_H */
-
-#ifdef HAVE_STDLIB_H
-#  include &#60;stdlib.h&#62;
-#endif
-
-#include &#60;time.h&#62;
-
-#include &#60;readline/readline.h&#62;
-#include &#60;readline/history.h&#62;
-
-extern char *xmalloc PARAMS((size_t));
-
-/* The names of functions that actually do the manipulation. */
-int com_list PARAMS((char *));
-int com_view PARAMS((char *));
-int com_rename PARAMS((char *));
-int com_stat PARAMS((char *));
-int com_pwd PARAMS((char *));
-int com_delete PARAMS((char *));
-int com_help PARAMS((char *));
-int com_cd PARAMS((char *));
-int com_quit PARAMS((char *));
-
-/* A structure which contains information on the commands this program
-   can understand. */
-
-typedef struct {
-  char *name;                  /* User printable name of the function. */
-  rl_icpfunc_t *func;          /* Function to call to do the job. */
-  char *doc;                   /* Documentation for this function.  */
-} COMMAND;
-
-COMMAND commands[] = {
-  { "cd", com_cd, "Change to directory DIR" },
-  { "delete", com_delete, "Delete FILE" },
-  { "help", com_help, "Display this text" },
-  { "?", com_help, "Synonym for `help'" },
-  { "list", com_list, "List files in DIR" },
-  { "ls", com_list, "Synonym for `list'" },
-  { "pwd", com_pwd, "Print the current working directory" },
-  { "quit", com_quit, "Quit using Fileman" },
-  { "rename", com_rename, "Rename FILE to NEWNAME" },
-  { "stat", com_stat, "Print out statistics on FILE" },
-  { "view", com_view, "View the contents of FILE" },
-  { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
-};
-
-/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* When non-zero, this global means the user is done using this program. */
-int done;
-
-char *
-dupstr (s)
-     char *s;
-{
-  char *r;
-
-  r = xmalloc (strlen (s) + 1);
-  strcpy (r, s);
-  return (r);
-}
-
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  char *line, *s;
-
-  progname = argv[0];
-
-  initialize_readline ();      /* Bind our completer. */
-
-  /* Loop reading and executing lines until the user quits. */
-  for ( ; done == 0; )
-    {
-      line = readline ("FileMan: ");
-
-      if (!line)
-        break;
-
-      /* Remove leading and trailing whitespace from the line.
-         Then, if there is anything left, add it to the history list
-         and execute it. */
-      s = stripwhite (line);
-
-      if (*s)
-        {
-          add_history (s);
-          execute_line (s);
-        }
-
-      free (line);
-    }
-  exit (0);
-}
-
-/* Execute a command line. */
-int
-execute_line (line)
-     char *line;
-{
-  register int i;
-  COMMAND *command;
-  char *word;
-
-  /* Isolate the command word. */
-  i = 0;
-  while (line[i] &#38;&#38; whitespace (line[i]))
-    i++;
-  word = line + i;
-
-  while (line[i] &#38;&#38; !whitespace (line[i]))
-    i++;
-
-  if (line[i])
-    line[i++] = '\0';
-
-  command = find_command (word);
-
-  if (!command)
-    {
-      fprintf (stderr, "%s: No such command for FileMan.\n", word);
-      return (-1);
-    }
-
-  /* Get argument to command, if any. */
-  while (whitespace (line[i]))
-    i++;
-
-  word = line + i;
-
-  /* Call the function. */
-  return ((*(command-&#62;func)) (word));
-}
-
-/* Look up NAME as the name of a command, and return a pointer to that
-   command.  Return a NULL pointer if NAME isn't a command name. */
-COMMAND *
-find_command (name)
-     char *name;
-{
-  register int i;
-
-  for (i = 0; commands[i].name; i++)
-    if (strcmp (name, commands[i].name) == 0)
-      return (&#38;commands[i]);
-
-  return ((COMMAND *)NULL);
-}
-
-/* Strip whitespace from the start and end of STRING.  Return a pointer
-   into STRING. */
-char *
-stripwhite (string)
-     char *string;
-{
-  register char *s, *t;
-
-  for (s = string; whitespace (*s); s++)
-    ;
-    
-  if (*s == 0)
-    return (s);
-
-  t = s + strlen (s) - 1;
-  while (t &#62; s &#38;&#38; whitespace (*t))
-    t--;
-  *++t = '\0';
-
-  return s;
-}
-
-/* **************************************************************** */
-/*                                                                  */
-/*                  Interface to Readline Completion                */
-/*                                                                  */
-/* **************************************************************** */
-
-char *command_generator PARAMS((const char *, int));
-char **fileman_completion PARAMS((const char *, int, int));
-
-/* Tell the GNU Readline library how to complete.  We want to try to complete
-   on command names if this is the first word in the line, or on filenames
-   if not. */
-initialize_readline ()
-{
-  /* Allow conditional parsing of the ~/.inputrc file. */
-  rl_readline_name = "FileMan";
-
-  /* Tell the completer that we want a crack first. */
-  rl_attempted_completion_function = fileman_completion;
-}
-
-/* Attempt to complete on the contents of TEXT.  START and END bound the
-   region of rl_line_buffer that contains the word to complete.  TEXT is
-   the word to complete.  We can use the entire contents of rl_line_buffer
-   in case we want to do some simple parsing.  Return the array of matches,
-   or NULL if there aren't any. */
-char **
-fileman_completion (text, start, end)
-     const char *text;
-     int start, end;
-{
-  char **matches;
-
-  matches = (char **)NULL;
-
-  /* If this word is at the start of the line, then it is a command
-     to complete.  Otherwise it is the name of a file in the current
-     directory. */
-  if (start == 0)
-    matches = rl_completion_matches (text, command_generator);
-
-  return (matches);
-}
-
-/* Generator function for command completion.  STATE lets us know whether
-   to start from scratch; without any state (i.e. STATE == 0), then we
-   start at the top of the list. */
-char *
-command_generator (text, state)
-     const char *text;
-     int state;
-{
-  static int list_index, len;
-  char *name;
-
-  /* If this is a new word to complete, initialize now.  This includes
-     saving the length of TEXT for efficiency, and initializing the index
-     variable to 0. */
-  if (!state)
-    {
-      list_index = 0;
-      len = strlen (text);
-    }
-
-  /* Return the next name which partially matches from the command list. */
-  while (name = commands[list_index].name)
-    {
-      list_index++;
-
-      if (strncmp (name, text, len) == 0)
-        return (dupstr(name));
-    }
-
-  /* If no names matched, then return NULL. */
-  return ((char *)NULL);
-}
-
-/* **************************************************************** */
-/*                                                                  */
-/*                       FileMan Commands                           */
-/*                                                                  */
-/* **************************************************************** */
-
-/* String to pass to system ().  This is for the LIST, VIEW and RENAME
-   commands. */
-static char syscom[1024];
-
-/* List the file(s) named in arg. */
-com_list (arg)
-     char *arg;
-{
-  if (!arg)
-    arg = "";
-
-  sprintf (syscom, "ls -FClg %s", arg);
-  return (system (syscom));
-}
-
-com_view (arg)
-     char *arg;
-{
-  if (!valid_argument ("view", arg))
-    return 1;
-
-#if defined (__MSDOS__)
-  /* more.com doesn't grok slashes in pathnames */
-  sprintf (syscom, "less %s", arg);
-#else
-  sprintf (syscom, "more %s", arg);
-#endif
-  return (system (syscom));
-}
-
-com_rename (arg)
-     char *arg;
-{
-  too_dangerous ("rename");
-  return (1);
-}
-
-com_stat (arg)
-     char *arg;
-{
-  struct stat finfo;
-
-  if (!valid_argument ("stat", arg))
-    return (1);
-
-  if (stat (arg, &#38;finfo) == -1)
-    {
-      perror (arg);
-      return (1);
-    }
-
-  printf ("Statistics for `%s':\n", arg);
-
-  printf ("%s has %d link%s, and is %d byte%s in length.\n",
-         arg,
-          finfo.st_nlink,
-          (finfo.st_nlink == 1) ? "" : "s",
-          finfo.st_size,
-          (finfo.st_size == 1) ? "" : "s");
-  printf ("Inode Last Change at: %s", ctime (&#38;finfo.st_ctime));
-  printf ("      Last access at: %s", ctime (&#38;finfo.st_atime));
-  printf ("    Last modified at: %s", ctime (&#38;finfo.st_mtime));
-  return (0);
-}
-
-com_delete (arg)
-     char *arg;
-{
-  too_dangerous ("delete");
-  return (1);
-}
-
-/* Print out help for ARG, or for all of the commands if ARG is
-   not present. */
-com_help (arg)
-     char *arg;
-{
-  register int i;
-  int printed = 0;
-
-  for (i = 0; commands[i].name; i++)
-    {
-      if (!*arg || (strcmp (arg, commands[i].name) == 0))
-        {
-          printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
-          printed++;
-        }
-    }
-
-  if (!printed)
-    {
-      printf ("No commands match `%s'.  Possibilties are:\n", arg);
-
-      for (i = 0; commands[i].name; i++)
-        {
-          /* Print in six columns. */
-          if (printed == 6)
-            {
-              printed = 0;
-              printf ("\n");
-            }
-
-          printf ("%s\t", commands[i].name);
-          printed++;
-        }
-
-      if (printed)
-        printf ("\n");
-    }
-  return (0);
-}
-
-/* Change to the directory ARG. */
-com_cd (arg)
-     char *arg;
-{
-  if (chdir (arg) == -1)
-    {
-      perror (arg);
-      return 1;
-    }
-
-  com_pwd ("");
-  return (0);
-}
-
-/* Print out the current working directory. */
-com_pwd (ignore)
-     char *ignore;
-{
-  char dir[1024], *s;
-
-  s = getcwd (dir, sizeof(dir) - 1);
-  if (s == 0)
-    {
-      printf ("Error getting pwd: %s\n", dir);
-      return 1;
-    }
-
-  printf ("Current directory is %s\n", dir);
-  return 0;
-}
-
-/* The user wishes to quit using this program.  Just set DONE non-zero. */
-com_quit (arg)
-     char *arg;
-{
-  done = 1;
-  return (0);
-}
-
-/* Function which tells you that you can't do this. */
-too_dangerous (caller)
-     char *caller;
-{
-  fprintf (stderr,
-           "%s: Too dangerous for me to distribute.  Write it yourself.\n",
-           caller);
-}
-
-/* Return non-zero if ARG is a valid argument for CALLER, else print
-   an error message and return zero. */
-int
-valid_argument (caller, arg)
-     char *caller, *arg;
-{
-  if (!arg || !*arg)
-    {
-      fprintf (stderr, "%s: Argument required.\n", caller);
-      return (0);
-    }
-
-  return (1);
-}
-</FONT></pre></td></tr></table></P><P>
-
-<A NAME="GNU Free Documentation License"></A>
-<HR SIZE="6">
-<A NAME="SEC50"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> A. GNU Free Documentation License </H1>
-<!--docid::SEC50::-->
-<P>
-
-<center>
- Version 1.3, 3 November 2008
-</center>
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-<A HREF="http://fsf.org/">http://fsf.org/</A>
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-</pre></td></tr></table></P><P>
-
-<OL>
-<LI>
-PREAMBLE
-<P>
-
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document <EM>free</EM> in the sense of freedom: to
-assure everyone the effective freedom to copy and redistribute it,
-with or without modifying it, either commercially or noncommercially.
-Secondarily, this License preserves for the author and publisher a way
-to get credit for their work, while not being considered responsible
-for modifications made by others.
-</P><P>
-
-This License is a kind of "copyleft", which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-</P><P>
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-</P><P>
-
-<LI>
-APPLICABILITY AND DEFINITIONS
-<P>
-
-This License applies to any manual or other work, in any medium, that
-contains a notice placed by the copyright holder saying it can be
-distributed under the terms of this License.  Such a notice grants a
-world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein.  The "Document", below,
-refers to any such manual or work.  Any member of the public is a
-licensee, and is addressed as "you".  You accept the license if you
-copy, modify or distribute the work in a way requiring permission
-under copyright law.
-</P><P>
-
-A "Modified Version" of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-</P><P>
-
-A "Secondary Section" is a named appendix or a front-matter section
-of the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall
-subject (or to related matters) and contains nothing that could fall
-directly within that overall subject.  (Thus, if the Document is in
-part a textbook of mathematics, a Secondary Section may not explain
-any mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-</P><P>
-
-The "Invariant Sections" are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.  If a
-section does not fit the above definition of Secondary then it is not
-allowed to be designated as Invariant.  The Document may contain zero
-Invariant Sections.  If the Document does not identify any Invariant
-Sections then there are none.
-</P><P>
-
-The "Cover Texts" are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.  A Front-Cover Text may
-be at most 5 words, and a Back-Cover Text may be at most 25 words.
-</P><P>
-
-A "Transparent" copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, that is suitable for revising the document
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup, or absence of markup, has been arranged to thwart
-or discourage subsequent modification by readers is not Transparent.
-An image format is not Transparent if used for any substantial amount
-of text.  A copy that is not "Transparent" is called "Opaque".
-</P><P>
-
-Examples of suitable formats for Transparent copies include plain
-ASCII without markup, Texinfo input format, LaTeX input
-format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
-<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
-PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification.  Examples
-of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
-<FONT SIZE="-1">JPG</FONT>.  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
-<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
-not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
-PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
-output purposes only.
-</P><P>
-
-The "Title Page" means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, "Title Page" means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-</P><P>
-
-The "publisher" means any person or entity that distributes copies
-of the Document to the public.
-</P><P>
-
-A section "Entitled XYZ" means a named subunit of the Document whose
-title either is precisely XYZ or contains XYZ in parentheses following
-text that translates XYZ in another language.  (Here XYZ stands for a
-specific section name mentioned below, such as "Acknowledgements",
-"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
-of such a section when you modify the Document means that it remains a
-section "Entitled XYZ" according to this definition.
-</P><P>
-
-The Document may include Warranty Disclaimers next to the notice which
-states that this License applies to the Document.  These Warranty
-Disclaimers are considered to be included by reference in this
-License, but only as regards disclaiming warranties: any other
-implication that these Warranty Disclaimers may have is void and has
-no effect on the meaning of this License.
-</P><P>
-
-<LI>
-VERBATIM COPYING
-<P>
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-</P><P>
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-</P><P>
-
-<LI>
-COPYING IN QUANTITY
-<P>
-
-If you publish printed copies (or copies in media that commonly have
-printed covers) of the Document, numbering more than 100, and the
-Document's license notice requires Cover Texts, you must enclose the
-copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-</P><P>
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-</P><P>
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a computer-network location from which the general network-using
-public has access to download using public-standard network protocols
-a complete Transparent copy of the Document, free of added material.
-If you use the latter option, you must take reasonably prudent steps,
-when you begin distribution of Opaque copies in quantity, to ensure
-that this Transparent copy will remain thus accessible at the stated
-location until at least one year after the last time you distribute an
-Opaque copy (directly or through your agents or retailers) of that
-edition to the public.
-</P><P>
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-</P><P>
-
-<LI>
-MODIFICATIONS
-<P>
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-</P><P>
-
-<OL>
-<LI>
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document).  You may use the same title as a previous version
-if the original publisher of that version gives permission.
-<P>
-
-<LI>
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has fewer than five),
-unless they release you from this requirement.
-<P>
-
-<LI>
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-<P>
-
-<LI>
-Preserve all the copyright notices of the Document.
-<P>
-
-<LI>
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-<P>
-
-<LI>
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-<P>
-
-<LI>
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-<P>
-
-<LI>
-Include an unaltered copy of this License.
-<P>
-
-<LI>
-Preserve the section Entitled "History", Preserve its Title, and add
-to it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page.  If
-there is no section Entitled "History" in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-<P>
-
-<LI>
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on.  These may be placed in the "History" section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-<P>
-
-<LI>
-For any section Entitled "Acknowledgements" or "Dedications", Preserve
-the Title of the section, and preserve in the section all the
-substance and tone of each of the contributor acknowledgements and/or
-dedications given therein.
-<P>
-
-<LI>
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles.  Section numbers
-or the equivalent are not considered part of the section titles.
-<P>
-
-<LI>
-Delete any section Entitled "Endorsements".  Such a section
-may not be included in the Modified Version.
-<P>
-
-<LI>
-Do not retitle any existing section to be Entitled "Endorsements" or
-to conflict in title with any Invariant Section.
-<P>
-
-<LI>
-Preserve any Warranty Disclaimers.
-</OL>
-<P>
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-</P><P>
-
-You may add a section Entitled "Endorsements", provided it contains
-nothing but endorsements of your Modified Version by various
-parties--for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-</P><P>
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-</P><P>
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-</P><P>
-
-<LI>
-COMBINING DOCUMENTS
-<P>
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice, and that you preserve all their Warranty Disclaimers.
-</P><P>
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-</P><P>
-
-In the combination, you must combine any sections Entitled "History"
-in the various original documents, forming one section Entitled
-"History"; likewise combine any sections Entitled "Acknowledgements",
-and any sections Entitled "Dedications".  You must delete all
-sections Entitled "Endorsements."
-</P><P>
-
-<LI>
-COLLECTIONS OF DOCUMENTS
-<P>
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-</P><P>
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-</P><P>
-
-<LI>
-AGGREGATION WITH INDEPENDENT WORKS
-<P>
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an "aggregate" if the copyright
-resulting from the compilation is not used to limit the legal rights
-of the compilation's users beyond what the individual works permit.
-When the Document is included in an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-</P><P>
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one half of
-the entire aggregate, the Document's Cover Texts may be placed on
-covers that bracket the Document within the aggregate, or the
-electronic equivalent of covers if the Document is in electronic form.
-Otherwise they must appear on printed covers that bracket the whole
-aggregate.
-</P><P>
-
-<LI>
-TRANSLATION
-<P>
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-the original English version of this License and the original versions
-of those notices and disclaimers.  In case of a disagreement between
-the translation and the original version of this License or a notice
-or disclaimer, the original version will prevail.
-</P><P>
-
-If a section in the Document is Entitled "Acknowledgements",
-"Dedications", or "History", the requirement (section 4) to Preserve
-its Title (section 1) will typically require changing the actual
-title.
-</P><P>
-
-<LI>
-TERMINATION
-<P>
-
-You may not copy, modify, sublicense, or distribute the Document
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense, or distribute it is void, and
-will automatically terminate your rights under this License.
-</P><P>
-
-However, if you cease all violation of this License, then your license
-from a particular copyright holder is reinstated (a) provisionally,
-unless and until the copyright holder explicitly and finally
-terminates your license, and (b) permanently, if the copyright holder
-fails to notify you of the violation by some reasonable means prior to
-60 days after the cessation.
-</P><P>
-
-Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-</P><P>
-
-Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, receipt of a copy of some or all of the same material does
-not give you any rights to use it.
-</P><P>
-
-<LI>
-FUTURE REVISIONS OF THIS LICENSE
-<P>
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
-<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
-</P><P>
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License "or any later version" applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.  If the Document
-specifies that a proxy can decide which future versions of this
-License can be used, that proxy's public statement of acceptance of a
-version permanently authorizes you to choose that version for the
-Document.
-</P><P>
-
-<LI>
-RELICENSING
-<P>
-
-"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-World Wide Web server that publishes copyrightable works and also
-provides prominent facilities for anybody to edit those works.  A
-public wiki that anybody can edit is an example of such a server.  A
-"Massive Multiauthor Collaboration" (or "MMC") contained in the
-site means any set of copyrightable works thus published on the MMC
-site.
-</P><P>
-
-"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-license published by Creative Commons Corporation, a not-for-profit
-corporation with a principal place of business in San Francisco,
-California, as well as future copyleft versions of that license
-published by that same organization.
-</P><P>
-
-"Incorporate" means to publish or republish a Document, in whole or
-in part, as part of another Document.
-</P><P>
-
-An MMC is "eligible for relicensing" if it is licensed under this
-License, and if all works that were first published under this License
-somewhere other than this MMC, and subsequently incorporated in whole
-or in part into the MMC, (1) had no cover texts or invariant sections,
-and (2) were thus incorporated prior to November 1, 2008.
-</P><P>
-
-The operator of an MMC Site may republish an MMC contained in the site
-under CC-BY-SA on the same site at any time before August 1, 2009,
-provided the MMC is eligible for relicensing.
-</P><P>
-
-</OL>
-<P>
-
-<A NAME="SEC51"></A>
-<H2> ADDENDUM: How to use this License for your documents </H2>
-<!--docid::SEC51::-->
-<P>
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>  Copyright (C)  <VAR>year</VAR>  <VAR>your name</VAR>.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.3
-  or any later version published by the Free Software Foundation;
-  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-  Texts.  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
-</FONT></pre></td></tr></table></P><P>
-
-If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the "with<small>...</small>Texts." line with this:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>    with the Invariant Sections being <VAR>list their titles</VAR>, with
-    the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
-    being <VAR>list</VAR>.
-</FONT></pre></td></tr></table></P><P>
-
-If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-</P><P>
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
-</P><P>
-
-<A NAME="Concept Index"></A>
-<HR SIZE="6">
-<A NAME="SEC52"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC53"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> Concept Index </H1>
-<!--docid::SEC52::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp; 
-</td></tr></table><br><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>
-<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC45">application-specific completion functions</A></TD><TD valign=top><A HREF="rlman.html#SEC45">2.6 Custom Completers</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">command editing</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC9">1.3 Readline Init File</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC3">interaction, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC3">1.2 Readline Interaction</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX3">kill ring</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX1">killing text</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210">readline, function</A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX2">yanking text</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
- &nbsp; 
-<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp; 
-</td></tr></table><br><P>
-
-<A NAME="Function and Variable Index"></A>
-<HR SIZE="6">
-<A NAME="SEC53"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> Function and Variable Index </H1>
-<!--docid::SEC53::-->
-<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
- &nbsp; 
-<BR>
-<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp; 
-</td></tr></table><br><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>
-<TR><TH><A NAME="fn__"></A>_</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">bell-style</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">bind-tty-special-chars</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">blink-matching-paren</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">colored-completion-prefix</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">colored-stats</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">comment-begin</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">completion-display-width</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">completion-ignore-case</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">completion-map-case</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">completion-prefix-display-length</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">completion-query-items</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">convert-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">disable-completion</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">echo-control-characters</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">editing-mode</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">emacs-mode-string</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">enable-bracketed-paste</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">enable-keypad</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">expand-tilde</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">history-preserve-point</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">history-size</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>history-substr-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>history-substr-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>history-substr-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>history-substr-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27">input-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29">isearch-terminators</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30">keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31">mark-modified-lines</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32">mark-symlinked-directories</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33">match-hidden-files</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34">menu-complete-display-prefix</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28">meta-flag</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35">output-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36">page-completions</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37">revert-all-at-newline</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222">rl_already_prompted</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX371">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX398">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX382">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX381">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242">rl_binding_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX346"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX344"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX345"><CODE>rl_callback_sigcleanup</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX347">rl_catch_signals</A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX348">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX349">rl_change_environment</A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX374">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX350"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342"><CODE>rl_clear_history</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX359"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX360"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX363"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX362"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX385">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX383">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX389">rl_completion_append_character</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX380">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX361">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX370">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX393">rl_completion_found_quote</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX401">rl_completion_invoking_key</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX394">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX367"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX366"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX388">rl_completion_query_items</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX391">rl_completion_quote_character</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX390">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX392">rl_completion_suppress_quote</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX400">rl_completion_type</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX384">rl_completion_word_break_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240">rl_deprep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX376">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX377">rl_directory_rewrite_hook;</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218">rl_dispatching</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221">rl_display_prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215">rl_done</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX353"><CODE>rl_echo_signal_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250">rl_editing_mode</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213">rl_end</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219">rl_erase_empty_line</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234">rl_event_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244">rl_executing_key</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241">rl_executing_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245">rl_executing_keyseq</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243">rl_executing_macro</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248">rl_explicit_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX396">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX368"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX373">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX386">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX397">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX372">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX379">rl_filename_rewrite_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX378">rl_filename_stat_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322"><CODE>rl_free</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_free_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX351"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX356"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235">rl_getc_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX395">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX375">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX402">rl_inhibit_completion</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237">rl_input_available_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX365"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228">rl_instream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246">rl_key_sequence_length</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231">rl_last_func</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223">rl_library_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211">rl_line_buffer</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214">rl_mark</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249">rl_numeric_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229">rl_outstream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217">rl_pending_input</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212">rl_point</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX364"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233">rl_pre_input_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230">rl_prefer_env_winsize</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239">rl_prep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220">rl_prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227">rl_readline_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247">rl_readline_state</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224">rl_readline_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238">rl_redisplay_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX352"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX357"><CODE>rl_reset_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX354"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321"><CODE>rl_restore_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320"><CODE>rl_save_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX355"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX358"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236">rl_signal_event_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX399">rl_sort_completion_matches</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX387">rl_special_prefixes</A></TD><TD valign=top><A HREF="rlman.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232">rl_startup_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226">rl_terminal_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX369"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338"><CODE>rl_variable_value</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39">show-all-if-unmodified</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40">show-mode-in-prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41">skip-completed-text</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42">vi-cmd-mode-string</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43">vi-ins-mode-string</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44">visible-stats</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-<TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD COLSPAN=3> <HR></TD></TR>
-</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
- &nbsp; 
-<BR>
-<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
- &nbsp; 
-<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
- &nbsp; 
-</td></tr></table><br><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A>
-<BR>
-<A NAME="TOC3" HREF="readline.html#SEC3">1.2 Readline Interaction</A>
-<BR>
-<UL>
-<A NAME="TOC4" HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A>
-<BR>
-<A NAME="TOC5" HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A>
-<BR>
-<A NAME="TOC6" HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A>
-<BR>
-<A NAME="TOC7" HREF="readline.html#SEC7">1.2.4 Readline Arguments</A>
-<BR>
-<A NAME="TOC8" HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>
-<BR>
-</UL>
-<A NAME="TOC9" HREF="readline.html#SEC9">1.3 Readline Init File</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>
-<BR>
-<A NAME="TOC11" HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>
-<BR>
-<A NAME="TOC12" HREF="readline.html#SEC12">1.3.3 Sample Init File</A>
-<BR>
-</UL>
-<A NAME="TOC13" HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A>
-<BR>
-<UL>
-<A NAME="TOC14" HREF="readline.html#SEC14">1.4.1 Commands For Moving</A>
-<BR>
-<A NAME="TOC15" HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A>
-<BR>
-<A NAME="TOC16" HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A>
-<BR>
-<A NAME="TOC17" HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A>
-<BR>
-<A NAME="TOC18" HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
-<BR>
-<A NAME="TOC19" HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A>
-<BR>
-<A NAME="TOC20" HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A>
-<BR>
-<A NAME="TOC21" HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
-<BR>
-</UL>
-<A NAME="TOC22" HREF="readline.html#SEC22">1.5 Readline vi Mode</A>
-<BR>
-</UL>
-<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
-<BR>
-<UL>
-<A NAME="TOC24" HREF="readline.html#SEC24">2.1 Basic Behavior</A>
-<BR>
-<A NAME="TOC25" HREF="readline.html#SEC25">2.2 Custom Functions</A>
-<BR>
-<UL>
-<A NAME="TOC26" HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A>
-<BR>
-<A NAME="TOC27" HREF="readline.html#SEC27">2.2.2 Writing a New Function</A>
-<BR>
-</UL>
-<A NAME="TOC28" HREF="readline.html#SEC28">2.3 Readline Variables</A>
-<BR>
-<A NAME="TOC29" HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A>
-<BR>
-<UL>
-<A NAME="TOC30" HREF="readline.html#SEC30">2.4.1 Naming a Function</A>
-<BR>
-<A NAME="TOC31" HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>
-<BR>
-<A NAME="TOC32" HREF="readline.html#SEC32">2.4.3 Binding Keys</A>
-<BR>
-<A NAME="TOC33" HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A>
-<BR>
-<A NAME="TOC34" HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>
-<BR>
-<A NAME="TOC35" HREF="readline.html#SEC35">2.4.6 Redisplay</A>
-<BR>
-<A NAME="TOC36" HREF="readline.html#SEC36">2.4.7 Modifying Text</A>
-<BR>
-<A NAME="TOC37" HREF="readline.html#SEC37">2.4.8 Character Input</A>
-<BR>
-<A NAME="TOC38" HREF="readline.html#SEC38">2.4.9 Terminal Management</A>
-<BR>
-<A NAME="TOC39" HREF="readline.html#SEC39">2.4.10 Utility Functions</A>
-<BR>
-<A NAME="TOC40" HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A>
-<BR>
-<A NAME="TOC41" HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>
-<BR>
-<A NAME="TOC42" HREF="readline.html#SEC42">2.4.13 A Readline Example</A>
-<BR>
-<A NAME="TOC43" HREF="readline.html#SEC43">2.4.14 Alternate Interface Example</A>
-<BR>
-</UL>
-<A NAME="TOC44" HREF="readline.html#SEC44">2.5 Readline Signal Handling</A>
-<BR>
-<A NAME="TOC45" HREF="readline.html#SEC45">2.6 Custom Completers</A>
-<BR>
-<UL>
-<A NAME="TOC46" HREF="readline.html#SEC46">2.6.1 How Completing Works</A>
-<BR>
-<A NAME="TOC47" HREF="readline.html#SEC47">2.6.2 Completion Functions</A>
-<BR>
-<A NAME="TOC48" HREF="readline.html#SEC48">2.6.3 Completion Variables</A>
-<BR>
-<A NAME="TOC49" HREF="readline.html#SEC49">2.6.4 A Short Completion Example</A>
-<BR>
-</UL>
-</UL>
-<A NAME="TOC50" HREF="readline.html#SEC50">A. GNU Free Documentation License</A>
-<BR>
-<A NAME="TOC52" HREF="readline.html#SEC52">Concept Index</A>
-<BR>
-<A NAME="TOC53" HREF="readline.html#SEC53">Function and Variable Index</A>
-<BR>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
-<BR>
-<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
-<BR>
-<A NAME="TOC50" HREF="readline.html#SEC50">A. GNU Free Documentation License</A>
-<BR>
-<A NAME="TOC52" HREF="readline.html#SEC52">Concept Index</A>
-<BR>
-<A NAME="TOC53" HREF="readline.html#SEC53">Function and Variable Index</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>July, 1  2015</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>  
-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>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section 
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-</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>
-
-<HR SIZE=1>
-<BR>  
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>July, 1  2015</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/lib/readline/doc/readline.info b/lib/readline/doc/readline.info
deleted file mode 100644 (file)
index f71cbb8..0000000
+++ /dev/null
@@ -1,4939 +0,0 @@
-This is readline.info, produced by makeinfo version 5.2 from rlman.texi.
-
-This manual describes the GNU Readline Library (version 6.4, 28 May
-2015), a library which aids in the consistency of user interface across
-discrete programs which provide a command line interface.
-
-   Copyright (C) 1988-2014 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, no Front-Cover Texts, and
-     no Back-Cover Texts.  A copy of the license is included in the
-     section entitled "GNU Free Documentation License".
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* Readline: (readline).       The GNU readline library API.
-END-INFO-DIR-ENTRY
-
-\1f
-File: readline.info,  Node: Top,  Next: Command Line Editing,  Up: (dir)
-
-GNU Readline Library
-********************
-
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs which
-provide a command line interface.  The Readline home page is
-<http://www.gnu.org/software/readline/>.
-
-* Menu:
-
-* Command Line Editing::          GNU Readline User's Manual.
-* Programming with GNU Readline::  GNU Readline Programmer's Manual.
-* GNU Free Documentation License::     License for copying this manual.
-* Concept Index::                 Index of concepts described in this manual.
-* Function and Variable Index::           Index of externally visible functions
-                                  and variables.
-
-\1f
-File: readline.info,  Node: Command Line Editing,  Next: Programming with GNU Readline,  Prev: Top,  Up: Top
-
-1 Command Line Editing
-**********************
-
-This chapter describes the basic features of the GNU command line
-editing interface.
-
-* Menu:
-
-* Introduction and Notation::  Notation used in this text.
-* Readline Interaction::       The minimum set of commands for editing a line.
-* Readline Init File::         Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
-                               available for binding
-* Readline vi Mode::           A short description of how to make Readline
-                               behave like the vi editor.
-
-\1f
-File: readline.info,  Node: Introduction and Notation,  Next: Readline Interaction,  Up: Command Line Editing
-
-1.1 Introduction to Line Editing
-================================
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-
-   The text 'C-k' is read as 'Control-K' and describes the character
-produced when the <k> key is pressed while the Control key is depressed.
-
-   The text 'M-k' is read as 'Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed.  The Meta key is labeled <ALT> on many keyboards.  On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key.  The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
-   If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>.  Either process is known as "metafying"
-the <k> key.
-
-   The text 'M-C-k' is read as 'Meta-Control-k' and describes the
-character produced by "metafying" 'C-k'.
-
-   In addition, several keys have their own names.  Specifically, <DEL>,
-<ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
-in this text, or in an init file (*note Readline Init File::).  If your
-keyboard lacks a <LFD> key, typing <C-j> will produce the desired
-character.  The <RET> key may be labeled <Return> or <Enter> on some
-keyboards.
-
-\1f
-File: readline.info,  Node: Readline Interaction,  Next: Readline Init File,  Prev: Introduction and Notation,  Up: Command Line Editing
-
-1.2 Readline Interaction
-========================
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press <RET>.  You do not have to be at the end of
-the line to press <RET>; the entire line is accepted regardless of the
-location of the cursor within the line.
-
-* Menu:
-
-* Readline Bare Essentials::   The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands::  How to delete text, and how to get it back!
-* Readline Arguments::         Giving numeric arguments to commands.
-* Searching::                  Searching through previous lines.
-
-\1f
-File: readline.info,  Node: Readline Bare Essentials,  Next: Readline Movement Commands,  Up: Readline Interaction
-
-1.2.1 Readline Bare Essentials
-------------------------------
-
-In order to enter characters into the line, simply type them.  The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your erase
-character to back up and delete the mistyped character.
-
-   Sometimes you may mistype a character, and not notice the error until
-you have typed several other characters.  In that case, you can type
-'C-b' to move the cursor to the left, and then correct your mistake.
-Afterwards, you can move the cursor to the right with 'C-f'.
-
-   When you add text in the middle of a line, you will notice that
-characters to the right of the cursor are 'pushed over' to make room for
-the text that you have inserted.  Likewise, when you delete text behind
-the cursor, characters to the right of the cursor are 'pulled back' to
-fill in the blank space created by the removal of the text.  A list of
-the bare essentials for editing the text of an input line follows.
-
-'C-b'
-     Move back one character.
-'C-f'
-     Move forward one character.
-<DEL> or <Backspace>
-     Delete the character to the left of the cursor.
-'C-d'
-     Delete the character underneath the cursor.
-Printing characters
-     Insert the character into the line at the cursor.
-'C-_' or 'C-x C-u'
-     Undo the last editing command.  You can undo all the way back to an
-     empty line.
-
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like 'C-d', rather than the
-character to the left of the cursor.)
-
-\1f
-File: readline.info,  Node: Readline Movement Commands,  Next: Readline Killing Commands,  Prev: Readline Bare Essentials,  Up: Readline Interaction
-
-1.2.2 Readline Movement Commands
---------------------------------
-
-The above table describes the most basic keystrokes that you need in
-order to do editing of the input line.  For your convenience, many other
-commands have been added in addition to 'C-b', 'C-f', 'C-d', and <DEL>.
-Here are some commands for moving more rapidly about the line.
-
-'C-a'
-     Move to the start of the line.
-'C-e'
-     Move to the end of the line.
-'M-f'
-     Move forward a word, where a word is composed of letters and
-     digits.
-'M-b'
-     Move backward a word.
-'C-l'
-     Clear the screen, reprinting the current line at the top.
-
-   Notice how 'C-f' moves forward a character, while 'M-f' moves forward
-a word.  It is a loose convention that control keystrokes operate on
-characters while meta keystrokes operate on words.
-
-\1f
-File: readline.info,  Node: Readline Killing Commands,  Next: Readline Arguments,  Prev: Readline Movement Commands,  Up: Readline Interaction
-
-1.2.3 Readline Killing Commands
--------------------------------
-
-"Killing" text means to delete the text from the line, but to save it
-away for later use, usually by "yanking" (re-inserting) it back into the
-line.  ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
-
-   If the description for a command says that it 'kills' text, then you
-can be sure that you can get the text back in a different (or the same)
-place later.
-
-   When you use a kill command, the text is saved in a "kill-ring".  Any
-number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill ring is not line
-specific; the text that you killed on a previously typed line is
-available to be yanked back later, when you are typing another line.
-
-   Here is the list of commands for killing text.
-
-'C-k'
-     Kill the text from the current cursor position to the end of the
-     line.
-
-'M-d'
-     Kill from the cursor to the end of the current word, or, if between
-     words, to the end of the next word.  Word boundaries are the same
-     as those used by 'M-f'.
-
-'M-<DEL>'
-     Kill from the cursor the start of the current word, or, if between
-     words, to the start of the previous word.  Word boundaries are the
-     same as those used by 'M-b'.
-
-'C-w'
-     Kill from the cursor to the previous whitespace.  This is different
-     than 'M-<DEL>' because the word boundaries differ.
-
-   Here is how to "yank" the text back into the line.  Yanking means to
-copy the most-recently-killed text from the kill buffer.
-
-'C-y'
-     Yank the most recently killed text back into the buffer at the
-     cursor.
-
-'M-y'
-     Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is 'C-y' or 'M-y'.
-
-\1f
-File: readline.info,  Node: Readline Arguments,  Next: Searching,  Prev: Readline Killing Commands,  Up: Readline Interaction
-
-1.2.4 Readline Arguments
-------------------------
-
-You can pass numeric arguments to Readline commands.  Sometimes the
-argument acts as a repeat count, other times it is the sign of the
-argument that is significant.  If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
-start of the line, you might type 'M-- C-k'.
-
-   The general way to pass numeric arguments to a command is to type
-meta digits before the command.  If the first 'digit' typed is a minus
-sign ('-'), then the sign of the argument will be negative.  Once you
-have typed one meta digit to get the argument started, you can type the
-remainder of the digits, and then the command.  For example, to give the
-'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will
-delete the next ten characters on the input line.
-
-\1f
-File: readline.info,  Node: Searching,  Prev: Readline Arguments,  Up: Readline Interaction
-
-1.2.5 Searching for Commands in the History
--------------------------------------------
-
-Readline provides commands for searching through the command history for
-lines containing a specified string.  There are two search modes:
-"incremental" and "non-incremental".
-
-   Incremental searches begin before the user has finished typing the
-search string.  As each character of the search string is typed,
-Readline displays the next entry from the history matching the string
-typed so far.  An incremental search requires only as many characters as
-needed to find the desired history entry.  To search backward in the
-history for a particular string, type 'C-r'.  Typing 'C-s' searches
-forward through the history.  The characters present in the value of the
-'isearch-terminators' variable are used to terminate an incremental
-search.  If that variable has not been assigned a value, the <ESC> and
-'C-J' characters will terminate an incremental search.  'C-g' will abort
-an incremental search and restore the original line.  When the search is
-terminated, the history entry containing the search string becomes the
-current line.
-
-   To find other matching entries in the history list, type 'C-r' or
-'C-s' as appropriate.  This will search backward or forward in the
-history for the next entry matching the search string typed so far.  Any
-other key sequence bound to a Readline command will terminate the search
-and execute that command.  For instance, a <RET> will terminate the
-search and accept the line, thereby executing the command from the
-history list.  A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
-   Readline remembers the last incremental search string.  If two 'C-r's
-are typed without any intervening characters defining a new search
-string, any remembered search string is used.
-
-   Non-incremental searches read the entire search string before
-starting to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
-
-\1f
-File: readline.info,  Node: Readline Init File,  Next: Bindable Readline Commands,  Prev: Readline Interaction,  Up: Command Line Editing
-
-1.3 Readline Init File
-======================
-
-Although the Readline library comes with a set of Emacs-like keybindings
-installed by default, it is possible to use a different set of
-keybindings.  Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
-directory.  The name of this file is taken from the value of the
-environment variable 'INPUTRC'.  If that variable is unset, the default
-is '~/.inputrc'.  If that file does not exist or cannot be read, the
-ultimate default is '/etc/inputrc'.
-
-   When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
-
-   In addition, the 'C-x C-r' command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-* Menu:
-
-* Readline Init File Syntax::  Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs::        Conditional key bindings in the inputrc file.
-
-* Sample Init File::           An example inputrc file.
-
-\1f
-File: readline.info,  Node: Readline Init File Syntax,  Next: Conditional Init Constructs,  Up: Readline Init File
-
-1.3.1 Readline Init File Syntax
--------------------------------
-
-There are only a few basic constructs allowed in the Readline init file.
-Blank lines are ignored.  Lines beginning with a '#' are comments.
-Lines beginning with a '$' indicate conditional constructs (*note
-Conditional Init Constructs::).  Other lines denote variable settings
-and key bindings.
-
-Variable Settings
-     You can modify the run-time behavior of Readline by altering the
-     values of variables in Readline using the 'set' command within the
-     init file.  The syntax is simple:
-
-          set VARIABLE VALUE
-
-     Here, for example, is how to change from the default Emacs-like key
-     binding to use 'vi' line editing commands:
-
-          set editing-mode vi
-
-     Variable names and values, where appropriate, are recognized
-     without regard to case.  Unrecognized variable names are ignored.
-
-     Boolean variables (those that can be set to on or off) are set to
-     on if the value is null or empty, ON (case-insensitive), or 1.  Any
-     other value results in the variable being set to off.
-
-     A great deal of run-time behavior is changeable with the following
-     variables.
-
-     'bell-style'
-          Controls what happens when Readline wants to ring the terminal
-          bell.  If set to 'none', Readline never rings the bell.  If
-          set to 'visible', Readline uses a visible bell if one is
-          available.  If set to 'audible' (the default), Readline
-          attempts to ring the terminal's bell.
-
-     'bind-tty-special-chars'
-          If set to 'on' (the default), Readline attempts to bind the
-          control characters treated specially by the kernel's terminal
-          driver to their Readline equivalents.
-
-     'blink-matching-paren'
-          If set to 'on', Readline attempts to briefly move the cursor
-          to an opening parenthesis when a closing parenthesis is
-          inserted.  The default is 'off'.
-
-     'colored-completion-prefix'
-          If set to 'on', when listing completions, Readline displays
-          the common prefix of the set of possible completions using a
-          different color.  The color definitions are taken from the
-          value of the 'LS_COLORS' environment variable.  The default is
-          'off'.
-
-     'colored-stats'
-          If set to 'on', Readline displays possible completions using
-          different colors to indicate their file type.  The color
-          definitions are taken from the value of the 'LS_COLORS'
-          environment variable.  The default is 'off'.
-
-     'comment-begin'
-          The string to insert at the beginning of the line when the
-          'insert-comment' command is executed.  The default value is
-          '"#"'.
-
-     'completion-display-width'
-          The number of screen columns used to display possible matches
-          when performing completion.  The value is ignored if it is
-          less than 0 or greater than the terminal screen width.  A
-          value of 0 will cause matches to be displayed one per line.
-          The default value is -1.
-
-     'completion-ignore-case'
-          If set to 'on', Readline performs filename matching and
-          completion in a case-insensitive fashion.  The default value
-          is 'off'.
-
-     'completion-map-case'
-          If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
-          Readline treats hyphens ('-') and underscores ('_') as
-          equivalent when performing case-insensitive filename matching
-          and completion.
-
-     'completion-prefix-display-length'
-          The length in characters of the common prefix of a list of
-          possible completions that is displayed without modification.
-          When set to a value greater than zero, common prefixes longer
-          than this value are replaced with an ellipsis when displaying
-          possible completions.
-
-     'completion-query-items'
-          The number of possible completions that determines when the
-          user is asked whether the list of possibilities should be
-          displayed.  If the number of possible completions is greater
-          than this value, Readline will ask the user whether or not he
-          wishes to view them; otherwise, they are simply listed.  This
-          variable must be set to an integer value greater than or equal
-          to 0.  A negative value means Readline should never ask.  The
-          default limit is '100'.
-
-     'convert-meta'
-          If set to 'on', Readline will convert characters with the
-          eighth bit set to an ASCII key sequence by stripping the
-          eighth bit and prefixing an <ESC> character, converting them
-          to a meta-prefixed key sequence.  The default value is 'on'.
-
-     'disable-completion'
-          If set to 'On', Readline will inhibit word completion.
-          Completion characters will be inserted into the line as if
-          they had been mapped to 'self-insert'.  The default is 'off'.
-
-     'editing-mode'
-          The 'editing-mode' variable controls which default set of key
-          bindings is used.  By default, Readline starts up in Emacs
-          editing mode, where the keystrokes are most similar to Emacs.
-          This variable can be set to either 'emacs' or 'vi'.
-
-     'emacs-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when emacs editing mode is active.  The
-          value is expanded like a key binding, so the standard set of
-          meta- and control prefixes and backslash escape sequences is
-          available.  Use the '\1' and '\2' escapes to begin and end
-          sequences of non-printing characters, which can be used to
-          embed a terminal control sequence into the mode string.  The
-          default is '@'.
-
-     'echo-control-characters'
-          When set to 'on', on operating systems that indicate they
-          support it, readline echoes a character corresponding to a
-          signal generated from the keyboard.  The default is 'on'.
-
-     'enable-bracketed-paste'
-          When set to 'On', Readline will configure the terminal in a
-          way that will enable it to insert each paste into the editing
-          buffer as a single string of characters, instead of treating
-          each character as if it had been read from the keyboard.  This
-          can prevent pasted characters from being interpreted as
-          editing commands.  The default is 'off'.
-
-     'enable-keypad'
-          When set to 'on', Readline will try to enable the application
-          keypad when it is called.  Some systems need this to enable
-          the arrow keys.  The default is 'off'.
-
-     'enable-meta-key'
-          When set to 'on', Readline will try to enable any meta
-          modifier key the terminal claims to support when it is called.
-          On many terminals, the meta key is used to send eight-bit
-          characters.  The default is 'on'.
-
-     'expand-tilde'
-          If set to 'on', tilde expansion is performed when Readline
-          attempts word completion.  The default is 'off'.
-
-     'history-preserve-point'
-          If set to 'on', the history code attempts to place the point
-          (the current cursor position) at the same location on each
-          history line retrieved with 'previous-history' or
-          'next-history'.  The default is 'off'.
-
-     'history-size'
-          Set the maximum number of history entries saved in the history
-          list.  If set to zero, any existing history entries are
-          deleted and no new entries are saved.  If set to a value less
-          than zero, the number of history entries is not limited.  By
-          default, the number of history entries is not limited.
-
-     'horizontal-scroll-mode'
-          This variable can be set to either 'on' or 'off'.  Setting it
-          to 'on' means that the text of the lines being edited will
-          scroll horizontally on a single screen line when they are
-          longer than the width of the screen, instead of wrapping onto
-          a new screen line.  By default, this variable is set to 'off'.
-
-     'input-meta'
-          If set to 'on', Readline will enable eight-bit input (it will
-          not clear the eighth bit in the characters it reads),
-          regardless of what the terminal claims it can support.  The
-          default value is 'off'.  The name 'meta-flag' is a synonym for
-          this variable.
-
-     'isearch-terminators'
-          The string of characters that should terminate an incremental
-          search without subsequently executing the character as a
-          command (*note Searching::).  If this variable has not been
-          given a value, the characters <ESC> and 'C-J' will terminate
-          an incremental search.
-
-     'keymap'
-          Sets Readline's idea of the current keymap for key binding
-          commands.  Acceptable 'keymap' names are 'emacs',
-          'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
-          'vi-command', and 'vi-insert'.  'vi' is equivalent to
-          'vi-command'; 'emacs' is equivalent to 'emacs-standard'.  The
-          default value is 'emacs'.  The value of the 'editing-mode'
-          variable also affects the default keymap.
-
-     'keyseq-timeout'
-          Specifies the duration Readline will wait for a character when
-          reading an ambiguous key sequence (one that can form a
-          complete key sequence using the input read so far, or can take
-          additional input to complete a longer key sequence).  If no
-          input is received within the timeout, Readline will use the
-          shorter but complete key sequence.  Readline uses this value
-          to determine whether or not input is available on the current
-          input source ('rl_instream' by default).  The value is
-          specified in milliseconds, so a value of 1000 means that
-          Readline will wait one second for additional input.  If this
-          variable is set to a value less than or equal to zero, or to a
-          non-numeric value, Readline will wait until another key is
-          pressed to decide which key sequence to complete.  The default
-          value is '500'.
-
-     'mark-directories'
-          If set to 'on', completed directory names have a slash
-          appended.  The default is 'on'.
-
-     'mark-modified-lines'
-          This variable, when set to 'on', causes Readline to display an
-          asterisk ('*') at the start of history lines which have been
-          modified.  This variable is 'off' by default.
-
-     'mark-symlinked-directories'
-          If set to 'on', completed names which are symbolic links to
-          directories have a slash appended (subject to the value of
-          'mark-directories').  The default is 'off'.
-
-     'match-hidden-files'
-          This variable, when set to 'on', causes Readline to match
-          files whose names begin with a '.' (hidden files) when
-          performing filename completion.  If set to 'off', the leading
-          '.' must be supplied by the user in the filename to be
-          completed.  This variable is 'on' by default.
-
-     'menu-complete-display-prefix'
-          If set to 'on', menu completion displays the common prefix of
-          the list of possible completions (which may be empty) before
-          cycling through the list.  The default is 'off'.
-
-     'output-meta'
-          If set to 'on', Readline will display characters with the
-          eighth bit set directly rather than as a meta-prefixed escape
-          sequence.  The default is 'off'.
-
-     'page-completions'
-          If set to 'on', Readline uses an internal 'more'-like pager to
-          display a screenful of possible completions at a time.  This
-          variable is 'on' by default.
-
-     'print-completions-horizontally'
-          If set to 'on', Readline will display completions with matches
-          sorted horizontally in alphabetical order, rather than down
-          the screen.  The default is 'off'.
-
-     'revert-all-at-newline'
-          If set to 'on', Readline will undo all changes to history
-          lines before returning when 'accept-line' is executed.  By
-          default, history lines may be modified and retain individual
-          undo lists across calls to 'readline'.  The default is 'off'.
-
-     'show-all-if-ambiguous'
-          This alters the default behavior of the completion functions.
-          If set to 'on', words which have more than one possible
-          completion cause the matches to be listed immediately instead
-          of ringing the bell.  The default value is 'off'.
-
-     'show-all-if-unmodified'
-          This alters the default behavior of the completion functions
-          in a fashion similar to SHOW-ALL-IF-AMBIGUOUS.  If set to
-          'on', words which have more than one possible completion
-          without any possible partial completion (the possible
-          completions don't share a common prefix) cause the matches to
-          be listed immediately instead of ringing the bell.  The
-          default value is 'off'.
-
-     'show-mode-in-prompt'
-          If set to 'on', add a character to the beginning of the prompt
-          indicating the editing mode: emacs, vi command, or vi
-          insertion.  The mode strings are user-settable.  The default
-          value is 'off'.
-
-     'skip-completed-text'
-          If set to 'on', this alters the default completion behavior
-          when inserting a single match into the line.  It's only active
-          when performing completion in the middle of a word.  If
-          enabled, readline does not insert characters from the
-          completion that match characters after point in the word being
-          completed, so portions of the word following the cursor are
-          not duplicated.  For instance, if this is enabled, attempting
-          completion when the cursor is after the 'e' in 'Makefile' will
-          result in 'Makefile' rather than 'Makefilefile', assuming
-          there is a single possible completion.  The default value is
-          'off'.
-
-     'vi-cmd-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when vi editing mode is active and in
-          command mode.  The value is expanded like a key binding, so
-          the standard set of meta- and control prefixes and backslash
-          escape sequences is available.  Use the '\1' and '\2' escapes
-          to begin and end sequences of non-printing characters, which
-          can be used to embed a terminal control sequence into the mode
-          string.  The default is '(cmd)'.
-
-     'vi-ins-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when vi editing mode is active and in
-          insertion mode.  The value is expanded like a key binding, so
-          the standard set of meta- and control prefixes and backslash
-          escape sequences is available.  Use the '\1' and '\2' escapes
-          to begin and end sequences of non-printing characters, which
-          can be used to embed a terminal control sequence into the mode
-          string.  The default is '(ins)'.
-
-     'visible-stats'
-          If set to 'on', a character denoting a file's type is appended
-          to the filename when listing possible completions.  The
-          default is 'off'.
-
-Key Bindings
-     The syntax for controlling key bindings in the init file is simple.
-     First you need to find the name of the command that you want to
-     change.  The following sections contain tables of the command name,
-     the default keybinding, if any, and a short description of what the
-     command does.
-
-     Once you know the name of the command, simply place on a line in
-     the init file the name of the key you wish to bind the command to,
-     a colon, and then the name of the command.  There can be no space
-     between the key name and the colon - that will be interpreted as
-     part of the key name.  The name of the key can be expressed in
-     different ways, depending on what you find most comfortable.
-
-     In addition to command names, readline allows keys to be bound to a
-     string that is inserted when the key is pressed (a MACRO).
-
-     KEYNAME: FUNCTION-NAME or MACRO
-          KEYNAME is the name of a key spelled out in English.  For
-          example:
-               Control-u: universal-argument
-               Meta-Rubout: backward-kill-word
-               Control-o: "> output"
-
-          In the above example, 'C-u' is bound to the function
-          'universal-argument', 'M-DEL' is bound to the function
-          'backward-kill-word', and 'C-o' is bound to run the macro
-          expressed on the right hand side (that is, to insert the text
-          '> output' into the line).
-
-          A number of symbolic character names are recognized while
-          processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
-          NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
-
-     "KEYSEQ": FUNCTION-NAME or MACRO
-          KEYSEQ differs from KEYNAME above in that strings denoting an
-          entire key sequence can be specified, by placing the key
-          sequence in double quotes.  Some GNU Emacs style key escapes
-          can be used, as in the following example, but the special
-          character names are not recognized.
-
-               "\C-u": universal-argument
-               "\C-x\C-r": re-read-init-file
-               "\e[11~": "Function Key 1"
-
-          In the above example, 'C-u' is again bound to the function
-          'universal-argument' (just as it was in the first example),
-          ''C-x' 'C-r'' is bound to the function 're-read-init-file',
-          and '<ESC> <[> <1> <1> <~>' is bound to insert the text
-          'Function Key 1'.
-
-     The following GNU Emacs style escape sequences are available when
-     specifying key sequences:
-
-     '\C-'
-          control prefix
-     '\M-'
-          meta prefix
-     '\e'
-          an escape character
-     '\\'
-          backslash
-     '\"'
-          <">, a double quotation mark
-     '\''
-          <'>, a single quote or apostrophe
-
-     In addition to the GNU Emacs style escape sequences, a second set
-     of backslash escapes is available:
-
-     '\a'
-          alert (bell)
-     '\b'
-          backspace
-     '\d'
-          delete
-     '\f'
-          form feed
-     '\n'
-          newline
-     '\r'
-          carriage return
-     '\t'
-          horizontal tab
-     '\v'
-          vertical tab
-     '\NNN'
-          the eight-bit character whose value is the octal value NNN
-          (one to three digits)
-     '\xHH'
-          the eight-bit character whose value is the hexadecimal value
-          HH (one or two hex digits)
-
-     When entering the text of a macro, single or double quotes must be
-     used to indicate a macro definition.  Unquoted text is assumed to
-     be a function name.  In the macro body, the backslash escapes
-     described above are expanded.  Backslash will quote any other
-     character in the macro text, including '"' and '''.  For example,
-     the following binding will make ''C-x' \' insert a single '\' into
-     the line:
-          "\C-x\\": "\\"
-
-\1f
-File: readline.info,  Node: Conditional Init Constructs,  Next: Sample Init File,  Prev: Readline Init File Syntax,  Up: Readline Init File
-
-1.3.2 Conditional Init Constructs
----------------------------------
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key bindings and
-variable settings to be performed as the result of tests.  There are
-four parser directives used.
-
-'$if'
-     The '$if' construct allows bindings to be made based on the editing
-     mode, the terminal being used, or the application using Readline.
-     The text of the test extends to the end of the line; no characters
-     are required to isolate it.
-
-     'mode'
-          The 'mode=' form of the '$if' directive is used to test
-          whether Readline is in 'emacs' or 'vi' mode.  This may be used
-          in conjunction with the 'set keymap' command, for instance, to
-          set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps
-          only if Readline is starting out in 'emacs' mode.
-
-     'term'
-          The 'term=' form may be used to include terminal-specific key
-          bindings, perhaps to bind the key sequences output by the
-          terminal's function keys.  The word on the right side of the
-          '=' is tested against both the full name of the terminal and
-          the portion of the terminal name before the first '-'.  This
-          allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
-
-     'application'
-          The APPLICATION construct is used to include
-          application-specific settings.  Each program using the
-          Readline library sets the APPLICATION NAME, and you can test
-          for a particular value.  This could be used to bind key
-          sequences to functions useful for a specific program.  For
-          instance, the following command adds a key sequence that
-          quotes the current or previous word in Bash:
-               $if Bash
-               # Quote the current or previous word
-               "\C-xq": "\eb\"\ef\""
-               $endif
-
-'$endif'
-     This command, as seen in the previous example, terminates an '$if'
-     command.
-
-'$else'
-     Commands in this branch of the '$if' directive are executed if the
-     test fails.
-
-'$include'
-     This directive takes a single filename as an argument and reads
-     commands and bindings from that file.  For example, the following
-     directive reads from '/etc/inputrc':
-          $include /etc/inputrc
-
-\1f
-File: readline.info,  Node: Sample Init File,  Prev: Conditional Init Constructs,  Up: Readline Init File
-
-1.3.3 Sample Init File
-----------------------
-
-Here is an example of an INPUTRC file.  This illustrates key binding,
-variable assignment, and conditional syntax.
-
-     # This file controls the behaviour of line input editing for
-     # programs that use the GNU Readline library.  Existing
-     # programs include FTP, Bash, and GDB.
-     #
-     # You can re-read the inputrc file with C-x C-r.
-     # Lines beginning with '#' are comments.
-     #
-     # First, include any system-wide bindings and variable
-     # assignments from /etc/Inputrc
-     $include /etc/Inputrc
-
-     #
-     # Set various bindings for emacs mode.
-
-     set editing-mode emacs
-
-     $if mode=emacs
-
-     Meta-Control-h:   backward-kill-word      Text after the function name is ignored
-
-     #
-     # Arrow keys in keypad mode
-     #
-     #"\M-OD":        backward-char
-     #"\M-OC":        forward-char
-     #"\M-OA":        previous-history
-     #"\M-OB":        next-history
-     #
-     # Arrow keys in ANSI mode
-     #
-     "\M-[D":        backward-char
-     "\M-[C":        forward-char
-     "\M-[A":        previous-history
-     "\M-[B":        next-history
-     #
-     # Arrow keys in 8 bit keypad mode
-     #
-     #"\M-\C-OD":       backward-char
-     #"\M-\C-OC":       forward-char
-     #"\M-\C-OA":       previous-history
-     #"\M-\C-OB":       next-history
-     #
-     # Arrow keys in 8 bit ANSI mode
-     #
-     #"\M-\C-[D":       backward-char
-     #"\M-\C-[C":       forward-char
-     #"\M-\C-[A":       previous-history
-     #"\M-\C-[B":       next-history
-
-     C-q: quoted-insert
-
-     $endif
-
-     # An old-style binding.  This happens to be the default.
-     TAB: complete
-
-     # Macros that are convenient for shell interaction
-     $if Bash
-     # edit the path
-     "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-     # prepare to type a quoted word --
-     # insert open and close double quotes
-     # and move to just after the open quote
-     "\C-x\"": "\"\"\C-b"
-     # insert a backslash (testing backslash escapes
-     # in sequences and macros)
-     "\C-x\\": "\\"
-     # Quote the current or previous word
-     "\C-xq": "\eb\"\ef\""
-     # Add a binding to refresh the line, which is unbound
-     "\C-xr": redraw-current-line
-     # Edit variable on current line.
-     "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-     $endif
-
-     # use a visible bell if one is available
-     set bell-style visible
-
-     # don't strip characters to 7 bits when reading
-     set input-meta on
-
-     # allow iso-latin1 characters to be inserted rather
-     # than converted to prefix-meta sequences
-     set convert-meta off
-
-     # display characters with the eighth bit set directly
-     # rather than as meta-prefixed characters
-     set output-meta on
-
-     # if there are more than 150 possible completions for
-     # a word, ask the user if he wants to see all of them
-     set completion-query-items 150
-
-     # For FTP
-     $if Ftp
-     "\C-xg": "get \M-?"
-     "\C-xt": "put \M-?"
-     "\M-.": yank-last-arg
-     $endif
-
-\1f
-File: readline.info,  Node: Bindable Readline Commands,  Next: Readline vi Mode,  Prev: Readline Init File,  Up: Command Line Editing
-
-1.4 Bindable Readline Commands
-==============================
-
-* Menu:
-
-* Commands For Moving::                Moving about the line.
-* Commands For History::       Getting at previous lines.
-* Commands For Text::          Commands for changing text.
-* Commands For Killing::       Commands for killing and yanking.
-* Numeric Arguments::          Specifying numeric arguments, repeat counts.
-* Commands For Completion::    Getting Readline to do the typing for you.
-* Keyboard Macros::            Saving and re-executing typed characters
-* Miscellaneous Commands::     Other miscellaneous commands.
-
-This section describes Readline commands that may be bound to key
-sequences.  Command names without an accompanying key sequence are
-unbound by default.
-
-   In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the 'set-mark'
-command.  The text between the point and mark is referred to as the
-"region".
-
-\1f
-File: readline.info,  Node: Commands For Moving,  Next: Commands For History,  Up: Bindable Readline Commands
-
-1.4.1 Commands For Moving
--------------------------
-
-'beginning-of-line (C-a)'
-     Move to the start of the current line.
-
-'end-of-line (C-e)'
-     Move to the end of the line.
-
-'forward-char (C-f)'
-     Move forward a character.
-
-'backward-char (C-b)'
-     Move back a character.
-
-'forward-word (M-f)'
-     Move forward to the end of the next word.  Words are composed of
-     letters and digits.
-
-'backward-word (M-b)'
-     Move back to the start of the current or previous word.  Words are
-     composed of letters and digits.
-
-'clear-screen (C-l)'
-     Clear the screen and redraw the current line, leaving the current
-     line at the top of the screen.
-
-'redraw-current-line ()'
-     Refresh the current line.  By default, this is unbound.
-
-\1f
-File: readline.info,  Node: Commands For History,  Next: Commands For Text,  Prev: Commands For Moving,  Up: Bindable Readline Commands
-
-1.4.2 Commands For Manipulating The History
--------------------------------------------
-
-'accept-line (Newline or Return)'
-     Accept the line regardless of where the cursor is.  If this line is
-     non-empty, it may be added to the history list for future recall
-     with 'add_history()'.  If this line is a modified history line, the
-     history line is restored to its original state.
-
-'previous-history (C-p)'
-     Move 'back' through the history list, fetching the previous
-     command.
-
-'next-history (C-n)'
-     Move 'forward' through the history list, fetching the next command.
-
-'beginning-of-history (M-<)'
-     Move to the first line in the history.
-
-'end-of-history (M->)'
-     Move to the end of the input history, i.e., the line currently
-     being entered.
-
-'reverse-search-history (C-r)'
-     Search backward starting at the current line and moving 'up'
-     through the history as necessary.  This is an incremental search.
-
-'forward-search-history (C-s)'
-     Search forward starting at the current line and moving 'down'
-     through the history as necessary.  This is an incremental search.
-
-'non-incremental-reverse-search-history (M-p)'
-     Search backward starting at the current line and moving 'up'
-     through the history as necessary using a non-incremental search for
-     a string supplied by the user.  The search string may match
-     anywhere in a history line.
-
-'non-incremental-forward-search-history (M-n)'
-     Search forward starting at the current line and moving 'down'
-     through the history as necessary using a non-incremental search for
-     a string supplied by the user.  The search string may match
-     anywhere in a history line.
-
-'history-search-forward ()'
-     Search forward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-'history-search-backward ()'
-     Search backward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-'history-substr-search-forward ()'
-     Search forward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string may match anywhere in a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-'history-substr-search-backward ()'
-     Search backward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string may match anywhere in a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-'yank-nth-arg (M-C-y)'
-     Insert the first argument to the previous command (usually the
-     second word on the previous line) at point.  With an argument N,
-     insert the Nth word from the previous command (the words in the
-     previous command begin with word 0).  A negative argument inserts
-     the Nth word from the end of the previous command.  Once the
-     argument N is computed, the argument is extracted as if the '!N'
-     history expansion had been specified.
-
-'yank-last-arg (M-. or M-_)'
-     Insert last argument to the previous command (the last word of the
-     previous history entry).  With a numeric argument, behave exactly
-     like 'yank-nth-arg'.  Successive calls to 'yank-last-arg' move back
-     through the history list, inserting the last word (or the word
-     specified by the argument to the first call) of each line in turn.
-     Any numeric argument supplied to these successive calls determines
-     the direction to move through the history.  A negative argument
-     switches the direction through the history (back or forward).  The
-     history expansion facilities are used to extract the last argument,
-     as if the '!$' history expansion had been specified.
-
-\1f
-File: readline.info,  Node: Commands For Text,  Next: Commands For Killing,  Prev: Commands For History,  Up: Bindable Readline Commands
-
-1.4.3 Commands For Changing Text
---------------------------------
-
-'end-of-file (usually C-d)'
-     The character indicating end-of-file as set, for example, by
-     'stty'.  If this character is read when there are no characters on
-     the line, and point is at the beginning of the line, Readline
-     interprets it as the end of input and returns EOF.
-
-'delete-char (C-d)'
-     Delete the character at point.  If this function is bound to the
-     same character as the tty EOF character, as 'C-d' commonly is, see
-     above for the effects.
-
-'backward-delete-char (Rubout)'
-     Delete the character behind the cursor.  A numeric argument means
-     to kill the characters instead of deleting them.
-
-'forward-backward-delete-char ()'
-     Delete the character under the cursor, unless the cursor is at the
-     end of the line, in which case the character behind the cursor is
-     deleted.  By default, this is not bound to a key.
-
-'quoted-insert (C-q or C-v)'
-     Add the next character typed to the line verbatim.  This is how to
-     insert key sequences like 'C-q', for example.
-
-'tab-insert (M-<TAB>)'
-     Insert a tab character.
-
-'self-insert (a, b, A, 1, !, ...)'
-     Insert yourself.
-
-'bracketed-paste-begin ()'
-     This function is intended to be bound to the "bracketed paste"
-     escape sequence sent by some terminals, and such a binding is
-     assigned by default.  It allows Readline to insert the pasted text
-     as a single unit without treating each character as if it had been
-     read from the keyboard.  The characters are inserted as if each one
-     was bound to 'self-insert') instead of executing any editing
-     commands.
-
-'transpose-chars (C-t)'
-     Drag the character before the cursor forward over the character at
-     the cursor, moving the cursor forward as well.  If the insertion
-     point is at the end of the line, then this transposes the last two
-     characters of the line.  Negative arguments have no effect.
-
-'transpose-words (M-t)'
-     Drag the word before point past the word after point, moving point
-     past that word as well.  If the insertion point is at the end of
-     the line, this transposes the last two words on the line.
-
-'upcase-word (M-u)'
-     Uppercase the current (or following) word.  With a negative
-     argument, uppercase the previous word, but do not move the cursor.
-
-'downcase-word (M-l)'
-     Lowercase the current (or following) word.  With a negative
-     argument, lowercase the previous word, but do not move the cursor.
-
-'capitalize-word (M-c)'
-     Capitalize the current (or following) word.  With a negative
-     argument, capitalize the previous word, but do not move the cursor.
-
-'overwrite-mode ()'
-     Toggle overwrite mode.  With an explicit positive numeric argument,
-     switches to overwrite mode.  With an explicit non-positive numeric
-     argument, switches to insert mode.  This command affects only
-     'emacs' mode; 'vi' mode does overwrite differently.  Each call to
-     'readline()' starts in insert mode.
-
-     In overwrite mode, characters bound to 'self-insert' replace the
-     text at point rather than pushing the text to the right.
-     Characters bound to 'backward-delete-char' replace the character
-     before point with a space.
-
-     By default, this command is unbound.
-
-\1f
-File: readline.info,  Node: Commands For Killing,  Next: Numeric Arguments,  Prev: Commands For Text,  Up: Bindable Readline Commands
-
-1.4.4 Killing And Yanking
--------------------------
-
-'kill-line (C-k)'
-     Kill the text from point to the end of the line.
-
-'backward-kill-line (C-x Rubout)'
-     Kill backward from the cursor to the beginning of the current line.
-
-'unix-line-discard (C-u)'
-     Kill backward from the cursor to the beginning of the current line.
-
-'kill-whole-line ()'
-     Kill all characters on the current line, no matter where point is.
-     By default, this is unbound.
-
-'kill-word (M-d)'
-     Kill from point to the end of the current word, or if between
-     words, to the end of the next word.  Word boundaries are the same
-     as 'forward-word'.
-
-'backward-kill-word (M-<DEL>)'
-     Kill the word behind point.  Word boundaries are the same as
-     'backward-word'.
-
-'unix-word-rubout (C-w)'
-     Kill the word behind point, using white space as a word boundary.
-     The killed text is saved on the kill-ring.
-
-'unix-filename-rubout ()'
-     Kill the word behind point, using white space and the slash
-     character as the word boundaries.  The killed text is saved on the
-     kill-ring.
-
-'delete-horizontal-space ()'
-     Delete all spaces and tabs around point.  By default, this is
-     unbound.
-
-'kill-region ()'
-     Kill the text in the current region.  By default, this command is
-     unbound.
-
-'copy-region-as-kill ()'
-     Copy the text in the region to the kill buffer, so it can be yanked
-     right away.  By default, this command is unbound.
-
-'copy-backward-word ()'
-     Copy the word before point to the kill buffer.  The word boundaries
-     are the same as 'backward-word'.  By default, this command is
-     unbound.
-
-'copy-forward-word ()'
-     Copy the word following point to the kill buffer.  The word
-     boundaries are the same as 'forward-word'.  By default, this
-     command is unbound.
-
-'yank (C-y)'
-     Yank the top of the kill ring into the buffer at point.
-
-'yank-pop (M-y)'
-     Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is 'yank' or 'yank-pop'.
-
-\1f
-File: readline.info,  Node: Numeric Arguments,  Next: Commands For Completion,  Prev: Commands For Killing,  Up: Bindable Readline Commands
-
-1.4.5 Specifying Numeric Arguments
-----------------------------------
-
-'digit-argument (M-0, M-1, ... M--)'
-     Add this digit to the argument already accumulating, or start a new
-     argument.  'M--' starts a negative argument.
-
-'universal-argument ()'
-     This is another way to specify an argument.  If this command is
-     followed by one or more digits, optionally with a leading minus
-     sign, those digits define the argument.  If the command is followed
-     by digits, executing 'universal-argument' again ends the numeric
-     argument, but is otherwise ignored.  As a special case, if this
-     command is immediately followed by a character that is neither a
-     digit nor minus sign, the argument count for the next command is
-     multiplied by four.  The argument count is initially one, so
-     executing this function the first time makes the argument count
-     four, a second time makes the argument count sixteen, and so on.
-     By default, this is not bound to a key.
-
-\1f
-File: readline.info,  Node: Commands For Completion,  Next: Keyboard Macros,  Prev: Numeric Arguments,  Up: Bindable Readline Commands
-
-1.4.6 Letting Readline Type For You
------------------------------------
-
-'complete (<TAB>)'
-     Attempt to perform completion on the text before point.  The actual
-     completion performed is application-specific.  The default is
-     filename completion.
-
-'possible-completions (M-?)'
-     List the possible completions of the text before point.  When
-     displaying completions, Readline sets the number of columns used
-     for display to the value of 'completion-display-width', the value
-     of the environment variable 'COLUMNS', or the screen width, in that
-     order.
-
-'insert-completions (M-*)'
-     Insert all completions of the text before point that would have
-     been generated by 'possible-completions'.
-
-'menu-complete ()'
-     Similar to 'complete', but replaces the word to be completed with a
-     single match from the list of possible completions.  Repeated
-     execution of 'menu-complete' steps through the list of possible
-     completions, inserting each match in turn.  At the end of the list
-     of completions, the bell is rung (subject to the setting of
-     'bell-style') and the original text is restored.  An argument of N
-     moves N positions forward in the list of matches; a negative
-     argument may be used to move backward through the list.  This
-     command is intended to be bound to <TAB>, but is unbound by
-     default.
-
-'menu-complete-backward ()'
-     Identical to 'menu-complete', but moves backward through the list
-     of possible completions, as if 'menu-complete' had been given a
-     negative argument.
-
-'delete-char-or-list ()'
-     Deletes the character under the cursor if not at the beginning or
-     end of the line (like 'delete-char').  If at the end of the line,
-     behaves identically to 'possible-completions'.  This command is
-     unbound by default.
-
-\1f
-File: readline.info,  Node: Keyboard Macros,  Next: Miscellaneous Commands,  Prev: Commands For Completion,  Up: Bindable Readline Commands
-
-1.4.7 Keyboard Macros
----------------------
-
-'start-kbd-macro (C-x ()'
-     Begin saving the characters typed into the current keyboard macro.
-
-'end-kbd-macro (C-x ))'
-     Stop saving the characters typed into the current keyboard macro
-     and save the definition.
-
-'call-last-kbd-macro (C-x e)'
-     Re-execute the last keyboard macro defined, by making the
-     characters in the macro appear as if typed at the keyboard.
-
-'print-last-kbd-macro ()'
-     Print the last keboard macro defined in a format suitable for the
-     INPUTRC file.
-
-\1f
-File: readline.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up: Bindable Readline Commands
-
-1.4.8 Some Miscellaneous Commands
----------------------------------
-
-'re-read-init-file (C-x C-r)'
-     Read in the contents of the INPUTRC file, and incorporate any
-     bindings or variable assignments found there.
-
-'abort (C-g)'
-     Abort the current editing command and ring the terminal's bell
-     (subject to the setting of 'bell-style').
-
-'do-uppercase-version (M-a, M-b, M-X, ...)'
-     If the metafied character X is lowercase, run the command that is
-     bound to the corresponding uppercase character.
-
-'prefix-meta (<ESC>)'
-     Metafy the next character typed.  This is for keyboards without a
-     meta key.  Typing '<ESC> f' is equivalent to typing 'M-f'.
-
-'undo (C-_ or C-x C-u)'
-     Incremental undo, separately remembered for each line.
-
-'revert-line (M-r)'
-     Undo all changes made to this line.  This is like executing the
-     'undo' command enough times to get back to the beginning.
-
-'tilde-expand (M-~)'
-     Perform tilde expansion on the current word.
-
-'set-mark (C-@)'
-     Set the mark to the point.  If a numeric argument is supplied, the
-     mark is set to that position.
-
-'exchange-point-and-mark (C-x C-x)'
-     Swap the point with the mark.  The current cursor position is set
-     to the saved position, and the old cursor position is saved as the
-     mark.
-
-'character-search (C-])'
-     A character is read and point is moved to the next occurrence of
-     that character.  A negative count searches for previous
-     occurrences.
-
-'character-search-backward (M-C-])'
-     A character is read and point is moved to the previous occurrence
-     of that character.  A negative count searches for subsequent
-     occurrences.
-
-'skip-csi-sequence ()'
-     Read enough characters to consume a multi-key sequence such as
-     those defined for keys like Home and End.  Such sequences begin
-     with a Control Sequence Indicator (CSI), usually ESC-[.  If this
-     sequence is bound to "\e[", keys producing such sequences will have
-     no effect unless explicitly bound to a readline command, instead of
-     inserting stray characters into the editing buffer.  This is
-     unbound by default, but usually bound to ESC-[.
-
-'insert-comment (M-#)'
-     Without a numeric argument, the value of the 'comment-begin'
-     variable is inserted at the beginning of the current line.  If a
-     numeric argument is supplied, this command acts as a toggle: if the
-     characters at the beginning of the line do not match the value of
-     'comment-begin', the value is inserted, otherwise the characters in
-     'comment-begin' are deleted from the beginning of the line.  In
-     either case, the line is accepted as if a newline had been typed.
-
-'dump-functions ()'
-     Print all of the functions and their key bindings to the Readline
-     output stream.  If a numeric argument is supplied, the output is
-     formatted in such a way that it can be made part of an INPUTRC
-     file.  This command is unbound by default.
-
-'dump-variables ()'
-     Print all of the settable variables and their values to the
-     Readline output stream.  If a numeric argument is supplied, the
-     output is formatted in such a way that it can be made part of an
-     INPUTRC file.  This command is unbound by default.
-
-'dump-macros ()'
-     Print all of the Readline key sequences bound to macros and the
-     strings they output.  If a numeric argument is supplied, the output
-     is formatted in such a way that it can be made part of an INPUTRC
-     file.  This command is unbound by default.
-
-'emacs-editing-mode (C-e)'
-     When in 'vi' command mode, this causes a switch to 'emacs' editing
-     mode.
-
-'vi-editing-mode (M-C-j)'
-     When in 'emacs' editing mode, this causes a switch to 'vi' editing
-     mode.
-
-\1f
-File: readline.info,  Node: Readline vi Mode,  Prev: Bindable Readline Commands,  Up: Command Line Editing
-
-1.5 Readline vi Mode
-====================
-
-While the Readline library does not have a full set of 'vi' editing
-functions, it does contain enough to allow simple editing of the line.
-The Readline 'vi' mode behaves as specified in the POSIX standard.
-
-   In order to switch interactively between 'emacs' and 'vi' editing
-modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi'
-mode and to vi-editing-mode in 'emacs' mode).  The Readline default is
-'emacs' mode.
-
-   When you enter a line in 'vi' mode, you are already placed in
-'insertion' mode, as if you had typed an 'i'.  Pressing <ESC> switches
-you into 'command' mode, where you can edit the text of the line with
-the standard 'vi' movement keys, move to previous history lines with 'k'
-and subsequent lines with 'j', and so forth.
-
-   This document describes the GNU Readline Library, a utility for
-aiding in the consistency of user interface across discrete programs
-that need to provide a command line interface.
-
-   Copyright (C) 1988-2014 Free Software Foundation, Inc.
-
-   Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
-   Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-   Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-\1f
-File: readline.info,  Node: Programming with GNU Readline,  Next: GNU Free Documentation License,  Prev: Command Line Editing,  Up: Top
-
-2 Programming with GNU Readline
-*******************************
-
-This chapter describes the interface between the GNU Readline Library
-and other programs.  If you are a programmer, and you wish to include
-the features found in GNU Readline such as completion, line editing, and
-interactive history manipulation in your own programs, this section is
-for you.
-
-* Menu:
-
-* Basic Behavior::     Using the default behavior of Readline.
-* Custom Functions::   Adding your own functions to Readline.
-* Readline Variables::                 Variables accessible to custom
-                                       functions.
-* Readline Convenience Functions::     Functions which Readline supplies to
-                                       aid in writing your own custom
-                                       functions.
-* Readline Signal Handling::   How Readline behaves when it receives signals.
-* Custom Completers::  Supplanting or supplementing Readline's
-                       completion functions.
-
-\1f
-File: readline.info,  Node: Basic Behavior,  Next: Custom Functions,  Up: Programming with GNU Readline
-
-2.1 Basic Behavior
-==================
-
-Many programs provide a command line interface, such as 'mail', 'ftp',
-and 'sh'.  For such programs, the default behaviour of Readline is
-sufficient.  This section describes how to use Readline in the simplest
-way possible, perhaps to replace calls in your code to 'gets()' or
-'fgets()'.
-
-   The function 'readline()' prints a prompt PROMPT and then reads and
-returns a single line of text from the user.  If PROMPT is 'NULL' or the
-empty string, no prompt is displayed.  The line 'readline' returns is
-allocated with 'malloc()'; the caller should 'free()' the line when it
-has finished with it.  The declaration for 'readline' in ANSI C is
-
-     char *readline (const char *PROMPT);
-
-So, one might say
-     char *line = readline ("Enter a line: ");
-in order to read a line of text from the user.  The line returned has
-the final newline removed, so only the text remains.
-
-   If 'readline' encounters an 'EOF' while reading the line, and the
-line is empty at that point, then '(char *)NULL' is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-
-   If you want the user to be able to get at the line later, (with <C-p>
-for example), you must call 'add_history()' to save the line away in a
-"history" list of such lines.
-
-     add_history (line);
-
-For full details on the GNU History Library, see the associated manual.
-
-   It is preferable to avoid saving empty lines on the history list,
-since users rarely have a burning need to reuse a blank line.  Here is a
-function which usefully replaces the standard 'gets()' library function,
-and has the advantage of no static buffer to overflow:
-
-     /* A static variable for holding the line. */
-     static char *line_read = (char *)NULL;
-
-     /* Read a string, and return a pointer to it.
-        Returns NULL on EOF. */
-     char *
-     rl_gets ()
-     {
-       /* If the buffer has already been allocated,
-          return the memory to the free pool. */
-       if (line_read)
-         {
-           free (line_read);
-           line_read = (char *)NULL;
-         }
-
-       /* Get a line from the user. */
-       line_read = readline ("");
-
-       /* If the line has any text in it,
-          save it on the history. */
-       if (line_read && *line_read)
-         add_history (line_read);
-
-       return (line_read);
-     }
-
-   This function gives the user the default behaviour of <TAB>
-completion: completion on file names.  If you do not want Readline to
-complete on filenames, you can change the binding of the <TAB> key with
-'rl_bind_key()'.
-
-     int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);
-
-   'rl_bind_key()' takes two arguments: KEY is the character that you
-want to bind, and FUNCTION is the address of the function to call when
-KEY is pressed.  Binding <TAB> to 'rl_insert()' makes <TAB> insert
-itself.  'rl_bind_key()' returns non-zero if KEY is not a valid ASCII
-character code (between 0 and 255).
-
-   Thus, to disable the default <TAB> behavior, the following suffices:
-     rl_bind_key ('\t', rl_insert);
-
-   This code should be executed once at the start of your program; you
-might write a function called 'initialize_readline()' which performs
-this and other desired initializations, such as installing custom
-completers (*note Custom Completers::).
-
-\1f
-File: readline.info,  Node: Custom Functions,  Next: Readline Variables,  Prev: Basic Behavior,  Up: Programming with GNU Readline
-
-2.2 Custom Functions
-====================
-
-Readline provides many functions for manipulating the text of the line,
-but it isn't possible to anticipate the needs of all programs.  This
-section describes the various functions and variables defined within the
-Readline library which allow a user program to add customized
-functionality to Readline.
-
-   Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an application
-writer should include the file '<readline/readline.h>' in any file that
-uses Readline's features.  Since some of the definitions in 'readline.h'
-use the 'stdio' library, the file '<stdio.h>' should be included before
-'readline.h'.
-
-   'readline.h' defines a C preprocessor variable that should be treated
-as an integer, 'RL_READLINE_VERSION', which may be used to conditionally
-compile application code depending on the installed Readline version.
-The value is a hexadecimal encoding of the major and minor version
-numbers of the library, of the form 0xMMMM.  MM is the two-digit major
-version number; MM is the two-digit minor version number.  For Readline
-4.2, for example, the value of 'RL_READLINE_VERSION' would be '0x0402'.
-
-* Menu:
-
-* Readline Typedefs::  C declarations to make code readable.
-* Function Writing::   Variables and calling conventions.
-
-\1f
-File: readline.info,  Node: Readline Typedefs,  Next: Function Writing,  Up: Custom Functions
-
-2.2.1 Readline Typedefs
------------------------
-
-For readability, we declare a number of new object types, all pointers
-to functions.
-
-   The reason for declaring these new types is to make it easier to
-write code describing pointers to C functions with appropriately
-prototyped arguments and return values.
-
-   For instance, say we want to declare a variable FUNC as a pointer to
-a function which takes two 'int' arguments and returns an 'int' (this is
-the type of all of the Readline bindable functions).  Instead of the
-classic C declaration
-
-   'int (*func)();'
-
-or the ANSI-C style declaration
-
-   'int (*func)(int, int);'
-
-we may write
-
-   'rl_command_func_t *func;'
-
-   The full list of function pointer types available is
-
-'typedef int rl_command_func_t (int, int);'
-
-'typedef char *rl_compentry_func_t (const char *, int);'
-
-'typedef char **rl_completion_func_t (const char *, int, int);'
-
-'typedef char *rl_quote_func_t (char *, int, char *);'
-
-'typedef char *rl_dequote_func_t (char *, int);'
-
-'typedef int rl_compignore_func_t (char **);'
-
-'typedef void rl_compdisp_func_t (char **, int, int);'
-
-'typedef int rl_hook_func_t (void);'
-
-'typedef int rl_getc_func_t (FILE *);'
-
-'typedef int rl_linebuf_func_t (char *, int);'
-
-'typedef int rl_intfunc_t (int);'
-'#define rl_ivoidfunc_t rl_hook_func_t'
-'typedef int rl_icpfunc_t (char *);'
-'typedef int rl_icppfunc_t (char **);'
-
-'typedef void rl_voidfunc_t (void);'
-'typedef void rl_vintfunc_t (int);'
-'typedef void rl_vcpfunc_t (char *);'
-'typedef void rl_vcppfunc_t (char **);'
-
-\1f
-File: readline.info,  Node: Function Writing,  Prev: Readline Typedefs,  Up: Custom Functions
-
-2.2.2 Writing a New Function
-----------------------------
-
-In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-
-   The calling sequence for a command 'foo' looks like
-
-     int foo (int count, int key)
-
-where COUNT is the numeric argument (or 1 if defaulted) and KEY is the
-key that invoked this function.
-
-   It is completely up to the function as to what should be done with
-the numeric argument.  Some functions use it as a repeat count, some as
-a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example).  Some choose to
-ignore it.  In general, if a function uses the numeric argument as a
-repeat count, it should be able to do something useful with both
-negative and positive arguments.  At the very least, it should be aware
-that it can be passed a negative argument.
-
-   A command function should return 0 if its action completes
-successfully, and a value greater than zero if some error occurs.  This
-is the convention obeyed by all of the builtin Readline bindable command
-functions.
-
-\1f
-File: readline.info,  Node: Readline Variables,  Next: Readline Convenience Functions,  Prev: Custom Functions,  Up: Programming with GNU Readline
-
-2.3 Readline Variables
-======================
-
-These variables are available to function writers.
-
- -- Variable: char * rl_line_buffer
-     This is the line gathered so far.  You are welcome to modify the
-     contents of the line, but see *note Allowing Undoing::.  The
-     function 'rl_extend_line_buffer' is available to increase the
-     memory allocated to 'rl_line_buffer'.
-
- -- Variable: int rl_point
-     The offset of the current cursor position in 'rl_line_buffer' (the
-     _point_).
-
- -- Variable: int rl_end
-     The number of characters present in 'rl_line_buffer'.  When
-     'rl_point' is at the end of the line, 'rl_point' and 'rl_end' are
-     equal.
-
- -- Variable: int rl_mark
-     The MARK (saved position) in the current line.  If set, the mark
-     and point define a _region_.
-
- -- Variable: int rl_done
-     Setting this to a non-zero value causes Readline to return the
-     current line immediately.
-
- -- Variable: int rl_num_chars_to_read
-     Setting this to a positive value before calling 'readline()' causes
-     Readline to return after accepting that many characters, rather
-     than reading up to a character bound to 'accept-line'.
-
- -- Variable: int rl_pending_input
-     Setting this to a value makes it the next keystroke read.  This is
-     a way to stuff a single character into the input stream.
-
- -- Variable: int rl_dispatching
-     Set to a non-zero value if a function is being called from a key
-     binding; zero otherwise.  Application functions can test this to
-     discover whether they were called directly or by Readline's
-     dispatching mechanism.
-
- -- Variable: int rl_erase_empty_line
-     Setting this to a non-zero value causes Readline to completely
-     erase the current line, including any prompt, any time a newline is
-     typed as the only character on an otherwise-empty line.  The cursor
-     is moved to the beginning of the newly-blank line.
-
- -- Variable: char * rl_prompt
-     The prompt Readline uses.  This is set from the argument to
-     'readline()', and should not be assigned to directly.  The
-     'rl_set_prompt()' function (*note Redisplay::) may be used to
-     modify the prompt string after calling 'readline()'.
-
- -- Variable: char * rl_display_prompt
-     The string displayed as the prompt.  This is usually identical to
-     RL_PROMPT, but may be changed temporarily by functions that use the
-     prompt string as a message area, such as incremental search.
-
- -- Variable: int rl_already_prompted
-     If an application wishes to display the prompt itself, rather than
-     have Readline do it the first time 'readline()' is called, it
-     should set this variable to a non-zero value after displaying the
-     prompt.  The prompt must also be passed as the argument to
-     'readline()' so the redisplay functions can update the display
-     properly.  The calling application is responsible for managing the
-     value; Readline never sets it.
-
- -- Variable: const char * rl_library_version
-     The version number of this revision of the library.
-
- -- Variable: int rl_readline_version
-     An integer encoding the current version of the library.  The
-     encoding is of the form 0xMMMM, where MM is the two-digit major
-     version number, and MM is the two-digit minor version number.  For
-     example, for Readline-4.2, 'rl_readline_version' would have the
-     value 0x0402.
-
- -- Variable: int rl_gnu_readline_p
-     Always set to 1, denoting that this is GNU readline rather than
-     some emulation.
-
- -- Variable: const char * rl_terminal_name
-     The terminal type, used for initialization.  If not set by the
-     application, Readline sets this to the value of the 'TERM'
-     environment variable the first time it is called.
-
- -- Variable: const char * rl_readline_name
-     This variable is set to a unique name by each application using
-     Readline.  The value allows conditional parsing of the inputrc file
-     (*note Conditional Init Constructs::).
-
- -- Variable: FILE * rl_instream
-     The stdio stream from which Readline reads input.  If 'NULL',
-     Readline defaults to STDIN.
-
- -- Variable: FILE * rl_outstream
-     The stdio stream to which Readline performs output.  If 'NULL',
-     Readline defaults to STDOUT.
-
- -- Variable: int rl_prefer_env_winsize
-     If non-zero, Readline gives values found in the 'LINES' and
-     'COLUMNS' environment variables greater precedence than values
-     fetched from the kernel when computing the screen dimensions.
-
- -- Variable: rl_command_func_t * rl_last_func
-     The address of the last command function Readline executed.  May be
-     used to test whether or not a function is being executed twice in
-     succession, for example.
-
- -- Variable: rl_hook_func_t * rl_startup_hook
-     If non-zero, this is the address of a function to call just before
-     'readline' prints the first prompt.
-
- -- Variable: rl_hook_func_t * rl_pre_input_hook
-     If non-zero, this is the address of a function to call after the
-     first prompt has been printed and just before 'readline' starts
-     reading input characters.
-
- -- Variable: rl_hook_func_t * rl_event_hook
-     If non-zero, this is the address of a function to call periodically
-     when Readline is waiting for terminal input.  By default, this will
-     be called at most ten times a second if there is no keyboard input.
-
- -- Variable: rl_getc_func_t * rl_getc_function
-     If non-zero, Readline will call indirectly through this pointer to
-     get a character from the input stream.  By default, it is set to
-     'rl_getc', the default Readline character input function (*note
-     Character Input::).  In general, an application that sets
-     RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as
-     well.
-
- -- Variable: rl_hook_func_t * rl_signal_event_hook
-     If non-zero, this is the address of a function to call if a read
-     system call is interrupted when Readline is reading terminal input.
-
- -- Variable: rl_hook_func_t * rl_input_available_hook
-     If non-zero, Readline will use this function's return value when it
-     needs to determine whether or not there is available input on the
-     current input source.  The default hook checks 'rl_instream'; if an
-     application is using a different input source, it should set the
-     hook appropriately.  Readline queries for available input when
-     implementing intra-key-sequence timeouts during input and
-     incremental searches.  This may use an application-specific timeout
-     before returning a value; Readline uses the value passed to
-     'rl_set_keyboard_input_timeout()' or the value of the user-settable
-     KEYSEQ-TIMEOUT variable.  This is designed for use by applications
-     using Readline's callback interface (*note Alternate Interface::),
-     which may not use the traditional 'read(2)' and file descriptor
-     interface, or other applications using a different input mechanism.
-     If an application uses an input mechanism or hook that can
-     potentially exceed the value of KEYSEQ-TIMEOUT, it should increase
-     the timeout or set this hook appropriately even when not using the
-     callback interface.  In general, an application that sets
-     RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as
-     well.
-
- -- Variable: rl_voidfunc_t * rl_redisplay_function
-     If non-zero, Readline will call indirectly through this pointer to
-     update the display with the current contents of the editing buffer.
-     By default, it is set to 'rl_redisplay', the default Readline
-     redisplay function (*note Redisplay::).
-
- -- Variable: rl_vintfunc_t * rl_prep_term_function
-     If non-zero, Readline will call indirectly through this pointer to
-     initialize the terminal.  The function takes a single argument, an
-     'int' flag that says whether or not to use eight-bit characters.
-     By default, this is set to 'rl_prep_terminal' (*note Terminal
-     Management::).
-
- -- Variable: rl_voidfunc_t * rl_deprep_term_function
-     If non-zero, Readline will call indirectly through this pointer to
-     reset the terminal.  This function should undo the effects of
-     'rl_prep_term_function'.  By default, this is set to
-     'rl_deprep_terminal' (*note Terminal Management::).
-
- -- Variable: Keymap rl_executing_keymap
-     This variable is set to the keymap (*note Keymaps::) in which the
-     currently executing readline function was found.
-
- -- Variable: Keymap rl_binding_keymap
-     This variable is set to the keymap (*note Keymaps::) in which the
-     last key binding occurred.
-
- -- Variable: char * rl_executing_macro
-     This variable is set to the text of any currently-executing macro.
-
- -- Variable: int rl_executing_key
-     The key that caused the dispatch to the currently-executing
-     Readline function.
-
- -- Variable: char * rl_executing_keyseq
-     The full key sequence that caused the dispatch to the
-     currently-executing Readline function.
-
- -- Variable: int rl_key_sequence_length
-     The number of characters in RL_EXECUTING_KEYSEQ.
-
- -- Variable: int rl_readline_state
-     A variable with bit values that encapsulate the current Readline
-     state.  A bit is set with the 'RL_SETSTATE' macro, and unset with
-     the 'RL_UNSETSTATE' macro.  Use the 'RL_ISSTATE' macro to test
-     whether a particular state bit is set.  Current state bits include:
-
-     'RL_STATE_NONE'
-          Readline has not yet been called, nor has it begun to
-          initialize.
-     'RL_STATE_INITIALIZING'
-          Readline is initializing its internal data structures.
-     'RL_STATE_INITIALIZED'
-          Readline has completed its initialization.
-     'RL_STATE_TERMPREPPED'
-          Readline has modified the terminal modes to do its own input
-          and redisplay.
-     'RL_STATE_READCMD'
-          Readline is reading a command from the keyboard.
-     'RL_STATE_METANEXT'
-          Readline is reading more input after reading the meta-prefix
-          character.
-     'RL_STATE_DISPATCHING'
-          Readline is dispatching to a command.
-     'RL_STATE_MOREINPUT'
-          Readline is reading more input while executing an editing
-          command.
-     'RL_STATE_ISEARCH'
-          Readline is performing an incremental history search.
-     'RL_STATE_NSEARCH'
-          Readline is performing a non-incremental history search.
-     'RL_STATE_SEARCH'
-          Readline is searching backward or forward through the history
-          for a string.
-     'RL_STATE_NUMERICARG'
-          Readline is reading a numeric argument.
-     'RL_STATE_MACROINPUT'
-          Readline is currently getting its input from a
-          previously-defined keyboard macro.
-     'RL_STATE_MACRODEF'
-          Readline is currently reading characters defining a keyboard
-          macro.
-     'RL_STATE_OVERWRITE'
-          Readline is in overwrite mode.
-     'RL_STATE_COMPLETING'
-          Readline is performing word completion.
-     'RL_STATE_SIGHANDLER'
-          Readline is currently executing the readline signal handler.
-     'RL_STATE_UNDOING'
-          Readline is performing an undo.
-     'RL_STATE_INPUTPENDING'
-          Readline has input pending due to a call to
-          'rl_execute_next()'.
-     'RL_STATE_TTYCSAVED'
-          Readline has saved the values of the terminal's special
-          characters.
-     'RL_STATE_CALLBACK'
-          Readline is currently using the alternate (callback) interface
-          (*note Alternate Interface::).
-     'RL_STATE_VIMOTION'
-          Readline is reading the argument to a vi-mode "motion"
-          command.
-     'RL_STATE_MULTIKEY'
-          Readline is reading a multiple-keystroke command.
-     'RL_STATE_VICMDONCE'
-          Readline has entered vi command (movement) mode at least one
-          time during the current call to 'readline()'.
-     'RL_STATE_DONE'
-          Readline has read a key sequence bound to 'accept-line' and is
-          about to return the line to the caller.
-
- -- Variable: int rl_explicit_arg
-     Set to a non-zero value if an explicit numeric argument was
-     specified by the user.  Only valid in a bindable command function.
-
- -- Variable: int rl_numeric_arg
-     Set to the value of any numeric argument explicitly specified by
-     the user before executing the current Readline function.  Only
-     valid in a bindable command function.
-
- -- Variable: int rl_editing_mode
-     Set to a value denoting Readline's current editing mode.  A value
-     of 1 means Readline is currently in emacs mode; 0 means that vi
-     mode is active.
-
-\1f
-File: readline.info,  Node: Readline Convenience Functions,  Next: Readline Signal Handling,  Prev: Readline Variables,  Up: Programming with GNU Readline
-
-2.4 Readline Convenience Functions
-==================================
-
-* Menu:
-
-* Function Naming::    How to give a function you write a name.
-* Keymaps::            Making keymaps.
-* Binding Keys::       Changing Keymaps.
-* Associating Function Names and Bindings::    Translate function names to
-                                               key sequences.
-* Allowing Undoing::   How to make your functions undoable.
-* Redisplay::          Functions to control line display.
-* Modifying Text::     Functions to modify 'rl_line_buffer'.
-* Character Input::    Functions to read keyboard input.
-* Terminal Management::        Functions to manage terminal settings.
-* Utility Functions::  Generally useful functions and hooks.
-* Miscellaneous Functions::    Functions that don't fall into any category.
-* Alternate Interface::        Using Readline in a 'callback' fashion.
-* A Readline Example::         An example Readline function.
-* Alternate Interface Example::        An example program using the alternate interface.
-
-\1f
-File: readline.info,  Node: Function Naming,  Next: Keymaps,  Up: Readline Convenience Functions
-
-2.4.1 Naming a Function
------------------------
-
-The user can dynamically change the bindings of keys while using
-Readline.  This is done by representing the function with a descriptive
-name.  The user is able to type the descriptive name when referring to
-the function.  Thus, in an init file, one might find
-
-     Meta-Rubout:      backward-kill-word
-
-   This binds the keystroke <Meta-Rubout> to the function
-_descriptively_ named 'backward-kill-word'.  You, as the programmer,
-should bind the functions you write to descriptive names as well.
-Readline provides a function for doing that:
-
- -- Function: int rl_add_defun (const char *name, rl_command_func_t
-          *function, int key)
-     Add NAME to the list of named functions.  Make FUNCTION be the
-     function that gets called.  If KEY is not -1, then bind it to
-     FUNCTION using 'rl_bind_key()'.
-
-   Using this function alone is sufficient for most applications.  It is
-the recommended way to add a few functions to the default functions that
-Readline has built in.  If you need to do something other than adding a
-function to Readline, you may need to use the underlying functions
-described below.
-
-\1f
-File: readline.info,  Node: Keymaps,  Next: Binding Keys,  Prev: Function Naming,  Up: Readline Convenience Functions
-
-2.4.2 Selecting a Keymap
-------------------------
-
-Key bindings take place on a "keymap".  The keymap is the association
-between the keys that the user types and the functions that get run.
-You can make your own keymaps, copy existing keymaps, and tell Readline
-which keymap to use.
-
- -- Function: Keymap rl_make_bare_keymap (void)
-     Returns a new, empty keymap.  The space for the keymap is allocated
-     with 'malloc()'; the caller should free it by calling
-     'rl_free_keymap()' when done.
-
- -- Function: Keymap rl_copy_keymap (Keymap map)
-     Return a new keymap which is a copy of MAP.
-
- -- Function: Keymap rl_make_keymap (void)
-     Return a new keymap with the printing characters bound to
-     rl_insert, the lowercase Meta characters bound to run their
-     equivalents, and the Meta digits bound to produce numeric
-     arguments.
-
- -- Function: void rl_discard_keymap (Keymap keymap)
-     Free the storage associated with the data in KEYMAP.  The caller
-     should free KEYMAP.
-
- -- Function: void rl_free_keymap (Keymap keymap)
-     Free all storage associated with KEYMAP.  This calls
-     'rl_discard_keymap' to free subordindate keymaps and macros.
-
-   Readline has several internal keymaps.  These functions allow you to
-change which keymap is active.
-
- -- Function: Keymap rl_get_keymap (void)
-     Returns the currently active keymap.
-
- -- Function: void rl_set_keymap (Keymap keymap)
-     Makes KEYMAP the currently active keymap.
-
- -- Function: Keymap rl_get_keymap_by_name (const char *name)
-     Return the keymap matching NAME.  NAME is one which would be
-     supplied in a 'set keymap' inputrc line (*note Readline Init
-     File::).
-
- -- Function: char * rl_get_keymap_name (Keymap keymap)
-     Return the name matching KEYMAP.  NAME is one which would be
-     supplied in a 'set keymap' inputrc line (*note Readline Init
-     File::).
-
-\1f
-File: readline.info,  Node: Binding Keys,  Next: Associating Function Names and Bindings,  Prev: Keymaps,  Up: Readline Convenience Functions
-
-2.4.3 Binding Keys
-------------------
-
-Key sequences are associate with functions through the keymap.  Readline
-has several internal keymaps: 'emacs_standard_keymap',
-'emacs_meta_keymap', 'emacs_ctlx_keymap', 'vi_movement_keymap', and
-'vi_insertion_keymap'.  'emacs_standard_keymap' is the default, and the
-examples in this manual assume that.
-
-   Since 'readline()' installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to 'readline()' will be overridden.  An
-alternate mechanism is to install custom key bindings in an
-initialization function assigned to the 'rl_startup_hook' variable
-(*note Readline Variables::).
-
-   These functions manage key bindings.
-
- -- Function: int rl_bind_key (int key, rl_command_func_t *function)
-     Binds KEY to FUNCTION in the currently active keymap.  Returns
-     non-zero in the case of an invalid KEY.
-
- -- Function: int rl_bind_key_in_map (int key, rl_command_func_t
-          *function, Keymap map)
-     Bind KEY to FUNCTION in MAP.  Returns non-zero in the case of an
-     invalid KEY.
-
- -- Function: int rl_bind_key_if_unbound (int key, rl_command_func_t
-          *function)
-     Binds KEY to FUNCTION if it is not already bound in the currently
-     active keymap.  Returns non-zero in the case of an invalid KEY or
-     if KEY is already bound.
-
- -- Function: int rl_bind_key_if_unbound_in_map (int key,
-          rl_command_func_t *function, Keymap map)
-     Binds KEY to FUNCTION if it is not already bound in MAP.  Returns
-     non-zero in the case of an invalid KEY or if KEY is already bound.
-
- -- Function: int rl_unbind_key (int key)
-     Bind KEY to the null function in the currently active keymap.
-     Returns non-zero in case of error.
-
- -- Function: int rl_unbind_key_in_map (int key, Keymap map)
-     Bind KEY to the null function in MAP.  Returns non-zero in case of
-     error.
-
- -- Function: int rl_unbind_function_in_map (rl_command_func_t
-          *function, Keymap map)
-     Unbind all keys that execute FUNCTION in MAP.
-
- -- Function: int rl_unbind_command_in_map (const char *command, Keymap
-          map)
-     Unbind all keys that are bound to COMMAND in MAP.
-
- -- Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t
-          *function)
-     Bind the key sequence represented by the string KEYSEQ to the
-     function FUNCTION, beginning in the current keymap.  This makes new
-     keymaps as necessary.  The return value is non-zero if KEYSEQ is
-     invalid.
-
- -- Function: int rl_bind_keyseq_in_map (const char *keyseq,
-          rl_command_func_t *function, Keymap map)
-     Bind the key sequence represented by the string KEYSEQ to the
-     function FUNCTION.  This makes new keymaps as necessary.  Initial
-     bindings are performed in MAP.  The return value is non-zero if
-     KEYSEQ is invalid.
-
- -- Function: int rl_set_key (const char *keyseq, rl_command_func_t
-          *function, Keymap map)
-     Equivalent to 'rl_bind_keyseq_in_map'.
-
- -- Function: int rl_bind_keyseq_if_unbound (const char *keyseq,
-          rl_command_func_t *function)
-     Binds KEYSEQ to FUNCTION if it is not already bound in the
-     currently active keymap.  Returns non-zero in the case of an
-     invalid KEYSEQ or if KEYSEQ is already bound.
-
- -- Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq,
-          rl_command_func_t *function, Keymap map)
-     Binds KEYSEQ to FUNCTION if it is not already bound in MAP.
-     Returns non-zero in the case of an invalid KEYSEQ or if KEYSEQ is
-     already bound.
-
- -- Function: int rl_generic_bind (int type, const char *keyseq, char
-          *data, Keymap map)
-     Bind the key sequence represented by the string KEYSEQ to the
-     arbitrary pointer DATA.  TYPE says what kind of data is pointed to
-     by DATA; this can be a function ('ISFUNC'), a macro ('ISMACR'), or
-     a keymap ('ISKMAP').  This makes new keymaps as necessary.  The
-     initial keymap in which to do bindings is MAP.
-
- -- Function: int rl_parse_and_bind (char *line)
-     Parse LINE as if it had been read from the 'inputrc' file and
-     perform any key bindings and variable assignments found (*note
-     Readline Init File::).
-
- -- Function: int rl_read_init_file (const char *filename)
-     Read keybindings and variable assignments from FILENAME (*note
-     Readline Init File::).
-
-\1f
-File: readline.info,  Node: Associating Function Names and Bindings,  Next: Allowing Undoing,  Prev: Binding Keys,  Up: Readline Convenience Functions
-
-2.4.4 Associating Function Names and Bindings
----------------------------------------------
-
-These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence.  You may also
-associate a new function name with an arbitrary function.
-
- -- Function: rl_command_func_t * rl_named_function (const char *name)
-     Return the function with name NAME.
-
- -- Function: rl_command_func_t * rl_function_of_keyseq (const char
-          *keyseq, Keymap map, int *type)
-     Return the function invoked by KEYSEQ in keymap MAP.  If MAP is
-     'NULL', the current keymap is used.  If TYPE is not 'NULL', the
-     type of the object is returned in the 'int' variable it points to
-     (one of 'ISFUNC', 'ISKMAP', or 'ISMACR').
-
- -- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
-     Return an array of strings representing the key sequences used to
-     invoke FUNCTION in the current keymap.
-
- -- Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t
-          *function, Keymap map)
-     Return an array of strings representing the key sequences used to
-     invoke FUNCTION in the keymap MAP.
-
- -- Function: void rl_function_dumper (int readable)
-     Print the readline function names and the key sequences currently
-     bound to them to 'rl_outstream'.  If READABLE is non-zero, the list
-     is formatted in such a way that it can be made part of an 'inputrc'
-     file and re-read.
-
- -- Function: void rl_list_funmap_names (void)
-     Print the names of all bindable Readline functions to
-     'rl_outstream'.
-
- -- Function: const char ** rl_funmap_names (void)
-     Return a NULL terminated array of known function names.  The array
-     is sorted.  The array itself is allocated, but not the strings
-     inside.  You should free the array, but not the pointers, using
-     'free' or 'rl_free' when you are done.
-
- -- Function: int rl_add_funmap_entry (const char *name,
-          rl_command_func_t *function)
-     Add NAME to the list of bindable Readline command names, and make
-     FUNCTION the function to be called when NAME is invoked.
-
-\1f
-File: readline.info,  Node: Allowing Undoing,  Next: Redisplay,  Prev: Associating Function Names and Bindings,  Up: Readline Convenience Functions
-
-2.4.5 Allowing Undoing
-----------------------
-
-Supporting the undo command is a painless thing, and makes your
-functions much more useful.  It is certainly easy to try something if
-you know you can undo it.
-
-   If your function simply inserts text once, or deletes text once, and
-uses 'rl_insert_text()' or 'rl_delete_text()' to do it, then undoing is
-already done for you automatically.
-
-   If you do multiple insertions or multiple deletions, or any
-combination of these operations, you should group them together into one
-operation.  This is done with 'rl_begin_undo_group()' and
-'rl_end_undo_group()'.
-
-   The types of events that can be undone are:
-
-     enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-
-   Notice that 'UNDO_DELETE' means to insert some text, and
-'UNDO_INSERT' means to delete some text.  That is, the undo code tells
-what to undo, not how to undo it.  'UNDO_BEGIN' and 'UNDO_END' are tags
-added by 'rl_begin_undo_group()' and 'rl_end_undo_group()'.
-
- -- Function: int rl_begin_undo_group (void)
-     Begins saving undo information in a group construct.  The undo
-     information usually comes from calls to 'rl_insert_text()' and
-     'rl_delete_text()', but could be the result of calls to
-     'rl_add_undo()'.
-
- -- Function: int rl_end_undo_group (void)
-     Closes the current undo group started with 'rl_begin_undo_group
-     ()'.  There should be one call to 'rl_end_undo_group()' for each
-     call to 'rl_begin_undo_group()'.
-
- -- Function: void rl_add_undo (enum undo_code what, int start, int end,
-          char *text)
-     Remember how to undo an event (according to WHAT).  The affected
-     text runs from START to END, and encompasses TEXT.
-
- -- Function: void rl_free_undo_list (void)
-     Free the existing undo list.
-
- -- Function: int rl_do_undo (void)
-     Undo the first thing on the undo list.  Returns '0' if there was
-     nothing to undo, non-zero if something was undone.
-
-   Finally, if you neither insert nor delete text, but directly modify
-the existing text (e.g., change its case), call 'rl_modifying()' once,
-just before you modify the text.  You must supply the indices of the
-text range that you are going to modify.
-
- -- Function: int rl_modifying (int start, int end)
-     Tell Readline to save the text between START and END as a single
-     undo unit.  It is assumed that you will subsequently modify that
-     text.
-
-\1f
-File: readline.info,  Node: Redisplay,  Next: Modifying Text,  Prev: Allowing Undoing,  Up: Readline Convenience Functions
-
-2.4.6 Redisplay
----------------
-
- -- Function: void rl_redisplay (void)
-     Change what's displayed on the screen to reflect the current
-     contents of 'rl_line_buffer'.
-
- -- Function: int rl_forced_update_display (void)
-     Force the line to be updated and redisplayed, whether or not
-     Readline thinks the screen display is correct.
-
- -- Function: int rl_on_new_line (void)
-     Tell the update functions that we have moved onto a new (empty)
-     line, usually after outputting a newline.
-
- -- Function: int rl_on_new_line_with_prompt (void)
-     Tell the update functions that we have moved onto a new line, with
-     RL_PROMPT already displayed.  This could be used by applications
-     that want to output the prompt string themselves, but still need
-     Readline to know the prompt string length for redisplay.  It should
-     be used after setting RL_ALREADY_PROMPTED.
-
- -- Function: int rl_reset_line_state (void)
-     Reset the display state to a clean state and redisplay the current
-     line starting on a new line.
-
- -- Function: int rl_crlf (void)
-     Move the cursor to the start of the next screen line.
-
- -- Function: int rl_show_char (int c)
-     Display character C on 'rl_outstream'.  If Readline has not been
-     set to display meta characters directly, this will convert meta
-     characters to a meta-prefixed key sequence.  This is intended for
-     use by applications which wish to do their own redisplay.
-
- -- Function: int rl_message (const char *, ...)
-     The arguments are a format string as would be supplied to 'printf',
-     possibly containing conversion specifications such as '%d', and any
-     additional arguments necessary to satisfy the conversion
-     specifications.  The resulting string is displayed in the "echo
-     area".  The echo area is also used to display numeric arguments and
-     search strings.  You should call 'rl_save_prompt' to save the
-     prompt information before calling this function.
-
- -- Function: int rl_clear_message (void)
-     Clear the message in the echo area.  If the prompt was saved with a
-     call to 'rl_save_prompt' before the last call to 'rl_message', call
-     'rl_restore_prompt' before calling this function.
-
- -- Function: void rl_save_prompt (void)
-     Save the local Readline prompt display state in preparation for
-     displaying a new message in the message area with 'rl_message()'.
-
- -- Function: void rl_restore_prompt (void)
-     Restore the local Readline prompt display state saved by the most
-     recent call to 'rl_save_prompt'.  if 'rl_save_prompt' was called to
-     save the prompt before a call to 'rl_message', this function should
-     be called before the corresponding call to 'rl_clear_message'.
-
- -- Function: int rl_expand_prompt (char *prompt)
-     Expand any special character sequences in PROMPT and set up the
-     local Readline prompt redisplay variables.  This function is called
-     by 'readline()'.  It may also be called to expand the primary
-     prompt if the 'rl_on_new_line_with_prompt()' function or
-     'rl_already_prompted' variable is used.  It returns the number of
-     visible characters on the last line of the (possibly multi-line)
-     prompt.  Applications may indicate that the prompt contains
-     characters that take up no physical screen space when displayed by
-     bracketing a sequence of such characters with the special markers
-     'RL_PROMPT_START_IGNORE' and 'RL_PROMPT_END_IGNORE' (declared in
-     'readline.h').  This may be used to embed terminal-specific escape
-     sequences in prompts.
-
- -- Function: int rl_set_prompt (const char *prompt)
-     Make Readline use PROMPT for subsequent redisplay.  This calls
-     'rl_expand_prompt()' to expand the prompt and sets 'rl_prompt' to
-     the result.
-
-\1f
-File: readline.info,  Node: Modifying Text,  Next: Character Input,  Prev: Redisplay,  Up: Readline Convenience Functions
-
-2.4.7 Modifying Text
---------------------
-
- -- Function: int rl_insert_text (const char *text)
-     Insert TEXT into the line at the current cursor position.  Returns
-     the number of characters inserted.
-
- -- Function: int rl_delete_text (int start, int end)
-     Delete the text between START and END in the current line.  Returns
-     the number of characters deleted.
-
- -- Function: char * rl_copy_text (int start, int end)
-     Return a copy of the text between START and END in the current
-     line.
-
- -- Function: int rl_kill_text (int start, int end)
-     Copy the text between START and END in the current line to the kill
-     ring, appending or prepending to the last kill if the last command
-     was a kill command.  The text is deleted.  If START is less than
-     END, the text is appended, otherwise prepended.  If the last
-     command was not a kill, a new kill ring slot is used.
-
- -- Function: int rl_push_macro_input (char *macro)
-     Cause MACRO to be inserted into the line, as if it had been invoked
-     by a key bound to a macro.  Not especially useful; use
-     'rl_insert_text()' instead.
-
-\1f
-File: readline.info,  Node: Character Input,  Next: Terminal Management,  Prev: Modifying Text,  Up: Readline Convenience Functions
-
-2.4.8 Character Input
----------------------
-
- -- Function: int rl_read_key (void)
-     Return the next character available from Readline's current input
-     stream.  This handles input inserted into the input stream via
-     RL_PENDING_INPUT (*note Readline Variables::) and
-     'rl_stuff_char()', macros, and characters read from the keyboard.
-     While waiting for input, this function will call any function
-     assigned to the 'rl_event_hook' variable.
-
- -- Function: int rl_getc (FILE *stream)
-     Return the next character available from STREAM, which is assumed
-     to be the keyboard.
-
- -- Function: int rl_stuff_char (int c)
-     Insert C into the Readline input stream.  It will be "read" before
-     Readline attempts to read characters from the terminal with
-     'rl_read_key()'.  Up to 512 characters may be pushed back.
-     'rl_stuff_char' returns 1 if the character was successfully
-     inserted; 0 otherwise.
-
- -- Function: int rl_execute_next (int c)
-     Make C be the next command to be executed when 'rl_read_key()' is
-     called.  This sets RL_PENDING_INPUT.
-
- -- Function: int rl_clear_pending_input (void)
-     Unset RL_PENDING_INPUT, effectively negating the effect of any
-     previous call to 'rl_execute_next()'.  This works only if the
-     pending input has not already been read with 'rl_read_key()'.
-
- -- Function: int rl_set_keyboard_input_timeout (int u)
-     While waiting for keyboard input in 'rl_read_key()', Readline will
-     wait for U microseconds for input before calling any function
-     assigned to 'rl_event_hook'.  U must be greater than or equal to
-     zero (a zero-length timeout is equivalent to a poll).  The default
-     waiting period is one-tenth of a second.  Returns the old timeout
-     value.
-
-\1f
-File: readline.info,  Node: Terminal Management,  Next: Utility Functions,  Prev: Character Input,  Up: Readline Convenience Functions
-
-2.4.9 Terminal Management
--------------------------
-
- -- Function: void rl_prep_terminal (int meta_flag)
-     Modify the terminal settings for Readline's use, so 'readline()'
-     can read a single character at a time from the keyboard.  The
-     META_FLAG argument should be non-zero if Readline should read
-     eight-bit input.
-
- -- Function: void rl_deprep_terminal (void)
-     Undo the effects of 'rl_prep_terminal()', leaving the terminal in
-     the state in which it was before the most recent call to
-     'rl_prep_terminal()'.
-
- -- Function: void rl_tty_set_default_bindings (Keymap kmap)
-     Read the operating system's terminal editing characters (as would
-     be displayed by 'stty') to their Readline equivalents.  The
-     bindings are performed in KMAP.
-
- -- Function: void rl_tty_unset_default_bindings (Keymap kmap)
-     Reset the bindings manipulated by 'rl_tty_set_default_bindings' so
-     that the terminal editing characters are bound to 'rl_insert'.  The
-     bindings are performed in KMAP.
-
- -- Function: int rl_reset_terminal (const char *terminal_name)
-     Reinitialize Readline's idea of the terminal settings using
-     TERMINAL_NAME as the terminal type (e.g., 'vt100').  If
-     TERMINAL_NAME is 'NULL', the value of the 'TERM' environment
-     variable is used.
-
-\1f
-File: readline.info,  Node: Utility Functions,  Next: Miscellaneous Functions,  Prev: Terminal Management,  Up: Readline Convenience Functions
-
-2.4.10 Utility Functions
-------------------------
-
- -- Function: int rl_save_state (struct readline_state *sp)
-     Save a snapshot of Readline's internal state to SP.  The contents
-     of the READLINE_STATE structure are documented in 'readline.h'.
-     The caller is responsible for allocating the structure.
-
- -- Function: int rl_restore_state (struct readline_state *sp)
-     Restore Readline's internal state to that stored in SP, which must
-     have been saved by a call to 'rl_save_state'.  The contents of the
-     READLINE_STATE structure are documented in 'readline.h'.  The
-     caller is responsible for freeing the structure.
-
- -- Function: void rl_free (void *mem)
-     Deallocate the memory pointed to by MEM.  MEM must have been
-     allocated by 'malloc'.
-
- -- Function: void rl_replace_line (const char *text, int clear_undo)
-     Replace the contents of 'rl_line_buffer' with TEXT.  The point and
-     mark are preserved, if possible.  If CLEAR_UNDO is non-zero, the
-     undo list associated with the current line is cleared.
-
- -- Function: void rl_extend_line_buffer (int len)
-     Ensure that 'rl_line_buffer' has enough space to hold LEN
-     characters, possibly reallocating it if necessary.
-
- -- Function: int rl_initialize (void)
-     Initialize or re-initialize Readline's internal state.  It's not
-     strictly necessary to call this; 'readline()' calls it before
-     reading any input.
-
- -- Function: int rl_ding (void)
-     Ring the terminal bell, obeying the setting of 'bell-style'.
-
- -- Function: int rl_alphabetic (int c)
-     Return 1 if C is an alphabetic character.
-
- -- Function: void rl_display_match_list (char **matches, int len, int
-          max)
-     A convenience function for displaying a list of strings in columnar
-     format on Readline's output stream.  'matches' is the list of
-     strings, in argv format, such as a list of completion matches.
-     'len' is the number of strings in 'matches', and 'max' is the
-     length of the longest string in 'matches'.  This function uses the
-     setting of 'print-completions-horizontally' to select how the
-     matches are displayed (*note Readline Init File Syntax::).  When
-     displaying completions, this function sets the number of columns
-     used for display to the value of 'completion-display-width', the
-     value of the environment variable 'COLUMNS', or the screen width,
-     in that order.
-
-   The following are implemented as macros, defined in 'chardefs.h'.
-Applications should refrain from using them.
-
- -- Function: int _rl_uppercase_p (int c)
-     Return 1 if C is an uppercase alphabetic character.
-
- -- Function: int _rl_lowercase_p (int c)
-     Return 1 if C is a lowercase alphabetic character.
-
- -- Function: int _rl_digit_p (int c)
-     Return 1 if C is a numeric character.
-
- -- Function: int _rl_to_upper (int c)
-     If C is a lowercase alphabetic character, return the corresponding
-     uppercase character.
-
- -- Function: int _rl_to_lower (int c)
-     If C is an uppercase alphabetic character, return the corresponding
-     lowercase character.
-
- -- Function: int _rl_digit_value (int c)
-     If C is a number, return the value it represents.
-
-\1f
-File: readline.info,  Node: Miscellaneous Functions,  Next: Alternate Interface,  Prev: Utility Functions,  Up: Readline Convenience Functions
-
-2.4.11 Miscellaneous Functions
-------------------------------
-
- -- Function: int rl_macro_bind (const char *keyseq, const char *macro,
-          Keymap map)
-     Bind the key sequence KEYSEQ to invoke the macro MACRO.  The
-     binding is performed in MAP.  When KEYSEQ is invoked, the MACRO
-     will be inserted into the line.  This function is deprecated; use
-     'rl_generic_bind()' instead.
-
- -- Function: void rl_macro_dumper (int readable)
-     Print the key sequences bound to macros and their values, using the
-     current keymap, to 'rl_outstream'.  If READABLE is non-zero, the
-     list is formatted in such a way that it can be made part of an
-     'inputrc' file and re-read.
-
- -- Function: int rl_variable_bind (const char *variable, const char
-          *value)
-     Make the Readline variable VARIABLE have VALUE.  This behaves as if
-     the readline command 'set VARIABLE VALUE' had been executed in an
-     'inputrc' file (*note Readline Init File Syntax::).
-
- -- Function: char * rl_variable_value (const char *variable)
-     Return a string representing the value of the Readline variable
-     VARIABLE.  For boolean variables, this string is either 'on' or
-     'off'.
-
- -- Function: void rl_variable_dumper (int readable)
-     Print the readline variable names and their current values to
-     'rl_outstream'.  If READABLE is non-zero, the list is formatted in
-     such a way that it can be made part of an 'inputrc' file and
-     re-read.
-
- -- Function: int rl_set_paren_blink_timeout (int u)
-     Set the time interval (in microseconds) that Readline waits when
-     showing a balancing character when 'blink-matching-paren' has been
-     enabled.
-
- -- Function: char * rl_get_termcap (const char *cap)
-     Retrieve the string value of the termcap capability CAP.  Readline
-     fetches the termcap entry for the current terminal name and uses
-     those capabilities to move around the screen line and perform other
-     terminal-specific operations, like erasing a line.  Readline does
-     not use all of a terminal's capabilities, and this function will
-     return values for only those capabilities Readline uses.
-
- -- Function: void rl_clear_history (void)
-     Clear the history list by deleting all of the entries, in the same
-     manner as the History library's 'clear_history()' function.  This
-     differs from 'clear_history' because it frees private data Readline
-     saves in the history list.
-
-\1f
-File: readline.info,  Node: Alternate Interface,  Next: A Readline Example,  Prev: Miscellaneous Functions,  Up: Readline Convenience Functions
-
-2.4.12 Alternate Interface
---------------------------
-
-An alternate interface is available to plain 'readline()'.  Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to 'select()' on
-various file descriptors.  To accommodate this need, readline can also
-be invoked as a 'callback' function from an event loop.  There are
-functions available to make this easy.
-
- -- Function: void rl_callback_handler_install (const char *prompt,
-          rl_vcpfunc_t *lhandler)
-     Set up the terminal for readline I/O and display the initial
-     expanded value of PROMPT.  Save the value of LHANDLER to use as a
-     handler function to call when a complete line of input has been
-     entered.  The handler function receives the text of the line as an
-     argument.  As with 'readline()', the handler function should 'free'
-     the line when it it finished with it.
-
- -- Function: void rl_callback_read_char (void)
-     Whenever an application determines that keyboard input is
-     available, it should call 'rl_callback_read_char()', which will
-     read the next character from the current input source.  If that
-     character completes the line, 'rl_callback_read_char' will invoke
-     the LHANDLER function installed by 'rl_callback_handler_install' to
-     process the line.  Before calling the LHANDLER function, the
-     terminal settings are reset to the values they had before calling
-     'rl_callback_handler_install'.  If the LHANDLER function returns,
-     and the line handler remains installed, the terminal settings are
-     modified for Readline's use again.  'EOF' is indicated by calling
-     LHANDLER with a 'NULL' line.
-
- -- Function: void rl_callback_sigcleanup (void)
-     Clean up any internal state the callback interface uses to maintain
-     state between calls to rl_callback_read_char (e.g., the state of
-     any active incremental searches).  This is intended to be used by
-     applications that wish to perform their own signal handling;
-     Readline's internal signal handler calls this when appropriate.
-
- -- Function: void rl_callback_handler_remove (void)
-     Restore the terminal to its initial state and remove the line
-     handler.  You may call this function from within a callback as well
-     as independently.  If the LHANDLER installed by
-     'rl_callback_handler_install' does not exit the program, either
-     this function or the function referred to by the value of
-     'rl_deprep_term_function' should be called before the program exits
-     to reset the terminal settings.
-
-\1f
-File: readline.info,  Node: A Readline Example,  Next: Alternate Interface Example,  Prev: Alternate Interface,  Up: Readline Convenience Functions
-
-2.4.13 A Readline Example
--------------------------
-
-Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase.  If this function
-was bound to 'M-c', then typing 'M-c' would change the case of the
-character under point.  Typing 'M-1 0 M-c' would change the case of the
-following 10 characters, leaving the cursor on the last character
-changed.
-
-     /* Invert the case of the COUNT following characters. */
-     int
-     invert_case_line (count, key)
-          int count, key;
-     {
-       register int start, end, i;
-
-       start = rl_point;
-
-       if (rl_point >= rl_end)
-         return (0);
-
-       if (count < 0)
-         {
-           direction = -1;
-           count = -count;
-         }
-       else
-         direction = 1;
-
-       /* Find the end of the range to modify. */
-       end = start + (count * direction);
-
-       /* Force it to be within range. */
-       if (end > rl_end)
-         end = rl_end;
-       else if (end < 0)
-         end = 0;
-
-       if (start == end)
-         return (0);
-
-       if (start > end)
-         {
-           int temp = start;
-           start = end;
-           end = temp;
-         }
-
-       /* Tell readline that we are modifying the line,
-          so it will save the undo information. */
-       rl_modifying (start, end);
-
-       for (i = start; i != end; i++)
-         {
-           if (_rl_uppercase_p (rl_line_buffer[i]))
-             rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
-           else if (_rl_lowercase_p (rl_line_buffer[i]))
-             rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
-         }
-       /* Move point to on top of the last character changed. */
-       rl_point = (direction == 1) ? end - 1 : start;
-       return (0);
-     }
-
-\1f
-File: readline.info,  Node: Alternate Interface Example,  Prev: A Readline Example,  Up: Readline Convenience Functions
-
-2.4.14 Alternate Interface Example
-----------------------------------
-
-Here is a complete program that illustrates Readline's alternate
-interface.  It reads lines from the terminal and displays them,
-providing the standard history and TAB completion functions.  It
-understands the EOF character or "exit" to exit the program.
-
-     /* Standard include files. stdio.h is required. */
-     #include <stdlib.h>
-     #include <unistd.h>
-
-     /* Used for select(2) */
-     #include <sys/types.h>
-     #include <sys/select.h>
-
-     #include <stdio.h>
-
-     /* Standard readline include files. */
-     #include <readline/readline.h>
-     #include <readline/history.h>
-
-     static void cb_linehandler (char *);
-
-     int running;
-     const char *prompt = "rltest$ ";
-
-     /* Callback function called for each line when accept-line executed, EOF
-        seen, or EOF character read.  This sets a flag and returns; it could
-        also call exit(3). */
-     static void
-     cb_linehandler (char *line)
-     {
-       /* Can use ^D (stty eof) or `exit' to exit. */
-       if (line == NULL || strcmp (line, "exit") == 0)
-         {
-           if (line == 0)
-             printf ("\n");
-           printf ("exit\n");
-           /* This function needs to be called to reset the terminal settings,
-              and calling it from the line handler keeps one extra prompt from
-              being displayed. */
-           rl_callback_handler_remove ();
-
-           running = 0;
-         }
-       else
-         {
-           if (*line)
-             add_history (line);
-           printf ("input line: %s\n", line);
-           free (line);
-         }
-     }
-
-     int
-     main (int c, char **v)
-     {
-       fd_set fds;
-       int r;
-
-       /* Install the line handler. */
-       rl_callback_handler_install (prompt, cb_linehandler);
-
-       /* Enter a simple event loop.  This waits until something is available
-          to read on readline's input stream (defaults to standard input) and
-          calls the builtin character read callback to read it.  It does not
-          have to modify the user's terminal settings. */
-       running = 1;
-       while (running)
-         {
-           FD_ZERO (&fds);
-           FD_SET (fileno (rl_instream), &fds);
-
-           r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
-           if (r < 0)
-             {
-               perror ("rltest: select");
-               rl_callback_handler_remove ();
-               break;
-             }
-
-           if (FD_ISSET (fileno (rl_instream), &fds))
-             rl_callback_read_char ();
-         }
-
-       printf ("rltest: Event loop has exited\n");
-       return 0;
-     }
-
-\1f
-File: readline.info,  Node: Readline Signal Handling,  Next: Custom Completers,  Prev: Readline Convenience Functions,  Up: Programming with GNU Readline
-
-2.5 Readline Signal Handling
-============================
-
-Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process.  They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his
-terminal, or a network connection being broken.  There is a class of
-signals that can be sent to the process currently reading input from the
-keyboard.  Since Readline changes the terminal attributes when it is
-called, it needs to perform special processing when such a signal is
-received in order to restore the terminal to a sane state, or provide
-application writers with functions to do so manually.
-
-   Readline contains an internal signal handler that is installed for a
-number of signals ('SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM',
-'SIGTSTP', 'SIGTTIN', and 'SIGTTOU').  When one of these signals is
-received, the signal handler will reset the terminal attributes to those
-that were in effect before 'readline()' was called, reset the signal
-handling to what it was before 'readline()' was called, and resend the
-signal to the calling application.  If and when the calling
-application's signal handler returns, Readline will reinitialize the
-terminal and continue to accept input.  When a 'SIGINT' is received, the
-Readline signal handler performs some additional work, which will cause
-any partially-entered line to be aborted (see the description of
-'rl_free_line_state()' below).
-
-   There is an additional Readline signal handler, for 'SIGWINCH', which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an 'xterm').  The Readline 'SIGWINCH' handler
-updates Readline's internal screen size information, and then calls any
-'SIGWINCH' signal handler the calling application has installed.
-Readline calls the application's 'SIGWINCH' signal handler without
-resetting the terminal to its original state.  If the application's
-signal handler does more than update its idea of the terminal size and
-return (for example, a 'longjmp' back to a main processing loop), it
-_must_ call 'rl_cleanup_after_signal()' (described below), to restore
-the terminal state.
-
-   When an application is using the callback interface (*note Alternate
-Interface::), Readline installs signal handlers only for the duration of
-the call to 'rl_callback_read_char'.  Applications using the callback
-interface should be prepared to clean up Readline's state if they wish
-to handle the signal before the line handler completes and restores the
-terminal state.
-
-   Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received.  It is important that applications change the
-values of these variables only when calling 'readline()', not in a
-signal handler, so Readline's internal signal state is not corrupted.
-
- -- Variable: int rl_catch_signals
-     If this variable is non-zero, Readline will install signal handlers
-     for 'SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP',
-     'SIGTTIN', and 'SIGTTOU'.
-
-     The default value of 'rl_catch_signals' is 1.
-
- -- Variable: int rl_catch_sigwinch
-     If this variable is set to a non-zero value, Readline will install
-     a signal handler for 'SIGWINCH'.
-
-     The default value of 'rl_catch_sigwinch' is 1.
-
- -- Variable: int rl_change_environment
-     If this variable is set to a non-zero value, and Readline is
-     handling 'SIGWINCH', Readline will modify the LINES and COLUMNS
-     environment variables upon receipt of a 'SIGWINCH'
-
-     The default value of 'rl_change_environment' is 1.
-
-   If an application does not wish to have Readline catch any signals,
-or to handle signals other than those Readline catches ('SIGHUP', for
-example), Readline provides convenience functions to do the necessary
-terminal and internal state cleanup upon receipt of a signal.
-
- -- Function: void rl_cleanup_after_signal (void)
-     This function will reset the state of the terminal to what it was
-     before 'readline()' was called, and remove the Readline signal
-     handlers for all signals, depending on the values of
-     'rl_catch_signals' and 'rl_catch_sigwinch'.
-
- -- Function: void rl_free_line_state (void)
-     This will free any partial state associated with the current input
-     line (undo information, any partial history entry, any
-     partially-entered keyboard macro, and any partially-entered numeric
-     argument).  This should be called before
-     'rl_cleanup_after_signal()'.  The Readline signal handler for
-     'SIGINT' calls this to abort the current input line.
-
- -- Function: void rl_reset_after_signal (void)
-     This will reinitialize the terminal and reinstall any Readline
-     signal handlers, depending on the values of 'rl_catch_signals' and
-     'rl_catch_sigwinch'.
-
-   If an application does not wish Readline to catch 'SIGWINCH', it may
-call 'rl_resize_terminal()' or 'rl_set_screen_size()' to force Readline
-to update its idea of the terminal size when a 'SIGWINCH' is received.
-
- -- Function: void rl_echo_signal_char (int sig)
-     If an application wishes to install its own signal handlers, but
-     still have readline display characters that generate signals,
-     calling this function with SIG set to 'SIGINT', 'SIGQUIT', or
-     'SIGTSTP' will display the character generating that signal.
-
- -- Function: void rl_resize_terminal (void)
-     Update Readline's internal screen size by reading values from the
-     kernel.
-
- -- Function: void rl_set_screen_size (int rows, int cols)
-     Set Readline's idea of the terminal size to ROWS rows and COLS
-     columns.  If either ROWS or COLUMNS is less than or equal to 0,
-     Readline's idea of that terminal dimension is unchanged.
-
-   If an application does not want to install a 'SIGWINCH' handler, but
-is still interested in the screen dimensions, Readline's idea of the
-screen size may be queried.
-
- -- Function: void rl_get_screen_size (int *rows, int *cols)
-     Return Readline's idea of the terminal's size in the variables
-     pointed to by the arguments.
-
- -- Function: void rl_reset_screen_size (void)
-     Cause Readline to reobtain the screen size and recalculate its
-     dimensions.
-
-   The following functions install and remove Readline's signal
-handlers.
-
- -- Function: int rl_set_signals (void)
-     Install Readline's signal handler for 'SIGINT', 'SIGQUIT',
-     'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP', 'SIGTTIN', 'SIGTTOU',
-     and 'SIGWINCH', depending on the values of 'rl_catch_signals' and
-     'rl_catch_sigwinch'.
-
- -- Function: int rl_clear_signals (void)
-     Remove all of the Readline signal handlers installed by
-     'rl_set_signals()'.
-
-\1f
-File: readline.info,  Node: Custom Completers,  Prev: Readline Signal Handling,  Up: Programming with GNU Readline
-
-2.6 Custom Completers
-=====================
-
-Typically, a program that reads commands from the user has a way of
-disambiguating commands and data.  If your program is one of these, then
-it can provide completion for commands, data, or both.  The following
-sections describe how your program and Readline cooperate to provide
-this service.
-
-* Menu:
-
-* How Completing Works::       The logic used to do completion.
-* Completion Functions::       Functions provided by Readline.
-* Completion Variables::       Variables which control completion.
-* A Short Completion Example:: An example of writing completer subroutines.
-
-\1f
-File: readline.info,  Node: How Completing Works,  Next: Completion Functions,  Up: Custom Completers
-
-2.6.1 How Completing Works
---------------------------
-
-In order to complete some text, the full list of possible completions
-must be available.  That is, it is not possible to accurately expand a
-partial word without knowing all of the possible words which make sense
-in that context.  The Readline library provides the user interface to
-completion, and two of the most common completion functions: filename
-and username.  For completing other types of text, you must write your
-own completion function.  This section describes exactly what such
-functions must do, and provides an example.
-
-   There are three major functions used to perform completion:
-
-  1. The user-interface function 'rl_complete()'.  This function is
-     called with the same arguments as other bindable Readline
-     functions: COUNT and INVOKING_KEY.  It isolates the word to be
-     completed and calls 'rl_completion_matches()' to generate a list of
-     possible completions.  It then either lists the possible
-     completions, inserts the possible completions, or actually performs
-     the completion, depending on which behavior is desired.
-
-  2. The internal function 'rl_completion_matches()' uses an
-     application-supplied "generator" function to generate the list of
-     possible matches, and then returns the array of these matches.  The
-     caller should place the address of its generator function in
-     'rl_completion_entry_function'.
-
-  3. The generator function is called repeatedly from
-     'rl_completion_matches()', returning a string each time.  The
-     arguments to the generator function are TEXT and STATE.  TEXT is
-     the partial word to be completed.  STATE is zero the first time the
-     function is called, allowing the generator to perform any necessary
-     initialization, and a positive non-zero integer for each subsequent
-     call.  The generator function returns '(char *)NULL' to inform
-     'rl_completion_matches()' that there are no more possibilities
-     left.  Usually the generator function computes the list of possible
-     completions when STATE is zero, and returns them one at a time on
-     subsequent calls.  Each string the generator function returns as a
-     match must be allocated with 'malloc()'; Readline frees the strings
-     when it has finished with them.  Such a generator function is
-     referred to as an "application-specific completion function".
-
- -- Function: int rl_complete (int ignore, int invoking_key)
-     Complete the word at or before point.  You have supplied the
-     function that does the initial simple matching selection algorithm
-     (see 'rl_completion_matches()').  The default is to do filename
-     completion.
-
- -- Variable: rl_compentry_func_t * rl_completion_entry_function
-     This is a pointer to the generator function for
-     'rl_completion_matches()'.  If the value of
-     'rl_completion_entry_function' is 'NULL' then the default filename
-     generator function, 'rl_filename_completion_function()', is used.
-     An "application-specific completion function" is a function whose
-     address is assigned to 'rl_completion_entry_function' and whose
-     return values are used to generate possible completions.
-
-\1f
-File: readline.info,  Node: Completion Functions,  Next: Completion Variables,  Prev: How Completing Works,  Up: Custom Completers
-
-2.6.2 Completion Functions
---------------------------
-
-Here is the complete list of callable completion functions present in
-Readline.
-
- -- Function: int rl_complete_internal (int what_to_do)
-     Complete the word at or before point.  WHAT_TO_DO says what to do
-     with the completion.  A value of '?' means list the possible
-     completions.  'TAB' means do standard completion.  '*' means insert
-     all of the possible completions.  '!' means to display all of the
-     possible completions, if there is more than one, as well as
-     performing partial completion.  '@' is similar to '!', but possible
-     completions are not listed if the possible completions share a
-     common prefix.
-
- -- Function: int rl_complete (int ignore, int invoking_key)
-     Complete the word at or before point.  You have supplied the
-     function that does the initial simple matching selection algorithm
-     (see 'rl_completion_matches()' and 'rl_completion_entry_function').
-     The default is to do filename completion.  This calls
-     'rl_complete_internal()' with an argument depending on
-     INVOKING_KEY.
-
- -- Function: int rl_possible_completions (int count, int invoking_key)
-     List the possible completions.  See description of 'rl_complete
-     ()'.  This calls 'rl_complete_internal()' with an argument of '?'.
-
- -- Function: int rl_insert_completions (int count, int invoking_key)
-     Insert the list of possible completions into the line, deleting the
-     partially-completed word.  See description of 'rl_complete()'.
-     This calls 'rl_complete_internal()' with an argument of '*'.
-
- -- Function: int rl_completion_mode (rl_command_func_t *cfunc)
-     Returns the appropriate value to pass to 'rl_complete_internal()'
-     depending on whether CFUNC was called twice in succession and the
-     values of the 'show-all-if-ambiguous' and 'show-all-if-unmodified'
-     variables.  Application-specific completion functions may use this
-     function to present the same interface as 'rl_complete()'.
-
- -- Function: char ** rl_completion_matches (const char *text,
-          rl_compentry_func_t *entry_func)
-     Returns an array of strings which is a list of completions for
-     TEXT.  If there are no completions, returns 'NULL'.  The first
-     entry in the returned array is the substitution for TEXT.  The
-     remaining entries are the possible completions.  The array is
-     terminated with a 'NULL' pointer.
-
-     ENTRY_FUNC is a function of two args, and returns a 'char *'.  The
-     first argument is TEXT.  The second is a state argument; it is zero
-     on the first call, and non-zero on subsequent calls.  ENTRY_FUNC
-     returns a 'NULL' pointer to the caller when there are no more
-     matches.
-
- -- Function: char * rl_filename_completion_function (const char *text,
-          int state)
-     A generator function for filename completion in the general case.
-     TEXT is a partial filename.  The Bash source is a useful reference
-     for writing application-specific completion functions (the Bash
-     completion functions call this and other Readline functions).
-
- -- Function: char * rl_username_completion_function (const char *text,
-          int state)
-     A completion generator for usernames.  TEXT contains a partial
-     username preceded by a random character (usually '~').  As with all
-     completion generators, STATE is zero on the first call and non-zero
-     for subsequent calls.
-
-\1f
-File: readline.info,  Node: Completion Variables,  Next: A Short Completion Example,  Prev: Completion Functions,  Up: Custom Completers
-
-2.6.3 Completion Variables
---------------------------
-
- -- Variable: rl_compentry_func_t * rl_completion_entry_function
-     A pointer to the generator function for 'rl_completion_matches()'.
-     'NULL' means to use 'rl_filename_completion_function()', the
-     default filename completer.
-
- -- Variable: rl_completion_func_t * rl_attempted_completion_function
-     A pointer to an alternative function to create matches.  The
-     function is called with TEXT, START, and END.  START and END are
-     indices in 'rl_line_buffer' defining the boundaries of TEXT, which
-     is a character string.  If this function exists and returns 'NULL',
-     or if this variable is set to 'NULL', then 'rl_complete()' will
-     call the value of 'rl_completion_entry_function' to generate
-     matches, otherwise the array of strings returned will be used.  If
-     this function sets the 'rl_attempted_completion_over' variable to a
-     non-zero value, Readline will not perform its default completion
-     even if this function returns no matches.
-
- -- Variable: rl_quote_func_t * rl_filename_quoting_function
-     A pointer to a function that will quote a filename in an
-     application-specific fashion.  This is called if filename
-     completion is being attempted and one of the characters in
-     'rl_filename_quote_characters' appears in a completed filename.
-     The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
-     The TEXT is the filename to be quoted.  The MATCH_TYPE is either
-     'SINGLE_MATCH', if there is only one completion match, or
-     'MULT_MATCH'.  Some functions use this to decide whether or not to
-     insert a closing quote character.  The QUOTE_POINTER is a pointer
-     to any opening quote character the user typed.  Some functions
-     choose to reset this character.
-
- -- Variable: rl_dequote_func_t * rl_filename_dequoting_function
-     A pointer to a function that will remove application-specific
-     quoting characters from a filename before completion is attempted,
-     so those characters do not interfere with matching the text against
-     names in the filesystem.  It is called with TEXT, the text of the
-     word to be dequoted, and QUOTE_CHAR, which is the quoting character
-     that delimits the filename (usually ''' or '"').  If QUOTE_CHAR is
-     zero, the filename was not in an embedded string.
-
- -- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
-     A pointer to a function to call that determines whether or not a
-     specific character in the line buffer is quoted, according to
-     whatever quoting mechanism the program calling Readline uses.  The
-     function is called with two arguments: TEXT, the text of the line,
-     and INDEX, the index of the character in the line.  It is used to
-     decide whether a character found in
-     'rl_completer_word_break_characters' should be used to break words
-     for the completer.
-
- -- Variable: rl_compignore_func_t * rl_ignore_some_completions_function
-     This function, if defined, is called by the completer when real
-     filename completion is done, after all the matching names have been
-     generated.  It is passed a 'NULL' terminated array of matches.  The
-     first element ('matches[0]') is the maximal substring common to all
-     matches.  This function can re-arrange the list of matches as
-     required, but each element deleted from the array must be freed.
-
- -- Variable: rl_icppfunc_t * rl_directory_completion_hook
-     This function, if defined, is allowed to modify the directory
-     portion of filenames Readline completes.  It could be used to
-     expand symbolic links or shell variables in pathnames.  It is
-     called with the address of a string (the current directory name) as
-     an argument, and may modify that string.  If the string is replaced
-     with a new string, the old value should be freed.  Any modified
-     directory name should have a trailing slash.  The modified value
-     will be used as part of the completion, replacing the directory
-     portion of the pathname the user typed.  At the least, even if no
-     other expansion is performed, this function should remove any quote
-     characters from the directory name, because its result will be
-     passed directly to 'opendir()'.
-
-     The directory completion hook returns an integer that should be
-     non-zero if the function modifies its directory argument.  The
-     function should not modify the directory argument if it returns 0.
-
- -- Variable: rl_icppfunc_t * rl_directory_rewrite_hook;
-     If non-zero, this is the address of a function to call when
-     completing a directory name.  This function takes the address of
-     the directory name to be modified as an argument.  Unlike
-     'rl_directory_completion_hook', it only modifies the directory name
-     used in 'opendir', not what is displayed when the possible
-     completions are printed or inserted.  It is called before
-     rl_directory_completion_hook.  At the least, even if no other
-     expansion is performed, this function should remove any quote
-     characters from the directory name, because its result will be
-     passed directly to 'opendir()'.
-
-     The directory rewrite hook returns an integer that should be
-     non-zero if the function modfies its directory argument.  The
-     function should not modify the directory argument if it returns 0.
-
- -- Variable: rl_icppfunc_t * rl_filename_stat_hook
-     If non-zero, this is the address of a function for the completer to
-     call before deciding which character to append to a completed name.
-     This function modifies its filename name argument, and the modified
-     value is passed to 'stat()' to determine the file's type and
-     characteristics.  This function does not need to remove quote
-     characters from the filename.
-
-     The stat hook returns an integer that should be non-zero if the
-     function modfies its directory argument.  The function should not
-     modify the directory argument if it returns 0.
-
- -- Variable: rl_dequote_func_t * rl_filename_rewrite_hook
-     If non-zero, this is the address of a function called when reading
-     directory entries from the filesystem for completion and comparing
-     them to the partial word to be completed.  The function should
-     perform any necessary application or system-specific conversion on
-     the filename, such as converting between character sets or
-     converting from a filesystem format to a character input format.
-     The function takes two arguments: FNAME, the filename to be
-     converted, and FNLEN, its length in bytes.  It must either return
-     its first argument (if no conversion takes place) or the converted
-     filename in newly-allocated memory.  The converted form is used to
-     compare against the word to be completed, and, if it matches, is
-     added to the list of matches.  Readline will free the allocated
-     string.
-
- -- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
-     If non-zero, then this is the address of a function to call when
-     completing a word would normally display the list of possible
-     matches.  This function is called in lieu of Readline displaying
-     the list.  It takes three arguments: ('char **'MATCHES, 'int'
-     NUM_MATCHES, 'int' MAX_LENGTH) where MATCHES is the array of
-     matching strings, NUM_MATCHES is the number of strings in that
-     array, and MAX_LENGTH is the length of the longest string in that
-     array.  Readline provides a convenience function,
-     'rl_display_match_list', that takes care of doing the display to
-     Readline's output stream.  You may call that function from this
-     hook.
-
- -- Variable: const char * rl_basic_word_break_characters
-     The basic list of characters that signal a break between words for
-     the completer routine.  The default value of this variable is the
-     characters which break words for completion in Bash: '"
-     \t\n\"\\'`@$><=;|&{("'.
-
- -- Variable: const char * rl_basic_quote_characters
-     A list of quote characters which can cause a word break.
-
- -- Variable: const char * rl_completer_word_break_characters
-     The list of characters that signal a break between words for
-     'rl_complete_internal()'.  The default list is the value of
-     'rl_basic_word_break_characters'.
-
- -- Variable: rl_cpvfunc_t * rl_completion_word_break_hook
-     If non-zero, this is the address of a function to call when
-     Readline is deciding where to separate words for word completion.
-     It should return a character string like
-     'rl_completer_word_break_characters' to be used to perform the
-     current completion.  The function may choose to set
-     'rl_completer_word_break_characters' itself.  If the function
-     returns 'NULL', 'rl_completer_word_break_characters' is used.
-
- -- Variable: const char * rl_completer_quote_characters
-     A list of characters which can be used to quote a substring of the
-     line.  Completion occurs on the entire substring, and within the
-     substring 'rl_completer_word_break_characters' are treated as any
-     other character, unless they also appear within this list.
-
- -- Variable: const char * rl_filename_quote_characters
-     A list of characters that cause a filename to be quoted by the
-     completer when they appear in a completed filename.  The default is
-     the null string.
-
- -- Variable: const char * rl_special_prefixes
-     The list of characters that are word break characters, but should
-     be left in TEXT when it is passed to the completion function.
-     Programs can use this to help determine what kind of completing to
-     do.  For instance, Bash sets this variable to "$@" so that it can
-     complete shell variables and hostnames.
-
- -- Variable: int rl_completion_query_items
-     Up to this many items will be displayed in response to a
-     possible-completions call.  After that, readline asks the user if
-     she is sure she wants to see them all.  The default value is 100.
-     A negative value indicates that Readline should never ask the user.
-
- -- Variable: int rl_completion_append_character
-     When a single completion alternative matches at the end of the
-     command line, this character is appended to the inserted completion
-     text.  The default is a space character (' ').  Setting this to the
-     null character ('\0') prevents anything being appended
-     automatically.  This can be changed in application-specific
-     completion functions to provide the "most sensible word separator
-     character" according to an application-specific command line syntax
-     specification.
-
- -- Variable: int rl_completion_suppress_append
-     If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to
-     matches at the end of the command line, as described above.  It is
-     set to 0 before any application-specific completion function is
-     called, and may only be changed within such a function.
-
- -- Variable: int rl_completion_quote_character
-     When Readline is completing quoted text, as delimited by one of the
-     characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
-     to the quoting character found.  This is set before any
-     application-specific completion function is called.
-
- -- Variable: int rl_completion_suppress_quote
-     If non-zero, Readline does not append a matching quote character
-     when performing completion on a quoted string.  It is set to 0
-     before any application-specific completion function is called, and
-     may only be changed within such a function.
-
- -- Variable: int rl_completion_found_quote
-     When Readline is completing quoted text, it sets this variable to a
-     non-zero value if the word being completed contains or is delimited
-     by any quoting characters, including backslashes.  This is set
-     before any application-specific completion function is called.
-
- -- Variable: int rl_completion_mark_symlink_dirs
-     If non-zero, a slash will be appended to completed filenames that
-     are symbolic links to directory names, subject to the value of the
-     user-settable MARK-DIRECTORIES variable.  This variable exists so
-     that application-specific completion functions can override the
-     user's global preference (set via the MARK-SYMLINKED-DIRECTORIES
-     Readline variable) if appropriate.  This variable is set to the
-     user's preference before any application-specific completion
-     function is called, so unless that function modifies the value, the
-     user's preferences are honored.
-
- -- Variable: int rl_ignore_completion_duplicates
-     If non-zero, then duplicates in the matches are removed.  The
-     default is 1.
-
- -- Variable: int rl_filename_completion_desired
-     Non-zero means that the results of the matches are to be treated as
-     filenames.  This is _always_ zero when completion is attempted, and
-     can only be changed within an application-specific completion
-     function.  If it is set to a non-zero value by such a function,
-     directory names have a slash appended and Readline attempts to
-     quote completed filenames if they contain any characters in
-     'rl_filename_quote_characters' and 'rl_filename_quoting_desired' is
-     set to a non-zero value.
-
- -- Variable: int rl_filename_quoting_desired
-     Non-zero means that the results of the matches are to be quoted
-     using double quotes (or an application-specific quoting mechanism)
-     if the completed filename contains any characters in
-     'rl_filename_quote_chars'.  This is _always_ non-zero when
-     completion is attempted, and can only be changed within an
-     application-specific completion function.  The quoting is effected
-     via a call to the function pointed to by
-     'rl_filename_quoting_function'.
-
- -- Variable: int rl_attempted_completion_over
-     If an application-specific completion function assigned to
-     'rl_attempted_completion_function' sets this variable to a non-zero
-     value, Readline will not perform its default filename completion
-     even if the application's completion function returns no matches.
-     It should be set only by an application's completion function.
-
- -- Variable: int rl_sort_completion_matches
-     If an application sets this variable to 0, Readline will not sort
-     the list of completions (which implies that it cannot remove any
-     duplicate completions).  The default value is 1, which means that
-     Readline will sort the completions and, depending on the value of
-     'rl_ignore_completion_duplicates', will attempt to remove duplicate
-     matches.
-
- -- Variable: int rl_completion_type
-     Set to a character describing the type of completion Readline is
-     currently attempting; see the description of
-     'rl_complete_internal()' (*note Completion Functions::) for the
-     list of characters.  This is set to the appropriate value before
-     any application-specific completion function is called, allowing
-     such functions to present the same interface as 'rl_complete()'.
-
- -- Variable: int rl_completion_invoking_key
-     Set to the final character in the key sequence that invoked one of
-     the completion functions that call 'rl_complete_internal()'.  This
-     is set to the appropriate value before any application-specific
-     completion function is called.
-
- -- Variable: int rl_inhibit_completion
-     If this variable is non-zero, completion is inhibited.  The
-     completion character will be inserted as any other bound to
-     'self-insert'.
-
-\1f
-File: readline.info,  Node: A Short Completion Example,  Prev: Completion Variables,  Up: Custom Completers
-
-2.6.4 A Short Completion Example
---------------------------------
-
-Here is a small application demonstrating the use of the GNU Readline
-library.  It is called 'fileman', and the source code resides in
-'examples/fileman.c'.  This sample application provides completion of
-command names, line editing features, and access to the history list.
-
-     /* fileman.c -- A tiny application which demonstrates how to use the
-        GNU Readline library.  This application interactively allows users
-        to manipulate files and their modes. */
-
-     #ifdef HAVE_CONFIG_H
-     #  include <config.h>
-     #endif
-
-     #include <sys/types.h>
-     #ifdef HAVE_SYS_FILE_H
-     #  include <sys/file.h>
-     #endif
-     #include <sys/stat.h>
-
-     #ifdef HAVE_UNISTD_H
-     #  include <unistd.h>
-     #endif
-
-     #include <fcntl.h>
-     #include <stdio.h>
-     #include <errno.h>
-
-     #if defined (HAVE_STRING_H)
-     #  include <string.h>
-     #else /* !HAVE_STRING_H */
-     #  include <strings.h>
-     #endif /* !HAVE_STRING_H */
-
-     #ifdef HAVE_STDLIB_H
-     #  include <stdlib.h>
-     #endif
-
-     #include <time.h>
-
-     #include <readline/readline.h>
-     #include <readline/history.h>
-
-     extern char *xmalloc PARAMS((size_t));
-
-     /* The names of functions that actually do the manipulation. */
-     int com_list PARAMS((char *));
-     int com_view PARAMS((char *));
-     int com_rename PARAMS((char *));
-     int com_stat PARAMS((char *));
-     int com_pwd PARAMS((char *));
-     int com_delete PARAMS((char *));
-     int com_help PARAMS((char *));
-     int com_cd PARAMS((char *));
-     int com_quit PARAMS((char *));
-
-     /* A structure which contains information on the commands this program
-        can understand. */
-
-     typedef struct {
-       char *name;                     /* User printable name of the function. */
-       rl_icpfunc_t *func;             /* Function to call to do the job. */
-       char *doc;                      /* Documentation for this function.  */
-     } COMMAND;
-
-     COMMAND commands[] = {
-       { "cd", com_cd, "Change to directory DIR" },
-       { "delete", com_delete, "Delete FILE" },
-       { "help", com_help, "Display this text" },
-       { "?", com_help, "Synonym for `help'" },
-       { "list", com_list, "List files in DIR" },
-       { "ls", com_list, "Synonym for `list'" },
-       { "pwd", com_pwd, "Print the current working directory" },
-       { "quit", com_quit, "Quit using Fileman" },
-       { "rename", com_rename, "Rename FILE to NEWNAME" },
-       { "stat", com_stat, "Print out statistics on FILE" },
-       { "view", com_view, "View the contents of FILE" },
-       { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
-     };
-
-     /* Forward declarations. */
-     char *stripwhite ();
-     COMMAND *find_command ();
-
-     /* The name of this program, as taken from argv[0]. */
-     char *progname;
-
-     /* When non-zero, this global means the user is done using this program. */
-     int done;
-
-     char *
-     dupstr (s)
-          char *s;
-     {
-       char *r;
-
-       r = xmalloc (strlen (s) + 1);
-       strcpy (r, s);
-       return (r);
-     }
-
-     main (argc, argv)
-          int argc;
-          char **argv;
-     {
-       char *line, *s;
-
-       progname = argv[0];
-
-       initialize_readline (); /* Bind our completer. */
-
-       /* Loop reading and executing lines until the user quits. */
-       for ( ; done == 0; )
-         {
-           line = readline ("FileMan: ");
-
-           if (!line)
-             break;
-
-           /* Remove leading and trailing whitespace from the line.
-              Then, if there is anything left, add it to the history list
-              and execute it. */
-           s = stripwhite (line);
-
-           if (*s)
-             {
-               add_history (s);
-               execute_line (s);
-             }
-
-           free (line);
-         }
-       exit (0);
-     }
-
-     /* Execute a command line. */
-     int
-     execute_line (line)
-          char *line;
-     {
-       register int i;
-       COMMAND *command;
-       char *word;
-
-       /* Isolate the command word. */
-       i = 0;
-       while (line[i] && whitespace (line[i]))
-         i++;
-       word = line + i;
-
-       while (line[i] && !whitespace (line[i]))
-         i++;
-
-       if (line[i])
-         line[i++] = '\0';
-
-       command = find_command (word);
-
-       if (!command)
-         {
-           fprintf (stderr, "%s: No such command for FileMan.\n", word);
-           return (-1);
-         }
-
-       /* Get argument to command, if any. */
-       while (whitespace (line[i]))
-         i++;
-
-       word = line + i;
-
-       /* Call the function. */
-       return ((*(command->func)) (word));
-     }
-
-     /* Look up NAME as the name of a command, and return a pointer to that
-        command.  Return a NULL pointer if NAME isn't a command name. */
-     COMMAND *
-     find_command (name)
-          char *name;
-     {
-       register int i;
-
-       for (i = 0; commands[i].name; i++)
-         if (strcmp (name, commands[i].name) == 0)
-           return (&commands[i]);
-
-       return ((COMMAND *)NULL);
-     }
-
-     /* Strip whitespace from the start and end of STRING.  Return a pointer
-        into STRING. */
-     char *
-     stripwhite (string)
-          char *string;
-     {
-       register char *s, *t;
-
-       for (s = string; whitespace (*s); s++)
-         ;
-
-       if (*s == 0)
-         return (s);
-
-       t = s + strlen (s) - 1;
-       while (t > s && whitespace (*t))
-         t--;
-       *++t = '\0';
-
-       return s;
-     }
-
-     /* **************************************************************** */
-     /*                                                                  */
-     /*                  Interface to Readline Completion                */
-     /*                                                                  */
-     /* **************************************************************** */
-
-     char *command_generator PARAMS((const char *, int));
-     char **fileman_completion PARAMS((const char *, int, int));
-
-     /* Tell the GNU Readline library how to complete.  We want to try to complete
-        on command names if this is the first word in the line, or on filenames
-        if not. */
-     initialize_readline ()
-     {
-       /* Allow conditional parsing of the ~/.inputrc file. */
-       rl_readline_name = "FileMan";
-
-       /* Tell the completer that we want a crack first. */
-       rl_attempted_completion_function = fileman_completion;
-     }
-
-     /* Attempt to complete on the contents of TEXT.  START and END bound the
-        region of rl_line_buffer that contains the word to complete.  TEXT is
-        the word to complete.  We can use the entire contents of rl_line_buffer
-        in case we want to do some simple parsing.  Return the array of matches,
-        or NULL if there aren't any. */
-     char **
-     fileman_completion (text, start, end)
-          const char *text;
-          int start, end;
-     {
-       char **matches;
-
-       matches = (char **)NULL;
-
-       /* If this word is at the start of the line, then it is a command
-          to complete.  Otherwise it is the name of a file in the current
-          directory. */
-       if (start == 0)
-         matches = rl_completion_matches (text, command_generator);
-
-       return (matches);
-     }
-
-     /* Generator function for command completion.  STATE lets us know whether
-        to start from scratch; without any state (i.e. STATE == 0), then we
-        start at the top of the list. */
-     char *
-     command_generator (text, state)
-          const char *text;
-          int state;
-     {
-       static int list_index, len;
-       char *name;
-
-       /* If this is a new word to complete, initialize now.  This includes
-          saving the length of TEXT for efficiency, and initializing the index
-          variable to 0. */
-       if (!state)
-         {
-           list_index = 0;
-           len = strlen (text);
-         }
-
-       /* Return the next name which partially matches from the command list. */
-       while (name = commands[list_index].name)
-         {
-           list_index++;
-
-           if (strncmp (name, text, len) == 0)
-             return (dupstr(name));
-         }
-
-       /* If no names matched, then return NULL. */
-       return ((char *)NULL);
-     }
-
-     /* **************************************************************** */
-     /*                                                                  */
-     /*                       FileMan Commands                           */
-     /*                                                                  */
-     /* **************************************************************** */
-
-     /* String to pass to system ().  This is for the LIST, VIEW and RENAME
-        commands. */
-     static char syscom[1024];
-
-     /* List the file(s) named in arg. */
-     com_list (arg)
-          char *arg;
-     {
-       if (!arg)
-         arg = "";
-
-       sprintf (syscom, "ls -FClg %s", arg);
-       return (system (syscom));
-     }
-
-     com_view (arg)
-          char *arg;
-     {
-       if (!valid_argument ("view", arg))
-         return 1;
-
-     #if defined (__MSDOS__)
-       /* more.com doesn't grok slashes in pathnames */
-       sprintf (syscom, "less %s", arg);
-     #else
-       sprintf (syscom, "more %s", arg);
-     #endif
-       return (system (syscom));
-     }
-
-     com_rename (arg)
-          char *arg;
-     {
-       too_dangerous ("rename");
-       return (1);
-     }
-
-     com_stat (arg)
-          char *arg;
-     {
-       struct stat finfo;
-
-       if (!valid_argument ("stat", arg))
-         return (1);
-
-       if (stat (arg, &finfo) == -1)
-         {
-           perror (arg);
-           return (1);
-         }
-
-       printf ("Statistics for `%s':\n", arg);
-
-       printf ("%s has %d link%s, and is %d byte%s in length.\n",
-         arg,
-               finfo.st_nlink,
-               (finfo.st_nlink == 1) ? "" : "s",
-               finfo.st_size,
-               (finfo.st_size == 1) ? "" : "s");
-       printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
-       printf ("      Last access at: %s", ctime (&finfo.st_atime));
-       printf ("    Last modified at: %s", ctime (&finfo.st_mtime));
-       return (0);
-     }
-
-     com_delete (arg)
-          char *arg;
-     {
-       too_dangerous ("delete");
-       return (1);
-     }
-
-     /* Print out help for ARG, or for all of the commands if ARG is
-        not present. */
-     com_help (arg)
-          char *arg;
-     {
-       register int i;
-       int printed = 0;
-
-       for (i = 0; commands[i].name; i++)
-         {
-           if (!*arg || (strcmp (arg, commands[i].name) == 0))
-             {
-               printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
-               printed++;
-             }
-         }
-
-       if (!printed)
-         {
-           printf ("No commands match `%s'.  Possibilties are:\n", arg);
-
-           for (i = 0; commands[i].name; i++)
-             {
-               /* Print in six columns. */
-               if (printed == 6)
-                 {
-                   printed = 0;
-                   printf ("\n");
-                 }
-
-               printf ("%s\t", commands[i].name);
-               printed++;
-             }
-
-           if (printed)
-             printf ("\n");
-         }
-       return (0);
-     }
-
-     /* Change to the directory ARG. */
-     com_cd (arg)
-          char *arg;
-     {
-       if (chdir (arg) == -1)
-         {
-           perror (arg);
-           return 1;
-         }
-
-       com_pwd ("");
-       return (0);
-     }
-
-     /* Print out the current working directory. */
-     com_pwd (ignore)
-          char *ignore;
-     {
-       char dir[1024], *s;
-
-       s = getcwd (dir, sizeof(dir) - 1);
-       if (s == 0)
-         {
-           printf ("Error getting pwd: %s\n", dir);
-           return 1;
-         }
-
-       printf ("Current directory is %s\n", dir);
-       return 0;
-     }
-
-     /* The user wishes to quit using this program.  Just set DONE non-zero. */
-     com_quit (arg)
-          char *arg;
-     {
-       done = 1;
-       return (0);
-     }
-
-     /* Function which tells you that you can't do this. */
-     too_dangerous (caller)
-          char *caller;
-     {
-       fprintf (stderr,
-                "%s: Too dangerous for me to distribute.  Write it yourself.\n",
-                caller);
-     }
-
-     /* Return non-zero if ARG is a valid argument for CALLER, else print
-        an error message and return zero. */
-     int
-     valid_argument (caller, arg)
-          char *caller, *arg;
-     {
-       if (!arg || !*arg)
-         {
-           fprintf (stderr, "%s: Argument required.\n", caller);
-           return (0);
-         }
-
-       return (1);
-     }
-
-\1f
-File: readline.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: Programming with GNU Readline,  Up: Top
-
-Appendix A GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     <http://fsf.org/>
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.  We
-     recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it can
-     be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You accept
-     the license if you copy, modify or distribute the work in a way
-     requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in the
-     notice that says that the Document is released under this License.
-     If a section does not fit the above definition of Secondary then it
-     is not allowed to be designated as Invariant.  The Document may
-     contain zero Invariant Sections.  If the Document does not identify
-     any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images composed
-     of pixels) generic paint programs or (for drawings) some widely
-     available drawing editor, and that is suitable for input to text
-     formatters or for automatic translation to a variety of formats
-     suitable for input to text formatters.  A copy made in an otherwise
-     Transparent file format whose markup, or absence of markup, has
-     been arranged to thwart or discourage subsequent modification by
-     readers is not Transparent.  An image format is not Transparent if
-     used for any substantial amount of text.  A copy that is not
-     "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and standard-conforming
-     simple HTML, PostScript or PDF designed for human modification.
-     Examples of transparent image formats include PNG, XCF and JPG.
-     Opaque formats include proprietary formats that can be read and
-     edited only by proprietary word processors, SGML or XML for which
-     the DTD and/or processing tools are not generally available, and
-     the machine-generated HTML, PostScript or PDF produced by some word
-     processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow the
-     conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the title
-     equally prominent and visible.  You may add other material on the
-     covers in addition.  Copying with changes limited to the covers, as
-     long as they preserve the title of the Document and satisfy these
-     conditions, can be treated as verbatim copying in other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a machine-readable
-     Transparent copy along with each Opaque copy, or state in or with
-     each Opaque copy a computer-network location from which the general
-     network-using public has access to download using public-standard
-     network protocols a complete Transparent copy of the Document, free
-     of added material.  If you use the latter option, you must take
-     reasonably prudent steps, when you begin distribution of Opaque
-     copies in quantity, to ensure that this Transparent copy will
-     remain thus accessible at the stated location until at least one
-     year after the last time you distribute an Opaque copy (directly or
-     through your agents or retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of copies,
-     to give them a chance to provide you with an updated version of the
-     Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with the
-     Modified Version filling the role of the Document, thus licensing
-     distribution and modification of the Modified Version to whoever
-     possesses a copy of it.  In addition, you must do these things in
-     the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of previous
-          versions (which should, if there were any, be listed in the
-          History section of the Document).  You may use the same title
-          as a previous version if the original publisher of that
-          version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on the
-          Title Page.  If there is no section Entitled "History" in the
-          Document, create one stating the title, year, authors, and
-          publisher of the Document as given on its Title Page, then add
-          an item describing the Modified Version as stated in the
-          previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in the
-          "History" section.  You may omit a network location for a work
-          that was published at least four years before the Document
-          itself, or if the original publisher of the version it refers
-          to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the section
-          all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document, unaltered
-          in their text and in their titles.  Section numbers or the
-          equivalent are not considered part of the section titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option designate
-     some or all of these sections as invariant.  To do this, add their
-     titles to the list of Invariant Sections in the Modified Version's
-     license notice.  These titles must be distinct from any other
-     section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end of
-     the list of Cover Texts in the Modified Version.  Only one passage
-     of Front-Cover Text and one of Back-Cover Text may be added by (or
-     through arrangements made by) any one entity.  If the Document
-     already includes a cover text for the same cover, previously added
-     by you or by arrangement made by the same entity you are acting on
-     behalf of, you may not add another; but you may replace the old
-     one, on explicit permission from the previous publisher that added
-     the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination all
-     of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the documents
-     in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow this
-     License in all other respects regarding verbatim copying of that
-     document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of a
-     storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly and
-     finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from you
-     under this License.  If your rights have been terminated and not
-     permanently reinstated, receipt of a copy of some or all of the
-     same material does not give you any rights to use it.
-
-  10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     <http://www.gnu.org/copyleft/>.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If the
-     Document does not specify a version number of this License, you may
-     choose any version ever published (not as a draft) by the Free
-     Software Foundation.  If the Document specifies that a proxy can
-     decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
-  11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts."  line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of free
-software license, such as the GNU General Public License, to permit
-their use in free software.
-
-\1f
-File: readline.info,  Node: Concept Index,  Next: Function and Variable Index,  Prev: GNU Free Documentation License,  Up: Top
-
-Concept Index
-*************
-
-\0\b[index\0\b]
-* Menu:
-
-* application-specific completion functions: Custom Completers.
-                                                               (line  6)
-* command editing:                       Readline Bare Essentials.
-                                                               (line  6)
-* editing command lines:                 Readline Bare Essentials.
-                                                               (line  6)
-* initialization file, readline:         Readline Init File.   (line  6)
-* interaction, readline:                 Readline Interaction. (line  6)
-* kill ring:                             Readline Killing Commands.
-                                                               (line 18)
-* killing text:                          Readline Killing Commands.
-                                                               (line  6)
-* notation, readline:                    Readline Bare Essentials.
-                                                               (line  6)
-* readline, function:                    Basic Behavior.       (line 12)
-* variables, readline:                   Readline Init File Syntax.
-                                                               (line 34)
-* yanking text:                          Readline Killing Commands.
-                                                               (line  6)
-
-\1f
-File: readline.info,  Node: Function and Variable Index,  Prev: Concept Index,  Up: Top
-
-Function and Variable Index
-***************************
-
-\0\b[index\0\b]
-* Menu:
-
-* _rl_digit_p:                           Utility Functions.   (line  64)
-* _rl_digit_value:                       Utility Functions.   (line  75)
-* _rl_lowercase_p:                       Utility Functions.   (line  61)
-* _rl_to_lower:                          Utility Functions.   (line  71)
-* _rl_to_upper:                          Utility Functions.   (line  67)
-* _rl_uppercase_p:                       Utility Functions.   (line  58)
-* abort (C-g):                           Miscellaneous Commands.
-                                                              (line  10)
-* accept-line (Newline or Return):       Commands For History.
-                                                              (line   6)
-* backward-char (C-b):                   Commands For Moving. (line  15)
-* backward-delete-char (Rubout):         Commands For Text.   (line  17)
-* backward-kill-line (C-x Rubout):       Commands For Killing.
-                                                              (line   9)
-* backward-kill-word (M-<DEL>):          Commands For Killing.
-                                                              (line  24)
-* backward-word (M-b):                   Commands For Moving. (line  22)
-* beginning-of-history (M-<):            Commands For History.
-                                                              (line  19)
-* beginning-of-line (C-a):               Commands For Moving. (line   6)
-* bell-style:                            Readline Init File Syntax.
-                                                              (line  35)
-* bind-tty-special-chars:                Readline Init File Syntax.
-                                                              (line  42)
-* blink-matching-paren:                  Readline Init File Syntax.
-                                                              (line  47)
-* bracketed-paste-begin ():              Commands For Text.   (line  36)
-* call-last-kbd-macro (C-x e):           Keyboard Macros.     (line  13)
-* capitalize-word (M-c):                 Commands For Text.   (line  64)
-* character-search (C-]):                Miscellaneous Commands.
-                                                              (line  41)
-* character-search-backward (M-C-]):     Miscellaneous Commands.
-                                                              (line  46)
-* clear-screen (C-l):                    Commands For Moving. (line  26)
-* colored-completion-prefix:             Readline Init File Syntax.
-                                                              (line  52)
-* colored-stats:                         Readline Init File Syntax.
-                                                              (line  59)
-* comment-begin:                         Readline Init File Syntax.
-                                                              (line  65)
-* complete (<TAB>):                      Commands For Completion.
-                                                              (line   6)
-* completion-display-width:              Readline Init File Syntax.
-                                                              (line  70)
-* completion-ignore-case:                Readline Init File Syntax.
-                                                              (line  77)
-* completion-map-case:                   Readline Init File Syntax.
-                                                              (line  82)
-* completion-prefix-display-length:      Readline Init File Syntax.
-                                                              (line  88)
-* completion-query-items:                Readline Init File Syntax.
-                                                              (line  95)
-* convert-meta:                          Readline Init File Syntax.
-                                                              (line 105)
-* copy-backward-word ():                 Commands For Killing.
-                                                              (line  49)
-* copy-forward-word ():                  Commands For Killing.
-                                                              (line  54)
-* copy-region-as-kill ():                Commands For Killing.
-                                                              (line  45)
-* delete-char (C-d):                     Commands For Text.   (line  12)
-* delete-char-or-list ():                Commands For Completion.
-                                                              (line  39)
-* delete-horizontal-space ():            Commands For Killing.
-                                                              (line  37)
-* digit-argument ('M-0', 'M-1', ... 'M--'): Numeric Arguments.
-                                                              (line   6)
-* disable-completion:                    Readline Init File Syntax.
-                                                              (line 111)
-* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
-                                                              (line  14)
-* downcase-word (M-l):                   Commands For Text.   (line  60)
-* dump-functions ():                     Miscellaneous Commands.
-                                                              (line  69)
-* dump-macros ():                        Miscellaneous Commands.
-                                                              (line  81)
-* dump-variables ():                     Miscellaneous Commands.
-                                                              (line  75)
-* echo-control-characters:               Readline Init File Syntax.
-                                                              (line 132)
-* editing-mode:                          Readline Init File Syntax.
-                                                              (line 116)
-* emacs-editing-mode (C-e):              Miscellaneous Commands.
-                                                              (line  87)
-* emacs-mode-string:                     Readline Init File Syntax.
-                                                              (line 122)
-* enable-bracketed-paste:                Readline Init File Syntax.
-                                                              (line 137)
-* enable-keypad:                         Readline Init File Syntax.
-                                                              (line 145)
-* end-kbd-macro (C-x )):                 Keyboard Macros.     (line   9)
-* end-of-file (usually C-d):             Commands For Text.   (line   6)
-* end-of-history (M->):                  Commands For History.
-                                                              (line  22)
-* end-of-line (C-e):                     Commands For Moving. (line   9)
-* exchange-point-and-mark (C-x C-x):     Miscellaneous Commands.
-                                                              (line  36)
-* expand-tilde:                          Readline Init File Syntax.
-                                                              (line 156)
-* forward-backward-delete-char ():       Commands For Text.   (line  21)
-* forward-char (C-f):                    Commands For Moving. (line  12)
-* forward-search-history (C-s):          Commands For History.
-                                                              (line  30)
-* forward-word (M-f):                    Commands For Moving. (line  18)
-* history-preserve-point:                Readline Init File Syntax.
-                                                              (line 160)
-* history-search-backward ():            Commands For History.
-                                                              (line  52)
-* history-search-forward ():             Commands For History.
-                                                              (line  46)
-* history-size:                          Readline Init File Syntax.
-                                                              (line 166)
-* history-substr-search-backward ():     Commands For History.
-                                                              (line  64)
-* history-substr-search-forward ():      Commands For History.
-                                                              (line  58)
-* horizontal-scroll-mode:                Readline Init File Syntax.
-                                                              (line 173)
-* input-meta:                            Readline Init File Syntax.
-                                                              (line 180)
-* insert-comment (M-#):                  Miscellaneous Commands.
-                                                              (line  60)
-* insert-completions (M-*):              Commands For Completion.
-                                                              (line  18)
-* isearch-terminators:                   Readline Init File Syntax.
-                                                              (line 187)
-* keymap:                                Readline Init File Syntax.
-                                                              (line 194)
-* kill-line (C-k):                       Commands For Killing.
-                                                              (line   6)
-* kill-region ():                        Commands For Killing.
-                                                              (line  41)
-* kill-whole-line ():                    Commands For Killing.
-                                                              (line  15)
-* kill-word (M-d):                       Commands For Killing.
-                                                              (line  19)
-* mark-modified-lines:                   Readline Init File Syntax.
-                                                              (line 223)
-* mark-symlinked-directories:            Readline Init File Syntax.
-                                                              (line 228)
-* match-hidden-files:                    Readline Init File Syntax.
-                                                              (line 233)
-* menu-complete ():                      Commands For Completion.
-                                                              (line  22)
-* menu-complete-backward ():             Commands For Completion.
-                                                              (line  34)
-* menu-complete-display-prefix:          Readline Init File Syntax.
-                                                              (line 240)
-* meta-flag:                             Readline Init File Syntax.
-                                                              (line 180)
-* next-history (C-n):                    Commands For History.
-                                                              (line  16)
-* non-incremental-forward-search-history (M-n): Commands For History.
-                                                              (line  40)
-* non-incremental-reverse-search-history (M-p): Commands For History.
-                                                              (line  34)
-* output-meta:                           Readline Init File Syntax.
-                                                              (line 245)
-* overwrite-mode ():                     Commands For Text.   (line  68)
-* page-completions:                      Readline Init File Syntax.
-                                                              (line 250)
-* possible-completions (M-?):            Commands For Completion.
-                                                              (line  11)
-* prefix-meta (<ESC>):                   Miscellaneous Commands.
-                                                              (line  18)
-* previous-history (C-p):                Commands For History.
-                                                              (line  12)
-* print-last-kbd-macro ():               Keyboard Macros.     (line  17)
-* quoted-insert (C-q or C-v):            Commands For Text.   (line  26)
-* re-read-init-file (C-x C-r):           Miscellaneous Commands.
-                                                              (line   6)
-* readline:                              Basic Behavior.      (line  12)
-* redraw-current-line ():                Commands For Moving. (line  30)
-* reverse-search-history (C-r):          Commands For History.
-                                                              (line  26)
-* revert-all-at-newline:                 Readline Init File Syntax.
-                                                              (line 260)
-* revert-line (M-r):                     Miscellaneous Commands.
-                                                              (line  25)
-* rl_add_defun:                          Function Naming.     (line  18)
-* rl_add_funmap_entry:                   Associating Function Names and Bindings.
-                                                              (line  45)
-* rl_add_undo:                           Allowing Undoing.    (line  39)
-* rl_alphabetic:                         Utility Functions.   (line  38)
-* rl_already_prompted:                   Readline Variables.  (line  63)
-* rl_attempted_completion_function:      Completion Variables.
-                                                              (line  11)
-* rl_attempted_completion_over:          Completion Variables.
-                                                              (line 253)
-* rl_basic_quote_characters:             Completion Variables.
-                                                              (line 143)
-* rl_basic_word_break_characters:        Completion Variables.
-                                                              (line 137)
-* rl_begin_undo_group:                   Allowing Undoing.    (line  28)
-* rl_binding_keymap:                     Readline Variables.  (line 184)
-* rl_bind_key:                           Binding Keys.        (line  21)
-* rl_bind_keyseq:                        Binding Keys.        (line  57)
-* rl_bind_keyseq_if_unbound:             Binding Keys.        (line  75)
-* rl_bind_keyseq_if_unbound_in_map:      Binding Keys.        (line  81)
-* rl_bind_keyseq_in_map:                 Binding Keys.        (line  64)
-* rl_bind_key_if_unbound:                Binding Keys.        (line  30)
-* rl_bind_key_if_unbound_in_map:         Binding Keys.        (line  36)
-* rl_bind_key_in_map:                    Binding Keys.        (line  25)
-* rl_callback_handler_install:           Alternate Interface. (line  13)
-* rl_callback_handler_remove:            Alternate Interface. (line  42)
-* rl_callback_read_char:                 Alternate Interface. (line  22)
-* rl_callback_sigcleanup:                Alternate Interface. (line  35)
-* rl_catch_signals:                      Readline Signal Handling.
-                                                              (line  54)
-* rl_catch_sigwinch:                     Readline Signal Handling.
-                                                              (line  61)
-* rl_change_environment:                 Readline Signal Handling.
-                                                              (line  67)
-* rl_char_is_quoted_p:                   Completion Variables.
-                                                              (line  45)
-* rl_cleanup_after_signal:               Readline Signal Handling.
-                                                              (line  79)
-* rl_clear_history:                      Miscellaneous Functions.
-                                                              (line  49)
-* rl_clear_message:                      Redisplay.           (line  47)
-* rl_clear_pending_input:                Character Input.     (line  29)
-* rl_clear_signals:                      Readline Signal Handling.
-                                                              (line 138)
-* rl_complete:                           How Completing Works.
-                                                              (line  46)
-* rl_complete <1>:                       Completion Functions.
-                                                              (line  19)
-* rl_completer_quote_characters:         Completion Variables.
-                                                              (line 160)
-* rl_completer_word_break_characters:    Completion Variables.
-                                                              (line 146)
-* rl_complete_internal:                  Completion Functions.
-                                                              (line   9)
-* rl_completion_append_character:        Completion Variables.
-                                                              (line 184)
-* rl_completion_display_matches_hook:    Completion Variables.
-                                                              (line 124)
-* rl_completion_entry_function:          How Completing Works.
-                                                              (line  52)
-* rl_completion_entry_function <1>:      Completion Variables.
-                                                              (line   6)
-* rl_completion_found_quote:             Completion Variables.
-                                                              (line 212)
-* rl_completion_invoking_key:            Completion Variables.
-                                                              (line 276)
-* rl_completion_mark_symlink_dirs:       Completion Variables.
-                                                              (line 218)
-* rl_completion_matches:                 Completion Functions.
-                                                              (line  43)
-* rl_completion_mode:                    Completion Functions.
-                                                              (line  36)
-* rl_completion_query_items:             Completion Variables.
-                                                              (line 178)
-* rl_completion_quote_character:         Completion Variables.
-                                                              (line 200)
-* rl_completion_suppress_append:         Completion Variables.
-                                                              (line 194)
-* rl_completion_suppress_quote:          Completion Variables.
-                                                              (line 206)
-* rl_completion_type:                    Completion Variables.
-                                                              (line 268)
-* rl_completion_word_break_hook:         Completion Variables.
-                                                              (line 151)
-* rl_copy_keymap:                        Keymaps.             (line  16)
-* rl_copy_text:                          Modifying Text.      (line  14)
-* rl_crlf:                               Redisplay.           (line  29)
-* rl_delete_text:                        Modifying Text.      (line  10)
-* rl_deprep_terminal:                    Terminal Management. (line  12)
-* rl_deprep_term_function:               Readline Variables.  (line 174)
-* rl_ding:                               Utility Functions.   (line  35)
-* rl_directory_completion_hook:          Completion Variables.
-                                                              (line  63)
-* rl_directory_rewrite_hook;:            Completion Variables.
-                                                              (line  81)
-* rl_discard_keymap:                     Keymaps.             (line  25)
-* rl_dispatching:                        Readline Variables.  (line  40)
-* rl_display_match_list:                 Utility Functions.   (line  41)
-* rl_display_prompt:                     Readline Variables.  (line  58)
-* rl_done:                               Readline Variables.  (line  27)
-* rl_do_undo:                            Allowing Undoing.    (line  47)
-* rl_echo_signal_char:                   Readline Signal Handling.
-                                                              (line 102)
-* rl_editing_mode:                       Readline Variables.  (line 281)
-* rl_end:                                Readline Variables.  (line  18)
-* rl_end_undo_group:                     Allowing Undoing.    (line  34)
-* rl_erase_empty_line:                   Readline Variables.  (line  46)
-* rl_event_hook:                         Readline Variables.  (line 123)
-* rl_execute_next:                       Character Input.     (line  25)
-* rl_executing_key:                      Readline Variables.  (line 191)
-* rl_executing_keymap:                   Readline Variables.  (line 180)
-* rl_executing_keyseq:                   Readline Variables.  (line 195)
-* rl_executing_macro:                    Readline Variables.  (line 188)
-* rl_expand_prompt:                      Redisplay.           (line  62)
-* rl_explicit_arg:                       Readline Variables.  (line 272)
-* rl_extend_line_buffer:                 Utility Functions.   (line  26)
-* rl_filename_completion_desired:        Completion Variables.
-                                                              (line 233)
-* rl_filename_completion_function:       Completion Functions.
-                                                              (line  57)
-* rl_filename_dequoting_function:        Completion Variables.
-                                                              (line  36)
-* rl_filename_quote_characters:          Completion Variables.
-                                                              (line 166)
-* rl_filename_quoting_desired:           Completion Variables.
-                                                              (line 243)
-* rl_filename_quoting_function:          Completion Variables.
-                                                              (line  23)
-* rl_filename_rewrite_hook:              Completion Variables.
-                                                              (line 109)
-* rl_filename_stat_hook:                 Completion Variables.
-                                                              (line  97)
-* rl_forced_update_display:              Redisplay.           (line  10)
-* rl_free:                               Utility Functions.   (line  17)
-* rl_free_keymap:                        Keymaps.             (line  29)
-* rl_free_line_state:                    Readline Signal Handling.
-                                                              (line  85)
-* rl_free_undo_list:                     Allowing Undoing.    (line  44)
-* rl_function_dumper:                    Associating Function Names and Bindings.
-                                                              (line  29)
-* rl_function_of_keyseq:                 Associating Function Names and Bindings.
-                                                              (line  13)
-* rl_funmap_names:                       Associating Function Names and Bindings.
-                                                              (line  39)
-* rl_generic_bind:                       Binding Keys.        (line  87)
-* rl_getc:                               Character Input.     (line  14)
-* rl_getc_function:                      Readline Variables.  (line 128)
-* rl_get_keymap:                         Keymaps.             (line  36)
-* rl_get_keymap_by_name:                 Keymaps.             (line  42)
-* rl_get_keymap_name:                    Keymaps.             (line  47)
-* rl_get_screen_size:                    Readline Signal Handling.
-                                                              (line 121)
-* rl_get_termcap:                        Miscellaneous Functions.
-                                                              (line  41)
-* rl_gnu_readline_p:                     Readline Variables.  (line  82)
-* rl_ignore_completion_duplicates:       Completion Variables.
-                                                              (line 229)
-* rl_ignore_some_completions_function:   Completion Variables.
-                                                              (line  55)
-* rl_inhibit_completion:                 Completion Variables.
-                                                              (line 282)
-* rl_initialize:                         Utility Functions.   (line  30)
-* rl_input_available_hook:               Readline Variables.  (line 140)
-* rl_insert_completions:                 Completion Functions.
-                                                              (line  31)
-* rl_insert_text:                        Modifying Text.      (line   6)
-* rl_instream:                           Readline Variables.  (line  96)
-* rl_invoking_keyseqs:                   Associating Function Names and Bindings.
-                                                              (line  20)
-* rl_invoking_keyseqs_in_map:            Associating Function Names and Bindings.
-                                                              (line  24)
-* rl_key_sequence_length:                Readline Variables.  (line 199)
-* rl_kill_text:                          Modifying Text.      (line  18)
-* rl_last_func:                          Readline Variables.  (line 109)
-* rl_library_version:                    Readline Variables.  (line  72)
-* rl_line_buffer:                        Readline Variables.  (line   8)
-* rl_list_funmap_names:                  Associating Function Names and Bindings.
-                                                              (line  35)
-* rl_macro_bind:                         Miscellaneous Functions.
-                                                              (line   6)
-* rl_macro_dumper:                       Miscellaneous Functions.
-                                                              (line  13)
-* rl_make_bare_keymap:                   Keymaps.             (line  11)
-* rl_make_keymap:                        Keymaps.             (line  19)
-* rl_mark:                               Readline Variables.  (line  23)
-* rl_message:                            Redisplay.           (line  38)
-* rl_modifying:                          Allowing Undoing.    (line  56)
-* rl_named_function:                     Associating Function Names and Bindings.
-                                                              (line  10)
-* rl_numeric_arg:                        Readline Variables.  (line 276)
-* rl_num_chars_to_read:                  Readline Variables.  (line  31)
-* rl_on_new_line:                        Redisplay.           (line  14)
-* rl_on_new_line_with_prompt:            Redisplay.           (line  18)
-* rl_outstream:                          Readline Variables.  (line 100)
-* rl_parse_and_bind:                     Binding Keys.        (line  95)
-* rl_pending_input:                      Readline Variables.  (line  36)
-* rl_point:                              Readline Variables.  (line  14)
-* rl_possible_completions:               Completion Functions.
-                                                              (line  27)
-* rl_prefer_env_winsize:                 Readline Variables.  (line 104)
-* rl_prep_terminal:                      Terminal Management. (line   6)
-* rl_prep_term_function:                 Readline Variables.  (line 167)
-* rl_pre_input_hook:                     Readline Variables.  (line 118)
-* rl_prompt:                             Readline Variables.  (line  52)
-* rl_push_macro_input:                   Modifying Text.      (line  25)
-* rl_readline_name:                      Readline Variables.  (line  91)
-* rl_readline_state:                     Readline Variables.  (line 202)
-* rl_readline_version:                   Readline Variables.  (line  75)
-* rl_read_init_file:                     Binding Keys.        (line 100)
-* rl_read_key:                           Character Input.     (line   6)
-* rl_redisplay:                          Redisplay.           (line   6)
-* rl_redisplay_function:                 Readline Variables.  (line 161)
-* rl_replace_line:                       Utility Functions.   (line  21)
-* rl_reset_after_signal:                 Readline Signal Handling.
-                                                              (line  93)
-* rl_reset_line_state:                   Redisplay.           (line  25)
-* rl_reset_screen_size:                  Readline Signal Handling.
-                                                              (line 125)
-* rl_reset_terminal:                     Terminal Management. (line  27)
-* rl_resize_terminal:                    Readline Signal Handling.
-                                                              (line 108)
-* rl_restore_prompt:                     Redisplay.           (line  56)
-* rl_restore_state:                      Utility Functions.   (line  11)
-* rl_save_prompt:                        Redisplay.           (line  52)
-* rl_save_state:                         Utility Functions.   (line   6)
-* rl_set_key:                            Binding Keys.        (line  71)
-* rl_set_keyboard_input_timeout:         Character Input.     (line  34)
-* rl_set_keymap:                         Keymaps.             (line  39)
-* rl_set_paren_blink_timeout:            Miscellaneous Functions.
-                                                              (line  36)
-* rl_set_prompt:                         Redisplay.           (line  76)
-* rl_set_screen_size:                    Readline Signal Handling.
-                                                              (line 112)
-* rl_set_signals:                        Readline Signal Handling.
-                                                              (line 132)
-* rl_show_char:                          Redisplay.           (line  32)
-* rl_signal_event_hook:                  Readline Variables.  (line 136)
-* rl_sort_completion_matches:            Completion Variables.
-                                                              (line 260)
-* rl_special_prefixes:                   Completion Variables.
-                                                              (line 171)
-* rl_startup_hook:                       Readline Variables.  (line 114)
-* rl_stuff_char:                         Character Input.     (line  18)
-* rl_terminal_name:                      Readline Variables.  (line  86)
-* rl_tty_set_default_bindings:           Terminal Management. (line  17)
-* rl_tty_unset_default_bindings:         Terminal Management. (line  22)
-* rl_unbind_command_in_map:              Binding Keys.        (line  53)
-* rl_unbind_function_in_map:             Binding Keys.        (line  49)
-* rl_unbind_key:                         Binding Keys.        (line  41)
-* rl_unbind_key_in_map:                  Binding Keys.        (line  45)
-* rl_username_completion_function:       Completion Functions.
-                                                              (line  64)
-* rl_variable_bind:                      Miscellaneous Functions.
-                                                              (line  19)
-* rl_variable_dumper:                    Miscellaneous Functions.
-                                                              (line  30)
-* rl_variable_value:                     Miscellaneous Functions.
-                                                              (line  25)
-* self-insert (a, b, A, 1, !, ...):      Commands For Text.   (line  33)
-* set-mark (C-@):                        Miscellaneous Commands.
-                                                              (line  32)
-* show-all-if-ambiguous:                 Readline Init File Syntax.
-                                                              (line 266)
-* show-all-if-unmodified:                Readline Init File Syntax.
-                                                              (line 272)
-* show-mode-in-prompt:                   Readline Init File Syntax.
-                                                              (line 281)
-* skip-completed-text:                   Readline Init File Syntax.
-                                                              (line 287)
-* skip-csi-sequence ():                  Miscellaneous Commands.
-                                                              (line  51)
-* start-kbd-macro (C-x ():               Keyboard Macros.     (line   6)
-* tab-insert (M-<TAB>):                  Commands For Text.   (line  30)
-* tilde-expand (M-~):                    Miscellaneous Commands.
-                                                              (line  29)
-* transpose-chars (C-t):                 Commands For Text.   (line  45)
-* transpose-words (M-t):                 Commands For Text.   (line  51)
-* undo (C-_ or C-x C-u):                 Miscellaneous Commands.
-                                                              (line  22)
-* universal-argument ():                 Numeric Arguments.   (line  10)
-* unix-filename-rubout ():               Commands For Killing.
-                                                              (line  32)
-* unix-line-discard (C-u):               Commands For Killing.
-                                                              (line  12)
-* unix-word-rubout (C-w):                Commands For Killing.
-                                                              (line  28)
-* upcase-word (M-u):                     Commands For Text.   (line  56)
-* vi-cmd-mode-string:                    Readline Init File Syntax.
-                                                              (line 300)
-* vi-editing-mode (M-C-j):               Miscellaneous Commands.
-                                                              (line  91)
-* vi-ins-mode-string:                    Readline Init File Syntax.
-                                                              (line 310)
-* visible-stats:                         Readline Init File Syntax.
-                                                              (line 320)
-* yank (C-y):                            Commands For Killing.
-                                                              (line  59)
-* yank-last-arg (M-. or M-_):            Commands For History.
-                                                              (line  79)
-* yank-nth-arg (M-C-y):                  Commands For History.
-                                                              (line  70)
-* yank-pop (M-y):                        Commands For Killing.
-                                                              (line  62)
-
-
-\1f
-Tag Table:
-Node: Top\7f860
-Node: Command Line Editing\7f1585
-Node: Introduction and Notation\7f2237
-Node: Readline Interaction\7f3861
-Node: Readline Bare Essentials\7f5053
-Node: Readline Movement Commands\7f6837
-Node: Readline Killing Commands\7f7798
-Node: Readline Arguments\7f9717
-Node: Searching\7f10762
-Node: Readline Init File\7f12915
-Node: Readline Init File Syntax\7f14069
-Node: Conditional Init Constructs\7f33514
-Node: Sample Init File\7f36040
-Node: Bindable Readline Commands\7f39158
-Node: Commands For Moving\7f40213
-Node: Commands For History\7f41074
-Node: Commands For Text\7f45333
-Node: Commands For Killing\7f48776
-Node: Numeric Arguments\7f50943
-Node: Commands For Completion\7f52083
-Node: Keyboard Macros\7f54052
-Node: Miscellaneous Commands\7f54740
-Node: Readline vi Mode\7f58591
-Node: Programming with GNU Readline\7f60408
-Node: Basic Behavior\7f61394
-Node: Custom Functions\7f64798
-Node: Readline Typedefs\7f66281
-Node: Function Writing\7f67915
-Node: Readline Variables\7f69229
-Node: Readline Convenience Functions\7f81901
-Node: Function Naming\7f82973
-Node: Keymaps\7f84235
-Node: Binding Keys\7f86228
-Node: Associating Function Names and Bindings\7f90776
-Node: Allowing Undoing\7f93061
-Node: Redisplay\7f95611
-Node: Modifying Text\7f99508
-Node: Character Input\7f100755
-Node: Terminal Management\7f102653
-Node: Utility Functions\7f104090
-Node: Miscellaneous Functions\7f107418
-Node: Alternate Interface\7f110007
-Node: A Readline Example\7f112749
-Node: Alternate Interface Example\7f114688
-Node: Readline Signal Handling\7f117461
-Node: Custom Completers\7f124357
-Node: How Completing Works\7f125077
-Node: Completion Functions\7f128384
-Node: Completion Variables\7f131958
-Node: A Short Completion Example\7f147602
-Node: GNU Free Documentation License\7f160381
-Node: Concept Index\7f185555
-Node: Function and Variable Index\7f187076
-\1f
-End Tag Table
diff --git a/lib/readline/doc/readline.ps b/lib/readline/doc/readline.ps
deleted file mode 100644 (file)
index 3167255..0000000
+++ /dev/null
@@ -1,12105 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.994 Copyright 2014 Radical Eye Software
-%%Title: readline.dvi
-%%CreationDate: Wed Jul  1 10:33:41 2015
-%%Pages: 79
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
-%%+ CMSLTT10 CMTI10 CMSL10 CMSS10 CMTT9 CMR9 CMMI9
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -o readline.ps readline.dvi
-%DVIPSParameters: dpi=300
-%DVIPSSource:  TeX output 2015.07.01:1033
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
-def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
-rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
-N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
-false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
-length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
-forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
-BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
-{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
-round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
-rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
-/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
-B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
--3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
-0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI9
-%!PS-AdobeFont-1.0: CMMI9 003.002
-%%Title: CMMI9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup
-/UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI9 def
-/FontBBox {-29 -250 1075 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI9.) readonly def
-/FullName (CMMI9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB
-7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67
-7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8
-BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365
-82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC
-E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74
-91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E
-540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112
-7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8
-93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D
-EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756
-972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A
-6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149
-796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94
-DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B
-D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80
-E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D
-0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83
-F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9
-ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97
-72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F
-F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9
-4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1
-692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C
-BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109
-4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1
-CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59
-41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A
-9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20
-5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292
-2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5
-8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B
-33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28
-03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1
-749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE
-CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE
-3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F
-64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F
-90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05
-DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8
-F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D
-4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF
-49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4
-E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117
-58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE
-88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3
-B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE
-7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776
-01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46
-19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41
-194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55
-53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3
-F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4
-412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6
-C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC
-C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108
-4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831
-E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81
-AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF
-00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A
-E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91
-C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC
-B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8
-2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980
-F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50
-0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023
-28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4
-E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A
-C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42
-20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B
-7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE
-5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4
-74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4
-90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55
-3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621
-98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066
-54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7
-93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC
-19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A
-9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD
-E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84
-A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB
-107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA
-5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08
-22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95
-B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D
-403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789
-D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6
-20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6
-943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33
-AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F
-A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70
-B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA
-2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84
-2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F
-E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D
-E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F
-8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642
-87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4
-2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842
-D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC
-512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4
-4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559
-6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9
-9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A
-0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040
-9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B
-FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1
-430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8
-56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE
-718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3
-F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE
-95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B
-EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE
-6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7
-6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867
-630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111
-6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA
-89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475
-3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2
-90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47
-38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34
-EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9
-B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376
-9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9
-1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF
-1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C
-62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5
-84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2
-AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618
-D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196
-BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6
-4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6
-531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24
-FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2
-43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256
-D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6
-0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4
-E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53
-DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358
-99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD
-8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1
-8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73
-A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5
-362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3
-C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79
-E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2
-07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F
-0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6
-190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4
-5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D
-F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50
-005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8
-6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C
-D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9
-F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087
-F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE
-2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752
-F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0
-0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD
-73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2
-62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79
-5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98
-F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F
-6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7
-DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109
-EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222
-E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107
-536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18
-36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF
-B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3
-F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0
-431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900
-5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C
-074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78
-E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77
-2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600
-324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F
-FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR9
-%!PS-AdobeFont-1.0: CMR9 003.002
-%%Title: CMR9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup
-/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR9 def
-/FontBBox {-39 -250 1036 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR9.) readonly def
-/FullName (CMR9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 13 /fl put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340
-15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E
-ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4
-B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029
-85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C
-DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955
-F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D
-2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5
-B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7
-78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7
-E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3
-41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277
-B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072
-55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA
-700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9
-8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A
-F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4
-FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4
-3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15
-B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2
-AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013
-461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC
-CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85
-CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C
-4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F
-291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223
-D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181
-C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115
-D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9
-9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405
-2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380
-A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB
-2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E
-2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6
-AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577
-9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB
-B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67
-0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D
-9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B
-42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0
-C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35
-623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6
-B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4
-E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97
-CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D
-07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7
-53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350
-EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9
-52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88
-F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC
-D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3
-81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D
-B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6
-B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A
-31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF
-E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293
-846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733
-46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E
-44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08
-A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A
-BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5
-1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4
-D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344
-6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A
-E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E
-24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E
-75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D
-EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51
-C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0
-5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034
-099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281
-7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE
-53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84
-7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F
-7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C
-D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933
-CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD
-866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B
-B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826
-ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B
-B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64
-FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B
-40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643
-D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8
-2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787
-39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2
-1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4
-F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9
-253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B
-14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085
-6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E
-E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B
-9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E
-EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339
-FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F
-289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3
-A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5
-5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46
-5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652
-152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE
-67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3
-BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59
-3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88
-713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF
-2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5
-D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143
-6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB
-A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9
-F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95
-26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A
-C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970
-350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700
-70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5
-F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95
-F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8
-9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2
-DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473
-F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D
-064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF
-1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325
-A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E
-E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF
-01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C
-40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C
-72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645
-24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1
-EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775
-D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311
-83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483
-5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448
-1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69
-AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC
-4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3
-7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9
-65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063
-B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6
-FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6
-4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490
-8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6
-1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3
-10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B
-C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4
-8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A
-C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0
-7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F
-852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C
-3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997
-648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD
-855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE
-1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C
-1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0
-B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7
-D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99
-24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C
-552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733
-6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0
-800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8
-6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659
-E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4
-5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2
-00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F
-E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4
-82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7
-6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3
-128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D
-744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507
-84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF
-AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86
-5D2579DAAEE12528C23ED8A1A2F34CAD1CE8BA67D0B660E9281F247EC10F816B
-FBD6B9E8AAAA1DFCC4C9FF1C6AD05C0D776DBF675838C2629826D5337EED815F
-4268604A4EED01A2C7842FCAED2E37F7F39F980866DC5BCACA8616749FFE946C
-A0AB0475DA734C00D99912C544BD31F8A69367D068F0A18EE79FBD4D5385B8C1
-DEB92502ACB3B657A54C9BF786D7DC1ACABDF29591D77ACE1D4FE00E935D2858
-3733656C79DD1C174C26DD97D462B4323F33B410DEB64244095927C572FA90C6
-4C8B709C5B7E4386AEB936C2656B59AAFB74F9E40E680D890903458CB1B2AB8E
-6E629F88B51546877F7799B99DECDC13638E2765343988DE2ED33279DEC3FF0E
-2255A734F5925608991F068274CB1E5301C5B8623C5878851857B3E665490A7F
-FCE5A8DC0FFCF3D56BF55E4AB2ACC6743F52B59C1343A1C25BD46A6A3722957E
-24A6F4B970A594F67A09BADB6A7B4BEAD3FF97D0734470750FCE29807D315EFE
-F93BE16F39C0B59D107D1834FDDFD520D8A429FCDCA408C79DEB580081191B43
-20650B5375AECFC2DC500E3CA934AFA3D241FE7988892CEA42C8677DE18C43FA
-C3094F8DCB1D070DE0D32B69E2E1ECB4A82AD9E38D889D05418DF4E3C398FEA7
-BFE9B364A389B13BE713F5B2553ACD16C14AAE521B63E8A7DD0258EFFB95646C
-18226B01D916D41DDB322F6E83C3E3717FC113BF7D7AFDA2CC03B8175BD7DCD2
-AEC82FB156E051F2D87B9F12F81E1F43E822EE27219758B3E237AD772E7B1DB0
-19ABCE7BE6A2FC3C7DA0766FB82CEDBAFC19F7EB19C7448C1719C88FE99BCB73
-F7DEA427FBFCDF4F00E0FDACD080AF068F7A1CDE18315BD694C60B1DC71DAF1D
-1009AFC847156F96D9CD38A764D0EA70E5E9B6E19A2A0B80ECBB84CA44C137F1
-4925EF5766F00C22F967F9F68D7637DF0982785DABB8684A5525C6D23DB05B31
-026B49433392C8930BD9661B23C2EC0E0BC4F00FFB2587943DFDB4C6864CF1FC
-7152CC20860754204B7D4536F3C11460CD2626DEE88BBFE1CAFB5E62C9BA0C8D
-514629E5A25C4FDEDF56FA2CFEE1A648E78803062DAA41E3D2CA4400C74C3C33
-B77692A278BCC9B4E4512CFE8D71D53750ED0F7BBBC811EDDDAE0E7049BD916F
-8D1819A0AEF50E284BCE7CD48517DACB587D2C48AA89062A791DBA7549C22C0D
-2B14B2FFB48A05CEFA73D1F81BECD4BE921AEF860B30CC1FEFA6199BB39A8156
-1AC9CE55140BD9EFB3B2BCF6FB6645816F11C172C525D9E623FE2041BE9D41C1
-A3338195A24873E110DE875B1E4FFD5CA3CC44FF36163C867855620EA60319B2
-27A40368957F81B38F6346C45EEF35636B01923E356F2F4279001DF3FF52BA26
-B0C523895515658EE61DCD016A839A71ACB5645B4CEF3035843545920F7F6624
-B414350819CFBED577BEC9CAF1465EA75DFD39318F02ABF8697621325964DD46
-E8206C04B7C5285DDC91EDBB7F76DF9C9448A778F4D62307B2F042B169053544
-B3B19D36FF290B4BD1B807749BBF6077BA682539E07B846C9BEE668BC5DC5DEF
-CFAC349ECCA59B1A46CF89F2C410C648AB50B63BC616BA3D448B1A08A2C10BB2
-CA96A7BB2A498E7F00CFFFAC03C1BFFBA166D4948593ACEFB6E1E6D586D24F58
-43A02C59ADDAAC725D06E4C4EC1E1F5B2203289908605D950551C23A71E12403
-A443576CA8BF7C365ED9ED2AC7FA6B17A786DFD3731967B43B8715028241DA09
-934CD93AFE81013D9642DFBA66EA1C024FC804ED884088FA398F065F2AF53163
-6ABC66A18AB971A7B494B6EE78A12FEF18EAB42529A1296D054ACA5BF2C386B3
-5DC802B67E362B2FC35633487F2C0FC90333508BA50DCA2EBEE2FB939910E7EC
-128B7A7AA0F7A7CA91AF854AD2505F5DA70889940C4945BE229F6C2ECD1A8D5A
-B35F475DA0D33125009C6C3E7730DACFCF279EDC74DFC88630342D1D81315AEF
-884EABB7E785653BA2463C48708ECE70A49503575048CC768BB8F13FAECE7FCF
-29FAE1045C5C6E475E634DA1A2128A0D16487BF3D62BBAAFF6ABE72FF971C361
-E5B530D6C6977137319321BFDB6A526B7AEA07EB6548F6FACAD54C426D3E5207
-0443CA8ED660D368BF42FA1107A9503F5FCC4EB8D4C7D2CE580597E4A84EEA31
-135D139540C7D5B0AAE65FFE3475C1F2DA4318DB4204677B4C30652DA10155F9
-C1CEE50DA12BF2F08521A17641A2F5541EC84195149392FB34E900EE8C130A72
-A06E8D5C1C3012486BCBE6F82A8570054C243ADAB55F1BD0A2AC1D73029F6E0A
-91230FC5BD62E7C8179271886FE2A3D0A4D55D26A953064E16B99189D714CE51
-6C1ED25B47BBBF5494E1C788038B82BFD0D6CE9DB60E49EAF500DF9ED431BE3B
-5C5E93A14078C7962DCCF2A34966BC16EC17989C10D2C74FE0DC9306CEB61DF8
-A42FB761999A3EB75E31431F568CDEB0A3CC8C5FB6B76B8768086F20D284D302
-A144E5CDDB303676D612FE7D749FAF7E0EEBA5D5FF48E3CBBE5046131A8A00DB
-21F4A2C8788781CC2D3ED96148B7C77CAA7278CC32284B2BC83BBF542172F186
-677F635F73216E1D41D2CA802498C469234B79AF35BE521DF9E633293B1BAFDD
-3A0B043626E3CB0EE9072FE09F90B8ABAB28F60C42CD3F2323B7BA4E4F9FF6C9
-BEB3D0E12B74799E2321A65B88840470446AFB66E7B9FD92638947923F8942B8
-B9182715510969377DE1362216F2EF6B96D4622ABE65EBBC5F7FC397B50DF682
-07EEB73A649383B86EB255B9145916EE2E8C326052ECDE0EB367DCB62F7F88B3
-6F9F23853CF377EDF5F4B1F0A6DF99EF29F21452D2628A40F589BBA831118DA9
-DDF19BB85E5AF7D79F5DB4015D90F3AF189E7D5E9E3585B9D444218B889366E5
-7B4B8EB34F4106ED4E54EF08F08581EB40A5B49E214A86251FEB131BCB071406
-B322E962F9B14AEBD38747B44F976B30B184AD7667EB5AE3EBA6744D6C8422D8
-F4CB40C3216799F46067651DD21F6F763A59E93B9A67484E6CF9EEE3913B6687
-BFE8E68087D287651AA7666BA83B0D271A422E3F0FE0C2942AFA64F71B8237F5
-31C7F7D6E5D4903D3CA32C77781BD8C959FD6DD1BE80C113B59B39F1941E8770
-BF7F8B7139ADF77E2CCADFD99E2A87A5C10802D2D6CE3D9A3830378BE37D8903
-B87B38EF25C49FE93C797FEF7114D4BE3A58555F701CE4D8BC2605CEA9725E08
-B2460459E5A4CE44793FDF3C212A6B5909B49A4ECA55F53AA3B9AF63A2DDD339
-9023D61FF6C29721EF2B49C89320372059FA33F25CF6BC7F64E3B4EC7D7527F9
-62A8FE056259BFC788F24506F8F6E9777B693AA26F646A22F3ABA85A6FEE1B41
-373D90C3CB55A474A2E5EF80A129F5628CD064B590DEEE7935DE9AF5D68C622C
-814452DB304B52DEF5C9490B1366BA1834AC5B27DFF17CAA5722CF783AC8283D
-B84A3DD19587B204EF584499E78DB2222DCCD50847959B4820CCDC092F88693E
-50B9DA33FFEE72C235520F58332A3725BF62BEB005D36FD3CD1B2310B2982A34
-A095ACF013BB5C340A21B4537A7BDCD5161377A4818CC44D8A15BE7CACC03D33
-11CDF7811E0CF02F6F3213D3B598713F2EDE54E6857A526879C920D085A01997
-8DA06915850E5402A4444AABCB08881EDCA2DD068E1455BF9A155C54EF315FAA
-279D726F57FC86300BC4D9DFCD4D44EDFDDD4B00DE34948028C7A9255B931CC2
-77A0FF40F7ABEC709B67C6EADAD9D24B014DEB4C342E5F37E1CA26A1999CFDAF
-50D8E76F1715FA8EF095B88D9A8DF4325572B26753F763F264DA8887E4E5845E
-2A01F86149EBDD9CFC21CF2852CE95386DBB1E4DAA2113AA1E0C53746A3AA5F5
-78570500FB89E376549E282E2AE990E72C0E77F701FCC977868ED3FBB7C9CCCF
-CD28795A80AE8787EF1D0C374297819A324504623E12688B08E4782B18F05C75
-2E2CD594D0E6C10B002AD61CE491D4B95244E83DB861E36D293C0F556B295FBB
-8F045711CD606D024F0F03603629F3BD495183E821D0A1ACD83F3376B62D278A
-FFD084EF020A119836EB60D0F8A059BAD8D8CCE26A37182E7C89CFC2AB80C724
-275E921332ACC5A6991B36A2C7828B632DDDAF04780086F84E1A122461719992
-061E3F597C8E6DD8ECE708251DE0DED5DAF913AD4130ED89DD271B17C556F466
-A2587876F7954A9888751460B468313DDD88F267BE6C5FEA492A6CF1365AB8B0
-D8E872A625799B9BE1859AEFAD98B6F41AE33D0CC069BD36333819995FD9B510
-715BC8AC70443A107EB2E34809771DF24D3AC09D47768D3202D809B023FABA7D
-C6B8CACBEEC4B47082177995C3C00D08446DA56D527D8857E5D3342EC3C42DFA
-7E35C992B8C2A50E7374FE57092086613D5A3B4567A9DA3758F48E6817CA3C2D
-BC552BF4A17E92DFB106E74A2C53DBEA13481DFB9EB64422F5CE073512B67018
-46E902A52D5AC8A943C93B1921ACBA76D6DD2DE9077C280E1E6E43ABB9DD11AF
-E065D8EB102BB53A37F6B491EE341CC8D4D3AE311F122A28F7FC5481CC80E119
-EC3E67AEAC772AB31D41151AD51B88122325456163D1E84EFBC5CB9A55BC4C15
-7A2D56ABC55E61A49311ECB2C3267F7EAA3C284A0135985EB5E2D4113BDB8433
-123A4A4109F6926D9C38D502B5659AF97969C3160BA5E6E32B95AD5D6855D307
-89BDDE727683B2F05D6D9E74813CAF8038C03C574183CA79025D33FEBD68811E
-1A3B42236EE1CF60614237538CB2C9567612DE1DAB1C864828B9604A5D4A52DF
-D5012F80352DB0AF93758E8DD4ACEC077160D74FC723F6878B2556690E9ACC91
-5B552329E06B87A06E733270BE98C16A30CAE3A798CA80E7A9C3B8733A9428DE
-0F4DAFA656E6D01470FA746BB58E686846C29933F9A48932E6AD3A20C7A0FA91
-AA45745AF05ABC50D77498AF81E72D0DBF7D6FAF97E5538673C57A6EE39776EE
-06BFD30F67A57AC796036A5394DC9A8C75556144497637C28F3C56DBFB21595A
-D2A46D6C4A0B63508A238B97ACB24499AB5540851B86E273B7B2DED24B458DB1
-5280B3F9040C08672F7DFDC4B69C54B92EE3555902BF55D64CFC95A9DD143C18
-FEEDB1BEA96762AECDA9DEE705AF2DD54C619328B9A26D019984DEC1EE34F30E
-CA4EBD5A4AB2C8547C0EB264D47943AF93E281A9E346B6346B809363CD7D67D9
-9A8D6A2B1C109C8F226BE11C405F18E0197A47E44B57C1CBC8CAB957A2F60771
-CF8DAD0E361FF6891CACF5672997B0357F9A5D16D424F2B32A0256210106B3B8
-160B3CF0FB7D28A84FA861B0210F383466B6E69DA79B59D95AA05D608DAE9D56
-7A05E3CBBDFA558C8F3A5D5AD9F70AD60FF059AD26041DE8819EDB2746DAB76A
-6600D7C708F08D266FE22609BA7462A9378E691E175230E4D4CF6F1FB40BBCE0
-31E34EE09023FB7BEB557267986637DD5D9C70E38C14E485BB6CDFE0826F9DFF
-F5094AABB6719C11474BD877358C603FE16B3A26B8C3CA026E6B29B1868F2AD6
-2960CF99DE7E16B18D3480F52585F39D0B45574D4A0008BCD49C3F2B27930B25
-3117251BB7116A23C586F7B0706F7F2BB00611C4FA705CC11783E6A1D868E1E4
-5685B46356200BACD8C9851AC613169CDF40BBF1B400E21137D00EBA1E782E97
-BD6972E405ECD84202049433393B3C283D44AF4C3BDB3D1B700F43AB576B4C7A
-195500FEE676D1DE97C32859987267428884E4E58C2D8FB367810741B0FB7D37
-4F185ECAE1AF834069503E8014FA13225152CBEDD5A1CB8895DE03E1B1704892
-23D2C13F5EE53AD95EBE5C0AE07FE2DD36209897001FF645DB1276FDA49951B2
-D319D63FB045B477BE528C3667F0CCB6853E0D31C77ACFBED46251BFD60C1321
-D0FD450193208958E91C05E9518F3E2FB9D4B6AFD5084ED2C13DC3E59F85C853
-10AB3B7706863D6056954E6E89A23D22FF9D3A868C7A47FAA92C95A5BCAAD7DA
-0D145FDAEC7EF719C077D8FFB191CFE21E87736A98965A4A4AB2447B607D02AE
-8995550F0BCEFA8BAB7A197C053F69BBA12CB7C01976219DFC6D2A49D415EFFA
-66F17762549A09F43FFEC19B4A6CEE65A6903702F1750B263C342E5CD8D26F9B
-363D9AF452BBB2B0D5551D412872AC8F781630B293FA0B96FF49893200BDC53E
-32CAEA43D4AC2D01FB9212277ADB59C864CED023A8C30665A2BFD059A1031D86
-6410CF5A2716F0927A8F9213C73681278B8EC121E0AC73D46A704D6B28D7B003
-FD075F4455CABF65FE19A91768983B2B3FCD40AA0194EDEF3C94C06D2787F469
-BB045AF387183D001E980E05859D316821023CBC205C505B11DA011D784B7F3A
-C47E20AD8F87E499D7D77EF84C75093BC67969E7CA8714F55D7945F799D6A640
-E6F00FCFE28DE659F36F947324DFF4E79AEFB61EF14ACB3FC078873A17FCB5E1
-D3C40C11B5A4327CF96E07F5CA9D62127553EE94BF3C148D9EB83353E9DBFDFD
-FF9FACBDC8AED20340D2FCA6F3866DF72EE9CC880E4069DAAA2BA5A845DE7FB6
-CF7E686BC5CE9A4B6D37890D902CB7641033A7C1B7F974828F4FC8AF251F7985
-E576958972852E144094C10EDA802DEE259F7437CD26A1C9094F87ED0697D713
-94BF9E15347EF558B9D40243DDD348C7FDC96A1FB6D362BD9D955BAE3F6A2353
-84D89A27BB4DABE3CB58A9334971E39215DE41B4DA77FFD32B088EDE2E23A26B
-59273A7DC587D70CCDF43BC64BC3CB11B6EF90042B8193C0C4E66D9C7BC7F459
-F8FFA1D733503659A2C2BA42C0A1E262D15E97A55E97D746455266507B4B2913
-EAB47632D372206F3F1CA23939A281F2CDF5E2DFF06B94560879BE2080E2CBE7
-DC93A7869391B1F44A4466B38B2A4A8A8F8774D76B8F2449435B525F2651791D
-890D1078533B845F34713FC87A34153D1175B40B7A46F2C228C6405E4652E635
-D9DC320111AB934184B34B30A946D74D30894AA99769BCD213FA3494F8C998D9
-BE4501663B8CA4441C8A7A0314BE23D451D19E1ED15831DBB29180E023A989ED
-4A4C4C92C65637A9DEB914179A4D3735CABEC726E9F431367994E32CA1C83541
-ECCB0D463DB8A0316213A3356D7C654F9F5A4C57260485D0FE8ACFB6FA759A74
-BC1C53F32A147A9F0B2264AA8CAC642D6D932E462D76F113ED2BE639DC67F8E9
-7CEDAC5FC2ED44E4AF3ABB083F3D103378B784E9B0D88DDC98160629B0731AFD
-1502AA443FFF69071A8C6E6EA0A309893DF57E550C270B7BA271234BC69DB3DE
-7D7A87D9A8450596960F05942E390BD546A9C10501057B96009548EAA8FA3DD9
-DE5BACF5AEDAEABC2998F34BB48497E022CF71C4260537F19A7D38679558E405
-EEB015B7BDB6092553644D28857CF4FA28E18040C3E6B8DB88289CFB10FD86E1
-99D4DAF86714EFA28E61FBB3010CCFB8EFD7C9B6E2B759F276616DDA9F90335A
-388DDAC61C577A057434F28CCFB339902BE256D21F4D52DCD450AA5B747D7471
-8098E4B634907BE1DAAA43FFAB7E4AA8705E76E9ED086CAF7D73375E7EC6626C
-FCAE8CE2AB754C256B795BE48428076BF67D614F3FB28AF32DFCD73F17B13E2B
-B127E86C5726769BA5A5D2045B839E4FB5D382E93851E839D2C0FF5824B72C84
-D1C96EE48AFC44DBE54E1844BF709BD50C0E1D456EF920662D905C823C912A13
-018EC340C0F4B508F7D8AEAF895AC0CEE8B15A2620DEAF8B4CDCCDCBF40D626E
-43CB4C280366C106F7951D505973018D307D9858D32E7360183E68C226060B32
-A342BF4CFFDE1AD9B5111CB80734C1E625343148FF2870D1D87DC70E9264E9E9
-BA20D962DA30CB7A2755B510F86899FE1430E46E76672E30A1CED0AAAD9E983D
-4E3911BB537D48A168F7B3BD46592FD4B07B9CE043BE9DE2148BE10BF8C30C68
-76B76138AB34805C6D8B6454E3D5A830407A51B9E1A71DB17668E7A94BB150E7
-BEAC13AE7363DEE94E696FEC3627958DC530490FEE0DBDA1ADA7F00848D3C3EA
-683757DCB8AFEEA2C95B7B27D8EEC5956AF8E26BC8CFF14DD8A2E6A638C5D6CF
-E128C7F8BB3A3F27EC922041E857CB68CA824DE6DBC56F68CBD131AAEBD6B0BF
-4189A1AFA1108BC42C2697B3C24AD8587EFF5C8B46A995CD881ED98523FC98CA
-6A123D37FC9D79F0E9A6E6D9E783D8826A0A07A9EFCD563286710FA3CA4EF170
-1B42B440BEF8ABA94FCCF86F0BA118F36F80F6BFFEA5D13CE0FF328CF428D437
-EA9076A01A151C0D6CA5A7B8410815A88DD92BBD2A27EF160F39CAA7E0A27549
-EE8E1B301374028A8C30504461A0CE8CF9D1AF3BC27182E4FCADBE153FC3BDCE
-04B9EF6B6C383FCEEA6DD9D51CFC360A9DDA8F18F28175B3AC453E4387D9CF90
-28B44827AEB043F2971C0E6C852882734C9B790DF14ADD37A55E807068431ACE
-0BC67F4D03FBB3C611004D0C1E1B9D5CA572191A13820DE990F029E1EC07866B
-9307D5B77304C9AA9D987D8E2CB1C302F4EBE5AE1A18EBE36901C6D94A3B4D48
-F31301459C87955B6C24F48A98BE883BFBF526DB1DBFAD1D6B23F29E6C32B3C0
-CC56550FB658455B8E3F2A76BCF1EBC9F6AAA1200C428465A22FC1C748CA45D2
-7427F87D506B90D3C676AD753DDAE196464C9672614D1FC43F0DB91DD9A00B4E
-9D8E31DFADEF3AB6518EA1C7BD9BE20AC8C66D0B1CE9737C338E02794640F7F4
-F1F2E04CA39971AEBC9FB699ECA8F07569C8AD9833E69DD9EBAF42376BEA1961
-9D3312A8620A66BC68607C0B7D723DEF61764B7CA43EBA27ABA5B0F518F40B01
-E713AED7BA6E23BA5D866E10638DA78B9BFA68757921C9E766603F884C18E76F
-848CE800A1A1E6FADA9E1BC717AF098446AF80924915D0AB86F4A3615D4FD49A
-A5A844530155E047DF9A6F878677C12391DC8FEE91C90709E3D06F31D10952A6
-5B0D30556D0AA5F59DA5637BB280842DF8720816D67F465B48A063BD606B536D
-760A402075ABBD70940DFB7EDA04B55B5E36D2B512A6D01E7E97FC90D708EAB6
-0F9A77ADCAD63063C5837DDDF800A4D407601B15895E83B58359821426E93994
-019B73A5FD9661550718CC3B2F79E9A6A0E7C4984EC1426C0B8EB86DDEAB3FCD
-D1B467FF32005EDABE59166D2E0564CCD1AF482301D2BFAF138F88E2FEC6AC7F
-060555D402304EDECAD793EF9F779F6AC52B1AF86D714F5CDF3C574592E8C742
-23204EC2C4C226968B8633554349A2C0A987E2812B8CA402A0A1BC7A16D452A5
-76083FA380D36F227828DF913C468AC69C435B2341A590AEE61A44B1A00D5409
-B836D6BD6670D5C02A614241941EFF04BB09366E4CCE644F8A3D2CAD5BF9E445
-BA296EF46392ECA30976FC566CCD4354D124DA25D9708578214DA5582122D8F6
-8EACCEA4CA8F63F15CAB59FDF29AEA5B4480023D6A61878B43B0F9CF1F4C6792
-C9B0726B1D5162E665CE4F89BD724CA7B957DDF865F6833BDA3736310595F2A8
-58182EFCF9911455FC934CEBD36C3D6E258D948AB4E28D225BAE6C73D7F96E9B
-EE7BB7FB24CFE23558DB7050113CF8FAAF62E6DF1B05064FA99C2016537F4A60
-0C80147EBBB95DBFD8A03B125C464E5917AE0F11D293CB75C8FF18322D788FF9
-61593E2CF4FFBDD2A1169A37CD3483C3125A9669231592B85D80FFC5FAABBB79
-3E7F46EA5B3F67B0B5802642CC139D752C8A9FC6687CD6380192BBE2864AD792
-F84A826F9052A4970DE4725B125874C162F00453A685A329867D237E3FF253B4
-0B05384E0452602C3F021E47F5B2D680A5D120B7A7F4E261B1598DA4B55B3AA3
-BE47D2C7FB46780153B3A7E124BEEBF25BA598021BF943DDDC3CAC5CC661FCD7
-F78EAB069BDD1531684BADB59CB3DAA544A7F38429104399FFD147B2973E02BA
-5D7C964A69650D9C5B1C3806A9B0F33478B9B2D8CB730D4E28BDF9C35A0E015E
-AEE3110714E6E09D51A47EBE4DD5C1A4A7E608B0C5233B85426B1696C88E4A1C
-56210C41D7B778DFDAC0708EEEA185E37CEFDE917728E9E2BC9ACE85CEBFF12F
-702AE7B7D0288FD933ADDC3AC849D7352613C41BA4A7988A08D24DDF178E3C48
-1C7D348E7F5D67A764FDFBF5FB9A20195F4C806ACB59A47F334CE16B5CE3B8AC
-FC951D49170D29B662A7A6EBEC46EBA01C96E85F8A4559CBC60D675EB6E1D7B3
-84C917104B318B9AD8CBAF12CFA478590690265DDB43198C7B7C1C6D5A23DB30
-11C1D6AE610ABB2985CB9D00B91860963C316BC83B9F2747AA99CF8EC08CF47C
-D599CCA471FBD4C2059F8EF134050CC6247E9E56FD480E9B93DC083B0F16D673
-7E0A1096C30E9B8B0501BB25516B18471413428F50217BC2EDFD22EC1135D121
-DA739DCD4AB3AFDE2AB9407887D1F23CC5778C90D5C32BAA41A094968BB78F81
-FE42DB18820C03641895AF1D998B2A0C5C1543FDF91D6562A7D63C136C47AD42
-C1B04F7A70393CE6D13D313B63967BBA42F356AFDC81851BA94ACEA54ECAF0AD
-8B6D4BC392CD8B4C71CBCD1B31A4FFC431970C88ED7D003EA9964F8829FA69C8
-D7BB49B7AE6571ACC901BAECF22D72CF86CE1AC1D831FC5FB5E6FBAF959CDC2D
-900A773752D320C730E4A8D8612CDABAB22B6FE49DCA590A05861E2421541766
-3230671D0722C743024A8D143E3CA1DC3658F10B9779F4BB5859BBA03E03EA43
-68F9B65C04CD618BF61F0110EFF9DAC63DD889230010AFB6EADC13371A34D3A7
-CF3879D64242EB295ACFE2A2A7AA7D5919EBA50C38462BD9AC72160A24CAAA4D
-F467AF4A4102D2C291E4B80543BC7D72AAF725BE15A1CD8499ECF99B73105E15
-53F2E4FCBFE1200A418A2207BF2F9D9BCDDDB62500F8394AA90E615D06A805EF
-BA1006E2C3638FF8AF1D67D3A02F3E5185394D4D83A8E0502759A14F38DB9523
-1059BF230DFA29CF3020F2380406A8DBCABC40B50833E5E5253B524E2A4DE292
-49117835FBA70CC6B1A7E662B1FF2A5C96AA9CBCBBA454A623CBD4FB0FE35578
-3DC8B468AB579AA8D154035EB6F30F961412B5AFE7074F18AB9019AD2E600DCE
-5C8376340B88DDFADCB4B1C46D4F63BBFA3631E11BA5DF550A4381B3DD1F1D11
-F47DF28562E706A080E38B2E61E03603694816D50D9AE19079228882B70AB605
-D5D4836F29B382A61683318A3442770BB18BC376EBC07BBDE01ECA8677702913
-2688777C8CB4E87B6692E5E86A54A220F927C3CBF885A78960D307B572F57650
-8D817DFB1124BDF3803A828D64EEE5EDC69D3568EF04D2D8C0285568817FA562
-08FDB68E1C0B822668CB706C3700BF0C30D72D048B943D50B00889A33003B446
-DD7F3E4B35F257B0537E91ED175FB3A32895457989C018A71A1023E096B539FF
-1B09C66F77EF13F874F16E6F7D5BFD6EFF37202730AE5231A29B4F91B868C93B
-CB3D9F38159EB9CCA2E1B3CBF296E27005DF9884F71C733BD4EE3F144D37E20A
-65262030DA75AF8151F141693F97E380C5733B92A5615351E506925301308872
-09EAC5535D6185652AED2621F4E0D3224128620FB6D9D0B99C3D31B3E20F980A
-A43A22BDCF8A2779BE4744B76E908354589E1D69A7691884319FDF889A288E89
-696E5FEFA1350410F0411CC4B1FA2E4A767A662606978716754FD44FD7161DD6
-7CAEA2734F499316BAF6E665DD6C85980CEC818542DC7460B336097E25C47AAB
-F26FC408465B034EC7173FC10CC7FCE36A9D74786BF2007D0EA403D3F8E90FB9
-852B4D1400ED16A4B945C3426617EF47A8118551D0CF6B5E95C525FB8A896FF7
-FD7FABA141B597D27499B7D7D97712248CF0DF7976BED02A5D564D59B23F4B18
-9F13FB0DC17334A496FE3C2C84F4CFEEC9F89B14A7482AB324DFB201B6B72295
-98EFBE2C8A5A58FB4EEF33F4888773533A9D5D73732662192B72A1D5102E2F5E
-247C9282EAF1705B5E96C9EDC36111AD5FC2E1FCC606DB766775AF00834B2631
-AB76888E6FF3CD6BA444C804770463EF3F5014DB69D860EE563CBA238F8DC2ED
-3B5948A27A0D02033850B4B49E15EFD202B0B3ECE75C407F0843FD84D070344E
-01D1462A8F7CD73954D75D7CFE22A8F4B69185A3B3081C1D113D9B2FDA91AB0A
-5D3FADD335B480F61C6A5C25496F3FAD35449A156A23CCC9C3D5BFF5F1C1D243
-607E05B2F81999337A57A673026E7716ABD0395134BE23DC11484F898D9DC7E9
-68CBA68E60DD836462767ADBCAB8F3353778FA7B976E01458064B51B5D2F2B53
-4E26AA1EB608D072089F858B1C7A7E1C217C8872E44CC5AABC5DE83E10C3986F
-E5A484B2EF6D8B05F70C499BAF6054C05C10C1D45C8FEF8D493968F065EC4161
-B8B04F8588F208C4902D37520724B2CB0299D8120D11B836F8B301229BC57CE8
-3DE15D7DD8D829BA7A7F3E39885771A4469E5E4390A60C295926AB828CD91058
-93832AC0A6BDC8A6B7
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSLTT10
-%!PS-AdobeFont-1.0: CMSLTT10 003.002
-%%Title: CMSLTT10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
-/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSLTT10 def
-/FontBBox {-20 -233 617 696 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def
-/FullName (CMSLTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 39 /quoteright put
-dup 45 /hyphen put
-dup 48 /zero put
-dup 49 /one put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 72 /H put
-dup 74 /J put
-dup 76 /L put
-dup 77 /M put
-dup 92 /backslash put
-dup 95 /underscore put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
-2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
-6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
-979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
-ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
-B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
-A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
-3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
-D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
-6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
-3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
-4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
-DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
-753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
-54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
-107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
-7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
-328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
-85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
-2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
-308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
-CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
-739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
-FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
-F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
-3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
-A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
-55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
-A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
-69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
-82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
-8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
-0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
-0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
-1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
-D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
-B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
-170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
-767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
-EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
-AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
-826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
-8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
-345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
-67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
-802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
-20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
-5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
-0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
-22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
-4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
-CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
-4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
-0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
-220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
-7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
-27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
-B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
-7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
-A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
-45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
-F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
-C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
-AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
-DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
-FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
-997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
-3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
-2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
-31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
-A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
-43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
-4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
-94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
-425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
-FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
-51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
-859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
-E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
-2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
-82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
-22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
-200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
-892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
-0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
-437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
-BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
-E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
-DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
-CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
-80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
-FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
-9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
-031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
-9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
-9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
-4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
-57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
-2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
-0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
-03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
-22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
-06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
-39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
-E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
-A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
-9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
-B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
-79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
-2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
-8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
-1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
-0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
-BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
-312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
-B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
-9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
-A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
-91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
-7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
-78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
-7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
-766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
-016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
-C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
-8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
-E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
-6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
-B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
-44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
-C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
-5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
-42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
-F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
-CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
-9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
-82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
-0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
-F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
-EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
-E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
-D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
-F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
-14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
-BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
-9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
-6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
-6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
-4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
-C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
-A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
-9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
-42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
-7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
-1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
-4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
-CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
-D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
-CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
-0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
-92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
-57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
-5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
-57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
-8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
-C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
-7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
-B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
-EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
-D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
-DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
-F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
-D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
-56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
-46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
-52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
-19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
-465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
-0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
-078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B
-DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339
-F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525
-EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F
-BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9
-50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B
-C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985
-328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD
-50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693CB8D1F4
-7E3376495E6CDA3BD280DEA744D382D720935D605E1E2464A31B86E831A1DB1B
-BA9185DC43D32993D3B5900F9D5B45EE9D2C607172A670530780EEA08AECBBF7
-5F59F645CF7A86ED8CFFAAAE50BEC460C07B11BEAB82765FD18D152AD476B7B6
-2D08A8C7B5D8F7B6400C8435E6F08CCDE4234D981D056E7F1B361F478759FFEA
-468FDA9D4EE5B8BF0B83506B39C1FD36B16D14D5005202EEA3D9BF656BA60548
-A94BAE6159A75BAA549ECB9D5272C475CFF6BC373C60723049295392D4BCA477
-3FF6270B7658362D0014743F1686ECB611912E6B82670BCBA93832C4EC9CDD22
-BB2FD9FF321840A882A1E2BE9B354E69C9F4C6210564C02DBD96D4BC181B4876
-49818380D9DD9424E30DA3E8E3BE7682CE0CDF6CB3F7554ACDAE1812AD3B8AAF
-F0990BA00B058A1C5CC83A60491B7875821799B231BD9BF1D568ACFAE9E5FE2A
-7558D3820A67A6158EA037FDBE8A6EADD8C934380101327B8F1736D996F9699D
-D64AF938C999C6C93C9DDC7A8F4497FE81DBB787F24EA08ACF82B3C7620088E1
-8002FC529C8FAF40A519878DCB79EB5C7C34DD5D6F911D9DA790DAB33E7A8968
-A266E95AA808AEC8FD854D1326778821DAAD03ADC0863C83E5D0FE70ABB35619
-AB31554DED6142E2E1E26481377AE95C9F32D0EA3DE07F78C6A30FEB98B15F69
-296FC94E6DAB5829F1B59672C6A87EE4E2CD3F0D9894D6DC8D7A514B6BABF018
-B199CC3A4478821649A7389ED46DBB9AFB7D4FF7696F8DB586830D7F74F0FABD
-4BB32F787DFF04CE1E7349704FB5D3154D1BE3CEA0B476C2B787C6E534061EA3
-E28F7D8F65EB1FBD8177AA013A6FFC03BAE514112214F67C7957583FA78FA805
-29C0AD1C6FF9750CA24D3505C889502833CB71EEAC21B8F2F4D3415372E0FD82
-33A937D50F4BC55D381E2E2C831D2CBE4F960978BF7041FBB69C6C9C9246F8DF
-FA2D5C5875200AE8F9BE1C44F839F446C23E630B74B823FFFC88DC30B931769A
-3D5D444376B7138972BE07E5D8215B79288401B0E9E76831250304635714B64B
-2BAFC31E2583F26B15B38400125BE793931E7887175D98A1CE1505AD21BD08BA
-16BFACB350DB1BB37E647D7A00A48130CA4F7B6FC5CA17FBA73F7737366E906B
-AA3335A2E51D65DFC79B1D87F109E9CF3F420408BFFC2C399CA6844A3C5D50C2
-2B3673FD3A796F654D2624FE5B1E02C1720B91A00B4998F825D9C1EB29885A11
-D100A98620A7C186BFAEEC214F0E63A21A28E076D0CFC7DF62A016A21AF198C7
-28E5C374A93D0683E91F06858358E1AEFCCAAAF2CDBC382B1C999D489D06AB82
-60D4C548B9AA7B011F0382324737A74EF18AE7D5402DB1B8FB15AC162E6E1D2D
-371BB20E1F78C962F032B7647A301F771D496B14B11DD63965897BEA60DF1B75
-EAED63791A62BA912A8ED5EFD66340D07FD2DD8A9EAA1A98957F8D4B9F0C7142
-024FF2918E971B73F5BECDC098C7D011335077F059697C9429CA2E13B03886CA
-5D07C7178C2368B4DBA1BE17A074A1565A9DFDEB90F96163829C4F2BE8D537D4
-606E7CF1BB667190AEE95B4D68422B7EB84B054D41F6677D840ADA7BED269A8E
-8ECEFA88484CDFD6F999D9F51F4431057929706105172AE2635764B326446A07
-1BCB5A2277441E0C0C8A6CEDD2D886D794D3495F7CE828E1E9F65C3CB47C2634
-1E3BA769EA7DD098296E5CC981916608DC33279BDF53510C8BBA06A0A0E9203C
-EA569B24DB5EC1DA6254156276944ECB2338CC5679558DFF053863B3E6FDCC2C
-FAA0D336E9ECA4236917455D8DFA46EAE6ABE8C942E087ADD33E3CE49C2A8C5E
-9E4BF0A357D1B9DAD6B2C01D64D65A99EC728DADC5DA83FC279CD60A08971941
-638CE3A7E1A298FB9832804EB4752758EE1ED81FA96B60A6AA1004D79AEE456F
-C3AF0687AD5AA5062DF7F0C8FE7AB78DC6122BD2894DBC59B4126A0D85F34C8D
-A748048087E7D9E12CF55AA2786E595EF5BEEABD86563204CFD5B1FCE181B2D0
-5410E3836E394D0843984362F65D4A55D26C805E15EBF488AEACA766DB081C3E
-51267E8BC8B7E4373183CC054B68A4839F842DB22341130D4A1D312DB573060A
-7E73FCF514617C3D486651D2C8075E02331EFF65A2CE8B9AB7E35CD969550C2A
-89DCE554802F08D5C6163A09E669B7F5C6754138D778CBC5458F40B4B51C9A93
-5DD23BEDF12182BD5F1E42B2BFE76F421FD8128DA78F195038907F9EB52268A8
-324B1A134148226CD0B235B8A6DBAA8508A7209720E892B910056D55AD5797D4
-26ADBC7FC9E6A41F2EFA145DE8707D8AB76970B46D2F2CA4CE11DFB46B9D156A
-E75210C6F9A2B31DFFB3670CA8E52F322AAD31EB71D3E0C99CA791797650E5F5
-FE5EDC86B5B19433B9363A388FBD4C8ECDBDD8281A81AC935371FEAA2B841C98
-3E54FCA6C6445C89374981ADF8A974F5D5CACE8E158AAE572AFB2D282E73B1F6
-C7150271CDE9FA5E5BB94244F04B0CB671EB2391BB35EC2FFBFC522237F54168
-2A4AD8B48C84C4FEAA2602AF9483A1A07570F8E84434F1FD3942A13D3A30C1CA
-BD7901D49659C85ABFC78124215386C475AA0E229E98A9A2A47E32B46F09AAAD
-6C8F0D5FE2E4D4D4BB3B3C3B23EDDAED65004BD410BA829EFFC414DE349F8852
-75D4C9567FC887F173EA3E5AB863903C728D65DEAF592F400C803317FF9859E3
-1BCB658A0458AA355CE3671C35047760ECFE8AC3A01C3B975F01A02CA21E4CF6
-697A9B828DF3FD28BDD625D8502133E85586A0F66386AD428C1E65AF78A65106
-188721680B04E7EB756C564859E4F8E16B9DE6B7231F8F8AEC8064CDD8C923AF
-7B0888ACFC86AD6E03D83A37C52DFD5BAC714A09727B53ABA05461DA406D894B
-81B4B43D3F737939EBB7CEF3C4CA965705411B1EFA1FB6385A6556913A6D32F0
-3CDFDC04F88F214763B7E989D288C6B8861504CF5E8A6C67D16FAEE5E6962F6E
-0935372016194115F205519805A8FE8EE76676EA3CC75CEF7C7326810BD3BE34
-2EC114C3BD2508ABA9206401315D75C4AB6401E9AF3AABA580E47776C6A7D7AA
-B576D209AF4EF84F37608B2CE84D98008988331C5DEA082E8523E06A7BB59004
-CB8C7F4F39B4E83C926CC519163C17FE4CF47F1B66CB444842F494B5C8C1A386
-2DD05BED6BF59227A5757410F63CD8BB77AD0AB848E4B8FC85186E222208740C
-09B0E47BCCBAC26EDCB9029727EB96521F17A7B32E719001E59C483237D8B9BD
-6695799A0C3B80ED9C7D64DC153CBBCEFC22B4B25524BF5B301431F192BC6933
-A6DA377691670958B04AA1F7491379CB60C87F3110CF2BEDE95D6611C2A9604E
-083B721D51F513E47499871C0E3E504E8EE620CD2E0F450E3035CBCA94242BCB
-E42CB0E8408A3CCC5575C261F2325EAA2B06D91A65AEC162268D751CBBE9D5DB
-469592065418BAFB50E658E286933DC0EDFB9E9F7D82AF9851E71AE9DC4A9DD0
-8E01F2533F5C8F83DE9C0D0A49DFC375BA4F32C2BCA5774B702066CAE2647B9F
-AB7541FEC25269D28A7AB4F1F60F3EEEB5D2EE23408BCC84AE471EB6540A5438
-DA807B936F6C27FDC536D2D8471EBE9967B9133A1A5641BE80E64632E61E5E8A
-7700465D087E89BFD1C6197B8BA8A41CF2159A0817B5F95351E02E654CAA7978
-1FA6571CE47EDE08B7E66A2D0C8EB88AD6E4F287B9809EE5485A94EFFE85A73C
-454BF8BAB70BA2000F2B56BB3E0255892C3E4480C147CA11D4C3AB71744BC536
-CD21B6DC302B5895BCA9E72285744E93E85D33A86688758A060304E3EF024281
-590A765C943980884EAC5298497E7D2460C55EE1BD234C407FC63B9B3029C018
-6C86BBBCA5BDCD4300359A40D1281A0211B09B2DF2941EA893F5DB95BDFDD018
-6D674A37A25F63722AD62597314CABEC1F3A2460F51E00451D3095DAE1071ABB
-17A8DB8BA0E224D420D4A0EFF9EA17FFC7801D36BABADACC27A0AF1879C56628
-573059FD22294243357928DB4A835F02B3807067DC963CDE81CF4F69669421B4
-88A159B3502CA9619F5B30CD992F3F94EF3868CC695F52C5E0619E88A750D6F4
-90DF0CD32D6642A3D19549C733B89391041D0FC126AADC04D882188D9769CAB5
-21BCEB131BC5283CE6E9E6F650246B1D59A7A559EB45AADD9A669FC39EDE6CAD
-FCA20CFE0922C8730D56962F4AD00DDDEE28B1A7C2FA02CC7C59932AC31BD59F
-E0C837740EA82EE6C804114DE18CA35D8EBDE3F0C16565C2F51A14083F5CDDED
-C5B7796F9E6717A6A3E963F3DCF7E76DD7F896716193C975F4EA5CC73F6E8C95
-C987260A3653AA099EAE36068B7FD793154050D9868D9D30F4E4603AEF7B591E
-DFD9F478EB30D16AD0496965F5702DCA4BF33541778EA2FAB83C25313F8E694B
-43FAD86D47D5E84B51309B3E7991B29E9922E80A34AA1A5B895765ACE2329F92
-8A04E9A68A0D9C008EA9E52A114B3F09144C30A00A6E010BEDECB7B955AD1B06
-467F156EF79E4AEE257AC357EE49724730D9DE4942E84ECBBFEC6CC7C85CA2B4
-3BAE1CBA5ECFEACAA7ADFA4508F1DB7E6C37405439138ED4BF236C1589A319CD
-3A5DD32D848C22F07732BCE84FD15F86AF8373AAC85252A8F8EB7F3915B52558
-EF02270FFE20521F0347386B3A253A69D9510900F7052A95DE26B29D48D662A9
-20A437B9944E0AB22AB623E7C766A752D89A57AE7BA6A64FD96FA05A5FDE6C8E
-C6084C44FF6732B5B95A844FFBE2BBB234A3A247D4D89B0FECCA87C986912A90
-4791231605EE8EFAA7BC7F2FA5551991706DD4A677639A69EC231CEE3B0B05DE
-AD7C4A221B7B74349DEF428680366F1947D0103D5E4D72AF8579FF824DF89949
-6904BD33856ED29B9AB43113DB038902A9DFB2DF3036B99E5508156522E76539
-440A83884F8C08F8D8449DE3EBF2E6A775090536040BCB299FDCB7E9AB6AE453
-3AD36E109C46221C82265DFA576029157FB1EB3236F1A84FCA1B9B68EA2AE583
-6BCFC2D127B1A169A7392AC1AC251A14C32D643D21C5756BB6E39AD478160069
-A11B985D9F69B800D339BB0242A9A7199E996B02467F6A1F220A8FC245BF2F45
-5AED4D104C5513D3206D57C6DCD93B9428F82CD9938EF6468A165B5A53CF556A
-68E702C0A9796DDFC79DFAEB0ED0267BD57D099D407AF32F8F84EECC9C84C57E
-C34339DD87991056EA0246914D3E2096517B7C0CD1F674CEE593B92129F0BEBC
-2ED3DBAF4AA2EC0217DDA3A7265148B433CDBFF63A68C4A33BA2780E99BF8744
-D3ECA386BA3872EDA1B99A6191EAA8FE477301A84DDFF5BCA00551286CF62477
-10EDF4D58FB980707E202C9C337663C9B16F9283D36D540C75DDCFBD525473BB
-027BBA7FD75E952C2ED012B5455FFE95DA7E04C20F8A7D5C11813646516968E4
-36259B6A91966E87664978BEA76C2B2E093B2A65591D0EF3D501D91FE135C2BE
-E97A446B0586BE37201363A10C2F73026DDF0F0B6FCB331272BE349027410D4D
-958EC50B66EB7A45A1E818B67ED9A5DCC638D66164772ECEE06A80765C0B259D
-1B01A13FA9208182644F5853A8B8C3EBFF7F25C575761E9A49C5275E66B16FC6
-625D7E73A657F9B23EF1CECED93FEE2DC83EEF7D695D76D19BA87F83642F6676
-C460692CD64AA6FB768DA6008FC1C79E22055261A9A62DD1950F4899A7F6A2E9
-21D800038C30183019E084C951394B9F6AA87646410623B996B310E86858BE3E
-8C6DA85FEA3D6BCF62D2C3B154104E7CB5FDD42B54F52F8DBBC12087570F4C6E
-8173A04835CEA36D2280C5C42B880A498E30C7A77940F28397DD279907693979
-077CA5D28515A04B4EFAC1F0C948D69FF108320BF3B5C3C7D642AA0122A49ABA
-735B8D950535460E0B2C17475404D8E85DDA4BB68E888250500363648828A193
-AEBA46DF8C644FF81A998C5A7E4F9F9435C4F202C3DAF498484A012D4088C4D3
-AA9E813A9161BE6F9844167AEB52F29013BFFF51928E5DB7B48BD20D86F317AD
-63EDEC755F5A85B2B07C5B0E0A1B7A006D547744462AB0DDDFA9BC20C95DC57A
-61D44CB4A45558C68E36DD3F680605C9987B6B6959DE24DD65C874E46D5AE7B0
-C54608ACA7D5C7A88FFA06D9F6366E623F036EAF7A9914B0B549747AD58CC031
-97036EA1D54D01A736BD6CD796600E5884E90DB6BC5E2CECD68B995D06B26FC5
-2B6EBCE4279DA0E33317071FA1801279FB48563890C888BF6F2C1057F9728A95
-59D07684FD8997DC446EB635E9A5171C14E2A357C00C30886EF1DFFD229A82B6
-42912D02E3AF236F5C773456BDE13F60E8C674B21BD59D4E6444371E28956C23
-FCB55999382C3347777CA0CE8BC002CB3DAABC58D52FE542A115FDD96D19061E
-1A1DDD098498C9A8E713AFCAF355D2765DAE775FE6F9EA4DE42A066DEE306432
-065E7DC31F144697EBD270671A77E6096C0E191C96449F7E94419C752B920EC3
-034686DABF9FE674DB5E0744D44A82DE6B3933193F2E91D7A74BD17CA9FCA7AE
-CF9E5650355DA885806A24A9993F3041038DBB0DA23D74F12B86A329DFAB87CE
-C06B3F1C7A0D84DEBB870E64E15E251253E82ACEE05186D3ACC88E838F276B99
-0729AC02CE325EDFA5BC3F5DA079E55CA302824AD2DA70964AEE86504BBADCAC
-44B9244CC456CBEA44517185285515DF5AE0BDD7D98AC8928EAACE6AAE7D93AC
-E256992BD972DD6E33EF98DE9D9EB30B6D0569DB0B0BB23A1D0F9A6AC788F6AF
-AF81260D25B767AF16D5F060960E11146384A241CC05185408FE265CFA941DA6
-86AC510021788D2767FF5B384A17E60EF2A664207D6344302CA491D7D292D7C5
-A6DF93AF2ACDAC6970A16A5D3C78991931163509561A0CF10E7375F7E91F331F
-B84E8405E9A1881DD4103B575E80F36F7203522282CB5E899DDC42C781963830
-BA1051F49DAF440F28847188237492149C74E4A99C3323635BC051B8000986D4
-1629B1B7038C98D182481E182D4CA4F1554902D6D88ADEE755E9155861C0D772
-CB414808198E4686B722786911914585F81D84501B40684E279C5E6B0B0C2FCA
-F3538806C4A410EA894CEC8218DE6D2489C6239BA36233871B0F449B4AE9DDC7
-F00502EC6E7247BA3A829795C9351B50D312455F1486DECC64D2F159B0003FED
-E201B29443F8127878BDD436CF7873F22B3FD597EB81F1D630811BE93A51D340
-FAB3D607EFF2A65A74E78C792896CCEA1C2F1C36D43F1950453C79A9F0767B08
-DA6247B44B703157FDDE2F431089FAA9AF23C786737E921D76BAA2D68C3BC8DB
-DED8E756624970C823E97C598DEC658E28AE00CB901213CBA0110E625AF40618
-D9EA9369F124D089C2CAC832A145474AE476AD16BA5BA3FD9C28122229C3380F
-AFA46693D5E9A6254C055DAF47FE051751FE7F9284EF39A36C5D25FE6FACB838
-17F86520B8F143F8A7DE0615FFE77078603F5CD60DD0DDA9B84F44CA3BDBF2EA
-10F6CF79CA3E66EEF95C8E8DF98951933358360BE4A9CA23EDB5F5CD794974F7
-1A6708F418D34E6BE5BE645C266229A960C947877EA14415CEA2B238C8191387
-100FC1D6A879B129AD2CF7D50EA7FB9E8BF2C80E6609809A0E8CE2A70F2DC54F
-3F958E45E63AAF577AC7023F097A77C8412A48A3E608B36F96C39AD6067C60D1
-CC7A2E00BEAA799FD75F1F694928003FEB29A8E6EE075C57C789781D3E983115
-68AC3B16695D5FF9E2416277288367B040DC47D40D5EE565ED73DC18D23B8EC4
-DEC6790571546F0ABCD004B3A6C2360D7BECAD494888E737FD41C0FF1D277891
-7DAC83316800F786A16959022C9729ABA334E45E077A69D02EA82FA23086DDC5
-BD96F41FE176A7F491EB87181FE64F647980DBA6F210F3260CEAB4E076918F99
-D8246512F1BAD74D3C15EC69ED19346B60E59D8A9DC26D00B47741F103DCAE31
-A2CB69D1BF659C091044AE0E2796F13C9FB5CEDC3527F90D035EF785A0655296
-0C979C70AF9637D7C6E3DDAB3A9E17594FAC3DEA75
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.0: CMR10 003.002
-%%Title: CMR10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
-/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR10 def
-/FontBBox {-40 -250 1009 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 14 /ffi put
-dup 34 /quotedblright put
-dup 36 /dollar put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 124 /emdash put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
-569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
-24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
-2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
-8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
-3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
-D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
-D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
-03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
-767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
-8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
-DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
-94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
-22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
-72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
-8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
-344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
-64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
-07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
-1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
-78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
-CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
-7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
-BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
-4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
-5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
-EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
-EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
-4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
-0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
-C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
-314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
-DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
-EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
-DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
-DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
-7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
-1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
-69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
-EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
-7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
-CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
-38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
-22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
-0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
-BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
-4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
-3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
-B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
-15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
-849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
-FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
-4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
-1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
-84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
-7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
-CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
-4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
-3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
-F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
-F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
-DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
-D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
-56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
-8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
-59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
-49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
-87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
-8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
-C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
-D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
-D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
-F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
-0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
-5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
-229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
-17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
-01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
-F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
-3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
-689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
-4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
-A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
-DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
-364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
-7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
-26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
-43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
-8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
-C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
-94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
-C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
-B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
-4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
-7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
-204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
-B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
-7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
-279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
-E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
-CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
-65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
-BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
-6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
-B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
-63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
-4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
-A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
-67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
-DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
-5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
-C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
-9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
-B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
-963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
-D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
-B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
-72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
-B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
-8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
-3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
-668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
-ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
-69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
-C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
-3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
-407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
-11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
-2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
-4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
-2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
-9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
-CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
-DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
-0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
-5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
-9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
-EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
-09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
-2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
-AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
-324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
-486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
-EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
-52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
-9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
-4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
-B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
-BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
-6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
-B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
-16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
-E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
-546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
-6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
-559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
-C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
-ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
-04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
-7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
-8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
-A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
-94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
-C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
-41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
-7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
-18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
-9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
-E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
-5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
-4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
-E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
-9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
-89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
-7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
-AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
-3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
-61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
-F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
-D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
-652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
-07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
-6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
-EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
-BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
-2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84
-246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F
-525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE
-EF68682FBA16ECD75C6A6CAF0F577583B72C77BF328E68308B929229A0930D9C
-61CEFDC57E376B63ACB4F3DB9B5C602C248B4CA233E2C25E16314CC878BC1B88
-6C0706423F71514CC2DBF0D259D87DF704CB718A866DBAAE005180435034AF3D
-5EFA02237755986AC73CDEB3B4766710B762312D5F48C59537B158DCEC084C96
-19F1F37CD1CFB61C63F6D05F59B2E47137A433DEAA34823395727B67CBC15B6A
-857627BBD49BE34F5C7B2EA6C0ADEC83FD5E10907355E926ADFAA74C6CBBFB41
-1E37968BC3BD7F665AFE2CF6740125D751CA66148781310C76FD92731C0513A2
-0ED792B34207ACE82F3E84425756F6205E70E1BDE989DA786C6234FB98DB8195
-737FFB8086D05B4D5C88D80B7DCE555AB3882DA305ED26351BD26ADDA377EAB5
-0618D08F7EDFE61938ED5CF78A4BE43408C7C2889C8E81CE04A4C20BDDF31A5D
-31BA15A2BE1CFE0AB51E539CE09DFE33808277D947D083C066478F23A4D524A0
-D89553E24ADE78EAEB4ACFD51EA3D2E1D5C84024D893F050DAE5314C91EFD93C
-91D81F3591168B4EE3B01ED80CDDDAE0FBAB3936EEF02462A6A2895E22D24FDC
-F93DA61C36998E2297B512FAB1FD39409175426A8A7A56EEA4FA8B0D525E849E
-27AB6622A3BE999A30A415B7C8A317D3802BC0B8FA6F89712D9F38D9366BC724
-8060287F1B859F13CF627ADBC25002D1610DBCEB93C866520FD018715FCA7ECC
-853869B7F55FD5649526F9355BBEFB83E9DA1E05406F8E32C1E112BB9207637E
-8B976EC8B51F0D45F717C6BF4BD2B352FD491822DDC1FD074A4DAEC4AD128A62
-475A39455847C265210B5B4CC476930162CEE809E3E4DC76250CDBE461FEC4C0
-0C40D656D905D6AFB4390B62DD21887206733520E4C95FD857BF38350B03F2AA
-BD0AD9A87F485E0DB510F8216107EB7B31F81CF5DE76386D475A4CA18133BD84
-74E1CC1A9F2BB4013E570EF03C0F93AFF4095EED8F861BA5DB1D28EBEFBBBA0A
-AD9FA3BCA136A0EACE7D66B63728374A3A5A198D2348E8FB33DCF83C12C77A43
-01C57D222B4FD5C3A9B8BBBFAB1A04BE0C1DB269D7C7DFDDF849C849F5592390
-32023ADE6B8F65BC17C850FFE3F7154D6ABD89B1EED4ADF354A071B0DF8B22E6
-CC94F1660E4C0F9E6E22EB77ED0EE9E3E10459B9AA355E912CE927A429B02152
-56CFF25F22E753393188F7B79B49C0F44512626F2BE1339F28FEABCA02052072
-2A4B1FDF77C3C092EA151A6F3762571629775247A6AC65DEFBCBC464A5EB0BB4
-F2C8AE029BD1172B430088B5786E7CA468E96E826FAB1D8A48A3700F8EF65B63
-C6F0EDE8519C256C46808B033DC9FAB61B1D49C8AE59C69176AF3AC875F86A64
-6F149241EF5610992222B79B859135D0DA31C438D26A3C8CF43B1D23ED27C852
-E8668043F8279A423942A5070D136425ACABEE43E4A45B846F4E7F7DB374E0E3
-D066CBF83AC321D26021738105BCED4081EE6AA264737F6862385FF9F3691197
-1D924EC2D0DC8019350CD7ECBE9814BD19184BACC9DA9A3A433F950E8B3400C9
-84EA3D3DCF2CF050DC3435E1294136E6998104B897A5ED4709B6DC996527A8E1
-AAB1B3DA5285EB8AEE64A2D47D29F09004DC142553CE14262D2AE3774A65EB9D
-4782B048008979779F56C8D8BAB280B043B49F5AC33462CC5A1157DE60AB3347
-831ACEE9CBC3B88AF70F6AFA0C191867F2DF1CA821C6596552C7066932979570
-ECDC82CC1A565E4DDC16373B2B976B99BA5F0B92E0FDFD5C0D7DE2197E5C91C7
-9EBD346C4643295F769C4B2C15D2429FADBAE9F8DF0B80063F9A3B214535951F
-A61DDC0F82F21CD0C6E779EBDDF5F660E8262CD10AA422586EED7BA629AA87DE
-796AF15A95E1E579AF686729C69646AFA2DF78BC053A65AE1FF65945FBA879B4
-A21449B2F252C9601A3E54D1247C5B102D138C0D2CF15616A3E3ED3802608BE5
-4BD40194D3526B2F54E7F73D3C0DD86A64D1EAA8A23EA4719AE3E9694C8ECCAE
-5CA73829CEE0B8F18CC386797D2A696F3666950E1E9804B899AFDB003C38EDB7
-AA93BB2FA9F447DC37AAABB9140A382AD6E69933724EDC6375C6305BCCFD126A
-1E962DD9769EFAEA41D4F64FF7818DFFE7ED253836BA51AF3554AF92E3AC3145
-990C8FB0867DE7CA55C54D3CE900AD4492B2D3B50907E6B3DE62FC41CBE8C737
-760EE51E5C6D9F1CC15CFF852770A3991F86CDD3C188F08FF2AA1CF66D3ED8A4
-96C04CD3BC8E97C820FF51DBAC94109C9ACA1C8DEE7E6D43B55A3F3ACADBA997
-39FDD65E250335E05CDD9563F70AF53CE842BD51BF75777F269D3895E82A5F20
-CFCD667AB094E7DDE057203E2634DCB355054F9DD8A2DD1EF927B0154E7603E1
-76D2167B8CF3794CC8977E665AAE5D703AFB18A9C1B94B2EAC6162C36681AF82
-E3D62B671C8C274AA208813E57FC625E63296E325E2C31ED632C3136F0919FB6
-A34D452892690811A376BF8342F01CACB948360AD003609F3509EE55639B904E
-CF801A157CA626EC056A683D84AC9D95E327411C7646269A27E297D0C1616947
-BCA4D4E4C32BF7A49FBB7ADE2766785B6939FB94029B2880BAC407F736E15B3D
-6C2416C48002740A4E6663380089C45FEBC743CD82E6891224A561C003D1F65B
-B01AECDE888B9DA271C80796B4693072DD1BF68182687CF10C1B4F0FE15EBC6A
-695647F5B0C1D1B57FAD61FB1E348C8BBD3B7031A0DC7F7DB374E0E3D066C91A
-C339E16323C7E4428D2EE11C1079BA8DDD66CC775FE43E1C7D9A454DA6434341
-2AD0E5836244D8F9B99F349B12BB4EC608FD760951981D9D7D67FBA77BA1637A
-2C1D282B90601F9493B789F09B70B52F2EF2825DED6AFC88E7BF74241D7DEDFD
-CE064578CE287B1AFB246DA586223BB4D80AB9A542D62A2CC807FFFFC7383921
-09C105D198B7D05743D1779154CFF12DC90FC2DDAE7318A9065A81A757C2255E
-5832AE7DC10658AE2B5647CB5CD00E4C86AC8DE6E61B7C251F1F52A905F45745
-03F255C15ADF31815753145F3F9F1A71382A2996AD2955DD8B1A35CFB2ED77A4
-04F9DF20CA177A8A0C4863CA54B6B646828364824C7D41C3B93E473AEE9243F0
-A89C4DF01C4322AF90578A9A290C1AB64B77EAA019B739C465BDA098161F8256
-9CB8746FDA4FBD95600E6C1AA356F3A2E5DF49312C7AC27D9204EEBDF1A271A3
-AACED2042AFB7CBEA4BBBBDB159784008721738BDC79B89E7F5226092A0FEF60
-DC87CE9EFC97DA5698D5B4BFEB8F379BD02D7F1A024EF4D10D85AA4E8A0E38EA
-1974B3FF78F01CAE5274C223DF459A776B4B31492C4D6F555DAC9A6DE72D42F7
-7C28B735E62DA5413F00525CD590107C9D39B41E36C19D316C38A8F29E2D6E5C
-BA9F47D561E741B96947C368084A78375398EDD47BCA95DA3913705D4DE85882
-61BD9681B2FC75CAD1888311CA11322DFCDDC15804BD0C789D1D29562CBA2001
-A7B127F68F2914EEB96FBA5169B7ED30FCFA1023FACAA27B9AA8DC42C2C8BBC0
-B9AE6327E705B50995BA6ED0B538A693C74CCB6C250F2E2080660A2634D67D1C
-2D928502D4D5D5C9C68C0A289DF434CC3B75118690B10738560610DD15BFC537
-55B548B55DFE2D08B3682AEA2E22CF0CC35C26E8322378374BA80FF2185C146C
-3B2548A38A09796D087F33932C5ED4D513A1C8AB31058AC27B6BF81522692A15
-12DEA25281CE4DDC009ECA8ECC714D2066C9BAD6DD7D4244A3C3B1586B501DC0
-4A43DF7A21C7DE55DC385B2EA52E96A8182486574857DBA1C7DD7BE38C7F6605
-8EB798D6FE20324315A736793F0C6BEE522AD3E582E965ACC07C1F78C784982D
-BC451B029ED37E2F8492A9770813DF2B1B539C5AECCF93BCCF128F3455C30B45
-D7FBEDCC43893291BD3270368500D3BE66EFE9702411375EFE3E10F0AD8E5906
-3A70BB8298517DE21FCEF75496E0782BDC1E924E1C6F28D619F5047592830AC5
-E06EFC6525E06B7607D65B2927946E73FE9C8CAE65FF1D9E321779E94CDE9085
-4C7BAA86BBA2C4A53F0DC10ED188DE1574088A2141DE6FF48450144607B4C1DA
-C8EDC64EF6246E40CC20CDE7A22F892629475D4DA16DC62C42462393779609F1
-B479EFC7EA8C20CDE04DD0F6B6175E997D2ADF32CCC0D351B3D4A5F8E0274D1A
-3EEE83F04EB815896C3C727D60E3B85E655186F7A7BB423D1A7CD19296DAA015
-204FCF401E9A56F64C697497C61662AA7F4097C0721822BEDD824426324A70BC
-EE6757B6DD103C370796839A4E76C039B9B5B316FA8F6565B7CDDE544D0991E0
-302D896C0885A3542B3B7216F6156BF5554DA7E0129935C31A2154C7110E6061
-26B6C1102DFA3512AD1ADB0720992481EA7EFCF4DFC6FFC2605FCC550AE5ADDC
-E021A7C84541C48A0856E1F2BDB47560AEF2ED181B2F9E9D1B466FD9EABA1D02
-8F0D2989D62E03727346FBB96694AA60DB90075A1E4671888FAAC0F5CFCA3FA2
-55E024E0A3565639CBD91D4798A4735506E6A03C7A805C5AA651DFD7BFC5FC1E
-D85DBF025D98281323C7EB5A6AD56C22C139B13F4BB5346A5BFE8DA3DA8F9B40
-7ACEF81F3B6D2915E16B56BAD8F23C2B4685B19BE4DE5E0DCA120EB161E620DE
-FC3691FA087DED6F4ECDBA980E7B3E30BB3383E0FBB3BBB70194162DAB70D516
-659E682FEF8B291493F99D78494432E4D68A7212A4F363441C51E317A1C2F60D
-2A8CA4321599EBF483D155D14C173AE29B7DFBAB79E26B963EE984CA5D467FE1
-AAF9D1AAC02D00DE91D177DDDB891B6C515C8199F29C473CF4618655F70C53E4
-CA3A87DADFAB36E523AE2D91B7B8A768679DB1C90077BE6E3D7A2C72B6449348
-29F5FC9F6D2799DCB69845958006A46F7EF86830D372AEB56ADD69E33A096411
-80D9271F61CA7A28B8073D6E194F6C9BE8E93479E8E64223CE98C31A011E4BD1
-9A5746408154A365470CA46C5413C4D55B69328F13C9DA2D22EAD288E2993073
-00F51CDE2C443A4ED60821065D493C5D0F2BA5816DD57E86CEB90046E66EED20
-CF52F00A23FCC18279248872C297FBE6727A45B4EFF0199C9CE54A8FC5DC2EDC
-75CF68CE217318DFDBA3896AA6805CA4F9BE4E7E3A3A2772CFD39365F192F884
-13DF92FC39FCE3A1F9D9513BA7161088AEDDD4F8BDD9D414963BF54725802983
-64B5306599724F40C2D146F9F9EB50B9C65A211F0E9992C4E2DC925C44BCF9DE
-A619A551090A28275303FF0D0ACA6B4D00354DD874E53B167BD81B58BA6AA4DF
-3DD703EB95199BD02DA951336995D273A6B8A1345A76F043007017B077CA5127
-2CFA3215CAB06F857B22C1E1DBD335629B037482372E6CA2EF5E176F66255509
-80D0ECD3E933D029C567C4628D8938F576B16835EC112C3F3DC4AA74E8AC43FA
-6FA6F42F618B958CC83980D86567FA17E7B821FEBA4888DA6C964F2A7F9E6CE5
-04531D53DCD037FBA89A7F840DCE36E251D3896D4735394497035E96D3DA12A7
-6AC5A61146701BDA722955BB8EE66E838CB128284158E9CCCB5DF51DA6036CD0
-D4029141D01EBC90E0DDD8FB1C884D7243782F62FF196C942212E4D2F7C65788
-E8B5C79962FA1941C3F0731D16403412C3FF79C08ACF03034169E676AA39F9ED
-4BCE98694FB1A9EEFF44E40267921733AEF80C73743C20C99F49A7323EA27E15
-6D5F2C3EC4F7896EC28E3630F66741B723A7860EA5FB584185D77ACF418B79DD
-8C8E9B6DE87D17BBEDD558E350F4CE69488A995189CD56AF75677C31897C62CB
-07BFA36265AE30FD06D55F59ADF2CDB21E7E13BC9E88EFEEF3F9ABFADFF2B6C8
-5275F80D7D4BE9976DF0476D070B9625E7AFB99E6CA526FBCB61554B87F8B1BF
-320F79BE2695E7DB5E6E2BA3276275C82A53BC3DDFF0F2979F8C4E5752D130C7
-8C9F7CF16E436B823B1A2FD914700A263D3F3DE48BABC99FA90E0316AAB12D95
-8C59195EF634E8B29F9CCA10677E46730E1AF19F046BC5239B7C1F430955F158
-6E3F0BB2151E5D05C35F4C3E2205440C44B8EB2ABF0612EC6B413FC233126D16
-55AAA85F5DDEC3C008C5B559CB9C37B78512FD9FC93A435B68871DDD1D5FFD3B
-C0045588F0CA5442D7984C1F782E109653AFE579756584D216275663B2B9890F
-EB3F11B17A58EE8F5A92410DE390807D2E03B522CD0B2DEBD381270710DDC6A7
-9F1B8F8E669E65E1354D5ED7953EDF0AEC9119A162B2D1CF3039AD0EFA9DBBCA
-9446EC4819D07FA893A019A38E2189F5DE84DB0E4DA2F0C169D25A636DB7D8DA
-33BAB84A4331DDE5E29362F174D5618DAC5E1B830E0F464B7B8007A4283E48D8
-95DD3F13982278B538767816C211AAF263F1D40DA68AEE2FC007CB4093E14DFB
-042AF398DC5029B701DD13AB11473ABEE8EC65D76591C485681529863B61B321
-3D9C04C6FC4FAFA0FBAE2252012201C55E0C03F532D68854124B117B2F350654
-E000EC5844A178DE9709C32B751EECD46C0713B7989B1835F7F50F64A6147C9F
-F219283A82E3B86F6F6D29DC37B8A0C9FA4D4D41920C25D3DF33AD39ED08C289
-856FEA05AAB6D69577B0D8A5476169ECB15CA63F670F8D1B9C2E820697278597
-6BAC78708D8176B3B1576865D0280DC3588E8293A1CC7EF5FC59D9980BAA08EA
-B093970E06743EA33350BCAF0933D2B009740F9495D7B24B88F46271CF23AEF9
-273E1F6F5F1F371508FE264100A16EB6F3F97A66D718166592239AC3009D8812
-65A495A9DC01F527B189190A79DEBCFB7FDE92FF64C77BD545EADCCA35076238
-C3000C2E27445209E8B4965B25D707B51AFB11B6D80B36FAC32657A2CBD51A82
-8A159B3A433760AD4558221A09E94011B682EE29AB16E9234C0AA1834A5AEBDB
-957108C46AEE9AE963716EE61BAF4BE54C1A2224A3DB7E3C30DF9D07D652AA43
-1AB19D826F7DB18BCA8DD4806DEF031CF933406E38ECED77C7F1229C0A3CF129
-AB12BAFD207C68737198A64B573B6A11F3F287A48C92FEEA8306D1DEC14A91E6
-4CEB56C3EE69C5C36F68D96A88AF8B1289E41B3410BF2DF7C9A2BD5B9139121F
-7AFD6E7DB302E9AC30AE901D4AFB90B05E614BCCAEC67E8F57CA0F4A0B780EBD
-55D9239ED6F716F3CB0B3191AE1A4BDC6BCD82AFF7821C120A553E454D00B679
-BDC33B347F2E9B4D15223A4C7AB0D321F277E0623550917980B5BBC0607AF56C
-F10C29146DBE2F6BF9FD8E4879F6FCF8199B446C25E4E65B6214FEA3EC34E4F7
-8CBFE934045822A6C961620D2BB3A4B36825E4D8E5BEA28E55868D30B02BF507
-F6FAABE950F17B4C4130D9252701F08014068E33A4F20C83CC54FD940C92318D
-CF76AE0F4522A50DE7C14352EB7C94F746A7F73942129D6BD12A8C843DA6CF89
-A6E58575036DC8AED79C892E1AD7AA11EDBF43FA64D625556AEE04D3CD4DDA31
-CCCEEE3E3153FCAB30BA65A3A34AECC7663D745DA62838BEDFEAF4F167B0BBA7
-222BF55A9626B85DCAD9AAD5FC333A85950710749D55F7C12369941E8AB8DD41
-FAD6502A069EA1490B953694860AF8AB930DD5EC009FDBCEFECEAFE298E33727
-70ECC760BB8156DE8FC2F2B5A1E03B0F3FC8F7448AF02EEF97FE5A94BB0801AD
-E83DF738A4D5131E16CA198DEEAB023E253227DF06A26950327409A9722101E3
-79D57BC5106B6EC703320192D7DEB89BEFD19000E2E6E43C10FE960551B81D78
-50EFE679BE528666AE7CC2FD9826AA224A009C7387A542AADB9403C24F8AE183
-3A40BA685BBA9F8DFB6717E1C247C52773DDBAD04D2EFC606C55E4EF7B292595
-F03D82D3FFFACB5AB2BDE9406AB2354675CC29FD01D8A625FB22BAF3602A5C08
-663A212E29617C2CFE55AD4E251A2F864AFC683984B4D72843B24D321EB85835
-00719B26365E467D664A654C692476F0FC1BE27302FB3959D722C3613F846923
-FED287F447F5DE22DBB6771FFF56E746DAA399DF493CDCF95B96CC809CEE835C
-F8D827B1B1F7EF28AB0D91F6224E5C6DA4CFE20F7ADEE7EB834CD7C54447F49F
-9B353F9BCE262CACF2867E6F462CB21044202B554CD8C1EF87FB0A863A8CDDED
-59D32030EFB62C81136175EB9874B7C627ED7E63AC77F78FBEF2D2E5C2149360
-0C8C8278529A79E42FCD4B4551F2593E96F36D15CDB56CF8D6D65357CFA98663
-600732BA9F1CE83E0D47647F02FE3EC8443E81B3A7B55E80F3216252AAD626C3
-030A9E420221DA91E57CF1B3ECECB36FFD21EAD729CDB7B3C6F35168BEA82F36
-E52D0CD46B0A3D962E8CC48B3F35C049FF18AF0E271BF7B03429FD90EA4C68BE
-41014CE3A859D138B3D51F53790DE3E7F4BBFF2997FFCB2C189056091633A2A1
-03E88A3CF49967B712991DCC769501523EAF0D70895A45DB09A40DB1DB221E79
-A1869BFAEE115B3970D0696EE1EEA3F29AFFD16D6FEF99F6EEA625AAADE8EAF9
-C23187CC5CD5A9CC9D0A3E76AC308694FA802DA1F900A1D324CB0E622F192647
-FE0CDE1A22585CF4FACBBF456AE5AA5F01D255F4B9A4163891DA74E4364625FE
-30EB70BFFD698B6B27BF55FACE80B4A55F8370FCD74FD0B29FF8B3EE6F4DE577
-3F842ACD7F112C9AA9597AAAADC5C746AB7AF8B97B906B56B3607C72D988831B
-B5202C6F76BFA5DA8101971CABB1E24D305460305FF0C9C0BA75BF2FE7692F3D
-DA6971F3F63C81842428B93585E7C2413206969587A556B6E36AC4453394CA18
-777FC5D838D4EBFFDEFA1BCDD4064964421E862699C2E2B4BCB800D22EBEAE14
-A97744D1EBED19B62EA117EF78B59EDB5DF17647C34BFBD9FCAA296D9E3BEBB6
-ED05FFFBE063EF811B18D104AE7B8B4C386164C9B5CF1EB30247AFD937CE04E7
-6A35FF92CB0B8DD9239AD1DC8E8608AA924CAB7361D5F48192D24FB92B6D21EF
-9D83CB3E13967E2250B32410B86EC6BF4722D31239891479B0C65DE3A5A43E0D
-A0192649B5F44902FB67DD68A9609B8FB578174D970CB01B9F86248DF15A769A
-0B0EF0C116A96A4D2D0A9380137270CBED1CA8C19C486E22E13E1BCAAA65F157
-E82A6AFA76530DAA8B27BD83ECAB41121AF2C764CCED122B94FEC74719D22D98
-C6981745F42ABD6C0476776584BE443655ACA39F0BE0AAE445C96325F5A69D08
-41AB9B0ABD19ED358BEEE6DB94724900250B795404243489FB69928CEA6126A8
-2036010760904A7DC8F15D9B05DF3779D1C657FD5162B801996F1F7572BCE8B6
-89DB7020F784D2F750BDCFCAF1E66E5D1CF8206D33D104AE44659298387CD149
-4E2A992E1548A37C0587752D46EF35357BBCD8DDA9BBFB616898AA1BEAE18180
-7AAABCDF3B9D51351EE5CDC490CC365FBCC2325076F696E9C731250A014F635A
-E0EE366E3515066E0735430AF23D407FC997EB489BECFDFBD65872788AF7E13A
-5A216C115DDD2F8FAE684B0F17EC9B53EE00E5966BED1FD155F32B3744F02FC8
-592F8C5B7044F0CD6C23BD26FA11C128CF92E1EAED0DECAE1B3CA64EB558A6F0
-415DFCBFEC7339822CC12F95F0E151ECDCEDD36CCE14AD2D4F57C9932E2F9FA7
-00FB8D7B2C97EE4BFC16F650D0FCFEB70DAB22318CB400BDBCFDB79529F11403
-026348DEC4AB352296519895E23B3305A44887739E906DEF031B92A0F41A4411
-09BDAECAD78E6A853C0A1973657BAC3A58A4EEDF99C0EBDD974EE2E9D2DE83A4
-181A7E72C8CD49EF58369C674D6B7EFC24120A0F245523E85C6E91083F131CC0
-B91CC5DB16712011C2AD2DDBF6D7AECF5BDC2E09ECBD88797912330CE1FAF21C
-D2754C8B16797C577A376B452E96DA49624F063653FDB04098EF11CF1EB5B602
-DD7E66675AA3EC317152ABBD1FABC470A4841B347D80E6021D4E290512F91D53
-6DBE98C25A17631B93544297FF7CA950B903494DA2F686857C118BE4F2D2F5B4
-D63F931457D1507F13FAAF06881670C1F46A11339169B6E859D2F75F9401F5B1
-0F6BBF066B6410C522D3647DF86FEB25C1ACB394F2EE034B6FBA1E1F0C166CAC
-23AD89FD97B43C63867C86FD5609496B8B58F9E10CD24141A110530EC24ADE79
-3A9CAF5E07793AC8B0F9E560649F589FB4312CF3B61FCFAF08B8B62C185A442E
-5EA71733D96F429DA0E2343910D9FBB4225C1B6710721B89316B3F12E3A2E39B
-4B139D9805B64E831BB2D4D1885094552900CB91275C8052B93B59730F1162B8
-76DC1B604C73145C7B9CD5B8B352F3012D8FA03BE0C48998A45C9CE392047BEE
-81E8FA2AF78903D4A55CC2F8CE39C3582FFA7C010D879967F28A1FE3D21416C7
-30F381F99B01020FE3F35340A770629C16333805AE2830BECF5C40EECFCFE629
-67FF0A3A9AF794C5FDD669A18FA5EB93244E6C54843B3868C28D66902429854C
-E3B70B242CF8652F910465050775B542AF7FE158DE22027F228C48F8D137E1EA
-E734DA62FC34B5CC44C9ACD3A078C7D4FCA262EE953EC784B134F40CFF645045
-71B9E302A1B579793BCCD8ADD3FC027EC85A5770A26A1F71C545784E1998E396
-A6E567E1F605A1E89826D328ECF772FB1902F0A05F08F3F7C1DE5A0B1BA02A99
-0348A28AED186D63857976EC0B837EA34AE4D781CCB5B07F39C9E788DD15D549
-BFA3984DD591CA27AD98FD841C57ACF08A0F62287531043EA497D6F48613133F
-BD84A9EA1F660F26660147B4C62EC20648FD4D079BCFEDCE8B96A32FAE2B53CE
-62557A1C739805245755ABF416A368D238FA86EF6C904EA55516A25F4A8DC805
-C9095D78D07E2F79A6C5FC0D4DE4F5A7B14C9809E1141C78705FD9B25A482E44
-D994E5718640CC735DE0412DDE3DBD6BC724446933E83655AF78F08094D074D8
-6890E72F22E5C1228E8D21444669C7BDF8FBE16454610FABF167A63B62C46673
-6CB69B77FB6F0D144CF7B7968668069C819F7D4DEB00343F0AD05B99E8F40DA8
-A3608556D5F823F4FE26B10C1A135161F7684FA93A64EC896097D65DAACC6830
-EE3ED51E612B7D60C85D0C035BE59D78DAAAB868561015257361686D668FB635
-6A4F1B01317B6A07BA91FA9DE649B378CF0C7A37E4BA8FBE74DF0C907DA0047D
-2014ACB6F7DE1698A8E689E23355F9A56E5B36F0A5220D010DB6CC174A78BA9F
-FC79C6ADF5E5FE639264BFAAC91F253876AF829D4A6F59EBB89FA5B00EBB3049
-78FAEAD988E030CC48D18FACB55D4683A5F4DCDEBD347C64CFF09E7AF1FAFAB3
-750A2C59C2FE52A678AEF44E4D72836F7EFB4DEE537F3FCB1B5F2F46EF3835AD
-A4725EE1695F778527E6BFB0D9C1574822D31DFD5B47219954E006F5CE225B7D
-6957FF7C3400031C01DD55BBE7CA2701D3D38E7B0ACE3F14B57876D9A66BD8B5
-42DD5654030E04F002139350208DCA6D83BA9DE34F437E85D5BECDD5E26FCCEC
-892C4AE075F7824261A87484135FD125C430448F2FD46C3C3C70B0AF9AC6C683
-E22995E1A8BEA75475A817C1B399D6C5D673ABAC95BE3DD7837397C609303655
-52442881BE93455BAE061A9A4BFD2824076AAE70418A52FCB61BDDE7B9EFB935
-0DFDDB6160FEC9A4409A4A8BBDC5AEECCA8A4978BA93A63270F06D8D08137C8D
-87D80FDEE637B74C9F26E0AAF1A42111D751877DF17302D3A09EADDB12B787F6
-15FAB9D634DCF45FF7D84597813143C6AA252DD2585BE200F4C0F25C17EE82CD
-564F0044838462C828EA8CDC0B4F7D995527A5425ED593FBADD183A1F488AB67
-1E9AD1A1041E867D2B988F300D87ACA7F675DC85CFA8A478CF2B8C4F1571CB64
-EE2A4F693BA8A7D6F7D0406A4157CA86BA4C64B285186AFAB6387B3D540CC02A
-01900D447BDBB936BC0F94EC4EFA96DC2D09FA22440376C718DC6742D24128E4
-581C8143652E5E07736BCC0A6E5A1C31A1B8E137A9914EA8A38EC38515582A2A
-5F21B9814F1B95A3A231501353800B112149C71F5CFD2E3A55B6179442A55EF9
-24834308DDB593652CB134C208A7F84A4E9FCF7D580FCE2AC4AADF08DB7A7EE7
-86B8079082EC5A1FF3D45B561B69B9F56C2698EB54888531D945421ADDF26BB4
-E4A5AD30D1DFEA597292757F308971BFDED158EC1A793462CFF812E6A809A388
-24795AA06078601971152F7EDC2973374DCF2C2D3945CB839E8CB7702F6E435A
-0E79F28BCDA3D3AA18B9B9C97673B75DF095B22D658C90D163F8DF0CA86214C0
-3D165234B14E373B20F8913638FF228FEFEF111DD0F930968F17EFDD8B87C05E
-0A3A895C202389DD7F5EA6855E2841E6DC01323992E8DD4516199CEF2EDD87C9
-5C1C8F4085C9B85ACF85316E22EE715FA188632115F151BCEE512805990FF3AB
-D8F4927DE10EACD49B720FD17EB260CB9F2BE96D7B50EF189E5579166A7DF683
-EDB55429F1A54AE9DDE34B4A9AA8DF685F8567967C263E2153458BF1E654E2FE
-C19BBBBE7409AF5DDFBF32F26D50EFDD0BB09A1D1106D9B963296034E7D6997F
-9BD4C3478CCA3549D3086930C6F9DF60D1DC3ABA1A289982699ACD964112E30E
-A1C568A53D701642DB80E2B2C0B6084B29F6FB73B0A9FCCD3ABEBAD6B3D58FD4
-1C5C45606AAF806333B354D19F58467B3C315D65B9A9109708966FB7F498A999
-CB0C7DAAC86F9A0F1488D9235A07D6D524BC88C8C212D80143EFFF603406BE2C
-C3108EF1CEE6F6DCF9A3C3CED684800E0E186EE7435A20F54DF2CA4F5539A6C5
-9A5907AEF0DB6AD436FCEF56C198768FAEAEC2D886DD94F7091C44621EED8DC3
-5737DD96B7B2860DC4EF1E0A2B7A963CF707C2C29DF918B7D3066652D6CFE261
-5D381B08F5711C594C03BC72875C384BC01556D907B0641DCE086EA20C621354
-1A2FF32AE1EC09D3F39A11D0FF0A710F4F9E0E7507B6951F96F8FE1E1CA43FDD
-34A511B7AE7D87FB7239CD88D1C0E203A6B9AE1AE673AE441352112FC8728874
-D6585EDEED161FE8303725036402609F36A62E1EF8C3014C4B67A986C741B5FA
-260A32768B2D1F7B23C4BFAE60AF5353AD6C300928427A5A6E942BA44A9BE95A
-E1D5EA5E14F4FE92129D28F01A3B61E49FC01FEC7367DA93FF88DE296A22D62C
-B464A027D7F151FCD84811B26FC115932A86F16EBB16EE974B39AAC5643E6EBA
-5383F1B29C499B66C09FBE07663CF953FBDFF9AB4F50C2DB63498CB80444A58D
-9A91332C23586D1735220BDE76CDE790E86C518C07DC1597ED533CFC62467BE0
-9EC9C70EC2A095F634DB70D5D7DF3D45F66318FBF8FB8316538DDEB13136AFE4
-84B5151453FC9400CF33D0DE81B429FA70449542CDEF957A23643B31ACC5D310
-07BEEA3E2964B17FD1BD27A18D4240C1F445E3B0C177611963A32249F614E521
-1C465B1870EDB7B3EA4B003F113776A8D9EBD060201A0EA68C0D1EAF6B414BAC
-D2CF83F811F5921C0BE37730D093F78B1B58F3E566690BAF966F573370B47AF9
-575EB124495710B9DA2F16EB1E33BEF989B63DD525F57B134D15D083326329BC
-64CCFC0688BFF7A8D56FC1A6A042A4C5BCA5FBB6CE393B990C33EDED14450F24
-1BBC77354E1B4C88A4E7928890379BB6A3083E3E2D29EBA2125F993A97462F01
-B8C47D06845FAEA3FB523C5CE5761050F4D7BE3C07EF80FC8A2D96FE16DA2F52
-2B50F6518446BF64A0717824F7F8BE9E4734BD4737DB4B613E7E3ED9395672EF
-E7F61A887996E5B8B44C94EF7D5800D04353C739043E5BE9F2B93AEB49180390
-BEA7B15653E02A52C70FFA11E3D6ADF017EECA77E97BA1D5DA509A251D585225
-E7FBB89E38482514CCFAE1B3871B36ED6421014B9BC9854247ED67F962F8582B
-A4471805054B1A62A064E1CDB4CDE6CEADA8C63E5013C99E5F35611C23F93A17
-5A39EAC64AC8CBB76B19F15C3E71AFE68FA93AD903E7D2C1CC094AEAADA2EA6C
-C639BFD4842A2B7C9ACE44433CC181EA2FF9BCDC47FEFFEC9CC0737B7088AF78
-29557E8C1F7A825AB31A7E64522EA9F2F3983C1EB14048B4FA453FC04879FB27
-A38584B80E4923D449D4C9171936934F8605FDA9905A5FD87CA1C44A31920C26
-E1EDEB80B835D8E7A647AE842792BAD46DC5F4E277E534D7641AD2FA14FF177A
-0802F81CDE37059B4568A8B06649D7950471FDA7056B675A90FC1FD4B8D380B7
-6BE5958AD92772AEB05010F911CC8FE665F72CF3B8174F7558ED94A3297AE918
-91512710D7F85D5892572B15A933E98E4498882A26EEB6FCFA55D90D48F4D84C
-55E3D32F5F8CD1827A5B5A3DD8B8322EC61558D1BC1E0432D9396F508B5E2B21
-4705FA448A68E087CB39A7A3A184A098EA095301A064638156CAF3A2AB163551
-3FBA7DA70C080D6F90A2F0F2EC614ADBFDF2CC0FA7A2FD8359014F3189765B48
-4EBF26C3B384108AF709CACE708076A951E1336FDB85F6D65CF93A5FCB00E81A
-AEFD1AC063CF370A5019183C85111E7C94F0B00E84E3B5A1A844FCB9FB350253
-59CC1D705A644E174B3132B017E6CF0690FB041A3598E43C5A7379E74A68AF3C
-91030D7E1AC1150B848BA3679B9FD4C389B1A5EED00B807798928A080FB8E2D3
-9E942BA6DC13C68EA2AEB352854A3DE429010E542C59D89FE3B5F3A2FD4A7CC7
-486ADFDC50AA172E0E199B31012D4D6F088082D695410566026F6A3E20F381F0
-03B53A3B6478F821E351F8BD8EF78F793DE6AE2C326308AAD96BCF38D0429D2D
-849E05706752C6407CBF8E174648D96EB30E797B7C8B4F95495D9B7D0EF1CA0B
-C228CABA268389ACF9581CD0F51DDB8CE99FD508AFC4A38DCF717734CC076A24
-6B28248F8529207CA64F929329B012A25BB61AAC60215C6F1E736F9CA55E80E7
-2E9DAAB650FBB96212005B08D389B6DC61EDF075B734DE09B98DF4129F9EC36E
-6596E2AC6418DB0C32138AB85430005710C758D7448DF224734D2E3923259B0D
-FC6B7065C867CA4AA8199093264518584E1AA9FAAE36087116086A2E9AC10CF4
-09D3EF67012D1593BB50C9BFC3B59C3600ED250D5C70251E978313933C3C9F59
-891C46B03F7A7091E77C557E7053D3812D7D693CB6C7DA4E0F489B207738D7F3
-3759FFEEC013B1691AF0C60798CAC322685D26060C9CE6EBF066D53F30F11D25
-894358D31207551EB0AFAF3AE1D1B66A6675EBF44C467C6758594A4D01DB0912
-EAC8754AE29E0B3C4D99AE6CF89BF5692934E7A07B0177F919FCCA9EBD323E15
-374291E778B3FE8A8A6CB9A69858F3278D8419AEBADA50B248D2D8C96EB63884
-0C27CB385767F01AD1AEAE9C6406EEBF21B2DFE26C759E2D955A74A28F06F0B9
-45E678A9D7813522CAD3A0A91DA860A6C7EF9AEDF3423FDD5558F1CF976280D9
-E85944B29D1050C2482B9D97A9357C0B3853F98BF7CE394C71A92FC724AD68AF
-6A9918F688DD40C917FA4AB39C175B185896FDA430AA88A9ED2516E8EA77BA83
-E45319F24D5E82DC9762FBA0B801B8D0E4F7DE641D4695A9F0A1212F53964508
-5A9C4113B36A9605092435B16E6F765DD95A1DDBD7B8697C94A943623025C291
-04B695920CF1B9C5554F9DAE95F05DF8B61B73A45FA4D65B8450CBD46BEB6AC9
-8CEB6211F698E70F355770ABBEB1951B89FA09CD5E71138F93E2CF3285A28E2A
-F075019DB6E974A032F5137B07B6A4C63DCA29E3D60137399A43D7FDA58DBC9B
-4EAC070EA82F1BF66D7FA3B06E721048AE9B31B7D5A3327AD85A866358D3AF40
-F062B1372AEBCB11CA70420FD18657C8687EFDFDD545ECEAA2F2BE2F34A05AC7
-7919093131B5849BEDBE80429648434A0302DAA9993A83316718E48CF96BCCFA
-F7A1D7E186DCF349C7070F7385E8AA028223DDBFF26F66CF215F61F28A6457DD
-1DCE4EA972AF73F231900E0A524ECEBCEB05BC23C5B7407643F8AB7D23423C82
-0A2534D9F582280D0D2445D3EBC42B471C2458E6FBABA52D938A0EC7876A2304
-9D8B04ADCBA20D1101284D4858F97AC95D6DC0111D1573CAFAE8F6F8446C43F1
-D3BC51596AD3C2FB6C69F2A9570795CACB459EDC78C52ADFB76E6784DA1B5FEB
-3F305ADDE49ADABEB42C5C01EA61946012C921133742255494D32060EE4A2455
-5BFDDC076F26692597EBDDEF9EC84E253A3B4219F3F13E6C94E3280E8D28BCA4
-E076025C91CC07A384B9962CFE482B734D545E0CFF7B941FA601C10B3E9C2518
-BAE689B889CD18AEB0220CCE3617E63906B7D8CFC26F95B5AE3564B4E9EA384D
-3BDF74E8436805ABFAADD9CB40A59095F3FCE96C07DE973CA7958B01D74F5046
-B942EDD853FEE099584E9D2E935C7745B7FF6BEA18DC184ECEF507D14276C680
-E6F07604A1ACA225A52E1C45DC5864068A90B65B98F78357240FB76F991F9364
-F00E4602A8701E1025B16B7F1A97F594B6FBD2A321B042DB35AA44F47D2D049B
-BF97DCB804CE4EE2EDA3C5D6BAFD1B214E35D23ED4F216961419152CC037D1B0
-2CA38A5111946C23CFE641DA07FD378590CA88F7743CA51DC77923CA75B681D6
-DC69B139588E6560692E351B2ACDAB8CC26A6341CFAFB2C3486DD98915BE765F
-4CD20807C525A85B515C0C16621D90623EC943B55F0771FE3737866867A47060
-CFAA4542902BE0677A53B77544E2CEFA3C04E2008598250F28688CAA37953C71
-6C190F7D4D7C4C63BB198454EBF42AB7EF205BC46C94890A7F694DEB313157D3
-53D9CC57F45C8B4B45205B34E3BC4E6E7ABB1637BF2FE53CBDA4DB86D96883DB
-13C3E0DAC10A36BBCD0EB98943C82C3D4EC140BFADACE3CA5837657905013F19
-5D656E299E99857911C105038B940013CF7120AD119DB6387FB82673C7425E41
-3EBD4C898BB6C4CA79327C5C8224755C09F406E7ADC5312F268D28113245C5A4
-1FD5187376C43B631A46606B5E4DD342EC3794ADB2668384C6074CD62C8B3FD3
-0E250A6010DC25AB2D9C2130372A7ABA5D99A55FFD5C2BFB361B6641950273B3
-DAEC41E29B5F4E4BE6C47B6F8B07BA114715715ED44A7EC9E5E02143E9158FEB
-D74AEC18677F3289490ED44AE41E5E644A88A2608259FD8289F70382ACF1FB65
-DFFB6068CB49E42D2BD143E716B2552F79AA583492AD1B0101FD8BCEE7408A15
-EC0F74F86AD1E5960B644CB98A0D7EF61BEB88CF986591C7CA593D4C335C2242
-FA9BDEC9EF27F959874CB790433050010B76C5C4E8E52F6081FE12B43B68511A
-F8E44C320C77ADF8BE420B49D01A35B2196D311C54746A890E309014B28AAB43
-5494C69A64116E35286FA70DEC52AAF6F01B279BF7C3EEC83C5F83A7E06B86C6
-C87AAC3F48CA4A46497A678D42D7F6E5B75EE084986050C72D2AE7403918FA52
-9448E84F0C13ED2E05C5046A86B785D6B28FC837CA0679AF787FC6B9E0BB6694
-6D9E6D362C0E5D2286AE2C5108059A6F1062FE5BF325ED0AD064CF9ED457D201
-920AD9DDC276D4AAE77F4FFFED8C3CDD938EF957C720CDB03ADC8D5802852EE0
-3889A623D3CBFE97DEA0AFB94E3E8E4D46A3C58327FE6F23958DF08B80D5F764
-08F1EFDF674493B0FDBEB2B19805DED353D9995ADC3DF804E574CAB0E954E3BA
-9C76607F322D2155D8473107715EF96A06A85A765F594814198083CF841C120C
-E1DDF6EB226382EBEC5547CC40BFCF24DA3383BB8CBB1C4E5C71AA04A49A32DB
-B08E650951358951785012DD855EB6F7BE2606215B61715CDFA9E3B7F74AE31E
-19814B61AD49AF25C42C298F52D4F4B1F0D72CA53CD511BF16D59F2E3F7FF3A3
-0228445FA2267D52A1049CC43EAC74C474E19CD574DECCDAC37366BA1C533BF2
-3590EB9E6E4E402D6B331BA57C25A9DE9CAA3551C2EA3B3B48D1193C811E94E6
-477C451A23203C0F901D5DF77A2BC15A54D0289D7E1D5F051DCBB6F97A2C0007
-64F1FDE12220479919B1AD7EDE462A28BDF5625FD11BCE29DC73B0F130D7B73E
-F1C956F0EB7D355530E80263FF95A3FD86C5BF5A8F9280A302EF55B50246177B
-FCBD3C8B4F29887FE682524ADED4B3EDBE4FE9C3174C072E24631D919E297DA9
-785E4CB724A606B8E056E3C12081ABC5E3CA9DF754330539089AF63B85F05938
-D871A58BC53C5ACA3A057302E0E5EC036145465AB04210B257753DFA9D75BE9D
-B57AAE25F11331C4E19B210B39ED8AC74C2A45640C7F914B56CA1D85DDD83ED5
-40D1E4370D44FC03C5DE5384AEF8B63BAF7BC7FC32349CB6611FDCC82B91D2C4
-BA111BEA7545081D250895C8E5BABE45DCE4FE11BA87E728E08FEB146281A44D
-00012518E56AC86BCA87308C247A99C14559D383B85F045BD99EC6EC40C4D2F0
-65701599595737E17FF4707E938D4163DC5C5DB95E2F4D4AD8E437F66A3C36A4
-C792D1687679DE42FFAB0BC754E5B1E43508C21FBB1A3DC304485C415A686657
-EA1A0E90C7322A364B8AE93425E044661F6556651D3F9873A102E87B0B68D8E5
-D468CE2F02359FF20CCE5CF53A22D19250A7ECB6940A98CBF7C3E2A664D1861F
-86EAACD43BCBBB0D888BAF4B5E90E90D32CA53BCD5660FC10866B9CA92E43DB4
-569CEEAE4CFD211763AD75B885B9C65A8AC553E5CBB5F2C4496DFDDEF46C0115
-0AE64EE489283932D13FC4DE2ABCA4795F3668C63416EB357062394DA0A826C1
-7E6B05CEA77CC0CB3322700F3E1ABF1E6CCF7BAB83B6B4026F03F1BBAD0A10C5
-5E8D9828C10AA29C5A2EA82730561D4019A0C6D131B433B9DD9BE471F66C15CA
-384266E8C1714EA8585BF507366B7FC0F0F797F40CF4A613FD15F033F88BB3A9
-9D5B2654E591B634D49253B2706A31E2F0B2A1C699D0890BC8FD4B25FCCFFF92
-809336ADA46928D535ECB86D167A081FCF19AE7BC30E56225E040AD75FB5DE61
-52C32A4649F2ECF10D3438E80A50F56FA3A43009C5C845838563EA25421030FA
-F79825592A51030E21F9BBC1536F33D2CBCFC1C22499C0F80503FCBE9BAF8BAD
-D35DF34D2875D4E6E83EDE725C829D4A53083484351BF341A8DF8004E20DEDAB
-607D9328425085A8F3E757917EBB775ABB9EB9969093AA44B58E092975ED4966
-5495E0E7E602F0D3194CD7672495CA11BFB1E80231258EFB746275FFEFCEB535
-A718A12D58827F2EB225400C6881451A4BBFDD4B46114779926BD485EFC8DE44
-D6DB332605AAA5A7FC1DE0B4C222E49A33C821426D8E368B931D0402AA1B839F
-1C5FE1C77C329F8DAC88B72EED01779E9C18ECB4369240460980C264FFE5ED13
-5897ABB3A748D0F855EB83796DBBC99917F6FE0C9CDF733AE4CF9A05CB96E88D
-B81C17897EA2B714F9B83342CA33D092C148EBFE2F5341CCF2CE1E4E1E5CF89C
-5AFBD1B998C0806AA39D7BBF68DB42F013A8E1328F1F32542D5636ED8EEA525F
-33F5E1204CAA6E8498CBA5F4B4C970F31F0E9D59ECA534D6B886BDE7B5617B46
-D0B6E8796F51A4CB169C64A2D5A4D04E53B46373A7824E35CD6BFE1017F733E3
-239A0B21E556C96D64CCA81665CEA5A1EFA5B91FEC17BB99DB9B16838A615890
-F6A235A1FD3E7746681EED1A73D9C0BA3F5F229B7C4F8BCE672F8535A6332894
-8C788FC18113BB20EB0C802995E333737D6EAAFDFFBEC04DA500B28E3B1B9CF9
-8A74D155FB6560060F9E8CF4E1EBB3B47043CEC18BF2B764EA71A7F7FABB50FF
-DE301187D740865EC7CA01A58A315D9E31D38476FC8F20FBC23F3A6658001088
-B9FD73F5164E3689210E6C88A83C1894AE8CDBB53E10EDA5C88839D7AFDC3910
-66B88A12BABC981BA4099C05EB047042785ECB701932C9CC4F96E8F5A2D20B11
-E908D9C619F1D579ECD5ED7998EEE848EE23066FA80292CCF13B0B33B15EFAF5
-5878F3CA17A08440DA18802A5C6E212BC7E3B8555E9DF231C1F9571D77E2C8F0
-81AF6E1B91E53C1B630BC5A149F863290A8A596F6D4C5205A6149C9E356ECA6A
-B827C7417010AB2750F020E0BECF6F40A3D356C708FFED6CCF928911AEA0D6C4
-A96F2C1F794C9F6B208646C25A60C65B00F7E0A3321F21B25D1064FAA29113B4
-8F3D1DD8A9F67AAE5200858A7A4EADAB2326FC8DC5069225F464B34A0E6DBC92
-7E960DBC2BE9E03657BF54552699CA523BAEA23D8B0FF3DB605B6802DBDA6421
-88D4B5950ADB9DCBF1CD9C6BA643463B09C725460A9B5CED29ABDB2813613A3E
-9546615A0E247A13FE0843433BB13DA9F53ECFF4661DED22C2E33542DB518D09
-BFDB906B8952BB029BE10DDB9DC059B59E4EC6E7BD2889F2ACC74402D9F96DC7
-7D8125154FA2407151A926147689035FC32C0AD2A606A9FE3107B5EE501280D6
-C75236BCFD6C422C1216ABDA87DD13B045E541F88D566214E579F8D3E6C8B68D
-0BFDBD1715628FF84A2F8778384F9E7B796F299AA3CB76B10C82F9D5CD7B0242
-3CF6091D12DE398C69F29F1DD5F11BD467995E35F6E296D48CA8EB7D4671575F
-4A53CB37F995A33A39AC6241B7FCAD9C1A8C23E14A9CCC0E233DB1C4888FE4CC
-709DDA2563CE6F834131994CEFF5692B0E4945A2CA672913FD17E2A5C58D0EFA
-268AFA4A39E948D2084F0AC14F1F59A0AABEED9322A1BEE00959499A657EB681
-A32E13A6BFA469078B6E752C48EEBD614A48B8238105D61EC32FCA6D27C0F914
-E665E9D87C5EA62B53F1E7C4CE2E7CBF07319ED1608C9E9E3F1258C463C1C100
-2554DD5265D35A13B3CD9304BBFF08096EA237C9178F88BAC17EE12E2AA7CD29
-CCD7E976F6A102DF7EF4947846F415DED6E60D180B22EC9E91C81227CD167583
-BADFA76080A434CA059E64BADA0BEB2B0E91AE2013BA5D23D3FC1ED9519027CF
-D3E3E2482786E08B3B35D2B6E14BAD2E24C6F437BFE4CCAC08C67F2D61971C9D
-D30381D9CC8882FB245FD0BBA73EE79C1C5EA7892239B54198CA4F2DB0D77267
-38CFA22A1D8A53030602FF834C0717B3E372559D9347215675DA86CBCF01DFF9
-C46451FA26844D4B3864D9C6879F3062F8F851B552876BD15CC84504EE8D5B25
-E981F9AD4FDCE79FF59366236C19D41126BE0003908E91DFF2A3CE3A42A9ED9F
-FA8272446D31ACF35067CFA838C0D1D023C7F99F45194550851B4A11584F1EB9
-9C0E3967867C92A260D815A28CAA5CC842F313BCF1140C5C2146F2FD25A46243
-320A1C5A27725472E5640211DB0F01EA82640C880EB557298E54B1CC27CBDF6E
-C2AF67684B23B6822210207E45E302AEF4F9DC2F2A3B9B7F321243057D881DFF
-5DA582555915ADF2297C99CC0561B26C194B764B7FA2B1837B6C5F087FCB9CF7
-D718DD816FDDBC26012531473A1521E63A724D95C73D29987105C38AE741D75F
-76B95C4CEAE23A6D1D29B494D089F9B1750243E6C2443C37484721BBAA145979
-0B65E86F97F81D1A44D9AFAF762604FA442B33E0B985F8414AC699284C05FA83
-802D0ABCB947971C2DCB161661D1F38F96081E974504C00DB0D89D8BE113493A
-1A248CE00F8A54DD352BBC2728F509853EE05A1C6FF40C6DF5CD7B2968344F1F
-2350E9B88FF8415CE0E113D22DCC6E5980E5FCE557A3BC64E141B4458150347B
-168E35237A245A1D1532A7C1E8AA487271BB4DC122C0C75E47AD7E7A1C35BAF1
-BB797EA981CC72DC550BFEDAEE0DC722AD62AE9554FE9E822D2BEF7E9EC838C4
-4995143A593CF33BD92E37B12D3A8F29DE6EDD8B98401AD25FE73F3505F18369
-5A5DF007C4ABA613145AF6A8B7B06F1FDEBAE506DFE8585265ABFE2D662F1ACF
-BDFADA70EF86FDC577EFAC8B24C7C399CD098E1A0DEB65E8C95C2C773D2B1092
-1A39F5AD71DFB6EF8192FA1DA31156D08205792B948D26FA1FA3BC6F5F3275FC
-BADD90204837A228544B30AE0B0F8470DE34B9C928A980958FF01C481BA1480D
-998D4A6D648B97C060EE44AF668BC1546F7309E685C1A00D8227B4B7C5F17E78
-A89809823590469C0343177A54DEECC1BCEC612AE333F34981A28F78A0FCAA78
-116FD3C17B19EED4E55C01ADF0F8895EEA12D45B4F3A25AB605A263DE932276D
-16B9B72BEDEA2FFA8F493D119B2721F72DD3CE0F1DC7365386B63CAFD774D142
-388527F0A02394F0C5502E3768ABAB2C080FBE5A832EA82D6FF99C5A65AF5D33
-F667F0225B9F319F054C475780DDA9C6F1C8F0FD0505AE8AAEF27D0D1CC330A6
-410825436D6CC0842D91EEE3B5F198AD84CD3423177602D521570365078AE6C8
-8079A4A0D87E599C0876AED67FFB3FD13886CB536EA2F022326A00A121CAB893
-01CD94FFAACCCFEE2B2167FBBC4A62F6B40BEA1AAF1EAC43AFFBD70E53B80039
-6CFA90D932D1E597C040D98BDA0B019D36ADFAE872EC1BD91ED628994D071EBC
-F62659CBDF3EF702D0FA67EB9F95E2BA245F1957EC8BF8D5D1F7271CF8CF3837
-A07B3367ACCF0B4C4CFD30A374FA5C9156FEA1F05AD54FEB2C377AAA7911C614
-582AEDC105D97B86408C005F597F861D8FED1F401D3AFB853AADA4E81C57D744
-227F9ED2E1FA8A46C68679A5561CC83BEBCCC2B432EDC0FBEF5BA4B925B6BA76
-965CD982D5CD469FA31C5BB567171AD4D79B62894ADC3BC94749B4FC2D137759
-2892026E16A0F372EA323AB51E23C114F30BE247CB5F2BB4E3656F660A8F0C31
-25C43E7F0DD10669E2B0819D62A402AC1F403B3B3E42181207A8FD19EC9C9EA2
-00CEBB75DB7B7D1969CD18DDEF18B7A20B0D3F702455B4CB9705BDCA36B09397
-B76D7ADBB40E2037288F57C2CA99EABB9870E1D1CD7F3F2DDBA010D641BFDBD4
-321CC05839ADC1D3ADCA67B2FDD3C5A3B4D703ACE6EF665F7293162B39051CEB
-4CEAD2CFDE2AD38C1DEF0076325E869CC4279164A66D8922957AFDA10DDE38BA
-C8237AFCE135D3EDD082B4E3FCEF82E6402E44F4511F823AECED2B222DB97856
-26E846408D556491567CC4259FFC7BD9C0838652714B3CFC61F44C9BEBA4485E
-53718997739101069F14B2A1900FA728515D0BA26FAE48BDE871091AB3B6EA90
-8C2D42858E8DAD44FD2DDEE93C0785EF10A4EB9185C429750820DEFF528796FF
-1F668B63762870C23768712FD62382311C8C4737065E8FFDEF70B3DBACDFF083
-49DB6627FA66567048891BA794EDDDC9C5A1C47F60EC1E0B5744C26B4B110900
-04FEDC8143AF0DC2B02F29342CE024D6D5876E5DB59D7323A28B265FE2578FB6
-2BF0EA9F0D85987E3C7B9C4B8E491D9193D40A5E0BCCCB3E9D9428386881A3F0
-CC586A6A6C1B256976F03A0BA5028ACE4E5AFCEC7CA47FAD65FEB559B3F7B0B4
-A24316CDABCD387BE5E241A11BA2D3F48A9951FDCBEB6DDB9227B78CACA27A75
-371A9CBC4F2BE12D139E79ACBBE5760A3A0A044583B334FF524BB1D5F0FA54AA
-6ADBCAC4D6F6C01213D0C6B54BA8554B49765ECFCF8456014B7179876B88FD81
-0725C7106266B3B9241E6EE12535771864EFD3C31EA57772239B7DA8B9139C5A
-2E3AD47B2A27E560CFD6DA87776E3D66D19A9351B1E352E829A7127BCB0F9713
-83E3E5FF6301535F372C38DFB8310CDE0FF24806A4B97B608C8B249EA1D60E76
-AACBBE28B7C4A3581F977680F67C5C3A5FB412E481AE7A11417DBB7D8B2ED528
-658E92B8B0B1FEDFB8F4DEF05D2CCC42F6B57703A33EDBB4852BE8E975E4C6CF
-1085908476EC40C50CA746BD761318481936B71639B24011BF652347BEE3FDA2
-FEC5BEBA0F5A5609F5B834DB04746D4395B08B1AD4CC45B7D24099259DE86DE0
-F5C0638881A9C92C09B14B24AE8230E47E53B4785B52989911C164A58FDCB167
-2B0390701EC7B6287D9C942BD519449A4754C9AC7C0A22BB500B2A32A55208CC
-2DE0E516483DE632789471B8D46260290AC32C26FE2E31389A604490A087D0DB
-81937C0F9C0B15714F2410133CCCFDB6F0B0FCF95897DA3E0AFD783FD9AD2BE4
-6D21A6BE877592E404475471648F8205483B894BE866799E772533AA33728D4E
-F54C1354822020AFBBFA7B4BEC6F3FD9B26D6EF307618DA000C56ABC87D98643
-D543A519FC8D61A2B86C7E18364EAB4D31A48EDC70869DEB8044A17FA8B2CBA5
-224851AFB9FE49CD5219376D6EE66772EE27FF6419557E845C2B0426D793CC2A
-3165B3EEA6A1A13F421C8CA3E47C93106B0B6202D86C5A31C1122AA3F17A86BD
-065EA5A687EA3B1ED324A9F36246919BA50117492866DD545E42A1186979FC71
-DDFC98C8A6FDD649B17DEE9FF4AFD78920A75FF69ADEF128077DCB3F5FF601C8
-96599F8C9168D7229BE969E5AE9A08166EC40E890D1DD8B62E29AFD2E3B406A8
-73396BABAAFC158C6A92390B33598F8C643DD4FBDB760D2D202815DE41E8A471
-039F8D61F8033532CD100F07D726D0D92E68338C014C88B274357D554EBCC802
-265288D9E554ADA4CB6D1431D0CD94CB3D1A26675EFD6D036BC583D242710A8F
-19751007530B1CB76025D04432FBB38D7468FD4203D9A47F7E67C636ACA10E19
-A9FA72D3DF82FB37474966A58AA01C5F7568DC7D4668ADE721BA5219CEAAFD3C
-AE372963DF037ED7574AA890AD12463C5109B5CF23E54DE574CCA937D5C49BF1
-F763F6380300887970BB22246FCF5B2B2EB69942748A30BCF9A003BC6FBCA2C7
-325284834812EAB44F42921A116B12D184F9EBCDD8B782933A1BA9ED1F33F97B
-548D72EDE27B24A0A8714E6A847254763CA5AF040D304D75E376A43F9CF839ED
-1D9E2BEDD3C0BB55E19B8C5FD48CD785AAF3FD381CD301C75B6BCD63CDC52D0E
-3DB72DFD034AFCBD61DE9C83AB58A593D727B6EAB8217CC38FD5AB57FF1DBF78
-01B4CB52D6E888339B00FF527F839026787F743EC13446C2B9BC6C73E24C5E75
-29AE3FD77A54E341F0D40DE696FB0C11E12252BE4B039A80618E1B9C824744C6
-E918CA1230C1A1B389AE706AC4E4974A204854CF371E655A80CADBB400DD8F8D
-A6C3C168A237B5DD57E69FFFF2D670268242A54A2A30DF8EE3D6802EB60B8568
-F101F3B8081563E133B5589666278217DE793AEDA75F72A50A558EF3C4E2DFB7
-6CAEF16C7FC19C7C2EF3A1288E1B77064CC245CB799CA5DE7D709C1DA186AF22
-1453CB15AED504F92D27201EB935E397D85983135B606265449423D878AD8B0D
-C53B9461A91F46AD34F5CB1A3A0264B6305C01273C84CBA9761260A30C36BCA2
-F9CF25CB60710671DC2EA7D9D48444E53DB4F4FC0803BF617632C87EB04D54EC
-B729E72DCCE2B88CF6A4FCBE878615FC4A1728D456E911F904965FF49CF1CE7D
-69B4EC40857946FD8A761310B2D2AB5B753D6A47C11C789D682A23E7F80416DF
-4834804F7E600AD21CC2930429D479319E970CE129AEC7AEEDB3CBCFCB311693
-FA4F4C645405B6C9A6C5DD437F6D8D320C36DB8C34C8883218B913C3B9F3787C
-DE794BDCF63BE1BE6AD878880243BB1F5DB700A5FEBEB48E8778827FC428A1D5
-
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT9
-%!PS-AdobeFont-1.0: CMTT9 003.002
-%%Title: CMTT9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
-/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT9 def
-/FontBBox {-6 -233 542 698 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
-/FullName (CMTT9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 54 /six put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
-42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
-4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
-689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
-0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
-610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
-3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
-C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
-995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
-EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
-2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
-4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
-B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
-D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
-510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
-BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
-93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
-F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
-45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
-4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
-088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
-9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
-09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
-E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
-0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
-FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
-94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
-03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
-409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
-45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
-39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
-58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
-84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
-0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
-F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
-B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
-D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
-3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
-7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
-8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
-712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
-C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
-E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
-A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
-2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
-757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
-54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
-DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
-08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
-6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
-A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
-336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
-E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
-3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
-E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
-1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
-FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
-A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
-465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
-3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
-CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
-573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
-9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
-15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
-D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
-15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
-64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
-D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
-D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
-576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
-ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
-EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
-9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
-3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
-1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
-FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
-C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
-4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
-CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
-3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
-D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
-BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
-1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
-4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
-C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
-80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
-AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
-59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
-3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
-14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
-B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
-F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
-54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
-34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
-825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
-BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
-4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
-66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
-2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
-F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
-1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
-37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
-741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
-39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
-887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
-B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
-15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
-5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
-80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
-A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
-BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
-2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
-B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
-F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
-9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
-CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
-DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
-6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
-7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
-D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
-9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
-EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
-0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
-1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
-85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
-EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
-D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
-E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
-88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
-E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
-01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
-54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
-97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
-B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
-D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
-18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
-A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
-1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
-31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
-408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
-1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
-29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
-BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
-AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
-0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
-99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
-480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
-D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
-FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
-587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
-A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
-C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
-AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
-AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
-48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
-385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
-8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
-4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
-839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
-320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
-7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
-DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
-DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
-461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
-BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
-1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
-3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
-0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
-EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
-AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
-F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
-097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA
-53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7
-39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78
-77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0
-1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A2073F
-9BAB479A3F9DA76CCD65629CCEF78015ADBC2D0D124B3BB2D322FC4D209E417D
-84BC3C758B6AB64A01E25C9C7B71D741AF90A19A339F99A0BE9FC39622F04C6F
-737474CFEC19C890A657BCE192B9DCD8F273CDC5294875DD4507DC572551C934
-9C362FD595A429FDA2D815959461B0CC2A804C1142BD91C7567082699B8E274C
-6A22806D6C51B7DA809BE9F612EC537D4FF3122644AE0718BBDC6ADEFE7EDBCB
-8C8A76CBB280E70ADFE563C01CB9EB828ECFCD365825941C8B7E1B1401AF773E
-0D3E8A6F2D62624F8F5FD1EC3CC76254E4CCB4D8E4DF0D5E6DE10BC1FD8BC325
-05E773E0925B6838E0D7ACF12AE32E572F6642EA587806FD2805C9147B873194
-788B8162F3C20C915E4909B72D0A62D4A2B63B3825F96C42625DA10FC0E9ADCD
-77F50821EC585193A56698ABDF8822AD65F853F06E4171E1A1AC06E5C57691D5
-90523A7F03DC50F41C46D72151717149566C2D356C1A75FE76619AE45B9CD605
-D3A0B33690F9431CE242042149A2E42BC6A9356F786ED9B7674C243C8AED9D77
-636564B36A52EAC1EE25999127F925F8755EA21272E3AFC856EA92F1B1E130A6
-9486E1DBE81C78914A157EEF0414901AC8BF313A9F444FB2844405C263105609
-9E302C68BACCE64BB7945535F2F9C2872DBA3A602BFDDC2C6438B302B8D96DE5
-F537A714B7D2BF4C8B6915011D38800C0922B7089E1F58A5A6DF1D426261FFD3
-8496FC59ABEF5653D244E51DC18D750C61F4AFE49961F461F60F05664DF2395B
-7CF8112611AD3C6BE0D64AD95CD956DA57C6E641EA2DFB4F84B441D627E68C6A
-ED7CD840D1B199AD4B428C6FCC8E0E4CE294433A4C8A4F1E498B5ADC74B75490
-60C206487C101F03F8704FAD6B22DF1BE74DBB61631B2426EAECE3BC8120EABC
-A4B87B7D1C47DC03DC1F132E4A4671129F793002C5163D5A341BF2339A0DE9EA
-F6CE84D02DFA57BBB021EF5B165E47F01EFD7441F57D5072F4649F2C6A9271EC
-6333129DC28B1DF6641E7BDE87E27B19D474DA41A43A6F985CFBABDA93BD0C9E
-4552DDE651D58874023F062CEF99CCB280E75E6ACD9170013E67ABCFB7765B63
-8D5778C5B9294A5F9EB8165B534CCF2345373D744D46DCABB2386EACF24FBFDC
-945B43021D51381512993D0CCE214FDF11143F608964E2E4458BC307618FB066
-D0A09A1D3986B9B2BEBEF6CCB56B060D92488CED8F8657B779DCD06FAE5DDEA9
-AF3DEE61771BEB0106B8446FFF798BDA4522241ED5A3C2201B859CF99E487A9D
-6D09F1F4E15771BD8B827C0C6FAC0C68CA005767EEA79C653D10B357B2F35AB8
-E27E9A9E1647B8B0695D9B3361D5C4DD1C8502307AB8D589E8E7730CF4E79138
-DC663A160F8B48A09E2463A3884F7110DA86DBAC85BCDF0F2FB642D3A32079BF
-3EA12A6EC68F1B16886B92C447C6C671D056C625D983A59AFDEDDB11F5CA4607
-849A561FF10F2D8AC4C7A07FE97CD0D40EF2FA3C70CBA1003A32B6F1E6AF34CB
-297A8161614ECF7582E57A0C28073664DACE0B1F5975CA309A313954912428F3
-EB1FD70B512C6BA2807E7DE61C4DEA4AF0F975BD0813D74C3E7DC9B0FC48B19F
-8AE1D32B736870819CA75057B963C1AFB107309889506B0905CA55B6F3021515
-B0B6A1C0F298421CD24784B89EA18251ECB9E9F76C0A61CB6B61CE4FC18E84D4
-C7ED481808433D1AD785D0E66ACC21F5DD37CFE2DAB64F3D23E0BED8A8E21058
-94802B93AB33E5B66B126C818CCE25F58852380D0A46A10BAFFA90979FE3C5D6
-C1A41AB044D3A12D258AA40B505A7E167FB20697D5607D83C90F512DFBF4B8FB
-F0AEA744390E9D06FBED2D1D5708EDE5C4365CADB27F9126DE2D0D91448776A0
-1CB4091C21D62A253B12FE336DF35BD4B322890B0AAAFE6B917E584156632567
-136AB50A591298F50D9B7756AE5B9DC1CA48C08E564BFD1AB5AACA99027E5950
-E12037FA2BB52BC7F430096C7CCC2E6E49036B2EDC04602B42047659ED14B344
-996D0819CB04E198855E16E34FAB061B23CAB292B6A3A33A692ED38128193D37
-C8CC57648A3E641593A39E464E46D260B38391EC6C54A5866E555F46AB175457
-7EF1CF14F518D86A975E0741C75816DEABB25DCD1BF501F3F7FDBE8940DD1256
-8386A7D8FF00994FD669D6377A279C6833A2D4AFA5BA3B02925B1D4C8547268F
-408B524D3F9CEEA491A0A7D81843317C001EBF830C369B61205CF76201FCE5A3
-B2A5A6D96F9F22212CEE6D220337B2F0799EA3BC4AE337CB463AAA21C79C57DA
-02A2E0A60931AD78E20D5471DA17C2480346818533D131A62C5630ECA98D24FA
-03612960B26BEF1FC3A01B45348CF695D4A2C2B69B15EEEEE49B7DB78B03F39D
-A6694E0E1CDCF75945810A6388412487107C38BC9632D637FA26ADE3EA61F5D6
-3D48E4873A03C7DA132CCA34530F27504B51DD425A3E74DFCC5BB227F63B82BB
-6C854F5447F3517A794A78753775ACC29A61DD380CBA00EB25730E613C11899D
-B5542B8F0F4C80FD9ED2073D9A5EFD3D4126F64CCD5B3626B6B8C0014C31C9AF
-E638C4E9381415F903DE7B554B1BC135138F12926805CA71A11D6551078FA370
-08AB0C884EB5EDD95994D4D1C5D8DB1412DF91DDBC521339479DD06F5CDC1A20
-0E35304ABAC27079C48B688B3E138026764E6F579503D13E2A87C11903360655
-2E3EE587F8DF681F6514BC853425BE7178778B0B95A9107FEB58A69CFC9CC845
-D13AA5DA512CCD45886411C0809CCDA5B28F54E5C1EF261C280E0B218F6E28BA
-2D97F92962D962F48F753A61FA204411DB939E77120B8069155754B663029E00
-D7397C001E098A45D84FC93AA3407F8BE54CF5052FFBD2780E3A78CC0F6292E5
-17A6DDB977B817CD9EE2FF76EB1ECD06A7E36D256BA05DC8E523B63FF807E1C4
-198E61EF3537B05706F8B58286DB806A9F4380AA85982EF8A053F52E26D28D4E
-5EE719E725A624A024AD029984C35E6502FF21CFA2EB865D910F667F810F4A19
-855F8051CBBAB71EED5F57ACDF4718EAC86910C8B38FD1EE596E98A0F95BE413
-885D92B2412DB15C27E8A88C7DC20781CB6D9197F6063554777A3E2AB59A3369
-916C3554B025B6EC0792F09D0396F6AE8CBAAF647CBC58FDA759A4AE2BBA8F01
-C9DD5208A58C25210A8F6B8EE44C2E83FB0C5819ACE93D946A822FC5D1A5B329
-8B7883E0DA2555B6905EB07D3EFE3A5F5354B7A6DA5FE2FAF2A8DD8ED3A095C3
-7D7EE87ED1947EFA55EECB85E9944C9B3D9DB1B2B46A88D2B4F0276188C758DB
-A7A9B5F9EC59C67A553831CDB326C1C6D38528911BBE5C9CAA2A845B6D34AA1D
-4876501B96E9E4515DA1242E6FCA80EDDEA1E3D2DE9C549844D239A9CFB3905E
-984FD2AE71E9D356077A261EC502B8D8BAD6C5CE9C1711D65CCECB52D69BBA9C
-B2A5BF994B7405D09AD22C54D1A8D4893FC7DAAE7D9CAB00AB3FB61F7F56A88E
-A6146C98CDDA05078DC0387E8B35C5D460D21E19372E6056E5E4B23A2F2FB3EF
-1DDB4E5312E0B2A4631C546A7CB1CA2A3EE23795BBFD061A44CA4A2F6F5A5E0C
-4560FFCD520E8F235D6B768D119B83163CC1B13547DC447575DFCFFE1E06DDE6
-4A0F0AD5C08BBE48432B15FC9D144E6ED679107C81D1117E7A7ADDD5723F4EF5
-235E44730BA14F7AA0737B933590C453162240A1E712FF1436BF8CC9312ADD0C
-2825E46187ABD85D9661B7A84F57BD78A35E7684F6F9E6ED1B1552D2DE55119A
-0C1CE4CD1712EC5A318CF4B9A389C8120F332043129F24E341BA41D5C1FDFEDB
-B3777549F7ED355DCECBB56EE36622E0F2D22B3F37B0DB808920807577ED7230
-35DA36AB230E3D914E653D94859F257149E617D82F5EA6E6D1B6C17C96008260
-3730E3370F9F979A98CF71F9E38D592992251AD5B1DFB03FC466DBC7485D641C
-97E5FA71484745A41CD87B4C1AB959A4B7E1404E30E8133E5707258A0236461F
-58C7F5FB1F0CBDADC204311590FCE4C7B0165690CC869F221EE486217770B65A
-980677F4B80A045587EF3F0C71E90DF404BA8F1BD7A3DCAE406A9EBDB2CC2E8D
-E4D25A8ABF1B4F67D5A1DA34C6F67AD574F71E894A52DA063FBDC6A5F35E2385
-14809CDE8D4C549DA24DBD6B41359F474C0ADAB4B17F5FCA1DB304C685687DA8
-510292B17FDBA634EAC57DCEF505025DD1BB9AC7D186AB560A57871840FCBA7B
-7FC606D2643015E570A3917F89A7586D71AF8CA24D56E71284C979F37F59C921
-7E7F33B1F62A556CAD6F0F43B0D31BDC3FC92082C3216A3B4960086D578BB797
-0ADDC78CFAE010530E09A86F950BA7DF855D0CF9EEE48E726D32DDBF97469277
-0856D2C19F819DD0086BB19C9A445F76C4745E3EEAEF48A86FC7F62EAFBD0D3E
-E5FE58DA688C278CE3C4806230C33DE2E6927D1A0621910C75FB0F6BBF85FEFE
-8F6E8B55E2CC59E2E33F1CE139E08C3195F0BB3653A45434BAF26A3D8D150CEF
-52C48C478E651A5F413E89DC60A7A16D7B73F7F90B070AF22F560A7CD2EDE5DF
-D3136617AA3CBDA07AD5BAE734E54A99C00EA3B4B46511C93D5ECC962E96A35A
-EB39D6DEEFB06D6E2E4C027A47E8EA8EC2FF0F4A9C84E5D3CF4273E50DFA722B
-5D60C918C6981B8627F1B4F4BCC31426317D3EBC95C25B53255557AF2DF70199
-1974A9F67FA7E7F545081C54F3103E4A45FE2C439368DA42D72FF4ACBFB14B5A
-73597AB5E1EDC92A3A0BF4FFC68E9E74D0244573145959130142D903015C8D82
-F0558015D3FD56C45472D1346AD727639D26DD574C9DE0A4FFF51498B78C9653
-05CFC327139DE48316D7790E8CD1A9D0D5606ABFAB745F17C5E90244A209CE56
-298384344A2A216EDFE7D5E7906BA6E7E03EEC80B10E2F3ADD160ED4A21E5E0B
-B64BB6FCC7893D6074E8884BAD38B4DFB61F429CE906062D8C37488433BA7FCF
-F305D8C59C900C6F36BD72C2F48344C6C8B69DDD304212B539C950B9C40ECDF8
-01134774881EFFC2E7BBB8465311A852099D9379C7522BF903496DEAAD12D7E8
-C662DA12A6DA3E3A99D7DDC0DC81221BFB27F1CF2FC6CC1679F09B89FBF66130
-4CD106B99AAEA0AAB0FB6C3C43C2405FB979459C27CFA6CAC2A453157AA7712C
-E4C4EB0D03E6F4DB648CB2FF46A7BCBCCA740AF8D03F4E032BC1F07B58A28C7F
-20C67A9F5DB3036769493076258B474F7F2B11F78E1600A1AD228963B37E86A6
-20440597F89F67A08C07AF0CF3E3628C9698B4103B7E296FD5D78491695958CB
-4F61366EEBA51C3A7F22D7DFA81FAC74483D6BD1E17718D8608D728D45FFFF41
-AA925D4FB248EBA78A31BC2E4EDA9B4BDECF75E69C1572B02724AE0E88A47C2C
-2606B0D5A952E0705AC500DDFDBD9653D4CA984EF9CCC2DB8F0E70853D172D61
-8510F07D0CEB47AF4BC8EEC06D2AABA4125CE96FD28D9CEFCF6201A70C139900
-1AF6D4CF7DC807FD1A8202AB8B0C005067BCD3AEBB482BA2F8B8FA44D3DC7338
-CAAA8D46A5EA05B8B1A868493F8B503393678AB75C5F7649332BEFC624F1693A
-3E34ECDE22A60891F423950A854F3BB1F6B4959AB0EABFA8955D67F42734C8C6
-23F6FC71518A86FF0E1804E7CC09CAA830479D9CC01CD03EDE50DADEDB16FAE7
-9CA4ACEC7AAA5E704290A2F7527DEBA2CDC1444F027EC86C81367F54516C1654
-5E11FEE3F10FFCA2D74206F365D53655BD8FA76BAA8F8C78696D47591BCE88DC
-B12AB8176EB03BC115F99B7D88C56F2A3400040637386FB86D093CFC38814F2A
-F1616AD54EC908AB3AEB11C61E3AE380D99FEA37B1D594559A904278CF2425A6
-012729A40062BB0AB84A0FCB86A3F5D04561B93A77CF011F4DE3ECFF5E0B004B
-933084F930F0AF3437D59447EEA731352339492A0685B45101CBFB5B8259E6A6
-3583582DFF0529E4AA5806AC2F6C9C448B0422C8125CF30259325E05B0A85EFF
-C20FFAF525F73604DD2CEC421190B3A47875BAD36104DA1D80283DF395B6B87C
-961E613CE164B60DC343D3AA6D7065149B412C3CC3FC1BFF415652F99F698B52
-31FE11816B341B2E2BEA3F7D7732B5C9E0C754027486D56B1D2268B981B81C30
-9FE2AC2F949990068F30403E3243CB7E4A448A4CB05CCC59B9C19CCACD03E428
-E423CEAC7B976B59ACEDB3FF08B094AC3E969C99AAF5EA974F3FF61C5C663B53
-8878F3885945B1A3299C219976D2842AA5DEBB5428E1A0864CF48BE957C7BE41
-66861F3B4BA7CBCEF06B80137F83E351D8CA3D5051BBB3D2E1EFCA8905061D14
-643A240BEA6AEFD788B00A807FBCCD4557E191A51D62D9729C98D1FC4BDB776C
-781E824E0FB8B5900C41ACCE7831C4F6AB814BC7CB47ED8031DF80F517AA5E44
-45046B25AC5F3474135E429142E5BC33D924CBA166596FAF5D25E732C79C2AE5
-F3095A5D565B855E15A585FE57EC321B7D904BFB9EA2D724A085F298888EF252
-938DFA23FFCFF6A1A1AB9436CC63DA9B560B074BBFD39E552DBB8D174ECDF5A0
-FD92ECCD75EF488732377DBF97C7069851AC0EBFC3AC4226A534FDE26B47527B
-0DA64B77BA16385223580B784D1E74DE433186809AFE97A7B51514E4F665D14C
-D1968CDCFBD8E50ACE4D76442D68FF726EB83685DD0FC3B14DAFAAE06A894CB2
-D2CDA2C50FFBA709023472951955D39E7467E978DEA8371A935390407C01FD50
-C8B393DDF202F0BB76B7572FCAEE5FD588C6F01AAAD38C99B277C501DF5C25B8
-56F5BBEB4FD1BB379563093D54247A365CC66E04A09EEB1702FF946B2DA1247E
-15D82AD0078AE820CB71AE2481C3B23EB86A5295CA58E00BC638EF541D4644A2
-748E7AD3212B1E297F583AC4EEDB93641F2B7C0817245326322B0AF2C2028EBD
-6EEA236F8E774B379AA00D7BF9B9AA8D9978649FD1CC8DFD7C145F36E2CAE63D
-157480ADE56A69DCA2BA077F8AFCBA252DF716D99442EE7286DC74CEF7F539E4
-11EBE1B2914351CF6D12FBD2658285129176D0566F2104CF95589AF2CEFB1DF7
-CBA05FDAD557F3279007CF49BB3783470BC974F47408BE287877ADDDC30DB1D1
-1ECF880973C5ABEC997DC089A91EC2781B77D4B1BB436C785B9EFDAD04FD6B17
-22B53DE2A271A527E2A4A98875A041F5E1DA7BBB96BB550DD32ADEB761B561C6
-71266E345FE58024F192ED4D918892CF596AA20791D196AF8034F94F8EC9AB76
-625595C86424B94BA9143E035ABB4405A6CD2240CA82A6F38ECFC0629C877482
-AC4DB88AFB832A4659B60CE2F2781BA482C8CD801D55C165055B404F1DC8D6F9
-7748CAD55829445A5985D4DA6F0B2BAD86A6435CBA6D314712C260C4DA58CD29
-BDE901ADAEA60C3AE82F9D52CEB3E29AFDC1E03B4CB387987BE958F3DC449A5C
-ABA0F3E720378B1FDD5D4B6F8F96432380A83E0664AFD7C9D8F85A0034403E2F
-8CBE7840B219589C7E7D7E20A12684F0D01239D1D41CEA6B48361C390BAED783
-DC6692FE202F3C7146F8C4B799A4ED5D6558DCF34793CFE86D7AAD1B27CDD541
-293E1DFE875F5F397349FFBA48015435855269CE3E82E320EDBF3DBD81243C85
-E7235E75A98EE2F7A8F5B2C90E2C213B13B9CB1776B8AF2D5F4753A812B2EFEA
-E9BEB45F4B3CC3C35DB9526E3B2AE4C1AEA573970E588FFD894EEA7F4F29DF14
-61AC620D18337395F04E2F05D2CA8280BFFEC6F56E1862D19E891D753DE8114C
-76CB8C88429A0706B68B2FB53D73D80DA80A88519174D0993427FC39CF7CC668
-F2FB56CFB3F26F9E2F35743AA8BC2530930EE7B330314BE7A4AB21882FC84522
-4AAF8A9B58AB8CA2E316B29EDAEE4A140FBBB591398A86BBB933AC07B0931CA2
-086842ED8B3CBA0EA117C5B0FEF0DC8D4293435CF92998916C53346435048556
-A36B15C19BE595C8055959299645BE7B56E3A3353F443E90E0A9540E8F5433B8
-FCA78FBD369DCFCA049E4EA27E890FE125DAB0AB6DEF649E23F34F2FA46BB1EB
-CC1A041CF273F94DBAC2ABAD5E225DD6046B03CEDC518E8A13DA56E4AD6E36A4
-BB319081EC89978E4215940DD715795D07A61221705ADC30DD8D6343BB3427D4
-DB7B910D256F65B9BB9202C482B190C7FEB04EDBF80EF23EB3C17DB117B501BA
-3CB89B34300BDB9A0B97ECAC87536EC94FE2D74B48CE2A14C0AB0F50F54E6D7A
-88DBC59FF9D3C33D8AD4D3F1CD47F3A4E7E181500A4A96EE73A2954DF83F1D64
-9C1257D65FDCD057BFBFC9A18534B5BEE8902ACCA38D313F992FFAAB300FAE74
-5D7FE062C4C1AF0EA71A1F4C2D34313BE0F6DB1CA515A9F10DB27560D24B6D0A
-6090E9099E59F59C0AD9FF714967B00A741B691A5D11B6042402C5584E487295
-F4DCE8FACE662E1FCAF88601F9C076AF879790F742B4B1C00A15642E3ECD4661
-995F0151413F513C28A365634A73596D5DFDC010D53C07AE9052A8F9E3C5C557
-D5434ECA23B77A3DAF392919FD782EAADDC4D121F91EF04666444661D94783BB
-240252B7C302AD0D5DA1994246D768424B449A3D1B160210C0F3296D34D63290
-D40FC924B1956C2F21EAEFDBCD302C1DF97ADA7748EF8BE4D9C746706DA02399
-04FEB35B54B61AE0131EAFFF5F410E586948EED156937E836A5DEC3204DD8C8E
-E556B8EDA52064864FB9776CC1E05E6181C549C10F09296924E6FD7BA07CA23E
-783F7EFC19B869E903640009A37AB5A47A3F394FAD97F7EF0A1DBEF5C74BB515
-70016BE28E8FA12F9A10E15C1EE3B31E4CEFEDEB385FD9B5019A5BD57681F9B1
-C05AFD6B83A1FDEF4E4789245BED5F4CBCFC4838A89491FE93FBC5773A89737D
-35588EF3CD0C9ECD89FFD27A7FF414A9B7CB89FAD15E692E509C65F3AF36A346
-6C8AEFF5AC7CC50262B24F75CFD7C44A977D9A34F89ABAB25A957B3657C76D31
-0F02B398202E98A8C65742FF5BB296BA192D3FA12B617A0F3EF5FA1502B4D519
-9D2301D2089CB47A16606CA16BED608743AEF37E9DD4BE4B6E90AAD8D12B27CD
-DD26A6B8B67277DFCC46855EB23EE26492311CF9A8DC0C39241284284DEEA02F
-4F358E3A47A2D5A7B349A22E46BFF61BADBE1C86E111B50E7297459F0F18FA3D
-CE461031BAC0D1DA78AC387DE0EA454005598217978529D5089EACB059D99642
-5DF928E23215B6E5DAA35DAEC505AE112EB1F8E127898FBEE7C8A54EDD0C2ED8
-C75AE6DA5BDC0BB86086AB7E64DE8EF6A1495D81ED8DE1A59796769164CD417B
-46C45C9A3686C7A8FCCAD6F7BEBBCE514655FFFA6228A8312A5BC50538DC2CCD
-3E59DD99D6E4147DE8F3983B031C03D07125107E20604545A43BD7880D3423C3
-5E0261158F004423D18607C2BF0A39BCB65A685BCF2A391FBA8844C3ACC37067
-64B2803C5FDC03D43668E31489BA7004B06E7C4C874834586ECF7B00035DB428
-E4421E6A6651393FCA5057DD05AF837AC75AFA4106B354F3026710B5E101CE9D
-830602A5D6704780155DE76792D9A3F2EAEE4734B3E1E87C85801C50834DFBC1
-DB501193CFA6763795F2387BE9218F33072ACF3DDEB08946119F3C9B71AB2F1F
-D1FA74C1AABC8668A8770B120DC488F988F68F08FBF4DD6B44104673D927A39F
-27E00683A10FA6322F30244431EC032DE80300F6E55414BAF8BE15C308F95A89
-E3665655592F74B91FD7F71B7638CA14E0E1C273FAD0B9F84BE5FCF3533DEE1C
-9E8E5A654EC3ED9693A38BF2617C0367229D6FDA89B2288827B98A8917C65D11
-5F47124E457C20FAFABA69E18044169FEFEAF870ABEBBF08BCE5F3C7E1EF8970
-66B5B5AB84F3AC7EB3E55C9546DD38C096F7221AC728ABA58FE76FF090164587
-45C0C6C83A858307703AF33E31ECBD76350C9408454F90C04E9F106B659DD02D
-5824BAC124F4547215C3A1CC3D38CCB90765731744736903F24271B9D8D3BE66
-5790DEA93EBF0C8E5EC7F70721C00205BAF4C7BB4B6637F5C4CB0F2858A7E1F8
-93F56B29E08B5CB9185433A3CD281F9AC60576DD1BC993C08D61111347350861
-783244234AB06A2B5F94134721164E3F09296B2CC51D09C1CF55211160A43837
-3210EFC0B9892BFFC4BA6F4B37F9084382E4C8329C564DC321A88A4AEEE84812
-2863DF387D3FD8F5752305598E941412CFC362BD40C1B3F30B42BE007C52DEF6
-0570FAEB855BD314989DA4590AD1D4A89BE78DAF819D776F9ECA616B88FFB866
-7A0E1F09D20849ACAA5D08DF3C31ACCCB086F55B75310685D4E3ACAED8B1A467
-706F72366FE39727DEDC6DBA504D24D9736EAE848E97C61131FABF70740BA88D
-50125D6E12D3AF5644475779C0EF186EFC4A63FACA5D8A2A40BBC627FB743DF8
-6B2E912FE4499B9D5FB2A75DD37A900A01FAC066796BDBA13C9E32B86F5C272B
-4B0480D4FFF49C5097C7590BEEB0224C91ABBCCCFF307BDEFA90E08446BBCA0D
-3AE04D1B6B27D672617C8F9F88083E172CA368109A7C982B5B696F74FC9AA09F
-E1C83A6ADF5A458985D9521953259835D0AE78E1E5F46F4A22F4CC5766EC5220
-CD8E11FB08D53D5F37AEB5E88E48D20BF8CC58E870A59B125059639581432D34
-99943D762D20ABC4D1D3DB1E97744753DF3B3C975952D6FBF22C0A2BE79551EB
-3F63FB6F3F4D95BE06A9C776E7F1FDCE2318EBAF88D9F39CD438EFF576D905E6
-EB8984AFB3975CBF69A86E7D7585BC830EF5E23E069147106302D1EE530340F8
-347DB627B7A0BA0A446225E964EFE1727EF63CDF7D015C3874D92B642CA3A4C2
-BC20830B3475098718D29588F44504B7BBA9B3114A312EACFFE8087F1CAA7273
-7C85F63CB022B89433E2FD51F24F08F0026CC3718CFB2E80D116EE6F2F970918
-B40D5CD8FAFD1B3521C30FBA07E165F6EFF498A37E458C3C2748F8B76FB6DEC0
-E544DDE2A0EB0E8E13FE9F6BFE93419830E428C5D359470838FB7C28317488B4
-531ADE2C830507F77705AD6891DD9A9FB229D08EF1AD6320CBFD44AEDF48F270
-A5E44BC0FD3AAF090D3AC47AF8E60C24F39E1AA2187387CB1E2E95AFF46D6035
-AF7305F28FF3FF34232E62610F4A042BEA25E6DB4C13311FB2373405683C31EC
-AF28B816DC2DE3A755FA83BA05B76F3A9FFC64402CB2B1FD8DDE4503FB0FAA6C
-487A0E98B5FA21D2D0E0C08E95D4853C6B94FA64420B4156F604EC2904AF7517
-D37608E12E15E4A0694B6D156D042DCF390D2FBA766FEAC58202134C2D830D5B
-6C73AA9ACCEACC970166FFDBCDE630296CD3B2EA3E358F2B664CE2C483157344
-22E31B86E17E87BE0D226E3CAC1E28FCA18E0BDDAAA4911B4B0CFC1611DE0D36
-9476DA0B14A81808160D1AF72B3596CD9D52F422E49ADB32631337F434445CCE
-79AC26BEE9593567E6D3EF1C34F0EB319113EB747A222A9BF802502AB151E8D4
-F7D855C4722B69A5C273C55BEBE22C6EFDF368E7A8C96CF52633BFC5D8DFBFB8
-4D1869FCF68D5F12805505EF0AFD01C3363A2761E074C8F1B65CFCC31676E8CF
-49DAADA1DC8A4083EDAA612B511D11EBB48C8AA68B46C9BE82F02111BCE83751
-4B898EF55DEB2B08C623F6BE1116532AD67AEFE0AC912B6B6A0CD5DF0AE34305
-3E0A6399F9583688D9A6CC489D3A78C6E91E231AB397870A35772B4B3E2A21B6
-323D8D4C0EA2E90AF4F1733AE639682987390BA69229A5B1250C707D7968C24E
-FD0A41618549071E30C3B9D52726B19169E57944B1B308DCC548D33C37112BD7
-F40D3E924A44344EE55DABFDB38BD54527D69F0143F1531CAC341E2F6DD01E1C
-2ADF7600DA63A36382CF208CC0A66BAE48C602264F24E531A15167B91BB7AF0E
-1C26FFBD08B83BA63CB1AA44C10EFB8BA65C69B6E7D1F9E31E59FA199DE21D04
-214497337A255731A41A1007A9467588B8970A4DBA19A82B5AB3F1A625F41986
-F30D0FF266F1B01E6C7122CFE08644615006345390CDDC83DC092E21BCA8A10C
-FC90B8BD2840189AED7E8454F2892A27A5F1EDAF3DCFBBD0B6B70E0D9382005A
-453216284D819AE346D6625BBA0649CB036993C81BC8DE47DC0E7A842229D11E
-CFCF6B6529AFB2982269BD9749D705DA9C50EEED1E170DCEA5FD8911DFACF3EC
-B611B64A8E5F0E6C832442937EEC88C846E5D1FF75F727D46A06985171BB644F
-CC176EF60C923F702D7DB188BE640A0576235B348185B1FE7BD4ADCD3672D721
-27D2C69A59DBB5DAE9B8D0D4FF08307C836C96966BC34AB4B86291E5128293C1
-BCEE06A9753BD16B7A46BD446B44A0D13DC6430C035812F0F7DA4AFD0D28F149
-CA679E12FD6B84FADDA55BEE84925D5C31AB08AFC3CB7405AAF3401BAABAA91E
-DCF901F1C02D33C3067F2C70A7ACFC4C64D6028079AA8E034EF5A5827DA7BC27
-EFCCC8D9BC327FC1C7A28391DBC107055EB1E72AF7D7C5B2A0FF5FE8B87FC6EE
-E8719B150520D46D80A7D04129A78B5D4352885EC2F0F00571842ED025FBCA12
-CECDD3C8872BE5A946C227D13DE562E04B14B0E8662A86E99FD207F7CC7C03A9
-10E7D4BCF20403E31BA872D19D919A2E62878D85A722A7FDF6C9647077560503
-80E15736CC7A15C036E0E393D40EB0869E04875142A7A785270E445ED15A0D31
-79682041D4E06BD186ADA99B1114D20BC49EAAB01165403C71FE0753F1DAF1BB
-CCEEE569B7F35D05AD3A350914F18543F58B4217653FC1DC4E11B6B4F551F3C3
-EE7B4E155E96360ECCE1725A52E092247A7122D2CEB207C4515E161C6C7DF458
-4CDB8A7D169013D0B88DEA979C0FC29B0823BC382FE5A0A652ADC92C205B2BE1
-E56E7F8A6C2CA338DAB9207C4B34D6BFA688651F33A4AC17B9E4E233677ACC38
-819100D84A65658C0D534EFA1E4CD6711BF1FD9A3D8ECE96330E30D98D1DCDB6
-9ECB183FC19F36D5557E8CDE45A7DEA5F2DBB7B39FB12655900B54383E159B38
-BA15EE7BDE96EE0FCA3826ECED79205EF09EC5D22B45E9ADFD8BD63A930BD880
-A257596D32D565B22EA79873AFE995AE22D80CFBD17493103EC15203DD451D77
-9E5FF077766122DFA39C19A75F725249C5FD6F6172DAB38104C8D9EF17C59976
-2608766EEA72D15D016A14B61224D3B7E036BAD6DF9303C09D0303F938190A9D
-896E2C51DA6F4BAB7E4125FDD6BD7F9E8F53A7B2BF06767D34539156BAD603B8
-0FC62ABC3AE2E2F87FC4A2A02493840EF44EEEE69B4CDBAF94E5F47469A788B2
-7DD2B0F561FEE6AF0B9A3A32B4398EF8385B45D44B093E507054F87483CC7A65
-54DE0F2D372E93AD7767460E35450ADAA100B66A55774D603E80E977F2CBDAFF
-48D50247FCD4A9745C549BDEA2A3A484970AB11C148047C070A67766ADDAA645
-A0E69F0A798522A9DBC96C5A3DD2095ADE685AD822A19904F07BC9F124303FDD
-2AB94120A04B8451843E2E17D77AB45AA4CC5EB54D656D04EB50408019EB5823
-B09E7E03A1FC293CDCFFE0AE30AE4F10A674FA76B89F1C77E0F1D1BE8D7D6340
-7D2B3B34817F51067AA93013B2807465E774D3684CBE3461EA7077CB7D3098ED
-B90F319B4245D49EA0C0E941180CD5DD6E5C7EA09FCEA5BEABCBE65F172EB8CA
-FD3ECA8939644924DDFF6563CDE2104B71321DB5621BE2BB04A47C9AE0B4C089
-1CDEA1F22ACA1AC6D51E2BFDE746AC5AAAF50E6EA8AF1A8511F3174561C72D77
-3E31FD25760D29E06BFC439EFD31742A1CA3D80286BEE71D52541FDF1A4562DA
-086C6E8FCE2144148757F04199D70F1F5C815167086A7D2425ADF1B847669F22
-70D989E9FF76C9B8A78E83359924C0A0B71C0839D813FCF5AE63F122A4B29460
-354A69963C86F84B2C45271FD4A55D17EC3AAF29CC912F17BAA000B6AC6C1F8C
-16F49AD587D291B5FAE5CFA1C14248CF27C26D7041C10BB062153AB19C533A7D
-36DD9F4FAEC118D7F6BE81AC93E5DB9D518D363D2EC9CCA6680DE4CAA10E0853
-8AF5620B8126F7CED1C74902DBDD7C57FC66FFC8D9161D81B4D8ED83396CB0B6
-969124F5DEB10BB2CF08941FD99C12730F943A156ABD9474E00CF928EF98A85D
-4A54CB66168C6353F8AA45E91E303EA35F9A2F9ED1934F01044E8AFF92F6FC5E
-23234178CED72963406AB794EF3EF1CC77065B0C34B61ED9B8FB9E012B932B1E
-C571D76EDAAC5F5D1824D33F3B1870ACE8511C58380CB1EC520251FCE68CF0CA
-CA867B41EA77DC779335472A31CA940D5AF95226E6DB5CAD012718519743F5CC
-953F4C54096155E5208D976A95F949ECD1F60CED24153087E43B5C9852705C63
-48A34256DE0CB89A7D3D8672975F67115106B253ED23F3F047F58B28FFB51C95
-FA8DC5EE05936CE3FA9DA0FCB262B1352559BA47A777CF7FE5203ED95715BB7C
-CCAA97D93652BD828F28E0121EEE2636559DBEAC5C1232C9328E59D95F7860D4
-E41D8A0CBF0DACD52496D758AEBFBD49FC98786A65FFB437F8F771A68AC6ED14
-6ECBADA8180624157386803078C0ECB02BB7B932C39F6DC6E8AAC9332564795F
-5230E53F828495C18360B7B3EC221247BEB7442A5EDF74227BAE75A00C20FAF8
-573E01A5877EB85DE496E36AB3794AD3515D2AC9E13A955FE19B1F3DEC1E4455
-D5ADC17D98EC3C2A9EB4551DD05C6397F9B929DA17A93CDA0960657C6F86118F
-393755BFD5E968BE8D0C2ABA8CFABA4FF46921C939C3FBB3B32E00F768796DA9
-35B2042C3A83A5FC05ADBBC1A9867CC706272F852B26733ED874A8DE1548B87D
-9D603FD4CF61EB969433D53A0066F12EC6B931383A848AB71DF468E6A1C34FDF
-72321140796702414E04E0ABD984300B9F9D22F16E401892E6184A67B9434AD1
-23C83EDBE48F392B49251F6206E84CE8360F241D651A7F9B62B5DCB8F0DF22F0
-AD6ABD8F2B9E908367FEE467160E89680B9378F57D243DA04C1434FFED253524
-D0F308D1F311F33DCF829E3B5BA0F07C3EB16C2DB9CE9FAA111C0DC01AEEF1CD
-FC2A587D9A041DCEEAECB101F1D597CD36FBF647C015B062DE5858F96DC10F74
-1021A06EB06F283820B5C0E62DE4671F72985444AE2C17AC2232E6E49B9BA13E
-2DFAB0EB4B2B24EFF70A777E892F5B7B7C44153BA6C7AA19FC1315A857F1E564
-93990DDDC452691ACC8A681EB658AC0B7C823B7D3A8CB995B30CA3C44C352D0D
-C4E253B3B694EBB74568E08479B87FDFC05F239297733C494FF8C3BB84558666
-316BB7B1969B523A58AB2FF029F806A05B72F6CE07083F9555D982058E10DA3D
-ED21DA3E40F1E9CA9B6428984A7DFACBD366591AABB0DA6E17F401BF99E2829E
-C89A71F2AFAD41C3EF856A40473E9C463FD6896C5D2148029F4FAC4C14C92E13
-A8FA2A50EF4C33EE9E1BD5C61083DE92CB45F426BC5A58CEAE29E823A8652F19
-CF88A03CAF9D697FBDBD8CBA47402061EDC788BF7A89521C86128CE4B4CD0D13
-4C7B36766649B401B0D10B686F04711890C1AC5997F2B2D2E0F3D2C8D7DBB266
-BBC730A2502FFB7E922F57CF8F52B3583873440D139B22FAF276FEB94F75D912
-EF6CFAF3C580F26DB6FBEFCF66A1D4016608E387F69B424D841E4A2DFC840FF4
-6497E03BDEE98DB3D397146532B82B54549CDC76D79B8A1CF1B492207AA39B5C
-C68A13CBDC69BAFAB217AC5A76CF46F20E2903EBD232639EA413005776B1CDB6
-76EB3E52310A2D99A5CBCEC16209F5218D91DE873B767DF5A35819F00B3CDAD0
-548FBA1EA519D97B3D2A9F09330376D70E07C8FA0E38254EC50DD93473F86E99
-AC7021540D5CDF0AA97F7417B80E238C1AECC55286582FA4388218AB1FDFB4D2
-61B982926FD6CA5E1F3750C7DFCDD5715869092DBDE4DB0164E551567DC87E7B
-003A41EAF47463A0F677BBD3ADCF4709E08ACA108BD076CE993068A6431ED97A
-4181BEA89CCFD7BDBBFC892C0F4D15A75FE208DDFFFDB1544062658D9A587ED6
-E000F66A1F17080D187A6D8E6527B89E10551AF1F8FEA3AA87384AF4664BE52D
-13FCA2C0081613F0CD796CEEB06D03C2BCC2E42C8C1B4D7B23DA0DFA7C84997D
-5556977DF44F7224D82CA9DEFFA4A27569C6ACC8AD127D4A39AC6684040E6799
-1EFB7A0F795F7AB18C9702D352A5A9BA8D7FE7CA709DFAB6DB9155D2D1368A12
-90145D1809E05625C37C0D71E23D0561D47195232FAA5970265F588C82A6DA50
-26A66D7CA3ABABA6B937C469583B7B1237AE6DA66DBE7E91B4E80AC1FF8F6945
-4FF694AA6D9C3B25029FBDBE37453274D6BE1A7914C8EB57EFDA0C92559F3FEC
-72F8E3CE874AFD49FB15BA8E522D8CFDE1C69A840BF0D7E45784642F6680C1BA
-894BFD16D7DF40FBD111DB9DF3AACD08AA4EB01BE973C98F6F3AF457AE31C452
-0008841418CDBCC2C21339EE42E41ADB6C62ECDEA8BEF8A483402CD363454F66
-BBBE0C2DECDC90307A59EF912EC8E4CA6C14993FD67D33954F623BEDDBBFED3F
-09C23C55596B72BD878BF68B557A25A25AFEE1A3C605DE39DCA0D586A081E263
-4FE2F07228ACC92DE650259A2DE812D1FA36527BECF5DE7AE586123DFFB29942
-0E931039D95774E0E961732ACCF261193350DC60116E8C469BC5482B51E717B0
-730A03A27EC79ECDD9306DEA21534D2804C745F45CE4B113F20D1CBF8458684A
-3462795E7901BCFAD90E2812654EA2966C9064FA05DC20151EB8971CDB9291FE
-CB6F8A18F05E30EB7BBCC169205D5FF17DC78FF18324EF97E647F64D73F0263A
-69C2D2D49119E36D310749ACCEC23F2F435B967598FB71D4AE7465AE82F9C4BB
-F5C980CBB9C08C9E867073726625B84569ACF09E2D4B7A62E3C824631BEFE27D
-54C2D8E5B8511F987E96279EC67672ADAC8A55FD95346A89A5E98273E6805C84
-94BAB7BFD758AB05D898EB55947C52B6888D6B16FF3C4F4EBAB8D03BFF4773CE
-85A1C9C1FFEA6736CD22E099515496C142D4841450C6493C39308469BB4CD63F
-CADD4660AF12E09176818321D89D6250962D0ADD925E6360A12E4459F8A35FAE
-4B2E60ACA34F95BC7D9F51EAEF17E005D85ACA444093DF4CB08976421B9D41C9
-0DD437FEF4E85C68CEEE5C0DBEB7BE7750075ADADD6F53A7D44C3E4457AAE62E
-C917BD7DFC8E76A0520AC474570DDA5D3B816720DC627DFEE065BF1007129438
-875D9ABD264033847491D43C9A9711714AD90BC5FF3CB9D32D14C143991C090D
-0E8430AD22ED7992451FDA1E5179FE72472FEB568C83138A47F0277C81857F8D
-F44A93B07ABC2E874AF2E8ECECBDB9FE26164CE6A7A5DE4DF18648447751EA97
-AE6F927FE9090BD42FB13C65ADA216AB7D33C6BCC127F42503E6E90C17653751
-79D3FD5583E815AE0440DE02F41042D91FBAF80F7289E7E4F4959EE4E7C6222B
-6D23CD8C79736E8325A50A4C9FE3A35CEE9BAF5F51C02932F8FEC830B38F0240
-B502334C036F4E1BA4367161E7AB3D4E36F4A2BC9C8B5D37F4527AB9BBBDB585
-F8A078
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSS10
-%!PS-AdobeFont-1.0: CMSS10 003.002
-%%Title: CMSS10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSS10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup
-/UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSS10 def
-/FontBBox {-61 -250 999 759 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSS10.) readonly def
-/FullName (CMSS10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 40 /parenleft put
-dup 41 /parenright put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
-7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
-DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
-511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
-1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
-028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
-1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48
-63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3
-274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F
-388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B
-E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D
-AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4
-154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B
-4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200
-29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5
-CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5
-C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16
-131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682
-302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575
-F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378
-AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49
-28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18
-121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A
-A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D
-8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7
-69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7
-BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960
-C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92
-B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8
-8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01
-161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565
-F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E
-A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14
-0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674
-D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169
-B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434
-DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5
-261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA
-B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2
-64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038
-F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29
-AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3
-CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF
-5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091
-73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5
-A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D
-EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F
-1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6
-D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C
-13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7
-C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8
-08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220
-B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3
-23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA
-56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788
-2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB
-DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE
-3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D
-5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D
-9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5
-2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7
-F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB
-73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5
-B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007
-11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7
-03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE
-F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7
-5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1
-60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7
-622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F
-BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5
-C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16
-8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474
-1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647
-F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F
-D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE
-257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA
-7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315
-611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4
-246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97
-E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698
-AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1
-EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68
-0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A
-94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120
-73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680
-AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443
-8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070
-5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE
-6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28
-B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378
-129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B
-AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB
-8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C
-B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6
-753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD
-A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4
-93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE
-207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433
-3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26
-7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80
-D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825
-09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C
-5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105
-B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29
-E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26
-C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90
-F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9
-7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989
-99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A
-96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982
-1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B
-48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F
-4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A
-45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3
-D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81
-838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794
-5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA
-ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200
-DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF
-E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240
-5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5
-46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D
-491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A
-DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318
-F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B
-0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287
-EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298
-E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0
-0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD
-ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D
-8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C
-8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741
-A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447
-4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1
-AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C
-2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780
-14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A
-647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E
-6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6
-4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36
-D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD
-60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627
-4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289
-BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0
-1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194
-6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE
-65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF
-D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7
-6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9
-85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC
-7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853
-BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4
-9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440
-6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3
-2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A
-374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336
-39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6
-AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F
-1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8
-E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6
-AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD
-B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684
-CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF
-9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3
-DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441
-670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD
-99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B
-8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900
-E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A
-F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1
-DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2
-99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E
-DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF
-51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A
-40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5
-AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977
-DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093
-8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2
-BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49
-BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A
-0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0
-4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A
-8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E
-5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C
-7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E
-4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC
-717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1
-FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37
-25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0
-
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT10
-%!PS-AdobeFont-1.0: CMTT10 003.002
-%%Title: CMTT10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
-/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT10 def
-/FontBBox {-4 -233 537 696 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 55 /seven put
-dup 56 /eight put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
-7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
-6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
-14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
-0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
-3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
-BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
-D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
-FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
-556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
-8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
-F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
-B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
-125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
-A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
-4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
-56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
-E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
-15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
-2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
-05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
-6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
-04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
-C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
-70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
-4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
-A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
-62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
-240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
-69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
-ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
-121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
-0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
-D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
-0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
-D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
-550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
-CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
-9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
-FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
-7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
-E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
-50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
-2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
-9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
-44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
-49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
-385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
-8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
-6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
-EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
-E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
-C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
-484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
-4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
-0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
-6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
-5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
-1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
-909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
-BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
-CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
-2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
-CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
-EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
-0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
-9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
-D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
-21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
-7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
-52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
-FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
-AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
-F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
-067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
-E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
-C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
-5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
-0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
-CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
-2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
-E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
-56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
-F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
-E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
-0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
-67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
-EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
-CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
-9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
-9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
-C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
-327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
-F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
-60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
-A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
-B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
-0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
-1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
-DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
-55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
-7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
-75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
-E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
-8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
-F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
-8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
-D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
-54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
-49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
-CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
-34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
-1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
-6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
-DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
-E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
-4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
-2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
-ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
-3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
-97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
-FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
-A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
-639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
-D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
-E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
-1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
-A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
-F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
-5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
-4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
-664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
-4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
-35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
-1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
-01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
-5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
-2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
-DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
-BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
-39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
-C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
-99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
-7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
-D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
-6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
-5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
-6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
-F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
-E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
-39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
-7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
-ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
-6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
-2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
-1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
-06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
-5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
-288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
-7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
-759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
-E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
-03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
-6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
-314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
-74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
-906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
-673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
-A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
-931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
-CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
-E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
-4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
-2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
-F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
-E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
-E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
-251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
-7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
-46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
-E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
-DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
-F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
-507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
-46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49
-2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C
-C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23
-CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176
-57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
-788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
-A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
-C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56
-0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E
-2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D
-1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE
-3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA
-B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1
-3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0
-9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF
-FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B
-7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA
-B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A
-0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2
-F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E
-A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD
-5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C
-38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3
-C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A
-B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4
-16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278
-C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F
-16880A993EA9BF5FE7C0220D844C5920A2C334ED030FE2D062F8549508589F66
-66B2E4F66E249A01BE6CC56E73AB21117213B7502DAE7A2CDC2D8788C24F8F40
-74B96C17464510BE4F2543E536BB32E943522E9113DFBB56096A34BCF507E7A1
-B17451E6AF90ECD2A3E0234FF01F93BF0BF1300FAC48AFAA064419428256019A
-A55C94130C7A4AF9ED17AF615FFC9C10517B0D210C464C8C0E2B344B31D33886
-5264577F17CD7137CCED2612E1B01DBC93A98CDCC6C83A858307703AE11DF924
-BABC5FDE240C80CB0B4DE1672AD86C9BC4773E95182C70A6E809D336B71E25E5
-17C60BC4C8182FC222EFE5419EEAAB8CB1C04750631F7B4846D75651244286A3
-3F87AC81C3DE5937D4545937DF166D02B0505EEF1F744A2A955DBA5AE1FD8453
-8E3AC7E38B333C7A741A58472B543C870CD2885E812FC88DC0E3A56D3340144C
-B6EF013F04707315145E4B41142BB00A2BE5F6D17EDD30DFCBEA3F099010C431
-E2D5BD261DCE594B5E0FF7F1E836E88494B7489BABC9A230A7324E122F40DA62
-08922179B7EDF55176E4D11F985E6F3CE8B6695BBCCFF8AD96CCE92C0CE3E8D9
-C27F103747346DE482B3A922A19BFC5E18C3556B48BF53EDCE941744C43EF096
-E36866CF42D145087DE6A41F205D04A802E2E26EBA56BE4BE182B460E8A7DF98
-8C160EEF6FFA866EE54AA2541B1595F5B1D0104BCB313E5C886A0519311E2413
-CC40CF96EF3E05CCAF796A3FD36BEE034878238A40C77C6205904A9ABC8CCC9C
-7E1AA1FEAE4732BE0FCB9BFF9044486A232D39745885AF66470F281F7CD076F3
-B11CEB70BC1215D944D65357D0967F83E13EBBABB3576B89AB755A14A4A8D292
-5FAE31DDBE3999E4EAE54E5892C6087C4B6436DEE581FAFD1F33A8DB8000B5F0
-F644C655674DEF2BAB3105EA12B5550286FC001F5BA1A63F46E30A2EE663C24C
-F5390CF05D72727D7AF09433ED15A112E199447E0C516C8D2E535D38F5EFF96C
-763F51F7A8656D90DA6AD7199EC102AFC5D65DFC505E51E7EEA199D39C2CDF80
-B2CE3E35B688B79D566F1737C588D9CBBAD02F9782C7DB3439DD85BEAD21C70C
-5628EA55B38F9D2BEFA897974E09C2413E9C51A2400BB2364D650BF71637E7E2
-99DF9E4BC127FB7367DD9F74FEC16E339B19FB70A20A4A2E4874E110880294CA
-C90712CF08AD98C8532E3B730962F63C8F8D3DA209A0E23FA25DD02421B4D4B1
-DFAF5D3548FE36B0A1637ADE5CCD1672FBD40A3D1CDBB9499B4C660A27F619AB
-C06F37FD8EBE08C838060031735E43E74F649456956B785270C84C96EFA7C5FE
-2404D77480F5FEE892AF6534497C7AF401A5C9AD95B4B4D186076AB0A32315E4
-E6D7185675405E6E483571A3CBA6EF76403567F282B2AA8FFE99D988D612DEBF
-7ABD96797B6404CB5CD95D39464213DF90944C3ED33778F3EE4FCBB1A5F961E7
-9714553A81472BFF2052561C22720C0C8493D1B2FE75019255AA8014F437FFBF
-380BD498D02D7FA6904B4BC147C8D75C4863DCEAD5EA7E6FF41C609583BB7E99
-03ECAE65264FD63E13191FBC5B26E034651B737000E6B894C373B58DF4002F04
-E2F7ED898A9B029B671A19934263D92A0B8E3F7594FC90F62F937842E614689A
-238062D2BFB7C44482AF7C1556760125086F34A76C83B27717F322D190D30308
-EBD2A7BAC65B74105193942208DD78056DD569B2BA9FD4066A78DFB0316C1DDF
-C1B960A6AE6BFD9F7136870100916A9F8598C1647E1A9F86A26A83111433584C
-D0F4804BA5C3754AA9C93A9054C4591D38CC05AD1433EE5318458AEBD77ACA20
-5B1FC97F62B5A90E3B75C7A15FBF4EA4B0A8D1134E117D38C82781A68A3EE04B
-80DB2BE38196EFB1CFD47A5DC9874A15F21D156A23DAF2C7D31147D76599F8FD
-4A575532AD29F7203964BE4C153AC914516D33A54F97B9BA83562DB89D40DBF3
-4AA7BE547EEF84D1917B9620FCE9E5FC8771BA045C6BA72DC3CEA88BC85FCE2C
-BD04E17AE45A9D871930CC49F4F93447F43312888794162962428B915A6DF5EE
-0758D1D24AEB9792A9AED3489EA635140874BA43FD7FCD56103FECC4F4306C09
-8F06A031F5C639184AFB5C97A5ED69D6A974D6BA2144B4ADCE8F1285ECE7AA41
-BE46EB5473C5E6327ED45E1BD5D2721856E2751E85112A44A04F54556B41DBBC
-224A1C1C434FC53BFE371231544C64E64BEF27AC008BD468B51708C46ADA959D
-68C73A16515F09230DEAA0408245960D54D12C1E3AA868E5DDD8ABCAC5363927
-4C6EBFAE8F7B31C89BB7E1196C4C9FC9AF846006E838F7245B134766D83698D0
-85E95121BFAF5669E54B918FB792E8F7EAD1FD1EFAEB2AC98A1144F4A2081500
-2FE1E7CD3E1FFF00BD79CCEBC18EB0552EA5776E6A52E1AA30E3CA1FCBEF057D
-EFE38381A5E9A53B3ED386008C162188E393E81EEFCE3D59300CB1E5845150C9
-35D129A662146D504FC1DC23DB26E958D628DD312A2682654356C3F3221269FA
-A8725F1D52B5CFD7ED9FCBD8F4D2CF53CD7FF2BF435E75732BD9868155B6A9FD
-4511BEB18944423CAF5B2FE4EE6AB1CCE21927537FF3ACFE2D3344A471FEFB32
-D3E944E0DF6115BA76E5FD1C6141FE96C397B59F7D3270A605727DCAF2BC0D4A
-AE8D84FDEA284931A6DD9AFF9CA3AF16D21187533B45F77515F6FA432FCF53C7
-DCFE593148D2286D448A5922B774F0200EE756E982B3B4F8050D93E031488398
-8BF46569A6B233A0B2AC6DF78385C9A649DE07BE3CCF13DF7DDFE5F163D523AE
-46077B52147BC1C7BA80BA33607004F0B289CAB47DCADC7466F743973A546CEC
-939AB3A938BB362C529C4F71232FB9341EFF9A7CDDFB740BEB573F009E19E9AB
-79AFECE39A6D28F0A70937175399A045C2C1AB3DCA0ECB1F7167D07440F53910
-B8123E6C1E5EF4F5A1FDDF00D1AADBBA2182D35624A8170D346E40B117781931
-C79988553558F7696EFF44C0A4FBE8058D7A94F0E7C8C8B584E6790D59CDAEBA
-5B634EBB57DEF241E9823194818E6DE24985F2AE341E878C9665827155CC918D
-7C3CF4E508303382907BAE5DBFF39C75A49103AC5E604FF20C2649C30A70BC1A
-63B54D38C541D76E7616B6132C94D9366ABECB27D33CEE252FD573BE533721BB
-4311CB5557376E17EC4952692396BA291A5E593396441707B48037A84F515C13
-C58D372418B8DA762B731A8B15BA74837F2A6A1A1446289B247E7A6F05081B32
-E928FA2A972826D39C4A2CBB68274054BD284EC26411D07CE7BC2D06D64E2690
-C724C07CD5BC7F2DE4859F83F548DC0CCA56B9FE4E1DDC62E4B943B9F395508F
-F98E980279D2E7C13DE18A22A76CFF59814F2FFCE93978552A0F4E01D78B3C01
-B45A9CF8FDEB42A166A0E7678201526CF4773259EAED7B4099865DB5AB295C98
-FCBB1521D8624B87EE1CAC6B9B460E76D4B4E4D0A4BD69CA06A02D9AE0DC14D5
-55C47B7FA78A0BC299545C89FCD1A5449D45FAC62E38A42319DC318AC386563E
-4CFA1E3E137ABEF3EA7D9DCBC7BCE914902EC7D7B1AE6C9E19E739EBF1BCBDB9
-983829702832E22044F9A5B475718374F1A60FA48508D815F6810008C1299759
-EC776C0E70ACE3F719FE1E9DD554CABCE3937F54F38D5CC3C1392070A07964F4
-26B7CB30915F7586B31C04BAA3CA5EF956DA352C6A8A2A1356924727A8EB829A
-48C9A8894D29C2C196C0B731B6724BBBD84FBB94AC9B9DC80C435C5387D625AB
-6538076BECB3C21D19FAB3551075687E1C43CDD9BE49CC506D3423B5C2A6754D
-87CA10D3686A4FCA91AE60466045A328F996EDDD3918E2F56C029D1992A2A1A2
-78B2E95B99C822822F3630378ABECE2C2318010BDD2A492E112602BA2E092693
-54DBFD0367AF9552B11E043BB544644B079ACEA1BA6123CAB40F9E7B2ABF6969
-A8BFED3FA9C3CD76CE6DA595C63956DD27A87F256A7801330F603F21DC8195DE
-04BE9EA43F308B2888F5EC1D51DD43C6B44363FD277DB689FA2FED1D4B587210
-3F2B7305713987C9FB5B6992F23646F5AA9DFC71C0B3B411CBF369315255C1DC
-BE9357E76156A356902148517DC6EEE64AABAFBF106ECF4E55485756C801AD0E
-81961033CFA0B2DE0B96B88B38DB562AC046F65F058682E139C0F882CD795096
-9557336AC81FB537E37CDBBEC64975FF3BFA899236778283770D540257D3524F
-8B5ABC38B9DD4A240502ED8AF2A7496295A793CA1D6CBA7C2C50E60880B73E96
-84E0E5C85B07EDA8DD48A8249D6EE25273D3510333287C71DD0ED8032EE04848
-0410C1E0785B071430F4053AEB3042D5B9C3E34E4B854D42EE5044DE5941DFE1
-AB6DE585C02B5FEC52F0C565E6A5635C377AA57607723A9D246639CF06A2F4EC
-90CEE93C2EA2C419F3AD9CAFEAA6B2ED3F2D4F9F6330FAC9972903786AC09B7B
-DD51932A1378BED9BD5434078442B9C13CF156FCB4060CF81F98D5EB8011DDBC
-049806FAEC29F3841CF0BAD050713FF0CA75F4058F86C388E179710300A21312
-72915D0C9DAE32B1D6C092A9E5990178E8A11C6A2B525E0D9E006C135D1BF185
-FC7A58576F23CDE582A0512E54798B634B2E5A06F4A107D2685EC1578583515D
-19230589279FB9BA66E6DFE827387C5FB1E491CE19739A4532C5CBE869174A29
-F1E27164210F9D924B835E9CFD9356643C3DFEFDD21D733DEAADE25DDF15EF88
-17A9360BB2281613734FF66126A90DB9AE008F6DAFAF9DCA23A882A38A0F478A
-E6465F8391002417637A87303A9168632C68A031EE4DEAB32D7E6FCA721FA484
-3D01D2877B2CE55A8F3665388FD2791200FE69D692EE6C266DCD65014A9BB1E9
-27C1F5E6857D5923F56D3AA916E50802FFBD561FB9894C1A75022818A6CD8EC7
-06DA976DD2609CF7023B0D2258311F321E064D956CB8D55C1A4CEE12254DD6EC
-68680A52FCD777EF99456BA60807741E0845C47E4F8A93E11F4CDBA611DC4B50
-3B5F83C5475663090CF0450893E076132C6D25147C260D4D731A03C715BB80DF
-727864AEA432A5C95E688313C1C62C95E154E00E5F00713D2B27E2F64F7200F2
-C52B3C95376242DB2233B50B988214FD47A88F3C4F15001EBBF541BE75CDC0E0
-D4087F5DCF70B0814207C43690D2D9A2AF382423515B7277E4D3A990D4CD0F25
-9BDBB2350A8ECDE52D641B901E94E524E9FE6612037EB6EAD9C3A887B45F3B02
-2F60C45F88E147512CD1D4A967AD6FFE126F3C4E92FE3117E38FB2A662D90B1E
-12C80B32C9C547C7EB719063E25157F726885481D0B2EC9472A0108693BE337C
-2D7EFFD1285B4F507316529357529D3245AE2D18A4DDAE37225D682D8D20574B
-0DAA73817D1B70CD37B2501CFD087C0DBD704C544DEDFE282788DE15703E9D81
-F5A1AE011E6DDAE53728D2FAF938EAB8ACAC0D07F32CE8E8C8E8C0262A76D9DE
-B533DA266E44B2A36DB0E19710EC9B9E99E9C1DB500D0D8A293EEC71628E9842
-A8CA8C99F9CC5B6B26E4C96F7D840C84D827299489D0F9C7E952A91F78EDFFDB
-83554679AD863C2C64DC49A33E74AA4F58DDEBC9807A92372E227EC0CACCA61C
-629C34C083A21F278CBD8747BBD7D00AFC2BB546FEE02DE9892EF88FAC0EADD0
-4EE10387D6386E77C462864180AC2F655ACA5903C751F060835DBC1F72AACF0B
-F4F48B83FC85E9A3EC662222907A796938C8CBB946801696FFD8630E897170A4
-759BC269834173D8EBDC70CB16EC918CC68DBC61D8A53EC5F6F63732FD4D7EC6
-234CFC1408CEE045CD2739C71BBD175368731CDF9CC19DB87B7B974FEE39BC9A
-80948277A9676968840537A4DAA22EA9D970FC096ADB6172577DC54FD7B57BA8
-7925FADBA77E5707C51B8EC45FE227B13966B45C39DCF0F315EB7A6149134803
-E18FB6CB61F252E09A7720804C6941615CD2B01FC5F8B8E12D3DD1D4984D0E16
-0E4E3342253C6CCF6EF407DF245C19FB550CAABF4A4F6B0E251D2EF04F18BFAB
-A10FFF86ED39BDDC366595AA6D4B1DABA39FBAD8620E7638FBF54E34A26487D6
-2EA281D9D2251055C510A401023A14F3B97193C2B038FFD1C728AD75A186721D
-23CE5865389B0E47DB6F3DCA265B878950B567895A10EDB5A6B3F3FCD30FAB63
-C6D09D90D2FB1C05D8839D0B4EC950006F996447840C8DC888EA71794A23C27D
-D77453DD43121B9B78FE67913896A0B65033060072CBE1992DCA145C1C88A88B
-B516B239797B9B709045266E742BF9907803FD36953C9299BF788D3BF01E9134
-9FEAE5F30EE1A8E7449093FDB9992D74493DAB0BA265D3974992F5D4ED79D6BF
-99EAAA95DFC89ECB4799BAEFC10012A5610194CA9DDDCDB009BD6436BF30B1B4
-401B2E4B6FC0EDF60FB188878A822073165F0E0399ACBC7E72770F960AC46061
-F89852A0205A8A7813450A60A16014AD433C45388A3166C15D900597B37DB638
-9DB6D76BFC3395CE83ABE084B5DF3E616D5E13CA29C7BC6C19737C4CFA04B514
-7727C2383D4DC36CFF04142A1425D1A420DAD27EC6A779FE4FA9E8E44B0A71AA
-2DB0DD4C5A4AD2EA39F0FCDBC0CFA81644CD6F86683FDB5D97E7FB3B4C5C9BF0
-C3F0E49BB2031EFCC6770FF520FC24631DF7DB8D2B5A7E672F6352ED95C3EF41
-80B53CB4780B779A2C870E935E1F774C2B83299A9FDD5447EE674A157B7B51A9
-DB721193CA4545B4EF0D312DF015F1491AAF251B16872B689C2938053BD3843C
-9E4B4DA7B1A9ED3DE85A2D848C5DD26F4B3D6CD96835915EE86169803C6ABA5D
-BC878F9502190EED465E574E5730EDCCA3B4D5FE7B1BFE3F5AF5FBB466475A0D
-E6D2724FB9C11AC63B3424F422DFFD3B72A168522CD943D7EF214A36B19F3C1F
-8FCD50591ACD2E4525078561EA379982D47A010D6B7C325E8566BB370E6188F9
-40F7934B2DCA11D58A5EA2A42FA79F8F5A69E4C8313E2ED201C6AA5E7FD5BA87
-3F819A807799AC8084E2FAE69516236284A571A5A3CEB8CD0A73AB1D67EDE888
-1A69184D68842D02BACC239C898DC171A8EA05B8D2811A865BFE2AFB428AB6FD
-012B295903DE73A0D3A393E0D9D766FF470401C335AD8623A5EDB7B0F35332AF
-CAD6E222B741973EB894361A862317BE692CD4B855E4042F7228A83C14CA28DB
-926EC8CC9BFFE3BF98AE8923E6B6BCB248663774FC2DA52C5FDD448A5B85BD76
-6493998AE13C84B4D8C1CA3FF66982244E7197928E8CB91C71D60CCF1F6BFF74
-1FBE8FC9E0285ED3AB5610393B7D11301D8945C71B3AD01F1E7F97E9BB9D8737
-C4D113FF9B84E8D84CF3D04C01AD7E9F586FCF5B20FC9662A5D6440478134FAC
-BC580FF2FDBCF7A494AD744A9289B8358D2A14F6DC4ADC0A343D857D2EDB65F3
-4D97B49CC92601B90D63C5650F895A2485A18617B7BC02EA2A9FF1E0D777F393
-D7A6DD6AE36E73BFCB74560E398583E0B716650B24FF5F54AA73346A01D76967
-97E8E1C8B6DB6B4BCB511EFF3237A40960F3EE230EA142EAED3F73CD0B13F23D
-A1D51F490DB90D37ECCEE52B9EC135E26F36E509535752FF6F9135A1DAC1AC81
-3701EE34956ED7BAD6C8CF1D70B9CAEE2644F94B10935F9DD1B03C5D356AC0AD
-0B6F327DA139D31FF65498675D193540EAEFC3FB8A119ADC74536C152DA82D2C
-0B523263DDC88E048ACC64DB32B259989488476CB0D351243A09A2BA6697D0B0
-6C8D52A51C0F631E9EEFEF3A2042A2EEBE5046FB670C75B4157F7B5AB507FD34
-6F52BCBA13FCDF4C923DDF9908ABBB26521FE2A7F9A0BAEB7EF7E82830E596BD
-6CB249A0F61C0FAAECEEBCF556846411E352F468F7F6B404B3BD3B92712D362C
-4A84545661FEE4B5FA52A7A7C461B9F7ACC3E8321B30068F609DA42857078152
-1A00EC0B51CDC27C8B505B00E49BD1439EF1C861173182EA5BC4CBEE7CF73255
-57E6AD9AEE58B43D54F6E22DB3B8F5F9D58EEB756B672547B521CB7D82E78B26
-32C27B3F93E5122482F87852C2F357E666AEEDDC369BB5DEA3E02EF8CC69DC4E
-31F677ADE63DE168D6A500055E06FF746F5FE59864319FB3E49DE62F5E2D7005
-596F22D88796164AD412D3B254E8D5F7E7CAE3EF1D35D67733BA291BADDE92CF
-70BADEBB6169228447DB4A99473D865A7E105DC43421491AB8563C62C215EBF1
-564E27BB8C008B2617DB934E0665D7208C441321AB5EFE9FF1743C357A9C2E5C
-4AF4039F16367C6B9837A08924300E6ABD2AB033C146DE6B2821DD9172E5D7F1
-53785578BB227092E8ED1BBB8E0CB70C2E23E640AF20828C09FDC2421ADA6DC8
-2D117F0E3DF208E70F00C9C410E8F77FB1221D1C07F6C25C1930D0F2DC601025
-EE0B877941CC9F82621D4712CB9DE0BAFFCCA38DB1CE1896D6A5FB876CE944CE
-97A297BF3468B264B32B7C8BDF5777F197F64EE9BD2C6676BA50752CFB9F5051
-3C14D6D0658F7D4841B9F3C47B9522E1696F32838ADB3E877FDF5339F6721A8C
-7F39D070D9912AAE0A69B6E1E27F4727513D78AD9F1128079E3100D0B559B179
-FBF88885A0681A7847F26D70D8F7A3286E4958DD615CED53147A5A50D06D55F6
-45808222273C6F6A972D49873290654057517F1E067197C5A863324BAE696A25
-F250DC419B5428EA0655E118F77B1545494C94EFA32D34434C0916BD6C62F9C1
-2506EC7CEE3456B012DEF7C87D19DCD3F197047F3C57B2391A238839884A3F19
-CC0B1814255F4DD8977E61513F7FADF4BB98315C72F84B4792243022B827DDA7
-FEF9E1434C631FBBD0CE34CCCF4CFC655D0F9BF1E22B91FA21D95C6AD6B0C098
-E987D92C862954B2CFD8E8CC0132432A40ADC155F8A0F97FC03B38B9738B4317
-CBDBB8E7B4BB929F6D39338AA69A5A11BE27316BE370800C82706772CE33E367
-29A80B24D41F520D993098C4B04F0F62F9C74679BC076706F0969545AD65D6B0
-44900379A36E940359B6BCDD0F3F5FB0A8F30BD5456EED4DF5CE72F7A7B93858
-14BE51729E4F8AA97DD6D134279E88C3EF28D61D7937837DF831BC8A314F2D3C
-1353E96806AE841A57EFAD644C8D884758880415F91E7683A88CA150493EC28D
-6C7272E3465DFC48645B2F722ABFC1943CEA4B5ABCF8D76C3D032F1B3264E7E5
-06690EFDEBE83EBF967085035A199297BBF94EB3D884AD4C0DFB476B85E6BFBF
-F69BCB9E57ED6753285C36AB62CB8C98E676D4D23C44416DFDA957CB93EF7E78
-8379C6328FD6711EB9B45D10681B56591EA22DB43DDEAFA65FFCFDA65075C6F1
-FF96A492130ECBCF265425FABDE849C62767F6B36895CCB19CF177B8BA4C7163
-D9DF847A42072F60B3911D8DA23A30D63C7FEE986F939CB35F7C47298D6596F8
-9BD7354FC35915C0CA8CF2A60F2DE21F355C74E605DBECE35A70FA12BDD3D915
-729B3D75FC8CEB2BF67DAC531BFD24A2E975375F85D7AC7CACCFBC62FE51F11F
-F877377CAA80F8FD8DEB1B1FA7C1ABC73B88D4ADEF4D045708657864418FB434
-7DAEE52F2E2AD61680B4E5E229C12EEAFCEF8184B3B03D16BCCFF6E0EACDE3D8
-CDC8D9185DC2672784EABC5E55C8F45AE77BD18C9FDC3189D24E3C93CA20A916
-1750AFEEB67F95016FCEE6BF60016FE2097AB01CA18B0EE0CEB254976858635D
-13D51A80F202A59A66B54E81972AB98BF9BC188EB653F43FD0EE5E7740487B5A
-6102C31D939943905FCCB91C95F54E69CEBB4F4A66027B2D03AE23F09D91B676
-4EAF654BBCB61F084EB153BFB0839D882ECDA35D1AC2C1863A3C5F0523FFB7A1
-A707C2D48E8B2F421A192E898960D888212D488816628740CD9F9FB6EE1DC21B
-82725168913244FE38347B234317F127026147CDB4BBF8BA9274C987193DBA07
-0DE6596DE26FAB1618D77E552AC34F71D0B77AD262314963C69EC171C1EA0706
-905BD2BAE70C9806CC263DC44FEFD2E7742538B2C62D782D6FE9AFB6464BD9F7
-7C537D1CB46E93F998D0AC153BFF65D71F72DD0FBC30E427C94BEA08A51FEDD0
-E9BC9C656715B761EED9E0DF6F1430BBC2F5FD6F2D5A31FEA89F7D3B8ACB3524
-56D36998729CB9EB6C464A709387869BB5D9062A5798B9C3F6906CA8E9C1A53C
-BAB4CFB6D6CBAFB766754CA2D15E927872427EDD9E73BD16C3BF4DCC479B7550
-1623FB8E04B11986EF4A3916248BA3328BBC2DF30E994B20ACD597FF14B91032
-274884EFFF7E94BDE8963D41E9CE9F192C84AA7B2FD2F6242B9828F54759ADBA
-352CECEE86152B06D785DF2781CB339BB1B1571FB31D18C3CC831B15736FB91B
-3C95834BF98DC3B42C9D32804F0E1B0418C30E944E103B1B381FA9B54CC41994
-78B4BFFE0445D1499C19B4577513B2324B7A3A752047C36449C2EAB3506DD87A
-A5A7FAE639C0A70E71A32DB71FF4D8C741A8FCA4A26C886DBB89AB5ED74F7B53
-025F00F3E5832CAD54696CEA99BF7D37950143F74A1A31B139374778438D0DCB
-75D125317E14B837147FAE2B7DC6BBDE62AEA6D74C7D8B2EACDEFFB5A61763E8
-5CD01EAB644B4FE0CE573B681C201BE621EF353ACB26BBC14DB249CFB079F488
-1ADF1C4E19CF04159792E40A5E63EB9DCFECFF901DE04D02604C195C315AC187
-34DB4F6C850E9BD424D3971CC3091A41D5B8F5020B3C79E72B99A1CAE66C959F
-55E4C6C1C1C34DCEB68E8806967C638D01E8103A6E886609E5276FC013ADB053
-AE2806AFD0E6CDAFF0D97E75AFF72A027F2817FEB32964ACD45FEA9534996A50
-53ABD80249F5890C69BA0D650BB7F0AEC076CC809EDA4BCD8265F334DB581361
-329C2530144ED7073D99EE1959AB477C6149B3A6547F024AF983BE69BDB9BF4D
-827728F2423F648185B1FC0AC9C7ACC727AD43FDB6B0D433C8172EB74B8B8AB1
-8C0C2C0357458E197A842358705883EC22E7162967172C0519820D5994DF9D7F
-D50B52AAE696F603985E3504742D31C0B69D77552E9396F18C71DEDA17BFFE67
-E1415DD4BD373819A33CBE990992973DA11CEFBE7B81DC910273B315B82B8861
-63B2E66BFC29A213D5526427B723B4856DFCF3559FD701F77857812B0C6C0FDC
-4AFFAC54B1CDF29E882BC2E2E9BA0319BB084DA04A82539AEABE7FB793B7AB28
-E755B8B1CB2F0EA0329B29816B127EEAB2E16B99B9FB1BCDC5ED2A5322F3A271
-99A1981B3212711FE1DCB32D0638EF932D00B3C04F896BF7DC7F67EF8F3DB82B
-0536D186F24BF7ED544AE148F24F6CD5D81059F55AB8E24128F755991F89CBFE
-75DB53CAD6129E392EDF60FAB2C90396568683A0C996C46358975676C6A8E3CE
-131C90FA98570DB4E576B4F669CDE352F19DF7652C97F2357C4C8F0716E5C290
-1354DBE5105A874C105F541DBFD7E6A63B1231BDB998EDC392678D1EF93183FB
-0815568798BDF68665F37205546A6528225B3B91B3A80C0F433C8888B45BFF9E
-A972D7C29B2647DF29806C4113613512C117061E7DE70F763D097A7CF236F371
-4BB3BFDE60B73EC884BDAD2E7864F24BED01210DA9F229F7A87D3CC0B3AEF75D
-D8B763EF2B7591B8D2CC201A635C82B771BFDB42FA533E321B587735AECDB3DB
-071FAEBC9ECB06F06A0EB364ED723D12EB6E7BB479AB013624ABD11060CFFFF3
-5FE5CC50E86F9224466913EC8167158FDFD81438BC1522685CDE8A038F0C8A35
-8AA1FA8E38ACEB99E18B55075D594DF39FF874DE7E7E6C95C677F35B2DF0F203
-B78369144DD99484A35F26414874463458FE0F6D2C63481260398F5FD319DED2
-19C9DE91CE63155DF12CE842E67B8DF8E61149FC4563C4ADC280E564505F0F80
-2B6CD6BCDEC7AC194C372BE1A4FBB457739A8AFC4A7727E37E2D3E5AA30E7461
-FD43AA99CF8EC08CF47CD67B820899D75935C6DFD775619CA2D52E4FE3A5B0E5
-3D1231BC641544611EB461A1991FC02E040C574272D428419F6D0AEF4285DD7E
-4731CBF498243B66ED76F66CE3F33DC996BD10334741D351DE2294D268EF045E
-CB360B89A5E9690FF21C91E396E686C67B5570A1FE2182A5E78DA735C70162F8
-E978C1E449853FA9B6494F2C38F5FF2A27F8E9DA96EFC069145C844402B0223C
-CAC1AAF9E74C8576E524A2E5F072DA0297AF5AE4F1B0F1E3BF24989DD836C057
-D18E755B8296E8402CEDD8F34A258ACC0D34D341ECA9889F4B2A06FB778D591B
-157DDC8D7F54A289F918E980C367E46575F05CB8C847000C6CFCC939867C78AF
-8A0980B0352250C063F3960D06E88A86694879A6DB159C2C5CF831ABD393A174
-C9BAB470B7EF87F10A5C3EBA5716279D525D51323BA98E262B1EAEC96A61163A
-44F84EEBD3CDE74822FC6ED53FA7C30A4167B1BF8BB9D3347665A33DCA967641
-E4739C8A7ADC90369E7C236D812BD03144A282176D5E906B55D1274AD6B5ED2D
-CBC01CAC7B92D8D919D25D80F0E0CD744B33F303C43E0D9F1F0E778056C43E1B
-5A300D823B0070C69DDC9CEF534DA19FFEA924A6D20D50D3CEAB46949288EA59
-8428450CE0960400BA1EF843C4D538C6A2087D3E1DB7AD847898602ED66F9366
-3F8E07233BE8331D36C159E8602B8193A5534030BEB136E24B24886D063694C6
-4A86C6F0B74CBAD19B83C2637AE35A07221F79860B87754A8042CB7489B0648F
-50BD0B93ABE34188C91AE0846406F063DE6FC2FF17D3E39B758A9182F258E2F2
-8FAD163152FFDBBC23B122523A2BC4421B025B0D8E876F80F12977AD02F2C393
-F8DBA9B7DE3D98B21C2FD1BFC42AFB3A6B0C303E94EDEE21B704737CA349ED48
-8332A075AB14489FBA412E4950BAC4F79BA0DC7EB6AFD1D43311E04F7047C851
-02612F1BDF9549A1C5A4E096C7946749A9E6FD356FAEEEE03C196042B6689913
-2912AF6EAE06BDA5E9F7A85CC503E22008CDFDB0F51DAB9C7821BDB79D1E7477
-16E244E95AAA34AD1B2084506F7C22CE2EC64C2EA5E2E2424E265173B01CAC83
-5A14B1FA3CA554535FB71CFD640E6F04917771589AFD81CDF19B80F2338A462C
-A7931133B7609357EBBCD05DC82B6909139C5D9ECC63511CC7FF28601260C7E9
-B3253E2B8655135DF5AC5EA5F037233C61495895D1499C5A00B13A90B8B3A886
-42F3F12F7A902F5520AE4F8E5AD9380EB5063BB93D98476969FA47F2BF6EB1A3
-94D15CB620277C1D586661CE897F3526DC5B52C447FAEB44FD3377DCD023293C
-CD7A75809CE202165BBDD0311E1E793B9E44C747FBCF9AB319C9F3BCA0F65881
-D85A2549005C27CD2A477C5DEBE1BCA541DFD153BD6357215CB195A53CB1AA0A
-636FA25E28420EDCB036BDC3AE3D522E912C00EA6061E8EFC7176DB1D106BCC9
-F7420AA98E67899D2AB3B63A14B966D06BB785067DE6EDFAEA7567367DF1B9AB
-24C2194360006894B979EC31B09E92440945036AFB89155DA483FD44C1F9515B
-4B576CD51A079C22C668B72EA35E21930B701E7AEC08100BFCE2891AEC0CAFD4
-A71401645287CE15CE5C4A94409B207D1A8B13DC9D1CE2CF6E09696E7793BC1D
-8766A4FEFD11FB4A3B13B32A5E994D010370A0890D85A500FAB60F60D8EC607D
-CD3B7657B32A4B99C89BCDB0162BDAEE9CCEF0B52C54C8EB5CF320DCD9803405
-10B060667538413E9BB43F15C72510A68AB688C9512FE05E87AF5CD4C2717FBF
-F0B5E605CE4360D89C7BA422C2A867710CF0668BB684E83FCD47888C92216068
-B03655C718AB989492A6D432275B1F64005849A85ED0D167C121134A59996BB3
-8029B44938C401192B96DFECFC6C7EA90EEC009AE79F2D94926581B2073B81F1
-E995224D452AA32115134F7C8B0AFCBAFAD316F2DED91212E5E2715A9A0F59BA
-787C811A7CE37859B9BFD4B6648010C449AB624401ABBAD5D22623A05B127FD5
-F6C3FDE7966A3AFEB0BB98B38E8DAA05643EF7A9242F48837F2552AA6E449594
-9BE7E93EAA719FEB29077A5B86C14B5F47B1B86D9F1EE50A9BEF6F6FB2DCC4C7
-D3EDA4FA1744310A2C5BD39E8EFF9831D2E91698BCE0D2E9769525F934D7F08A
-FB4DF1732A46D4CD48BF73322E25BDDA632CBCD9F0571779CA52A60775ECAAF0
-04A6ED054E9527CC85F67D2C480D6BA074A3D73D5386C7D3B06AFA386C931512
-AA015585BFE18F6B5B79140570B655295A0C56F6D3FFB790185D4F1A10F0AD18
-C143DE30A7FAAF80239CAFA2DF1CEB743341B05E8FE1D90FE3C0F75398B6FB76
-28FDF55AF051AAD341AF59A6FDAE8B1BC878A52E5FC2B504D4C113979D7E7524
-F44C86A5C12F5546024D792A0E4FF98AC19EC3850D88DBE34B4C2BBBBDD77E62
-67219B59243B4DDDBB88AB7AFEEE234F08DCA63F51508BEB43BDC3B00A3A6F9A
-B4EB5EBB12D928D2E1901A0D9799F82676F6E158A6E521D11EADC606176809CB
-82687208E6F491C6B92901015A67A67508A68FD8F910A41FCE333AC61A17F772
-13FBB7DDCA5C17263946D38738E019B016BBC294F89083A2E8AA6A9433272CEA
-42C8A243DF05FE3AB837F0793AE36FB9B1378B7DF1D50CB48DAE3F9CECEFEE6B
-7E372802B2A19C7C1BBB14D3B061C5DC6FB29EAAC558386C58D87E1CBBA07AE8
-B66DE0AC1AAD4D714C00B528E0A10D54AD7D99A3F5459BCBD196C0A86DA69508
-C4C780D2000407BCF22ECA07C1FA37DA0E05CD0D1A78AA64AA9F4682F2F2F05F
-0D219E2D4A1B55D836B36397586C46E54F7E7B56B969EEF401B7BA9AB3B71491
-0B33E2694C3B10AE3702DFA3EBA9A42888E2FA495B521FB5B860EBECD878EE73
-720ACF8DB674DB5C4A3418E5C4B1B93E8BD5FD6FCB334BF3C93D6825201A02F8
-A8BD1F64CEF4D6E8BC96948226D8E0C34A7C65978BC66563B39BB41098EA4DBD
-DA6D7CB34A411B9A789775C2559A9F90B7F643551156FDA8B8C3B368E666A546
-0D9458F1BF0649BBAFCB8A2B0B35633A873D5F9B0E55A1A1EBA070DB4636B725
-BAD1250138E0A08B59DDC3BAC64DBA14313B8937275F8E8A506F6D6EA691FA5A
-D37453B2619C027CC5E6DEDF6C6EB248F182A7349A21CE744152BED4F91508AF
-AEC8563F1894734EC9BEEE05A1CA429BA1A134CFB7D7D533595CEBEA887EFE8E
-8D41BB1711FD033A6D6707CDCD2F1F3D02DDAAB98311AD5BA5DA9EDF971FBDD4
-BB4EF7EB3641CDEF6CC694948ADB8D94D39106C7D4E8E788627991A6AE33D7DA
-81FF3259C745D3C3F53FF8CC0FDE715D61801FE115F534FF3FB04CF5324979D7
-2AE393F01B9B84992F16390825059AE1560CA637AE72CA56D3CA686CE9514E1F
-CE1859CFCEABB3DF9FBD8F0E3A1E8B1ECF291081A63A86128BDF2DB251287810
-DEE008FD4F5ED49D0BAB3E7638B975CF6C8528B9B8BBF490F9632F83A060AF42
-1469997731E304C44B80503B391B9632C15D209556CD5FB94EC7CF4C98B51C7F
-284ABF771FB70ED5F1CCBF4AA789AA9CF8C9EAF42F9C9725D87820C10282679C
-DA104A08E1AE5F01DD4399211C62C5F3370C9D159923447D15C2056A0F840203
-62903BE8B5B1994C9D7C6052077E5446D54444628AE19229209F815677ECC5D6
-45E6E1CDC2FF1AC81EFB1D73ABAEEFE54E185E3A817C0506CD754393CAA3D30A
-B2F401490D83B72BD07B4BF1D1ACE8AE0AF145A3CEA0E05439EA8EDE1C4597AE
-B5E866BFC94E30C9E8D8884DC900862E23767B9F8781F5623B4F5F74592F11E2
-DD253253D176019798665BE833997D2ED432380DDB144EAB37C7756C6F729B0B
-D13D8D02951BF2C016DA02873E4B589EDA8021397BDE47000E0BBDD2AD8D5160
-C7E9F69831FAEF84C27C7342C8CE4092278F767ABD3C7220870D40EF9AC505AC
-FB5F3E1BD3F0905F71AE8751C4E6BE02B392874356C7F25B37B16D7E8848A9C5
-08FDC51948C71D3031BA695B44891D7C56F5A06113C1DF9E7A5B2306053AB76C
-18B3BFED61C8E196494FCB0408DCA9389D6DE9611CB19B793D286011E9AD6E78
-CFD74396029C4ABF7075143A71D14EF93B2053A0E8C8789E176D500DA7945DD4
-B7F805169681F4033DA8A2941F8BAB7E4A1A0971E017FECCD8738DA3186B0DB8
-8C63476272C63364DF6C3CA5D9847A6D81736F0BE388AF95A7F9B5663F55E3DF
-1C740E4358B349DE17A63CA2282B03065A66D9FE3D6BDCEF932193E5F2E2D150
-47984A57B31A7AEB54A101DF328A74040317529842B4A5A20E3448077C331626
-9A5EA78E5EBFB81778BD4C9B392186E3C811EE82CFDD6A57E050DA15478791A9
-65CAAEE28B55362594BB58EDC4D01FD54CA7EC5C4D2A3FBC6F399D5F35EC2256
-EA0B1472A99F3349DD62F3931F193C322608E6452472E00EC22BC13E2E17949F
-9F00E979D5D5E38CE6C6EB9CFD7B05E724CB49EFCBB211953A36EBB3A3E18498
-8CC2B96F8FDE18C678282C0A707ACF03CC41F735E5A4173B45A9312944D69B2D
-4D448C4914D987DE531C6D3EADE9C94F9E6F978AF50F6C25CF8586185FB7CAA8
-5C428C606709C5FA5ED63CE6C0456664A552BD6B6AC8A321A97807279CCDD27A
-EA484CFEAE6FC10413A373A9E041D3CC05B48BDDE5DC89F1B9D140F95C9370F7
-1126CAF6256DDC8081BB304F294398A5B5994800684B097444BB35D4D293E782
-F61C8EA1AB2886CB6911B260127D8A2D116C3AB62F07920E37E0405F516F47D4
-C4E865E9606301B86A9013E5244E1C145D515251089F62C780C17B1C2A605DA6
-4E8F113081631041C38512469AAFFBA750A16A4921C2B809CAFD80F17DEE5BBC
-6A00C67E59A4C3B1C34DA41EF7D4CC836CBA67ACD86822FBCD160ADC54D10A5C
-CD5A1C1D01AABBB900776AFF0BE76CCC484037C34D348A7BE0B15109BB114DD6
-F0EACCA18800AEA8692D875F761C574B90F586ECB60183D3DD81C3B1C0EF1822
-3FA0688E244FAD05F5AA4490DC6E0F515E174DFC2F26821E9C4B189830EE8D14
-56BD9EE6BE690E62E2688D180B231704148F643873BAEF2466099D01E98D0A22
-8CAD70DF0140C21585651CF257F62248FE2418DE3087907355F88886BE1DAD3F
-043C30DF1CAA28F327A71B8EDFB5470F64298B899596DD2236B23058E3339E8B
-82A8B27BD3ED46D1B5F2CBC333B4AB6C8314B26320134D8B8479F2824DD9AF44
-D5F10F431F64B832D1881F59E8832C8935765E9C1ED9768EB864E3847F4F4928
-71D2CBB138BCA7085D5E619C17BD6513F53293A9F419A74077EE0F97BDFFE479
-CD960D5603C2CF26A3B4B3A6372F954041FEB600A528FEC76BF86420CB8FE902
-C978E8D7A3D317683FAA98F299611F900FC0C38E267B9D2295AB317A0C65CDEE
-214DE4298121B7385D9AC35D23ED48BC980D8BDF0ED1B3DF469E74B2FEB07B5C
-F26F8C6A61D4B1EF1F95EC93F618CACF0674C625BD9E960299A92E12BA082080
-7DDB8D06817185AE7FB28174B530DD2EE84660606AABF27A171C33BD15173A09
-69DDAAAE380C89FBB4FDDF271D3FB5CD0A2D62A1F1BF8EEF00A9FE22FDEA08B5
-32E6995008D17A9B885BFCBB80E9AE1E3A4E75A8820AE2A7845D366F29CAE72A
-9D41A40B32DB7F477E218C646A28FFDA6E58EA290AF7E19DCB764FFFFF8248E5
-179AED3D8F1B91480B3729C79B3C96B3AEF105E11E370AC65F47F58917FC5EEF
-68C5F518D1079ED2182CA6B149F76312133A4BAABC1E1862CBAE7AF59AADF2C8
-FE748103948695737AD7BEBC52DF8C4BEE11C346D0E9B07338A1E82B86B8AF42
-88A49CA23BA88579F911319AA8B7DEA4CCA6387BA33B217D02D121FD38FBD51B
-C100B95B21D41606B40B9A11CC731F10A8F4B86C572FD9AADCAB4CAF8F27353A
-C05EE5A9F372B1FD74B71522A6F9248F838630A8DE2429CFC5B34161E83B0B38
-9713AFB911C246E5ECC6AB86CFC463B46D0358841EC85787E055ED7C5513B0E7
-960D05F0BDCD5DEF56CDB808B755396E2F16F43B6D58BD13DB0A6B9FCA646521
-5B114C3DE7253500A6D89A0DAC7F9EBD1E14D7EEBF8EAC1ADC5EA574781EC870
-7C820F1ACBA1986CC55F78DB10F9F76E9392FC9265F3B370988CC56BAA379B46
-E5DBF4FC5C1A5EBFC1DEE04AD79977B8B9213DB98649B6F9AC0F99F53A449CA9
-FA33BED4F5EDE8D1B53EEDCACB0A883976C98DD719BE5C2A0A948535BE0B324D
-4CD123FD9E346FB8E5C5AB593049CD5330D34DEB46C4AD0D21BF6E5D715B8A62
-40E0BDA591D2727E4245B29089FCE0A2238B7AB0798FED91B6F8CDD6C2FCA085
-3993743912D66BC8049C30643F9362D510575CE4926D53858A1BD2B8309CA46F
-F93B3941D0822B182AE4DCDAAEF090AB4DCDBF403E4BED69B62ED62530AC3A6C
-EDCCE216FFD057C8A388145720BED9D31A89D149E9A26AA4DDFE8EE93924FEB7
-97A0DCDEFC84F9266A86D2B88495F4A9B1D33248BB0861BC4D38825D1EE3C930
-11077737AC6E307B12ECEE27F82B554F40053CA24D2520DDAC7F547407A77196
-41E85341D1D1C10411003E66708BC4FF4F31AF6E689321788C59D63DF263FE23
-71FF6C27BA99A5D9C16E08CECE622CDB8517D14644BD03A5E7DFA8DF8AED725B
-F6AB8971EC1AD359AA0290B31A2DC818DD2BF80EDB07EB81F7787965ACBDEEFC
-05337DFFABD0786D1C71B192B04618A00E90E0BB3BB704D1AA86E1FE5AE09B9B
-256B82ABFCE181CC45745A0B2E51B1B780A91FB2387EFF75ACDAA8AC13B1F44B
-81AB96DF1D9CF587DC8B9F926D02F81C8BABA56DFC79E25883453E84E22CADAA
-ADB64593275CCFFF770B53ED4F4F1B0A76DF0D5AD96FEA25AC42B8C350061A2D
-1C97513C9F7F921ED913F321CFF95EF57FA1E19A9D3F3C927568888E1E7DFAA2
-D12525815F2C65B72737B4AD9BD64F922526C3527693B552ADFA10C281F99A79
-26513709301215BEEA51BAB631ADD6DB698BD96006913FBE8AAF394A051ABA45
-D4C7F093DAC9707CF64509D64A39EFA0207910A575932F928CE105E6A2745088
-4D23F6EBEBDD583037106433728693D9D24462F3E75DAB68059ABCB05B2B5633
-D46ECEB9E1A9CD67317F5D1197DED31050A102F739792CE307D6928681542F39
-954589A5187E9FF713B1D0A3E5515C5C0F935B7921E4B37E12F0638352EA1447
-7C5BB21D4CB3181B1C056A3B4D98396DF351BA384FF61A170C1FABB51B025E1A
-206FB57FCA26D929BB232A9CC3249C1A0400FC039D3EBB543812C5918D6219D0
-882DD96CFA770A03BE1D0494C090D5F5EECEB305435FFD740824EB85E59CCCB4
-AA411710DC67EA2489430D8C08423F00C499323ED1BAA4EB1B5089424F898D86
-BDF5CE56C028B107B8972433EDA77EE397A193B1793BE61F8DCC0273A0FCED9F
-8A98FE8D1A49469C3A4ADEF38888A1199DBAB63DE30E56B82E55C6B31D70FB4C
-5F9514DF02B648CD3FD6860E426DB1D853910F1F96EA328759229347ABF6C503
-A7B6A63D729001711890C1AC5997F2F352F3130C760F49D0510DEC22B51A7FB9
-F2A7EC4939171B82F24440AA058C5522681A0A97BDE06B15B88DB1F1246A095A
-E89230E74BB7B404806FD2FE9F698C167954184129B40CFCD711D69D7C1B4F8A
-7D2A8D496A7EA0FDA901AD9D79D067614D868290F804649280671903D1085A1C
-E2E3C0ECEC635D975D66CDC5312568AC5C85F87804BE7E60EF787F5B97DB71C9
-4DB5F1AB7069B1B411319D3D70E1554D56120E2E5C9D474DAA7C93D5371A9DF6
-10A823F3105FF629CB8A2D564545638B9203283F6D70E4CD
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMBX12
-%!PS-AdobeFont-1.0: CMBX12 003.002
-%%Title: CMBX12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
-/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMBX12 def
-/FontBBox {-53 -251 1139 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 89 /Y put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
-0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
-2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
-1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
-42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
-FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
-78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
-22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
-A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
-4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
-4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
-95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
-9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
-5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
-9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
-CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
-BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
-9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
-EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
-D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
-2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
-947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
-0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
-4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
-BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
-F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
-6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
-D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
-F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
-481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
-FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
-419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
-7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
-70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
-2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
-0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
-9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
-C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
-1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
-A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
-21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
-7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
-17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
-30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
-3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
-96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
-B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
-1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
-57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
-B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
-8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
-8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
-B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
-BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
-21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
-D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
-FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
-A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
-A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
-A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
-DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
-7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
-07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
-BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
-8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
-E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
-B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
-45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
-2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
-5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
-A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
-5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
-E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
-5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
-6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
-8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
-BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
-9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
-B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
-B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
-8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
-595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
-FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
-13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
-FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
-DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
-313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
-C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
-F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
-DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
-8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
-E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
-A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
-C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
-417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
-19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
-9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
-12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
-3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
-A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
-90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
-3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
-B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
-82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
-1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
-AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
-9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
-2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
-99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
-31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
-3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
-F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
-70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
-5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
-84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
-BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
-8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
-5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
-9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
-F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
-94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
-0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
-E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
-7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
-596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
-F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
-7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
-1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
-AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
-4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
-744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
-67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
-054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
-6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
-8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
-CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
-EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
-C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
-57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
-5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
-C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
-CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
-848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
-B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
-77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
-87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
-3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
-409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
-A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
-72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
-99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
-8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
-E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
-82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
-C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
-EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
-23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
-59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
-C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
-1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
-403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
-1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
-75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
-0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
-82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
-C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
-A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
-9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
-0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C
-5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060
-62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D
-6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E
-1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5
-648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1
-FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6
-754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A
-E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE
-E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4
-0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61
-CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05
-43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624
-2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30
-712D165DB5ADED89056FBDA355CE0DE5DDF2A52DB851879E39085EE9D44EF757
-9B4BEE1ACDB865002ED4C5A98683AC13D9E1F818EE88E0A0408E13888A023B87
-31F35E750C4DE7EE68DFCC0211A2860C0988F6E682EF84373DB982BA28162A69
-64E9CFC6ACE0A25114F95EB7FAA7E99A68533FC4888AE57C5C104B219CFCB938
-DA518553B57BB2D9E462A5A68F1E8E0044F1FBC52560D53A6C2EB0393AF5CBB1
-55D81F9DC2C643F2E2DD0129C306FA3A787149550BF32119399076BC885D150C
-B3584CB2DD79AA0B27FF0D59D7CBC477D5A29F789E37CF19F32D9D3F6914961E
-AADE5423667209A686D8BB6F2293659E91D09CFE321C53B34D830CF72F00D3E5
-FCD3B6479BD4C862429A52E964B3BF8B81906F32517E927023C2AB14AAE1BC5B
-6B0B906F420772505D76FFF558C9D3BC3E980A1FCC61E9AF4B9A9843EC4787D7
-C41C6DEC165A5299444976F34F301F2950FAF95C529BF7A74514AF883C50B4AB
-C21227588FF0A57D1CCD8A91EED659F63BCE43D5ADD1F3CEDD661CA2B68654B7
-01E17109377F92C75135E060CD805F98FF47DE13FEB6C7FEAC15DBF630016448
-6C7F12BBDDF1C248C3B8FCDB8DF5F93357AF164A7114606087697E5021AFED3C
-0F775E02982C4599496B71E4B6F3271396CB9B581F70DCBB0435F111D2216D73
-0C78C0A5C2AA5D2A40758BC181BAEAF2641B439D4FA6EB46D03338BD95820ED2
-D57CB7AEE41EEDD77FA59FFD1DD7B805B567A1164AE77D8DB5F49E8779938D9C
-875AABA87925BBA4B374E59AE9780D231EC4D1B192E7CCFC31D87F5378200532
-F64EFA6055C148898D5E67ACE7363D8AC3CA2050EE8C47DD1EE29FDB882A31B5
-E8116DCBA78D5B9329DF559EE4F7855222AA01E676A7CEE978D9881121BBB96E
-DEA72B73FDB70E170B93BE01C4159319F4FAE38ACA41966CCF60A8F9424C098E
-69210A0ADB89D2CECD169D5448BB34DEE20D9905BAE45DE37F41259185F8B175
-B8EB2AAC102E05940B494BCB1F3B79458F0086AF241B063D7EDDE676BEA3055D
-E3D18A35A848A22F9B4B79DEBAF97466F8158D8E782331B673D4FF9C12177DD0
-CD62BCF177DDD0F950A8652AEF529AEE43BD52DD513F8D6585B85F4896B45B58
-6F0FC7FFD12BAE6B0E477C9D6510F6E87E3B4D75C9DED5592CE95B6E8ED406AD
-D71F59197A116377319BA68A214FF237B591757AE362289F2782350C12666847
-91F72F0A88E56827097522C55B3F44D76ED3EAB90B7ED0ECC3FEF34DC3C0D391
-6E06E03715926E3AA986E3C5DC076EF9CC0F5B71FFD3F02ED339B1CAFBCB04B3
-D7B17B617003BE14730CA3341A003EFBCDC8A176BF4467440389BFDB7D331823
-CB278DBE285E6732477E017A2A9B1AEC5C113A491EEC6141D7B9C435091FAC4B
-6C393AC995DC79F0046B3CB03CC01F714A30BFA08052C0BC7C888B1E615AF648
-256AB8F551EFB544240131B54C3415265C6716F9E852DC4973525332CD5B181B
-A4DE4E041BFCD79E978E572C2A53A7395F23977E60B61057111B47AD35A580A8
-769AF52AA9067CBE946298D77FACCF06BCEF0514943EE8AABD1C54B9378F0BDC
-CFE0D81EB1BF9D0082FBF97648C763009B41E8610D6904DBDD4F1C5D82E6A663
-2F6F7C4F99B83C0A327A90E16092E7963848B243A7E718E078A209B1A830D978
-73588ACBD3E1F872900D4C3879524F139FFCA71066C96424771C19E5FFA0285A
-D0E051214F11F4D7557C8B376B7E6DABD206AE08307F20F12755B39306B35011
-E5EEF050AF9118DCE00ACA6B266E66C0C63D579D7D90134D82268773D570B7CC
-5E4C183ABB09646D3B9E70D06E2CDCB9EA0B108A6DA4E3AEC5733CCC0A14EB34
-1D39DC8EF3308FF55CCF1F736B2DCBCC90207D6D484216A28C5BC32775C91D2E
-78A63A01BB22EC15E69860AF1EBA0D74EA154F044CA403E210291D18489EB661
-40786D375568D52BE04A49C51F2E294329192552E084BE826B25EC6A254D891F
-6C34A8B08ADD1BFB2FEE17B28CEA54E4FD352E2A01C649D05BA5E72722D42F5F
-A2C90C27FECEA6E5C21B0DF46E6571358C04287147DB535DC397A958A90F9A64
-6A60053642B8607ABC3EBD65B1A46F4B22017F945D059975D7A2A465E13651D1
-96D111DCA6B3AEFD4F3B5C0B51E968F9C6E1C365A390850BBEE64AF381E7929C
-9EE72908432B77B9D58B0DEADA36802520B699766400B2B04AC92014D99C669F
-FFC0E2127416F71925E7579213FA266F9803C197F2F0722B37C78C03A505C76A
-D86B400C039466E4D2E2DC5CEE614932A0B8600811EE809E21446D12A4A30D8D
-32C6AB1BDD383C05897CB4A08F719102D38ECD71359273F623865600455A040E
-EBE2FE4D6D031A0F96FBD7CD0EDF88C6D092755EE07DBDD793FFF279D1C5BFC5
-4DB4D3E4BFA1A8850A608BD6F635A7AD717C45407607FEF9E14576EAFFCB5EFB
-2B8C1B12CB88CD3D70FDD0458443046F85CE4DAA12FA4BAF6FB1673A1D3C48CF
-2F891D1BF832037885457B4E46A2D2418AEE1B46C30EE4E524723B7842C9DFD2
-60A72B6AA65B88031BD577A546CB320EF9E2B980DB8E85BA6652FD2BF20BB637
-2753016E7800E540154727C01E6ADEB5422B91D5C20F9E8B2B2AB9109EF13F05
-15DA2ED05ACAF566A51BED58221EB434CBB6EC3CC34C083DCFA54694A1E9FD7D
-2FA520B3DA37095B92844CCB2958E86484759AF1657B5B6966E70E21F720B0DB
-51F4C3D14EF63A60A5383CD166AC41860949F52A9EDEEBE352C64DE286D9FA70
-7030FA4357196B56E8FF52E2264DD8DB2AC5057E448DAB1B828DAA153393C805
-A57328D0583339DD7AFBD7A9A5B0D67FA92C62046F8F9B2FD8FB424EC1165936
-486A469AAB12FF9490BA39D4AF4EB41D682F278423016AA6C173A2ADA81AB2A6
-919412F56463799ABD6DBCC68A96C67C18E793A4B84027DD9CC233310E84E4A3
-1941DA5DBBBD462F7C7605ECBB28F46E6089E9B911CBE04C207C579BD999ACDA
-F9A39FFA4C396166DBA3A7286D8A6830B975CFBB9CB99DCF36A3057015218BC9
-C05CCB01B514AF78D5E3F6DCEDE6816E64719DB53CBDADDC52C3E05E2075813A
-9238E39CE61E0C17DBCC3D5A321950FDFA8F7DA670821C1F37032E6C52EC0BD5
-81F698295732C4248C634449F3F8DD016D07583818161066DA6D1F8F97F09423
-E887B17579B2B6AF2F4D18DA593C0A0E7DCD4A21AB3D7E657D12E07FD63F5B23
-2F362D1664E293E7D85957D450C025C5B9B2E8889283D8C8D395B135AA50942B
-AE668712615EDC2100EB5EA761360E565F06A23BFD436DBFFAAFAF6E583E84B1
-AB02C5418E41B8CDEEF026EE19139441F33DA61F28E6218B0F2C7FC79D2A3AAE
-5C7270F0032E465BAB57AD5323F4851D4C231A66D4038562DCE696F2DCFB0F7C
-B85AA1DF6068D85C017C5C95064FD4F0C3EA966E1E94CA3C9C9A76AF0B5E981F
-4CC71CC9C686EA4ED348CE57AA6BD30A16F7111E092D81B6675F7EFDB30E4411
-C0CC449A53D60F13BB248ABFE7DEDD56A03A675707AF1B1F13829E41C9226504
-FBF20B944E575731B7FD1D1D16B18275E7AC756800BEA08B3DB6F505127B6BB1
-2E49246603B265FEC2DCF02330C86FBCF9C9F83D335E363744CD49AA4CADCC4C
-EA2D570C6B130166F100436E50118D56630E2B596F44D37275D61DCC9C9D365C
-DD280B1E3C50F7CA3CF3A7AE08FD2451ECAC08092472D660BF787D04D3C3B936
-7292F46A57441B15E7398C7A2E139DE61729D049484B9E9E29632795AF3C198E
-E450BD4E843FFC0B8EB45D3F0BCD408A33F6B9E6B83E19317183654B196D9FC2
-BF327E50BF4F5CC83989D88683FAA8851FD91BCC64C797370809623DEA519BC0
-0F6637F304BE66317FBF98F8C700D28D74B643FCE8517454412D0F56D4DA901A
-8C8890F98BDCC83B836F806A4BE2349868E7722D6D8A260FC3FCFD39AA2DE620
-E8F5EB6FD9466F7135C436F9E86937631BA472EA77E9FD4BB9E5772AF4E19232
-712783E10A83A065E1DBE7F3DC45CE16D1BB35113470C88FD7BACCCEE874208A
-43D915B0B6D0A497D55D5D4ECA65FBBE334EA902D71766F00B1D950FE2F1EC77
-E4ED0E969DCC78C7F04BFE7D03F1113DD85A47FDD921E4714A59EFD829D62F1C
-98876969C68FBA644BFF55B3FEF54D99E081FB6CBDA470A2952E29F52FBB59FF
-778B2A9327D0E12964F34E1537E81251B2C910E6F75497A01EF0F24A3C85B421
-AAEB193514A26869B53A9C7974CCAD5FA2CD9E3598353D755B04597048C5F740
-81CB4F80AF5EC07078B84458A0EDFD58301CF24967ABDC5CE8B6A9737748C494
-0F16EFF7D430328DC9B04E0770C70E68BA005506E86737776B763EB88E64C5A6
-F5EAD4C4356F4A196900B9D3878A0DFB898496EB0C85EE207C50C868909D0847
-87E9D16DB5DDA440CAE1D609EDAC8D96E0E83BB67C74AD1271559593CB4733C3
-58D54577B35CB1CF9B954A9C422482682732835019D1FE22D6A0A6EA8950D25C
-E30AD2985C44267209498029F8FE133A435BD5009CB0A8A1099E95B34BBAD9E1
-8FB64C79F6E1D8C09553B35A952ECEE66360621077435F8E6E64C1C6D7713BC0
-91DB1434B9CF86CBF48B2FEAA908AED5691CC81C09D87EFC6FBFFC2D1F79EE9A
-836F333D6B473375BC8F6E8102B0C24700FF38BFD7025963C86218DC1E077559
-D4B80B68208E317E47E4B6816F04775C64DFBF621883955BF81D0DD586B4AD09
-CC10EDCB8A82C0B6D4A7056BA14A113DF3B35C7300D43772EEC5C0309A741CD1
-1A26C2C80D520DBD1EF1256B746BDA0D34DEBA442BCD33FFB6F103EABC60C585
-D885AAC3E1B6452B48A66C83F918E918EFA6034829C898440E436AF1A3D81AE6
-E74AF9E8F505D5DBD7BB58432C5AFF73C5406D78C8BD85181E5345803B2D1F98
-0C81540F82A04C357AC31E9AED37BD4E8D5FDD95B058AF5AAC0E1D35A7D11095
-31D1F8AFD1DA22506B8E1B9D72D91BC9F19D308C7FE6B85C2B8D5109276092FC
-718C3892052A890B3F785E57F91E83FDCCF702117E5E81A123C53218F4B74355
-65BD683FB87D87527BEFCAEFDC83C019E7FF741486E3CC1597B6A2E493D35603
-92B57EF508876C54193887DAEED97A41B66FB83412239066EA2E1C0617FF7B10
-8BDA62531DA6C6F8F06B7F150DFB3F6905A2B7076442F7C4780A41F6628E3207
-1D1FB86627C40A84D9894B73FFF000CDBBE088CFBBB241FF16C982353936EB17
-743EE092F93894D92E9BFD73E382FA5E618B21AFE8E593B35EDC97D82D5FF8BF
-485605DBEF4C1C533AF217EB31852B6D05ABE12BB50F307C0F59500B5F89CA28
-D7FAB89BBFE04B93474B3E6E863F5BD37222A6EDFE81FC5AEDDFD128DBDC1ABC
-EDF98F9D5AC4888493B4208D2B7C937BED3A271F4C0DAF78D3F5809B3697E28F
-8C8C00C6AE930844D3B54C6C52E0F48DD76BF562C67D4B035AF36201AB990445
-6DDEE6DF82A8E4242787B565E8DCEF69D54DE590019CD5189053A04342E2515A
-CCD0D4F3DBC7ED1FFC82F35407DB1D4D5A322B7957A40C30B3DAF4CF44CD096B
-B8C19BE6005DB525A0462BB49665589DBBDB111CD21AC2F7B6AF3F61D6A97FEE
-5103DBE08AF0826660BCCA78410A361CA68950DD6A0AE6408C5964CC8C73741E
-4ABABF4EB49D61BE53561577CCF022347C3DFE48F5913E45F1C7E39A1747A0FD
-E41B5800AD5FFCC50DA109F2B38743A9566FE6098A85D27C1E3C069FACD059A4
-7E4A706761CEDADAE28FAFD44A8C3F9CAD93CA94FAB838D8053CE56E0B0A4AF8
-CEC76D72955D888BAB4ED03271BFEB2A41EBD7F7CE463286D25F49894E8E6BEC
-18346F4AAE8B7C2524D586C937020B6FEA4A69562275E28C1CCC37987E6CB9E4
-27F47C1B45D60889D8C40A5E3CAF5E67DDDFB2EC9C87142074CDBE0FB508EE5D
-7F9ED4996F009B94E0FCBC38938DA56EF7E86ACF4ADC049CB2CFC6B9E2B4CA10
-699D52B2ECA9AB025A104109637D50744B218924373D1D0CD1138D516408B64A
-DF3E3A16F462AF6BE00DCA51EC0DFBB796313B65D01E6CE4160E071B17979990
-D6337DB92F3F112025DFB0DDD1E1EC1108F55EAE8F96788A1894F59B525F9935
-CE8818B66542CD18D019EF18D77DB8FA541BB47445DCDDA30156033BC031C191
-5039096D293D1A34FA2EF1551E243E1D88A55EE6E2736DD1A725A06F6A78A520
-BCAD87F68AFC45540ADA3D8DE97841178A7FCC969C159FD2B6F5153F4912198A
-A555B9250AA73454E9DED6FE1060661BEA6283FFDACABCB0207B3A48E036C39F
-731833C66AE165844344678A3D9A70AA3910473EE01100585DC37E364C3DCE0C
-E81306C3DF3C6EFAA67A8DA1F07B0D7B0E919F4C6E7897A4B3AE49A29ED10788
-83FAE69A32A97E36A29BF854831F84534C1F36D962AB49551028505A5FB3B84F
-6F0D66A06D333596DFA8F3384D6C74022523B58F1E96BA619278F79B6D24C63E
-138E241ED8ABB23DFEEE6B7B2B7E16568AAD039DFD22E5B42AB5B458FB8E7239
-57282147B69E6E3A3C5C70BCA065826FAACC8552FC0DEE5560FBC1084255DAA7
-2E8D48ACFB4C3AA1C28F0A6F7D0A6AC1293AFA503A96B664169944D0F31B4618
-C09B8D108D0F77B9485D1ED26C487FBB8B47F83F782A0206B625A4A81A350D75
-A1DDB921F0610A4DEFB93C2288CEAEBE0AC68F757D11D49F3052946BBF4B11CA
-2B9171A4A18D8C5C095703ED5F10D93C6EA3B4E46E0C9E9BFF3AC1CBDEB4E019
-123CF2099D469FEFD70066B214C0C76C0B2E0F4110DCF2FC8E8619707E025927
-8D5E5CD3C4950A055ED20CF299DC3127B7FA0AD747533CE11921DC4F110B6ED9
-21B9BA08CC207FE021DE4CC5285829F47A92636B0DB68ABFE8E26A50E36BFD2D
-C2641EFD86B588DF3AA72309788AE3ECFE10347F41F051BF51F54F05007C21B2
-8B4F64329200E21994516DF419BB3E10224A92D7E5B7682D0FB7097EC5672780
-77DE4BC4B1A343611F79CCF778793766CC0E01795A83B3171421F40A144966CD
-41A188F56F3D54E6578732D53E21156993E78B903572BC184C87DB3FAE64D5E8
-597D06D882D5C0DA5F8F8AB03014C5886E836F601A0C4ACFF9EF81B986E9D053
-55BA66A303FDD1AEC853A9E30DC0C1F42E850C02FE9216A86E9527C1BED627D1
-6554C85BA07015A2A7A7F00FB51C14CC19DDB920C41DBF56DA249930D58C034C
-BDBF98F17F143EE5C635BBFDD3BC81E4A1805085AE6CC28FE3EB47C2818C35BC
-ADF57AC82D142E1AFB16106AB08A3DFE989519E5C5903F2D8C42B13FB114857D
-35B75B239DEDC70163B181AA43D7F9B964EEF1E43CCC9959AADE728DA6D08463
-854EC66A8F2114A2200EAD92D5003C357C0B42C113A0CF1095D6375B613FD68A
-ED6048680853B5621B55CA62EECF5C4F77F909D7BF361C53F8B90D853930267C
-A79CC67A446B0087B2B4FE074C242C8F3D8F203E73B1FFDB2433010E00AE80B5
-27709B16EEF0EF42DDD56B46D1C0BFEB89B5194A2285C9C2F9B62541C0F86BE7
-ED1903968B13FDDE177F877EC6B9ED63DFB5DC4D26385BD85E27B86B5AAF00C4
-427FF5CCD7D539D7912CB8E0FEDFCD4641CFE9922C4A3A67A72C363A18E2BAF1
-15B2C145CA6A6C07461E113517D6383A03120286883493139D48E18DCBA93714
-A936C2232F79E6482E870BCC7E1C22355316A34D521EF8405E91BDC56C0F6DDD
-FC53DD99D9837771A89B5B8CC3F176A2A9815AC1B6D2E43C394C43ADC530C84A
-763886ED0DFB2AC863D8EAA55572732446A31953620D920AFF34E2590F1B29C8
-EF50348330B6C718E8C23165CD739392185CFB2970BC2148CDE2D7D3C1A244BF
-AAD43899E41254AB30FEB10016E5F11AC0185761F73ED6285E041132B9F094D5
-FFCFB4C932DE1CB65666A1B7BCF0A610BBA9578B8414B90FE0F6D5E83C8B9335
-D487A8380FBE1570A01B995284559454E89DB607E434BEA9582AF8900C1CAFA5
-9411C8BD17F37969432F7CA0E7C676D77511DC2037FA3461C763809022E1A8D8
-6646FC08A21541654A5735BFEA2FA68D9995AE458C11C41D563418A13D5FEFE8
-E7E3E3A601A362CA2422A749AA1B226D35110B03270B6C620F851A3F50D34707
-08FB5DCDB10D33AAD6728B0E76AAA7E98767D997F144ACAE9884F8DE2B3FBCEF
-DE7463CED6C95DBCEA9AE9EA9E666B366C5FE334D03B0097EE7148A3DF2978B6
-FED5E4C262DB969A775F941AA6653FFDB7066A24FC6E19EA0868AC065D5863DA
-0BACA600CA715BC1A23AB469530F4D7730131556FA1B3CF3C78F2B37EBBB801E
-F108203B858D2CE1E432E9319BF6CF57137216505A8DF7F307E70DE9A2387853
-7C028D25FEA6C83C2558AACA0B903E4DE917B872C8226FA349F587E482ACC697
-2F8726CAD12A19032AB62E3814AC6D2C3B36C09DD4E4D8B518DFE2C21306FCDE
-0F030AB52B41116486DB9E5BECACCCF97C0CE60CA33F5E81E2B1E118F79F07F8
-51F02CB58E8F9C63A81D61D6AE819C82E5F473C9AB135AFA3495C8363A3555B8
-7EF46153D5D277B5759558BB7FA70D96D2B0F26EC3C984DF063A14463DF7BEA6
-398F4CC4E105522C359F8352D6A858A7AABA0FBB87168C7D00D96E1B3F15AA2F
-19F1838AA08018509DF7443DF50AF59511119F193D4F5B3EE8AC9B2FB7D19240
-CE2F356E4BD77087232CD182E5ABAE8F6E5C47B5F26F4EB75052CBB82F3A9AC8
-FCC913DABB75A51F49247BBE4369FC52A6A24344DF6926F3DEF4D4A2847A583D
-FCEFA3EEFDB13FF245D6A0B0D1B17BB4A1C4D6E94D577F9936B1079766C46960
-29B365FA82CAD68EC00CA7A4B89B4F06BD1B0790B22C5067B2D26AA3F178C749
-A146A1651DD02F0397673C670E06E6BF5EA920FCE3FD23BE3DC25D9BE67A168F
-07B8D5EE0A2A97DDEDED6A2707CC2BBB455A07FC27258E85A640C51802B19ED9
-E9F43E95A190486D28B70FFDF5D89E3326F9F8E223470849C3070250A94F854D
-871A511960C2B4C857AB6B83C6F56E99146C9B1A4FC2D3D192EE0AD1B448F573
-7BDE711B9E3C47EA284063F1F8490A6DAEBF52677F8C20EB7D6A9086084296E2
-AC144156509A91CCA3DE861398DEFF7E74C844A3ACAA79B860579AB910E5E1A3
-4C5A81109B1BBF9DA1C2C81928353A443031AF58B5E1A545EDC5613CB726B3E4
-169FCE4503C5FF09A1F402F99D4EBF27B3D8DCB127D6BD615584C311E3C1FE4E
-B288205B3E9281BDBC52A949E8DAAFF4FE860943E7810B65B4B000A5D42A6F01
-10626E1596DF0C854CE2F3407FE0E864EF4138422F16CFE2C65525E3972E42C9
-A27BA1895C8F2C386FB300CD73EC7DC03EA0846E3DC5B843C1FFAC25BA59F47E
-AC3787E294EF256061CB16EE09FC5295F5803BD3F24F6C4188E206EEFFD2580D
-94BCE1E6F9C606698BDB3218301D3765973C2B75AA913443CE6B1D7438F805E2
-5D5ACC016A8DD0B71E5D7EE45E019C0B7BA0C149B9158021B6F472426C655275
-C645CF768BAB03DC70A9488A06BF62BA784F44A74CAA79E4332DD8BC1FDD95DC
-3736404A100258673E4895B8E22B1A123E0919D5CC599CDFCE0BD96C10BFE421
-0CB3A7F194A2442E2AE8153C0B531D05F1704C4C63F8CA19990EE5A7D08176B2
-38839E6BBE2CA42F629F7EF5163B64DE09462BE9C202455EB083C529F48AA41B
-7E0342F4C28AD3DBDDBA75880CD30B272A212B5C3987D27EA1726956CBA39A5E
-4C83EC82BBDE3103C0BC11B5E03D951DD80D863D6AB24F1412B31EB47A1C92E0
-038E8796D09C6F32FE27EF73BAA5718CC8D84178C53313D4FA7720E706AB0B16
-8D264C86CE1CEA0DA942FBC8DF04241F2F84BD46A97FA6CA390A8A791FA8CA47
-085D532C8B72D9AC204A8F2711CECC595AB286C4608FBD36C82A2FF545602010
-41B69445CEA932843CD24B22261E1532E848148BEA74579989C0F3450468BDB2
-11E0247514C2C2ADC66820A65FB9C7683D50D5961C2122CAFCAB27AE613DBA6C
-911BCBEEA62D981B55615D47FF6E49C7348A680BFFE06EF9DE6E19DAD5424965
-DCDA1B655D803CE8581BA0AB7EAD32B7EC4C9CBE0BCC74DF132F5EDC9D50B438
-D87A96B3FF181058A150FBA16390766BFC98CE986C3875D8C6F15F78D88268E2
-42ADD540D06525B10F6E80F114E8DAF907F31B639FC62E1B824F3B245083F708
-C50D9CBD333CD4BB33F0AD549BC51BB611DDA9CB4520ABA377847C5F4C7644DE
-A3AAE8A48CFA03011ECA539AE646F47988982E09DFCDDB5E25DDC32772885AAB
-BF9555F6FF946A53E9656D625DF441C32CC63137FE4AFF164836EFC6718A8DB7
-B4D81E86F3D4D1A0DF6DD22ACBC23A2ED878B9BD43617DF539EB4431E7E49CED
-22EB650937C1188C750CA36E20C8F374DE68B7C79007729BE085772F7A3A8DBC
-9BF36220846630924F317CA350E9173D618F81DADACFFDE09E710299BF6001FE
-B5CF89F66F623A5F7CED70EE024B8ACEAD657F63F7CAA773B59B5620E72FC26B
-4678042E0BA4F75F5596600CCDFD7972806E1F3CF64C7EF3D88240C4A2A8E81B
-07B93F8060719905C7F7E877C4FCA35F46ACF97F7128EA1FDAB570ACC9B8CA88
-957A8F91D301336210FD59D3C5F365E822B90076231477F49C3CB4EC2792024D
-6864AD523326123254C7AE2D9C11D30A4ADD2CB8D8CA14CCFEE0FEDC8C49D2F4
-99C69EA518C7EE58E94403C4C20DB99DE800588BBF79C27C3A6F03D653F3C15C
-8238B0E8E607D425028405BE81042E33EC2B5595677AB24EBD08BF1858CBC0B0
-154D1E3CAFD2780D6A73BF7D8DBC5B800D4328E4F14955F6D86A2F5934A4EC50
-B2D7ADF53A532D6484677807839039F9BD047FDB0680C50BF89D3924716F80DD
-0B421DFBCD32F4A7C454B4B91C6C8639BAB5598951DAC178E2320BE563AE0F14
-B96CCB98F51AEE99B83098EF77FAC10D8B88FB29B839C094785F46A377BD655A
-68787E5A6DBFE78ED1F304AFCFBDBD481348A65D004646E03B5AAB0EDA67A779
-B9014D14750AA488D8DF9C9DD347AE5B68DCB3C28986D9F09C48612B8795BA3B
-702415A816258790947FBEFBE2B85BA0913BFF1C4F35C7464DCD0EAF8397A769
-8677C8DA5F89253B1C3AB2F41C3C5448F17C5DCCB18DE110CB9020B9E26F0BD5
-E0806485FDA93F3B54AA9B9D445090A23123BB399318B4771EC426CDDBAB6BEF
-8E24B165DEFDAEAB660649754283A4A3BEA95522F058D118C7892EAACF376CAC
-877028063F1C0429B5AACC47CA6874B8A83C75B78A64D21CD14214EEAB0F4FB4
-D26FBEEB479ACBF5740230C9943EF7B6983AFB683855A877CDB8238CCECD8156
-DF9271A64D6148560A81EB5DE5F20564E2EA814A974DAA436AC36F107B289E90
-111B28D488CDED75CF61C3FAC18581D21E7B517271FE4284CFD0865A6FCEFA3D
-E26B649A2F392FF3A6A0A781E090FF5A98594BF0341D065E8E68B0A0969DF7A5
-71356D718C2933003D218218BDB35BF0AC541180635FC8CA3C777008B09FBCF8
-8BAAE9D764AC5A8CA2E88E11247E8512B6FED52E7C2339CED4E4F82BE578E342
-6DE6129998C520F77AA5032191A68F101D9451651C003B33D9A0DA25E241ABA3
-A29AAAF4B3C81DEF8C36A52C0D8A42999B63199295BB479F171599CC952C7F59
-B18BDA62685B45AE1CE46CCE2311789C46E155ACD5A8838C6E392F5CC2551401
-399F83BCBD4DB6BD9DF2EF4676D900EE843BD07D9CACDBAA05855AE2F7993A7A
-2FB0937F06186306D7C788FB26B536C1915E570863E5FB2D91C63E6FDEBA34D6
-A2D27DE682224614ACB3A799B3604026FF9F9EE56ED3A9380E1BA58057A036C5
-5550170FFA61924C47BED31688796BEB3927C3CBDC9CBCAA0BE5D685D7DE241B
-24C6EABDAA52B245BBA14D214CB61FF044B0EC7CB8731958F61D65D7268C7FAA
-B5BEAE3192ED338920EBDE9B6F625E10CA87520C72223FDE13C7BD49FFE99DC8
-5DB87EA56CD6C06C8C7AC6C193340E9F913C83B62CD5BD580F5CC6B6D8C1470E
-BD09AE843D9EF28CDEA143B7206DBAC3B896CA9D6169DD634B30C41D73310BE2
-DABB707A86A5FFE942BCC7A75FB92EAE77EBCDF26DA07B07D8ACE98C3277995D
-B7B1198233DC78136FBE39D3DE9B6F1F62BBB311D451B46D7AE0FB28A3EE7AD9
-323547D3399AA95E95811CBB50C5EF6680363FC8F7C7E5230B9DB9815F8697FD
-047161AC68896D17821504A87A73775544F932495C55174EF14A8350BC2C055F
-E095F53B4955170A06721543827E3F1C90CF48866685B359147BDDF8FC42C423
-3A6ECC23FB9353B3B6B90C3E8CA4E4E930AB97B2A5B8E348F9242F479FB85CF6
-C67ABD6A09ECF1CFB93CAB1960FDBFDFE108570395385765077565E82107CCF4
-95612493959FEA678C601C03115D6947A0B14492B04053FBC7CCDBC058DA2D32
-44E1CB3FF3B4F3582002245707F20494E04D681627A2D084AFC1B8144F5A21A5
-088FDCA63E160ED588C28FCFC523623415D2632F2104245379D9BC5E067E63DA
-3A320036E60A2A65F56997572166E8E6DD4AFDB39F1F84AFF1D5E05366F0E2D9
-0FF1BDD6A98C9405CFB576E4C96F747E4BBE12569018B5123CD9EB8A5C0CABF4
-63833B489B792596B97231202AE359E0D9648F7A350EA0304B7AEF575212C851
-788EFD372B9A3220E6C647A317FD31663D1F6E6B0F14F7A8EC8E7A7C291792C8
-A9EFD4191C8381B62E8BCC7B14C8755FE1613758E94FBA6EE7F9DEAB356EFFFA
-20D359112A8CF8AA6EB2990DBD57020993A4C0D3BACD910A25F318009C253F49
-CF460E81F4B942F009BE7909AC9EF593E7050DA6F7E0588F7D70B7E5E3982855
-29752C3FED27CC39C420E8A1A27CC22335798C214CFF18359B85F84CAB375769
-035A617724D498437B8AC8E7C3DB12389DA206D271D4406913F37EB48C820E07
-245E5E87E4F2CF38FA332B539A8FC1F5A2162A1353DC27C2064FBDDFE12FF7E3
-9A6A7690B8E0730C0F9B78F275DF43F5F5FEB0360C0DF657152846DD8AF2186E
-FF6E19B7E53E8F992451E1CD7E888417D3168D1299CA31BA75DC2EEC6DD751FC
-FFF946411A8C48E3A5C98535A58FA490DE9F0C5ACBB228A5255C48BA98736095
-7CE11E73BF3C403915FA14A4A8144BD6AD1D79843688BD5BAC427FF96B6C17E6
-82266F1204D00801F0274E8C05587957458527D7EADE10A03C301578C8BC4111
-334DE9BB4B78FEFB8154CE0ACBB95316CF7B5A1BB4547722DDF513E013A23B3B
-3899293091E25619C0ADB9B66E3C54DE2A257A5BE8CFCAA337DB1D7A01383F99
-F5457952EDA9C68E89BDF8E7B3F557DD20834C428A4DFA5B957A0BE481889125
-02751A25A687F5CC5E679329CF50F644BDDF436E1E3178CE27E0B87115FB5A98
-23065CEE85BE84BD37DBC82D94ECFD6FF88284F98848C73E5155D425609CA6D6
-ECC71922CAC6F81B37D3A0BED469A5A879673F4D7E623D77F2C9533417FFCBD2
-BB09CEDA826AD2945904619620E7A759BD3BB2E799ECF66FF19194510973CABD
-46EE7FF5B8609B79469720FC8F934AB53A4A39E583EE43E1E3568CCB96A7877A
-923F66B2F7EBA572ADB047DD9D9F25E01F7681A4B06C05FDB062FD346DC244FA
-B3A054BD47B48626907A7CF81674F3535DAB490E275E776154471A5F8BBC9F8D
-D811CCD6B26E085A660AB44533C4A3FE8B1511595399832368D022623D945C09
-B65F2E7B404E11A0BB3AE589BA84520F06EED018D09245CE627E358E24FB4690
-A617620ACBBEC71D374AC3C96D7ED04DC0893C1034226AC9D70FFA094491B64A
-2EE7DACACD7B4712B218AED6786E85A97A0662C261E99FDD6322998B1F95E08E
-D035A977C2DB94793DA2D90F3A14D4EC9A879CD3DDE7B874872E117ABB74A699
-16BE210CE77A1F4BA087E7E5E6F0666CA396FA06E9D7582105FA8E9B702B5654
-7323554BEC4DC645EF7259FAD81D36725394F94C1F1B0DDCB992F4F6692C879D
-D8DF61F743B5BFAECCCDC1C7A16925D8E99D7D1BCA04A6ABA8E8327063B97FC3
-095EC36F6062A93AA99E39DEECFCB507BD677899A2F170F612785DE13B89C7FA
-B32BAE429661C35EC5CA6F6916F6FAE1B03BCD6D1EB88DC99656BBC40DACBBEA
-C5CBEA244B3A44EAD417B65554C8CCFD173CB9ADA94F5D55E802E032BE53F6AE
-4C024EB9D647CBCD0D05F4CB0E49C7D1E9F573129B46E1168DA84DF1F7E9E657
-A1C37AD37489AA8509AE5B71C4183A5BC9726687C167702EAA26DC959B3553D0
-FEF8B04A46FEA60A7B66F83246725DB510C0D7F9A4C274BDF5BCB8EB9EB0A5A4
-52D7E328AE40F0E80F7C388EE93E434F2B6ECE185FE729F5C25F4169043CEC9A
-42B0D432D25F97A3F4F2849F5E11B0F2D7AE49F4FE5C59C4181664F8938F9B7C
-6DDF4EF92EA98AE49948AC5A70AAE737835C9DC33973AB817E1AD6C5DDF42BDD
-5F5CE7EB9570DCBA106D45D2B31876F1C5BC94D2733E603D7DDC1AB7332E66BB
-EA9A3A8E95B7372BCA6F841B22C2B6C914710373CC20009E07E417F709A540AC
-78D58511DFB85F629AF125DB14480979C68AE774184EE8759064288C0E794D76
-E6F80729725D0A6ADC875D58D6657F0ABFCA16FD200C48A45028B4283E3008D2
-244706006EE511A84882C5CA0E307ED3A9A4F50450900684A655918269F1D146
-86656A3600C0391A4C6857F24B3ACCEE4E782FBDC0EB487A85A2B575364C905A
-40E70F0866ACF299D231D624949692ABA887D56A0D94065A3FD6FB30E9EBC027
-755DC262C0912EAE5D330614DFC41F66B3B00461682C16EE71FFB95AC0670259
-8C58380A0ABB59BD43798091F979D6800E92EFE12F50B499589267198C9E6602
-5B4B6EBD6461F78D7F24E647F4FE4E4844460ADF4CFB5CF60B1FA0D42D02B836
-3615E35FD7E0E6866206485BE7C4BC920431799F14C89C17D4F82E7ACF1C012F
-40BA05E3337D56EB9B56CF8444402109A9E3DF297369C6B9CFBBC781E17DEA3B
-68886370468B45066C6D6158E16924079282177EF599F66ECA50BBC316E9935C
-7C8047EB708F831FCD7EC7BAC3CFF9DF196CA7CD583F9F69A65676A69D957C31
-B98C1512D62AD24A9A860C34B9B5699BDBCFF4FAF504F3A6EE72F75F0AD14BEA
-716C41BDC36A7B8213E98A57D120D5CD3E1009BC546EFFF690D73E026E7F32FD
-D60ABD6DC5057B11
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSL10
-%!PS-AdobeFont-1.0: CMSL10 003.002
-%%Title: CMSL10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
-/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSL10 def
-/FontBBox {-62 -250 1123 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
-/FullName (CMSL10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 13 /fl put
-dup 42 /asterisk put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
-DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
-7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
-C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
-25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
-7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
-299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
-80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
-5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
-8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
-5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
-F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
-966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
-A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
-9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
-A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
-94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
-DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
-E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
-5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
-8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
-155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
-4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
-44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
-8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
-04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
-A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
-F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
-111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
-8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
-567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
-C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
-C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
-51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
-66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
-9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
-2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
-4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
-5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
-0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
-233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
-BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
-62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
-B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
-DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
-C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
-CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
-38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
-FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
-303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
-8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
-8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
-C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
-9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
-4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
-03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
-93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
-91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
-FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
-06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
-95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
-9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
-7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
-6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
-5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
-3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
-CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
-797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
-DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
-CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
-8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
-04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
-78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
-730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
-021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
-CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
-90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
-97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
-F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
-4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
-40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
-3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
-362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
-DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
-7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
-04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
-DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
-C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
-B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
-9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
-3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
-D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
-B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
-74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
-44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
-A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
-3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
-BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
-01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
-6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
-DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
-CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
-683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
-87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
-550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
-2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
-17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
-3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
-F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
-B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
-1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
-61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
-124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
-ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
-0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
-D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
-F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
-BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
-75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
-8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
-B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
-7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
-F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
-F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
-322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
-523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
-6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
-66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
-B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
-5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
-093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
-B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
-6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
-EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
-A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
-8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
-144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
-7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
-172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
-254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
-5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
-011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
-B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
-0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
-3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
-E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
-993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
-0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
-18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
-ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
-CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
-1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
-A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
-6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
-BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
-DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
-1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
-93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
-E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
-4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
-F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
-4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
-361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
-95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
-AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
-50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
-88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
-AB7916D44EC2210CB941B1422DEB13896DD78CB7B7F400EA5A6CD639D9CC828F
-52311A11F2A84E566DE98826F1E28D55FB08ED70950205DE52C207CF14238446
-084FB4DCE04C781858BB4E0744C023EB0B563769751AF1D807EED20E4AFFDC46
-3C1510C782FD92902761F7557FEF701AA67B20A9B019C760B2BBA8A048BA3681
-35DB440925CABA05B8A13B2D30D14FA875D3E200A018C78BE2E930457BC33AD2
-FE3610314A268E9A30EB41F7C771758410E7D1179567B22CFEB5163F7CADBC40
-4D40860E83BD5DF2BAB4822B55B863D0793D3B60F0DDDB6DB993711C4C7C2F39
-31D02C7D8EE36FFF8FF2179534EE4F2DF388C96C9AF6978D929610EBAA615EE2
-FA163D8C52E5810E94456BE63570A6878E791DF4958E60C057FAE0FFA4C2B7F6
-192AF8786E14A6C6379C6E13A9C528A198B8EC8654AD69CCB5C209964A2B26E4
-E636DDD749286B80A5C22474B49FC5C093A8215D49B30ADA383485030AEE93AF
-BABB827D996E563D1681528F54353D1245ED78D1915CFBB5595E3B9272ACF503
-8FEE0B65C4CD9D5783F948ECAB51BA25F77DFA440C1D8B636FF6A15E6BB0800B
-AD6C7A22C4F0BF6C9A19F0E696B103D8150AAA337C303ABE10C87D87549D150C
-2D9665F99AADD64A1B526D040C348128ACF21D2A5D1899C792CD26066E790D69
-0A373E2593B4F664CD294B5D50067184BD254567C7E039257B015A8035A9BF1D
-A3F89E96EEA10C232662807A2DD6879D4FE3B18BACD337B4CDDEC7087DEC661F
-AC34BEF100A17D5655BF009AE2567AA2BA92CA36BBD484C0EAD74D4FE21FA8B8
-5491388DA8672F56F41E7C30F3F197EAF49964FE2AF95552535CCC10AC5C97D1
-AB5261EC411D9DAB8E026F2D94BB0B79E658B6BEC5B6B9E25FC7480E3F6D56A6
-B9F108C12EED6C256D83F44963B5A238A2DF31D8DBCC094FD7E418A5FE9A7F0E
-B109CC36C470721D58E734978E0FAB9EC8F41861C3F4B3BBFB6C8F84A5EE765D
-DD4C22AB092309BCF1CDEFCA32AC3388BA7BBED00FD861FD4EF03149E02BBBD3
-1C8018D21A106F904C843DA6DBAEE2BF7CD7B8D86847AC43F604FF64DF793204
-FE06EA0B0C7ACD4CCC3065B8727D44E1D74D4DD6F6CB53063B7191A67366931E
-0D23AA2723BDC2EF7D50C3A6F64C9B976F05DBC76408D53F62A405FE327B5B25
-BCE72C26BC228ECADB62A519E63CF8A3B04C4D062450B2574E0229E06A9A7462
-408BC437C205190531A6F12E5A6D4DA06FC9EF4DA672068EAA35774FD3FA080D
-55FDE55CCDEB252BC73D67A3144134F9D69249F6D17E016EFDFE4AA09E5E046B
-F11E637EA411DE91500B463BCC7B19F950BAAE92EEC173269351CBE593A1A5AE
-C925C401F920FA1F0F83D852A52DCB027B5D3E57D9E8088CE19356FB19AC86BF
-CD2A136D406ADE7A5FE0CD8DCAF7F2FC3E8B4544CE2E95D3FAA8F989FC165615
-7C6D210FFC9F0DF1C08D1B45D43A5EF2F93CDAE23FC90EF4E466EEAA3A4A3697
-ABCD9C5A5BE58B59C0204408FDE6E4FB41344144B26DEEA6EA4F457FF8A5D2EE
-8767F2D06A4B67F5A0EE498E1B41ED786DCE79EF41A944180B08B21E8FFAA9CC
-FB91BFBC9003CE1715236930AB6CD3CE157C0C58DB2CE030C67A50758FC70AA6
-1B3C0216FBD233650A71AD9984998025F432635BC2E324C1B71DD7076E8F6198
-D22F064B062B8BA565FE5691F3E012834B107C7122A77EE958B7E5CA7ADABCDF
-5571F16E9DC6BFB0250ADFAB806C525BDF196FCA4FECFDDC0872C36F2554F408
-87BA9EA3A28FA8DC3A9732C839C6C3E084658607A7BCDC6F41EFED4E2728D1E2
-225C58B7CDAF34323B03FB947B5408A52569913C7C4161819310D93F10490D67
-7D0EE1CDF4E87F168375AABC22FB587A8C5F6CB9A859350AA1DD4358DE9C6B20
-EF559F152B300F2E64636F77F4A0CE640AF8A7AE8360D6212A5498CC8C3BEB12
-F53AAA78FEEF32B34EC6843BF23B8E5D4CFFF9ECC814325EE583BFFEB41C23F6
-BAABAE49BCE4B79189F29FDCA6C2D75038F3C6E4FBF49A91616E5D117BBDE868
-689601C05D7B1E59897739A10A0A67B016276FAC9211F2DB649CE848A280722F
-3DEC1E57A1FC9AED529C9149D2947CA2271511378A5C500E75A0CECAE417E06C
-15B12747E262751D0FE4CCCDB3B1D67681A806ED0FB8826A0461AEAC1B7607B7
-589946D0F4F143C6BA44D9D30EE39F819E58DECF85FFF15067F1D4D132026E11
-E92D8982A412650F50E47FB2BE419BC956FFB44DDA87BC624A21A19AF4FF5D89
-3C6677B1FF3A6FD710DEDED18CED4DF2B56795EDAD8A5B294656C004D6D11714
-530C6C5ECB42BA9262DDC017F9557A26D6C9B9C7C22707AC15EFBCCFE44B5900
-C998E96AF0F7D2AAA6C485D43341B61FA18B49DA1F6EE5701F1857C3C86A995E
-29DB86FA21968AAE20BCB8688091455FB6A0EF0E9B6392EC7A5D7655D5D16BCB
-1DFB0E4558B1004827BF9D4654DDF544C2FE55734033AFD5BE72C3D4C7B65FF2
-20F0DC9D002B39E9907654ADE76C6657344B204313165C5BC8B83FF1491BDA7E
-6131F288185DFCBDCA7C1A7FFC657CA8675C74E06E1AA443746A22008DF927AC
-5881F10FACCAA1768DC7333028377102BC172C8C6CC9ABDE03E713998B94E754
-3D6E2C6888AE1A2BC97D3889D7029A29024A7E7AD5ABD49AEB017CEC22E3EFBF
-6B84D9E1AAFC10BF9C6FF5E48DDC7DEC1D2AA3E792AD3235B2F393B76EEC9A3E
-ABEE96053ADA7DA5BB45C95EBEF25DAA88BE8EEC4EF136D897FE64524C0EFE43
-D63CA15B1FCA343EDF23ADDF377996A4E1A53267BC3BAF6B285A4CB005D2BDA2
-5EFD69B3887328607E232028283DEF0044A7A15270769BA9107A4B79B7CFC6B7
-3604CC85349B379376D5008A2B17273B813076C95C10B157BB69667A4824B683
-B632253D2E737619FC6900EDA79B5180CC1DDB88B20635BB3DF6883AE42DF139
-A1F6639DED98535F93ADBA68811EECC99FACE6071F52053B3AFD104F00313A55
-0AD686E2C197E923037F46A827C47BA1C63758E4649CE51B20A4B2CDC8ABE57C
-3D6C144DE423FBDCAC75123402DEAD6DE2FD83DC2539BF892049FA5D55DFAA1B
-9C3AD6EAEF48405F18001E1B51A1E827C3BDDD90A30ACA4E5EBBC133E838C6BB
-0C0C98B4CCDD56E0305FD2B57F8FB83428C7B73F2400F524BA965C41D96479DA
-72A24A6F6EC62BA7AB59ECC4F95BDA474DA969AA4504CB6DBF29FFE4FA0970B6
-977BE7FFE0FF0E55F07B54A868B77628D7BF68E94EE9464ED13145BDD22043E2
-78DD0E6D657821E8C369C54B6B299B29185332B866BAFA3962E1624A5FA9057B
-2DB20773F149BF122D9DED1698F0ED17B4FCA7DAF88EE05517C6F539DD21440A
-77925C9B5CB194DBB9546D655EDF04D82C39B4895F9AF2306D106F1033BD9B30
-11F07A7D57CD5B86EBD84F4EAD872F9814613E12BCC804EEBDAA3CCD8C89AFE4
-33197ED56846C977C7954A258194F3DC4CE9093C895CBC8E827E47C8D34F6A80
-19C0A62076AEEA73A5172717A20D0E524EDCD042BEC8F03D3E84A1A2C97D2BD5
-E506A0DB7B65CD39A24B5247CC08127C60B9ED3B407086CB959D89FC4C2F8A93
-B7AB0ECECD0120E1B5A8ECBD94EC12139D401D1E30231AB3A99BABBE4714FE2C
-A0CC0E9365DC01F66B64D4460E01E90AFF3359642AA28426B7CBE41017F8BABE
-9235EDAD39964692BCF9CEE94C4F29ED3483640176BF591BF710BA93946A3C95
-C7D4CF5D16357F2E6DE5A4CC7D7EAA546B9510943B9CB9DEC062B475FCBF55C8
-5CCA579CAD0A2FFA8B3901820125D46443F6A353FE05ACFCF3FDA5DEC17CD9C6
-8D6565A29B18C26AE80F5B93227A1A91522A0A93DB41DC5F9CC831735FF97BFF
-0DD9C81020E1169AB923D51693C8B11AF7A7234E2F3D7B49A66C80645C2E4059
-B7F15327A4A4D807460570438BCCAEB863C520DEE2DB628BFEEBDA37EFE63FF1
-0D6EC66E7EE5F314E2A62E37752D0B8EEE6AE77E4255456CADA7EBB4EAC07122
-CA742E1AAED581A1CE3158C790882134ACF3EBAC983A876C218643183E2E9129
-98F8B54F1AB36F057416DA1D6438607B8AE7043F1EE1D25CBC0D68718AFEDCF1
-9E0645079AF0B4FBA0F8B40720BF428CD87225C7FF285AEE6F048B5983F458DE
-15FBD918F9198FEC7F9DBC08B1CAD5890684579E540E5A22D79CCAD378CA3185
-2337C8006CB37CA031B719E61DC45138C87B47C880D00CB789127D4F31FEFE7B
-CB100BFC256ABEECA695D0DF90DD780F6BA088B74BF09AE7EF73141E7337C89B
-69DCD842F5AD3881613EA235FD37DB2817E33427AECF0ED55BEEA7EF410C1376
-7350BAF850481AC0635A9220EE2485DB9A35CA9544B79D067D4C82C8CE937AA4
-5CE2860777D75888A90FB9603E2B4FDCBE41C011B45320054362A143ACE9383B
-65ED71622EDA39FF82D8E88FD7F5E9D947663296ED93FC16A95F04961938B836
-FB1267C5A512B0AB28B32292449EC3F03825409CD01007B7B28349B7B7EE496B
-EA4CC3B9A877BF627C35908FAA85D10AC7D9B9BB65C201E7E4B4C671236B3C60
-B1CCE5C51BE24C2FA060EF9539CEAB6A640744CEAACB9AFAEFEA785AFF8473AF
-0D0A134031F4A38FA62C154CC4FA4DF334DB857DA6774395F59CCE2915EB2F94
-C3D803C2467C862FD10F6A7685A5FECBAAB4B15C12C7AF04029755FAF352F76C
-DE91D1EC35C345E0CDF3E808735A5A63C8BA55914099750C737C6ECA4F80AD57
-02343BC5417C62B5DC9AAF73B5B6435744A983B8E3FF3F1305CC8A32C2301DE9
-1BD2903185BC29CC5E1D79F5733D1D011A8015D03C7246601DB2EF01F0E3EAB8
-CA11EA8A0A5C254FD12398089580CD9E6C53274D97ECE50370719E5CB0483EFE
-210FAC6FA0FCD278369828B62A7EDE838CFEACF2A60177FDBA6E41CB5FB0D23A
-57D8A8D455B1153F49064CDB898E93FA620735F3448F827055B8EB37074295FF
-1C4B609EFADEA7CB1D8A6C3D57FD6D3DDDA663FE44736CCCA8E1E92B49A06E92
-7616DFEBBD028713B618CAC526534B7E8D2275659E56B0BA20489EFB7B376D5D
-72EDCFFA2C9C4EB029B53989F064537D7DC4A656B32B8BE82337930238D5C796
-09DE101C6546A7E33CA597E4E8F609D22401239C22DBECF530874E7EEF014807
-AB37D0882E4569B95D07E1AC3A7C37D75C1C6060DAD38CB8F6628004FB410A81
-81F3D6F9D375B3A01C76E9A5A816A3BC4DF9FFFA5DBC469879D63BDCD499EA88
-9053B0FC67214D53852D53F072A65098D5F4D21353CCF45A7C72B87FAB90F0D1
-7A0A7C2785610C8A01EBCA23C8DF59A6056CEB54C7CED7ED2F6C35A65C9AB4C8
-EF3E4753136F2ECA5D5093B70C4A70045DFAC28A854F0B96790849EA3E276C62
-25B21178758B5769350F9A6380ACFC3726B4655AA6CF9EED9582B88706E6EC7D
-E82DFBB3EA1C9D3E39C64E1632AD04A6AFCE6DEADC7473C2E57FDC36C52DD63F
-31EFD2F1645AC7C004D572655616FA55B74489CD7BC7B94B49D6690A6D6E29D9
-6D39014FED4A381C1424BB4EFB306790942709635DB330D4DC506AC34E9E6375
-2D54D9731506DED192E59F4BD5826DA59B907875C8ADF5402A969D3A1ECE6DD7
-2C8F3F13B291F3E32DBF307F0A9A2F1486D7F72AB88D4D10C0B2058438D328B4
-7F10A539111C51C8247CC6DA45F29DA7A70E981EC9C44531A748FC9DED39C4E3
-B0A65D6DAC8423208B20B06371AAE8396BC29C9C3A49A49488F50517C0BCB217
-566EFBF97F0EF490D3E0F3AFFB17C8BD4297A36B63700EA93C52365B0E88155B
-9525FBFB909A649A9846A16F77E19225F9DDE5C2835D7426AFAD563CB7BFB410
-5935CFC756CE19D2989A84F22CA3E9AA90621749AECA3C8A81702C418846AD87
-CBA63197A06EC59179E27ECD7CC714E7F69EB20422E28F9B3CC032389950DFA7
-27B63A98B7AD8EA93D178092061DA799F93A67E5B32199DEFF93910E0B9D4E23
-E5C2C11E51CB75884081C918386B7639D79F82BB55DEFF63EDF40A04CA551F16
-19F0974E82C34CF257776C9A6F694E5850B5C5BE3C5E61AA23AD12A03A4030E7
-6A1F40695A02AB9CFCFD19B9CF3606B8F84F2C0327436F2C79E6A6DC9399E5B1
-27D646FA17BA49440B8FC385FCC45EC0A5F6731ECA5645538D909C4E3733E6A1
-41D02CB5C7072D729144CA7C1B009862F18EDF7053E10185CBB8F6E0891BDBF8
-26396E41C63F0DDE5D7A24501EAAB8245C50D0492220ACFF27025746D11872B5
-00B93A493B39E118D666C221812B6BEC53DF9B5A04AA992774D03B0CF6DBEFF2
-838113D0195ADFEBC6010CA8F578F0984A5DD3C857500DF8C6C77A1136092B72
-FF85EE75214628BC2513DC49FDA1B418724BA32FD67CADE1C5FEFB1F3248365A
-DC1E5275B7A9E243BBD0E595CFCFA2900CD2F53B72B6CF3D489C410E00F3A105
-E38E714498930C5D0F57AA3388B0A71BF3B003B54BFA359955E433247B0463B0
-5D19E7D67C38263E366844533EFBA2EB840FC31D0DE664753FB3927D9C914683
-A1FF0CD308D9A07AAB051BA6681A316389F9AB00C41C7CEA170A79DC52D605F4
-965F8CABD2D68C7795055DD0E391386ACD1D0E532671082D805DB80C8A461673
-3CC4AF55C1ED96E3B5B7C708470E487C1E2ABE73B8BD55B7FC7E39CBD3AC38A3
-1B3CFB02BEB17D460A1FDFA29A6EFE4371B996D2E4CA5DE19DF3912309095775
-C792112C84BE3765FAF21BEBFA04CDE0CEDB38BD6192E23F81F496895D7393FF
-1073BA5C3A8C865206A3CB68A98A3BE586565EEF92786C99ACE1FDD50D60C103
-A936D1946B216300939904B4AF2B8F4D63B4F7255535291109D55D8C39152DFD
-0BBBE256FD2F892362D90AE9CBDDA6F729427848FCF97424122452F4F15664EA
-C7FEE09C6B19995BFA5E5F57714F01C892DE78E3EBF82824E38C53B8877D515F
-A126028A78DC60D1F7866540EEE5DC1077F72A4A04C4053FE19A686955D91D11
-0513CF5F50081F3A267BCC6D30F1B0D543C392B4008E56C59CB0E7AF7ADC59E4
-16EA70B6F6FDFAAD57999AF5D192CE1C71C398D5A8D62A821422A9EB79224FFC
-9403BE1E9B39E87E81AFD3E08942BD0EFA615E921CC865C7E13968EEFFBB96DF
-58502A5E3A6B80EED40FA7EEE9DF32B60CE70154B5F9DC4265B4AAC0F8B872CA
-659FC2162A0BFF85F55C45152964EF354A49B743CB88CA1C0550CA213F523B5F
-F8CA3E0E111A18C61850454D8B5CAB4BB9FF96F0E10A1C92DEF460ECDF06F71B
-E09EB607B2980A08187C6DF5BD91F63DD006AD0C2F8A3DBB5C9BA0897E711DFF
-3B4BCAF937785A3CAE7A554013A71E7D0E7A2DB6A652A9859C6C475D9F9D41C0
-25CA2595350B3F013FC3C152D3B3C511508A4E16452ACFCB4DDFF29DDFD01D3D
-09F7624AE4A50813D70229FA5B012E2689254EA3BFDECCD3DB9D43B2B77FAD26
-007A632D14845C7B2656242F0D78AF4883F632150367A685D6045C0AB7EC32BC
-77E0BD7E208E2887B211E2100756CED3C8FEBFBF37D5DB921C7A1AAA536A746F
-640EB7808987F463F71BF35A0EDC8CD2DB64C0854AA3CA221B73627A48FD7E6D
-B64F7967B0153C1BBBBE45A4073864F143223F946672181D1A8A97D3EE4DF997
-633E5348F62EF49BD8DB1111584E38F7735A6B205DA659ADBA809842DA07A86D
-15AC9439CB432BCB8AA975A0CEA982F27F7AFA17BDBC07BB5A66AC79CBB2BB4F
-7FF4E5494D71319122CAFF0DD7C139AE2FD469DEFD76AF10A93CFE5C32A41C21
-BC116AD3E2F8416FEA532BEB14033D93E1F188FCBB649B21389A38EDD20E039A
-D0491C711C671B2303D541A1CFB4724EF133964BB1EBAE34C0735755D8457393
-6F0D6F0DACAB0DC46AFA06FF37A42080737F8AB7829BA634C43A47C538CAD587
-0449F1AB88F5B1BB56FEB516E8B43C15E0FB4DE1225A21A1698FFDE9FFB22124
-228165B5115679E215876B0B29DA91B21747D304262ECF1D9394F2DEDD8D6A4E
-3D3FEDE27E41B64A179A226A806263972A3EE59F21BCB40E4B332EA7FBB2A138
-E34F68A0DBDC6F4562F9E3D2FADC975BC0A8EE8D8780CBCD3873A49911A5ECB3
-A3E081BF3ADF691C08E04B6316845C5BC2E42DCD519D71D032163E32D48A16D2
-D5223CFA7CB6525C13A28217246F1578A5403F509EDC3309140F7BAB188FB97B
-9C35B6B3B10EEE8A5C8048CCA9A4BEB397A4F57817B4EE4CA387F4ECE353A1B2
-F0C00CB0D563C4C664561D817D4F7261145425622D09818C7019A12E191FE6D0
-F4647FECE6A520C96FDFED6A365B668D335CFD199FE9549171DF5199AB83A3EC
-83C7B8C00DE6BF293287AC50E5D0A81284647881C083A7879BBDBF68452EADB4
-149ED27C084F2E7ED50D556FE790372F4629073C7634062868C0F01954043259
-3C98E2F40C4A2B277B9BEE035DE673FBC8B3FE5542FAACF076C5F875F3AF5ECA
-501ED2AC96892754A4DC0845E847756EFD5407AFFE0AEEFE8941B22F8B3C2C85
-DE6CA54594767E0B8596FAD54C90AE3C4EFA793120D0F308032D0E7DC3206EF1
-0C681D9DBC0FBC26330D5B44C0BEAF71F1DCE7E69EF10B18A01A29EB8D83FC2A
-73B4FB230A3036D527D7F6DA5903420C7A6283FFC85E51083EEE085B21B94468
-BE4AF9BC00636ECB2B75B686EE93ED5E1C42A7B00FC2F845C531EFC55EDBB672
-0C26C9D446BE286149B7A63CACDE7D20015D21CF191A2A9F42218E31A82679CD
-F9255900BE3AC0D2D33398E0F70D1B3486E541A0B6169FE7A94BE41B2593F639
-2CFB3489ED6C46B9C81D564D0E92FF2F28FCF99D1D4738316FA44232D8291A84
-EA761C63655548D1A892F281F839085554D4D3E98884458B3C183EEB6B19B234
-D887657FA7F09D6918930207EC00EB91FA17D8D904D9C577606880609F6C86F8
-40D31234EFFBDC53059FCDB658FE10A1E1167E1BEED54BFC71846DBDE91CD695
-75C3572DAC845B5199EF98BEDD79B08500B08012B728502325CDBB8013BFFB1E
-088DBD1AE35601F4E9B2A4BD7E8158596A47AB71D66F35EA9575D8321D17503E
-F28B0B5B78A99ADCC93CCBD359DA2CBEE7CEE3B087FEDB4667C9F6E8B82BEA09
-9B5A3ECB3A09A03CD6C7E12160CD9D70B18A885ECE9B3E91C1791411893ABD3D
-4108F07CF8BEC447895F931F33561256330BF27F73852446045415066A5817DE
-CC1BB3C3718A79565127354CD687F5FF1EBA545F286C7870260882F92870BAFB
-F3F9C7D44FEB6087260BE7851BBF2779EA23B55C22BB40B610493070139FAA4D
-439613BEEECD27538EF4068436BD321725E7C192776C9AEEBC63CC817E9192C3
-3B2F08C429654E590CD321C73699642B678011B2042027E811F18DCED3F04B1B
-B71DC8C88EBAFE715BE890E9B418236CFAD3992F118118CEA637EE33D4773B7D
-FA50CE749EE655CBD34DE654ED2C599B423AC51BE1C002B7065A80634E514896
-4896E7C6D88BE2B1F77A333F2680BD616C5B511F624F48519A64FF0C6367D012
-006F86BBA304AFC449D8A44B782804B2BFECA070C16443EE01B7D347A00815BE
-A877AD0842B71807389860B01837A1667B1CA974C702674B9923F477AA3A3A2E
-7C68840F054C33E4C961161EF96BEBD0C22AE027D6C66C1512502C09EE2068D9
-E8DB81F1B3BE98A8D5378773344A8075FD17E6ED95884D1450D841127C94E8C1
-547D7E5EA2B1C7CC0685C7140CC128F24D36AD6E9304490553F57C0BF0254E96
-64E8BE7D5E66A3707F97B62DAF7FFA0AF208B1E048CF8C1C9FBDF47758BEA9EB
-8A8746E826B8057B8C2AE11AE60C8BA1857BCA4C910F35D9F10BBC4196AA4B09
-BFD5EA6DD1144D26B7F890E4879C5B5771EFB5430FF2CC75A7338532AA4EBBB6
-99E319B3CCB5558A149C541A15462DE5AEE476682F356C8F22EB0CFA3EEDB735
-00B7AB93075F8B08F0A590279395358AA45B494E6BABA94AFF8FB367C80934F4
-7EF060E35F81F66E223B1414D05EE51AD56033EEDCBFA3148E8DE3D2AD5F9896
-6207C8D9DD991262C989EF4FF4BA86235BFCB7BEC2C730AB6EE2F5771D92FB32
-FDB235CEDD9C638780268C77EB39AF593F5DF2E1F5906F14D53544D54E94905B
-2E4096AA8AA145AAE060E76CB6D6097F6D1048A15B38B2C58568C325471CE949
-D7EF40FA6168CFFCDA2EBAFC3BAD6DF806A94C22E58C73C7C181CF0ACD76AE12
-9749989C31BA69C7965DC0D8F82AD88B68C18372C68E1491ADF11156778ADAF8
-5D4F99A31F105F1C3B60E7754F6CD843675D6BEFA92F0D1E5C66227FB44EDE14
-1FC8430DFC4A78DB842D74FD209CB8E31FA51E21237B2FDCFEE3554FDB48899F
-44090D381999A8251C873317A95EC0D40ACB3B072F8F08E43E9080F7AD582176
-B65F5A582E30F703F2A0C47D1808FEB30F6E637629471BC3B41B5D31593AF3BF
-B828EDAA29AEF1CE8B6591B19F22A9C5C8E2A22B55F0F5DEC7E6B8FEA0674109
-DFA90E882091ACCF93762A05148F8DFDEDB896855D674FBFD692FDF0B8FCA95B
-722BE85B32C776B59A13D1A2554F39DB9701E3B3D71A560E05060D0DFDAB6D6F
-34FA50CA902AB69D62188D39809A5D724D887AFA0963BA6ABC05ECACA701FA71
-BE8204871B373A02E8B91E110A17DC99FD87CBEDD32E9A4C48A344D157EC3D21
-665CEC66C67B204C9D9FBF164C026F1915D3A766DE2A2DB4CCD990A463A93906
-1EFA2DAFF7A7947F2931B5655E4DC0BA96EB7E5F598D435F5AC39FE5626C25CA
-8ACBBD0CAFC62D33B27A350B866241061022A0B446795B9EDF3D7980BE2A1465
-8E4840818466F9CFDFEE203E565B6E6EE9F933884F84EC1E23A8644CE4A79E79
-841662C13FF90FFC75FE328E65D0284C7792BA60E1C1D0E2CB3ADD2DA5AC1EC8
-CE9974A7210B748B60C28F7F655355EDAFBA2DE76E1157950C62800D65263B2D
-CD97D6E7836C0EF36E2A2B7B916E8D58B35B32776D24BF4E125EA9DC3C2D9DD5
-2CFED715F7661D61F59A282622FA6C76F044F6501B33FAADE63D747A72D847F8
-F99013B92BA34A89E07C61FFF30CED15B2E616EDA7B0B0D42EFA3916C7095975
-9F2F4450D8144B2D718A3C230A4C2F787D01BC12170DB2CA342B3D1F97217C77
-D8CAA9E4B48515AF06CC97C03F5750A8B41A645FB7EC8D88C460C86CC304FAEB
-87421BF12B8EB0C2096B17DFEA3A88F68767D69ADCF4BD64CE1ED3302871E855
-5E12A7E7A04D0D0734DDA06493D557B2FD8BD3A23712AEB746E0DB51CED4388D
-55A67F19F85BA6278E4912C7110D855A246A8C540EBE1E4239F19DC97F928552
-F6C126AEB1F11F4E21D96BB525C70927F92A7754992277B53FB85124D0408FBB
-9A6FD79F32F972CB5CBF16CC7FA05ABFD4D739FA496BE03A427072DB47918B50
-43ADEEA672A4340F63FE51AEB92BB16AC4AAD2AEADB2A9B604CB00063F235A83
-14C7BC354A2DD6B74F13E82CC1E5B83830F60A0FAE73897B8E12D4FF851366A1
-6C0761E01B7C71F9F7DB08DEBAD2C72705DAB8DA582AA2F0447A3C8AF5671685
-B6372068D64F25DDAAD9D610141569704CD86724839DE2E3BA2847DC3466E69C
-851F7764B043FA59A4307A434631DBA05A77D988A6A3E2274CB5A8E6BF71B50A
-D3C52395BB8CB53E9007B2F67B98677EBE4F233274414432B8B19F969BDB6D55
-B202EC30D26608A13D1F19E323148EE41F481EC45E38A69D8E6BD54F3CD5A91E
-55ABAC1492AAC8641B0173011C5A5DB8847EA2A6F96E01C400F6F138703C14C5
-C6C1501D1EA70AB40D32AB3196A07E940F93F96560B3F0FCCF70409EC14715B0
-42F53DD3238E1237C2A966BB5D32E76C7673C21E2E0501B37FBAEC23AE80793F
-9EDB34CB6716DADFAE94AA34D206D38248E541A2A725B951990270B105793603
-6551779DAC75BA668368DD12D1C1064A7E7CB744F81E6F63133427F01A4A2C36
-BFD7080607CA7C4EC983F47977A762546387DF1DB87696F922E19A7C1FA1214A
-CC77A031A170A8463CA0F8E5B74522745659E412122CD7F96FA9DB92BBBD5F85
-025FF8C64861237F7ECC20775F36375C7B3C2F93B53D10DB66A4950F8FF9F93A
-27F086E7CD3AC08533101F56BD358B042D60522FC8CDA226C8170EF702DCADF3
-AFAB85B8429DCCB9949BB2FC5EC59A4D5BA820803A9D58CB0F27E328A8038090
-426668CEFCFCA4ADDABA1CAB0E0C526E153BBA35A154B4E170C25356A553B5C7
-F924E4088487FFB070100C3C13F3D492BCE5FC75798F3906C8CA0B38B9B52733
-0783E8615695E6F53F72EF10EF84E7B6BA3EAF3832F1AF96CD57A4B13353AF83
-8ADF52C46480220E4CA48D5BB8BBF9EBC9F0DF4149790613DBB0A7E3FC41BBE4
-655D1669645BCC6F6F319C490E8C9344A3A086DAC8AA514B0E4A6002C7564CC8
-119074B5CDE906BD7EBC7C14718F2113D11A28FEFD1C94AFF1B142BA226F6637
-6A0E546E8FC0EF0E6B8DB79553628574E0A7F08AAA6321025F4ABD65472705FD
-FD3999052A4D4F8E4584771EACBBE44BDBD9ED9A9123D2A3A15F96C18AC8C7A5
-6C17BDFCAAAC60BF88D651888DA06F227F567037E2A55DC24C6131A94C89012C
-A91F160A0F7DAFA03B15E502B51C0DED7FDF093DF4DABAE5705E5823DBDA1C11
-380972EFC4789A590C34CE915B30E27604991017A95E18D07AA8E52428F5EAD5
-560F43B0326D715CB7A486201E38FEE71D15E19F23493374AEC3051DA6EF471D
-B6F70E319095E0D74B6D5284F4C02BEBB4659D35F6854E225CC85B252BB2E3BC
-1FD3CE07B39200BF9E5072C05B7CBCA2834CB5C07AE54305B96458A59E9CCE4A
-BCA04748F660DA3BF17D2B915CE0E5B1D327C65FF8B645DDD1FA9D0D48F9BCAB
-243C1603E9423004FE6A55440300178BD9C433780B453684E6E159FBA89A1A7F
-4C55BEA025B9DA02BAD177E925E3848DD56684D6D7A306D8580F9B454DD394B9
-766F6E623F1E233E658E0DF75D9666238B166292663B770EDD964B910CF01426
-5E296C3533AA94DE3C7C7A5A7C66650CE904429640C38937F4AD35E29CA2CC34
-CD2B4F23B41EC48501CC6695B7A592572C7805950F21014BB34F07785EFB9B46
-87F6C196EB98BC0488BCF83D0E35E74DC5D28F631FBAE2AF84ED00F9478ADD41
-E55E6478709D133C00E9736A5B1244B3F7E1AEE4144E1C12962F841DBB2EC103
-8D6B21DEE565927696C30B32786B0BE9EF519CF5CD028D1D9DB8D8DC69182DA0
-9CE848EF34B3AE757213641E0A5DA73D0851E1B78A34D13DC88FEDAE88E6A36F
-F093E4F8C24EBC3C9E49BF6A4E73F4626D854D9EEE82472F7CAF7C70E6233374
-7261842E3CC9ECAD676580F4FA0FCF333D00EFD80A775578480CAD913E6DE76F
-EA34E2D59E5C313DC36206FB843658462800DCF5AFFB5B569907F9614D993852
-20DAF6F9EE86C6DE02C734EF4C399023865AC14A79A02FAC18C6DB6224C7D525
-A16240E267FA34BF98285B923C1FF866E21C9CAC949A55C53A54A0CB0BBE0F00
-41D3B45490BD44FD8ADDA5B83EF45F74D68ECF3406DCB2E212DC93801D571DDF
-A39518F7FAEC9B48DFAE47AFCCFB1E1C6FF0F88EF736D17F7A786E1904816C09
-02CFF0AB99C67AF35A7373ACD5AD404770FB25EB4492996EE31F9E015E0D1D35
-91BEF50A2808002231F85CFE55EFB82E25355E4747007AB4F8E13CC859F692A4
-6274A88508498CF85A6407B9D604C0EC3E82E28D8EBCD654EF88286164800DF6
-5DE8617392C671942DB149AF1CA200B16BD11C9A08DB458F0F5FFB345EA6404C
-498E9D5F9974F14118463D5A43A7E882B272A6215560F7F09FD7B2041C08006E
-B9154AE60BBD9293909621E8085F24C506B1381858B9F23AEBC2F5B3FE9E8B46
-B0D1F94A8E3DB22B42135731CB33B8BBED9B0717A0E9D46800F1E38D9DEA3C0D
-BCF7C39527556C9C8DC7385180249E6FC4F4D7C0FF0D6E8B441ABF5F3E630782
-097EEF387F129D44D7B228F9B1406C6CC2096215CA07454B341DFAE7EF513DA9
-476F91A4FF009F4AB1DA8F0B1D9A1AFF2609A37B709525EA79897EB7AE543E9E
-A6ECC2C09C4B50F2C05ACF7A115E6CED8A532908D1F29092C519529145130524
-B57C13B5A58F3AF9F07ACFD03B974534CB7E0AAB902627099C1C2AC04F6BAAFC
-F74D21BA432022214F300A1DB1BD681BFB27D63119B0A1CCBE145395C15264C7
-82520AFFF25975EECFB1093766E4D29B233367F842B725F40381439CB20A6172
-75B4BE58EC62C2AAAEAAF52A3FB9383064E38CF69F44D6BCD5938DB6F7160D26
-4537BE55A15193F4DB40937960C186B6BA5258A83B53B40986B72819D85A4C8D
-691EB3CA85F1E83E1333EC2F6B46068EB59F89124B6151CB22892B8EB702078C
-2924DCBC26F745ACDAAD84FA33254EDD96D6E61609105A65117D49C807F394B2
-014160CF85023EEA048816572EAA27183A02CA9E7F2D6D732F1D0012CED3313C
-AA2CC72C658303B22356912EB88A49B0343E9479CE65881E65DF43ED475DD0BF
-7EA2B1C2BD686213841019D221A675162D02E78816B9D3659B1BD478EB28FDF2
-D4CFD378F4D6EC98474E3B28177DDEB81889CFBD29F476D674AD4CC74C8DB777
-FB1E175B03F65A59658BBF3A0E0B8039136041DD1ED2A25AE05888DAE3D20FEA
-210D2A2EAFDDE2ECAEC1E7F085E47C9AD131B40F1A59C3CC0A7BCEE24E2B18FA
-0D5A7BAA52C4054B54B6A9033CC3E346407B69905470AD16E5A74680795E56F2
-8697231A95068D78AAD19297734E09B93B0620F58AF72456BE2C0F7563E578E5
-4D3E03D4891460692127ADA0E0676ED9FC379E1EB2C9A73254D5D4565A9E6E61
-FF5CD7CF907E31A30A2A3D892B73DBA3A42E7FED37EF8BBDE88E3901EF507E8D
-C99F6D32DFA4799DF696F9541FEC06CCCF4FF2B2E374FA11F8BEA527D116857F
-E904A85EB3B876FFA226C570DBBEE692224782D90827B22FBE62CE501BEB28CD
-FA5BAC22843F80B64C01EEAAD90CC2627A90945C9E946F4E6BB1FFFE9F39A806
-052746A36D4E591090D72206620BB8E38C05A088DC2467DE7516C128127508BA
-746416EB47E3ADC8A9B77F2FA2E80CFB614481D9F232949CE0E7A746EC6671CF
-86DC2FC324E6A97398E72F74F6B730E3998ECF8FC047954E3D0AE023A4536F77
-7E921A53D3A732E80EAB5D9736F131FAEC1A269FDEF4C26996A150ACC14B0723
-72946BC954B9E3A8878DECF71CBCB2C72111F5A9A55614EBC9E2D01D7BAF74FA
-3BE2CE3DC63B6A993129A627AC8CC80FD09248A8F8838019F66C99B4271A682F
-386C8CF988290B5C07E1133ADD623C6B62F719C128B3D4F33CF34F1A44074768
-5C9205957EF01DD3E4F818E8DEA19B520B9ADA0D62DA4BF4BD36F287EAB92DF7
-664436D8282E9938B47394DE9F4E91ED8A9DD0CA6887F404D90DAC9685C3EF4F
-5855DA4329A1BFB3A61F064F61197AFD54AAE2752FC1FA2D233E4952E6F77BDE
-FC97A410B543CF4D52A3FE02FCFA5C4CF9A37EEF946E2077BDBABEB28372FF34
-B4F037F4DADED2EACE026F6535CDE726EBF37E5E4456B7548E2CA899A73A4615
-462891A41E81824D4A9C0732C4B02BDB94399F202B7EED6E0F72D81532374173
-D0B6C753CAE68998EA8D869CC05A6F7AEB9CA27AB0044201D596C3265CDA1B79
-023F49245B0757E69EEF30AF41018DE7B3D521EC4E4AE4D304C1A4BD3F01E406
-1AAA7E0062B61E711204A5BF5ADE97885AAFE3F8375FDB8EC3B21FBC1EA92520
-7D0E19BE2CC2FD1282A98791F993A0D96C9141DAB5EE8CB671ABC34B1E9C6435
-1E65E95EEA4DD47E0C1CF9C9C687C623C8EB2916FB86973C2469616B9A0CF8A6
-3D7F2B327DFBEBC63C7058DECD155475D297EBF1445E0D72D03493DA80020845
-BB7E57BC1E7C0A03114EDFD47D95BAE5C58D9168ED879B965F16BCC424DDC51F
-4659AA4FF9EC747811E937DE5A7832C1BA3DC99379CA36CECFDDF73697630805
-728EB9E00F5BBA4DA9C1A71BC3588BBD6EFBE78325B38C9FEBBB35FF6AF34B68
-604B713746811458FA69AFB294FC71620732C7C53A8E936F2333565861018476
-390548AAC2C080C642A20B6E4C03F6A50E438A11211E737AD15A0CEC2BDC3C7A
-082A90AF6AD020A8AAD22836B7197719A374758305D39EE8ED0A1A28E5981719
-9DE1CF42A2B8093223789402C7DF57D9D85232311A1104063D3CDCC7994AE6E9
-3208AC98DF93B4D0572DDBB1526457292420B85AE4B45EB5D89B9A078FE8DB1C
-84A8AFC65D712ACE75770929F58092E9D1FAA8021EB562A83AD3976A4F293B1F
-78F622CB4771F383FCB1AB8CC3FBDDBB8BE2F04A4E25395C3123AF12C254F5BC
-4DF587C94797236D4D17CC6F94DACCCBDB46F1F5ED3E99728F512D0E51D69346
-9412EBF63747C346962EC8DBFAD170D5251F1F3C93BA929D7FDA7F5C83845F0B
-12E294108AD94F87D3157E6024A8F24E935B61D119567ACD5F7E9B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTI10
-%!PS-AdobeFont-1.0: CMTI10 003.002
-%%Title: CMTI10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup
-/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTI10 def
-/FontBBox {-35 -250 1124 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI10.) readonly def
-/FullName (CMTI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E
-2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A
-EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD
-8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF
-CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2
-7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC
-32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09
-482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF
-118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381
-1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC
-C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA
-8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4
-61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20
-C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504
-3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70
-9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A
-D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0
-125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8
-34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A
-30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9
-39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49
-9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184
-2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF
-0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348
-3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D
-9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757
-802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28
-FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0
-98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9
-5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF
-AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD
-A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93
-5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815
-DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37
-4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC
-8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B
-A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362
-E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F
-42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96
-3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59
-A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F
-7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4
-49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428
-D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C
-0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955
-CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485
-1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB
-8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388
-6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468
-83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29
-60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284
-42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2
-1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A
-21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA
-206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9
-D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7
-7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B
-55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4
-6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762
-4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392
-871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E
-9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645
-DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5
-41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8
-2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F
-220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001
-A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D
-981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F
-337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8
-139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B
-1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC
-100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A
-1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905
-F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB
-72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7
-A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D
-310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928
-7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989
-1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2
-8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33
-80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610
-3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C
-C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996
-4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB
-865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B
-301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48
-3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9
-1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B
-E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29
-0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0
-30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E
-2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0
-C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89
-14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A
-44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC
-CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654
-DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34
-9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87
-4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3
-2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676
-21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26
-47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4
-F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9
-D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F
-03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5
-886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8
-352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD
-9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0
-9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3
-92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F
-821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93
-3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0
-47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0
-F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B
-9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1
-AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71
-C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978
-B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED
-D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD
-F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E
-81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038
-970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C
-6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7
-97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668
-A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE
-AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594
-971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96
-514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7
-8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C
-392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170
-3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F
-464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE
-C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E
-F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053
-911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6
-261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED
-D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA
-147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D
-C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516
-C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB
-61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD
-FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3
-F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C
-2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C
-7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193
-11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C
-9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66
-C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3
-1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692
-5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5
-6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0
-EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E
-F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23
-AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D
-8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94
-376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6
-B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B
-02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56
-4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF
-9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD
-751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198
-3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A
-40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962
-2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360
-D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A
-0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E
-8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946
-AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510
-6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B
-CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E
-DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D
-098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337
-900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B
-41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149
-7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA
-2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC
-A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD
-EA43428C6F79C332342E15F75B08A1ED360B3511F823E75AD49BA7AE63B19238
-2AFE8FAC2715E2FDC895E95036D23127557837506A3B542B0E4651CE2B89C252
-31EE8ADC26E2C04E8E30A9CA12F066CE01953BE7867171FF6C7E834742C36C3B
-58E74E4B482CB85FD4D24DB03D753F260A585D552CDC9E1941446F2F5B45FF24
-2DA4932B973139F328E7E92828B900BFD398B6F41DAA0D6861C66AA7F5E3299C
-87A5925CE0E0F9E09AAE0792954A1F2C0AAA8288DEEFFE579E38A3CE8A943EB4
-55322A87C1634074EBEC25F724DC1BCC1BC10458CA6C4395659B0DB6B612C151
-557CC669D8DC37769E59A5AC6BF061C79FEE265DBB59520EB8FFEA273601D1E8
-2984B8AE31AE343F37D03E2BF97DC48AFE50BB6138C7B9F9B5E28672A37BD8F5
-8F8C98DC43DB22C6537028798198E2D3B0453ED72487267D653DD50F1BBBDA92
-833A987A95FC1F275B90B581B4BB62B6863A4CFAE37F715EDF3EA5A33679FEB6
-4847ABB4B3D170C275B9F1AC3156D731198DACE0B051674E85B758500AC9FBEE
-ECC75EBBD85F8D62AAA328FB09C6526F853077AEF7EFBFC2B6A29D6D508B1E19
-EAFA4C67EEE44045B9F15B9762B3DDF5CE5C18B23A5C2F73A1F6DF7F8679AB78
-843AA41FD2A7DC02B45B729EB76C66A89F5F76E5C4A0C0563B1EC5E75D72EE35
-A7F1FC89216B60D82F6F2B8DBE85E4FF4D63712C689E696F60B52AB622C2A4F9
-37C380775EDB72638D3F81F61D8D74C76D813DDFFF35ABD9A502F2BC7FF65754
-2A8660A5A53E0CDC2E8A95B6E33CA153EB711DC796D313C8183D707D3F0E3EE8
-BA65E0FCE3F1C07F3D93F77056688B5496AE35A6BA0B59619DE78640A8C3F7D9
-7DC5E94894E1E63A7D80600B945B1CCA50F1B85F57673C6CE09EFC4E229D4635
-48AB466118D273BAF7C1B52A067A88C00EBFA7FCB378F1575BC0145F294E6F7F
-8007602C6560476FA20BDB91831B22404DB1C4C167594B1216C25226D262FEC6
-F5D0DBAC4B8D743C669CFF2068CB9BCD2DAE8CD6EE1B33BBF7514C4941AFCDD6
-89B75F67339B25AB6E267BCCC5E2118879AACCECB5CC2865802BDB4D7581F5A0
-E81AB0F7AA143FDBE743E16D028E46BDA94AC2CBA77DBEFBFA32E462EBCDBDC5
-B86B63333A0C05C65D4B351948D03668F7A86A8A1388C4604675EA7384F3398E
-49404AFCE19832C975A668FBDC29D06268085022982F01A2DA1DA8B8DD5F4584
-75F98D7606BD6A45A403CC026A4BD1AFA63E1BC1034C1F617E14A1EE9543BF7E
-1ADB8019F7AFE089150EBFC613C414955363C43E0D82ACBB01251C070E7F1040
-602A58B2BF55094DF2BCD2689320899F987472681D0933A4BE78C2ED69D76E60
-2C437D4D3EA9C8D25588F1689224D92CDC65AC636325718AF7EA47946CFF07C2
-DC0FF0BE3642ABB0CC38BEB60E00B41D45DCEE44A71F11B99CC4CC22C5A0C62C
-074F3C2FB093560B7FE9B3AAEAF3B563D1D646046174516991A196A915CE6918
-CEBF16946487E546C6E433A5C5B9FB7D5B97F2B4B202F892CF5121199EB48642
-4448B45EDB617EDB931969D53B9C200E954B4A6DA6617E3A56D72EF332FB941F
-4694BAF21CAF8473EE2767CB5434E955C5A08DB04F67508AA1F5CFAE25FBC9B3
-9FA855CBF2DFBD04C656532230B8A2A0B33C7EC74BF3EB2877DA369035C976C2
-F3227355AE2E740152A344AC5E0CB3D04A1D4273A54A35BF8B1F24797246B5E1
-CFD5D260F4D5E5131120AEE3B3BF1308B9E55026C969C5451EDA76E0F06E75F2
-6DCC258952B63FE0B7B99B39D5563AB4F7CDE57AA7490C71E3CD9EB563E0A9C0
-8C54E64E3B537A901395E33847C6FF75C2B6FC3536E8F990C18A6623A00AB558
-272AE4D142503BF0B82A13EB6088D27E0D8B319D6BCF1E0E8EE94C9ADD6D4645
-A5B0FBD17AF7CB1E1ADDD2D822A76F6B9338B6B459D4A67631292AA028A8B976
-8F9771C890FFDF7751F3079E36D8F92AFB62BBB960A45891B5FABC8E5BDA1348
-5AC23D29879FA27A392E3DE732D78EFF7168F2FB7B0841C8B3729FFA2B515885
-C699663626473D04C1421BE24259C91B9FE8F63DC99929D9741F37E67CF70E38
-3C489E823CF0F62B020CF576753734C989AA1A360A21A137DFD644ED2197032C
-3DEAB8E7A1306D8DF7E36DDD52A895488E63701D6A69E634EC862DFCDAC01BA2
-56DE73FC77027F65B89BF3188686026D0C2A2F22DA92B8DA0F6476F6252D8066
-D9F0AEAC5E6F09120646EF77CC81FEDB1BC8E3197E9CCA12C941152387E71286
-E00B8ED61DBA85D2EF5550663A1D2C7233D6FDEDBE947241585C4B9580E7A700
-5081C957D863FD2DBDBF56CE8DA67E3D6A8A47C3BF38478D3D4D72A803DEC0D5
-797CC1ED5B005CFE4A46CF549FEE756419351B89B8DDF13BC2EC18939901BA5D
-37ED1DBCE8DA072938DFA9585444FA6F09CC32C7098E2ACCEEEDF7D117235385
-BD95CE9C7C997491613FA253743E7D0B03348072F516B7436A78435B19C828FB
-1712254A679503CE81FF1761ACA3C3BEC0C1E2736A2908C7A8D6F30D86F7DD00
-1BA2200908FA4180273E50863CA552868F1EE5EC1D8D47AE159B4A42C65F3D7A
-73332A618CEA966BFA32B9AEFCE9C7CD4678B2301FC1DB91964486B62E28DD60
-11D123711C6A2D190F6FB97ECE36679247507514606287D049455AB9CCF928CE
-CB2C62D55BBC4DFB1F8A033B7D42D8D1119D71F616205A91B48C7C83CB2D0B39
-15824D6F324A9CB64E6C09D65C478F8753905E1A0B094D310123FBB7CBC4CF71
-08D6381228C2B6C393E8055AF7D226FFBD9CF19379B4E7F75938D5A39E3410D5
-4E2BB197AD202DB623844B156AD0FD80AE4CB0E8B7831CECF25E15753FE27E19
-A8CF57C78C6D1CD021C6FED91E81AE1F09F1F9CE7D8CB480EB559729BAFB507D
-B99DE23E7D3A9FD04345DDC7E8E498F2229CC33A991418E69A9366ECB375C42E
-69E1B73DC94401E5E7AD9CFE8086432F8026224CD42D9A1EFDB1B3B0D5BE74A9
-186F30C774BAF35F25D4B0B1C9C791CAA87015D3A7519184FCE9DB2439A98A49
-0DA01A0A9ED463382DAAA05555106902836A46E3651871D20B65879902C0D93E
-C8C3358A8F64CD0CA264614EBE741ABEC13F29CAC4625A1A7301889D9A994416
-24BC8C7816579FB7D7AF946DBB3D911457CB2D0CE74BD645CE388BEDA28CA1F6
-EF4DD197628362D38ED6499657B1E45D1DDE460ABE0EC838DF3BBD2B90FD2245
-6DC211B771E1ECC3E294F1B767BA0F3D041BF4DB159EF01C3AC7C00281A675A7
-BECDF043A5EB64CB6D99FC8E7876EA1216F005A7A63EBA79549D5B6C33FA47BE
-38466B6D62D3D00C52D9BB7AB23DD4A4C896D3A5890E8C57B7ED5A627CC7EA4C
-0BE63CAA285E1A35808FEE0ADB1FF9EA3B18EC1040560B1FD950D7EF32F7F958
-5ECEFC1C01A98E4DCB69934F9314316D3CBC0AD4A1F68346CD40AE6E3A804EA5
-7286646FB2A7ABFE62B300F72A0484CC51D34D3FA2B292D308D605576D56EFAD
-DB68453A08E5B45720C99964B02A5F517A7CA00F6976CF1F6CAEBCDC1772568D
-14129CB82DDE0705F45EABE56EA4DC5AC1656105957F509F2E8AA72FE5C2F830
-38F2BB415C413D54F348903AA6B614A3AE99EC4B800D4AA2677BC588B5813A94
-F5C2FC3F8B09E58B00DA92C2946D5B9FD8DECF4E0B49BF16A81A6F19EA1FBA6A
-41FA0D679E6CA980C541395DD15AA0C203335ADF3B0D48D519816D46681993D4
-A857426475A068E6C30E75E1201524D6B5EEA7BFCAA429AD5DA4504B245B23D1
-9E5E2498B1F63A7E2B7CC42C3E5B75F075006FC833724FC05AE4157F640E7D1F
-48C35EC8DF3DDD461EA211E48B2B3E628BE4A523680BC78FAC41FA1FCBC6FE81
-17AC84A895CB2CC9CAE4D77FE1ADC8C8A4797A3F1D00E090282FE2116D5848BD
-1E61B36613A89BECE27188CBE9E0C7ED75385BDC63BBC9C55E2191F1186917F8
-423A10D8326896DF44D7B2A5AC320B1818771EFCC9C20D7E5BD5291ABE762A50
-5148AE49289CF337FE6F2B6A369C557D6AA731ACF3BB97E38306F77A94C6EB2B
-B7846ABC4F32E886B0C66A806C27B4EE3CE94297C19714C889943921426433BF
-19002E5C083BA89BF31D8F5A2602BF058A8C5C78DA421DA74A4E2DCE034D6510
-C4720403654A84BD4000C074522F9D2D7ED733AC6B46232C69E21496575EFA86
-D24B2A8DC064071F35AA926565BF09130B4F96A8150A2E3EB36355535D866B67
-17B9F62C47A065E28261990D79E64DE2E4C5CA8E3B6D215925200D982510F150
-8B0562589AA66EC47508F0A5AC15B06078A83B911C15232963F6B59BEDF57A57
-1322DB18C44E6CA9154AF9084CC02095987FA65AFB0D896551415EC9D45BE803
-BD428A107A492BBA8AD075A89112B3FE451399E061AFB98FBDDDEC71DA7BCFB5
-2833E5299591FC86BF14F7B324F7F3EBAD36DDFB77313F1ACC40D0E4805D5B04
-FB965C08CEC682A07412118A17C4549C0A96F397C3FB466C6D888F5A407D43B7
-761962E8CBC5C7E27AD0A3605336CA17DB4CC1593C64E66285117EF7CCFE1A17
-203C9F1ED41FB4FADFF14DE66F78E87A9028C853A757204F81CC7F425FC7F8A2
-509611BDE84D0F549F5614C814C3E88851F9FE74506EB52C5BCEE4F21DB52BBF
-31940BC2156EF38908869732038D1EA6E39B5417E547DC412CDB0B1F1DA09E65
-07B13C1C9C962D1A9F7A0EE6187B92874964B3C5E20AFAE716E33C3E999A4FC9
-462899118EA9CC961A7D704FE46A872BCF77491F70DEE94E1335196FD787579E
-30A01C29CBCA08F301889C27910B03E20B4DA1363F6F5896007F71CA90E1DC57
-9C6BE8898B3E2AC201895AB1223CEC56C003299D9C0947320DA9D9DA474D59F8
-1EF5F4720AE0FCA1A8E55A2B9CD79801FECDABE6E5FDDDA140226714304D6EC0
-AE2BDDDD1A02E3C01D6A46682D801A7BD61C1737358EDAD7D993D9006B56BC43
-2467A2A0B58C33FE4BCFD8DAE939184D45DFC23F5B597D788F14319EB52B1FCE
-DF8C405005CEFF39D4167B66082A38209A7A8E1D5E73D87CE049BDA2FFDD49C6
-3DA02E5D6405E2F54C921F6E2CF9F1E18268DCE0D0C960D477C8525CE5FEE998
-82ACB08902CF6FF1E437468C519FDD447A2661C381A999E8724AACE9F461E629
-998539472CC9355A9E55989EB7CE1FEC9D313A160294AA55910F4F8E55BFB917
-BC77A51055CCC1772D0021AFBC1E79B289B539ADC3E99D9632919F8BD17A1B91
-BA25661178C5EE19D4CEC42744B52F04FFC27A2E3C044BAEDCBFE020A896BA3E
-79A6451ADECB932F183CD599F694DC8393E1F878737113E3DCBA11F22D46F028
-6FA7CF148F2CFEB03F61D40D6A0D30451723E7C91D4BE58E6976FBDB89D50F4B
-6EE65D2DB6465545038E094E333A015E79737CEDA211F913D831E78032B2626B
-0FB1E7E20CAD4E01BF398E9C4965BF91136D4AE83029E5F3A6339CE3C8FB64DF
-E5925D739FD720AE38EFBA0E32E74317DD35363F19EEC4806EA840F2A77AAE2C
-8752B4B786378B134F5A376A1F0BDF8FE6F0B247D4A28248D0693988D696E7B3
-4B937A41277C56A182BC2BE08D57939398C3CC125A74905ABE953028EB2A8A0B
-9BEB795D484BC979809506C8FA55AD6135FA66A0FAEC7EF53F5F91B37D8515DB
-C93CD4EF0A12CF0F9C3CD06C57FC9646A15810910EACA53BCBAEFF4AC568CD8D
-13DE144FF06FB3F1A6CE76ACC351297DE4D7E755561C1EEBBD39F1351D1731C2
-16AAFFB586C680F588B62AEC37650017928769C53E032EEADAE9E5361F28F78E
-1841C1419290D1A453C63EBEFD3C99B5F8A72548393E2C6B1C95A43CB19EC099
-4DA22BC088E6E95FC177B3D00DB7B3652D8C5DF1682DE9C3D22796AF78149E7E
-A951D0A46EB6EFDA46594BF4D608E3C4BF9406EC7A09D3A8D6623D79FB609222
-C8B1257CAB63C810A5C6983BD16FE6322E5CACDF56B91FDD46AA8B292210D3D4
-B59BE801C1B5A425CF5F5774968D510C017C3EA4D7B86C8555A96D4F0163DD8D
-F1FD9DA5D9D15999E626DB68763C5CD22EF18C747BCA003DA4354FD484A56552
-D0A96B7FF1958035AE04025DF7F67EB52B468D63D735CC8EA34484B7E18136F9
-9D4C0966C79990ED629A87C033A52F4C96295E3D3CCD4B476188101B94E214B0
-7B4C4463CEB3C81E8838D0FFC9BA36CB0A39173105C90BF8A6FE12A0B3749045
-7CA9DB29EE500088F3FFD13BAC41782854B25955B23118FF880BF20D66E30C4F
-164FD408E5E5636976D9D2686192BE5AE7B2C96A911C290B749344C0B630DF9F
-B3FD98F2E62707541A128058A5F22E05922103A39A95C1B7F6F807A5F3A21A25
-50EBF0F5950A45C9B864D2785C24F30108BB15A3E5468902D83B5F3CFBE1E359
-BD129E494D769A371B26967AC8D715BB742EA20B414D5ACBB4B25A5770A80E7F
-B315EC73D3AD78C7BEC227661C2EFDCED86C4240D38267BF1EE26C506CF00382
-8E7F86509AFABDA5ABA519C6CDA52703B40DB3502D72E8308725E660F107F4A9
-026DFE14CF4BCFD2F4832F6AD1550CDBDB5644CA52899F4641C5897D4F907931
-185D13C33184D78EAE54BCC164076DB74D99F52C064216C7FAAC977CFB69B150
-A78A2052E4EE7090A7465324648976E1C3F19F146328BA460DADED492AA74BFD
-04AE08FD24AC871D21CF7CC808495ECA5E73B26D97EAE5F9BC435D53BF2C1BD9
-0A9004BFC44EBBF6683D52781943814C3C942BDD9BF95F1661761119B49AED7B
-D9376B6124A4DC87B9D7DDB2386974A6E02B29AC5A994617F3F988B692EDC47E
-6C948C5071CFE0D680E018950F545831B5EBE3C19BF384A51DF56F3CC7757B8D
-037FDB95F4D1878C407B8C1DF1CA9E9236C468E9B8
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMCSC10
-%!PS-AdobeFont-1.0: CMCSC10 003.002
-%%Title: CMCSC10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMCSC10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup
-/UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMCSC10 def
-/FontBBox {14 -250 1077 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMCSC10.) readonly def
-/FullName (CMCSC10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 97 /a put
-dup 99 /c put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 105 /i put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 115 /s put
-dup 117 /u put
-dup 120 /x put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2
-048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31
-CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2
-0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3
-D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D
-567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3
-DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF
-435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E
-2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148
-D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1
-DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70
-8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F
-DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C
-9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E
-1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49
-59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402
-A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA
-90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E
-3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB
-3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41
-736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198
-E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94
-17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D
-FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E
-1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085
-35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367
-3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1
-5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245
-658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD
-8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F
-CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9
-D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7
-606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C
-64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8
-F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00
-C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7
-072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3
-7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317
-1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B
-5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3
-2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06
-491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C
-B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07
-8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F
-9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568
-4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781
-AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E
-36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA
-88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85
-5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3
-5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8
-AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152
-7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0
-CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8
-E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF
-53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9
-FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A
-94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4
-E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC
-4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B
-D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428
-F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4
-5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460
-7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2
-361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579
-5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7
-83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F
-8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3
-F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC
-F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327
-EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15
-B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D
-F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4
-8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE
-07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE
-8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4
-12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B
-E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA
-EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B
-EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207
-A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29
-0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F
-AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24
-3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128
-2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037
-215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE
-E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720
-70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5
-37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE
-BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A
-EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F
-AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A
-0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F
-7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8
-9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5
-28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A
-962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E
-F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3
-3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC
-3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5
-15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8
-DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF
-72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512
-D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588
-462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026
-465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607
-6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7
-8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A
-AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20
-53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34
-E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF
-E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605
-8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395
-CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064
-46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C
-AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7
-391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015
-55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643
-0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1
-0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8
-3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A
-22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384
-5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0
-20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3
-B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E
-AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED
-CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B
-7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9
-B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED
-A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201
-213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B
-57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE
-DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082
-9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271
-C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC
-F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F
-54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E
-C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051
-1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90
-7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287
-72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A
-DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC
-5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2
-7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901
-EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4
-62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1
-0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A
-94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6
-5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED
-D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E
-74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88
-159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5
-2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD
-D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143
-40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E
-DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977
-CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F
-C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A
-1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A
-7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5
-D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614
-37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874
-357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68
-6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435
-6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53
-686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F
-D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8
-EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6
-3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D
-E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3
-154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD
-9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092
-40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6
-A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE
-002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54
-810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D
-637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24
-1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1
-859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF
-6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE
-2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858
-89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A
-38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045
-9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F
-774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9
-75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC
-660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9
-2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C
-8BC2F3AB0BF5A6E5619BE16DF43BB099C6CEA5044ABACC419174664232E97B29
-ED32362D219AF109E5D8CA751EB1F9F31BDD08C93AE018E5269AC327FEC67D99
-588CA80F068AEB94A7B943BAD5EC8D89C0B8D153B4345E77A5AD9B4522208A33
-DA92CDF765B44123C6EBAA06D629EB9E8D0FDD29BFD60EB582CB369474767FE4
-C0947F27DCFE0C8BD3CF5131E706E02ED136DBCE6363CB5CA637E08C3D832037
-5AAA88B746B6D915EE72D7B458C55598DA6284F362D2DBF06C51DB50A9FFFB5E
-EBFD69D8D06AB0A6DF2D03F6E14FF290B1A1531109E43892B82B29395910021F
-A6EA74B8420A14FC189741ECF67F81686BD3C5559DAF75DF9FEF3346CCC35AC5
-37A1E30C2602945974A2359EE3183A1AA568978F7732C35BE2B9224C27161748
-515E5899B0387F0640DE1D712F390A8A026FC5C5A893E98F46B418B7B32BEF07
-AD0EEA87737D929180B2BE697D0DFD46CF307E4FF76BC03492E66633F1357848
-AA5A594EB8CC5913E76602C9CF8B7428F67965D5BAAA29BD6C978EF6B22B0BEF
-4203B223443554971EFE558FD2F51D01B35D2194A1F6820293385CF12DC1ED73
-79EA6082A30796D5EB72A67C5DB42A01F18CCBFEBE2F10B091C43C2CBACD8914
-D665B340281C1EBF92249FBDAA577CB7769974B669DA0B74E822EE5DCF3A32D8
-9C6714D8C82CE9BF3F16E6336094BC55381E73A96D45B7A70AE00F9CB8348E08
-2A64E4B40B3BD0A653B423C5D3C1ECB62F5E05393FB8C9B0C44AB26F6BF796BF
-5B51601913014ED708B97731A5642351ECD0F6CA9C06832E0BCD0055E9BA51CB
-7242CD34AF0B75F3594AF9235C42B974074665C5B6C934B08E5C7F55638E7DB5
-312BC541A8000E69A92ED6C63AA6485A50DFAA1DCF9B0DDAD23C43DF22F3000C
-0CBF6F8F64F37BDF8F8DF321FD8F42C3FF774A388F9C033572B177A493814ECC
-BE19595AD285F11763857603EAE0D6AED509225CACBC49351E6BF1457BD11490
-EDA1C3DD6DE8C7036464CF80FE562CDA51ED2EB92BBC79252FA79EAFE5E6BD4F
-DC16AB83B2C902A9027BA4AE30ABADFF6D513BEA850FF35416E76FE62D8E88DC
-69F0C60921B33BA59FA3EDC8F532B47FF2A5E5680BEFCDAEA4474DFA2F8FD68F
-74B5837A22984A7534A5321B83459E436AE4C498702EA14A77D3F78DAEA47BA0
-1BE6CFAD95132683BCE0601F3EDDEFF5207FD5FF3CC9093ABD946CC7C1076DB9
-4DAF08C682269CEE980159541D92FFE484B7440E5AC58D7707BAE579605D1EB6
-42C396807AA13B3ACEDBF3A465CBD56F076FA9319E43907B6522904F92483537
-6102700CEAA52EE916B80AA4C5F8C98C9AC9557F97784F075D37A83649D632F5
-82A519507162012A671F3B4DBAC454D920606E9C87CADCAA1172A04E445A28A7
-0FA9545E5FFD15302664B5C2C4F479C8C760C2A015F5F5CB51EC6C0260154D37
-4A65B01E58B458ED0FEBBE74884C9DF7D50770153FB498E94F65475A5EA6A687
-543DEA3156D3E5CEE23923120DF4D561D2C082F1F3BFC5039A1DFC1C9C3A328E
-6F879AB979F2C177FBA357FD63F8CC21E8AF632D6B01A3AC3EA7DE91C17B8120
-42E78A1AA2E04581B1C434A8147DBE81A87C73782DAF4BD5F309280FEA22DBAF
-586AF386182364E45D7DEAFFA74E338E875B64B13CFC909B30E074D777D347ED
-3A58A82D5F6A6E913054F9FABFDD9ABD8BBF54DC3480F3A90965A0081092714B
-D77604CC7275050DBCCC800BCD8E2BA540B18CB07AF27D66F8887A571685600F
-3FF8C7A4966A8CF8CB25DE0495CD4E048999ECE6579AFA82D1644FE160E2D3F0
-EE7CE89045332B172425D7D1443E8DD9043A12042ADD7EC106CB4DAAEAB310E5
-85F93869A1C519DC0E3CF8F4C05030F0BF7054C5859A74ECE7D6FC5644C5B84A
-F3EDF0C4B2DCDD0D193599CB3CA00464A90AB55674F884001EC896726A9B374B
-3A73AECDCBE06895E87FCE6267091C6CED0E779DEC36D8CC35184E00247AB90C
-37161FFEE7CABFD7499859042093BCAE22D6B811FD16EFBC8AAE6283881C12CA
-98E0792640063169F76B18EF543AFE7951E82EDB1DB9597F2F9C959B69943379
-CC7F5BDBD1BAFF7C77AD8D504D5F17E1B7DFFC515AC237748D33FB6B9D7DD903
-2F3E9768290A90A5FC5EA516A94C1885B17676D33CE4124CED1359E473305B02
-03C28731C0FC52B18FC14360C9494FF2A86AEE929E4022ACB78C02ADD6174FD0
-D35105BB00643F6560A9CCBB3E5CE2F79F0EB9BA774D27DC476867C991598380
-F77CC0444500CF43DAB8D729B31EA5A3184F178F82622A8B711A9CA6A770971C
-521C44969E814B44D8E1927C283E6A38B78D7C258630730EA463FEEEAB263838
-2A517BA176D1C137AAE7430532FFB0FFCA8BF110DECB42B1A7A9457A9ECCABFA
-D6CC11CD925518857AAA8498CEF35377CF92FEA77C09E6AE25DB2D09F1E355BD
-7F7F5C72A76315F3C2B6BEA1AF7BA5D0E8000778A0FB2C60FF677ADBA9156A11
-A5B0B7AE92DB368571C040FD7A29C3DF384CCC29A0E9F40FA385630D23AC1E97
-C15C06848761CC7D19D208BC115A6A2933056BCEB3717CE2488E86D0B0D6D276
-22B2FF1E77FA719372BE62A5B6E10D3DFCA57DE70AE16C57718B86C58B6A7F3D
-C6DD45D7559F9A0ED8889E707FE7622997F2D573F7688621245E0FB3D34A08C6
-40B72F4BDA0394CBF90735B9E6B3928AD56F50FEF9A5DA8B195008164EC03424
-7F5317FB8157C33F6903FD6D4B4728F82F1B02046DA16F4285DF088E08A136FD
-1366494E3F5AEBED4B48B3B9072BC811A700940FF4B2A51C0434ABF225B37BBF
-E4AB11F394332D66393420D4B843CAB6AAD9C32418CFE6A2A1260BF430E61176
-4B1762E3C9F1727BA47AAE4C7589E7099A56F5E1CB6BD64C0C8D026ED60EAFBC
-BAD1476E98F5F12ED94BDB1E4B0D8FE9E36CF40DA6F5B2E1BC41EF5F7CB49825
-EA5058FF7C49C5FA11F9F9F575AB4D8237FFC2573F94B695CBE9BC44A1BB26DD
-C6E55627BA16E5197CADA519CC7302DBE77F1FE4CF68C558D8F6E264
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.0: CMMI10 003.002
-%%Title: CMMI10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
-/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI10 def
-/FontBBox {-32 -250 1048 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI10.) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
-1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
-7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
-0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
-EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
-404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
-78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
-A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
-88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
-C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
-BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
-98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
-E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
-143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
-981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
-88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
-4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
-FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
-347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
-FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
-C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
-B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
-F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
-29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
-36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
-048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
-80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
-9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
-75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
-4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
-74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
-D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
-E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
-EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
-543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
-710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
-EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
-7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
-03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
-01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
-500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
-F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
-AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
-1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
-85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
-4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
-6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
-55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
-085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
-BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
-2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
-CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
-BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
-D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
-991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
-6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
-E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
-E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
-B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
-4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
-1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
-B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
-8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
-FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
-AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
-BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
-E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
-38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
-7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
-2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
-DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
-22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
-8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
-44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
-D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
-42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
-C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
-0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
-66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
-E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
-6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
-1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
-B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
-897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
-EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
-A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
-F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
-A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
-2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
-51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
-598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
-87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
-178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
-4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
-7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
-AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
-3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
-337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
-C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
-DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
-7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
-6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
-98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
-821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
-C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
-7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
-B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
-A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
-23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
-C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
-969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
-3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
-9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
-1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
-B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
-95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
-FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
-44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
-FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
-E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
-633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
-6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
-FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
-375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
-6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
-EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
-E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
-F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
-DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
-D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
-D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
-9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
-9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
-B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
-D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
-8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
-FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
-B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
-00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
-909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
-5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
-7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
-BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
-C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
-BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
-BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
-4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
-94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
-F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
-E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
-92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
-63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
-CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
-B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
-5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
-86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
-AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
-3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
-35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
-155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
-AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
-E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
-226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
-9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
-8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
-919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
-A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
-9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
-523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7
-88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D
-2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF
-AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66
-B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22
-CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744
-3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8
-404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84
-262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953
-084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341
-E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI12
-%!PS-AdobeFont-1.0: CMMI12 003.002
-%%Title: CMMI12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup
-/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI12 def
-/FontBBox {-31 -250 1026 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI12.) readonly def
-/FullName (CMMI12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE
-882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3
-2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A
-7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541
-0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69
-987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7
-609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC
-182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A
-CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A
-1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE
-C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D
-3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6
-D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E
-E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200
-761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24
-8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F
-68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D
-10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4
-262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6
-922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16
-56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26
-32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA
-7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460
-7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A
-46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD
-754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF
-88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F
-CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A
-7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760
-8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0
-BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B
-CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25
-8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B
-D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300
-135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A
-C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812
-1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86
-07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39
-14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D
-7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D
-2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D
-639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3
-D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F
-90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948
-10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E
-1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E
-8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC
-D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9
-1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33
-9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875
-EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE
-DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3
-60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8
-FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D
-203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608
-FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09
-DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F
-2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D
-244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077
-31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B
-724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8
-F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7
-D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA
-AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907
-CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF
-01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D
-CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA
-287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605
-8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9
-9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1
-6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5
-7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C
-192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA
-AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4
-A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9
-50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67
-A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912
-3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF
-CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6
-5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96
-8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE
-084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7
-92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2
-AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27
-97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF
-92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5
-7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824
-5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199
-13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76
-6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1
-5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5
-6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83
-F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E
-A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4
-7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A
-9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817
-E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962
-AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD
-F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8
-0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003
-1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31
-7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E
-38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8
-5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F
-3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B
-B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85
-15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B
-AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674
-6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6
-CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322
-EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82
-A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D
-806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4
-461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1
-4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361
-9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C
-172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6
-69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E
-ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690
-356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0
-E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78
-7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C
-B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A
-31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF
-EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7
-98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30
-C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61
-AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208
-E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900
-76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40
-8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573
-CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7
-761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A
-2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138
-89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60
-D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF
-C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485
-D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8
-B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39
-AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F
-D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3
-866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD
-207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73
-756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7
-60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD
-A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A
-1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4
-A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048
-C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3
-03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321
-1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B
-97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE
-D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8
-4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF
-94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97
-201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7
-9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000
-CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7
-29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939
-4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED
-66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31
-14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53
-84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74
-6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12
-49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C
-224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5
-5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4
-A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498
-1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D
-5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6
-40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C
-E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B
-C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD
-CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D
-2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE
-710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45
-FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8
-FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736
-5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.0: CMSY10 003.002
-%%Title: CMSY10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
-/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSY10 def
-/FontBBox {-29 -960 1116 775 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
-7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
-DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
-511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
-1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
-028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
-1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
-3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
-91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
-E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
-11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
-C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
-D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
-B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
-93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
-10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
-7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
-B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
-491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
-F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
-019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
-915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
-356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
-5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
-9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
-3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
-FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
-720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
-D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
-BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
-7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
-DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
-AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
-A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
-0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
-AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
-CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
-0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
-5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
-5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
-E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
-54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
-E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
-A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
-4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
-4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
-038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
-B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
-5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
-B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
-A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
-2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
-CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
-455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
-FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
-16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
-16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
-483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
-67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
-3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
-1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
-93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
-051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
-8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
-8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
-6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
-06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
-84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
-D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
-DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
-0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
-8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
-C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
-754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
-1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
-CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
-1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
-153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
-905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
-617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
-8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
-98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
-53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
-888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
-052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
-CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
-A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
-07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
-B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
-10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
-CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
-3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
-D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
-849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
-648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
-84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
-2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
-2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
-9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
-B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
-D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
-135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
-EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
-C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
-7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
-4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
-9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
-050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
-3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
-C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
-843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
-CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
-B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
-3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
-19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
-FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
-17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
-8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
-CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
-F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
-1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
-4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
-2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
-9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
-E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
-8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
-BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
-04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
-C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
-ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
-4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
-84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
-C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
-09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
-D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
-56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
-035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
-FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
-CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
-B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
-F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
-CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
-0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
-B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
-33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
-4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
-F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
-2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
-CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
-88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
-17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
-55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
-A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
-2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
-406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
-AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
-60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
-C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
-5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
-822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
-94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
-D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
-343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
-894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
-DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
-DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
-8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
-A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
-DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
-E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
-DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
-4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
-5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
-02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
-88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
-60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
-71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
-9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
-A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
-AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
-F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
-A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
-AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
-EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
-EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
-CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
-86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
-AE5400775223E684BFCB
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-TeXDict begin 39158280 55380996 1000 300 300 (readline.dvi)
-@start /Fa 197[11 58[{}1 37.3599 /CMMI9 rf /Fb 133[17
-20 20 28 20 21 15 15 15 20 21 19 21 32 11 20 1[11 21
-19 12 17 21 17 21 19 39[19 19 19 19 19 19 19 19 19 19
-2[13 11 30[21 21 12[{}39 37.3599 /CMR9 rf /Fc 134[20
-20 2[20 20 20 20 2[20 20 20 20 2[20 20 1[20 20 20 2[20
-19[20 27[20 20 2[20 45[{}20 37.3599 /CMSLTT10 rf /Fd
-167[31 3[30 23 2[28 1[31 38 26 1[21 1[31 33 27 1[32 30
-67[{}13 41.511 /CMR10 rf /Fe 129[20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 1[20 20 20 1[20 20 20 20 20 20 20
-20 20 20 20 20 20 20 1[20 20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 3[20 1[20 20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 1[20 20 20 33[{}86 37.3599 /CMTT9
-rf /Ff 214[18 18 40[{}2 45.4545 /CMSS10 rf /Fg 133[26
-26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 1[26 26
-26 26 26 26 26 26 26 1[26 18[26 26 1[26 2[26 26 9[26
-16[26 42[{}33 49.8132 /CMTT10 rf /Fh 134[32 32 44 32
-34 24 24 25 1[34 31 34 51 17 32 1[17 34 31 19 28 34 27
-34 30 7[46 1[63 46 47 43 34 46 3[48 58 37 48 1[23 48
-1[39 40 1[44 44 46 7[31 31 31 31 31 31 31 31 31 31 1[17
-46[{}52 54.5455 /CMBX12 rf /Fi 134[24 24 33 24 25 18
-18 18 24 25 23 25 38 13 24 1[13 25 23 14 20 25 20 25
-23 9[47 1[34 33 25 33 1[31 35 34 42 28 35 1[16 34 1[30
-31 35 33 32 34 15[23 23 1[13 15 13 1[23 28[25 25 12[{}51
-45.4545 /CMSL10 rf /Fj 134[22 1[30 21 24 15 19 19 1[23
-23 26 37 12 2[14 1[21 1[21 23 21 1[23 84[26 12[{}19 45.4545
-/CMTI10 rf /Fk 134[24 24 24 24 24 24 24 24 24 24 24 24
-24 24 24 24 24 1[24 24 24 24 24 24 24 1[24 2[24 14[24
-24 1[24 1[24 2[24 24 24 17[24 24 2[24 5[24 39[{}37 45.4545
-/CMSLTT10 rf /Fl 135[28 2[28 1[21 2[25 29 28 4[14 1[29
-24 25 1[27 1[28 97[{}12 45.4545 /CMCSC10 rf /Fm 197[13
-58[{}1 45.4545 /CMMI10 rf /Fn 197[16 58[{}1 59.7758 /CMMI12
-rf /Fo 135[43 58 1[45 31 32 33 1[45 40 45 67 22 2[22
-45 40 25 37 45 36 45 39 10[61 62 56 1[60 1[55 1[63 1[48
-2[30 1[63 51 53 62 58 1[61 14[40 40 49[{}36 71.731 /CMBX12
-rf /Fp 242[45 13[{}1 45.4545 /CMSY10 rf /Fq 134[35 35
-49 35 37 26 27 27 1[37 34 37 56 19 2[19 37 34 21 31 37
-30 37 33 7[51 1[69 51 52 47 37 50 51 46 51 53 64 40 53
-1[25 53 53 42 44 52 49 48 51 6[19 2[34 34 34 34 34 34
-34 2[19 1[19 44[{}55 59.7758 /CMBX12 rf /Fr 129[24 24
-24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
-24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
-24 24 24 24 24 24 24 24 24 24 24 24 24 24 1[24 24 24
-24 24 24 24 24 24 24 24 24 24 24 24 24 1[24 24 1[24 24
-24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
-24 33[{}91 45.4545 /CMTT10 rf /Fs 131[45 23 20 24 24
-33 24 25 18 18 18 24 25 23 25 38 13 24 14 13 25 23 14
-20 25 20 25 23 13 2[13 23 13 28 34 34 47 34 34 33 25
-33 35 31 35 34 42 28 35 23 16 34 36 30 31 35 33 32 34
-35 4[13 13 23 23 23 23 23 23 23 23 23 23 23 13 15 13
-2[18 18 13 2[23 1[23 19[38 25 25 27 11[{}84 45.4545 /CMR10
-rf /Ft 134[51 6[40 3[54 1[27 2[27 3[44 54 1[54 47 11[74
-2[72 3[76 1[58 4[76 71[{}14 86.0772 /CMBX12 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: a4
-/setpagedevice where
-{ pop << /PageSize [595 842] >> setpagedevice }
-{ /a4 where { pop a4 } if }
-ifelse
-%%EndPaperSize
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 75 659 a Ft(GNU)33 b(Readline)f(Library)p
-75 709 1800 17 v 936 757 a Fs(Edition)15 b(6.4,)e(for)i
-Fr(Readline)f(Library)g Fs(V)l(ersion)h(6.4.)1682 811
-y(Ma)o(y)f(2015)75 2467 y Fq(Chet)22 b(Ramey)-6 b(,)23
-b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
-2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
-b(oundation)p 75 2570 1800 9 v eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 75 2207 a Fs(This)20 b(man)o(ual)f(describ)q(es)i
-(the)f(GNU)g(Readline)g(Library)g(\(v)o(ersion)e(6.4,)i(28)g(Ma)o(y)f
-(2015\),)g(a)h(library)75 2262 y(whic)o(h)f(aids)h(in)f(the)h
-(consistency)f(of)g(user)h(in)o(terface)f(across)g(discrete)g(programs)
-g(whic)o(h)g(pro)o(vide)g(a)75 2316 y(command)c(line)g(in)o(terface.)75
-2384 y(Cop)o(yrigh)o(t)301 2383 y(c)289 2384 y Fp(\015)g
-Fs(1988{2014)e(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)195
-2451 y(P)o(ermission)9 b(is)h(gran)o(ted)f(to)h(cop)o(y)l(,)h
-(distribute)e(and/or)h(mo)q(dify)g(this)f(do)q(cumen)o(t)i(under)g(the)
-195 2506 y(terms)h(of)g(the)h(GNU)g(F)l(ree)f(Do)q(cumen)o(tation)g
-(License,)h(V)l(ersion)g(1.3)f(or)g(an)o(y)g(later)g(v)o(ersion)195
-2560 y(published)23 b(b)o(y)f(the)h(F)l(ree)f(Soft)o(w)o(are)f(F)l
-(oundation;)k(with)c(no)i(In)o(v)m(arian)o(t)e(Sections,)j(no)195
-2615 y(F)l(ron)o(t-Co)o(v)o(er)13 b(T)l(exts,)h(and)g(no)h(Bac)o(k-Co)o
-(v)o(er)e(T)l(exts.)20 b(A)14 b(cop)o(y)g(of)g(the)h(license)f(is)g
-(included)195 2670 y(in)h(the)g(section)g(en)o(titled)f(\\GNU)h(F)l
-(ree)g(Do)q(cumen)o(tation)g(License".)p eop end
-%%Page: -1 3
-TeXDict begin -1 2 bop 1862 -58 a Fs(i)75 149 y Fo(T)-7
-b(able)28 b(of)e(Con)n(ten)n(ts)75 320 y Fq(1)67 b(Command)22
-b(Line)h(Editing)17 b Fn(:)10 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)39
-b Fq(1)137 389 y Fs(1.1)45 b(In)o(tro)q(duction)15 b(to)f(Line)i
-(Editing)t Fm(:)7 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)18 b Fs(1)137 444 y(1.2)45 b(Readline)15
-b(In)o(teraction)5 b Fm(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)19
-b Fs(1)200 499 y(1.2.1)43 b(Readline)16 b(Bare)f(Essen)o(tials)5
-b Fm(:)h(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)19 b Fs(1)200 553 y(1.2.2)43 b(Readline)16 b(Mo)o(v)o(emen)o(t)e
-(Commands)5 b Fm(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)19
-b Fs(2)200 608 y(1.2.3)43 b(Readline)16 b(Killing)e(Commands)d
-Fm(:)6 b(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
-b Fs(2)200 663 y(1.2.4)43 b(Readline)16 b(Argumen)o(ts)7
-b Fm(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)21 b Fs(3)200 718 y(1.2.5)43 b(Searc)o(hing)15
-b(for)g(Commands)g(in)g(the)g(History)6 b Fm(:)g(:)h(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20
-b Fs(3)137 773 y(1.3)45 b(Readline)15 b(Init)g(File)d
-Fm(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 b Fs(4)200
-827 y(1.3.1)43 b(Readline)16 b(Init)f(File)f(Syn)o(tax)9
-b Fm(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23
-b Fs(4)200 882 y(1.3.2)43 b(Conditional)14 b(Init)h(Constructs)e
-Fm(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
-b Fs(12)200 937 y(1.3.3)43 b(Sample)16 b(Init)f(File)7
-b Fm(:)f(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)22 b Fs(12)137 992 y(1.4)45
-b(Bindable)15 b(Readline)h(Commands)7 b Fm(:)f(:)h(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b Fs(15)200 1046 y(1.4.1)43
-b(Commands)15 b(F)l(or)g(Mo)o(ving)5 b Fm(:)h(:)h(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Fs(15)200
-1101 y(1.4.2)43 b(Commands)15 b(F)l(or)g(Manipulating)e(The)j(History)
-10 b Fm(:)c(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-25 b Fs(15)200 1156 y(1.4.3)43 b(Commands)15 b(F)l(or)g(Changing)f(T)l
-(ext)e Fm(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 b Fs(17)200
-1211 y(1.4.4)43 b(Killing)14 b(And)i(Y)l(anking)c Fm(:)c(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)27
-b Fs(18)200 1266 y(1.4.5)43 b(Sp)q(ecifying)16 b(Numeric)f(Argumen)o
-(ts)10 b Fm(:)c(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)24 b Fs(19)200
-1320 y(1.4.6)43 b(Letting)15 b(Readline)h(T)o(yp)q(e)f(F)l(or)g(Y)l(ou)
-7 b Fm(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 b Fs(20)200
-1375 y(1.4.7)43 b(Keyb)q(oard)16 b(Macros)c Fm(:)6 b(:)h(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)26
-b Fs(20)200 1430 y(1.4.8)43 b(Some)16 b(Miscellaneous)e(Commands)f
-Fm(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fs(21)137 1485
-y(1.5)45 b(Readline)15 b(vi)g(Mo)q(de)c Fm(:)c(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)26 b Fs(22)75 1606 y Fq(2)67 b(Programming)22
-b(with)g(GNU)g(Readline)9 b Fn(:)g(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h
-(:)31 b Fq(23)137 1675 y Fs(2.1)45 b(Basic)15 b(Beha)o(vior)7
-b Fm(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)22
-b Fs(23)137 1729 y(2.2)45 b(Custom)14 b(F)l(unctions)5
-b Fm(:)i(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)20 b Fs(24)200
-1784 y(2.2.1)43 b(Readline)16 b(T)o(yp)q(edefs)t Fm(:)8
-b(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)19 b Fs(25)200 1839 y(2.2.2)43 b(W)l(riting)14
-b(a)h(New)g(F)l(unction)8 b Fm(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)22 b Fs(25)137 1894 y(2.3)45
-b(Readline)15 b(V)l(ariables)d Fm(:)6 b(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)26
-b Fs(26)137 1949 y(2.4)45 b(Readline)15 b(Con)o(v)o(enience)h(F)l
-(unctions)7 b Fm(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22
-b Fs(31)200 2003 y(2.4.1)43 b(Naming)15 b(a)g(F)l(unction)6
-b Fm(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)21 b Fs(31)200 2058 y(2.4.2)43 b(Selecting)15
-b(a)g(Keymap)c Fm(:)c(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)25 b Fs(31)200 2113 y(2.4.3)43
-b(Binding)16 b(Keys)d Fm(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)28
-b Fs(32)200 2168 y(2.4.4)43 b(Asso)q(ciating)14 b(F)l(unction)h(Names)g
-(and)h(Bindings)9 b Fm(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)24 b Fs(34)200 2222 y(2.4.5)43 b(Allo)o(wing)14
-b(Undoing)9 b Fm(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)24 b Fs(35)200 2277
-y(2.4.6)43 b(Redispla)o(y)11 b Fm(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)26 b Fs(36)200 2332 y(2.4.7)43 b(Mo)q(difying)15
-b(T)l(ext)e Fm(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)29 b Fs(37)200
-2387 y(2.4.8)43 b(Character)15 b(Input)7 b Fm(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)21 b Fs(37)200 2442 y(2.4.9)43 b(T)l(erminal)15 b(Managemen)o(t)t
-Fm(:)6 b(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)19 b Fs(38)200 2496 y(2.4.10)43 b(Utilit)o(y)13
-b(F)l(unctions)8 b Fm(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)22 b Fs(39)200
-2551 y(2.4.11)43 b(Miscellaneous)14 b(F)l(unctions)7
-b Fm(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)22
-b Fs(40)200 2606 y(2.4.12)43 b(Alternate)15 b(In)o(terface)9
-b Fm(:)d(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)23 b Fs(41)200 2661 y(2.4.13)43 b(A)15
-b(Readline)h(Example)11 b Fm(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fs(41)p eop end
-%%Page: -2 4
-TeXDict begin -2 3 bop 1850 -58 a Fs(ii)200 42 y(2.4.14)43
-b(Alternate)15 b(In)o(terface)g(Example)5 b Fm(:)i(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)20 b Fs(43)137 96 y(2.5)45 b(Readline)15
-b(Signal)g(Handling)5 b Fm(:)h(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)20 b Fs(45)137 151
-y(2.6)45 b(Custom)14 b(Completers)9 b Fm(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-24 b Fs(47)200 206 y(2.6.1)43 b(Ho)o(w)15 b(Completing)f(W)l(orks)d
-Fm(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)26
-b Fs(47)200 261 y(2.6.2)43 b(Completion)14 b(F)l(unctions)9
-b Fm(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)24 b Fs(48)200 315 y(2.6.3)43 b(Completion)14
-b(V)l(ariables)5 b Fm(:)h(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)19 b Fs(49)200 370 y(2.6.4)43
-b(A)16 b(Short)f(Completion)e(Example)g Fm(:)8 b(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)28 b Fs(54)75 491 y Fq(App)r(endix)23
-b(A)80 b(GNU)22 b(F)-6 b(ree)23 b(Do)r(cumen)n(tation)e(License)223
-558 y Fn(:)10 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fq(63)75 693 y(Concept)22 b(Index)9 b Fn(:)i(:)g(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)32 b
-Fq(71)75 828 y(F)-6 b(unction)24 b(and)e(V)-6 b(ariable)22
-b(Index)14 b Fn(:)e(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)h(:)f(:)37 b Fq(72)p eop end
-%%Page: 1 5
-TeXDict begin 1 4 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(1)75 149 y Fo(1)41 b(Command)28 b(Line)f(Editing)75
-266 y Fs(This)15 b(c)o(hapter)g(describ)q(es)h(the)f(basic)g(features)g
-(of)f(the)i Fl(gnu)f Fs(command)g(line)g(editing)f(in)o(terface.)75
-382 y Fq(1.1)33 b(In)n(tro)r(duction)23 b(to)f(Line)h(Editing)75
-462 y Fs(The)15 b(follo)o(wing)e(paragraphs)i(describ)q(e)h(the)f
-(notation)f(used)h(to)g(represen)o(t)g(k)o(eystrok)o(es.)137
-529 y(The)k(text)e Fk(C-k)h Fs(is)f(read)i(as)e(`Con)o(trol-K')f(and)j
-(describ)q(es)f(the)h(c)o(haracter)e(pro)q(duced)i(when)g(the)f
-Fr(k)75 584 y Fs(k)o(ey)d(is)g(pressed)h(while)e(the)h(Con)o(trol)f(k)o
-(ey)h(is)g(depressed.)137 651 y(The)h(text)g Fk(M-k)f
-Fs(is)h(read)g(as)f(`Meta-K')g(and)h(describ)q(es)h(the)f(c)o(haracter)
-f(pro)q(duced)i(when)g(the)f(Meta)75 705 y(k)o(ey)g(\(if)g(y)o(ou)g(ha)
-o(v)o(e)g(one\))h(is)f(depressed,)h(and)g(the)g Fr(k)f
-Fs(k)o(ey)g(is)g(pressed.)25 b(The)17 b(Meta)e(k)o(ey)i(is)f(lab)q
-(eled)g Fr(ALT)75 760 y Fs(on)f(man)o(y)f(k)o(eyb)q(oards.)20
-b(On)15 b(k)o(eyb)q(oards)g(with)f(t)o(w)o(o)f(k)o(eys)i(lab)q(eled)g
-Fr(ALT)f Fs(\(usually)g(to)g(either)h(side)f(of)h(the)75
-815 y(space)g(bar\),)f(the)h Fr(ALT)g Fs(on)g(the)g(left)f(side)h(is)g
-(generally)f(set)h(to)f(w)o(ork)g(as)h(a)f(Meta)g(k)o(ey)l(.)20
-b(The)c Fr(ALT)e Fs(k)o(ey)h(on)75 870 y(the)f(righ)o(t)e(ma)o(y)h
-(also)g(b)q(e)h(con\014gured)g(to)f(w)o(ork)g(as)g(a)g(Meta)g(k)o(ey)g
-(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)g(other)75
-925 y(mo)q(di\014er,)i(suc)o(h)g(as)g(a)g(Comp)q(ose)g(k)o(ey)g(for)g
-(t)o(yping)f(accen)o(ted)i(c)o(haracters.)137 992 y(If)d(y)o(ou)f(do)g
-(not)g(ha)o(v)o(e)f(a)h(Meta)g(or)f Fr(ALT)h Fs(k)o(ey)l(,)h(or)e
-(another)h(k)o(ey)g(w)o(orking)f(as)h(a)g(Meta)f(k)o(ey)l(,)i(the)f
-(iden)o(tical)75 1047 y(k)o(eystrok)o(e)h(can)i(b)q(e)f(generated)h(b)o
-(y)f(t)o(yping)f Fr(ESC)h Fj(\014rst)p Fs(,)f(and)i(then)f(t)o(yping)g
-Fr(k)p Fs(.)19 b(Either)14 b(pro)q(cess)g(is)g(kno)o(wn)75
-1101 y(as)h Fi(metafying)j Fs(the)d Fr(k)g Fs(k)o(ey)l(.)137
-1169 y(The)21 b(text)e Fk(M-C-k)h Fs(is)g(read)g(as)f(`Meta-Con)o
-(trol-k')f(and)i(describ)q(es)h(the)f(c)o(haracter)g(pro)q(duced)h(b)o
-(y)75 1223 y Fi(metafying)d Fk(C-k)p Fs(.)137 1290 y(In)h(addition,)e
-(sev)o(eral)h(k)o(eys)f(ha)o(v)o(e)h(their)g(o)o(wn)f(names.)28
-b(Sp)q(eci\014cally)l(,)19 b Fr(DEL)p Fs(,)f Fr(ESC)p
-Fs(,)g Fr(LFD)p Fs(,)g Fr(SPC)p Fs(,)g Fr(RET)p Fs(,)75
-1345 y(and)f Fr(TAB)g Fs(all)f(stand)h(for)g(themselv)o(es)g(when)h
-(seen)f(in)g(this)g(text,)g(or)g(in)g(an)g(init)f(\014le)i(\(see)f
-(Section)g(1.3)75 1400 y([Readline)e(Init)g(File],)e(page)h(4\).)20
-b(If)15 b(y)o(our)f(k)o(eyb)q(oard)h(lac)o(ks)f(a)g Fr(LFD)h
-Fs(k)o(ey)l(,)f(t)o(yping)g Fr(C-j)h Fs(will)e(pro)q(duce)j(the)75
-1455 y(desired)f(c)o(haracter.)20 b(The)15 b Fr(RET)g
-Fs(k)o(ey)g(ma)o(y)f(b)q(e)i(lab)q(eled)f Fr(Return)g
-Fs(or)f Fr(Enter)h Fs(on)g(some)g(k)o(eyb)q(oards.)75
-1571 y Fq(1.2)33 b(Readline)21 b(In)n(teraction)75 1651
-y Fs(Often)c(during)f(an)g(in)o(teractiv)o(e)f(session)g(y)o(ou)h(t)o
-(yp)q(e)h(in)f(a)g(long)f(line)h(of)g(text,)g(only)g(to)f(notice)h
-(that)g(the)75 1705 y(\014rst)g(w)o(ord)f(on)h(the)h(line)f(is)f(missp)
-q(elled.)23 b(The)16 b(Readline)h(library)e(giv)o(es)g(y)o(ou)h(a)g
-(set)g(of)g(commands)g(for)75 1760 y(manipulating)d(the)i(text)g(as)f
-(y)o(ou)h(t)o(yp)q(e)g(it)f(in,)g(allo)o(wing)f(y)o(ou)i(to)f(just)h
-(\014x)g(y)o(our)f(t)o(yp)q(o,)g(and)h(not)g(forcing)75
-1815 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s(jorit)o(y)e(of)i(the)g
-(line.)19 b(Using)14 b(these)g(editing)f(commands,)h(y)o(ou)g(mo)o(v)o
-(e)f(the)h(cursor)75 1870 y(to)i(the)i(place)f(that)f(needs)i
-(correction,)f(and)g(delete)g(or)g(insert)f(the)i(text)e(of)h(the)g
-(corrections.)25 b(Then,)75 1924 y(when)13 b(y)o(ou)f(are)g
-(satis\014ed)g(with)g(the)h(line,)f(y)o(ou)g(simply)g(press)g
-Fr(RET)p Fs(.)19 b(Y)l(ou)12 b(do)h(not)f(ha)o(v)o(e)g(to)g(b)q(e)h(at)
-f(the)g(end)75 1979 y(of)k(the)h(line)f(to)g(press)h
-Fr(RET)p Fs(;)g(the)f(en)o(tire)g(line)h(is)f(accepted)h(regardless)f
-(of)g(the)h(lo)q(cation)e(of)i(the)f(cursor)75 2034 y(within)e(the)i
-(line.)75 2133 y Fh(1.2.1)30 b(Readline)20 b(Bare)g(Essen)n(tials)75
-2207 y Fs(In)d(order)e(to)h(en)o(ter)g(c)o(haracters)f(in)o(to)g(the)h
-(line,)g(simply)f(t)o(yp)q(e)h(them.)23 b(The)16 b(t)o(yp)q(ed)g(c)o
-(haracter)g(app)q(ears)75 2262 y(where)g(the)h(cursor)f(w)o(as,)f(and)h
-(then)h(the)f(cursor)g(mo)o(v)o(es)g(one)g(space)g(to)g(the)g(righ)o
-(t.)22 b(If)17 b(y)o(ou)f(mist)o(yp)q(e)f(a)75 2317 y(c)o(haracter,)f
-(y)o(ou)h(can)g(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g
-(up)g(and)h(delete)f(the)g(mist)o(yp)q(ed)g(c)o(haracter.)137
-2384 y(Sometimes)g(y)o(ou)g(ma)o(y)g(mist)o(yp)q(e)g(a)g(c)o(haracter,)
-f(and)i(not)f(notice)g(the)g(error)g(un)o(til)g(y)o(ou)g(ha)o(v)o(e)g
-(t)o(yp)q(ed)75 2438 y(sev)o(eral)f(other)g(c)o(haracters.)19
-b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fk(C-b)f
-Fs(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)g(and)75
-2493 y(then)i(correct)e(y)o(our)h(mistak)o(e.)k(Afterw)o(ards,)13
-b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g(to)g(the)g(righ)o(t)f
-(with)g Fk(C-f)p Fs(.)137 2560 y(When)j(y)o(ou)f(add)g(text)g(in)g(the)
-h(middle)f(of)g(a)f(line,)h(y)o(ou)g(will)f(notice)h(that)g(c)o
-(haracters)f(to)h(the)g(righ)o(t)75 2615 y(of)e(the)g(cursor)g(are)g
-(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h(ro)q(om)g(for)f(the)i(text)f
-(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)20 b(Lik)o(ewise,)75
-2670 y(when)f(y)o(ou)g(delete)g(text)f(b)q(ehind)i(the)f(cursor,)g(c)o
-(haracters)f(to)g(the)h(righ)o(t)e(of)h(the)h(cursor)g(are)f(`pulled)p
-eop end
-%%Page: 2 6
-TeXDict begin 2 5 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(2)75 149 y(bac)o(k')11 b(to)g(\014ll)f(in)i(the)f
-(blank)g(space)h(created)f(b)o(y)h(the)f(remo)o(v)m(al)f(of)h(the)h
-(text.)18 b(A)11 b(list)f(of)h(the)h(bare)f(essen)o(tials)75
-204 y(for)k(editing)f(the)h(text)g(of)g(an)g(input)g(line)g(follo)o
-(ws.)75 281 y Fk(C-b)168 b Fs(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
-(haracter.)75 358 y Fk(C-f)168 b Fs(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
-(c)o(haracter.)75 434 y Fr(DEL)g Fs(or)f Fr(Backspace)315
-489 y Fs(Delete)h(the)g(c)o(haracter)g(to)f(the)h(left)g(of)g(the)g
-(cursor.)75 566 y Fk(C-d)168 b Fs(Delete)15 b(the)g(c)o(haracter)g
-(underneath)h(the)f(cursor.)75 642 y(Prin)o(ting)f(c)o(haracters)315
-697 y(Insert)h(the)h(c)o(haracter)e(in)o(to)g(the)i(line)f(at)f(the)h
-(cursor.)75 774 y Fk(C-_)g Fs(or)f Fk(C-x)h(C-u)315 829
-y Fs(Undo)i(the)g(last)e(editing)h(command.)25 b(Y)l(ou)17
-b(can)g(undo)g(all)e(the)i(w)o(a)o(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315
-884 y(line.)75 960 y(\(Dep)q(ending)f(on)g(y)o(our)f(con\014guration,)g
-(the)h Fr(Backspace)e Fs(k)o(ey)i(b)q(e)g(set)g(to)f(delete)h(the)g(c)o
-(haracter)f(to)g(the)75 1015 y(left)j(of)h(the)g(cursor)g(and)g(the)h
-Fr(DEL)e Fs(k)o(ey)h(set)g(to)g(delete)g(the)g(c)o(haracter)g
-(underneath)g(the)h(cursor,)f(lik)o(e)75 1070 y Fk(C-d)p
-Fs(,)c(rather)h(than)g(the)g(c)o(haracter)g(to)f(the)i(left)e(of)h(the)
-g(cursor.\))75 1166 y Fh(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i
-(Commands)75 1240 y Fs(The)14 b(ab)q(o)o(v)o(e)g(table)f(describ)q(es)h
-(the)g(most)f(basic)h(k)o(eystrok)o(es)f(that)g(y)o(ou)g(need)i(in)f
-(order)f(to)g(do)h(editing)f(of)75 1295 y(the)k(input)f(line.)23
-b(F)l(or)16 b(y)o(our)g(con)o(v)o(enience,)h(man)o(y)f(other)g
-(commands)h(ha)o(v)o(e)f(b)q(een)h(added)h(in)e(addition)75
-1349 y(to)h Fk(C-b)p Fs(,)g Fk(C-f)p Fs(,)g Fk(C-d)p
-Fs(,)g(and)h Fr(DEL)p Fs(.)26 b(Here)18 b(are)f(some)g(commands)h(for)e
-(mo)o(ving)h(more)g(rapidly)g(ab)q(out)g(the)75 1404
-y(line.)75 1481 y Fk(C-a)168 b Fs(Mo)o(v)o(e)14 b(to)h(the)g(start)f
-(of)h(the)g(line.)75 1558 y Fk(C-e)168 b Fs(Mo)o(v)o(e)14
-b(to)h(the)g(end)h(of)f(the)g(line.)75 1634 y Fk(M-f)168
-b Fs(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h
-(is)g(comp)q(osed)g(of)g(letters)f(and)i(digits.)75 1711
-y Fk(M-b)168 b Fs(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
-1788 y Fk(C-l)168 b Fs(Clear)14 b(the)i(screen,)f(reprin)o(ting)f(the)h
-(curren)o(t)g(line)g(at)g(the)g(top.)137 1864 y(Notice)d(ho)o(w)g
-Fk(C-f)g Fs(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)g
-Fk(M-f)g Fs(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18
-b(It)13 b(is)f(a)g(lo)q(ose)75 1919 y(con)o(v)o(en)o(tion)i(that)g(con)
-o(trol)g(k)o(eystrok)o(es)g(op)q(erate)h(on)f(c)o(haracters)h(while)f
-(meta)g(k)o(eystrok)o(es)g(op)q(erate)h(on)75 1974 y(w)o(ords.)75
-2071 y Fh(1.2.3)30 b(Readline)20 b(Killing)h(Commands)75
-2144 y Fi(Killing)16 b Fs(text)d(means)g(to)g(delete)g(the)g(text)g
-(from)g(the)g(line,)g(but)h(to)e(sa)o(v)o(e)h(it)f(a)o(w)o(a)o(y)g(for)
-h(later)f(use,)i(usually)75 2199 y(b)o(y)f Fi(y)o(anking)k
-Fs(\(re-inserting\))12 b(it)h(bac)o(k)g(in)o(to)g(the)g(line.)19
-b(\(`Cut')12 b(and)i(`paste')e(are)h(more)h(recen)o(t)f(jargon)g(for)75
-2254 y(`kill')g(and)j(`y)o(ank'.\))137 2319 y(If)g(the)f(description)f
-(for)h(a)g(command)g(sa)o(ys)f(that)h(it)f(`kills')f(text,)h(then)i(y)o
-(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o(ou)75 2374 y(can)h(get)g(the)g
-(text)g(bac)o(k)g(in)g(a)g(di\013eren)o(t)f(\(or)h(the)g(same\))g
-(place)g(later.)137 2440 y(When)d(y)o(ou)g(use)g(a)f(kill)f(command,)i
-(the)g(text)f(is)g(sa)o(v)o(ed)g(in)h(a)f Fi(kill-ring)p
-Fs(.)17 b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-2495 y(kills)j(sa)o(v)o(e)h(all)f(of)h(the)h(killed)f(text)g(together,)
-f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)g(bac)o(k,)g(y)o(ou)g(get)g
-(it)g(all.)20 b(The)75 2549 y(kill)15 b(ring)h(is)f(not)h(line)g(sp)q
-(eci\014c;)h(the)f(text)g(that)f(y)o(ou)h(killed)g(on)g(a)g(previously)
-f(t)o(yp)q(ed)i(line)f(is)f(a)o(v)m(ailable)75 2604 y(to)g(b)q(e)g(y)o
-(ank)o(ed)g(bac)o(k)h(later,)d(when)j(y)o(ou)f(are)g(t)o(yping)f
-(another)h(line.)137 2670 y(Here)h(is)e(the)i(list)e(of)g(commands)h
-(for)g(killing)f(text.)p eop end
-%%Page: 3 7
-TeXDict begin 3 6 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(3)75 149 y Fk(C-k)168 b Fs(Kill)14 b(the)i(text)e(from)
-h(the)g(curren)o(t)g(cursor)g(p)q(osition)f(to)h(the)g(end)h(of)f(the)g
-(line.)75 230 y Fk(M-d)168 b Fs(Kill)12 b(from)h(the)g(cursor)g(to)f
-(the)i(end)g(of)e(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)f(b)q(et)o(w)o
-(een)i(w)o(ords,)e(to)h(the)315 285 y(end)j(of)f(the)g(next)g(w)o(ord.)
-k(W)l(ord)c(b)q(oundaries)h(are)f(the)g(same)g(as)g(those)f(used)i(b)o
-(y)f Fk(M-f)p Fs(.)75 366 y Fk(M-DEL)120 b Fs(Kill)14
-b(from)h(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o(t)g(w)o(ord,)
-f(or,)h(if)f(b)q(et)o(w)o(een)i(w)o(ords,)e(to)h(the)315
-421 y(start)j(of)h(the)g(previous)g(w)o(ord.)31 b(W)l(ord)19
-b(b)q(oundaries)g(are)g(the)h(same)e(as)h(those)g(used)h(b)o(y)315
-476 y Fk(M-b)p Fs(.)75 557 y Fk(C-w)168 b Fs(Kill)17
-b(from)f(the)i(cursor)f(to)g(the)h(previous)f(whitespace.)27
-b(This)17 b(is)g(di\013eren)o(t)f(than)i Fk(M-DEL)315
-611 y Fs(b)q(ecause)e(the)f(w)o(ord)g(b)q(oundaries)g(di\013er.)137
-693 y(Here)21 b(is)g(ho)o(w)f(to)g Fi(y)o(ank)j Fs(the)e(text)f(bac)o
-(k)h(in)o(to)f(the)g(line.)37 b(Y)l(anking)20 b(means)h(to)f(cop)o(y)h
-(the)g(most-)75 748 y(recen)o(tly-killed)14 b(text)h(from)f(the)i(kill)
-e(bu\013er.)75 829 y Fk(C-y)168 b Fs(Y)l(ank)15 b(the)h(most)e(recen)o
-(tly)h(killed)f(text)h(bac)o(k)g(in)o(to)f(the)i(bu\013er)f(at)f(the)i
-(cursor.)75 910 y Fk(M-y)168 b Fs(Rotate)17 b(the)g(kill-ring,)f(and)h
-(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)f(do)g(this)g
-(if)f(the)i(prior)315 965 y(command)d(is)g Fk(C-y)g Fs(or)f
-Fk(M-y)p Fs(.)75 1066 y Fh(1.2.4)30 b(Readline)20 b(Argumen)n(ts)75
-1139 y Fs(Y)l(ou)g(can)f(pass)h(n)o(umeric)f(argumen)o(ts)g(to)g
-(Readline)h(commands.)32 b(Sometimes)19 b(the)h(argumen)o(t)e(acts)75
-1194 y(as)i(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)f(it)h(is)f(the)h
-Fj(sign)j Fs(of)c(the)h(argumen)o(t)g(that)f(is)h(signi\014can)o(t.)33
-b(If)20 b(y)o(ou)75 1249 y(pass)d(a)f(negativ)o(e)g(argumen)o(t)g(to)g
-(a)g(command)h(whic)o(h)g(normally)e(acts)h(in)h(a)f(forw)o(ard)g
-(direction,)g(that)75 1304 y(command)i(will)e(act)h(in)h(a)f(bac)o(kw)o
-(ard)g(direction.)26 b(F)l(or)17 b(example,)h(to)f(kill)g(text)g(bac)o
-(k)g(to)g(the)h(start)e(of)75 1359 y(the)f(line,)g(y)o(ou)g(migh)o(t)f
-(t)o(yp)q(e)h(`)p Fr(M--)f(C-k)p Fs('.)137 1427 y(The)h(general)e(w)o
-(a)o(y)g(to)h(pass)g(n)o(umeric)g(argumen)o(ts)f(to)g(a)h(command)g(is)
-g(to)f(t)o(yp)q(e)h(meta)g(digits)f(b)q(efore)75 1482
-y(the)j(command.)k(If)c(the)f(\014rst)g(`digit')f(t)o(yp)q(ed)h(is)g(a)
-h(min)o(us)f(sign)g(\(`)p Fr(-)p Fs('\),)e(then)j(the)f(sign)g(of)g
-(the)h(argumen)o(t)75 1537 y(will)i(b)q(e)i(negativ)o(e.)30
-b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(one)g(meta)g(digit)f
-(to)g(get)h(the)g(argumen)o(t)f(started,)h(y)o(ou)75
-1592 y(can)c(t)o(yp)q(e)f(the)h(remainder)f(of)g(the)g(digits,)f(and)i
-(then)g(the)f(command.)20 b(F)l(or)13 b(example,)h(to)g(giv)o(e)g(the)g
-Fk(C-d)75 1646 y Fs(command)19 b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f
-(could)h(t)o(yp)q(e)g(`)p Fr(M-1)14 b(0)h(C-d)p Fs(',)k(whic)o(h)f
-(will)f(delete)i(the)g(next)g(ten)75 1701 y(c)o(haracters)14
-b(on)i(the)f(input)g(line.)75 1802 y Fh(1.2.5)30 b(Searc)n(hing)21
-b(for)f(Commands)h(in)f(the)h(History)75 1875 y Fs(Readline)11
-b(pro)o(vides)f(commands)h(for)f(searc)o(hing)g(through)g(the)h
-(command)f(history)g(for)g(lines)g(con)o(taining)75 1930
-y(a)15 b(sp)q(eci\014ed)h(string.)j(There)c(are)g(t)o(w)o(o)f(searc)o
-(h)h(mo)q(des:)20 b Fi(incremen)o(tal)c Fs(and)g Fi(non-incremen)o(tal)
-p Fs(.)137 1999 y(Incremen)o(tal)d(searc)o(hes)g(b)q(egin)g(b)q(efore)g
-(the)g(user)g(has)g(\014nished)g(t)o(yping)f(the)h(searc)o(h)g(string.)
-18 b(As)13 b(eac)o(h)75 2054 y(c)o(haracter)k(of)g(the)h(searc)o(h)g
-(string)e(is)h(t)o(yp)q(ed,)i(Readline)f(displa)o(ys)e(the)i(next)g(en)
-o(try)f(from)g(the)h(history)75 2108 y(matc)o(hing)11
-b(the)h(string)f(t)o(yp)q(ed)h(so)g(far.)18 b(An)13 b(incremen)o(tal)e
-(searc)o(h)h(requires)f(only)h(as)g(man)o(y)f(c)o(haracters)g(as)75
-2163 y(needed)16 b(to)d(\014nd)j(the)e(desired)h(history)e(en)o(try)l
-(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o(ard)f(in)i(the)f(history)f(for)h
-(a)g(particular)75 2218 y(string,)f(t)o(yp)q(e)i Fk(C-r)p
-Fs(.)k(T)o(yping)c Fk(C-s)f Fs(searc)o(hes)h(forw)o(ard)e(through)h
-(the)h(history)l(.)k(The)c(c)o(haracters)f(presen)o(t)75
-2273 y(in)19 b(the)g(v)m(alue)g(of)g(the)g Fr(isearch-terminators)d
-Fs(v)m(ariable)i(are)h(used)h(to)e(terminate)g(an)h(incremen)o(tal)75
-2328 y(searc)o(h.)35 b(If)20 b(that)f(v)m(ariable)h(has)g(not)g(b)q
-(een)h(assigned)f(a)g(v)m(alue,)h(the)f Fr(ESC)g Fs(and)g
-Fk(C-J)g Fs(c)o(haracters)f(will)75 2382 y(terminate)h(an)h(incremen)o
-(tal)g(searc)o(h.)37 b Fk(C-g)21 b Fs(will)f(ab)q(ort)h(an)g(incremen)o
-(tal)f(searc)o(h)h(and)g(restore)g(the)75 2437 y(original)13
-b(line.)19 b(When)c(the)f(searc)o(h)g(is)g(terminated,)g(the)g(history)
-g(en)o(try)g(con)o(taining)f(the)i(searc)o(h)f(string)75
-2492 y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 2560
-y(T)l(o)g(\014nd)i(other)e(matc)o(hing)f(en)o(tries)h(in)h(the)f
-(history)g(list,)f(t)o(yp)q(e)h Fk(C-r)g Fs(or)g Fk(C-s)g
-Fs(as)h(appropriate.)j(This)75 2615 y(will)12 b(searc)o(h)h(bac)o(kw)o
-(ard)f(or)g(forw)o(ard)g(in)h(the)g(history)f(for)h(the)g(next)g(en)o
-(try)g(matc)o(hing)f(the)h(searc)o(h)g(string)75 2670
-y(t)o(yp)q(ed)19 b(so)g(far.)30 b(An)o(y)19 b(other)f(k)o(ey)h
-(sequence)h(b)q(ound)g(to)e(a)h(Readline)g(command)f(will)g(terminate)g
-(the)p eop end
-%%Page: 4 8
-TeXDict begin 4 7 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(4)75 149 y(searc)o(h)13 b(and)f(execute)i(that)e
-(command.)19 b(F)l(or)12 b(instance,)h(a)f Fr(RET)g Fs(will)g
-(terminate)f(the)i(searc)o(h)g(and)g(accept)75 204 y(the)i(line,)f
-(thereb)o(y)h(executing)f(the)h(command)g(from)f(the)g(history)g(list.)
-k(A)d(mo)o(v)o(emen)o(t)f(command)g(will)75 259 y(terminate)g(the)h
-(searc)o(h,)g(mak)o(e)g(the)g(last)f(line)h(found)h(the)f(curren)o(t)g
-(line,)f(and)i(b)q(egin)f(editing.)137 323 y(Readline)j(remem)o(b)q
-(ers)f(the)h(last)e(incremen)o(tal)h(searc)o(h)g(string.)26
-b(If)17 b(t)o(w)o(o)f Fk(C-r)p Fs(s)h(are)g(t)o(yp)q(ed)h(without)75
-378 y(an)o(y)g(in)o(terv)o(ening)f(c)o(haracters)h(de\014ning)g(a)g
-(new)h(searc)o(h)f(string,)f(an)o(y)h(remem)o(b)q(ered)h(searc)o(h)f
-(string)f(is)75 433 y(used.)137 498 y(Non-incremen)o(tal)23
-b(searc)o(hes)g(read)h(the)f(en)o(tire)g(searc)o(h)g(string)f(b)q
-(efore)i(starting)e(to)g(searc)o(h)i(for)75 552 y(matc)o(hing)c
-(history)h(lines.)37 b(The)22 b(searc)o(h)f(string)f(ma)o(y)h(b)q(e)h
-(t)o(yp)q(ed)f(b)o(y)h(the)f(user)h(or)e(b)q(e)i(part)f(of)g(the)75
-607 y(con)o(ten)o(ts)15 b(of)f(the)i(curren)o(t)f(line.)75
-718 y Fq(1.3)33 b(Readline)21 b(Init)i(File)75 797 y
-Fs(Although)e(the)h(Readline)h(library)d(comes)i(with)f(a)h(set)f(of)h
-(Emacs-lik)o(e)f(k)o(eybindings)g(installed)g(b)o(y)75
-852 y(default,)12 b(it)g(is)g(p)q(ossible)g(to)g(use)g(a)g(di\013eren)o
-(t)g(set)g(of)g(k)o(eybindings.)19 b(An)o(y)12 b(user)h(can)f
-(customize)g(programs)75 907 y(that)21 b(use)i(Readline)f(b)o(y)h
-(putting)e(commands)h(in)g(an)g Fi(inputrc)j Fs(\014le,)f(con)o(v)o(en)
-o(tionally)c(in)i(his)g(home)75 962 y(directory)l(.)c(The)12
-b(name)g(of)f(this)g(\014le)h(is)f(tak)o(en)g(from)g(the)h(v)m(alue)g
-(of)f(the)h(en)o(vironmen)o(t)f(v)m(ariable)g Fr(INPUTRC)p
-Fs(.)75 1017 y(If)k(that)g(v)m(ariable)f(is)h(unset,)g(the)g(default)g
-(is)f Fr(~/.inputrc)p Fs(.)19 b(If)c(that)f(\014le)h(do)q(es)h(not)e
-(exist)h(or)f(cannot)h(b)q(e)75 1071 y(read,)g(the)g(ultimate)f
-(default)h(is)f Fr(/etc/inputrc)p Fs(.)137 1136 y(When)h(a)g(program)f
-(whic)o(h)g(uses)h(the)g(Readline)g(library)f(starts)f(up,)i(the)g
-(init)f(\014le)h(is)f(read,)h(and)g(the)75 1191 y(k)o(ey)g(bindings)g
-(are)g(set.)137 1255 y(In)f(addition,)f(the)g Fr(C-x)i(C-r)e
-Fs(command)g(re-reads)h(this)f(init)f(\014le,)i(th)o(us)f(incorp)q
-(orating)f(an)o(y)h(c)o(hanges)75 1310 y(that)h(y)o(ou)h(migh)o(t)f(ha)
-o(v)o(e)h(made)g(to)g(it.)75 1404 y Fh(1.3.1)30 b(Readline)20
-b(Init)g(File)h(Syn)n(tax)75 1477 y Fs(There)g(are)f(only)g(a)g(few)h
-(basic)f(constructs)g(allo)o(w)o(ed)f(in)h(the)h(Readline)f(init)g
-(\014le.)36 b(Blank)20 b(lines)g(are)75 1532 y(ignored.)35
-b(Lines)21 b(b)q(eginning)g(with)e(a)i(`)p Fr(#)p Fs(')e(are)h(commen)o
-(ts.)35 b(Lines)21 b(b)q(eginning)g(with)f(a)g(`)p Fr($)p
-Fs(')f(indicate)75 1587 y(conditional)g(constructs)i(\(see)f(Section)h
-(1.3.2)e([Conditional)g(Init)h(Constructs],)h(page)f(12\).)36
-b(Other)75 1642 y(lines)15 b(denote)g(v)m(ariable)g(settings)f(and)h(k)
-o(ey)g(bindings.)75 1716 y(V)l(ariable)f(Settings)315
-1771 y(Y)l(ou)20 b(can)h(mo)q(dify)f(the)g(run-time)g(b)q(eha)o(vior)g
-(of)f(Readline)i(b)o(y)f(altering)f(the)h(v)m(alues)g(of)315
-1826 y(v)m(ariables)c(in)h(Readline)g(using)f(the)h Fr(set)g
-Fs(command)f(within)g(the)h(init)f(\014le.)25 b(The)17
-b(syn)o(tax)315 1880 y(is)e(simple:)435 1945 y Fr(set)23
-b Fk(variable)g(value)315 2009 y Fs(Here,)14 b(for)f(example,)g(is)g
-(ho)o(w)g(to)g(c)o(hange)h(from)f(the)h(default)f(Emacs-lik)o(e)g(k)o
-(ey)g(binding)h(to)315 2064 y(use)i Fr(vi)e Fs(line)h(editing)g
-(commands:)435 2129 y Fr(set)23 b(editing-mode)g(vi)315
-2193 y Fs(V)l(ariable)17 b(names)g(and)h(v)m(alues,)g(where)f
-(appropriate,)g(are)g(recognized)h(without)e(regard)315
-2248 y(to)f(case.)k(Unrecognized)d(v)m(ariable)f(names)g(are)g
-(ignored.)315 2312 y(Bo)q(olean)d(v)m(ariables)g(\(those)g(that)g(can)g
-(b)q(e)i(set)e(to)g(on)g(or)g(o\013)t(\))f(are)h(set)h(to)f(on)g(if)g
-(the)h(v)m(alue)f(is)315 2367 y(n)o(ull)g(or)f(empt)o(y)l(,)h
-Fi(on)h Fs(\(case-insensitiv)o(e\),)d(or)i(1.)19 b(An)o(y)12
-b(other)g(v)m(alue)g(results)f(in)h(the)h(v)m(ariable)315
-2422 y(b)q(eing)i(set)g(to)g(o\013.)315 2486 y(A)g(great)g(deal)f(of)h
-(run-time)g(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)i(follo)o
-(wing)c(v)m(ariables.)315 2560 y Fr(bell-style)555 2615
-y Fs(Con)o(trols)20 b(what)i(happ)q(ens)h(when)f(Readline)g(w)o(an)o
-(ts)f(to)g(ring)h(the)g(termi-)555 2670 y(nal)c(b)q(ell.)30
-b(If)19 b(set)f(to)g(`)p Fr(none)p Fs(',)g(Readline)h(nev)o(er)g(rings)
-f(the)g(b)q(ell.)30 b(If)19 b(set)g(to)p eop end
-%%Page: 5 9
-TeXDict begin 5 8 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(5)555 149 y(`)p Fr(visible)p Fs(',)15
-b(Readline)h(uses)h(a)f(visible)g(b)q(ell)h(if)f(one)g(is)g(a)o(v)m
-(ailable.)23 b(If)16 b(set)h(to)555 204 y(`)p Fr(audible)p
-Fs(')g(\(the)h(default\),)h(Readline)g(attempts)f(to)g(ring)g(the)h
-(terminal's)555 259 y(b)q(ell.)315 350 y Fr(bind-tty-special-chars)555
-405 y Fs(If)f(set)f(to)g(`)p Fr(on)p Fs(')f(\(the)i(default\),)f
-(Readline)g(attempts)g(to)g(bind)h(the)f(con)o(trol)555
-460 y(c)o(haracters)d(treated)g(sp)q(ecially)g(b)o(y)g(the)h(k)o
-(ernel's)e(terminal)h(driv)o(er)g(to)f(their)555 515
-y(Readline)j(equiv)m(alen)o(ts.)315 606 y Fr(blink-matching-paren)555
-661 y Fs(If)i(set)g(to)g(`)p Fr(on)p Fs(',)f(Readline)i(attempts)e(to)g
-(brie\015y)h(mo)o(v)o(e)g(the)g(cursor)g(to)f(an)555
-716 y(op)q(ening)k(paren)o(thesis)f(when)i(a)e(closing)g(paren)o
-(thesis)h(is)f(inserted.)37 b(The)555 770 y(default)15
-b(is)f(`)p Fr(off)p Fs('.)315 862 y Fr(colored-completion-prefix)555
-917 y Fs(If)h(set)f(to)g(`)p Fr(on)p Fs(',)g(when)h(listing)e
-(completions,)h(Readline)h(displa)o(ys)e(the)i(com-)555
-971 y(mon)e(pre\014x)g(of)f(the)h(set)f(of)g(p)q(ossible)h(completions)
-f(using)g(a)g(di\013eren)o(t)g(color.)555 1026 y(The)20
-b(color)f(de\014nitions)h(are)g(tak)o(en)f(from)g(the)h(v)m(alue)h(of)e
-(the)h Fr(LS_COLORS)555 1081 y Fs(en)o(vironmen)o(t)14
-b(v)m(ariable.)20 b(The)15 b(default)g(is)g(`)p Fr(off)p
-Fs('.)315 1172 y Fr(colored-stats)555 1227 y Fs(If)f(set)f(to)f(`)p
-Fr(on)p Fs(',)g(Readline)i(displa)o(ys)e(p)q(ossible)h(completions)g
-(using)g(di\013eren)o(t)555 1282 y(colors)19 b(to)f(indicate)i(their)f
-(\014le)g(t)o(yp)q(e.)33 b(The)20 b(color)f(de\014nitions)g(are)g(tak)o
-(en)555 1337 y(from)12 b(the)g(v)m(alue)h(of)e(the)i
-Fr(LS_COLORS)e Fs(en)o(vironmen)o(t)h(v)m(ariable.)18
-b(The)12 b(default)555 1391 y(is)j(`)p Fr(off)p Fs('.)315
-1483 y Fr(comment-begin)555 1538 y Fs(The)31 b(string)f(to)h(insert)g
-(at)f(the)h(b)q(eginning)h(of)e(the)h(line)g(when)h(the)555
-1592 y Fr(insert-comment)13 b Fs(command)i(is)g(executed.)21
-b(The)15 b(default)g(v)m(alue)g(is)g Fr("#")p Fs(.)315
-1684 y Fr(completion-display-width)555 1738 y Fs(The)21
-b(n)o(um)o(b)q(er)g(of)g(screen)g(columns)f(used)i(to)e(displa)o(y)g(p)
-q(ossible)g(matc)o(hes)555 1793 y(when)15 b(p)q(erforming)f
-(completion.)19 b(The)14 b(v)m(alue)h(is)f(ignored)g(if)g(it)g(is)g
-(less)g(than)555 1848 y(0)f(or)f(greater)h(than)g(the)g(terminal)f
-(screen)h(width.)19 b(A)13 b(v)m(alue)g(of)g(0)g(will)f(cause)555
-1903 y(matc)o(hes)j(to)f(b)q(e)i(displa)o(y)o(ed)f(one)g(p)q(er)h
-(line.)j(The)d(default)e(v)m(alue)i(is)f(-1.)315 1994
-y Fr(completion-ignore-case)555 2049 y Fs(If)f(set)f(to)g(`)p
-Fr(on)p Fs(',)g(Readline)h(p)q(erforms)f(\014lename)h(matc)o(hing)f
-(and)h(completion)555 2104 y(in)h(a)g(case-insensitiv)o(e)f(fashion.)20
-b(The)15 b(default)g(v)m(alue)g(is)g(`)p Fr(off)p Fs('.)315
-2195 y Fr(completion-map-case)555 2250 y Fs(If)c(set)g(to)g(`)p
-Fr(on)p Fs(',)f(and)h Fi(completion-ignore-case)i Fs(is)e(enabled,)h
-(Readline)f(treats)555 2305 y(h)o(yphens)16 b(\(`)p Fr(-)p
-Fs('\))e(and)i(underscores)g(\(`)p Fr(_)p Fs('\))d(as)j(equiv)m(alen)o
-(t)f(when)h(p)q(erforming)555 2359 y(case-insensitiv)o(e)e(\014lename)i
-(matc)o(hing)e(and)h(completion.)315 2451 y Fr
-(completion-prefix-display-)o(length)555 2506 y Fs(The)h(length)f(in)h
-(c)o(haracters)f(of)g(the)h(common)f(pre\014x)h(of)f(a)h(list)e(of)h(p)
-q(ossible)555 2560 y(completions)f(that)g(is)g(displa)o(y)o(ed)g
-(without)g(mo)q(di\014cation.)19 b(When)c(set)g(to)f(a)555
-2615 y(v)m(alue)f(greater)f(than)h(zero,)f(common)h(pre\014xes)g
-(longer)f(than)h(this)f(v)m(alue)h(are)555 2670 y(replaced)i(with)g(an)
-g(ellipsis)f(when)i(displa)o(ying)e(p)q(ossible)h(completions.)p
-eop end
-%%Page: 6 10
-TeXDict begin 6 9 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(6)315 149 y Fr(completion-query-items)555
-204 y Fs(The)13 b(n)o(um)o(b)q(er)h(of)e(p)q(ossible)h(completions)g
-(that)f(determines)h(when)h(the)f(user)555 259 y(is)h(ask)o(ed)h
-(whether)g(the)f(list)g(of)g(p)q(ossibilities)f(should)i(b)q(e)g
-(displa)o(y)o(ed.)k(If)c(the)555 314 y(n)o(um)o(b)q(er)f(of)f(p)q
-(ossible)g(completions)f(is)h(greater)g(than)g(this)g(v)m(alue,)h
-(Readline)555 369 y(will)e(ask)h(the)g(user)h(whether)f(or)g(not)g(he)g
-(wishes)g(to)g(view)g(them;)g(otherwise,)555 423 y(they)f(are)g(simply)
-g(listed.)18 b(This)12 b(v)m(ariable)f(m)o(ust)h(b)q(e)h(set)f(to)f(an)
-h(in)o(teger)g(v)m(alue)555 478 y(greater)g(than)g(or)g(equal)g(to)g
-(0.)18 b(A)13 b(negativ)o(e)e(v)m(alue)i(means)f(Readline)h(should)555
-533 y(nev)o(er)i(ask.)20 b(The)15 b(default)g(limit)f(is)g
-Fr(100)p Fs(.)315 611 y Fr(convert-meta)555 666 y Fs(If)d(set)g(to)g(`)
-p Fr(on)p Fs(',)f(Readline)h(will)f(con)o(v)o(ert)g(c)o(haracters)h
-(with)f(the)h(eigh)o(th)g(bit)f(set)555 721 y(to)15 b(an)h
-Fl(asci)q(i)f Fs(k)o(ey)h(sequence)h(b)o(y)f(stripping)f(the)h(eigh)o
-(th)f(bit)h(and)g(pre\014xing)555 776 y(an)c Fr(ESC)g
-Fs(c)o(haracter,)g(con)o(v)o(erting)f(them)h(to)f(a)h(meta-pre\014xed)h
-(k)o(ey)f(sequence.)555 830 y(The)j(default)g(v)m(alue)h(is)e(`)p
-Fr(on)p Fs('.)315 909 y Fr(disable-completion)555 964
-y Fs(If)19 b(set)f(to)f(`)p Fr(On)p Fs(',)h(Readline)h(will)e(inhibit)g
-(w)o(ord)h(completion.)28 b(Completion)555 1018 y(c)o(haracters)12
-b(will)g(b)q(e)i(inserted)f(in)o(to)f(the)h(line)f(as)h(if)g(they)g
-(had)g(b)q(een)h(mapp)q(ed)555 1073 y(to)h Fr(self-insert)p
-Fs(.)j(The)d(default)g(is)g(`)p Fr(off)p Fs('.)315 1151
-y Fr(editing-mode)555 1206 y Fs(The)g Fr(editing-mode)d
-Fs(v)m(ariable)i(con)o(trols)f(whic)o(h)h(default)g(set)g(of)g(k)o(ey)g
-(bind-)555 1261 y(ings)e(is)g(used.)20 b(By)12 b(default,)h(Readline)f
-(starts)g(up)h(in)f(Emacs)g(editing)g(mo)q(de,)555 1316
-y(where)j(the)f(k)o(eystrok)o(es)g(are)g(most)g(similar)f(to)g(Emacs.)
-20 b(This)14 b(v)m(ariable)g(can)555 1371 y(b)q(e)i(set)f(to)f(either)h
-(`)p Fr(emacs)p Fs(')f(or)h(`)p Fr(vi)p Fs('.)315 1449
-y Fr(emacs-mode-string)555 1504 y Fs(This)f(string)g(is)h(displa)o(y)o
-(ed)f(immediately)f(b)q(efore)j(the)e(last)g(line)h(of)f(the)h(pri-)555
-1558 y(mary)21 b(prompt)g(when)h(emacs)g(editing)f(mo)q(de)h(is)f
-(activ)o(e.)39 b(The)22 b(v)m(alue)f(is)555 1613 y(expanded)15
-b(lik)o(e)f(a)g(k)o(ey)g(binding,)g(so)g(the)g(standard)g(set)g(of)g
-(meta-)g(and)h(con-)555 1668 y(trol)h(pre\014xes)j(and)f(bac)o(kslash)f
-(escap)q(e)h(sequences)h(is)e(a)o(v)m(ailable.)26 b(Use)18
-b(the)555 1723 y(`)p Fr(\\1)p Fs(')g(and)h(`)p Fr(\\2)p
-Fs(')f(escap)q(es)i(to)e(b)q(egin)h(and)g(end)h(sequences)g(of)f
-(non-prin)o(ting)555 1778 y(c)o(haracters,)11 b(whic)o(h)h(can)g(b)q(e)
-g(used)h(to)e(em)o(b)q(ed)h(a)g(terminal)e(con)o(trol)h(sequence)555
-1832 y(in)o(to)j(the)h(mo)q(de)h(string.)j(The)c(default)g(is)g(`)p
-Fr(@)p Fs('.)315 1911 y Fr(echo-control-characters)555
-1965 y Fs(When)h(set)e(to)h(`)p Fr(on)p Fs(',)f(on)h(op)q(erating)f
-(systems)h(that)f(indicate)h(they)g(supp)q(ort)555 2020
-y(it,)g(readline)g(ec)o(ho)q(es)h(a)g(c)o(haracter)f(corresp)q(onding)h
-(to)f(a)g(signal)g(generated)555 2075 y(from)f(the)i(k)o(eyb)q(oard.)k
-(The)15 b(default)g(is)f(`)p Fr(on)p Fs('.)315 2153 y
-Fr(enable-bracketed-paste)555 2208 y Fs(When)f(set)f(to)f(`)p
-Fr(On)p Fs(',)h(Readline)g(will)f(con\014gure)i(the)f(terminal)f(in)h
-(a)g(w)o(a)o(y)g(that)555 2263 y(will)h(enable)h(it)g(to)f(insert)h
-(eac)o(h)g(paste)g(in)o(to)f(the)h(editing)g(bu\013er)g(as)g(a)g
-(single)555 2318 y(string)h(of)h(c)o(haracters,)g(instead)g(of)f
-(treating)g(eac)o(h)i(c)o(haracter)e(as)h(if)g(it)g(had)555
-2373 y(b)q(een)i(read)e(from)g(the)h(k)o(eyb)q(oard.)24
-b(This)16 b(can)h(prev)o(en)o(t)f(pasted)h(c)o(haracters)555
-2427 y(from)d(b)q(eing)i(in)o(terpreted)f(as)g(editing)f(commands.)20
-b(The)15 b(default)g(is)g(`)p Fr(off)p Fs('.)315 2506
-y Fr(enable-keypad)555 2560 y Fs(When)d(set)f(to)h(`)p
-Fr(on)p Fs(',)e(Readline)i(will)f(try)g(to)g(enable)h(the)g
-(application)e(k)o(eypad)555 2615 y(when)k(it)e(is)h(called.)19
-b(Some)13 b(systems)g(need)h(this)f(to)g(enable)g(the)h(arro)o(w)e(k)o
-(eys.)555 2670 y(The)j(default)g(is)g(`)p Fr(off)p Fs('.)p
-eop end
-%%Page: 7 11
-TeXDict begin 7 10 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(7)315 149 y Fr(enable-meta-key)555 204
-y Fs(When)20 b(set)g(to)f(`)p Fr(on)p Fs(',)h(Readline)g(will)e(try)i
-(to)f(enable)h(an)o(y)g(meta)f(mo)q(di\014er)555 259
-y(k)o(ey)i(the)g(terminal)e(claims)h(to)g(supp)q(ort)h(when)h(it)e(is)g
-(called.)37 b(On)21 b(man)o(y)555 314 y(terminals,)16
-b(the)i(meta)f(k)o(ey)h(is)f(used)h(to)f(send)h(eigh)o(t-bit)e(c)o
-(haracters.)27 b(The)555 369 y(default)15 b(is)f(`)p
-Fr(on)p Fs('.)315 463 y Fr(expand-tilde)555 517 y Fs(If)g(set)g(to)f(`)
-p Fr(on)p Fs(',)f(tilde)i(expansion)f(is)h(p)q(erformed)g(when)g
-(Readline)g(attempts)555 572 y(w)o(ord)h(completion.)k(The)c(default)g
-(is)f(`)p Fr(off)p Fs('.)315 666 y Fr(history-preserve-point)555
-721 y Fs(If)21 b(set)g(to)f(`)p Fr(on)p Fs(',)h(the)g(history)f(co)q
-(de)h(attempts)f(to)g(place)h(the)g(p)q(oin)o(t)f(\(the)555
-776 y(curren)o(t)d(cursor)h(p)q(osition\))e(at)h(the)h(same)f(lo)q
-(cation)f(on)i(eac)o(h)g(history)e(line)555 830 y(retriev)o(ed)i(with)f
-Fr(previous-history)f Fs(or)i Fr(next-history)p Fs(.)27
-b(The)18 b(default)555 885 y(is)d(`)p Fr(off)p Fs('.)315
-979 y Fr(history-size)555 1034 y Fs(Set)20 b(the)f(maxim)o(um)g(n)o(um)
-o(b)q(er)h(of)f(history)f(en)o(tries)h(sa)o(v)o(ed)g(in)g(the)h
-(history)555 1089 y(list.)k(If)17 b(set)g(to)f(zero,)h(an)o(y)f
-(existing)g(history)g(en)o(tries)g(are)h(deleted)g(and)g(no)555
-1144 y(new)f(en)o(tries)f(are)h(sa)o(v)o(ed.)21 b(If)16
-b(set)g(to)f(a)h(v)m(alue)g(less)f(than)h(zero,)g(the)g(n)o(um)o(b)q
-(er)555 1198 y(of)f(history)f(en)o(tries)h(is)f(not)h(limited.)k(By)d
-(default,)e(the)i(n)o(um)o(b)q(er)f(of)g(history)555
-1253 y(en)o(tries)g(is)f(not)h(limited.)315 1347 y Fr
-(horizontal-scroll-mode)555 1402 y Fs(This)j(v)m(ariable)f(can)h(b)q(e)
-g(set)g(to)f(either)h(`)p Fr(on)p Fs(')f(or)g(`)p Fr(off)p
-Fs('.)27 b(Setting)18 b(it)f(to)g(`)p Fr(on)p Fs(')555
-1457 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)g(b)q(eing)g
-(edited)g(will)f(scroll)g(horizon)o(tally)555 1511 y(on)k(a)f(single)g
-(screen)i(line)e(when)i(they)f(are)f(longer)g(than)h(the)g(width)f(of)h
-(the)555 1566 y(screen,)e(instead)e(of)h(wrapping)f(on)o(to)g(a)h(new)g
-(screen)h(line.)19 b(By)13 b(default,)g(this)555 1621
-y(v)m(ariable)i(is)f(set)h(to)g(`)p Fr(off)p Fs('.)315
-1715 y Fr(input-meta)555 1770 y Fs(If)h(set)f(to)g(`)p
-Fr(on)p Fs(',)f(Readline)i(will)f(enable)g(eigh)o(t-bit)g(input)g(\(it)
-g(will)f(not)h(clear)555 1825 y(the)20 b(eigh)o(th)f(bit)g(in)h(the)g
-(c)o(haracters)f(it)g(reads\),)h(regardless)f(of)h(what)f(the)555
-1879 y(terminal)g(claims)g(it)g(can)h(supp)q(ort.)34
-b(The)20 b(default)g(v)m(alue)g(is)g(`)p Fr(off)p Fs('.)33
-b(The)555 1934 y(name)15 b Fr(meta-flag)f Fs(is)h(a)g(synon)o(ym)g(for)
-f(this)h(v)m(ariable.)315 2028 y Fr(isearch-terminators)555
-2083 y Fs(The)26 b(string)f(of)g(c)o(haracters)g(that)g(should)h
-(terminate)f(an)h(incremen)o(tal)555 2138 y(searc)o(h)12
-b(without)g(subsequen)o(tly)g(executing)h(the)f(c)o(haracter)g(as)g(a)g
-(command)555 2192 y(\(see)22 b(Section)g(1.2.5)f([Searc)o(hing],)i
-(page)f(3\).)40 b(If)23 b(this)f(v)m(ariable)f(has)h(not)555
-2247 y(b)q(een)d(giv)o(en)e(a)g(v)m(alue,)i(the)f(c)o(haracters)e
-Fr(ESC)i Fs(and)g Fk(C-J)f Fs(will)f(terminate)h(an)555
-2302 y(incremen)o(tal)d(searc)o(h.)315 2396 y Fr(keymap)96
-b Fs(Sets)19 b(Readline's)h(idea)f(of)g(the)g(curren)o(t)h(k)o(eymap)f
-(for)f(k)o(ey)i(binding)f(com-)555 2451 y(mands.)41 b(Acceptable)22
-b Fr(keymap)g Fs(names)g(are)f Fr(emacs)p Fs(,)i Fr(emacs-standard)p
-Fs(,)555 2506 y Fr(emacs-meta)p Fs(,)49 b Fr(emacs-ctlx)p
-Fs(,)g Fr(vi)p Fs(,)h Fr(vi-move)p Fs(,)f Fr(vi-command)p
-Fs(,)g(and)555 2560 y Fr(vi-insert)p Fs(.)31 b Fr(vi)20
-b Fs(is)f(equiv)m(alen)o(t)g(to)g Fr(vi-command)p Fs(;)g
-Fr(emacs)g Fs(is)g(equiv)m(alen)o(t)555 2615 y(to)c Fr(emacs-standard)p
-Fs(.)20 b(The)d(default)e(v)m(alue)h(is)g Fr(emacs)p
-Fs(.)21 b(The)16 b(v)m(alue)g(of)g(the)555 2670 y Fr(editing-mode)e
-Fs(v)m(ariable)g(also)g(a\013ects)h(the)g(default)g(k)o(eymap.)p
-eop end
-%%Page: 8 12
-TeXDict begin 8 11 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(8)315 149 y Fr(keyseq-timeout)555 204
-y Fs(Sp)q(eci\014es)14 b(the)f(duration)f(Readline)h(will)e(w)o(ait)g
-(for)h(a)h(c)o(haracter)f(when)h(read-)555 259 y(ing)i(an)f(am)o
-(biguous)g(k)o(ey)h(sequence)h(\(one)f(that)f(can)i(form)e(a)g
-(complete)h(k)o(ey)555 314 y(sequence)j(using)e(the)h(input)f(read)h
-(so)f(far,)g(or)g(can)h(tak)o(e)f(additional)f(input)555
-369 y(to)h(complete)g(a)g(longer)g(k)o(ey)g(sequence\).)25
-b(If)16 b(no)h(input)f(is)g(receiv)o(ed)h(within)555
-423 y(the)22 b(timeout,)f(Readline)h(will)e(use)i(the)g(shorter)e(but)i
-(complete)f(k)o(ey)h(se-)555 478 y(quence.)e(Readline)13
-b(uses)g(this)f(v)m(alue)h(to)g(determine)f(whether)h(or)g(not)f(input)
-555 533 y(is)j(a)o(v)m(ailable)f(on)h(the)g(curren)o(t)h(input)f
-(source)g(\()p Fr(rl_instream)f Fs(b)o(y)h(default\).)555
-588 y(The)e(v)m(alue)g(is)f(sp)q(eci\014ed)i(in)e(milliseconds,)g(so)g
-(a)g(v)m(alue)h(of)g(1000)e(means)i(that)555 643 y(Readline)e(will)f(w)
-o(ait)g(one)h(second)h(for)f(additional)e(input.)19 b(If)11
-b(this)g(v)m(ariable)f(is)555 697 y(set)k(to)f(a)h(v)m(alue)g(less)f
-(than)h(or)g(equal)f(to)h(zero,)f(or)h(to)f(a)h(non-n)o(umeric)g(v)m
-(alue,)555 752 y(Readline)h(will)e(w)o(ait)g(un)o(til)h(another)g(k)o
-(ey)h(is)f(pressed)h(to)f(decide)i(whic)o(h)e(k)o(ey)555
-807 y(sequence)i(to)f(complete.)20 b(The)15 b(default)g(v)m(alue)g(is)g
-Fr(500)p Fs(.)315 901 y Fr(mark-directories)555 956 y
-Fs(If)k(set)g(to)g(`)p Fr(on)p Fs(',)f(completed)h(directory)g(names)g
-(ha)o(v)o(e)f(a)h(slash)g(app)q(ended.)555 1010 y(The)c(default)g(is)g
-(`)p Fr(on)p Fs('.)315 1104 y Fr(mark-modified-lines)555
-1159 y Fs(This)j(v)m(ariable,)f(when)i(set)e(to)h(`)p
-Fr(on)p Fs(',)f(causes)h(Readline)g(to)f(displa)o(y)g(an)h(as-)555
-1214 y(terisk)e(\(`)p Fr(*)p Fs('\))f(at)i(the)f(start)g(of)h(history)e
-(lines)i(whic)o(h)f(ha)o(v)o(e)h(b)q(een)h(mo)q(di\014ed.)555
-1269 y(This)d(v)m(ariable)f(is)h(`)p Fr(off)p Fs(')f(b)o(y)h(default.)
-315 1363 y Fr(mark-symlinked-directories)555 1418 y Fs(If)30
-b(set)f(to)g(`)p Fr(on)p Fs(',)j(completed)e(names)g(whic)o(h)f(are)h
-(sym)o(b)q(olic)f(links)g(to)555 1472 y(directories)34
-b(ha)o(v)o(e)g(a)h(slash)f(app)q(ended)i(\(sub)s(ject)e(to)h(the)f(v)m
-(alue)h(of)555 1527 y Fr(mark-directories)p Fs(\).)17
-b(The)f(default)f(is)f(`)p Fr(off)p Fs('.)315 1621 y
-Fr(match-hidden-files)555 1676 y Fs(This)d(v)m(ariable,)g(when)g(set)g
-(to)g(`)p Fr(on)p Fs(',)f(causes)h(Readline)h(to)e(matc)o(h)h(\014les)g
-(whose)555 1731 y(names)22 b(b)q(egin)g(with)g(a)f(`)p
-Fr(.)p Fs(')h(\(hidden)g(\014les\))g(when)g(p)q(erforming)g(\014lename)
-555 1785 y(completion.)35 b(If)21 b(set)g(to)f(`)p Fr(off)p
-Fs(',)g(the)h(leading)f(`)p Fr(.)p Fs(')g(m)o(ust)g(b)q(e)h(supplied)g
-(b)o(y)555 1840 y(the)c(user)g(in)g(the)g(\014lename)h(to)e(b)q(e)i
-(completed.)25 b(This)17 b(v)m(ariable)f(is)h(`)p Fr(on)p
-Fs(')f(b)o(y)555 1895 y(default.)315 1989 y Fr
-(menu-complete-display-pref)o(ix)555 2044 y Fs(If)h(set)g(to)f(`)p
-Fr(on)p Fs(',)f(men)o(u)i(completion)f(displa)o(ys)g(the)h(common)f
-(pre\014x)i(of)e(the)555 2099 y(list)i(of)g(p)q(ossible)g(completions)g
-(\(whic)o(h)h(ma)o(y)f(b)q(e)h(empt)o(y\))f(b)q(efore)h(cycling)555
-2153 y(through)c(the)g(list.)k(The)c(default)g(is)g(`)p
-Fr(off)p Fs('.)315 2247 y Fr(output-meta)555 2302 y Fs(If)j(set)f(to)g
-(`)p Fr(on)p Fs(',)g(Readline)h(will)f(displa)o(y)g(c)o(haracters)f
-(with)i(the)f(eigh)o(th)g(bit)555 2357 y(set)h(directly)g(rather)f
-(than)h(as)g(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30
-b(The)555 2412 y(default)15 b(is)f(`)p Fr(off)p Fs('.)315
-2506 y Fr(page-completions)555 2560 y Fs(If)j(set)g(to)f(`)p
-Fr(on)p Fs(',)g(Readline)h(uses)h(an)e(in)o(ternal)g
-Fr(more)p Fs(-lik)o(e)g(pager)h(to)f(displa)o(y)555 2615
-y(a)g(screenful)g(of)g(p)q(ossible)g(completions)f(at)h(a)g(time.)22
-b(This)16 b(v)m(ariable)f(is)h(`)p Fr(on)p Fs(')555 2670
-y(b)o(y)f(default.)p eop end
-%%Page: 9 13
-TeXDict begin 9 12 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(9)315 149 y Fr(print-completions-horizont)o(ally)555
-204 y Fs(If)12 b(set)g(to)f(`)p Fr(on)p Fs(',)h(Readline)g(will)e
-(displa)o(y)i(completions)f(with)g(matc)o(hes)g(sorted)555
-259 y(horizon)o(tally)20 b(in)h(alphab)q(etical)g(order,)i(rather)e
-(than)g(do)o(wn)h(the)g(screen.)555 314 y(The)15 b(default)g(is)g(`)p
-Fr(off)p Fs('.)315 396 y Fr(revert-all-at-newline)555
-451 y Fs(If)g(set)g(to)f(`)p Fr(on)p Fs(',)f(Readline)i(will)f(undo)h
-(all)f(c)o(hanges)g(to)h(history)e(lines)i(b)q(efore)555
-506 y(returning)f(when)h Fr(accept-line)e Fs(is)g(executed.)21
-b(By)14 b(default,)g(history)f(lines)555 560 y(ma)o(y)20
-b(b)q(e)i(mo)q(di\014ed)f(and)g(retain)f(individual)g(undo)i(lists)d
-(across)i(calls)f(to)555 615 y Fr(readline)p Fs(.)f(The)c(default)g(is)
-g(`)p Fr(off)p Fs('.)315 697 y Fr(show-all-if-ambiguous)555
-752 y Fs(This)g(alters)e(the)j(default)e(b)q(eha)o(vior)h(of)f(the)h
-(completion)f(functions.)20 b(If)15 b(set)555 807 y(to)e(`)p
-Fr(on)p Fs(',)g(w)o(ords)g(whic)o(h)g(ha)o(v)o(e)h(more)f(than)g(one)h
-(p)q(ossible)g(completion)f(cause)555 862 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)d(immediately)g(instead)h(of)g(ringing)g(the)g(b)q
-(ell.)555 917 y(The)c(default)g(v)m(alue)h(is)e(`)p Fr(off)p
-Fs('.)315 999 y Fr(show-all-if-unmodified)555 1054 y
-Fs(This)19 b(alters)f(the)i(default)e(b)q(eha)o(vior)h(of)g(the)h
-(completion)e(functions)h(in)g(a)555 1108 y(fashion)12
-b(similar)f(to)h Fi(sho)o(w-all-if-am)o(biguous)p Fs(.)17
-b(If)c(set)f(to)g(`)p Fr(on)p Fs(',)g(w)o(ords)g(whic)o(h)555
-1163 y(ha)o(v)o(e)j(more)g(than)g(one)h(p)q(ossible)f(completion)f
-(without)h(an)o(y)g(p)q(ossible)g(par-)555 1218 y(tial)20
-b(completion)g(\(the)h(p)q(ossible)g(completions)f(don't)h(share)g(a)f
-(common)555 1273 y(pre\014x\))15 b(cause)h(the)f(matc)o(hes)g(to)f(b)q
-(e)i(listed)e(immediately)g(instead)h(of)f(ring-)555
-1328 y(ing)h(the)g(b)q(ell.)20 b(The)15 b(default)g(v)m(alue)g(is)g(`)p
-Fr(off)p Fs('.)315 1410 y Fr(show-mode-in-prompt)555
-1465 y Fs(If)g(set)g(to)f(`)p Fr(on)p Fs(',)g(add)h(a)g(c)o(haracter)f
-(to)h(the)g(b)q(eginning)g(of)f(the)i(prompt)e(indi-)555
-1519 y(cating)h(the)g(editing)g(mo)q(de:)21 b(emacs,)15
-b(vi)g(command,)h(or)f(vi)g(insertion.)20 b(The)555 1574
-y(mo)q(de)15 b(strings)g(are)f(user-settable.)20 b(The)15
-b(default)g(v)m(alue)h(is)e(`)p Fr(off)p Fs('.)315 1656
-y Fr(skip-completed-text)555 1711 y Fs(If)j(set)f(to)g(`)p
-Fr(on)p Fs(',)f(this)h(alters)f(the)i(default)f(completion)f(b)q(eha)o
-(vior)h(when)h(in-)555 1766 y(serting)d(a)g(single)g(matc)o(h)g(in)o
-(to)f(the)i(line.)k(It's)14 b(only)g(activ)o(e)g(when)h(p)q(erform-)555
-1821 y(ing)i(completion)f(in)h(the)h(middle)f(of)g(a)g(w)o(ord.)25
-b(If)18 b(enabled,)g(readline)f(do)q(es)555 1875 y(not)j(insert)g(c)o
-(haracters)f(from)h(the)g(completion)f(that)h(matc)o(h)g(c)o(haracters)
-555 1930 y(after)e(p)q(oin)o(t)g(in)g(the)g(w)o(ord)g(b)q(eing)h
-(completed,)g(so)f(p)q(ortions)f(of)h(the)h(w)o(ord)555
-1985 y(follo)o(wing)14 b(the)h(cursor)h(are)g(not)f(duplicated.)22
-b(F)l(or)15 b(instance,)g(if)h(this)f(is)g(en-)555 2040
-y(abled,)21 b(attempting)e(completion)g(when)i(the)f(cursor)g(is)g
-(after)g(the)g(`)p Fr(e)p Fs(')f(in)555 2095 y(`)p Fr(Makefile)p
-Fs(')e(will)g(result)h(in)h(`)p Fr(Makefile)p Fs(')e(rather)h(than)h(`)
-p Fr(Makefilefile)p Fs(',)555 2149 y(assuming)e(there)h(is)f(a)g
-(single)g(p)q(ossible)g(completion.)27 b(The)18 b(default)f(v)m(alue)
-555 2204 y(is)e(`)p Fr(off)p Fs('.)315 2286 y Fr(vi-cmd-mode-string)555
-2341 y Fs(This)f(string)g(is)h(displa)o(y)o(ed)f(immediately)f(b)q
-(efore)j(the)e(last)g(line)h(of)f(the)h(pri-)555 2396
-y(mary)10 b(prompt)g(when)i(vi)e(editing)g(mo)q(de)h(is)f(activ)o(e)g
-(and)h(in)f(command)h(mo)q(de.)555 2451 y(The)19 b(v)m(alue)h(is)e
-(expanded)j(lik)o(e)d(a)h(k)o(ey)g(binding,)h(so)e(the)i(standard)e
-(set)h(of)555 2506 y(meta-)14 b(and)g(con)o(trol)f(pre\014xes)i(and)g
-(bac)o(kslash)f(escap)q(e)h(sequences)g(is)f(a)o(v)m(ail-)555
-2560 y(able.)24 b(Use)17 b(the)f(`)p Fr(\\1)p Fs(')g(and)h(`)p
-Fr(\\2)p Fs(')e(escap)q(es)j(to)e(b)q(egin)h(and)f(end)i(sequences)f
-(of)555 2615 y(non-prin)o(ting)i(c)o(haracters,)i(whic)o(h)f(can)g(b)q
-(e)h(used)g(to)e(em)o(b)q(ed)i(a)f(terminal)555 2670
-y(con)o(trol)14 b(sequence)i(in)o(to)e(the)i(mo)q(de)f(string.)k(The)c
-(default)g(is)g(`)p Fr(\(cmd\))p Fs('.)p eop end
-%%Page: 10 14
-TeXDict begin 10 13 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(10)315 149 y Fr(vi-ins-mode-string)555
-204 y Fs(This)14 b(string)g(is)h(displa)o(y)o(ed)f(immediately)f(b)q
-(efore)j(the)e(last)g(line)h(of)f(the)h(pri-)555 259
-y(mary)d(prompt)g(when)h(vi)f(editing)g(mo)q(de)h(is)f(activ)o(e)f(and)
-i(in)f(insertion)g(mo)q(de.)555 314 y(The)19 b(v)m(alue)h(is)e
-(expanded)j(lik)o(e)d(a)h(k)o(ey)g(binding,)h(so)e(the)i(standard)e
-(set)h(of)555 369 y(meta-)14 b(and)g(con)o(trol)f(pre\014xes)i(and)g
-(bac)o(kslash)f(escap)q(e)h(sequences)g(is)f(a)o(v)m(ail-)555
-423 y(able.)24 b(Use)17 b(the)f(`)p Fr(\\1)p Fs(')g(and)h(`)p
-Fr(\\2)p Fs(')e(escap)q(es)j(to)e(b)q(egin)h(and)f(end)i(sequences)f
-(of)555 478 y(non-prin)o(ting)i(c)o(haracters,)i(whic)o(h)f(can)g(b)q
-(e)h(used)g(to)e(em)o(b)q(ed)i(a)f(terminal)555 533 y(con)o(trol)14
-b(sequence)i(in)o(to)e(the)i(mo)q(de)f(string.)k(The)c(default)g(is)g
-(`)p Fr(\(ins\))p Fs('.)315 611 y Fr(visible-stats)555
-666 y Fs(If)h(set)g(to)f(`)p Fr(on)p Fs(',)g(a)h(c)o(haracter)f
-(denoting)g(a)h(\014le's)g(t)o(yp)q(e)g(is)f(app)q(ended)j(to)d(the)555
-721 y(\014lename)g(when)h(listing)e(p)q(ossible)h(completions.)j(The)e
-(default)f(is)f(`)p Fr(off)p Fs('.)75 799 y(Key)i(Bindings)315
-854 y(The)21 b(syn)o(tax)f(for)h(con)o(trolling)e(k)o(ey)i(bindings)f
-(in)h(the)g(init)f(\014le)h(is)g(simple.)37 b(First)19
-b(y)o(ou)315 909 y(need)c(to)e(\014nd)h(the)g(name)g(of)g(the)f
-(command)h(that)f(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19
-b(The)14 b(follo)o(wing)315 964 y(sections)j(con)o(tain)h(tables)f(of)g
-(the)h(command)g(name,)g(the)g(default)g(k)o(eybinding,)g(if)f(an)o(y)l
-(,)315 1018 y(and)e(a)g(short)g(description)g(of)f(what)h(the)g
-(command)g(do)q(es.)315 1085 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g
-(of)g(the)g(command,)g(simply)f(place)h(on)g(a)f(line)h(in)g(the)g
-(init)315 1140 y(\014le)f(the)g(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f
-(wish)h(to)f(bind)h(the)g(command)g(to,)f(a)g(colon,)h(and)g(then)315
-1194 y(the)f(name)g(of)g(the)g(command.)22 b(There)17
-b(can)f(b)q(e)h(no)f(space)g(b)q(et)o(w)o(een)h(the)f(k)o(ey)g(name)g
-(and)315 1249 y(the)k(colon)g({)g(that)g(will)f(b)q(e)i(in)o(terpreted)
-f(as)g(part)g(of)g(the)h(k)o(ey)f(name.)35 b(The)21 b(name)f(of)315
-1304 y(the)d(k)o(ey)g(can)h(b)q(e)g(expressed)g(in)f(di\013eren)o(t)f
-(w)o(a)o(ys,)h(dep)q(ending)h(on)f(what)g(y)o(ou)g(\014nd)h(most)315
-1359 y(comfortable.)315 1425 y(In)h(addition)e(to)g(command)h(names,)g
-(readline)g(allo)o(ws)e(k)o(eys)i(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 1480 y(that)c(is)h(inserted)g(when)h(the)f(k)o(ey)g(is)g
-(pressed)h(\(a)e Fi(macro)r Fs(\).)315 1558 y Fi(k)o(eyname)s
-Fs(:)19 b Fi(function-name)f Fs(or)d Fi(macro)555 1613
-y(k)o(eyname)i Fs(is)d(the)g(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)h(out)
-f(in)g(English.)19 b(F)l(or)13 b(example:)675 1680 y
-Fr(Control-u:)22 b(universal-argument)675 1735 y(Meta-Rubout:)g
-(backward-kill-word)675 1789 y(Control-o:)g(">)i(output")555
-1856 y Fs(In)48 b(the)f(ab)q(o)o(v)o(e)g(example,)55
-b Fk(C-u)46 b Fs(is)h(b)q(ound)h(to)f(the)g(function)555
-1911 y Fr(universal-argument)p Fs(,)61 b Fk(M-DEL)54
-b Fs(is)g(b)q(ound)i(to)e(the)g(function)555 1965 y Fr
-(backward-kill-word)p Fs(,)37 b(and)e Fk(C-o)g Fs(is)f(b)q(ound)i(to)e
-(run)i(the)f(macro)555 2020 y(expressed)24 b(on)e(the)h(righ)o(t)f
-(hand)h(side)g(\(that)f(is,)i(to)e(insert)g(the)h(text)g(`)p
-Fr(>)555 2075 y(output)p Fs(')14 b(in)o(to)g(the)h(line\).)555
-2142 y(A)31 b(n)o(um)o(b)q(er)g(of)g(sym)o(b)q(olic)f(c)o(haracter)g
-(names)h(are)f(recognized)h(while)555 2196 y(pro)q(cessing)20
-b(this)f(k)o(ey)h(binding)g(syn)o(tax:)28 b Fi(DEL)p
-Fs(,)21 b Fi(ESC)p Fs(,)g Fi(ESCAPE)p Fs(,)g Fi(LFD)p
-Fs(,)555 2251 y Fi(NEWLINE)p Fs(,)15 b Fi(RET)p Fs(,)g
-Fi(RETURN)p Fs(,)h Fi(R)o(UBOUT)p Fs(,)g Fi(SP)l(A)o(CE)p
-Fs(,)e Fi(SPC)p Fs(,)h(and)g Fi(T)l(AB)p Fs(.)315 2329
-y Fr(")p Fi(k)o(eyseq)q Fr(")p Fs(:)20 b Fi(function-name)d
-Fs(or)e Fi(macro)555 2384 y(k)o(eyseq)i Fs(di\013ers)d(from)h
-Fi(k)o(eyname)j Fs(ab)q(o)o(v)o(e)d(in)h(that)e(strings)h(denoting)g
-(an)g(en-)555 2439 y(tire)h(k)o(ey)h(sequence)h(can)f(b)q(e)g(sp)q
-(eci\014ed,)h(b)o(y)f(placing)f(the)h(k)o(ey)g(sequence)h(in)555
-2494 y(double)d(quotes.)k(Some)c Fl(gnu)g Fs(Emacs)f(st)o(yle)g(k)o(ey)
-h(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 2549 y(in)i(the)g(follo)o
-(wing)d(example,)j(but)g(the)g(sp)q(ecial)g(c)o(haracter)f(names)h(are)
-f(not)555 2603 y(recognized.)675 2670 y Fr("\\C-u":)23
-b(universal-argument)p eop end
-%%Page: 11 15
-TeXDict begin 11 14 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(11)675 149 y Fr("\\C-x\\C-r":)22 b(re-read-init-file)
-675 204 y("\\e[11~":)h("Function)f(Key)i(1")555 277 y
-Fs(In)33 b(the)f(ab)q(o)o(v)o(e)g(example,)k Fk(C-u)c
-Fs(is)g(again)f(b)q(ound)i(to)f(the)g(function)555 332
-y Fr(universal-argument)19 b Fs(\(just)j(as)f(it)g(w)o(as)g(in)h(the)g
-(\014rst)f(example\),)i(`)p Fk(C-x)555 386 y(C-r)p Fs(')14
-b(is)h(b)q(ound)h(to)f(the)g(function)g Fr(re-read-init-file)p
-Fs(,)d(and)k(`)p Fr(ESC)e([)h(1)g(1)555 441 y(~)p Fs(')g(is)f(b)q(ound)
-j(to)d(insert)h(the)g(text)g(`)p Fr(Function)e(Key)i(1)p
-Fs('.)315 531 y(The)g(follo)o(wing)e Fl(gnu)h Fs(Emacs)h(st)o(yle)f
-(escap)q(e)i(sequences)g(are)e(a)o(v)m(ailable)g(when)h(sp)q(ecifying)
-315 586 y(k)o(ey)g(sequences:)315 676 y Fk(\\C-)168 b
-Fs(con)o(trol)14 b(pre\014x)315 767 y Fk(\\M-)168 b Fs(meta)15
-b(pre\014x)315 857 y Fk(\\e)192 b Fs(an)15 b(escap)q(e)h(c)o(haracter)
-315 947 y Fk(\\\\)192 b Fs(bac)o(kslash)315 1037 y Fk(\\)p
-Fr(")g(")p Fs(,)15 b(a)g(double)g(quotation)f(mark)315
-1127 y Fk(\\')192 b Fr(')p Fs(,)15 b(a)g(single)f(quote)h(or)g(ap)q
-(ostrophe)315 1218 y(In)f(addition)f(to)h(the)f Fl(gnu)h
-Fs(Emacs)g(st)o(yle)e(escap)q(e)j(sequences,)g(a)e(second)i(set)e(of)h
-(bac)o(kslash)315 1272 y(escap)q(es)i(is)f(a)o(v)m(ailable:)315
-1363 y Fr(\\a)192 b Fs(alert)14 b(\(b)q(ell\))315 1453
-y Fr(\\b)192 b Fs(bac)o(kspace)315 1543 y Fr(\\d)g Fs(delete)315
-1633 y Fr(\\f)g Fs(form)14 b(feed)315 1724 y Fr(\\n)192
-b Fs(newline)315 1814 y Fr(\\r)g Fs(carriage)14 b(return)315
-1904 y Fr(\\t)192 b Fs(horizon)o(tal)14 b(tab)315 1994
-y Fr(\\v)192 b Fs(v)o(ertical)14 b(tab)315 2084 y Fr(\\)p
-Fk(nnn)144 b Fs(the)17 b(eigh)o(t-bit)f(c)o(haracter)h(whose)g(v)m
-(alue)h(is)e(the)i(o)q(ctal)e(v)m(alue)i Fi(nnn)g Fs(\(one)f(to)555
-2139 y(three)e(digits\))315 2229 y Fr(\\x)p Fk(HH)144
-b Fs(the)19 b(eigh)o(t-bit)f(c)o(haracter)h(whose)g(v)m(alue)g(is)g
-(the)g(hexadecimal)g(v)m(alue)g Fi(HH)555 2284 y Fs(\(one)c(or)g(t)o(w)
-o(o)f(hex)h(digits\))315 2375 y(When)k(en)o(tering)f(the)h(text)f(of)g
-(a)h(macro,)f(single)g(or)g(double)h(quotes)g(m)o(ust)f(b)q(e)h(used)h
-(to)315 2429 y(indicate)10 b(a)h(macro)f(de\014nition.)18
-b(Unquoted)11 b(text)f(is)h(assumed)f(to)h(b)q(e)g(a)f(function)h
-(name.)18 b(In)315 2484 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o
-(kslash)f(escap)q(es)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(are)g(expanded.)
-20 b(Bac)o(kslash)315 2539 y(will)f(quote)g(an)o(y)h(other)g(c)o
-(haracter)f(in)h(the)g(macro)f(text,)h(including)g(`)p
-Fr(")p Fs(')f(and)h(`)p Fr(')p Fs('.)34 b(F)l(or)315
-2594 y(example,)13 b(the)g(follo)o(wing)d(binding)j(will)f(mak)o(e)g(`)
-p Fk(C-x)i Fr(\\)p Fs(')f(insert)f(a)h(single)f(`)p Fr(\\)p
-Fs(')g(in)o(to)g(the)h(line:)435 2666 y Fr("\\C-x\\\\":)23
-b("\\\\")p eop end
-%%Page: 12 16
-TeXDict begin 12 15 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(12)75 149 y Fh(1.3.2)30 b(Conditional)20
-b(Init)g(Constructs)75 223 y Fs(Readline)f(implemen)o(ts)e(a)h(facilit)
-o(y)f(similar)f(in)i(spirit)g(to)f(the)i(conditional)e(compilation)f
-(features)i(of)75 278 y(the)d(C)h(prepro)q(cessor)f(whic)o(h)g(allo)o
-(ws)f(k)o(ey)h(bindings)g(and)h(v)m(ariable)e(settings)h(to)f(b)q(e)i
-(p)q(erformed)g(as)f(the)75 333 y(result)g(of)f(tests.)20
-b(There)15 b(are)g(four)g(parser)g(directiv)o(es)f(used.)75
-412 y Fr($if)168 b Fs(The)16 b Fr($if)f Fs(construct)g(allo)o(ws)f
-(bindings)i(to)f(b)q(e)h(made)g(based)g(on)f(the)h(editing)f(mo)q(de,)h
-(the)315 467 y(terminal)i(b)q(eing)h(used,)h(or)f(the)g(application)f
-(using)g(Readline.)32 b(The)19 b(text)g(of)f(the)i(test)315
-522 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)g(no)g(c)o(haracters)
-f(are)h(required)h(to)e(isolate)g(it.)315 601 y Fr(mode)144
-b Fs(The)15 b Fr(mode=)g Fs(form)f(of)h(the)g Fr($if)f
-Fs(directiv)o(e)h(is)f(used)i(to)e(test)h(whether)g(Read-)555
-656 y(line)21 b(is)g(in)h Fr(emacs)f Fs(or)g Fr(vi)g
-Fs(mo)q(de.)40 b(This)21 b(ma)o(y)g(b)q(e)h(used)g(in)g(conjunction)555
-711 y(with)d(the)h(`)p Fr(set)14 b(keymap)p Fs(')19 b(command,)h(for)f
-(instance,)h(to)f(set)h(bindings)f(in)555 766 y(the)d
-Fr(emacs-standard)e Fs(and)i Fr(emacs-ctlx)e Fs(k)o(eymaps)i(only)f(if)
-g(Readline)h(is)555 821 y(starting)e(out)g(in)h Fr(emacs)g
-Fs(mo)q(de.)315 900 y Fr(term)144 b Fs(The)14 b Fr(term=)e
-Fs(form)h(ma)o(y)g(b)q(e)h(used)g(to)f(include)h(terminal-sp)q
-(eci\014c)f(k)o(ey)g(bind-)555 955 y(ings,)18 b(p)q(erhaps)h(to)e(bind)
-h(the)h(k)o(ey)e(sequences)j(output)e(b)o(y)g(the)g(terminal's)555
-1010 y(function)12 b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o
-(t)f(side)g(of)h(the)g(`)p Fr(=)p Fs(')f(is)g(tested)h(against)555
-1065 y(b)q(oth)j(the)g(full)g(name)g(of)f(the)h(terminal)f(and)h(the)g
-(p)q(ortion)g(of)f(the)h(terminal)555 1120 y(name)i(b)q(efore)g(the)g
-(\014rst)f(`)p Fr(-)p Fs('.)24 b(This)16 b(allo)o(ws)f
-Fr(sun)h Fs(to)g(matc)o(h)h(b)q(oth)f Fr(sun)h Fs(and)555
-1174 y Fr(sun-cmd)p Fs(,)d(for)g(instance.)315 1254 y
-Fr(application)555 1309 y Fs(The)d Fi(application)f Fs(construct)h(is)f
-(used)i(to)e(include)h(application-sp)q(eci\014c)g(set-)555
-1364 y(tings.)18 b(Eac)o(h)12 b(program)f(using)i(the)f(Readline)h
-(library)e(sets)h(the)g Fi(application)555 1418 y(name)p
-Fs(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)f(v)m(alue.)19
-b(This)11 b(could)h(b)q(e)g(used)h(to)555 1473 y(bind)k(k)o(ey)f
-(sequences)i(to)d(functions)i(useful)f(for)g(a)g(sp)q(eci\014c)h
-(program.)23 b(F)l(or)555 1528 y(instance,)16 b(the)h(follo)o(wing)d
-(command)j(adds)f(a)g(k)o(ey)h(sequence)g(that)f(quotes)555
-1583 y(the)f(curren)o(t)g(or)g(previous)g(w)o(ord)f(in)i(Bash:)675
-1650 y Fr($if)23 b(Bash)675 1705 y(#)h(Quote)f(the)g(current)g(or)h
-(previous)f(word)675 1760 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
-1814 y($endif)75 1894 y($endif)96 b Fs(This)15 b(command,)f(as)h(seen)h
-(in)f(the)g(previous)g(example,)g(terminates)f(an)h Fr($if)f
-Fs(command.)75 1974 y Fr($else)120 b Fs(Commands)15 b(in)g(this)f
-(branc)o(h)i(of)e(the)i Fr($if)e Fs(directiv)o(e)h(are)g(executed)h(if)
-f(the)g(test)g(fails.)75 2054 y Fr($include)48 b Fs(This)21
-b(directiv)o(e)g(tak)o(es)g(a)h(single)f(\014lename)h(as)f(an)h
-(argumen)o(t)f(and)h(reads)f(commands)315 2108 y(and)e(bindings)h(from)
-e(that)h(\014le.)32 b(F)l(or)19 b(example,)h(the)f(follo)o(wing)e
-(directiv)o(e)i(reads)g(from)315 2163 y Fr(/etc/inputrc)p
-Fs(:)435 2230 y Fr($include)k(/etc/inputrc)75 2330 y
-Fh(1.3.3)30 b(Sample)20 b(Init)h(File)75 2403 y Fs(Here)13
-b(is)g(an)g(example)g(of)g(an)g Fi(inputrc)j Fs(\014le.)k(This)12
-b(illustrates)g(k)o(ey)h(binding,)g(v)m(ariable)g(assignmen)o(t,)f(and)
-75 2458 y(conditional)i(syn)o(tax.)p eop end
-%%Page: 13 17
-TeXDict begin 13 16 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(13)195 204 y Fr(#)24 b(This)f(file)g(controls)g(the)h
-(behaviour)e(of)i(line)f(input)g(editing)g(for)195 259
-y(#)h(programs)e(that)i(use)f(the)h(GNU)f(Readline)g(library.)47
-b(Existing)195 314 y(#)24 b(programs)e(include)h(FTP,)h(Bash,)f(and)g
-(GDB.)195 369 y(#)195 423 y(#)h(You)f(can)h(re-read)f(the)g(inputrc)g
-(file)g(with)h(C-x)f(C-r.)195 478 y(#)h(Lines)f(beginning)g(with)g('#')
-g(are)h(comments.)195 533 y(#)195 588 y(#)g(First,)f(include)g(any)g
-(system-wide)f(bindings)h(and)h(variable)195 643 y(#)g(assignments)e
-(from)h(/etc/Inputrc)195 697 y($include)g(/etc/Inputrc)195
-807 y(#)195 862 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)
-195 971 y(set)g(editing-mode)g(emacs)195 1081 y($if)g(mode=emacs)195
-1191 y(Meta-Control-h:)46 b(backward-kill-word)21 b(Text)i(after)h(the)
-f(function)g(name)g(is)h(ignored)p 1985 1201 21 38 v
-195 1300 a(#)195 1355 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
-1410 y(#)195 1465 y(#"\\M-OD":)190 b(backward-char)195
-1519 y(#"\\M-OC":)g(forward-char)195 1574 y(#"\\M-OA":)g
-(previous-history)195 1629 y(#"\\M-OB":)g(next-history)195
-1684 y(#)195 1738 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
-1793 y(#)195 1848 y("\\M-[D":)190 b(backward-char)195
-1903 y("\\M-[C":)g(forward-char)195 1958 y("\\M-[A":)g
-(previous-history)195 2012 y("\\M-[B":)g(next-history)195
-2067 y(#)195 2122 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
-195 2177 y(#)195 2232 y(#"\\M-\\C-OD":)165 b(backward-char)195
-2286 y(#"\\M-\\C-OC":)g(forward-char)195 2341 y(#"\\M-\\C-OA":)g
-(previous-history)195 2396 y(#"\\M-\\C-OB":)g(next-history)195
-2451 y(#)195 2506 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
-195 2560 y(#)195 2615 y(#"\\M-\\C-[D":)165 b(backward-char)195
-2670 y(#"\\M-\\C-[C":)g(forward-char)p eop end
-%%Page: 14 18
-TeXDict begin 14 17 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(14)195 149 y Fr(#"\\M-\\C-[A":)165 b(previous-history)
-195 204 y(#"\\M-\\C-[B":)g(next-history)195 314 y(C-q:)23
-b(quoted-insert)195 423 y($endif)195 533 y(#)h(An)f(old-style)g
-(binding.)47 b(This)23 b(happens)g(to)g(be)h(the)f(default.)195
-588 y(TAB:)g(complete)195 697 y(#)h(Macros)f(that)g(are)h(convenient)e
-(for)h(shell)h(interaction)195 752 y($if)f(Bash)195 807
-y(#)h(edit)f(the)g(path)195 862 y("\\C-xp":)g
-("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195 917 y(#)h(prepare)f(to)g
-(type)h(a)f(quoted)g(word)h(--)195 971 y(#)g(insert)f(open)g(and)h
-(close)f(double)g(quotes)195 1026 y(#)h(and)f(move)g(to)h(just)f(after)
-h(the)f(open)g(quote)195 1081 y("\\C-x\\"":)g("\\"\\"\\C-b")195
-1136 y(#)h(insert)f(a)g(backslash)g(\(testing)g(backslash)g(escapes)195
-1191 y(#)h(in)f(sequences)g(and)g(macros\))195 1245 y("\\C-x\\\\":)g
-("\\\\")195 1300 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)195
-1355 y("\\C-xq":)g("\\eb\\"\\ef\\"")195 1410 y(#)h(Add)f(a)h(binding)f
-(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)195
-1465 y("\\C-xr":)f(redraw-current-line)195 1519 y(#)h(Edit)f(variable)g
-(on)g(current)g(line.)195 1574 y("\\M-\\C-v":)f
-("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")195 1629 y($endif)195
-1738 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)195
-1793 y(set)f(bell-style)g(visible)195 1903 y(#)h(don't)f(strip)g
-(characters)g(to)g(7)h(bits)f(when)h(reading)195 1958
-y(set)f(input-meta)g(on)195 2067 y(#)h(allow)f(iso-latin1)f(characters)
-h(to)g(be)h(inserted)f(rather)195 2122 y(#)h(than)f(converted)g(to)g
-(prefix-meta)g(sequences)195 2177 y(set)g(convert-meta)g(off)195
-2286 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
-(directly)195 2341 y(#)g(rather)f(than)g(as)h(meta-prefixed)e
-(characters)195 2396 y(set)h(output-meta)g(on)195 2506
-y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
-(for)195 2560 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g(he)h(wants)f
-(to)h(see)f(all)h(of)f(them)195 2615 y(set)g(completion-query-items)e
-(150)p eop end
-%%Page: 15 19
-TeXDict begin 15 18 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(15)195 149 y Fr(#)24 b(For)f(FTP)195
-204 y($if)g(Ftp)195 259 y("\\C-xg":)g("get)g(\\M-?")195
-314 y("\\C-xt":)g("put)g(\\M-?")195 369 y("\\M-.":)g(yank-last-arg)195
-423 y($endif)75 539 y Fq(1.4)33 b(Bindable)22 b(Readline)f(Commands)75
-618 y Fs(This)12 b(section)h(describ)q(es)g(Readline)g(commands)g(that)
-f(ma)o(y)g(b)q(e)i(b)q(ound)f(to)g(k)o(ey)f(sequences.)20
-b(Command)75 673 y(names)15 b(without)f(an)h(accompan)o(ying)g(k)o(ey)g
-(sequence)h(are)f(un)o(b)q(ound)i(b)o(y)e(default.)137
-740 y(In)f(the)f(follo)o(wing)e(descriptions,)i Fi(p)q(oin)o(t)g
-Fs(refers)g(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)h(and)g
-Fi(mark)i Fs(refers)75 795 y(to)k(a)g(cursor)g(p)q(osition)f(sa)o(v)o
-(ed)h(b)o(y)h(the)f Fr(set-mark)g Fs(command.)32 b(The)20
-b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)f(and)75
-850 y(mark)c(is)f(referred)i(to)e(as)h(the)g Fi(region)p
-Fs(.)75 948 y Fh(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
-b(Mo)n(ving)75 1034 y Fr(beginning-of-line)13 b(\(C-a\))315
-1089 y Fs(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g
-(line.)75 1167 y Fr(end-of-line)f(\(C-e\))315 1222 y
-Fs(Mo)o(v)o(e)g(to)h(the)g(end)h(of)f(the)g(line.)75
-1301 y Fr(forward-char)f(\(C-f\))315 1356 y Fs(Mo)o(v)o(e)g(forw)o(ard)
-g(a)h(c)o(haracter.)75 1434 y Fr(backward-char)e(\(C-b\))315
-1489 y Fs(Mo)o(v)o(e)h(bac)o(k)h(a)g(c)o(haracter.)75
-1568 y Fr(forward-word)f(\(M-f\))315 1623 y Fs(Mo)o(v)o(e)g(forw)o(ard)
-g(to)g(the)i(end)g(of)e(the)h(next)h(w)o(ord.)j(W)l(ords)c(are)f(comp)q
-(osed)i(of)f(letters)f(and)315 1678 y(digits.)75 1756
-y Fr(backward-word)f(\(M-b\))315 1811 y Fs(Mo)o(v)o(e)j(bac)o(k)g(to)h
-(the)f(start)g(of)g(the)h(curren)o(t)g(or)f(previous)h(w)o(ord.)24
-b(W)l(ords)16 b(are)h(comp)q(osed)315 1866 y(of)e(letters)f(and)h
-(digits.)75 1945 y Fr(clear-screen)f(\(C-l\))315 2000
-y Fs(Clear)e(the)i(screen)g(and)f(redra)o(w)g(the)g(curren)o(t)g(line,)
-g(lea)o(ving)g(the)g(curren)o(t)g(line)g(at)g(the)g(top)315
-2054 y(of)i(the)g(screen.)75 2133 y Fr(redraw-current-line)e(\(\))315
-2188 y Fs(Refresh)j(the)f(curren)o(t)g(line.)20 b(By)15
-b(default,)g(this)f(is)h(un)o(b)q(ound.)75 2287 y Fh(1.4.2)30
-b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f(History)75
-2372 y Fr(accept-line)14 b(\(Newline)g(or)h(Return\))315
-2427 y Fs(Accept)j(the)g(line)f(regardless)g(of)g(where)h(the)g(cursor)
-f(is.)26 b(If)18 b(this)f(line)g(is)h(non-empt)o(y)l(,)g(it)315
-2482 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)f(list)f(for)i
-(future)g(recall)f(with)g Fr(add_history\(\))p Fs(.)20
-b(If)d(this)315 2536 y(line)e(is)g(a)f(mo)q(di\014ed)i(history)e(line,)
-h(the)g(history)f(line)h(is)g(restored)f(to)h(its)f(original)g(state.)
-75 2615 y Fr(previous-history)f(\(C-p\))315 2670 y Fs(Mo)o(v)o(e)h
-(`bac)o(k')h(through)f(the)i(history)e(list,)f(fetc)o(hing)i(the)g
-(previous)g(command.)p eop end
-%%Page: 16 20
-TeXDict begin 16 19 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(16)75 149 y Fr(next-history)14 b(\(C-n\))315
-204 y Fs(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)e(list,)f
-(fetc)o(hing)i(the)g(next)h(command.)75 279 y Fr(beginning-of-history)c
-(\(M-<\))315 334 y Fs(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)g(in)g
-(the)g(history)l(.)75 408 y Fr(end-of-history)e(\(M->\))315
-463 y Fs(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)g(history)l(,)f
-(i.e.,)g(the)h(line)g(curren)o(tly)g(b)q(eing)g(en)o(tered.)75
-538 y Fr(reverse-search-history)d(\(C-r\))315 593 y Fs(Searc)o(h)k(bac)
-o(kw)o(ard)e(starting)g(at)h(the)h(curren)o(t)f(line)h(and)f(mo)o(ving)
-g(`up')g(through)g(the)h(his-)315 648 y(tory)e(as)h(necessary)l(.)20
-b(This)15 b(is)g(an)g(incremen)o(tal)f(searc)o(h.)75
-722 y Fr(forward-search-history)e(\(C-s\))315 777 y Fs(Searc)o(h)22
-b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)h(and)g(mo)o
-(ving)f(`do)o(wn')f(through)i(the)315 832 y(history)14
-b(as)h(necessary)l(.)20 b(This)15 b(is)g(an)g(incremen)o(tal)f(searc)o
-(h.)75 907 y Fr(non-incremental-reverse-se)o(arch-hi)o(story)e(\(M-p\))
-315 961 y Fs(Searc)o(h)k(bac)o(kw)o(ard)e(starting)g(at)h(the)h(curren)
-o(t)f(line)h(and)f(mo)o(ving)g(`up')g(through)g(the)h(his-)315
-1016 y(tory)h(as)h(necessary)g(using)g(a)f(non-incremen)o(tal)h(searc)o
-(h)g(for)f(a)h(string)f(supplied)h(b)o(y)g(the)315 1071
-y(user.)i(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)o
-(ywhere)g(in)g(a)g(history)f(line.)75 1146 y Fr
-(non-incremental-forward-se)o(arch-hi)o(story)e(\(M-n\))315
-1200 y Fs(Searc)o(h)22 b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
-f(line)h(and)g(mo)o(ving)f(`do)o(wn')f(through)i(the)315
-1255 y(history)12 b(as)h(necessary)h(using)f(a)g(non-incremen)o(tal)g
-(searc)o(h)g(for)g(a)g(string)f(supplied)i(b)o(y)f(the)315
-1310 y(user.)20 b(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)
-o(ywhere)g(in)g(a)g(history)f(line.)75 1385 y Fr
-(history-search-forward)e(\(\))315 1440 y Fs(Searc)o(h)21
-b(forw)o(ard)e(through)i(the)f(history)g(for)g(the)h(string)f(of)g(c)o
-(haracters)g(b)q(et)o(w)o(een)h(the)315 1494 y(start)c(of)g(the)h
-(curren)o(t)g(line)g(and)g(the)g(p)q(oin)o(t.)28 b(The)18
-b(searc)o(h)g(string)f(m)o(ust)g(matc)o(h)h(at)f(the)315
-1549 y(b)q(eginning)f(of)g(a)g(history)f(line.)23 b(This)16
-b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)f(this)315 1604 y(command)f(is)g(un)o(b)q(ound.)75
-1679 y Fr(history-search-backward)d(\(\))315 1733 y Fs(Searc)o(h)18
-b(bac)o(kw)o(ard)e(through)h(the)h(history)e(for)h(the)g(string)g(of)g
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 1788 y(start)f(of)g(the)h
-(curren)o(t)g(line)g(and)g(the)g(p)q(oin)o(t.)28 b(The)18
-b(searc)o(h)g(string)f(m)o(ust)g(matc)o(h)h(at)f(the)315
-1843 y(b)q(eginning)f(of)g(a)g(history)f(line.)23 b(This)16
-b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)f(this)315 1898 y(command)f(is)g(un)o(b)q(ound.)75
-1973 y Fr(history-substr-search-forw)o(ard)d(\(\))315
-2027 y Fs(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)g(for)g
-(the)h(string)f(of)g(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-2082 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h(the)f(p)q(oin)o
-(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g(an)o(ywhere)315
-2137 y(in)i(a)g(history)f(line.)23 b(This)16 b(is)g(a)g(non-incremen)o
-(tal)f(searc)o(h.)23 b(By)17 b(default,)e(this)h(command)315
-2192 y(is)f(un)o(b)q(ound.)75 2267 y Fr(history-substr-search-back)o
-(ward)d(\(\))315 2321 y Fs(Searc)o(h)18 b(bac)o(kw)o(ard)e(through)h
-(the)h(history)e(for)h(the)g(string)g(of)g(c)o(haracters)f(b)q(et)o(w)o
-(een)i(the)315 2376 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h
-(the)f(p)q(oin)o(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g
-(an)o(ywhere)315 2431 y(in)i(a)g(history)f(line.)23 b(This)16
-b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)e(this)h(command)315 2486 y(is)f(un)o(b)q(ound.)75
-2560 y Fr(yank-nth-arg)f(\(M-C-y\))315 2615 y Fs(Insert)19
-b(the)f(\014rst)h(argumen)o(t)e(to)h(the)h(previous)f(command)g
-(\(usually)g(the)h(second)g(w)o(ord)315 2670 y(on)d(the)g(previous)g
-(line\))f(at)g(p)q(oin)o(t.)22 b(With)15 b(an)h(argumen)o(t)f
-Fi(n)p Fs(,)h(insert)f(the)h Fi(n)p Fs(th)g(w)o(ord)g(from)p
-eop end
-%%Page: 17 21
-TeXDict begin 17 20 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(17)315 149 y(the)18 b(previous)f(command)g(\(the)g(w)o
-(ords)g(in)g(the)h(previous)f(command)g(b)q(egin)h(with)f(w)o(ord)315
-204 y(0\).)33 b(A)20 b(negativ)o(e)f(argumen)o(t)g(inserts)g(the)h
-Fi(n)p Fs(th)g(w)o(ord)f(from)g(the)h(end)g(of)f(the)h(previous)315
-259 y(command.)k(Once)17 b(the)g(argumen)o(t)e Fi(n)i
-Fs(is)f(computed,)h(the)f(argumen)o(t)g(is)g(extracted)g(as)g(if)315
-314 y(the)f(`)p Fr(!)p Fk(n)p Fs(')f(history)h(expansion)g(had)g(b)q
-(een)h(sp)q(eci\014ed.)75 388 y Fr(yank-last-arg)d(\(M-.)i(or)g(M-_\))
-315 442 y Fs(Insert)j(last)e(argumen)o(t)h(to)g(the)g(previous)h
-(command)f(\(the)g(last)g(w)o(ord)g(of)g(the)g(previous)315
-497 y(history)f(en)o(try\).)24 b(With)16 b(a)g(n)o(umeric)h(argumen)o
-(t,)f(b)q(eha)o(v)o(e)h(exactly)f(lik)o(e)g Fr(yank-nth-arg)p
-Fs(.)315 552 y(Successiv)o(e)d(calls)e(to)h Fr(yank-last-arg)f
-Fs(mo)o(v)o(e)g(bac)o(k)i(through)f(the)g(history)g(list,)f(inserting)
-315 607 y(the)g(last)g(w)o(ord)f(\(or)h(the)g(w)o(ord)g(sp)q(eci\014ed)
-h(b)o(y)f(the)h(argumen)o(t)e(to)h(the)g(\014rst)g(call\))f(of)h(eac)o
-(h)g(line)315 662 y(in)18 b(turn.)29 b(An)o(y)18 b(n)o(umeric)g
-(argumen)o(t)g(supplied)g(to)g(these)g(successiv)o(e)h(calls)e
-(determines)315 716 y(the)g(direction)g(to)g(mo)o(v)o(e)g(through)g
-(the)g(history)l(.)26 b(A)17 b(negativ)o(e)g(argumen)o(t)f(switc)o(hes)
-h(the)315 771 y(direction)11 b(through)g(the)g(history)g(\(bac)o(k)g
-(or)g(forw)o(ard\).)17 b(The)11 b(history)g(expansion)g(facilities)315
-826 y(are)i(used)i(to)e(extract)g(the)h(last)e(argumen)o(t,)h(as)h(if)f
-(the)h(`)p Fr(!$)p Fs(')e(history)h(expansion)h(had)g(b)q(een)315
-881 y(sp)q(eci\014ed.)75 975 y Fh(1.4.3)30 b(Commands)21
-b(F)-5 b(or)19 b(Changing)i(T)-5 b(ext)75 1057 y Fk(end-of-file)14
-b Fr(\(usually)g(C-d\))315 1112 y Fs(The)f(c)o(haracter)g(indicating)f
-(end-of-\014le)i(as)e(set,)h(for)g(example,)g(b)o(y)g
-Fr(stty)p Fs(.)18 b(If)c(this)e(c)o(harac-)315 1167 y(ter)f(is)f(read)h
-(when)g(there)g(are)g(no)g(c)o(haracters)f(on)h(the)g(line,)g(and)g(p)q
-(oin)o(t)f(is)h(at)f(the)h(b)q(eginning)315 1222 y(of)k(the)g(line,)g
-(Readline)g(in)o(terprets)f(it)h(as)g(the)g(end)h(of)f(input)g(and)g
-(returns)g Fl(eof)p Fs(.)75 1296 y Fr(delete-char)f(\(C-d\))315
-1350 y Fs(Delete)i(the)h(c)o(haracter)f(at)g(p)q(oin)o(t.)23
-b(If)17 b(this)f(function)h(is)f(b)q(ound)i(to)e(the)g(same)h(c)o
-(haracter)315 1405 y(as)e(the)g(tt)o(y)f Fl(eof)i Fs(c)o(haracter,)e
-(as)h Fk(C-d)g Fs(commonly)f(is,)g(see)i(ab)q(o)o(v)o(e)f(for)f(the)i
-(e\013ects.)75 1479 y Fr(backward-delete-char)c(\(Rubout\))315
-1534 y Fs(Delete)j(the)g(c)o(haracter)f(b)q(ehind)i(the)g(cursor.)j(A)c
-(n)o(umeric)g(argumen)o(t)f(means)i(to)e(kill)g(the)315
-1589 y(c)o(haracters)g(instead)h(of)g(deleting)g(them.)75
-1662 y Fr(forward-backward-delete-ch)o(ar)d(\(\))315
-1717 y Fs(Delete)19 b(the)g(c)o(haracter)f(under)i(the)f(cursor,)h
-(unless)f(the)g(cursor)g(is)g(at)f(the)h(end)h(of)f(the)315
-1772 y(line,)c(in)h(whic)o(h)g(case)f(the)h(c)o(haracter)g(b)q(ehind)g
-(the)g(cursor)g(is)f(deleted.)22 b(By)16 b(default,)g(this)315
-1827 y(is)f(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 1901
-y Fr(quoted-insert)e(\(C-q)i(or)g(C-v\))315 1955 y Fs(Add)j(the)f(next)
-g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)e(v)o(erbatim.)25
-b(This)17 b(is)f(ho)o(w)h(to)g(insert)f(k)o(ey)315 2010
-y(sequences)g(lik)o(e)f Fk(C-q)p Fs(,)f(for)h(example.)75
-2084 y Fr(tab-insert)f(\(M-TAB\))315 2139 y Fs(Insert)h(a)g(tab)g(c)o
-(haracter.)75 2213 y Fr(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o
-(\))315 2267 y Fs(Insert)g(y)o(ourself.)75 2341 y Fr
-(bracketed-paste-begin)d(\(\))315 2396 y Fs(This)g(function)g(is)g(in)o
-(tended)h(to)f(b)q(e)h(b)q(ound)g(to)f(the)h Fr(")p Fs(brac)o(k)o(eted)
-f(paste)p Fr(")g Fs(escap)q(e)h(sequence)315 2451 y(sen)o(t)18
-b(b)o(y)h(some)g(terminals,)f(and)g(suc)o(h)i(a)e(binding)h(is)f
-(assigned)g(b)o(y)h(default.)30 b(It)19 b(allo)o(ws)315
-2506 y(Readline)e(to)e(insert)h(the)g(pasted)g(text)g(as)g(a)g(single)g
-(unit)g(without)f(treating)g(eac)o(h)h(c)o(har-)315 2560
-y(acter)j(as)g(if)g(it)g(had)g(b)q(een)i(read)e(from)g(the)g(k)o(eyb)q
-(oard.)33 b(The)19 b(c)o(haracters)g(are)g(inserted)315
-2615 y(as)h(if)g(eac)o(h)h(one)g(w)o(as)e(b)q(ound)j(to)e
-Fr(self-insert)p Fs(\))e(instead)j(of)f(executing)g(an)o(y)h(editing)
-315 2670 y(commands.)p eop end
-%%Page: 18 22
-TeXDict begin 18 21 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(18)75 149 y Fr(transpose-chars)13 b(\(C-t\))315
-204 y Fs(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e(forw)o
-(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g(cursor,)315
-259 y(mo)o(ving)h(the)g(cursor)h(forw)o(ard)e(as)i(w)o(ell.)26
-b(If)18 b(the)g(insertion)f(p)q(oin)o(t)g(is)g(at)g(the)h(end)h(of)e
-(the)315 314 y(line,)11 b(then)g(this)g(transp)q(oses)f(the)h(last)f(t)
-o(w)o(o)g(c)o(haracters)g(of)h(the)g(line.)18 b(Negativ)o(e)10
-b(argumen)o(ts)315 369 y(ha)o(v)o(e)15 b(no)g(e\013ect.)75
-453 y Fr(transpose-words)e(\(M-t\))315 508 y Fs(Drag)i(the)h(w)o(ord)g
-(b)q(efore)g(p)q(oin)o(t)g(past)g(the)g(w)o(ord)f(after)h(p)q(oin)o(t,)
-f(mo)o(ving)g(p)q(oin)o(t)h(past)g(that)315 563 y(w)o(ord)d(as)h(w)o
-(ell.)19 b(If)14 b(the)g(insertion)g(p)q(oin)o(t)f(is)h(at)g(the)g(end)
-h(of)e(the)i(line,)e(this)h(transp)q(oses)g(the)315 618
-y(last)g(t)o(w)o(o)g(w)o(ords)g(on)i(the)f(line.)75 703
-y Fr(upcase-word)f(\(M-u\))315 757 y Fs(Upp)q(ercase)j(the)f(curren)o
-(t)g(\(or)f(follo)o(wing\))e(w)o(ord.)22 b(With)15 b(a)h(negativ)o(e)f
-(argumen)o(t,)g(upp)q(er-)315 812 y(case)g(the)g(previous)g(w)o(ord,)g
-(but)g(do)g(not)g(mo)o(v)o(e)f(the)i(cursor.)75 897 y
-Fr(downcase-word)d(\(M-l\))315 952 y Fs(Lo)o(w)o(ercase)d(the)h(curren)
-o(t)g(\(or)f(follo)o(wing\))e(w)o(ord.)17 b(With)10 b(a)h(negativ)o(e)f
-(argumen)o(t,)g(lo)o(w)o(ercase)315 1007 y(the)15 b(previous)g(w)o
-(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f(the)h(cursor.)75
-1091 y Fr(capitalize-word)e(\(M-c\))315 1146 y Fs(Capitalize)c(the)i
-(curren)o(t)f(\(or)g(follo)o(wing\))e(w)o(ord.)18 b(With)10
-b(a)g(negativ)o(e)g(argumen)o(t,)g(capitalize)315 1201
-y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f(the)h
-(cursor.)75 1286 y Fr(overwrite-mode)e(\(\))315 1341
-y Fs(T)l(oggle)i(o)o(v)o(erwrite)g(mo)q(de.)24 b(With)16
-b(an)g(explicit)g(p)q(ositiv)o(e)g(n)o(umeric)g(argumen)o(t,)g(switc)o
-(hes)315 1395 y(to)10 b(o)o(v)o(erwrite)f(mo)q(de.)19
-b(With)10 b(an)h(explicit)f(non-p)q(ositiv)o(e)g(n)o(umeric)h(argumen)o
-(t,)f(switc)o(hes)h(to)315 1450 y(insert)k(mo)q(de.)20
-b(This)15 b(command)g(a\013ects)g(only)g Fr(emacs)f Fs(mo)q(de;)h
-Fr(vi)g Fs(mo)q(de)h(do)q(es)g(o)o(v)o(erwrite)315 1505
-y(di\013eren)o(tly)l(.)j(Eac)o(h)c(call)f(to)h Fr(readline\(\))f
-Fs(starts)f(in)j(insert)e(mo)q(de.)315 1575 y(In)27 b(o)o(v)o(erwrite)d
-(mo)q(de,)29 b(c)o(haracters)c(b)q(ound)i(to)f Fr(self-insert)f
-Fs(replace)h(the)g(text)g(at)315 1629 y(p)q(oin)o(t)j(rather)g(than)g
-(pushing)g(the)h(text)f(to)f(the)i(righ)o(t.)61 b(Characters)28
-b(b)q(ound)j(to)315 1684 y Fr(backward-delete-char)12
-b Fs(replace)k(the)f(c)o(haracter)f(b)q(efore)i(p)q(oin)o(t)f(with)f(a)
-h(space.)315 1754 y(By)g(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 1859 y Fh(1.4.4)30 b(Killing)20 b(And)h(Y)-5
-b(anking)75 1947 y Fr(kill-line)14 b(\(C-k\))315 2002
-y Fs(Kill)g(the)i(text)e(from)h(p)q(oin)o(t)g(to)f(the)h(end)h(of)f
-(the)g(line.)75 2087 y Fr(backward-kill-line)e(\(C-x)h(Rubout\))315
-2142 y Fs(Kill)g(bac)o(kw)o(ard)h(from)f(the)i(cursor)e(to)h(the)g(b)q
-(eginning)h(of)e(the)i(curren)o(t)f(line.)75 2226 y Fr
-(unix-line-discard)e(\(C-u\))315 2281 y Fs(Kill)h(bac)o(kw)o(ard)h
-(from)f(the)i(cursor)e(to)h(the)g(b)q(eginning)h(of)e(the)i(curren)o(t)
-f(line.)75 2366 y Fr(kill-whole-line)e(\(\))315 2421
-y Fs(Kill)k(all)h(c)o(haracters)f(on)h(the)h(curren)o(t)f(line,)g(no)g
-(matter)g(where)g(p)q(oin)o(t)g(is.)28 b(By)19 b(default,)315
-2476 y(this)c(is)f(un)o(b)q(ound.)75 2560 y Fr(kill-word)g(\(M-d\))315
-2615 y Fs(Kill)g(from)g(p)q(oin)o(t)g(to)g(the)h(end)g(of)f(the)h
-(curren)o(t)g(w)o(ord,)e(or)i(if)f(b)q(et)o(w)o(een)h(w)o(ords,)e(to)i
-(the)f(end)315 2670 y(of)h(the)g(next)g(w)o(ord.)20 b(W)l(ord)14
-b(b)q(oundaries)i(are)f(the)g(same)g(as)g Fr(forward-word)p
-Fs(.)p eop end
-%%Page: 19 23
-TeXDict begin 19 22 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(19)75 149 y Fr(backward-kill-word)13
-b(\(M-DEL\))315 204 y Fs(Kill)h(the)g(w)o(ord)g(b)q(ehind)h(p)q(oin)o
-(t.)20 b(W)l(ord)14 b(b)q(oundaries)g(are)g(the)h(same)f(as)g
-Fr(backward-word)p Fs(.)75 288 y Fr(unix-word-rubout)f(\(C-w\))315
-343 y Fs(Kill)i(the)h(w)o(ord)f(b)q(ehind)i(p)q(oin)o(t,)e(using)h
-(white)f(space)h(as)g(a)f(w)o(ord)g(b)q(oundary)l(.)23
-b(The)16 b(killed)315 398 y(text)f(is)f(sa)o(v)o(ed)h(on)g(the)h
-(kill-ring.)75 482 y Fr(unix-filename-rubout)c(\(\))315
-537 y Fs(Kill)17 b(the)i(w)o(ord)e(b)q(ehind)i(p)q(oin)o(t,)f(using)g
-(white)g(space)g(and)h(the)f(slash)g(c)o(haracter)f(as)h(the)315
-591 y(w)o(ord)d(b)q(oundaries.)20 b(The)15 b(killed)g(text)f(is)h(sa)o
-(v)o(ed)g(on)g(the)g(kill-ring.)75 675 y Fr(delete-horizontal-space)d
-(\(\))315 730 y Fs(Delete)j(all)f(spaces)h(and)h(tabs)e(around)i(p)q
-(oin)o(t.)j(By)c(default,)g(this)f(is)h(un)o(b)q(ound.)75
-814 y Fr(kill-region)f(\(\))315 869 y Fs(Kill)g(the)i(text)e(in)h(the)h
-(curren)o(t)f(region.)k(By)c(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 953 y Fr(copy-region-as-kill)e(\(\))315 1008
-y Fs(Cop)o(y)j(the)i(text)e(in)h(the)g(region)f(to)h(the)g(kill)e
-(bu\013er,)i(so)g(it)f(can)h(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)f(a)o(w)o
-(a)o(y)l(.)315 1063 y(By)f(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 1147 y Fr(copy-backward-word)e(\(\))315 1202
-y Fs(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)g(to)f(the)i
-(kill)e(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)g(are)g(the)315
-1256 y(same)c(as)g Fr(backward-word)p Fs(.)j(By)d(default,)f(this)h
-(command)g(is)g(un)o(b)q(ound.)75 1340 y Fr(copy-forward-word)e(\(\))
-315 1395 y Fs(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)g(p)q(oin)o(t)h
-(to)g(the)g(kill)g(bu\013er.)20 b(The)c(w)o(ord)f(b)q(oundaries)h(are)f
-(the)315 1450 y(same)g(as)g Fr(forward-word)p Fs(.)j(By)d(default,)g
-(this)f(command)h(is)g(un)o(b)q(ound.)75 1534 y Fr(yank)g(\(C-y\))315
-1589 y Fs(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)e(ring)g(in)o(to)g(the)
-i(bu\013er)f(at)f(p)q(oin)o(t.)75 1673 y Fr(yank-pop)g(\(M-y\))315
-1728 y Fs(Rotate)j(the)g(kill-ring,)f(and)h(y)o(ank)g(the)h(new)f(top.)
-26 b(Y)l(ou)17 b(can)h(only)f(do)g(this)g(if)f(the)i(prior)315
-1782 y(command)d(is)g Fr(yank)f Fs(or)h Fr(yank-pop)p
-Fs(.)75 1886 y Fh(1.4.5)30 b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)
-75 1974 y Fr(digit-argument)13 b(\()p Fk(M-0)p Fr(,)i
-Fk(M-1)p Fr(,)f(...)h Fk(M--)p Fr(\))315 2029 y Fs(Add)f(this)f(digit)f
-(to)h(the)h(argumen)o(t)e(already)h(accum)o(ulating,)f(or)h(start)f(a)h
-(new)h(argumen)o(t.)315 2084 y Fk(M--)h Fs(starts)f(a)h(negativ)o(e)f
-(argumen)o(t.)75 2168 y Fr(universal-argument)f(\(\))315
-2223 y Fs(This)f(is)h(another)f(w)o(a)o(y)g(to)g(sp)q(ecify)h(an)g
-(argumen)o(t.)18 b(If)13 b(this)f(command)h(is)f(follo)o(w)o(ed)f(b)o
-(y)i(one)315 2278 y(or)h(more)h(digits,)e(optionally)g(with)h(a)h
-(leading)f(min)o(us)g(sign,)g(those)h(digits)e(de\014ne)j(the)f(ar-)315
-2332 y(gumen)o(t.)k(If)c(the)g(command)f(is)g(follo)o(w)o(ed)f(b)o(y)i
-(digits,)e(executing)h Fr(universal-argument)315 2387
-y Fs(again)h(ends)h(the)g(n)o(umeric)g(argumen)o(t,)f(but)h(is)g
-(otherwise)f(ignored.)21 b(As)16 b(a)g(sp)q(ecial)f(case,)315
-2442 y(if)h(this)g(command)g(is)g(immediately)f(follo)o(w)o(ed)g(b)o(y)
-h(a)g(c)o(haracter)g(that)g(is)g(neither)g(a)g(digit)315
-2497 y(nor)k(min)o(us)h(sign,)g(the)f(argumen)o(t)g(coun)o(t)h(for)f
-(the)g(next)h(command)g(is)f(m)o(ultiplied)f(b)o(y)315
-2552 y(four.)27 b(The)17 b(argumen)o(t)g(coun)o(t)g(is)g(initially)f
-(one,)i(so)f(executing)g(this)g(function)h(the)f(\014rst)315
-2606 y(time)d(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)h(four,)g(a)g
-(second)h(time)f(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)315
-2661 y(sixteen,)i(and)g(so)g(on.)20 b(By)15 b(default,)f(this)h(is)g
-(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)p eop end
-%%Page: 20 24
-TeXDict begin 20 23 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(20)75 149 y Fh(1.4.6)30 b(Letting)20
-b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5 b(ou)75
-242 y Fr(complete)14 b(\(TAB\))315 296 y Fs(A)o(ttempt)c(to)h(p)q
-(erform)g(completion)g(on)g(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)18
-b(The)11 b(actual)g(completion)315 351 y(p)q(erformed)k(is)g
-(application-sp)q(eci\014c.)20 b(The)15 b(default)g(is)g(\014lename)g
-(completion.)75 443 y Fr(possible-completions)d(\(M-?\))315
-498 y Fs(List)17 b(the)g(p)q(ossible)g(completions)g(of)g(the)g(text)g
-(b)q(efore)h(p)q(oin)o(t.)25 b(When)18 b(displa)o(ying)e(com-)315
-553 y(pletions,)f(Readline)i(sets)f(the)g(n)o(um)o(b)q(er)h(of)e
-(columns)h(used)h(for)f(displa)o(y)f(to)h(the)g(v)m(alue)g(of)315
-608 y Fr(completion-display-width)p Fs(,)f(the)k(v)m(alue)f(of)g(the)g
-(en)o(vironmen)o(t)g(v)m(ariable)f Fr(COLUMNS)p Fs(,)315
-662 y(or)e(the)g(screen)h(width,)e(in)h(that)g(order.)75
-754 y Fr(insert-completions)e(\(M-*\))315 809 y Fs(Insert)j(all)e
-(completions)g(of)h(the)g(text)g(b)q(efore)h(p)q(oin)o(t)e(that)h(w)o
-(ould)g(ha)o(v)o(e)g(b)q(een)h(generated)315 864 y(b)o(y)f
-Fr(possible-completions)p Fs(.)75 956 y Fr(menu-complete)e(\(\))315
-1011 y Fs(Similar)d(to)i Fr(complete)p Fs(,)f(but)h(replaces)g(the)g(w)
-o(ord)f(to)g(b)q(e)i(completed)e(with)h(a)f(single)h(matc)o(h)315
-1066 y(from)18 b(the)h(list)f(of)g(p)q(ossible)h(completions.)30
-b(Rep)q(eated)20 b(execution)f(of)g Fr(menu-complete)315
-1120 y Fs(steps)h(through)g(the)g(list)f(of)h(p)q(ossible)g
-(completions,)g(inserting)f(eac)o(h)h(matc)o(h)f(in)h(turn.)315
-1175 y(A)o(t)e(the)g(end)h(of)f(the)h(list)e(of)h(completions,)g(the)g
-(b)q(ell)h(is)e(rung)i(\(sub)s(ject)f(to)f(the)i(setting)315
-1230 y(of)f Fr(bell-style)p Fs(\))e(and)i(the)g(original)e(text)i(is)f
-(restored.)28 b(An)19 b(argumen)o(t)e(of)g Fi(n)i Fs(mo)o(v)o(es)e
-Fi(n)315 1285 y Fs(p)q(ositions)f(forw)o(ard)g(in)i(the)f(list)f(of)h
-(matc)o(hes;)h(a)f(negativ)o(e)f(argumen)o(t)h(ma)o(y)g(b)q(e)h(used)g
-(to)315 1339 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h(through)g(the)g(list.)30
-b(This)19 b(command)g(is)g(in)o(tended)g(to)g(b)q(e)h(b)q(ound)g(to)315
-1394 y Fr(TAB)p Fs(,)14 b(but)i(is)e(un)o(b)q(ound)j(b)o(y)e(default.)
-75 1486 y Fr(menu-complete-backward)d(\(\))315 1541 y
-Fs(Iden)o(tical)17 b(to)g Fr(menu-complete)p Fs(,)f(but)i(mo)o(v)o(es)e
-(bac)o(kw)o(ard)h(through)g(the)h(list)e(of)h(p)q(ossible)315
-1596 y(completions,)d(as)h(if)f Fr(menu-complete)g Fs(had)h(b)q(een)h
-(giv)o(en)f(a)g(negativ)o(e)f(argumen)o(t.)75 1688 y
-Fr(delete-char-or-list)f(\(\))315 1743 y Fs(Deletes)19
-b(the)g(c)o(haracter)g(under)h(the)g(cursor)f(if)g(not)g(at)g(the)g(b)q
-(eginning)h(or)f(end)h(of)f(the)315 1798 y(line)24 b(\(lik)o(e)g
-Fr(delete-char)p Fs(\).)47 b(If)25 b(at)f(the)h(end)g(of)g(the)g(line,)
-h(b)q(eha)o(v)o(es)f(iden)o(tically)f(to)315 1852 y Fr
-(possible-completions)p Fs(.)17 b(This)e(command)g(is)g(un)o(b)q(ound)h
-(b)o(y)f(default.)75 1964 y Fh(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 2056 y Fr(start-kbd-macro)13 b(\(C-x)i(\(\))315
-2111 y Fs(Begin)g(sa)o(ving)f(the)i(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)e(the)h(curren)o(t)g(k)o(eyb)q(oard)g(macro.)75 2203
-y Fr(end-kbd-macro)e(\(C-x)i(\)\))315 2258 y Fs(Stop)f(sa)o(ving)e(the)
-i(c)o(haracters)f(t)o(yp)q(ed)h(in)o(to)e(the)i(curren)o(t)g(k)o(eyb)q
-(oard)f(macro)g(and)h(sa)o(v)o(e)f(the)315 2313 y(de\014nition.)75
-2405 y Fr(call-last-kbd-macro)g(\(C-x)h(e\))315 2460
-y Fs(Re-execute)19 b(the)f(last)e(k)o(eyb)q(oard)i(macro)f(de\014ned,)i
-(b)o(y)e(making)g(the)h(c)o(haracters)e(in)i(the)315
-2514 y(macro)c(app)q(ear)i(as)f(if)f(t)o(yp)q(ed)i(at)e(the)i(k)o(eyb)q
-(oard.)75 2606 y Fr(print-last-kbd-macro)c(\(\))315 2661
-y Fs(Prin)o(t)i(the)h(last)g(k)o(eb)q(oard)g(macro)f(de\014ned)j(in)e
-(a)g(format)f(suitable)g(for)h(the)g Fi(inputrc)j Fs(\014le.)p
-eop end
-%%Page: 21 25
-TeXDict begin 21 24 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(21)75 149 y Fh(1.4.8)30 b(Some)20 b(Miscellaneous)h
-(Commands)75 233 y Fr(re-read-init-file)13 b(\(C-x)h(C-r\))315
-288 y Fs(Read)e(in)e(the)h(con)o(ten)o(ts)g(of)f(the)h
-Fi(inputrc)j Fs(\014le,)d(and)h(incorp)q(orate)e(an)o(y)g(bindings)h
-(or)g(v)m(ariable)315 343 y(assignmen)o(ts)j(found)i(there.)75
-418 y Fr(abort)e(\(C-g\))315 473 y Fs(Ab)q(ort)f(the)g(curren)o(t)h
-(editing)e(command)h(and)h(ring)e(the)i(terminal's)d(b)q(ell)i(\(sub)s
-(ject)g(to)g(the)315 528 y(setting)h(of)h Fr(bell-style)p
-Fs(\).)75 603 y Fr(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
-Fk(x)p Fr(,)h(...\))315 658 y Fs(If)f(the)g(meta\014ed)g(c)o(haracter)f
-Fi(x)k Fs(is)c(lo)o(w)o(ercase,)g(run)h(the)g(command)f(that)h(is)f(b)q
-(ound)i(to)e(the)315 712 y(corresp)q(onding)i(upp)q(ercase)h(c)o
-(haracter.)75 788 y Fr(prefix-meta)e(\(ESC\))315 842
-y Fs(Metafy)k(the)h(next)g(c)o(haracter)f(t)o(yp)q(ed.)30
-b(This)19 b(is)f(for)g(k)o(eyb)q(oards)h(without)f(a)g(meta)g(k)o(ey)l
-(.)315 897 y(T)o(yping)d(`)p Fr(ESC)f(f)p Fs(')h(is)f(equiv)m(alen)o(t)
-h(to)g(t)o(yping)f Fk(M-f)p Fs(.)75 972 y Fr(undo)h(\(C-_)f(or)h(C-x)g
-(C-u\))315 1027 y Fs(Incremen)o(tal)g(undo,)g(separately)g(remem)o(b)q
-(ered)h(for)e(eac)o(h)h(line.)75 1102 y Fr(revert-line)f(\(M-r\))315
-1157 y Fs(Undo)j(all)e(c)o(hanges)i(made)f(to)g(this)g(line.)24
-b(This)16 b(is)g(lik)o(e)g(executing)g(the)h Fr(undo)f
-Fs(command)315 1212 y(enough)g(times)e(to)h(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 1287 y Fr(tilde-expand)f(\(M-~\))315
-1342 y Fs(P)o(erform)g(tilde)h(expansion)g(on)g(the)g(curren)o(t)g(w)o
-(ord.)75 1417 y Fr(set-mark)f(\(C-@\))315 1472 y Fs(Set)i(the)h(mark)f
-(to)f(the)i(p)q(oin)o(t.)23 b(If)17 b(a)f(n)o(umeric)g(argumen)o(t)g
-(is)f(supplied,)i(the)g(mark)e(is)h(set)315 1527 y(to)f(that)f(p)q
-(osition.)75 1602 y Fr(exchange-point-and-mark)e(\(C-x)j(C-x\))315
-1657 y Fs(Sw)o(ap)g(the)h(p)q(oin)o(t)f(with)g(the)h(mark.)k(The)c
-(curren)o(t)f(cursor)h(p)q(osition)e(is)h(set)h(to)f(the)g(sa)o(v)o(ed)
-315 1712 y(p)q(osition,)f(and)h(the)h(old)e(cursor)h(p)q(osition)f(is)h
-(sa)o(v)o(ed)g(as)g(the)g(mark.)75 1787 y Fr(character-search)e
-(\(C-]\))315 1842 y Fs(A)f(c)o(haracter)g(is)g(read)h(and)f(p)q(oin)o
-(t)g(is)g(mo)o(v)o(ed)g(to)g(the)g(next)h(o)q(ccurrence)g(of)f(that)g
-(c)o(haracter.)315 1896 y(A)j(negativ)o(e)g(coun)o(t)g(searc)o(hes)g
-(for)f(previous)h(o)q(ccurrences.)75 1972 y Fr
-(character-search-backward)d(\(M-C-]\))315 2026 y Fs(A)22
-b(c)o(haracter)g(is)g(read)g(and)h(p)q(oin)o(t)f(is)g(mo)o(v)o(ed)g(to)
-g(the)g(previous)g(o)q(ccurrence)i(of)e(that)315 2081
-y(c)o(haracter.)d(A)c(negativ)o(e)g(coun)o(t)g(searc)o(hes)g(for)f
-(subsequen)o(t)i(o)q(ccurrences.)75 2156 y Fr(skip-csi-sequence)d(\(\))
-315 2211 y Fs(Read)h(enough)g(c)o(haracters)f(to)g(consume)h(a)g(m)o
-(ulti-k)o(ey)e(sequence)j(suc)o(h)f(as)f(those)h(de\014ned)315
-2266 y(for)k(k)o(eys)g(lik)o(e)g(Home)h(and)g(End.)30
-b(Suc)o(h)19 b(sequences)h(b)q(egin)f(with)f(a)g(Con)o(trol)f(Sequence)
-315 2321 y(Indicator)h(\(CSI\),)g(usually)f(ESC-[.)29
-b(If)19 b(this)f(sequence)h(is)f(b)q(ound)h(to)f Fr("\\)p
-Fs(e[)p Fr(")p Fs(,)g(k)o(eys)g(pro-)315 2376 y(ducing)e(suc)o(h)h
-(sequences)g(will)d(ha)o(v)o(e)i(no)g(e\013ect)g(unless)g(explicitly)e
-(b)q(ound)j(to)f(a)f(readline)315 2430 y(command,)h(instead)f(of)h
-(inserting)f(stra)o(y)f(c)o(haracters)i(in)o(to)f(the)h(editing)f
-(bu\013er.)22 b(This)15 b(is)315 2485 y(un)o(b)q(ound)h(b)o(y)g
-(default,)e(but)h(usually)g(b)q(ound)h(to)f(ESC-[.)75
-2560 y Fr(insert-comment)e(\(M-#\))315 2615 y Fs(Without)k(a)g(n)o
-(umeric)h(argumen)o(t,)f(the)h(v)m(alue)g(of)g(the)f
-Fr(comment-begin)f Fs(v)m(ariable)i(is)f(in-)315 2670
-y(serted)f(at)f(the)h(b)q(eginning)g(of)f(the)h(curren)o(t)g(line.)21
-b(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)g(supplied,)p
-eop end
-%%Page: 22 26
-TeXDict begin 22 25 bop 75 -58 a Fs(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(22)315 149 y(this)18 b(command)g(acts)g(as)f(a)h
-(toggle:)25 b(if)18 b(the)g(c)o(haracters)g(at)f(the)i(b)q(eginning)f
-(of)g(the)g(line)315 204 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)h(of)f
-Fr(comment-begin)p Fs(,)e(the)i(v)m(alue)h(is)f(inserted,)f(otherwise)h
-(the)315 259 y(c)o(haracters)k(in)h Fr(comment-begin)e
-Fs(are)i(deleted)h(from)e(the)h(b)q(eginning)g(of)g(the)g(line.)34
-b(In)315 314 y(either)15 b(case,)g(the)g(line)g(is)g(accepted)g(as)g
-(if)g(a)g(newline)g(had)g(b)q(een)i(t)o(yp)q(ed.)75 394
-y Fr(dump-functions)c(\(\))315 448 y Fs(Prin)o(t)f(all)g(of)h(the)g
-(functions)g(and)h(their)f(k)o(ey)g(bindings)g(to)f(the)i(Readline)f
-(output)g(stream.)315 503 y(If)j(a)g(n)o(umeric)f(argumen)o(t)g(is)h
-(supplied,)g(the)g(output)f(is)h(formatted)e(in)i(suc)o(h)g(a)g(w)o(a)o
-(y)f(that)315 558 y(it)f(can)i(b)q(e)g(made)f(part)f(of)h(an)g
-Fi(inputrc)j Fs(\014le.)i(This)15 b(command)g(is)g(un)o(b)q(ound)h(b)o
-(y)f(default.)75 638 y Fr(dump-variables)e(\(\))315 692
-y Fs(Prin)o(t)d(all)f(of)h(the)h(settable)f(v)m(ariables)g(and)h(their)
-f(v)m(alues)h(to)f(the)h(Readline)g(output)f(stream.)315
-747 y(If)16 b(a)g(n)o(umeric)f(argumen)o(t)g(is)h(supplied,)g(the)g
-(output)f(is)h(formatted)e(in)i(suc)o(h)g(a)g(w)o(a)o(y)f(that)315
-802 y(it)f(can)i(b)q(e)g(made)f(part)f(of)h(an)g Fi(inputrc)j
-Fs(\014le.)i(This)15 b(command)g(is)g(un)o(b)q(ound)h(b)o(y)f(default.)
-75 882 y Fr(dump-macros)f(\(\))315 936 y Fs(Prin)o(t)i(all)g(of)g(the)h
-(Readline)g(k)o(ey)g(sequences)h(b)q(ound)g(to)e(macros)g(and)h(the)g
-(strings)f(they)315 991 y(output.)26 b(If)18 b(a)f(n)o(umeric)g
-(argumen)o(t)g(is)g(supplied,)h(the)f(output)g(is)g(formatted)f(in)i
-(suc)o(h)f(a)315 1046 y(w)o(a)o(y)d(that)g(it)h(can)g(b)q(e)g(made)g
-(part)g(of)f(an)h Fi(inputrc)j Fs(\014le.)i(This)14 b(command)h(is)g
-(un)o(b)q(ound)h(b)o(y)315 1101 y(default.)75 1181 y
-Fr(emacs-editing-mode)d(\(C-e\))315 1235 y Fs(When)j(in)f
-Fr(vi)f Fs(command)i(mo)q(de,)f(this)f(causes)i(a)f(switc)o(h)f(to)h
-Fr(emacs)f Fs(editing)h(mo)q(de.)75 1315 y Fr(vi-editing-mode)e
-(\(M-C-j\))315 1370 y Fs(When)j(in)f Fr(emacs)f Fs(editing)h(mo)q(de,)g
-(this)f(causes)i(a)f(switc)o(h)f(to)h Fr(vi)f Fs(editing)h(mo)q(de.)75
-1486 y Fq(1.5)33 b(Readline)21 b(vi)i(Mo)r(de)75 1566
-y Fs(While)15 b(the)h(Readline)g(library)f(do)q(es)h(not)f(ha)o(v)o(e)g
-(a)h(full)f(set)h(of)f Fr(vi)g Fs(editing)g(functions,)h(it)f(do)q(es)h
-(con)o(tain)75 1621 y(enough)h(to)g(allo)o(w)e(simple)h(editing)h(of)f
-(the)i(line.)25 b(The)17 b(Readline)g Fr(vi)g Fs(mo)q(de)g(b)q(eha)o(v)
-o(es)g(as)g(sp)q(eci\014ed)h(in)75 1675 y(the)d Fl(posix)g
-Fs(standard.)137 1743 y(In)g(order)g(to)f(switc)o(h)f(in)o(teractiv)o
-(ely)g(b)q(et)o(w)o(een)i Fr(emacs)e Fs(and)i Fr(vi)f
-Fs(editing)g(mo)q(des,)h(use)f(the)h(command)75 1797
-y Fk(M-C-j)j Fs(\(b)q(ound)i(to)e(emacs-editing-mo)q(de)h(when)g(in)g
-Fr(vi)g Fs(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)h(in)g
-Fr(emacs)75 1852 y Fs(mo)q(de\).)h(The)15 b(Readline)h(default)f(is)f
-Fr(emacs)h Fs(mo)q(de.)137 1919 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)g
-(in)f Fr(vi)h Fs(mo)q(de,)g(y)o(ou)g(are)f(already)h(placed)g(in)g
-(`insertion')e(mo)q(de,)i(as)g(if)f(y)o(ou)75 1974 y(had)h(t)o(yp)q(ed)
-g(an)g(`)p Fr(i)p Fs('.)j(Pressing)c Fr(ESC)h Fs(switc)o(hes)f(y)o(ou)g
-(in)o(to)g(`command')g(mo)q(de,)g(where)h(y)o(ou)g(can)f(edit)h(the)75
-2029 y(text)h(of)h(the)g(line)f(with)h(the)g(standard)f
-Fr(vi)h Fs(mo)o(v)o(emen)o(t)f(k)o(eys,)g(mo)o(v)o(e)g(to)h(previous)f
-(history)g(lines)h(with)75 2084 y(`)p Fr(k)p Fs(')d(and)i(subsequen)o
-(t)f(lines)g(with)g(`)p Fr(j)p Fs(',)f(and)h(so)g(forth.)p
-eop end
-%%Page: 23 27
-TeXDict begin 23 26 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(23)75 149 y Fo(2)41 b(Programming)29
-b(with)e(GNU)h(Readline)75 263 y Fs(This)12 b(c)o(hapter)g(describ)q
-(es)h(the)g(in)o(terface)f(b)q(et)o(w)o(een)g(the)h Fl(gnu)f
-Fs(Readline)h(Library)f(and)g(other)h(programs.)75 318
-y(If)i(y)o(ou)f(are)g(a)g(programmer,)f(and)i(y)o(ou)f(wish)h(to)e
-(include)i(the)g(features)f(found)h(in)f Fl(gnu)h Fs(Readline)g(suc)o
-(h)75 373 y(as)d(completion,)g(line)g(editing,)g(and)h(in)o(teractiv)o
-(e)d(history)i(manipulation)f(in)h(y)o(our)g(o)o(wn)g(programs,)g(this)
-75 428 y(section)j(is)f(for)h(y)o(ou.)75 543 y Fq(2.1)33
-b(Basic)21 b(Beha)n(vior)75 622 y Fs(Man)o(y)d(programs)g(pro)o(vide)h
-(a)f(command)h(line)g(in)o(terface,)g(suc)o(h)g(as)g
-Fr(mail)p Fs(,)g Fr(ftp)p Fs(,)g(and)g Fr(sh)p Fs(.)31
-b(F)l(or)19 b(suc)o(h)75 677 y(programs,)13 b(the)h(default)g(b)q(eha)o
-(viour)g(of)g(Readline)h(is)e(su\016cien)o(t.)20 b(This)13
-b(section)h(describ)q(es)h(ho)o(w)f(to)g(use)75 732 y(Readline)j(in)h
-(the)f(simplest)f(w)o(a)o(y)g(p)q(ossible,)h(p)q(erhaps)h(to)f(replace)
-g(calls)f(in)h(y)o(our)g(co)q(de)h(to)e Fr(gets\(\))g
-Fs(or)75 787 y Fr(fgets\(\))p Fs(.)137 853 y(The)h(function)f
-Fr(readline\(\))f Fs(prin)o(ts)g(a)h(prompt)g Fi(prompt)h
-Fs(and)f(then)h(reads)f(and)h(returns)f(a)g(single)75
-908 y(line)g(of)g(text)g(from)f(the)i(user.)23 b(If)17
-b Fi(prompt)g Fs(is)f Fr(NULL)f Fs(or)h(the)h(empt)o(y)f(string,)f(no)h
-(prompt)g(is)g(displa)o(y)o(ed.)75 963 y(The)j(line)f
-Fr(readline)f Fs(returns)i(is)f(allo)q(cated)f(with)h
-Fr(malloc\(\))p Fs(;)h(the)g(caller)e(should)i Fr(free\(\))f
-Fs(the)g(line)75 1018 y(when)e(it)e(has)h(\014nished)h(with)f(it.)k
-(The)c(declaration)f(for)h Fr(readline)f Fs(in)h(ANSI)h(C)f(is)195
-1084 y Fr(char)23 b(*readline)g(\(const)g(char)g(*)p
-Fk(prompt)p Fr(\);)75 1151 y Fs(So,)15 b(one)g(migh)o(t)f(sa)o(y)195
-1217 y Fr(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f("\);)
-75 1284 y Fs(in)11 b(order)g(to)g(read)h(a)f(line)g(of)g(text)g(from)f
-(the)i(user.)19 b(The)11 b(line)h(returned)f(has)h(the)f(\014nal)g
-(newline)h(remo)o(v)o(ed,)75 1339 y(so)j(only)g(the)g(text)g(remains.)
-137 1405 y(If)21 b Fr(readline)e Fs(encoun)o(ters)h(an)g
-Fr(EOF)g Fs(while)g(reading)g(the)g(line,)h(and)f(the)h(line)e(is)h
-(empt)o(y)g(at)g(that)75 1460 y(p)q(oin)o(t,)14 b(then)h
-Fr(\(char)f(*\)NULL)g Fs(is)g(returned.)21 b(Otherwise,)14
-b(the)h(line)f(is)g(ended)i(just)e(as)h(if)f(a)g(newline)h(had)75
-1515 y(b)q(een)h(t)o(yp)q(ed.)137 1582 y(If)e(y)o(ou)f(w)o(an)o(t)g
-(the)g(user)h(to)f(b)q(e)h(able)f(to)g(get)g(at)g(the)g(line)h(later,)e
-(\(with)g Fr(C-p)i Fs(for)e(example\),)h(y)o(ou)h(m)o(ust)75
-1636 y(call)g Fr(add_history\(\))g Fs(to)g(sa)o(v)o(e)h(the)g(line)g(a)
-o(w)o(a)o(y)f(in)h(a)f Fi(history)k Fs(list)c(of)h(suc)o(h)h(lines.)195
-1703 y Fr(add_history)22 b(\(line\);)75 1770 y Fs(F)l(or)15
-b(full)f(details)g(on)h(the)h(GNU)f(History)f(Library)l(,)g(see)i(the)f
-(asso)q(ciated)f(man)o(ual.)137 1836 y(It)i(is)f(preferable)h(to)f(a)o
-(v)o(oid)f(sa)o(ving)h(empt)o(y)g(lines)g(on)h(the)g(history)e(list,)h
-(since)g(users)h(rarely)f(ha)o(v)o(e)g(a)75 1891 y(burning)g(need)h(to)
-e(reuse)h(a)g(blank)f(line.)20 b(Here)15 b(is)f(a)h(function)f(whic)o
-(h)h(usefully)g(replaces)f(the)h(standard)75 1946 y Fr(gets\(\))f
-Fs(library)g(function,)h(and)g(has)g(the)h(adv)m(an)o(tage)e(of)h(no)g
-(static)f(bu\013er)h(to)g(o)o(v)o(er\015o)o(w:)195 2012
-y Fr(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/)
-195 2067 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)195
-2177 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.)
-267 2232 y(Returns)f(NULL)i(on)f(EOF.)h(*/)195 2286 y(char)f(*)195
-2341 y(rl_gets)g(\(\))195 2396 y({)243 2451 y(/*)g(If)h(the)f(buffer)g
-(has)h(already)f(been)g(allocated,)314 2506 y(return)g(the)h(memory)f
-(to)g(the)h(free)f(pool.)g(*/)243 2560 y(if)g(\(line_read\))290
-2615 y({)338 2670 y(free)g(\(line_read\);)p eop end
-%%Page: 24 28
-TeXDict begin 24 27 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(24)338 149 y Fr(line_read)23
-b(=)h(\(char)f(*\)NULL;)290 204 y(})243 314 y(/*)g(Get)h(a)f(line)h
-(from)f(the)h(user.)f(*/)243 369 y(line_read)f(=)i(readline)f(\(""\);)
-243 478 y(/*)g(If)h(the)f(line)h(has)f(any)h(text)f(in)g(it,)314
-533 y(save)h(it)f(on)h(the)f(history.)g(*/)243 588 y(if)g(\(line_read)g
-(&&)g(*line_read\))290 643 y(add_history)g(\(line_read\);)243
-752 y(return)g(\(line_read\);)195 807 y(})137 883 y Fs(This)14
-b(function)g(giv)o(es)f(the)h(user)g(the)h(default)e(b)q(eha)o(viour)h
-(of)g Fr(TAB)f Fs(completion:)19 b(completion)13 b(on)h(\014le)75
-938 y(names.)20 b(If)c(y)o(ou)f(do)g(not)g(w)o(an)o(t)f(Readline)i(to)e
-(complete)i(on)f(\014lenames,)g(y)o(ou)g(can)g(c)o(hange)h(the)f
-(binding)75 993 y(of)g(the)g Fr(TAB)g Fs(k)o(ey)g(with)f
-Fr(rl_bind_key\(\))p Fs(.)195 1070 y Fr(int)23 b(rl_bind_key)g(\(int)g
-Fk(key)p Fr(,)g(rl_command_func_t)f(*)p Fk(function)p
-Fr(\);)137 1146 y(rl_bind_key\(\))15 b Fs(tak)o(es)h(t)o(w)o(o)g
-(argumen)o(ts:)22 b Fi(k)o(ey)e Fs(is)d(the)f(c)o(haracter)g(that)g(y)o
-(ou)h(w)o(an)o(t)f(to)g(bind,)h(and)75 1201 y Fi(function)i
-Fs(is)g(the)h(address)f(of)g(the)h(function)f(to)g(call)f(when)i
-Fi(k)o(ey)j Fs(is)c(pressed.)33 b(Binding)20 b Fr(TAB)f
-Fs(to)f Fr(rl_)75 1256 y(insert\(\))g Fs(mak)o(es)h Fr(TAB)g
-Fs(insert)g(itself.)31 b Fr(rl_bind_key\(\))18 b Fs(returns)h(non-zero)
-g(if)g Fi(k)o(ey)k Fs(is)c(not)g(a)g(v)m(alid)75 1310
-y(ASCI)q(I)d(c)o(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)f(0)g(and)g
-(255\).)137 1387 y(Th)o(us,)g(to)g(disable)f(the)i(default)e
-Fr(TAB)h Fs(b)q(eha)o(vior,)g(the)g(follo)o(wing)e(su\016ces:)195
-1464 y Fr(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
-1540 y Fs(This)13 b(co)q(de)h(should)f(b)q(e)h(executed)g(once)g(at)e
-(the)h(start)f(of)h(y)o(our)g(program;)f(y)o(ou)h(migh)o(t)f(write)g(a)
-h(func-)75 1595 y(tion)j(called)g Fr(initialize_readline\(\))d
-Fs(whic)o(h)j(p)q(erforms)g(this)g(and)h(other)f(desired)g
-(initializations,)75 1650 y(suc)o(h)g(as)e(installing)g(custom)g
-(completers)h(\(see)g(Section)g(2.6)g([Custom)f(Completers],)f(page)i
-(47\).)75 1780 y Fq(2.2)33 b(Custom)21 b(F)-6 b(unctions)75
-1859 y Fs(Readline)14 b(pro)o(vides)f(man)o(y)g(functions)h(for)f
-(manipulating)f(the)i(text)f(of)g(the)h(line,)f(but)h(it)e(isn't)h(p)q
-(ossible)75 1914 y(to)18 b(an)o(ticipate)f(the)h(needs)h(of)f(all)f
-(programs.)28 b(This)18 b(section)g(describ)q(es)h(the)f(v)m(arious)g
-(functions)g(and)75 1969 y(v)m(ariables)12 b(de\014ned)j(within)d(the)h
-(Readline)h(library)d(whic)o(h)i(allo)o(w)f(a)g(user)h(program)f(to)h
-(add)g(customized)75 2024 y(functionalit)o(y)g(to)i(Readline.)137
-2100 y(Before)j(declaring)g(an)o(y)g(functions)g(that)g(customize)f
-(Readline's)h(b)q(eha)o(vior,)h(or)e(using)h(an)o(y)g(func-)75
-2155 y(tionalit)o(y)i(Readline)j(pro)o(vides)g(in)f(other)h(co)q(de,)h
-(an)f(application)f(writer)f(should)i(include)g(the)g(\014le)75
-2210 y Fr(<readline/readline.h>)14 b Fs(in)i(an)o(y)h(\014le)g(that)f
-(uses)h(Readline's)f(features.)24 b(Since)18 b(some)e(of)g(the)h
-(de\014-)75 2265 y(nitions)e(in)g Fr(readline.h)f Fs(use)i(the)g
-Fr(stdio)f Fs(library)l(,)f(the)i(\014le)f Fr(<stdio.h>)g
-Fs(should)g(b)q(e)h(included)h(b)q(efore)75 2320 y Fr(readline.h)p
-Fs(.)137 2396 y Fr(readline.h)d Fs(de\014nes)i(a)f(C)h(prepro)q(cessor)
-f(v)m(ariable)g(that)f(should)h(b)q(e)h(treated)f(as)g(an)g(in)o
-(teger,)f Fr(RL_)75 2451 y(READLINE_VERSION)p Fs(,)9
-b(whic)o(h)i(ma)o(y)g(b)q(e)g(used)h(to)e(conditionally)g(compile)g
-(application)g(co)q(de)i(dep)q(ending)75 2506 y(on)17
-b(the)h(installed)e(Readline)i(v)o(ersion.)26 b(The)18
-b(v)m(alue)g(is)f(a)g(hexadecimal)g(enco)q(ding)h(of)f(the)h(ma)s(jor)e
-(and)75 2560 y(minor)g(v)o(ersion)h(n)o(um)o(b)q(ers)g(of)g(the)g
-(library)l(,)f(of)h(the)g(form)f(0x)p Fi(MMmm)p Fs(.)25
-b Fi(MM)c Fs(is)16 b(the)i(t)o(w)o(o-digit)c(ma)s(jor)75
-2615 y(v)o(ersion)g(n)o(um)o(b)q(er;)g Fi(mm)h Fs(is)f(the)g(t)o(w)o
-(o-digit)e(minor)i(v)o(ersion)g(n)o(um)o(b)q(er.)20 b(F)l(or)14
-b(Readline)g(4.2,)g(for)f(example,)75 2670 y(the)i(v)m(alue)h(of)e
-Fr(RL_READLINE_VERSION)f Fs(w)o(ould)i(b)q(e)g Fr(0x0402)p
-Fs(.)p eop end
-%%Page: 25 29
-TeXDict begin 25 28 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(25)75 149 y Fh(2.2.1)30
-b(Readline)20 b(T)n(yp)r(edefs)75 223 y Fs(F)l(or)15
-b(readabilit)o(y)l(,)e(w)o(e)i(declare)g(a)g(n)o(um)o(b)q(er)g(of)g
-(new)h(ob)s(ject)e(t)o(yp)q(es,)h(all)f(p)q(oin)o(ters)h(to)f
-(functions.)137 292 y(The)k(reason)g(for)f(declaring)g(these)h(new)g(t)
-o(yp)q(es)g(is)g(to)f(mak)o(e)g(it)g(easier)h(to)f(write)g(co)q(de)h
-(describing)75 347 y(p)q(oin)o(ters)d(to)f(C)h(functions)g(with)g
-(appropriately)e(protot)o(yp)q(ed)i(argumen)o(ts)g(and)g(return)g(v)m
-(alues.)137 416 y(F)l(or)j(instance,)h(sa)o(y)f(w)o(e)g(w)o(an)o(t)f
-(to)h(declare)g(a)g(v)m(ariable)g Fi(func)k Fs(as)c(a)g(p)q(oin)o(ter)g
-(to)g(a)g(function)g(whic)o(h)75 471 y(tak)o(es)12 b(t)o(w)o(o)g
-Fr(int)g Fs(argumen)o(ts)g(and)h(returns)g(an)g Fr(int)f
-Fs(\(this)g(is)g(the)h(t)o(yp)q(e)g(of)g(all)e(of)i(the)g(Readline)g
-(bindable)75 526 y(functions\).)19 b(Instead)d(of)f(the)g(classic)f(C)h
-(declaration)137 595 y Fr(int)g(\(*func\)\(\);)75 665
-y Fs(or)g(the)g(ANSI-C)h(st)o(yle)e(declaration)137 734
-y Fr(int)h(\(*func\)\(int,)f(int\);)75 804 y Fs(w)o(e)h(ma)o(y)f(write)
-137 873 y Fr(rl_command_func_t)f(*func;)137 942 y Fs(The)j(full)e(list)
-g(of)h(function)g(p)q(oin)o(ter)g(t)o(yp)q(es)g(a)o(v)m(ailable)f(is)75
-1025 y Fr(typedef)g(int)h(rl_command_func_t)e(\(int,)h(int\);)75
-1080 y(typedef)g(char)h(*rl_compentry_func_t)d(\(const)j(char)f(*,)h
-(int\);)75 1135 y(typedef)f(char)h(**rl_completion_func_t)d(\(const)i
-(char)h(*,)g(int,)f(int\);)75 1190 y(typedef)g(char)h(*rl_quote_func_t)
-e(\(char)h(*,)h(int,)g(char)f(*\);)75 1244 y(typedef)g(char)h
-(*rl_dequote_func_t)d(\(char)j(*,)g(int\);)75 1299 y(typedef)f(int)h
-(rl_compignore_func_t)d(\(char)j(**\);)75 1354 y(typedef)f(void)h
-(rl_compdisp_func_t)d(\(char)j(**,)g(int,)f(int\);)75
-1409 y(typedef)g(int)h(rl_hook_func_t)e(\(void\);)75
-1464 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75
-1518 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75
-1573 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 1628
-y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 1683 y(typedef)h(int)h
-(rl_icpfunc_t)e(\(char)i(*\);)75 1738 y(typedef)f(int)h(rl_icppfunc_t)e
-(\(char)i(**\);)75 1792 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75
-1847 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 1902
-y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 1957
-y(typedef)f(void)h(rl_vcppfunc_t)e(\(char)i(**\);)75
-2045 y Fh(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5
-b(unction)75 2118 y Fs(In)16 b(order)f(to)g(write)g(new)h(functions)f
-(for)g(Readline,)h(y)o(ou)f(need)h(to)f(kno)o(w)g(the)h(calling)e(con)o
-(v)o(en)o(tions)h(for)75 2173 y(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)f
-(functions,)h(and)g(the)g(names)g(of)f(the)i(v)m(ariables)e(that)g
-(describ)q(e)i(the)f(curren)o(t)g(state)75 2228 y(of)g(the)g(line)g
-(read)g(so)g(far.)137 2297 y(The)h(calling)e(sequence)i(for)f(a)f
-(command)i Fr(foo)e Fs(lo)q(oks)h(lik)o(e)195 2367 y
-Fr(int)23 b(foo)h(\(int)f(count,)g(int)h(key\))75 2436
-y Fs(where)18 b Fi(coun)o(t)h Fs(is)e(the)h(n)o(umeric)g(argumen)o(t)f
-(\(or)h(1)f(if)h(defaulted\))f(and)h Fi(k)o(ey)k Fs(is)c(the)g(k)o(ey)g
-(that)f(in)o(v)o(ok)o(ed)75 2491 y(this)e(function.)137
-2560 y(It)d(is)f(completely)g(up)h(to)f(the)g(function)h(as)f(to)g
-(what)g(should)g(b)q(e)h(done)g(with)f(the)h(n)o(umeric)f(argumen)o(t.)
-75 2615 y(Some)20 b(functions)g(use)g(it)f(as)h(a)g(rep)q(eat)g(coun)o
-(t,)g(some)g(as)g(a)f(\015ag,)i(and)f(others)g(to)f(c)o(ho)q(ose)h
-(alternate)75 2670 y(b)q(eha)o(vior)h(\(refreshing)g(the)h(curren)o(t)f
-(line)h(as)f(opp)q(osed)h(to)f(refreshing)h(the)f(screen,)j(for)d
-(example\).)p eop end
-%%Page: 26 30
-TeXDict begin 26 29 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(26)75 149 y(Some)17 b(c)o(ho)q(ose)f(to)g
-(ignore)g(it.)23 b(In)18 b(general,)e(if)g(a)g(function)g(uses)h(the)g
-(n)o(umeric)g(argumen)o(t)e(as)i(a)f(rep)q(eat)75 204
-y(coun)o(t,)e(it)f(should)h(b)q(e)g(able)g(to)f(do)h(something)g
-(useful)g(with)f(b)q(oth)h(negativ)o(e)f(and)h(p)q(ositiv)o(e)f
-(argumen)o(ts.)75 259 y(A)o(t)i(the)g(v)o(ery)g(least,)f(it)g(should)h
-(b)q(e)h(a)o(w)o(are)e(that)h(it)f(can)h(b)q(e)h(passed)g(a)f(negativ)o
-(e)f(argumen)o(t.)137 329 y(A)19 b(command)g(function)g(should)g
-(return)g(0)g(if)f(its)g(action)g(completes)h(successfully)l(,)h(and)f
-(a)g(v)m(alue)75 384 y(greater)d(than)g(zero)g(if)g(some)g(error)g(o)q
-(ccurs.)24 b(This)16 b(is)g(the)h(con)o(v)o(en)o(tion)e(ob)q(ey)o(ed)i
-(b)o(y)g(all)e(of)h(the)h(builtin)75 439 y(Readline)f(bindable)f
-(command)g(functions.)75 559 y Fq(2.3)33 b(Readline)21
-b(V)-6 b(ariables)75 639 y Fs(These)16 b(v)m(ariables)e(are)h(a)o(v)m
-(ailable)f(to)g(function)h(writers.)1685 737 y([V)l(ariable])-1801
-b Fg(char)27 b(*)f(rl_line_buffer)195 792 y Fs(This)15
-b(is)g(the)h(line)f(gathered)h(so)f(far.)20 b(Y)l(ou)c(are)f(w)o
-(elcome)g(to)g(mo)q(dify)g(the)h(con)o(ten)o(ts)f(of)g(the)h(line,)195
-846 y(but)i(see)g(Section)g(2.4.5)e([Allo)o(wing)f(Undoing],)j(page)f
-(35.)27 b(The)18 b(function)g Fr(rl_extend_line_)195
-901 y(buffer)c Fs(is)h(a)o(v)m(ailable)f(to)g(increase)i(the)f(memory)f
-(allo)q(cated)h(to)f Fr(rl_line_buffer)p Fs(.)1685 999
-y([V)l(ariable])-1801 b Fg(int)27 b(rl_point)195 1054
-y Fs(The)15 b(o\013set)g(of)f(the)i(curren)o(t)f(cursor)g(p)q(osition)f
-(in)h Fr(rl_line_buffer)e Fs(\(the)i Fj(p)n(oint)t Fs(\).)1685
-1152 y([V)l(ariable])-1801 b Fg(int)27 b(rl_end)195 1206
-y Fs(The)14 b(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f(presen)o(t)h(in)g
-Fr(rl_line_buffer)p Fs(.)j(When)e Fr(rl_point)e Fs(is)g(at)g(the)h(end)
-195 1261 y(of)h(the)g(line,)g Fr(rl_point)f Fs(and)h
-Fr(rl_end)f Fs(are)h(equal.)1685 1359 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_mark)195 1414 y Fs(The)19 b Fi(mark)h
-Fs(\(sa)o(v)o(ed)e(p)q(osition\))f(in)h(the)h(curren)o(t)f(line.)29
-b(If)19 b(set,)g(the)f(mark)g(and)h(p)q(oin)o(t)f(de\014ne)h(a)195
-1469 y Fj(r)n(e)n(gion)p Fs(.)1685 1566 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_done)195 1621 y Fs(Setting)10 b(this)g(to)h(a)f
-(non-zero)h(v)m(alue)g(causes)g(Readline)g(to)g(return)f(the)h(curren)o
-(t)g(line)f(immediately)l(.)1685 1719 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_num_chars_to_read)195 1774 y Fs(Setting)16
-b(this)g(to)g(a)g(p)q(ositiv)o(e)f(v)m(alue)i(b)q(efore)g(calling)e
-Fr(readline\(\))g Fs(causes)h(Readline)h(to)f(return)195
-1829 y(after)h(accepting)h(that)f(man)o(y)g(c)o(haracters,)h(rather)f
-(than)h(reading)f(up)h(to)f(a)h(c)o(haracter)f(b)q(ound)195
-1883 y(to)e Fr(accept-line)p Fs(.)1685 1981 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_pending_input)195 2036 y Fs(Setting)12
-b(this)g(to)g(a)g(v)m(alue)h(mak)o(es)f(it)g(the)g(next)h(k)o(eystrok)o
-(e)f(read.)19 b(This)12 b(is)g(a)g(w)o(a)o(y)g(to)f(stu\013)h(a)h
-(single)195 2091 y(c)o(haracter)h(in)o(to)h(the)g(input)g(stream.)1685
-2189 y([V)l(ariable])-1801 b Fg(int)27 b(rl_dispatching)195
-2243 y Fs(Set)12 b(to)g(a)f(non-zero)i(v)m(alue)f(if)g(a)g(function)g
-(is)f(b)q(eing)i(called)e(from)h(a)f(k)o(ey)h(binding;)h(zero)f
-(otherwise.)195 2298 y(Application)17 b(functions)g(can)h(test)g(this)f
-(to)g(disco)o(v)o(er)g(whether)h(they)g(w)o(ere)g(called)f(directly)g
-(or)195 2353 y(b)o(y)e(Readline's)g(dispatc)o(hing)g(mec)o(hanism.)1685
-2451 y([V)l(ariable])-1801 b Fg(int)27 b(rl_erase_empty_line)195
-2506 y Fs(Setting)22 b(this)h(to)f(a)h(non-zero)g(v)m(alue)g(causes)g
-(Readline)h(to)e(completely)g(erase)h(the)g(curren)o(t)195
-2560 y(line,)e(including)g(an)o(y)f(prompt,)h(an)o(y)g(time)f(a)g
-(newline)h(is)f(t)o(yp)q(ed)h(as)f(the)h(only)f(c)o(haracter)g(on)195
-2615 y(an)e(otherwise-empt)o(y)f(line.)29 b(The)18 b(cursor)g(is)g(mo)o
-(v)o(ed)f(to)h(the)g(b)q(eginning)g(of)g(the)g(newly-blank)195
-2670 y(line.)p eop end
-%%Page: 27 31
-TeXDict begin 27 30 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(27)1685 149 y([V)l(ariable])-1801
-b Fg(char)27 b(*)f(rl_prompt)195 204 y Fs(The)13 b(prompt)g(Readline)g
-(uses.)20 b(This)12 b(is)h(set)g(from)f(the)h(argumen)o(t)g(to)f
-Fr(readline\(\))p Fs(,)g(and)h(should)195 259 y(not)g(b)q(e)h(assigned)
-f(to)g(directly)l(.)19 b(The)14 b Fr(rl_set_prompt\(\))d
-Fs(function)i(\(see)h(Section)f(2.4.6)f([Redis-)195 314
-y(pla)o(y],)i(page)h(36\))f(ma)o(y)h(b)q(e)g(used)h(to)f(mo)q(dify)g
-(the)g(prompt)g(string)f(after)g(calling)g Fr(readline\(\))p
-Fs(.)1685 407 y([V)l(ariable])-1801 b Fg(char)27 b(*)f
-(rl_display_prompt)195 462 y Fs(The)16 b(string)f(displa)o(y)o(ed)g(as)
-h(the)g(prompt.)21 b(This)15 b(is)h(usually)f(iden)o(tical)g(to)g
-Fi(rl)p 1516 462 14 2 v 19 w(prompt)p Fs(,)h(but)g(ma)o(y)195
-517 y(b)q(e)i(c)o(hanged)f(temp)q(orarily)f(b)o(y)h(functions)g(that)f
-(use)i(the)f(prompt)g(string)f(as)g(a)h(message)g(area,)195
-571 y(suc)o(h)f(as)e(incremen)o(tal)h(searc)o(h.)1685
-665 y([V)l(ariable])-1801 b Fg(int)27 b(rl_already_prompted)195
-719 y Fs(If)18 b(an)g(application)f(wishes)h(to)g(displa)o(y)f(the)h
-(prompt)g(itself,)f(rather)h(than)g(ha)o(v)o(e)g(Readline)g(do)195
-774 y(it)e(the)g(\014rst)g(time)g Fr(readline\(\))f Fs(is)h(called,)g
-(it)f(should)i(set)f(this)g(v)m(ariable)f(to)h(a)g(non-zero)h(v)m(alue)
-195 829 y(after)h(displa)o(ying)g(the)h(prompt.)31 b(The)19
-b(prompt)g(m)o(ust)f(also)g(b)q(e)i(passed)f(as)f(the)h(argumen)o(t)g
-(to)195 884 y Fr(readline\(\))c Fs(so)h(the)h(redispla)o(y)e(functions)
-i(can)f(up)q(date)h(the)g(displa)o(y)f(prop)q(erly)l(.)23
-b(The)17 b(calling)195 938 y(application)d(is)h(resp)q(onsible)g(for)f
-(managing)g(the)i(v)m(alue;)f(Readline)g(nev)o(er)h(sets)e(it.)1685
-1032 y([V)l(ariable])-1801 b Fg(const)27 b(char)g(*)f
-(rl_library_version)195 1086 y Fs(The)15 b(v)o(ersion)g(n)o(um)o(b)q
-(er)g(of)g(this)g(revision)f(of)h(the)g(library)l(.)1685
-1180 y([V)l(ariable])-1801 b Fg(int)27 b(rl_readline_version)195
-1234 y Fs(An)17 b(in)o(teger)g(enco)q(ding)g(the)g(curren)o(t)g(v)o
-(ersion)f(of)h(the)g(library)l(.)25 b(The)17 b(enco)q(ding)g(is)g(of)g
-(the)g(form)195 1289 y(0x)p Fi(MMmm)p Fs(,)g(where)i
-Fi(MM)j Fs(is)c(the)g(t)o(w)o(o-digit)e(ma)s(jor)h(v)o(ersion)h(n)o(um)
-o(b)q(er,)h(and)f Fi(mm)g Fs(is)g(the)g(t)o(w)o(o-)195
-1344 y(digit)g(minor)f(v)o(ersion)h(n)o(um)o(b)q(er.)31
-b(F)l(or)18 b(example,)h(for)f(Readline-4.2,)h Fr(rl_readline_version)
-195 1399 y Fs(w)o(ould)c(ha)o(v)o(e)f(the)i(v)m(alue)f(0x0402.)1685
-1492 y([V)l(ariable])-1801 b Fg(int)27 b(rl_gnu_readline_p)195
-1547 y Fs(Alw)o(a)o(ys)14 b(set)h(to)f(1,)h(denoting)g(that)f(this)h
-(is)g Fl(gnu)g Fs(readline)f(rather)h(than)g(some)g(em)o(ulation.)1685
-1640 y([V)l(ariable])-1801 b Fg(const)27 b(char)g(*)f(rl_terminal_name)
-195 1695 y Fs(The)14 b(terminal)f(t)o(yp)q(e,)h(used)h(for)e
-(initialization.)k(If)d(not)f(set)h(b)o(y)g(the)g(application,)f
-(Readline)h(sets)195 1749 y(this)h(to)f(the)h(v)m(alue)h(of)f(the)g
-Fr(TERM)g Fs(en)o(vironmen)o(t)f(v)m(ariable)h(the)g(\014rst)g(time)f
-(it)h(is)f(called.)1685 1843 y([V)l(ariable])-1801 b
-Fg(const)27 b(char)g(*)f(rl_readline_name)195 1897 y
-Fs(This)15 b(v)m(ariable)g(is)g(set)h(to)f(a)g(unique)h(name)g(b)o(y)f
-(eac)o(h)h(application)e(using)h(Readline.)22 b(The)16
-b(v)m(alue)195 1952 y(allo)o(ws)c(conditional)h(parsing)g(of)h(the)g
-(inputrc)g(\014le)g(\(see)g(Section)g(1.3.2)e([Conditional)g(Init)i
-(Con-)195 2007 y(structs],)g(page)h(12\).)1685 2100 y([V)l(ariable])
--1801 b Fg(FILE)27 b(*)f(rl_instream)195 2155 y Fs(The)21
-b(stdio)e(stream)h(from)g(whic)o(h)g(Readline)h(reads)f(input.)36
-b(If)21 b Fr(NULL)p Fs(,)g(Readline)g(defaults)f(to)195
-2210 y Fi(stdin)p Fs(.)1685 2303 y([V)l(ariable])-1801
-b Fg(FILE)27 b(*)f(rl_outstream)195 2358 y Fs(The)17
-b(stdio)g(stream)f(to)h(whic)o(h)g(Readline)g(p)q(erforms)g(output.)26
-b(If)18 b Fr(NULL)p Fs(,)e(Readline)i(defaults)f(to)195
-2412 y Fi(stdout)p Fs(.)1685 2506 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_prefer_env_winsize)195 2560 y Fs(If)14
-b(non-zero,)h(Readline)f(giv)o(es)g(v)m(alues)g(found)g(in)g(the)h
-Fr(LINES)e Fs(and)i Fr(COLUMNS)e Fs(en)o(vironmen)o(t)g(v)m(ari-)195
-2615 y(ables)20 b(greater)g(precedence)i(than)e(v)m(alues)h(fetc)o(hed)
-g(from)e(the)i(k)o(ernel)f(when)h(computing)f(the)195
-2670 y(screen)c(dimensions.)p eop end
-%%Page: 28 32
-TeXDict begin 28 31 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(28)1685 149 y([V)l(ariable])-1801
-b Fg(rl_command_func_t)29 b(*)d(rl_last_func)195 204
-y Fs(The)18 b(address)f(of)g(the)g(last)g(command)g(function)g
-(Readline)h(executed.)27 b(Ma)o(y)17 b(b)q(e)h(used)g(to)f(test)195
-259 y(whether)e(or)g(not)g(a)g(function)g(is)f(b)q(eing)i(executed)g(t)
-o(wice)f(in)g(succession,)g(for)f(example.)1685 369 y([V)l(ariable])
--1801 b Fg(rl_hook_func_t)28 b(*)f(rl_startup_hook)195
-423 y Fs(If)17 b(non-zero,)h(this)f(is)f(the)i(address)f(of)f(a)h
-(function)g(to)g(call)f(just)h(b)q(efore)g Fr(readline)f
-Fs(prin)o(ts)h(the)195 478 y(\014rst)e(prompt.)1685 588
-y([V)l(ariable])-1801 b Fg(rl_hook_func_t)28 b(*)f(rl_pre_input_hook)
-195 643 y Fs(If)18 b(non-zero,)g(this)f(is)h(the)g(address)f(of)h(a)f
-(function)h(to)f(call)g(after)g(the)h(\014rst)f(prompt)g(has)h(b)q(een)
-195 697 y(prin)o(ted)d(and)g(just)g(b)q(efore)h Fr(readline)e
-Fs(starts)g(reading)g(input)i(c)o(haracters.)1685 807
-y([V)l(ariable])-1801 b Fg(rl_hook_func_t)28 b(*)f(rl_event_hook)195
-862 y Fs(If)21 b(non-zero,)g(this)f(is)g(the)g(address)g(of)g(a)g
-(function)g(to)g(call)g(p)q(erio)q(dically)f(when)i(Readline)f(is)195
-917 y(w)o(aiting)13 b(for)h(terminal)f(input.)20 b(By)14
-b(default,)g(this)g(will)g(b)q(e)h(called)f(at)g(most)g(ten)g(times)g
-(a)g(second)195 971 y(if)h(there)g(is)g(no)g(k)o(eyb)q(oard)g(input.)
-1685 1081 y([V)l(ariable])-1801 b Fg(rl_getc_func_t)28
-b(*)f(rl_getc_function)195 1136 y Fs(If)15 b(non-zero,)h(Readline)f
-(will)f(call)g(indirectly)h(through)g(this)f(p)q(oin)o(ter)h(to)g(get)f
-(a)h(c)o(haracter)g(from)195 1191 y(the)c(input)f(stream.)18
-b(By)11 b(default,)f(it)g(is)h(set)f(to)g Fr(rl_getc)p
-Fs(,)g(the)h(default)f(Readline)h(c)o(haracter)f(input)195
-1245 y(function)h(\(see)h(Section)f(2.4.8)f([Character)g(Input],)i
-(page)f(37\).)18 b(In)12 b(general,)f(an)h(application)e(that)195
-1300 y(sets)15 b Fi(rl)p 318 1300 14 2 v 19 w(getc)p
-418 1300 V 20 w(function)g Fs(should)g(consider)g(setting)g
-Fi(rl)p 1118 1300 V 19 w(input)p 1243 1300 V 20 w(a)o(v)m(ailable)p
-1436 1300 V 19 w(ho)q(ok)j Fs(as)d(w)o(ell.)1685 1410
-y([V)l(ariable])-1801 b Fg(rl_hook_func_t)28 b(*)f
-(rl_signal_event_hook)195 1465 y Fs(If)14 b(non-zero,)g(this)e(is)i
-(the)f(address)h(of)f(a)g(function)g(to)g(call)g(if)g(a)g(read)h
-(system)f(call)f(is)h(in)o(terrupted)195 1519 y(when)j(Readline)f(is)g
-(reading)g(terminal)f(input.)1685 1629 y([V)l(ariable])-1801
-b Fg(rl_hook_func_t)28 b(*)f(rl_input_available_hook)195
-1684 y Fs(If)15 b(non-zero,)f(Readline)h(will)e(use)i(this)f
-(function's)g(return)g(v)m(alue)h(when)g(it)f(needs)h(to)f(determine)
-195 1738 y(whether)21 b(or)g(not)g(there)g(is)g(a)o(v)m(ailable)f
-(input)h(on)g(the)h(curren)o(t)f(input)g(source.)38 b(The)21
-b(default)195 1793 y(ho)q(ok)13 b(c)o(hec)o(ks)g Fr(rl_instream)p
-Fs(;)e(if)h(an)h(application)e(is)i(using)f(a)g(di\013eren)o(t)g(input)
-h(source,)g(it)f(should)195 1848 y(set)k(the)h(ho)q(ok)g(appropriately)
-l(.)23 b(Readline)17 b(queries)g(for)f(a)o(v)m(ailable)f(input)i(when)g
-(implemen)o(ting)195 1903 y(in)o(tra-k)o(ey-sequence)d(timeouts)f
-(during)h(input)g(and)h(incremen)o(tal)e(searc)o(hes.)19
-b(This)14 b(ma)o(y)g(use)g(an)195 1958 y(application-sp)q(eci\014c)c
-(timeout)g(b)q(efore)g(returning)g(a)g(v)m(alue;)i(Readline)f(uses)g
-(the)f(v)m(alue)h(passed)g(to)195 2012 y Fr(rl_set_keyboard_input_time)
-o(out\(\))e Fs(or)i(the)i(v)m(alue)f(of)g(the)g(user-settable)g
-Fi(k)o(eyseq-timeout)195 2067 y Fs(v)m(ariable.)22 b(This)16
-b(is)g(designed)g(for)g(use)h(b)o(y)f(applications)e(using)i
-(Readline's)g(callbac)o(k)g(in)o(terface)195 2122 y(\(see)f(Section)g
-(2.4.12)e([Alternate)g(In)o(terface],)h(page)h(41\),)f(whic)o(h)h(ma)o
-(y)f(not)g(use)h(the)g(traditional)195 2177 y Fr(read\(2\))k
-Fs(and)i(\014le)f(descriptor)g(in)o(terface,)g(or)g(other)g
-(applications)f(using)h(a)f(di\013eren)o(t)h(input)195
-2232 y(mec)o(hanism.)h(If)16 b(an)g(application)f(uses)h(an)f(input)h
-(mec)o(hanism)g(or)f(ho)q(ok)h(that)f(can)h(p)q(oten)o(tially)195
-2286 y(exceed)j(the)g(v)m(alue)f(of)g Fi(k)o(eyseq-timeout)p
-Fs(,)g(it)f(should)i(increase)f(the)g(timeout)g(or)f(set)h(this)g(ho)q
-(ok)195 2341 y(appropriately)d(ev)o(en)h(when)h(not)f(using)g(the)g
-(callbac)o(k)f(in)o(terface.)22 b(In)17 b(general,)e(an)h(application)
-195 2396 y(that)e(sets)h Fi(rl)p 416 2396 V 20 w(getc)p
-517 2396 V 20 w(function)g Fs(should)g(consider)g(setting)f
-Fi(rl)p 1216 2396 V 20 w(input)p 1342 2396 V 20 w(a)o(v)m(ailable)p
-1535 2396 V 18 w(ho)q(ok)k Fs(as)d(w)o(ell.)1685 2506
-y([V)l(ariable])-1801 b Fg(rl_voidfunc_t)28 b(*)e
-(rl_redisplay_function)195 2560 y Fs(If)18 b(non-zero,)h(Readline)f
-(will)f(call)g(indirectly)g(through)h(this)f(p)q(oin)o(ter)h(to)f(up)q
-(date)i(the)f(displa)o(y)195 2615 y(with)13 b(the)g(curren)o(t)h(con)o
-(ten)o(ts)f(of)g(the)g(editing)g(bu\013er.)19 b(By)14
-b(default,)f(it)g(is)g(set)g(to)g Fr(rl_redisplay)p Fs(,)195
-2670 y(the)i(default)g(Readline)h(redispla)o(y)e(function)h(\(see)g
-(Section)g(2.4.6)f([Redispla)o(y],)g(page)h(36\).)p eop
-end
-%%Page: 29 33
-TeXDict begin 29 32 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(29)1685 149 y([V)l(ariable])-1801
-b Fg(rl_vintfunc_t)28 b(*)e(rl_prep_term_function)195
-204 y Fs(If)12 b(non-zero,)h(Readline)f(will)f(call)g(indirectly)g
-(through)h(this)f(p)q(oin)o(ter)h(to)f(initialize)f(the)j(terminal.)195
-259 y(The)19 b(function)f(tak)o(es)g(a)g(single)g(argumen)o(t,)g(an)h
-Fr(int)f Fs(\015ag)g(that)g(sa)o(ys)g(whether)g(or)h(not)f(to)g(use)195
-314 y(eigh)o(t-bit)e(c)o(haracters.)25 b(By)17 b(default,)g(this)f(is)h
-(set)f(to)h Fr(rl_prep_terminal)e Fs(\(see)i(Section)g(2.4.9)195
-369 y([T)l(erminal)d(Managemen)o(t],)f(page)i(38\).)1685
-457 y([V)l(ariable])-1801 b Fg(rl_voidfunc_t)28 b(*)e
-(rl_deprep_term_functi)q(on)195 512 y Fs(If)19 b(non-zero,)g(Readline)f
-(will)f(call)h(indirectly)f(through)h(this)g(p)q(oin)o(ter)f(to)h
-(reset)g(the)h(terminal.)195 567 y(This)e(function)g(should)h(undo)g
-(the)f(e\013ects)h(of)f Fr(rl_prep_term_function)p Fs(.)24
-b(By)17 b(default,)h(this)195 622 y(is)d(set)g(to)f Fr
-(rl_deprep_terminal)f Fs(\(see)i(Section)g(2.4.9)f([T)l(erminal)g
-(Managemen)o(t],)f(page)i(38\).)1685 710 y([V)l(ariable])-1801
-b Fg(Keymap)27 b(rl_executing_keymap)195 765 y Fs(This)18
-b(v)m(ariable)f(is)g(set)h(to)g(the)g(k)o(eymap)f(\(see)h(Section)g
-(2.4.2)f([Keymaps],)g(page)h(31\))f(in)h(whic)o(h)195
-820 y(the)d(curren)o(tly)g(executing)g(readline)g(function)g(w)o(as)g
-(found.)1685 909 y([V)l(ariable])-1801 b Fg(Keymap)27
-b(rl_binding_keymap)195 963 y Fs(This)18 b(v)m(ariable)f(is)g(set)h(to)
-g(the)g(k)o(eymap)f(\(see)h(Section)g(2.4.2)f([Keymaps],)g(page)h(31\))
-f(in)h(whic)o(h)195 1018 y(the)d(last)f(k)o(ey)h(binding)h(o)q
-(ccurred.)1685 1107 y([V)l(ariable])-1801 b Fg(char)27
-b(*)f(rl_executing_macro)195 1162 y Fs(This)15 b(v)m(ariable)f(is)h
-(set)g(to)g(the)g(text)g(of)f(an)o(y)h(curren)o(tly-executing)g(macro.)
-1685 1250 y([V)l(ariable])-1801 b Fg(int)27 b(rl_executing_key)195
-1305 y Fs(The)15 b(k)o(ey)h(that)e(caused)i(the)f(dispatc)o(h)g(to)f
-(the)i(curren)o(tly-executing)f(Readline)g(function.)1685
-1394 y([V)l(ariable])-1801 b Fg(char)27 b(*)f(rl_executing_keyseq)195
-1448 y Fs(The)18 b(full)f(k)o(ey)h(sequence)h(that)e(caused)h(the)g
-(dispatc)o(h)f(to)g(the)h(curren)o(tly-executing)g(Readline)195
-1503 y(function.)1685 1592 y([V)l(ariable])-1801 b Fg(int)27
-b(rl_key_sequence_length)195 1647 y Fs(The)15 b(n)o(um)o(b)q(er)h(of)f
-(c)o(haracters)f(in)h Fi(rl)p 809 1647 14 2 v 20 w(executing)p
-1017 1647 V 20 w(k)o(eyseq)p Fs(.)1685 1735 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_readline_state)195 1790 y Fs(A)17 b(v)m(ariable)g
-(with)f(bit)h(v)m(alues)h(that)e(encapsulate)h(the)h(curren)o(t)f
-(Readline)g(state.)25 b(A)18 b(bit)e(is)h(set)195 1845
-y(with)h(the)h Fr(RL_SETSTATE)f Fs(macro,)h(and)g(unset)g(with)f(the)h
-Fr(RL_UNSETSTATE)e Fs(macro.)31 b(Use)19 b(the)195 1900
-y Fr(RL_ISSTATE)e Fs(macro)h(to)g(test)g(whether)h(a)f(particular)g
-(state)f(bit)i(is)f(set.)30 b(Curren)o(t)18 b(state)g(bits)195
-1954 y(include:)195 2032 y Fr(RL_STATE_NONE)435 2087
-y Fs(Readline)d(has)h(not)e(y)o(et)h(b)q(een)h(called,)f(nor)g(has)g
-(it)f(b)q(egun)i(to)f(initialize.)195 2164 y Fr(RL_STATE_INITIALIZING)
-435 2219 y Fs(Readline)g(is)g(initializing)e(its)h(in)o(ternal)g(data)h
-(structures.)195 2296 y Fr(RL_STATE_INITIALIZED)435 2351
-y Fs(Readline)g(has)h(completed)f(its)f(initialization.)195
-2428 y Fr(RL_STATE_TERMPREPPED)435 2483 y Fs(Readline)h(has)f(mo)q
-(di\014ed)h(the)f(terminal)f(mo)q(des)i(to)e(do)i(its)e(o)o(wn)h(input)
-g(and)h(redis-)435 2538 y(pla)o(y)l(.)195 2615 y Fr(RL_STATE_READCMD)
-435 2670 y Fs(Readline)g(is)g(reading)g(a)g(command)g(from)f(the)i(k)o
-(eyb)q(oard.)p eop end
-%%Page: 30 34
-TeXDict begin 30 33 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(30)195 149 y Fr(RL_STATE_METANEXT)435
-204 y Fs(Readline)15 b(is)g(reading)g(more)g(input)g(after)f(reading)h
-(the)g(meta-pre\014x)h(c)o(haracter.)195 288 y Fr(RL_STATE_DISPATCHING)
-435 343 y Fs(Readline)f(is)g(dispatc)o(hing)g(to)f(a)h(command.)195
-427 y Fr(RL_STATE_MOREINPUT)435 481 y Fs(Readline)g(is)g(reading)g
-(more)g(input)g(while)g(executing)g(an)g(editing)g(command.)195
-565 y Fr(RL_STATE_ISEARCH)435 620 y Fs(Readline)g(is)g(p)q(erforming)g
-(an)g(incremen)o(tal)f(history)g(searc)o(h.)195 704 y
-Fr(RL_STATE_NSEARCH)435 759 y Fs(Readline)h(is)g(p)q(erforming)g(a)g
-(non-incremen)o(tal)f(history)h(searc)o(h.)195 842 y
-Fr(RL_STATE_SEARCH)435 897 y Fs(Readline)10 b(is)g(searc)o(hing)g(bac)o
-(kw)o(ard)f(or)h(forw)o(ard)f(through)h(the)g(history)f(for)g(a)h
-(string.)195 981 y Fr(RL_STATE_NUMERICARG)435 1036 y
-Fs(Readline)15 b(is)g(reading)g(a)g(n)o(umeric)g(argumen)o(t.)195
-1120 y Fr(RL_STATE_MACROINPUT)435 1174 y Fs(Readline)d(is)g(curren)o
-(tly)g(getting)f(its)g(input)h(from)f(a)h(previously-de\014ned)h(k)o
-(eyb)q(oard)435 1229 y(macro.)195 1313 y Fr(RL_STATE_MACRODEF)435
-1368 y Fs(Readline)i(is)g(curren)o(tly)g(reading)g(c)o(haracters)f
-(de\014ning)i(a)f(k)o(eyb)q(oard)g(macro.)195 1452 y
-Fr(RL_STATE_OVERWRITE)435 1506 y Fs(Readline)g(is)g(in)g(o)o(v)o
-(erwrite)f(mo)q(de.)195 1590 y Fr(RL_STATE_COMPLETING)435
-1645 y Fs(Readline)h(is)g(p)q(erforming)g(w)o(ord)f(completion.)195
-1729 y Fr(RL_STATE_SIGHANDLER)435 1784 y Fs(Readline)h(is)g(curren)o
-(tly)g(executing)g(the)g(readline)g(signal)f(handler.)195
-1867 y Fr(RL_STATE_UNDOING)435 1922 y Fs(Readline)h(is)g(p)q(erforming)
-g(an)g(undo.)195 2006 y Fr(RL_STATE_INPUTPENDING)435
-2061 y Fs(Readline)g(has)h(input)f(p)q(ending)h(due)g(to)e(a)h(call)f
-(to)h Fr(rl_execute_next\(\))p Fs(.)195 2145 y Fr(RL_STATE_TTYCSAVED)
-435 2199 y Fs(Readline)g(has)h(sa)o(v)o(ed)e(the)i(v)m(alues)f(of)g
-(the)g(terminal's)e(sp)q(ecial)i(c)o(haracters.)195 2283
-y Fr(RL_STATE_CALLBACK)435 2338 y Fs(Readline)22 b(is)f(curren)o(tly)g
-(using)g(the)h(alternate)e(\(callbac)o(k\))g(in)o(terface)h(\(see)g
-(Sec-)435 2393 y(tion)14 b(2.4.12)g([Alternate)g(In)o(terface],)g(page)
-h(41\).)195 2477 y Fr(RL_STATE_VIMOTION)435 2531 y Fs(Readline)g(is)g
-(reading)g(the)g(argumen)o(t)g(to)f(a)h(vi-mo)q(de)g
-Fr(")p Fs(motion)p Fr(")f Fs(command.)195 2615 y Fr(RL_STATE_MULTIKEY)
-435 2670 y Fs(Readline)h(is)g(reading)g(a)g(m)o(ultiple-k)o(eystrok)o
-(e)e(command.)p eop end
-%%Page: 31 35
-TeXDict begin 31 34 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(31)195 149 y Fr(RL_STATE_VICMDONCE)435
-204 y Fs(Readline)20 b(has)f(en)o(tered)h(vi)f(command)h(\(mo)o(v)o
-(emen)o(t\))e(mo)q(de)h(at)g(least)g(one)h(time)435 259
-y(during)15 b(the)g(curren)o(t)g(call)g(to)f Fr(readline\(\))p
-Fs(.)195 336 y Fr(RL_STATE_DONE)435 391 y Fs(Readline)g(has)g(read)g(a)
-f(k)o(ey)h(sequence)h(b)q(ound)g(to)e Fr(accept-line)f
-Fs(and)i(is)g(ab)q(out)g(to)435 446 y(return)h(the)g(line)g(to)g(the)g
-(caller.)1685 534 y([V)l(ariable])-1801 b Fg(int)27 b(rl_explicit_arg)
-195 589 y Fs(Set)19 b(to)g(a)g(non-zero)h(v)m(alue)g(if)e(an)i
-(explicit)e(n)o(umeric)i(argumen)o(t)e(w)o(as)h(sp)q(eci\014ed)h(b)o(y)
-g(the)f(user.)195 643 y(Only)c(v)m(alid)g(in)g(a)g(bindable)g(command)h
-(function.)1685 731 y([V)l(ariable])-1801 b Fg(int)27
-b(rl_numeric_arg)195 786 y Fs(Set)c(to)f(the)g(v)m(alue)h(of)g(an)o(y)f
-(n)o(umeric)g(argumen)o(t)g(explicitly)g(sp)q(eci\014ed)i(b)o(y)e(the)h
-(user)g(b)q(efore)195 841 y(executing)13 b(the)g(curren)o(t)g(Readline)
-g(function.)19 b(Only)13 b(v)m(alid)g(in)g(a)g(bindable)g(command)f
-(function.)1685 929 y([V)l(ariable])-1801 b Fg(int)27
-b(rl_editing_mode)195 984 y Fs(Set)13 b(to)f(a)g(v)m(alue)h(denoting)f
-(Readline's)g(curren)o(t)h(editing)f(mo)q(de.)19 b(A)12
-b(v)m(alue)h(of)f Fi(1)k Fs(means)d(Readline)195 1039
-y(is)i(curren)o(tly)f(in)h(emacs)h(mo)q(de;)f Fi(0)j
-Fs(means)d(that)g(vi)g(mo)q(de)g(is)g(activ)o(e.)75 1152
-y Fq(2.4)33 b(Readline)21 b(Con)n(v)n(enience)h(F)-6
-b(unctions)75 1263 y Fh(2.4.1)30 b(Naming)20 b(a)g(F)-5
-b(unction)75 1336 y Fs(The)13 b(user)f(can)h(dynamically)e(c)o(hange)i
-(the)f(bindings)h(of)f(k)o(eys)g(while)g(using)g(Readline.)19
-b(This)12 b(is)g(done)h(b)o(y)75 1391 y(represen)o(ting)i(the)g
-(function)g(with)f(a)h(descriptiv)o(e)g(name.)20 b(The)15
-b(user)g(is)g(able)g(to)f(t)o(yp)q(e)h(the)g(descriptiv)o(e)75
-1446 y(name)g(when)h(referring)e(to)h(the)g(function.)20
-b(Th)o(us,)15 b(in)g(an)g(init)f(\014le,)h(one)g(migh)o(t)f(\014nd)195
-1512 y Fr(Meta-Rubout:)46 b(backward-kill-word)137 1578
-y Fs(This)d(binds)g(the)g(k)o(eystrok)o(e)e Fr(Meta-Rubout)h
-Fs(to)g(the)h(function)f Fj(descriptively)47 b Fs(named)75
-1633 y Fr(backward-kill-word)p Fs(.)31 b(Y)l(ou,)21 b(as)e(the)h
-(programmer,)g(should)g(bind)g(the)g(functions)f(y)o(ou)h(write)f(to)75
-1687 y(descriptiv)o(e)c(names)g(as)g(w)o(ell.)j(Readline)e(pro)o(vides)
-f(a)g(function)g(for)f(doing)h(that:)1675 1775 y([F)l(unction])-1801
-b Fg(int)27 b(rl_add_defun)d Ff(\()p Fi(const)15 b(c)o(har)g(*name,)f
-(rl)p 943 1775 14 2 v 20 w(command)p 1155 1775 V 20 w(func)p
-1259 1775 V 20 w(t)h(*function,)f(in)o(t)283 1830 y(k)o(ey)p
-Ff(\))195 1885 y Fs(Add)k Fi(name)i Fs(to)d(the)h(list)f(of)g(named)h
-(functions.)27 b(Mak)o(e)17 b Fi(function)g Fs(b)q(e)h(the)g(function)g
-(that)e(gets)195 1940 y(called.)j(If)d Fi(k)o(ey)j Fs(is)c(not)f(-1,)h
-(then)h(bind)f(it)g(to)f Fi(function)h Fs(using)g Fr(rl_bind_key\(\))p
-Fs(.)137 2028 y(Using)g(this)f(function)h(alone)g(is)f(su\016cien)o(t)h
-(for)g(most)f(applications.)k(It)d(is)g(the)g(recommended)h(w)o(a)o(y)
-75 2083 y(to)d(add)h(a)f(few)g(functions)g(to)g(the)h(default)f
-(functions)g(that)g(Readline)h(has)f(built)g(in.)19 b(If)14
-b(y)o(ou)f(need)h(to)f(do)75 2138 y(something)j(other)h(than)f(adding)h
-(a)f(function)h(to)f(Readline,)h(y)o(ou)g(ma)o(y)f(need)i(to)e(use)h
-(the)g(underlying)75 2192 y(functions)e(describ)q(ed)h(b)q(elo)o(w.)75
-2289 y Fh(2.4.2)30 b(Selecting)20 b(a)h(Keymap)75 2363
-y Fs(Key)f(bindings)f(tak)o(e)g(place)g(on)g(a)g Fi(k)o(eymap)p
-Fs(.)32 b(The)20 b(k)o(eymap)f(is)g(the)g(asso)q(ciation)f(b)q(et)o(w)o
-(een)i(the)f(k)o(eys)75 2418 y(that)14 b(the)g(user)g(t)o(yp)q(es)g
-(and)h(the)f(functions)g(that)g(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)
-g(y)o(our)g(o)o(wn)f(k)o(eymaps,)h(cop)o(y)75 2472 y(existing)g(k)o
-(eymaps,)h(and)g(tell)f(Readline)i(whic)o(h)f(k)o(eymap)g(to)f(use.)
-1675 2560 y([F)l(unction])-1801 b Fg(Keymap)27 b(rl_make_bare_keymap)f
-Ff(\()p Fi(v)o(oid)p Ff(\))195 2615 y Fs(Returns)13 b(a)e(new,)i(empt)o
-(y)f(k)o(eymap.)18 b(The)13 b(space)f(for)f(the)i(k)o(eymap)e(is)h
-(allo)q(cated)f(with)g Fr(malloc\(\))p Fs(;)195 2670
-y(the)k(caller)g(should)g(free)g(it)g(b)o(y)g(calling)f
-Fr(rl_free_keymap\(\))f Fs(when)i(done.)p eop end
-%%Page: 32 36
-TeXDict begin 32 35 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(32)1675 149 y([F)l(unction])-1801
-b Fg(Keymap)27 b(rl_copy_keymap)e Ff(\()p Fi(Keymap)15
-b(map)p Ff(\))195 204 y Fs(Return)h(a)f(new)g(k)o(eymap)g(whic)o(h)g
-(is)g(a)g(cop)o(y)g(of)g Fi(map)p Fs(.)1675 289 y([F)l(unction])-1801
-b Fg(Keymap)27 b(rl_make_keymap)e Ff(\()p Fi(v)o(oid)p
-Ff(\))195 344 y Fs(Return)16 b(a)g(new)g(k)o(eymap)f(with)g(the)h(prin)
-o(ting)f(c)o(haracters)f(b)q(ound)j(to)e(rl)p 1455 344
-14 2 v 20 w(insert,)f(the)i(lo)o(w)o(ercase)195 399 y(Meta)11
-b(c)o(haracters)f(b)q(ound)i(to)f(run)h(their)e(equiv)m(alen)o(ts,)i
-(and)f(the)h(Meta)e(digits)g(b)q(ound)i(to)f(pro)q(duce)195
-454 y(n)o(umeric)k(argumen)o(ts.)1675 539 y([F)l(unction])-1801
-b Fg(void)27 b(rl_discard_keymap)e Ff(\()p Fi(Keymap)15
-b(k)o(eymap)p Ff(\))195 594 y Fs(F)l(ree)g(the)f(storage)g(asso)q
-(ciated)g(with)g(the)h(data)f(in)g Fi(k)o(eymap)p Fs(.)19
-b(The)c(caller)f(should)h(free)g Fi(k)o(eymap)p Fs(.)1675
-679 y([F)l(unction])-1801 b Fg(void)27 b(rl_free_keymap)e
-Ff(\()p Fi(Keymap)15 b(k)o(eymap)p Ff(\))195 734 y Fs(F)l(ree)g(all)g
-(storage)f(asso)q(ciated)h(with)f Fi(k)o(eymap)p Fs(.)21
-b(This)15 b(calls)f Fr(rl_discard_keymap)f Fs(to)i(free)g(sub-)195
-789 y(ordindate)g(k)o(eymaps)g(and)g(macros.)137 874
-y(Readline)23 b(has)g(sev)o(eral)f(in)o(ternal)f(k)o(eymaps.)42
-b(These)23 b(functions)f(allo)o(w)f(y)o(ou)h(to)g(c)o(hange)h(whic)o(h)
-75 929 y(k)o(eymap)15 b(is)g(activ)o(e.)1675 1014 y([F)l(unction])-1801
-b Fg(Keymap)27 b(rl_get_keymap)e Ff(\()p Fi(v)o(oid)p
-Ff(\))195 1069 y Fs(Returns)16 b(the)f(curren)o(tly)g(activ)o(e)f(k)o
-(eymap.)1675 1154 y([F)l(unction])-1801 b Fg(void)27
-b(rl_set_keymap)d Ff(\()p Fi(Keymap)16 b(k)o(eymap)p
-Ff(\))195 1209 y Fs(Mak)o(es)e Fi(k)o(eymap)j Fs(the)e(curren)o(tly)g
-(activ)o(e)f(k)o(eymap.)1675 1294 y([F)l(unction])-1801
-b Fg(Keymap)27 b(rl_get_keymap_by_name)f Ff(\()p Fi(const)15
-b(c)o(har)f(*name)p Ff(\))195 1349 y Fs(Return)j(the)g(k)o(eymap)f
-(matc)o(hing)g Fi(name)p Fs(.)24 b Fi(name)19 b Fs(is)d(one)h(whic)o(h)
-f(w)o(ould)g(b)q(e)i(supplied)f(in)f(a)g Fr(set)195 1404
-y(keymap)e Fs(inputrc)i(line)e(\(see)i(Section)f(1.3)f([Readline)h
-(Init)g(File],)f(page)h(4\).)1675 1489 y([F)l(unction])-1801
-b Fg(char)27 b(*)f(rl_get_keymap_name)g Ff(\()p Fi(Keymap)15
-b(k)o(eymap)p Ff(\))195 1544 y Fs(Return)i(the)g(name)g(matc)o(hing)e
-Fi(k)o(eymap)p Fs(.)24 b Fi(name)19 b Fs(is)d(one)h(whic)o(h)f(w)o
-(ould)g(b)q(e)i(supplied)f(in)f(a)g Fr(set)195 1598 y(keymap)e
-Fs(inputrc)i(line)e(\(see)i(Section)f(1.3)f([Readline)h(Init)g(File],)f
-(page)h(4\).)75 1693 y Fh(2.4.3)30 b(Binding)20 b(Keys)75
-1767 y Fs(Key)e(sequences)g(are)e(asso)q(ciate)g(with)h(functions)g
-(through)f(the)h(k)o(eymap.)26 b(Readline)17 b(has)g(sev)o(eral)f(in-)
-75 1822 y(ternal)e(k)o(eymaps:)19 b Fr(emacs_standard_keymap)p
-Fs(,)11 b Fr(emacs_meta_keymap)p Fs(,)h Fr(emacs_ctlx_keymap)p
-Fs(,)g Fr(vi_)75 1876 y(movement_keymap)p Fs(,)20 b(and)i
-Fr(vi_insertion_keymap)p Fs(.)35 b Fr(emacs_standard_keymap)18
-b Fs(is)j(the)g(default,)75 1931 y(and)15 b(the)h(examples)f(in)g(this)
-f(man)o(ual)h(assume)g(that.)137 1996 y(Since)g Fr(readline\(\))d
-Fs(installs)g(a)i(set)f(of)h(default)f(k)o(ey)h(bindings)f(the)h
-(\014rst)g(time)f(it)g(is)g(called,)h(there)f(is)75 2051
-y(alw)o(a)o(ys)i(the)h(danger)g(that)g(a)g(custom)g(binding)g
-(installed)f(b)q(efore)i(the)f(\014rst)g(call)g(to)f
-Fr(readline\(\))g Fs(will)75 2106 y(b)q(e)f(o)o(v)o(erridden.)k(An)13
-b(alternate)f(mec)o(hanism)h(is)f(to)g(install)f(custom)i(k)o(ey)g
-(bindings)f(in)h(an)g(initialization)75 2161 y(function)18
-b(assigned)h(to)e(the)i Fr(rl_startup_hook)e Fs(v)m(ariable)h(\(see)g
-(Section)g(2.3)g([Readline)h(V)l(ariables],)75 2215 y(page)c(26\).)137
-2280 y(These)h(functions)f(manage)f(k)o(ey)i(bindings.)1675
-2366 y([F)l(unction])-1801 b Fg(int)27 b(rl_bind_key)d
-Ff(\()p Fi(in)o(t)14 b(k)o(ey)l(,)h(rl)p 702 2366 V 19
-w(command)p 913 2366 V 20 w(func)p 1017 2366 V 21 w(t)g(*function)p
-Ff(\))195 2420 y Fs(Binds)i Fi(k)o(ey)j Fs(to)c Fi(function)g
-Fs(in)h(the)f(curren)o(tly)g(activ)o(e)g(k)o(eymap.)23
-b(Returns)17 b(non-zero)g(in)f(the)h(case)195 2475 y(of)e(an)g(in)o(v)m
-(alid)f Fi(k)o(ey)p Fs(.)1675 2560 y([F)l(unction])-1801
-b Fg(int)27 b(rl_bind_key_in_map)e Ff(\()p Fi(in)o(t)14
-b(k)o(ey)l(,)h(rl)p 885 2560 V 20 w(command)p 1097 2560
-V 19 w(func)p 1200 2560 V 21 w(t)g(*function,)283 2615
-y(Keymap)g(map)p Ff(\))195 2670 y Fs(Bind)g Fi(k)o(ey)k
-Fs(to)c Fi(function)g Fs(in)g Fi(map)p Fs(.)20 b(Returns)15
-b(non-zero)h(in)f(the)g(case)g(of)g(an)g(in)o(v)m(alid)g
-Fi(k)o(ey)p Fs(.)p eop end
-%%Page: 33 37
-TeXDict begin 33 36 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(33)1675 149 y([F)l(unction])-1801
-b Fg(int)27 b(rl_bind_key_if_unbound)f Ff(\()p Fi(in)o(t)14
-b(k)o(ey)l(,)h(rl)p 990 149 14 2 v 19 w(command)p 1201
-149 V 20 w(func)p 1305 149 V 21 w(t)f(*function)p Ff(\))195
-204 y Fs(Binds)22 b Fi(k)o(ey)k Fs(to)21 b Fi(function)h
-Fs(if)g(it)f(is)g(not)h(already)f(b)q(ound)i(in)f(the)g(curren)o(tly)f
-(activ)o(e)h(k)o(eymap.)195 259 y(Returns)16 b(non-zero)f(in)g(the)h
-(case)f(of)f(an)i(in)o(v)m(alid)e Fi(k)o(ey)19 b Fs(or)c(if)f
-Fi(k)o(ey)19 b Fs(is)c(already)g(b)q(ound.)1675 369 y([F)l(unction])
--1801 b Fg(int)27 b(rl_bind_key_if_unbound_in_)q(map)f
-Ff(\()p Fi(in)o(t)14 b(k)o(ey)l(,)h(rl)p 1173 369 V 19
-w(command)p 1384 369 V 20 w(func)p 1488 369 V 21 w(t)283
-423 y(*function,)f(Keymap)h(map)p Ff(\))195 478 y Fs(Binds)f
-Fi(k)o(ey)j Fs(to)c Fi(function)h Fs(if)f(it)g(is)g(not)g(already)g(b)q
-(ound)i(in)e Fi(map)p Fs(.)20 b(Returns)14 b(non-zero)g(in)f(the)h
-(case)195 533 y(of)h(an)g(in)o(v)m(alid)f Fi(k)o(ey)19
-b Fs(or)c(if)g Fi(k)o(ey)k Fs(is)14 b(already)h(b)q(ound.)1675
-643 y([F)l(unction])-1801 b Fg(int)27 b(rl_unbind_key)d
-Ff(\()p Fi(in)o(t)14 b(k)o(ey)p Ff(\))195 697 y Fs(Bind)k
-Fi(k)o(ey)k Fs(to)c(the)g(n)o(ull)g(function)g(in)g(the)g(curren)o(tly)
-f(activ)o(e)h(k)o(eymap.)28 b(Returns)19 b(non-zero)f(in)195
-752 y(case)d(of)g(error.)1675 862 y([F)l(unction])-1801
-b Fg(int)27 b(rl_unbind_key_in_map)e Ff(\()p Fi(in)o(t)14
-b(k)o(ey)l(,)h(Keymap)h(map)p Ff(\))195 917 y Fs(Bind)f
-Fi(k)o(ey)k Fs(to)c(the)g(n)o(ull)g(function)g(in)g Fi(map)p
-Fs(.)20 b(Returns)15 b(non-zero)h(in)f(case)g(of)g(error.)1675
-1026 y([F)l(unction])-1801 b Fg(int)27 b(rl_unbind_function_in_map)f
-Ff(\()p Fi(rl)p 908 1026 V 19 w(command)p 1119 1026 V
-20 w(func)p 1223 1026 V 21 w(t)15 b(*function,)283 1081
-y(Keymap)g(map)p Ff(\))195 1136 y Fs(Un)o(bind)h(all)e(k)o(eys)h(that)f
-(execute)i Fi(function)f Fs(in)g Fi(map)p Fs(.)1675 1245
-y([F)l(unction])-1801 b Fg(int)27 b(rl_unbind_command_in_map)f
-Ff(\()p Fi(const)15 b(c)o(har)f(*command,)h(Keymap)g(map)p
-Ff(\))195 1300 y Fs(Un)o(bind)h(all)e(k)o(eys)h(that)f(are)h(b)q(ound)h
-(to)f Fi(command)i Fs(in)e Fi(map)p Fs(.)1675 1410 y([F)l(unction])
--1801 b Fg(int)27 b(rl_bind_keyseq)d Ff(\()p Fi(const)15
-b(c)o(har)g(*k)o(eyseq,)f(rl)p 1018 1410 V 20 w(command)p
-1230 1410 V 20 w(func)p 1334 1410 V 20 w(t)h(*function)p
-Ff(\))195 1465 y Fs(Bind)22 b(the)f(k)o(ey)h(sequence)h(represen)o(ted)
-f(b)o(y)f(the)h(string)e Fi(k)o(eyseq)j Fs(to)e(the)g(function)g
-Fi(function)p Fs(,)195 1519 y(b)q(eginning)14 b(in)g(the)g(curren)o(t)g
-(k)o(eymap.)20 b(This)13 b(mak)o(es)h(new)g(k)o(eymaps)g(as)g
-(necessary)l(.)20 b(The)14 b(return)195 1574 y(v)m(alue)h(is)g
-(non-zero)h(if)e Fi(k)o(eyseq)j Fs(is)d(in)o(v)m(alid.)1675
-1684 y([F)l(unction])-1801 b Fg(int)27 b(rl_bind_keyseq_in_map)f
-Ff(\()p Fi(const)14 b(c)o(har)h(*k)o(eyseq,)g(rl)p 1202
-1684 V 19 w(command)p 1413 1684 V 20 w(func)p 1517 1684
-V 21 w(t)283 1738 y(*function,)f(Keymap)h(map)p Ff(\))195
-1793 y Fs(Bind)e(the)f(k)o(ey)h(sequence)h(represen)o(ted)f(b)o(y)f
-(the)h(string)e Fi(k)o(eyseq)j Fs(to)e(the)g(function)h
-Fi(function)p Fs(.)18 b(This)195 1848 y(mak)o(es)c(new)h(k)o(eymaps)f
-(as)g(necessary)l(.)20 b(Initial)14 b(bindings)g(are)h(p)q(erformed)f
-(in)h Fi(map)p Fs(.)k(The)c(return)195 1903 y(v)m(alue)g(is)g(non-zero)
-h(if)e Fi(k)o(eyseq)j Fs(is)d(in)o(v)m(alid.)1675 2012
-y([F)l(unction])-1801 b Fg(int)27 b(rl_set_key)d Ff(\()p
-Fi(const)14 b(c)o(har)h(*k)o(eyseq,)g(rl)p 914 2012 V
-19 w(command)p 1125 2012 V 20 w(func)p 1229 2012 V 21
-w(t)g(*function,)283 2067 y(Keymap)g(map)p Ff(\))195
-2122 y Fs(Equiv)m(alen)o(t)g(to)f Fr(rl_bind_keyseq_in_map)p
-Fs(.)1675 2232 y([F)l(unction])-1801 b Fg(int)27 b
-(rl_bind_keyseq_if_unbound)f Ff(\()p Fi(const)15 b(c)o(har)g(*k)o
-(eyseq,)283 2286 y(rl)p 317 2286 V 19 w(command)p 528
-2286 V 20 w(func)p 632 2286 V 21 w(t)f(*function)p Ff(\))195
-2341 y Fs(Binds)k Fi(k)o(eyseq)h Fs(to)e Fi(function)g
-Fs(if)h(it)f(is)g(not)g(already)g(b)q(ound)i(in)f(the)f(curren)o(tly)h
-(activ)o(e)f(k)o(eymap.)195 2396 y(Returns)f(non-zero)f(in)g(the)h
-(case)f(of)f(an)i(in)o(v)m(alid)e Fi(k)o(eyseq)i Fs(or)f(if)g
-Fi(k)o(eyseq)h Fs(is)f(already)f(b)q(ound.)1675 2506
-y([F)l(unction])-1801 b Fg(int)27 b(rl_bind_keyseq_if_unbound_)q
-(in_map)f Ff(\()p Fi(const)15 b(c)o(har)g(*k)o(eyseq,)283
-2560 y(rl)p 317 2560 V 19 w(command)p 528 2560 V 20 w(func)p
-632 2560 V 21 w(t)f(*function,)h(Keymap)g(map)p Ff(\))195
-2615 y Fs(Binds)h Fi(k)o(eyseq)h Fs(to)f Fi(function)f
-Fs(if)h(it)f(is)h(not)f(already)g(b)q(ound)i(in)f Fi(map)p
-Fs(.)22 b(Returns)17 b(non-zero)f(in)g(the)195 2670 y(case)f(of)g(an)g
-(in)o(v)m(alid)g Fi(k)o(eyseq)h Fs(or)f(if)f Fi(k)o(eyseq)i
-Fs(is)f(already)g(b)q(ound.)p eop end
-%%Page: 34 38
-TeXDict begin 34 37 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(34)1675 149 y([F)l(unction])-1801
-b Fg(int)27 b(rl_generic_bind)e Ff(\()p Fi(in)o(t)14
-b(t)o(yp)q(e,)h(const)g(c)o(har)f(*k)o(eyseq,)h(c)o(har)g(*data,)f
-(Keymap)283 204 y(map)p Ff(\))195 259 y Fs(Bind)g(the)f(k)o(ey)h
-(sequence)h(represen)o(ted)e(b)o(y)h(the)g(string)e Fi(k)o(eyseq)j
-Fs(to)d(the)i(arbitrary)e(p)q(oin)o(ter)h Fi(data)p Fs(.)195
-314 y Fi(t)o(yp)q(e)k Fs(sa)o(ys)c(what)h(kind)g(of)g(data)g(is)f(p)q
-(oin)o(ted)i(to)e(b)o(y)h Fi(data)p Fs(;)g(this)g(can)g(b)q(e)h(a)f
-(function)g(\()p Fr(ISFUNC)p Fs(\),)e(a)195 369 y(macro)i(\()p
-Fr(ISMACR)p Fs(\),)f(or)h(a)h(k)o(eymap)f(\()p Fr(ISKMAP)p
-Fs(\).)k(This)d(mak)o(es)f(new)h(k)o(eymaps)f(as)h(necessary)l(.)20
-b(The)195 423 y(initial)13 b(k)o(eymap)i(in)g(whic)o(h)g(to)g(do)g
-(bindings)g(is)g Fi(map)p Fs(.)1675 514 y([F)l(unction])-1801
-b Fg(int)27 b(rl_parse_and_bind)e Ff(\()p Fi(c)o(har)14
-b(*line)p Ff(\))195 569 y Fs(P)o(arse)g Fi(line)j Fs(as)d(if)g(it)g
-(had)h(b)q(een)h(read)f(from)f(the)g Fr(inputrc)g Fs(\014le)h(and)g(p)q
-(erform)f(an)o(y)h(k)o(ey)f(bindings)195 623 y(and)h(v)m(ariable)g
-(assignmen)o(ts)f(found)i(\(see)f(Section)g(1.3)f([Readline)h(Init)g
-(File],)f(page)h(4\).)1675 714 y([F)l(unction])-1801
-b Fg(int)27 b(rl_read_init_file)e Ff(\()p Fi(const)15
-b(c)o(har)f(*\014lename)p Ff(\))195 769 y Fs(Read)i(k)o(eybindings)g
-(and)g(v)m(ariable)f(assignmen)o(ts)g(from)g Fi(\014lename)j
-Fs(\(see)e(Section)f(1.3)g([Readline)195 824 y(Init)g(File],)f(page)h
-(4\).)75 922 y Fh(2.4.4)30 b(Asso)r(ciating)20 b(F)-5
-b(unction)20 b(Names)h(and)f(Bindings)75 996 y Fs(These)15
-b(functions)g(allo)o(w)f(y)o(ou)g(to)h(\014nd)h(out)e(what)h(k)o(eys)g
-(in)o(v)o(ok)o(e)f(named)h(functions)g(and)g(the)g(functions)75
-1050 y(in)o(v)o(ok)o(ed)e(b)o(y)h(a)f(particular)f(k)o(ey)i(sequence.)
-21 b(Y)l(ou)14 b(ma)o(y)f(also)f(asso)q(ciate)h(a)h(new)g(function)f
-(name)h(with)f(an)75 1105 y(arbitrary)h(function.)1675
-1196 y([F)l(unction])-1801 b Fg(rl_command_func_t)29
-b(*)d(rl_named_function)f Ff(\()p Fi(const)15 b(c)o(har)g(*name)p
-Ff(\))195 1250 y Fs(Return)h(the)f(function)g(with)g(name)g
-Fi(name)p Fs(.)1675 1341 y([F)l(unction])-1801 b Fg(rl_command_func_t)
-29 b(*)d(rl_function_of_keyseq)g Ff(\()p Fi(const)15
-b(c)o(har)f(*k)o(eyseq,)283 1396 y(Keymap)h(map,)g(in)o(t)f(*t)o(yp)q
-(e)p Ff(\))195 1450 y Fs(Return)j(the)f(function)g(in)o(v)o(ok)o(ed)g
-(b)o(y)g Fi(k)o(eyseq)h Fs(in)f(k)o(eymap)g Fi(map)p
-Fs(.)23 b(If)17 b Fi(map)g Fs(is)f Fr(NULL)p Fs(,)g(the)g(curren)o(t)
-195 1505 y(k)o(eymap)i(is)g(used.)31 b(If)18 b Fi(t)o(yp)q(e)j
-Fs(is)d(not)h Fr(NULL)p Fs(,)f(the)g(t)o(yp)q(e)h(of)f(the)h(ob)s(ject)
-f(is)g(returned)h(in)f(the)g Fr(int)195 1560 y Fs(v)m(ariable)d(it)f(p)
-q(oin)o(ts)h(to)f(\(one)h(of)g Fr(ISFUNC)p Fs(,)f Fr(ISKMAP)p
-Fs(,)g(or)h Fr(ISMACR)p Fs(\).)1675 1651 y([F)l(unction])-1801
-b Fg(char)27 b(**)f(rl_invoking_keyseqs)g Ff(\()p Fi(rl)p
-856 1651 14 2 v 19 w(command)p 1067 1651 V 20 w(func)p
-1171 1651 V 20 w(t)15 b(*function)p Ff(\))195 1705 y
-Fs(Return)h(an)g(arra)o(y)e(of)h(strings)g(represen)o(ting)g(the)h(k)o
-(ey)f(sequences)i(used)f(to)f(in)o(v)o(ok)o(e)g Fi(function)g
-Fs(in)195 1760 y(the)g(curren)o(t)g(k)o(eymap.)1675 1851
-y([F)l(unction])-1801 b Fg(char)27 b(**)f(rl_invoking_keyseqs_in)q
-(_map)g Ff(\()p Fi(rl)p 1039 1851 V 19 w(command)p 1250
-1851 V 20 w(func)p 1354 1851 V 21 w(t)283 1905 y(*function,)14
-b(Keymap)h(map)p Ff(\))195 1960 y Fs(Return)h(an)g(arra)o(y)e(of)h
-(strings)g(represen)o(ting)g(the)h(k)o(ey)f(sequences)i(used)f(to)f(in)
-o(v)o(ok)o(e)g Fi(function)g Fs(in)195 2015 y(the)g(k)o(eymap)g
-Fi(map)p Fs(.)1675 2105 y([F)l(unction])-1801 b Fg(void)27
-b(rl_function_dumper)e Ff(\()p Fi(in)o(t)14 b(readable)p
-Ff(\))195 2160 y Fs(Prin)o(t)g(the)g(readline)h(function)f(names)h(and)
-f(the)h(k)o(ey)g(sequences)g(curren)o(tly)f(b)q(ound)i(to)e(them)h(to)
-195 2215 y Fr(rl_outstream)p Fs(.)j(If)c Fi(readable)i
-Fs(is)d(non-zero,)h(the)g(list)e(is)i(formatted)e(in)i(suc)o(h)g(a)f(w)
-o(a)o(y)g(that)g(it)g(can)195 2270 y(b)q(e)j(made)f(part)g(of)f(an)i
-Fr(inputrc)e Fs(\014le)h(and)g(re-read.)1675 2360 y([F)l(unction])-1801
-b Fg(void)27 b(rl_list_funmap_names)f Ff(\()p Fi(v)o(oid)p
-Ff(\))195 2415 y Fs(Prin)o(t)14 b(the)h(names)h(of)e(all)h(bindable)g
-(Readline)g(functions)g(to)g Fr(rl_outstream)p Fs(.)1675
-2506 y([F)l(unction])-1801 b Fg(const)27 b(char)g(**)f(rl_funmap_names)
-f Ff(\()p Fi(v)o(oid)p Ff(\))195 2560 y Fs(Return)14
-b(a)e(NULL)i(terminated)f(arra)o(y)e(of)i(kno)o(wn)g(function)f(names.)
-20 b(The)13 b(arra)o(y)f(is)g(sorted.)19 b(The)195 2615
-y(arra)o(y)13 b(itself)g(is)g(allo)q(cated,)g(but)h(not)g(the)g
-(strings)f(inside.)19 b(Y)l(ou)14 b(should)g(free)g(the)g(arra)o(y)l(,)
-f(but)h(not)195 2670 y(the)h(p)q(oin)o(ters,)g(using)f
-Fr(free)h Fs(or)g Fr(rl_free)f Fs(when)i(y)o(ou)e(are)h(done.)p
-eop end
-%%Page: 35 39
-TeXDict begin 35 38 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(35)1675 149 y([F)l(unction])-1801
-b Fg(int)27 b(rl_add_funmap_entry)e Ff(\()p Fi(const)15
-b(c)o(har)g(*name,)f(rl)p 1126 149 14 2 v 20 w(command)p
-1338 149 V 20 w(func)p 1442 149 V 20 w(t)283 204 y(*function)p
-Ff(\))195 259 y Fs(Add)j Fi(name)i Fs(to)d(the)g(list)f(of)h(bindable)h
-(Readline)g(command)f(names,)g(and)h(mak)o(e)f Fi(function)g
-Fs(the)195 314 y(function)f(to)g(b)q(e)g(called)g(when)h
-Fi(name)i Fs(is)c(in)o(v)o(ok)o(ed.)75 419 y Fh(2.4.5)30
-b(Allo)n(wing)21 b(Undoing)75 492 y Fs(Supp)q(orting)d(the)g(undo)g
-(command)g(is)f(a)h(painless)f(thing,)h(and)g(mak)o(es)f(y)o(our)h
-(functions)f(m)o(uc)o(h)h(more)75 547 y(useful.)i(It)15
-b(is)g(certainly)f(easy)h(to)g(try)f(something)h(if)f(y)o(ou)h(kno)o(w)
-g(y)o(ou)g(can)g(undo)h(it.)137 620 y(If)21 b(y)o(our)f(function)g
-(simply)g(inserts)g(text)f(once,)j(or)e(deletes)g(text)g(once,)i(and)f
-(uses)f Fr(rl_insert_)75 675 y(text\(\))13 b Fs(or)h
-Fr(rl_delete_text\(\))d Fs(to)j(do)f(it,)g(then)i(undoing)f(is)f
-(already)g(done)i(for)e(y)o(ou)h(automatically)l(.)137
-747 y(If)d(y)o(ou)f(do)g(m)o(ultiple)f(insertions)g(or)h(m)o(ultiple)f
-(deletions,)h(or)g(an)o(y)g(com)o(bination)f(of)h(these)g(op)q
-(erations,)75 802 y(y)o(ou)19 b(should)g(group)f(them)h(together)g(in)o
-(to)f(one)h(op)q(eration.)30 b(This)19 b(is)f(done)i(with)e
-Fr(rl_begin_undo_)75 857 y(group\(\))c Fs(and)i Fr
-(rl_end_undo_group\(\))p Fs(.)137 929 y(The)g(t)o(yp)q(es)f(of)g(ev)o
-(en)o(ts)g(that)f(can)h(b)q(e)h(undone)g(are:)195 991
-y Fe(enum)i(undo_code)e({)j(UNDO_DELETE)o(,)d(UNDO_INSERT)o(,)g
-(UNDO_BEGIN,)g(UNDO_END)g(};)137 1064 y Fs(Notice)f(that)f
-Fr(UNDO_DELETE)g Fs(means)h(to)g(insert)f(some)h(text,)f(and)i
-Fr(UNDO_INSERT)d Fs(means)i(to)g(delete)75 1118 y(some)e(text.)19
-b(That)14 b(is,)f(the)h(undo)g(co)q(de)g(tells)f(what)g(to)h(undo,)g
-(not)f(ho)o(w)g(to)g(undo)i(it.)j Fr(UNDO_BEGIN)13 b
-Fs(and)75 1173 y Fr(UNDO_END)h Fs(are)h(tags)f(added)i(b)o(y)f
-Fr(rl_begin_undo_group\(\))d Fs(and)k Fr(rl_end_undo_group\(\))p
-Fs(.)1675 1276 y([F)l(unction])-1801 b Fg(int)27 b(rl_begin_undo_group)
-e Ff(\()p Fi(v)o(oid)p Ff(\))195 1331 y Fs(Begins)15
-b(sa)o(ving)g(undo)h(information)d(in)j(a)f(group)g(construct.)20
-b(The)c(undo)g(information)e(usually)195 1386 y(comes)21
-b(from)f(calls)g(to)g Fr(rl_insert_text\(\))e Fs(and)j
-Fr(rl_delete_text\(\))p Fs(,)f(but)h(could)f(b)q(e)i(the)195
-1441 y(result)15 b(of)f(calls)h(to)f Fr(rl_add_undo\(\))p
-Fs(.)1675 1544 y([F)l(unction])-1801 b Fg(int)27 b(rl_end_undo_group)e
-Ff(\()p Fi(v)o(oid)p Ff(\))195 1598 y Fs(Closes)14 b(the)g(curren)o(t)h
-(undo)g(group)f(started)g(with)f Fr(rl_begin_undo_group)g(\(\))p
-Fs(.)19 b(There)c(should)195 1653 y(b)q(e)h(one)f(call)g(to)f
-Fr(rl_end_undo_group\(\))f Fs(for)h(eac)o(h)h(call)g(to)f
-Fr(rl_begin_undo_group\(\))p Fs(.)1675 1756 y([F)l(unction])-1801
-b Fg(void)27 b(rl_add_undo)d Ff(\()p Fi(en)o(um)15 b(undo)p
-757 1756 V 21 w(co)q(de)h(what,)e(in)o(t)g(start,)g(in)o(t)g(end,)i(c)o
-(har)f(*text)p Ff(\))195 1811 y Fs(Remem)o(b)q(er)j(ho)o(w)e(to)h(undo)
-g(an)g(ev)o(en)o(t)g(\(according)f(to)h Fi(what)q Fs(\).)24
-b(The)17 b(a\013ected)g(text)f(runs)i(from)195 1866 y
-Fi(start)d Fs(to)g Fi(end)p Fs(,)g(and)g(encompasses)h
-Fi(text)p Fs(.)1675 1969 y([F)l(unction])-1801 b Fg(void)27
-b(rl_free_undo_list)e Ff(\()p Fi(v)o(oid)p Ff(\))195
-2023 y Fs(F)l(ree)15 b(the)h(existing)e(undo)h(list.)1675
-2126 y([F)l(unction])-1801 b Fg(int)27 b(rl_do_undo)d
-Ff(\()p Fi(v)o(oid)p Ff(\))195 2181 y Fs(Undo)12 b(the)f(\014rst)g
-(thing)g(on)h(the)f(undo)h(list.)17 b(Returns)12 b Fr(0)g
-Fs(if)f(there)g(w)o(as)g(nothing)g(to)f(undo,)j(non-zero)195
-2236 y(if)i(something)f(w)o(as)g(undone.)137 2339 y(Finally)l(,)g(if)h
-(y)o(ou)g(neither)h(insert)f(nor)g(delete)h(text,)f(but)g(directly)g
-(mo)q(dify)g(the)h(existing)e(text)i(\(e.g.,)75 2394
-y(c)o(hange)j(its)g(case\),)h(call)e Fr(rl_modifying\(\))g
-Fs(once,)i(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)g(the)g(text.)32
-b(Y)l(ou)20 b(m)o(ust)75 2449 y(supply)15 b(the)h(indices)f(of)g(the)g
-(text)g(range)g(that)f(y)o(ou)h(are)g(going)f(to)h(mo)q(dify)l(.)1675
-2552 y([F)l(unction])-1801 b Fg(int)27 b(rl_modifying)d
-Ff(\()p Fi(in)o(t)14 b(start,)g(in)o(t)g(end)p Ff(\))195
-2606 y Fs(T)l(ell)20 b(Readline)g(to)f(sa)o(v)o(e)h(the)g(text)g(b)q
-(et)o(w)o(een)g Fi(start)g Fs(and)g Fi(end)j Fs(as)c(a)h(single)f(undo)
-i(unit.)34 b(It)20 b(is)195 2661 y(assumed)15 b(that)g(y)o(ou)g(will)f
-(subsequen)o(tly)h(mo)q(dify)g(that)f(text.)p eop end
-%%Page: 36 40
-TeXDict begin 36 39 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(36)75 149 y Fh(2.4.6)30
-b(Redispla)n(y)1675 254 y Fs([F)l(unction])-1801 b Fg(void)27
-b(rl_redisplay)d Ff(\()p Fi(v)o(oid)p Ff(\))195 309 y
-Fs(Change)19 b(what's)f(displa)o(y)o(ed)g(on)h(the)g(screen)g(to)f
-(re\015ect)i(the)f(curren)o(t)f(con)o(ten)o(ts)h(of)f
-Fr(rl_line_)195 363 y(buffer)p Fs(.)1675 467 y([F)l(unction])-1801
-b Fg(int)27 b(rl_forced_update_display)f Ff(\()p Fi(v)o(oid)p
-Ff(\))195 522 y Fs(F)l(orce)20 b(the)g(line)f(to)g(b)q(e)i(up)q(dated)f
-(and)g(redispla)o(y)o(ed,)g(whether)g(or)g(not)f(Readline)h(thinks)g
-(the)195 577 y(screen)c(displa)o(y)e(is)h(correct.)1675
-681 y([F)l(unction])-1801 b Fg(int)27 b(rl_on_new_line)d
-Ff(\()p Fi(v)o(oid)p Ff(\))195 736 y Fs(T)l(ell)14 b(the)h(up)q(date)h
-(functions)f(that)f(w)o(e)g(ha)o(v)o(e)h(mo)o(v)o(ed)f(on)o(to)g(a)h
-(new)g(\(empt)o(y\))f(line,)g(usually)h(after)195 791
-y(outputting)f(a)h(newline.)1675 895 y([F)l(unction])-1801
-b Fg(int)27 b(rl_on_new_line_with_prompt)f Ff(\()p Fi(v)o(oid)p
-Ff(\))195 950 y Fs(T)l(ell)11 b(the)i(up)q(date)f(functions)g(that)f(w)
-o(e)h(ha)o(v)o(e)g(mo)o(v)o(ed)f(on)o(to)g(a)h(new)g(line,)g(with)g
-Fi(rl)p 1554 950 14 2 v 19 w(prompt)h Fs(already)195
-1004 y(displa)o(y)o(ed.)19 b(This)14 b(could)g(b)q(e)h(used)g(b)o(y)f
-(applications)f(that)h(w)o(an)o(t)f(to)h(output)g(the)g(prompt)g
-(string)195 1059 y(themselv)o(es,)f(but)h(still)e(need)j(Readline)f(to)
-f(kno)o(w)g(the)h(prompt)f(string)g(length)g(for)g(redispla)o(y)l(.)19
-b(It)195 1114 y(should)c(b)q(e)h(used)g(after)e(setting)h
-Fi(rl)p 796 1114 V 19 w(already)p 961 1114 V 19 w(prompted)p
-Fs(.)1675 1218 y([F)l(unction])-1801 b Fg(int)27 b(rl_reset_line_state)
-e Ff(\()p Fi(v)o(oid)p Ff(\))195 1273 y Fs(Reset)18 b(the)f(displa)o(y)
-g(state)f(to)h(a)g(clean)g(state)g(and)g(redispla)o(y)g(the)g(curren)o
-(t)g(line)g(starting)f(on)h(a)195 1328 y(new)e(line.)1675
-1432 y([F)l(unction])-1801 b Fg(int)27 b(rl_crlf)c Ff(\()p
-Fi(v)o(oid)p Ff(\))195 1487 y Fs(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g
-(the)g(start)f(of)h(the)g(next)g(screen)h(line.)1675
-1591 y([F)l(unction])-1801 b Fg(int)27 b(rl_show_char)d
-Ff(\()p Fi(in)o(t)14 b(c)p Ff(\))195 1645 y Fs(Displa)o(y)h(c)o
-(haracter)g Fi(c)20 b Fs(on)c Fr(rl_outstream)p Fs(.)21
-b(If)c(Readline)f(has)g(not)g(b)q(een)i(set)e(to)f(displa)o(y)h(meta)
-195 1700 y(c)o(haracters)c(directly)l(,)h(this)f(will)g(con)o(v)o(ert)g
-(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)
-195 1755 y(This)i(is)f(in)o(tended)i(for)f(use)g(b)o(y)g(applications)f
-(whic)o(h)h(wish)g(to)g(do)g(their)f(o)o(wn)h(redispla)o(y)l(.)1675
-1859 y([F)l(unction])-1801 b Fg(int)27 b(rl_message)d
-Ff(\()p Fi(const)14 b(c)o(har)h(*,)j(.)10 b(.)h(.)5 b
-Ff(\))195 1914 y Fs(The)11 b(argumen)o(ts)e(are)h(a)g(format)f(string)g
-(as)h(w)o(ould)g(b)q(e)h(supplied)g(to)e Fr(printf)p
-Fs(,)h(p)q(ossibly)g(con)o(taining)195 1969 y(con)o(v)o(ersion)21
-b(sp)q(eci\014cations)h(suc)o(h)h(as)e(`)p Fr(\045d)p
-Fs(',)i(and)f(an)o(y)g(additional)e(argumen)o(ts)h(necessary)i(to)195
-2023 y(satisfy)c(the)i(con)o(v)o(ersion)f(sp)q(eci\014cations.)36
-b(The)21 b(resulting)f(string)f(is)i(displa)o(y)o(ed)f(in)g(the)h
-Fi(ec)o(ho)195 2078 y(area)p Fs(.)30 b(The)19 b(ec)o(ho)g(area)f(is)g
-(also)g(used)h(to)f(displa)o(y)g(n)o(umeric)h(argumen)o(ts)f(and)h
-(searc)o(h)f(strings.)195 2133 y(Y)l(ou)f(should)g(call)e
-Fr(rl_save_prompt)g Fs(to)h(sa)o(v)o(e)g(the)h(prompt)f(information)f
-(b)q(efore)i(calling)f(this)195 2188 y(function.)1675
-2292 y([F)l(unction])-1801 b Fg(int)27 b(rl_clear_message)e
-Ff(\()p Fi(v)o(oid)p Ff(\))195 2347 y Fs(Clear)14 b(the)g(message)g(in)
-h(the)f(ec)o(ho)h(area.)k(If)14 b(the)h(prompt)f(w)o(as)g(sa)o(v)o(ed)g
-(with)f(a)i(call)e(to)h Fr(rl_save_)195 2402 y(prompt)19
-b Fs(b)q(efore)h(the)g(last)e(call)h(to)g Fr(rl_message)p
-Fs(,)g(call)g Fr(rl_restore_prompt)e Fs(b)q(efore)j(calling)195
-2456 y(this)15 b(function.)1675 2560 y([F)l(unction])-1801
-b Fg(void)27 b(rl_save_prompt)e Ff(\()p Fi(v)o(oid)p
-Ff(\))195 2615 y Fs(Sa)o(v)o(e)c(the)h(lo)q(cal)e(Readline)i(prompt)f
-(displa)o(y)g(state)g(in)g(preparation)f(for)h(displa)o(ying)g(a)g(new)
-195 2670 y(message)15 b(in)g(the)g(message)g(area)f(with)h
-Fr(rl_message\(\))p Fs(.)p eop end
-%%Page: 37 41
-TeXDict begin 37 40 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(37)1675 149 y([F)l(unction])-1801
-b Fg(void)27 b(rl_restore_prompt)e Ff(\()p Fi(v)o(oid)p
-Ff(\))195 204 y Fs(Restore)c(the)h(lo)q(cal)e(Readline)i(prompt)f
-(displa)o(y)f(state)h(sa)o(v)o(ed)g(b)o(y)g(the)g(most)g(recen)o(t)g
-(call)g(to)195 259 y Fr(rl_save_prompt)p Fs(.)34 b(if)20
-b Fr(rl_save_prompt)f Fs(w)o(as)h(called)g(to)g(sa)o(v)o(e)g(the)g
-(prompt)h(b)q(efore)g(a)f(call)195 314 y(to)e Fr(rl_message)p
-Fs(,)f(this)h(function)g(should)h(b)q(e)g(called)f(b)q(efore)g(the)h
-(corresp)q(onding)f(call)g(to)f Fr(rl_)195 369 y(clear_message)p
-Fs(.)1675 459 y([F)l(unction])-1801 b Fg(int)27 b(rl_expand_prompt)e
-Ff(\()p Fi(c)o(har)14 b(*prompt)p Ff(\))195 514 y Fs(Expand)22
-b(an)o(y)f(sp)q(ecial)g(c)o(haracter)g(sequences)h(in)f
-Fi(prompt)h Fs(and)g(set)f(up)h(the)f(lo)q(cal)g(Readline)195
-568 y(prompt)c(redispla)o(y)g(v)m(ariables.)28 b(This)17
-b(function)h(is)f(called)h(b)o(y)g Fr(readline\(\))p
-Fs(.)26 b(It)18 b(ma)o(y)f(also)g(b)q(e)195 623 y(called)10
-b(to)g(expand)h(the)g(primary)f(prompt)g(if)g(the)g Fr
-(rl_on_new_line_with_prompt\(\))d Fs(function)195 678
-y(or)12 b Fr(rl_already_prompted)e Fs(v)m(ariable)i(is)h(used.)19
-b(It)13 b(returns)g(the)f(n)o(um)o(b)q(er)i(of)e(visible)g(c)o
-(haracters)195 733 y(on)17 b(the)g(last)f(line)g(of)h(the)g(\(p)q
-(ossibly)f(m)o(ulti-line\))f(prompt.)24 b(Applications)16
-b(ma)o(y)g(indicate)h(that)195 788 y(the)d(prompt)f(con)o(tains)h(c)o
-(haracters)f(that)g(tak)o(e)g(up)h(no)g(ph)o(ysical)g(screen)g(space)g
-(when)h(displa)o(y)o(ed)195 842 y(b)o(y)20 b(brac)o(k)o(eting)g(a)g
-(sequence)i(of)e(suc)o(h)g(c)o(haracters)g(with)g(the)h(sp)q(ecial)f
-(mark)o(ers)f Fr(RL_PROMPT_)195 897 y(START_IGNORE)14
-b Fs(and)j Fr(RL_PROMPT_END_IGNORE)c Fs(\(declared)j(in)g
-Fr(readline.h)p Fs(\).)21 b(This)16 b(ma)o(y)f(b)q(e)195
-952 y(used)h(to)e(em)o(b)q(ed)i(terminal-sp)q(eci\014c)f(escap)q(e)h
-(sequences)h(in)e(prompts.)1675 1042 y([F)l(unction])-1801
-b Fg(int)27 b(rl_set_prompt)d Ff(\()p Fi(const)15 b(c)o(har)g(*prompt)p
-Ff(\))195 1097 y Fs(Mak)o(e)e(Readline)h(use)f Fi(prompt)h
-Fs(for)f(subsequen)o(t)h(redispla)o(y)l(.)19 b(This)13
-b(calls)f Fr(rl_expand_prompt\(\))195 1152 y Fs(to)j(expand)g(the)h
-(prompt)e(and)i(sets)f Fr(rl_prompt)f Fs(to)g(the)h(result.)75
-1250 y Fh(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1675
-1347 y Fs([F)l(unction])-1801 b Fg(int)27 b(rl_insert_text)d
-Ff(\()p Fi(const)15 b(c)o(har)g(*text)p Ff(\))195 1402
-y Fs(Insert)h Fi(text)g Fs(in)o(to)f(the)h(line)f(at)h(the)g(curren)o
-(t)f(cursor)h(p)q(osition.)k(Returns)d(the)f(n)o(um)o(b)q(er)g(of)f(c)o
-(har-)195 1457 y(acters)g(inserted.)1675 1547 y([F)l(unction])-1801
-b Fg(int)27 b(rl_delete_text)d Ff(\()p Fi(in)o(t)15 b(start,)e(in)o(t)i
-(end)p Ff(\))195 1601 y Fs(Delete)j(the)h(text)g(b)q(et)o(w)o(een)g
-Fi(start)g Fs(and)g Fi(end)i Fs(in)e(the)g(curren)o(t)f(line.)31
-b(Returns)19 b(the)g(n)o(um)o(b)q(er)g(of)195 1656 y(c)o(haracters)14
-b(deleted.)1675 1746 y([F)l(unction])-1801 b Fg(char)27
-b(*)f(rl_copy_text)f Ff(\()p Fi(in)o(t)14 b(start,)f(in)o(t)i(end)p
-Ff(\))195 1801 y Fs(Return)h(a)f(cop)o(y)g(of)g(the)g(text)f(b)q(et)o
-(w)o(een)i Fi(start)f Fs(and)g Fi(end)j Fs(in)d(the)g(curren)o(t)g
-(line.)1675 1891 y([F)l(unction])-1801 b Fg(int)27 b(rl_kill_text)d
-Ff(\()p Fi(in)o(t)14 b(start,)g(in)o(t)g(end)p Ff(\))195
-1946 y Fs(Cop)o(y)j(the)g(text)f(b)q(et)o(w)o(een)i Fi(start)f
-Fs(and)g Fi(end)i Fs(in)e(the)g(curren)o(t)g(line)g(to)g(the)g(kill)f
-(ring,)g(app)q(ending)195 2001 y(or)g(prep)q(ending)j(to)d(the)h(last)f
-(kill)g(if)g(the)h(last)f(command)h(w)o(as)f(a)h(kill)f(command.)25
-b(The)17 b(text)f(is)195 2056 y(deleted.)25 b(If)17 b
-Fi(start)g Fs(is)f(less)g(than)h Fi(end)p Fs(,)g(the)g(text)g(is)f(app)
-q(ended,)i(otherwise)e(prep)q(ended.)27 b(If)17 b(the)195
-2111 y(last)d(command)h(w)o(as)g(not)f(a)h(kill,)f(a)h(new)g(kill)f
-(ring)h(slot)f(is)h(used.)1675 2201 y([F)l(unction])-1801
-b Fg(int)27 b(rl_push_macro_input)e Ff(\()p Fi(c)o(har)15
-b(*macro)p Ff(\))195 2255 y Fs(Cause)f Fi(macro)i Fs(to)d(b)q(e)i
-(inserted)f(in)o(to)f(the)h(line,)g(as)g(if)f(it)h(had)g(b)q(een)h(in)o
-(v)o(ok)o(ed)f(b)o(y)g(a)g(k)o(ey)g(b)q(ound)h(to)195
-2310 y(a)g(macro.)k(Not)c(esp)q(ecially)f(useful;)h(use)h
-Fr(rl_insert_text\(\))d Fs(instead.)75 2409 y Fh(2.4.8)30
-b(Character)21 b(Input)1675 2506 y Fs([F)l(unction])-1801
-b Fg(int)27 b(rl_read_key)d Ff(\()p Fi(v)o(oid)p Ff(\))195
-2560 y Fs(Return)15 b(the)g(next)g(c)o(haracter)f(a)o(v)m(ailable)f
-(from)h(Readline's)h(curren)o(t)g(input)f(stream.)19
-b(This)c(han-)195 2615 y(dles)e(input)g(inserted)h(in)o(to)e(the)h
-(input)g(stream)g(via)f Fi(rl)p 1113 2615 14 2 v 20 w(p)q(ending)p
-1290 2615 V 21 w(input)i Fs(\(see)f(Section)g(2.3)g([Read-)195
-2670 y(line)19 b(V)l(ariables],)g(page)h(26\))f(and)h
-Fr(rl_stuff_char\(\))p Fs(,)e(macros,)h(and)h(c)o(haracters)f(read)h
-(from)p eop end
-%%Page: 38 42
-TeXDict begin 38 41 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(38)195 149 y(the)17 b(k)o(eyb)q(oard.)25
-b(While)17 b(w)o(aiting)e(for)h(input,)i(this)e(function)h(will)f(call)
-g(an)o(y)g(function)h(assigned)195 204 y(to)e(the)g Fr(rl_event_hook)e
-Fs(v)m(ariable.)1675 292 y([F)l(unction])-1801 b Fg(int)27
-b(rl_getc)c Ff(\()p Fi(FILE)16 b(*stream)p Ff(\))195
-347 y Fs(Return)11 b(the)g(next)g(c)o(haracter)f(a)o(v)m(ailable)f
-(from)h Fi(stream)p Fs(,)g(whic)o(h)h(is)f(assumed)g(to)g(b)q(e)i(the)e
-(k)o(eyb)q(oard.)1675 435 y([F)l(unction])-1801 b Fg(int)27
-b(rl_stuff_char)d Ff(\()p Fi(in)o(t)14 b(c)p Ff(\))195
-490 y Fs(Insert)j Fi(c)i Fs(in)o(to)c(the)i(Readline)g(input)f(stream.)
-23 b(It)16 b(will)f(b)q(e)i Fr(")p Fs(read)p Fr(")g Fs(b)q(efore)f
-(Readline)h(attempts)195 545 y(to)c(read)g(c)o(haracters)g(from)f(the)i
-(terminal)e(with)h Fr(rl_read_key\(\))p Fs(.)k(Up)d(to)f(512)f(c)o
-(haracters)h(ma)o(y)195 600 y(b)q(e)j(pushed)g(bac)o(k.)k
-Fr(rl_stuff_char)14 b Fs(returns)h(1)g(if)g(the)g(c)o(haracter)g(w)o
-(as)f(successfully)h(inserted;)195 655 y(0)g(otherwise.)1675
-743 y([F)l(unction])-1801 b Fg(int)27 b(rl_execute_next)e
-Ff(\()p Fi(in)o(t)14 b(c)p Ff(\))195 798 y Fs(Mak)o(e)j
-Fi(c)k Fs(b)q(e)d(the)g(next)g(command)g(to)f(b)q(e)i(executed)f(when)h
-Fr(rl_read_key\(\))d Fs(is)h(called.)27 b(This)195 852
-y(sets)15 b Fi(rl)p 318 852 14 2 v 19 w(p)q(ending)p
-494 852 V 21 w(input)p Fs(.)1675 941 y([F)l(unction])-1801
-b Fg(int)27 b(rl_clear_pending_input)f Ff(\()p Fi(v)o(oid)p
-Ff(\))195 995 y Fs(Unset)21 b Fi(rl)p 365 995 V 19 w(p)q(ending)p
-541 995 V 21 w(input)p Fs(,)h(e\013ectiv)o(ely)e(negating)g(the)h
-(e\013ect)g(of)f(an)o(y)h(previous)f(call)g(to)g Fr(rl_)195
-1050 y(execute_next\(\))p Fs(.)29 b(This)18 b(w)o(orks)g(only)g(if)h
-(the)f(p)q(ending)i(input)f(has)g(not)f(already)g(b)q(een)i(read)195
-1105 y(with)15 b Fr(rl_read_key\(\))p Fs(.)1675 1193
-y([F)l(unction])-1801 b Fg(int)27 b(rl_set_keyboard_input_time)q(out)f
-Ff(\()p Fi(in)o(t)14 b(u)p Ff(\))195 1248 y Fs(While)19
-b(w)o(aiting)g(for)g(k)o(eyb)q(oard)h(input)g(in)g Fr(rl_read_key\(\))p
-Fs(,)f(Readline)h(will)f(w)o(ait)g(for)g Fi(u)h Fs(mi-)195
-1303 y(croseconds)c(for)e(input)i(b)q(efore)g(calling)e(an)o(y)h
-(function)g(assigned)g(to)g Fr(rl_event_hook)p Fs(.)k
-Fi(u)d Fs(m)o(ust)195 1357 y(b)q(e)h(greater)e(than)g(or)h(equal)g(to)f
-(zero)h(\(a)f(zero-length)h(timeout)f(is)g(equiv)m(alen)o(t)h(to)f(a)h
-(p)q(oll\).)21 b(The)195 1412 y(default)15 b(w)o(aiting)e(p)q(erio)q(d)
-j(is)e(one-ten)o(th)i(of)e(a)h(second.)21 b(Returns)15
-b(the)h(old)e(timeout)h(v)m(alue.)75 1509 y Fh(2.4.9)30
-b(T)-5 b(erminal)20 b(Managemen)n(t)1675 1605 y Fs([F)l(unction])-1801
-b Fg(void)27 b(rl_prep_terminal)e Ff(\()p Fi(in)o(t)14
-b(meta)p 836 1605 V 20 w(\015ag)p Ff(\))195 1660 y Fs(Mo)q(dify)21
-b(the)g(terminal)f(settings)g(for)h(Readline's)g(use,)i(so)d
-Fr(readline\(\))g Fs(can)i(read)f(a)g(single)195 1715
-y(c)o(haracter)15 b(at)g(a)g(time)f(from)h(the)h(k)o(eyb)q(oard.)k(The)
-c Fi(meta)p 1189 1715 V 19 w(\015ag)j Fs(argumen)o(t)c(should)h(b)q(e)g
-(non-zero)195 1769 y(if)f(Readline)g(should)g(read)g(eigh)o(t-bit)g
-(input.)1675 1858 y([F)l(unction])-1801 b Fg(void)27
-b(rl_deprep_terminal)e Ff(\()p Fi(v)o(oid)p Ff(\))195
-1912 y Fs(Undo)16 b(the)g(e\013ects)f(of)h Fr(rl_prep_terminal\(\))p
-Fs(,)d(lea)o(ving)i(the)g(terminal)g(in)h(the)f(state)g(in)h(whic)o(h)
-195 1967 y(it)e(w)o(as)h(b)q(efore)g(the)h(most)e(recen)o(t)h(call)g
-(to)f Fr(rl_prep_terminal\(\))p Fs(.)1675 2055 y([F)l(unction])-1801
-b Fg(void)27 b(rl_tty_set_default_bindin)q(gs)f Ff(\()p
-Fi(Keymap)15 b(kmap)p Ff(\))195 2110 y Fs(Read)k(the)g(op)q(erating)e
-(system's)h(terminal)f(editing)h(c)o(haracters)g(\(as)f(w)o(ould)h(b)q
-(e)h(displa)o(y)o(ed)f(b)o(y)195 2165 y Fr(stty)p Fs(\))c(to)h(their)g
-(Readline)g(equiv)m(alen)o(ts.)20 b(The)15 b(bindings)g(are)g(p)q
-(erformed)g(in)g Fi(kmap)p Fs(.)1675 2253 y([F)l(unction])-1801
-b Fg(void)27 b(rl_tty_unset_default_bind)q(ings)f Ff(\()p
-Fi(Keymap)15 b(kmap)p Ff(\))195 2308 y Fs(Reset)h(the)g(bindings)g
-(manipulated)f(b)o(y)h Fr(rl_tty_set_default_bindings)c
-Fs(so)k(that)f(the)h(ter-)195 2363 y(minal)j(editing)g(c)o(haracters)g
-(are)h(b)q(ound)g(to)f Fr(rl_insert)p Fs(.)33 b(The)20
-b(bindings)g(are)f(p)q(erformed)h(in)195 2417 y Fi(kmap)p
-Fs(.)1675 2506 y([F)l(unction])-1801 b Fg(int)27 b(rl_reset_terminal)e
-Ff(\()p Fi(const)15 b(c)o(har)f(*terminal)p 1077 2506
-V 19 w(name)p Ff(\))195 2560 y Fs(Reinitialize)d(Readline's)g(idea)h
-(of)g(the)g(terminal)e(settings)h(using)h Fi(terminal)p
-1490 2560 V 19 w(name)i Fs(as)e(the)g(termi-)195 2615
-y(nal)j(t)o(yp)q(e)h(\(e.g.,)f Fr(vt100)p Fs(\).)21 b(If)16
-b Fi(terminal)p 878 2615 V 19 w(name)i Fs(is)e Fr(NULL)p
-Fs(,)f(the)h(v)m(alue)g(of)f(the)h Fr(TERM)g Fs(en)o(vironmen)o(t)195
-2670 y(v)m(ariable)f(is)f(used.)p eop end
-%%Page: 39 43
-TeXDict begin 39 42 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(39)75 149 y Fh(2.4.10)29
-b(Utilit)n(y)22 b(F)-5 b(unctions)1675 251 y Fs([F)l(unction])-1801
-b Fg(int)27 b(rl_save_state)d Ff(\()p Fi(struct)15 b(readline)p
-852 251 14 2 v 19 w(state)g(*sp)p Ff(\))195 306 y Fs(Sa)o(v)o(e)f(a)g
-(snapshot)g(of)f(Readline's)i(in)o(ternal)e(state)g(to)h
-Fi(sp)p Fs(.)19 b(The)c(con)o(ten)o(ts)e(of)h(the)h Fi(readline)p
-1760 306 V 19 w(state)195 361 y Fs(structure)f(are)h(do)q(cumen)o(ted)g
-(in)g Fr(readline.h)p Fs(.)j(The)d(caller)e(is)i(resp)q(onsible)f(for)g
-(allo)q(cating)f(the)195 416 y(structure.)1675 515 y([F)l(unction])
--1801 b Fg(int)27 b(rl_restore_state)e Ff(\()p Fi(struct)14
-b(readline)p 930 515 V 20 w(state)g(*sp)p Ff(\))195 570
-y Fs(Restore)d(Readline's)g(in)o(ternal)f(state)g(to)h(that)f(stored)h
-(in)g Fi(sp)p Fs(,)g(whic)o(h)g(m)o(ust)g(ha)o(v)o(e)f(b)q(een)j(sa)o
-(v)o(ed)d(b)o(y)h(a)195 625 y(call)j(to)g Fr(rl_save_state)p
-Fs(.)j(The)e(con)o(ten)o(ts)f(of)g(the)h Fi(readline)p
-1236 625 V 19 w(state)i Fs(structure)d(are)g(do)q(cumen)o(ted)195
-680 y(in)h Fr(readline.h)p Fs(.)j(The)e(caller)e(is)h(resp)q(onsible)g
-(for)g(freeing)g(the)g(structure.)1675 779 y([F)l(unction])-1801
-b Fg(void)27 b(rl_free)d Ff(\()p Fi(v)o(oid)14 b(*mem)p
-Ff(\))195 834 y Fs(Deallo)q(cate)9 b(the)i(memory)f(p)q(oin)o(ted)h(to)
-f(b)o(y)g Fi(mem)p Fs(.)18 b Fi(mem)11 b Fs(m)o(ust)f(ha)o(v)o(e)g(b)q
-(een)i(allo)q(cated)e(b)o(y)g Fr(malloc)p Fs(.)1675 933
-y([F)l(unction])-1801 b Fg(void)27 b(rl_replace_line)e
-Ff(\()p Fi(const)14 b(c)o(har)h(*text,)f(in)o(t)h(clear)p
-1154 933 V 19 w(undo)p Ff(\))195 988 y Fs(Replace)20
-b(the)g(con)o(ten)o(ts)f(of)g Fr(rl_line_buffer)f Fs(with)h
-Fi(text)p Fs(.)33 b(The)20 b(p)q(oin)o(t)f(and)h(mark)f(are)h(pre-)195
-1043 y(serv)o(ed,)13 b(if)f(p)q(ossible.)19 b(If)13 b
-Fi(clear)p 712 1043 V 20 w(undo)i Fs(is)d(non-zero,)i(the)e(undo)i
-(list)d(asso)q(ciated)h(with)g(the)h(curren)o(t)195 1098
-y(line)i(is)g(cleared.)1675 1197 y([F)l(unction])-1801
-b Fg(void)27 b(rl_extend_line_buffer)f Ff(\()p Fi(in)o(t)14
-b(len)p Ff(\))195 1252 y Fs(Ensure)h(that)g Fr(rl_line_buffer)e
-Fs(has)i(enough)g(space)h(to)e(hold)h Fi(len)g Fs(c)o(haracters,)f(p)q
-(ossibly)g(real-)195 1307 y(lo)q(cating)g(it)g(if)h(necessary)l(.)1675
-1406 y([F)l(unction])-1801 b Fg(int)27 b(rl_initialize)d
-Ff(\()p Fi(v)o(oid)p Ff(\))195 1461 y Fs(Initialize)17
-b(or)h(re-initialize)f(Readline's)h(in)o(ternal)g(state.)28
-b(It's)18 b(not)g(strictly)f(necessary)i(to)f(call)195
-1516 y(this;)c Fr(readline\(\))g Fs(calls)g(it)h(b)q(efore)g(reading)g
-(an)o(y)g(input.)1675 1615 y([F)l(unction])-1801 b Fg(int)27
-b(rl_ding)c Ff(\()p Fi(v)o(oid)p Ff(\))195 1670 y Fs(Ring)15
-b(the)g(terminal)f(b)q(ell,)h(ob)q(eying)g(the)h(setting)e(of)h
-Fr(bell-style)p Fs(.)1675 1769 y([F)l(unction])-1801
-b Fg(int)27 b(rl_alphabetic)d Ff(\()p Fi(in)o(t)14 b(c)p
-Ff(\))195 1824 y Fs(Return)i(1)f(if)f Fi(c)k Fs(is)d(an)g(alphab)q
-(etic)g(c)o(haracter.)1675 1923 y([F)l(unction])-1801
-b Fg(void)27 b(rl_display_match_list)f Ff(\()p Fi(c)o(har)14
-b(**matc)o(hes,)g(in)o(t)h(len,)f(in)o(t)h(max)p Ff(\))195
-1978 y Fs(A)i(con)o(v)o(enience)h(function)f(for)g(displa)o(ying)f(a)h
-(list)f(of)g(strings)g(in)i(columnar)e(format)g(on)h(Read-)195
-2033 y(line's)f(output)h(stream.)23 b Fr(matches)16 b
-Fs(is)g(the)h(list)f(of)g(strings,)g(in)g(argv)g(format,)g(suc)o(h)h
-(as)f(a)h(list)e(of)195 2088 y(completion)c(matc)o(hes.)19
-b Fr(len)11 b Fs(is)h(the)g(n)o(um)o(b)q(er)h(of)e(strings)g(in)h
-Fr(matches)p Fs(,)g(and)g Fr(max)g Fs(is)f(the)i(length)e(of)195
-2142 y(the)i(longest)f(string)g(in)h Fr(matches)p Fs(.)19
-b(This)12 b(function)h(uses)g(the)h(setting)e(of)g Fr
-(print-completions-)195 2197 y(horizontally)k Fs(to)i(select)g(ho)o(w)f
-(the)i(matc)o(hes)e(are)h(displa)o(y)o(ed)f(\(see)i(Section)f(1.3.1)e
-([Readline)195 2252 y(Init)f(File)f(Syn)o(tax],)g(page)h(4\).)k(When)d
-(displa)o(ying)e(completions,)f(this)i(function)g(sets)g(the)g(n)o(um-)
-195 2307 y(b)q(er)d(of)g(columns)f(used)i(for)e(displa)o(y)g(to)g(the)h
-(v)m(alue)g(of)f Fr(completion-display-width)p Fs(,)e(the)j(v)m(alue)
-195 2362 y(of)j(the)g(en)o(vironmen)o(t)g(v)m(ariable)f
-Fr(COLUMNS)p Fs(,)g(or)h(the)g(screen)h(width,)e(in)h(that)g(order.)137
-2461 y(The)i(follo)o(wing)c(are)j(implemen)o(ted)g(as)g(macros,)f
-(de\014ned)i(in)f Fr(chardefs.h)p Fs(.)21 b(Applications)15
-b(should)75 2516 y(refrain)f(from)h(using)g(them.)1675
-2615 y([F)l(unction])-1801 b Fg(int)27 b(_rl_uppercase_p)e
-Ff(\()p Fi(in)o(t)14 b(c)p Ff(\))195 2670 y Fs(Return)i(1)f(if)f
-Fi(c)k Fs(is)d(an)g(upp)q(ercase)i(alphab)q(etic)d(c)o(haracter.)p
-eop end
-%%Page: 40 44
-TeXDict begin 40 43 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(40)1675 149 y([F)l(unction])-1801
-b Fg(int)27 b(_rl_lowercase_p)e Ff(\()p Fi(in)o(t)14
-b(c)p Ff(\))195 204 y Fs(Return)i(1)f(if)f Fi(c)k Fs(is)d(a)g(lo)o(w)o
-(ercase)f(alphab)q(etic)h(c)o(haracter.)1675 285 y([F)l(unction])-1801
-b Fg(int)27 b(_rl_digit_p)d Ff(\()p Fi(in)o(t)14 b(c)p
-Ff(\))195 339 y Fs(Return)i(1)f(if)f Fi(c)k Fs(is)d(a)g(n)o(umeric)g(c)
-o(haracter.)1675 420 y([F)l(unction])-1801 b Fg(int)27
-b(_rl_to_upper)d Ff(\()p Fi(in)o(t)14 b(c)p Ff(\))195
-475 y Fs(If)e Fi(c)j Fs(is)c(a)h(lo)o(w)o(ercase)e(alphab)q(etic)i(c)o
-(haracter,)f(return)h(the)g(corresp)q(onding)g(upp)q(ercase)h(c)o
-(haracter.)1675 555 y([F)l(unction])-1801 b Fg(int)27
-b(_rl_to_lower)d Ff(\()p Fi(in)o(t)14 b(c)p Ff(\))195
-610 y Fs(If)h Fi(c)i Fs(is)d(an)g(upp)q(ercase)i(alphab)q(etic)e(c)o
-(haracter,)g(return)g(the)h(corresp)q(onding)f(lo)o(w)o(ercase)f(c)o
-(harac-)195 665 y(ter.)1675 745 y([F)l(unction])-1801
-b Fg(int)27 b(_rl_digit_value)e Ff(\()p Fi(in)o(t)14
-b(c)p Ff(\))195 800 y Fs(If)h Fi(c)k Fs(is)14 b(a)h(n)o(um)o(b)q(er,)g
-(return)g(the)h(v)m(alue)f(it)g(represen)o(ts.)75 892
-y Fh(2.4.11)29 b(Miscellaneous)22 b(F)-5 b(unctions)1675
-982 y Fs([F)l(unction])-1801 b Fg(int)27 b(rl_macro_bind)d
-Ff(\()p Fi(const)15 b(c)o(har)g(*k)o(eyseq,)f(const)h(c)o(har)g
-(*macro,)f(Keymap)283 1037 y(map)p Ff(\))195 1092 y Fs(Bind)e(the)g(k)o
-(ey)f(sequence)i Fi(k)o(eyseq)g Fs(to)e(in)o(v)o(ok)o(e)f(the)i(macro)f
-Fi(macro)p Fs(.)18 b(The)12 b(binding)f(is)g(p)q(erformed)h(in)195
-1147 y Fi(map)p Fs(.)19 b(When)14 b Fi(k)o(eyseq)h Fs(is)e(in)o(v)o(ok)
-o(ed,)g(the)h Fi(macro)i Fs(will)c(b)q(e)i(inserted)g(in)o(to)f(the)h
-(line.)19 b(This)13 b(function)195 1201 y(is)i(deprecated;)g(use)h
-Fr(rl_generic_bind\(\))d Fs(instead.)1675 1282 y([F)l(unction])-1801
-b Fg(void)27 b(rl_macro_dumper)e Ff(\()p Fi(in)o(t)14
-b(readable)p Ff(\))195 1336 y Fs(Prin)o(t)f(the)g(k)o(ey)h(sequences)g
-(b)q(ound)h(to)e(macros)g(and)g(their)g(v)m(alues,)h(using)f(the)h
-(curren)o(t)g(k)o(eymap,)195 1391 y(to)h Fr(rl_outstream)p
-Fs(.)k(If)d Fi(readable)i Fs(is)d(non-zero,)h(the)g(list)e(is)h
-(formatted)g(in)g(suc)o(h)h(a)f(w)o(a)o(y)g(that)g(it)195
-1446 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g Fr(inputrc)f
-Fs(\014le)h(and)h(re-read.)1675 1526 y([F)l(unction])-1801
-b Fg(int)27 b(rl_variable_bind)e Ff(\()p Fi(const)14
-b(c)o(har)h(*v)m(ariable,)f(const)h(c)o(har)g(*v)m(alue)p
-Ff(\))195 1581 y Fs(Mak)o(e)f(the)g(Readline)h(v)m(ariable)f
-Fi(v)m(ariable)i Fs(ha)o(v)o(e)f Fi(v)m(alue)p Fs(.)k(This)c(b)q(eha)o
-(v)o(es)f(as)g(if)g(the)h(readline)f(com-)195 1636 y(mand)h(`)p
-Fr(set)g Fk(variable)f(value)p Fs(')g(had)i(b)q(een)g(executed)h(in)e
-(an)g Fr(inputrc)g Fs(\014le)g(\(see)g(Section)h(1.3.1)195
-1691 y([Readline)f(Init)g(File)g(Syn)o(tax],)f(page)h(4\).)1675
-1771 y([F)l(unction])-1801 b Fg(char)27 b(*)f(rl_variable_value)f
-Ff(\()p Fi(const)15 b(c)o(har)g(*v)m(ariable)p Ff(\))195
-1826 y Fs(Return)g(a)g(string)e(represen)o(ting)h(the)h(v)m(alue)g(of)f
-(the)h(Readline)g(v)m(ariable)f Fi(v)m(ariable)p Fs(.)19
-b(F)l(or)14 b(b)q(o)q(olean)195 1881 y(v)m(ariables,)g(this)h(string)f
-(is)h(either)g(`)p Fr(on)p Fs(')f(or)g(`)p Fr(off)p Fs('.)1675
-1961 y([F)l(unction])-1801 b Fg(void)27 b(rl_variable_dumper)e
-Ff(\()p Fi(in)o(t)14 b(readable)p Ff(\))195 2016 y Fs(Prin)o(t)f(the)i
-(readline)f(v)m(ariable)f(names)i(and)f(their)g(curren)o(t)g(v)m(alues)
-h(to)e Fr(rl_outstream)p Fs(.)18 b(If)d Fi(read-)195
-2071 y(able)k Fs(is)e(non-zero,)g(the)g(list)f(is)h(formatted)f(in)g
-(suc)o(h)i(a)e(w)o(a)o(y)g(that)h(it)f(can)h(b)q(e)h(made)f(part)f(of)h
-(an)195 2126 y Fr(inputrc)d Fs(\014le)h(and)h(re-read.)1675
-2206 y([F)l(unction])-1801 b Fg(int)27 b(rl_set_paren_blink_timeout)f
-Ff(\()p Fi(in)o(t)14 b(u)p Ff(\))195 2261 y Fs(Set)f(the)f(time)g(in)o
-(terv)m(al)g(\(in)g(microseconds\))g(that)g(Readline)h(w)o(aits)e(when)
-i(sho)o(wing)e(a)i(balancing)195 2316 y(c)o(haracter)h(when)i
-Fr(blink-matching-paren)d Fs(has)i(b)q(een)h(enabled.)1675
-2396 y([F)l(unction])-1801 b Fg(char)27 b(*)f(rl_get_termcap)f
-Ff(\()p Fi(const)15 b(c)o(har)f(*cap)p Ff(\))195 2451
-y Fs(Retriev)o(e)f(the)h(string)e(v)m(alue)i(of)f(the)h(termcap)f
-(capabilit)o(y)f Fi(cap)p Fs(.)19 b(Readline)14 b(fetc)o(hes)g(the)f
-(termcap)195 2506 y(en)o(try)j(for)h(the)f(curren)o(t)h(terminal)f
-(name)g(and)h(uses)g(those)g(capabilities)e(to)h(mo)o(v)o(e)g(around)h
-(the)195 2560 y(screen)11 b(line)f(and)h(p)q(erform)f(other)g
-(terminal-sp)q(eci\014c)h(op)q(erations,)f(lik)o(e)g(erasing)f(a)i
-(line.)18 b(Readline)195 2615 y(do)q(es)g(not)f(use)h(all)e(of)h(a)g
-(terminal's)f(capabilities,)g(and)i(this)f(function)g(will)f(return)i
-(v)m(alues)g(for)195 2670 y(only)d(those)g(capabilities)e(Readline)j
-(uses.)p eop end
-%%Page: 41 45
-TeXDict begin 41 44 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(41)1675 149 y([F)l(unction])-1801
-b Fg(void)27 b(rl_clear_history)e Ff(\()p Fi(v)o(oid)p
-Ff(\))195 204 y Fs(Clear)13 b(the)g(history)g(list)f(b)o(y)i(deleting)f
-(all)g(of)g(the)g(en)o(tries,)g(in)h(the)f(same)h(manner)f(as)g(the)h
-(History)195 259 y(library's)20 b Fr(clear_history\(\))f
-Fs(function.)38 b(This)21 b(di\013ers)g(from)g Fr(clear_history)e
-Fs(b)q(ecause)k(it)195 314 y(frees)15 b(priv)m(ate)g(data)g(Readline)g
-(sa)o(v)o(es)g(in)g(the)g(history)f(list.)75 413 y Fh(2.4.12)29
-b(Alternate)21 b(In)n(terface)75 487 y Fs(An)11 b(alternate)f(in)o
-(terface)g(is)g(a)o(v)m(ailable)g(to)g(plain)g Fr(readline\(\))p
-Fs(.)17 b(Some)11 b(applications)f(need)h(to)f(in)o(terlea)o(v)o(e)75
-541 y(k)o(eyb)q(oard)18 b(I/O)g(with)f(\014le,)h(device,)h(or)e(windo)o
-(w)g(system)g(I/O,)h(t)o(ypically)e(b)o(y)i(using)g(a)f(main)g(lo)q(op)
-h(to)75 596 y Fr(select\(\))j Fs(on)h(v)m(arious)g(\014le)g
-(descriptors.)40 b(T)l(o)22 b(accommo)q(date)g(this)g(need,)i(readline)
-e(can)g(also)f(b)q(e)75 651 y(in)o(v)o(ok)o(ed)15 b(as)g(a)g(`callbac)o
-(k')f(function)i(from)e(an)i(ev)o(en)o(t)f(lo)q(op.)21
-b(There)16 b(are)f(functions)g(a)o(v)m(ailable)g(to)f(mak)o(e)75
-706 y(this)h(easy)l(.)1675 797 y([F)l(unction])-1801
-b Fg(void)27 b(rl_callback_handler_insta)q(ll)f Ff(\()p
-Fi(const)14 b(c)o(har)h(*prompt,)283 852 y(rl)p 317 852
-14 2 v 19 w(v)o(cpfunc)p 488 852 V 21 w(t)g(*lhandler)p
-Ff(\))195 907 y Fs(Set)d(up)h(the)g(terminal)e(for)h(readline)g(I/O)h
-(and)f(displa)o(y)g(the)g(initial)f(expanded)i(v)m(alue)g(of)f
-Fi(prompt)p Fs(.)195 962 y(Sa)o(v)o(e)k(the)h(v)m(alue)f(of)g
-Fi(lhandler)j Fs(to)d(use)h(as)f(a)g(handler)h(function)f(to)g(call)f
-(when)i(a)f(complete)g(line)195 1017 y(of)h(input)h(has)g(b)q(een)h(en)
-o(tered.)28 b(The)18 b(handler)g(function)g(receiv)o(es)f(the)h(text)g
-(of)f(the)h(line)g(as)f(an)195 1071 y(argumen)o(t.)i(As)14
-b(with)f Fr(readline\(\))p Fs(,)g(the)h(handler)h(function)f(should)g
-Fr(free)f Fs(the)i(line)f(when)g(it)g(it)195 1126 y(\014nished)i(with)e
-(it.)1675 1218 y([F)l(unction])-1801 b Fg(void)27 b
-(rl_callback_read_char)f Ff(\()p Fi(v)o(oid)p Ff(\))195
-1273 y Fs(Whenev)o(er)17 b(an)g(application)e(determines)i(that)f(k)o
-(eyb)q(oard)h(input)g(is)f(a)o(v)m(ailable,)g(it)g(should)h(call)195
-1328 y Fr(rl_callback_read_char\(\))p Fs(,)8 b(whic)o(h)j(will)e(read)i
-(the)g(next)g(c)o(haracter)f(from)g(the)h(curren)o(t)g(input)195
-1382 y(source.)20 b(If)14 b(that)f(c)o(haracter)g(completes)h(the)g
-(line,)f Fr(rl_callback_read_char)e Fs(will)i(in)o(v)o(ok)o(e)g(the)195
-1437 y Fi(lhandler)23 b Fs(function)e(installed)e(b)o(y)h
-Fr(rl_callback_handler_install)d Fs(to)j(pro)q(cess)g(the)h(line.)195
-1492 y(Before)h(calling)e(the)i Fi(lhandler)i Fs(function,)f(the)f
-(terminal)e(settings)g(are)i(reset)f(to)g(the)h(v)m(alues)195
-1547 y(they)g(had)g(b)q(efore)g(calling)e Fr
-(rl_callback_handler_install)o Fs(.)37 b(If)22 b(the)f
-Fi(lhandler)k Fs(function)195 1601 y(returns,)14 b(and)g(the)g(line)g
-(handler)g(remains)f(installed,)g(the)h(terminal)f(settings)g(are)g(mo)
-q(di\014ed)i(for)195 1656 y(Readline's)g(use)h(again.)i
-Fr(EOF)d Fs(is)g(indicated)g(b)o(y)g(calling)f Fi(lhandler)k
-Fs(with)d(a)g Fr(NULL)f Fs(line.)1675 1748 y([F)l(unction])-1801
-b Fg(void)27 b(rl_callback_sigcleanup)f Ff(\()p Fi(v)o(oid)p
-Ff(\))195 1803 y Fs(Clean)12 b(up)h(an)o(y)g(in)o(ternal)e(state)h(the)
-h(callbac)o(k)f(in)o(terface)g(uses)h(to)f(main)o(tain)f(state)h(b)q
-(et)o(w)o(een)h(calls)195 1858 y(to)j(rl)p 286 1858 V
-20 w(callbac)o(k)p 466 1858 V 19 w(read)p 571 1858 V
-20 w(c)o(har)h(\(e.g.,)f(the)h(state)f(of)h(an)o(y)f(activ)o(e)h
-(incremen)o(tal)f(searc)o(hes\).)25 b(This)16 b(is)195
-1912 y(in)o(tended)g(to)g(b)q(e)g(used)h(b)o(y)f(applications)f(that)g
-(wish)h(to)f(p)q(erform)h(their)f(o)o(wn)h(signal)f(handling;)195
-1967 y(Readline's)g(in)o(ternal)f(signal)g(handler)h(calls)g(this)f
-(when)i(appropriate.)1675 2059 y([F)l(unction])-1801
-b Fg(void)27 b(rl_callback_handler_remov)q(e)e Ff(\()p
-Fi(v)o(oid)p Ff(\))195 2114 y Fs(Restore)18 b(the)g(terminal)e(to)i
-(its)f(initial)f(state)h(and)h(remo)o(v)o(e)f(the)h(line)g(handler.)28
-b(Y)l(ou)18 b(ma)o(y)f(call)195 2168 y(this)12 b(function)h(from)f
-(within)g(a)g(callbac)o(k)g(as)g(w)o(ell)g(as)g(indep)q(enden)o(tly)l
-(.)21 b(If)13 b(the)f Fi(lhandler)k Fs(installed)195
-2223 y(b)o(y)d Fr(rl_callback_handler_ins)o(tall)d Fs(do)q(es)j(not)f
-(exit)g(the)h(program,)e(either)i(this)f(function)g(or)195
-2278 y(the)k(function)f(referred)h(to)f(b)o(y)h(the)g(v)m(alue)g(of)f
-Fr(rl_deprep_term_function)d Fs(should)k(b)q(e)g(called)195
-2333 y(b)q(efore)f(the)h(program)e(exits)g(to)h(reset)g(the)g(terminal)
-f(settings.)75 2432 y Fh(2.4.13)29 b(A)21 b(Readline)g(Example)75
-2506 y Fs(Here)c(is)g(a)f(function)h(whic)o(h)g(c)o(hanges)g(lo)o(w)o
-(ercase)e(c)o(haracters)h(to)h(their)f(upp)q(ercase)i(equiv)m(alen)o
-(ts,)f(and)75 2560 y(upp)q(ercase)i(c)o(haracters)e(to)g(lo)o(w)o
-(ercase.)26 b(If)17 b(this)h(function)f(w)o(as)g(b)q(ound)i(to)e(`)p
-Fr(M-c)p Fs(',)f(then)i(t)o(yping)f(`)p Fr(M-c)p Fs(')75
-2615 y(w)o(ould)e(c)o(hange)h(the)g(case)g(of)f(the)h(c)o(haracter)f
-(under)h(p)q(oin)o(t.)21 b(T)o(yping)16 b(`)p Fr(M-1)e(0)h(M-c)p
-Fs(')g(w)o(ould)g(c)o(hange)h(the)75 2670 y(case)f(of)g(the)g(follo)o
-(wing)e(10)i(c)o(haracters,)f(lea)o(ving)g(the)h(cursor)g(on)g(the)g
-(last)g(c)o(haracter)f(c)o(hanged.)p eop end
-%%Page: 42 46
-TeXDict begin 42 45 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(42)195 149 y Fr(/*)24 b(Invert)f(the)g
-(case)g(of)h(the)f(COUNT)h(following)e(characters.)h(*/)195
-204 y(int)195 259 y(invert_case_line)f(\(count,)h(key\))314
-314 y(int)h(count,)f(key;)195 369 y({)243 423 y(register)f(int)i
-(start,)f(end,)g(i;)243 533 y(start)g(=)h(rl_point;)243
-643 y(if)f(\(rl_point)g(>=)h(rl_end\))290 697 y(return)f(\(0\);)243
-807 y(if)g(\(count)g(<)h(0\))290 862 y({)338 917 y(direction)f(=)h(-1;)
-338 971 y(count)f(=)h(-count;)290 1026 y(})243 1081 y(else)290
-1136 y(direction)f(=)h(1;)243 1245 y(/*)f(Find)h(the)f(end)h(of)f(the)h
-(range)f(to)g(modify.)g(*/)243 1300 y(end)g(=)h(start)f(+)h(\(count)f
-(*)h(direction\);)243 1410 y(/*)f(Force)g(it)h(to)g(be)f(within)g
-(range.)g(*/)243 1465 y(if)g(\(end)h(>)f(rl_end\))290
-1519 y(end)h(=)g(rl_end;)243 1574 y(else)f(if)h(\(end)f(<)h(0\))290
-1629 y(end)g(=)g(0;)243 1738 y(if)f(\(start)g(==)h(end\))290
-1793 y(return)f(\(0\);)243 1903 y(if)g(\(start)g(>)h(end\))290
-1958 y({)338 2012 y(int)g(temp)f(=)h(start;)338 2067
-y(start)f(=)h(end;)338 2122 y(end)g(=)f(temp;)290 2177
-y(})243 2286 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying)e
-(the)i(line,)314 2341 y(so)g(it)f(will)h(save)f(the)h(undo)f
-(information.)f(*/)243 2396 y(rl_modifying)g(\(start,)h(end\);)243
-2506 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))290
-2560 y({)338 2615 y(if)h(\(_rl_uppercase_p)d(\(rl_line_buffer[i]\)\))
-386 2670 y(rl_line_buffer[i])g(=)j(_rl_to_lower)e
-(\(rl_line_buffer[i]\);)p eop end
-%%Page: 43 47
-TeXDict begin 43 46 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(43)338 149 y Fr(else)23
-b(if)h(\(_rl_lowercase_p)e(\(rl_line_buffer[i]\)\))386
-204 y(rl_line_buffer[i])f(=)j(_rl_to_upper)e(\(rl_line_buffer[i]\);)290
-259 y(})243 314 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f(last)h
-(character)e(changed.)h(*/)243 369 y(rl_point)f(=)i(\(direction)f(==)g
-(1\))h(?)g(end)f(-)h(1)g(:)f(start;)243 423 y(return)g(\(0\);)195
-478 y(})75 595 y Fh(2.4.14)29 b(Alternate)21 b(In)n(terface)g(Example)
-75 668 y Fs(Here)f(is)e(a)h(complete)g(program)f(that)h(illustrates)e
-(Readline's)i(alternate)g(in)o(terface.)31 b(It)19 b(reads)g(lines)75
-723 y(from)c(the)g(terminal)g(and)g(displa)o(ys)g(them,)g(pro)o(viding)
-f(the)i(standard)f(history)f(and)i(T)l(AB)g(completion)75
-778 y(functions.)k(It)15 b(understands)h(the)f(EOF)g(c)o(haracter)f(or)
-h Fr(")p Fs(exit)p Fr(")f Fs(to)h(exit)g(the)g(program.)195
-862 y Fr(/*)24 b(Standard)e(include)h(files.)g(stdio.h)g(is)h
-(required.)e(*/)195 917 y(#include)h(<stdlib.h>)195 971
-y(#include)g(<unistd.h>)195 1081 y(/*)h(Used)f(for)g(select\(2\))g(*/)
-195 1136 y(#include)g(<sys/types.h>)195 1191 y(#include)g
-(<sys/select.h>)195 1300 y(#include)g(<stdio.h>)195 1410
-y(/*)h(Standard)e(readline)h(include)g(files.)g(*/)195
-1465 y(#include)g(<readline/readline.h>)195 1519 y(#include)g
-(<readline/history.h>)195 1629 y(static)g(void)g(cb_linehandler)f
-(\(char)h(*\);)195 1738 y(int)g(running;)195 1793 y(const)g(char)g
-(*prompt)g(=)h("rltest$)f(";)195 1903 y(/*)h(Callback)e(function)h
-(called)g(for)h(each)f(line)g(when)h(accept-line)e(executed,)h(EOF)267
-1958 y(seen,)g(or)g(EOF)h(character)e(read.)47 b(This)24
-b(sets)f(a)h(flag)f(and)h(returns;)e(it)i(could)267 2012
-y(also)f(call)g(exit\(3\).)g(*/)195 2067 y(static)g(void)195
-2122 y(cb_linehandler)f(\(char)h(*line\))195 2177 y({)243
-2232 y(/*)g(Can)h(use)f(^D)h(\(stty)f(eof\))g(or)h(`exit')f(to)h(exit.)
-f(*/)243 2286 y(if)g(\(line)g(==)h(NULL)f(||)h(strcmp)f(\(line,)g
-("exit"\))g(==)h(0\))290 2341 y({)338 2396 y(if)g(\(line)f(==)h(0\))386
-2451 y(printf)f(\("\\n"\);)338 2506 y(printf)g(\("exit\\n"\);)338
-2560 y(/*)h(This)f(function)g(needs)g(to)h(be)f(called)g(to)h(reset)f
-(the)g(terminal)g(settings,)p 1937 2570 21 42 v 410 2615
-a(and)g(calling)g(it)h(from)f(the)g(line)h(handler)f(keeps)g(one)g
-(extra)h(prompt)f(from)p 1937 2625 21 38 v 410 2670 a(being)g
-(displayed.)f(*/)p eop end
-%%Page: 44 48
-TeXDict begin 44 47 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(44)338 149 y Fr
-(rl_callback_handler_remove)20 b(\(\);)338 259 y(running)j(=)h(0;)290
-314 y(})243 369 y(else)290 423 y({)338 478 y(if)g(\(*line\))386
-533 y(add_history)e(\(line\);)338 588 y(printf)h(\("input)g(line:)g
-(\045s\\n",)g(line\);)338 643 y(free)g(\(line\);)290
-697 y(})195 752 y(})195 862 y(int)195 917 y(main)g(\(int)h(c,)f(char)h
-(**v\))195 971 y({)243 1026 y(fd_set)f(fds;)243 1081
-y(int)g(r;)243 1191 y(/*)g(Install)g(the)h(line)f(handler.)g(*/)243
-1245 y(rl_callback_handler_inst)o(all)e(\(prompt,)i(cb_linehandler\);)
-243 1355 y(/*)g(Enter)g(a)h(simple)f(event)g(loop.)47
-b(This)24 b(waits)f(until)g(something)g(is)g(available)314
-1410 y(to)h(read)f(on)h(readline's)e(input)h(stream)h(\(defaults)e(to)i
-(standard)f(input\))g(and)314 1465 y(calls)g(the)h(builtin)f(character)
-f(read)i(callback)f(to)g(read)g(it.)48 b(It)23 b(does)h(not)314
-1519 y(have)g(to)f(modify)g(the)h(user's)f(terminal)g(settings.)f(*/)
-243 1574 y(running)h(=)g(1;)243 1629 y(while)g(\(running\))290
-1684 y({)338 1738 y(FD_ZERO)g(\(&fds\);)338 1793 y(FD_SET)g(\(fileno)g
-(\(rl_instream\),)f(&fds\);)338 1903 y(r)i(=)g(select)f(\(FD_SETSIZE,)f
-(&fds,)h(NULL,)g(NULL,)g(NULL\);)338 1958 y(if)h(\(r)f(<)h(0\))386
-2012 y({)434 2067 y(perror)f(\("rltest:)f(select"\);)434
-2122 y(rl_callback_handler_rem)o(ove)f(\(\);)434 2177
-y(break;)386 2232 y(})338 2341 y(if)j(\(FD_ISSET)e(\(fileno)h
-(\(rl_instream\),)f(&fds\)\))386 2396 y(rl_callback_read_char)f(\(\);)
-290 2451 y(})243 2560 y(printf)i(\("rltest:)f(Event)i(loop)f(has)g
-(exited\\n"\);)243 2615 y(return)g(0;)195 2670 y(})p
-eop end
-%%Page: 45 49
-TeXDict begin 45 48 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(45)75 149 y Fq(2.5)33 b(Readline)21
-b(Signal)h(Handling)75 229 y Fs(Signals)14 b(are)h(async)o(hronous)g
-(ev)o(en)o(ts)g(sen)o(t)g(to)g(a)g(pro)q(cess)g(b)o(y)g(the)h(Unix)f(k)
-o(ernel,)f(sometimes)h(on)g(b)q(ehalf)75 284 y(of)i(another)g(pro)q
-(cess.)26 b(They)18 b(are)f(in)o(tended)h(to)e(indicate)h(exceptional)g
-(ev)o(en)o(ts,)g(lik)o(e)g(a)g(user)g(pressing)75 339
-y(the)g(in)o(terrupt)f(k)o(ey)h(on)f(his)h(terminal,)f(or)g(a)g(net)o
-(w)o(ork)g(connection)h(b)q(eing)g(brok)o(en.)25 b(There)17
-b(is)f(a)h(class)75 394 y(of)d(signals)f(that)h(can)g(b)q(e)h(sen)o(t)g
-(to)e(the)i(pro)q(cess)g(curren)o(tly)e(reading)h(input)h(from)e(the)i
-(k)o(eyb)q(oard.)k(Since)75 448 y(Readline)k(c)o(hanges)f(the)g
-(terminal)f(attributes)g(when)i(it)e(is)h(called,)h(it)f(needs)h(to)e
-(p)q(erform)h(sp)q(ecial)75 503 y(pro)q(cessing)14 b(when)g(suc)o(h)g
-(a)g(signal)e(is)h(receiv)o(ed)h(in)g(order)g(to)f(restore)g(the)h
-(terminal)e(to)h(a)h(sane)g(state,)e(or)75 558 y(pro)o(vide)j
-(application)f(writers)g(with)g(functions)h(to)g(do)g(so)g(man)o(ually)
-l(.)137 635 y(Readline)21 b(con)o(tains)e(an)h(in)o(ternal)f(signal)g
-(handler)h(that)g(is)g(installed)f(for)g(a)h(n)o(um)o(b)q(er)g(of)g
-(signals)75 690 y(\()p Fr(SIGINT)p Fs(,)e Fr(SIGQUIT)p
-Fs(,)g Fr(SIGTERM)p Fs(,)g Fr(SIGHUP)p Fs(,)g Fr(SIGALRM)p
-Fs(,)g Fr(SIGTSTP)p Fs(,)g Fr(SIGTTIN)p Fs(,)g(and)h
-Fr(SIGTTOU)p Fs(\).)29 b(When)75 745 y(one)13 b(of)g(these)h(signals)e
-(is)h(receiv)o(ed,)h(the)f(signal)f(handler)i(will)e(reset)h(the)g
-(terminal)f(attributes)g(to)h(those)75 800 y(that)i(w)o(ere)h(in)g
-(e\013ect)g(b)q(efore)h Fr(readline\(\))d Fs(w)o(as)i(called,)f(reset)h
-(the)g(signal)f(handling)h(to)g(what)f(it)h(w)o(as)75
-854 y(b)q(efore)e Fr(readline\(\))e Fs(w)o(as)g(called,)h(and)h(resend)
-g(the)f(signal)f(to)h(the)g(calling)f(application.)18
-b(If)c(and)f(when)75 909 y(the)k(calling)f(application's)f(signal)h
-(handler)h(returns,)g(Readline)g(will)f(reinitialize)f(the)i(terminal)f
-(and)75 964 y(con)o(tin)o(ue)e(to)f(accept)i(input.)k(When)c(a)e
-Fr(SIGINT)h Fs(is)f(receiv)o(ed,)h(the)h(Readline)f(signal)f(handler)h
-(p)q(erforms)75 1019 y(some)19 b(additional)f(w)o(ork,)h(whic)o(h)g
-(will)f(cause)i(an)o(y)f(partially-en)o(tered)f(line)h(to)f(b)q(e)i(ab)
-q(orted)g(\(see)f(the)75 1073 y(description)c(of)f Fr
-(rl_free_line_state\(\))f Fs(b)q(elo)o(w\).)137 1151
-y(There)g(is)e(an)h(additional)f(Readline)i(signal)e(handler,)h(for)g
-Fr(SIGWINCH)p Fs(,)f(whic)o(h)h(the)g(k)o(ernel)g(sends)h(to)e(a)75
-1205 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)f(size)h(c)o(hanges)
-g(\(for)g(example,)g(if)g(a)g(user)h(resizes)f(an)g Fr(xterm)p
-Fs(\).)19 b(The)75 1260 y(Readline)f Fr(SIGWINCH)f Fs(handler)h(up)q
-(dates)g(Readline's)g(in)o(ternal)e(screen)j(size)e(information,)g(and)
-h(then)75 1315 y(calls)e(an)o(y)h Fr(SIGWINCH)e Fs(signal)h(handler)h
-(the)g(calling)f(application)f(has)i(installed.)24 b(Readline)17
-b(calls)f(the)75 1370 y(application's)g Fr(SIGWINCH)g
-Fs(signal)h(handler)g(without)g(resetting)g(the)g(terminal)g(to)g(its)f
-(original)g(state.)75 1425 y(If)g(the)g(application's)e(signal)h
-(handler)h(do)q(es)h(more)e(than)h(up)q(date)h(its)e(idea)h(of)f(the)h
-(terminal)f(size)h(and)75 1479 y(return)f(\(for)f(example,)g(a)g
-Fr(longjmp)g Fs(bac)o(k)h(to)f(a)h(main)f(pro)q(cessing)g(lo)q(op\),)g
-(it)g Fj(must)20 b Fs(call)14 b Fr(rl_cleanup_)75 1534
-y(after_signal\(\))f Fs(\(describ)q(ed)j(b)q(elo)o(w\),)e(to)h(restore)
-f(the)h(terminal)f(state.)137 1611 y(When)20 b(an)f(application)g(is)g
-(using)g(the)g(callbac)o(k)g(in)o(terface)g(\(see)g(Section)g(2.4.12)f
-([Alternate)g(In-)75 1666 y(terface],)k(page)f(41\),)h(Readline)g
-(installs)e(signal)g(handlers)h(only)g(for)g(the)h(duration)e(of)h(the)
-h(call)f(to)75 1721 y Fr(rl_callback_read_char)p Fs(.)f(Applications)15
-b(using)h(the)g(callbac)o(k)f(in)o(terface)g(should)h(b)q(e)h(prepared)
-g(to)75 1776 y(clean)c(up)h(Readline's)f(state)g(if)g(they)g(wish)g(to)
-g(handle)g(the)h(signal)e(b)q(efore)h(the)h(line)f(handler)g(completes)
-75 1831 y(and)i(restores)g(the)g(terminal)f(state.)137
-1908 y(Readline)h(pro)o(vides)f(t)o(w)o(o)f(v)m(ariables)g(that)h(allo)
-o(w)e(application)h(writers)g(to)h(con)o(trol)f(whether)i(or)e(not)75
-1963 y(it)j(will)f(catc)o(h)h(certain)g(signals)g(and)h(act)f(on)g
-(them)h(when)g(they)f(are)h(receiv)o(ed.)24 b(It)16 b(is)h(imp)q(ortan)
-o(t)e(that)75 2017 y(applications)i(c)o(hange)h(the)h(v)m(alues)f(of)g
-(these)h(v)m(ariables)e(only)h(when)h(calling)e Fr(readline\(\))p
-Fs(,)g(not)h(in)g(a)75 2072 y(signal)c(handler,)h(so)g(Readline's)g(in)
-o(ternal)f(signal)g(state)g(is)h(not)g(corrupted.)1685
-2184 y([V)l(ariable])-1801 b Fg(int)27 b(rl_catch_signals)195
-2239 y Fs(If)15 b(this)f(v)m(ariable)f(is)h(non-zero,)h(Readline)g
-(will)e(install)f(signal)i(handlers)g(for)g Fr(SIGINT)p
-Fs(,)f Fr(SIGQUIT)p Fs(,)195 2294 y Fr(SIGTERM)p Fs(,)h
-Fr(SIGHUP)p Fs(,)g Fr(SIGALRM)p Fs(,)g Fr(SIGTSTP)p Fs(,)f
-Fr(SIGTTIN)p Fs(,)h(and)i Fr(SIGTTOU)p Fs(.)195 2371
-y(The)f(default)g(v)m(alue)h(of)e Fr(rl_catch_signals)f
-Fs(is)i(1.)1685 2483 y([V)l(ariable])-1801 b Fg(int)27
-b(rl_catch_sigwinch)195 2538 y Fs(If)19 b(this)f(v)m(ariable)h(is)f
-(set)g(to)h(a)f(non-zero)h(v)m(alue,)h(Readline)f(will)e(install)h(a)g
-(signal)g(handler)h(for)195 2593 y Fr(SIGWINCH)p Fs(.)195
-2670 y(The)c(default)g(v)m(alue)h(of)e Fr(rl_catch_sigwinch)f
-Fs(is)i(1.)p eop end
-%%Page: 46 50
-TeXDict begin 46 49 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(46)1685 149 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_change_environment)195 204 y Fs(If)16
-b(this)f(v)m(ariable)g(is)g(set)h(to)f(a)g(non-zero)h(v)m(alue,)g(and)f
-(Readline)h(is)g(handling)f Fr(SIGWINCH)p Fs(,)f(Read-)195
-259 y(line)h(will)e(mo)q(dify)i(the)g Fi(LINES)k Fs(and)c
-Fi(COLUMNS)j Fs(en)o(vironmen)o(t)d(v)m(ariables)f(up)q(on)i(receipt)f
-(of)f(a)195 314 y Fr(SIGWINCH)195 384 y Fs(The)h(default)g(v)m(alue)h
-(of)e Fr(rl_change_environment)f Fs(is)h(1.)137 481 y(If)i(an)f
-(application)g(do)q(es)g(not)g(wish)h(to)e(ha)o(v)o(e)h(Readline)h
-(catc)o(h)g(an)o(y)f(signals,)f(or)h(to)f(handle)i(signals)75
-535 y(other)j(than)g(those)g(Readline)h(catc)o(hes)f(\()p
-Fr(SIGHUP)p Fs(,)g(for)g(example\),)g(Readline)h(pro)o(vides)e(con)o(v)
-o(enience)75 590 y(functions)d(to)g(do)g(the)g(necessary)g(terminal)f
-(and)i(in)o(ternal)e(state)g(clean)o(up)h(up)q(on)h(receipt)f(of)g(a)g
-(signal.)1675 687 y([F)l(unction])-1801 b Fg(void)27
-b(rl_cleanup_after_signal)f Ff(\()p Fi(v)o(oid)p Ff(\))195
-742 y Fs(This)17 b(function)f(will)g(reset)h(the)g(state)f(of)g(the)h
-(terminal)f(to)g(what)h(it)f(w)o(as)g(b)q(efore)h Fr(readline\(\))195
-797 y Fs(w)o(as)d(called,)g(and)h(remo)o(v)o(e)f(the)g(Readline)h
-(signal)f(handlers)h(for)f(all)f(signals,)g(dep)q(ending)j(on)f(the)195
-852 y(v)m(alues)g(of)g Fr(rl_catch_signals)e Fs(and)i
-Fr(rl_catch_sigwinch)p Fs(.)1675 949 y([F)l(unction])-1801
-b Fg(void)27 b(rl_free_line_state)e Ff(\()p Fi(v)o(oid)p
-Ff(\))195 1004 y Fs(This)19 b(will)f(free)i(an)o(y)f(partial)f(state)h
-(asso)q(ciated)g(with)g(the)h(curren)o(t)f(input)h(line)f(\(undo)h
-(infor-)195 1059 y(mation,)h(an)o(y)g(partial)f(history)g(en)o(try)l(,)
-i(an)o(y)f(partially-en)o(tered)f(k)o(eyb)q(oard)h(macro,)h(and)f(an)o
-(y)195 1113 y(partially-en)o(tered)h(n)o(umeric)i(argumen)o(t\).)45
-b(This)23 b(should)h(b)q(e)h(called)e(b)q(efore)i Fr(rl_cleanup_)195
-1168 y(after_signal\(\))p Fs(.)36 b(The)22 b(Readline)g(signal)e
-(handler)h(for)g Fr(SIGINT)f Fs(calls)h(this)f(to)h(ab)q(ort)g(the)195
-1223 y(curren)o(t)15 b(input)g(line.)1675 1320 y([F)l(unction])-1801
-b Fg(void)27 b(rl_reset_after_signal)f Ff(\()p Fi(v)o(oid)p
-Ff(\))195 1375 y Fs(This)14 b(will)f(reinitialize)f(the)i(terminal)f
-(and)i(reinstall)e(an)o(y)g(Readline)i(signal)e(handlers,)h(dep)q(end-)
-195 1430 y(ing)h(on)g(the)g(v)m(alues)h(of)e Fr(rl_catch_signals)f
-Fs(and)j Fr(rl_catch_sigwinch)p Fs(.)137 1527 y(If)k(an)g(application)e
-(do)q(es)i(not)g(wish)f(Readline)h(to)f(catc)o(h)g Fr(SIGWINCH)p
-Fs(,)h(it)f(ma)o(y)g(call)f Fr(rl_resize_)75 1582 y(terminal\(\))12
-b Fs(or)h Fr(rl_set_screen_size\(\))e Fs(to)i(force)g(Readline)h(to)f
-(up)q(date)h(its)f(idea)g(of)h(the)f(terminal)75 1636
-y(size)i(when)h(a)f Fr(SIGWINCH)f Fs(is)g(receiv)o(ed.)1675
-1733 y([F)l(unction])-1801 b Fg(void)27 b(rl_echo_signal_char)e
-Ff(\()p Fi(in)o(t)14 b(sig)p Ff(\))195 1788 y Fs(If)22
-b(an)g(application)e(wishes)i(to)f(install)f(its)h(o)o(wn)g(signal)g
-(handlers,)i(but)f(still)e(ha)o(v)o(e)h(readline)195
-1843 y(displa)o(y)14 b(c)o(haracters)h(that)f(generate)h(signals,)f
-(calling)g(this)h(function)g(with)f Fi(sig)19 b Fs(set)c(to)f
-Fr(SIGINT)p Fs(,)195 1898 y Fr(SIGQUIT)p Fs(,)g(or)h
-Fr(SIGTSTP)f Fs(will)g(displa)o(y)g(the)h(c)o(haracter)g(generating)f
-(that)g(signal.)1675 1995 y([F)l(unction])-1801 b Fg(void)27
-b(rl_resize_terminal)e Ff(\()p Fi(v)o(oid)p Ff(\))195
-2050 y Fs(Up)q(date)16 b(Readline's)f(in)o(ternal)f(screen)h(size)h(b)o
-(y)f(reading)f(v)m(alues)i(from)e(the)i(k)o(ernel.)1675
-2147 y([F)l(unction])-1801 b Fg(void)27 b(rl_set_screen_size)e
-Ff(\()p Fi(in)o(t)14 b(ro)o(ws,)g(in)o(t)h(cols)p Ff(\))195
-2202 y Fs(Set)f(Readline's)g(idea)g(of)f(the)h(terminal)f(size)h(to)f
-Fi(ro)o(ws)i Fs(ro)o(ws)e(and)h Fi(cols)h Fs(columns.)k(If)14
-b(either)g Fi(ro)o(ws)195 2257 y Fs(or)j Fi(columns)i
-Fs(is)e(less)h(than)f(or)g(equal)h(to)e(0,)i(Readline's)f(idea)h(of)f
-(that)g(terminal)f(dimension)h(is)195 2311 y(unc)o(hanged.)137
-2408 y(If)g(an)g(application)e(do)q(es)i(not)f(w)o(an)o(t)g(to)g
-(install)f(a)i Fr(SIGWINCH)e Fs(handler,)i(but)g(is)f(still)f(in)o
-(terested)h(in)75 2463 y(the)f(screen)h(dimensions,)e(Readline's)i
-(idea)e(of)h(the)h(screen)f(size)g(ma)o(y)g(b)q(e)h(queried.)1675
-2560 y([F)l(unction])-1801 b Fg(void)27 b(rl_get_screen_size)e
-Ff(\()p Fi(in)o(t)14 b(*ro)o(ws,)g(in)o(t)g(*cols)p Ff(\))195
-2615 y Fs(Return)i(Readline's)f(idea)f(of)h(the)g(terminal's)e(size)i
-(in)g(the)g(v)m(ariables)g(p)q(oin)o(ted)g(to)f(b)o(y)h(the)g(argu-)195
-2670 y(men)o(ts.)p eop end
-%%Page: 47 51
-TeXDict begin 47 50 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(47)1675 149 y([F)l(unction])-1801
-b Fg(void)27 b(rl_reset_screen_size)f Ff(\()p Fi(v)o(oid)p
-Ff(\))195 204 y Fs(Cause)15 b(Readline)h(to)e(reobtain)h(the)g(screen)h
-(size)f(and)g(recalculate)f(its)h(dimensions.)137 299
-y(The)h(follo)o(wing)d(functions)i(install)e(and)j(remo)o(v)o(e)e
-(Readline's)h(signal)f(handlers.)1675 394 y([F)l(unction])-1801
-b Fg(int)27 b(rl_set_signals)d Ff(\()p Fi(v)o(oid)p Ff(\))195
-449 y Fs(Install)19 b(Readline's)h(signal)f(handler)h(for)f
-Fr(SIGINT)p Fs(,)h Fr(SIGQUIT)p Fs(,)g Fr(SIGTERM)p Fs(,)f
-Fr(SIGHUP)p Fs(,)h Fr(SIGALRM)p Fs(,)195 504 y Fr(SIGTSTP)p
-Fs(,)d Fr(SIGTTIN)p Fs(,)g Fr(SIGTTOU)p Fs(,)g(and)g
-Fr(SIGWINCH)p Fs(,)g(dep)q(ending)i(on)f(the)f(v)m(alues)h(of)f
-Fr(rl_catch_)195 559 y(signals)d Fs(and)i Fr(rl_catch_sigwinch)p
-Fs(.)1675 654 y([F)l(unction])-1801 b Fg(int)27 b(rl_clear_signals)e
-Ff(\()p Fi(v)o(oid)p Ff(\))195 709 y Fs(Remo)o(v)o(e)15
-b(all)f(of)h(the)g(Readline)h(signal)e(handlers)h(installed)f(b)o(y)h
-Fr(rl_set_signals\(\))p Fs(.)75 827 y Fq(2.6)33 b(Custom)21
-b(Completers)75 907 y Fs(T)o(ypically)l(,)g(a)g(program)f(that)h(reads)
-g(commands)g(from)g(the)g(user)h(has)f(a)g(w)o(a)o(y)f(of)h(disam)o
-(biguating)75 962 y(commands)d(and)f(data.)27 b(If)18
-b(y)o(our)f(program)g(is)g(one)h(of)f(these,)i(then)f(it)f(can)g(pro)o
-(vide)h(completion)f(for)75 1016 y(commands,)d(data,)g(or)g(b)q(oth.)20
-b(The)15 b(follo)o(wing)d(sections)i(describ)q(e)h(ho)o(w)f(y)o(our)g
-(program)g(and)h(Readline)75 1071 y(co)q(op)q(erate)g(to)g(pro)o(vide)f
-(this)h(service.)75 1172 y Fh(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5
-b(orks)75 1246 y Fs(In)14 b(order)f(to)f(complete)h(some)g(text,)g(the)
-g(full)f(list)g(of)h(p)q(ossible)g(completions)f(m)o(ust)h(b)q(e)h(a)o
-(v)m(ailable.)k(That)75 1301 y(is,)13 b(it)g(is)g(not)g(p)q(ossible)g
-(to)g(accurately)f(expand)j(a)e(partial)f(w)o(ord)g(without)h(kno)o
-(wing)f(all)h(of)g(the)g(p)q(ossible)75 1355 y(w)o(ords)j(whic)o(h)g
-(mak)o(e)g(sense)h(in)g(that)f(con)o(text.)23 b(The)17
-b(Readline)g(library)e(pro)o(vides)h(the)h(user)g(in)o(terface)75
-1410 y(to)d(completion,)f(and)h(t)o(w)o(o)f(of)h(the)g(most)f(common)h
-(completion)f(functions:)19 b(\014lename)c(and)f(username.)75
-1465 y(F)l(or)k(completing)h(other)f(t)o(yp)q(es)h(of)g(text,)g(y)o(ou)
-g(m)o(ust)f(write)g(y)o(our)h(o)o(wn)f(completion)g(function.)31
-b(This)75 1520 y(section)15 b(describ)q(es)h(exactly)e(what)h(suc)o(h)g
-(functions)g(m)o(ust)g(do,)g(and)g(pro)o(vides)g(an)g(example.)137
-1589 y(There)h(are)f(three)g(ma)s(jor)f(functions)h(used)g(to)g(p)q
-(erform)g(completion:)100 1657 y(1.)29 b(The)22 b(user-in)o(terface)f
-(function)h Fr(rl_complete\(\))p Fs(.)37 b(This)22 b(function)f(is)g
-(called)g(with)g(the)h(same)165 1712 y(argumen)o(ts)17
-b(as)g(other)h(bindable)g(Readline)g(functions:)25 b
-Fi(coun)o(t)18 b Fs(and)g Fi(in)o(v)o(oking)p 1555 1712
-14 2 v 19 w(k)o(ey)p Fs(.)28 b(It)18 b(isolates)165 1767
-y(the)h(w)o(ord)f(to)g(b)q(e)i(completed)e(and)h(calls)f
-Fr(rl_completion_matches\(\))e Fs(to)i(generate)g(a)h(list)e(of)165
-1822 y(p)q(ossible)e(completions.)20 b(It)c(then)g(either)f(lists)f
-(the)i(p)q(ossible)f(completions,)g(inserts)g(the)g(p)q(ossible)165
-1876 y(completions,)23 b(or)f(actually)g(p)q(erforms)g(the)g
-(completion,)i(dep)q(ending)f(on)g(whic)o(h)f(b)q(eha)o(vior)g(is)165
-1931 y(desired.)100 1999 y(2.)29 b(The)17 b(in)o(ternal)f(function)g
-Fr(rl_completion_matches\(\))e Fs(uses)j(an)g(application-supplied)f
-Fi(gener-)165 2054 y(ator)21 b Fs(function)d(to)g(generate)g(the)h
-(list)e(of)h(p)q(ossible)g(matc)o(hes,)h(and)f(then)h(returns)g(the)f
-(arra)o(y)f(of)165 2109 y(these)j(matc)o(hes.)32 b(The)20
-b(caller)e(should)i(place)f(the)h(address)f(of)h(its)e(generator)h
-(function)g(in)g Fr(rl_)165 2164 y(completion_entry_function)p
-Fs(.)100 2232 y(3.)29 b(The)12 b(generator)e(function)h(is)g(called)g
-(rep)q(eatedly)h(from)f Fr(rl_completion_matches\(\))p
-Fs(,)d(returning)165 2286 y(a)16 b(string)f(eac)o(h)i(time.)23
-b(The)16 b(argumen)o(ts)g(to)f(the)i(generator)e(function)h(are)h
-Fi(text)f Fs(and)h Fi(state)p Fs(.)22 b Fi(text)165 2341
-y Fs(is)16 b(the)g(partial)e(w)o(ord)h(to)h(b)q(e)h(completed.)22
-b Fi(state)c Fs(is)d(zero)h(the)g(\014rst)g(time)f(the)h(function)g(is)
-g(called,)165 2396 y(allo)o(wing)k(the)i(generator)f(to)g(p)q(erform)h
-(an)o(y)g(necessary)g(initializatio)o(n,)f(and)h(a)g(p)q(ositiv)o(e)f
-(non-)165 2451 y(zero)14 b(in)o(teger)g(for)g(eac)o(h)h(subsequen)o(t)g
-(call.)k(The)c(generator)e(function)i(returns)f Fr(\(char)h(*\)NULL)f
-Fs(to)165 2506 y(inform)k Fr(rl_completion_matches\(\))e
-Fs(that)i(there)h(are)g(no)g(more)g(p)q(ossibilities)e(left.)31
-b(Usually)165 2560 y(the)19 b(generator)g(function)g(computes)h(the)f
-(list)f(of)h(p)q(ossible)g(completions)g(when)g Fi(state)j
-Fs(is)c(zero,)165 2615 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time)
-f(on)h(subsequen)o(t)g(calls.)18 b(Eac)o(h)13 b(string)e(the)i
-(generator)f(function)165 2670 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust)
-h(b)q(e)g(allo)q(cated)f(with)h Fr(malloc\(\))p Fs(;)e(Readline)j
-(frees)f(the)g(strings)e(when)p eop end
-%%Page: 48 52
-TeXDict begin 48 51 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(48)165 149 y(it)16 b(has)h(\014nished)h
-(with)e(them.)25 b(Suc)o(h)18 b(a)e(generator)g(function)h(is)f
-(referred)h(to)g(as)f(an)h Fi(application-)165 204 y(sp)q(eci\014c)f
-(completion)e(function)p Fs(.)1675 286 y([F)l(unction])-1801
-b Fg(int)27 b(rl_complete)d Ff(\()p Fi(in)o(t)14 b(ignore,)g(in)o(t)h
-(in)o(v)o(oking)p 967 286 14 2 v 18 w(k)o(ey)p Ff(\))195
-341 y Fs(Complete)g(the)g(w)o(ord)g(at)f(or)h(b)q(efore)h(p)q(oin)o(t.)
-k(Y)l(ou)15 b(ha)o(v)o(e)g(supplied)h(the)f(function)h(that)e(do)q(es)i
-(the)195 396 y(initial)j(simple)h(matc)o(hing)f(selection)h(algorithm)f
-(\(see)h Fr(rl_completion_matches\(\))p Fs(\).)33 b(The)195
-451 y(default)15 b(is)f(to)h(do)g(\014lename)g(completion.)1685
-533 y([V)l(ariable])-1801 b Fg(rl_compentry_func_t)29
-b(*)d(rl_completion_entry_f)q(unction)195 587 y Fs(This)20
-b(is)f(a)h(p)q(oin)o(ter)f(to)g(the)h(generator)g(function)f(for)h
-Fr(rl_completion_matches\(\))p Fs(.)31 b(If)20 b(the)195
-642 y(v)m(alue)12 b(of)g Fr(rl_completion_entry_fun)o(ction)d
-Fs(is)i Fr(NULL)g Fs(then)h(the)g(default)g(\014lename)g(generator)195
-697 y(function,)24 b Fr(rl_filename_completion_f)o(unction\()o(\))p
-Fs(,)d(is)h(used.)42 b(An)23 b Fi(application-sp)q(eci\014c)195
-752 y(completion)10 b(function)g Fs(is)g(a)g(function)h(whose)f
-(address)h(is)f(assigned)g(to)g Fr(rl_completion_entry_)195
-806 y(function)k Fs(and)h(whose)h(return)f(v)m(alues)g(are)g(used)h(to)
-e(generate)h(p)q(ossible)g(completions.)75 899 y Fh(2.6.2)30
-b(Completion)20 b(F)-5 b(unctions)75 973 y Fs(Here)15
-b(is)g(the)g(complete)g(list)f(of)h(callable)f(completion)h(functions)g
-(presen)o(t)g(in)g(Readline.)1675 1055 y([F)l(unction])-1801
-b Fg(int)27 b(rl_complete_internal)e Ff(\()p Fi(in)o(t)14
-b(what)p 914 1055 V 20 w(to)p 975 1055 V 19 w(do)p Ff(\))195
-1110 y Fs(Complete)k(the)g(w)o(ord)g(at)f(or)h(b)q(efore)h(p)q(oin)o
-(t.)28 b Fi(what)p 1104 1110 V 20 w(to)p 1165 1110 V
-19 w(do)21 b Fs(sa)o(ys)c(what)h(to)g(do)g(with)g(the)g(com-)195
-1164 y(pletion.)i(A)c(v)m(alue)g(of)f(`)p Fr(?)p Fs(')g(means)g(list)g
-(the)g(p)q(ossible)h(completions.)k(`)p Fr(TAB)p Fs(')14
-b(means)i(do)f(standard)195 1219 y(completion.)20 b(`)p
-Fr(*)p Fs(')15 b(means)g(insert)g(all)g(of)g(the)h(p)q(ossible)f
-(completions.)20 b(`)p Fr(!)p Fs(')15 b(means)g(to)g(displa)o(y)g(all)
-195 1274 y(of)i(the)g(p)q(ossible)g(completions,)f(if)h(there)g(is)g
-(more)g(than)g(one,)g(as)g(w)o(ell)f(as)h(p)q(erforming)g(partial)195
-1329 y(completion.)h(`)p Fr(@)p Fs(')13 b(is)g(similar)f(to)h(`)p
-Fr(!)p Fs(',)g(but)h(p)q(ossible)f(completions)g(are)g(not)g(listed)g
-(if)g(the)h(p)q(ossible)195 1384 y(completions)g(share)h(a)g(common)g
-(pre\014x.)1675 1465 y([F)l(unction])-1801 b Fg(int)27
-b(rl_complete)d Ff(\()p Fi(in)o(t)14 b(ignore,)g(in)o(t)h(in)o(v)o
-(oking)p 967 1465 V 18 w(k)o(ey)p Ff(\))195 1520 y Fs(Complete)20
-b(the)h(w)o(ord)e(at)h(or)g(b)q(efore)h(p)q(oin)o(t.)36
-b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)h(the)f(function)h(that)f(do)q(es)
-195 1575 y(the)d(initial)d(simple)i(matc)o(hing)g(selection)g
-(algorithm)e(\(see)i Fr(rl_completion_matches\(\))e Fs(and)195
-1630 y Fr(rl_completion_entry_functi)o(on)p Fs(\).)25
-b(The)18 b(default)g(is)f(to)g(do)h(\014lename)g(completion.)27
-b(This)195 1685 y(calls)14 b Fr(rl_complete_internal\(\))e
-Fs(with)j(an)g(argumen)o(t)f(dep)q(ending)j(on)e Fi(in)o(v)o(oking)p
-1659 1685 V 19 w(k)o(ey)p Fs(.)1675 1767 y([F)l(unction])-1801
-b Fg(int)27 b(rl_possible_completions)f Ff(\()p Fi(in)o(t)14
-b(coun)o(t,)h(in)o(t)f(in)o(v)o(oking)p 1269 1767 V 19
-w(k)o(ey)p Ff(\))195 1821 y Fs(List)20 b(the)g(p)q(ossible)g
-(completions.)34 b(See)21 b(description)f(of)g Fr(rl_complete)13
-b(\(\))p Fs(.)35 b(This)20 b(calls)f Fr(rl_)195 1876
-y(complete_internal\(\))13 b Fs(with)h(an)h(argumen)o(t)g(of)f(`)p
-Fr(?)p Fs('.)1675 1958 y([F)l(unction])-1801 b Fg(int)27
-b(rl_insert_completions)f Ff(\()p Fi(in)o(t)14 b(coun)o(t,)g(in)o(t)h
-(in)o(v)o(oking)p 1217 1958 V 18 w(k)o(ey)p Ff(\))195
-2013 y Fs(Insert)i(the)g(list)f(of)g(p)q(ossible)h(completions)e(in)o
-(to)h(the)h(line,)g(deleting)f(the)h(partially-completed)195
-2068 y(w)o(ord.)k(See)c(description)e(of)g Fr(rl_complete\(\))p
-Fs(.)20 b(This)c(calls)f Fr(rl_complete_internal\(\))e
-Fs(with)195 2123 y(an)i(argumen)o(t)g(of)f(`)p Fr(*)p
-Fs('.)1675 2204 y([F)l(unction])-1801 b Fg(int)27 b(rl_completion_mode)
-e Ff(\()p Fi(rl)p 725 2204 V 19 w(command)p 936 2204
-V 20 w(func)p 1040 2204 V 21 w(t)15 b(*cfunc)p Ff(\))195
-2259 y Fs(Returns)21 b(the)g(appropriate)f(v)m(alue)h(to)f(pass)g(to)g
-Fr(rl_complete_internal\(\))e Fs(dep)q(ending)k(on)195
-2314 y(whether)f Fi(cfunc)i Fs(w)o(as)d(called)g(t)o(wice)g(in)g
-(succession)h(and)f(the)h(v)m(alues)f(of)g(the)h Fr(show-all-if-)195
-2369 y(ambiguous)13 b Fs(and)g Fr(show-all-if-unmodified)e
-Fs(v)m(ariables.)19 b(Application-sp)q(eci\014c)14 b(completion)195
-2424 y(functions)h(ma)o(y)f(use)i(this)f(function)g(to)f(presen)o(t)h
-(the)h(same)f(in)o(terface)f(as)h Fr(rl_complete\(\))p
-Fs(.)1675 2506 y([F)l(unction])-1801 b Fg(char)27 b(**)f
-(rl_completion_matches)g Ff(\()p Fi(const)15 b(c)o(har)g(*text,)283
-2560 y(rl)p 317 2560 V 19 w(comp)q(en)o(try)p 547 2560
-V 20 w(func)p 651 2560 V 21 w(t)f(*en)o(try)p 831 2560
-V 20 w(func)p Ff(\))195 2615 y Fs(Returns)19 b(an)g(arra)o(y)f(of)g
-(strings)g(whic)o(h)h(is)g(a)f(list)g(of)g(completions)g(for)h
-Fi(text)p Fs(.)30 b(If)19 b(there)g(are)g(no)195 2670
-y(completions,)d(returns)i Fr(NULL)p Fs(.)25 b(The)17
-b(\014rst)g(en)o(try)g(in)g(the)g(returned)h(arra)o(y)e(is)h(the)g
-(substitution)p eop end
-%%Page: 49 53
-TeXDict begin 49 52 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(49)195 149 y(for)13 b Fi(text)p
-Fs(.)18 b(The)c(remaining)e(en)o(tries)g(are)h(the)h(p)q(ossible)e
-(completions.)19 b(The)13 b(arra)o(y)f(is)h(terminated)195
-204 y(with)i(a)f Fr(NULL)h Fs(p)q(oin)o(ter.)195 271
-y Fi(en)o(try)p 302 271 14 2 v 20 w(func)23 b Fs(is)c(a)g(function)h
-(of)f(t)o(w)o(o)g(args,)g(and)h(returns)g(a)f Fr(char)c(*)p
-Fs(.)33 b(The)20 b(\014rst)f(argumen)o(t)g(is)195 326
-y Fi(text)p Fs(.)32 b(The)19 b(second)h(is)f(a)g(state)f(argumen)o(t;)j
-(it)d(is)h(zero)g(on)g(the)h(\014rst)f(call,)g(and)g(non-zero)h(on)195
-380 y(subsequen)o(t)e(calls.)24 b Fi(en)o(try)p 661 380
-V 19 w(func)d Fs(returns)16 b(a)h Fr(NULL)f Fs(p)q(oin)o(ter)h(to)f
-(the)h(caller)f(when)h(there)g(are)g(no)195 435 y(more)e(matc)o(hes.)
-1675 525 y([F)l(unction])-1801 b Fg(char)27 b(*)f
-(rl_filename_completion_)q(functio)q(n)f Ff(\()p Fi(const)15
-b(c)o(har)g(*text,)f(in)o(t)283 580 y(state)p Ff(\))195
-635 y Fs(A)f(generator)f(function)g(for)h(\014lename)g(completion)e(in)
-i(the)g(general)f(case.)19 b Fi(text)14 b Fs(is)e(a)h(partial)e
-(\014le-)195 690 y(name.)18 b(The)11 b(Bash)g(source)g(is)f(a)h(useful)
-g(reference)g(for)f(writing)f(application-sp)q(eci\014c)i(completion)
-195 744 y(functions)k(\(the)g(Bash)g(completion)f(functions)h(call)g
-(this)f(and)i(other)f(Readline)g(functions\).)1675 835
-y([F)l(unction])-1801 b Fg(char)27 b(*)f(rl_username_completion_)q
-(functio)q(n)f Ff(\()p Fi(const)15 b(c)o(har)g(*text,)f(in)o(t)283
-889 y(state)p Ff(\))195 944 y Fs(A)g(completion)g(generator)f(for)h
-(usernames.)19 b Fi(text)c Fs(con)o(tains)e(a)h(partial)f(username)h
-(preceded)i(b)o(y)195 999 y(a)f(random)g(c)o(haracter)f(\(usually)h(`)p
-Fr(~)p Fs('\).)k(As)c(with)f(all)h(completion)f(generators,)g
-Fi(state)j Fs(is)e(zero)g(on)195 1054 y(the)g(\014rst)g(call)f(and)i
-(non-zero)f(for)g(subsequen)o(t)h(calls.)75 1152 y Fh(2.6.3)30
-b(Completion)20 b(V)-5 b(ariables)1685 1249 y Fs([V)l(ariable])-1801
-b Fg(rl_compentry_func_t)29 b(*)d(rl_completion_entry_f)q(unction)195
-1304 y Fs(A)17 b(p)q(oin)o(ter)f(to)g(the)h(generator)f(function)g(for)
-g Fr(rl_completion_matches\(\))p Fs(.)22 b Fr(NULL)16
-b Fs(means)h(to)195 1359 y(use)f Fr(rl_filename_completion_)o(functio)o
-(n\(\))p Fs(,)c(the)j(default)g(\014lename)g(completer.)1685
-1449 y([V)l(ariable])-1801 b Fg(rl_completion_func_t)29
-b(*)d(rl_attempted_complet)q(ion_fun)q(ction)195 1503
-y Fs(A)17 b(p)q(oin)o(ter)g(to)g(an)g(alternativ)o(e)f(function)h(to)g
-(create)g(matc)o(hes.)26 b(The)18 b(function)f(is)g(called)g(with)195
-1558 y Fi(text)p Fs(,)11 b Fi(start)p Fs(,)g(and)h Fi(end)p
-Fs(.)19 b Fi(start)11 b Fs(and)h Fi(end)i Fs(are)d(indices)g(in)h
-Fr(rl_line_buffer)d Fs(de\014ning)j(the)g(b)q(ound-)195
-1613 y(aries)g(of)h Fi(text)p Fs(,)f(whic)o(h)h(is)g(a)f(c)o(haracter)h
-(string.)18 b(If)13 b(this)f(function)h(exists)g(and)g(returns)g
-Fr(NULL)p Fs(,)f(or)g(if)195 1668 y(this)e(v)m(ariable)h(is)f(set)h(to)
-f Fr(NULL)p Fs(,)h(then)g Fr(rl_complete\(\))e Fs(will)h(call)g(the)h
-(v)m(alue)g(of)g Fr(rl_completion_)195 1723 y(entry_function)h
-Fs(to)i(generate)g(matc)o(hes,)f(otherwise)h(the)g(arra)o(y)f(of)h
-(strings)f(returned)h(will)f(b)q(e)195 1777 y(used.)19
-b(If)12 b(this)e(function)h(sets)g(the)g Fr
-(rl_attempted_completion_over)d Fs(v)m(ariable)i(to)h(a)g(non-zero)195
-1832 y(v)m(alue,)17 b(Readline)h(will)d(not)i(p)q(erform)f(its)h
-(default)f(completion)g(ev)o(en)h(if)g(this)f(function)h(returns)195
-1887 y(no)e(matc)o(hes.)1685 1977 y([V)l(ariable])-1801
-b Fg(rl_quote_func_t)28 b(*)f(rl_filename_quoting_funct)q(ion)195
-2032 y Fs(A)16 b(p)q(oin)o(ter)g(to)g(a)g(function)g(that)f(will)g
-(quote)h(a)g(\014lename)h(in)f(an)g(application-sp)q(eci\014c)g
-(fashion.)195 2087 y(This)j(is)g(called)h(if)f(\014lename)g(completion)
-g(is)g(b)q(eing)h(attempted)f(and)h(one)g(of)f(the)h(c)o(haracters)195
-2142 y(in)c Fr(rl_filename_quote_characters)d Fs(app)q(ears)k(in)f(a)h
-(completed)f(\014lename.)24 b(The)17 b(function)195 2196
-y(is)h(called)g(with)g Fi(text)p Fs(,)g Fi(matc)o(h)p
-720 2196 V 20 w(t)o(yp)q(e)p Fs(,)g(and)h Fi(quote)p
-1060 2196 V 20 w(p)q(oin)o(ter)p Fs(.)29 b(The)19 b Fi(text)g
-Fs(is)e(the)i(\014lename)g(to)e(b)q(e)195 2251 y(quoted.)38
-b(The)21 b Fi(matc)o(h)p 606 2251 V 20 w(t)o(yp)q(e)i
-Fs(is)e(either)g Fr(SINGLE_MATCH)p Fs(,)f(if)h(there)g(is)g(only)g(one)
-g(completion)195 2306 y(matc)o(h,)15 b(or)g Fr(MULT_MATCH)p
-Fs(.)20 b(Some)c(functions)f(use)h(this)f(to)g(decide)i(whether)f(or)f
-(not)g(to)g(insert)g(a)195 2361 y(closing)9 b(quote)i(c)o(haracter.)17
-b(The)11 b Fi(quote)p 876 2361 V 20 w(p)q(oin)o(ter)i
-Fs(is)d(a)g(p)q(oin)o(ter)g(to)g(an)o(y)g(op)q(ening)g(quote)h(c)o
-(haracter)195 2416 y(the)k(user)h(t)o(yp)q(ed.)k(Some)15
-b(functions)g(c)o(ho)q(ose)g(to)g(reset)g(this)f(c)o(haracter.)1685
-2506 y([V)l(ariable])-1801 b Fg(rl_dequote_func_t)29
-b(*)d(rl_filename_dequoting_f)q(unction)195 2560 y Fs(A)15
-b(p)q(oin)o(ter)f(to)g(a)h(function)f(that)h(will)e(remo)o(v)o(e)h
-(application-sp)q(eci\014c)h(quoting)f(c)o(haracters)g(from)195
-2615 y(a)i(\014lename)g(b)q(efore)h(completion)e(is)h(attempted,)g(so)f
-(those)h(c)o(haracters)g(do)g(not)g(in)o(terfere)g(with)195
-2670 y(matc)o(hing)i(the)h(text)g(against)e(names)i(in)g(the)g
-(\014lesystem.)32 b(It)19 b(is)f(called)h(with)f Fi(text)p
-Fs(,)h(the)g(text)p eop end
-%%Page: 50 54
-TeXDict begin 50 53 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(50)195 149 y(of)21 b(the)g(w)o(ord)f(to)h
-(b)q(e)g(dequoted,)i(and)e Fi(quote)p 1007 149 14 2 v
-20 w(c)o(har)p Fs(,)h(whic)o(h)f(is)g(the)g(quoting)f(c)o(haracter)h
-(that)195 204 y(delimits)15 b(the)h(\014lename)g(\(usually)f(`)p
-Fr(')p Fs(')g(or)h(`)p Fr(")p Fs('\).)21 b(If)c Fi(quote)p
-1185 204 V 19 w(c)o(har)i Fs(is)d(zero,)g(the)g(\014lename)g(w)o(as)f
-(not)195 259 y(in)g(an)g(em)o(b)q(edded)i(string.)1685
-352 y([V)l(ariable])-1801 b Fg(rl_linebuf_func_t)29 b(*)d
-(rl_char_is_quoted_p)195 407 y Fs(A)18 b(p)q(oin)o(ter)g(to)g(a)g
-(function)g(to)g(call)g(that)f(determines)i(whether)f(or)g(not)g(a)g
-(sp)q(eci\014c)i(c)o(haracter)195 462 y(in)d(the)g(line)g(bu\013er)g
-(is)g(quoted,)h(according)e(to)h(whatev)o(er)f(quoting)h(mec)o(hanism)g
-(the)g(program)195 517 y(calling)11 b(Readline)i(uses.)19
-b(The)13 b(function)f(is)g(called)g(with)g(t)o(w)o(o)f(argumen)o(ts:)17
-b Fi(text)p Fs(,)12 b(the)h(text)f(of)g(the)195 572 y(line,)j(and)g
-Fi(index)p Fs(,)h(the)f(index)h(of)f(the)g(c)o(haracter)g(in)g(the)h
-(line.)k(It)15 b(is)g(used)h(to)f(decide)h(whether)f(a)195
-626 y(c)o(haracter)f(found)i(in)f Fr(rl_completer_word_break_)o
-(charact)o(ers)d Fs(should)j(b)q(e)h(used)g(to)e(break)195
-681 y(w)o(ords)g(for)h(the)g(completer.)1685 775 y([V)l(ariable])-1801
-b Fg(rl_compignore_func_t)29 b(*)d(rl_ignore_some_compl)q(etions_)q
-(functio)q(n)195 829 y Fs(This)18 b(function,)i(if)e(de\014ned,)j(is)d
-(called)g(b)o(y)h(the)g(completer)f(when)i(real)e(\014lename)h
-(completion)195 884 y(is)e(done,)g(after)f(all)g(the)h(matc)o(hing)f
-(names)h(ha)o(v)o(e)g(b)q(een)h(generated.)25 b(It)17
-b(is)g(passed)g(a)g Fr(NULL)f Fs(ter-)195 939 y(minated)f(arra)o(y)f
-(of)h(matc)o(hes.)20 b(The)c(\014rst)f(elemen)o(t)g(\()p
-Fr(matches[0])p Fs(\))e(is)i(the)h(maximal)e(substring)195
-994 y(common)g(to)g(all)f(matc)o(hes.)19 b(This)14 b(function)g(can)h
-(re-arrange)f(the)g(list)f(of)h(matc)o(hes)g(as)g(required,)195
-1049 y(but)h(eac)o(h)h(elemen)o(t)f(deleted)g(from)g(the)g(arra)o(y)f
-(m)o(ust)g(b)q(e)i(freed.)1685 1142 y([V)l(ariable])-1801
-b Fg(rl_icppfunc_t)28 b(*)e(rl_directory_completi)q(on_hoo)q(k)195
-1197 y Fs(This)c(function,)i(if)e(de\014ned,)k(is)c(allo)o(w)o(ed)f(to)
-h(mo)q(dify)g(the)h(directory)f(p)q(ortion)g(of)g(\014lenames)195
-1252 y(Readline)c(completes.)26 b(It)17 b(could)h(b)q(e)g(used)g(to)f
-(expand)h(sym)o(b)q(olic)f(links)f(or)h(shell)g(v)m(ariables)g(in)195
-1306 y(pathnames.)35 b(It)20 b(is)f(called)h(with)g(the)g(address)g(of)
-g(a)g(string)f(\(the)h(curren)o(t)g(directory)f(name\))195
-1361 y(as)f(an)h(argumen)o(t,)g(and)g(ma)o(y)f(mo)q(dify)g(that)g
-(string.)30 b(If)19 b(the)g(string)f(is)g(replaced)h(with)f(a)h(new)195
-1416 y(string,)g(the)g(old)g(v)m(alue)g(should)h(b)q(e)f(freed.)33
-b(An)o(y)19 b(mo)q(di\014ed)h(directory)e(name)h(should)g(ha)o(v)o(e)g
-(a)195 1471 y(trailing)c(slash.)27 b(The)17 b(mo)q(di\014ed)h(v)m(alue)
-g(will)e(b)q(e)i(used)g(as)f(part)g(of)g(the)h(completion,)f(replacing)
-195 1526 y(the)f(directory)f(p)q(ortion)g(of)g(the)h(pathname)g(the)g
-(user)g(t)o(yp)q(ed.)22 b(A)o(t)15 b(the)h(least,)f(ev)o(en)h(if)g(no)f
-(other)195 1580 y(expansion)j(is)f(p)q(erformed,)h(this)f(function)h
-(should)g(remo)o(v)o(e)f(an)o(y)g(quote)h(c)o(haracters)f(from)g(the)
-195 1635 y(directory)d(name,)h(b)q(ecause)h(its)f(result)f(will)g(b)q
-(e)i(passed)g(directly)e(to)h Fr(opendir\(\))p Fs(.)195
-1703 y(The)e(directory)f(completion)g(ho)q(ok)h(returns)g(an)g(in)o
-(teger)f(that)g(should)h(b)q(e)h(non-zero)f(if)f(the)h(func-)195
-1758 y(tion)j(mo)q(di\014es)h(its)g(directory)f(argumen)o(t.)25
-b(The)17 b(function)g(should)g(not)g(mo)q(dify)g(the)g(directory)195
-1813 y(argumen)o(t)d(if)h(it)g(returns)g(0.)1685 1906
-y([V)l(ariable])-1801 b Fg(rl_icppfunc_t)28 b(*)e
-(rl_directory_rewrite_)q(hook;)195 1961 y Fs(If)12 b(non-zero,)h(this)f
-(is)f(the)i(address)f(of)g(a)f(function)h(to)g(call)f(when)i
-(completing)e(a)h(directory)f(name.)195 2016 y(This)i(function)g(tak)o
-(es)g(the)g(address)g(of)g(the)h(directory)e(name)i(to)e(b)q(e)i(mo)q
-(di\014ed)g(as)f(an)g(argumen)o(t.)195 2070 y(Unlik)o(e)19
-b Fr(rl_directory_completion_hoo)o(k)p Fs(,)f(it)g(only)i(mo)q
-(di\014es)f(the)h(directory)f(name)g(used)195 2125 y(in)f
-Fr(opendir)p Fs(,)e(not)i(what)f(is)g(displa)o(y)o(ed)g(when)h(the)g(p)
-q(ossible)f(completions)g(are)g(prin)o(ted)h(or)f(in-)195
-2180 y(serted.)i(It)13 b(is)g(called)g(b)q(efore)g(rl)p
-732 2180 V 20 w(directory)p 931 2180 V 19 w(completion)p
-1168 2180 V 19 w(ho)q(ok.)19 b(A)o(t)13 b(the)g(least,)f(ev)o(en)i(if)e
-(no)h(other)195 2235 y(expansion)18 b(is)f(p)q(erformed,)h(this)f
-(function)h(should)g(remo)o(v)o(e)f(an)o(y)g(quote)h(c)o(haracters)f
-(from)g(the)195 2290 y(directory)d(name,)h(b)q(ecause)h(its)f(result)f
-(will)g(b)q(e)i(passed)g(directly)e(to)h Fr(opendir\(\))p
-Fs(.)195 2357 y(The)k(directory)f(rewrite)g(ho)q(ok)h(returns)g(an)g
-(in)o(teger)f(that)g(should)h(b)q(e)h(non-zero)f(if)f(the)h(func-)195
-2412 y(tion)e(mo)q(d\014es)i(its)e(directory)g(argumen)o(t.)28
-b(The)18 b(function)g(should)g(not)g(mo)q(dify)g(the)g(directory)195
-2467 y(argumen)o(t)c(if)h(it)g(returns)g(0.)1685 2560
-y([V)l(ariable])-1801 b Fg(rl_icppfunc_t)28 b(*)e
-(rl_filename_stat_hook)195 2615 y Fs(If)15 b(non-zero,)g(this)g(is)f
-(the)h(address)h(of)e(a)h(function)g(for)f(the)h(completer)g(to)f(call)
-h(b)q(efore)g(deciding)195 2670 y(whic)o(h)g(c)o(haracter)f(to)h(app)q
-(end)h(to)e(a)h(completed)g(name.)20 b(This)15 b(function)f(mo)q
-(di\014es)i(its)e(\014lename)p eop end
-%%Page: 51 55
-TeXDict begin 51 54 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(51)195 149 y(name)18 b(argumen)o(t,)f
-(and)h(the)g(mo)q(di\014ed)g(v)m(alue)g(is)f(passed)h(to)g
-Fr(stat\(\))f Fs(to)g(determine)g(the)h(\014le's)195
-204 y(t)o(yp)q(e)i(and)h(c)o(haracteristics.)33 b(This)20
-b(function)g(do)q(es)h(not)e(need)j(to)d(remo)o(v)o(e)h(quote)g(c)o
-(haracters)195 259 y(from)14 b(the)i(\014lename.)195
-333 y(The)g(stat)f(ho)q(ok)h(returns)g(an)g(in)o(teger)g(that)f(should)
-h(b)q(e)h(non-zero)f(if)g(the)g(function)g(mo)q(d\014es)h(its)195
-388 y(directory)j(argumen)o(t.)35 b(The)21 b(function)f(should)g(not)h
-(mo)q(dify)f(the)g(directory)g(argumen)o(t)g(if)g(it)195
-443 y(returns)15 b(0.)1685 549 y([V)l(ariable])-1801
-b Fg(rl_dequote_func_t)29 b(*)d(rl_filename_rewrite_hoo)q(k)195
-604 y Fs(If)20 b(non-zero,)h(this)e(is)h(the)g(address)g(of)f(a)h
-(function)f(called)h(when)g(reading)f(directory)h(en)o(tries)195
-659 y(from)f(the)h(\014lesystem)g(for)f(completion)g(and)h(comparing)f
-(them)h(to)f(the)h(partial)f(w)o(ord)g(to)g(b)q(e)195
-714 y(completed.)g(The)14 b(function)f(should)h(p)q(erform)f(an)o(y)g
-(necessary)h(application)e(or)h(system-sp)q(eci\014c)195
-768 y(con)o(v)o(ersion)j(on)h(the)g(\014lename,)h(suc)o(h)f(as)g(con)o
-(v)o(erting)f(b)q(et)o(w)o(een)h(c)o(haracter)g(sets)f(or)h(con)o(v)o
-(erting)195 823 y(from)f(a)g(\014lesystem)h(format)e(to)h(a)g(c)o
-(haracter)g(input)h(format.)23 b(The)17 b(function)f(tak)o(es)g(t)o(w)o
-(o)f(argu-)195 878 y(men)o(ts:)24 b Fi(fname)p Fs(,)17
-b(the)g(\014lename)h(to)e(b)q(e)i(con)o(v)o(erted,)f(and)h
-Fi(fnlen)p Fs(,)f(its)g(length)f(in)i(b)o(ytes.)25 b(It)18
-b(m)o(ust)195 933 y(either)11 b(return)h(its)f(\014rst)g(argumen)o(t)g
-(\(if)f(no)i(con)o(v)o(ersion)f(tak)o(es)g(place\))g(or)g(the)h(con)o
-(v)o(erted)f(\014lename)195 988 y(in)j(newly-allo)q(cated)f(memory)l(.)
-19 b(The)c(con)o(v)o(erted)f(form)f(is)h(used)g(to)g(compare)g(against)
-e(the)j(w)o(ord)195 1042 y(to)e(b)q(e)h(completed,)g(and,)f(if)g(it)g
-(matc)o(hes,)g(is)g(added)i(to)e(the)g(list)g(of)g(matc)o(hes.)19
-b(Readline)14 b(will)e(free)195 1097 y(the)j(allo)q(cated)f(string.)
-1685 1204 y([V)l(ariable])-1801 b Fg(rl_compdisp_func_t)29
-b(*)d(rl_completion_display_)q(matches)q(_hook)195 1258
-y Fs(If)11 b(non-zero,)h(then)f(this)g(is)f(the)h(address)g(of)g(a)g
-(function)f(to)h(call)f(when)h(completing)g(a)f(w)o(ord)h(w)o(ould)195
-1313 y(normally)f(displa)o(y)g(the)h(list)f(of)h(p)q(ossible)f(matc)o
-(hes.)18 b(This)11 b(function)g(is)g(called)f(in)h(lieu)g(of)g
-(Readline)195 1368 y(displa)o(ying)17 b(the)i(list.)28
-b(It)19 b(tak)o(es)f(three)g(argumen)o(ts:)26 b(\()p
-Fr(char)14 b(**)p Fi(matc)o(hes)p Fs(,)19 b Fr(int)f
-Fi(n)o(um)p 1685 1368 14 2 v 20 w(matc)o(hes)p Fs(,)195
-1423 y Fr(int)13 b Fi(max)p 368 1423 V 19 w(length)p
-Fs(\))g(where)g Fi(matc)o(hes)i Fs(is)e(the)g(arra)o(y)f(of)h(matc)o
-(hing)f(strings,)g Fi(n)o(um)p 1575 1423 V 20 w(matc)o(hes)j
-Fs(is)e(the)195 1478 y(n)o(um)o(b)q(er)19 b(of)e(strings)g(in)i(that)e
-(arra)o(y)l(,)h(and)g Fi(max)p 1037 1478 V 20 w(length)g
-Fs(is)f(the)i(length)f(of)f(the)i(longest)e(string)195
-1532 y(in)i(that)f(arra)o(y)l(.)30 b(Readline)19 b(pro)o(vides)f(a)h
-(con)o(v)o(enience)g(function,)g Fr(rl_display_match_list)p
-Fs(,)195 1587 y(that)c(tak)o(es)g(care)h(of)g(doing)f(the)i(displa)o(y)
-e(to)g(Readline's)h(output)g(stream.)21 b(Y)l(ou)16 b(ma)o(y)g(call)f
-(that)195 1642 y(function)g(from)f(this)h(ho)q(ok.)1685
-1748 y([V)l(ariable])-1801 b Fg(const)27 b(char)g(*)f
-(rl_basic_word_break_char)q(acters)195 1803 y Fs(The)c(basic)g(list)f
-(of)h(c)o(haracters)f(that)g(signal)g(a)h(break)g(b)q(et)o(w)o(een)g(w)
-o(ords)g(for)f(the)h(completer)195 1858 y(routine.)29
-b(The)19 b(default)f(v)m(alue)h(of)f(this)g(v)m(ariable)g(is)g(the)h(c)
-o(haracters)f(whic)o(h)g(break)h(w)o(ords)f(for)195 1913
-y(completion)c(in)h(Bash:)20 b Fr(")15 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p
-Fs(.)1685 2019 y([V)l(ariable])-1801 b Fg(const)27 b(char)g(*)f
-(rl_basic_quote_character)q(s)195 2074 y Fs(A)15 b(list)f(of)h(quote)g
-(c)o(haracters)f(whic)o(h)h(can)h(cause)f(a)g(w)o(ord)g(break.)1685
-2180 y([V)l(ariable])-1801 b Fg(const)27 b(char)g(*)f
-(rl_completer_word_break_)q(charac)q(ters)195 2235 y
-Fs(The)33 b(list)e(of)h(c)o(haracters)g(that)f(signal)h(a)g(break)g(b)q
-(et)o(w)o(een)h(w)o(ords)f(for)g Fr(rl_complete_)195
-2290 y(internal\(\))p Fs(.)18 b(The)e(default)f(list)f(is)g(the)i(v)m
-(alue)f(of)g Fr(rl_basic_word_break_chara)o(cters)p Fs(.)1685
-2396 y([V)l(ariable])-1801 b Fg(rl_cpvfunc_t)28 b(*)e
-(rl_completion_word_bre)q(ak_hoo)q(k)195 2451 y Fs(If)16
-b(non-zero,)g(this)f(is)g(the)h(address)g(of)f(a)h(function)f(to)g
-(call)g(when)i(Readline)f(is)f(deciding)h(where)195 2506
-y(to)h(separate)f(w)o(ords)h(for)f(w)o(ord)g(completion.)25
-b(It)18 b(should)f(return)g(a)g(c)o(haracter)f(string)g(lik)o(e)g
-Fr(rl_)195 2560 y(completer_word_break_chara)o(cters)d
-Fs(to)j(b)q(e)h(used)g(to)f(p)q(erform)g(the)h(curren)o(t)f
-(completion.)195 2615 y(The)d(function)f(ma)o(y)f(c)o(ho)q(ose)i(to)f
-(set)g Fr(rl_completer_word_break_)o(charact)o(ers)d
-Fs(itself.)18 b(If)13 b(the)195 2670 y(function)i(returns)g
-Fr(NULL)p Fs(,)f Fr(rl_completer_word_break_chara)o(cters)e
-Fs(is)j(used.)p eop end
-%%Page: 52 56
-TeXDict begin 52 55 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(52)1685 149 y([V)l(ariable])-1801
-b Fg(const)27 b(char)g(*)f(rl_completer_quote_chara)q(cters)195
-204 y Fs(A)17 b(list)f(of)g(c)o(haracters)g(whic)o(h)h(can)g(b)q(e)g
-(used)h(to)e(quote)h(a)f(substring)g(of)h(the)g(line.)24
-b(Completion)195 259 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)f
-(substring,)h(and)g(within)g(the)g(substring)f Fr
-(rl_completer_word_break_)195 314 y(characters)k Fs(are)h(treated)g(as)
-h(an)o(y)f(other)g(c)o(haracter,)g(unless)h(they)f(also)g(app)q(ear)h
-(within)f(this)195 369 y(list.)1685 471 y([V)l(ariable])-1801
-b Fg(const)27 b(char)g(*)f(rl_filename_quote_charac)q(ters)195
-526 y Fs(A)17 b(list)f(of)g(c)o(haracters)g(that)g(cause)h(a)g
-(\014lename)g(to)f(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)g(when)g
-(they)195 581 y(app)q(ear)e(in)g(a)g(completed)g(\014lename.)20
-b(The)c(default)f(is)f(the)i(n)o(ull)e(string.)1685 684
-y([V)l(ariable])-1801 b Fg(const)27 b(char)g(*)f(rl_special_prefixes)
-195 738 y Fs(The)14 b(list)f(of)g(c)o(haracters)g(that)g(are)h(w)o(ord)
-f(break)h(c)o(haracters,)f(but)h(should)g(b)q(e)g(left)f(in)h
-Fi(text)g Fs(when)195 793 y(it)e(is)f(passed)i(to)f(the)g(completion)f
-(function.)19 b(Programs)11 b(can)h(use)h(this)f(to)g(help)g(determine)
-h(what)195 848 y(kind)h(of)f(completing)g(to)h(do.)19
-b(F)l(or)13 b(instance,)h(Bash)g(sets)f(this)h(v)m(ariable)f(to)g
-Fr(")p Fs($@)p Fr(")h Fs(so)f(that)h(it)f(can)195 903
-y(complete)i(shell)g(v)m(ariables)f(and)i(hostnames.)1685
-1006 y([V)l(ariable])-1801 b Fg(int)27 b(rl_completion_query_items)195
-1060 y Fs(Up)18 b(to)g(this)f(man)o(y)h(items)f(will)g(b)q(e)i(displa)o
-(y)o(ed)e(in)h(resp)q(onse)h(to)e(a)h(p)q(ossible-completions)f(call.)
-195 1115 y(After)d(that,)f(readline)g(asks)h(the)g(user)g(if)f(she)h
-(is)g(sure)g(she)g(w)o(an)o(ts)f(to)g(see)h(them)g(all.)k(The)c
-(default)195 1170 y(v)m(alue)h(is)g(100.)k(A)c(negativ)o(e)g(v)m(alue)g
-(indicates)g(that)f(Readline)i(should)f(nev)o(er)g(ask)g(the)g(user.)
-1685 1273 y([V)l(ariable])-1801 b Fg(int)27 b
-(rl_completion_append_chara)q(cter)195 1328 y Fs(When)17
-b(a)f(single)g(completion)g(alternativ)o(e)f(matc)o(hes)h(at)g(the)h
-(end)g(of)f(the)h(command)f(line,)h(this)195 1382 y(c)o(haracter)10
-b(is)g(app)q(ended)j(to)d(the)g(inserted)h(completion)f(text.)18
-b(The)11 b(default)f(is)g(a)h(space)g(c)o(haracter)195
-1437 y(\(`)j('\).)42 b(Setting)22 b(this)g(to)g(the)h(n)o(ull)f(c)o
-(haracter)g(\(`)p Fr(\\0)p Fs('\))f(prev)o(en)o(ts)i(an)o(ything)e(b)q
-(eing)i(app)q(ended)195 1492 y(automatically)l(.)29 b(This)18
-b(can)h(b)q(e)h(c)o(hanged)f(in)f(application-sp)q(eci\014c)h
-(completion)f(functions)h(to)195 1547 y(pro)o(vide)g(the)h(\\most)f
-(sensible)h(w)o(ord)f(separator)g(c)o(haracter")g(according)g(to)g(an)h
-(application-)195 1601 y(sp)q(eci\014c)c(command)f(line)g(syn)o(tax)f
-(sp)q(eci\014cation.)1685 1704 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_completion_suppress_app)q(end)195 1759
-y Fs(If)17 b(non-zero,)g Fi(rl)p 475 1759 14 2 v 19 w(completion)p
-712 1759 V 19 w(app)q(end)p 875 1759 V 22 w(c)o(haracter)i
-Fs(is)d(not)g(app)q(ended)i(to)e(matc)o(hes)h(at)f(the)g(end)195
-1814 y(of)d(the)h(command)g(line,)f(as)h(describ)q(ed)g(ab)q(o)o(v)o
-(e.)19 b(It)14 b(is)g(set)f(to)g(0)h(b)q(efore)g(an)o(y)f
-(application-sp)q(eci\014c)195 1869 y(completion)h(function)h(is)g
-(called,)f(and)i(ma)o(y)e(only)h(b)q(e)h(c)o(hanged)f(within)g(suc)o(h)
-g(a)g(function.)1685 1971 y([V)l(ariable])-1801 b Fg(int)27
-b(rl_completion_quote_charac)q(ter)195 2026 y Fs(When)18
-b(Readline)h(is)e(completing)h(quoted)g(text,)g(as)f(delimited)h(b)o(y)
-g(one)g(of)g(the)g(c)o(haracters)f(in)195 2081 y Fi(rl)p
-229 2081 V 19 w(completer)p 443 2081 V 20 w(quote)p 573
-2081 V 20 w(c)o(haracters)p Fs(,)i(it)g(sets)g(this)g(v)m(ariable)g(to)
-g(the)h(quoting)e(c)o(haracter)h(found.)195 2136 y(This)c(is)f(set)h(b)
-q(efore)h(an)o(y)f(application-sp)q(eci\014c)g(completion)f(function)h
-(is)g(called.)1685 2238 y([V)l(ariable])-1801 b Fg(int)27
-b(rl_completion_suppress_quo)q(te)195 2293 y Fs(If)16
-b(non-zero,)h(Readline)f(do)q(es)h(not)e(app)q(end)j(a)d(matc)o(hing)h
-(quote)g(c)o(haracter)f(when)i(p)q(erforming)195 2348
-y(completion)11 b(on)h(a)f(quoted)h(string.)18 b(It)11
-b(is)h(set)f(to)g(0)h(b)q(efore)g(an)o(y)f(application-sp)q(eci\014c)h
-(completion)195 2403 y(function)j(is)g(called,)f(and)i(ma)o(y)e(only)h
-(b)q(e)h(c)o(hanged)f(within)g(suc)o(h)g(a)g(function.)1685
-2506 y([V)l(ariable])-1801 b Fg(int)27 b(rl_completion_found_quote)195
-2560 y Fs(When)16 b(Readline)g(is)g(completing)f(quoted)g(text,)h(it)f
-(sets)g(this)g(v)m(ariable)h(to)f(a)g(non-zero)h(v)m(alue)g(if)195
-2615 y(the)11 b(w)o(ord)e(b)q(eing)i(completed)g(con)o(tains)e(or)i(is)
-f(delimited)f(b)o(y)i(an)o(y)f(quoting)g(c)o(haracters,)g(including)195
-2670 y(bac)o(kslashes.)19 b(This)c(is)g(set)g(b)q(efore)g(an)o(y)g
-(application-sp)q(eci\014c)g(completion)f(function)h(is)g(called.)p
-eop end
-%%Page: 53 57
-TeXDict begin 53 56 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(53)1685 149 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_completion_mark_symlink)q(_dirs)195
-204 y Fs(If)16 b(non-zero,)g(a)g(slash)f(will)g(b)q(e)h(app)q(ended)i
-(to)d(completed)h(\014lenames)g(that)f(are)g(sym)o(b)q(olic)h(links)195
-259 y(to)11 b(directory)h(names,)g(sub)s(ject)g(to)f(the)i(v)m(alue)f
-(of)g(the)g(user-settable)f Fi(mark-directories)i Fs(v)m(ariable.)195
-314 y(This)g(v)m(ariable)g(exists)g(so)h(that)f(application-sp)q
-(eci\014c)g(completion)g(functions)g(can)h(o)o(v)o(erride)f(the)195
-369 y(user's)21 b(global)f(preference)i(\(set)e(via)h(the)g
-Fi(mark-symlink)o(ed-directories)g Fs(Readline)h(v)m(ariable\))195
-423 y(if)c(appropriate.)30 b(This)18 b(v)m(ariable)g(is)h(set)f(to)g
-(the)h(user's)g(preference)h(b)q(efore)f(an)o(y)f(application-)195
-478 y(sp)q(eci\014c)f(completion)e(function)g(is)h(called,)f(so)g
-(unless)h(that)f(function)h(mo)q(di\014es)g(the)g(v)m(alue,)g(the)195
-533 y(user's)f(preferences)h(are)f(honored.)1685 652
-y([V)l(ariable])-1801 b Fg(int)27 b(rl_ignore_completion_dupli)q(cates)
-195 707 y Fs(If)15 b(non-zero,)h(then)f(duplicates)g(in)g(the)g(matc)o
-(hes)g(are)g(remo)o(v)o(ed.)k(The)d(default)f(is)f(1.)1685
-825 y([V)l(ariable])-1801 b Fg(int)27 b(rl_filename_completion_des)q
-(ired)195 880 y Fs(Non-zero)16 b(means)g(that)f(the)h(results)f(of)h
-(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g(\014lenames.)22
-b(This)195 935 y(is)d Fj(always)24 b Fs(zero)c(when)g(completion)f(is)h
-(attempted,)g(and)g(can)g(only)g(b)q(e)h(c)o(hanged)f(within)f(an)195
-990 y(application-sp)q(eci\014c)g(completion)g(function.)34
-b(If)20 b(it)e(is)i(set)f(to)g(a)h(non-zero)g(v)m(alue)g(b)o(y)f(suc)o
-(h)h(a)195 1044 y(function,)11 b(directory)g(names)g(ha)o(v)o(e)g(a)f
-(slash)h(app)q(ended)i(and)e(Readline)g(attempts)g(to)f(quote)h(com-)
-195 1099 y(pleted)18 b(\014lenames)f(if)g(they)h(con)o(tain)f(an)o(y)g
-(c)o(haracters)f(in)i Fr(rl_filename_quote_charact)o(ers)195
-1154 y Fs(and)d Fr(rl_filename_quoting_desired)d Fs(is)j(set)g(to)f(a)h
-(non-zero)g(v)m(alue.)1685 1273 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_filename_quoting_desire)q(d)195 1328
-y Fs(Non-zero)14 b(means)g(that)f(the)i(results)e(of)h(the)g(matc)o
-(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)g(double)g(quotes)195
-1382 y(\(or)20 b(an)i(application-sp)q(eci\014c)e(quoting)h(mec)o
-(hanism\))f(if)h(the)g(completed)h(\014lename)f(con)o(tains)195
-1437 y(an)o(y)13 b(c)o(haracters)h(in)f Fr(rl_filename_quote_chars)p
-Fs(.)j(This)e(is)f Fj(always)18 b Fs(non-zero)c(when)g(comple-)195
-1492 y(tion)f(is)g(attempted,)h(and)g(can)g(only)f(b)q(e)h(c)o(hanged)h
-(within)e(an)g(application-sp)q(eci\014c)h(completion)195
-1547 y(function.)k(The)11 b(quoting)f(is)g(e\013ected)g(via)g(a)g(call)
-g(to)g(the)h(function)f(p)q(oin)o(ted)g(to)g(b)o(y)h
-Fr(rl_filename_)195 1601 y(quoting_function)p Fs(.)1685
-1720 y([V)l(ariable])-1801 b Fg(int)27 b(rl_attempted_completion_ov)q
-(er)195 1775 y Fs(If)47 b(an)g(application-sp)q(eci\014c)g(completion)f
-(function)h(assigned)f(to)h Fr(rl_attempted_)195 1830
-y(completion_function)24 b Fs(sets)i(this)g(v)m(ariable)g(to)g(a)g
-(non-zero)h(v)m(alue,)i(Readline)e(will)e(not)195 1885
-y(p)q(erform)15 b(its)f(default)g(\014lename)h(completion)f(ev)o(en)h
-(if)f(the)h(application's)e(completion)h(function)195
-1939 y(returns)h(no)g(matc)o(hes.)20 b(It)15 b(should)g(b)q(e)h(set)f
-(only)g(b)o(y)g(an)g(application's)e(completion)i(function.)1685
-2058 y([V)l(ariable])-1801 b Fg(int)27 b(rl_sort_completion_matches)195
-2113 y Fs(If)15 b(an)g(application)f(sets)g(this)h(v)m(ariable)f(to)g
-(0,)g(Readline)i(will)d(not)i(sort)f(the)h(list)e(of)i(completions)195
-2168 y(\(whic)o(h)d(implies)f(that)h(it)f(cannot)h(remo)o(v)o(e)g(an)o
-(y)g(duplicate)g(completions\).)18 b(The)12 b(default)g(v)m(alue)g(is)
-195 2222 y(1,)j(whic)o(h)g(means)h(that)f(Readline)h(will)e(sort)h(the)
-g(completions)g(and,)h(dep)q(ending)g(on)g(the)g(v)m(alue)195
-2277 y(of)f Fr(rl_ignore_completion_dup)o(licates)p Fs(,)c(will)j
-(attempt)g(to)h(remo)o(v)o(e)f(duplicate)h(matc)o(hes.)1685
-2396 y([V)l(ariable])-1801 b Fg(int)27 b(rl_completion_type)195
-2451 y Fs(Set)18 b(to)e(a)i(c)o(haracter)f(describing)g(the)g(t)o(yp)q
-(e)h(of)f(completion)g(Readline)h(is)f(curren)o(tly)g(attempt-)195
-2506 y(ing;)g(see)g(the)f(description)g(of)h Fr
-(rl_complete_internal\(\))c Fs(\(see)k(Section)g(2.6.2)e([Completion)
-195 2560 y(F)l(unctions],)j(page)g(48\))g(for)f(the)i(list)e(of)h(c)o
-(haracters.)28 b(This)18 b(is)g(set)g(to)g(the)g(appropriate)g(v)m
-(alue)195 2615 y(b)q(efore)e(an)o(y)g(application-sp)q(eci\014c)f
-(completion)g(function)h(is)f(called,)g(allo)o(wing)f(suc)o(h)i
-(functions)195 2670 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)f(as)
-h Fr(rl_complete\(\))p Fs(.)p eop end
-%%Page: 54 58
-TeXDict begin 54 57 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(54)1685 149 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_completion_invoking_key)195 204 y Fs(Set)20
-b(to)g(the)h(\014nal)f(c)o(haracter)f(in)i(the)f(k)o(ey)g(sequence)i
-(that)d(in)o(v)o(ok)o(ed)h(one)g(of)g(the)h(completion)195
-259 y(functions)e(that)f(call)f Fr(rl_complete_internal\(\))p
-Fs(.)28 b(This)18 b(is)h(set)f(to)g(the)h(appropriate)f(v)m(alue)195
-314 y(b)q(efore)d(an)o(y)g(application-sp)q(eci\014c)g(completion)g
-(function)g(is)f(called.)1685 406 y([V)l(ariable])-1801
-b Fg(int)27 b(rl_inhibit_completion)195 461 y Fs(If)14
-b(this)g(v)m(ariable)f(is)h(non-zero,)g(completion)g(is)f(inhibited.)19
-b(The)c(completion)e(c)o(haracter)g(will)g(b)q(e)195
-516 y(inserted)i(as)g(an)o(y)g(other)g(b)q(ound)h(to)e
-Fr(self-insert)p Fs(.)75 615 y Fh(2.6.4)30 b(A)21 b(Short)f(Completion)
-g(Example)75 689 y Fs(Here)15 b(is)f(a)g(small)f(application)g
-(demonstrating)h(the)g(use)h(of)f(the)h(GNU)f(Readline)h(library)l(.)k
-(It)14 b(is)g(called)75 743 y Fr(fileman)p Fs(,)20 b(and)g(the)g
-(source)f(co)q(de)i(resides)f(in)f Fr(examples/fileman.c)p
-Fs(.)31 b(This)20 b(sample)f(application)75 798 y(pro)o(vides)13
-b(completion)f(of)g(command)h(names,)g(line)g(editing)g(features,)f
-(and)i(access)f(to)f(the)h(history)g(list.)p eop end
-%%Page: 55 59
-TeXDict begin 55 58 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(55)195 149 y Fe(/*)19 b(fileman.c)d(--)j
-(A)g(tiny)f(applicatio)o(n)e(which)i(demonstrat)o(es)e(how)j(to)f(use)h
-(the)254 193 y(GNU)f(Readline)f(library.)36 b(This)18
-b(applicatio)o(n)e(interactive)o(ly)g(allows)h(users)254
-237 y(to)i(manipulat)o(e)d(files)i(and)h(their)e(modes.)h(*/)195
-324 y(#ifdef)f(HAVE_CONFI)o(G_H)195 367 y(#)39 b(include)17
-b(<config.h)o(>)195 411 y(#endif)195 498 y(#include)g(<sys/typ)o(es.)o
-(h>)195 542 y(#ifdef)g(HAVE_SYS_F)o(ILE)o(_H)195 585
-y(#)39 b(include)17 b(<sys/file)o(.h)o(>)195 629 y(#endif)195
-672 y(#include)g(<sys/sta)o(t.h)o(>)195 760 y(#ifdef)g(HAVE_UNIST)o
-(D_H)195 803 y(#)39 b(include)17 b(<unistd.h)o(>)195
-847 y(#endif)195 934 y(#include)g(<fcntl.h)o(>)195 978
-y(#include)g(<stdio.h)o(>)195 1021 y(#include)g(<errno.h)o(>)195
-1108 y(#if)h(defined)f(\(HAVE_STRI)o(NG_)o(H\))195 1152
-y(#)39 b(include)17 b(<string.h)o(>)195 1196 y(#else)h(/*)h(!HAVE_ST)o
-(RIN)o(G_)o(H)e(*/)195 1239 y(#)39 b(include)17 b(<strings.)o(h>)195
-1283 y(#endif)g(/*)i(!HAVE_STRI)o(NG)o(_H)d(*/)195 1370
-y(#ifdef)h(HAVE_STDLI)o(B_H)195 1413 y(#)39 b(include)17
-b(<stdlib.h)o(>)195 1457 y(#endif)195 1544 y(#include)g(<time.h>)195
-1631 y(#include)g(<readlin)o(e/r)o(ea)o(dli)o(ne.)o(h>)195
-1675 y(#include)g(<readlin)o(e/h)o(is)o(tor)o(y.h)o(>)195
-1762 y(extern)g(char)h(*xmalloc)f(PARAMS\(\(s)o(ize)o(_t)o(\)\);)195
-1849 y(/*)i(The)f(names)g(of)h(functions)d(that)i(actually)f(do)h(the)h
-(manipulat)o(ion)o(.)d(*/)195 1893 y(int)i(com_list)f(PARAMS\(\(c)o
-(har)f(*\)\);)195 1936 y(int)i(com_view)f(PARAMS\(\(c)o(har)f(*\)\);)
-195 1980 y(int)i(com_rename)e(PARAMS\(\(ch)o(ar)g(*\)\);)195
-2024 y(int)i(com_stat)f(PARAMS\(\(c)o(har)f(*\)\);)195
-2067 y(int)i(com_pwd)f(PARAMS\(\(ch)o(ar)f(*\)\);)195
-2111 y(int)i(com_delete)e(PARAMS\(\(ch)o(ar)g(*\)\);)195
-2154 y(int)i(com_help)f(PARAMS\(\(c)o(har)f(*\)\);)195
-2198 y(int)i(com_cd)g(PARAMS\(\(c)o(ha)o(r)f(*\)\);)195
-2242 y(int)h(com_quit)f(PARAMS\(\(c)o(har)f(*\)\);)195
-2329 y(/*)j(A)g(structure)d(which)i(contains)e(information)g(on)j(the)f
-(commands)f(this)h(program)254 2372 y(can)g(understand)o(.)f(*/)195
-2460 y(typedef)g(struct)g({)234 2503 y(char)h(*name;)g(/*)g(User)g
-(printable)f(name)h(of)h(the)f(function.)e(*/)234 2547
-y(rl_icpfunc)o(_t)g(*func;)h(/*)i(Function)e(to)i(call)f(to)h(do)f(the)
-h(job.)f(*/)234 2590 y(char)g(*doc;)g(/*)h(Documenta)o(tio)o(n)d(for)j
-(this)f(function.)36 b(*/)195 2634 y(})19 b(COMMAND;)p
-eop end
-%%Page: 56 60
-TeXDict begin 56 59 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(56)195 193 y Fe(COMMAND)17
-b(commands[)o(])g(=)i({)234 237 y({)g("cd",)f(com_cd,)f("Change)g(to)i
-(directory)d(DIR")i(},)234 280 y({)h("delete",)e(com_dele)o(te,)f
-("Delete)h(FILE")h(},)234 324 y({)h("help",)e(com_help,)f("Display)h
-(this)h(text")g(},)234 367 y({)h("?",)g(com_help)o(,)e("Synonym)f(for)j
-(`help'")e(},)234 411 y({)i("list",)e(com_list,)f("List)i(files)g(in)h
-(DIR")f(},)234 455 y({)h("ls",)f(com_list,)e("Synonym)h(for)h(`list'")f
-(},)234 498 y({)i("pwd",)f(com_pwd,)e("Print)i(the)g(current)f(working)
-g(directory)o(")g(},)234 542 y({)i("quit",)e(com_quit,)f("Quit)i(using)
-g(Fileman")e(},)234 585 y({)j("rename",)e(com_rena)o(me,)f("Rename)h
-(FILE)h(to)h(NEWNAME")d(},)234 629 y({)j("stat",)e(com_stat,)f("Print)i
-(out)g(statistics)e(on)j(FILE")f(},)234 672 y({)h("view",)e(com_view,)f
-("View)i(the)h(contents)d(of)j(FILE")f(},)234 716 y({)h(\(char)f
-(*\)NULL,)f(\(rl_icpfun)o(c_)o(t)g(*\)NULL,)g(\(char)g(*\)NULL)h(})195
-760 y(};)195 847 y(/*)h(Forward)e(declarati)o(on)o(s.)f(*/)195
-890 y(char)i(*stripwhit)o(e)e(\(\);)195 934 y(COMMAND)h(*find_com)o
-(man)o(d)f(\(\);)195 1021 y(/*)j(The)f(name)g(of)h(this)f(program,)f
-(as)i(taken)e(from)h(argv[0].)f(*/)195 1065 y(char)h(*progname;)195
-1152 y(/*)h(When)f(non-zero,)e(this)i(global)f(means)h(the)h(user)f(is)
-g(done)h(using)e(this)h(program.)f(*/)195 1196 y(int)h(done;)195
-1283 y(char)g(*)195 1326 y(dupstr)f(\(s\))293 1370 y(char)h(*s;)195
-1413 y({)234 1457 y(char)g(*r;)234 1544 y(r)h(=)h(xmalloc)d(\(strlen)f
-(\(s\))j(+)g(1\);)234 1588 y(strcpy)f(\(r,)g(s\);)234
-1631 y(return)g(\(r\);)195 1675 y(})195 1762 y(main)g(\(argc,)f(argv\))
-293 1806 y(int)i(argc;)293 1849 y(char)f(**argv;)195
-1893 y({)234 1936 y(char)g(*line,)g(*s;)234 2024 y(progname)f(=)i
-(argv[0];)234 2111 y(initialize)o(_re)o(ad)o(lin)o(e)d(\(\);)j(/*)g
-(Bind)f(our)g(completer.)e(*/)234 2198 y(/*)j(Loop)f(reading)f(and)h
-(executing)f(lines)g(until)h(the)g(user)h(quits.)e(*/)234
-2242 y(for)i(\()g(;)g(done)f(==)h(0;)g(\))273 2285 y({)313
-2329 y(line)f(=)h(readline)d(\("FileMan:)g("\);)313 2416
-y(if)j(\(!line\))352 2460 y(break;)313 2547 y(/*)g(Remove)e(leading)g
-(and)h(trailing)f(whitespac)o(e)f(from)j(the)f(line.)372
-2590 y(Then,)f(if)i(there)f(is)h(anything)d(left,)i(add)g(it)h(to)g
-(the)f(history)f(list)372 2634 y(and)h(execute)f(it.)h(*/)p
-eop end
-%%Page: 57 61
-TeXDict begin 57 60 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(57)313 149 y Fe(s)19 b(=)g(stripwhite)d
-(\(line\);)313 237 y(if)j(\(*s\))352 280 y({)391 324
-y(add_histor)o(y)d(\(s\);)391 367 y(execute_li)o(ne)g(\(s\);)352
-411 y(})313 498 y(free)i(\(line\);)273 542 y(})234 585
-y(exit)g(\(0\);)195 629 y(})195 716 y(/*)h(Execute)e(a)i(command)e
-(line.)h(*/)195 760 y(int)195 803 y(execute_li)o(ne)e(\(line\))293
-847 y(char)i(*line;)195 890 y({)234 934 y(register)f(int)h(i;)234
-978 y(COMMAND)f(*command;)234 1021 y(char)h(*word;)234
-1108 y(/*)h(Isolate)e(the)h(command)f(word.)h(*/)234
-1152 y(i)h(=)h(0;)234 1196 y(while)e(\(line[i])e(&&)j(whitespace)d
-(\(line[i]\)\))273 1239 y(i++;)234 1283 y(word)i(=)i(line)e(+)h(i;)234
-1370 y(while)f(\(line[i])e(&&)j(!whitespac)o(e)e(\(line[i]\))o(\))273
-1413 y(i++;)234 1501 y(if)i(\(line[i]\))273 1544 y(line[i++])e(=)i
-('\\0';)234 1631 y(command)e(=)i(find_comma)o(nd)d(\(word\);)234
-1719 y(if)j(\(!command\))273 1762 y({)313 1806 y(fprintf)e(\(stderr,)f
-("\045s:)i(No)h(such)f(command)f(for)h(FileMan.\\n")o(,)e(word\);)313
-1849 y(return)h(\(-1\);)273 1893 y(})234 1980 y(/*)i(Get)g(argument)d
-(to)j(command,)d(if)j(any.)f(*/)234 2024 y(while)g(\(whitespa)o(ce)e
-(\(line[i]\)\))273 2067 y(i++;)234 2154 y(word)i(=)i(line)e(+)h(i;)234
-2242 y(/*)g(Call)f(the)h(function)o(.)e(*/)234 2285 y(return)h
-(\(\(*\(comm)o(and)o(->)o(fun)o(c\)\))e(\(word\)\);)195
-2329 y(})195 2416 y(/*)j(Look)f(up)h(NAME)f(as)h(the)f(name)g(of)h(a)g
-(command,)e(and)h(return)g(a)h(pointer)e(to)i(that)254
-2460 y(command.)36 b(Return)17 b(a)i(NULL)g(pointer)d(if)j(NAME)f
-(isn't)g(a)h(command)e(name.)h(*/)195 2503 y(COMMAND)f(*)195
-2547 y(find_comma)o(nd)f(\(name\))293 2590 y(char)i(*name;)195
-2634 y({)p eop end
-%%Page: 58 62
-TeXDict begin 58 61 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(58)234 149 y Fe(register)17
-b(int)h(i;)234 237 y(for)h(\(i)g(=)g(0;)g(commands)o([i])o(.na)o(me)o
-(;)e(i++\))273 280 y(if)i(\(strcmp)e(\(name,)g(commands[i])o(.n)o(ame)o
-(\))g(==)h(0\))313 324 y(return)f(\(&command)o(s[i)o(]\);)234
-411 y(return)h(\(\(COMMAN)o(D)f(*\)NULL\);)195 455 y(})195
-542 y(/*)i(Strip)f(whitespa)o(ce)e(from)i(the)h(start)e(and)i(end)f(of)
-h(STRING.)37 b(Return)17 b(a)i(pointer)254 585 y(into)f(STRING.)f(*/)
-195 629 y(char)h(*)195 672 y(stripwhite)e(\(string\))293
-716 y(char)i(*string;)195 760 y({)234 803 y(register)f(char)h(*s,)g
-(*t;)234 890 y(for)h(\(s)g(=)g(string;)e(whitespac)o(e)f(\(*s\);)i
-(s++\))273 934 y(;)234 1021 y(if)h(\(*s)g(==)f(0\))273
-1065 y(return)g(\(s\);)234 1152 y(t)h(=)h(s)f(+)g(strlen)e(\(s\))i(-)g
-(1;)234 1196 y(while)f(\(t)h(>)g(s)g(&&)g(whitespace)d(\(*t\)\))273
-1239 y(t--;)234 1283 y(*++t)i(=)i('\\0';)234 1370 y(return)e(s;)195
-1413 y(})195 1501 y(/*)h(*********)o(***)o(**)o(***)o(**)o(***)o(***)o
-(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)
-o(***)o(***)d(*/)195 1544 y(/*)1294 b(*/)195 1588 y(/*)352
-b(Interface)16 b(to)j(Readline)e(Completio)o(n)311 b(*/)195
-1631 y(/*)1294 b(*/)195 1675 y(/*)19 b(*********)o(***)o(**)o(***)o(**)
-o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o
-(**)o(***)o(**)o(***)o(***)d(*/)195 1762 y(char)i(*command_g)o(en)o
-(era)o(to)o(r)f(PARAMS\(\(c)o(on)o(st)f(char)i(*,)h(int\)\);)195
-1806 y(char)f(**fileman_)o(co)o(mpl)o(et)o(ion)e(PARAMS\(\(c)o(ons)o(t)
-h(char)h(*,)g(int,)h(int\)\);)195 1893 y(/*)g(Tell)f(the)g(GNU)h
-(Readline)d(library)h(how)i(to)g(complete)o(.)36 b(We)19
-b(want)f(to)h(try)g(to)f(complete)254 1936 y(on)h(command)e(names)g(if)
-i(this)f(is)h(the)f(first)g(word)g(in)h(the)g(line,)e(or)i(on)g
-(filenames)254 1980 y(if)g(not.)f(*/)195 2024 y(initialize)o(_r)o(ead)o
-(li)o(ne)e(\(\))195 2067 y({)234 2111 y(/*)j(Allow)f(condition)o(al)e
-(parsing)h(of)i(the)f(~/.inputrc)e(file.)i(*/)234 2154
-y(rl_readlin)o(e_n)o(am)o(e)f(=)i("FileMan")o(;)234 2242
-y(/*)g(Tell)f(the)h(complete)o(r)e(that)h(we)h(want)f(a)h(crack)f
-(first.)f(*/)234 2285 y(rl_attempt)o(ed_)o(co)o(mpl)o(et)o(ion)o(_fu)o
-(nc)o(tio)o(n)f(=)k(fileman_c)o(om)o(ple)o(tio)o(n;)195
-2329 y(})195 2416 y(/*)f(Attempt)e(to)i(complete)d(on)j(the)f(contents)
-f(of)i(TEXT.)37 b(START)18 b(and)g(END)h(bound)e(the)254
-2460 y(region)g(of)i(rl_line_b)o(uff)o(er)d(that)i(contains)f(the)h
-(word)g(to)h(complete.)36 b(TEXT)18 b(is)254 2503 y(the)g(word)g(to)h
-(complete.)36 b(We)19 b(can)f(use)h(the)f(entire)f(contents)g(of)i
-(rl_line_b)o(uff)o(er)254 2547 y(in)g(case)f(we)h(want)f(to)g(do)h
-(some)f(simple)g(parsing.)36 b(Return)17 b(the)i(array)e(of)i(matches,)
-254 2590 y(or)g(NULL)f(if)h(there)e(aren't)h(any.)g(*/)195
-2634 y(char)g(**)p eop end
-%%Page: 59 63
-TeXDict begin 59 62 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(59)195 149 y Fe(fileman_co)o(mp)o(let)o
-(io)o(n)17 b(\(text,)g(start,)g(end\))293 193 y(const)h(char)g(*text;)
-293 237 y(int)h(start,)e(end;)195 280 y({)234 324 y(char)h(**matches;)
-234 411 y(matches)f(=)i(\(char)f(**\)NULL;)234 498 y(/*)h(If)g(this)f
-(word)g(is)h(at)g(the)f(start)g(of)h(the)f(line,)g(then)g(it)h(is)g(a)g
-(command)293 542 y(to)g(complete.)36 b(Otherwise)16 b(it)j(is)f(the)h
-(name)f(of)h(a)g(file)f(in)h(the)f(current)293 585 y(directory.)e(*/)
-234 629 y(if)j(\(start)e(==)i(0\))273 672 y(matches)e(=)j(rl_compl)o
-(eti)o(on_)o(ma)o(tch)o(es)c(\(text,)h(command_gen)o(er)o(ato)o(r\))o
-(;)234 760 y(return)h(\(matches)o(\);)195 803 y(})195
-890 y(/*)h(Generator)d(function)g(for)j(command)e(completio)o(n.)36
-b(STATE)18 b(lets)g(us)g(know)h(whether)254 934 y(to)g(start)e(from)h
-(scratch;)f(without)g(any)h(state)g(\(i.e.)g(STATE)f(==)i(0\),)g(then)f
-(we)254 978 y(start)g(at)g(the)h(top)f(of)h(the)g(list.)e(*/)195
-1021 y(char)h(*)195 1065 y(command_ge)o(ne)o(rat)o(or)e(\(text,)h
-(state\))293 1108 y(const)h(char)g(*text;)293 1152 y(int)h(state;)195
-1196 y({)234 1239 y(static)f(int)g(list_inde)o(x,)e(len;)234
-1283 y(char)i(*name;)234 1370 y(/*)h(If)g(this)f(is)h(a)g(new)f(word)h
-(to)f(complete,)f(initiali)o(ze)f(now.)38 b(This)18 b(includes)293
-1413 y(saving)f(the)i(length)e(of)i(TEXT)f(for)g(efficiency,)e(and)i
-(initializi)o(ng)e(the)j(index)293 1457 y(variable)e(to)h(0.)h(*/)234
-1501 y(if)g(\(!state\))273 1544 y({)313 1588 y(list_inde)o(x)d(=)k(0;)
-313 1631 y(len)e(=)h(strlen)f(\(text\);)273 1675 y(})234
-1762 y(/*)h(Return)e(the)i(next)f(name)g(which)g(partially)e(matches)h
-(from)h(the)g(command)f(list.)h(*/)234 1806 y(while)g(\(name)g(=)h
-(commands[)o(lis)o(t_)o(ind)o(ex)o(].n)o(ame)o(\))273
-1849 y({)313 1893 y(list_inde)o(x+)o(+;)313 1980 y(if)g(\(strncmp)d
-(\(name,)h(text,)h(len\))g(==)h(0\))352 2024 y(return)e(\(dupstr\(na)o
-(me\))o(\);)273 2067 y(})234 2154 y(/*)i(If)g(no)g(names)e(matched,)g
-(then)h(return)f(NULL.)h(*/)234 2198 y(return)g(\(\(char)f(*\)NULL\);)
-195 2242 y(})195 2329 y(/*)i(*********)o(***)o(**)o(***)o(**)o(***)o
-(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o
-(***)o(**)o(***)o(***)d(*/)195 2372 y(/*)1294 b(*/)195
-2416 y(/*)450 b(FileMan)17 b(Commands)527 b(*/)195 2460
-y(/*)1294 b(*/)195 2503 y(/*)19 b(*********)o(***)o(**)o(***)o(**)o
-(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o
-(**)o(***)o(**)o(***)o(***)d(*/)195 2590 y(/*)j(String)e(to)i(pass)f
-(to)h(system)e(\(\).)38 b(This)18 b(is)h(for)g(the)f(LIST,)g(VIEW)g
-(and)g(RENAME)254 2634 y(commands.)e(*/)p eop end
-%%Page: 60 64
-TeXDict begin 60 63 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(60)195 149 y Fe(static)17
-b(char)h(syscom[102)o(4];)195 237 y(/*)h(List)f(the)g(file\(s\))f
-(named)h(in)h(arg.)f(*/)195 280 y(com_list)f(\(arg\))293
-324 y(char)h(*arg;)195 367 y({)234 411 y(if)h(\(!arg\))273
-455 y(arg)g(=)g("";)234 542 y(sprintf)e(\(syscom,)g("ls)h(-FClg)g
-(\045s",)g(arg\);)234 585 y(return)g(\(system)e(\(syscom\)\);)195
-629 y(})195 716 y(com_view)h(\(arg\))293 760 y(char)h(*arg;)195
-803 y({)234 847 y(if)h(\(!valid_ar)o(gu)o(men)o(t)d(\("view",)h
-(arg\)\))273 890 y(return)h(1;)195 978 y(#if)g(defined)f(\(__MSDOS__)o
-(\))234 1021 y(/*)i(more.com)e(doesn't)f(grok)j(slashes)d(in)j
-(pathnames)d(*/)234 1065 y(sprintf)h(\(syscom,)g("less)g(\045s",)h
-(arg\);)195 1108 y(#else)234 1152 y(sprintf)f(\(syscom,)g("more)g
-(\045s",)h(arg\);)195 1196 y(#endif)234 1239 y(return)g(\(system)e
-(\(syscom\)\);)195 1283 y(})195 1370 y(com_rename)g(\(arg\))293
-1413 y(char)i(*arg;)195 1457 y({)234 1501 y(too_danger)o(ous)e
-(\("rename")o(\);)234 1544 y(return)i(\(1\);)195 1588
-y(})195 1675 y(com_stat)f(\(arg\))293 1719 y(char)h(*arg;)195
-1762 y({)234 1806 y(struct)g(stat)g(finfo;)234 1893 y(if)h(\(!valid_ar)
-o(gu)o(men)o(t)d(\("stat",)h(arg\)\))273 1936 y(return)h(\(1\);)234
-2024 y(if)h(\(stat)f(\(arg,)f(&finfo\))g(==)i(-1\))273
-2067 y({)313 2111 y(perror)e(\(arg\);)313 2154 y(return)g(\(1\);)273
-2198 y(})234 2285 y(printf)h(\("Statis)o(tic)o(s)e(for)j(`\045s':\\n",)
-d(arg\);)234 2372 y(printf)i(\("\045s)g(has)g(\045d)h(link\045s,)e(and)
-h(is)h(\045d)g(byte\045s)e(in)i(length.\\n")o(,)234 2416
-y(arg,)391 2460 y(finfo.st_n)o(li)o(nk,)391 2503 y(\(finfo.st_)o(nl)o
-(ink)d(==)j(1\))g(?)g("")g(:)g("s",)391 2547 y(finfo.st_s)o(iz)o(e,)391
-2590 y(\(finfo.st_)o(si)o(ze)d(==)j(1\))g(?)g("")g(:)g("s"\);)234
-2634 y(printf)f(\("Inode)e(Last)i(Change)g(at:)g(\045s",)g(ctime)g
-(\(&finfo.st)o(_c)o(tim)o(e\))o(\);)p eop end
-%%Page: 61 65
-TeXDict begin 61 64 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(61)234 149 y Fe(printf)18
-b(\(")116 b(Last)18 b(access)g(at:)g(\045s",)g(ctime)g(\(&finfo.st)o
-(_a)o(tim)o(e\))o(\);)234 193 y(printf)g(\(")77 b(Last)18
-b(modified)f(at:)h(\045s",)g(ctime)g(\(&finfo.st)o(_m)o(tim)o(e\))o
-(\);)234 237 y(return)g(\(0\);)195 280 y(})195 367 y(com_delete)e
-(\(arg\))293 411 y(char)i(*arg;)195 455 y({)234 498 y(too_danger)o(ous)
-e(\("delete")o(\);)234 542 y(return)i(\(1\);)195 585
-y(})195 672 y(/*)h(Print)f(out)g(help)g(for)g(ARG,)h(or)f(for)h(all)f
-(of)h(the)g(commands)d(if)j(ARG)f(is)254 716 y(not)g(present.)f(*/)195
-760 y(com_help)g(\(arg\))293 803 y(char)h(*arg;)195 847
-y({)234 890 y(register)f(int)h(i;)234 934 y(int)h(printed)e(=)i(0;)234
-1021 y(for)g(\(i)g(=)g(0;)g(commands)o([i])o(.na)o(me)o(;)e(i++\))273
-1065 y({)313 1108 y(if)i(\(!*arg)e(||)i(\(strcmp)e(\(arg,)g(commands[i)
-o(].n)o(am)o(e\))f(==)j(0\)\))352 1152 y({)391 1196 y(printf)e
-(\("\045s\\t\\t\045s.)o(\\n)o(",)f(commands[i)o(].n)o(am)o(e,)g
-(commands[i)o(].d)o(oc\))o(;)391 1239 y(printed++;)352
-1283 y(})273 1326 y(})234 1413 y(if)j(\(!printed\))273
-1457 y({)313 1501 y(printf)e(\("No)h(commands)f(match)g(`\045s'.)38
-b(Possibil)o(tie)o(s)17 b(are:\\n",)f(arg\);)313 1588
-y(for)i(\(i)h(=)g(0;)g(commands[i)o(].)o(nam)o(e;)d(i++\))352
-1631 y({)391 1675 y(/*)j(Print)f(in)g(six)h(columns.)d(*/)391
-1719 y(if)j(\(printed)d(==)j(6\))430 1762 y({)470 1806
-y(printed)d(=)k(0;)470 1849 y(printf)d(\("\\n"\);)430
-1893 y(})391 1980 y(printf)g(\("\045s\\t",)g(commands[)o(i].)o(nam)o
-(e\))o(;)391 2024 y(printed++;)352 2067 y(})313 2154
-y(if)i(\(printed)o(\))352 2198 y(printf)e(\("\\n"\);)273
-2242 y(})234 2285 y(return)h(\(0\);)195 2329 y(})195
-2416 y(/*)h(Change)e(to)i(the)f(directory)f(ARG.)h(*/)195
-2460 y(com_cd)f(\(arg\))293 2503 y(char)h(*arg;)195 2547
-y({)234 2590 y(if)h(\(chdir)e(\(arg\))h(==)h(-1\))273
-2634 y({)p eop end
-%%Page: 62 66
-TeXDict begin 62 65 bop 75 -58 a Fs(Chapter)15 b(2:)k(Programming)14
-b(with)g(GNU)h(Readline)842 b(62)313 149 y Fe(perror)17
-b(\(arg\);)313 193 y(return)g(1;)273 237 y(})234 324
-y(com_pwd)g(\(""\);)234 367 y(return)h(\(0\);)195 411
-y(})195 498 y(/*)h(Print)f(out)g(the)g(current)f(working)g(directory.)f
-(*/)195 542 y(com_pwd)h(\(ignore\))293 585 y(char)h(*ignore;)195
-629 y({)234 672 y(char)g(dir[1024],)e(*s;)234 760 y(s)j(=)h(getcwd)d
-(\(dir,)h(sizeof\(di)o(r\))e(-)j(1\);)234 803 y(if)g(\(s)g(==)g(0\))273
-847 y({)313 890 y(printf)e(\("Error)g(getting)g(pwd:)h(\045s\\n",)f
-(dir\);)313 934 y(return)g(1;)273 978 y(})234 1065 y(printf)h
-(\("Curren)o(t)f(directory)f(is)j(\045s\\n",)e(dir\);)234
-1108 y(return)h(0;)195 1152 y(})195 1239 y(/*)h(The)f(user)g(wishes)g
-(to)g(quit)h(using)e(this)h(program.)36 b(Just)19 b(set)f(DONE)g
-(non-zero.)e(*/)195 1283 y(com_quit)h(\(arg\))293 1326
-y(char)h(*arg;)195 1370 y({)234 1413 y(done)g(=)i(1;)234
-1457 y(return)e(\(0\);)195 1501 y(})195 1588 y(/*)h(Function)d(which)i
-(tells)g(you)g(that)g(you)h(can't)e(do)i(this.)f(*/)195
-1631 y(too_danger)o(ou)o(s)f(\(caller\))293 1675 y(char)h(*caller;)195
-1719 y({)234 1762 y(fprintf)f(\(stderr,)411 1806 y("\045s:)h(Too)g
-(dangerous)e(for)j(me)g(to)g(distribu)o(te.)36 b(Write)17
-b(it)i(yourself.\\)o(n")o(,)411 1849 y(caller\);)195
-1893 y(})195 1980 y(/*)g(Return)e(non-zero)g(if)h(ARG)h(is)g(a)g(valid)
-f(argument)e(for)j(CALLER,)e(else)h(print)254 2024 y(an)h(error)e
-(message)g(and)i(return)e(zero.)h(*/)195 2067 y(int)195
-2111 y(valid_argu)o(me)o(nt)e(\(caller,)h(arg\))293 2154
-y(char)h(*caller,)f(*arg;)195 2198 y({)234 2242 y(if)i(\(!arg)f(||)h
-(!*arg\))273 2285 y({)313 2329 y(fprintf)e(\(stderr,)f("\045s:)i
-(Argument)f(required.)o(\\n)o(",)f(caller\);)313 2372
-y(return)h(\(0\);)273 2416 y(})234 2503 y(return)h(\(1\);)195
-2547 y(})p eop end
-%%Page: 63 67
-TeXDict begin 63 66 bop 75 -58 a Fs(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(63)75 149
-y Fo(App)r(endix)26 b(A)41 b(GNU)27 b(F)-7 b(ree)26 b(Do)r(cumen)n
-(tation)j(License)679 251 y Fs(V)l(ersion)15 b(1.3,)f(3)h(No)o(v)o(em)o
-(b)q(er)g(2008)195 318 y(Cop)o(yrigh)o(t)421 317 y(c)409
-318 y Fp(\015)g Fs(2000,)f(2001,)f(2002,)h(2007,)g(2008)g(F)l(ree)h
-(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)195 373 y Fr(http://fsf.org/)
-195 482 y Fs(Ev)o(ery)o(one)h(is)f(p)q(ermitted)h(to)g(cop)o(y)g(and)g
-(distribute)g(v)o(erbatim)f(copies)195 537 y(of)h(this)f(license)i(do)q
-(cumen)o(t,)f(but)g(c)o(hanging)g(it)f(is)h(not)g(allo)o(w)o(ed.)100
-603 y(0.)29 b(PREAMBLE)165 670 y(The)19 b(purp)q(ose)g(of)f(this)g
-(License)i(is)e(to)g(mak)o(e)g(a)g(man)o(ual,)g(textb)q(o)q(ok,)h(or)f
-(other)g(functional)g(and)165 725 y(useful)d(do)q(cumen)o(t)h
-Fi(free)h Fs(in)e(the)g(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
-o(one)f(the)i(e\013ectiv)o(e)e(freedom)165 780 y(to)h(cop)o(y)h(and)g
-(redistribute)f(it,)f(with)h(or)g(without)g(mo)q(difying)g(it,)g
-(either)g(commercially)f(or)i(non-)165 834 y(commercially)l(.)25
-b(Secondarily)l(,)17 b(this)g(License)h(preserv)o(es)f(for)g(the)g
-(author)g(and)h(publisher)f(a)g(w)o(a)o(y)165 889 y(to)g(get)h(credit)g
-(for)f(their)h(w)o(ork,)f(while)h(not)g(b)q(eing)g(considered)g(resp)q
-(onsible)g(for)g(mo)q(di\014cations)165 944 y(made)d(b)o(y)g(others.)
-165 1010 y(This)c(License)i(is)e(a)g(kind)h(of)f(\\cop)o(yleft",)f
-(whic)o(h)i(means)f(that)g(deriv)m(ativ)o(e)g(w)o(orks)g(of)g(the)h(do)
-q(cumen)o(t)165 1065 y(m)o(ust)k(themselv)o(es)h(b)q(e)h(free)e(in)h
-(the)g(same)g(sense.)26 b(It)16 b(complemen)o(ts)h(the)g(GNU)g(General)
-f(Public)165 1120 y(License,)g(whic)o(h)f(is)f(a)h(cop)o(yleft)g
-(license)g(designed)g(for)g(free)g(soft)o(w)o(are.)165
-1187 y(W)l(e)g(ha)o(v)o(e)f(designed)h(this)g(License)g(in)g(order)f
-(to)g(use)h(it)f(for)h(man)o(uals)e(for)h(free)h(soft)o(w)o(are,)e(b)q
-(ecause)165 1241 y(free)21 b(soft)o(w)o(are)e(needs)j(free)f(do)q
-(cumen)o(tation:)31 b(a)21 b(free)g(program)f(should)h(come)g(with)g
-(man)o(uals)165 1296 y(pro)o(viding)13 b(the)i(same)f(freedoms)g(that)g
-(the)g(soft)o(w)o(are)f(do)q(es.)20 b(But)14 b(this)g(License)h(is)f
-(not)g(limited)g(to)165 1351 y(soft)o(w)o(are)g(man)o(uals;)g(it)g(can)
-i(b)q(e)g(used)g(for)e(an)o(y)h(textual)g(w)o(ork,)f(regardless)g(of)h
-(sub)s(ject)g(matter)f(or)165 1406 y(whether)i(it)f(is)g(published)h
-(as)g(a)f(prin)o(ted)h(b)q(o)q(ok.)21 b(W)l(e)16 b(recommend)g(this)f
-(License)i(principally)e(for)165 1461 y(w)o(orks)f(whose)h(purp)q(ose)h
-(is)f(instruction)f(or)h(reference.)100 1527 y(1.)29
-b(APPLICABILITY)17 b(AND)e(DEFINITIONS)165 1594 y(This)20
-b(License)g(applies)g(to)f(an)o(y)h(man)o(ual)f(or)g(other)h(w)o(ork,)g
-(in)g(an)o(y)f(medium,)i(that)e(con)o(tains)g(a)165 1648
-y(notice)h(placed)h(b)o(y)g(the)g(cop)o(yrigh)o(t)e(holder)i(sa)o(ying)
-f(it)g(can)h(b)q(e)g(distributed)f(under)i(the)f(terms)165
-1703 y(of)d(this)g(License.)32 b(Suc)o(h)19 b(a)g(notice)f(gran)o(ts)f
-(a)i(w)o(orld-wide,)f(ro)o(y)o(alt)o(y-free)f(license,)i(unlimited)f
-(in)165 1758 y(duration,)23 b(to)f(use)h(that)f(w)o(ork)g(under)h(the)g
-(conditions)f(stated)g(herein.)42 b(The)23 b(\\Do)q(cumen)o(t",)165
-1813 y(b)q(elo)o(w,)14 b(refers)g(to)f(an)o(y)h(suc)o(h)g(man)o(ual)g
-(or)f(w)o(ork.)19 b(An)o(y)14 b(mem)o(b)q(er)h(of)e(the)i(public)f(is)g
-(a)g(licensee,)g(and)165 1868 y(is)e(addressed)h(as)f(\\y)o(ou".)18
-b(Y)l(ou)13 b(accept)g(the)f(license)h(if)f(y)o(ou)g(cop)o(y)l(,)h(mo)q
-(dify)f(or)g(distribute)f(the)i(w)o(ork)165 1922 y(in)i(a)g(w)o(a)o(y)f
-(requiring)h(p)q(ermission)f(under)i(cop)o(yrigh)o(t)e(la)o(w.)165
-1989 y(A)j(\\Mo)q(di\014ed)g(V)l(ersion")f(of)g(the)h(Do)q(cumen)o(t)g
-(means)g(an)o(y)f(w)o(ork)g(con)o(taining)g(the)h(Do)q(cumen)o(t)f(or)
-165 2044 y(a)i(p)q(ortion)g(of)h(it,)f(either)h(copied)g(v)o(erbatim,)f
-(or)g(with)g(mo)q(di\014cations)g(and/or)g(translated)g(in)o(to)165
-2099 y(another)d(language.)165 2165 y(A)e(\\Secondary)g(Section")g(is)f
-(a)h(named)g(app)q(endix)h(or)e(a)h(fron)o(t-matter)e(section)h(of)h
-(the)g(Do)q(cumen)o(t)165 2220 y(that)d(deals)g(exclusiv)o(ely)g(with)g
-(the)h(relationship)e(of)i(the)f(publishers)h(or)f(authors)g(of)g(the)h
-(Do)q(cumen)o(t)165 2275 y(to)18 b(the)h(Do)q(cumen)o(t's)f(o)o(v)o
-(erall)f(sub)s(ject)h(\(or)g(to)g(related)g(matters\))f(and)i(con)o
-(tains)f(nothing)g(that)165 2329 y(could)i(fall)f(directly)h(within)f
-(that)g(o)o(v)o(erall)g(sub)s(ject.)34 b(\(Th)o(us,)21
-b(if)f(the)g(Do)q(cumen)o(t)g(is)g(in)g(part)f(a)165
-2384 y(textb)q(o)q(ok)12 b(of)f(mathematics,)g(a)g(Secondary)h(Section)
-g(ma)o(y)f(not)h(explain)f(an)o(y)h(mathematics.\))17
-b(The)165 2439 y(relationship)12 b(could)i(b)q(e)g(a)g(matter)e(of)i
-(historical)d(connection)j(with)f(the)h(sub)s(ject)f(or)h(with)f
-(related)165 2494 y(matters,)k(or)g(of)g(legal,)g(commercial,)g
-(philosophical,)g(ethical)g(or)g(p)q(olitical)f(p)q(osition)h
-(regarding)165 2549 y(them.)165 2615 y(The)c(\\In)o(v)m(arian)o(t)f
-(Sections")g(are)h(certain)f(Secondary)h(Sections)g(whose)g(titles)e
-(are)i(designated,)f(as)165 2670 y(b)q(eing)i(those)f(of)g(In)o(v)m
-(arian)o(t)f(Sections,)h(in)h(the)f(notice)g(that)f(sa)o(ys)h(that)g
-(the)g(Do)q(cumen)o(t)g(is)g(released)p eop end
-%%Page: 64 68
-TeXDict begin 64 67 bop 75 -58 a Fs(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(64)165 149
-y(under)15 b(this)e(License.)20 b(If)14 b(a)g(section)f(do)q(es)h(not)g
-(\014t)f(the)h(ab)q(o)o(v)o(e)g(de\014nition)g(of)f(Secondary)h(then)g
-(it)f(is)165 204 y(not)j(allo)o(w)o(ed)e(to)h(b)q(e)i(designated)f(as)f
-(In)o(v)m(arian)o(t.)21 b(The)c(Do)q(cumen)o(t)e(ma)o(y)h(con)o(tain)f
-(zero)h(In)o(v)m(arian)o(t)165 259 y(Sections.)j(If)12
-b(the)h(Do)q(cumen)o(t)f(do)q(es)h(not)f(iden)o(tify)f(an)o(y)h(In)o(v)
-m(arian)o(t)g(Sections)g(then)h(there)f(are)g(none.)165
-334 y(The)19 b(\\Co)o(v)o(er)e(T)l(exts")g(are)h(certain)g(short)g
-(passages)g(of)f(text)h(that)g(are)g(listed,)g(as)g(F)l(ron)o(t-Co)o(v)
-o(er)165 389 y(T)l(exts)12 b(or)g(Bac)o(k-Co)o(v)o(er)g(T)l(exts,)g(in)
-h(the)f(notice)g(that)g(sa)o(ys)g(that)g(the)g(Do)q(cumen)o(t)h(is)f
-(released)g(under)165 444 y(this)g(License.)20 b(A)13
-b(F)l(ron)o(t-Co)o(v)o(er)e(T)l(ext)i(ma)o(y)f(b)q(e)i(at)e(most)g(5)h
-(w)o(ords,)f(and)h(a)g(Bac)o(k-Co)o(v)o(er)f(T)l(ext)h(ma)o(y)165
-499 y(b)q(e)j(at)e(most)h(25)f(w)o(ords.)165 574 y(A)k(\\T)l(ransparen)
-o(t")e(cop)o(y)i(of)f(the)h(Do)q(cumen)o(t)g(means)f(a)h(mac)o
-(hine-readable)f(cop)o(y)l(,)h(represen)o(ted)165 629
-y(in)g(a)f(format)g(whose)g(sp)q(eci\014cation)h(is)g(a)o(v)m(ailable)e
-(to)h(the)h(general)g(public,)g(that)f(is)g(suitable)h(for)165
-684 y(revising)d(the)h(do)q(cumen)o(t)g(straigh)o(tforw)o(ardly)d(with)
-i(generic)h(text)f(editors)g(or)g(\(for)g(images)g(com-)165
-738 y(p)q(osed)d(of)g(pixels\))f(generic)h(pain)o(t)f(programs)g(or)g
-(\(for)g(dra)o(wings\))g(some)g(widely)g(a)o(v)m(ailable)g(dra)o(wing)
-165 793 y(editor,)j(and)g(that)g(is)g(suitable)g(for)g(input)g(to)g
-(text)g(formatters)f(or)h(for)g(automatic)f(translation)g(to)165
-848 y(a)g(v)m(ariet)o(y)g(of)g(formats)f(suitable)g(for)h(input)h(to)e
-(text)h(formatters.)18 b(A)13 b(cop)o(y)h(made)f(in)g(an)h(otherwise)
-165 903 y(T)l(ransparen)o(t)k(\014le)h(format)e(whose)i(markup,)g(or)g
-(absence)g(of)g(markup,)g(has)f(b)q(een)i(arranged)f(to)165
-958 y(th)o(w)o(art)12 b(or)g(discourage)h(subsequen)o(t)h(mo)q
-(di\014cation)f(b)o(y)g(readers)g(is)g(not)g(T)l(ransparen)o(t.)18
-b(An)c(image)165 1012 y(format)i(is)h(not)f(T)l(ransparen)o(t)h(if)g
-(used)g(for)g(an)o(y)g(substan)o(tial)e(amoun)o(t)i(of)f(text.)26
-b(A)17 b(cop)o(y)g(that)f(is)165 1067 y(not)f(\\T)l(ransparen)o(t")f
-(is)h(called)f(\\Opaque".)165 1143 y(Examples)26 b(of)g(suitable)g
-(formats)f(for)h(T)l(ransparen)o(t)g(copies)g(include)h(plain)f
-Fl(asci)q(i)g Fs(without)165 1197 y(markup,)18 b(T)l(exinfo)g(input)g
-(format,)f(LaT)879 1207 y(E)905 1197 y(X)h(input)g(format,)f
-Fd(SGML)h Fs(or)f Fd(XML)i Fs(using)e(a)h(publicly)165
-1252 y(a)o(v)m(ailable)g Fd(DTD)p Fs(,)i(and)g(standard-conforming)f
-(simple)g Fd(HTML)p Fs(,)i(P)o(ostScript)d(or)i Fd(PDF)g
-Fs(designed)165 1307 y(for)e(h)o(uman)i(mo)q(di\014cation.)30
-b(Examples)19 b(of)g(transparen)o(t)f(image)g(formats)g(include)h
-Fd(PNG)p Fs(,)h Fd(X)o(CF)165 1362 y Fs(and)f Fd(JPG)p
-Fs(.)33 b(Opaque)20 b(formats)e(include)h(proprietary)f(formats)g(that)
-h(can)g(b)q(e)h(read)f(and)h(edited)165 1417 y(only)26
-b(b)o(y)h(proprietary)f(w)o(ord)g(pro)q(cessors,)j Fd(SGML)d
-Fs(or)h Fd(XML)g Fs(for)f(whic)o(h)g(the)h Fd(DTD)g Fs(and/or)165
-1471 y(pro)q(cessing)j(to)q(ols)g(are)g(not)g(generally)g(a)o(v)m
-(ailable,)i(and)f(the)g(mac)o(hine-generated)f Fd(HTML)p
-Fs(,)165 1526 y(P)o(ostScript)14 b(or)h Fd(PDF)g Fs(pro)q(duced)h(b)o
-(y)f(some)g(w)o(ord)g(pro)q(cessors)g(for)f(output)h(purp)q(oses)h
-(only)l(.)165 1601 y(The)h(\\Title)f(P)o(age")g(means,)i(for)e(a)h
-(prin)o(ted)g(b)q(o)q(ok,)g(the)g(title)f(page)h(itself,)g(plus)g(suc)o
-(h)g(follo)o(wing)165 1656 y(pages)d(as)f(are)h(needed)h(to)e(hold,)h
-(legibly)l(,)e(the)i(material)e(this)i(License)g(requires)g(to)f(app)q
-(ear)h(in)g(the)165 1711 y(title)e(page.)19 b(F)l(or)13
-b(w)o(orks)f(in)h(formats)f(whic)o(h)h(do)g(not)g(ha)o(v)o(e)g(an)o(y)g
-(title)f(page)h(as)g(suc)o(h,)h(\\Title)e(P)o(age")165
-1766 y(means)j(the)h(text)e(near)i(the)f(most)g(prominen)o(t)f(app)q
-(earance)i(of)f(the)g(w)o(ork's)f(title,)g(preceding)i(the)165
-1821 y(b)q(eginning)f(of)g(the)g(b)q(o)q(dy)h(of)f(the)g(text.)165
-1896 y(The)j(\\publisher")e(means)i(an)o(y)f(p)q(erson)g(or)g(en)o(tit)
-o(y)f(that)h(distributes)g(copies)g(of)g(the)g(Do)q(cumen)o(t)165
-1951 y(to)e(the)g(public.)165 2026 y(A)g(section)f(\\En)o(titled)g
-(XYZ")g(means)h(a)g(named)g(subunit)g(of)f(the)h(Do)q(cumen)o(t)g
-(whose)g(title)e(either)165 2081 y(is)g(precisely)h(XYZ)g(or)f(con)o
-(tains)g(XYZ)h(in)g(paren)o(theses)g(follo)o(wing)d(text)j(that)f
-(translates)f(XYZ)i(in)165 2136 y(another)e(language.)18
-b(\(Here)13 b(XYZ)f(stands)g(for)g(a)g(sp)q(eci\014c)i(section)e(name)g
-(men)o(tioned)g(b)q(elo)o(w,)h(suc)o(h)165 2191 y(as)h(\\Ac)o(kno)o
-(wledgemen)o(ts",)e(\\Dedications",)h(\\Endorsemen)o(ts",)g(or)g
-(\\History".\))18 b(T)l(o)13 b(\\Preserv)o(e)165 2245
-y(the)k(Title")e(of)i(suc)o(h)g(a)f(section)h(when)g(y)o(ou)f(mo)q
-(dify)h(the)g(Do)q(cumen)o(t)f(means)h(that)f(it)g(remains)g(a)165
-2300 y(section)f(\\En)o(titled)f(XYZ")g(according)h(to)g(this)f
-(de\014nition.)165 2375 y(The)g(Do)q(cumen)o(t)g(ma)o(y)f(include)h(W)l
-(arran)o(t)o(y)e(Disclaimers)g(next)i(to)g(the)g(notice)f(whic)o(h)h
-(states)f(that)165 2430 y(this)j(License)i(applies)f(to)f(the)h(Do)q
-(cumen)o(t.)25 b(These)17 b(W)l(arran)o(t)o(y)e(Disclaimers)h(are)g
-(considered)i(to)165 2485 y(b)q(e)h(included)h(b)o(y)f(reference)g(in)g
-(this)f(License,)i(but)f(only)f(as)h(regards)f(disclaiming)f(w)o(arran)
-o(ties:)165 2540 y(an)o(y)h(other)g(implication)f(that)h(these)g(W)l
-(arran)o(t)o(y)f(Disclaimers)g(ma)o(y)g(ha)o(v)o(e)h(is)g(v)o(oid)g
-(and)h(has)f(no)165 2595 y(e\013ect)d(on)g(the)g(meaning)g(of)g(this)g
-(License.)100 2670 y(2.)29 b(VERBA)l(TIM)16 b(COPYING)p
-eop end
-%%Page: 65 69
-TeXDict begin 65 68 bop 75 -58 a Fs(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(65)165 149
-y(Y)l(ou)19 b(ma)o(y)g(cop)o(y)f(and)i(distribute)e(the)h(Do)q(cumen)o
-(t)g(in)g(an)o(y)g(medium,)g(either)g(commercially)e(or)165
-204 y(noncommercially)l(,)k(pro)o(vided)g(that)g(this)g(License,)i(the)
-e(cop)o(yrigh)o(t)f(notices,)i(and)g(the)f(license)165
-259 y(notice)d(sa)o(ying)e(this)i(License)g(applies)g(to)f(the)h(Do)q
-(cumen)o(t)g(are)f(repro)q(duced)i(in)f(all)f(copies,)h(and)165
-314 y(that)13 b(y)o(ou)g(add)g(no)g(other)g(conditions)g(whatso)q(ev)o
-(er)f(to)h(those)g(of)g(this)g(License.)20 b(Y)l(ou)13
-b(ma)o(y)g(not)g(use)165 369 y(tec)o(hnical)j(measures)g(to)g(obstruct)
-g(or)g(con)o(trol)f(the)h(reading)g(or)g(further)h(cop)o(ying)f(of)g
-(the)g(copies)165 423 y(y)o(ou)c(mak)o(e)g(or)f(distribute.)19
-b(Ho)o(w)o(ev)o(er,)11 b(y)o(ou)h(ma)o(y)g(accept)g(comp)q(ensation)g
-(in)g(exc)o(hange)h(for)e(copies.)165 478 y(If)16 b(y)o(ou)g
-(distribute)f(a)h(large)f(enough)i(n)o(um)o(b)q(er)f(of)g(copies)g(y)o
-(ou)g(m)o(ust)f(also)g(follo)o(w)g(the)h(conditions)165
-533 y(in)f(section)g(3.)165 600 y(Y)l(ou)c(ma)o(y)e(also)h(lend)g
-(copies,)h(under)g(the)g(same)f(conditions)f(stated)h(ab)q(o)o(v)o(e,)h
-(and)f(y)o(ou)g(ma)o(y)g(publicly)165 655 y(displa)o(y)k(copies.)100
-722 y(3.)29 b(COPYING)16 b(IN)f(QUANTITY)165 789 y(If)e(y)o(ou)f
-(publish)h(prin)o(ted)f(copies)h(\(or)e(copies)i(in)f(media)h(that)e
-(commonly)h(ha)o(v)o(e)g(prin)o(ted)h(co)o(v)o(ers\))e(of)165
-844 y(the)16 b(Do)q(cumen)o(t,)g(n)o(um)o(b)q(ering)f(more)h(than)g
-(100,)e(and)i(the)g(Do)q(cumen)o(t's)g(license)g(notice)f(requires)165
-898 y(Co)o(v)o(er)h(T)l(exts,)h(y)o(ou)g(m)o(ust)g(enclose)g(the)g
-(copies)g(in)g(co)o(v)o(ers)g(that)f(carry)l(,)h(clearly)f(and)i
-(legibly)l(,)e(all)165 953 y(these)k(Co)o(v)o(er)e(T)l(exts:)29
-b(F)l(ron)o(t-Co)o(v)o(er)18 b(T)l(exts)h(on)g(the)h(fron)o(t)f(co)o(v)
-o(er,)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l(exts)g(on)165
-1008 y(the)c(bac)o(k)f(co)o(v)o(er.)19 b(Both)14 b(co)o(v)o(ers)g(m)o
-(ust)g(also)g(clearly)g(and)g(legibly)g(iden)o(tify)g(y)o(ou)g(as)g
-(the)h(publisher)165 1063 y(of)i(these)g(copies.)26 b(The)17
-b(fron)o(t)f(co)o(v)o(er)h(m)o(ust)f(presen)o(t)i(the)f(full)f(title)g
-(with)h(all)f(w)o(ords)g(of)h(the)g(title)165 1117 y(equally)e
-(prominen)o(t)g(and)g(visible.)20 b(Y)l(ou)c(ma)o(y)e(add)i(other)f
-(material)e(on)j(the)f(co)o(v)o(ers)g(in)g(addition.)165
-1172 y(Cop)o(ying)i(with)h(c)o(hanges)g(limited)f(to)g(the)h(co)o(v)o
-(ers,)g(as)g(long)f(as)h(they)g(preserv)o(e)g(the)g(title)f(of)h(the)
-165 1227 y(Do)q(cumen)o(t)g(and)h(satisfy)e(these)i(conditions,)f(can)h
-(b)q(e)g(treated)f(as)h(v)o(erbatim)e(cop)o(ying)h(in)g(other)165
-1282 y(resp)q(ects.)165 1349 y(If)f(the)f(required)h(texts)e(for)h
-(either)g(co)o(v)o(er)g(are)g(to)q(o)g(v)o(oluminous)f(to)h(\014t)g
-(legibly)l(,)f(y)o(ou)h(should)h(put)165 1404 y(the)g(\014rst)f(ones)g
-(listed)g(\(as)f(man)o(y)h(as)g(\014t)h(reasonably\))e(on)h(the)h
-(actual)f(co)o(v)o(er,)f(and)i(con)o(tin)o(ue)f(the)165
-1458 y(rest)f(on)o(to)f(adjacen)o(t)h(pages.)165 1525
-y(If)f(y)o(ou)f(publish)h(or)f(distribute)f(Opaque)j(copies)e(of)g(the)
-h(Do)q(cumen)o(t)f(n)o(um)o(b)q(ering)h(more)f(than)g(100,)165
-1580 y(y)o(ou)h(m)o(ust)f(either)h(include)g(a)g(mac)o(hine-readable)g
-(T)l(ransparen)o(t)f(cop)o(y)h(along)f(with)g(eac)o(h)h(Opaque)165
-1635 y(cop)o(y)l(,)k(or)f(state)g(in)g(or)g(with)g(eac)o(h)g(Opaque)i
-(cop)o(y)e(a)g(computer-net)o(w)o(ork)g(lo)q(cation)f(from)h(whic)o(h)
-165 1690 y(the)12 b(general)g(net)o(w)o(ork-using)f(public)h(has)g
-(access)g(to)g(do)o(wnload)f(using)h(public-standard)g(net)o(w)o(ork)
-165 1745 y(proto)q(cols)18 b(a)h(complete)h(T)l(ransparen)o(t)e(cop)o
-(y)i(of)f(the)g(Do)q(cumen)o(t,)h(free)g(of)f(added)h(material.)31
-b(If)165 1799 y(y)o(ou)19 b(use)h(the)f(latter)f(option,)i(y)o(ou)f(m)o
-(ust)g(tak)o(e)f(reasonably)h(pruden)o(t)h(steps,)g(when)g(y)o(ou)f(b)q
-(egin)165 1854 y(distribution)f(of)g(Opaque)i(copies)f(in)g(quan)o(tit)
-o(y)l(,)g(to)f(ensure)i(that)e(this)h(T)l(ransparen)o(t)f(cop)o(y)h
-(will)165 1909 y(remain)c(th)o(us)f(accessible)h(at)g(the)g(stated)g
-(lo)q(cation)e(un)o(til)i(at)f(least)g(one)i(y)o(ear)e(after)g(the)i
-(last)e(time)165 1964 y(y)o(ou)k(distribute)g(an)g(Opaque)h(cop)o(y)f
-(\(directly)g(or)g(through)g(y)o(our)g(agen)o(ts)f(or)h(retailers\))f
-(of)h(that)165 2019 y(edition)d(to)f(the)h(public.)165
-2086 y(It)i(is)g(requested,)h(but)f(not)g(required,)h(that)e(y)o(ou)h
-(con)o(tact)g(the)g(authors)g(of)f(the)i(Do)q(cumen)o(t)f(w)o(ell)165
-2140 y(b)q(efore)e(redistributing)e(an)o(y)h(large)f(n)o(um)o(b)q(er)i
-(of)e(copies,)h(to)g(giv)o(e)g(them)g(a)g(c)o(hance)h(to)e(pro)o(vide)h
-(y)o(ou)165 2195 y(with)h(an)g(up)q(dated)h(v)o(ersion)e(of)h(the)g(Do)
-q(cumen)o(t.)100 2262 y(4.)29 b(MODIFICA)l(TIONS)165
-2329 y(Y)l(ou)13 b(ma)o(y)f(cop)o(y)h(and)g(distribute)f(a)g(Mo)q
-(di\014ed)h(V)l(ersion)g(of)f(the)h(Do)q(cumen)o(t)f(under)i(the)f
-(conditions)165 2384 y(of)d(sections)g(2)g(and)h(3)f(ab)q(o)o(v)o(e,)h
-(pro)o(vided)f(that)g(y)o(ou)g(release)g(the)h(Mo)q(di\014ed)g(V)l
-(ersion)f(under)h(precisely)165 2439 y(this)j(License,)h(with)f(the)g
-(Mo)q(di\014ed)h(V)l(ersion)f(\014lling)g(the)h(role)e(of)i(the)f(Do)q
-(cumen)o(t,)g(th)o(us)h(licensing)165 2493 y(distribution)h(and)h(mo)q
-(di\014cation)f(of)h(the)g(Mo)q(di\014ed)g(V)l(ersion)g(to)f(who)q(ev)o
-(er)h(p)q(ossesses)h(a)e(cop)o(y)h(of)165 2548 y(it.)i(In)d(addition,)e
-(y)o(ou)h(m)o(ust)f(do)h(these)h(things)f(in)g(the)g(Mo)q(di\014ed)g(V)
-l(ersion:)178 2615 y(A.)30 b(Use)17 b(in)f(the)g(Title)f(P)o(age)h
-(\(and)g(on)h(the)f(co)o(v)o(ers,)g(if)f(an)o(y\))h(a)g(title)f
-(distinct)h(from)f(that)h(of)g(the)255 2670 y(Do)q(cumen)o(t,)h(and)g
-(from)f(those)h(of)f(previous)h(v)o(ersions)f(\(whic)o(h)g(should,)h
-(if)g(there)g(w)o(ere)f(an)o(y)l(,)p eop end
-%%Page: 66 70
-TeXDict begin 66 69 bop 75 -58 a Fs(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(66)255 149
-y(b)q(e)16 b(listed)f(in)h(the)g(History)e(section)h(of)g(the)h(Do)q
-(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g(same)f(title)f(as)
-255 204 y(a)h(previous)g(v)o(ersion)f(if)h(the)g(original)e(publisher)j
-(of)f(that)f(v)o(ersion)g(giv)o(es)h(p)q(ermission.)180
-273 y(B.)30 b(List)15 b(on)g(the)g(Title)g(P)o(age,)f(as)h(authors,)f
-(one)h(or)g(more)g(p)q(ersons)g(or)g(en)o(tities)f(resp)q(onsible)i
-(for)255 328 y(authorship)d(of)f(the)h(mo)q(di\014cations)f(in)h(the)g
-(Mo)q(di\014ed)h(V)l(ersion,)f(together)f(with)g(at)h(least)f(\014v)o
-(e)255 382 y(of)g(the)g(principal)f(authors)g(of)h(the)g(Do)q(cumen)o
-(t)g(\(all)e(of)i(its)f(principal)g(authors,)h(if)f(it)g(has)h(few)o
-(er)255 437 y(than)j(\014v)o(e\),)g(unless)g(they)g(release)g(y)o(ou)g
-(from)f(this)h(requiremen)o(t.)180 506 y(C.)29 b(State)15
-b(on)g(the)h(Title)e(page)h(the)h(name)f(of)g(the)g(publisher)h(of)f
-(the)g(Mo)q(di\014ed)h(V)l(ersion,)f(as)g(the)255 560
-y(publisher.)178 629 y(D.)29 b(Preserv)o(e)15 b(all)f(the)h(cop)o
-(yrigh)o(t)f(notices)h(of)g(the)g(Do)q(cumen)o(t.)181
-697 y(E.)30 b(Add)16 b(an)g(appropriate)f(cop)o(yrigh)o(t)f(notice)h
-(for)g(y)o(our)g(mo)q(di\014cations)g(adjacen)o(t)h(to)f(the)g(other)
-255 752 y(cop)o(yrigh)o(t)f(notices.)183 821 y(F.)29
-b(Include,)15 b(immediately)e(after)g(the)h(cop)o(yrigh)o(t)e(notices,)
-i(a)f(license)h(notice)g(giving)f(the)h(public)255 875
-y(p)q(ermission)e(to)f(use)i(the)f(Mo)q(di\014ed)h(V)l(ersion)f(under)h
-(the)f(terms)g(of)f(this)h(License,)h(in)f(the)h(form)255
-930 y(sho)o(wn)i(in)g(the)g(Addendum)i(b)q(elo)o(w.)177
-999 y(G.)29 b(Preserv)o(e)11 b(in)g(that)g(license)g(notice)h(the)f
-(full)g(lists)f(of)h(In)o(v)m(arian)o(t)g(Sections)g(and)g(required)h
-(Co)o(v)o(er)255 1054 y(T)l(exts)j(giv)o(en)g(in)g(the)g(Do)q(cumen)o
-(t's)g(license)g(notice.)178 1122 y(H.)30 b(Include)16
-b(an)f(unaltered)h(cop)o(y)f(of)f(this)h(License.)196
-1191 y(I.)30 b(Preserv)o(e)16 b(the)g(section)g(En)o(titled)f
-(\\History",)f(Preserv)o(e)h(its)h(Title,)e(and)j(add)f(to)f(it)h(an)g
-(item)255 1245 y(stating)d(at)g(least)g(the)h(title,)f(y)o(ear,)g(new)i
-(authors,)e(and)h(publisher)g(of)g(the)g(Mo)q(di\014ed)g(V)l(ersion)255
-1300 y(as)h(giv)o(en)g(on)h(the)g(Title)e(P)o(age.)21
-b(If)16 b(there)g(is)f(no)h(section)f(En)o(titled)f(\\History")g(in)i
-(the)g(Do)q(cu-)255 1355 y(men)o(t,)h(create)g(one)h(stating)e(the)h
-(title,)g(y)o(ear,)g(authors,)g(and)g(publisher)h(of)f(the)g(Do)q
-(cumen)o(t)255 1410 y(as)h(giv)o(en)f(on)h(its)f(Title)g(P)o(age,)h
-(then)h(add)f(an)g(item)f(describing)h(the)g(Mo)q(di\014ed)g(V)l
-(ersion)g(as)255 1465 y(stated)d(in)g(the)g(previous)g(sen)o(tence.)189
-1533 y(J.)30 b(Preserv)o(e)16 b(the)g(net)o(w)o(ork)f(lo)q(cation,)g
-(if)h(an)o(y)l(,)g(giv)o(en)g(in)g(the)g(Do)q(cumen)o(t)g(for)g(public)
-g(access)h(to)255 1588 y(a)e(T)l(ransparen)o(t)g(cop)o(y)h(of)f(the)g
-(Do)q(cumen)o(t,)h(and)f(lik)o(ewise)g(the)g(net)o(w)o(ork)g(lo)q
-(cations)f(giv)o(en)h(in)255 1643 y(the)h(Do)q(cumen)o(t)g(for)f
-(previous)g(v)o(ersions)g(it)g(w)o(as)g(based)i(on.)k(These)c(ma)o(y)e
-(b)q(e)h(placed)g(in)g(the)255 1697 y(\\History")11 b(section.)18
-b(Y)l(ou)13 b(ma)o(y)f(omit)f(a)h(net)o(w)o(ork)g(lo)q(cation)f(for)h
-(a)g(w)o(ork)g(that)g(w)o(as)f(published)255 1752 y(at)17
-b(least)g(four)h(y)o(ears)f(b)q(efore)h(the)g(Do)q(cumen)o(t)g(itself,)
-f(or)g(if)h(the)f(original)f(publisher)i(of)g(the)255
-1807 y(v)o(ersion)c(it)h(refers)g(to)f(giv)o(es)h(p)q(ermission.)177
-1875 y(K.)30 b(F)l(or)11 b(an)o(y)h(section)f(En)o(titled)g(\\Ac)o(kno)
-o(wledgemen)o(ts")g(or)g(\\Dedications",)f(Preserv)o(e)i(the)g(Title)
-255 1930 y(of)h(the)g(section,)g(and)g(preserv)o(e)h(in)f(the)g
-(section)g(all)f(the)i(substance)f(and)h(tone)f(of)g(eac)o(h)g(of)g
-(the)255 1985 y(con)o(tributor)h(ac)o(kno)o(wledgemen)o(ts)g(and/or)h
-(dedications)f(giv)o(en)h(therein.)184 2054 y(L.)30 b(Preserv)o(e)17
-b(all)g(the)h(In)o(v)m(arian)o(t)f(Sections)g(of)h(the)f(Do)q(cumen)o
-(t,)h(unaltered)g(in)f(their)h(text)f(and)255 2108 y(in)h(their)f
-(titles.)27 b(Section)18 b(n)o(um)o(b)q(ers)g(or)g(the)g(equiv)m(alen)o
-(t)f(are)h(not)g(considered)g(part)f(of)h(the)255 2163
-y(section)d(titles.)171 2232 y(M.)29 b(Delete)15 b(an)o(y)g(section)g
-(En)o(titled)f(\\Endorsemen)o(ts".)20 b(Suc)o(h)c(a)f(section)g(ma)o(y)
-f(not)h(b)q(e)h(included)255 2286 y(in)f(the)g(Mo)q(di\014ed)h(V)l
-(ersion.)178 2355 y(N.)30 b(Do)14 b(not)f(retitle)g(an)o(y)h(existing)f
-(section)h(to)g(b)q(e)g(En)o(titled)g(\\Endorsemen)o(ts")f(or)h(to)f
-(con\015ict)h(in)255 2410 y(title)g(with)g(an)o(y)h(In)o(v)m(arian)o(t)
-g(Section.)177 2478 y(O.)30 b(Preserv)o(e)15 b(an)o(y)g(W)l(arran)o(t)o
-(y)e(Disclaimers.)165 2560 y(If)k(the)g(Mo)q(di\014ed)g(V)l(ersion)f
-(includes)h(new)g(fron)o(t-matter)e(sections)h(or)g(app)q(endices)i
-(that)e(qualify)165 2615 y(as)e(Secondary)g(Sections)g(and)g(con)o
-(tain)f(no)h(material)e(copied)i(from)f(the)h(Do)q(cumen)o(t,)g(y)o(ou)
-f(ma)o(y)h(at)165 2670 y(y)o(our)i(option)f(designate)h(some)g(or)f
-(all)g(of)h(these)h(sections)e(as)h(in)o(v)m(arian)o(t.)22
-b(T)l(o)15 b(do)i(this,)e(add)h(their)p eop end
-%%Page: 67 71
-TeXDict begin 67 70 bop 75 -58 a Fs(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(67)165 149
-y(titles)16 b(to)h(the)h(list)f(of)g(In)o(v)m(arian)o(t)g(Sections)h
-(in)f(the)h(Mo)q(di\014ed)g(V)l(ersion's)f(license)h(notice.)27
-b(These)165 204 y(titles)14 b(m)o(ust)h(b)q(e)g(distinct)g(from)f(an)o
-(y)h(other)g(section)g(titles.)165 275 y(Y)l(ou)21 b(ma)o(y)g(add)g(a)g
-(section)g(En)o(titled)f(\\Endorsemen)o(ts",)h(pro)o(vided)g(it)g(con)o
-(tains)f(nothing)h(but)165 330 y(endorsemen)o(ts)15 b(of)f(y)o(our)h
-(Mo)q(di\014ed)g(V)l(ersion)f(b)o(y)h(v)m(arious)f(parties|for)g
-(example,)h(statemen)o(ts)e(of)165 385 y(p)q(eer)h(review)f(or)h(that)e
-(the)i(text)f(has)h(b)q(een)g(appro)o(v)o(ed)g(b)o(y)f(an)h
-(organization)d(as)j(the)f(authoritativ)o(e)165 440 y(de\014nition)i
-(of)g(a)g(standard.)165 511 y(Y)l(ou)f(ma)o(y)g(add)g(a)g(passage)g(of)
-f(up)i(to)e(\014v)o(e)i(w)o(ords)e(as)h(a)g(F)l(ron)o(t-Co)o(v)o(er)e
-(T)l(ext,)i(and)g(a)g(passage)g(of)f(up)165 566 y(to)g(25)g(w)o(ords)g
-(as)g(a)g(Bac)o(k-Co)o(v)o(er)g(T)l(ext,)g(to)g(the)g(end)i(of)e(the)g
-(list)g(of)g(Co)o(v)o(er)f(T)l(exts)i(in)f(the)h(Mo)q(di\014ed)165
-621 y(V)l(ersion.)28 b(Only)18 b(one)g(passage)f(of)h(F)l(ron)o(t-Co)o
-(v)o(er)e(T)l(ext)i(and)g(one)g(of)f(Bac)o(k-Co)o(v)o(er)g(T)l(ext)h
-(ma)o(y)f(b)q(e)165 675 y(added)d(b)o(y)g(\(or)f(through)g(arrangemen)o
-(ts)g(made)h(b)o(y\))f(an)o(y)h(one)g(en)o(tit)o(y)l(.)k(If)c(the)g(Do)
-q(cumen)o(t)g(already)165 730 y(includes)j(a)g(co)o(v)o(er)f(text)h
-(for)f(the)h(same)g(co)o(v)o(er,)f(previously)g(added)i(b)o(y)f(y)o(ou)
-g(or)f(b)o(y)h(arrangemen)o(t)165 785 y(made)h(b)o(y)f(the)h(same)f(en)
-o(tit)o(y)g(y)o(ou)g(are)g(acting)g(on)g(b)q(ehalf)h(of,)g(y)o(ou)f(ma)
-o(y)g(not)g(add)h(another;)g(but)165 840 y(y)o(ou)f(ma)o(y)f(replace)h
-(the)g(old)g(one,)g(on)g(explicit)f(p)q(ermission)g(from)h(the)g
-(previous)g(publisher)g(that)165 895 y(added)f(the)f(old)g(one.)165
-966 y(The)e(author\(s\))e(and)i(publisher\(s\))f(of)h(the)g(Do)q(cumen)
-o(t)f(do)h(not)f(b)o(y)h(this)f(License)i(giv)o(e)e(p)q(ermission)165
-1021 y(to)j(use)g(their)g(names)g(for)f(publicit)o(y)h(for)f(or)h(to)f
-(assert)h(or)f(imply)h(endorsemen)o(t)g(of)g(an)o(y)g(Mo)q(di\014ed)165
-1075 y(V)l(ersion.)100 1147 y(5.)29 b(COMBINING)16 b(DOCUMENTS)165
-1218 y(Y)l(ou)k(ma)o(y)e(com)o(bine)h(the)h(Do)q(cumen)o(t)f(with)g
-(other)g(do)q(cumen)o(ts)g(released)h(under)g(this)f(License,)165
-1273 y(under)h(the)f(terms)g(de\014ned)h(in)f(section)g(4)f(ab)q(o)o(v)
-o(e)h(for)g(mo)q(di\014ed)g(v)o(ersions,)g(pro)o(vided)g(that)f(y)o(ou)
-165 1328 y(include)13 b(in)f(the)h(com)o(bination)f(all)f(of)h(the)h
-(In)o(v)m(arian)o(t)f(Sections)h(of)f(all)f(of)i(the)f(original)f(do)q
-(cumen)o(ts,)165 1382 y(unmo)q(di\014ed,)j(and)g(list)e(them)h(all)g
-(as)g(In)o(v)m(arian)o(t)f(Sections)i(of)f(y)o(our)f(com)o(bined)i(w)o
-(ork)e(in)h(its)g(license)165 1437 y(notice,)h(and)i(that)e(y)o(ou)h
-(preserv)o(e)g(all)g(their)f(W)l(arran)o(t)o(y)g(Disclaimers.)165
-1508 y(The)h(com)o(bined)h(w)o(ork)e(need)i(only)e(con)o(tain)h(one)g
-(cop)o(y)g(of)g(this)f(License,)i(and)f(m)o(ultiple)f(iden)o(tical)165
-1563 y(In)o(v)m(arian)o(t)i(Sections)g(ma)o(y)f(b)q(e)i(replaced)g
-(with)e(a)h(single)g(cop)o(y)l(.)23 b(If)16 b(there)h(are)f(m)o
-(ultiple)f(In)o(v)m(arian)o(t)165 1618 y(Sections)e(with)g(the)g(same)g
-(name)h(but)f(di\013eren)o(t)g(con)o(ten)o(ts,)g(mak)o(e)g(the)g(title)
-f(of)h(eac)o(h)h(suc)o(h)f(section)165 1673 y(unique)18
-b(b)o(y)e(adding)h(at)g(the)g(end)g(of)g(it,)f(in)h(paren)o(theses,)g
-(the)g(name)g(of)g(the)g(original)e(author)h(or)165 1728
-y(publisher)d(of)f(that)g(section)g(if)g(kno)o(wn,)g(or)g(else)g(a)h
-(unique)g(n)o(um)o(b)q(er.)19 b(Mak)o(e)12 b(the)g(same)h(adjustmen)o
-(t)165 1782 y(to)f(the)g(section)g(titles)f(in)h(the)g(list)f(of)h(In)o
-(v)m(arian)o(t)f(Sections)h(in)g(the)h(license)f(notice)g(of)g(the)g
-(com)o(bined)165 1837 y(w)o(ork.)165 1908 y(In)21 b(the)g(com)o
-(bination,)f(y)o(ou)h(m)o(ust)f(com)o(bine)g(an)o(y)g(sections)h(En)o
-(titled)e(\\History")g(in)i(the)f(v)m(ari-)165 1963 y(ous)c(original)e
-(do)q(cumen)o(ts,)i(forming)f(one)i(section)e(En)o(titled)g
-(\\History";)g(lik)o(ewise)f(com)o(bine)i(an)o(y)165
-2018 y(sections)f(En)o(titled)g(\\Ac)o(kno)o(wledgemen)o(ts",)g(and)h
-(an)o(y)f(sections)h(En)o(titled)e(\\Dedications".)21
-b(Y)l(ou)165 2073 y(m)o(ust)15 b(delete)g(all)f(sections)h(En)o(titled)
-f(\\Endorsemen)o(ts.")100 2144 y(6.)29 b(COLLECTIONS)17
-b(OF)e(DOCUMENTS)165 2215 y(Y)l(ou)h(ma)o(y)f(mak)o(e)h(a)f(collection)
-g(consisting)g(of)g(the)h(Do)q(cumen)o(t)g(and)g(other)g(do)q(cumen)o
-(ts)g(released)165 2270 y(under)22 b(this)f(License,)i(and)e(replace)g
-(the)g(individual)g(copies)g(of)g(this)f(License)i(in)f(the)g(v)m
-(arious)165 2325 y(do)q(cumen)o(ts)h(with)e(a)h(single)g(cop)o(y)g
-(that)f(is)h(included)h(in)f(the)g(collection,)h(pro)o(vided)f(that)f
-(y)o(ou)165 2380 y(follo)o(w)d(the)h(rules)h(of)f(this)g(License)h(for)
-f(v)o(erbatim)f(cop)o(ying)h(of)g(eac)o(h)h(of)f(the)h(do)q(cumen)o(ts)
-g(in)f(all)165 2434 y(other)d(resp)q(ects.)165 2506 y(Y)l(ou)h(ma)o(y)f
-(extract)g(a)g(single)g(do)q(cumen)o(t)h(from)f(suc)o(h)h(a)g
-(collection,)e(and)i(distribute)f(it)g(individu-)165
-2560 y(ally)h(under)j(this)e(License,)h(pro)o(vided)f(y)o(ou)g(insert)g
-(a)h(cop)o(y)f(of)g(this)g(License)h(in)o(to)f(the)g(extracted)165
-2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)e(this)i(License)h(in)f(all)g
-(other)f(resp)q(ects)i(regarding)f(v)o(erbatim)f(cop)o(ying)g(of)165
-2670 y(that)f(do)q(cumen)o(t.)p eop end
-%%Page: 68 72
-TeXDict begin 68 71 bop 75 -58 a Fs(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(68)100 149
-y(7.)29 b(A)o(GGREGA)l(TION)15 b(WITH)h(INDEPENDENT)e(W)o(ORKS)165
-221 y(A)g(compilation)e(of)i(the)g(Do)q(cumen)o(t)g(or)f(its)h(deriv)m
-(ativ)o(es)f(with)g(other)h(separate)f(and)i(indep)q(enden)o(t)165
-275 y(do)q(cumen)o(ts)i(or)f(w)o(orks,)g(in)g(or)g(on)h(a)f(v)o(olume)g
-(of)g(a)h(storage)e(or)h(distribution)g(medium,)g(is)g(called)165
-330 y(an)f(\\aggregate")e(if)h(the)i(cop)o(yrigh)o(t)d(resulting)h
-(from)h(the)g(compilation)e(is)i(not)f(used)i(to)e(limit)g(the)165
-385 y(legal)e(righ)o(ts)g(of)h(the)g(compilation's)f(users)h(b)q(ey)o
-(ond)h(what)f(the)g(individual)f(w)o(orks)h(p)q(ermit.)19
-b(When)165 440 y(the)g(Do)q(cumen)o(t)g(is)g(included)h(in)f(an)g
-(aggregate,)f(this)h(License)h(do)q(es)g(not)e(apply)h(to)g(the)g
-(other)165 495 y(w)o(orks)14 b(in)h(the)g(aggregate)f(whic)o(h)h(are)g
-(not)g(themselv)o(es)g(deriv)m(ativ)o(e)f(w)o(orks)g(of)h(the)g(Do)q
-(cumen)o(t.)165 566 y(If)d(the)f(Co)o(v)o(er)f(T)l(ext)i(requiremen)o
-(t)f(of)g(section)g(3)g(is)g(applicable)f(to)h(these)h(copies)f(of)g
-(the)g(Do)q(cumen)o(t,)165 621 y(then)h(if)e(the)i(Do)q(cumen)o(t)f(is)
-f(less)h(than)g(one)h(half)e(of)h(the)g(en)o(tire)g(aggregate,)f(the)h
-(Do)q(cumen)o(t's)g(Co)o(v)o(er)165 675 y(T)l(exts)i(ma)o(y)g(b)q(e)h
-(placed)f(on)g(co)o(v)o(ers)g(that)f(brac)o(k)o(et)h(the)g(Do)q(cumen)o
-(t)g(within)g(the)g(aggregate,)f(or)h(the)165 730 y(electronic)k(equiv)
-m(alen)o(t)g(of)g(co)o(v)o(ers)g(if)g(the)h(Do)q(cumen)o(t)f(is)g(in)g
-(electronic)g(form.)27 b(Otherwise)17 b(they)165 785
-y(m)o(ust)e(app)q(ear)g(on)g(prin)o(ted)g(co)o(v)o(ers)g(that)f(brac)o
-(k)o(et)h(the)g(whole)g(aggregate.)100 856 y(8.)29 b(TRANSLA)l(TION)165
-928 y(T)l(ranslation)18 b(is)i(considered)g(a)g(kind)g(of)f(mo)q
-(di\014cation,)h(so)g(y)o(ou)g(ma)o(y)f(distribute)g(translations)165
-982 y(of)j(the)g(Do)q(cumen)o(t)g(under)h(the)f(terms)g(of)g(section)f
-(4.)41 b(Replacing)22 b(In)o(v)m(arian)o(t)g(Sections)g(with)165
-1037 y(translations)f(requires)h(sp)q(ecial)h(p)q(ermission)f(from)g
-(their)g(cop)o(yrigh)o(t)f(holders,)j(but)f(y)o(ou)g(ma)o(y)165
-1092 y(include)13 b(translations)d(of)i(some)g(or)f(all)g(In)o(v)m
-(arian)o(t)h(Sections)g(in)g(addition)g(to)f(the)h(original)f(v)o
-(ersions)165 1147 y(of)k(these)h(In)o(v)m(arian)o(t)f(Sections.)22
-b(Y)l(ou)15 b(ma)o(y)g(include)i(a)e(translation)f(of)h(this)g
-(License,)h(and)g(all)f(the)165 1201 y(license)21 b(notices)f(in)g(the)
-h(Do)q(cumen)o(t,)g(and)g(an)o(y)f(W)l(arran)o(t)o(y)f(Disclaimers,)h
-(pro)o(vided)g(that)g(y)o(ou)165 1256 y(also)f(include)h(the)g
-(original)f(English)g(v)o(ersion)g(of)h(this)f(License)i(and)f(the)g
-(original)e(v)o(ersions)h(of)165 1311 y(those)e(notices)f(and)i
-(disclaimers.)24 b(In)18 b(case)f(of)f(a)h(disagreemen)o(t)f(b)q(et)o
-(w)o(een)i(the)f(translation)e(and)165 1366 y(the)j(original)d(v)o
-(ersion)i(of)g(this)g(License)i(or)e(a)g(notice)g(or)g(disclaimer,)g
-(the)h(original)d(v)o(ersion)i(will)165 1421 y(prev)m(ail.)165
-1492 y(If)e(a)f(section)f(in)i(the)f(Do)q(cumen)o(t)g(is)g(En)o(titled)
-f(\\Ac)o(kno)o(wledgemen)o(ts",)g(\\Dedications",)g(or)g(\\His-)165
-1547 y(tory",)f(the)h(requiremen)o(t)g(\(section)f(4\))h(to)f(Preserv)o
-(e)h(its)g(Title)f(\(section)g(1\))h(will)f(t)o(ypically)f(require)165
-1601 y(c)o(hanging)k(the)g(actual)f(title.)100 1673 y(9.)29
-b(TERMINA)l(TION)165 1744 y(Y)l(ou)15 b(ma)o(y)f(not)h(cop)o(y)l(,)f
-(mo)q(dify)l(,)h(sublicense,)g(or)f(distribute)g(the)h(Do)q(cumen)o(t)g
-(except)h(as)e(expressly)165 1799 y(pro)o(vided)19 b(under)h(this)f
-(License.)33 b(An)o(y)19 b(attempt)f(otherwise)h(to)f(cop)o(y)l(,)i(mo)
-q(dify)l(,)g(sublicense,)g(or)165 1854 y(distribute)14
-b(it)h(is)g(v)o(oid,)f(and)h(will)f(automatically)f(terminate)h(y)o
-(our)g(righ)o(ts)g(under)i(this)f(License.)165 1925 y(Ho)o(w)o(ev)o
-(er,)g(if)h(y)o(ou)g(cease)g(all)f(violation)f(of)i(this)g(License,)h
-(then)f(y)o(our)g(license)g(from)f(a)h(particular)165
-1980 y(cop)o(yrigh)o(t)h(holder)g(is)h(reinstated)f(\(a\))g(pro)o
-(visionally)l(,)f(unless)i(and)g(un)o(til)f(the)h(cop)o(yrigh)o(t)e
-(holder)165 2034 y(explicitly)j(and)i(\014nally)e(terminates)h(y)o(our)
-f(license,)j(and)e(\(b\))g(p)q(ermanen)o(tly)l(,)h(if)f(the)g(cop)o
-(yrigh)o(t)165 2089 y(holder)d(fails)f(to)h(notify)f(y)o(ou)h(of)g(the)
-g(violation)e(b)o(y)i(some)g(reasonable)g(means)g(prior)f(to)h(60)f(da)
-o(ys)165 2144 y(after)e(the)i(cessation.)165 2215 y(Moreo)o(v)o(er,)e
-(y)o(our)h(license)h(from)f(a)g(particular)g(cop)o(yrigh)o(t)f(holder)i
-(is)f(reinstated)g(p)q(ermanen)o(tly)g(if)165 2270 y(the)f(cop)o(yrigh)
-o(t)f(holder)g(noti\014es)h(y)o(ou)f(of)h(the)g(violation)e(b)o(y)h
-(some)h(reasonable)f(means,)h(this)f(is)h(the)165 2325
-y(\014rst)g(time)f(y)o(ou)g(ha)o(v)o(e)h(receiv)o(ed)g(notice)f(of)h
-(violation)e(of)h(this)h(License)g(\(for)f(an)o(y)h(w)o(ork\))f(from)g
-(that)165 2380 y(cop)o(yrigh)o(t)i(holder,)g(and)h(y)o(ou)g(cure)g(the)
-g(violation)e(prior)i(to)f(30)g(da)o(ys)h(after)f(y)o(our)g(receipt)h
-(of)g(the)165 2434 y(notice.)165 2506 y(T)l(ermination)d(of)g(y)o(our)g
-(righ)o(ts)g(under)h(this)f(section)h(do)q(es)g(not)f(terminate)g(the)h
-(licenses)f(of)h(parties)165 2560 y(who)19 b(ha)o(v)o(e)g(receiv)o(ed)g
-(copies)g(or)f(righ)o(ts)g(from)g(y)o(ou)h(under)h(this)e(License.)33
-b(If)19 b(y)o(our)g(righ)o(ts)e(ha)o(v)o(e)165 2615 y(b)q(een)d
-(terminated)e(and)i(not)e(p)q(ermanen)o(tly)h(reinstated,)f(receipt)h
-(of)g(a)g(cop)o(y)g(of)f(some)h(or)f(all)g(of)h(the)165
-2670 y(same)i(material)e(do)q(es)j(not)f(giv)o(e)f(y)o(ou)h(an)o(y)g
-(righ)o(ts)f(to)g(use)i(it.)p eop end
-%%Page: 69 73
-TeXDict begin 69 72 bop 75 -58 a Fs(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(69)77 149
-y(10.)29 b(FUTURE)15 b(REVISIONS)j(OF)d(THIS)h(LICENSE)165
-217 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l(oundation)h(ma)o(y)g
-(publish)h(new,)h(revised)f(v)o(ersions)f(of)g(the)h(GNU)g(F)l(ree)165
-271 y(Do)q(cumen)o(tation)15 b(License)i(from)e(time)g(to)h(time.)21
-b(Suc)o(h)c(new)f(v)o(ersions)g(will)e(b)q(e)j(similar)d(in)i(spirit)
-165 326 y(to)h(the)g(presen)o(t)g(v)o(ersion,)g(but)g(ma)o(y)f
-(di\013er)h(in)g(detail)f(to)h(address)g(new)g(problems)g(or)g
-(concerns.)165 381 y(See)f Fr(http://www.gnu.org/copyle)o(ft/)p
-Fs(.)165 448 y(Eac)o(h)f(v)o(ersion)e(of)i(the)g(License)g(is)f(giv)o
-(en)g(a)h(distinguishing)e(v)o(ersion)h(n)o(um)o(b)q(er.)20
-b(If)15 b(the)g(Do)q(cumen)o(t)165 503 y(sp)q(eci\014es)23
-b(that)f(a)h(particular)e(n)o(um)o(b)q(ered)j(v)o(ersion)d(of)i(this)f
-(License)h(\\or)f(an)o(y)g(later)g(v)o(ersion")165 558
-y(applies)16 b(to)f(it,)h(y)o(ou)g(ha)o(v)o(e)g(the)g(option)f(of)h
-(follo)o(wing)e(the)i(terms)g(and)g(conditions)g(either)g(of)g(that)165
-613 y(sp)q(eci\014ed)k(v)o(ersion)e(or)h(of)f(an)o(y)h(later)f(v)o
-(ersion)g(that)g(has)h(b)q(een)h(published)g(\(not)e(as)g(a)h(draft\))f
-(b)o(y)165 667 y(the)e(F)l(ree)h(Soft)o(w)o(are)e(F)l(oundation.)22
-b(If)17 b(the)g(Do)q(cumen)o(t)f(do)q(es)g(not)g(sp)q(ecify)h(a)f(v)o
-(ersion)g(n)o(um)o(b)q(er)g(of)165 722 y(this)h(License,)h(y)o(ou)f(ma)
-o(y)f(c)o(ho)q(ose)i(an)o(y)e(v)o(ersion)h(ev)o(er)g(published)h(\(not)
-e(as)h(a)g(draft\))f(b)o(y)i(the)f(F)l(ree)165 777 y(Soft)o(w)o(are)e
-(F)l(oundation.)21 b(If)16 b(the)g(Do)q(cumen)o(t)g(sp)q(eci\014es)h
-(that)e(a)h(pro)o(xy)f(can)h(decide)h(whic)o(h)f(future)165
-832 y(v)o(ersions)f(of)h(this)g(License)h(can)f(b)q(e)h(used,)g(that)f
-(pro)o(xy's)f(public)h(statemen)o(t)g(of)g(acceptance)g(of)g(a)165
-887 y(v)o(ersion)e(p)q(ermanen)o(tly)h(authorizes)g(y)o(ou)g(to)f(c)o
-(ho)q(ose)i(that)e(v)o(ersion)g(for)h(the)g(Do)q(cumen)o(t.)77
-954 y(11.)29 b(RELICENSING)165 1021 y(\\Massiv)o(e)17
-b(Multiauthor)g(Collab)q(oration)f(Site")i(\(or)g(\\MMC)g(Site"\))f
-(means)i(an)o(y)f(W)l(orld)g(Wide)165 1076 y(W)l(eb)g(serv)o(er)g(that)
-f(publishes)h(cop)o(yrigh)o(table)e(w)o(orks)h(and)h(also)f(pro)o
-(vides)h(prominen)o(t)f(facilities)165 1131 y(for)c(an)o(yb)q(o)q(dy)h
-(to)f(edit)h(those)f(w)o(orks.)19 b(A)14 b(public)f(wiki)g(that)g(an)o
-(yb)q(o)q(dy)h(can)g(edit)g(is)f(an)h(example)f(of)165
-1186 y(suc)o(h)k(a)g(serv)o(er.)24 b(A)17 b(\\Massiv)o(e)e(Multiauthor)
-g(Collab)q(oration")g(\(or)h(\\MMC"\))f(con)o(tained)h(in)h(the)165
-1240 y(site)e(means)g(an)o(y)g(set)g(of)f(cop)o(yrigh)o(table)g(w)o
-(orks)g(th)o(us)h(published)h(on)f(the)g(MMC)g(site.)165
-1308 y(\\CC-BY-SA")j(means)f(the)h(Creativ)o(e)e(Commons)h(A)o
-(ttribution-Share)f(Alik)o(e)h(3.0)g(license)g(pub-)165
-1362 y(lished)c(b)o(y)h(Creativ)o(e)e(Commons)g(Corp)q(oration,)g(a)h
-(not-for-pro\014t)g(corp)q(oration)f(with)h(a)g(principal)165
-1417 y(place)g(of)f(business)i(in)f(San)g(F)l(rancisco,)f(California,)f
-(as)h(w)o(ell)g(as)h(future)g(cop)o(yleft)f(v)o(ersions)g(of)h(that)165
-1472 y(license)i(published)h(b)o(y)f(that)g(same)f(organization.)165
-1539 y(\\Incorp)q(orate")h(means)g(to)g(publish)g(or)g(republish)g(a)g
-(Do)q(cumen)o(t,)g(in)g(whole)g(or)g(in)g(part,)g(as)g(part)165
-1594 y(of)g(another)g(Do)q(cumen)o(t.)165 1661 y(An)e(MMC)g(is)f
-(\\eligible)g(for)g(relicensing")h(if)f(it)h(is)f(licensed)i(under)g
-(this)e(License,)i(and)f(if)g(all)f(w)o(orks)165 1716
-y(that)20 b(w)o(ere)h(\014rst)g(published)g(under)h(this)e(License)i
-(somewhere)f(other)g(than)g(this)f(MMC,)g(and)165 1771
-y(subsequen)o(tly)e(incorp)q(orated)e(in)i(whole)f(or)g(in)g(part)g(in)
-o(to)f(the)h(MMC,)f(\(1\))h(had)g(no)h(co)o(v)o(er)f(texts)165
-1826 y(or)e(in)o(v)m(arian)o(t)e(sections,)i(and)g(\(2\))f(w)o(ere)h
-(th)o(us)g(incorp)q(orated)g(prior)f(to)h(No)o(v)o(em)o(b)q(er)g(1,)f
-(2008.)165 1893 y(The)21 b(op)q(erator)e(of)h(an)g(MMC)f(Site)h(ma)o(y)
-g(republish)h(an)f(MMC)f(con)o(tained)h(in)g(the)h(site)e(under)165
-1948 y(CC-BY-SA)d(on)f(the)g(same)g(site)f(at)h(an)o(y)f(time)h(b)q
-(efore)g(August)g(1,)g(2009,)e(pro)o(vided)i(the)g(MMC)f(is)165
-2002 y(eligible)g(for)h(relicensing.)p eop end
-%%Page: 70 74
-TeXDict begin 70 73 bop 75 -58 a Fs(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(70)75 149
-y Fq(ADDENDUM:)20 b(Ho)n(w)h(to)h(use)g(this)g(License)g(for)g(y)n(our)
-h(do)r(cumen)n(ts)75 229 y Fs(T)l(o)17 b(use)h(this)e(License)i(in)g(a)
-f(do)q(cumen)o(t)g(y)o(ou)g(ha)o(v)o(e)g(written,)g(include)g(a)g(cop)o
-(y)g(of)g(the)h(License)g(in)f(the)75 284 y(do)q(cumen)o(t)f(and)f(put)
-g(the)h(follo)o(wing)d(cop)o(yrigh)o(t)g(and)j(license)f(notices)g
-(just)g(after)f(the)h(title)f(page:)234 340 y Fe(Copyright)i(\(C\))38
-b Fc(year)g(your)18 b(name)p Fe(.)234 384 y(Permission)e(is)j(granted)e
-(to)i(copy,)e(distribute)f(and/or)h(modify)h(this)g(document)234
-427 y(under)g(the)g(terms)g(of)h(the)f(GNU)h(Free)f(Documenta)o(tio)o
-(n)e(License,)h(Version)g(1.3)234 471 y(or)i(any)g(later)e(version)g
-(published)f(by)j(the)g(Free)f(Software)e(Foundation)o(;)234
-514 y(with)i(no)h(Invariant)d(Sections,)g(no)j(Front-Cove)o(r)e(Texts,)
-g(and)h(no)h(Back-Cover)234 558 y(Texts.)37 b(A)19 b(copy)f(of)h(the)g
-(license)e(is)h(included)f(in)i(the)f(section)f(entitled)g(``GNU)234
-601 y(Free)h(Documentat)o(ion)e(License'')o(.)137 669
-y Fs(If)k(y)o(ou)g(ha)o(v)o(e)g(In)o(v)m(arian)o(t)f(Sections,)h(F)l
-(ron)o(t-Co)o(v)o(er)f(T)l(exts)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l
-(exts,)i(replace)f(the)75 724 y(\\with)s(.)10 b(.)g(.)5
-b(T)l(exts.")20 b(line)15 b(with)f(this:)273 780 y Fe(with)19
-b(the)f(Invariant)e(Sections)h(being)g Fc(list)h(their)g(titles)p
-Fe(,)f(with)273 823 y(the)i(Front-Cov)o(er)d(Texts)i(being)g
-Fc(list)p Fe(,)f(and)i(with)f(the)g(Back-Cover)e(Texts)273
-867 y(being)i Fc(list)p Fe(.)137 934 y Fs(If)g(y)o(ou)f(ha)o(v)o(e)h
-(In)o(v)m(arian)o(t)f(Sections)g(without)g(Co)o(v)o(er)f(T)l(exts,)i
-(or)f(some)g(other)g(com)o(bination)g(of)g(the)75 989
-y(three,)e(merge)g(those)g(t)o(w)o(o)f(alternativ)o(es)f(to)i(suit)f
-(the)h(situation.)137 1056 y(If)d(y)o(our)g(do)q(cumen)o(t)g(con)o
-(tains)f(non)o(trivial)f(examples)i(of)f(program)g(co)q(de,)i(w)o(e)f
-(recommend)g(releasing)75 1111 y(these)22 b(examples)f(in)g(parallel)g
-(under)h(y)o(our)f(c)o(hoice)g(of)g(free)h(soft)o(w)o(are)e(license,)i
-(suc)o(h)g(as)g(the)f(GNU)75 1166 y(General)15 b(Public)g(License,)g
-(to)g(p)q(ermit)g(their)f(use)i(in)f(free)g(soft)o(w)o(are.)p
-eop end
-%%Page: 71 75
-TeXDict begin 71 74 bop 75 -58 a Fs(Concept)15 b(Index)1466
-b(71)75 149 y Fo(Concept)27 b(Index)75 319 y Fq(A)75
-377 y Fb(application-sp)q(eci\014c)14 b(completion)f(functions)c
-Fa(:)e(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(47)75 502 y Fq(C)75
-561 y Fb(command)14 b(editing)9 b Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)21 b Fb(1)75 686 y Fq(E)75 744 y Fb(editing)13
-b(command)h(lines)8 b Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(1)75 869 y Fq(I)75 927 y Fb(initialization)12 b(\014le,)h
-(readline)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(4)75 971
-y(in)o(teraction,)13 b(readline)e Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)24 b Fb(1)75 1096 y Fq(K)75 1154 y Fb(kill)12
-b(ring)g Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(2)1012 319 y(killing)13
-b(text)e Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)24 b Fb(2)1012 463 y Fq(N)1012 528
-y Fb(notation,)14 b(readline)5 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)19 b Fb(1)1012 671 y Fq(R)1012 737 y
-Fb(readline,)13 b(function)6 b Fa(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)19 b Fb(23)1012 880 y Fq(V)1012 946 y Fb(v)n(ariables,)13
-b(readline)f Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
-b Fb(4)1012 1089 y Fq(Y)1012 1154 y Fb(y)o(anking)14
-b(text)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)19 b Fb(2)p eop end
-%%Page: 72 76
-TeXDict begin 72 75 bop 75 -58 a Fs(F)l(unction)15 b(and)g(V)l(ariable)
-g(Index)1187 b(72)75 149 y Fo(F)-7 b(unction)27 b(and)g(V)-7
-b(ariable)28 b(Index)p 80 305 21 3 v 75 363 a Fe(_rl_digit_)o(p)7
-b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(40)75 407 y Fe(_rl_digit_)o(va)o(lue)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Fb(40)75 450 y Fe(_rl_lowerc)o(as)o
-(e_p)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18
-b Fb(40)75 494 y Fe(_rl_to_low)o(er)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(40)75 538 y Fe(_rl_to_upp)o(er)
-6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(40)75 581 y Fe(_rl_upperc)o(as)o(e_p)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Fb(39)75 707 y Fq(A)75
-765 y Fe(abort)11 b(\(C-g\))6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Fb(21)75 809 y Fe(accept-lin)o(e)
-10 b(\(Newline)f(or)j(Return\))t Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)17 b Fb(15)75 935 y Fq(B)75 993 y
-Fe(backward-c)o(ha)o(r)10 b(\(C-b\))t Fa(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)17 b Fb(15)75 1037 y Fe(backward-d)o(el)o(ete)o(-c)o(har)9
-b(\(Rubout\))f Fa(:)s(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)21 b Fb(17)75 1080 y Fe(backward-k)o(il)o(l-l)o(in)o(e)10
-b(\(C-x)h(Rubout\))e Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-22 b Fb(18)75 1124 y Fe(backward-k)o(il)o(l-w)o(or)o(d)10
-b(\(M-DEL\))t Fa(:)s(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)16 b Fb(19)75 1168 y Fe(backward-w)o(or)o(d)10
-b(\(M-b\))t Fa(:)t(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(15)75
-1211 y Fe(beginning-)o(of)o(-hi)o(st)o(ory)9 b(\(M-<\))t
-Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)16 b Fb(16)75 1255 y Fe(beginning-)o(of)o(-li)o(ne)9
-b(\(C-a\))e Fa(:)e(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(15)75 1298 y(b)q(ell-st)o(yle)10
-b Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)23 b Fb(4)75 1342 y(bind-tt)o(y-sp)q(ecial-c)o(hars)
-7 b Fa(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(5)75
-1386 y(blink-matc)o(hing-paren)9 b Fa(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)21 b Fb(5)75 1429 y Fe(bracketed-)o(pa)o(ste)o(-b)o(egi)o(n)10
-b(\(\))c Fa(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)19 b Fb(17)75 1555 y Fq(C)75 1613
-y Fe(call-last-)o(kb)o(d-m)o(ac)o(ro)9 b(\(C-x)j(e\))6
-b Fa(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-18 b Fb(20)75 1657 y Fe(capitalize)o(-w)o(ord)9 b(\(M-c\))f
-Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(18)75 1701 y Fe(character-)o(se)o(arc)o
-(h)10 b(\(C-]\))f Fa(:)s(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fb(21)75 1744
-y Fe(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)9 b(\(M-C-]\))s
-Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(21)75
-1788 y Fe(clear-scre)o(en)9 b(\(C-l\))c Fa(:)g(:)h(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)18 b Fb(15)75 1831 y(colored-completion-pre\014x)12
-b Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(5)75 1875 y(colored-stats)5
-b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)18 b Fb(5)75 1919 y(commen)o(t-b)q(egin)9 b Fa(:)e(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(5)75
-1962 y Fe(complete)10 b(\(TAB\))e Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)23 b Fb(20)75 2006 y(completion-displa)o(y-width)11
-b Fa(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(5)75 2050 y(completion-ignore-case)6
-b Fa(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fb(5)75 2093
-y(completion-map-case)t Fa(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(5)75 2137 y(completion-pre\014x-displa)o(y-length)t
-Fa(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-16 b Fb(5)75 2181 y(completion-query-items)9 b Fa(:)d(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)21 b Fb(6)75 2224 y(con)o(v)o(ert-meta)11 b Fa(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
-b Fb(6)75 2268 y Fe(copy-backw)o(ar)o(d-w)o(or)o(d)10
-b(\(\))f Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(19)75 2311 y Fe(copy-forwa)o(rd)
-o(-wo)o(rd)9 b(\(\))i Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
-b Fb(19)75 2355 y Fe(copy-regio)o(n-)o(as-)o(ki)o(ll)9
-b(\(\))g Fa(:)c(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fb(19)75 2481 y Fq(D)75
-2539 y Fe(delete-cha)o(r)10 b(\(C-d\))c Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)19 b Fb(17)75 2583 y Fe(delete-cha)o(r-)o(or-)o(li)o(st)9
-b(\(\))g Fa(:)c(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fb(20)75 2626 y Fe(delete-hor)o(iz)o
-(ont)o(al)o(-sp)o(ace)9 b(\(\))t Fa(:)c(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)16 b Fb(19)75 2670
-y Fe(digit-argu)o(me)o(nt)9 b(\()p Fc(M-0)p Fe(,)i Fc(M-1)p
-Fe(,)h(...)f Fc(M--)p Fe(\))t Fa(:)t(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)16 b Fb(19)1012 305 y(disable-completion)6 b Fa(:)i(:)e(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(6)1012 349 y Fe(do-uppercas)o(e-)o
-(ver)o(si)o(on)9 b(\(M-a,)i(M-b,)h(M-)p Fc(x)p Fe(,)f(...)o(\))1093
-393 y Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(21)1012
-436 y Fe(downcase-wo)o(rd)9 b(\(M-l\))t Fa(:)t(:)d(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)17 b Fb(18)1012 480 y Fe(dump-functi)o(on)o(s)10
-b(\(\))c Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(22)1012 524 y Fe(dump-macros)9 b(\(\))g Fa(:)e(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(22)1012 568 y Fe(dump-variab)o(le)o
-(s)10 b(\(\))c Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(22)1012 695 y Fq(E)1012 754 y Fb(ec)o(ho-con)o(trol-c)o(haracters)
-t Fa(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(6)1012
-798 y(editing-mo)q(de)11 b Fa(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(6)1012 842 y Fe(emacs-editi)o(ng)o
-(-mo)o(de)9 b(\(C-e\))d Fa(:)t(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Fb(22)1012 886
-y(emacs-mo)q(de-string)6 b Fa(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)19 b Fb(6)1012 930 y(enable-brac)o(k)o(eted-paste)6
-b Fa(:)i(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fb(6)1012 973
-y(enable-k)o(eypad)12 b Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(6)1012 1017 y Fe(end-kbd-mac)o(ro)9
-b(\(C-x)i(\)\))5 b Fa(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(20)1012
-1061 y Fc(end-of-file)9 b Fe(\(usually)h(C-d\))e Fa(:)t(:)e(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21
-b Fb(17)1012 1105 y Fe(end-of-hist)o(or)o(y)10 b(\(M->\))f
-Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)24 b Fb(16)1012 1149 y Fe(end-of-line)9
-b(\(C-e\))d Fa(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(15)1012 1193 y Fe(exchange-po)o(in)o(t-a)o(nd)o(-ma)o(rk)9
-b(\(C-x)j(C-x\))7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(21)1012 1237 y(expand-tilde)7 b Fa(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)20 b Fb(7)1012
-1363 y Fq(F)1012 1422 y Fe(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o
-(-ch)o(ar)9 b(\(\))d Fa(:)f(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-19 b Fb(17)1012 1465 y Fe(forward-cha)o(r)10 b(\(C-f\))5
-b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18 b Fb(15)1012
-1509 y Fe(forward-sea)o(rc)o(h-h)o(is)o(tor)o(y)10 b(\(C-s\))d
-Fa(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
-b Fb(16)1012 1553 y Fe(forward-wor)o(d)10 b(\(M-f\))5
-b Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18 b Fb(15)1012
-1675 y Fq(H)1012 1734 y Fb(history-preserv)o(e-p)q(oin)o(t)5
-b Fa(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(7)1012
-1778 y Fe(history-sea)o(rc)o(h-b)o(ac)o(kwa)o(rd)9 b(\(\))t
-Fa(:)c(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)17 b Fb(16)1012 1822 y Fe(history-sea)o(rc)o(h-f)o(or)o(war)o(d)10
-b(\(\))5 b Fa(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)18 b Fb(16)1012 1866 y(history-size)8
-b Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)21 b Fb(7)1012 1909 y Fe(history-sub)o(st)o(r-s)o(ea)o(rch)o
-(-b)o(ack)o(war)o(d)10 b(\(\))s Fa(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)16 b Fb(16)1012 1953 y Fe(history-sub)o(st)o(r-s)o(ea)o(rch)o(-f)o
-(orw)o(ard)9 b(\(\))t Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
-b Fb(16)1012 1997 y(horizon)o(tal-scroll-mo)q(de)12 b
-Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(7)1012 2115
-y Fq(I)1012 2174 y Fb(input-meta)11 b Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b
-Fb(7)1012 2218 y Fe(insert-comm)o(en)o(t)10 b(\(M-#\))f
-Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)24 b Fb(21)1012 2262 y Fe(insert-comp)o(le)o
-(tio)o(ns)9 b(\(M-*\))d Fa(:)t(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Fb(20)1012 2305
-y(isearc)o(h-terminators)11 b Fa(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)23 b Fb(7)1012 2423 y Fq(K)1012 2482 y Fb(k)o(eymap)t
-Fa(:)7 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(7)1012 2526 y Fe(kill-line)10
-b(\(C-k\))f Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22
-b Fb(18)1012 2570 y Fe(kill-region)9 b(\(\))g Fa(:)e(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(19)1012 2614 y
-Fe(kill-whole-)o(li)o(ne)9 b(\(\))c Fa(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)18 b Fb(18)1012 2657 y Fe(kill-word)10 b(\(M-d\))f
-Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22
-b Fb(18)p eop end
-%%Page: 73 77
-TeXDict begin 73 76 bop 75 -58 a Fs(F)l(unction)15 b(and)g(V)l(ariable)
-g(Index)1187 b(73)75 149 y Fq(M)75 208 y Fb(mark-mo)q(di\014ed-lines)5
-b Fa(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fb(8)75 252 y(mark-symlink)o(ed-directories)t Fa(:)7
-b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)17 b Fb(8)75 297 y(matc)o(h-hidden-\014les)9
-b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(8)75 341 y Fe(menu-compl)o(et)o(e)10 b(\(\))e Fa(:)d(:)h(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(20)75 385 y Fe(menu-compl)o(et)o
-(e-b)o(ac)o(kwa)o(rd)9 b(\(\))c Fa(:)g(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)17 b Fb(20)75
-429 y(men)o(u-complete-displa)o(y-pre\014x)c Fa(:)6 b(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)23
-b Fb(8)75 473 y(meta-\015ag)8 b Fa(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20 b
-Fb(7)75 600 y Fq(N)75 659 y Fe(next-histo)o(ry)9 b(\(C-n\))c
-Fa(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(16)75
-703 y Fe(non-increm)o(en)o(tal)o(-f)o(orw)o(ard)o(-s)o(ear)o(ch)o(-hi)o
-(st)o(ory)9 b(\(M-n\))155 747 y Fa(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)16
-b Fb(16)75 791 y Fe(non-increm)o(en)o(tal)o(-r)o(eve)o(rse)o(-s)o(ear)o
-(ch)o(-hi)o(st)o(ory)9 b(\(M-p\))155 834 y Fa(:)d(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)16 b Fb(16)75 953 y Fq(O)75 1012 y Fb(output-meta)7
-b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)19 b Fb(8)75 1056 y Fe(overwrite-)o(mo)o(de)9
-b(\(\))d Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)19
-b Fb(18)75 1179 y Fq(P)75 1238 y Fb(page-completions)11
-b Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
-b Fb(8)75 1282 y Fe(possible-c)o(om)o(ple)o(ti)o(ons)9
-b(\(M-?\))t Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)16 b Fb(20)75 1326 y Fe(prefix-met)o(a)10
-b(\(ESC\))c Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)19
-b Fb(21)75 1370 y Fe(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))f
-Fa(:)s(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)21 b Fb(15)75 1414 y Fe(print-last)o(-k)o(bd-)o(ma)o
-(cro)9 b(\(\))e Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(20)75 1543 y Fq(Q)75
-1602 y Fe(quoted-ins)o(er)o(t)10 b(\(C-q)h(or)h(C-v\))d
-Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)23 b Fb(17)75 1730 y Fq(R)75 1789 y Fe(re-read-in)o(it)o(-fi)o(le)9
-b(\(C-x)i(C-r\))6 b Fa(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)18 b Fb(21)75 1833 y Fe(readline)6
-b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)19 b Fb(23)75 1877 y Fe(redraw-cur)o(re)o(nt-)o(li)o(ne)
-9 b(\(\))g Fa(:)c(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fb(15)75 1921 y Fe(reverse-se)o(ar)
-o(ch-)o(hi)o(sto)o(ry)9 b(\(C-r\))f Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b Fb(16)75 1965 y(rev)o
-(ert-all-at-newline)10 b Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
-b Fb(9)75 2009 y Fe(revert-lin)o(e)10 b(\(M-r\))c Fa(:)t(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)19 b Fb(21)75 2053 y Fe(rl_add_def)o(un)6
-b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(31)75 2097 y Fe(rl_add_fun)o(ma)o(p_e)o(nt)o(ry)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(35)75 2141 y
-Fe(rl_add_und)o(o)7 b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)23 b Fb(35)75 2185 y Fe(rl_alphabe)o(ti)o(c)8
-b Fa(:)s(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(39)75 2229 y Fe(rl_already)o(_p)o(rom)o(pt)o(ed)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(27)75 2273 y
-Fe(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_f)o(unc)o(ti)o(on)6
-b Fa(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b Fb(49)75
-2317 y Fe(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_o)o(ver)5
-b Fa(:)s(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
-b Fb(53)75 2362 y Fe(rl_basic_q)o(uo)o(te_)o(ch)o(ara)o(cte)o(rs)6
-b Fa(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)23 b Fb(51)75 2406 y Fe(rl_basic_w)o(or)o(d_b)o(re)o(ak_)o(cha)o
-(ra)o(cte)o(rs)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)16 b Fb(51)75 2450 y Fe(rl_begin_u)o(nd)o(o_g)o(ro)o(up)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(35)75 2494 y
-Fe(rl_bind_ke)o(y)7 b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)23 b Fb(32)75 2538 y Fe(rl_bind_ke)o(y_)o(if_)o(un)o
-(bou)o(nd)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(33)75 2582 y
-Fe(rl_bind_ke)o(y_)o(if_)o(un)o(bou)o(nd_)o(in)o(_ma)o(p)5
-b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)17
-b Fb(33)75 2626 y Fe(rl_bind_ke)o(y_)o(in_)o(ma)o(p)7
-b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(32)75 2670
-y Fe(rl_bind_ke)o(ys)o(eq)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)20 b Fb(33)1012 149 y Fe(rl_bind_key)o(se)o(q_i)o(f_)o
-(unb)o(ou)o(nd)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(33)1012 194 y Fe(rl_bind_key)o(se)o(q_i)
-o(f_)o(unb)o(ou)o(nd_)o(in_)o(ma)o(p)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)23 b Fb(33)1012 238 y Fe(rl_bind_key)o(se)o(q_i)o(n_)o(map)6
-b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(33)1012 282 y Fe(rl_binding_)o(ke)o
-(yma)o(p)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16
-b Fb(29)1012 326 y Fe(rl_callback)o(_h)o(and)o(le)o(r_i)o(ns)o(tal)o(l)
-7 b Fa(:)s(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(41)1012 371 y Fe(rl_callback)o(_h)o(and)o(le)o(r_r)o(em)o(ove)8
-b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-22 b Fb(41)1012 415 y Fe(rl_callback)o(_r)o(ead)o(_c)o(har)6
-b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(41)1012 459 y Fe(rl_callback)o(_s)o
-(igc)o(le)o(anu)o(p)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fb(41)1012
-503 y Fe(rl_catch_si)o(gn)o(als)s Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)18 b Fb(45)1012 547 y Fe(rl_catch_si)o(gw)o(inc)o(h)s
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16 b Fb(45)1012
-592 y Fe(rl_change_e)o(nv)o(iro)o(nm)o(ent)6 b Fa(:)s(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-20 b Fb(46)1012 636 y Fe(rl_char_is_)o(qu)o(ote)o(d_)o(p)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(50)1012 680 y
-Fe(rl_cleanup_)o(af)o(ter)o(_s)o(ign)o(al)s Fa(:)t(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)17 b Fb(46)1012 724 y Fe(rl_clear_hi)o(st)o(ory)s
-Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fb(41)1012 769 y Fe(rl_clear_me)o(ss)o(age)s Fa(:)t(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(36)1012
-813 y Fe(rl_clear_pe)o(nd)o(ing)o(_i)o(npu)o(t)5 b Fa(:)s(:)h(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-19 b Fb(38)1012 857 y Fe(rl_clear_si)o(gn)o(als)s Fa(:)t(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(47)1012
-901 y Fe(rl_complete)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)24 b Fb(48)1012 945 y Fe(rl_complete)o(_i)o(nte)o
-(rn)o(al)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(48)1012
-990 y Fe(rl_complete)o(r_)o(quo)o(te)o(_ch)o(ar)o(act)o(ers)t
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18
-b Fb(52)1012 1034 y Fe(rl_complete)o(r_)o(wor)o(d_)o(bre)o(ak)o(_ch)o
-(ara)o(ct)o(ers)6 b Fa(:)s(:)g(:)g(:)h(:)f(:)g(:)g(:)20
-b Fb(51)1012 1078 y Fe(rl_completi)o(on)o(_ap)o(pe)o(nd_)o(ch)o(ara)o
-(cte)o(r)s Fa(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(52)1012 1122 y Fe(rl_completi)o(on)o(_di)o(sp)o(lay)o(_m)o(atc)o
-(hes)o(_h)o(ook)6 b Fa(:)s(:)g(:)g(:)h(:)f(:)g(:)g(:)20
-b Fb(51)1012 1167 y Fe(rl_completi)o(on)o(_en)o(tr)o(y_f)o(un)o(cti)o
-(on)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
-b Fb(48,)13 b(49)1012 1211 y Fe(rl_completi)o(on)o(_fo)o(un)o(d_q)o(uo)
-o(te)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)23 b Fb(52)1012 1255 y Fe(rl_completi)o(on)o(_in)o(vo)o(kin)
-o(g_)o(key)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)22 b Fb(54)1012 1299 y Fe(rl_completi)o(on)o(_ma)o(rk)o
-(_sy)o(ml)o(ink)o(_di)o(rs)7 b Fa(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)24 b Fb(53)1012 1343 y Fe(rl_completi)o(on)o(_ma)o(tc)o(hes)6
-b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(48)1012 1388 y Fe(rl_completi)o(on)o
-(_mo)o(de)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b
-Fb(48)1012 1432 y Fe(rl_completi)o(on)o(_qu)o(er)o(y_i)o(te)o(ms)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)23 b Fb(52)1012 1476 y Fe(rl_completi)o(on)o(_qu)o(ot)o(e_c)o(ha)o
-(rac)o(ter)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)18 b Fb(52)1012 1520 y Fe(rl_completi)o(on)o(_su)o(pp)o(res)o(s_)o
-(app)o(end)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)18 b Fb(52)1012 1564 y Fe(rl_completi)o(on)o(_su)o(pp)o(res)o(s_)o
-(quo)o(te)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)19 b Fb(52)1012 1609 y Fe(rl_completi)o(on)o(_ty)o(pe)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(53)1012 1653
-y Fe(rl_completi)o(on)o(_wo)o(rd)o(_br)o(ea)o(k_h)o(ook)t
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18
-b Fb(51)1012 1697 y Fe(rl_copy_key)o(ma)o(p)7 b Fa(:)s(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20 b Fb(32)1012 1741
-y Fe(rl_copy_tex)o(t)6 b Fa(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)23 b Fb(37)1012 1786 y Fe(rl_crlf)7 b
-Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)21 b Fb(36)1012 1830 y Fe(rl_delete_t)o(ex)o(t)7
-b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20
-b Fb(37)1012 1874 y Fe(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)s
-Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)17 b Fb(29)1012 1918 y Fe(rl_deprep_t)o(er)o(min)o(al)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(38)1012 1962
-y Fe(rl_ding)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(39)1012 2007
-y Fe(rl_director)o(y_)o(com)o(pl)o(eti)o(on)o(_ho)o(ok)6
-b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19
-b Fb(50)1012 2051 y Fe(rl_director)o(y_)o(rew)o(ri)o(te_)o(ho)o(ok;)8
-b Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-22 b Fb(50)1012 2095 y Fe(rl_discard_)o(ke)o(yma)o(p)s
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16 b Fb(32)1012
-2139 y Fe(rl_dispatch)o(in)o(g)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)20 b Fb(26)1012 2184 y Fe(rl_display_)o(ma)o(tch)o
-(_l)o(ist)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(39)1012 2228
-y Fe(rl_display_)o(pr)o(omp)o(t)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)16 b Fb(27)1012 2272 y Fe(rl_do_undo)s Fa(:)s(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(35)1012 2316 y Fe(rl_done)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(26)1012 2360 y Fe(rl_echo_sig)o(na)o(l_c)o(ha)o(r)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(46)1012 2405
-y Fe(rl_editing_)o(mo)o(de)5 b Fa(:)s(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)19 b Fb(31)1012 2449 y Fe(rl_end)9 b Fa(:)t(:)d(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(26)1012 2493 y Fe(rl_end_undo)o(_g)o(rou)o(p)s Fa(:)s(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16 b Fb(35)1012 2537
-y Fe(rl_erase_em)o(pt)o(y_l)o(in)o(e)9 b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-22 b Fb(26)1012 2582 y Fe(rl_event_ho)o(ok)7 b Fa(:)t(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b Fb(28)1012 2626
-y Fe(rl_execute_)o(ne)o(xt)5 b Fa(:)s(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)19 b Fb(38)1012 2670 y Fe(rl_executin)o(g_)o(key)s
-Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fb(29)p eop end
-%%Page: 74 78
-TeXDict begin 74 77 bop 75 -58 a Fs(F)l(unction)15 b(and)g(V)l(ariable)
-g(Index)1187 b(74)75 149 y Fe(rl_executi)o(ng)o(_ke)o(ym)o(ap)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(29)75 194 y Fe(rl_executi)o(ng)
-o(_ke)o(ys)o(eq)9 b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(29)75 238 y Fe(rl_executi)o(ng)o(_ma)o(cr)o(o)7
-b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(29)75 282
-y Fe(rl_expand_)o(pr)o(omp)o(t)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)17 b Fb(37)75 326 y Fe(rl_explici)o(t_)o(arg)5
-b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18
-b Fb(31)75 371 y Fe(rl_extend_)o(li)o(ne_)o(bu)o(ffe)o(r)6
-b Fa(:)s(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)19 b Fb(39)75 415 y Fe(rl_filenam)o(e_)o(com)o
-(pl)o(eti)o(on_)o(de)o(sir)o(ed)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)16 b Fb(53)75 459 y Fe(rl_filenam)o(e_)o(com)o(pl)o
-(eti)o(on_)o(fu)o(nct)o(io)o(n)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)23 b Fb(49)75 503 y Fe(rl_filenam)o(e_)o(deq)o(uo)o(tin)o
-(g_f)o(un)o(cti)o(on)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)16 b Fb(49)75 547 y Fe(rl_filenam)o(e_)o(quo)o(te)o(_ch)o(ara)o
-(ct)o(ers)5 b Fa(:)s(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)19 b Fb(52)75 592 y Fe(rl_filenam)o(e_)o(quo)o(ti)o(ng_)o(des)o(ir)
-o(ed)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)20 b Fb(53)75 636 y Fe(rl_filenam)o(e_)o(quo)o(ti)o(ng_)o(fun)o(ct)o
-(ion)5 b Fa(:)s(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-19 b Fb(49)75 680 y Fe(rl_filenam)o(e_)o(rew)o(ri)o(te_)o(hoo)o(k)8
-b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)24 b Fb(51)75 724 y Fe(rl_filenam)o(e_)o(sta)o(t_)o(hoo)o(k)6
-b Fa(:)s(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)19 b Fb(50)75 769 y Fe(rl_forced_)o(up)o(dat)o
-(e_)o(dis)o(pla)o(y)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(36)75 813 y Fe(rl_free)7
-b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)20 b Fb(39)75 857 y Fe(rl_free_ke)o(ym)o(ap)6
-b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(32)75 901 y Fe(rl_free_li)o(ne)o(_st)o(at)o(e)7
-b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(46)75 945
-y Fe(rl_free_un)o(do)o(_li)o(st)r Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)16 b Fb(35)75 990 y Fe(rl_functio)o(n_)o(dum)o(pe)o(r)7
-b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(34)75 1034
-y Fe(rl_functio)o(n_)o(of_)o(ke)o(yse)o(q)6 b Fa(:)s(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)19
-b Fb(34)75 1078 y Fe(rl_funmap_)o(na)o(mes)5 b Fa(:)s(:)h(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Fb(34)75 1122 y Fe(rl_generic)o(_b)o
-(ind)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18
-b Fb(34)75 1167 y Fe(rl_get_key)o(ma)o(p)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(32)75 1211 y
-Fe(rl_get_key)o(ma)o(p_b)o(y_)o(nam)o(e)6 b Fa(:)s(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)19
-b Fb(32)75 1255 y Fe(rl_get_key)o(ma)o(p_n)o(am)o(e)7
-b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(32)75 1299
-y Fe(rl_get_scr)o(ee)o(n_s)o(iz)o(e)7 b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)23 b Fb(46)75 1343 y Fe(rl_get_ter)o(mc)o(ap)6 b
-Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(40)75 1388 y Fe(rl_getc)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b
-Fb(38)75 1432 y Fe(rl_getc_fu)o(nc)o(tio)o(n)t Fa(:)s(:)6
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(28)75
-1476 y Fe(rl_gnu_rea)o(dl)o(ine)o(_p)r Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)16 b Fb(27)75 1520 y Fe(rl_ignore_)o(co)o(mpl)o(et)o(ion)o
-(_du)o(pl)o(ica)o(te)o(s)8 b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)23 b Fb(53)75 1564 y Fe(rl_ignore_)o(so)o(me_)o(co)o(mpl)o(eti)o(on)
-o(s_f)o(un)o(cti)o(on)5 b Fa(:)s(:)h(:)g(:)g(:)h(:)f(:)18
-b Fb(50)75 1609 y Fe(rl_inhibit)o(_c)o(omp)o(le)o(tio)o(n)6
-b Fa(:)s(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)19 b Fb(54)75 1653 y Fe(rl_initial)o(iz)o(e)8
-b Fa(:)s(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(39)75 1697 y Fe(rl_input_a)o(va)o(ila)o(bl)o(e_h)o(ook)s
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)17 b Fb(28)75 1741 y Fe(rl_insert_)o(co)o(mpl)o(et)o
-(ion)o(s)6 b Fa(:)s(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)19 b Fb(48)75 1786
-y Fe(rl_insert_)o(te)o(xt)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)20 b Fb(37)75 1830 y Fe(rl_instrea)o(m)7
-b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(27)75 1874 y Fe(rl_invokin)o(g_)o(key)o(se)o(qs)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(34)75 1918 y
-Fe(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-21 b Fb(34)75 1962 y Fe(rl_key_seq)o(ue)o(nce)o(_l)o(eng)o(th)5
-b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)18 b Fb(29)75 2007 y Fe(rl_kill_te)o(xt)6
-b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(37)75 2051 y Fe(rl_last_fu)o(nc)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(28)75 2095 y
-Fe(rl_library)o(_v)o(ers)o(io)o(n)7 b Fa(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)23 b Fb(27)75 2139 y Fe(rl_line_bu)o(ff)o(er)6 b Fa(:)t(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(26)75 2184
-y Fe(rl_list_fu)o(nm)o(ap_)o(na)o(mes)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
-b Fb(34)75 2228 y Fe(rl_macro_b)o(in)o(d)8 b Fa(:)s(:)e(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(40)75 2272 y
-Fe(rl_macro_d)o(um)o(per)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)18 b Fb(40)75 2316 y Fe(rl_make_ba)o(re)o(_ke)o(ym)o(ap)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(31)75 2360 y
-Fe(rl_make_ke)o(ym)o(ap)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)20 b Fb(32)75 2405 y Fe(rl_mark)7 b Fa(:)t(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(26)75 2449 y Fe(rl_message)r Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(36)75
-2493 y Fe(rl_modifyi)o(ng)6 b Fa(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(35)75 2537 y Fe(rl_named_f)o(un)o(cti)o
-(on)r Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16
-b Fb(34)75 2582 y Fe(rl_num_cha)o(rs)o(_to)o(_r)o(ead)7
-b Fa(:)s(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(26)75 2626 y Fe(rl_numeric)o(_a)o
-(rg)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(31)75 2670 y Fe(rl_on_new_)o(li)o(ne)6 b Fa(:)t(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(36)1012 149 y
-Fe(rl_on_new_l)o(in)o(e_w)o(it)o(h_p)o(ro)o(mpt)8 b Fa(:)s(:)e(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(36)1012 194 y Fe(rl_outstrea)o(m)6 b Fa(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(27)1012 238
-y Fe(rl_parse_an)o(d_)o(bin)o(d)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)16 b Fb(34)1012 282 y Fe(rl_pending_)o(in)o(put)s
-Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fb(26)1012 326 y Fe(rl_point)6 b Fa(:)s(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)19 b Fb(26)1012
-370 y Fe(rl_possible)o(_c)o(omp)o(le)o(tio)o(ns)s Fa(:)t(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)17 b Fb(48)1012 414 y Fe(rl_pre_inpu)o(t_)o(hoo)o(k)s
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16 b Fb(28)1012
-458 y Fe(rl_prefer_e)o(nv)o(_wi)o(ns)o(ize)6 b Fa(:)s(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-20 b Fb(27)1012 502 y Fe(rl_prep_ter)o(m_)o(fun)o(ct)o(ion)6
-b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(29)1012 546 y Fe(rl_prep_ter)o(mi)o
-(nal)s Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
-b Fb(38)1012 591 y Fe(rl_prompt)5 b Fa(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(27)1012
-635 y Fe(rl_push_mac)o(ro)o(_in)o(pu)o(t)9 b Fa(:)s(:)d(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)22 b Fb(37)1012 679 y Fe(rl_read_ini)o(t_)o(fil)o(e)s
-Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16 b Fb(34)1012
-723 y Fe(rl_read_key)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)24 b Fb(37)1012 767 y Fe(rl_readline)o(_n)o(ame)s
-Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fb(27)1012 811 y Fe(rl_readline)o(_s)o(tat)o(e)s Fa(:)s(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16 b Fb(29)1012 855
-y Fe(rl_readline)o(_v)o(ers)o(io)o(n)9 b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-22 b Fb(27)1012 899 y Fe(rl_redispla)o(y)6 b Fa(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(36)1012 943
-y Fe(rl_redispla)o(y_)o(fun)o(ct)o(ion)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
-b Fb(28)1012 987 y Fe(rl_replace_)o(li)o(ne)5 b Fa(:)s(:)h(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fb(39)1012 1032 y Fe(rl_reset_af)o(te)
-o(r_s)o(ig)o(nal)6 b Fa(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fb(46)1012
-1076 y Fe(rl_reset_li)o(ne)o(_st)o(at)o(e)9 b Fa(:)s(:)d(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)22 b Fb(36)1012 1120 y Fe(rl_reset_sc)o(re)o(en_)o(si)o(ze)7
-b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(47)1012 1164 y Fe(rl_reset_te)o(rm)
-o(ina)o(l)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16
-b Fb(38)1012 1208 y Fe(rl_resize_t)o(er)o(min)o(al)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(46)1012 1252
-y Fe(rl_restore_)o(pr)o(omp)o(t)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)16 b Fb(37)1012 1296 y Fe(rl_restore_)o(st)o(ate)s
-Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fb(39)1012 1340 y Fe(rl_save_pro)o(mp)o(t)7 b Fa(:)s(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20 b Fb(36)1012 1384 y
-Fe(rl_save_sta)o(te)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)21 b Fb(39)1012 1429 y Fe(rl_set_key)s Fa(:)s(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
-b Fb(33)1012 1473 y Fe(rl_set_keyb)o(oa)o(rd_)o(in)o(put)o(_t)o(ime)o
-(out)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18
-b Fb(38)1012 1517 y Fe(rl_set_keym)o(ap)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b Fb(32)1012 1561
-y Fe(rl_set_pare)o(n_)o(bli)o(nk)o(_ti)o(me)o(out)8 b
-Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(40)1012 1605 y Fe(rl_set_prom)o(pt)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b Fb(37)1012 1649
-y Fe(rl_set_scre)o(en)o(_si)o(ze)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-24 b Fb(46)1012 1693 y Fe(rl_set_sign)o(al)o(s)7 b Fa(:)s(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20 b Fb(47)1012 1737
-y Fe(rl_show_cha)o(r)6 b Fa(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)23 b Fb(36)1012 1781 y Fe(rl_signal_e)o(ve)o(nt_)o(ho)o
-(ok)7 b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(28)1012 1826
-y Fe(rl_sort_com)o(pl)o(eti)o(on)o(_ma)o(tc)o(hes)8 b
-Fa(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(53)1012 1870 y Fe(rl_special_)o(pr)o(efi)o(xe)o(s)9
-b Fa(:)s(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(52)1012 1914
-y Fe(rl_startup_)o(ho)o(ok)5 b Fa(:)s(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)19 b Fb(28)1012 1958 y Fe(rl_stuff_ch)o(ar)7
-b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21
-b Fb(38)1012 2002 y Fe(rl_terminal)o(_n)o(ame)s Fa(:)t(:)6
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(27)1012
-2046 y Fe(rl_tty_set_)o(de)o(fau)o(lt)o(_bi)o(nd)o(ing)o(s)7
-b Fa(:)s(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(38)1012 2090 y Fe(rl_tty_unse)o(t_)o(def)o(au)o(lt_)o(bi)o(ndi)o
-(ngs)t Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18
-b Fb(38)1012 2134 y Fe(rl_unbind_c)o(om)o(man)o(d_)o(in_)o(ma)o(p)8
-b Fa(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)24 b Fb(33)1012 2178 y Fe(rl_unbind_f)o(un)o(cti)o(on)o(_in)o
-(_m)o(ap)7 b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)23 b Fb(33)1012 2222 y Fe(rl_unbind_k)o(ey)7
-b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21
-b Fb(33)1012 2267 y Fe(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)7
-b Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(33)1012 2311 y Fe(rl_username)o(_c)
-o(omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)7 b Fa(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)24 b Fb(49)1012 2355 y Fe(rl_variable)o(_b)o(ind)s
-Fa(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
-Fb(40)1012 2399 y Fe(rl_variable)o(_d)o(ump)o(er)7 b
-Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(40)1012 2443
-y Fe(rl_variable)o(_v)o(alu)o(e)s Fa(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)16 b Fb(40)1012 2567 y Fq(S)1012 2626 y Fe(self-insert)9
-b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o(\))t Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(17)1012 2670 y Fe(set-mark)10
-b(\(C-@\))e Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
-b Fb(21)p eop end
-%%Page: 75 79
-TeXDict begin 75 78 bop 75 -58 a Fs(F)l(unction)15 b(and)g(V)l(ariable)
-g(Index)1187 b(75)75 149 y Fb(sho)o(w-all-if-am)o(biguous)7
-b Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Fb(9)75
-193 y(sho)o(w-all-if-unmo)q(di\014ed)12 b Fa(:)6 b(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)24 b Fb(9)75 237 y(sho)o(w-mo)q(de-in-prompt)t
-Fa(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fb(9)75
-280 y(skip-completed-text)5 b Fa(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)18 b Fb(9)75 324 y Fe(skip-csi-s)o(eq)o(uen)o(ce)9
-b(\(\))i Fa(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(21)75
-368 y Fe(start-kbd-)o(ma)o(cro)9 b(\(C-x)i(\(\))f Fa(:)c(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23
-b Fb(20)75 489 y Fq(T)75 547 y Fe(tab-insert)9 b(\(M-TAB\))c
-Fa(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fb(17)75
-591 y Fe(tilde-expa)o(nd)9 b(\(M-~\))c Fa(:)g(:)h(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)18 b Fb(21)75 634 y Fe(transpose-)o(ch)o(ars)9
-b(\(C-t\))f Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(18)75 678
-y Fe(transpose-)o(wo)o(rds)9 b(\(M-t\))f Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
-b Fb(18)75 804 y Fq(U)75 862 y Fe(undo)11 b(\(C-_)h(or)g(C-x)f(C-u\))s
-Fa(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Fb(21)75 906 y Fe(universal-)o(ar)
-o(gum)o(en)o(t)10 b(\(\))f Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
-b Fb(19)1012 149 y Fe(unix-filena)o(me)o(-ru)o(bo)o(ut)9
-b(\(\))e Fa(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(19)1012 193 y Fe(unix-line-d)o(is)o(car)
-o(d)10 b(\(C-u\))d Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(18)1012 237
-y Fe(unix-word-r)o(ub)o(out)9 b(\(C-w\))g Fa(:)t(:)d(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(19)1012 281 y Fe(upcase-word)9 b(\(M-u\))d Fa(:)f(:)h(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)20 b Fb(18)1012 408 y Fq(V)1012 467
-y Fb(vi-cmd-mo)q(de-string)8 b Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)21 b Fb(9)1012 510 y Fe(vi-editing-)o(mo)o(de)9
-b(\(M-C-j\))e Fa(:)t(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(22)1012 554 y(vi-ins-mo)q
-(de-string)10 b Fa(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
-b Fb(10)1012 598 y(visible-stats)11 b Fa(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(10)1012
-716 y Fq(Y)1012 774 y Fe(yank)12 b(\(C-y\))7 b Fa(:)t(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20
-b Fb(19)1012 818 y Fe(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))d
-Fa(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)24 b Fb(17)1012 862 y Fe(yank-nth-ar)o(g)10 b(\(M-C-y\))e
-Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)24 b Fb(16)1012 906 y Fe(yank-pop)10
-b(\(M-y\))e Fa(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
-b Fb(19)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/lib/readline/doc/rlman.aux b/lib/readline/doc/rlman.aux
deleted file mode 100644 (file)
index a86a1d1..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-@xrdef{Command Line Editing-title}{Command Line Editing}
-@xrdef{Command Line Editing-snt}{Chapter@tie 1}
-@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
-@xrdef{Introduction and Notation-snt}{Section@tie 1.1}
-@xrdef{Readline Interaction-title}{Readline Interaction}
-@xrdef{Readline Interaction-snt}{Section@tie 1.2}
-@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
-@xrdef{Readline Bare Essentials-snt}{Section@tie 1.2.1}
-@xrdef{Command Line Editing-pg}{1}
-@xrdef{Introduction and Notation-pg}{1}
-@xrdef{Readline Interaction-pg}{1}
-@xrdef{Readline Bare Essentials-pg}{1}
-@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
-@xrdef{Readline Movement Commands-snt}{Section@tie 1.2.2}
-@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
-@xrdef{Readline Killing Commands-snt}{Section@tie 1.2.3}
-@xrdef{Readline Movement Commands-pg}{2}
-@xrdef{Readline Killing Commands-pg}{2}
-@xrdef{Readline Arguments-title}{Readline Arguments}
-@xrdef{Readline Arguments-snt}{Section@tie 1.2.4}
-@xrdef{Searching-title}{Searching for Commands in the History}
-@xrdef{Searching-snt}{Section@tie 1.2.5}
-@xrdef{Readline Arguments-pg}{3}
-@xrdef{Searching-pg}{3}
-@xrdef{Readline Init File-title}{Readline Init File}
-@xrdef{Readline Init File-snt}{Section@tie 1.3}
-@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
-@xrdef{Readline Init File Syntax-snt}{Section@tie 1.3.1}
-@xrdef{Readline Init File-pg}{4}
-@xrdef{Readline Init File Syntax-pg}{4}
-@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
-@xrdef{Conditional Init Constructs-snt}{Section@tie 1.3.2}
-@xrdef{Sample Init File-title}{Sample Init File}
-@xrdef{Sample Init File-snt}{Section@tie 1.3.3}
-@xrdef{Conditional Init Constructs-pg}{12}
-@xrdef{Sample Init File-pg}{12}
-@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
-@xrdef{Bindable Readline Commands-snt}{Section@tie 1.4}
-@xrdef{Commands For Moving-title}{Commands For Moving}
-@xrdef{Commands For Moving-snt}{Section@tie 1.4.1}
-@xrdef{Commands For History-title}{Commands For Manipulating The History}
-@xrdef{Commands For History-snt}{Section@tie 1.4.2}
-@xrdef{Bindable Readline Commands-pg}{15}
-@xrdef{Commands For Moving-pg}{15}
-@xrdef{Commands For History-pg}{15}
-@xrdef{Commands For Text-title}{Commands For Changing Text}
-@xrdef{Commands For Text-snt}{Section@tie 1.4.3}
-@xrdef{Commands For Text-pg}{17}
-@xrdef{Commands For Killing-title}{Killing And Yanking}
-@xrdef{Commands For Killing-snt}{Section@tie 1.4.4}
-@xrdef{Commands For Killing-pg}{18}
-@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
-@xrdef{Numeric Arguments-snt}{Section@tie 1.4.5}
-@xrdef{Commands For Completion-title}{Letting Readline Type For You}
-@xrdef{Commands For Completion-snt}{Section@tie 1.4.6}
-@xrdef{Numeric Arguments-pg}{19}
-@xrdef{Keyboard Macros-title}{Keyboard Macros}
-@xrdef{Keyboard Macros-snt}{Section@tie 1.4.7}
-@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
-@xrdef{Miscellaneous Commands-snt}{Section@tie 1.4.8}
-@xrdef{Commands For Completion-pg}{20}
-@xrdef{Keyboard Macros-pg}{20}
-@xrdef{Miscellaneous Commands-pg}{21}
-@xrdef{Readline vi Mode-title}{Readline vi Mode}
-@xrdef{Readline vi Mode-snt}{Section@tie 1.5}
-@xrdef{Readline vi Mode-pg}{22}
-@xrdef{Programming with GNU Readline-title}{Programming with GNU Readline}
-@xrdef{Programming with GNU Readline-snt}{Chapter@tie 2}
-@xrdef{Basic Behavior-title}{Basic Behavior}
-@xrdef{Basic Behavior-snt}{Section@tie 2.1}
-@xrdef{Programming with GNU Readline-pg}{23}
-@xrdef{Basic Behavior-pg}{23}
-@xrdef{Custom Functions-title}{Custom Functions}
-@xrdef{Custom Functions-snt}{Section@tie 2.2}
-@xrdef{Readline Typedefs-title}{Readline Typedefs}
-@xrdef{Readline Typedefs-snt}{Section@tie 2.2.1}
-@xrdef{Custom Functions-pg}{24}
-@xrdef{Function Writing-title}{Writing a New Function}
-@xrdef{Function Writing-snt}{Section@tie 2.2.2}
-@xrdef{Readline Typedefs-pg}{25}
-@xrdef{Function Writing-pg}{25}
-@xrdef{Readline Variables-title}{Readline Variables}
-@xrdef{Readline Variables-snt}{Section@tie 2.3}
-@xrdef{Readline Variables-pg}{26}
-@xrdef{Readline Convenience Functions-title}{Readline Convenience Functions}
-@xrdef{Readline Convenience Functions-snt}{Section@tie 2.4}
-@xrdef{Function Naming-title}{Naming a Function}
-@xrdef{Function Naming-snt}{Section@tie 2.4.1}
-@xrdef{Keymaps-title}{Selecting a Keymap}
-@xrdef{Keymaps-snt}{Section@tie 2.4.2}
-@xrdef{Readline Convenience Functions-pg}{31}
-@xrdef{Function Naming-pg}{31}
-@xrdef{Keymaps-pg}{31}
-@xrdef{Binding Keys-title}{Binding Keys}
-@xrdef{Binding Keys-snt}{Section@tie 2.4.3}
-@xrdef{Binding Keys-pg}{32}
-@xrdef{Associating Function Names and Bindings-title}{Associating Function Names and Bindings}
-@xrdef{Associating Function Names and Bindings-snt}{Section@tie 2.4.4}
-@xrdef{Associating Function Names and Bindings-pg}{34}
-@xrdef{Allowing Undoing-title}{Allowing Undoing}
-@xrdef{Allowing Undoing-snt}{Section@tie 2.4.5}
-@xrdef{Redisplay-title}{Redisplay}
-@xrdef{Redisplay-snt}{Section@tie 2.4.6}
-@xrdef{Allowing Undoing-pg}{35}
-@xrdef{Redisplay-pg}{36}
-@xrdef{Modifying Text-title}{Modifying Text}
-@xrdef{Modifying Text-snt}{Section@tie 2.4.7}
-@xrdef{Character Input-title}{Character Input}
-@xrdef{Character Input-snt}{Section@tie 2.4.8}
-@xrdef{Modifying Text-pg}{37}
-@xrdef{Character Input-pg}{37}
-@xrdef{Terminal Management-title}{Terminal Management}
-@xrdef{Terminal Management-snt}{Section@tie 2.4.9}
-@xrdef{Utility Functions-title}{Utility Functions}
-@xrdef{Utility Functions-snt}{Section@tie 2.4.10}
-@xrdef{Terminal Management-pg}{38}
-@xrdef{Utility Functions-pg}{39}
-@xrdef{Miscellaneous Functions-title}{Miscellaneous Functions}
-@xrdef{Miscellaneous Functions-snt}{Section@tie 2.4.11}
-@xrdef{Miscellaneous Functions-pg}{40}
-@xrdef{Alternate Interface-title}{Alternate Interface}
-@xrdef{Alternate Interface-snt}{Section@tie 2.4.12}
-@xrdef{A Readline Example-title}{A Readline Example}
-@xrdef{A Readline Example-snt}{Section@tie 2.4.13}
-@xrdef{Alternate Interface-pg}{41}
-@xrdef{A Readline Example-pg}{41}
-@xrdef{Alternate Interface Example-title}{Alternate Interface Example}
-@xrdef{Alternate Interface Example-snt}{Section@tie 2.4.14}
-@xrdef{Alternate Interface Example-pg}{43}
-@xrdef{Readline Signal Handling-title}{Readline Signal Handling}
-@xrdef{Readline Signal Handling-snt}{Section@tie 2.5}
-@xrdef{Readline Signal Handling-pg}{45}
-@xrdef{Custom Completers-title}{Custom Completers}
-@xrdef{Custom Completers-snt}{Section@tie 2.6}
-@xrdef{How Completing Works-title}{How Completing Works}
-@xrdef{How Completing Works-snt}{Section@tie 2.6.1}
-@xrdef{Custom Completers-pg}{47}
-@xrdef{How Completing Works-pg}{47}
-@xrdef{Completion Functions-title}{Completion Functions}
-@xrdef{Completion Functions-snt}{Section@tie 2.6.2}
-@xrdef{Completion Functions-pg}{48}
-@xrdef{Completion Variables-title}{Completion Variables}
-@xrdef{Completion Variables-snt}{Section@tie 2.6.3}
-@xrdef{Completion Variables-pg}{49}
-@xrdef{A Short Completion Example-title}{A Short Completion Example}
-@xrdef{A Short Completion Example-snt}{Section@tie 2.6.4}
-@xrdef{A Short Completion Example-pg}{54}
-@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
-@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char65{}}
-@xrdef{GNU Free Documentation License-pg}{63}
-@xrdef{Concept Index-title}{Concept Index}
-@xrdef{Concept Index-snt}{}
-@xrdef{Concept Index-pg}{71}
-@xrdef{Function and Variable Index-title}{Function and Variable Index}
-@xrdef{Function and Variable Index-snt}{}
-@xrdef{Function and Variable Index-pg}{72}
diff --git a/lib/readline/doc/rlman.bt b/lib/readline/doc/rlman.bt
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rlman.cp b/lib/readline/doc/rlman.cp
deleted file mode 100644 (file)
index 9e54e8c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-\entry{interaction, readline}{1}{interaction, readline}
-\entry{notation, readline}{1}{notation, readline}
-\entry{command editing}{1}{command editing}
-\entry{editing command lines}{1}{editing command lines}
-\entry{killing text}{2}{killing text}
-\entry{yanking text}{2}{yanking text}
-\entry{kill ring}{2}{kill ring}
-\entry{initialization file, readline}{4}{initialization file, readline}
-\entry{variables, readline}{4}{variables, readline}
-\entry{readline, function}{23}{readline, function}
-\entry{application-specific completion functions}{47}{application-specific completion functions}
diff --git a/lib/readline/doc/rlman.cps b/lib/readline/doc/rlman.cps
deleted file mode 100644 (file)
index e03c29b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-\initial {A}
-\entry {application-specific completion functions}{47}
-\initial {C}
-\entry {command editing}{1}
-\initial {E}
-\entry {editing command lines}{1}
-\initial {I}
-\entry {initialization file, readline}{4}
-\entry {interaction, readline}{1}
-\initial {K}
-\entry {kill ring}{2}
-\entry {killing text}{2}
-\initial {N}
-\entry {notation, readline}{1}
-\initial {R}
-\entry {readline, function}{23}
-\initial {V}
-\entry {variables, readline}{4}
-\initial {Y}
-\entry {yanking text}{2}
diff --git a/lib/readline/doc/rlman.fn b/lib/readline/doc/rlman.fn
deleted file mode 100644 (file)
index 4f6170b..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-\entry{bell-style}{4}{bell-style}
-\entry{bind-tty-special-chars}{5}{bind-tty-special-chars}
-\entry{blink-matching-paren}{5}{blink-matching-paren}
-\entry{colored-completion-prefix}{5}{colored-completion-prefix}
-\entry{colored-stats}{5}{colored-stats}
-\entry{comment-begin}{5}{comment-begin}
-\entry{completion-display-width}{5}{completion-display-width}
-\entry{completion-ignore-case}{5}{completion-ignore-case}
-\entry{completion-map-case}{5}{completion-map-case}
-\entry{completion-prefix-display-length}{5}{completion-prefix-display-length}
-\entry{completion-query-items}{6}{completion-query-items}
-\entry{convert-meta}{6}{convert-meta}
-\entry{disable-completion}{6}{disable-completion}
-\entry{editing-mode}{6}{editing-mode}
-\entry{emacs-mode-string}{6}{emacs-mode-string}
-\entry{echo-control-characters}{6}{echo-control-characters}
-\entry{enable-bracketed-paste}{6}{enable-bracketed-paste}
-\entry{enable-keypad}{6}{enable-keypad}
-\entry{expand-tilde}{7}{expand-tilde}
-\entry{history-preserve-point}{7}{history-preserve-point}
-\entry{history-size}{7}{history-size}
-\entry{horizontal-scroll-mode}{7}{horizontal-scroll-mode}
-\entry{input-meta}{7}{input-meta}
-\entry{meta-flag}{7}{meta-flag}
-\entry{isearch-terminators}{7}{isearch-terminators}
-\entry{keymap}{7}{keymap}
-\entry{mark-modified-lines}{8}{mark-modified-lines}
-\entry{mark-symlinked-directories}{8}{mark-symlinked-directories}
-\entry{match-hidden-files}{8}{match-hidden-files}
-\entry{menu-complete-display-prefix}{8}{menu-complete-display-prefix}
-\entry{output-meta}{8}{output-meta}
-\entry{page-completions}{8}{page-completions}
-\entry{revert-all-at-newline}{9}{revert-all-at-newline}
-\entry{show-all-if-ambiguous}{9}{show-all-if-ambiguous}
-\entry{show-all-if-unmodified}{9}{show-all-if-unmodified}
-\entry{show-mode-in-prompt}{9}{show-mode-in-prompt}
-\entry{skip-completed-text}{9}{skip-completed-text}
-\entry{vi-cmd-mode-string}{9}{vi-cmd-mode-string}
-\entry{vi-ins-mode-string}{10}{vi-ins-mode-string}
-\entry{visible-stats}{10}{visible-stats}
-\entry{beginning-of-line (C-a)}{15}{\code {beginning-of-line (C-a)}}
-\entry{end-of-line (C-e)}{15}{\code {end-of-line (C-e)}}
-\entry{forward-char (C-f)}{15}{\code {forward-char (C-f)}}
-\entry{backward-char (C-b)}{15}{\code {backward-char (C-b)}}
-\entry{forward-word (M-f)}{15}{\code {forward-word (M-f)}}
-\entry{backward-word (M-b)}{15}{\code {backward-word (M-b)}}
-\entry{clear-screen (C-l)}{15}{\code {clear-screen (C-l)}}
-\entry{redraw-current-line ()}{15}{\code {redraw-current-line ()}}
-\entry{accept-line (Newline or Return)}{15}{\code {accept-line (Newline or Return)}}
-\entry{previous-history (C-p)}{15}{\code {previous-history (C-p)}}
-\entry{next-history (C-n)}{16}{\code {next-history (C-n)}}
-\entry{beginning-of-history (M-<)}{16}{\code {beginning-of-history (M-<)}}
-\entry{end-of-history (M->)}{16}{\code {end-of-history (M->)}}
-\entry{reverse-search-history (C-r)}{16}{\code {reverse-search-history (C-r)}}
-\entry{forward-search-history (C-s)}{16}{\code {forward-search-history (C-s)}}
-\entry{non-incremental-reverse-search-history (M-p)}{16}{\code {non-incremental-reverse-search-history (M-p)}}
-\entry{non-incremental-forward-search-history (M-n)}{16}{\code {non-incremental-forward-search-history (M-n)}}
-\entry{history-search-forward ()}{16}{\code {history-search-forward ()}}
-\entry{history-search-backward ()}{16}{\code {history-search-backward ()}}
-\entry{history-substr-search-forward ()}{16}{\code {history-substr-search-forward ()}}
-\entry{history-substr-search-backward ()}{16}{\code {history-substr-search-backward ()}}
-\entry{yank-nth-arg (M-C-y)}{16}{\code {yank-nth-arg (M-C-y)}}
-\entry{yank-last-arg (M-. or M-_)}{17}{\code {yank-last-arg (M-. or M-_)}}
-\entry{end-of-file (usually C-d)}{17}{\code {\i {end-of-file} (usually C-d)}}
-\entry{delete-char (C-d)}{17}{\code {delete-char (C-d)}}
-\entry{backward-delete-char (Rubout)}{17}{\code {backward-delete-char (Rubout)}}
-\entry{forward-backward-delete-char ()}{17}{\code {forward-backward-delete-char ()}}
-\entry{quoted-insert (C-q or C-v)}{17}{\code {quoted-insert (C-q or C-v)}}
-\entry{tab-insert (M-TAB)}{17}{\code {tab-insert (M-\key {TAB})}}
-\entry{self-insert (a, b, A, 1, !, ...{})}{17}{\code {self-insert (a, b, A, 1, !, \dots {})}}
-\entry{bracketed-paste-begin ()}{17}{\code {bracketed-paste-begin ()}}
-\entry{transpose-chars (C-t)}{18}{\code {transpose-chars (C-t)}}
-\entry{transpose-words (M-t)}{18}{\code {transpose-words (M-t)}}
-\entry{upcase-word (M-u)}{18}{\code {upcase-word (M-u)}}
-\entry{downcase-word (M-l)}{18}{\code {downcase-word (M-l)}}
-\entry{capitalize-word (M-c)}{18}{\code {capitalize-word (M-c)}}
-\entry{overwrite-mode ()}{18}{\code {overwrite-mode ()}}
-\entry{kill-line (C-k)}{18}{\code {kill-line (C-k)}}
-\entry{backward-kill-line (C-x Rubout)}{18}{\code {backward-kill-line (C-x Rubout)}}
-\entry{unix-line-discard (C-u)}{18}{\code {unix-line-discard (C-u)}}
-\entry{kill-whole-line ()}{18}{\code {kill-whole-line ()}}
-\entry{kill-word (M-d)}{18}{\code {kill-word (M-d)}}
-\entry{backward-kill-word (M-DEL)}{19}{\code {backward-kill-word (M-\key {DEL})}}
-\entry{unix-word-rubout (C-w)}{19}{\code {unix-word-rubout (C-w)}}
-\entry{unix-filename-rubout ()}{19}{\code {unix-filename-rubout ()}}
-\entry{delete-horizontal-space ()}{19}{\code {delete-horizontal-space ()}}
-\entry{kill-region ()}{19}{\code {kill-region ()}}
-\entry{copy-region-as-kill ()}{19}{\code {copy-region-as-kill ()}}
-\entry{copy-backward-word ()}{19}{\code {copy-backward-word ()}}
-\entry{copy-forward-word ()}{19}{\code {copy-forward-word ()}}
-\entry{yank (C-y)}{19}{\code {yank (C-y)}}
-\entry{yank-pop (M-y)}{19}{\code {yank-pop (M-y)}}
-\entry{digit-argument (M-0, M-1, ...{} M--)}{19}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
-\entry{universal-argument ()}{19}{\code {universal-argument ()}}
-\entry{complete (TAB)}{20}{\code {complete (\key {TAB})}}
-\entry{possible-completions (M-?)}{20}{\code {possible-completions (M-?)}}
-\entry{insert-completions (M-*)}{20}{\code {insert-completions (M-*)}}
-\entry{menu-complete ()}{20}{\code {menu-complete ()}}
-\entry{menu-complete-backward ()}{20}{\code {menu-complete-backward ()}}
-\entry{delete-char-or-list ()}{20}{\code {delete-char-or-list ()}}
-\entry{start-kbd-macro (C-x ()}{20}{\code {start-kbd-macro (C-x ()}}
-\entry{end-kbd-macro (C-x ))}{20}{\code {end-kbd-macro (C-x ))}}
-\entry{call-last-kbd-macro (C-x e)}{20}{\code {call-last-kbd-macro (C-x e)}}
-\entry{print-last-kbd-macro ()}{20}{\code {print-last-kbd-macro ()}}
-\entry{re-read-init-file (C-x C-r)}{21}{\code {re-read-init-file (C-x C-r)}}
-\entry{abort (C-g)}{21}{\code {abort (C-g)}}
-\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{21}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}
-\entry{prefix-meta (ESC)}{21}{\code {prefix-meta (\key {ESC})}}
-\entry{undo (C-_ or C-x C-u)}{21}{\code {undo (C-_ or C-x C-u)}}
-\entry{revert-line (M-r)}{21}{\code {revert-line (M-r)}}
-\entry{tilde-expand (M-~)}{21}{\code {tilde-expand (M-~)}}
-\entry{set-mark (C-@)}{21}{\code {set-mark (C-@)}}
-\entry{exchange-point-and-mark (C-x C-x)}{21}{\code {exchange-point-and-mark (C-x C-x)}}
-\entry{character-search (C-])}{21}{\code {character-search (C-])}}
-\entry{character-search-backward (M-C-])}{21}{\code {character-search-backward (M-C-])}}
-\entry{skip-csi-sequence ()}{21}{\code {skip-csi-sequence ()}}
-\entry{insert-comment (M-#)}{21}{\code {insert-comment (M-#)}}
-\entry{dump-functions ()}{22}{\code {dump-functions ()}}
-\entry{dump-variables ()}{22}{\code {dump-variables ()}}
-\entry{dump-macros ()}{22}{\code {dump-macros ()}}
-\entry{emacs-editing-mode (C-e)}{22}{\code {emacs-editing-mode (C-e)}}
-\entry{vi-editing-mode (M-C-j)}{22}{\code {vi-editing-mode (M-C-j)}}
-\entry{readline}{23}{\code {readline}}
-\entry{rl_line_buffer}{26}{\code {rl_line_buffer}}
-\entry{rl_point}{26}{\code {rl_point}}
-\entry{rl_end}{26}{\code {rl_end}}
-\entry{rl_mark}{26}{\code {rl_mark}}
-\entry{rl_done}{26}{\code {rl_done}}
-\entry{rl_num_chars_to_read}{26}{\code {rl_num_chars_to_read}}
-\entry{rl_pending_input}{26}{\code {rl_pending_input}}
-\entry{rl_dispatching}{26}{\code {rl_dispatching}}
-\entry{rl_erase_empty_line}{26}{\code {rl_erase_empty_line}}
-\entry{rl_prompt}{27}{\code {rl_prompt}}
-\entry{rl_display_prompt}{27}{\code {rl_display_prompt}}
-\entry{rl_already_prompted}{27}{\code {rl_already_prompted}}
-\entry{rl_library_version}{27}{\code {rl_library_version}}
-\entry{rl_readline_version}{27}{\code {rl_readline_version}}
-\entry{rl_gnu_readline_p}{27}{\code {rl_gnu_readline_p}}
-\entry{rl_terminal_name}{27}{\code {rl_terminal_name}}
-\entry{rl_readline_name}{27}{\code {rl_readline_name}}
-\entry{rl_instream}{27}{\code {rl_instream}}
-\entry{rl_outstream}{27}{\code {rl_outstream}}
-\entry{rl_prefer_env_winsize}{27}{\code {rl_prefer_env_winsize}}
-\entry{rl_last_func}{28}{\code {rl_last_func}}
-\entry{rl_startup_hook}{28}{\code {rl_startup_hook}}
-\entry{rl_pre_input_hook}{28}{\code {rl_pre_input_hook}}
-\entry{rl_event_hook}{28}{\code {rl_event_hook}}
-\entry{rl_getc_function}{28}{\code {rl_getc_function}}
-\entry{rl_signal_event_hook}{28}{\code {rl_signal_event_hook}}
-\entry{rl_input_available_hook}{28}{\code {rl_input_available_hook}}
-\entry{rl_redisplay_function}{28}{\code {rl_redisplay_function}}
-\entry{rl_prep_term_function}{29}{\code {rl_prep_term_function}}
-\entry{rl_deprep_term_function}{29}{\code {rl_deprep_term_function}}
-\entry{rl_executing_keymap}{29}{\code {rl_executing_keymap}}
-\entry{rl_binding_keymap}{29}{\code {rl_binding_keymap}}
-\entry{rl_executing_macro}{29}{\code {rl_executing_macro}}
-\entry{rl_executing_key}{29}{\code {rl_executing_key}}
-\entry{rl_executing_keyseq}{29}{\code {rl_executing_keyseq}}
-\entry{rl_key_sequence_length}{29}{\code {rl_key_sequence_length}}
-\entry{rl_readline_state}{29}{\code {rl_readline_state}}
-\entry{rl_explicit_arg}{31}{\code {rl_explicit_arg}}
-\entry{rl_numeric_arg}{31}{\code {rl_numeric_arg}}
-\entry{rl_editing_mode}{31}{\code {rl_editing_mode}}
-\entry{rl_add_defun}{31}{\code {rl_add_defun}}
-\entry{rl_make_bare_keymap}{31}{\code {rl_make_bare_keymap}}
-\entry{rl_copy_keymap}{32}{\code {rl_copy_keymap}}
-\entry{rl_make_keymap}{32}{\code {rl_make_keymap}}
-\entry{rl_discard_keymap}{32}{\code {rl_discard_keymap}}
-\entry{rl_free_keymap}{32}{\code {rl_free_keymap}}
-\entry{rl_get_keymap}{32}{\code {rl_get_keymap}}
-\entry{rl_set_keymap}{32}{\code {rl_set_keymap}}
-\entry{rl_get_keymap_by_name}{32}{\code {rl_get_keymap_by_name}}
-\entry{rl_get_keymap_name}{32}{\code {rl_get_keymap_name}}
-\entry{rl_bind_key}{32}{\code {rl_bind_key}}
-\entry{rl_bind_key_in_map}{32}{\code {rl_bind_key_in_map}}
-\entry{rl_bind_key_if_unbound}{33}{\code {rl_bind_key_if_unbound}}
-\entry{rl_bind_key_if_unbound_in_map}{33}{\code {rl_bind_key_if_unbound_in_map}}
-\entry{rl_unbind_key}{33}{\code {rl_unbind_key}}
-\entry{rl_unbind_key_in_map}{33}{\code {rl_unbind_key_in_map}}
-\entry{rl_unbind_function_in_map}{33}{\code {rl_unbind_function_in_map}}
-\entry{rl_unbind_command_in_map}{33}{\code {rl_unbind_command_in_map}}
-\entry{rl_bind_keyseq}{33}{\code {rl_bind_keyseq}}
-\entry{rl_bind_keyseq_in_map}{33}{\code {rl_bind_keyseq_in_map}}
-\entry{rl_set_key}{33}{\code {rl_set_key}}
-\entry{rl_bind_keyseq_if_unbound}{33}{\code {rl_bind_keyseq_if_unbound}}
-\entry{rl_bind_keyseq_if_unbound_in_map}{33}{\code {rl_bind_keyseq_if_unbound_in_map}}
-\entry{rl_generic_bind}{34}{\code {rl_generic_bind}}
-\entry{rl_parse_and_bind}{34}{\code {rl_parse_and_bind}}
-\entry{rl_read_init_file}{34}{\code {rl_read_init_file}}
-\entry{rl_named_function}{34}{\code {rl_named_function}}
-\entry{rl_function_of_keyseq}{34}{\code {rl_function_of_keyseq}}
-\entry{rl_invoking_keyseqs}{34}{\code {rl_invoking_keyseqs}}
-\entry{rl_invoking_keyseqs_in_map}{34}{\code {rl_invoking_keyseqs_in_map}}
-\entry{rl_function_dumper}{34}{\code {rl_function_dumper}}
-\entry{rl_list_funmap_names}{34}{\code {rl_list_funmap_names}}
-\entry{rl_funmap_names}{34}{\code {rl_funmap_names}}
-\entry{rl_add_funmap_entry}{35}{\code {rl_add_funmap_entry}}
-\entry{rl_begin_undo_group}{35}{\code {rl_begin_undo_group}}
-\entry{rl_end_undo_group}{35}{\code {rl_end_undo_group}}
-\entry{rl_add_undo}{35}{\code {rl_add_undo}}
-\entry{rl_free_undo_list}{35}{\code {rl_free_undo_list}}
-\entry{rl_do_undo}{35}{\code {rl_do_undo}}
-\entry{rl_modifying}{35}{\code {rl_modifying}}
-\entry{rl_redisplay}{36}{\code {rl_redisplay}}
-\entry{rl_forced_update_display}{36}{\code {rl_forced_update_display}}
-\entry{rl_on_new_line}{36}{\code {rl_on_new_line}}
-\entry{rl_on_new_line_with_prompt}{36}{\code {rl_on_new_line_with_prompt}}
-\entry{rl_reset_line_state}{36}{\code {rl_reset_line_state}}
-\entry{rl_crlf}{36}{\code {rl_crlf}}
-\entry{rl_show_char}{36}{\code {rl_show_char}}
-\entry{rl_message}{36}{\code {rl_message}}
-\entry{rl_clear_message}{36}{\code {rl_clear_message}}
-\entry{rl_save_prompt}{36}{\code {rl_save_prompt}}
-\entry{rl_restore_prompt}{37}{\code {rl_restore_prompt}}
-\entry{rl_expand_prompt}{37}{\code {rl_expand_prompt}}
-\entry{rl_set_prompt}{37}{\code {rl_set_prompt}}
-\entry{rl_insert_text}{37}{\code {rl_insert_text}}
-\entry{rl_delete_text}{37}{\code {rl_delete_text}}
-\entry{rl_copy_text}{37}{\code {rl_copy_text}}
-\entry{rl_kill_text}{37}{\code {rl_kill_text}}
-\entry{rl_push_macro_input}{37}{\code {rl_push_macro_input}}
-\entry{rl_read_key}{37}{\code {rl_read_key}}
-\entry{rl_getc}{38}{\code {rl_getc}}
-\entry{rl_stuff_char}{38}{\code {rl_stuff_char}}
-\entry{rl_execute_next}{38}{\code {rl_execute_next}}
-\entry{rl_clear_pending_input}{38}{\code {rl_clear_pending_input}}
-\entry{rl_set_keyboard_input_timeout}{38}{\code {rl_set_keyboard_input_timeout}}
-\entry{rl_prep_terminal}{38}{\code {rl_prep_terminal}}
-\entry{rl_deprep_terminal}{38}{\code {rl_deprep_terminal}}
-\entry{rl_tty_set_default_bindings}{38}{\code {rl_tty_set_default_bindings}}
-\entry{rl_tty_unset_default_bindings}{38}{\code {rl_tty_unset_default_bindings}}
-\entry{rl_reset_terminal}{38}{\code {rl_reset_terminal}}
-\entry{rl_save_state}{39}{\code {rl_save_state}}
-\entry{rl_restore_state}{39}{\code {rl_restore_state}}
-\entry{rl_free}{39}{\code {rl_free}}
-\entry{rl_replace_line}{39}{\code {rl_replace_line}}
-\entry{rl_extend_line_buffer}{39}{\code {rl_extend_line_buffer}}
-\entry{rl_initialize}{39}{\code {rl_initialize}}
-\entry{rl_ding}{39}{\code {rl_ding}}
-\entry{rl_alphabetic}{39}{\code {rl_alphabetic}}
-\entry{rl_display_match_list}{39}{\code {rl_display_match_list}}
-\entry{_rl_uppercase_p}{39}{\code {_rl_uppercase_p}}
-\entry{_rl_lowercase_p}{40}{\code {_rl_lowercase_p}}
-\entry{_rl_digit_p}{40}{\code {_rl_digit_p}}
-\entry{_rl_to_upper}{40}{\code {_rl_to_upper}}
-\entry{_rl_to_lower}{40}{\code {_rl_to_lower}}
-\entry{_rl_digit_value}{40}{\code {_rl_digit_value}}
-\entry{rl_macro_bind}{40}{\code {rl_macro_bind}}
-\entry{rl_macro_dumper}{40}{\code {rl_macro_dumper}}
-\entry{rl_variable_bind}{40}{\code {rl_variable_bind}}
-\entry{rl_variable_value}{40}{\code {rl_variable_value}}
-\entry{rl_variable_dumper}{40}{\code {rl_variable_dumper}}
-\entry{rl_set_paren_blink_timeout}{40}{\code {rl_set_paren_blink_timeout}}
-\entry{rl_get_termcap}{40}{\code {rl_get_termcap}}
-\entry{rl_clear_history}{41}{\code {rl_clear_history}}
-\entry{rl_callback_handler_install}{41}{\code {rl_callback_handler_install}}
-\entry{rl_callback_read_char}{41}{\code {rl_callback_read_char}}
-\entry{rl_callback_sigcleanup}{41}{\code {rl_callback_sigcleanup}}
-\entry{rl_callback_handler_remove}{41}{\code {rl_callback_handler_remove}}
-\entry{rl_catch_signals}{45}{\code {rl_catch_signals}}
-\entry{rl_catch_sigwinch}{45}{\code {rl_catch_sigwinch}}
-\entry{rl_change_environment}{46}{\code {rl_change_environment}}
-\entry{rl_cleanup_after_signal}{46}{\code {rl_cleanup_after_signal}}
-\entry{rl_free_line_state}{46}{\code {rl_free_line_state}}
-\entry{rl_reset_after_signal}{46}{\code {rl_reset_after_signal}}
-\entry{rl_echo_signal_char}{46}{\code {rl_echo_signal_char}}
-\entry{rl_resize_terminal}{46}{\code {rl_resize_terminal}}
-\entry{rl_set_screen_size}{46}{\code {rl_set_screen_size}}
-\entry{rl_get_screen_size}{46}{\code {rl_get_screen_size}}
-\entry{rl_reset_screen_size}{47}{\code {rl_reset_screen_size}}
-\entry{rl_set_signals}{47}{\code {rl_set_signals}}
-\entry{rl_clear_signals}{47}{\code {rl_clear_signals}}
-\entry{rl_complete}{48}{\code {rl_complete}}
-\entry{rl_completion_entry_function}{48}{\code {rl_completion_entry_function}}
-\entry{rl_complete_internal}{48}{\code {rl_complete_internal}}
-\entry{rl_complete}{48}{\code {rl_complete}}
-\entry{rl_possible_completions}{48}{\code {rl_possible_completions}}
-\entry{rl_insert_completions}{48}{\code {rl_insert_completions}}
-\entry{rl_completion_mode}{48}{\code {rl_completion_mode}}
-\entry{rl_completion_matches}{48}{\code {rl_completion_matches}}
-\entry{rl_filename_completion_function}{49}{\code {rl_filename_completion_function}}
-\entry{rl_username_completion_function}{49}{\code {rl_username_completion_function}}
-\entry{rl_completion_entry_function}{49}{\code {rl_completion_entry_function}}
-\entry{rl_attempted_completion_function}{49}{\code {rl_attempted_completion_function}}
-\entry{rl_filename_quoting_function}{49}{\code {rl_filename_quoting_function}}
-\entry{rl_filename_dequoting_function}{49}{\code {rl_filename_dequoting_function}}
-\entry{rl_char_is_quoted_p}{50}{\code {rl_char_is_quoted_p}}
-\entry{rl_ignore_some_completions_function}{50}{\code {rl_ignore_some_completions_function}}
-\entry{rl_directory_completion_hook}{50}{\code {rl_directory_completion_hook}}
-\entry{rl_directory_rewrite_hook;}{50}{\code {rl_directory_rewrite_hook;}}
-\entry{rl_filename_stat_hook}{50}{\code {rl_filename_stat_hook}}
-\entry{rl_filename_rewrite_hook}{51}{\code {rl_filename_rewrite_hook}}
-\entry{rl_completion_display_matches_hook}{51}{\code {rl_completion_display_matches_hook}}
-\entry{rl_basic_word_break_characters}{51}{\code {rl_basic_word_break_characters}}
-\entry{rl_basic_quote_characters}{51}{\code {rl_basic_quote_characters}}
-\entry{rl_completer_word_break_characters}{51}{\code {rl_completer_word_break_characters}}
-\entry{rl_completion_word_break_hook}{51}{\code {rl_completion_word_break_hook}}
-\entry{rl_completer_quote_characters}{52}{\code {rl_completer_quote_characters}}
-\entry{rl_filename_quote_characters}{52}{\code {rl_filename_quote_characters}}
-\entry{rl_special_prefixes}{52}{\code {rl_special_prefixes}}
-\entry{rl_completion_query_items}{52}{\code {rl_completion_query_items}}
-\entry{rl_completion_append_character}{52}{\code {rl_completion_append_character}}
-\entry{rl_completion_suppress_append}{52}{\code {rl_completion_suppress_append}}
-\entry{rl_completion_quote_character}{52}{\code {rl_completion_quote_character}}
-\entry{rl_completion_suppress_quote}{52}{\code {rl_completion_suppress_quote}}
-\entry{rl_completion_found_quote}{52}{\code {rl_completion_found_quote}}
-\entry{rl_completion_mark_symlink_dirs}{53}{\code {rl_completion_mark_symlink_dirs}}
-\entry{rl_ignore_completion_duplicates}{53}{\code {rl_ignore_completion_duplicates}}
-\entry{rl_filename_completion_desired}{53}{\code {rl_filename_completion_desired}}
-\entry{rl_filename_quoting_desired}{53}{\code {rl_filename_quoting_desired}}
-\entry{rl_attempted_completion_over}{53}{\code {rl_attempted_completion_over}}
-\entry{rl_sort_completion_matches}{53}{\code {rl_sort_completion_matches}}
-\entry{rl_completion_type}{53}{\code {rl_completion_type}}
-\entry{rl_completion_invoking_key}{54}{\code {rl_completion_invoking_key}}
-\entry{rl_inhibit_completion}{54}{\code {rl_inhibit_completion}}
diff --git a/lib/readline/doc/rlman.fns b/lib/readline/doc/rlman.fns
deleted file mode 100644 (file)
index f32ee6f..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-\initial {_}
-\entry {\code {_rl_digit_p}}{40}
-\entry {\code {_rl_digit_value}}{40}
-\entry {\code {_rl_lowercase_p}}{40}
-\entry {\code {_rl_to_lower}}{40}
-\entry {\code {_rl_to_upper}}{40}
-\entry {\code {_rl_uppercase_p}}{39}
-\initial {A}
-\entry {\code {abort (C-g)}}{21}
-\entry {\code {accept-line (Newline or Return)}}{15}
-\initial {B}
-\entry {\code {backward-char (C-b)}}{15}
-\entry {\code {backward-delete-char (Rubout)}}{17}
-\entry {\code {backward-kill-line (C-x Rubout)}}{18}
-\entry {\code {backward-kill-word (M-\key {DEL})}}{19}
-\entry {\code {backward-word (M-b)}}{15}
-\entry {\code {beginning-of-history (M-<)}}{16}
-\entry {\code {beginning-of-line (C-a)}}{15}
-\entry {bell-style}{4}
-\entry {bind-tty-special-chars}{5}
-\entry {blink-matching-paren}{5}
-\entry {\code {bracketed-paste-begin ()}}{17}
-\initial {C}
-\entry {\code {call-last-kbd-macro (C-x e)}}{20}
-\entry {\code {capitalize-word (M-c)}}{18}
-\entry {\code {character-search (C-])}}{21}
-\entry {\code {character-search-backward (M-C-])}}{21}
-\entry {\code {clear-screen (C-l)}}{15}
-\entry {colored-completion-prefix}{5}
-\entry {colored-stats}{5}
-\entry {comment-begin}{5}
-\entry {\code {complete (\key {TAB})}}{20}
-\entry {completion-display-width}{5}
-\entry {completion-ignore-case}{5}
-\entry {completion-map-case}{5}
-\entry {completion-prefix-display-length}{5}
-\entry {completion-query-items}{6}
-\entry {convert-meta}{6}
-\entry {\code {copy-backward-word ()}}{19}
-\entry {\code {copy-forward-word ()}}{19}
-\entry {\code {copy-region-as-kill ()}}{19}
-\initial {D}
-\entry {\code {delete-char (C-d)}}{17}
-\entry {\code {delete-char-or-list ()}}{20}
-\entry {\code {delete-horizontal-space ()}}{19}
-\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{19}
-\entry {disable-completion}{6}
-\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{21}
-\entry {\code {downcase-word (M-l)}}{18}
-\entry {\code {dump-functions ()}}{22}
-\entry {\code {dump-macros ()}}{22}
-\entry {\code {dump-variables ()}}{22}
-\initial {E}
-\entry {echo-control-characters}{6}
-\entry {editing-mode}{6}
-\entry {\code {emacs-editing-mode (C-e)}}{22}
-\entry {emacs-mode-string}{6}
-\entry {enable-bracketed-paste}{6}
-\entry {enable-keypad}{6}
-\entry {\code {end-kbd-macro (C-x ))}}{20}
-\entry {\code {\i {end-of-file} (usually C-d)}}{17}
-\entry {\code {end-of-history (M->)}}{16}
-\entry {\code {end-of-line (C-e)}}{15}
-\entry {\code {exchange-point-and-mark (C-x C-x)}}{21}
-\entry {expand-tilde}{7}
-\initial {F}
-\entry {\code {forward-backward-delete-char ()}}{17}
-\entry {\code {forward-char (C-f)}}{15}
-\entry {\code {forward-search-history (C-s)}}{16}
-\entry {\code {forward-word (M-f)}}{15}
-\initial {H}
-\entry {history-preserve-point}{7}
-\entry {\code {history-search-backward ()}}{16}
-\entry {\code {history-search-forward ()}}{16}
-\entry {history-size}{7}
-\entry {\code {history-substr-search-backward ()}}{16}
-\entry {\code {history-substr-search-forward ()}}{16}
-\entry {horizontal-scroll-mode}{7}
-\initial {I}
-\entry {input-meta}{7}
-\entry {\code {insert-comment (M-#)}}{21}
-\entry {\code {insert-completions (M-*)}}{20}
-\entry {isearch-terminators}{7}
-\initial {K}
-\entry {keymap}{7}
-\entry {\code {kill-line (C-k)}}{18}
-\entry {\code {kill-region ()}}{19}
-\entry {\code {kill-whole-line ()}}{18}
-\entry {\code {kill-word (M-d)}}{18}
-\initial {M}
-\entry {mark-modified-lines}{8}
-\entry {mark-symlinked-directories}{8}
-\entry {match-hidden-files}{8}
-\entry {\code {menu-complete ()}}{20}
-\entry {\code {menu-complete-backward ()}}{20}
-\entry {menu-complete-display-prefix}{8}
-\entry {meta-flag}{7}
-\initial {N}
-\entry {\code {next-history (C-n)}}{16}
-\entry {\code {non-incremental-forward-search-history (M-n)}}{16}
-\entry {\code {non-incremental-reverse-search-history (M-p)}}{16}
-\initial {O}
-\entry {output-meta}{8}
-\entry {\code {overwrite-mode ()}}{18}
-\initial {P}
-\entry {page-completions}{8}
-\entry {\code {possible-completions (M-?)}}{20}
-\entry {\code {prefix-meta (\key {ESC})}}{21}
-\entry {\code {previous-history (C-p)}}{15}
-\entry {\code {print-last-kbd-macro ()}}{20}
-\initial {Q}
-\entry {\code {quoted-insert (C-q or C-v)}}{17}
-\initial {R}
-\entry {\code {re-read-init-file (C-x C-r)}}{21}
-\entry {\code {readline}}{23}
-\entry {\code {redraw-current-line ()}}{15}
-\entry {\code {reverse-search-history (C-r)}}{16}
-\entry {revert-all-at-newline}{9}
-\entry {\code {revert-line (M-r)}}{21}
-\entry {\code {rl_add_defun}}{31}
-\entry {\code {rl_add_funmap_entry}}{35}
-\entry {\code {rl_add_undo}}{35}
-\entry {\code {rl_alphabetic}}{39}
-\entry {\code {rl_already_prompted}}{27}
-\entry {\code {rl_attempted_completion_function}}{49}
-\entry {\code {rl_attempted_completion_over}}{53}
-\entry {\code {rl_basic_quote_characters}}{51}
-\entry {\code {rl_basic_word_break_characters}}{51}
-\entry {\code {rl_begin_undo_group}}{35}
-\entry {\code {rl_bind_key}}{32}
-\entry {\code {rl_bind_key_if_unbound}}{33}
-\entry {\code {rl_bind_key_if_unbound_in_map}}{33}
-\entry {\code {rl_bind_key_in_map}}{32}
-\entry {\code {rl_bind_keyseq}}{33}
-\entry {\code {rl_bind_keyseq_if_unbound}}{33}
-\entry {\code {rl_bind_keyseq_if_unbound_in_map}}{33}
-\entry {\code {rl_bind_keyseq_in_map}}{33}
-\entry {\code {rl_binding_keymap}}{29}
-\entry {\code {rl_callback_handler_install}}{41}
-\entry {\code {rl_callback_handler_remove}}{41}
-\entry {\code {rl_callback_read_char}}{41}
-\entry {\code {rl_callback_sigcleanup}}{41}
-\entry {\code {rl_catch_signals}}{45}
-\entry {\code {rl_catch_sigwinch}}{45}
-\entry {\code {rl_change_environment}}{46}
-\entry {\code {rl_char_is_quoted_p}}{50}
-\entry {\code {rl_cleanup_after_signal}}{46}
-\entry {\code {rl_clear_history}}{41}
-\entry {\code {rl_clear_message}}{36}
-\entry {\code {rl_clear_pending_input}}{38}
-\entry {\code {rl_clear_signals}}{47}
-\entry {\code {rl_complete}}{48}
-\entry {\code {rl_complete_internal}}{48}
-\entry {\code {rl_completer_quote_characters}}{52}
-\entry {\code {rl_completer_word_break_characters}}{51}
-\entry {\code {rl_completion_append_character}}{52}
-\entry {\code {rl_completion_display_matches_hook}}{51}
-\entry {\code {rl_completion_entry_function}}{48, 49}
-\entry {\code {rl_completion_found_quote}}{52}
-\entry {\code {rl_completion_invoking_key}}{54}
-\entry {\code {rl_completion_mark_symlink_dirs}}{53}
-\entry {\code {rl_completion_matches}}{48}
-\entry {\code {rl_completion_mode}}{48}
-\entry {\code {rl_completion_query_items}}{52}
-\entry {\code {rl_completion_quote_character}}{52}
-\entry {\code {rl_completion_suppress_append}}{52}
-\entry {\code {rl_completion_suppress_quote}}{52}
-\entry {\code {rl_completion_type}}{53}
-\entry {\code {rl_completion_word_break_hook}}{51}
-\entry {\code {rl_copy_keymap}}{32}
-\entry {\code {rl_copy_text}}{37}
-\entry {\code {rl_crlf}}{36}
-\entry {\code {rl_delete_text}}{37}
-\entry {\code {rl_deprep_term_function}}{29}
-\entry {\code {rl_deprep_terminal}}{38}
-\entry {\code {rl_ding}}{39}
-\entry {\code {rl_directory_completion_hook}}{50}
-\entry {\code {rl_directory_rewrite_hook;}}{50}
-\entry {\code {rl_discard_keymap}}{32}
-\entry {\code {rl_dispatching}}{26}
-\entry {\code {rl_display_match_list}}{39}
-\entry {\code {rl_display_prompt}}{27}
-\entry {\code {rl_do_undo}}{35}
-\entry {\code {rl_done}}{26}
-\entry {\code {rl_echo_signal_char}}{46}
-\entry {\code {rl_editing_mode}}{31}
-\entry {\code {rl_end}}{26}
-\entry {\code {rl_end_undo_group}}{35}
-\entry {\code {rl_erase_empty_line}}{26}
-\entry {\code {rl_event_hook}}{28}
-\entry {\code {rl_execute_next}}{38}
-\entry {\code {rl_executing_key}}{29}
-\entry {\code {rl_executing_keymap}}{29}
-\entry {\code {rl_executing_keyseq}}{29}
-\entry {\code {rl_executing_macro}}{29}
-\entry {\code {rl_expand_prompt}}{37}
-\entry {\code {rl_explicit_arg}}{31}
-\entry {\code {rl_extend_line_buffer}}{39}
-\entry {\code {rl_filename_completion_desired}}{53}
-\entry {\code {rl_filename_completion_function}}{49}
-\entry {\code {rl_filename_dequoting_function}}{49}
-\entry {\code {rl_filename_quote_characters}}{52}
-\entry {\code {rl_filename_quoting_desired}}{53}
-\entry {\code {rl_filename_quoting_function}}{49}
-\entry {\code {rl_filename_rewrite_hook}}{51}
-\entry {\code {rl_filename_stat_hook}}{50}
-\entry {\code {rl_forced_update_display}}{36}
-\entry {\code {rl_free}}{39}
-\entry {\code {rl_free_keymap}}{32}
-\entry {\code {rl_free_line_state}}{46}
-\entry {\code {rl_free_undo_list}}{35}
-\entry {\code {rl_function_dumper}}{34}
-\entry {\code {rl_function_of_keyseq}}{34}
-\entry {\code {rl_funmap_names}}{34}
-\entry {\code {rl_generic_bind}}{34}
-\entry {\code {rl_get_keymap}}{32}
-\entry {\code {rl_get_keymap_by_name}}{32}
-\entry {\code {rl_get_keymap_name}}{32}
-\entry {\code {rl_get_screen_size}}{46}
-\entry {\code {rl_get_termcap}}{40}
-\entry {\code {rl_getc}}{38}
-\entry {\code {rl_getc_function}}{28}
-\entry {\code {rl_gnu_readline_p}}{27}
-\entry {\code {rl_ignore_completion_duplicates}}{53}
-\entry {\code {rl_ignore_some_completions_function}}{50}
-\entry {\code {rl_inhibit_completion}}{54}
-\entry {\code {rl_initialize}}{39}
-\entry {\code {rl_input_available_hook}}{28}
-\entry {\code {rl_insert_completions}}{48}
-\entry {\code {rl_insert_text}}{37}
-\entry {\code {rl_instream}}{27}
-\entry {\code {rl_invoking_keyseqs}}{34}
-\entry {\code {rl_invoking_keyseqs_in_map}}{34}
-\entry {\code {rl_key_sequence_length}}{29}
-\entry {\code {rl_kill_text}}{37}
-\entry {\code {rl_last_func}}{28}
-\entry {\code {rl_library_version}}{27}
-\entry {\code {rl_line_buffer}}{26}
-\entry {\code {rl_list_funmap_names}}{34}
-\entry {\code {rl_macro_bind}}{40}
-\entry {\code {rl_macro_dumper}}{40}
-\entry {\code {rl_make_bare_keymap}}{31}
-\entry {\code {rl_make_keymap}}{32}
-\entry {\code {rl_mark}}{26}
-\entry {\code {rl_message}}{36}
-\entry {\code {rl_modifying}}{35}
-\entry {\code {rl_named_function}}{34}
-\entry {\code {rl_num_chars_to_read}}{26}
-\entry {\code {rl_numeric_arg}}{31}
-\entry {\code {rl_on_new_line}}{36}
-\entry {\code {rl_on_new_line_with_prompt}}{36}
-\entry {\code {rl_outstream}}{27}
-\entry {\code {rl_parse_and_bind}}{34}
-\entry {\code {rl_pending_input}}{26}
-\entry {\code {rl_point}}{26}
-\entry {\code {rl_possible_completions}}{48}
-\entry {\code {rl_pre_input_hook}}{28}
-\entry {\code {rl_prefer_env_winsize}}{27}
-\entry {\code {rl_prep_term_function}}{29}
-\entry {\code {rl_prep_terminal}}{38}
-\entry {\code {rl_prompt}}{27}
-\entry {\code {rl_push_macro_input}}{37}
-\entry {\code {rl_read_init_file}}{34}
-\entry {\code {rl_read_key}}{37}
-\entry {\code {rl_readline_name}}{27}
-\entry {\code {rl_readline_state}}{29}
-\entry {\code {rl_readline_version}}{27}
-\entry {\code {rl_redisplay}}{36}
-\entry {\code {rl_redisplay_function}}{28}
-\entry {\code {rl_replace_line}}{39}
-\entry {\code {rl_reset_after_signal}}{46}
-\entry {\code {rl_reset_line_state}}{36}
-\entry {\code {rl_reset_screen_size}}{47}
-\entry {\code {rl_reset_terminal}}{38}
-\entry {\code {rl_resize_terminal}}{46}
-\entry {\code {rl_restore_prompt}}{37}
-\entry {\code {rl_restore_state}}{39}
-\entry {\code {rl_save_prompt}}{36}
-\entry {\code {rl_save_state}}{39}
-\entry {\code {rl_set_key}}{33}
-\entry {\code {rl_set_keyboard_input_timeout}}{38}
-\entry {\code {rl_set_keymap}}{32}
-\entry {\code {rl_set_paren_blink_timeout}}{40}
-\entry {\code {rl_set_prompt}}{37}
-\entry {\code {rl_set_screen_size}}{46}
-\entry {\code {rl_set_signals}}{47}
-\entry {\code {rl_show_char}}{36}
-\entry {\code {rl_signal_event_hook}}{28}
-\entry {\code {rl_sort_completion_matches}}{53}
-\entry {\code {rl_special_prefixes}}{52}
-\entry {\code {rl_startup_hook}}{28}
-\entry {\code {rl_stuff_char}}{38}
-\entry {\code {rl_terminal_name}}{27}
-\entry {\code {rl_tty_set_default_bindings}}{38}
-\entry {\code {rl_tty_unset_default_bindings}}{38}
-\entry {\code {rl_unbind_command_in_map}}{33}
-\entry {\code {rl_unbind_function_in_map}}{33}
-\entry {\code {rl_unbind_key}}{33}
-\entry {\code {rl_unbind_key_in_map}}{33}
-\entry {\code {rl_username_completion_function}}{49}
-\entry {\code {rl_variable_bind}}{40}
-\entry {\code {rl_variable_dumper}}{40}
-\entry {\code {rl_variable_value}}{40}
-\initial {S}
-\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{17}
-\entry {\code {set-mark (C-@)}}{21}
-\entry {show-all-if-ambiguous}{9}
-\entry {show-all-if-unmodified}{9}
-\entry {show-mode-in-prompt}{9}
-\entry {skip-completed-text}{9}
-\entry {\code {skip-csi-sequence ()}}{21}
-\entry {\code {start-kbd-macro (C-x ()}}{20}
-\initial {T}
-\entry {\code {tab-insert (M-\key {TAB})}}{17}
-\entry {\code {tilde-expand (M-~)}}{21}
-\entry {\code {transpose-chars (C-t)}}{18}
-\entry {\code {transpose-words (M-t)}}{18}
-\initial {U}
-\entry {\code {undo (C-_ or C-x C-u)}}{21}
-\entry {\code {universal-argument ()}}{19}
-\entry {\code {unix-filename-rubout ()}}{19}
-\entry {\code {unix-line-discard (C-u)}}{18}
-\entry {\code {unix-word-rubout (C-w)}}{19}
-\entry {\code {upcase-word (M-u)}}{18}
-\initial {V}
-\entry {vi-cmd-mode-string}{9}
-\entry {\code {vi-editing-mode (M-C-j)}}{22}
-\entry {vi-ins-mode-string}{10}
-\entry {visible-stats}{10}
-\initial {Y}
-\entry {\code {yank (C-y)}}{19}
-\entry {\code {yank-last-arg (M-. or M-_)}}{17}
-\entry {\code {yank-nth-arg (M-C-y)}}{16}
-\entry {\code {yank-pop (M-y)}}{19}
diff --git a/lib/readline/doc/rlman.ky b/lib/readline/doc/rlman.ky
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rlman.log b/lib/readline/doc/rlman.log
deleted file mode 100644 (file)
index af34453..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/MacPorts 2014_9) (preloaded format=etex 2014.11.4)  1 JUL 2015 10:33
-entering extended mode
- restricted \write18 enabled.
- file:line:error style messages enabled.
- %&-line parsing enabled.
-**\input ././rlman.texi
-(././rlman.texi (./texinfo.tex Loading texinfo [version 2013-09-11.11]:
-\bindingoffset=\dimen16
-\normaloffset=\dimen17
-\pagewidth=\dimen18
-\pageheight=\dimen19
-\outerhsize=\dimen20
-\outervsize=\dimen21
-\cornerlong=\dimen22
-\cornerthick=\dimen23
-\topandbottommargin=\dimen24
-\headlinebox=\box16
-\footlinebox=\box17
-\margin=\insert252
-\EMsimple=\toks13
-\groupbox=\box18
-\groupinvalidhelp=\toks14
-\mil=\dimen25
-\exdentamount=\skip18
-\inmarginspacing=\skip19
-\centerpenalty=\count27
- pdf,
-\tempnum=\count28
-\lnkcount=\count29
-\filename=\toks15
-\filenamelength=\count30
-\pgn=\count31
-\toksA=\toks16
-\toksB=\toks17
-\toksC=\toks18
-\toksD=\toks19
-\boxA=\box19
-\countA=\count32
-\nopdfimagehelp=\toks20
-
-fonts,
-\sffam=\fam8
-\textleading=\dimen26
- markup,
-\fontdepth=\count33
- glyphs,
-\errorbox=\box20
- page headings,
-\titlepagetopglue=\skip20
-\titlepagebottomglue=\skip21
-\evenheadline=\toks21
-\oddheadline=\toks22
-\evenfootline=\toks23
-\oddfootline=\toks24
- tables,
-\tableindent=\dimen27
-\itemindent=\dimen28
-\itemmargin=\dimen29
-\itemmax=\dimen30
-\itemno=\count34
-\multitableparskip=\skip22
-\multitableparindent=\skip23
-\multitablecolspace=\dimen31
-\multitablelinespace=\skip24
-\colcount=\count35
-\everytab=\toks25
- conditionals,
-\doignorecount=\count36
- indexing,
-\whatsitskip=\skip25
-\whatsitpenalty=\count37
-\secondaryindent=\skip26
-\partialpage=\box21
-\doublecolumnhsize=\dimen32
-
-sectioning,
-\unnumberedno=\count38
-\chapno=\count39
-\secno=\count40
-\subsecno=\count41
-\subsubsecno=\count42
-\appendixno=\count43
-\absseclevel=\count44
-\secbase=\count45
-\chapheadingskip=\skip27
-\secheadingskip=\skip28
-\subsecheadingskip=\skip29
- toc,
-\tocfile=\write0
-\contentsrightmargin=\skip30
-\savepageno=\count46
-\lastnegativepageno=\count47
-\tocindent=\dimen33
- environments,
-\lispnarrowing=\skip31
-\envskipamount=\skip32
-\circthick=\dimen34
-\cartouter=\dimen35
-\cartinner=\dimen36
-\normbskip=\skip33
-\normpskip=\skip34
-\normlskip=\skip35
-\lskip=\skip36
-\rskip=\skip37
-\nonfillparindent=\dimen37
-\tabw=\dimen38
-\verbbox=\box22
- defuns,
-\defbodyindent=\skip38
-\defargsindent=\skip39
-\deflastargmargin=\skip40
-\defunpenalty=\count48
-\parencount=\count49
-\brackcount=\count50
- macros,
-\paramno=\count51
-\macname=\toks26
- cross references,
-\auxfile=\write1
-\savesfregister=\count52
-\toprefbox=\box23
-\printedrefnamebox=\box24
-\infofilenamebox=\box25
-\printedmanualbox=\box26
- insertions,
-\footnoteno=\count53
-\SAVEfootins=\box27
-\SAVEmargin=\box28
-
-(/opt/local/share/texmf/tex/generic/epsf/epsf.tex
-This is `epsf.tex' v2.7.4 <14 February 2011>
-\epsffilein=\read1
-\epsfframemargin=\dimen39
-\epsfframethickness=\dimen40
-\epsfrsize=\dimen41
-\epsftmp=\dimen42
-\epsftsize=\dimen43
-\epsfxsize=\dimen44
-\epsfysize=\dimen45
-\pspoints=\dimen46
-)
-\noepsfhelp=\toks27
- localization,
-\nolanghelp=\toks28
-\countUTFx=\count54
-\countUTFy=\count55
-\countUTFz=\count56
- formatting,
-\defaultparindent=\dimen47
- and turning on texinfo input format.) (./rlman.aux)
-\openout1 = `rlman.aux'.
-
-@cpindfile=@write2
-@fnindfile=@write3
-@vrindfile=@write4
-@tpindfile=@write5
-@kyindfile=@write6
-@pgindfile=@write7
-texinfo.tex: doing @include of version.texi
-
-(./version.texi) [1
-\openout2 = `rlman.cp'.
-
-\openout3 = `rlman.fn'.
-
-\openout4 = `rlman.vr'.
-
-\openout5 = `rlman.tp'.
-
-\openout6 = `rlman.ky'.
-
-\openout7 = `rlman.pg'.
-
-] [2] (./rlman.toc [-1]) [-2]
-texinfo.tex: doing @include of rluser.texi
-
- (./rluser.texi
-@btindfile=@write8
- Chapter 1
-\openout0 = `rlman.toc'.
-
-
-[1
-\openout8 = `rlman.bt'.
-
-] [2] [3] [4] [5] [6] [7] [8] [9]
-Underfull \hbox (badness 7540) in paragraph at lines 794--800
- []@textrm In the above ex-am-ple, @textttsl C-u[] @textrm is bound to the func
--tion
-
-@hbox(7.60416+2.12917)x433.62, glue set 4.22592
-.@glue(@leftskip) 115.63242
-.@hbox(0.0+0.0)x0.0
-.@textrm I
-.@textrm n
-.@glue 3.65 plus 1.825 minus 1.21666
-.etc.
-
-
-Underfull \hbox (badness 10000) in paragraph at lines 794--800
- @texttt universal-argument[]@textrm , @textttsl M-DEL[] @textrm is bound to th
-e func-tion
-
-@hbox(7.60416+2.43333)x433.62, glue set 5.18782
-.@glue(@leftskip) 115.63242
-.@texttt u
-.@texttt n
-.@texttt i
-.@texttt v
-.etc.
-
-[10] [11] [12]
-Overfull \hbox (26.43913pt too wide) in paragraph at lines 989--989
- []@texttt Meta-Control-h: backward-kill-word Text after the function name is i
-gnored[] |
-
-@hbox(6.69167+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@texttt M
-.@texttt e
-.@texttt t
-.etc.
-
-[13] [14] [15] [16] [17] [18] [19] [20] [21])
-texinfo.tex: doing @include of rltech.texi
-
- (./rltech.texi Chapter 2 [22]
-[23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37]
-[38] [39] [40] [41] [42]
-Overfull \hbox (14.94176pt too wide) in paragraph at lines 1455--1455
- []      @texttt /* This function needs to be called to reset the terminal sett
-ings,[] |
-
-@hbox(7.60416+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@penalty 10000
-.@glue 5.74869
-.@penalty 10000
-.etc.
-
-
-Overfull \hbox (14.94176pt too wide) in paragraph at lines 1456--1456
- []         @texttt and calling it from the line handler keeps one extra prompt
- from[] |
-
-@hbox(6.69167+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@penalty 10000
-.@glue 5.74869
-.@penalty 10000
-.etc.
-
-[43] [44] [45] [46] [47] [48] [49] [50] [51] [52]
-Underfull \hbox (badness 7379) in paragraph at lines 2097--2102
- []@textrm If an application-specific com-ple-tion func-tion as-signed to @text
-tt rl_attempted_
-
-@hbox(7.60416+2.43333)x433.62, glue set 4.19675
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@textrm I
-.@textrm f
-.@glue 3.65 plus 1.825 minus 1.21666
-.etc.
-
-[53] [54] [55] [56] [57] [58] [59] [60] [61]) Appendix A [62]
-texinfo.tex: doing @include of fdl.texi
-
- (./fdl.texi
-[63] [64] [65] [66] [67] [68] [69]) (Concept Index) [70] (./rlman.cps)
-(Function and Variable Index) [71] (./rlman.fns [72] [73] [74]) [75] ) 
-Here is how much of TeX's memory you used:
- 1966 strings out of 497120
- 24593 string characters out of 6207257
- 109559 words of memory out of 5000000
- 3127 multiletter control sequences out of 15000+600000
- 32127 words of font info for 112 fonts, out of 8000000 for 9000
- 51 hyphenation exceptions out of 8191
- 16i,6n,16p,292b,602s stack positions out of 5000i,500n,10000p,200000b,80000s
-
-Output written on rlman.dvi (79 pages, 322164 bytes).
diff --git a/lib/readline/doc/rlman.pg b/lib/readline/doc/rlman.pg
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rlman.texinfo b/lib/readline/doc/rlman.texinfo
deleted file mode 100644 (file)
index 1ffebad..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-\input texinfo    @c -*-texinfo-*-
-@comment %**start of header (This is for running Texinfo on a region.)
-@setfilename readline.info
-@settitle GNU Readline Library
-@comment %**end of header (This is for running Texinfo on a region.)
-@synindex vr fn
-@setchapternewpage odd
-
-@include manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* Readline: (readline).       The GNU readline library API
-@end direntry
-
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage  
-@title GNU Readline Library
-@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@node Top
-@top GNU Readline Library
-
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-
-@menu
-* Command Line Editing::          GNU Readline User's Manual.
-* Programming with GNU Readline::  GNU Readline Programmer's Manual.
-* Concept Index::                 Index of concepts described in this manual.
-* Function and Variable Index::           Index of externally visible functions
-                                  and variables.
-@end menu
-@end ifinfo
-
-@include rluser.texinfo
-@include rltech.texinfo
-
-@node Concept Index
-@unnumbered Concept Index
-@printindex cp
-
-@node Function and Variable Index
-@unnumbered Function and Variable Index
-@printindex fn
-
-@contents
-@bye
diff --git a/lib/readline/doc/rlman.tmp b/lib/readline/doc/rlman.tmp
deleted file mode 100644 (file)
index 9e5c1b1..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-This manual describes the GNU Readline Library
-(version @value{VERSION}, @value{UPDATED}), a library which aids in the
-consistency of user interface across discrete programs which provide
-a command line interface.
-
-Copyright @copyright{} 1988--2014 Free Software Foundation, Inc.
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-@end quotation
-@empty 
diff --git a/lib/readline/doc/rlman.toc b/lib/readline/doc/rlman.toc
deleted file mode 100644 (file)
index 107c238..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-@numchapentry{Command Line Editing}{1}{Command Line Editing}{1}
-@numsecentry{Introduction to Line Editing}{1.1}{Introduction and Notation}{1}
-@numsecentry{Readline Interaction}{1.2}{Readline Interaction}{1}
-@numsubsecentry{Readline Bare Essentials}{1.2.1}{Readline Bare Essentials}{1}
-@numsubsecentry{Readline Movement Commands}{1.2.2}{Readline Movement Commands}{2}
-@numsubsecentry{Readline Killing Commands}{1.2.3}{Readline Killing Commands}{2}
-@numsubsecentry{Readline Arguments}{1.2.4}{Readline Arguments}{3}
-@numsubsecentry{Searching for Commands in the History}{1.2.5}{Searching}{3}
-@numsecentry{Readline Init File}{1.3}{Readline Init File}{4}
-@numsubsecentry{Readline Init File Syntax}{1.3.1}{Readline Init File Syntax}{4}
-@numsubsecentry{Conditional Init Constructs}{1.3.2}{Conditional Init Constructs}{12}
-@numsubsecentry{Sample Init File}{1.3.3}{Sample Init File}{12}
-@numsecentry{Bindable Readline Commands}{1.4}{Bindable Readline Commands}{15}
-@numsubsecentry{Commands For Moving}{1.4.1}{Commands For Moving}{15}
-@numsubsecentry{Commands For Manipulating The History}{1.4.2}{Commands For History}{15}
-@numsubsecentry{Commands For Changing Text}{1.4.3}{Commands For Text}{17}
-@numsubsecentry{Killing And Yanking}{1.4.4}{Commands For Killing}{18}
-@numsubsecentry{Specifying Numeric Arguments}{1.4.5}{Numeric Arguments}{19}
-@numsubsecentry{Letting Readline Type For You}{1.4.6}{Commands For Completion}{20}
-@numsubsecentry{Keyboard Macros}{1.4.7}{Keyboard Macros}{20}
-@numsubsecentry{Some Miscellaneous Commands}{1.4.8}{Miscellaneous Commands}{21}
-@numsecentry{Readline vi Mode}{1.5}{Readline vi Mode}{22}
-@numchapentry{Programming with GNU Readline}{2}{Programming with GNU Readline}{23}
-@numsecentry{Basic Behavior}{2.1}{Basic Behavior}{23}
-@numsecentry{Custom Functions}{2.2}{Custom Functions}{24}
-@numsubsecentry{Readline Typedefs}{2.2.1}{Readline Typedefs}{25}
-@numsubsecentry{Writing a New Function}{2.2.2}{Function Writing}{25}
-@numsecentry{Readline Variables}{2.3}{Readline Variables}{26}
-@numsecentry{Readline Convenience Functions}{2.4}{Readline Convenience Functions}{31}
-@numsubsecentry{Naming a Function}{2.4.1}{Function Naming}{31}
-@numsubsecentry{Selecting a Keymap}{2.4.2}{Keymaps}{31}
-@numsubsecentry{Binding Keys}{2.4.3}{Binding Keys}{32}
-@numsubsecentry{Associating Function Names and Bindings}{2.4.4}{Associating Function Names and Bindings}{34}
-@numsubsecentry{Allowing Undoing}{2.4.5}{Allowing Undoing}{35}
-@numsubsecentry{Redisplay}{2.4.6}{Redisplay}{36}
-@numsubsecentry{Modifying Text}{2.4.7}{Modifying Text}{37}
-@numsubsecentry{Character Input}{2.4.8}{Character Input}{37}
-@numsubsecentry{Terminal Management}{2.4.9}{Terminal Management}{38}
-@numsubsecentry{Utility Functions}{2.4.10}{Utility Functions}{39}
-@numsubsecentry{Miscellaneous Functions}{2.4.11}{Miscellaneous Functions}{40}
-@numsubsecentry{Alternate Interface}{2.4.12}{Alternate Interface}{41}
-@numsubsecentry{A Readline Example}{2.4.13}{A Readline Example}{41}
-@numsubsecentry{Alternate Interface Example}{2.4.14}{Alternate Interface Example}{43}
-@numsecentry{Readline Signal Handling}{2.5}{Readline Signal Handling}{45}
-@numsecentry{Custom Completers}{2.6}{Custom Completers}{47}
-@numsubsecentry{How Completing Works}{2.6.1}{How Completing Works}{47}
-@numsubsecentry{Completion Functions}{2.6.2}{Completion Functions}{48}
-@numsubsecentry{Completion Variables}{2.6.3}{Completion Variables}{49}
-@numsubsecentry{A Short Completion Example}{2.6.4}{A Short Completion Example}{54}
-@appentry{GNU Free Documentation License}{A}{GNU Free Documentation License}{63}
-@unnchapentry{Concept Index}{10001}{Concept Index}{71}
-@unnchapentry{Function and Variable Index}{10002}{Function and Variable Index}{72}
diff --git a/lib/readline/doc/rlman.tp b/lib/readline/doc/rlman.tp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rlman.vr b/lib/readline/doc/rlman.vr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rltech.texinfo b/lib/readline/doc/rltech.texinfo
deleted file mode 100644 (file)
index 037e824..0000000
+++ /dev/null
@@ -1,2165 +0,0 @@
-@comment %**start of header (This is for running Texinfo on a region.)
-@setfilename rltech.info
-@comment %**end of header (This is for running Texinfo on a region.)
-@setchapternewpage odd
-
-@ifinfo
-This document describes the GNU Readline Library, a utility for aiding
-in the consitency of user interface across discrete programs that need
-to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end ifinfo
-
-@node Programming with GNU Readline
-@chapter Programming with GNU Readline
-
-This chapter describes the interface between the @sc{gnu} Readline Library and
-other programs.  If you are a programmer, and you wish to include the
-features found in @sc{gnu} Readline
-such as completion, line editing, and interactive history manipulation
-in your own programs, this section is for you.
-
-@menu
-* Basic Behavior::     Using the default behavior of Readline.
-* Custom Functions::   Adding your own functions to Readline.
-* Readline Variables::                 Variables accessible to custom
-                                       functions.
-* Readline Convenience Functions::     Functions which Readline supplies to
-                                       aid in writing your own custom
-                                       functions.
-* Readline Signal Handling::   How Readline behaves when it receives signals.
-* Custom Completers::  Supplanting or supplementing Readline's
-                       completion functions.
-@end menu
-
-@node Basic Behavior
-@section Basic Behavior
-
-Many programs provide a command line interface, such as @code{mail},
-@code{ftp}, and @code{sh}.  For such programs, the default behaviour of
-Readline is sufficient.  This section describes how to use Readline in
-the simplest way possible, perhaps to replace calls in your code to
-@code{gets()} or @code{fgets()}.
-
-@findex readline
-@cindex readline, function
-
-The function @code{readline()} prints a prompt @var{prompt}
-and then reads and returns a single line of text from the user.
-If @var{prompt} is @code{NULL} or the empty string, no prompt is displayed.
-The line @code{readline} returns is allocated with @code{malloc()};
-the caller should @code{free()} the line when it has finished with it.
-The declaration for @code{readline} in ANSI C is
-
-@example
-@code{char *readline (const char *@var{prompt});}
-@end example
-
-@noindent
-So, one might say
-@example
-@code{char *line = readline ("Enter a line: ");}
-@end example
-@noindent
-in order to read a line of text from the user.
-The line returned has the final newline removed, so only the
-text remains.
-
-If @code{readline} encounters an @code{EOF} while reading the line, and the
-line is empty at that point, then @code{(char *)NULL} is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-
-If you want the user to be able to get at the line later, (with
-@key{C-p} for example), you must call @code{add_history()} to save the
-line away in a @dfn{history} list of such lines.
-
-@example
-@code{add_history (line)};
-@end example
-
-@noindent
-For full details on the GNU History Library, see the associated manual.
-
-It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line.  Here is
-a function which usefully replaces the standard @code{gets()} library
-function, and has the advantage of no static buffer to overflow:
-
-@example
-/* A static variable for holding the line. */
-static char *line_read = (char *)NULL;
-
-/* Read a string, and return a pointer to it.
-   Returns NULL on EOF. */
-char *
-rl_gets ()
-@{
-  /* If the buffer has already been allocated,
-     return the memory to the free pool. */
-  if (line_read)
-    @{
-      free (line_read);
-      line_read = (char *)NULL;
-    @}
-
-  /* Get a line from the user. */
-  line_read = readline ("");
-
-  /* If the line has any text in it,
-     save it on the history. */
-  if (line_read && *line_read)
-    add_history (line_read);
-
-  return (line_read);
-@}
-@end example
-
-This function gives the user the default behaviour of @key{TAB}
-completion: completion on file names.  If you do not want Readline to
-complete on filenames, you can change the binding of the @key{TAB} key
-with @code{rl_bind_key()}.
-
-@example
-@code{int rl_bind_key (int @var{key}, rl_command_func_t *@var{function});}
-@end example
-
-@code{rl_bind_key()} takes two arguments: @var{key} is the character that
-you want to bind, and @var{function} is the address of the function to
-call when @var{key} is pressed.  Binding @key{TAB} to @code{rl_insert()}
-makes @key{TAB} insert itself.
-@code{rl_bind_key()} returns non-zero if @var{key} is not a valid
-ASCII character code (between 0 and 255).
-
-Thus, to disable the default @key{TAB} behavior, the following suffices:
-@example
-@code{rl_bind_key ('\t', rl_insert);}
-@end example
-
-This code should be executed once at the start of your program; you
-might write a function called @code{initialize_readline()} which
-performs this and other desired initializations, such as installing
-custom completers (@pxref{Custom Completers}).
-
-@node Custom Functions
-@section Custom Functions
-
-Readline provides many functions for manipulating the text of
-the line, but it isn't possible to anticipate the needs of all
-programs.  This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
-customized functionality to Readline.
-
-Before declaring any functions that customize Readline's behavior, or
-using any functionality Readline provides in other code, an
-application writer should include the file @code{<readline/readline.h>}
-in any file that uses Readline's features.  Since some of the definitions
-in @code{readline.h} use the @code{stdio} library, the file
-@code{<stdio.h>} should be included before @code{readline.h}.
-
-@code{readline.h} defines a C preprocessor variable that should
-be treated as an integer, @code{RL_READLINE_VERSION}, which may
-be used to conditionally compile application code depending on
-the installed Readline version.  The value is a hexadecimal
-encoding of the major and minor version numbers of the library,
-of the form 0x@var{MMmm}.  @var{MM} is the two-digit major
-version number; @var{mm} is the two-digit minor version number. 
-For Readline 4.2, for example, the value of
-@code{RL_READLINE_VERSION} would be @code{0x0402}. 
-
-@menu
-* Readline Typedefs::  C declarations to make code readable.
-* Function Writing::   Variables and calling conventions.
-@end menu
-
-@node Readline Typedefs
-@subsection Readline Typedefs
-
-For readabilty, we declare a number of new object types, all pointers
-to functions.
-
-The reason for declaring these new types is to make it easier to write
-code describing pointers to C functions with appropriately prototyped
-arguments and return values.
-
-For instance, say we want to declare a variable @var{func} as a pointer
-to a function which takes two @code{int} arguments and returns an
-@code{int} (this is the type of all of the Readline bindable functions).
-Instead of the classic C declaration
-
-@code{int (*func)();}
-
-@noindent
-or the ANSI-C style declaration
-
-@code{int (*func)(int, int);}
-
-@noindent
-we may write
-
-@code{rl_command_func_t *func;}
-
-The full list of function pointer types available is
-
-@table @code
-@item typedef int rl_command_func_t (int, int);
-
-@item typedef char *rl_compentry_func_t (const char *, int);
-
-@item typedef char **rl_completion_func_t (const char *, int, int);
-
-@item typedef char *rl_quote_func_t (char *, int, char *);
-
-@item typedef char *rl_dequote_func_t (char *, int);
-
-@item typedef int rl_compignore_func_t (char **);
-
-@item typedef void rl_compdisp_func_t (char **, int, int);
-
-@item typedef int rl_hook_func_t (void);
-
-@item typedef int rl_getc_func_t (FILE *);
-
-@item typedef int rl_linebuf_func_t (char *, int);
-
-@item typedef int rl_intfunc_t (int);
-@item #define rl_ivoidfunc_t rl_hook_func_t
-@item typedef int rl_icpfunc_t (char *);
-@item typedef int rl_icppfunc_t (char **);
-
-@item typedef void rl_voidfunc_t (void);
-@item typedef void rl_vintfunc_t (int);
-@item typedef void rl_vcpfunc_t (char *);
-@item typedef void rl_vcppfunc_t (char **);
-
-@end table
-
-@node Function Writing
-@subsection Writing a New Function
-
-In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-
-The calling sequence for a command @code{foo} looks like
-
-@example
-@code{int foo (int count, int key)}
-@end example
-
-@noindent
-where @var{count} is the numeric argument (or 1 if defaulted) and
-@var{key} is the key that invoked this function.
-
-It is completely up to the function as to what should be done with the
-numeric argument.  Some functions use it as a repeat count, some
-as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example).  Some choose to
-ignore it.  In general, if a
-function uses the numeric argument as a repeat count, it should be able
-to do something useful with both negative and positive arguments.
-At the very least, it should be aware that it can be passed a
-negative argument.
-
-A command function should return 0 if its action completes successfully,
-and a non-zero value if some error occurs.
-
-@node Readline Variables
-@section Readline Variables
-
-These variables are available to function writers.
-
-@deftypevar {char *} rl_line_buffer
-This is the line gathered so far.  You are welcome to modify the
-contents of the line, but see @ref{Allowing Undoing}.  The
-function @code{rl_extend_line_buffer} is available to increase
-the memory allocated to @code{rl_line_buffer}.
-@end deftypevar
-
-@deftypevar int rl_point
-The offset of the current cursor position in @code{rl_line_buffer}
-(the @emph{point}).
-@end deftypevar
-
-@deftypevar int rl_end
-The number of characters present in @code{rl_line_buffer}.  When
-@code{rl_point} is at the end of the line, @code{rl_point} and
-@code{rl_end} are equal.
-@end deftypevar
-
-@deftypevar int rl_mark
-The @var{mark} (saved position) in the current line.  If set, the mark
-and point define a @emph{region}.
-@end deftypevar
-
-@deftypevar int rl_done
-Setting this to a non-zero value causes Readline to return the current
-line immediately.
-@end deftypevar
-
-@deftypevar int rl_num_chars_to_read
-Setting this to a positive value before calling @code{readline()} causes
-Readline to return after accepting that many characters, rather
-than reading up to a character bound to @code{accept-line}.
-@end deftypevar
-
-@deftypevar int rl_pending_input
-Setting this to a value makes it the next keystroke read.  This is a
-way to stuff a single character into the input stream.
-@end deftypevar
-
-@deftypevar int rl_dispatching
-Set to a non-zero value if a function is being called from a key binding;
-zero otherwise.  Application functions can test this to discover whether
-they were called directly or by Readline's dispatching mechanism.
-@end deftypevar
-
-@deftypevar int rl_erase_empty_line
-Setting this to a non-zero value causes Readline to completely erase
-the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line.  The cursor is moved to
-the beginning of the newly-blank line.
-@end deftypevar
-
-@deftypevar {char *} rl_prompt
-The prompt Readline uses.  This is set from the argument to
-@code{readline()}, and should not be assigned to directly.
-The @code{rl_set_prompt()} function (@pxref{Redisplay}) may
-be used to modify the prompt string after calling @code{readline()}.
-@end deftypevar
-
-@deftypevar int rl_already_prompted
-If an application wishes to display the prompt itself, rather than have
-Readline do it the first time @code{readline()} is called, it should set
-this variable to a non-zero value after displaying the prompt.
-The prompt must also be passed as the argument to @code{readline()} so
-the redisplay functions can update the display properly.
-The calling application is responsible for managing the value; Readline
-never sets it.
-@end deftypevar
-
-@deftypevar {const char *} rl_library_version
-The version number of this revision of the library.
-@end deftypevar
-
-@deftypevar int rl_readline_version
-An integer encoding the current version of the library.  The encoding is
-of the form 0x@var{MMmm}, where @var{MM} is the two-digit major version
-number, and @var{mm} is the two-digit minor version number.
-For example, for Readline-4.2, @code{rl_readline_version} would have the
-value 0x0402.
-@end deftypevar
-
-@deftypevar {int} rl_gnu_readline_p
-Always set to 1, denoting that this is @sc{gnu} readline rather than some
-emulation.
-@end deftypevar
-
-@deftypevar {const char *} rl_terminal_name
-The terminal type, used for initialization.  If not set by the application,
-Readline sets this to the value of the @env{TERM} environment variable
-the first time it is called.
-@end deftypevar
-
-@deftypevar {const char *} rl_readline_name
-This variable is set to a unique name by each application using Readline.
-The value allows conditional parsing of the inputrc file
-(@pxref{Conditional Init Constructs}).
-@end deftypevar
-
-@deftypevar {FILE *} rl_instream
-The stdio stream from which Readline reads input.
-If @code{NULL}, Readline defaults to @var{stdin}.
-@end deftypevar
-
-@deftypevar {FILE *} rl_outstream
-The stdio stream to which Readline performs output.
-If @code{NULL}, Readline defaults to @var{stdout}.
-@end deftypevar
-
-@deftypevar {rl_command_func_t *} rl_last_func
-The address of the last command function Readline executed.  May be used to
-test whether or not a function is being executed twice in succession, for
-example.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_startup_hook
-If non-zero, this is the address of a function to call just
-before @code{readline} prints the first prompt.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_pre_input_hook
-If non-zero, this is the address of a function to call after
-the first prompt has been printed and just before @code{readline}
-starts reading input characters.
-@end deftypevar
-
-@deftypevar {rl_hook_func_t *} rl_event_hook
-If non-zero, this is the address of a function to call periodically
-when Readline is waiting for terminal input.
-By default, this will be called at most ten times a second if there
-is no keyboard input.
-@end deftypevar
-
-@deftypevar {rl_getc_func_t *} rl_getc_function
-If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream.  By default, it is set to
-@code{rl_getc}, the default Readline character input function
-(@pxref{Character Input}).
-@end deftypevar
-
-@deftypevar {rl_voidfunc_t *} rl_redisplay_function
-If non-zero, Readline will call indirectly through this pointer
-to update the display with the current contents of the editing buffer.
-By default, it is set to @code{rl_redisplay}, the default Readline
-redisplay function (@pxref{Redisplay}).
-@end deftypevar
-
-@deftypevar {rl_vintfunc_t *} rl_prep_term_function
-If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal.  The function takes a single argument, an
-@code{int} flag that says whether or not to use eight-bit characters.
-By default, this is set to @code{rl_prep_terminal}
-(@pxref{Terminal Management}).
-@end deftypevar
-
-@deftypevar {rl_voidfunc_t *} rl_deprep_term_function
-If non-zero, Readline will call indirectly through this pointer
-to reset the terminal.  This function should undo the effects of
-@code{rl_prep_term_function}.
-By default, this is set to @code{rl_deprep_terminal}
-(@pxref{Terminal Management}).
-@end deftypevar
-
-@deftypevar {Keymap} rl_executing_keymap
-This variable is set to the keymap (@pxref{Keymaps}) in which the
-currently executing readline function was found.
-@end deftypevar 
-
-@deftypevar {Keymap} rl_binding_keymap
-This variable is set to the keymap (@pxref{Keymaps}) in which the
-last key binding occurred.
-@end deftypevar 
-
-@deftypevar {char *} rl_executing_macro
-This variable is set to the text of any currently-executing macro.
-@end deftypevar
-
-@deftypevar {int} rl_readline_state
-A variable with bit values that encapsulate the current Readline state.
-A bit is set with the @code{RL_SETSTATE} macro, and unset with the
-@code{RL_UNSETSTATE} macro.  Use the @code{RL_ISSTATE} macro to test
-whether a particular state bit is set.  Current state bits include:
-
-@table @code
-@item RL_STATE_NONE
-Readline has not yet been called, nor has it begun to intialize.
-@item RL_STATE_INITIALIZING
-Readline is initializing its internal data structures.
-@item RL_STATE_INITIALIZED
-Readline has completed its initialization.
-@item RL_STATE_TERMPREPPED
-Readline has modified the terminal modes to do its own input and redisplay.
-@item RL_STATE_READCMD
-Readline is reading a command from the keyboard.
-@item RL_STATE_METANEXT
-Readline is reading more input after reading the meta-prefix character.
-@item RL_STATE_DISPATCHING
-Readline is dispatching to a command.
-@item RL_STATE_MOREINPUT
-Readline is reading more input while executing an editing command.
-@item RL_STATE_ISEARCH
-Readline is performing an incremental history search.
-@item RL_STATE_NSEARCH
-Readline is performing a non-incremental history search.
-@item RL_STATE_SEARCH
-Readline is searching backward or forward through the history for a string.
-@item RL_STATE_NUMERICARG
-Readline is reading a numeric argument.
-@item RL_STATE_MACROINPUT
-Readline is currently getting its input from a previously-defined keyboard
-macro.
-@item RL_STATE_MACRODEF
-Readline is currently reading characters defining a keyboard macro.
-@item RL_STATE_OVERWRITE
-Readline is in overwrite mode.
-@item RL_STATE_COMPLETING
-Readline is performing word completion.
-@item RL_STATE_SIGHANDLER
-Readline is currently executing the readline signal handler.
-@item RL_STATE_UNDOING
-Readline is performing an undo.
-@item RL_STATE_DONE
-Readline has read a key sequence bound to @code{accept-line}
-and is about to return the line to the caller.
-@end table
-
-@end deftypevar
-
-@deftypevar {int} rl_explicit_arg
-Set to a non-zero value if an explicit numeric argument was specified by
-the user.  Only valid in a bindable command function.
-@end deftypevar
-
-@deftypevar {int} rl_numeric_arg
-Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function.  Only valid in a bindable
-command function.
-@end deftypevar
-
-@deftypevar {int} rl_editing_mode
-Set to a value denoting Readline's current editing mode.  A value of
-@var{1} means Readline is currently in emacs mode; @var{0}
-means that vi mode is active.
-@end deftypevar
-
-
-@node Readline Convenience Functions
-@section Readline Convenience Functions
-
-@menu
-* Function Naming::    How to give a function you write a name.
-* Keymaps::            Making keymaps.
-* Binding Keys::       Changing Keymaps.
-* Associating Function Names and Bindings::    Translate function names to
-                                               key sequences.
-* Allowing Undoing::   How to make your functions undoable.
-* Redisplay::          Functions to control line display.
-* Modifying Text::     Functions to modify @code{rl_line_buffer}.
-* Character Input::    Functions to read keyboard input.
-* Terminal Management::        Functions to manage terminal settings.
-* Utility Functions::  Generally useful functions and hooks.
-* Miscellaneous Functions::    Functions that don't fall into any category.
-* Alternate Interface::        Using Readline in a `callback' fashion.
-* A Readline Example::         An example Readline function.
-@end menu
-
-@node Function Naming
-@subsection Naming a Function
-
-The user can dynamically change the bindings of keys while using
-Readline.  This is done by representing the function with a descriptive
-name.  The user is able to type the descriptive name when referring to
-the function.  Thus, in an init file, one might find
-
-@example
-Meta-Rubout:   backward-kill-word
-@end example
-
-This binds the keystroke @key{Meta-Rubout} to the function
-@emph{descriptively} named @code{backward-kill-word}.  You, as the
-programmer, should bind the functions you write to descriptive names as
-well.  Readline provides a function for doing that:
-
-@deftypefun int rl_add_defun (const char *name, rl_command_func_t *function, int key)
-Add @var{name} to the list of named functions.  Make @var{function} be
-the function that gets called.  If @var{key} is not -1, then bind it to
-@var{function} using @code{rl_bind_key()}.
-@end deftypefun
-
-Using this function alone is sufficient for most applications.  It is
-the recommended way to add a few functions to the default functions that
-Readline has built in.  If you need to do something other
-than adding a function to Readline, you may need to use the
-underlying functions described below.
-
-@node Keymaps
-@subsection Selecting a Keymap
-
-Key bindings take place on a @dfn{keymap}.  The keymap is the
-association between the keys that the user types and the functions that
-get run.  You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-
-@deftypefun Keymap rl_make_bare_keymap (void)
-Returns a new, empty keymap.  The space for the keymap is allocated with
-@code{malloc()}; the caller should free it by calling
-@code{rl_discard_keymap()} when done.
-@end deftypefun
-
-@deftypefun Keymap rl_copy_keymap (Keymap map)
-Return a new keymap which is a copy of @var{map}.
-@end deftypefun
-
-@deftypefun Keymap rl_make_keymap (void)
-Return a new keymap with the printing characters bound to rl_insert,
-the lowercase Meta characters bound to run their equivalents, and
-the Meta digits bound to produce numeric arguments.
-@end deftypefun
-
-@deftypefun void rl_discard_keymap (Keymap keymap)
-Free the storage associated with @var{keymap}.
-@end deftypefun
-
-Readline has several internal keymaps.  These functions allow you to
-change which keymap is active.
-
-@deftypefun Keymap rl_get_keymap (void)
-Returns the currently active keymap.
-@end deftypefun
-
-@deftypefun void rl_set_keymap (Keymap keymap)
-Makes @var{keymap} the currently active keymap.
-@end deftypefun
-
-@deftypefun Keymap rl_get_keymap_by_name (const char *name)
-Return the keymap matching @var{name}.  @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
-@end deftypefun
-
-@deftypefun {char *} rl_get_keymap_name (Keymap keymap)
-Return the name matching @var{keymap}.  @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
-@end deftypefun
-
-@node Binding Keys
-@subsection Binding Keys
-
-Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: @code{emacs_standard_keymap},
-@code{emacs_meta_keymap}, @code{emacs_ctlx_keymap},
-@code{vi_movement_keymap}, and @code{vi_insertion_keymap}.
-@code{emacs_standard_keymap} is the default, and the examples in
-this manual assume that.
-
-Since @code{readline()} installs a set of default key bindings the first
-time it is called, there is always the danger that a custom binding
-installed before the first call to @code{readline()} will be overridden.
-An alternate mechanism is to install custom key bindings in an
-initialization function assigned to the @code{rl_startup_hook} variable
-(@pxref{Readline Variables}).
-
-These functions manage key bindings.
-
-@deftypefun int rl_bind_key (int key, rl_command_func_t *function)
-Binds @var{key} to @var{function} in the currently active keymap.
-Returns non-zero in the case of an invalid @var{key}.
-@end deftypefun
-
-@deftypefun int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
-Bind @var{key} to @var{function} in @var{map}.  Returns non-zero in the case
-of an invalid @var{key}.
-@end deftypefun
-
-@deftypefun int rl_unbind_key (int key)
-Bind @var{key} to the null function in the currently active keymap.
-Returns non-zero in case of error.
-@end deftypefun
-
-@deftypefun int rl_unbind_key_in_map (int key, Keymap map)
-Bind @var{key} to the null function in @var{map}.
-Returns non-zero in case of error.
-@end deftypefun
-
-@deftypefun int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map)
-Unbind all keys that execute @var{function} in @var{map}.
-@end deftypefun
-
-@deftypefun int rl_unbind_command_in_map (const char *command, Keymap map)
-Unbind all keys that are bound to @var{command} in @var{map}.
-@end deftypefun
-
-@deftypefun int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
-Bind the key sequence represented by the string @var{keyseq} to the function
-@var{function}.  This makes new keymaps as
-necessary.  The initial keymap in which to do bindings is @var{map}.
-@end deftypefun
-
-@deftypefun int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
-Bind the key sequence represented by the string @var{keyseq} to the arbitrary
-pointer @var{data}.  @var{type} says what kind of data is pointed to by
-@var{data}; this can be a function (@code{ISFUNC}), a macro
-(@code{ISMACR}), or a keymap (@code{ISKMAP}).  This makes new keymaps as
-necessary.  The initial keymap in which to do bindings is @var{map}.
-@end deftypefun
-
-@deftypefun int rl_parse_and_bind (char *line)
-Parse @var{line} as if it had been read from the @code{inputrc} file and
-perform any key bindings and variable assignments found
-(@pxref{Readline Init File}).
-@end deftypefun
-
-@deftypefun int rl_read_init_file (const char *filename)
-Read keybindings and variable assignments from @var{filename}
-(@pxref{Readline Init File}).
-@end deftypefun
-
-@node Associating Function Names and Bindings
-@subsection Associating Function Names and Bindings
-
-These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence.  You may also
-associate a new function name with an arbitrary function.
-
-@deftypefun {rl_command_func_t *} rl_named_function (const char *name)
-Return the function with name @var{name}.
-@end deftypefun
-
-@deftypefun {rl_command_func_t *} rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
-Return the function invoked by @var{keyseq} in keymap @var{map}.
-If @var{map} is @code{NULL}, the current keymap is used.  If @var{type} is
-not @code{NULL}, the type of the object is returned in the @code{int} variable
-it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
-@end deftypefun
-
-@deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function)
-Return an array of strings representing the key sequences used to
-invoke @var{function} in the current keymap.
-@end deftypefun
-
-@deftypefun {char **} rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
-Return an array of strings representing the key sequences used to
-invoke @var{function} in the keymap @var{map}.
-@end deftypefun
-
-@deftypefun void rl_function_dumper (int readable)
-Print the readline function names and the key sequences currently
-bound to them to @code{rl_outstream}.  If @var{readable} is non-zero,
-the list is formatted in such a way that it can be made part of an
-@code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun void rl_list_funmap_names (void)
-Print the names of all bindable Readline functions to @code{rl_outstream}.
-@end deftypefun
-
-@deftypefun {const char **} rl_funmap_names (void)
-Return a NULL terminated array of known function names.  The array is
-sorted.  The array itself is allocated, but not the strings inside.  You
-should @code{free()} the array when you are done, but not the pointers.
-@end deftypefun
-
-@deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
-Add @var{name} to the list of bindable Readline command names, and make
-@var{function} the function to be called when @var{name} is invoked.
-@end deftypefun
-
-@node Allowing Undoing
-@subsection Allowing Undoing
-
-Supporting the undo command is a painless thing, and makes your
-functions much more useful.  It is certainly easy to try
-something if you know you can undo it.
-
-If your function simply inserts text once, or deletes text once, and
-uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it, then
-undoing is already done for you automatically.
-
-If you do multiple insertions or multiple deletions, or any combination
-of these operations, you should group them together into one operation.
-This is done with @code{rl_begin_undo_group()} and
-@code{rl_end_undo_group()}.
-
-The types of events that can be undone are:
-
-@smallexample
-enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @}; 
-@end smallexample
-
-Notice that @code{UNDO_DELETE} means to insert some text, and
-@code{UNDO_INSERT} means to delete some text.  That is, the undo code
-tells what to undo, not how to undo it.  @code{UNDO_BEGIN} and
-@code{UNDO_END} are tags added by @code{rl_begin_undo_group()} and
-@code{rl_end_undo_group()}.
-
-@deftypefun int rl_begin_undo_group (void)
-Begins saving undo information in a group construct.  The undo
-information usually comes from calls to @code{rl_insert_text()} and
-@code{rl_delete_text()}, but could be the result of calls to
-@code{rl_add_undo()}.
-@end deftypefun
-
-@deftypefun int rl_end_undo_group (void)
-Closes the current undo group started with @code{rl_begin_undo_group
-()}.  There should be one call to @code{rl_end_undo_group()}
-for each call to @code{rl_begin_undo_group()}.
-@end deftypefun
-
-@deftypefun void rl_add_undo (enum undo_code what, int start, int end, char *text)
-Remember how to undo an event (according to @var{what}).  The affected
-text runs from @var{start} to @var{end}, and encompasses @var{text}.
-@end deftypefun
-
-@deftypefun void rl_free_undo_list (void)
-Free the existing undo list.
-@end deftypefun
-
-@deftypefun int rl_do_undo (void)
-Undo the first thing on the undo list.  Returns @code{0} if there was
-nothing to undo, non-zero if something was undone.
-@end deftypefun
-
-Finally, if you neither insert nor delete text, but directly modify the
-existing text (e.g., change its case), call @code{rl_modifying()}
-once, just before you modify the text.  You must supply the indices of
-the text range that you are going to modify.
-
-@deftypefun int rl_modifying (int start, int end)
-Tell Readline to save the text between @var{start} and @var{end} as a
-single undo unit.  It is assumed that you will subsequently modify
-that text.
-@end deftypefun
-
-@node Redisplay
-@subsection Redisplay
-
-@deftypefun void rl_redisplay (void)
-Change what's displayed on the screen to reflect the current contents
-of @code{rl_line_buffer}.
-@end deftypefun
-
-@deftypefun int rl_forced_update_display (void)
-Force the line to be updated and redisplayed, whether or not
-Readline thinks the screen display is correct.
-@end deftypefun
-
-@deftypefun int rl_on_new_line (void)
-Tell the update functions that we have moved onto a new (empty) line,
-usually after ouputting a newline.
-@end deftypefun
-
-@deftypefun int rl_on_new_line_with_prompt (void)
-Tell the update functions that we have moved onto a new line, with
-@var{rl_prompt} already displayed.
-This could be used by applications that want to output the prompt string
-themselves, but still need Readline to know the prompt string length for
-redisplay.
-It should be used after setting @var{rl_already_prompted}.
-@end deftypefun
-
-@deftypefun int rl_reset_line_state (void)
-Reset the display state to a clean state and redisplay the current line
-starting on a new line.
-@end deftypefun
-
-@deftypefun int rl_crlf (void)
-Move the cursor to the start of the next screen line.
-@end deftypefun
-
-@deftypefun int rl_show_char (int c)
-Display character @var{c} on @code{rl_outstream}.
-If Readline has not been set to display meta characters directly, this
-will convert meta characters to a meta-prefixed key sequence.
-This is intended for use by applications which wish to do their own
-redisplay.
-@end deftypefun
-
-@deftypefun int rl_message (const char *, @dots{})
-The arguments are a format string as would be supplied to @code{printf},
-possibly containing conversion specifications such as @samp{%d}, and
-any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the @dfn{echo area}.  The echo area
-is also used to display numeric arguments and search strings.
-@end deftypefun
-
-@deftypefun int rl_clear_message (void)
-Clear the message in the echo area.
-@end deftypefun
-
-@deftypefun void rl_save_prompt (void)
-Save the local Readline prompt display state in preparation for
-displaying a new message in the message area with @code{rl_message()}.
-@end deftypefun
-
-@deftypefun void rl_restore_prompt (void)
-Restore the local Readline prompt display state saved by the most
-recent call to @code{rl_save_prompt}.
-@end deftypefun
-
-@deftypefun int rl_expand_prompt (char *prompt)
-Expand any special character sequences in @var{prompt} and set up the
-local Readline prompt redisplay variables.
-This function is called by @code{readline()}.  It may also be called to
-expand the primary prompt if the @code{rl_on_new_line_with_prompt()}
-function or @code{rl_already_prompted} variable is used.
-It returns the number of visible characters on the last line of the
-(possibly multi-line) prompt.
-@end deftypefun
-
-@deftypefun int rl_set_prompt (const char *prompt)
-Make Readline use @var{prompt} for subsequent redisplay.  This calls
-@code{rl_expand_prompt()} to expand the prompt and sets @code{rl_prompt}
-to the result.
-@end deftypefun
-
-@node Modifying Text
-@subsection Modifying Text
-
-@deftypefun int rl_insert_text (const char *text)
-Insert @var{text} into the line at the current cursor position.
-Returns the number of characters inserted.
-@end deftypefun
-
-@deftypefun int rl_delete_text (int start, int end)
-Delete the text between @var{start} and @var{end} in the current line.
-Returns the number of characters deleted.
-@end deftypefun
-
-@deftypefun {char *} rl_copy_text (int start, int end)
-Return a copy of the text between @var{start} and @var{end} in
-the current line.
-@end deftypefun
-
-@deftypefun int rl_kill_text (int start, int end)
-Copy the text between @var{start} and @var{end} in the current line
-to the kill ring, appending or prepending to the last kill if the
-last command was a kill command.  The text is deleted.
-If @var{start} is less than @var{end},
-the text is appended, otherwise prepended.  If the last command was
-not a kill, a new kill ring slot is used.
-@end deftypefun
-
-@deftypefun int rl_push_macro_input (char *macro)
-Cause @var{macro} to be inserted into the line, as if it had been invoked
-by a key bound to a macro.  Not especially useful; use
-@code{rl_insert_text()} instead.
-@end deftypefun
-
-@node Character Input
-@subsection Character Input
-
-@deftypefun int rl_read_key (void)
-Return the next character available from Readline's current input stream.
-This handles input inserted into
-the input stream via @var{rl_pending_input} (@pxref{Readline Variables})
-and @code{rl_stuff_char()}, macros, and characters read from the keyboard.
-While waiting for input, this function will call any function assigned to
-the @code{rl_event_hook} variable.
-@end deftypefun
-
-@deftypefun int rl_getc (FILE *stream)
-Return the next character available from @var{stream}, which is assumed to
-be the keyboard.
-@end deftypefun
-
-@deftypefun int rl_stuff_char (int c)
-Insert @var{c} into the Readline input stream.  It will be "read"
-before Readline attempts to read characters from the terminal with
-@code{rl_read_key()}.  Up to 512 characters may be pushed back.
-@code{rl_stuff_char} returns 1 if the character was successfully inserted;
-0 otherwise.
-@end deftypefun
-
-@deftypefun int rl_execute_next (int c)
-Make @var{c} be the next command to be executed when @code{rl_read_key()}
-is called.  This sets @var{rl_pending_input}.
-@end deftypefun
-
-@deftypefun int rl_clear_pending_input (void)
-Unset @var{rl_pending_input}, effectively negating the effect of any
-previous call to @code{rl_execute_next()}.  This works only if the
-pending input has not already been read with @code{rl_read_key()}.
-@end deftypefun
-
-@deftypefun int rl_set_keyboard_input_timeout (int u)
-While waiting for keyboard input in @code{rl_read_key()}, Readline will
-wait for @var{u} microseconds for input before calling any function
-assigned to @code{rl_event_hook}.  The default waiting period is
-one-tenth of a second.  Returns the old timeout value.
-@end deftypefun
-
-@node Terminal Management
-@subsection Terminal Management
-
-@deftypefun void rl_prep_terminal (int meta_flag)
-Modify the terminal settings for Readline's use, so @code{readline()}
-can read a single character at a time from the keyboard.
-The @var{meta_flag} argument should be non-zero if Readline should
-read eight-bit input.
-@end deftypefun
-
-@deftypefun void rl_deprep_terminal (void)
-Undo the effects of @code{rl_prep_terminal()}, leaving the terminal in
-the state in which it was before the most recent call to
-@code{rl_prep_terminal()}.
-@end deftypefun
-
-@deftypefun void rl_tty_set_default_bindings (Keymap kmap)
-Read the operating system's terminal editing characters (as would be displayed
-by @code{stty}) to their Readline equivalents.  The bindings are performed
-in @var{kmap}.
-@end deftypefun
-
-@deftypefun int rl_reset_terminal (const char *terminal_name)
-Reinitialize Readline's idea of the terminal settings using
-@var{terminal_name} as the terminal type (e.g., @code{vt100}).
-If @var{terminal_name} is @code{NULL}, the value of the @code{TERM}
-environment variable is used.
-@end deftypefun
-
-@node Utility Functions
-@subsection Utility Functions
-
-@deftypefun void rl_replace_line (const char *text, int clear_undo)
-Replace the contents of @code{rl_line_buffer} with @var{text}.
-The point and mark are preserved, if possible.
-If @var{clear_undo} is non-zero, the undo list associated with the
-current line is cleared.
-@end deftypefun
-
-@deftypefun int rl_extend_line_buffer (int len)
-Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
-characters, possibly reallocating it if necessary.
-@end deftypefun
-
-@deftypefun int rl_initialize (void)
-Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; @code{readline()} calls it before
-reading any input.
-@end deftypefun
-
-@deftypefun int rl_ding (void)
-Ring the terminal bell, obeying the setting of @code{bell-style}.
-@end deftypefun
-
-@deftypefun int rl_alphabetic (int c)
-Return 1 if @var{c} is an alphabetic character.
-@end deftypefun
-
-@deftypefun void rl_display_match_list (char **matches, int len, int max)
-A convenience function for displaying a list of strings in
-columnar format on Readline's output stream.  @code{matches} is the list
-of strings, in argv format, such as a list of completion matches.
-@code{len} is the number of strings in @code{matches}, and @code{max}
-is the length of the longest string in @code{matches}.  This function uses
-the setting of @code{print-completions-horizontally} to select how the
-matches are displayed (@pxref{Readline Init File Syntax}).
-@end deftypefun
-
-The following are implemented as macros, defined in @code{chardefs.h}.
-Applications should refrain from using them.
-
-@deftypefun int _rl_uppercase_p (int c)
-Return 1 if @var{c} is an uppercase alphabetic character.
-@end deftypefun
-
-@deftypefun int _rl_lowercase_p (int c)
-Return 1 if @var{c} is a lowercase alphabetic character.
-@end deftypefun
-
-@deftypefun int _rl_digit_p (int c)
-Return 1 if @var{c} is a numeric character.
-@end deftypefun
-
-@deftypefun int _rl_to_upper (int c)
-If @var{c} is a lowercase alphabetic character, return the corresponding
-uppercase character.
-@end deftypefun
-
-@deftypefun int _rl_to_lower (int c)
-If @var{c} is an uppercase alphabetic character, return the corresponding
-lowercase character.
-@end deftypefun
-
-@deftypefun int _rl_digit_value (int c)
-If @var{c} is a number, return the value it represents.
-@end deftypefun
-
-@node Miscellaneous Functions
-@subsection Miscellaneous Functions
-
-@deftypefun int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
-Bind the key sequence @var{keyseq} to invoke the macro @var{macro}.
-The binding is performed in @var{map}.  When @var{keyseq} is invoked, the
-@var{macro} will be inserted into the line.  This function is deprecated;
-use @code{rl_generic_bind()} instead.
-@end deftypefun
-
-@deftypefun void rl_macro_dumper (int readable)
-Print the key sequences bound to macros and their values, using
-the current keymap, to @code{rl_outstream}.
-If @var{readable} is non-zero, the list is formatted in such a way
-that it can be made part of an @code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun int rl_variable_bind (const char *variable, const char *value)
-Make the Readline variable @var{variable} have @var{value}.
-This behaves as if the readline command
-@samp{set @var{variable} @var{value}} had been executed in an @code{inputrc}
-file (@pxref{Readline Init File Syntax}).
-@end deftypefun
-
-@deftypefun void rl_variable_dumper (int readable)
-Print the readline variable names and their current values
-to @code{rl_outstream}.
-If @var{readable} is non-zero, the list is formatted in such a way
-that it can be made part of an @code{inputrc} file and re-read.
-@end deftypefun
-
-@deftypefun int rl_set_paren_blink_timeout (int u)
-Set the time interval (in microseconds) that Readline waits when showing
-a balancing character when @code{blink-matching-paren} has been enabled.
-@end deftypefun
-
-@deftypefun {char *} rl_get_termcap (const char *cap)
-Retrieve the string value of the termcap capability @var{cap}.
-Readline fetches the termcap entry for the current terminal name and
-uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line.  Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
-@end deftypefun
-
-@node Alternate Interface
-@subsection Alternate Interface
-
-An alternate interface is available to plain @code{readline()}.  Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to @code{select()}
-on various file descriptors.  To accomodate this need, readline can
-also be invoked as a `callback' function from an event loop.  There
-are functions available to make this easy.
-
-@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
-Set up the terminal for readline I/O and display the initial
-expanded value of @var{prompt}.  Save the value of @var{lhandler} to
-use as a function to call when a complete line of input has been entered.
-The function takes the text of the line as an argument.
-@end deftypefun
-
-@deftypefun void rl_callback_read_char (void)
-Whenever an application determines that keyboard input is available, it
-should call @code{rl_callback_read_char()}, which will read the next
-character from the current input source.
-If that character completes the line, @code{rl_callback_read_char} will
-invoke the @var{lhandler} function saved by @code{rl_callback_handler_install}
-to process the line.
-Before calling the @var{lhandler} function, the terminal settings are
-reset to the values they had before calling
-@code{rl_callback_handler_install}.
-If the @var{lhandler} function returns,
-the terminal settings are modified for Readline's use again.
-@code{EOF} is  indicated by calling @var{lhandler} with a
-@code{NULL} line.
-@end deftypefun
-
-@deftypefun void rl_callback_handler_remove (void)
-Restore the terminal to its initial state and remove the line handler.
-This may be called from within a callback as well as independently.
-If the @var{lhandler} installed by @code{rl_callback_handler_install}
-does not exit the program, either this function or the function referred
-to by the value of @code{rl_deprep_term_function} should be called before
-the program exits to reset the terminal settings.
-@end deftypefun
-
-@node A Readline Example
-@subsection A Readline Example
-
-Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase.  If
-this function was bound to @samp{M-c}, then typing @samp{M-c} would
-change the case of the character under point.  Typing @samp{M-1 0 M-c}
-would change the case of the following 10 characters, leaving the cursor on
-the last character changed.
-
-@example
-/* Invert the case of the COUNT following characters. */
-int
-invert_case_line (count, key)
-     int count, key;
-@{
-  register int start, end, i;
-
-  start = rl_point;
-
-  if (rl_point >= rl_end)
-    return (0);
-
-  if (count < 0)
-    @{
-      direction = -1;
-      count = -count;
-    @}
-  else
-    direction = 1;
-      
-  /* Find the end of the range to modify. */
-  end = start + (count * direction);
-
-  /* Force it to be within range. */
-  if (end > rl_end)
-    end = rl_end;
-  else if (end < 0)
-    end = 0;
-
-  if (start == end)
-    return (0);
-
-  if (start > end)
-    @{
-      int temp = start;
-      start = end;
-      end = temp;
-    @}
-
-  /* Tell readline that we are modifying the line,
-     so it will save the undo information. */
-  rl_modifying (start, end);
-
-  for (i = start; i != end; i++)
-    @{
-      if (_rl_uppercase_p (rl_line_buffer[i]))
-        rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
-      else if (_rl_lowercase_p (rl_line_buffer[i]))
-        rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
-    @}
-  /* Move point to on top of the last character changed. */
-  rl_point = (direction == 1) ? end - 1 : start;
-  return (0);
-@}
-@end example
-
-@node Readline Signal Handling
-@section Readline Signal Handling
-
-Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process.  They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his terminal,
-or a network connection being broken.  There is a class of signals that can
-be sent to the process currently reading input from the keyboard.  Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually. 
-
-Readline contains an internal signal handler that is installed for a
-number of signals (@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM},
-@code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}).
-When one of these signals is received, the signal handler
-will reset the terminal attributes to those that were in effect before
-@code{readline()} was called, reset the signal handling to what it was
-before @code{readline()} was called, and resend the signal to the calling
-application.
-If and when the calling application's signal handler returns, Readline
-will reinitialize the terminal and continue to accept input.
-When a @code{SIGINT} is received, the Readline signal handler performs
-some additional work, which will cause any partially-entered line to be
-aborted (see the description of @code{rl_free_line_state()} below).
-
-There is an additional Readline signal handler, for @code{SIGWINCH}, which
-the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an @code{xterm}).  The Readline @code{SIGWINCH}
-handler updates Readline's internal screen size information, and then calls
-any @code{SIGWINCH} signal handler the calling application has installed. 
-Readline calls the application's @code{SIGWINCH} signal handler without
-resetting the terminal to its original state.  If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a @code{longjmp} back to a main processing loop), it @emph{must}
-call @code{rl_cleanup_after_signal()} (described below), to restore the
-terminal state. 
-
-Readline provides two variables that allow application writers to
-control whether or not it will catch certain signals and act on them
-when they are received.  It is important that applications change the
-values of these variables only when calling @code{readline()}, not in
-a signal handler, so Readline's internal signal state is not corrupted.
-
-@deftypevar int rl_catch_signals
-If this variable is non-zero, Readline will install signal handlers for
-@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, @code{SIGALRM},
-@code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}.
-
-The default value of @code{rl_catch_signals} is 1.
-@end deftypevar
-
-@deftypevar int rl_catch_sigwinch
-If this variable is non-zero, Readline will install a signal handler for
-@code{SIGWINCH}.
-
-The default value of @code{rl_catch_sigwinch} is 1.
-@end deftypevar
-
-If an application does not wish to have Readline catch any signals, or
-to handle signals other than those Readline catches (@code{SIGHUP},
-for example), 
-Readline provides convenience functions to do the necessary terminal
-and internal state cleanup upon receipt of a signal.
-
-@deftypefun void rl_cleanup_after_signal (void)
-This function will reset the state of the terminal to what it was before
-@code{readline()} was called, and remove the Readline signal handlers for
-all signals, depending on the values of @code{rl_catch_signals} and
-@code{rl_catch_sigwinch}.
-@end deftypefun
-
-@deftypefun void rl_free_line_state (void)
-This will free any partial state associated with the current input line
-(undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument).  This
-should be called before @code{rl_cleanup_after_signal()}.  The
-Readline signal handler for @code{SIGINT} calls this to abort the
-current input line.
-@end deftypefun
-
-@deftypefun void rl_reset_after_signal (void)
-This will reinitialize the terminal and reinstall any Readline signal
-handlers, depending on the values of @code{rl_catch_signals} and
-@code{rl_catch_sigwinch}.
-@end deftypefun
-
-If an application does not wish Readline to catch @code{SIGWINCH}, it may
-call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
-Readline to update its idea of the terminal size when a @code{SIGWINCH}
-is received.
-
-@deftypefun void rl_resize_terminal (void)
-Update Readline's internal screen size by reading values from the kernel.
-@end deftypefun
-
-@deftypefun void rl_set_screen_size (int rows, int cols)
-Set Readline's idea of the terminal size to @var{rows} rows and
-@var{cols} columns.
-@end deftypefun
-
-If an application does not want to install a @code{SIGWINCH} handler, but
-is still interested in the screen dimensions, Readline's idea of the screen
-size may be queried.
-
-@deftypefun void rl_get_screen_size (int *rows, int *cols)
-Return Readline's idea of the terminal's size in the
-variables pointed to by the arguments.
-@end deftypefun
-
-The following functions install and remove Readline's signal handlers.
-
-@deftypefun int rl_set_signals (void)
-Install Readline's signal handler for @code{SIGINT}, @code{SIGQUIT},
-@code{SIGTERM}, @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN},
-@code{SIGTTOU}, and @code{SIGWINCH}, depending on the values of
-@code{rl_catch_signals} and @code{rl_catch_sigwinch}.
-@end deftypefun
-
-@deftypefun int rl_clear_signals (void)
-Remove all of the Readline signal handlers installed by
-@code{rl_set_signals()}.
-@end deftypefun
-
-@node Custom Completers
-@section Custom Completers
-
-Typically, a program that reads commands from the user has a way of
-disambiguating commands and data.  If your program is one of these, then
-it can provide completion for commands, data, or both.
-The following sections describe how your program and Readline
-cooperate to provide this service.
-
-@menu
-* How Completing Works::       The logic used to do completion.
-* Completion Functions::       Functions provided by Readline.
-* Completion Variables::       Variables which control completion.
-* A Short Completion Example:: An example of writing completer subroutines.
-@end menu
-
-@node How Completing Works
-@subsection How Completing Works
-
-In order to complete some text, the full list of possible completions
-must be available.  That is, it is not possible to accurately
-expand a partial word without knowing all of the possible words
-which make sense in that context.  The Readline library provides
-the user interface to completion, and two of the most common
-completion functions:  filename and username.  For completing other types
-of text, you must write your own completion function.  This section
-describes exactly what such functions must do, and provides an example.
-
-There are three major functions used to perform completion:
-
-@enumerate
-@item
-The user-interface function @code{rl_complete()}.  This function is
-called with the same arguments as other bindable Readline functions:
-@var{count} and @var{invoking_key}.
-It isolates the word to be completed and calls
-@code{rl_completion_matches()} to generate a list of possible completions.
-It then either lists the possible completions, inserts the possible
-completions, or actually performs the
-completion, depending on which behavior is desired.
-
-@item
-The internal function @code{rl_completion_matches()} uses an
-application-supplied @dfn{generator} function to generate the list of
-possible matches, and then returns the array of these matches.
-The caller should place the address of its generator function in
-@code{rl_completion_entry_function}.
-
-@item
-The generator function is called repeatedly from
-@code{rl_completion_matches()}, returning a string each time.  The
-arguments to the generator function are @var{text} and @var{state}.
-@var{text} is the partial word to be completed.  @var{state} is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call.  The generator function returns
-@code{(char *)NULL} to inform @code{rl_completion_matches()} that there are
-no more possibilities left.  Usually the generator function computes the
-list of possible completions when @var{state} is zero, and returns them
-one at a time on subsequent calls.  Each string the generator function
-returns as a match must be allocated with @code{malloc()}; Readline
-frees the strings when it has finished with them.
-
-@end enumerate
-
-@deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point.  You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()}).  The default is to do filename completion.
-@end deftypefun
-
-@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
-This is a pointer to the generator function for
-@code{rl_completion_matches()}.
-If the value of @code{rl_completion_entry_function} is
-@code{NULL} then the default filename generator
-function, @code{rl_filename_completion_function()}, is used.
-@end deftypevar
-
-@node Completion Functions
-@subsection Completion Functions
-
-Here is the complete list of callable completion functions present in
-Readline.
-
-@deftypefun int rl_complete_internal (int what_to_do)
-Complete the word at or before point.  @var{what_to_do} says what to do
-with the completion.  A value of @samp{?} means list the possible
-completions.  @samp{TAB} means do standard completion.  @samp{*} means
-insert all of the possible completions.  @samp{!} means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion.
-@end deftypefun
-
-@deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point.  You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()} and @code{rl_completion_entry_function}).
-The default is to do filename
-completion.  This calls @code{rl_complete_internal()} with an
-argument depending on @var{invoking_key}.
-@end deftypefun
-
-@deftypefun int rl_possible_completions (int count, int invoking_key)
-List the possible completions.  See description of @code{rl_complete
-()}.  This calls @code{rl_complete_internal()} with an argument of
-@samp{?}.
-@end deftypefun
-
-@deftypefun int rl_insert_completions (int count, int invoking_key)
-Insert the list of possible completions into the line, deleting the
-partially-completed word.  See description of @code{rl_complete()}.
-This calls @code{rl_complete_internal()} with an argument of @samp{*}.
-@end deftypefun
-
-@deftypefun int rl_completion_mode (rl_command_func_t *cfunc)
-Returns the apppriate value to pass to @code{rl_complete_internal()}
-depending on whether @var{cfunc} was called twice in succession and
-the value of the @code{show-all-if-ambiguous} variable.
-Application-specific completion functions may use this function to present
-the same interface as @code{rl_complete()}.
-@end deftypefun
-
-@deftypefun {char **} rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
-Returns an array of strings which is a list of completions for
-@var{text}.  If there are no completions, returns @code{NULL}.
-The first entry in the returned array is the substitution for @var{text}.
-The remaining entries are the possible completions.  The array is
-terminated with a @code{NULL} pointer.
-
-@var{entry_func} is a function of two args, and returns a
-@code{char *}.  The first argument is @var{text}.  The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls.  @var{entry_func} returns a @code{NULL}  pointer to the caller
-when there are no more matches.
-@end deftypefun
-
-@deftypefun {char *} rl_filename_completion_function (const char *text, int state)
-A generator function for filename completion in the general case.
-@var{text} is a partial filename.
-The Bash source is a useful reference for writing custom
-completion functions (the Bash completion functions call this and other
-Readline functions).
-@end deftypefun
-
-@deftypefun {char *} rl_username_completion_function (const char *text, int state)
-A completion generator for usernames.  @var{text} contains a partial
-username preceded by a random character (usually @samp{~}).  As with all
-completion generators, @var{state} is zero on the first call and non-zero
-for subsequent calls.
-@end deftypefun
-
-@node Completion Variables
-@subsection Completion Variables
-
-@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
-A pointer to the generator function for @code{rl_completion_matches()}.
-@code{NULL} means to use @code{rl_filename_completion_function()}, the default
-filename completer.
-@end deftypevar
-
-@deftypevar {rl_completion_func_t *} rl_attempted_completion_function
-A pointer to an alternative function to create matches.
-The function is called with @var{text}, @var{start}, and @var{end}.
-@var{start} and @var{end} are indices in @code{rl_line_buffer} defining
-the boundaries of @var{text}, which is a character string.
-If this function exists and returns @code{NULL}, or if this variable is
-set to @code{NULL}, then @code{rl_complete()} will call the value of
-@code{rl_completion_entry_function} to generate matches, otherwise the
-array of strings returned will be used.
-If this function sets the @code{rl_attempted_completion_over}
-variable to a non-zero value, Readline will not perform its default
-completion even if this function returns no matches.
-@end deftypevar
-
-@deftypevar {rl_quote_func_t *} rl_filename_quoting_function
-A pointer to a function that will quote a filename in an
-application-specific fashion.  This is called if filename completion is being
-attempted and one of the characters in @code{rl_filename_quote_characters}
-appears in a completed filename.  The function is called with
-@var{text}, @var{match_type}, and @var{quote_pointer}.  The @var{text}
-is the filename to be quoted.  The @var{match_type} is either
-@code{SINGLE_MATCH}, if there is only one completion match, or
-@code{MULT_MATCH}.  Some functions use this to decide whether or not to
-insert a closing quote character.  The @var{quote_pointer} is a pointer
-to any opening quote character the user typed.  Some functions choose
-to reset this character.
-@end deftypevar
-
-@deftypevar {rl_dequote_func_t *} rl_filename_dequoting_function
-A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem.  It is called with @var{text}, the text of the word
-to be dequoted, and @var{quote_char}, which is the quoting character 
-that delimits the filename (usually @samp{'} or @samp{"}).  If
-@var{quote_char} is zero, the filename was not in an embedded string.
-@end deftypevar
-
-@deftypevar {rl_linebuf_func_t *} rl_char_is_quoted_p
-A pointer to a function to call that determines whether or not a specific
-character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses.  The function is called with
-two arguments: @var{text}, the text of the line, and @var{index}, the
-index of the character in the line.  It is used to decide whether a
-character found in @code{rl_completer_word_break_characters} should be
-used to break words for the completer.
-@end deftypevar
-
-@deftypevar {rl_compignore_func_t *} rl_ignore_some_completions_function
-This function, if defined, is called by the completer when real filename
-completion is done, after all the matching names have been generated.
-It is passed a @code{NULL} terminated array of matches.
-The first element (@code{matches[0]}) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
-@end deftypevar
-
-@deftypevar {rl_icppfunc_t *} rl_directory_completion_hook
-This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes.  It is called with the address of a
-string (the current directory name) as an argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
-Any modified directory name should have a trailing slash.
-The modified value will be displayed as part of the completion, replacing
-the directory portion of the pathname the user typed.
-It returns an integer that should be non-zero if the function modifies
-its directory argument.
-It could be used to expand symbolic links or shell variables in pathnames.
-@end deftypevar
-
-@deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook
-If non-zero, then this is the address of a function to call when
-completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
-It takes three arguments:
-(@code{char **}@var{matches}, @code{int} @var{num_matches}, @code{int} @var{max_length})
-where @var{matches} is the array of matching strings,
-@var{num_matches} is the number of strings in that array, and
-@var{max_length} is the length of the longest string in that array.
-Readline provides a convenience function, @code{rl_display_match_list},
-that takes care of doing the display to Readline's output stream.  That
-function may be called from this hook.
-@end deftypevar
-
-@deftypevar {const char *} rl_basic_word_break_characters
-The basic list of characters that signal a break between words for the
-completer routine.  The default value of this variable is the characters
-which break words for completion in Bash:
-@code{" \t\n\"\\'`@@$><=;|&@{("}.
-@end deftypevar
-
-@deftypevar {const char *} rl_basic_quote_characters
-A list of quote characters which can cause a word break.
-@end deftypevar
-
-@deftypevar {const char *} rl_completer_word_break_characters
-The list of characters that signal a break between words for
-@code{rl_complete_internal()}.  The default list is the value of
-@code{rl_basic_word_break_characters}.
-@end deftypevar
-
-@deftypevar {const char *} rl_completer_quote_characters
-A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
-@code{rl_completer_word_break_characters} are treated as any other character,
-unless they also appear within this list.
-@end deftypevar
-
-@deftypevar {const char *} rl_filename_quote_characters
-A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename.  The default is the null string.
-@end deftypevar
-
-@deftypevar {const char *} rl_special_prefixes
-The list of characters that are word break characters, but should be
-left in @var{text} when it is passed to the completion function.
-Programs can use this to help determine what kind of completing to do.
-For instance, Bash sets this variable to "$@@" so that it can complete
-shell variables and hostnames.
-@end deftypevar
-
-@deftypevar int rl_completion_query_items
-Up to this many items will be displayed in response to a
-possible-completions call.  After that, we ask the user if she is sure
-she wants to see them all.  The default value is 100.
-@end deftypevar
-
-@deftypevar {int} rl_completion_append_character
-When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text.  The
-default is a space character (@samp{ }).  Setting this to the null
-character (@samp{\0}) prevents anything being appended automatically.
-This can be changed in custom completion functions to
-provide the ``most sensible word separator character'' according to
-an application-specific command line syntax specification.
-@end deftypevar
-
-@deftypevar int rl_completion_suppress_append
-If non-zero, @var{rl_completion_append_character} is not appended to
-matches at the end of the command line, as described above.  It is
-set to 0 before any application-specific completion function is called.
-@end deftypevar
-
-@deftypevar int rl_completion_mark_symlink_dirs
-If non-zero, a slash will be appended to completed filenames that are
-symbolic links to directory names, subject to the value of the
-user-settable @var{mark-directories} variable.
-This variable exists so that application completion functions can
-override the user's global preference (set via the
-@var{mark-symlinked-directories} Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application completion function is called, so unless that function
-modifies the value, the user's preferences are honored.
-@end deftypevar
-
-@deftypevar int rl_ignore_completion_duplicates
-If non-zero, then duplicates in the matches are removed.
-The default is 1.
-@end deftypevar
-
-@deftypevar int rl_filename_completion_desired
-Non-zero means that the results of the matches are to be treated as
-filenames.  This is @emph{always} zero on entry, and can only be changed
-within a completion entry generator function.  If it is set to a non-zero
-value, directory names have a slash appended and Readline attempts to
-quote completed filenames if they contain any characters in
-@code{rl_filename_quote_characters} and @code{rl_filename_quoting_desired}
-is set to a non-zero value.
-@end deftypevar
-
-@deftypevar int rl_filename_quoting_desired
-Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-@code{rl_filename_quote_chars}.  This is @emph{always} non-zero
-on entry, and can only be changed within a completion entry generator
-function.  The quoting is effected via a call to the function pointed to
-by @code{rl_filename_quoting_function}.
-@end deftypevar
-
-@deftypevar int rl_attempted_completion_over
-If an application-specific completion function assigned to
-@code{rl_attempted_completion_function} sets this variable to a non-zero
-value, Readline will not perform its default filename completion even
-if the application's completion function returns no matches.
-It should be set only by an application's completion function.
-@end deftypevar
-
-@deftypevar int rl_completion_type
-Set to a character describing the type of completion Readline is currently
-attempting; see the description of @code{rl_complete_internal()}
-(@pxref{Completion Functions}) for the list of characters.
-@end deftypevar
-
-@deftypevar int rl_inhibit_completion
-If this variable is non-zero, completion is inhibited.  The completion
-character will be inserted as any other bound to @code{self-insert}.
-@end deftypevar
-
-@node A Short Completion Example
-@subsection A Short Completion Example
-
-Here is a small application demonstrating the use of the GNU Readline
-library.  It is called @code{fileman}, and the source code resides in
-@file{examples/fileman.c}.  This sample application provides
-completion of command names, line editing features, and access to the
-history list.
-
-@page
-@smallexample
-/* fileman.c -- A tiny application which demonstrates how to use the
-   GNU Readline library.  This application interactively allows users
-   to manipulate files and their modes. */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/errno.h>
-
-#include <readline/readline.h>
-#include <readline/history.h>
-
-extern char *xmalloc ();
-
-/* The names of functions that actually do the manipulation. */
-int com_list __P((char *));
-int com_view __P((char *));
-int com_rename __P((char *));
-int com_stat __P((char *));
-int com_pwd __P((char *));
-int com_delete __P((char *));
-int com_help __P((char *));
-int com_cd __P((char *));
-int com_quit __P((char *));
-
-/* A structure which contains information on the commands this program
-   can understand. */
-
-typedef struct @{
-  char *name;                  /* User printable name of the function. */
-  rl_icpfunc_t *func;          /* Function to call to do the job. */
-  char *doc;                   /* Documentation for this function.  */
-@} COMMAND;
-
-COMMAND commands[] = @{
-  @{ "cd", com_cd, "Change to directory DIR" @},
-  @{ "delete", com_delete, "Delete FILE" @},
-  @{ "help", com_help, "Display this text" @},
-  @{ "?", com_help, "Synonym for `help'" @},
-  @{ "list", com_list, "List files in DIR" @},
-  @{ "ls", com_list, "Synonym for `list'" @},
-  @{ "pwd", com_pwd, "Print the current working directory" @},
-  @{ "quit", com_quit, "Quit using Fileman" @},
-  @{ "rename", com_rename, "Rename FILE to NEWNAME" @},
-  @{ "stat", com_stat, "Print out statistics on FILE" @},
-  @{ "view", com_view, "View the contents of FILE" @},
-  @{ (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL @}
-@};
-
-/* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* When non-zero, this means the user is done using this program. */
-int done;
-
-char *
-dupstr (s)
-     int s;
-@{
-  char *r;
-
-  r = xmalloc (strlen (s) + 1);
-  strcpy (r, s);
-  return (r);
-@}
-
-main (argc, argv)
-     int argc;
-     char **argv;
-@{
-  char *line, *s;
-
-  progname = argv[0];
-
-  initialize_readline ();      /* Bind our completer. */
-
-  /* Loop reading and executing lines until the user quits. */
-  for ( ; done == 0; )
-    @{
-      line = readline ("FileMan: ");
-
-      if (!line)
-        break;
-
-      /* Remove leading and trailing whitespace from the line.
-         Then, if there is anything left, add it to the history list
-         and execute it. */
-      s = stripwhite (line);
-
-      if (*s)
-        @{
-          add_history (s);
-          execute_line (s);
-        @}
-
-      free (line);
-    @}
-  exit (0);
-@}
-
-/* Execute a command line. */
-int
-execute_line (line)
-     char *line;
-@{
-  register int i;
-  COMMAND *command;
-  char *word;
-
-  /* Isolate the command word. */
-  i = 0;
-  while (line[i] && whitespace (line[i]))
-    i++;
-  word = line + i;
-
-  while (line[i] && !whitespace (line[i]))
-    i++;
-
-  if (line[i])
-    line[i++] = '\0';
-
-  command = find_command (word);
-
-  if (!command)
-    @{
-      fprintf (stderr, "%s: No such command for FileMan.\n", word);
-      return (-1);
-    @}
-
-  /* Get argument to command, if any. */
-  while (whitespace (line[i]))
-    i++;
-
-  word = line + i;
-
-  /* Call the function. */
-  return ((*(command->func)) (word));
-@}
-
-/* Look up NAME as the name of a command, and return a pointer to that
-   command.  Return a NULL pointer if NAME isn't a command name. */
-COMMAND *
-find_command (name)
-     char *name;
-@{
-  register int i;
-
-  for (i = 0; commands[i].name; i++)
-    if (strcmp (name, commands[i].name) == 0)
-      return (&commands[i]);
-
-  return ((COMMAND *)NULL);
-@}
-
-/* Strip whitespace from the start and end of STRING.  Return a pointer
-   into STRING. */
-char *
-stripwhite (string)
-     char *string;
-@{
-  register char *s, *t;
-
-  for (s = string; whitespace (*s); s++)
-    ;
-    
-  if (*s == 0)
-    return (s);
-
-  t = s + strlen (s) - 1;
-  while (t > s && whitespace (*t))
-    t--;
-  *++t = '\0';
-
-  return s;
-@}
-
-/* **************************************************************** */
-/*                                                                  */
-/*                  Interface to Readline Completion                */
-/*                                                                  */
-/* **************************************************************** */
-
-char *command_generator __P((const char *, int));
-char **fileman_completion __P((const char *, int, int));
-
-/* Tell the GNU Readline library how to complete.  We want to try to
-   complete on command names if this is the first word in the line, or
-   on filenames if not. */
-initialize_readline ()
-@{
-  /* Allow conditional parsing of the ~/.inputrc file. */
-  rl_readline_name = "FileMan";
-
-  /* Tell the completer that we want a crack first. */
-  rl_attempted_completion_function = fileman_completion;
-@}
-
-/* Attempt to complete on the contents of TEXT.  START and END
-   bound the region of rl_line_buffer that contains the word to
-   complete.  TEXT is the word to complete.  We can use the entire
-   contents of rl_line_buffer in case we want to do some simple
-   parsing.  Returnthe array of matches, or NULL if there aren't any. */
-char **
-fileman_completion (text, start, end)
-     const char *text;
-     int start, end;
-@{
-  char **matches;
-
-  matches = (char **)NULL;
-
-  /* If this word is at the start of the line, then it is a command
-     to complete.  Otherwise it is the name of a file in the current
-     directory. */
-  if (start == 0)
-    matches = rl_completion_matches (text, command_generator);
-
-  return (matches);
-@}
-
-/* Generator function for command completion.  STATE lets us
-   know whether to start from scratch; without any state
-   (i.e. STATE == 0), then we start at the top of the list. */
-char *
-command_generator (text, state)
-     const char *text;
-     int state;
-@{
-  static int list_index, len;
-  char *name;
-
-  /* If this is a new word to complete, initialize now.  This
-     includes saving the length of TEXT for efficiency, and
-     initializing the index variable to 0. */
-  if (!state)
-    @{
-      list_index = 0;
-      len = strlen (text);
-    @}
-
-  /* Return the next name which partially matches from the
-     command list. */
-  while (name = commands[list_index].name)
-    @{
-      list_index++;
-
-      if (strncmp (name, text, len) == 0)
-        return (dupstr(name));
-    @}
-
-  /* If no names matched, then return NULL. */
-  return ((char *)NULL);
-@}
-
-/* **************************************************************** */
-/*                                                                  */
-/*                       FileMan Commands                           */
-/*                                                                  */
-/* **************************************************************** */
-
-/* String to pass to system ().  This is for the LIST, VIEW and RENAME
-   commands. */
-static char syscom[1024];
-
-/* List the file(s) named in arg. */
-com_list (arg)
-     char *arg;
-@{
-  if (!arg)
-    arg = "";
-
-  sprintf (syscom, "ls -FClg %s", arg);
-  return (system (syscom));
-@}
-
-com_view (arg)
-     char *arg;
-@{
-  if (!valid_argument ("view", arg))
-    return 1;
-
-  sprintf (syscom, "more %s", arg);
-  return (system (syscom));
-@}
-
-com_rename (arg)
-     char *arg;
-@{
-  too_dangerous ("rename");
-  return (1);
-@}
-
-com_stat (arg)
-     char *arg;
-@{
-  struct stat finfo;
-
-  if (!valid_argument ("stat", arg))
-    return (1);
-
-  if (stat (arg, &finfo) == -1)
-    @{
-      perror (arg);
-      return (1);
-    @}
-
-  printf ("Statistics for `%s':\n", arg);
-
-  printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
-          finfo.st_nlink,
-          (finfo.st_nlink == 1) ? "" : "s",
-          finfo.st_size,
-          (finfo.st_size == 1) ? "" : "s");
-  printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
-  printf ("      Last access at: %s", ctime (&finfo.st_atime));
-  printf ("    Last modified at: %s", ctime (&finfo.st_mtime));
-  return (0);
-@}
-
-com_delete (arg)
-     char *arg;
-@{
-  too_dangerous ("delete");
-  return (1);
-@}
-
-/* Print out help for ARG, or for all of the commands if ARG is
-   not present. */
-com_help (arg)
-     char *arg;
-@{
-  register int i;
-  int printed = 0;
-
-  for (i = 0; commands[i].name; i++)
-    @{
-      if (!*arg || (strcmp (arg, commands[i].name) == 0))
-        @{
-          printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
-          printed++;
-        @}
-    @}
-
-  if (!printed)
-    @{
-      printf ("No commands match `%s'.  Possibilties are:\n", arg);
-
-      for (i = 0; commands[i].name; i++)
-        @{
-          /* Print in six columns. */
-          if (printed == 6)
-            @{
-              printed = 0;
-              printf ("\n");
-            @}
-
-          printf ("%s\t", commands[i].name);
-          printed++;
-        @}
-
-      if (printed)
-        printf ("\n");
-    @}
-  return (0);
-@}
-
-/* Change to the directory ARG. */
-com_cd (arg)
-     char *arg;
-@{
-  if (chdir (arg) == -1)
-    @{
-      perror (arg);
-      return 1;
-    @}
-
-  com_pwd ("");
-  return (0);
-@}
-
-/* Print out the current working directory. */
-com_pwd (ignore)
-     char *ignore;
-@{
-  char dir[1024], *s;
-
-  s = getcwd (dir, sizeof(dir) - 1);
-  if (s == 0)
-    @{
-      printf ("Error getting pwd: %s\n", dir);
-      return 1;
-    @}
-
-  printf ("Current directory is %s\n", dir);
-  return 0;
-@}
-
-/* The user wishes to quit using this program.  Just set DONE
-   non-zero. */
-com_quit (arg)
-     char *arg;
-@{
-  done = 1;
-  return (0);
-@}
-
-/* Function which tells you that you can't do this. */
-too_dangerous (caller)
-     char *caller;
-@{
-  fprintf (stderr,
-           "%s: Too dangerous for me to distribute.\n"
-           caller);
-  fprintf (stderr, "Write it yourself.\n");
-@}
-
-/* Return non-zero if ARG is a valid argument for CALLER,
-   else print an error message and return zero. */
-int
-valid_argument (caller, arg)
-     char *caller, *arg;
-@{
-  if (!arg || !*arg)
-    @{
-      fprintf (stderr, "%s: Argument required.\n", caller);
-      return (0);
-    @}
-
-  return (1);
-@}
-@end smallexample
diff --git a/lib/readline/doc/rluser.texinfo b/lib/readline/doc/rluser.texinfo
deleted file mode 100644 (file)
index 94f851e..0000000
+++ /dev/null
@@ -1,1796 +0,0 @@
-@comment %**start of header (This is for running Texinfo on a region.)
-@setfilename rluser.info
-@comment %**end of header (This is for running Texinfo on a region.)
-@setchapternewpage odd
-
-@ignore
-This file documents the end user interface to the GNU command line
-editing features.  It is to be an appendix to manuals for programs which
-use these features.  There is a document entitled "readline.texinfo"
-which contains both end-user and programmer documentation for the
-GNU Readline Library.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Authored by Brian Fox and Chet Ramey.
-
-Permission is granted to process this file through Tex and print the
-results, provided the printed document carries copying permission notice
-identical to this one except for the removal of this paragraph (this
-paragraph not being relevant to the printed manual).
-
-Permission is granted to make and distribute verbatim copies of this manual
-provided the copyright notice and this permission notice are preserved on
-all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-GNU Copyright statement is available to the distributee, and provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end ignore
-
-@comment If you are including this manual as an appendix, then set the
-@comment variable readline-appendix.
-
-@ifclear BashFeatures
-@defcodeindex bt
-@end ifclear
-
-@node Command Line Editing
-@chapter Command Line Editing
-
-This chapter describes the basic features of the @sc{gnu}
-command line editing interface.
-@ifset BashFeatures
-Command line editing is provided by the Readline library, which is
-used by several different programs, including Bash.
-@end ifset
-
-@menu
-* Introduction and Notation::  Notation used in this text.
-* Readline Interaction::       The minimum set of commands for editing a line.
-* Readline Init File::         Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
-                               available for binding
-* Readline vi Mode::           A short description of how to make Readline
-                               behave like the vi editor.
-@ifset BashFeatures
-* Programmable Completion::    How to specify the possible completions for
-                               a specific command.
-* Programmable Completion Builtins::   Builtin commands to specify how to
-                               complete arguments for a particular command.
-@end ifset
-@end menu
-
-@node Introduction and Notation
-@section Introduction to Line Editing
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-
-The text @kbd{C-k} is read as `Control-K' and describes the character
-produced when the @key{k} key is pressed while the Control key
-is depressed.
-
-The text @kbd{M-k} is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the @key{k}
-key is pressed.
-The Meta key is labeled @key{ALT} on many keyboards.
-On keyboards with two keys labeled @key{ALT} (usually to either side of
-the space bar), the @key{ALT} on the left side is generally set to
-work as a Meta key.
-The @key{ALT} key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
-If you do not have a Meta or @key{ALT} key, or another key working as
-a Meta key, the identical keystroke can be generated by typing @key{ESC}
-@emph{first}, and then typing @key{k}.
-Either process is known as @dfn{metafying} the @key{k} key.
-
-The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the
-character produced by @dfn{metafying} @kbd{C-k}.
-
-In addition, several keys have their own names.  Specifically,
-@key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all
-stand for themselves when seen in this text, or in an init file
-(@pxref{Readline Init File}).
-If your keyboard lacks a @key{LFD} key, typing @key{C-j} will
-produce the desired character.
-The @key{RET} key may be labeled @key{Return} or @key{Enter} on
-some keyboards.
-
-@node Readline Interaction
-@section Readline Interaction
-@cindex interaction, readline
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press @key{RET}.  You do not have to be at the
-end of the line to press @key{RET}; the entire line is accepted
-regardless of the location of the cursor within the line.
-
-@menu
-* Readline Bare Essentials::   The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands::  How to delete text, and how to get it back!
-* Readline Arguments::         Giving numeric arguments to commands.
-* Searching::                  Searching through previous lines.
-@end menu
-
-@node Readline Bare Essentials
-@subsection Readline Bare Essentials
-@cindex notation, readline
-@cindex command editing
-@cindex editing command lines
-
-In order to enter characters into the line, simply type them.  The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters.  In
-that case, you can type @kbd{C-b} to move the cursor to the left, and then
-correct your mistake.  Afterwards, you can move the cursor to the right
-with @kbd{C-f}.
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted.  Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text.  A list of the bare
-essentials for editing the text of an input line follows.
-
-@table @asis
-@item @kbd{C-b}
-Move back one character.
-@item @kbd{C-f}
-Move forward one character.
-@item @key{DEL} or @key{Backspace}
-Delete the character to the left of the cursor.
-@item @kbd{C-d}
-Delete the character underneath the cursor.
-@item @w{Printing characters}
-Insert the character into the line at the cursor.
-@item @kbd{C-_} or @kbd{C-x C-u}
-Undo the last editing command.  You can undo all the way back to an
-empty line.
-@end table
-
-@noindent
-(Depending on your configuration, the @key{Backspace} key be set to
-delete the character to the left of the cursor and the @key{DEL} key set
-to delete the character underneath the cursor, like @kbd{C-d}, rather
-than the character to the left of the cursor.)
-
-@node Readline Movement Commands
-@subsection Readline Movement Commands
-
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line.  For your convenience, many
-other commands have been added in addition to @kbd{C-b}, @kbd{C-f},
-@kbd{C-d}, and @key{DEL}.  Here are some commands for moving more rapidly
-about the line.
-
-@table @kbd
-@item C-a
-Move to the start of the line.
-@item C-e
-Move to the end of the line.
-@item M-f
-Move forward a word, where a word is composed of letters and digits.
-@item M-b
-Move backward a word.
-@item C-l
-Clear the screen, reprinting the current line at the top.
-@end table
-
-Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves
-forward a word.  It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-
-@node Readline Killing Commands
-@subsection Readline Killing Commands
-
-@cindex killing text
-@cindex yanking text
-
-@dfn{Killing} text means to delete the text from the line, but to save
-it away for later use, usually by @dfn{yanking} (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-
-When you use a kill command, the text is saved in a @dfn{kill-ring}.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-@cindex kill ring
-
-Here is the list of commands for killing text.
-
-@table @kbd
-@item C-k
-Kill the text from the current cursor position to the end of the line.
-
-@item M-d
-Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by @kbd{M-f}.
-
-@item M-@key{DEL}
-Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by @kbd{M-b}.
-
-@item C-w
-Kill from the cursor to the previous whitespace.  This is different than
-@kbd{M-@key{DEL}} because the word boundaries differ.
-
-@end table
-
-Here is how to @dfn{yank} the text back into the line.  Yanking
-means to copy the most-recently-killed text from the kill buffer.
-
-@table @kbd
-@item C-y
-Yank the most recently killed text back into the buffer at the cursor.
-
-@item M-y
-Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is @kbd{C-y} or @kbd{M-y}.
-@end table
-
-@node Readline Arguments
-@subsection Readline Arguments
-
-You can pass numeric arguments to Readline commands.  Sometimes the
-argument acts as a repeat count, other times it is the @i{sign} of the
-argument that is significant.  If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
-start of the line, you might type @samp{M-- C-k}.
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command.  If the first `digit' typed is a minus
-sign (@samp{-}), then the sign of the argument will be negative.  Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command.  For example, to give
-the @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d},
-which will delete the next ten characters on the input line.
-
-@node Searching
-@subsection Searching for Commands in the History
-
-Readline provides commands for searching through the command history
-@ifset BashFeatures
-(@pxref{Bash History Facilities})
-@end ifset
-for lines containing a specified string.
-There are two search modes:  @dfn{incremental} and @dfn{non-incremental}.
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-@kbd{C-r}.  Typing @kbd{C-s} searches forward through the history.
-The characters present in the value of the @code{isearch-terminators} variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the @key{ESC} and
-@kbd{C-J} characters will terminate an incremental search.
-@kbd{C-g} will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-
-To find other matching entries in the history list, type @kbd{C-r} or
-@kbd{C-s} as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a @key{RET} will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-
-Readline remembers the last incremental search string.  If two
-@kbd{C-r}s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
-
-@node Readline Init File
-@section Readline Init File
-@cindex initialization file, readline
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an @dfn{inputrc} file, conventionally in his home directory.
-The name of this
-@ifset BashFeatures
-file is taken from the value of the shell variable @env{INPUTRC}.  If
-@end ifset
-@ifclear BashFeatures
-file is taken from the value of the environment variable @env{INPUTRC}.  If
-@end ifclear
-that variable is unset, the default is @file{~/.inputrc}.
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-
-In addition, the @code{C-x C-r} command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-@menu
-* Readline Init File Syntax::  Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs::        Conditional key bindings in the inputrc file.
-
-* Sample Init File::           An example inputrc file.
-@end menu
-
-@node Readline Init File Syntax
-@subsection Readline Init File Syntax
-
-There are only a few basic constructs allowed in the
-Readline init file.  Blank lines are ignored.
-Lines beginning with a @samp{#} are comments.
-Lines beginning with a @samp{$} indicate conditional
-constructs (@pxref{Conditional Init Constructs}).  Other lines
-denote variable settings and key bindings.
-
-@table @asis
-@item Variable Settings
-You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the @code{set} command within the init file.
-The syntax is simple:
-
-@example
-set @var{variable} @var{value}
-@end example
-
-@noindent
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-@code{vi} line editing commands:
-
-@example
-set editing-mode vi
-@end example
-
-Variable names and values, where appropriate, are recognized without regard
-to case. 
-
-@ifset BashFeatures
-The @w{@code{bind -V}} command lists the current Readline variable names
-and values.  @xref{Bash Builtins}.
-@end ifset
-
-A great deal of run-time behavior is changeable with the following
-variables.
-
-@cindex variables, readline
-@table @code
-
-@item bell-style
-@vindex bell-style
-Controls what happens when Readline wants to ring the terminal bell.
-If set to @samp{none}, Readline never rings the bell.  If set to
-@samp{visible}, Readline uses a visible bell if one is available.
-If set to @samp{audible} (the default), Readline attempts to ring
-the terminal's bell.
-
-@item comment-begin
-@vindex comment-begin
-The string to insert at the beginning of the line when the
-@code{insert-comment} command is executed.  The default value
-is @code{"#"}.
-
-@item completion-ignore-case
-If set to @samp{on}, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is @samp{off}.
-
-@item completion-query-items
-@vindex completion-query-items
-The number of possible completions that determines when the user is
-asked whether he wants to see the list of possibilities.  If the
-number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-The default limit is @code{100}.
-
-@item convert-meta
-@vindex convert-meta
-If set to @samp{on}, Readline will convert characters with the
-eighth bit set to an @sc{ascii} key sequence by stripping the eighth
-bit and prefixing an @key{ESC} character, converting them to a
-meta-prefixed key sequence.  The default value is @samp{on}.
-
-@item disable-completion
-@vindex disable-completion
-If set to @samp{On}, Readline will inhibit word completion.
-Completion  characters will be inserted into the line as if they had
-been mapped to @code{self-insert}.  The default is @samp{off}.
-
-@item editing-mode
-@vindex editing-mode
-The @code{editing-mode} variable controls which default set of
-key bindings is used.  By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs.  This variable can be
-set to either @samp{emacs} or @samp{vi}.
-
-@item enable-keypad
-@vindex enable-keypad
-When set to @samp{on}, Readline will try to enable the application
-keypad when it is called.  Some systems need this to enable the
-arrow keys.  The default is @samp{off}.
-
-@item expand-tilde
-@vindex expand-tilde
-If set to @samp{on}, tilde expansion is performed when Readline
-attempts word completion.  The default is @samp{off}.
-
-@vindex history-preserve-point
-If set to @samp{on}, the history code attempts to place point at the
-same location on each history line retrived with @code{previous-history}
-or @code{next-history}.
-
-@item horizontal-scroll-mode
-@vindex horizontal-scroll-mode
-This variable can be set to either @samp{on} or @samp{off}.  Setting it
-to @samp{on} means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line.  By default,
-this variable is set to @samp{off}.
-
-@item input-meta
-@vindex input-meta
-@vindex meta-flag
-If set to @samp{on}, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support.  The
-default value is @samp{off}.  The name @code{meta-flag} is a
-synonym for this variable.
-
-@item isearch-terminators
-@vindex isearch-terminators
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (@pxref{Searching}).
-If this variable has not been given a value, the characters @key{ESC} and
-@kbd{C-J} will terminate an incremental search.
-
-@item keymap
-@vindex keymap
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable @code{keymap} names are
-@code{emacs},
-@code{emacs-standard},
-@code{emacs-meta},
-@code{emacs-ctlx},
-@code{vi},
-@code{vi-move},
-@code{vi-command}, and
-@code{vi-insert}.
-@code{vi} is equivalent to @code{vi-command}; @code{emacs} is
-equivalent to @code{emacs-standard}.  The default value is @code{emacs}.
-The value of the @code{editing-mode} variable also affects the
-default keymap.
-
-@item mark-directories
-If set to @samp{on}, completed directory names have a slash
-appended.  The default is @samp{on}.
-
-@item mark-modified-lines
-@vindex mark-modified-lines
-This variable, when set to @samp{on}, causes Readline to display an
-asterisk (@samp{*}) at the start of history lines which have been modified.
-This variable is @samp{off} by default.
-
-@item mark-symlinked-directories
-@vindex mark-symlinked-directories
-If set to @samp{on}, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-@code{mark-directories}).
-The default is @samp{off}.
-
-@item match-hidden-files
-@vindex match-hidden-files
-This variable, when set to @samp{on}, causes Readline to match files whose
-names begin with a @samp{.} (hidden files) when performing filename
-completion, unless the leading @samp{.} is
-supplied by the user in the filename to be completed.
-This variable is @samp{on} by default.
-
-@item output-meta
-@vindex output-meta
-If set to @samp{on}, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence.  The default is @samp{off}.
-
-@item page-completions
-@vindex page-completions
-If set to @samp{on}, Readline uses an internal @code{more}-like pager
-to display a screenful of possible completions at a time.
-This variable is @samp{on} by default.
-
-@item print-completions-horizontally
-If set to @samp{on}, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is @samp{off}.
-
-@item show-all-if-ambiguous
-@vindex show-all-if-ambiguous
-This alters the default behavior of the completion functions.  If
-set to @samp{on}, 
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is @samp{off}.
-
-@item visible-stats
-@vindex visible-stats
-If set to @samp{on}, a character denoting a file's type
-is appended to the filename when listing possible
-completions.  The default is @samp{off}.
-
-@end table
-
-@item Key Bindings
-The syntax for controlling key bindings in the init file is
-simple.  First you need to find the name of the command that you
-want to change.  The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command.  The name of the key
-can be expressed in different ways, depending on what you find most
-comfortable.
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a @var{macro}).
-
-@ifset BashFeatures
-The @w{@code{bind -p}} command displays Readline function names and
-bindings in a format that can put directly into an initialization file.
-@xref{Bash Builtins}.
-@end ifset
-
-@table @asis
-@item @w{@var{keyname}: @var{function-name} or @var{macro}}
-@var{keyname} is the name of a key spelled out in English.  For example:
-@example
-Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "> output"
-@end example
-
-In the above example, @kbd{C-u} is bound to the function
-@code{universal-argument},
-@kbd{M-DEL} is bound to the function @code{backward-kill-word}, and
-@kbd{C-o} is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-@samp{> output} into the line).
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-@var{DEL},
-@var{ESC},
-@var{ESCAPE},
-@var{LFD},
-@var{NEWLINE},
-@var{RET},
-@var{RETURN},
-@var{RUBOUT},
-@var{SPACE},
-@var{SPC},
-and
-@var{TAB}.
-
-@item @w{"@var{keyseq}": @var{function-name} or @var{macro}}
-@var{keyseq} differs from @var{keyname} above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes.  Some @sc{gnu} Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-
-@example
-"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-@end example
-
-In the above example, @kbd{C-u} is again bound to the function
-@code{universal-argument} (just as it was in the first example),
-@samp{@kbd{C-x} @kbd{C-r}} is bound to the function @code{re-read-init-file},
-and @samp{@key{ESC} @key{[} @key{1} @key{1} @key{~}} is bound to insert
-the text @samp{Function Key 1}.
-
-@end table
-
-The following @sc{gnu} Emacs style escape sequences are available when
-specifying key sequences:
-
-@table @code
-@item @kbd{\C-}
-control prefix
-@item @kbd{\M-}
-meta prefix
-@item @kbd{\e}
-an escape character
-@item @kbd{\\}
-backslash
-@item @kbd{\"}
-@key{"}, a double quotation mark
-@item @kbd{\'}
-@key{'}, a single quote or apostrophe
-@end table
-
-In addition to the @sc{gnu} Emacs style escape sequences, a second
-set of backslash escapes is available:
-
-@table @code
-@item \a
-alert (bell)
-@item \b
-backspace
-@item \d
-delete
-@item \f
-form feed
-@item \n
-newline
-@item \r
-carriage return
-@item \t
-horizontal tab
-@item \v
-vertical tab
-@item \@var{nnn}
-the eight-bit character whose value is the octal value @var{nnn}
-(one to three digits)
-@item \x@var{HH}
-the eight-bit character whose value is the hexadecimal value @var{HH}
-(one or two hex digits)
-@end table
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including @samp{"} and @samp{'}.
-For example, the following binding will make @samp{@kbd{C-x} \}
-insert a single @samp{\} into the line:
-@example
-"\C-x\\": "\\"
-@end example
-
-@end table
-
-@node Conditional Init Constructs
-@subsection Conditional Init Constructs
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests.  There are four parser directives used.
-
-@table @code
-@item $if
-The @code{$if} construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline.  The text of the test extends to the end of the line;
-no characters are required to isolate it.
-
-@table @code
-@item mode
-The @code{mode=} form of the @code{$if} directive is used to test
-whether Readline is in @code{emacs} or @code{vi} mode.
-This may be used in conjunction
-with the @samp{set keymap} command, for instance, to set bindings in
-the @code{emacs-standard} and @code{emacs-ctlx} keymaps only if
-Readline is starting out in @code{emacs} mode.
-
-@item term
-The @code{term=} form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys.  The word on the right side of the
-@samp{=} is tested against both the full name of the terminal and
-the portion of the terminal name before the first @samp{-}.  This
-allows @code{sun} to match both @code{sun} and @code{sun-cmd},
-for instance.
-
-@item application
-The @var{application} construct is used to include
-application-specific settings.  Each program using the Readline
-library sets the @var{application name}, and you can test for
-a particular value. 
-This could be used to bind key sequences to functions useful for
-a specific program.  For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-@example
-$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-@end example
-@end table
-
-@item $endif
-This command, as seen in the previous example, terminates an
-@code{$if} command.
-
-@item $else
-Commands in this branch of the @code{$if} directive are executed if
-the test fails.
-
-@item $include
-This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from @file{/etc/inputrc}:
-@example
-$include /etc/inputrc
-@end example
-@end table
-
-@node Sample Init File
-@subsection Sample Init File
-
-Here is an example of an @var{inputrc} file.  This illustrates key
-binding, variable assignment, and conditional syntax.
-
-@example
-@page
-# This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library.  Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any systemwide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs 
-
-$if mode=emacs
-
-Meta-Control-h:        backward-kill-word      Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD":        backward-char
-#"\M-OC":        forward-char
-#"\M-OA":        previous-history
-#"\M-OB":        next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D":        backward-char
-"\M-[C":        forward-char
-"\M-[A":        previous-history
-"\M-[B":        next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD":       backward-char
-#"\M-\C-OC":       forward-char
-#"\M-\C-OA":       previous-history
-#"\M-\C-OB":       next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D":       backward-char
-#"\M-\C-[C":       forward-char
-#"\M-\C-[A":       previous-history
-#"\M-\C-[B":       next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding.  This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=$@{PATH@}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-@end example
-
-@node Bindable Readline Commands
-@section Bindable Readline Commands
-
-@menu
-* Commands For Moving::                Moving about the line.
-* Commands For History::       Getting at previous lines.
-* Commands For Text::          Commands for changing text.
-* Commands For Killing::       Commands for killing and yanking.
-* Numeric Arguments::          Specifying numeric arguments, repeat counts.
-* Commands For Completion::    Getting Readline to do the typing for you.
-* Keyboard Macros::            Saving and re-executing typed characters
-* Miscellaneous Commands::     Other miscellaneous commands.
-@end menu
-
-This section describes Readline commands that may be bound to key
-sequences.
-@ifset BashFeatures
-You can list your key bindings by executing
-@w{@code{bind -P}} or, for a more terse format, suitable for an
-@var{inputrc} file, @w{@code{bind -p}}.  (@xref{Bash Builtins}.)
-@end ifset
-Command names without an accompanying key sequence are unbound by default.
-
-In the following descriptions, @dfn{point} refers to the current cursor
-position, and @dfn{mark} refers to a cursor position saved by the
-@code{set-mark} command.
-The text between the point and mark is referred to as the @dfn{region}.
-
-@node Commands For Moving
-@subsection Commands For Moving
-@ftable @code
-@item beginning-of-line (C-a)
-Move to the start of the current line.
-
-@item end-of-line (C-e)
-Move to the end of the line.
-
-@item forward-char (C-f)
-Move forward a character.
-
-@item backward-char (C-b)
-Move back a character.
-
-@item forward-word (M-f)
-Move forward to the end of the next word.  Words are composed of
-letters and digits.
-
-@item backward-word (M-b)
-Move back to the start of the current or previous word.  Words are
-composed of letters and digits.
-
-@item clear-screen (C-l)
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-
-@item redraw-current-line ()
-Refresh the current line.  By default, this is unbound.
-
-@end ftable
-
-@node Commands For History
-@subsection Commands For Manipulating The History
-
-@ftable @code
-@item accept-line (Newline or Return)
-@ifset BashFeatures
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, add it to the history list according to the setting of
-the @env{HISTCONTROL} and @env{HISTIGNORE} variables.
-If this line is a modified history line, then restore the history line
-to its original state.
-@end ifset
-@ifclear BashFeatures
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-@code{add_history()}.
-If this line is a modified history line, the history line is restored
-to its original state.
-@end ifclear
-
-@item previous-history (C-p)
-Move `back' through the history list, fetching the previous command.
-
-@item next-history (C-n)
-Move `forward' through the history list, fetching the next command.
-
-@item beginning-of-history (M-<)
-Move to the first line in the history.
-
-@item end-of-history (M->)
-Move to the end of the input history, i.e., the line currently
-being entered.
-
-@item reverse-search-history (C-r)
-Search backward starting at the current line and moving `up' through
-the history as necessary.  This is an incremental search.
-
-@item forward-search-history (C-s)
-Search forward starting at the current line and moving `down' through
-the the history as necessary.  This is an incremental search.
-
-@item non-incremental-reverse-search-history (M-p)
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-
-@item non-incremental-forward-search-history (M-n)
-Search forward starting at the current line and moving `down'
-through the the history as necessary using a non-incremental search
-for a string supplied by the user.
-
-@item history-search-forward ()
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-This is a non-incremental search.
-By default, this command is unbound.
-
-@item history-search-backward ()
-Search backward through the history for the string of characters
-between the start of the current line and the point.  This
-is a non-incremental search.  By default, this command is unbound.
-
-@item yank-nth-arg (M-C-y)
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument @var{n},
-insert the @var{n}th word from the previous command (the words
-in the previous command begin with word 0).  A negative argument
-inserts the @var{n}th word from the end of the previous command.
-
-@item yank-last-arg (M-. or M-_)
-Insert last argument to the previous command (the last word of the
-previous history entry).  With an
-argument, behave exactly like @code{yank-nth-arg}.
-Successive calls to @code{yank-last-arg} move back through the history
-list, inserting the last argument of each line in turn.
-
-@end ftable
-
-@node Commands For Text
-@subsection Commands For Changing Text
-
-@ftable @code
-@item delete-char (C-d)
-Delete the character at point.  If point is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to @code{delete-char}, then
-return @sc{eof}.
-
-@item backward-delete-char (Rubout)
-Delete the character behind the cursor.  A numeric argument means
-to kill the characters instead of deleting them.
-
-@item forward-backward-delete-char ()
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted.  By default, this is not bound to a key.
-
-@item quoted-insert (C-q or C-v)
-Add the next character typed to the line verbatim.  This is
-how to insert key sequences like @kbd{C-q}, for example.
-
-@ifclear BashFeatures
-@item tab-insert (M-@key{TAB})
-Insert a tab character.
-@end ifclear
-
-@item self-insert (a, b, A, 1, !, @dots{})
-Insert yourself.
-
-@item transpose-chars (C-t)
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well.  If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-
-@item transpose-words (M-t)
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-
-@item upcase-word (M-u)
-Uppercase the current (or following) word.  With a negative argument,
-uppercase the previous word, but do not move the cursor.
-
-@item downcase-word (M-l)
-Lowercase the current (or following) word.  With a negative argument,
-lowercase the previous word, but do not move the cursor.
-
-@item capitalize-word (M-c)
-Capitalize the current (or following) word.  With a negative argument,
-capitalize the previous word, but do not move the cursor.
-
-@item overwrite-mode ()
-Toggle overwrite mode.  With an explicit positive numeric argument,
-switches to overwrite mode.  With an explicit non-positive numeric
-argument, switches to insert mode.  This command affects only
-@code{emacs} mode; @code{vi} mode does overwrite differently.
-Each call to @code{readline()} starts in insert mode.
-
-In overwrite mode, characters bound to @code{self-insert} replace
-the text at point rather than pushing the text to the right.
-Characters bound to @code{backward-delete-char} replace the character
-before point with a space.
-
-By default, this command is unbound.
-
-@end ftable
-
-@node Commands For Killing
-@subsection Killing And Yanking
-
-@ftable @code
-
-@item kill-line (C-k)
-Kill the text from point to the end of the line.
-
-@item backward-kill-line (C-x Rubout)
-Kill backward to the beginning of the line.
-
-@item unix-line-discard (C-u)
-Kill backward from the cursor to the beginning of the current line.
-
-@item kill-whole-line ()
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-
-@item kill-word (M-d)
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as @code{forward-word}.
-
-@item backward-kill-word (M-@key{DEL})
-Kill the word behind point.
-Word boundaries are the same as @code{backward-word}.
-
-@item unix-word-rubout (C-w)
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-
-@item delete-horizontal-space ()
-Delete all spaces and tabs around point.  By default, this is unbound.
-
-@item kill-region ()
-Kill the text in the current region.
-By default, this command is unbound.
-
-@item copy-region-as-kill ()
-Copy the text in the region to the kill buffer, so it can be yanked
-right away.  By default, this command is unbound.
-
-@item copy-backward-word ()
-Copy the word before point to the kill buffer.
-The word boundaries are the same as @code{backward-word}.
-By default, this command is unbound.
-
-@item copy-forward-word ()
-Copy the word following point to the kill buffer.
-The word boundaries are the same as @code{forward-word}.
-By default, this command is unbound.
-
-@item yank (C-y)
-Yank the top of the kill ring into the buffer at point.
-
-@item yank-pop (M-y)
-Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is @code{yank} or @code{yank-pop}.
-@end ftable
-
-@node Numeric Arguments
-@subsection Specifying Numeric Arguments
-@ftable @code
-
-@item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--})
-Add this digit to the argument already accumulating, or start a new
-argument.  @kbd{M--} starts a negative argument.
-
-@item universal-argument ()
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing @code{universal-argument}
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-@end ftable
-
-@node Commands For Completion
-@subsection Letting Readline Type For You
-
-@ftable @code
-@item complete (@key{TAB})
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-@ifset BashFeatures
-Bash attempts completion treating the text as a variable (if the
-text begins with @samp{$}), username (if the text begins with
-@samp{~}), hostname (if the text begins with @samp{@@}), or
-command (including aliases and functions) in turn.  If none 
-of these produces a match, filename completion is attempted.
-@end ifset
-@ifclear BashFeatures
-The default is filename completion.
-@end ifclear
-
-@item possible-completions (M-?)
-List the possible completions of the text before point.
-
-@item insert-completions (M-*)
-Insert all completions of the text before point that would have
-been generated by @code{possible-completions}.
-
-@item menu-complete ()
-Similar to @code{complete}, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of @code{menu-complete} steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of @code{bell-style})
-and the original text is restored.
-An argument of @var{n} moves @var{n} positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to @key{TAB}, but is unbound
-by default.
-
-@item delete-char-or-list ()
-Deletes the character under the cursor if not at the beginning or
-end of the line (like @code{delete-char}).
-If at the end of the line, behaves identically to
-@code{possible-completions}.
-This command is unbound by default.
-
-@ifset BashFeatures
-@item complete-filename (M-/)
-Attempt filename completion on the text before point.
-
-@item possible-filename-completions (C-x /)
-List the possible completions of the text before point,
-treating it as a filename.
-
-@item complete-username (M-~)
-Attempt completion on the text before point, treating
-it as a username.
-
-@item possible-username-completions (C-x ~)
-List the possible completions of the text before point,
-treating it as a username.
-
-@item complete-variable (M-$)
-Attempt completion on the text before point, treating
-it as a shell variable.
-
-@item possible-variable-completions (C-x $)
-List the possible completions of the text before point,
-treating it as a shell variable.
-
-@item complete-hostname (M-@@)
-Attempt completion on the text before point, treating
-it as a hostname.
-
-@item possible-hostname-completions (C-x @@)
-List the possible completions of the text before point,
-treating it as a hostname.
-
-@item complete-command (M-!)
-Attempt completion on the text before point, treating
-it as a command name.  Command completion attempts to
-match the text against aliases, reserved words, shell
-functions, shell builtins, and finally executable filenames,
-in that order.
-
-@item possible-command-completions (C-x !)
-List the possible completions of the text before point,
-treating it as a command name.
-
-@item dynamic-complete-history (M-@key{TAB})
-Attempt completion on the text before point, comparing
-the text against lines from the history list for possible
-completion matches.
-
-@item complete-into-braces (M-@{)
-Perform filename completion and insert the list of possible completions
-enclosed within braces so the list is available to the shell
-(@pxref{Brace Expansion}).
-
-@end ifset
-@end ftable
-
-@node Keyboard Macros
-@subsection Keyboard Macros
-@ftable @code
-
-@item start-kbd-macro (C-x ()
-Begin saving the characters typed into the current keyboard macro.
-
-@item end-kbd-macro (C-x ))
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-
-@item call-last-kbd-macro (C-x e)
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-
-@end ftable
-
-@node Miscellaneous Commands
-@subsection Some Miscellaneous Commands
-@ftable @code
-
-@item re-read-init-file (C-x C-r)
-Read in the contents of the @var{inputrc} file, and incorporate
-any bindings or variable assignments found there.
-
-@item abort (C-g)
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-@code{bell-style}).
-
-@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{})
-If the metafied character @var{x} is lowercase, run the command
-that is bound to the corresponding uppercase character.
-
-@item prefix-meta (@key{ESC})
-Metafy the next character typed.  This is for keyboards
-without a meta key.  Typing @samp{@key{ESC} f} is equivalent to typing
-@kbd{M-f}.
-
-@item undo (C-_ or C-x C-u)
-Incremental undo, separately remembered for each line.
-
-@item revert-line (M-r)
-Undo all changes made to this line.  This is like executing the @code{undo}
-command enough times to get back to the beginning.
-
-@ifset BashFeatures
-@item tilde-expand (M-&)
-@end ifset
-@ifclear BashFeatures
-@item tilde-expand (M-~)
-@end ifclear
-Perform tilde expansion on the current word.
-
-@item set-mark (C-@@)
-Set the mark to the point.  If a
-numeric argument is supplied, the mark is set to that position.
-
-@item exchange-point-and-mark (C-x C-x)
-Swap the point with the mark.  The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-
-@item character-search (C-])
-A character is read and point is moved to the next occurrence of that
-character.  A negative count searches for previous occurrences.
-
-@item character-search-backward (M-C-])
-A character is read and point is moved to the previous occurrence
-of that character.  A negative count searches for subsequent
-occurrences.
-
-@item insert-comment (M-#)
-Without a numeric argument, the value of the @code{comment-begin}
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle:  if
-the characters at the beginning of the line do not match the value
-of @code{comment-begin}, the value is inserted, otherwise
-the characters in @code{comment-begin} are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-@ifset BashFeatures
-The default value of @code{comment-begin} causes this command
-to make the current line a shell comment.
-If a numeric argument causes the comment character to be removed, the line
-will be executed by the shell.
-@end ifset
-
-@item dump-functions ()
-Print all of the functions and their key bindings to the
-Readline output stream.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file.  This command is unbound by default.
-
-@item dump-variables ()
-Print all of the settable variables and their values to the
-Readline output stream.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file.  This command is unbound by default.
-
-@item dump-macros ()
-Print all of the Readline key sequences bound to macros and the
-strings they output.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an @var{inputrc} file.  This command is unbound by default.
-
-@ifset BashFeatures
-@item glob-complete-word (M-g)
-The word before point is treated as a pattern for pathname expansion,
-with an asterisk implicitly appended.  This pattern is used to
-generate a list of matching file names for possible completions.
-
-@item glob-expand-word (C-x *)
-The word before point is treated as a pattern for pathname expansion,
-and the list of matching file names is inserted, replacing the word.
-If a numeric argument is supplied, a @samp{*} is appended before
-pathname expansion.
-
-@item glob-list-expansions (C-x g)
-The list of expansions that would have been generated by
-@code{glob-expand-word} is displayed, and the line is redrawn.
-If a numeric argument is supplied, a @samp{*} is appended before
-pathname expansion.
-
-@item display-shell-version (C-x C-v)
-Display version information about the current instance of Bash.
-
-@item shell-expand-line (M-C-e)
-Expand the line as the shell does.
-This performs alias and history expansion as well as all of the shell
-word expansions (@pxref{Shell Expansions}).
-
-@item history-expand-line (M-^)
-Perform history expansion on the current line.
-
-@item magic-space ()
-Perform history expansion on the current line and insert a space
-(@pxref{History Interaction}).
-
-@item alias-expand-line ()
-Perform alias expansion on the current line (@pxref{Aliases}).
-
-@item history-and-alias-expand-line ()
-Perform history and alias expansion on the current line.
-
-@item insert-last-argument (M-. or M-_)
-A synonym for @code{yank-last-arg}.
-
-@item operate-and-get-next (C-o)
-Accept the current line for execution and fetch the next line
-relative to the current line from the history for editing.  Any
-argument is ignored.
-
-@item edit-and-execute-command (C-xC-e)
-Invoke an editor on the current command line, and execute the result as shell
-commands.
-Bash attempts to invoke
-@code{$FCEDIT}, @code{$EDITOR}, and @code{emacs}
-as the editor, in that order.
-
-@end ifset
-
-@ifclear BashFeatures
-@item emacs-editing-mode (C-e)
-When in @code{vi} command mode, this causes a switch to @code{emacs}
-editing mode.
-
-@item vi-editing-mode (M-C-j)
-When in @code{emacs} editing mode, this causes a switch to @code{vi}
-editing mode.
-
-@end ifclear
-
-@end ftable
-
-@node Readline vi Mode
-@section Readline vi Mode
-
-While the Readline library does not have a full set of @code{vi}
-editing functions, it does contain enough to allow simple editing
-of the line.  The Readline @code{vi} mode behaves as specified in
-the @sc{posix} 1003.2 standard.
-
-@ifset BashFeatures
-In order to switch interactively between @code{emacs} and @code{vi}
-editing modes, use the @samp{set -o emacs} and @samp{set -o vi}
-commands (@pxref{The Set Builtin}).
-@end ifset
-@ifclear BashFeatures
-In order to switch interactively between @code{emacs} and @code{vi}
-editing modes, use the command @kbd{M-C-j} (bound to emacs-editing-mode
-when in @code{vi} mode and to vi-editing-mode in @code{emacs} mode).
-@end ifclear
-The Readline default is @code{emacs} mode.
-
-When you enter a line in @code{vi} mode, you are already placed in
-`insertion' mode, as if you had typed an @samp{i}.  Pressing @key{ESC}
-switches you into `command' mode, where you can edit the text of the
-line with the standard @code{vi} movement keys, move to previous
-history lines with @samp{k} and subsequent lines with @samp{j}, and
-so forth.
-
-@ifset BashFeatures
-@node Programmable Completion
-@section Programmable Completion
-@cindex programmable completion
-
-When word completion is attempted for an argument to a command for
-which a completion specification (a @var{compspec}) has been defined
-using the @code{complete} builtin (@pxref{Programmable Completion Builtins}),
-the programmable completion facilities are invoked. 
-
-First, the command name is identified.
-If a compspec has been defined for that command, the
-compspec is used to generate the list of possible completions for the word.
-If the command word is a full pathname, a compspec for the full
-pathname is searched for first.
-If no compspec is found for the full pathname, an attempt is made to
-find a compspec for the portion following the final slash.
-
-Once a compspec has been found, it is used to generate the list of
-matching words.
-If a compspec is not found, the default Bash completion
-described above (@pxref{Commands For Completion}) is performed.
-
-First, the actions specified by the compspec are used.
-Only matches which are prefixed by the word being completed are
-returned.
-When the @option{-f} or @option{-d} option is used for filename or
-directory name completion, the shell variable @env{FIGNORE} is
-used to filter the matches.
-@xref{Bash Variables}, for a description of @env{FIGNORE}.
-
-Any completions specified by a filename expansion pattern to the
-@option{-G} option are generated next.
-The words generated by the pattern need not match the word being completed.
-The @env{GLOBIGNORE} shell variable is not used to filter the matches,
-but the @env{FIGNORE} shell variable is used.
-
-Next, the string specified as the argument to the @option{-W} option
-is considered.
-The string is first split using the characters in the @env{IFS}
-special variable as delimiters.
-Shell quoting is honored.
-Each word is then expanded using
-brace expansion, tilde expansion, parameter and variable expansion,
-command substitution, arithmetic expansion, and pathname expansion,
-as described above (@pxref{Shell Expansions}).
-The results are split using the rules described above
-(@pxref{Word Splitting}).
-The results of the expansion are prefix-matched against the word being
-completed, and the matching words become the possible completions.
-
-After these matches have been generated, any shell function or command
-specified with the @option{-F} and @option{-C} options is invoked.
-When the command or function is invoked, the @env{COMP_LINE} and
-@env{COMP_POINT} variables are assigned values as described above
-(@pxref{Bash Variables}).
-If a shell function is being invoked, the @env{COMP_WORDS} and
-@env{COMP_CWORD} variables are also set.
-When the function or command is invoked, the first argument is the
-name of the command whose arguments are being completed, the
-second argument is the word being completed, and the third argument
-is the word preceding the word being completed on the current command line.
-No filtering of the generated completions against the word being completed
-is performed; the function or command has complete freedom in generating
-the matches.
-
-Any function specified with @option{-F} is invoked first.
-The function may use any of the shell facilities, including the
-@code{compgen} builtin described below
-(@pxref{Programmable Completion Builtins}), to generate the matches.
-It must put the possible completions in the @env{COMPREPLY} array
-variable.
-
-Next, any command specified with the @option{-C} option is invoked
-in an environment equivalent to command substitution.
-It should print a list of completions, one per line, to
-the standard output.
-Backslash may be used to escape a newline, if necessary.
-
-After all of the possible completions are generated, any filter
-specified with the @option{-X} option is applied to the list.
-The filter is a pattern as used for pathname expansion; a @samp{&}
-in the pattern is replaced with the text of the word being completed.
-A literal @samp{&} may be escaped with a backslash; the backslash
-is removed before attempting a match.
-Any completion that matches the pattern will be removed from the list.
-A leading @samp{!} negates the pattern; in this case any completion
-not matching the pattern will be removed.
-
-Finally, any prefix and suffix specified with the @option{-P} and @option{-S}
-options are added to each member of the completion list, and the result is
-returned to the Readline completion code as the list of possible
-completions.
-
-If the previously-applied actions do not generate any matches, and the
-@option{-o dirnames} option was supplied to @code{complete} when the
-compspec was defined, directory name completion is attempted. 
-
-By default, if a compspec is found, whatever it generates is returned to
-the completion code as the full set of possible completions.
-The default Bash completions are not attempted, and the Readline default
-of filename completion is disabled.
-If the @option{-o default} option was supplied to @code{complete} when the
-compspec was defined, Readline's default completion will be performed
-if the compspec generates no matches.
-
-When a compspec indicates that directory name completion is desired,
-the programmable completion functions force Readline to append a slash
-to completed names which are symbolic links to directories, subject to
-the value of the @var{mark-directories} Readline variable, regardless
-of the setting of the @var{mark-symlinked-directories} Readline variable.
-
-@node Programmable Completion Builtins
-@section Programmable Completion Builtins
-@cindex completion builtins
-
-Two builtin commands are available to manipulate the programmable completion
-facilities.
-
-@table @code
-@item compgen
-@btindex compgen
-@example
-@code{compgen [@var{option}] [@var{word}]}
-@end example
-
-Generate possible completion matches for @var{word} according to
-the @var{option}s, which may be any option accepted by the
-@code{complete}
-builtin with the exception of @option{-p} and @option{-r}, and write
-the matches to the standard output.
-When using the @option{-F} or @option{-C} options, the various shell variables
-set by the programmable completion facilities, while available, will not
-have useful values.
-
-The matches will be generated in the same way as if the programmable
-completion code had generated them directly from a completion specification
-with the same flags.
-If @var{word} is specified, only those completions matching @var{word}
-will be displayed.
-
-The return value is true unless an invalid option is supplied, or no
-matches were generated.
-
-@item complete
-@btindex complete
-@example
-@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
-[-P @var{prefix}] [-S @var{suffix}] [-X @var{filterpat}] [-F @var{function}]
-[-C @var{command}] @var{name} [@var{name} @dots{}]}
-@code{complete -pr [@var{name} @dots{}]}
-@end example
-
-Specify how arguments to each @var{name} should be completed.
-If the @option{-p} option is supplied, or if no options are supplied, existing
-completion specifications are printed in a way that allows them to be
-reused as input.
-The @option{-r} option removes a completion specification for
-each @var{name}, or, if no @var{name}s are supplied, all
-completion specifications.
-
-The process of applying these completion specifications when word completion
-is attempted is described above (@pxref{Programmable Completion}).
-
-Other options, if specified, have the following meanings.
-The arguments to the @option{-G}, @option{-W}, and @option{-X} options
-(and, if necessary, the @option{-P} and @option{-S} options)
-should be quoted to protect them from expansion before the
-@code{complete} builtin is invoked.
-
-
-@table @code
-@item -o @var{comp-option}
-The @var{comp-option} controls several aspects of the compspec's behavior
-beyond the simple generation of completions.
-@var{comp-option} may be one of: 
-
-@table @code
-
-@item default
-Use Readline's default filename completion if the compspec generates
-no matches.
-
-@item dirnames
-Perform directory name completion if the compspec generates no matches.
-
-@item filenames
-Tell Readline that the compspec generates filenames, so it can perform any
-filename\-specific processing (like adding a slash to directory names or
-suppressing trailing spaces).  This option is intended to be used with
-shell functions specified with @option{-F}.
-
-@item nospace
-Tell Readline not to append a space (the default) to words completed at
-the end of the line.
-@end table
-
-@item -A @var{action}
-The @var{action} may be one of the following to generate a list of possible
-completions:
-
-@table @code
-@item alias
-Alias names.  May also be specified as @option{-a}.
-
-@item arrayvar
-Array variable names.
-
-@item binding
-Readline key binding names (@pxref{Bindable Readline Commands}).
-
-@item builtin
-Names of shell builtin commands.  May also be specified as @option{-b}.
-
-@item command
-Command names.  May also be specified as @option{-c}.
-
-@item directory
-Directory names.  May also be specified as @option{-d}.
-
-@item disabled
-Names of disabled shell builtins.
-
-@item enabled
-Names of enabled shell builtins.
-
-@item export
-Names of exported shell variables.  May also be specified as @option{-e}.
-
-@item file
-File names.  May also be specified as @option{-f}.
-
-@item function
-Names of shell functions.
-
-@item group
-Group names.  May also be specified as @option{-g}.
-
-@item helptopic
-Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}).
-
-@item hostname
-Hostnames, as taken from the file specified by the
-@env{HOSTFILE} shell variable (@pxref{Bash Variables}).
-
-@item job
-Job names, if job control is active.  May also be specified as @option{-j}.
-
-@item keyword
-Shell reserved words.  May also be specified as @option{-k}.
-
-@item running
-Names of running jobs, if job control is active.
-
-@item service
-Service names.  May also be specified as @option{-s}.
-
-@item setopt
-Valid arguments for the @option{-o} option to the @code{set} builtin
-(@pxref{The Set Builtin}).
-
-@item shopt
-Shell option names as accepted by the @code{shopt} builtin
-(@pxref{Bash Builtins}).
-
-@item signal
-Signal names.
-
-@item stopped
-Names of stopped jobs, if job control is active.
-
-@item user
-User names.  May also be specified as @option{-u}.
-
-@item variable
-Names of all shell variables.  May also be specified as @option{-v}.
-@end table
-
-@item -G @var{globpat}
-The filename expansion pattern @var{globpat} is expanded to generate
-the possible completions.
-
-@item -W @var{wordlist}
-The @var{wordlist} is split using the characters in the
-@env{IFS} special variable as delimiters, and each resultant word
-is expanded.
-The possible completions are the members of the resultant list which
-match the word being completed.
-
-@item -C @var{command}
-@var{command} is executed in a subshell environment, and its output is
-used as the possible completions.
-
-@item -F @var{function}
-The shell function @var{function} is executed in the current shell
-environment.
-When it finishes, the possible completions are retrieved from the value
-of the @env{COMPREPLY} array variable.
-
-@item -X @var{filterpat}
-@var{filterpat} is a pattern as used for filename expansion.
-It is applied to the list of possible completions generated by the
-preceding options and arguments, and each completion matching
-@var{filterpat} is removed from the list.
-A leading @samp{!} in @var{filterpat} negates the pattern; in this
-case, any completion not matching @var{filterpat} is removed.
-
-@item -P @var{prefix}
-@var{prefix} is added at the beginning of each possible completion
-after all other options have been applied.
-
-@item -S @var{suffix}
-@var{suffix} is appended to each possible completion
-after all other options have been applied.
-@end table
-
-The return value is true unless an invalid option is supplied, an option
-other than @option{-p} or @option{-r} is supplied without a @var{name}
-argument, an attempt is made to remove a completion specification for
-a @var{name} for which no specification exists, or
-an error occurs adding a completion specification.
-
-@end table
-@end ifset
diff --git a/lib/readline/doc/rluserman.aux b/lib/readline/doc/rluserman.aux
deleted file mode 100644 (file)
index 843583f..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-@xrdef{Command Line Editing-title}{Command Line Editing}
-@xrdef{Command Line Editing-snt}{Chapter@tie 1}
-@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
-@xrdef{Introduction and Notation-snt}{Section@tie 1.1}
-@xrdef{Readline Interaction-title}{Readline Interaction}
-@xrdef{Readline Interaction-snt}{Section@tie 1.2}
-@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
-@xrdef{Readline Bare Essentials-snt}{Section@tie 1.2.1}
-@xrdef{Command Line Editing-pg}{1}
-@xrdef{Introduction and Notation-pg}{1}
-@xrdef{Readline Interaction-pg}{1}
-@xrdef{Readline Bare Essentials-pg}{1}
-@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
-@xrdef{Readline Movement Commands-snt}{Section@tie 1.2.2}
-@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
-@xrdef{Readline Killing Commands-snt}{Section@tie 1.2.3}
-@xrdef{Readline Movement Commands-pg}{2}
-@xrdef{Readline Killing Commands-pg}{2}
-@xrdef{Readline Arguments-title}{Readline Arguments}
-@xrdef{Readline Arguments-snt}{Section@tie 1.2.4}
-@xrdef{Searching-title}{Searching for Commands in the History}
-@xrdef{Searching-snt}{Section@tie 1.2.5}
-@xrdef{Readline Arguments-pg}{3}
-@xrdef{Searching-pg}{3}
-@xrdef{Readline Init File-title}{Readline Init File}
-@xrdef{Readline Init File-snt}{Section@tie 1.3}
-@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
-@xrdef{Readline Init File Syntax-snt}{Section@tie 1.3.1}
-@xrdef{Readline Init File-pg}{4}
-@xrdef{Readline Init File Syntax-pg}{4}
-@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
-@xrdef{Conditional Init Constructs-snt}{Section@tie 1.3.2}
-@xrdef{Sample Init File-title}{Sample Init File}
-@xrdef{Sample Init File-snt}{Section@tie 1.3.3}
-@xrdef{Conditional Init Constructs-pg}{12}
-@xrdef{Sample Init File-pg}{12}
-@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
-@xrdef{Bindable Readline Commands-snt}{Section@tie 1.4}
-@xrdef{Commands For Moving-title}{Commands For Moving}
-@xrdef{Commands For Moving-snt}{Section@tie 1.4.1}
-@xrdef{Commands For History-title}{Commands For Manipulating The History}
-@xrdef{Commands For History-snt}{Section@tie 1.4.2}
-@xrdef{Bindable Readline Commands-pg}{15}
-@xrdef{Commands For Moving-pg}{15}
-@xrdef{Commands For History-pg}{15}
-@xrdef{Commands For Text-title}{Commands For Changing Text}
-@xrdef{Commands For Text-snt}{Section@tie 1.4.3}
-@xrdef{Commands For Text-pg}{17}
-@xrdef{Commands For Killing-title}{Killing And Yanking}
-@xrdef{Commands For Killing-snt}{Section@tie 1.4.4}
-@xrdef{Commands For Killing-pg}{18}
-@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
-@xrdef{Numeric Arguments-snt}{Section@tie 1.4.5}
-@xrdef{Commands For Completion-title}{Letting Readline Type For You}
-@xrdef{Commands For Completion-snt}{Section@tie 1.4.6}
-@xrdef{Numeric Arguments-pg}{19}
-@xrdef{Keyboard Macros-title}{Keyboard Macros}
-@xrdef{Keyboard Macros-snt}{Section@tie 1.4.7}
-@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
-@xrdef{Miscellaneous Commands-snt}{Section@tie 1.4.8}
-@xrdef{Commands For Completion-pg}{20}
-@xrdef{Keyboard Macros-pg}{20}
-@xrdef{Miscellaneous Commands-pg}{21}
-@xrdef{Readline vi Mode-title}{Readline vi Mode}
-@xrdef{Readline vi Mode-snt}{Section@tie 1.5}
-@xrdef{Readline vi Mode-pg}{22}
-@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
-@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char65{}}
-@xrdef{GNU Free Documentation License-pg}{23}
diff --git a/lib/readline/doc/rluserman.bt b/lib/readline/doc/rluserman.bt
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rluserman.cp b/lib/readline/doc/rluserman.cp
deleted file mode 100644 (file)
index a8eab78..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-\entry{interaction, readline}{1}{interaction, readline}
-\entry{notation, readline}{1}{notation, readline}
-\entry{command editing}{1}{command editing}
-\entry{editing command lines}{1}{editing command lines}
-\entry{killing text}{2}{killing text}
-\entry{yanking text}{2}{yanking text}
-\entry{kill ring}{2}{kill ring}
-\entry{initialization file, readline}{4}{initialization file, readline}
-\entry{variables, readline}{4}{variables, readline}
diff --git a/lib/readline/doc/rluserman.cps b/lib/readline/doc/rluserman.cps
deleted file mode 100644 (file)
index 5589192..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-\initial {C}
-\entry {command editing}{1}
-\initial {E}
-\entry {editing command lines}{1}
-\initial {I}
-\entry {initialization file, readline}{4}
-\entry {interaction, readline}{1}
-\initial {K}
-\entry {kill ring}{2}
-\entry {killing text}{2}
-\initial {N}
-\entry {notation, readline}{1}
-\initial {V}
-\entry {variables, readline}{4}
-\initial {Y}
-\entry {yanking text}{2}
diff --git a/lib/readline/doc/rluserman.dvi b/lib/readline/doc/rluserman.dvi
deleted file mode 100644 (file)
index dcf591d..0000000
Binary files a/lib/readline/doc/rluserman.dvi and /dev/null differ
diff --git a/lib/readline/doc/rluserman.fn b/lib/readline/doc/rluserman.fn
deleted file mode 100644 (file)
index b794a5e..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-\entry{beginning-of-line (C-a)}{15}{\code {beginning-of-line (C-a)}}
-\entry{end-of-line (C-e)}{15}{\code {end-of-line (C-e)}}
-\entry{forward-char (C-f)}{15}{\code {forward-char (C-f)}}
-\entry{backward-char (C-b)}{15}{\code {backward-char (C-b)}}
-\entry{forward-word (M-f)}{15}{\code {forward-word (M-f)}}
-\entry{backward-word (M-b)}{15}{\code {backward-word (M-b)}}
-\entry{clear-screen (C-l)}{15}{\code {clear-screen (C-l)}}
-\entry{redraw-current-line ()}{15}{\code {redraw-current-line ()}}
-\entry{accept-line (Newline or Return)}{15}{\code {accept-line (Newline or Return)}}
-\entry{previous-history (C-p)}{15}{\code {previous-history (C-p)}}
-\entry{next-history (C-n)}{16}{\code {next-history (C-n)}}
-\entry{beginning-of-history (M-<)}{16}{\code {beginning-of-history (M-<)}}
-\entry{end-of-history (M->)}{16}{\code {end-of-history (M->)}}
-\entry{reverse-search-history (C-r)}{16}{\code {reverse-search-history (C-r)}}
-\entry{forward-search-history (C-s)}{16}{\code {forward-search-history (C-s)}}
-\entry{non-incremental-reverse-search-history (M-p)}{16}{\code {non-incremental-reverse-search-history (M-p)}}
-\entry{non-incremental-forward-search-history (M-n)}{16}{\code {non-incremental-forward-search-history (M-n)}}
-\entry{history-search-forward ()}{16}{\code {history-search-forward ()}}
-\entry{history-search-backward ()}{16}{\code {history-search-backward ()}}
-\entry{history-substr-search-forward ()}{16}{\code {history-substr-search-forward ()}}
-\entry{history-substr-search-backward ()}{16}{\code {history-substr-search-backward ()}}
-\entry{yank-nth-arg (M-C-y)}{16}{\code {yank-nth-arg (M-C-y)}}
-\entry{yank-last-arg (M-. or M-_)}{17}{\code {yank-last-arg (M-. or M-_)}}
-\entry{end-of-file (usually C-d)}{17}{\code {\i {end-of-file} (usually C-d)}}
-\entry{delete-char (C-d)}{17}{\code {delete-char (C-d)}}
-\entry{backward-delete-char (Rubout)}{17}{\code {backward-delete-char (Rubout)}}
-\entry{forward-backward-delete-char ()}{17}{\code {forward-backward-delete-char ()}}
-\entry{quoted-insert (C-q or C-v)}{17}{\code {quoted-insert (C-q or C-v)}}
-\entry{tab-insert (M-TAB)}{17}{\code {tab-insert (M-\key {TAB})}}
-\entry{self-insert (a, b, A, 1, !, ...{})}{17}{\code {self-insert (a, b, A, 1, !, \dots {})}}
-\entry{bracketed-paste-begin ()}{17}{\code {bracketed-paste-begin ()}}
-\entry{transpose-chars (C-t)}{18}{\code {transpose-chars (C-t)}}
-\entry{transpose-words (M-t)}{18}{\code {transpose-words (M-t)}}
-\entry{upcase-word (M-u)}{18}{\code {upcase-word (M-u)}}
-\entry{downcase-word (M-l)}{18}{\code {downcase-word (M-l)}}
-\entry{capitalize-word (M-c)}{18}{\code {capitalize-word (M-c)}}
-\entry{overwrite-mode ()}{18}{\code {overwrite-mode ()}}
-\entry{kill-line (C-k)}{18}{\code {kill-line (C-k)}}
-\entry{backward-kill-line (C-x Rubout)}{18}{\code {backward-kill-line (C-x Rubout)}}
-\entry{unix-line-discard (C-u)}{18}{\code {unix-line-discard (C-u)}}
-\entry{kill-whole-line ()}{18}{\code {kill-whole-line ()}}
-\entry{kill-word (M-d)}{18}{\code {kill-word (M-d)}}
-\entry{backward-kill-word (M-DEL)}{19}{\code {backward-kill-word (M-\key {DEL})}}
-\entry{unix-word-rubout (C-w)}{19}{\code {unix-word-rubout (C-w)}}
-\entry{unix-filename-rubout ()}{19}{\code {unix-filename-rubout ()}}
-\entry{delete-horizontal-space ()}{19}{\code {delete-horizontal-space ()}}
-\entry{kill-region ()}{19}{\code {kill-region ()}}
-\entry{copy-region-as-kill ()}{19}{\code {copy-region-as-kill ()}}
-\entry{copy-backward-word ()}{19}{\code {copy-backward-word ()}}
-\entry{copy-forward-word ()}{19}{\code {copy-forward-word ()}}
-\entry{yank (C-y)}{19}{\code {yank (C-y)}}
-\entry{yank-pop (M-y)}{19}{\code {yank-pop (M-y)}}
-\entry{digit-argument (M-0, M-1, ...{} M--)}{19}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
-\entry{universal-argument ()}{19}{\code {universal-argument ()}}
-\entry{complete (TAB)}{20}{\code {complete (\key {TAB})}}
-\entry{possible-completions (M-?)}{20}{\code {possible-completions (M-?)}}
-\entry{insert-completions (M-*)}{20}{\code {insert-completions (M-*)}}
-\entry{menu-complete ()}{20}{\code {menu-complete ()}}
-\entry{menu-complete-backward ()}{20}{\code {menu-complete-backward ()}}
-\entry{delete-char-or-list ()}{20}{\code {delete-char-or-list ()}}
-\entry{start-kbd-macro (C-x ()}{20}{\code {start-kbd-macro (C-x ()}}
-\entry{end-kbd-macro (C-x ))}{20}{\code {end-kbd-macro (C-x ))}}
-\entry{call-last-kbd-macro (C-x e)}{20}{\code {call-last-kbd-macro (C-x e)}}
-\entry{print-last-kbd-macro ()}{20}{\code {print-last-kbd-macro ()}}
-\entry{re-read-init-file (C-x C-r)}{21}{\code {re-read-init-file (C-x C-r)}}
-\entry{abort (C-g)}{21}{\code {abort (C-g)}}
-\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{21}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}
-\entry{prefix-meta (ESC)}{21}{\code {prefix-meta (\key {ESC})}}
-\entry{undo (C-_ or C-x C-u)}{21}{\code {undo (C-_ or C-x C-u)}}
-\entry{revert-line (M-r)}{21}{\code {revert-line (M-r)}}
-\entry{tilde-expand (M-~)}{21}{\code {tilde-expand (M-~)}}
-\entry{set-mark (C-@)}{21}{\code {set-mark (C-@)}}
-\entry{exchange-point-and-mark (C-x C-x)}{21}{\code {exchange-point-and-mark (C-x C-x)}}
-\entry{character-search (C-])}{21}{\code {character-search (C-])}}
-\entry{character-search-backward (M-C-])}{21}{\code {character-search-backward (M-C-])}}
-\entry{skip-csi-sequence ()}{21}{\code {skip-csi-sequence ()}}
-\entry{insert-comment (M-#)}{21}{\code {insert-comment (M-#)}}
-\entry{dump-functions ()}{22}{\code {dump-functions ()}}
-\entry{dump-variables ()}{22}{\code {dump-variables ()}}
-\entry{dump-macros ()}{22}{\code {dump-macros ()}}
-\entry{emacs-editing-mode (C-e)}{22}{\code {emacs-editing-mode (C-e)}}
-\entry{vi-editing-mode (M-C-j)}{22}{\code {vi-editing-mode (M-C-j)}}
diff --git a/lib/readline/doc/rluserman.fns b/lib/readline/doc/rluserman.fns
deleted file mode 100644 (file)
index b748260..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-\initial {A}
-\entry {\code {abort (C-g)}}{21}
-\entry {\code {accept-line (Newline or Return)}}{15}
-\initial {B}
-\entry {\code {backward-char (C-b)}}{15}
-\entry {\code {backward-delete-char (Rubout)}}{17}
-\entry {\code {backward-kill-line (C-x Rubout)}}{18}
-\entry {\code {backward-kill-word (M-\key {DEL})}}{19}
-\entry {\code {backward-word (M-b)}}{15}
-\entry {\code {beginning-of-history (M-<)}}{16}
-\entry {\code {beginning-of-line (C-a)}}{15}
-\entry {\code {bracketed-paste-begin ()}}{17}
-\initial {C}
-\entry {\code {call-last-kbd-macro (C-x e)}}{20}
-\entry {\code {capitalize-word (M-c)}}{18}
-\entry {\code {character-search (C-])}}{21}
-\entry {\code {character-search-backward (M-C-])}}{21}
-\entry {\code {clear-screen (C-l)}}{15}
-\entry {\code {complete (\key {TAB})}}{20}
-\entry {\code {copy-backward-word ()}}{19}
-\entry {\code {copy-forward-word ()}}{19}
-\entry {\code {copy-region-as-kill ()}}{19}
-\initial {D}
-\entry {\code {delete-char (C-d)}}{17}
-\entry {\code {delete-char-or-list ()}}{20}
-\entry {\code {delete-horizontal-space ()}}{19}
-\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{19}
-\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{21}
-\entry {\code {downcase-word (M-l)}}{18}
-\entry {\code {dump-functions ()}}{22}
-\entry {\code {dump-macros ()}}{22}
-\entry {\code {dump-variables ()}}{22}
-\initial {E}
-\entry {\code {emacs-editing-mode (C-e)}}{22}
-\entry {\code {end-kbd-macro (C-x ))}}{20}
-\entry {\code {\i {end-of-file} (usually C-d)}}{17}
-\entry {\code {end-of-history (M->)}}{16}
-\entry {\code {end-of-line (C-e)}}{15}
-\entry {\code {exchange-point-and-mark (C-x C-x)}}{21}
-\initial {F}
-\entry {\code {forward-backward-delete-char ()}}{17}
-\entry {\code {forward-char (C-f)}}{15}
-\entry {\code {forward-search-history (C-s)}}{16}
-\entry {\code {forward-word (M-f)}}{15}
-\initial {H}
-\entry {\code {history-search-backward ()}}{16}
-\entry {\code {history-search-forward ()}}{16}
-\entry {\code {history-substr-search-backward ()}}{16}
-\entry {\code {history-substr-search-forward ()}}{16}
-\initial {I}
-\entry {\code {insert-comment (M-#)}}{21}
-\entry {\code {insert-completions (M-*)}}{20}
-\initial {K}
-\entry {\code {kill-line (C-k)}}{18}
-\entry {\code {kill-region ()}}{19}
-\entry {\code {kill-whole-line ()}}{18}
-\entry {\code {kill-word (M-d)}}{18}
-\initial {M}
-\entry {\code {menu-complete ()}}{20}
-\entry {\code {menu-complete-backward ()}}{20}
-\initial {N}
-\entry {\code {next-history (C-n)}}{16}
-\entry {\code {non-incremental-forward-search-history (M-n)}}{16}
-\entry {\code {non-incremental-reverse-search-history (M-p)}}{16}
-\initial {O}
-\entry {\code {overwrite-mode ()}}{18}
-\initial {P}
-\entry {\code {possible-completions (M-?)}}{20}
-\entry {\code {prefix-meta (\key {ESC})}}{21}
-\entry {\code {previous-history (C-p)}}{15}
-\entry {\code {print-last-kbd-macro ()}}{20}
-\initial {Q}
-\entry {\code {quoted-insert (C-q or C-v)}}{17}
-\initial {R}
-\entry {\code {re-read-init-file (C-x C-r)}}{21}
-\entry {\code {redraw-current-line ()}}{15}
-\entry {\code {reverse-search-history (C-r)}}{16}
-\entry {\code {revert-line (M-r)}}{21}
-\initial {S}
-\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{17}
-\entry {\code {set-mark (C-@)}}{21}
-\entry {\code {skip-csi-sequence ()}}{21}
-\entry {\code {start-kbd-macro (C-x ()}}{20}
-\initial {T}
-\entry {\code {tab-insert (M-\key {TAB})}}{17}
-\entry {\code {tilde-expand (M-~)}}{21}
-\entry {\code {transpose-chars (C-t)}}{18}
-\entry {\code {transpose-words (M-t)}}{18}
-\initial {U}
-\entry {\code {undo (C-_ or C-x C-u)}}{21}
-\entry {\code {universal-argument ()}}{19}
-\entry {\code {unix-filename-rubout ()}}{19}
-\entry {\code {unix-line-discard (C-u)}}{18}
-\entry {\code {unix-word-rubout (C-w)}}{19}
-\entry {\code {upcase-word (M-u)}}{18}
-\initial {V}
-\entry {\code {vi-editing-mode (M-C-j)}}{22}
-\initial {Y}
-\entry {\code {yank (C-y)}}{19}
-\entry {\code {yank-last-arg (M-. or M-_)}}{17}
-\entry {\code {yank-nth-arg (M-C-y)}}{16}
-\entry {\code {yank-pop (M-y)}}{19}
diff --git a/lib/readline/doc/rluserman.html b/lib/readline/doc/rluserman.html
deleted file mode 100644 (file)
index 728500b..0000000
+++ /dev/null
@@ -1,3081 +0,0 @@
-<HTML>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on July, 1  2015 by texi2html 1.64 -->
-<!-- 
-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>
--->
-<HEAD>
-<TITLE>GNU Readline Library: </TITLE>
-
-<META NAME="description" CONTENT="GNU Readline Library: ">
-<META NAME="keywords" CONTENT="GNU Readline Library: ">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-<META NAME="Generator" CONTENT="texi2html 1.64">
-
-</HEAD>
-
-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
-
-<A NAME="SEC_Top"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>GNU Readline Library</H1></P><P>
-
-This document describes the end user interface of the GNU Readline Library,
-a utility which aids in the consistency of user interface across discrete
-programs which provide a command line interface.
-The Readline home page is <A HREF="http://www.gnu.org/software/readline/">http://www.gnu.org/software/readline/</A>.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC23">A. GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<HR SIZE=1>
-<A NAME="SEC1"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<A NAME="Command Line Editing"></A>
-<H1> 1. Command Line Editing </H1>
-<!--docid::SEC1::-->
-<P>
-
-This chapter describes the basic features of the GNU
-command line editing interface.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
-                               available for binding</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
-                               behave like the vi editor.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Introduction and Notation"></A>
-<HR SIZE="6">
-<A NAME="SEC2"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.1 Introduction to Line Editing </H2>
-<!--docid::SEC2::-->
-<P>
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-</P><P>
-
-The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
-produced when the <KBD>k</KBD> key is pressed while the Control key
-is depressed.
-</P><P>
-
-The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
-key is pressed.
-The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
-On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
-the space bar), the <KBD>ALT</KBD> on the left side is generally set to
-work as a Meta key.
-The <KBD>ALT</KBD> key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-</P><P>
-
-If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
-<EM>first</EM>, and then typing <KBD>k</KBD>.
-Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
-</P><P>
-
-The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
-character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
-</P><P>
-
-In addition, several keys have their own names.  Specifically,
-<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
-stand for themselves when seen in this text, or in an init file
-(see section <A HREF="rluserman.html#SEC9">1.3 Readline Init File</A>).
-If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
-produce the desired character.
-The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
-some keyboards.
-</P><P>
-
-<A NAME="Readline Interaction"></A>
-<HR SIZE="6">
-<A NAME="SEC3"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.2 Readline Interaction </H2>
-<!--docid::SEC3::-->
-<P>
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press <KBD>RET</KBD>.  You do not have to be at the
-end of the line to press <KBD>RET</KBD>; the entire line is accepted
-regardless of the location of the cursor within the line.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Bare Essentials"></A>
-<HR SIZE="6">
-<A NAME="SEC4"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.1 Readline Bare Essentials </H3>
-<!--docid::SEC4::-->
-<P>
-
-In order to enter characters into the line, simply type them.  The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-</P><P>
-
-Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters.  In
-that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
-correct your mistake.  Afterwards, you can move the cursor to the right
-with <KBD>C-f</KBD>.
-</P><P>
-
-When you add text in the middle of a line, you will notice that characters
-to the right of the cursor are `pushed over' to make room for the text
-that you have inserted.  Likewise, when you delete text behind the cursor,
-characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text.  A list of the bare
-essentials for editing the text of an input line follows.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-b</KBD>
-<DD>Move back one character.
-<DT><KBD>C-f</KBD>
-<DD>Move forward one character.
-<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
-<DD>Delete the character to the left of the cursor.
-<DT><KBD>C-d</KBD>
-<DD>Delete the character underneath the cursor.
-<DT>Printing characters
-<DD>Insert the character into the line at the cursor.
-<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
-<DD>Undo the last editing command.  You can undo all the way back to an
-empty line.
-</DL>
-<P>
-
-(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
-delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
-to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
-than the character to the left of the cursor.)
-</P><P>
-
-<A NAME="Readline Movement Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC5"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.2 Readline Movement Commands </H3>
-<!--docid::SEC5::-->
-<P>
-
-The above table describes the most basic keystrokes that you need
-in order to do editing of the input line.  For your convenience, many
-other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
-<KBD>C-d</KBD>, and <KBD>DEL</KBD>.  Here are some commands for moving more rapidly
-about the line.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-a</KBD>
-<DD>Move to the start of the line.
-<DT><KBD>C-e</KBD>
-<DD>Move to the end of the line.
-<DT><KBD>M-f</KBD>
-<DD>Move forward a word, where a word is composed of letters and digits.
-<DT><KBD>M-b</KBD>
-<DD>Move backward a word.
-<DT><KBD>C-l</KBD>
-<DD>Clear the screen, reprinting the current line at the top.
-</DL>
-<P>
-
-Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
-forward a word.  It is a loose convention that control keystrokes
-operate on characters while meta keystrokes operate on words.
-</P><P>
-
-<A NAME="Readline Killing Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC6"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.3 Readline Killing Commands </H3>
-<!--docid::SEC6::-->
-<P>
-
-<A NAME="IDX1"></A>
-<A NAME="IDX2"></A>
-</P><P>
-
-<EM>Killing</EM> text means to delete the text from the line, but to save
-it away for later use, usually by <EM>yanking</EM> (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-</P><P>
-
-If the description for a command says that it `kills' text, then you can
-be sure that you can get the text back in a different (or the same)
-place later.
-</P><P>
-
-When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill
-ring is not line specific; the text that you killed on a previously
-typed line is available to be yanked back later, when you are typing
-another line.
-<A NAME="IDX3"></A>
-</P><P>
-
-Here is the list of commands for killing text.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-k</KBD>
-<DD>Kill the text from the current cursor position to the end of the line.
-<P>
-
-<DT><KBD>M-d</KBD>
-<DD>Kill from the cursor to the end of the current word, or, if between
-words, to the end of the next word.
-Word boundaries are the same as those used by <KBD>M-f</KBD>.
-<P>
-
-<DT><KBD>M-<KBD>DEL</KBD></KBD>
-<DD>Kill from the cursor the start of the current word, or, if between
-words, to the start of the previous word.
-Word boundaries are the same as those used by <KBD>M-b</KBD>.
-<P>
-
-<DT><KBD>C-w</KBD>
-<DD>Kill from the cursor to the previous whitespace.  This is different than
-<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
-<P>
-
-</DL>
-<P>
-
-Here is how to <EM>yank</EM> the text back into the line.  Yanking
-means to copy the most-recently-killed text from the kill buffer.
-</P><P>
-
-<DL COMPACT>
-<DT><KBD>C-y</KBD>
-<DD>Yank the most recently killed text back into the buffer at the cursor.
-<P>
-
-<DT><KBD>M-y</KBD>
-<DD>Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
-</DL>
-<P>
-
-<A NAME="Readline Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC7"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.4 Readline Arguments </H3>
-<!--docid::SEC7::-->
-<P>
-
-You can pass numeric arguments to Readline commands.  Sometimes the
-argument acts as a repeat count, other times it is the <I>sign</I> of the
-argument that is significant.  If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
-start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
-</P><P>
-
-The general way to pass numeric arguments to a command is to type meta
-digits before the command.  If the first `digit' typed is a minus
-sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative.  Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command.  For example, to give
-the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
-which will delete the next ten characters on the input line.
-</P><P>
-
-<A NAME="Searching"></A>
-<HR SIZE="6">
-<A NAME="SEC8"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.2.5 Searching for Commands in the History </H3>
-<!--docid::SEC8::-->
-<P>
-
-Readline provides commands for searching through the command history
-for lines containing a specified string.
-There are two search modes:  <EM>incremental</EM> and <EM>non-incremental</EM>.
-</P><P>
-
-Incremental searches begin before the user has finished typing the
-search string.
-As each character of the search string is typed, Readline displays
-the next entry from the history matching the string typed so far.
-An incremental search requires only as many characters as needed to
-find the desired history entry.
-To search backward in the history for a particular string, type
-<KBD>C-r</KBD>.  Typing <KBD>C-s</KBD> searches forward through the history.
-The characters present in the value of the <CODE>isearch-terminators</CODE> variable
-are used to terminate an incremental search.
-If that variable has not been assigned a value, the <KBD>ESC</KBD> and
-<KBD>C-J</KBD> characters will terminate an incremental search.
-<KBD>C-g</KBD> will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the
-search string becomes the current line.
-</P><P>
-
-To find other matching entries in the history list, type <KBD>C-r</KBD> or
-<KBD>C-s</KBD> as appropriate.
-This will search backward or forward in the history for the next
-entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a <KBD>RET</KBD> will terminate the search and accept
-the line, thereby executing the command from the history list.
-A movement command will terminate the search, make the last line found
-the current line, and begin editing.
-</P><P>
-
-Readline remembers the last incremental search string.  If two
-<KBD>C-r</KBD>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
-</P><P>
-
-Non-incremental searches read the entire search string before starting
-to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
-</P><P>
-
-<A NAME="Readline Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC9"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.3 Readline Init File </H2>
-<!--docid::SEC9::-->
-<P>
-
-Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible to use a different set
-of keybindings.
-Any user can customize programs that use Readline by putting
-commands in an <EM>inputrc</EM> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the environment variable <CODE>INPUTRC</CODE>.  If
-that variable is unset, the default is <TT>`~/.inputrc'</TT>.  If that
-file does not exist or cannot be read, the ultimate default is
-<TT>`/etc/inputrc'</TT>.
-</P><P>
-
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-</P><P>
-
-In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-</P><P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
-</TABLE>
-
-<br>
-<TABLE BORDER=0 CELLSPACING=0>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-<A NAME="Readline Init File Syntax"></A>
-<HR SIZE="6">
-<A NAME="SEC10"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.1 Readline Init File Syntax </H3>
-<!--docid::SEC10::-->
-<P>
-
-There are only a few basic constructs allowed in the
-Readline init file.  Blank lines are ignored.
-Lines beginning with a <SAMP>`#'</SAMP> are comments.
-Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
-constructs (see section <A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>).  Other lines
-denote variable settings and key bindings.
-</P><P>
-
-<DL COMPACT>
-<DT>Variable Settings
-<DD>You can modify the run-time behavior of Readline by
-altering the values of variables in Readline
-using the <CODE>set</CODE> command within the init file.
-The syntax is simple:
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
-</pre></td></tr></table></P><P>
-
-Here, for example, is how to
-change from the default Emacs-like key binding to use
-<CODE>vi</CODE> line editing commands:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
-</pre></td></tr></table></P><P>
-
-Variable names and values, where appropriate, are recognized without regard
-to case.  Unrecognized variable names are ignored.
-</P><P>
-
-Boolean variables (those that can be set to on or off) are set to on if
-the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1.  Any other
-value results in the variable being set to off.
-</P><P>
-
-A great deal of run-time behavior is changeable with the following
-variables.
-</P><P>
-
-<A NAME="IDX4"></A>
-<DL COMPACT>
-
-<DT><CODE>bell-style</CODE>
-<DD><A NAME="IDX5"></A>
-Controls what happens when Readline wants to ring the terminal bell.
-If set to <SAMP>`none'</SAMP>, Readline never rings the bell.  If set to
-<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
-If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
-the terminal's bell.
-<P>
-
-<DT><CODE>bind-tty-special-chars</CODE>
-<DD><A NAME="IDX6"></A>
-If set to <SAMP>`on'</SAMP> (the default), Readline attempts to bind the control
-characters   treated specially by the kernel's terminal driver to their
-Readline equivalents.
-<P>
-
-<DT><CODE>blink-matching-paren</CODE>
-<DD><A NAME="IDX7"></A>
-If set to <SAMP>`on'</SAMP>, Readline attempts to briefly move the cursor to an
-opening parenthesis when a closing parenthesis is inserted.  The default
-is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>colored-completion-prefix</CODE>
-<DD><A NAME="IDX8"></A>
-If set to <SAMP>`on'</SAMP>, when listing completions, Readline displays the
-common prefix of the set of possible completions using a different color.
-The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
-environment variable.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>colored-stats</CODE>
-<DD><A NAME="IDX9"></A>
-If set to <SAMP>`on'</SAMP>, Readline displays possible completions using different
-colors to indicate their file type.
-The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
-environment variable.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>comment-begin</CODE>
-<DD><A NAME="IDX10"></A>
-The string to insert at the beginning of the line when the
-<CODE>insert-comment</CODE> command is executed.  The default value
-is <CODE>"#"</CODE>.
-<P>
-
-<DT><CODE>completion-display-width</CODE>
-<DD><A NAME="IDX11"></A>
-The number of screen columns used to display possible matches
-when performing completion.
-The value is ignored if it is less than 0 or greater than the terminal
-screen width.
-A value of 0 will cause matches to be displayed one per line.
-The default value is -1.
-<P>
-
-<DT><CODE>completion-ignore-case</CODE>
-<DD><A NAME="IDX12"></A>
-If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>completion-map-case</CODE>
-<DD><A NAME="IDX13"></A>
-If set to <SAMP>`on'</SAMP>, and <VAR>completion-ignore-case</VAR> is enabled, Readline
-treats hyphens (<SAMP>`-'</SAMP>) and underscores (<SAMP>`_'</SAMP>) as equivalent when
-performing case-insensitive filename matching and completion.
-<P>
-
-<DT><CODE>completion-prefix-display-length</CODE>
-<DD><A NAME="IDX14"></A>
-The length in characters of the common prefix of a list of possible
-completions that is displayed without modification.  When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
-<P>
-
-<DT><CODE>completion-query-items</CODE>
-<DD><A NAME="IDX15"></A>
-The number of possible completions that determines when the user is
-asked whether the list of possibilities should be displayed.
-If the number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-A negative value means Readline should never ask.
-The default limit is <CODE>100</CODE>.
-<P>
-
-<DT><CODE>convert-meta</CODE>
-<DD><A NAME="IDX16"></A>
-If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
-eighth bit set to an ASCII key sequence by stripping the eighth
-bit and prefixing an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence.  The default value is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>disable-completion</CODE>
-<DD><A NAME="IDX17"></A>
-If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
-Completion  characters will be inserted into the line as if they had
-been mapped to <CODE>self-insert</CODE>.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>editing-mode</CODE>
-<DD><A NAME="IDX18"></A>
-The <CODE>editing-mode</CODE> variable controls which default set of
-key bindings is used.  By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs.  This variable can be
-set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
-<P>
-
-<DT><CODE>emacs-mode-string</CODE>
-<DD><A NAME="IDX19"></A>
-This string is displayed immediately before the last line of the primary
-prompt when emacs editing mode is active.  The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-The default is <SAMP>`@'</SAMP>.
-<P>
-
-<DT><CODE>echo-control-characters</CODE>
-<DD><A NAME="IDX20"></A>
-When set to <SAMP>`on'</SAMP>, on operating systems that indicate they support it,
-readline echoes a character corresponding to a signal generated from the
-keyboard.  The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>enable-bracketed-paste</CODE>
-<DD><A NAME="IDX21"></A>
-When set to <SAMP>`On'</SAMP>, Readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard.  This can prevent pasted characters
-from being interpreted as editing commands.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>enable-keypad</CODE>
-<DD><A NAME="IDX22"></A>
-When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
-keypad when it is called.  Some systems need this to enable the
-arrow keys.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>enable-meta-key</CODE>
-<DD>When set to <SAMP>`on'</SAMP>, Readline will try to enable any meta modifier
-key the terminal claims to support when it is called.  On many terminals,
-the meta key is used to send eight-bit characters.
-The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>expand-tilde</CODE>
-<DD><A NAME="IDX23"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>history-preserve-point</CODE>
-<DD><A NAME="IDX24"></A>
-If set to <SAMP>`on'</SAMP>, the history code attempts to place the point (the
-current cursor position) at the
-same location on each history line retrieved with <CODE>previous-history</CODE>
-or <CODE>next-history</CODE>.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>history-size</CODE>
-<DD><A NAME="IDX25"></A>
-Set the maximum number of history entries saved in the history list.
-If set to zero, any existing history entries are deleted and no new entries
-are saved.
-If set to a value less than zero, the number of history entries is not
-limited.
-By default, the number of history entries is not limited.
-<P>
-
-<DT><CODE>horizontal-scroll-mode</CODE>
-<DD><A NAME="IDX26"></A>
-This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>.  Setting it
-to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line.  By default,
-this variable is set to <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>input-meta</CODE>
-<DD><A NAME="IDX27"></A>
-<A NAME="IDX28"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support.  The
-default value is <SAMP>`off'</SAMP>.  The name <CODE>meta-flag</CODE> is a
-synonym for this variable.
-<P>
-
-<DT><CODE>isearch-terminators</CODE>
-<DD><A NAME="IDX29"></A>
-The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see section <A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>).
-If this variable has not been given a value, the characters <KBD>ESC</KBD> and
-<KBD>C-J</KBD> will terminate an incremental search.
-<P>
-
-<DT><CODE>keymap</CODE>
-<DD><A NAME="IDX30"></A>
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
-<CODE>emacs</CODE>,
-<CODE>emacs-standard</CODE>,
-<CODE>emacs-meta</CODE>,
-<CODE>emacs-ctlx</CODE>,
-<CODE>vi</CODE>,
-<CODE>vi-move</CODE>,
-<CODE>vi-command</CODE>, and
-<CODE>vi-insert</CODE>.
-<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
-equivalent to <CODE>emacs-standard</CODE>.  The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
-default keymap.
-<P>
-
-<DT><CODE>keyseq-timeout</CODE>
-<DD>Specifies the duration Readline will wait for a character when reading an
-ambiguous key sequence (one that can form a complete key sequence using
-the input read so far, or can take additional input to complete a longer
-key sequence).
-If no input is received within the timeout, Readline will use the shorter
-but complete key sequence.
-Readline uses this value to determine whether or not input is
-available on the current input source (<CODE>rl_instream</CODE> by default).
-The value is specified in milliseconds, so a value of 1000 means that
-Readline will wait one second for additional input.
-If this variable is set to a value less than or equal to zero, or to a
-non-numeric value, Readline will wait until another key is pressed to
-decide which key sequence to complete.
-The default value is <CODE>500</CODE>.
-<P>
-
-<DT><CODE>mark-directories</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
-appended.  The default is <SAMP>`on'</SAMP>.
-<P>
-
-<DT><CODE>mark-modified-lines</CODE>
-<DD><A NAME="IDX31"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
-asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
-This variable is <SAMP>`off'</SAMP> by default.
-<P>
-
-<DT><CODE>mark-symlinked-directories</CODE>
-<DD><A NAME="IDX32"></A>
-If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<CODE>mark-directories</CODE>).
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>match-hidden-files</CODE>
-<DD><A NAME="IDX33"></A>
-This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
-names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
-completion.
-If set to <SAMP>`off'</SAMP>, the leading <SAMP>`.'</SAMP> must be
-supplied by the user in the filename to be completed.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>menu-complete-display-prefix</CODE>
-<DD><A NAME="IDX34"></A>
-If set to <SAMP>`on'</SAMP>, menu completion displays the common prefix of the
-list of possible completions (which may be empty) before cycling through
-the list.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>output-meta</CODE>
-<DD><A NAME="IDX35"></A>
-If set to <SAMP>`on'</SAMP>, Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>page-completions</CODE>
-<DD><A NAME="IDX36"></A>
-If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
-to display a screenful of possible completions at a time.
-This variable is <SAMP>`on'</SAMP> by default.
-<P>
-
-<DT><CODE>print-completions-horizontally</CODE>
-<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>revert-all-at-newline</CODE>
-<DD><A NAME="IDX37"></A>
-If set to <SAMP>`on'</SAMP>, Readline will undo all changes to history lines
-before returning when <CODE>accept-line</CODE> is executed.  By default,
-history lines may be modified and retain individual undo lists across
-calls to <CODE>readline</CODE>.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-all-if-ambiguous</CODE>
-<DD><A NAME="IDX38"></A>
-This alters the default behavior of the completion functions.  If
-set to <SAMP>`on'</SAMP>, 
-words which have more than one possible completion cause the
-matches to be listed immediately instead of ringing the bell.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-all-if-unmodified</CODE>
-<DD><A NAME="IDX39"></A>
-This alters the default behavior of the completion functions in
-a fashion similar to <VAR>show-all-if-ambiguous</VAR>.
-If set to <SAMP>`on'</SAMP>, 
-words which have more than one possible completion without any
-possible partial completion (the possible completions don't share
-a common prefix) cause the matches to be listed immediately instead
-of ringing the bell.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>show-mode-in-prompt</CODE>
-<DD><A NAME="IDX40"></A>
-If set to <SAMP>`on'</SAMP>, add a character to the beginning of the prompt
-indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>skip-completed-text</CODE>
-<DD><A NAME="IDX41"></A>
-If set to <SAMP>`on'</SAMP>, this alters the default completion behavior when
-inserting a single match into the line.  It's only active when
-performing completion in the middle of a word.  If enabled, readline
-does not insert characters from the completion that match characters
-after point in the word being completed, so portions of the word
-following the cursor are not duplicated.
-For instance, if this is enabled, attempting completion when the cursor
-is after the <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in <SAMP>`Makefile'</SAMP>
-rather than <SAMP>`Makefilefile'</SAMP>, assuming there is a single possible
-completion.
-The default value is <SAMP>`off'</SAMP>.
-<P>
-
-<DT><CODE>vi-cmd-mode-string</CODE>
-<DD><A NAME="IDX42"></A>
-This string is displayed immediately before the last line of the primary
-prompt when vi editing mode is active and in command mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-The default is <SAMP>`(cmd)'</SAMP>.
-<P>
-
-<DT><CODE>vi-ins-mode-string</CODE>
-<DD><A NAME="IDX43"></A>
-This string is displayed immediately before the last line of the primary
-prompt when vi editing mode is active and in insertion mode.
-The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-The default is <SAMP>`(ins)'</SAMP>.
-<P>
-
-<DT><CODE>visible-stats</CODE>
-<DD><A NAME="IDX44"></A>
-If set to <SAMP>`on'</SAMP>, a character denoting a file's type
-is appended to the filename when listing possible
-completions.  The default is <SAMP>`off'</SAMP>.
-<P>
-
-</DL>
-<P>
-
-<DT>Key Bindings
-<DD>The syntax for controlling key bindings in the init file is
-simple.  First you need to find the name of the command that you
-want to change.  The following sections contain tables of the command
-name, the default keybinding, if any, and a short description of what
-the command does.
-<P>
-
-Once you know the name of the command, simply place on a line
-in the init file the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command.
-There can be no space between the key name and the colon -- that will be
-interpreted as part of the key name.
-The name of the key can be expressed in different ways, depending on
-what you find most comfortable.
-</P><P>
-
-In addition to command names, readline allows keys to be bound
-to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
-</P><P>
-
-<DL COMPACT>
-<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyname</VAR> is the name of a key spelled out in English.  For example:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "&#62; output"
-</pre></td></tr></table><P>
-
-In the above example, <KBD>C-u</KBD> is bound to the function
-<CODE>universal-argument</CODE>,
-<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
-<KBD>C-o</KBD> is bound to run the macro
-expressed on the right hand side (that is, to insert the text
-<SAMP>`&#62; output'</SAMP> into the line).
-</P><P>
-
-A number of symbolic character names are recognized while
-processing this key binding syntax:
-<VAR>DEL</VAR>,
-<VAR>ESC</VAR>,
-<VAR>ESCAPE</VAR>,
-<VAR>LFD</VAR>,
-<VAR>NEWLINE</VAR>,
-<VAR>RET</VAR>,
-<VAR>RETURN</VAR>,
-<VAR>RUBOUT</VAR>,
-<VAR>SPACE</VAR>,
-<VAR>SPC</VAR>,
-and
-<VAR>TAB</VAR>.
-</P><P>
-
-<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
-<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
-denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes.  Some GNU Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-<P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-</pre></td></tr></table></P><P>
-
-In the above example, <KBD>C-u</KBD> is again bound to the function
-<CODE>universal-argument</CODE> (just as it was in the first example),
-<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
-and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
-the text <SAMP>`Function Key 1'</SAMP>.
-</P><P>
-
-</DL>
-<P>
-
-The following GNU Emacs style escape sequences are available when
-specifying key sequences:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE><KBD>\C-</KBD></CODE>
-<DD>control prefix
-<DT><CODE><KBD>\M-</KBD></CODE>
-<DD>meta prefix
-<DT><CODE><KBD>\e</KBD></CODE>
-<DD>an escape character
-<DT><CODE><KBD>\\</KBD></CODE>
-<DD>backslash
-<DT><CODE><KBD>\"</KBD></CODE>
-<DD><KBD>"</KBD>, a double quotation mark
-<DT><CODE><KBD>\'</KBD></CODE>
-<DD><KBD>'</KBD>, a single quote or apostrophe
-</DL>
-<P>
-
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>\a</CODE>
-<DD>alert (bell)
-<DT><CODE>\b</CODE>
-<DD>backspace
-<DT><CODE>\d</CODE>
-<DD>delete
-<DT><CODE>\f</CODE>
-<DD>form feed
-<DT><CODE>\n</CODE>
-<DD>newline
-<DT><CODE>\r</CODE>
-<DD>carriage return
-<DT><CODE>\t</CODE>
-<DD>horizontal tab
-<DT><CODE>\v</CODE>
-<DD>vertical tab
-<DT><CODE>\<VAR>nnn</VAR></CODE>
-<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>HH</VAR></CODE>
-<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
-(one or two hex digits)
-</DL>
-<P>
-
-When entering the text of a macro, single or double quotes must
-be used to indicate a macro definition.
-Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
-For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
-insert a single <SAMP>`\'</SAMP> into the line:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
-</pre></td></tr></table></P><P>
-
-</DL>
-<P>
-
-<A NAME="Conditional Init Constructs"></A>
-<HR SIZE="6">
-<A NAME="SEC11"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.2 Conditional Init Constructs </H3>
-<!--docid::SEC11::-->
-<P>
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key
-bindings and variable settings to be performed as the result
-of tests.  There are four parser directives used.
-</P><P>
-
-<DL COMPACT>
-<DT><CODE>$if</CODE>
-<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
-editing mode, the terminal being used, or the application using
-Readline.  The text of the test extends to the end of the line;
-no characters are required to isolate it.
-<P>
-
-<DL COMPACT>
-<DT><CODE>mode</CODE>
-<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
-whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
-This may be used in conjunction
-with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
-the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
-Readline is starting out in <CODE>emacs</CODE> mode.
-<P>
-
-<DT><CODE>term</CODE>
-<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
-key bindings, perhaps to bind the key sequences output by the
-terminal's function keys.  The word on the right side of the
-<SAMP>`='</SAMP> is tested against both the full name of the terminal and
-the portion of the terminal name before the first <SAMP>`-'</SAMP>.  This
-allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
-for instance.
-<P>
-
-<DT><CODE>application</CODE>
-<DD>The <VAR>application</VAR> construct is used to include
-application-specific settings.  Each program using the Readline
-library sets the <VAR>application name</VAR>, and you can test for
-a particular value. 
-This could be used to bind key sequences to functions useful for
-a specific program.  For instance, the following command adds a
-key sequence that quotes the current or previous word in Bash:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-</pre></td></tr></table></DL>
-<P>
-
-<DT><CODE>$endif</CODE>
-<DD>This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-<P>
-
-<DT><CODE>$else</CODE>
-<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
-the test fails.
-<P>
-
-<DT><CODE>$include</CODE>
-<DD>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
-<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
-</pre></td></tr></table></DL>
-<P>
-
-<A NAME="Sample Init File"></A>
-<HR SIZE="6">
-<A NAME="SEC12"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.3.3 Sample Init File </H3>
-<!--docid::SEC12::-->
-<P>
-
-Here is an example of an <VAR>inputrc</VAR> file.  This illustrates key
-binding, variable assignment, and conditional syntax.
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=example><pre># This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library.  Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any system-wide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs 
-
-$if mode=emacs
-
-Meta-Control-h:        backward-kill-word      Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD":        backward-char
-#"\M-OC":        forward-char
-#"\M-OA":        previous-history
-#"\M-OB":        next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D":        backward-char
-"\M-[C":        forward-char
-"\M-[A":        previous-history
-"\M-[B":        next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD":       backward-char
-#"\M-\C-OC":       forward-char
-#"\M-\C-OA":       previous-history
-#"\M-\C-OB":       next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D":       backward-char
-#"\M-\C-[C":       forward-char
-#"\M-\C-[A":       previous-history
-#"\M-\C-[B":       next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding.  This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-</pre></td></tr></table></P><P>
-
-<A NAME="Bindable Readline Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC13"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.4 Bindable Readline Commands </H2>
-<!--docid::SEC13::-->
-<P>
-
-<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
-<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
-</TABLE></BLOCKQUOTE>
-<P>
-
-This section describes Readline commands that may be bound to key
-sequences.
-Command names without an accompanying key sequence are unbound by default.
-</P><P>
-
-In the following descriptions, <EM>point</EM> refers to the current cursor
-position, and <EM>mark</EM> refers to a cursor position saved by the
-<CODE>set-mark</CODE> command.
-The text between the point and mark is referred to as the <EM>region</EM>.
-</P><P>
-
-<A NAME="Commands For Moving"></A>
-<HR SIZE="6">
-<A NAME="SEC14"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.1 Commands For Moving </H3>
-<!--docid::SEC14::-->
-<DL COMPACT>
-<A NAME="IDX45"></A>
-<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD><A NAME="IDX46"></A>
-Move to the start of the current line.
-<P>
-
-<A NAME="IDX47"></A>
-<DT><CODE>end-of-line (C-e)</CODE>
-<DD><A NAME="IDX48"></A>
-Move to the end of the line.
-<P>
-
-<A NAME="IDX49"></A>
-<DT><CODE>forward-char (C-f)</CODE>
-<DD><A NAME="IDX50"></A>
-Move forward a character.
-<P>
-
-<A NAME="IDX51"></A>
-<DT><CODE>backward-char (C-b)</CODE>
-<DD><A NAME="IDX52"></A>
-Move back a character.
-<P>
-
-<A NAME="IDX53"></A>
-<DT><CODE>forward-word (M-f)</CODE>
-<DD><A NAME="IDX54"></A>
-Move forward to the end of the next word.
-Words are composed of letters and digits.
-<P>
-
-<A NAME="IDX55"></A>
-<DT><CODE>backward-word (M-b)</CODE>
-<DD><A NAME="IDX56"></A>
-Move back to the start of the current or previous word.
-Words are composed of letters and digits.
-<P>
-
-<A NAME="IDX57"></A>
-<DT><CODE>clear-screen (C-l)</CODE>
-<DD><A NAME="IDX58"></A>
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-<P>
-
-<A NAME="IDX59"></A>
-<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX60"></A>
-Refresh the current line.  By default, this is unbound.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For History"></A>
-<HR SIZE="6">
-<A NAME="SEC15"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.2 Commands For Manipulating The History </H3>
-<!--docid::SEC15::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX61"></A>
-<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX62"></A>
-Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-<CODE>add_history()</CODE>.
-If this line is a modified history line, the history line is restored
-to its original state.
-<P>
-
-<A NAME="IDX63"></A>
-<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX64"></A>
-Move `back' through the history list, fetching the previous command.
-<P>
-
-<A NAME="IDX65"></A>
-<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX66"></A>
-Move `forward' through the history list, fetching the next command.
-<P>
-
-<A NAME="IDX67"></A>
-<DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD><A NAME="IDX68"></A>
-Move to the first line in the history.
-<P>
-
-<A NAME="IDX69"></A>
-<DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD><A NAME="IDX70"></A>
-Move to the end of the input history, i.e., the line currently
-being entered.
-<P>
-
-<A NAME="IDX71"></A>
-<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX72"></A>
-Search backward starting at the current line and moving `up' through
-the history as necessary.  This is an incremental search.
-<P>
-
-<A NAME="IDX73"></A>
-<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX74"></A>
-Search forward starting at the current line and moving `down' through
-the history as necessary.  This is an incremental search.
-<P>
-
-<A NAME="IDX75"></A>
-<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX76"></A>
-Search backward starting at the current line and moving `up'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-The search string may match anywhere in a history line.
-<P>
-
-<A NAME="IDX77"></A>
-<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX78"></A>
-Search forward starting at the current line and moving `down'
-through the history as necessary using a non-incremental search
-for a string supplied by the user.
-The search string may match anywhere in a history line.
-<P>
-
-<A NAME="IDX79"></A>
-<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX80"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-The search string must match at the beginning of a history line.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX81"></A>
-<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX82"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point.
-The search string must match at the beginning of a history line.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX83"></A>
-<DT><CODE>history-substr-search-forward ()</CODE>
-<DD><A NAME="IDX84"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the point.
-The search string may match anywhere in a history line.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX85"></A>
-<DT><CODE>history-substr-search-backward ()</CODE>
-<DD><A NAME="IDX86"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point.
-The search string may match anywhere in a history line.
-This is a non-incremental search.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX87"></A>
-<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX88"></A>
-Insert the first argument to the previous command (usually
-the second word on the previous line) at point.
-With an argument <VAR>n</VAR>,
-insert the <VAR>n</VAR>th word from the previous command (the words
-in the previous command begin with word 0).  A negative argument
-inserts the <VAR>n</VAR>th word from the end of the previous command.
-Once the argument <VAR>n</VAR> is computed, the argument is extracted
-as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
-<P>
-
-<A NAME="IDX89"></A>
-<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX90"></A>
-Insert last argument to the previous command (the last word of the
-previous history entry).
-With a numeric argument, behave exactly like <CODE>yank-nth-arg</CODE>.
-Successive calls to <CODE>yank-last-arg</CODE> move back through the history
-list, inserting the last word (or the word specified by the argument to
-the first call) of each line in turn.
-Any numeric argument supplied to these successive calls determines
-the direction to move through the history.  A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the <SAMP>`!$'</SAMP> history expansion had been specified.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Text"></A>
-<HR SIZE="6">
-<A NAME="SEC16"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.3 Commands For Changing Text </H3>
-<!--docid::SEC16::-->
-<P>
-
-<DL COMPACT>
-
-<A NAME="IDX91"></A>
-<DT><CODE><I>end-of-file</I> (usually C-d)</CODE>
-<DD><A NAME="IDX92"></A>
-The character indicating end-of-file as set, for example, by
-<CODE>stty</CODE>.  If this character is read when there are no characters
-on the line, and point is at the beginning of the line, Readline
-interprets it as the end of input and returns EOF.
-<P>
-
-<A NAME="IDX93"></A>
-<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX94"></A>
-Delete the character at point.  If this function is bound to the
-same character as the tty EOF character, as <KBD>C-d</KBD>
-commonly is, see above for the effects.
-<P>
-
-<A NAME="IDX95"></A>
-<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX96"></A>
-Delete the character behind the cursor.  A numeric argument means
-to kill the characters instead of deleting them.
-<P>
-
-<A NAME="IDX97"></A>
-<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX98"></A>
-Delete the character under the cursor, unless the cursor is at the
-end of the line, in which case the character behind the cursor is
-deleted.  By default, this is not bound to a key.
-<P>
-
-<A NAME="IDX99"></A>
-<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX100"></A>
-Add the next character typed to the line verbatim.  This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
-<P>
-
-<A NAME="IDX101"></A>
-<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX102"></A>
-Insert a tab character.
-<P>
-
-<A NAME="IDX103"></A>
-<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX104"></A>
-Insert yourself.
-<P>
-
-<A NAME="IDX105"></A>
-<DT><CODE>bracketed-paste-begin ()</CODE>
-<DD><A NAME="IDX106"></A>
-This function is intended to be bound to the "bracketed paste" escape
-sequence sent by some terminals, and such a binding is assigned by default.
-It allows Readline to insert the pasted text as a single unit without treating
-each character as if it had been read from the keyboard.  The characters
-are inserted as if each one was bound to <CODE>self-insert</CODE>) instead of
-executing any editing commands.
-<P>
-
-<A NAME="IDX107"></A>
-<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX108"></A>
-Drag the character before the cursor forward over
-the character at the cursor, moving the
-cursor forward as well.  If the insertion point
-is at the end of the line, then this
-transposes the last two characters of the line.
-Negative arguments have no effect.
-<P>
-
-<A NAME="IDX109"></A>
-<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX110"></A>
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-<P>
-
-<A NAME="IDX111"></A>
-<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX112"></A>
-Uppercase the current (or following) word.  With a negative argument,
-uppercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX113"></A>
-<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX114"></A>
-Lowercase the current (or following) word.  With a negative argument,
-lowercase the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX115"></A>
-<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX116"></A>
-Capitalize the current (or following) word.  With a negative argument,
-capitalize the previous word, but do not move the cursor.
-<P>
-
-<A NAME="IDX117"></A>
-<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX118"></A>
-Toggle overwrite mode.  With an explicit positive numeric argument,
-switches to overwrite mode.  With an explicit non-positive numeric
-argument, switches to insert mode.  This command affects only
-<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
-Each call to <CODE>readline()</CODE> starts in insert mode.
-<P>
-
-In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
-the text at point rather than pushing the text to the right.
-Characters bound to <CODE>backward-delete-char</CODE> replace the character
-before point with a space.
-</P><P>
-
-By default, this command is unbound.
-</P><P>
-
-</DL>
-<P>
-
-<A NAME="Commands For Killing"></A>
-<HR SIZE="6">
-<A NAME="SEC17"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.4 Killing And Yanking </H3>
-<!--docid::SEC17::-->
-<P>
-
-<DL COMPACT>
-
-<A NAME="IDX119"></A>
-<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX120"></A>
-Kill the text from point to the end of the line.
-<P>
-
-<A NAME="IDX121"></A>
-<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX122"></A>
-Kill backward from the cursor to the beginning of the current line.
-<P>
-
-<A NAME="IDX123"></A>
-<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX124"></A>
-Kill backward from the cursor to the beginning of the current line.
-<P>
-
-<A NAME="IDX125"></A>
-<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX126"></A>
-Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-<P>
-
-<A NAME="IDX127"></A>
-<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX128"></A>
-Kill from point to the end of the current word, or if between
-words, to the end of the next word.
-Word boundaries are the same as <CODE>forward-word</CODE>.
-<P>
-
-<A NAME="IDX129"></A>
-<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX130"></A>
-Kill the word behind point.
-Word boundaries are the same as <CODE>backward-word</CODE>.
-<P>
-
-<A NAME="IDX131"></A>
-<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX132"></A>
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-<P>
-
-<A NAME="IDX133"></A>
-<DT><CODE>unix-filename-rubout ()</CODE>
-<DD><A NAME="IDX134"></A>
-Kill the word behind point, using white space and the slash character
-as the word boundaries.
-The killed text is saved on the kill-ring.
-<P>
-
-<A NAME="IDX135"></A>
-<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX136"></A>
-Delete all spaces and tabs around point.  By default, this is unbound.
-<P>
-
-<A NAME="IDX137"></A>
-<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX138"></A>
-Kill the text in the current region.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX139"></A>
-<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX140"></A>
-Copy the text in the region to the kill buffer, so it can be yanked
-right away.  By default, this command is unbound.
-<P>
-
-<A NAME="IDX141"></A>
-<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX142"></A>
-Copy the word before point to the kill buffer.
-The word boundaries are the same as <CODE>backward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX143"></A>
-<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX144"></A>
-Copy the word following point to the kill buffer.
-The word boundaries are the same as <CODE>forward-word</CODE>.
-By default, this command is unbound.
-<P>
-
-<A NAME="IDX145"></A>
-<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX146"></A>
-Yank the top of the kill ring into the buffer at point.
-<P>
-
-<A NAME="IDX147"></A>
-<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX148"></A>
-Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
-</DL>
-<P>
-
-<A NAME="Numeric Arguments"></A>
-<HR SIZE="6">
-<A NAME="SEC18"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.5 Specifying Numeric Arguments </H3>
-<!--docid::SEC18::-->
-<DL COMPACT>
-
-<A NAME="IDX149"></A>
-<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX150"></A>
-Add this digit to the argument already accumulating, or start a new
-argument.  <KBD>M--</KBD> starts a negative argument.
-<P>
-
-<A NAME="IDX151"></A>
-<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX152"></A>
-This is another way to specify an argument.
-If this command is followed by one or more digits, optionally with a
-leading minus sign, those digits define the argument.
-If the command is followed by digits, executing <CODE>universal-argument</CODE>
-again ends the numeric argument, but is otherwise ignored.
-As a special case, if this command is immediately followed by a
-character that is neither a digit nor minus sign, the argument count
-for the next command is multiplied by four.
-The argument count is initially one, so executing this function the
-first time makes the argument count four, a second time makes the
-argument count sixteen, and so on.
-By default, this is not bound to a key.
-</DL>
-<P>
-
-<A NAME="Commands For Completion"></A>
-<HR SIZE="6">
-<A NAME="SEC19"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.6 Letting Readline Type For You </H3>
-<!--docid::SEC19::-->
-<P>
-
-<DL COMPACT>
-<A NAME="IDX153"></A>
-<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX154"></A>
-Attempt to perform completion on the text before point.
-The actual completion performed is application-specific.
-The default is filename completion.
-<P>
-
-<A NAME="IDX155"></A>
-<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX156"></A>
-List the possible completions of the text before point.
-When displaying completions, Readline sets the number of columns used
-for display to the value of <CODE>completion-display-width</CODE>, the value of
-the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
-<P>
-
-<A NAME="IDX157"></A>
-<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX158"></A>
-Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
-<P>
-
-<A NAME="IDX159"></A>
-<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX160"></A>
-Similar to <CODE>complete</CODE>, but replaces the word to be completed
-with a single match from the list of possible completions.
-Repeated execution of <CODE>menu-complete</CODE> steps through the list
-of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of <CODE>bell-style</CODE>)
-and the original text is restored.
-An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
-by default.
-<P>
-
-<A NAME="IDX161"></A>
-<DT><CODE>menu-complete-backward ()</CODE>
-<DD><A NAME="IDX162"></A>
-Identical to <CODE>menu-complete</CODE>, but moves backward through the list
-of possible completions, as if <CODE>menu-complete</CODE> had been given a
-negative argument.
-<P>
-
-<A NAME="IDX163"></A>
-<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX164"></A>
-Deletes the character under the cursor if not at the beginning or
-end of the line (like <CODE>delete-char</CODE>).
-If at the end of the line, behaves identically to
-<CODE>possible-completions</CODE>.
-This command is unbound by default.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Keyboard Macros"></A>
-<HR SIZE="6">
-<A NAME="SEC20"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.7 Keyboard Macros </H3>
-<!--docid::SEC20::-->
-<DL COMPACT>
-
-<A NAME="IDX165"></A>
-<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX166"></A>
-Begin saving the characters typed into the current keyboard macro.
-<P>
-
-<A NAME="IDX167"></A>
-<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX168"></A>
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-<P>
-
-<A NAME="IDX169"></A>
-<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX170"></A>
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-<P>
-
-<A NAME="IDX171"></A>
-<DT><CODE>print-last-kbd-macro ()</CODE>
-<DD><A NAME="IDX172"></A>
-Print the last keboard macro defined in a format suitable for the
-<VAR>inputrc</VAR> file.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Miscellaneous Commands"></A>
-<HR SIZE="6">
-<A NAME="SEC21"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H3> 1.4.8 Some Miscellaneous Commands </H3>
-<!--docid::SEC21::-->
-<DL COMPACT>
-
-<A NAME="IDX173"></A>
-<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX174"></A>
-Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
-any bindings or variable assignments found there.
-<P>
-
-<A NAME="IDX175"></A>
-<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX176"></A>
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-<CODE>bell-style</CODE>).
-<P>
-
-<A NAME="IDX177"></A>
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX178"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
-<P>
-
-<A NAME="IDX179"></A>
-<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX180"></A>
-Metafy the next character typed.  This is for keyboards
-without a meta key.  Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
-<KBD>M-f</KBD>.
-<P>
-
-<A NAME="IDX181"></A>
-<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX182"></A>
-Incremental undo, separately remembered for each line.
-<P>
-
-<A NAME="IDX183"></A>
-<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX184"></A>
-Undo all changes made to this line.  This is like executing the <CODE>undo</CODE>
-command enough times to get back to the beginning.
-<P>
-
-<A NAME="IDX185"></A>
-<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX186"></A>
-Perform tilde expansion on the current word.
-<P>
-
-<A NAME="IDX187"></A>
-<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX188"></A>
-Set the mark to the point.  If a
-numeric argument is supplied, the mark is set to that position.
-<P>
-
-<A NAME="IDX189"></A>
-<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX190"></A>
-Swap the point with the mark.  The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
-<P>
-
-<A NAME="IDX191"></A>
-<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX192"></A>
-A character is read and point is moved to the next occurrence of that
-character.  A negative count searches for previous occurrences.
-<P>
-
-<A NAME="IDX193"></A>
-<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX194"></A>
-A character is read and point is moved to the previous occurrence
-of that character.  A negative count searches for subsequent
-occurrences.
-<P>
-
-<A NAME="IDX195"></A>
-<DT><CODE>skip-csi-sequence ()</CODE>
-<DD><A NAME="IDX196"></A>
-Read enough characters to consume a multi-key sequence such as those
-defined for keys like Home and End.  Such sequences begin with a
-Control Sequence Indicator (CSI), usually ESC-[.  If this sequence is
-bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
-stray characters into the editing buffer.  This is unbound by default,
-but usually bound to ESC-[.
-<P>
-
-<A NAME="IDX197"></A>
-<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX198"></A>
-Without a numeric argument, the value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line.
-If a numeric argument is supplied, this command acts as a toggle:  if
-the characters at the beginning of the line do not match the value
-of <CODE>comment-begin</CODE>, the value is inserted, otherwise
-the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
-the line.
-In either case, the line is accepted as if a newline had been typed.
-<P>
-
-<A NAME="IDX199"></A>
-<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX200"></A>
-Print all of the functions and their key bindings to the
-Readline output stream.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file.  This command is unbound by default.
-<P>
-
-<A NAME="IDX201"></A>
-<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX202"></A>
-Print all of the settable variables and their values to the
-Readline output stream.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file.  This command is unbound by default.
-<P>
-
-<A NAME="IDX203"></A>
-<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX204"></A>
-Print all of the Readline key sequences bound to macros and the
-strings they output.  If a numeric argument is supplied,
-the output is formatted in such a way that it can be made part
-of an <VAR>inputrc</VAR> file.  This command is unbound by default.
-<P>
-
-<A NAME="IDX205"></A>
-<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX206"></A>
-When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
-editing mode.
-<P>
-
-<A NAME="IDX207"></A>
-<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX208"></A>
-When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
-editing mode.
-<P>
-
-</DL>
-<P>
-
-<A NAME="Readline vi Mode"></A>
-<HR SIZE="6">
-<A NAME="SEC22"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H2> 1.5 Readline vi Mode </H2>
-<!--docid::SEC22::-->
-<P>
-
-While the Readline library does not have a full set of <CODE>vi</CODE>
-editing functions, it does contain enough to allow simple editing
-of the line.  The Readline <CODE>vi</CODE> mode behaves as specified in
-the POSIX standard.
-</P><P>
-
-In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
-editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode
-when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode).
-The Readline default is <CODE>emacs</CODE> mode.
-</P><P>
-
-When you enter a line in <CODE>vi</CODE> mode, you are already placed in
-`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>.  Pressing <KBD>ESC</KBD>
-switches you into `command' mode, where you can edit the text of the
-line with the standard <CODE>vi</CODE> movement keys, move to previous
-history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
-so forth.
-</P><P>
-
-<A NAME="GNU Free Documentation License"></A>
-<HR SIZE="6">
-<A NAME="SEC23"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> &lt;&lt; </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1> A. GNU Free Documentation License </H1>
-<!--docid::SEC23::-->
-<P>
-
-<center>
- Version 1.3, 3 November 2008
-</center>
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-<A HREF="http://fsf.org/">http://fsf.org/</A>
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-</pre></td></tr></table></P><P>
-
-<OL>
-<LI>
-PREAMBLE
-<P>
-
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document <EM>free</EM> in the sense of freedom: to
-assure everyone the effective freedom to copy and redistribute it,
-with or without modifying it, either commercially or noncommercially.
-Secondarily, this License preserves for the author and publisher a way
-to get credit for their work, while not being considered responsible
-for modifications made by others.
-</P><P>
-
-This License is a kind of "copyleft", which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-</P><P>
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-</P><P>
-
-<LI>
-APPLICABILITY AND DEFINITIONS
-<P>
-
-This License applies to any manual or other work, in any medium, that
-contains a notice placed by the copyright holder saying it can be
-distributed under the terms of this License.  Such a notice grants a
-world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein.  The "Document", below,
-refers to any such manual or work.  Any member of the public is a
-licensee, and is addressed as "you".  You accept the license if you
-copy, modify or distribute the work in a way requiring permission
-under copyright law.
-</P><P>
-
-A "Modified Version" of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-</P><P>
-
-A "Secondary Section" is a named appendix or a front-matter section
-of the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall
-subject (or to related matters) and contains nothing that could fall
-directly within that overall subject.  (Thus, if the Document is in
-part a textbook of mathematics, a Secondary Section may not explain
-any mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-</P><P>
-
-The "Invariant Sections" are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.  If a
-section does not fit the above definition of Secondary then it is not
-allowed to be designated as Invariant.  The Document may contain zero
-Invariant Sections.  If the Document does not identify any Invariant
-Sections then there are none.
-</P><P>
-
-The "Cover Texts" are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.  A Front-Cover Text may
-be at most 5 words, and a Back-Cover Text may be at most 25 words.
-</P><P>
-
-A "Transparent" copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, that is suitable for revising the document
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup, or absence of markup, has been arranged to thwart
-or discourage subsequent modification by readers is not Transparent.
-An image format is not Transparent if used for any substantial amount
-of text.  A copy that is not "Transparent" is called "Opaque".
-</P><P>
-
-Examples of suitable formats for Transparent copies include plain
-ASCII without markup, Texinfo input format, LaTeX input
-format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
-<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
-PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification.  Examples
-of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
-<FONT SIZE="-1">JPG</FONT>.  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
-<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
-not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
-PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
-output purposes only.
-</P><P>
-
-The "Title Page" means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, "Title Page" means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-</P><P>
-
-The "publisher" means any person or entity that distributes copies
-of the Document to the public.
-</P><P>
-
-A section "Entitled XYZ" means a named subunit of the Document whose
-title either is precisely XYZ or contains XYZ in parentheses following
-text that translates XYZ in another language.  (Here XYZ stands for a
-specific section name mentioned below, such as "Acknowledgements",
-"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
-of such a section when you modify the Document means that it remains a
-section "Entitled XYZ" according to this definition.
-</P><P>
-
-The Document may include Warranty Disclaimers next to the notice which
-states that this License applies to the Document.  These Warranty
-Disclaimers are considered to be included by reference in this
-License, but only as regards disclaiming warranties: any other
-implication that these Warranty Disclaimers may have is void and has
-no effect on the meaning of this License.
-</P><P>
-
-<LI>
-VERBATIM COPYING
-<P>
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-</P><P>
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-</P><P>
-
-<LI>
-COPYING IN QUANTITY
-<P>
-
-If you publish printed copies (or copies in media that commonly have
-printed covers) of the Document, numbering more than 100, and the
-Document's license notice requires Cover Texts, you must enclose the
-copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-</P><P>
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-</P><P>
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a computer-network location from which the general network-using
-public has access to download using public-standard network protocols
-a complete Transparent copy of the Document, free of added material.
-If you use the latter option, you must take reasonably prudent steps,
-when you begin distribution of Opaque copies in quantity, to ensure
-that this Transparent copy will remain thus accessible at the stated
-location until at least one year after the last time you distribute an
-Opaque copy (directly or through your agents or retailers) of that
-edition to the public.
-</P><P>
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-</P><P>
-
-<LI>
-MODIFICATIONS
-<P>
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-</P><P>
-
-<OL>
-<LI>
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document).  You may use the same title as a previous version
-if the original publisher of that version gives permission.
-<P>
-
-<LI>
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has fewer than five),
-unless they release you from this requirement.
-<P>
-
-<LI>
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-<P>
-
-<LI>
-Preserve all the copyright notices of the Document.
-<P>
-
-<LI>
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-<P>
-
-<LI>
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-<P>
-
-<LI>
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-<P>
-
-<LI>
-Include an unaltered copy of this License.
-<P>
-
-<LI>
-Preserve the section Entitled "History", Preserve its Title, and add
-to it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page.  If
-there is no section Entitled "History" in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-<P>
-
-<LI>
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on.  These may be placed in the "History" section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-<P>
-
-<LI>
-For any section Entitled "Acknowledgements" or "Dedications", Preserve
-the Title of the section, and preserve in the section all the
-substance and tone of each of the contributor acknowledgements and/or
-dedications given therein.
-<P>
-
-<LI>
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles.  Section numbers
-or the equivalent are not considered part of the section titles.
-<P>
-
-<LI>
-Delete any section Entitled "Endorsements".  Such a section
-may not be included in the Modified Version.
-<P>
-
-<LI>
-Do not retitle any existing section to be Entitled "Endorsements" or
-to conflict in title with any Invariant Section.
-<P>
-
-<LI>
-Preserve any Warranty Disclaimers.
-</OL>
-<P>
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-</P><P>
-
-You may add a section Entitled "Endorsements", provided it contains
-nothing but endorsements of your Modified Version by various
-parties--for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-</P><P>
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-</P><P>
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-</P><P>
-
-<LI>
-COMBINING DOCUMENTS
-<P>
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice, and that you preserve all their Warranty Disclaimers.
-</P><P>
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-</P><P>
-
-In the combination, you must combine any sections Entitled "History"
-in the various original documents, forming one section Entitled
-"History"; likewise combine any sections Entitled "Acknowledgements",
-and any sections Entitled "Dedications".  You must delete all
-sections Entitled "Endorsements."
-</P><P>
-
-<LI>
-COLLECTIONS OF DOCUMENTS
-<P>
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-</P><P>
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-</P><P>
-
-<LI>
-AGGREGATION WITH INDEPENDENT WORKS
-<P>
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an "aggregate" if the copyright
-resulting from the compilation is not used to limit the legal rights
-of the compilation's users beyond what the individual works permit.
-When the Document is included in an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-</P><P>
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one half of
-the entire aggregate, the Document's Cover Texts may be placed on
-covers that bracket the Document within the aggregate, or the
-electronic equivalent of covers if the Document is in electronic form.
-Otherwise they must appear on printed covers that bracket the whole
-aggregate.
-</P><P>
-
-<LI>
-TRANSLATION
-<P>
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-the original English version of this License and the original versions
-of those notices and disclaimers.  In case of a disagreement between
-the translation and the original version of this License or a notice
-or disclaimer, the original version will prevail.
-</P><P>
-
-If a section in the Document is Entitled "Acknowledgements",
-"Dedications", or "History", the requirement (section 4) to Preserve
-its Title (section 1) will typically require changing the actual
-title.
-</P><P>
-
-<LI>
-TERMINATION
-<P>
-
-You may not copy, modify, sublicense, or distribute the Document
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense, or distribute it is void, and
-will automatically terminate your rights under this License.
-</P><P>
-
-However, if you cease all violation of this License, then your license
-from a particular copyright holder is reinstated (a) provisionally,
-unless and until the copyright holder explicitly and finally
-terminates your license, and (b) permanently, if the copyright holder
-fails to notify you of the violation by some reasonable means prior to
-60 days after the cessation.
-</P><P>
-
-Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-</P><P>
-
-Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, receipt of a copy of some or all of the same material does
-not give you any rights to use it.
-</P><P>
-
-<LI>
-FUTURE REVISIONS OF THIS LICENSE
-<P>
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
-<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
-</P><P>
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License "or any later version" applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.  If the Document
-specifies that a proxy can decide which future versions of this
-License can be used, that proxy's public statement of acceptance of a
-version permanently authorizes you to choose that version for the
-Document.
-</P><P>
-
-<LI>
-RELICENSING
-<P>
-
-"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-World Wide Web server that publishes copyrightable works and also
-provides prominent facilities for anybody to edit those works.  A
-public wiki that anybody can edit is an example of such a server.  A
-"Massive Multiauthor Collaboration" (or "MMC") contained in the
-site means any set of copyrightable works thus published on the MMC
-site.
-</P><P>
-
-"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-license published by Creative Commons Corporation, a not-for-profit
-corporation with a principal place of business in San Francisco,
-California, as well as future copyleft versions of that license
-published by that same organization.
-</P><P>
-
-"Incorporate" means to publish or republish a Document, in whole or
-in part, as part of another Document.
-</P><P>
-
-An MMC is "eligible for relicensing" if it is licensed under this
-License, and if all works that were first published under this License
-somewhere other than this MMC, and subsequently incorporated in whole
-or in part into the MMC, (1) had no cover texts or invariant sections,
-and (2) were thus incorporated prior to November 1, 2008.
-</P><P>
-
-The operator of an MMC Site may republish an MMC contained in the site
-under CC-BY-SA on the same site at any time before August 1, 2009,
-provided the MMC is eligible for relicensing.
-</P><P>
-
-</OL>
-<P>
-
-<A NAME="SEC24"></A>
-<H2> ADDENDUM: How to use this License for your documents </H2>
-<!--docid::SEC24::-->
-<P>
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>  Copyright (C)  <VAR>year</VAR>  <VAR>your name</VAR>.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.3
-  or any later version published by the Free Software Foundation;
-  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-  Texts.  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
-</FONT></pre></td></tr></table></P><P>
-
-If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the "with<small>...</small>Texts." line with this:
-</P><P>
-
-<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>    with the Invariant Sections being <VAR>list their titles</VAR>, with
-    the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
-    being <VAR>list</VAR>.
-</FONT></pre></td></tr></table></P><P>
-
-If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-</P><P>
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
-</P><P>
-
-<HR SIZE="6">
-<A NAME="SEC_Contents"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Table of Contents</H1>
-<UL>
-<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
-<BR>
-<UL>
-<A NAME="TOC2" HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A>
-<BR>
-<A NAME="TOC3" HREF="rluserman.html#SEC3">1.2 Readline Interaction</A>
-<BR>
-<UL>
-<A NAME="TOC4" HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A>
-<BR>
-<A NAME="TOC5" HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A>
-<BR>
-<A NAME="TOC6" HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A>
-<BR>
-<A NAME="TOC7" HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A>
-<BR>
-<A NAME="TOC8" HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>
-<BR>
-</UL>
-<A NAME="TOC9" HREF="rluserman.html#SEC9">1.3 Readline Init File</A>
-<BR>
-<UL>
-<A NAME="TOC10" HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A>
-<BR>
-<A NAME="TOC11" HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>
-<BR>
-<A NAME="TOC12" HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A>
-<BR>
-</UL>
-<A NAME="TOC13" HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A>
-<BR>
-<UL>
-<A NAME="TOC14" HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A>
-<BR>
-<A NAME="TOC15" HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A>
-<BR>
-<A NAME="TOC16" HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A>
-<BR>
-<A NAME="TOC17" HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A>
-<BR>
-<A NAME="TOC18" HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
-<BR>
-<A NAME="TOC19" HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A>
-<BR>
-<A NAME="TOC20" HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A>
-<BR>
-<A NAME="TOC21" HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
-<BR>
-</UL>
-<A NAME="TOC22" HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A>
-<BR>
-</UL>
-<A NAME="TOC23" HREF="rluserman.html#SEC23">A. GNU Free Documentation License</A>
-<BR>
-</UL>
-<HR SIZE=1>
-<A NAME="SEC_OVERVIEW"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>Short Table of Contents</H1>
-<BLOCKQUOTE>
-<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
-<BR>
-<A NAME="TOC23" HREF="rluserman.html#SEC23">A. GNU Free Documentation License</A>
-<BR>
-
-</BLOCKQUOTE>
-<HR SIZE=1>
-<A NAME="SEC_About"></A>
-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
-</TR></TABLE>
-<H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>July, 1  2015</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-<P></P>  
-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>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt; ] </TD>
-<TD ALIGN="CENTER">
-Back
-</TD>
-<TD>
-previous section in reading order
-</TD>
-<TD>
-1.2.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt; ] </TD>
-<TD ALIGN="CENTER">
-Forward
-</TD>
-<TD>
-next section in reading order
-</TD>
-<TD>
-1.2.4
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &lt;&lt; ] </TD>
-<TD ALIGN="CENTER">
-FastBack
-</TD>
-<TD>
-previous or up-and-previous section 
-</TD>
-<TD>
-1.1
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ Up ] </TD>
-<TD ALIGN="CENTER">
-Up
-</TD>
-<TD>
-up section
-</TD>
-<TD>
-1.2
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ &gt;&gt; ] </TD>
-<TD ALIGN="CENTER">
-FastForward
-</TD>
-<TD>
-next or up-and-next section
-</TD>
-<TD>
-1.3
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Top] </TD>
-<TD ALIGN="CENTER">
-Top
-</TD>
-<TD>
-cover (top) of document
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Contents] </TD>
-<TD ALIGN="CENTER">
-Contents
-</TD>
-<TD>
-table of contents
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [Index] </TD>
-<TD ALIGN="CENTER">
-Index
-</TD>
-<TD>
-concept index
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-<TR>
-<TD ALIGN="CENTER">
- [ ? ] </TD>
-<TD ALIGN="CENTER">
-About
-</TD>
-<TD>
-this page
-</TD>
-<TD>
- &nbsp; 
-</TD>
-</TR>
-</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>
-
-<HR SIZE=1>
-<BR>  
-<FONT SIZE="-1">
-This document was generated
-by <I>Chet Ramey</I> on <I>July, 1  2015</I>
-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
-"><I>texi2html</I></A>
-
-</BODY>
-</HTML>
diff --git a/lib/readline/doc/rluserman.info b/lib/readline/doc/rluserman.info
deleted file mode 100644 (file)
index cc0d749..0000000
+++ /dev/null
@@ -1,1937 +0,0 @@
-This is rluserman.info, produced by makeinfo version 5.2 from
-rluserman.texi.
-
-This manual describes the end user interface of the GNU Readline Library
-(version 6.4, 28 May 2015), a library which aids in the consistency of
-user interface across discrete programs which provide a command line
-interface.
-
-   Copyright (C) 1988-2014 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, no Front-Cover Texts, and
-     no Back-Cover Texts.  A copy of the license is included in the
-     section entitled "GNU Free Documentation License".
-
-INFO-DIR-SECTION Libraries
-START-INFO-DIR-ENTRY
-* RLuserman: (rluserman).       The GNU readline library User's Manual.
-END-INFO-DIR-ENTRY
-
-\1f
-File: rluserman.info,  Node: Top,  Next: Command Line Editing,  Up: (dir)
-
-GNU Readline Library
-********************
-
-This document describes the end user interface of the GNU Readline
-Library, a utility which aids in the consistency of user interface
-across discrete programs which provide a command line interface.  The
-Readline home page is <http://www.gnu.org/software/readline/>.
-
-* Menu:
-
-* Command Line Editing::          GNU Readline User's Manual.
-* GNU Free Documentation License::     License for copying this manual.
-
-\1f
-File: rluserman.info,  Node: Command Line Editing,  Next: GNU Free Documentation License,  Prev: Top,  Up: Top
-
-1 Command Line Editing
-**********************
-
-This chapter describes the basic features of the GNU command line
-editing interface.
-
-* Menu:
-
-* Introduction and Notation::  Notation used in this text.
-* Readline Interaction::       The minimum set of commands for editing a line.
-* Readline Init File::         Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
-                               available for binding
-* Readline vi Mode::           A short description of how to make Readline
-                               behave like the vi editor.
-
-\1f
-File: rluserman.info,  Node: Introduction and Notation,  Next: Readline Interaction,  Up: Command Line Editing
-
-1.1 Introduction to Line Editing
-================================
-
-The following paragraphs describe the notation used to represent
-keystrokes.
-
-   The text 'C-k' is read as 'Control-K' and describes the character
-produced when the <k> key is pressed while the Control key is depressed.
-
-   The text 'M-k' is read as 'Meta-K' and describes the character
-produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed.  The Meta key is labeled <ALT> on many keyboards.  On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key.  The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
-Compose key for typing accented characters.
-
-   If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>.  Either process is known as "metafying"
-the <k> key.
-
-   The text 'M-C-k' is read as 'Meta-Control-k' and describes the
-character produced by "metafying" 'C-k'.
-
-   In addition, several keys have their own names.  Specifically, <DEL>,
-<ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
-in this text, or in an init file (*note Readline Init File::).  If your
-keyboard lacks a <LFD> key, typing <C-j> will produce the desired
-character.  The <RET> key may be labeled <Return> or <Enter> on some
-keyboards.
-
-\1f
-File: rluserman.info,  Node: Readline Interaction,  Next: Readline Init File,  Prev: Introduction and Notation,  Up: Command Line Editing
-
-1.2 Readline Interaction
-========================
-
-Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press <RET>.  You do not have to be at the end of
-the line to press <RET>; the entire line is accepted regardless of the
-location of the cursor within the line.
-
-* Menu:
-
-* Readline Bare Essentials::   The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands::  How to delete text, and how to get it back!
-* Readline Arguments::         Giving numeric arguments to commands.
-* Searching::                  Searching through previous lines.
-
-\1f
-File: rluserman.info,  Node: Readline Bare Essentials,  Next: Readline Movement Commands,  Up: Readline Interaction
-
-1.2.1 Readline Bare Essentials
-------------------------------
-
-In order to enter characters into the line, simply type them.  The typed
-character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your erase
-character to back up and delete the mistyped character.
-
-   Sometimes you may mistype a character, and not notice the error until
-you have typed several other characters.  In that case, you can type
-'C-b' to move the cursor to the left, and then correct your mistake.
-Afterwards, you can move the cursor to the right with 'C-f'.
-
-   When you add text in the middle of a line, you will notice that
-characters to the right of the cursor are 'pushed over' to make room for
-the text that you have inserted.  Likewise, when you delete text behind
-the cursor, characters to the right of the cursor are 'pulled back' to
-fill in the blank space created by the removal of the text.  A list of
-the bare essentials for editing the text of an input line follows.
-
-'C-b'
-     Move back one character.
-'C-f'
-     Move forward one character.
-<DEL> or <Backspace>
-     Delete the character to the left of the cursor.
-'C-d'
-     Delete the character underneath the cursor.
-Printing characters
-     Insert the character into the line at the cursor.
-'C-_' or 'C-x C-u'
-     Undo the last editing command.  You can undo all the way back to an
-     empty line.
-
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like 'C-d', rather than the
-character to the left of the cursor.)
-
-\1f
-File: rluserman.info,  Node: Readline Movement Commands,  Next: Readline Killing Commands,  Prev: Readline Bare Essentials,  Up: Readline Interaction
-
-1.2.2 Readline Movement Commands
---------------------------------
-
-The above table describes the most basic keystrokes that you need in
-order to do editing of the input line.  For your convenience, many other
-commands have been added in addition to 'C-b', 'C-f', 'C-d', and <DEL>.
-Here are some commands for moving more rapidly about the line.
-
-'C-a'
-     Move to the start of the line.
-'C-e'
-     Move to the end of the line.
-'M-f'
-     Move forward a word, where a word is composed of letters and
-     digits.
-'M-b'
-     Move backward a word.
-'C-l'
-     Clear the screen, reprinting the current line at the top.
-
-   Notice how 'C-f' moves forward a character, while 'M-f' moves forward
-a word.  It is a loose convention that control keystrokes operate on
-characters while meta keystrokes operate on words.
-
-\1f
-File: rluserman.info,  Node: Readline Killing Commands,  Next: Readline Arguments,  Prev: Readline Movement Commands,  Up: Readline Interaction
-
-1.2.3 Readline Killing Commands
--------------------------------
-
-"Killing" text means to delete the text from the line, but to save it
-away for later use, usually by "yanking" (re-inserting) it back into the
-line.  ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
-
-   If the description for a command says that it 'kills' text, then you
-can be sure that you can get the text back in a different (or the same)
-place later.
-
-   When you use a kill command, the text is saved in a "kill-ring".  Any
-number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill ring is not line
-specific; the text that you killed on a previously typed line is
-available to be yanked back later, when you are typing another line.
-
-   Here is the list of commands for killing text.
-
-'C-k'
-     Kill the text from the current cursor position to the end of the
-     line.
-
-'M-d'
-     Kill from the cursor to the end of the current word, or, if between
-     words, to the end of the next word.  Word boundaries are the same
-     as those used by 'M-f'.
-
-'M-<DEL>'
-     Kill from the cursor the start of the current word, or, if between
-     words, to the start of the previous word.  Word boundaries are the
-     same as those used by 'M-b'.
-
-'C-w'
-     Kill from the cursor to the previous whitespace.  This is different
-     than 'M-<DEL>' because the word boundaries differ.
-
-   Here is how to "yank" the text back into the line.  Yanking means to
-copy the most-recently-killed text from the kill buffer.
-
-'C-y'
-     Yank the most recently killed text back into the buffer at the
-     cursor.
-
-'M-y'
-     Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is 'C-y' or 'M-y'.
-
-\1f
-File: rluserman.info,  Node: Readline Arguments,  Next: Searching,  Prev: Readline Killing Commands,  Up: Readline Interaction
-
-1.2.4 Readline Arguments
-------------------------
-
-You can pass numeric arguments to Readline commands.  Sometimes the
-argument acts as a repeat count, other times it is the sign of the
-argument that is significant.  If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
-start of the line, you might type 'M-- C-k'.
-
-   The general way to pass numeric arguments to a command is to type
-meta digits before the command.  If the first 'digit' typed is a minus
-sign ('-'), then the sign of the argument will be negative.  Once you
-have typed one meta digit to get the argument started, you can type the
-remainder of the digits, and then the command.  For example, to give the
-'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will
-delete the next ten characters on the input line.
-
-\1f
-File: rluserman.info,  Node: Searching,  Prev: Readline Arguments,  Up: Readline Interaction
-
-1.2.5 Searching for Commands in the History
--------------------------------------------
-
-Readline provides commands for searching through the command history for
-lines containing a specified string.  There are two search modes:
-"incremental" and "non-incremental".
-
-   Incremental searches begin before the user has finished typing the
-search string.  As each character of the search string is typed,
-Readline displays the next entry from the history matching the string
-typed so far.  An incremental search requires only as many characters as
-needed to find the desired history entry.  To search backward in the
-history for a particular string, type 'C-r'.  Typing 'C-s' searches
-forward through the history.  The characters present in the value of the
-'isearch-terminators' variable are used to terminate an incremental
-search.  If that variable has not been assigned a value, the <ESC> and
-'C-J' characters will terminate an incremental search.  'C-g' will abort
-an incremental search and restore the original line.  When the search is
-terminated, the history entry containing the search string becomes the
-current line.
-
-   To find other matching entries in the history list, type 'C-r' or
-'C-s' as appropriate.  This will search backward or forward in the
-history for the next entry matching the search string typed so far.  Any
-other key sequence bound to a Readline command will terminate the search
-and execute that command.  For instance, a <RET> will terminate the
-search and accept the line, thereby executing the command from the
-history list.  A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
-   Readline remembers the last incremental search string.  If two 'C-r's
-are typed without any intervening characters defining a new search
-string, any remembered search string is used.
-
-   Non-incremental searches read the entire search string before
-starting to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
-
-\1f
-File: rluserman.info,  Node: Readline Init File,  Next: Bindable Readline Commands,  Prev: Readline Interaction,  Up: Command Line Editing
-
-1.3 Readline Init File
-======================
-
-Although the Readline library comes with a set of Emacs-like keybindings
-installed by default, it is possible to use a different set of
-keybindings.  Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
-directory.  The name of this file is taken from the value of the
-environment variable 'INPUTRC'.  If that variable is unset, the default
-is '~/.inputrc'.  If that file does not exist or cannot be read, the
-ultimate default is '/etc/inputrc'.
-
-   When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
-
-   In addition, the 'C-x C-r' command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-* Menu:
-
-* Readline Init File Syntax::  Syntax for the commands in the inputrc file.
-
-* Conditional Init Constructs::        Conditional key bindings in the inputrc file.
-
-* Sample Init File::           An example inputrc file.
-
-\1f
-File: rluserman.info,  Node: Readline Init File Syntax,  Next: Conditional Init Constructs,  Up: Readline Init File
-
-1.3.1 Readline Init File Syntax
--------------------------------
-
-There are only a few basic constructs allowed in the Readline init file.
-Blank lines are ignored.  Lines beginning with a '#' are comments.
-Lines beginning with a '$' indicate conditional constructs (*note
-Conditional Init Constructs::).  Other lines denote variable settings
-and key bindings.
-
-Variable Settings
-     You can modify the run-time behavior of Readline by altering the
-     values of variables in Readline using the 'set' command within the
-     init file.  The syntax is simple:
-
-          set VARIABLE VALUE
-
-     Here, for example, is how to change from the default Emacs-like key
-     binding to use 'vi' line editing commands:
-
-          set editing-mode vi
-
-     Variable names and values, where appropriate, are recognized
-     without regard to case.  Unrecognized variable names are ignored.
-
-     Boolean variables (those that can be set to on or off) are set to
-     on if the value is null or empty, ON (case-insensitive), or 1.  Any
-     other value results in the variable being set to off.
-
-     A great deal of run-time behavior is changeable with the following
-     variables.
-
-     'bell-style'
-          Controls what happens when Readline wants to ring the terminal
-          bell.  If set to 'none', Readline never rings the bell.  If
-          set to 'visible', Readline uses a visible bell if one is
-          available.  If set to 'audible' (the default), Readline
-          attempts to ring the terminal's bell.
-
-     'bind-tty-special-chars'
-          If set to 'on' (the default), Readline attempts to bind the
-          control characters treated specially by the kernel's terminal
-          driver to their Readline equivalents.
-
-     'blink-matching-paren'
-          If set to 'on', Readline attempts to briefly move the cursor
-          to an opening parenthesis when a closing parenthesis is
-          inserted.  The default is 'off'.
-
-     'colored-completion-prefix'
-          If set to 'on', when listing completions, Readline displays
-          the common prefix of the set of possible completions using a
-          different color.  The color definitions are taken from the
-          value of the 'LS_COLORS' environment variable.  The default is
-          'off'.
-
-     'colored-stats'
-          If set to 'on', Readline displays possible completions using
-          different colors to indicate their file type.  The color
-          definitions are taken from the value of the 'LS_COLORS'
-          environment variable.  The default is 'off'.
-
-     'comment-begin'
-          The string to insert at the beginning of the line when the
-          'insert-comment' command is executed.  The default value is
-          '"#"'.
-
-     'completion-display-width'
-          The number of screen columns used to display possible matches
-          when performing completion.  The value is ignored if it is
-          less than 0 or greater than the terminal screen width.  A
-          value of 0 will cause matches to be displayed one per line.
-          The default value is -1.
-
-     'completion-ignore-case'
-          If set to 'on', Readline performs filename matching and
-          completion in a case-insensitive fashion.  The default value
-          is 'off'.
-
-     'completion-map-case'
-          If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
-          Readline treats hyphens ('-') and underscores ('_') as
-          equivalent when performing case-insensitive filename matching
-          and completion.
-
-     'completion-prefix-display-length'
-          The length in characters of the common prefix of a list of
-          possible completions that is displayed without modification.
-          When set to a value greater than zero, common prefixes longer
-          than this value are replaced with an ellipsis when displaying
-          possible completions.
-
-     'completion-query-items'
-          The number of possible completions that determines when the
-          user is asked whether the list of possibilities should be
-          displayed.  If the number of possible completions is greater
-          than this value, Readline will ask the user whether or not he
-          wishes to view them; otherwise, they are simply listed.  This
-          variable must be set to an integer value greater than or equal
-          to 0.  A negative value means Readline should never ask.  The
-          default limit is '100'.
-
-     'convert-meta'
-          If set to 'on', Readline will convert characters with the
-          eighth bit set to an ASCII key sequence by stripping the
-          eighth bit and prefixing an <ESC> character, converting them
-          to a meta-prefixed key sequence.  The default value is 'on'.
-
-     'disable-completion'
-          If set to 'On', Readline will inhibit word completion.
-          Completion characters will be inserted into the line as if
-          they had been mapped to 'self-insert'.  The default is 'off'.
-
-     'editing-mode'
-          The 'editing-mode' variable controls which default set of key
-          bindings is used.  By default, Readline starts up in Emacs
-          editing mode, where the keystrokes are most similar to Emacs.
-          This variable can be set to either 'emacs' or 'vi'.
-
-     'emacs-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when emacs editing mode is active.  The
-          value is expanded like a key binding, so the standard set of
-          meta- and control prefixes and backslash escape sequences is
-          available.  Use the '\1' and '\2' escapes to begin and end
-          sequences of non-printing characters, which can be used to
-          embed a terminal control sequence into the mode string.  The
-          default is '@'.
-
-     'echo-control-characters'
-          When set to 'on', on operating systems that indicate they
-          support it, readline echoes a character corresponding to a
-          signal generated from the keyboard.  The default is 'on'.
-
-     'enable-bracketed-paste'
-          When set to 'On', Readline will configure the terminal in a
-          way that will enable it to insert each paste into the editing
-          buffer as a single string of characters, instead of treating
-          each character as if it had been read from the keyboard.  This
-          can prevent pasted characters from being interpreted as
-          editing commands.  The default is 'off'.
-
-     'enable-keypad'
-          When set to 'on', Readline will try to enable the application
-          keypad when it is called.  Some systems need this to enable
-          the arrow keys.  The default is 'off'.
-
-     'enable-meta-key'
-          When set to 'on', Readline will try to enable any meta
-          modifier key the terminal claims to support when it is called.
-          On many terminals, the meta key is used to send eight-bit
-          characters.  The default is 'on'.
-
-     'expand-tilde'
-          If set to 'on', tilde expansion is performed when Readline
-          attempts word completion.  The default is 'off'.
-
-     'history-preserve-point'
-          If set to 'on', the history code attempts to place the point
-          (the current cursor position) at the same location on each
-          history line retrieved with 'previous-history' or
-          'next-history'.  The default is 'off'.
-
-     'history-size'
-          Set the maximum number of history entries saved in the history
-          list.  If set to zero, any existing history entries are
-          deleted and no new entries are saved.  If set to a value less
-          than zero, the number of history entries is not limited.  By
-          default, the number of history entries is not limited.
-
-     'horizontal-scroll-mode'
-          This variable can be set to either 'on' or 'off'.  Setting it
-          to 'on' means that the text of the lines being edited will
-          scroll horizontally on a single screen line when they are
-          longer than the width of the screen, instead of wrapping onto
-          a new screen line.  By default, this variable is set to 'off'.
-
-     'input-meta'
-          If set to 'on', Readline will enable eight-bit input (it will
-          not clear the eighth bit in the characters it reads),
-          regardless of what the terminal claims it can support.  The
-          default value is 'off'.  The name 'meta-flag' is a synonym for
-          this variable.
-
-     'isearch-terminators'
-          The string of characters that should terminate an incremental
-          search without subsequently executing the character as a
-          command (*note Searching::).  If this variable has not been
-          given a value, the characters <ESC> and 'C-J' will terminate
-          an incremental search.
-
-     'keymap'
-          Sets Readline's idea of the current keymap for key binding
-          commands.  Acceptable 'keymap' names are 'emacs',
-          'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
-          'vi-command', and 'vi-insert'.  'vi' is equivalent to
-          'vi-command'; 'emacs' is equivalent to 'emacs-standard'.  The
-          default value is 'emacs'.  The value of the 'editing-mode'
-          variable also affects the default keymap.
-
-     'keyseq-timeout'
-          Specifies the duration Readline will wait for a character when
-          reading an ambiguous key sequence (one that can form a
-          complete key sequence using the input read so far, or can take
-          additional input to complete a longer key sequence).  If no
-          input is received within the timeout, Readline will use the
-          shorter but complete key sequence.  Readline uses this value
-          to determine whether or not input is available on the current
-          input source ('rl_instream' by default).  The value is
-          specified in milliseconds, so a value of 1000 means that
-          Readline will wait one second for additional input.  If this
-          variable is set to a value less than or equal to zero, or to a
-          non-numeric value, Readline will wait until another key is
-          pressed to decide which key sequence to complete.  The default
-          value is '500'.
-
-     'mark-directories'
-          If set to 'on', completed directory names have a slash
-          appended.  The default is 'on'.
-
-     'mark-modified-lines'
-          This variable, when set to 'on', causes Readline to display an
-          asterisk ('*') at the start of history lines which have been
-          modified.  This variable is 'off' by default.
-
-     'mark-symlinked-directories'
-          If set to 'on', completed names which are symbolic links to
-          directories have a slash appended (subject to the value of
-          'mark-directories').  The default is 'off'.
-
-     'match-hidden-files'
-          This variable, when set to 'on', causes Readline to match
-          files whose names begin with a '.' (hidden files) when
-          performing filename completion.  If set to 'off', the leading
-          '.' must be supplied by the user in the filename to be
-          completed.  This variable is 'on' by default.
-
-     'menu-complete-display-prefix'
-          If set to 'on', menu completion displays the common prefix of
-          the list of possible completions (which may be empty) before
-          cycling through the list.  The default is 'off'.
-
-     'output-meta'
-          If set to 'on', Readline will display characters with the
-          eighth bit set directly rather than as a meta-prefixed escape
-          sequence.  The default is 'off'.
-
-     'page-completions'
-          If set to 'on', Readline uses an internal 'more'-like pager to
-          display a screenful of possible completions at a time.  This
-          variable is 'on' by default.
-
-     'print-completions-horizontally'
-          If set to 'on', Readline will display completions with matches
-          sorted horizontally in alphabetical order, rather than down
-          the screen.  The default is 'off'.
-
-     'revert-all-at-newline'
-          If set to 'on', Readline will undo all changes to history
-          lines before returning when 'accept-line' is executed.  By
-          default, history lines may be modified and retain individual
-          undo lists across calls to 'readline'.  The default is 'off'.
-
-     'show-all-if-ambiguous'
-          This alters the default behavior of the completion functions.
-          If set to 'on', words which have more than one possible
-          completion cause the matches to be listed immediately instead
-          of ringing the bell.  The default value is 'off'.
-
-     'show-all-if-unmodified'
-          This alters the default behavior of the completion functions
-          in a fashion similar to SHOW-ALL-IF-AMBIGUOUS.  If set to
-          'on', words which have more than one possible completion
-          without any possible partial completion (the possible
-          completions don't share a common prefix) cause the matches to
-          be listed immediately instead of ringing the bell.  The
-          default value is 'off'.
-
-     'show-mode-in-prompt'
-          If set to 'on', add a character to the beginning of the prompt
-          indicating the editing mode: emacs, vi command, or vi
-          insertion.  The mode strings are user-settable.  The default
-          value is 'off'.
-
-     'skip-completed-text'
-          If set to 'on', this alters the default completion behavior
-          when inserting a single match into the line.  It's only active
-          when performing completion in the middle of a word.  If
-          enabled, readline does not insert characters from the
-          completion that match characters after point in the word being
-          completed, so portions of the word following the cursor are
-          not duplicated.  For instance, if this is enabled, attempting
-          completion when the cursor is after the 'e' in 'Makefile' will
-          result in 'Makefile' rather than 'Makefilefile', assuming
-          there is a single possible completion.  The default value is
-          'off'.
-
-     'vi-cmd-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when vi editing mode is active and in
-          command mode.  The value is expanded like a key binding, so
-          the standard set of meta- and control prefixes and backslash
-          escape sequences is available.  Use the '\1' and '\2' escapes
-          to begin and end sequences of non-printing characters, which
-          can be used to embed a terminal control sequence into the mode
-          string.  The default is '(cmd)'.
-
-     'vi-ins-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when vi editing mode is active and in
-          insertion mode.  The value is expanded like a key binding, so
-          the standard set of meta- and control prefixes and backslash
-          escape sequences is available.  Use the '\1' and '\2' escapes
-          to begin and end sequences of non-printing characters, which
-          can be used to embed a terminal control sequence into the mode
-          string.  The default is '(ins)'.
-
-     'visible-stats'
-          If set to 'on', a character denoting a file's type is appended
-          to the filename when listing possible completions.  The
-          default is 'off'.
-
-Key Bindings
-     The syntax for controlling key bindings in the init file is simple.
-     First you need to find the name of the command that you want to
-     change.  The following sections contain tables of the command name,
-     the default keybinding, if any, and a short description of what the
-     command does.
-
-     Once you know the name of the command, simply place on a line in
-     the init file the name of the key you wish to bind the command to,
-     a colon, and then the name of the command.  There can be no space
-     between the key name and the colon - that will be interpreted as
-     part of the key name.  The name of the key can be expressed in
-     different ways, depending on what you find most comfortable.
-
-     In addition to command names, readline allows keys to be bound to a
-     string that is inserted when the key is pressed (a MACRO).
-
-     KEYNAME: FUNCTION-NAME or MACRO
-          KEYNAME is the name of a key spelled out in English.  For
-          example:
-               Control-u: universal-argument
-               Meta-Rubout: backward-kill-word
-               Control-o: "> output"
-
-          In the above example, 'C-u' is bound to the function
-          'universal-argument', 'M-DEL' is bound to the function
-          'backward-kill-word', and 'C-o' is bound to run the macro
-          expressed on the right hand side (that is, to insert the text
-          '> output' into the line).
-
-          A number of symbolic character names are recognized while
-          processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
-          NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
-
-     "KEYSEQ": FUNCTION-NAME or MACRO
-          KEYSEQ differs from KEYNAME above in that strings denoting an
-          entire key sequence can be specified, by placing the key
-          sequence in double quotes.  Some GNU Emacs style key escapes
-          can be used, as in the following example, but the special
-          character names are not recognized.
-
-               "\C-u": universal-argument
-               "\C-x\C-r": re-read-init-file
-               "\e[11~": "Function Key 1"
-
-          In the above example, 'C-u' is again bound to the function
-          'universal-argument' (just as it was in the first example),
-          ''C-x' 'C-r'' is bound to the function 're-read-init-file',
-          and '<ESC> <[> <1> <1> <~>' is bound to insert the text
-          'Function Key 1'.
-
-     The following GNU Emacs style escape sequences are available when
-     specifying key sequences:
-
-     '\C-'
-          control prefix
-     '\M-'
-          meta prefix
-     '\e'
-          an escape character
-     '\\'
-          backslash
-     '\"'
-          <">, a double quotation mark
-     '\''
-          <'>, a single quote or apostrophe
-
-     In addition to the GNU Emacs style escape sequences, a second set
-     of backslash escapes is available:
-
-     '\a'
-          alert (bell)
-     '\b'
-          backspace
-     '\d'
-          delete
-     '\f'
-          form feed
-     '\n'
-          newline
-     '\r'
-          carriage return
-     '\t'
-          horizontal tab
-     '\v'
-          vertical tab
-     '\NNN'
-          the eight-bit character whose value is the octal value NNN
-          (one to three digits)
-     '\xHH'
-          the eight-bit character whose value is the hexadecimal value
-          HH (one or two hex digits)
-
-     When entering the text of a macro, single or double quotes must be
-     used to indicate a macro definition.  Unquoted text is assumed to
-     be a function name.  In the macro body, the backslash escapes
-     described above are expanded.  Backslash will quote any other
-     character in the macro text, including '"' and '''.  For example,
-     the following binding will make ''C-x' \' insert a single '\' into
-     the line:
-          "\C-x\\": "\\"
-
-\1f
-File: rluserman.info,  Node: Conditional Init Constructs,  Next: Sample Init File,  Prev: Readline Init File Syntax,  Up: Readline Init File
-
-1.3.2 Conditional Init Constructs
----------------------------------
-
-Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key bindings and
-variable settings to be performed as the result of tests.  There are
-four parser directives used.
-
-'$if'
-     The '$if' construct allows bindings to be made based on the editing
-     mode, the terminal being used, or the application using Readline.
-     The text of the test extends to the end of the line; no characters
-     are required to isolate it.
-
-     'mode'
-          The 'mode=' form of the '$if' directive is used to test
-          whether Readline is in 'emacs' or 'vi' mode.  This may be used
-          in conjunction with the 'set keymap' command, for instance, to
-          set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps
-          only if Readline is starting out in 'emacs' mode.
-
-     'term'
-          The 'term=' form may be used to include terminal-specific key
-          bindings, perhaps to bind the key sequences output by the
-          terminal's function keys.  The word on the right side of the
-          '=' is tested against both the full name of the terminal and
-          the portion of the terminal name before the first '-'.  This
-          allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
-
-     'application'
-          The APPLICATION construct is used to include
-          application-specific settings.  Each program using the
-          Readline library sets the APPLICATION NAME, and you can test
-          for a particular value.  This could be used to bind key
-          sequences to functions useful for a specific program.  For
-          instance, the following command adds a key sequence that
-          quotes the current or previous word in Bash:
-               $if Bash
-               # Quote the current or previous word
-               "\C-xq": "\eb\"\ef\""
-               $endif
-
-'$endif'
-     This command, as seen in the previous example, terminates an '$if'
-     command.
-
-'$else'
-     Commands in this branch of the '$if' directive are executed if the
-     test fails.
-
-'$include'
-     This directive takes a single filename as an argument and reads
-     commands and bindings from that file.  For example, the following
-     directive reads from '/etc/inputrc':
-          $include /etc/inputrc
-
-\1f
-File: rluserman.info,  Node: Sample Init File,  Prev: Conditional Init Constructs,  Up: Readline Init File
-
-1.3.3 Sample Init File
-----------------------
-
-Here is an example of an INPUTRC file.  This illustrates key binding,
-variable assignment, and conditional syntax.
-
-     # This file controls the behaviour of line input editing for
-     # programs that use the GNU Readline library.  Existing
-     # programs include FTP, Bash, and GDB.
-     #
-     # You can re-read the inputrc file with C-x C-r.
-     # Lines beginning with '#' are comments.
-     #
-     # First, include any system-wide bindings and variable
-     # assignments from /etc/Inputrc
-     $include /etc/Inputrc
-
-     #
-     # Set various bindings for emacs mode.
-
-     set editing-mode emacs
-
-     $if mode=emacs
-
-     Meta-Control-h:   backward-kill-word      Text after the function name is ignored
-
-     #
-     # Arrow keys in keypad mode
-     #
-     #"\M-OD":        backward-char
-     #"\M-OC":        forward-char
-     #"\M-OA":        previous-history
-     #"\M-OB":        next-history
-     #
-     # Arrow keys in ANSI mode
-     #
-     "\M-[D":        backward-char
-     "\M-[C":        forward-char
-     "\M-[A":        previous-history
-     "\M-[B":        next-history
-     #
-     # Arrow keys in 8 bit keypad mode
-     #
-     #"\M-\C-OD":       backward-char
-     #"\M-\C-OC":       forward-char
-     #"\M-\C-OA":       previous-history
-     #"\M-\C-OB":       next-history
-     #
-     # Arrow keys in 8 bit ANSI mode
-     #
-     #"\M-\C-[D":       backward-char
-     #"\M-\C-[C":       forward-char
-     #"\M-\C-[A":       previous-history
-     #"\M-\C-[B":       next-history
-
-     C-q: quoted-insert
-
-     $endif
-
-     # An old-style binding.  This happens to be the default.
-     TAB: complete
-
-     # Macros that are convenient for shell interaction
-     $if Bash
-     # edit the path
-     "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-     # prepare to type a quoted word --
-     # insert open and close double quotes
-     # and move to just after the open quote
-     "\C-x\"": "\"\"\C-b"
-     # insert a backslash (testing backslash escapes
-     # in sequences and macros)
-     "\C-x\\": "\\"
-     # Quote the current or previous word
-     "\C-xq": "\eb\"\ef\""
-     # Add a binding to refresh the line, which is unbound
-     "\C-xr": redraw-current-line
-     # Edit variable on current line.
-     "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-     $endif
-
-     # use a visible bell if one is available
-     set bell-style visible
-
-     # don't strip characters to 7 bits when reading
-     set input-meta on
-
-     # allow iso-latin1 characters to be inserted rather
-     # than converted to prefix-meta sequences
-     set convert-meta off
-
-     # display characters with the eighth bit set directly
-     # rather than as meta-prefixed characters
-     set output-meta on
-
-     # if there are more than 150 possible completions for
-     # a word, ask the user if he wants to see all of them
-     set completion-query-items 150
-
-     # For FTP
-     $if Ftp
-     "\C-xg": "get \M-?"
-     "\C-xt": "put \M-?"
-     "\M-.": yank-last-arg
-     $endif
-
-\1f
-File: rluserman.info,  Node: Bindable Readline Commands,  Next: Readline vi Mode,  Prev: Readline Init File,  Up: Command Line Editing
-
-1.4 Bindable Readline Commands
-==============================
-
-* Menu:
-
-* Commands For Moving::                Moving about the line.
-* Commands For History::       Getting at previous lines.
-* Commands For Text::          Commands for changing text.
-* Commands For Killing::       Commands for killing and yanking.
-* Numeric Arguments::          Specifying numeric arguments, repeat counts.
-* Commands For Completion::    Getting Readline to do the typing for you.
-* Keyboard Macros::            Saving and re-executing typed characters
-* Miscellaneous Commands::     Other miscellaneous commands.
-
-This section describes Readline commands that may be bound to key
-sequences.  Command names without an accompanying key sequence are
-unbound by default.
-
-   In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the 'set-mark'
-command.  The text between the point and mark is referred to as the
-"region".
-
-\1f
-File: rluserman.info,  Node: Commands For Moving,  Next: Commands For History,  Up: Bindable Readline Commands
-
-1.4.1 Commands For Moving
--------------------------
-
-'beginning-of-line (C-a)'
-     Move to the start of the current line.
-
-'end-of-line (C-e)'
-     Move to the end of the line.
-
-'forward-char (C-f)'
-     Move forward a character.
-
-'backward-char (C-b)'
-     Move back a character.
-
-'forward-word (M-f)'
-     Move forward to the end of the next word.  Words are composed of
-     letters and digits.
-
-'backward-word (M-b)'
-     Move back to the start of the current or previous word.  Words are
-     composed of letters and digits.
-
-'clear-screen (C-l)'
-     Clear the screen and redraw the current line, leaving the current
-     line at the top of the screen.
-
-'redraw-current-line ()'
-     Refresh the current line.  By default, this is unbound.
-
-\1f
-File: rluserman.info,  Node: Commands For History,  Next: Commands For Text,  Prev: Commands For Moving,  Up: Bindable Readline Commands
-
-1.4.2 Commands For Manipulating The History
--------------------------------------------
-
-'accept-line (Newline or Return)'
-     Accept the line regardless of where the cursor is.  If this line is
-     non-empty, it may be added to the history list for future recall
-     with 'add_history()'.  If this line is a modified history line, the
-     history line is restored to its original state.
-
-'previous-history (C-p)'
-     Move 'back' through the history list, fetching the previous
-     command.
-
-'next-history (C-n)'
-     Move 'forward' through the history list, fetching the next command.
-
-'beginning-of-history (M-<)'
-     Move to the first line in the history.
-
-'end-of-history (M->)'
-     Move to the end of the input history, i.e., the line currently
-     being entered.
-
-'reverse-search-history (C-r)'
-     Search backward starting at the current line and moving 'up'
-     through the history as necessary.  This is an incremental search.
-
-'forward-search-history (C-s)'
-     Search forward starting at the current line and moving 'down'
-     through the history as necessary.  This is an incremental search.
-
-'non-incremental-reverse-search-history (M-p)'
-     Search backward starting at the current line and moving 'up'
-     through the history as necessary using a non-incremental search for
-     a string supplied by the user.  The search string may match
-     anywhere in a history line.
-
-'non-incremental-forward-search-history (M-n)'
-     Search forward starting at the current line and moving 'down'
-     through the history as necessary using a non-incremental search for
-     a string supplied by the user.  The search string may match
-     anywhere in a history line.
-
-'history-search-forward ()'
-     Search forward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-'history-search-backward ()'
-     Search backward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-'history-substr-search-forward ()'
-     Search forward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string may match anywhere in a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-'history-substr-search-backward ()'
-     Search backward through the history for the string of characters
-     between the start of the current line and the point.  The search
-     string may match anywhere in a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
-
-'yank-nth-arg (M-C-y)'
-     Insert the first argument to the previous command (usually the
-     second word on the previous line) at point.  With an argument N,
-     insert the Nth word from the previous command (the words in the
-     previous command begin with word 0).  A negative argument inserts
-     the Nth word from the end of the previous command.  Once the
-     argument N is computed, the argument is extracted as if the '!N'
-     history expansion had been specified.
-
-'yank-last-arg (M-. or M-_)'
-     Insert last argument to the previous command (the last word of the
-     previous history entry).  With a numeric argument, behave exactly
-     like 'yank-nth-arg'.  Successive calls to 'yank-last-arg' move back
-     through the history list, inserting the last word (or the word
-     specified by the argument to the first call) of each line in turn.
-     Any numeric argument supplied to these successive calls determines
-     the direction to move through the history.  A negative argument
-     switches the direction through the history (back or forward).  The
-     history expansion facilities are used to extract the last argument,
-     as if the '!$' history expansion had been specified.
-
-\1f
-File: rluserman.info,  Node: Commands For Text,  Next: Commands For Killing,  Prev: Commands For History,  Up: Bindable Readline Commands
-
-1.4.3 Commands For Changing Text
---------------------------------
-
-'end-of-file (usually C-d)'
-     The character indicating end-of-file as set, for example, by
-     'stty'.  If this character is read when there are no characters on
-     the line, and point is at the beginning of the line, Readline
-     interprets it as the end of input and returns EOF.
-
-'delete-char (C-d)'
-     Delete the character at point.  If this function is bound to the
-     same character as the tty EOF character, as 'C-d' commonly is, see
-     above for the effects.
-
-'backward-delete-char (Rubout)'
-     Delete the character behind the cursor.  A numeric argument means
-     to kill the characters instead of deleting them.
-
-'forward-backward-delete-char ()'
-     Delete the character under the cursor, unless the cursor is at the
-     end of the line, in which case the character behind the cursor is
-     deleted.  By default, this is not bound to a key.
-
-'quoted-insert (C-q or C-v)'
-     Add the next character typed to the line verbatim.  This is how to
-     insert key sequences like 'C-q', for example.
-
-'tab-insert (M-<TAB>)'
-     Insert a tab character.
-
-'self-insert (a, b, A, 1, !, ...)'
-     Insert yourself.
-
-'bracketed-paste-begin ()'
-     This function is intended to be bound to the "bracketed paste"
-     escape sequence sent by some terminals, and such a binding is
-     assigned by default.  It allows Readline to insert the pasted text
-     as a single unit without treating each character as if it had been
-     read from the keyboard.  The characters are inserted as if each one
-     was bound to 'self-insert') instead of executing any editing
-     commands.
-
-'transpose-chars (C-t)'
-     Drag the character before the cursor forward over the character at
-     the cursor, moving the cursor forward as well.  If the insertion
-     point is at the end of the line, then this transposes the last two
-     characters of the line.  Negative arguments have no effect.
-
-'transpose-words (M-t)'
-     Drag the word before point past the word after point, moving point
-     past that word as well.  If the insertion point is at the end of
-     the line, this transposes the last two words on the line.
-
-'upcase-word (M-u)'
-     Uppercase the current (or following) word.  With a negative
-     argument, uppercase the previous word, but do not move the cursor.
-
-'downcase-word (M-l)'
-     Lowercase the current (or following) word.  With a negative
-     argument, lowercase the previous word, but do not move the cursor.
-
-'capitalize-word (M-c)'
-     Capitalize the current (or following) word.  With a negative
-     argument, capitalize the previous word, but do not move the cursor.
-
-'overwrite-mode ()'
-     Toggle overwrite mode.  With an explicit positive numeric argument,
-     switches to overwrite mode.  With an explicit non-positive numeric
-     argument, switches to insert mode.  This command affects only
-     'emacs' mode; 'vi' mode does overwrite differently.  Each call to
-     'readline()' starts in insert mode.
-
-     In overwrite mode, characters bound to 'self-insert' replace the
-     text at point rather than pushing the text to the right.
-     Characters bound to 'backward-delete-char' replace the character
-     before point with a space.
-
-     By default, this command is unbound.
-
-\1f
-File: rluserman.info,  Node: Commands For Killing,  Next: Numeric Arguments,  Prev: Commands For Text,  Up: Bindable Readline Commands
-
-1.4.4 Killing And Yanking
--------------------------
-
-'kill-line (C-k)'
-     Kill the text from point to the end of the line.
-
-'backward-kill-line (C-x Rubout)'
-     Kill backward from the cursor to the beginning of the current line.
-
-'unix-line-discard (C-u)'
-     Kill backward from the cursor to the beginning of the current line.
-
-'kill-whole-line ()'
-     Kill all characters on the current line, no matter where point is.
-     By default, this is unbound.
-
-'kill-word (M-d)'
-     Kill from point to the end of the current word, or if between
-     words, to the end of the next word.  Word boundaries are the same
-     as 'forward-word'.
-
-'backward-kill-word (M-<DEL>)'
-     Kill the word behind point.  Word boundaries are the same as
-     'backward-word'.
-
-'unix-word-rubout (C-w)'
-     Kill the word behind point, using white space as a word boundary.
-     The killed text is saved on the kill-ring.
-
-'unix-filename-rubout ()'
-     Kill the word behind point, using white space and the slash
-     character as the word boundaries.  The killed text is saved on the
-     kill-ring.
-
-'delete-horizontal-space ()'
-     Delete all spaces and tabs around point.  By default, this is
-     unbound.
-
-'kill-region ()'
-     Kill the text in the current region.  By default, this command is
-     unbound.
-
-'copy-region-as-kill ()'
-     Copy the text in the region to the kill buffer, so it can be yanked
-     right away.  By default, this command is unbound.
-
-'copy-backward-word ()'
-     Copy the word before point to the kill buffer.  The word boundaries
-     are the same as 'backward-word'.  By default, this command is
-     unbound.
-
-'copy-forward-word ()'
-     Copy the word following point to the kill buffer.  The word
-     boundaries are the same as 'forward-word'.  By default, this
-     command is unbound.
-
-'yank (C-y)'
-     Yank the top of the kill ring into the buffer at point.
-
-'yank-pop (M-y)'
-     Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is 'yank' or 'yank-pop'.
-
-\1f
-File: rluserman.info,  Node: Numeric Arguments,  Next: Commands For Completion,  Prev: Commands For Killing,  Up: Bindable Readline Commands
-
-1.4.5 Specifying Numeric Arguments
-----------------------------------
-
-'digit-argument (M-0, M-1, ... M--)'
-     Add this digit to the argument already accumulating, or start a new
-     argument.  'M--' starts a negative argument.
-
-'universal-argument ()'
-     This is another way to specify an argument.  If this command is
-     followed by one or more digits, optionally with a leading minus
-     sign, those digits define the argument.  If the command is followed
-     by digits, executing 'universal-argument' again ends the numeric
-     argument, but is otherwise ignored.  As a special case, if this
-     command is immediately followed by a character that is neither a
-     digit nor minus sign, the argument count for the next command is
-     multiplied by four.  The argument count is initially one, so
-     executing this function the first time makes the argument count
-     four, a second time makes the argument count sixteen, and so on.
-     By default, this is not bound to a key.
-
-\1f
-File: rluserman.info,  Node: Commands For Completion,  Next: Keyboard Macros,  Prev: Numeric Arguments,  Up: Bindable Readline Commands
-
-1.4.6 Letting Readline Type For You
------------------------------------
-
-'complete (<TAB>)'
-     Attempt to perform completion on the text before point.  The actual
-     completion performed is application-specific.  The default is
-     filename completion.
-
-'possible-completions (M-?)'
-     List the possible completions of the text before point.  When
-     displaying completions, Readline sets the number of columns used
-     for display to the value of 'completion-display-width', the value
-     of the environment variable 'COLUMNS', or the screen width, in that
-     order.
-
-'insert-completions (M-*)'
-     Insert all completions of the text before point that would have
-     been generated by 'possible-completions'.
-
-'menu-complete ()'
-     Similar to 'complete', but replaces the word to be completed with a
-     single match from the list of possible completions.  Repeated
-     execution of 'menu-complete' steps through the list of possible
-     completions, inserting each match in turn.  At the end of the list
-     of completions, the bell is rung (subject to the setting of
-     'bell-style') and the original text is restored.  An argument of N
-     moves N positions forward in the list of matches; a negative
-     argument may be used to move backward through the list.  This
-     command is intended to be bound to <TAB>, but is unbound by
-     default.
-
-'menu-complete-backward ()'
-     Identical to 'menu-complete', but moves backward through the list
-     of possible completions, as if 'menu-complete' had been given a
-     negative argument.
-
-'delete-char-or-list ()'
-     Deletes the character under the cursor if not at the beginning or
-     end of the line (like 'delete-char').  If at the end of the line,
-     behaves identically to 'possible-completions'.  This command is
-     unbound by default.
-
-\1f
-File: rluserman.info,  Node: Keyboard Macros,  Next: Miscellaneous Commands,  Prev: Commands For Completion,  Up: Bindable Readline Commands
-
-1.4.7 Keyboard Macros
----------------------
-
-'start-kbd-macro (C-x ()'
-     Begin saving the characters typed into the current keyboard macro.
-
-'end-kbd-macro (C-x ))'
-     Stop saving the characters typed into the current keyboard macro
-     and save the definition.
-
-'call-last-kbd-macro (C-x e)'
-     Re-execute the last keyboard macro defined, by making the
-     characters in the macro appear as if typed at the keyboard.
-
-'print-last-kbd-macro ()'
-     Print the last keboard macro defined in a format suitable for the
-     INPUTRC file.
-
-\1f
-File: rluserman.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up: Bindable Readline Commands
-
-1.4.8 Some Miscellaneous Commands
----------------------------------
-
-'re-read-init-file (C-x C-r)'
-     Read in the contents of the INPUTRC file, and incorporate any
-     bindings or variable assignments found there.
-
-'abort (C-g)'
-     Abort the current editing command and ring the terminal's bell
-     (subject to the setting of 'bell-style').
-
-'do-uppercase-version (M-a, M-b, M-X, ...)'
-     If the metafied character X is lowercase, run the command that is
-     bound to the corresponding uppercase character.
-
-'prefix-meta (<ESC>)'
-     Metafy the next character typed.  This is for keyboards without a
-     meta key.  Typing '<ESC> f' is equivalent to typing 'M-f'.
-
-'undo (C-_ or C-x C-u)'
-     Incremental undo, separately remembered for each line.
-
-'revert-line (M-r)'
-     Undo all changes made to this line.  This is like executing the
-     'undo' command enough times to get back to the beginning.
-
-'tilde-expand (M-~)'
-     Perform tilde expansion on the current word.
-
-'set-mark (C-@)'
-     Set the mark to the point.  If a numeric argument is supplied, the
-     mark is set to that position.
-
-'exchange-point-and-mark (C-x C-x)'
-     Swap the point with the mark.  The current cursor position is set
-     to the saved position, and the old cursor position is saved as the
-     mark.
-
-'character-search (C-])'
-     A character is read and point is moved to the next occurrence of
-     that character.  A negative count searches for previous
-     occurrences.
-
-'character-search-backward (M-C-])'
-     A character is read and point is moved to the previous occurrence
-     of that character.  A negative count searches for subsequent
-     occurrences.
-
-'skip-csi-sequence ()'
-     Read enough characters to consume a multi-key sequence such as
-     those defined for keys like Home and End.  Such sequences begin
-     with a Control Sequence Indicator (CSI), usually ESC-[.  If this
-     sequence is bound to "\e[", keys producing such sequences will have
-     no effect unless explicitly bound to a readline command, instead of
-     inserting stray characters into the editing buffer.  This is
-     unbound by default, but usually bound to ESC-[.
-
-'insert-comment (M-#)'
-     Without a numeric argument, the value of the 'comment-begin'
-     variable is inserted at the beginning of the current line.  If a
-     numeric argument is supplied, this command acts as a toggle: if the
-     characters at the beginning of the line do not match the value of
-     'comment-begin', the value is inserted, otherwise the characters in
-     'comment-begin' are deleted from the beginning of the line.  In
-     either case, the line is accepted as if a newline had been typed.
-
-'dump-functions ()'
-     Print all of the functions and their key bindings to the Readline
-     output stream.  If a numeric argument is supplied, the output is
-     formatted in such a way that it can be made part of an INPUTRC
-     file.  This command is unbound by default.
-
-'dump-variables ()'
-     Print all of the settable variables and their values to the
-     Readline output stream.  If a numeric argument is supplied, the
-     output is formatted in such a way that it can be made part of an
-     INPUTRC file.  This command is unbound by default.
-
-'dump-macros ()'
-     Print all of the Readline key sequences bound to macros and the
-     strings they output.  If a numeric argument is supplied, the output
-     is formatted in such a way that it can be made part of an INPUTRC
-     file.  This command is unbound by default.
-
-'emacs-editing-mode (C-e)'
-     When in 'vi' command mode, this causes a switch to 'emacs' editing
-     mode.
-
-'vi-editing-mode (M-C-j)'
-     When in 'emacs' editing mode, this causes a switch to 'vi' editing
-     mode.
-
-\1f
-File: rluserman.info,  Node: Readline vi Mode,  Prev: Bindable Readline Commands,  Up: Command Line Editing
-
-1.5 Readline vi Mode
-====================
-
-While the Readline library does not have a full set of 'vi' editing
-functions, it does contain enough to allow simple editing of the line.
-The Readline 'vi' mode behaves as specified in the POSIX standard.
-
-   In order to switch interactively between 'emacs' and 'vi' editing
-modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi'
-mode and to vi-editing-mode in 'emacs' mode).  The Readline default is
-'emacs' mode.
-
-   When you enter a line in 'vi' mode, you are already placed in
-'insertion' mode, as if you had typed an 'i'.  Pressing <ESC> switches
-you into 'command' mode, where you can edit the text of the line with
-the standard 'vi' movement keys, move to previous history lines with 'k'
-and subsequent lines with 'j', and so forth.
-
-\1f
-File: rluserman.info,  Node: GNU Free Documentation License,  Prev: Command Line Editing,  Up: Top
-
-Appendix A GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     <http://fsf.org/>
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.  We
-     recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it can
-     be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You accept
-     the license if you copy, modify or distribute the work in a way
-     requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in the
-     notice that says that the Document is released under this License.
-     If a section does not fit the above definition of Secondary then it
-     is not allowed to be designated as Invariant.  The Document may
-     contain zero Invariant Sections.  If the Document does not identify
-     any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images composed
-     of pixels) generic paint programs or (for drawings) some widely
-     available drawing editor, and that is suitable for input to text
-     formatters or for automatic translation to a variety of formats
-     suitable for input to text formatters.  A copy made in an otherwise
-     Transparent file format whose markup, or absence of markup, has
-     been arranged to thwart or discourage subsequent modification by
-     readers is not Transparent.  An image format is not Transparent if
-     used for any substantial amount of text.  A copy that is not
-     "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and standard-conforming
-     simple HTML, PostScript or PDF designed for human modification.
-     Examples of transparent image formats include PNG, XCF and JPG.
-     Opaque formats include proprietary formats that can be read and
-     edited only by proprietary word processors, SGML or XML for which
-     the DTD and/or processing tools are not generally available, and
-     the machine-generated HTML, PostScript or PDF produced by some word
-     processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow the
-     conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the title
-     equally prominent and visible.  You may add other material on the
-     covers in addition.  Copying with changes limited to the covers, as
-     long as they preserve the title of the Document and satisfy these
-     conditions, can be treated as verbatim copying in other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a machine-readable
-     Transparent copy along with each Opaque copy, or state in or with
-     each Opaque copy a computer-network location from which the general
-     network-using public has access to download using public-standard
-     network protocols a complete Transparent copy of the Document, free
-     of added material.  If you use the latter option, you must take
-     reasonably prudent steps, when you begin distribution of Opaque
-     copies in quantity, to ensure that this Transparent copy will
-     remain thus accessible at the stated location until at least one
-     year after the last time you distribute an Opaque copy (directly or
-     through your agents or retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of copies,
-     to give them a chance to provide you with an updated version of the
-     Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with the
-     Modified Version filling the role of the Document, thus licensing
-     distribution and modification of the Modified Version to whoever
-     possesses a copy of it.  In addition, you must do these things in
-     the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of previous
-          versions (which should, if there were any, be listed in the
-          History section of the Document).  You may use the same title
-          as a previous version if the original publisher of that
-          version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on the
-          Title Page.  If there is no section Entitled "History" in the
-          Document, create one stating the title, year, authors, and
-          publisher of the Document as given on its Title Page, then add
-          an item describing the Modified Version as stated in the
-          previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in the
-          "History" section.  You may omit a network location for a work
-          that was published at least four years before the Document
-          itself, or if the original publisher of the version it refers
-          to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the section
-          all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document, unaltered
-          in their text and in their titles.  Section numbers or the
-          equivalent are not considered part of the section titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option designate
-     some or all of these sections as invariant.  To do this, add their
-     titles to the list of Invariant Sections in the Modified Version's
-     license notice.  These titles must be distinct from any other
-     section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end of
-     the list of Cover Texts in the Modified Version.  Only one passage
-     of Front-Cover Text and one of Back-Cover Text may be added by (or
-     through arrangements made by) any one entity.  If the Document
-     already includes a cover text for the same cover, previously added
-     by you or by arrangement made by the same entity you are acting on
-     behalf of, you may not add another; but you may replace the old
-     one, on explicit permission from the previous publisher that added
-     the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination all
-     of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the documents
-     in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow this
-     License in all other respects regarding verbatim copying of that
-     document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of a
-     storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly and
-     finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from you
-     under this License.  If your rights have been terminated and not
-     permanently reinstated, receipt of a copy of some or all of the
-     same material does not give you any rights to use it.
-
-  10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     <http://www.gnu.org/copyleft/>.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If the
-     Document does not specify a version number of this License, you may
-     choose any version ever published (not as a draft) by the Free
-     Software Foundation.  If the Document specifies that a proxy can
-     decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
-  11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts."  line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of free
-software license, such as the GNU General Public License, to permit
-their use in free software.
-
-
-\1f
-Tag Table:
-Node: Top\7f903
-Node: Command Line Editing\7f1425
-Node: Introduction and Notation\7f2079
-Node: Readline Interaction\7f3704
-Node: Readline Bare Essentials\7f4897
-Node: Readline Movement Commands\7f6682
-Node: Readline Killing Commands\7f7644
-Node: Readline Arguments\7f9564
-Node: Searching\7f10610
-Node: Readline Init File\7f12764
-Node: Readline Init File Syntax\7f13919
-Node: Conditional Init Constructs\7f33365
-Node: Sample Init File\7f35892
-Node: Bindable Readline Commands\7f39011
-Node: Commands For Moving\7f40067
-Node: Commands For History\7f40929
-Node: Commands For Text\7f45189
-Node: Commands For Killing\7f48633
-Node: Numeric Arguments\7f50801
-Node: Commands For Completion\7f51942
-Node: Keyboard Macros\7f53912
-Node: Miscellaneous Commands\7f54601
-Node: Readline vi Mode\7f58453
-Node: GNU Free Documentation License\7f59367
-\1f
-End Tag Table
diff --git a/lib/readline/doc/rluserman.ky b/lib/readline/doc/rluserman.ky
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rluserman.log b/lib/readline/doc/rluserman.log
deleted file mode 100644 (file)
index 9ee363a..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/MacPorts 2014_9) (preloaded format=etex 2014.11.4)  1 JUL 2015 10:33
-entering extended mode
- restricted \write18 enabled.
- file:line:error style messages enabled.
- %&-line parsing enabled.
-**\input ././rluserman.texi
-(././rluserman.texi (./texinfo.tex Loading texinfo [version 2013-09-11.11]:
-\bindingoffset=\dimen16
-\normaloffset=\dimen17
-\pagewidth=\dimen18
-\pageheight=\dimen19
-\outerhsize=\dimen20
-\outervsize=\dimen21
-\cornerlong=\dimen22
-\cornerthick=\dimen23
-\topandbottommargin=\dimen24
-\headlinebox=\box16
-\footlinebox=\box17
-\margin=\insert252
-\EMsimple=\toks13
-\groupbox=\box18
-\groupinvalidhelp=\toks14
-\mil=\dimen25
-\exdentamount=\skip18
-\inmarginspacing=\skip19
-\centerpenalty=\count27
-
-pdf,
-\tempnum=\count28
-\lnkcount=\count29
-\filename=\toks15
-\filenamelength=\count30
-\pgn=\count31
-\toksA=\toks16
-\toksB=\toks17
-\toksC=\toks18
-\toksD=\toks19
-\boxA=\box19
-\countA=\count32
-\nopdfimagehelp=\toks20
- fonts,
-\sffam=\fam8
-\textleading=\dimen26
- markup,
-\fontdepth=\count33
- glyphs,
-\errorbox=\box20
- page headings,
-\titlepagetopglue=\skip20
-\titlepagebottomglue=\skip21
-\evenheadline=\toks21
-\oddheadline=\toks22
-\evenfootline=\toks23
-\oddfootline=\toks24
- tables,
-\tableindent=\dimen27
-\itemindent=\dimen28
-\itemmargin=\dimen29
-\itemmax=\dimen30
-\itemno=\count34
-\multitableparskip=\skip22
-\multitableparindent=\skip23
-\multitablecolspace=\dimen31
-\multitablelinespace=\skip24
-\colcount=\count35
-\everytab=\toks25
- conditionals,
-\doignorecount=\count36
- indexing,
-\whatsitskip=\skip25
-\whatsitpenalty=\count37
-\secondaryindent=\skip26
-\partialpage=\box21
-\doublecolumnhsize=\dimen32
-
-sectioning,
-\unnumberedno=\count38
-\chapno=\count39
-\secno=\count40
-\subsecno=\count41
-\subsubsecno=\count42
-\appendixno=\count43
-\absseclevel=\count44
-\secbase=\count45
-\chapheadingskip=\skip27
-\secheadingskip=\skip28
-\subsecheadingskip=\skip29
- toc,
-\tocfile=\write0
-\contentsrightmargin=\skip30
-\savepageno=\count46
-\lastnegativepageno=\count47
-\tocindent=\dimen33
- environments,
-\lispnarrowing=\skip31
-\envskipamount=\skip32
-\circthick=\dimen34
-\cartouter=\dimen35
-\cartinner=\dimen36
-\normbskip=\skip33
-\normpskip=\skip34
-\normlskip=\skip35
-\lskip=\skip36
-\rskip=\skip37
-\nonfillparindent=\dimen37
-\tabw=\dimen38
-\verbbox=\box22
- defuns,
-\defbodyindent=\skip38
-\defargsindent=\skip39
-\deflastargmargin=\skip40
-\defunpenalty=\count48
-\parencount=\count49
-\brackcount=\count50
- macros,
-\paramno=\count51
-\macname=\toks26
- cross references,
-\auxfile=\write1
-\savesfregister=\count52
-\toprefbox=\box23
-\printedrefnamebox=\box24
-\infofilenamebox=\box25
-\printedmanualbox=\box26
- insertions,
-\footnoteno=\count53
-\SAVEfootins=\box27
-\SAVEmargin=\box28
-
-(/opt/local/share/texmf/tex/generic/epsf/epsf.tex
-This is `epsf.tex' v2.7.4 <14 February 2011>
-\epsffilein=\read1
-\epsfframemargin=\dimen39
-\epsfframethickness=\dimen40
-\epsfrsize=\dimen41
-\epsftmp=\dimen42
-\epsftsize=\dimen43
-\epsfxsize=\dimen44
-\epsfysize=\dimen45
-\pspoints=\dimen46
-)
-\noepsfhelp=\toks27
- localization,
-\nolanghelp=\toks28
-\countUTFx=\count54
-\countUTFy=\count55
-\countUTFz=\count56
- formatting,
-\defaultparindent=\dimen47
- and turning on texinfo input format.)
-(./rluserman.aux)
-\openout1 = `rluserman.aux'.
-
-@cpindfile=@write2
-@fnindfile=@write3
-@vrindfile=@write4
-@tpindfile=@write5
-@kyindfile=@write6
-@pgindfile=@write7
-texinfo.tex: doing @include of version.texi
-
- (./version.texi) [1
-\openout2 = `rluserman.cp'.
-
-\openout3 = `rluserman.fn'.
-
-\openout4 = `rluserman.vr'.
-
-\openout5 = `rluserman.tp'.
-
-\openout6 = `rluserman.ky'.
-
-\openout7 = `rluserman.pg'.
-
-] [2] (./rluserman.toc) [-1]
-texinfo.tex: doing @include of rluser.texi
-
-
-(./rluser.texi
-@btindfile=@write8
- Chapter 1
-\openout0 = `rluserman.toc'.
-
- [1
-\openout8 = `rluserman.bt'.
-
-] [2] [3] [4] [5] [6] [7] [8] [9]
-Underfull \hbox (badness 7540) in paragraph at lines 794--800
- []@textrm In the above ex-am-ple, @textttsl C-u[] @textrm is bound to the func
--tion
-
-@hbox(7.60416+2.12917)x433.62, glue set 4.22592
-.@glue(@leftskip) 115.63242
-.@hbox(0.0+0.0)x0.0
-.@textrm I
-.@textrm n
-.@glue 3.65 plus 1.825 minus 1.21666
-.etc.
-
-
-Underfull \hbox (badness 10000) in paragraph at lines 794--800
- @texttt universal-argument[]@textrm , @textttsl M-DEL[] @textrm is bound to th
-e func-tion
-
-@hbox(7.60416+2.43333)x433.62, glue set 5.18782
-.@glue(@leftskip) 115.63242
-.@texttt u
-.@texttt n
-.@texttt i
-.@texttt v
-.etc.
-
-[10] [11] [12]
-Overfull \hbox (26.43913pt too wide) in paragraph at lines 989--989
- []@texttt Meta-Control-h: backward-kill-word Text after the function name is i
-gnored[] |
-
-@hbox(6.69167+2.43333)x433.62
-.@glue(@leftskip) 28.90755
-.@hbox(0.0+0.0)x0.0
-.@texttt M
-.@texttt e
-.@texttt t
-.etc.
-
-[13] [14] [15] [16] [17] [18] [19] [20] [21]) Appendix A [22]
-texinfo.tex: doing @include of fdl.texi
-
- (./fdl.texi
-[23] [24] [25] [26] [27] [28] [29]) [30] ) 
-Here is how much of TeX's memory you used:
- 1866 strings out of 497120
- 22264 string characters out of 6207257
- 98440 words of memory out of 5000000
- 3036 multiletter control sequences out of 15000+600000
- 32127 words of font info for 112 fonts, out of 8000000 for 9000
- 51 hyphenation exceptions out of 8191
- 16i,6n,16p,296b,602s stack positions out of 5000i,500n,10000p,200000b,80000s
-
-Output written on rluserman.dvi (33 pages, 109128 bytes).
diff --git a/lib/readline/doc/rluserman.pg b/lib/readline/doc/rluserman.pg
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rluserman.ps b/lib/readline/doc/rluserman.ps
deleted file mode 100644 (file)
index 6956633..0000000
+++ /dev/null
@@ -1,7175 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.994 Copyright 2014 Radical Eye Software
-%%Title: rluserman.dvi
-%%CreationDate: Wed Jul  1 10:33:41 2015
-%%Pages: 33
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
-%%+ CMSLTT10 CMTI10 CMSL10 CMTT9
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D 300 -o rluserman.ps rluserman.dvi
-%DVIPSParameters: dpi=300
-%DVIPSSource:  TeX output 2015.07.01:1033
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
-def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
-rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
-N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
-false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
-length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
-forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
-BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
-{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
-round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
-rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
-/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
-B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
--3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
-0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMSLTT10
-%!PS-AdobeFont-1.0: CMSLTT10 003.002
-%%Title: CMSLTT10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
-/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSLTT10 def
-/FontBBox {-20 -233 617 696 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def
-/FullName (CMSLTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 39 /quoteright put
-dup 45 /hyphen put
-dup 48 /zero put
-dup 49 /one put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 72 /H put
-dup 74 /J put
-dup 76 /L put
-dup 77 /M put
-dup 92 /backslash put
-dup 95 /underscore put
-dup 97 /a put
-dup 98 /b put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
-2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
-6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
-979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
-ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
-B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
-A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
-3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
-D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
-6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
-3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
-4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
-DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
-753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
-54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
-107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
-7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
-328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
-85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
-2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
-308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
-CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
-739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
-FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
-F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
-3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
-A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
-55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
-A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
-69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
-82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
-8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
-0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
-0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
-1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
-D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
-B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
-170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
-767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
-EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
-AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
-826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
-8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
-345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
-67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
-802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
-20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
-5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
-0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
-22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
-4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
-CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
-4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
-0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
-220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
-7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
-27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
-B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
-7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
-A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
-45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
-F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
-C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
-AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
-DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
-FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
-997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
-3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
-2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
-31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
-A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
-43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
-4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
-94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
-425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
-FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
-51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
-859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
-E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
-2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
-82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
-22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
-200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
-892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
-0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
-437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
-BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
-E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
-DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
-CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
-80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
-FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
-9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
-031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
-9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
-9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
-4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
-57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
-2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
-0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
-03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
-22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
-06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
-39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
-E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
-A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
-9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
-B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
-79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
-2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
-8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
-1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
-0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
-BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
-312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
-B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
-9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
-A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
-91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
-7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
-78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
-7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
-766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
-016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
-C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
-8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
-E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
-6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
-B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
-44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
-C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
-5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
-42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
-F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
-CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
-9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
-82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
-0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
-F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
-EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
-E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
-D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
-F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
-14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
-BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
-9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
-6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
-6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
-4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
-C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
-A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
-9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
-42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
-7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
-1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
-4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
-CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
-D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
-CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
-0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
-92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
-57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
-5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
-57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
-8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
-C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
-7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
-B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
-EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
-D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
-DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
-F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
-D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
-56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
-46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
-52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
-19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
-465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
-0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
-078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B
-DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339
-F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525
-EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F
-BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9
-50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B
-C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985
-328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD
-50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F36932A8A2DB
-BAD87DCC271657EDF942834AD01C0C35437042331634D36C594CCBD796BB1562
-C5AEFD595E35264ABB2ABFEC7A2E066A7A454659804F6CD9DC64DE1112D95B55
-72AE34B6153425A5D15D9F944A3DB6D580C2A01E308E2CDB032F99617A73866D
-F2F2FB6E8617873AC82D4E2224049BC2FEBFE49527DAD70C079B92F08DC30095
-AE63E3E2FA213D52A347347371724EF08B39D7383D27131F75C2211F82C35CDF
-B78708DE910A5ABCA3075D985AB2E2EAEC2BB6159094F0C0C775C25AFF4F507B
-20070C4FB570D5CBCF40C7DE889378A9EE7E38175ABC3D5B047D1DD925990A04
-76EE4083F3CAEB8F1FF3D8FB0210C93738D68EE884FF86416A2EEF2356DB80C8
-39749F31D1D3751E91D84246B56D759969A6D52832891375DC26E92B7DC756A1
-A02F951C898CF665AB0C2C6D5B455FCA6D20E7F998D2523112A08E8EFE1B5DBE
-940EEB362AEE4EF83237348F7F0C08B490D125BD90107A035A8F5330F0F296F3
-DF4579D7B4A947CA1EC8975B1F6B7E3B077A75F2F42DE456E0D540CDFDECC95D
-F5B3FBB43590ED54FD98CBFD3A20C42C5B6B5ED2A5F0D4F06414757F992487C9
-83CCE2B4BA91825D14090D1EFC53596F92757BE8DCCB7EFA24C3A3D52DB61312
-C04533EE4424F37EE45DC6BDB79519A62454194332562388F3BF0246B40E9108
-7B64FC57054131DA8A4699CF65BFBB862D05519755E207BD0C5E4FF56AC2BAEA
-5D4FC6443069F6314E124BC02D210B8726D3ADF2EDB35E7CB1F92BB412C2AF7D
-547A1E309A63114B38B352702F7E48B931550F79C2487152A5A5CBD19C429BF1
-747D88BF1EC932CBC93F006EC34F9197CB9FD486F42A0D5D72AFBF21B9BD131A
-C89A979FA65013B3CDDA5D164DE3BB762BBB7A4D0DC3ABF3CF906549E2F76C17
-DF8BDB44689AA9140ABCF001781B8906C2B020EB95FE36B8978FA04BEC5E4D82
-B4A537520BDA62736EA2CD9B1EE4A126D7A76BE51C96AC556AE5BFF978C1598B
-6CA42A76139448EA4C8AC849AA3AD204D158854FAC6D7D43BE038F022460A50C
-1DC2B6932CC3DBCBC1C27390E29A474712004A5EA3E0A3E62786C2487EFA767F
-BCDEEAA4875ECA8A9A7C6F2FD1EB9DB79B7489FA8249D33E38599B948CBB7328
-430476A7489C004F1411BA1D5FCD64D478424920EF72530F3C4CCA9EE495ECCD
-125E4E2BB37BD4D4175950422517021F8EC140BC3B11BAA9E513F3DAB63CD245
-27A0A6F69A964E9BFAF575B5E36556A15B2F2FF787DFCC1EE704994A52F2E726
-958538808EE9BCC31BD5E126F848FFE5CDA11FD3F0377D9B814F515750374452
-D7A4BEE6B14BF4C1A75B2BA8083ED62E61155F1B396D960066D0A35D7CF19A5E
-C7856AEA2C505E68C8A0736CC1675F740A662AA8BFFFFE507465E7ECF934DB6F
-75004934154AA82EA699EABE6318E7E5B51DE3387AEBF11E41A413D986947FD8
-23ACB99110C93391DA8FD87341F337F1FBDAFD306B4B08FC69EFF21A6F581420
-893E94073A20778ACCDB074613F7FD68999BCA1F03A0E298CCE83D3D8C25E1DD
-8C25F57C440C5580C87C67C8F391C900F6615ECBA0AA505333A0E00F229F03B8
-69EF147556CCBD10694CB23EEA74CCEE50CA5E8F3DCC8225B950B51C7F0AA44B
-C1200E688A8A7CCB8CD763390992ECCE85F4855DA86ECFD21F57F12CEC09A5A0
-0A50B388C378EEB1C4BBC2BC19ADE95C3CE8A6CD901EEAA8DC6F62BD33A18368
-1B0C445FF57CAA3F690D872D42FE746D3AC94DC889F4AA191E824D66E8ADC3ED
-D7F7507F1DFD560D3D339C528714AEC12609448660243A1C24C8A31FEAA55E96
-5512E63BFF9CB87AA8805D066E71C70DC175FA3449879A44A1A6343561CBBF33
-B6465433C3C99BD06F2FB6A0CB4AE950A3F2F428AA2E5E344439E77B623E959C
-27CBD22A9B092B2604EE92524DF014DAD590A4F474484C2BA41343306A620019
-15B96AF752C312187FF3C1555B5142354F2E947391A96E64DFEEA65D99FCD2B6
-3BC07AB8D7709033C83DE8C9E18BF1490BCCF65D3E1CCD62FC09F7DCBD0A31EF
-70F21BC631CF5F4C112B64B4CA88662103C4343B55FDA36B0F78B6BE583E3134
-464FA2B9C8A2C5BA01338C0A0AEA7DC2CCD0D0E7A02C835C1072830582825BCC
-E7F31BD6C7A20413F5D21C054CD6389DE00C846AE1B558EAFF7E85D07C73C4D9
-CD9A1F33E0328C3B9340DC87FE981D655905D4E2341966C80787F35EAB88792A
-B2F35D91BDAE613DECD5DA192ED10FF454B0A754A14A565DCF8AC760007A333E
-413B53F179AFB886747C2460AADF6FD1DC09012A2ADFFA6FE5228177535E91DE
-71F9C9D82F84CA13A2F55E9EA931B1E89213EE9817DBB433A7EF0316E0624C1D
-45965146A28962980436F050A1E7EB35D18BB8BF8B82F97D64C827F68374CFC0
-E4DB0FFF944DDC0279F2E02108815F40E04EFC82368D19B89F357138F65EF9CA
-878AC45EF423580843F481F1394D5DEE995E0DDB18E2B5E2D04A463672BFFE79
-BB6D9957D3C2BA22DB79CD75DF28B99E6473FC222C6722B9C877D097BFB29C6D
-E5444CFD34880261E7008A372F128BE5CEE9D057486C1AD98E7AE24292D12231
-CCFE1B54DB8623BF68DBECAEC105E446891BF4473765DCCA7EFDA9FE6DF8E6D4
-90C70A79B1AF7AFE9AC5CBA07D0B839AAC2EA62842FEC9117959B10530C8A76E
-85F59E6BF476A0660025900EFD8D714A018AB06240808CFFE5A3766818603531
-AF3FA35AD28CA2C9BA31A2F42FB80BC1ECE71EFE2CD184B4FDC5F76AC2F549FF
-33AC81C11411C47D4857E5E6DB9204AEA0F7545ADAEA22BE42CC3BA7EA3F8B90
-C5FEC359641487D93C52D78CE25535A2A686DD4764C072FA8A56B982A3A7787A
-F124475DD5C2754430C7EC3527D81C272FB7AFEDC6F79E1988AF9401F2B989A8
-CFE1BD96B21D817BBC93BF77B99C8E008E7CC2E34F0AAF20AE88FFC0BC6C3721
-485DD1F25103245E854AB2B60226693E0AFA3EAE85CA52BD938BF31ABFEBEC6F
-4079449F99B5EF0A46E77B6254D4FAAE33FF8B2AA3469F0F0DD625BC4FFD004E
-E6C301A8052043E22ED0FA663364CC9200ACE4CDADCFBD28B721FB43EA7A3B6B
-F6112C35C224543482A7564D62A4A8F15FE329BBF3934DF9345320561E88CBDA
-1C0BF61D400C1539818D2BE38165B6439EA9B45CD0A686C7CF1310604309DE5B
-22987BC91A8E913F6EBAF74C65E8A546D876E46A50BB9A3420D5BE001E0CB34A
-A143776196BF8167006A1052A54001134D539870CECFFD45B6E37D5EF5A9878D
-2A2BB28710DD767C746767498AB23FBDD80706727CF0F556DF7A47A90DE30E5C
-A81522D5EC8C478BB58ACD1D1F0139D4C3561DB574AA8B1FBF0AB0A001FF78E3
-2A646659407760996E97CE00295CDA398DC0E8374B6A13C3EB2BE4226F01E76B
-A932DDAFD90D0FB739B9EDFB9A2472D6424A45D1A698D70766469EBFD9957CF1
-511F6BC41FB43B9517AADD5DF7997A4A8A8F3A5103BF6730B81845F20D160DC0
-E5AD923D9E24AA7DC293E45FBF7422B952A91A97139B15235D29CC52C5084F01
-DE89D2F11E7283A60E4688B54191DDC1159998D10215FE53FD89C87CE9D19041
-1F1E73F063436E786959943B496172A1C497DC002E00B29A4F752CA28BAC5434
-A98F9438064838B0D6252A05052EC8871CEF9FEF05A07B1E401E49324D463E41
-6B7DEBD3B405C9DC5953B93E48162D93438237F11ABE83189F9C1FE70E1A56A4
-CF539F7E9BA6B2B35BEB1586F59897F6E64340B88CA079DFDD1E987198604D2C
-3EB5C8178AAEB19B8D2840F0EF36CCEC7D25080CD1E0BD2B3317603E86FFDC4B
-A453AE086CE8AFB093D57733AA40977E9C8D33E3C87DE2D4C0522C40AF2C01C5
-2A7B86C2571F9B67AD85B35EC83224029832D2ADCE65E37748CE08A600641E03
-6BFCF2F024ECDB4AC2C4AFC4987D01C8F8E74715567F7116597A4318331A35E0
-7BB15E134CD721CBF49210AC06D161E7FE9146D43CB1181F464C7D3BB0BB40EA
-D19E1C33D6D9924AB13EE6C31428D6CDD9AEEBAE6510CDA14F23159CCD725A3E
-1F97ED8DCB17A10783B8CDC9315FC86703FAB6A70DF55E0AB8B4C24862CDCF11
-5F10FAA5E4E54660EA5EA05EAE168E36CA5255DAA0ADF9461176EDC9E3989A84
-0D8D7EAA08F4C766E1A078C3B7D091B9E22A9247A655CE4190A0217ECAF88495
-5DE38DD317E459AC61336D6E403CF8DD2ADD2946F933E1A72C18DFA96EF7C0E4
-0A2D84D3414F3DB23EE3BB5049B174431F4EEA10415D25E41C2094CC2D37C669
-2C46EA4568BB0BC49D1806B98607B8C12AB897E6AF402C6126D4484EB7D9CF81
-B603EECFD92EE41FEBA5F38A93DD24A239BA253BE3776F2368E1664142FF2A53
-5B40B694B20818A2A43226871AF1F7A5A68113CC55AABEAFEEE21E0F4E7641FE
-BB5403E96064650AE2703E43DF01A1594C8FE8646A44323D78E7A5A7CE2C2FAE
-F98F7D9A2CF888DD195FAEBFD1BBB05CE078C6003F9438205F8A3C2977C1827B
-906386BD4B483966FD903432A3A9A54AB0C4E7826CBB97C6808B5B529D5E24CE
-8C76A35EB073FD65944F54D1733FF75FD7F78F524F81CE0D92328FC171AC3DBF
-DB81784F11106137B72B473AB91F40F73B0B410547F5CF6613EEFDBF0F05092C
-3688C3C208E1C9FBF51B505FA0B5F906C5B0A05277772FF9EC806702F0E346BE
-83A535578789733FA68FAD54992C16F3F5F1B7560A729226FDADE4FB96AC09A6
-4C5D79CB60D85AACBCC89C04068803B47CF0FAB92F4267438A2E7CF7CD5C1796
-B07071D9F5A6DB95514B1B60EFE74DD9A028CBCBE850052EC2EFF81C411348E3
-F1ABDF1A4CBBFD7EBECC48F89B18E159DC1CFA0606C3BECE071E4C1759BE2716
-0705460FA9E022BDA1CFB2324C8B51B4E297838F07A5FE8E05FD99600F9E79D5
-490C251772EA34DA6649D421A872CF78A9B55BC0FA47E056A6CA9491ED65E181
-58E2A5EDC038C9BD89B3E975837FDBE2A9AD81F700BD263C25C85873E08DBCE9
-7CC2FBD904038CE72A110493B7ACCA882FD48F54B4E0109B095838F30D80917E
-5C81948F74E7F0D41652480CAB3B24E90570BF861EE2E3A5E1735636C7849C1D
-60FDFAB5386526F7312481A5146C18321F425EC74ED0D778926854C5CA875A57
-9205076C19AB866F5FD0439154484DA165A7CB69746199399E66E662EC2AAF66
-501B6706BA1ACA001546B753B0785AC885A5F13BFB4F76F05AEADA1D290708A8
-22A24FFEEAAAF3C70F89CB52EB655774832296C1FB440B4DC4957C7C32588435
-4FA6775C4BB9070641EB6CB74857A346B38E0F441D61D27489CB0230A23AB63B
-052C8453C969BA44B2B6E700D6286084AFD49A79DA416803200F715CFD9B42A8
-D53BC397262BB8F94C7D0A2D83E1249563098645D0E82959B76E1B05BEB19430
-4080218E58354FAE323F4CB4A3E20B21FF9FB791391956336DF8A6FB49A2DD6F
-A1F06C8C02464E67CDCB9013A4F8229E5A4F136A11AA204001D16C213691EBA2
-2789C03C9122FF21B891569D4D26C2487401AF4C9B310CADE991ADA6D091248F
-30D40520D46944AFEEE4B71D005191AD057AAF2BDCC166F084F29EBF3868C433
-5552509FC469A57DE66010A0538D2CEB7692D1A54B5139D2FC7FCE96C4E1A82F
-578703BE28B82622297BB08F76DB9D8E2A7C4B38C7A819372F72900506CBAD7A
-4B0014B7A9DA2E9AE84B24A83E0BD86D3BD8E0F37F9F0E56D6102C0CAA768E4E
-9BFCDB116780773E04554E67AFA899C9B8AE526257FBD25125EB7644E1AB35FA
-E9D6D716877D2A5E17130740CEFF27133D6A38BD2B2BB7BD17E04C21802EF184
-0AD5C85EDFF4234DE6B89B40F7489B4CD79F54B9B8683E611E372768C55FD93E
-3BFDDBA88B1B60240AC09A05960F9134700A97DE7E6031F5644F83B5A10264D9
-6118C440225E4864A2AFC406BE4A8AF3F6AF8F3B48AF8EEAB503BF7A66C840F9
-825D9D44DEDCD92A11EA70FE597AD39C0CA0F1C6AFD5750D6BCA09D230024DAF
-09F807B23F356891C031E0DAB363DADC371166D728755CA4C375A846C46E7B37
-695A8C66F99132593D066D0757C3E92F64AFF193D211B41405A3E528172C2592
-30A0E1E147E95C002F2BE67E1FAC9C062FBF5182A0726E21CB87BC80E15FA68D
-9E8FEB1888C4717BAA97A135EC4B5234135A64DE68833D1FB55EA7A327C5A9A9
-78312C6B32D66B57A4834D6004D83FDDAB7905D94E0AD3DFAB8A4D5D081F2FD1
-4CEDB8C3D8A344C3596A6E033DB4CC4A2BCA9A86D8858830DD5006D7C7D91F53
-560F76B6B4BAAF3DCEC3704E922E3F32C3A450BCCC92E359265201F07B99BD2C
-24377943614ED7A97E19D988476569CD51B0E85672F4AE6D6D46382A73DA624C
-5188F727DACE6E5BC2F33411206A566B6F830EBE79CC97F295A269141FA8E565
-496EBED5EBDA3E6C7DD9ACDC9AA9864C7F26227F68DAD420BF8AFA428D66F3ED
-3919E517437B7BE7C9550B250E90F7E004B3C3D30D9872B84376C84B913D0032
-9B2280354630E263E101EB02C92FD77A76BAA8CB1C5B5C555C81F6ED6A31B3EC
-356BDF27A16C319DE965D8BE1D654A6E1980C8FC535B72BD951FBED2C6A9FC82
-FA152728191760F9C54E52D900675AE8A88F7867E0A5E5465FC2ABB868B3D227
-8A0DABCA6264CE647623418DC7850FCA18C34AE8532AF543E46B585E20BD1E9A
-E210B1DB301C81537F068B42BDB1B93FB4618B618B34E7D42251DFDF3491472B
-62EE41B9F4C2F1EE43C29AD841A1264285FA4DDFDC07323A24F00EC12627CDCE
-2DB8592A29424150DC72611D88D29267B1F98F386053BD9188CC91FD52876731
-1DE8DF9085F0F49CA5B14089B55E2E9386D59DFA0116C800A5204F6BC0032F6B
-BF15CC4A142729DC002844F5A418C164C1AF0F69353121E4E680199C752AFFF7
-C961E4AD7F5E48212297A346A6FD1E7CA0B7A51670631878D69A60639FB9A150
-30446595791BB1F97919D034BFC08998AE74431E65800A11648D8E5ED18C95C6
-F3F033B3F3E4F7077216D316CA981B5B4EF0C33A7DDB14BF11F496D754D93C6A
-BACDE5D2B6EC1126A0531B61B38E73F377CFED681C9DD5A804BC1B7FD78F6ABD
-1EDAD16A0D3E4BCE8A12291230D94AC0E0CB7D258E46B5D1CEC91B0CE18B1412
-56AF3A04F80C1655C6DB8A9105D611819D4BB6B920F975D0A19104D8239448E6
-B8F4804F6088435C6C2750932C56753D14C5921DC9D871AE804AAE6D2AE9A3E7
-192DAA0D6F9E1E7C22BD2A0E80216723E09213905F4F291D2540F24798CCE9A6
-B6E9E7866CF589DC2CAE23A7945B52E862975F0578F7D8866DA6DF2ABAB1AB11
-12FB5B9AE7C3DF18F726BC7B51C57BF184D42944FCCB796ABE1869AC8F5BDA42
-0EBCA3366E46D6A9030B2EFA1767BD295731CD1DB7FFA74288CD586CE553CA71
-C69BF555CE828D291172D22DF6B1FF97833BCF7BF569CD79C67A65B8D32AE176
-0F8EF4CDFC09F35100D23ABFD911931C51F71EB0D37157CB9C9984A6F107C365
-48AFAD53E3B33EDF970F19D59CD6D5C1D7962CEA24F4AE9C45425589124A7578
-D40D09FB8BE3B386682B9919756D4EF4AFC2450C6A298450DE1A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT9
-%!PS-AdobeFont-1.0: CMTT9 003.002
-%%Title: CMTT9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
-/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT9 def
-/FontBBox {-6 -233 542 698 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
-/FullName (CMTT9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 51 /three put
-dup 59 /semicolon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 76 /L put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
-42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
-4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
-689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
-0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
-610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
-3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
-C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
-995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
-EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
-2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
-4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
-B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
-D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
-510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
-BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
-93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
-F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
-45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
-4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
-088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
-9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
-09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
-E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
-0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
-FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
-94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
-03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
-409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
-45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
-39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
-58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
-84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
-0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
-F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
-B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
-D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
-3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
-7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
-8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
-712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
-C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
-E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
-A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
-2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
-757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
-54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
-DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
-08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
-6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
-A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
-336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
-E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
-3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
-E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
-1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
-FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
-A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
-465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
-3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
-CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
-573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
-9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
-15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
-D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
-15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
-64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
-D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
-D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
-576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
-ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
-EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
-9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
-3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
-1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
-FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
-C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
-4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
-CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
-3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
-D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
-BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
-1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
-4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
-C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
-80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
-AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
-59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
-3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
-14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
-B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
-F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
-54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
-34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
-825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
-BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
-4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
-66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
-2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
-F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
-1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
-37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
-741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
-39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
-887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
-B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
-15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
-5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
-80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
-A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
-BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
-2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
-B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
-F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
-9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
-CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
-DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
-6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
-7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
-D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
-9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
-EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
-0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
-1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
-85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
-EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
-D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
-E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
-88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
-E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
-01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
-54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
-97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
-B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
-D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
-18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
-A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
-1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
-31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
-408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
-1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
-29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
-BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
-AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
-0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
-99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
-480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
-D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
-FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
-587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
-A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
-C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
-AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
-AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
-48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
-385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
-8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
-4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
-839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
-320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
-7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
-DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
-DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
-461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
-BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
-1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
-3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
-0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
-EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
-AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
-F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
-097C4995B60BF4D8B3AFD0A002B3A6E4FA114131410D5658999B86DFDD3005F3
-AED1FA8F077AD1F27EA249221585703F20FB70E37A26C6C3F2E101693C94612B
-65BF89F37AA3C10A40EE8E49915F1A1B95D2193D8003DECEF9D76FDAA33B1AA9
-CEDCB21C2A3B05747FB3ABDBD904B66EEC60CED2867442F5FE445587EB8C6D14
-87A6B1B4871A8371A7ECA6A159EAB295B167CC35ADEB8512FD0C237421773BE8
-A081FB687F9C5D676F2944DE6E6B639C37E8E49BD4A6F0903E0C31EAFC4C7ED2
-C3C67E71D8BE2B8D5784E8A6F19A9A8929DF9833440E160945274682F435DFAC
-575048CC768BB8F13AA21C6B125E6073611BE138AE06D13E62E7EDE3D0239474
-E040B3E446165FFE60E20B75D2A5F9EE021B22256621C290A8F3342F0347B8EC
-CFA6AD68D47C05268EE3AC8683F4840D736EAB585C6284018DC94FC103B4A882
-ADAEFB625EA966F3877B3FFEA518B809A4BD184FE4923BFE783B4131410D018B
-E0FF5CB22D92CB1D1C8854DAE543594DBCACC60041E0B906FE5E692CFA6D2B4F
-31CF357A50CB1CBDC0BAE6C841A8C0A605330138715CAFE6EC005E8174AB7D9C
-9A9AE616B75DC1CC62B7F9EE69DB9ED2351442BD48E8D0A467E28525BEB6961B
-CF586AE20AAAA47D9B93AE7B0A4B992B61360AE1A51EA3FC550B5EA3720DCD75
-DD8D07C26180748FE67B2CB3BEB2EFB690657B726CB850C964A773F0EDE2C0D9
-9D7DBED1E5E1E18F68B114C42EB6D734DABD111596AB68D8DEC5246926DB5E4E
-D7D701358D7972B2995C7900DFAD6F78AA604C326024C0E35EA5F2E99B2540CF
-D72644DBB5EFA49C1D91FCD8AA69EF3AC33385AF45F42D1B8DBCF688A431DFC3
-EF8EF75EED3CA8EC03195F410A062E0400499BCF9017D11C9A4E00AECF98D318
-994CBB28D7FBD01C3AE3EEDBEAAAAF122BCA7A10544804177CC0760AD483D5F1
-4DA0ABD57795A29AE0BAFF8ACE042ED8D5C95DBD358C2529B33856B0E442DF62
-F86CAAB5A854D6B1E30E7E671B9B57B0DD28793445FBC64EF5469CD7A3322311
-E24AF1836C6981566C2B8C83D91079DFA5D02A974D3B83DFE932C0D0C8EEBB40
-CFBA6E52A7A2A313CFA0DB34093C1B6E6D740548B9FA9E8A1A4D0956A3D44931
-882578D2BCBC7FA215D51AFD9209524EB158E4E3FD4DCE581E3871AE2D4FAEF1
-6F25B0BA20F1FBD0943FEA005DFEBBDB1CED7F22C8C8A7FBCEA1642AFDE9AB00
-28624D29374A5CA5BD0060BD399B8750B55455FC22A0D8C5EA953A3CC77DD3A3
-472B6E9EEF8C58E28E19DFDFD99ED3FFDBBF3F164196BDAF0BD36479D927F876
-E2C9F0B20CFC925FFF969EEE5C116ED17F17E2682C997C29325D94E6B28799BC
-877868ED48D7B1D23107A5BFB734DE47CB46EB46B636317431E1BAA8F6DC1817
-28CCF87463C739E8E68C40288B69A9E790EB8229DE60BD665964AA130E564EDD
-CAFDD7DE4DFA4B553B695CB12CECEE7617CCEA9C7F5BD466DD88C177D116B243
-B4FB4DD3D2A809A379413566E118EFF3254260E73A55C03FC56A9ACCEC19493A
-6E8815D0B40B2A48E7DBC6DCC5E181F86BF252A4F312FB1EE7833D001520255B
-64B2889C78B19822D3A20363DEE900F0BA53D9CE738F25709C81F90891D4C279
-C5394DD55982721167BFA1C69C55852F92CD6BDDEFD9DCA73DC39791A85908B7
-CC7E5136823E6F4608529995F72C0A7D50874B93B0FC6D6A773A571E5AA0FF10
-C92F4F5E2931177CFC8B8E39AEBE9A5ECF7D6D3DA706E5924B84B8FA2FB56A55
-1130E7001543079C533248B118CD4543EC1BDEDB2BDEF437CCCB539676CDFF28
-9C05CAF4B8A1ED5720768705EE47AF1162E5B979153CCC82A8A9AD1393505BDA
-26FB54D3FDE40B8D2AB3F2DE79A0B483F7AFFB6022B81328727F66B4801BAAC5
-2EC53EAEBC6D8552AC3EF2E16F2977B8F80E8F2F682674C09CBC26C80D849237
-9D01AEAA507F5481FDFF95DA933BB57CFB64C016DDE71BE1557C659D09A9710F
-A073A68EA7B6BE1F70F3C8E7308B276065284DF6584107A76823B9B0778528C8
-ECD793F36CA5C1C405DF3A9F254C4E959337490840EC48DC14D2AD399111FEF4
-D2A870BE8203798A17D97E39BC7D3A0C9F21D609D6B5FCA9001428DC67C9066A
-BED5FB94E6F9EFD725B23AA3CCC97EAF1033C9B48E8682BEF2CEAC57F21C7658
-81A3B8028E6005AC2C13E0C807D92FD343F074F5C543F4B53D2B14FD50B45A30
-86C9775D4AAF93C2E2FE76467BBC2E3A6A95AFBFAAA36D8A9AEFF25C3BDD51DD
-D4B4E2B7C6FEA1F4C1A367D12531326160D859E83F458CD782294CDF38E3794E
-510F1C1704848465FC209C7E26472EA60F8001E945620857F4885CE61F78F66A
-4190871A4136695B576E39D87E5302EB61600EC42B2218CEF1F649F29383FD6E
-341F3A27793909A05FCC5A87AD7742BB41ED886460F0832E6BB8D443318AFED0
-528ADA31AE91D2D0889A755FBEB9C33AFACB902E3919605A9A8F9FC44C3F528E
-8BFD4F509761F1F513FE45863A1EBDD514E210C108DD567C06D446728217176A
-800B542834A5ED0874D4D5556898DFBA679C8AAB914F840C0C9ADEE375269981
-92DDF4B3F3E6226A6657B69604C6536785169F7301CF3C4BBF602C847E01D7B3
-C3824CA683D80C2B06BC68942C8CA4DB60D80043F07DC63E6B31B6A87B3674F0
-FC529D63C6CA00F3B4F2386DA7AE63BD2AA93523E3D70313687D297FCCE6270E
-3B5513CACCF8AC2045944C559F001791F06A2AEB21869BBEFFD79EA7BA743A70
-7917186B0E2E20CEDB0A583BADBACC2F4B3DB64A8A3F927D2000B81046D577CE
-43BB0DC4AD99E609EFD5F55DE8B5A41FD92F34FC96816E948168EE17CAC0D120
-13CC349F8B1225F396CFC62E3502A43F7ED355E901CA9E60687A8D5B597EB356
-7E1FE367860AFD2EE7B722F22473C968C6E91E7E8A4DE41DA2DD35D51E7DEA3E
-D9117DE9E874092248493F0FEA331AE639578A9322B1D3E6A9E866BAE054F555
-3DA676E2B24D1D4C8832355C6AB10F776F24412B106B03085AAEF2F5FDCBFC7D
-DBC4CC9F95E945A4E690AA2E8E16ADDD52CE957E883F09D141C560FF4A53ABBB
-45B07823B592960D914C54E09E44904BB28DFF1B805A1F72BDFC5D4A8BB5BBCD
-EC19366A8E3E08C100E8ADC25118F79BCC38E0D56E2870BA307EDDAC7EE3590C
-39C825E8958787A9F4370176A09984491EA71285ECE7AA6D60DB5ECED84E6A9B
-242B0472EE67542C4CBC98AB661DABC0BEE7B548EF06C347F287598B249615E9
-86081DE85D56453F3FAC216CD3F3E436735A593F4C8F3E28D5914DDF9DB7EADA
-516FF8FB621DD043CD00624FCCAC51EE263B86F46A9162B18FA26E1DCAFFE7DC
-974554DF975D02C2948EF4814A5345DCA12047176CBB7B68244528B6A3EF1CC7
-ECE0B8D472DCF741C82801D2BE5877EC14652819A739C6C8E7653B2671E83276
-75FB5C4D67331989BF8F0E699C0B8FCE9EED69F7ECF5B2127C4EBAA283D7B011
-7F30CF0CFED36D7A81856B746E7B08108C9C9AB484E2760D9678B82C956EEE36
-463826DF521155993F33DD1AC5F76B1CBB689999631298D2217B022744312A90
-2541727F580A4902637EE49DBC39ABD68BBB15BDEA8F8713F0B309B9EBB363AE
-A20BB2AAC22039C90BDC4FF6459814D11ED09CDC7992237B69315F56F9021FE2
-3BD0EE582D1FB0623A17775292868230D4D36CA7741D10B6C4A7890276C825D8
-7F4F04EA3144B8004821F5078C83ADBD3BC7588D856421AD4561AF9DBC18ADF7
-8F9CA070E79C15790E718ADCE4796C2CF3C777B2692A28F0F208FC2DB5F3F2BA
-1C3F731F596FA303E9DB14CB2D5281AF7A574831257A4B4D3E78D964BFDDB79D
-58497074BE55D6397C986981686771459B619C0FE8E2AE1066DFFDDE92F95251
-EB30125E767F8C4B673B8D733BD22ACFDFA7B2AEEB52D2F6C4C3579FAB300B20
-55FB500454327D13AF2DFCAC2A170678730D302168B433E462227D5200CC3473
-8165558FBC94E9041B2D5F44B4373A60737C63F2D1E126272B8CFE386BF8CF12
-511686330C6B61E5AED76AC3A475B8046736F5DF0D92C8F48A0A73FBB788463C
-A50B2266E2AF8E6A88E0385A485752229990FFCC06F517BE2A507A6BD7FA30A4
-2CDD60E5680B321662125EAA1A5C7C62A251C762EE0A028A8E8CA439F788D2A6
-54E47C631B9C1E86E47AC755BE98E7E3BF1B200E10758AE9A8D98935E2941A4F
-FFDFB8F5CF4472A296D6843299EA45776AB68295630A18AE7D28729C3DF2B6AA
-DCFA02D731A1BF2BB4715D0A9F86C45E6260E4D6213EB4A95628ED04D57935FF
-C24806343324305E4D81AED1E5AEEBB42CF2540FF8C96769F04FEE0864A7F085
-DB143D8224A796C6D983B342A95125662E65F969D1546BC8D907B002E46CE298
-900978B43AC371B432EF75E20302B1482B0BE4A1D5F933957F694ECFA8F5E776
-278E430635B727DBF26863E1DD9D36013F2A53F79884B99D4F81AC2CDD3D25B5
-92E870D36B2C8DA33341D19F1357D583C093A65C8B49561EFC71C37E25A74D7B
-C0112D1B4AE64F0B0B73405B416683AE878443FA527EEA2EF14A0234D36FF51B
-ACC4BE38DF8A92B6272B23E344FF4AF04CD3869988EDFDB3058C3E90E7A9659F
-311DE9F880061347C3FF6D326F18C9B67121013499C63E343CC0CB02EF6AE9FF
-FF9F2E46D176B884917823AA077C399E7D7C7780777F02315FC5C0CEFEC3E0C0
-DB1B562F6C1F61939D57267DBB35F449A69BDC6D93793CB7CE9ADB178BA79518
-A43D081F81DDE88BD16F2958EB56FA45516131655B273C8CE060BBA62CC59D6B
-93DD62347C2C68670073843422C24E25E891A4D5322CA595B9D9E45A4D958384
-48636974E6AEFA2A58D8F70953D7805D10AA76A13C75AC5535467DE9F943C582
-98545E8653E95751A2E605192A3EA7576DDC2B3EEE28037914AA83ABE4E8296E
-F0B84055E5413D56EE98A7337D4DD923D49C6BA4FFA8B6DBAC52E1C2B40F68CF
-9AB0FED29250B1B41E9F67656E098020658418BE1B7BBB8029973BEDF017544F
-713CAAA3211CE1E348BC5A56C12C516DF69EDAC03D886F0ABB2212913048FB99
-FB9B1E6802D75A38003C7785EF1A1377972B7DAC156A1B41DE4D6E811290727A
-9E2960C690A4BB5FFB8F0E264908175DA0751FFBB4D51E96DD1190ECDF2BC005
-F6F5B75CDAB236DED30E4F71F42F15C413D07B53672BB60795604BF2CAC6EEF3
-A5DD8F45023F33A77ECCFEC5402D5BE46E4F8F0CE4EC0F32F86B283A43C25235
-EE90E1C05B47BE5F33F1FFF0B69456110B9A8BBC03D3FDC8454D661E711B7B92
-338C0CBDDF9E9832E687AE4456DCDF304A482A72B86EF41F8447D401315B27D6
-3995B7F4280F2ACC8F7031BB26D3240A1407DC0CCFDF0651AAC6F9721B8A9398
-21BA080FA31CCD478972838819A4A1588D230C76C14B86EE189A124C315AA914
-25649216EC8C3F1EC35457264B5C394573C71A3203663ECC797AF3AA36B4C24D
-D6BA6B0EB5F531B8A25AD01BD94EC56BA1C926D753C7B391DBC3DBEE2C2E8C09
-15348A7E8ABB1B14AFD7A5AA07C65204ADA6A6CF391E38485BCDF8C905CFDD1F
-181313BE7025266AE9422E6BDAB3B93936B7C93EB07DBE70F2DB2B7F7958D7E7
-283E2A530B5BD7A41CDFF4A8C057D1DBFADBA85E9CE45A8947618AAE1CB3042F
-9957928296A4BA11CC2EDFB8485CE6D255B00B2F15BCE80D4E88188959722957
-5EEFD638B94E1BC01662E00DE2882C87AB937D47C81242F1C64AB7DB6C334F5F
-F5B73BB8A489629A36D58DBB7999ED2E0C6438272E4DB2CECCC1E64A49472FD0
-AE3AE0AAD5DE8E961D14D070964E2B11E18D9EE65D657E1959738BE1A0890202
-2F447A746243F878CD6FDCFC1C1F688AE4C532F2384BA60EE7243C8FAFEB483B
-F7042EA915A31940BE017AFC5842C951204574C0760A2010A197A7A8D1235CEA
-C7AEE034424412EA4A84B909A275C5BEA94F0E4D63F7E10FDAE75F8CDF7F835E
-F0D99AA64B6A9AAFB358ED698B10E275E1C734BC0B2804A19BD70782CA469865
-281B93F0C09BF0462B817443F3425DF2F006DD7BB238CC4A94619D41F71DE01E
-AC9B92D6D6CA965A9224A1114C9BA2BECA3F8C26AA02DCA5A0C636DF64310E60
-60BA72FE671E07136DD843743ECA7F915211B6F2D6411FDECE80DB5775DBA596
-BE97576B965191E407B394AF393D858847A0854EF280953D70A727707F9A46C9
-1B8A51FC1A19589750FC47058AEFF8AD1EB827CA0F3C78C859290D851D57848F
-E23A1703B33E474B48CAA4DCA698CC878136903D82624ED218A737F6C7D4591F
-C04044287D4977D8C9C50FF760AF82E80F3E6E3CAD0F034C00EEE8791F7C8E17
-000FB21D8F0222103D8F7BE5FD1996F8AAE791679A62F992246AC211D139ACEB
-1DEAE8EA556EB93BC2123C0B9819671EB214546344B935C99B9F3AD1B61914F5
-AD96D7D63772F933D785CA563AEF0CB3F71289E5AF02B18ACB028496BF8C82A5
-18DBA1A715DBDD10C9A0FCC32C5456BEDB824C59B1F9DC1528B82C235F45DB96
-0271BA11D75B66DF50FF54B234B4FD9768FA146E489E257D9F5C62578B3A0D61
-A468AFA9EA6F16C25D5FA4DC5D5F2A4AAC8669CA059BD9363EF6467E1EC13AF5
-747BB3D6B6EC468CBFD294409145E61F5AE298785D9F7DFF54498251C5E3B87D
-387ED09003333963CBEB24659ACFD273273D5655A9A01307CCA16E1FBE241192
-F6E31AC8D490E31C9D0CC49AD6067C60D1CC7A2F0FEF5B2B7AAFFBECDFBB5B27
-08E35A37C41A85F330ECB2C88B94CA5A9E4E047B7C700C32EDFA055335C04F40
-E345BDFD69377877897B25021DE05CFA7ACE7F89389922CA0386DE41E5F97580
-9FF6AD204597C7FA731DD1AC4FCAB912EEC7029FD2C829987AFE21D24F742D77
-F6F689EB2576E386B632F6C3155068C53C2940F731EB37C7905CFB16594428BE
-7B327CC0796E3B3FD6F7719B836A314DD685428419DC74E534E480D17A495921
-5C0DEF9A7AB28CBC1C7EC5642C693E4285EBCCA41E713E1B9FF3F597948E405F
-F7FA11F6A8E43FD5ECEC0CE1B07959A325B49C00483656713A0DF26165CE0BD9
-144079AAC23D7B2E24F73839C01B971542915D70737BB184846EB670EA3BD6AA
-F63B5DE5A709199EAE53CA83D8A248A80CA9FA65F03D0AF0D17CD290A62B8429
-6FBB59FBD51F3280BDCE40E021D9F0552F8601F4837325B87EB8BFFE373251E3
-D76880A6CB90A6920276343452E0854A7ECC84D743C59E8C4EF59FDEAC252242
-90B9C6B666E94CEF8B1A5A05D7940D877EDB1D52B0588C77BFB3149951CC7B41
-F2E77A627C62D6099BBFB571D90D98ADC819DA5691E297F776241EB5CBAD1BE7
-6A2F5A44F5475A6AFCB4683A3FDA9442B5B9C3B4F47D40100B8ECC366BD49DB1
-63AC7485A5B74EA699318C045528C1378CD84D77E0880850F723D341BB904FC0
-C4764E52C0A92058B8AA8ED472473692870B09AF6E22DC29991DEB71002EC47A
-5D8E90392533F3EB4BAEC3FE5F26CFDDFD28CAADE3519AC92B92BC9CB8639D6A
-E8296BA76587587344DFB67AE6C55C81710E9DF937FD98EE8D136A1A2A269917
-D191B4EDE291A7B3E38AD610CD2C79737F7992F8C932AC0426987D029C7E628B
-99B5A35ED77C5943CBEA4591A8A3521BF101BE5195E7D04001E8FB2C9BEDFE8A
-16E60F3F30042A6E33DE1508B471776D74A5C66CD7672B0DE4CC002A63A78001
-5BDFF52FAD0AB9815F70713442CCBFFAC8255EE0BF295F15860CB0AF53BA966B
-BE8856AD62DFF9CEF8679E66A156B8262D394AC2FF8732C235F4909A25E0E6D6
-F44FD9C8B99E2D1A7EB964BC39E95A0D9A1B03530EF9BE6991CA16FDDC5F04EB
-BE6A74F1EDDF7E6FCA0C28E813555BE7F133A7A0E7D33FB311A2A211A22CF727
-1ECF662DE52E971F6A420460194CBA17C19F8992C7C1A52EA49FA708FD097B3D
-BB797E6B86359164BAEE0CA06BA124FEEBA40C4ACDB58587CF914CEEB7CBBD2C
-747BF8E016AE6DE5BEEB9C9DAA15CDC37F27E5A1EDA91099ACFDC5D7A07F491A
-7179D4A2D5B5F045F824F126BB52B8BA1CD8DF1E31C45DA9126CE1BE450B6B3F
-7465E896A0EF8E6BE25B6135F5C9EE3D0E8BB30B2B7C594B8306CA078D9512E9
-6A35B94D24669491080AE1B9A1568ACD117B4D4A6AB6C0325EAB351655A8AEEE
-FC9D1C21AC27D92F53A9E41A0CCF29D98E032098F4EA9C3F6653F84C48AF4AB8
-F7BE53D9B609668997EB4E3B38ACC423ED28D8832D7DE94F63B369C62795FBC0
-3138CC22C0250F5CE92B0F97BC78DAB5F00EFBB57491ED59DDC547FCBDCEB9DF
-B3D8C0826780A9E0C5DFD394357E6BA6311C4B7E569E9353D872AE90EA4AE7BA
-33F62ABF92642F00495CB99D685ED803687B61462B342BDBE629F372EEE7CC48
-68012C362E27001FACA2D0CF46FFC80A2E3956F9501D2637AA1DE848A21F5D56
-0A7A6965B7CA30CC20FFF711457F9B332103EB1770E3D45B853D8205577E16D4
-8E15BAE0901F6EE488206A9827173C21B663CAF46118EEC9C2D86CF9314CC3D7
-E9AE5273CC2716FFF1A486299C00AFE7E28697F82102A4FC554867C401F9E96D
-669D48EFAE660E6C060E2917CA8F34D52DFD08428109E69BE69C49016263517C
-3015CABC10001BF2515E59CB5A0D1430ED0BEFE8E5DF037C816C7BE5E0144B95
-89FBA15801A48A7867D9607D694779BB772D10B6FC498929A4A689D218350740
-D68A8B8B619F8E427D21F7D0F55FEB9065F3C62A24F076884ADDAE44D7EBCFEF
-703C9E342555C8F985C73D05D5733F206A7568A9F3F58A8754C00223A1C5F3F0
-72F387704E979796C5B525E07B52B3DA1BA60BBE7869AB5296C70DE428227E2B
-8BA35911916054F35B5194CF2F67D2FA90BAD0E08BEA7ACDCF8852F22D77E461
-020B6568CCA168EE756DA60BA381881F7BDE913CA63766E9380D4D52371CA9BD
-4D88F97EEC9C9FEA8310BE410D0F01459BE8AC4FF81AF70E094EC9EAB7AFCF7A
-D70D69CC45C1857C6B2872D1B141D68341F36AD9126346230421291F24540713
-177E40B77E99A825AEE693906EFF6BD3B37AEA4425F8525353F5B2BE6AAE27FD
-800E0A44A75F5EFD9EBCA37878C3AA86BADD21070B825EF79FE864C8FAC2F4B4
-CC3255F76A697DF96B49B7477F4ACE3E01C3B308B5047BEC9475FE9D51866376
-00F8D88203A31054CA687E9395AB5E2A39F5DA26BC62F95B3E90CF97214E1DD4
-3E6442F1E59E154C5F6F65C7F8221FE80EF5C389AB47F70F6B929FB4C8D8F51B
-8A64A4E6831B67F27E96AE2B4E030BF39ED862F097DA695EF32D9D4C6B224A20
-049A643796FACCDC81504563547E574958F55D4980602FF40D3A1E945ABF3B97
-03A3E87F2826092B0632077DA7B44319E18341C0A3D1008B7C877A87252C90BF
-D18F22185A572F1A72D141F11A4975B4DC2134275B93AB85ECD20205B690A763
-D689601CE4F859791C32BD4F42400CDF8A711F9CA54C921021FFABAA4BACF191
-0D03B17046E2D6189FFA68152657AE9B54EAF9567A655CDB97DF85BFF36F3316
-501203209E372AC415DFFDECD6ABDAE58C4C80A2FEDE0E29D666FF1C3D345E24
-B8F0E42DB633E7254DD7EF171911B360B4B8BED9424922C4DC228A11B2E998B1
-533B734E5090972DE90739E8BD1429EBAF4A40A8197B46623B193ACD00A1406D
-E3C887E010C3E71ED3DED4F1E44D5AA2220956849AEADB10AAF9E8B6B05FDC80
-8E8247306178B255B90BCE6B21BC8C2951C8AB203B97AB3080387DA3EE38825E
-561D3E738C63300CF1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.0: CMR10 003.002
-%%Title: CMR10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
-/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR10 def
-/FontBBox {-40 -250 1009 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 124 /emdash put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
-569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
-24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
-2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
-8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
-3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
-D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
-D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
-03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
-767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
-8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
-DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
-94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
-22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
-72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
-8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
-344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
-64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
-07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
-1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
-78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
-CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
-7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
-BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
-4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
-5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
-EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
-EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
-4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
-0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
-C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
-314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
-DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
-EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
-DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
-DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
-7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
-1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
-69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
-EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
-7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
-CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
-38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
-22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
-0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
-BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
-4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
-3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
-B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
-15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
-849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
-FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
-4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
-1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
-84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
-7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
-CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
-4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
-3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
-F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
-F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
-DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
-D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
-56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
-8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
-59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
-49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
-87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
-8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
-C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
-D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
-D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
-F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
-0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
-5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
-229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
-17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
-01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
-F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
-3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
-689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
-4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
-A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
-DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
-364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
-7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
-26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
-43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
-8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
-C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
-94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
-C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
-B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
-4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
-7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
-204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
-B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
-7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
-279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
-E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
-CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
-65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
-BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
-6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
-B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
-63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
-4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
-A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
-67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
-DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
-5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
-C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
-9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
-B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
-963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
-D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
-B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
-72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
-B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
-8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
-3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
-668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
-ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
-69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
-C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
-3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
-407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
-11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
-2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
-4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
-2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
-9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
-CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
-DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
-0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
-5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
-9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
-EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
-09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
-2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
-AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
-324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
-486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
-EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
-52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
-9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
-4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
-B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
-BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
-6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
-B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
-16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
-E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
-546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
-6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
-559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
-C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
-ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
-04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
-7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
-8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
-A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
-94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
-C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
-41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
-7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
-18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
-9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
-E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
-5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
-4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
-E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
-9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
-89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
-7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
-AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
-3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
-61A06A43575568DC3CF3844BABF04CA767E299575EF2ECAAC7649193843D694E
-6CA59318C01132C361A3E43BE637B70B9966664E12EF4707F6B100BC37778D1C
-F1806B1DE081D2C9B995BF1EE3842EFFBB8416161FE31633A6EDA118E563BDC1
-C42F403BE8A009FC756406669E34C6A08668808E0C31A589D0720BE32F3181F9
-8039645643E15D25917F38DFFD8BD08A420854DE15AF291ED675A634C151193D
-29AA6E04E84A598350AF17E71973854842AFEC3EB1B58E4D4433309BF5ED9D86
-32C4BD136C89169D45718A88BABE25072D8E552AA4CA3F840ECB11519B06EB44
-13026DD6800CBAA90F3BF0022E66A54BE1059BD5D224B674AD3199379D82D571
-ABF7BDD1BFA45A0F0E9ACA0A400BC5FE22DF4A041BCCB93DC23D547CDF0A49CC
-6C7DAFF30FE0843CB3324AAA3B92F543A985027FD2715F4182BAB1640F391992
-E4DB6C19A96D1D48EE4A4DD94D6443467C61CDFEC9B11E07DBD7F7BC33B34BF3
-EB97A7C3D0C4E322ADAF9CB6320A64DF78223011738501A124CAAF7D717983FD
-8BABC1AE4CB0FD382E26BE0A83169B6C371950D7E9A94FD82BD20A3E2112F447
-F1E4203D9978E6D9B8DF24E670E2D4BD160D5CABF3C460F00B5229B48CAD82CA
-9ECAB97B709C0C4FED12CD9B497B4D5E505A22F12589E28B0C3017683A6EEE2F
-2928DDF7763CD8F58B531F526EE267EFEDF72DCFC8E547F329A7C6BAE64C2800
-AE848C69574115EB02F9CBA61ABF99AE6DEB18BA4DD295682F10B960D8F0DA3B
-B4D6190603E95B7F8102DE04DBED3AF90DC3CF440F60CF50A8AA982FB965DD80
-E0B8F62F1589924262E1B3292F82EAC5A888AB240D40F889F9CE2CBD7F2F2E8C
-A1E4479DF6E27D00D4347DFBB8B977D8B1ED261C3CE14538C0AF23BF0B4825F0
-39B2F2AC125BD84B6B9626300A2C001119893830B3542A09B6986620B6E9200B
-BBC5CA508A4D0A31B72EAF25651A806F88A2943849C5CC2CEC3C79ABA958B020
-6B8ECADB5438E230ACF8939688C11F16242C5D58A55AFBAC2971E09C0F7A2D20
-2B26FE7FDEF8203A73EB4E47F9953B6EC5ED9985C6D84CAFB3DAE3C39B1EE33E
-8D54A862ABA4FD8C0E9787B5B71E960FBB9C3003F8034CDB16A0D8D0709D18F0
-22679AA4339CF26E41992B5B5B33D59D937892983C5B1151AD6EB37B065E8E99
-6E9BB66724E0CF4044C77E79B6D697D9F368A76B76C93ED4BE9C4E0B61B26919
-976BCD5FA3F527BB093BBB0BB979131EF153F77845B4EB6B7378A17DD297E656
-0BAA38BDB532CB389E2C60778B658220CEBF7F77DD6677D8248975B86D52ED2F
-1DD38A57ABE4ECCF554EFE937070D7F73B8B51F59449236E33FB1C6BE506F7CA
-DABDB3E38B70398F5FD377E00C7DBDBCCA9D82180EEA815E0E2231789FF7FB88
-67F04D4049A6FC4CD8F12202CE784F633E3161FA9E4CD2F3401BBEA11B43D1E4
-A99FEE87D0E97CF4FA509B30F1E0672AD64EBB14C9F19F9E6DD333B78E91E4D7
-058517DCD523FE710FF61D766E9B334BDD7EA54C5BDCF6D612B27BF30449DB57
-9D45152EE0223988AB6689FF07658436359C2461BEA57F9CC512BDC51EF25493
-2C25DBC52DCBC0278D296FB8094DF33E7E3631228639796FAB8E7F3C78D26C89
-F15B4D251835074FF6EFB9261E2702167F46BBD87AF1CCE46D69A9E54B3F19D4
-CDBF4689E4A980A46CB0F8259DAD1CE5C25567321F929B7F501E86FEBFF155EB
-CFBCE24CB837F1299635927640256B311272C6EF36DDC649D05DBA7F9F4536A0
-B3B9513B8FBC8E3A547542F1DD0C6306693FE71BAD597591FF53046DC982506C
-D0A8EF82F11B01A588399B10AF852A61A96D0D8B416DD36D776B23192FBD8B67
-230D93BE0C1238D5FD5E8A762BD8197B11E1B0AAD547A5C203EFF7027AF9017A
-D70DEF3A45D5C32BF964200A3D9BDF03B1CDE2A50601E5F8D083AF733C5D9B28
-39579CC1D94AD59B64555DEA0DA13E2E771517EB7DB91660365FBD319FB79828
-FF9FE5E425F710BC2A5250765A9D4B494028762ADA4FCC849CEB3A4F4CBC3FC7
-9298A3450323174ED9835CCDDAAFFBBD380E889A002CB98D1E46747F6EC97E4F
-CEF493E6729F14AE0F28AAF68F401CDFC05A1D52C92E90E6D61163B99DC7E2FE
-663D254BC29F0923C210385FD72FDE4ACEED53562ADC89CF698C61B81F426408
-6A4F7E6211243D2894A2490C78DDF108FEF22D595919F8176C9151F9C4EC7FB1
-CCFFE2DAED0451C01DCC92B8DA7C897314C6464CB96FE5E9AE8D09FF5356642D
-5BEFFB636CDA259DF1056A41B007AF086F3299DDCB4BFE497658EABF868FE2C8
-17F3F289BB8EE99476366FD4B5FCA6FF6D2B9DDE027C36C3DEA8D9FB8E1E315C
-F7AAAF23098FABCBA9ECA1B3B62D97C718E9CC920D6060DB63D12C54F40A8AF9
-8414ADA57B34319E1B9DCFE37E37DD2419A93FF824AA210581867974EE20376D
-20927C4E0EF852EE9EEAA6C3C33ADEBB54B04F8130C9FFE841BAB8CCFB29DCCC
-AEDB97A11253347D0A93054103092489A7A0FD2DA57144A996C857A51A8D59DE
-97736B5DD55E7D1F3DD15B563C9EB1ECD180E405EBF83F2CE8D8E3BB3CFAD4FC
-3B56C5E371D1F24F8B87871AA4DC5D36402F73E935548AC7CE28D7AF7D503969
-364DB58C5D8C449D9A1CCE52D60FD42EDDAB0E92E04D4085570FC95378DB0E9D
-29177299929C8B877397FCBDA368848AE438EB03B2380B4892FCEC5A6398F275
-C8B9430614CADF97BA564CB4FDA21CCC0BC080D9148D461190E7A68007BAE7AC
-863F39346F91568267DBB3B5AAD9AF3354222301F3ED3E144067310C29E86A68
-680D1F9DABD82E2D6FAD321A778F6A7F4B4848EE947AD1BF122365095AF25FEA
-3B3574B9CCEA66FF03751A4D75176773043BDA6569691729EA8B552FEB498FBF
-CFE32B8B3C37F71B0695A4B1578DD1B8E0D0CBFB6A2CF5BF3D35B63BFA956368
-39F112348E15E0B1DEA4BA6FE0AE44F6A92B0917F673673592085CC2AC0208DE
-2D2CA8E867D68BA9DEDDAAB83FC929D38927F5E5E65F97A160DD4D9A3DB6E76F
-6AD8C92454E46405AA43F782C9C7F3EAAB984F2D26C47C3794586065392A043F
-C8F670C06322769837C380DD81277AD8FB61E2F17D2E6D044EF64802A82227ED
-8947FB5A9D39C3C7BF66900819EDC802B10A867130FF9ACC42B885DDD5652727
-A4F54338B7D8CCD04DE347E31DD5EB6BDBBFACD0F605EFC0825D6E4560174995
-5A3AC5F7C57BCAFB5EDE28FB8FEA0015CCA84A4F421F64B9BAC351E4C9918123
-CC9A9C56FAB9C164E12EA420B0B65521D001040257AD908B17527740A4BE8B4E
-518472003DA96D02A04B567A806D6FCC1AB6581C255047F98C302CF6A3C38A3E
-255CCC51C41FED45DF5A8DCB7CA3FA3D4018AB1B3C5A3A5655BC02EDC17DE7F2
-946449F7B2552C97BFBD1C6C80E3CE122755E1679511101386A75345277E293C
-6BB60E204B16949F9FA0E6802D61128023A73771AA40254F4F7F54F2518A4086
-C8343A5EF3F620329AC04682962E7C2580A0C23ADF1096031DF2C0FA8B578222
-6309D0ABE027DB4E7F59A0D0F33022188CAF881F52A0EB544E53701C7819128C
-96E26E9CDF47938D16143720A9F774D36EF27770625017EF94F3BE6C97FB75F4
-A3B44E10F6D3ABB303CE4F63501FC5C91691D5803CC94C4A4E5211BFDF5EF0E5
-451D2073481EAB5035A78F14D2BC63852BF3A41D51B5A4048D514E16E3519D24
-B1E2A278771055679E561A2632E9DDD7EDEA3599B28ED4C10F1929D10F093018
-22937E17BD99FA33CC4EBCC92A6C21B130F0FABCC7CBE12408C1186CBA3B13CE
-D69E501C346EEA662F847C756DE1616B5B5E4B670FABFFE4889A85AA9AE8DF53
-A2A29D710FEAAF5F275C317A07F484DF206BD0C4CAE557ED66399494FF2C1587
-A6630861B8E5E62D7B02E3F6D98AD4F5D6D3FD34754DC20C8C69325CF4F43117
-80CF56F55822EEFE030D837AD51B2FB722B25098E976AA164939CCEBFE453C40
-54DA26BB8277E5FCB0B209B090001C202B1D417BD407D74C96CE6E315CDCC416
-7EADCF5EA7356F9150A92B5F496E54A4BE33EC139C33FA3D7AE1AEFEA515F540
-299DB28C9EBC83E3C89409F5D528A3CB3F59C1311A1AF0A136E237D91A1E4134
-5EA52642D2D4B151D532F29BCDC1E8FA7EC77B3FDBF561F7707C46753EB922F1
-FC0A0F94D7B9DF786EFEB034179022B5D8D77E368FEBD1BC318DDCCC8126888E
-3277B6F6C9BD74743D3EF6A6D1DA3F7F69E0689B2712DB9CA8C96A1928309695
-D64EFA85FC190E9A88B638FF4314150220DD3DC50A630F19A21D78441BA9A4A3
-E3E0D201086BE1A1BDB1F9F4E6F8ED30903CBFD91F43B8B56FB269929C431F13
-BD550F401CD9FC0A612F61A635C4B778DCF19D773AC9F83E5B393F969F0A6F2D
-2C3399578ADD321DFB6FFC828BC708C132EEEF51812305C5AA9C5123EA790995
-B17C609E9BBAE75AE816CB02FA63A5508EC4D6F5E68B7C69B3A7A743AFE1C00B
-479D1F4D93A85A0AEA989D01CA06485F69A76148A5D541D834864447661987D9
-A81CA3F0AFC109E62D4334B1958B0C260CEC205E37F608D53BC5CC5DE889C156
-D24EE0442D2E487C9425C59EAF0DFC887D850F2AAE32FE27BEFEBF16ED33449F
-746284FD593654A134EA7CB1BA98A9205BED9C2E7625BD7A614DF27C3A72B163
-F57788C67D91F7299AAC5682F031353E80A7FCB23C9DB3CF6440B3223132325A
-D55382F07F7D83C1E7F0F1B5D751FF1F39AB6A357E08D34FF625544F0B62D92A
-0441FE53F5C5068A3FE0A80729DA7693BF377C79FF3F279C52F72F03E439B688
-3552A1F0429477294E062ACB878CD3955BDB1050195EF91F2010611D1680D510
-33154CDEF24459E6FCC010D53C07AE9052CE784D8D060265885B93E5D201A3A8
-39ED6B100E14C87992A5FC12587123D59E9C70096C0B8CCE18996C7A04061127
-37CB2FE94AD25A8894EAB6543B4EDE18178B7CA02251752EAEE9007FE645DCE8
-76E505CC7CB133F1ECA70526437ABA8C3E966B5F7929042A91745F43058F3018
-C135ED93815B54CE444E864F840483D4B9D44CE0202019CBD40B108E1D8B4A0C
-CD10B442AE5C78CB3BED5E7AD9B89DE52CDC3D3FF506159E73F84CAE0C4B19B3
-310F6288DC7A1C13043951094729C2D036E1B268FC30334A61057253D5ADBB06
-062D9CAC36325D9668175C046E8E554101C89F31E0821FACEF7474774EC36C39
-62909FCA2682F0CF31802754757EEBFBB5F98DC008B534245782D12EB30A3DF4
-B892B1E064EB271FA436464256905FF2E91042882267A75914104243B60F12FE
-3A9B5D9754026FCF038A8655423230E5F2984457B260354E75E7E8E438995E0A
-41CE6D077EF1E08257CE1B8BE3A2397A490DACFF0F3FF8D20CFFE6BD58968AC1
-321A49B21C324F322B5FDE900D9E055BF6A020156CD67EAA1AF90BC64A1E1731
-D95EEB12AEF53754C7FE33167B9874D896FC5984CB032C60D66F09CBF5B045B1
-EC95734469F57212202F37D6E294E73BBFB66C4B821C5D844CE81981D7D50327
-F42D8210216D6A4826197CC24865813A441931DA18893031AA1EA62321B0DA7E
-CBAEA839D114032906E18FA1C661C1E88DE33C6337929C6FC8B09B1CC5B95BA3
-E1C71C33CD9A3E4999BDCB55F0F931FE0F7A3EF924368616449551E3B0FE20F3
-6B26C6317A782DDAEDC91723E25A5A325B288416E06A62FACC35A22F7B1AFD01
-6530D0D6E80C193A2E891BBA5CEAAC8315281BA873C95C642253BFC2BAF34605
-9EAB0AF45C3D049A8F433472560AB5DC2561FCA3A2B89AC95B15CBCD15AD6CA1
-C1E7175097D316CBCC0F5785A1CB9EF5D109356B07EC553765C3542CCD4D4A71
-A6D402D95A9869E5194E2B4591CD6A89A83D1ACD0F3AF7ADECBF37C69960526C
-CD96CEB82DB4F1504DB80C171383052DE99AD7A48CF508BE024BD574B06E4A7F
-CCAA259439F581467CC43F1775A797ED8151A08B898A4B4A5E2F2BC98C4410F1
-108393AFB7031C8C1B4CC0880DE20C3BAE0DD0EA1F15DDA20448F7893995F28B
-0608C5D9F4D434FC6B36C56A5A5748BBE676E00C3A9F418FC82F08F7C2650792
-BF935B7ECF4B4B2868A4646D3AF8442072DDB42CBD89671E3D8EE4E0C946ACAB
-2D7DFAD319C93B6474B36F4398D06961CE2EBC611BDFC74C06AF95BF565DDC42
-1F7932FFF7A5658514C04D79CE7888CAB8C0C13E13A0A38DCA8F99A2B0BB9F08
-89F413B0BB6C208C0843F607D1DD21D2D2857F5B15113FCDDF9012C68466EF82
-C9E67E81904730359D72118965173587DA5EE59F28B0A101A8F641F1EFB084DA
-CEF86B85151E31B21F66BD9055293B5878339FCF27216CB67805247EA7166DEA
-065F283E2BC91E9C526024B6954410ED143A88AA91DE752F5CBA7129236D8426
-DB326A5A9DE91A2709F7114049A8FB333E87CF5D1D839F4F79D08FE684A7AE1D
-20AA674461DDEDDE23167D5881AAAB018DDEEA28157CF944C55E0E7C7010FBC4
-7884F438049A6F596912E65A54CE36C42B22AC762362CC4EC9F9213FCB908814
-E63D7E10D6BA9CCF802B662586B6E5DDE8C7D5B7BA6D9C8792E87349A1811F96
-C5A88467B93EAA04D84764C10B344D51541A987548D4F24482902A7744535988
-09DC57E9031AF5955F5659922D46FF6727BE8AABB889563878CD8907E86742CC
-AA1424363B562FE791EB65AE23596095311612AA0720655CBAEC471721635BEA
-2E322E3603F763E4A151AB2A8608BBC11AF4B9EED89930B48627D12C7857D906
-E1BA68C9D2401056C6A100D5EA2A29E34DFB839A22F726508BD77D445EAE286A
-50D46337619F86AF82DC4C2F0D1DAA005E17AB38E54756D48689EEBCB2B70924
-D913013BA5A330D69B7B4A6B30A7396CE684D46DF2C24925CDE10CAC5AFA48E8
-29AA959AFB2ECBB95FE16B483B49A6E10B009E48968EC7EBF2CA18B3A5175499
-8AD1CEFEE2E3A5CB84185BE886B912F4F9BD1859E86C0F2B3BA8E4CDCC509C8B
-70A0226609B2E5B3C693588F89B8B9FD3DDC670B0818D59B1AB6392B61567113
-DE0F0AE4B5402ABBBC5EC181E3F9131E42B4D72FD500AF4A40ABB47FC78EC4C4
-340810870CBAEDB3ED8B6991611F978A9851DBF989CB54A7FB6C5590D6F389ED
-63AE2BBDB9640A581A3D0D56394345EC8A621E639A36D7A3567ED4C646782491
-E6FC3D0A16096A748BCED36335A39D30BA544F5E3250C9A8465BB4BF1F78783A
-A6F4C8AE394E45388641DE0810E79CECA8CCB82EB5B01AEB294BFC1E797CA973
-653AA8E25F12FD4637D4274540476E3BBBA984EC2B58B678650BB30D074713F5
-E6A5579EB116C013DD4BDC716EDBC4B0680BC1D1670BF465BC7575EA0C0FAF7B
-50B4CDA35F6CB2F3801EA75F8B8D13D5CD2B81035C06440EBFEB05C43920C8AF
-161BE712A91A009B3C1DE9CE9A29149E81A30BBC08A7DFE5291A137937AE8CF1
-D24CAA2620309F0CBDADE912CEE0801BA72A097446FE8DE2C494E5E7AB790D3C
-46A4AA9628D791FA83B3FF9DD11F115669209BE8B4FD1EE6627E179BB53C245B
-3AE42A6A95D73A45E7D9A78C2C46544DA9BF229077FADC8BB0A288B044AB219F
-C62E33225DB5B58C19A0894F14C57E318FD66A56BA936DA1DA059FB5E4C89134
-909D531F94915EBD4309465038E6E2D0223EDCC2D9030BC5E6B07C12A28AE03B
-E58266B28B0A4111B445670449021001771205A0016DC0534E84E02007A65E4E
-DA5212D4668270F11113293A1A0FAF9E7F5ECF382760365DF24DFB1A49D50116
-D2959974973840F8BACAADA175B18B0CF49E47728F744F3D3405951EC677C4DE
-F2A8B4AFB9740765742F701691B79309E7F8A9BA9CA4734BD8D6AB97F0B8DCC6
-A77EA6F065844656ABF04A6224CBC9BBBC929E1A4BD3230B901AE1E18FEBC2DD
-1642AB4A5ED317F9AADBDA2062510300CA34A7897D0EAB3DAC7DD375C24221F3
-03E0A4697C6BF80426393BC326893D524CD60CCA3EAA8F09FCEDCE2F08F2DFF2
-CD8C8E6CA25343FC294DF8AAF1C4938DD7BCE943E92CB8C70ACCD03CB2589CA4
-E12353188F519A9E50AD95EB772C39F0D0BCC02DCC9A02C55303B370A511B396
-486313903405479B23FDD01A7D1644212EC65BE4DE730ABEC92F9E5573A7353F
-139BADF8C69BC5EC022D92360A28C66992515A7AC3E1AF4F87BDA91832003EAF
-02B611681A280492A0C0653A7B0502FA0F036B80B1EB5A92B6E2E34F1D3048D7
-9DCBC1994908801E17FC33109B407613C5537C04FFC152072F78F1591D6CEBA5
-37F9E385CB0330754F7FD33255353EFB68A88B6B65D378F90E85996E29E8F888
-E1C837F735FE92E1906D6A3991E23C5F4B6ADAE7F80B134DB3F2E9B45316B5C6
-AAA37C479979F320C431641B87D5164CAAE38089BFC5A0466523901846DDBB97
-7E626FA4406E96E5911BA848F9FDECC660F0D9C8C51855AE6F61E80CC6D7E4EE
-8171B10C33B62C9FB6421E50ADAD266816B3D11B62926EC7674795A37B117816
-3DC5AE02F71DE34EA896ACB2DDC623C44CECCD8D6631517D3B0D51E3F5F373E0
-BA991518CE7A61A4CA01365C812DA9A27A7BF7F61B70BAE4A25353475AB28D20
-0EE8A274B7B81324CED23F8144C859318D24039DF4104EFF6A46A3E4AFABB7C0
-5D54A42B98554FDD4761FADED865F6CC6A62999A6D5E428B87773E34A3D59886
-1AD7953B918FF207806D89C4DA9E29FC56B5335F46516FFF9B0077EF6ABE1B64
-050AF7D08B8E0CA34BBAD1B70B040992EB6905A8C5453EF2A589F51ACB37D2F6
-D7435FDFE1D2647F8E7C9EE8E55F375AD259E806348D28F26685AE4E64CB08C2
-8479514C4F2BE9419CB9D2FE84B2551511171384BFE1FF2514948AC8E0011459
-0194392A0B0CEA69357E0957CF64187606C24B66E75B90E65F6BCBA6B9507400
-FF673F3ECE5DFBBDD8594B2FA9F7FFC6C9EF9E7690D1697E3286C9FEC9CDB3D0
-56F9D219C8A5E8BA1E6EF3C56B279998EA9B86E18678E1D94F1C51AFD500DD7A
-20FD646AC1723028CB77572685818024324CEE2DD03EE89953602B0BEBF931A2
-76549FE146CF4211F5D7BA4CE8A4626D6B6DAB552E158DCB9A85A656F0470F84
-396B9537A99EB633499B8D06C66D543B638282133067A5EAC753FC7B68735FFE
-DE9C5F435282BE7192F9F44D6716BB17CABC23970253B1C4297CCDF520407603
-87E0B3D295DAA1A72034D94CA5417B0E6B5E148A2F3B842A77C54EA8010642F6
-3C45F39A391F146FC070A9384872321AF86924A5C79C4932BA1E0E25EB8C76AE
-C2FABB9F40A19CAB8CE845AF2161E6C5CA4F1F28DF86D04385DA654DDDF4EBE7
-C2067556D6E9C3326F8578DC526050B58962B3FEEADA9E30FD98162A7690B2D6
-31BA0428550DE10F9A61D02A2A978709FD31D2A208379E53B1A29D111ECCE4F4
-BDD9B8E29576B2F18DD4AB9FC631C5BF6ACD81CE8C9F194138A2A9497D966444
-F0868CA92BB615B511B7370CFF55492C57ABBC22FD278E6396B70BD34192F086
-A98492AC442E001B9B77807E3ED26260D69FCAD22B7733708CCBE7F84F7EC267
-53F8163315FADE113CC938E49AC9E00928D16A317AE338E91E38AF8B894EC75C
-B5F3BFE33ADDC0A27F0E754D2CDBFAB0BBCF94A1BEB2F286CEB90AED9C34963F
-39B63EE068288431BA3B31E134AD75D563F5B81782AF676FF5E39AF212EE0282
-D66687205CB81F973D1624F14D1E424EEE9FC189327F1A502F6B45CF3C2D469E
-A6D952A5854556DD6C70382A7939F4333B6F4494D8FB50B1CB27C4700696BACB
-087E7C705250D49F5298C5419F03F713619DC5AA7AF817A48C5E1702E1ED4482
-ECEA7E7EA2DD3B1BDAEE6B4E203346CD7F7024D0AFC488F4420CFE1ACFF96E8B
-F52D2B9D084FA37FC69ABA82C5C1918ECD8A94CC7E3B85DBFC2EA7579AFC0749
-8812579E9D682FF0EB5C00BB9BC897CE9F6BF1F00510F1DDFB17C6FC832E0CA9
-79193FC6DE4EEAEF899448D12826E0AA8799B3E487916017CC3C0FBC559D5921
-78BFF1C4D4C351C472C00B3AF94436C142C8C70189805894A010BE3B8FBD3A08
-97DF5961E9AF3C9B374D733D7049EF23483003189AAE67517A5C953F010B4473
-99EB286E4AB8DFF15C226B1B5BB0CDC1BD1B5890B49525EC07FD9E757864E4D7
-1CEA3FF16FBCA03FE72D50A5FB75463D974BF5A8B9F4F8BF7909059FEA775D23
-5E8A48A69592DD766EBA72EC27126AB1537E8A9E40B8E908A968AB71AE86E9B4
-E34C4C0DDAA6CAE34DA06795C5C23B61F1B3029299CEA838209B9CE83B92BF1B
-81DAFBEB500E13C5C9EBB2D7AC1A9F2428286F5CE7482BF12132F263742E83C4
-B99633A0EC4DFC9C06964FB47FA7E8E6C5A76536ECBA7187092BB64C97B51063
-03409528242E0D79AAE56E8EEC79D10809E0FC4C7894DB3675BE52AD3D954689
-23FD259BC85866AC5626C80E19B46D46BE344EEBB27BE626F03E2AF83287910E
-F1137C184D279F0886A00191DD1E78EFCFB193145ECBEF516BAD89911E0F1261
-E9AA1E7AEAB774443B5B47580E94E8D11CFC72CE036D292DE29C0E458CCB0CD9
-B9FC222E3244A0B41A2FFEF2BB88AD788609E5E244C6C88B093582ECD05782A5
-010C2030B988B7DB1E30C6D8E54837865246B93CE7E040E2A482FD0E1AC9D50E
-632B6508154A39BBF6D4A6BFE0C835B057D5953BA5EE7E0941146E9AFA61FC98
-0182BA32BFC0E8DDB61F96BD482A3F3BB5109B08A97F0C369E9B77CC863B5E5B
-F7086A48F59EC18497AA38753F2CFFF02461FA37E4B555C0F292BFA8ECC2B3D4
-5B41FD849C8E94FC2F8A8FF379961E28EC3DB127D9F006C6F2B91168DEE7255F
-4BA8FC35765D75A2A2C9065570592C25E1726B492819927E6A0278C26072A01A
-C3FCCFEEFD6C303C9BD2189DF98E538140E7ADF92CE4673930E950CB2A5D4F1C
-948FD5F5C0F58D730E710EFB86D7121A8C77DCDFF7563E756A63CA0DCE6699A4
-DFDC0E17DCE17BD056757E944D2A0EE68E819D2FD3326F9C3204CD04363B2767
-1765E56741FB06DFB613B2305AA464B3A2C5950392B7DC4A37FB532B128A76F8
-7BB70D92F0A5A84118658061D40DA770B3A2D8DA3F1EBA9754C451C8147BD4C8
-C8CA37F12C3B3E83DE897CE25B437A079BC16C1046C3935792EF7685B3F234DF
-14DD781A80C66B7B315B2FFE93DB467323E01F0426DA7F488D5B28EC0C4F061D
-CEE054FA05071CDCF0AEA789EAE744D80392BD557F4023ED1937A1B53C757AD3
-185C0710907E7B87482C48A1E13D2BB81F6924FD8E9E8D99756BBAAA03EF85BC
-DE6E14CAD1265E16E781AB6FF98492DD8D479AC2E5206D2917C97966110AD848
-C41687115E67B559D183A07037D04E8E2FD40A5A40E7D87649739CBA8CDCF443
-C587F0D9C00B9A808F4E649AE7C767B35ED489246AAAB778D5E63AB7FD2777C1
-26A941846E215BC7496D78D098CB4FEFB819FE8E5F98E50677D238A1CD1D661C
-67BE46A67131B095025421A13FCDA084279959705D53F0A940AD96948DB37000
-A68603C8843CA4E7444435F17DA361F2048D216763FC5DA7C687C6AC40AA7318
-677599384F99D33DE44040D7DE5A870A420F638E83A811283290F0D5357A0048
-8C1EC53D383C8E5E7895581B59691EE045883E3E779FB0470F901BD8613DB965
-D1D005E804FA715EBA9CCB6623C51F41FE9A5FC108647517FEF1E9407D4F2527
-8E593E8284E9FECAF7653D668F975436E4B44E15A8CBE5CA08C04DBCEB7E40C0
-496E22802F2938433DBBCC34A0BE026AE1C21CB0B89E81159316D6F847CBF057
-5DFA1AFB203BB574E7D5A78C468C285A098798A223A3234500C2564A07F416FC
-3A313DD014ED39222BC4DF4F9C9500095A1F79F71DD3F065C95C3ECBBE57B714
-71FDF51CAED45DE330BB35CA4D3854DD4A353623BDB414C852C8CBC4B1AC6ABD
-6A3F00DA0CB3DCA3189176A2116D9AD01E4A53B7A67158D52D6C36052C625F30
-F443FC0656863F451E67ADE57F662345C33A479B1832928B5220544ED54EFE3B
-7517CA769B4CC4BD91C9A602B9DAFB48B89C3E490613A9B07C4385A121909511
-5A6B9DF7D5FA5381FDB8B456400EFFB006F15DC1EB93D74288E7227C8FE6E137
-56382C86FBFAE90C1E1F9325CB3E872E430F8525EF5A5B34BD7CA45362AC2729
-E1B39550E3BA8E2D29160058F7DA661C17E009762D0D99995E0EEAF8F8893802
-946EA5CF487C25E4C91A2A6B98E5B6DEDBC1BBB01FF8EF23C9928CBFE5DE8040
-390BAAA66997E936B50A1FEC18A90894D832CFAA5C35891CC01CE5DBAB20FD45
-C069106615C30C00758DE66ECB7CED5E8680417DFCBD9DBB672A71530254C71C
-DDE3144D20DAE4B196C462D8828A3D612A998C8CB163BFA33CC62CBE83E63DD8
-3C4709E156A92123BF5FDB588353ECDD293A7281408B73530BE4806BB589C691
-5C10A1472D6C311AE6C173EB4A3CB06B7A3E2626D7979C427C8C11EA06C95904
-CF8A3D509C72C31AC379642EF9C292DEA069347C9136D71F44D39F4CC3E51525
-10403CCDD038D3ED6C6464989218475DD58B27153F0A5FA890029A928C053AD0
-2989CBB3B0176D2F88702D00DBA0177EC51B08D7E0F9333DC89C0E69B470F52E
-38E750F11701B957A3161364F6BA74A8B8429DD87D0981597DA9206A46795412
-225635933413394E4BA04A632695F37E253760874E813FD8F4275BCBB0E4C6B0
-D81D546DBB99E27FF7A1AD640364EF547CB5D2DC12D7D609DB0B9E4EC651EA41
-0E3362B3745F9F1B3849E2C047138C4589137160F63FB5C093FE743F9B2A3907
-B08B14F51FD277EC66F56E19DFA0B0727CACD93ECB1580946C9E0092F94F740F
-F1347CF42AFD46F3CFC4E44BA60BFEC83F31381DDF20EC1808CE650BBB75D8A3
-77827873700806A2A7D3264B95119514AB9940C0593F3EC58D3CB7281F2EA154
-E1C2FA3BDE6DFBED2CE4D7A74EC9718DF075B6928437E54872C8C66EA7C17012
-DEDE74F0185C67C4D884C0DF21C6F80D0820CAE35C6BAC3A9EEC4183DF461FB2
-93E2172FFA04E5470C9D87A71327278B2395201343AD09AFEB35F8501B24445D
-9B2614D75523AB7A8ACB67301FAAF55321FAB88DFD65577E2980418C6EF5D8FF
-52678F027130DAD71117820C20DFB4A24092D8FAED4B8D926CF8C3E054AD0389
-A2C37BBFE78622CCBB3CC1853E90E6E4D906410BA8FCAD74A04C51CF2691AE9C
-6C462FC60E1A644EE0D90FBFA4D099F8B354A7E835BFB1C6569CA247C10B45AB
-F7DBBA63B937012C6E1FA810B83D449D53331DE1379E0F820F43679145B59B4C
-CDD277AD2EF9D907E940E4477D80EBCC77014FF7622E5AA8577C889FA8CBA263
-72510B0F22D28E2C5360B2B2C7ABC7A93AB6C3D728844FC7B841CC53EDEB082A
-2253170E67AE6EA143B5CA64C28EE34917ABB202F2C0BFC6F8223EC68893E887
-3CEDF6706042F4F95D761D4B916DA6E946E66EB78C8A2512DBE6866F181F7480
-387C49646C79DD1C174C26DD5F142EF203E0E7567A680A35A7B7C9EF3FC361F8
-1101E034F202C5DB0D8CE9DC4BAB1BB9CC04CD0036139E96BA34B8F6C37EFCCF
-4081A2B9F1305CC79BD3742DE74B82E39C533D4C2E65C7CD55625673B11AFC34
-2BC54054EED14E9AF22B578A36D638EBBE40075D3206294844283CDE49B54E6E
-11CA2540C763EC4CC7C389051324238D0D380AC81AF4EE04989A762637CF871B
-C43D284D7D5191C68BEEF0060081B16CD93E9F677300422A7CD2D4EC541A6AA0
-DAA2A8A44BFE7BDB65A989AC89E5332DCA160C92D2177ABA2B3CC510B1E6CB2E
-F4C92839132A822CB52941E83E9360A96BA996B0FECF3EAD5DA932DACC0163FC
-EAC4FA40275965FAF0920001F087EA4820B87A49CC4CAAB6C336FB89FAF09AC4
-BACEECDF4B4C106F70576C53F55390D50C6B8EAB81320400A24626E246EA71AC
-98607D9733764521EDA48A56F6B9476030471DBB3D91854D4D6388D0A62F9E3A
-F5086060024541499A375347F861343AE902C150AF033B8F955CB664FA657742
-93AA641F64599C02373F1881272B4A08A44D583D76110A43832F6F22B86DC5A2
-D33053854E746DF104241714A2B17E10EEF0AC2929B4C15C5CE3D5D7C2EA7FA1
-28335A0087CED3DA9536E8460CE5E957747422A3644F96C80714E3B7DC76BB0F
-73D6229AD8FE72FF8FB58EC577F2253E2D5C27168D00401C94201E64EF770A07
-DA43FD8C31F41943E46EB80DD3D9CE38F72AADA9E70B772A692CA7A41573FCA6
-C46E4F9543C004167529716EC417B5EA6AEA374EC7EA6F0F79A5F32B6F40A6E4
-13329175694D7869E60B837C4230269922B681DD5588EF0B0D77050B71D3258A
-89DFDA0E7B4EBDA9F050951D4573EA959E5499DFB5BA7FC894229B26DAE9B82B
-8963640EBE6E892C84FB3954ED3B0EE64E273761B4CCC34E06D88C630A92A79E
-E2B0526201FCD0835D5760F680BFC51573894FF976BF8E6DE378E3B24261C8DD
-BBFE0C9619F2800F807716E9353489EA192157AFB5184B4D4847157491D61C9A
-93AA2DA0B076444CCE6A2065BA5708FD5ABF50A8AFA43AE65982F596CCE43B0B
-550C4D63590E0B8C48884B2388B1E3A050035DFDEB1DA220ABBC945B542E4551
-A039914EF703EAF77FF5A8F53073775703CB7681AC0ABA95E1CF016BDBDB0277
-AC407281BB4A5DB2FDC550DBB92130234AD7054C851A56EE0AD6827B89BCC5A5
-2748735C0F862AF250B55D2CB737DD5B0572F7C129C09828E4D71419C27B59BD
-F9AB2A053F432A956EA9E6801986D3B1E55A80C4397E458ABEDE8E9087B07FBC
-101F3BD84D24C5BB61CED41E292B9CCC884681A3072E0D420F0EE2B1129FC5AF
-C74D2A359AFACFB92A1C849559DFBF0D09018496369B5377E696C1CC6B9D9B67
-030342943DBAA19E677DB0A8DDE0066D8E6896CBBBFDEFE13EF9E5A85D2A9ED3
-9540316EFA056C11A8E65480F85A0CC8D0DE150B8C7D22E45DE10710952C3974
-C9D6026A9A6894C1AE2C650EB15EDE4E87E4F457FC7B8EAD32BCC5FE508C9284
-EB456AA6FB8D297C3F5E71AB1526956C66CECD83124EC68AE6546E9C3BBB42F6
-045F4A6A557145FD982F599F8B285C0772D6F1EC2F73ABC61E7EA0E6A8A4D391
-B5CCC56AF378E9CF4DF4732548024D51CFB3DA18D78747566A7F7E9249834BC4
-6557A1CF2489EF195FAB236BB48FF427FD32E1903B8FF82EBEAD2E1CC6D54821
-FB3F6763D2CB4E6E383324443D1CB3295BABE7328B9FA95813932A37FFC3A9EA
-E45196FCB6236C73CF95FFB675510259939F4525B298B3A69D0B52472BD31D45
-24CBED3F82F7477A180FF3430212B1CDC21EEA48F799B01B763C93CA93398E46
-360707E212942E17BF445D2E054EB9C35B4204A7AD6E72CAD1DE1589219E6530
-7E67859BB41148903CE77201B8FEE094EB659865F6A20E3DDD920CD27B118249
-FBBC11810A14E60E8C09E00363C039AA0360BDA398F3C65085905EE781AD5726
-DBF612DFCAB47C9E9E3E516CF26F53B6605124DAB8C876F50973BD3038B03EA9
-AFA4C6769405477A68BC4D7900E1DE54207FC766AD11F19A64AE8D9A2C058BE1
-E89035EDDA2E568783B36154DAAC4E3A980A38968FF9B81573D5C2B3FDC093F9
-A98050E3E1406E2FAC3D1F9D11BD6F511B1A044D5D62329DFC901E6F962A3DF0
-3663AFFE48E0154AC5AB244524B79B5D5649A2F9C2223DD97594E3BF55225858
-1E8173B8A7BCE623F9B641AB8AAC88B9224622E102CF2D091ABD006875F6C616
-FC7220BE93F77A11E729F04733D12F8E49AEDA23A449CE772971CDE7A8065888
-0032E17FD396B162C22EC213E0D303297FDB3160B303F1EF69851506E3332994
-760B7E59FEEC01445E28C6681E85D90BE5680020976DFAB52AB29EE292747C5B
-41752846FCD3C2E0A2D0F0E8DE92D16B1B5DD41899AAB80EDCF2487E1A986E59
-F7442F68B05C8E1FF12D0D0CC808ECBE51CA429D9FE388929125DB8F03036C95
-39BA0153733DF29B00DA9C96303D265CBB80D314EFEBD2AA26FEDC7328937612
-BBF2714552B94C8EB9A567928C0D275C72AEB08638DE4324115AB9A451ECC6A4
-F0E47E73CECFA0AACD1DD82232540A7D1FBA6075745EC8FC36FD31E3BEAB060C
-BF19783B8B65519FDA47D5BEF90ECA881ED512D200188ED498781F6EA83DC1FE
-95815D1B4F05A33230ABA8A1FE53E13F35B92C1D76E15265C1B6F69103FA33D8
-A90B1176439861ABD9324D2AB91EC9A216BD93472BD9162F9B9D1C0FFD26B185
-A696D9C1927ECB9B20F1F7E1454AF91F9A4A3D129C4B034BA2D85BFCE6A2A1BB
-97B5674A51D56C6DB03A8F26CBFE9DD301513B2671F0BF7B074C4D159F9FEDDC
-B1225B515C1088056A9D81E6FB640FC7D37D3B9174FB65BAF5AE5A5906A5B250
-B7B297C805A087FAEE9D888E0844014C3E4931F29D4B75F8A31C02B0B69A56FF
-A2FE418192D1E3E30FE8414A1E1852C8CC2EEC091F635F6A76EF82878A260F9F
-D9CB3BD28EED2307F1E8A0FEBF82E7B2862E176EEC2947307D81607CE8761480
-6DB2053DEEA46B9391ECF931F0F9BB8BBC097A37C6B02AC724D839BD5AF43C5D
-7DB5146B769DD171844C8EDC0C4F93A63CCBE7519DA6654422B1E4049AF6E96B
-0B23AE5997644EDBDB0C139BD45CD8708824AECA2B07200CF7B384B72D23D60F
-DCC3A98CEF3F6F4744276C714C08B835FA11619580E8E0F433E8D069636BC321
-42D6BFA12DEE9F2D22293950E5097AE72625C6A8BECAB5C0656716D4AF11C755
-298500684671ED70FCA40239AD0A04F4BAA1426B5931BA1196F1C97C765B1C05
-602B887B8482F9A4134E3F0C557E1420A9AFF802445DA1F631B82AEDABA2B98C
-716B9DABFE8E40585EA65D7910A2965F99C5A63BD178E607547A12D60ADC5DAD
-589F7EDD6482FDB2113622C07B0444DA233213846A61C260DE760485A35A47BD
-C020482DEB042B4D7295A7F90032F7228AA7529E7E2C9BB2DCBA64D5BC6D5419
-41D306C16B0DA13DBC5EB7C6874B5362A6300CDDCA16425AF32FDD997E48429C
-EB4B6ED76765939DF0EEB4DA1C58D79BE11980B636C9ACAB2776D3549CCBF157
-4D640A86E1B6DCD14E56F18B0B30CC1FEFA6199BCF33C80FE48EBE85BEFA1174
-4F52F67C06D192B48A79BA47D4E6790563DAA2F1B2967B655FA0111741854C3B
-B53410C582011F89D2BD1509718DED0DA887E39D1FFCBA9BEFF793085A448AAF
-2798D65DB0A3D66D235C00A9977F2D3D3E978F4A03FFF783BAF0C33949D42541
-FB24EFAADA5632EB66A1CB60E22C957B13C7E52D8F49B5C99A52FCEBC7159E33
-749A4F647936CF51D5EC511720FD6DC01A4B0C2D3120D4DEE5E498412213DD20
-5C10975536EEF28F9BDBDA565779E3C9F1C3A087295F6C1D4DF2CB44104BAA81
-C5C8D6B4811AF48F65A3D5BB01B982423E372D612FF20012B0909EC8E41DD25E
-9B21963AF687A9678FD79FB8953CA5A1E38E709457C196D3D080BD764E898617
-F7EDFF583D9D75D8632BBBC57982BC9BD23BB6D9E6C06497CB4C01625579ABEF
-1BB42CA4BD7261CAE0CDFA67F50A1563307DB14C7D3ACD49E59E3842343A97F0
-A5C45A8BD3D80A583B90D88D8829F27B093FDB2E91FF5ECDEAA81DBE611D93D3
-F4FD48F3B74EFD140EB1EC4BD5A463DCC84E2E7B157C778368E46D81A7B29F4C
-D4794473886CF8E2CDC60D2FAA4F537C969175E3D428A3918CBEEF307B34E981
-9534B42005097443968D4291F3CEA793E707B37CA63CB2516E8575B8FAC0EEC8
-48C4CD48E2819E4DB18E428BF7A933753845B5ADFE3C0662C147667BF0FAAE19
-3B6CB8CD20C9D1B5657265EC8F04AB427FFF352BC8A343F98D1AFF1EB6EC03B2
-FEF15CD3CE27135CFFBC2EDBF29E3918330D13516DA2FD899299F4DD996083B2
-AA5CBAF791C8BFC31D25EE31BD8F9E1946FCF35DAC9ECC347BC33E82BE5E5236
-27E424FC8F18B01BDDF1B633C8BEEC69B772F2CFCB521FF7ADF2CD57C6AE9FF9
-B39BE3E3A5CCA2DB161A441246D970484B146B3275557216D001553A58859F12
-9A102D85699E24B901FC3B4D93B84F83BC0DE7AAFCD886703EB065BBDE63C83A
-958EFCD18D53136A283E821E7AEA7EFEFC14602B1E4C428AF80AD991EEC31E69
-B0989D19353B1818874BCD39DA51EEDFE7EA12375B6CF462385963D5CA49F7C1
-E8DE6BDDB7807C3AB5F232E9C8B242F09B18EF6B7C4D88E47E3BA33EE16E0A3A
-DBE6CD175E403DBB1EA5EA1A74C72D749D743C63203050E87A60C952E9925ED9
-9C509459F31F7B69E38E737EC96EAB6B2402F689C10567BB758B9844623C96A5
-9206B8B17A51D67745312CC02028917150D16CDC362E4052C6F5D4405B686A6D
-B7D7CA7E60A99533D0AAA5C0797BDDBC078997FCC20645763F4B5F9E4BCCBE92
-E2E928BDFCB3EC1A9941CBB04D85A0BC386A612A655D849A34A76E3E3E1C91A6
-35ED8D77D27B090DAB616F8772481C57741CD4A3803A35E863D9D2C4863F0AEC
-305059A8C70BBC916AAF8A79077287783F2F01C0F676678D6EE8D1E7F5855D48
-958D0C1304F94B4FC6BAD1FC62DC3834713803B58C680E1AD81E70A09143509C
-B79A5BD469AD6D63AB7C8709BD8457A635E85EE5CE2B81B565CAEA18E6A6F738
-9E40522E0D7B3CD35B68CC2B88FE81279F379DD01643DD52D74046A0D0FCE216
-BCA962C1D10BEF7FE76C602CF2F8DAE1F7160555A806CE3F1F817A3694A2601E
-443A85C32E47393B3D4C08ECB5F507C7A12536B89B446569E5E54512A4897EF9
-84513C8BA4B9C8AF4ACF81B2BEDA480003360DD08DCF43DB57EBD401C9C7C4AC
-E08BDA494B711F9F2E2F954051D7A759BC73E5446ACB973F2EB4764BF8227DFB
-08BA8DCC4CC289E367EB6CB79B8798FEBD585E4C3DEF59834570935A6A3DB3DD
-9630020F4390FED9215ACAFD4683FE82E1F67CBCA8CDEDBDBEE29776AEF92743
-8A28B00C873FEB39A9C693770B410F1B91F631948247658632896F821A43C3BC
-E0E9B92E8017F7E5138F1A472FF1C4BBD64F1642A5818F138B35EAC4C7C1FF6E
-917F0AB74AAA9752283E94DA08563A52BBEFBB97E43121E5FDD1383FD94177C5
-FC7B706A19FF4B8434B33D603E4F05B5FEC2D8A6315D2CBD03527403FBB25632
-4720C539EA5DC49727BF459E73770E64674E49FB76DC914572E9CE7B0CE5EBDD
-50CF330BC6DACA9981FC741455FFAB7E5C4095B0FBB4ED94F327A5D0AFBBFCB5
-5F795A9DB07C04BF326B8C95A73BE943EAB0203DD488FA7F6167CF77638D98B5
-FA44BE3FE030953CAB6CE9F0BD0258FC6862CE8A29D16528CA5597E7997B8078
-70534850BDC3647ADD483C6BC7081EFC121819CCE63A080642ABFF4A223C1CC6
-A866AF0B64EAADE21E55123A8181A1C7F36D5BC654C6B31231B6839FFFE492A4
-E5700603C7B28333967D1F17875ECCFB3590F84451374E30A8962EF0DB618EEE
-D15660CA35168EB3531EF23370A13D629CD1B601178A2A78FAB7EF75D59BD3B3
-3C0F6A0A2483964AA9621848310A1BB3D9AC3EF682D6B2713F821DEFB9208388
-09862D1F53E11B5B822A4F3B02AC5C6CD27B7EC5C20CB2726E811034B360C16F
-7E0B3CDA6E68A36944337E9277FF66379D8CA2D67BE9BDCD844B6FA85DB222A5
-DA51BBFCF8656D5038CB442C49700AABCA3EAAD9AA163B43EA2502CACB0FC4C8
-FB9E6520CB42F5BA1175E9E56A13E4627B81FFF8865DAC818B0A9C2624DD436D
-A2E91BB348E4754020ABA942C7D521B1052D8FE4ED5B5680DA3E33F08B0021F4
-8D62D2DE042B497D8DD8B37CE488FD543A1706F1C87BC111CF8AB593E35CA099
-4D2A02E0FA787B6C090023AC5F62F86E1591E37EA20006B9D3195D8C047CC5B2
-A120139181147628CBEF57F3FEDFEDEAB16B4B7282DC465FC53E50F199A79B48
-8D966083736285148FC1A76382E4991C7EA605B05AB1460C2CCBF10A2EBBE340
-ED042D2A9D2092F3E91CD4C7BA6D9E60EFDA103206E67C6501CC95062F70ED73
-3A591E7FC37CB5A10C92FA2808B494E4BEFC956FEAA6EE82F8D03663BE9C9139
-836AE3D1F88C0B7DBD8AD9FF3BDB7F36DE336D4C0774149A9810C27B3A2EA083
-BA59788788002481964B952182374BD1F9A72545CBC4B0F53EE7411E35C04128
-5CDE87DB0C69A2B8AB74C702A74130B302A8BA4B85D021BD021A68C76357505C
-F439AB81B5FA7834BB48049DF25EEEF85887AEA66DA7234F11FEEF9E665EA2D6
-2F896E5720679F8546C80B37FB91AC7A1EE7182851B3F20BAEC72E1C74E18755
-3B908AFCD384F44E26674D13F3FFE746A718A04F7C92D0E09C21C1AF7267AA50
-0C7C0438E3AC17251A08C4A39142273868BA91E4B9A41A159E6C7B3EE1B95894
-625F2AE90DFB33B36425BCDB41AC15EE4588EF93C29E60071F247432C76BDC13
-7270E92989CFDB470685F6B5D187E15C9078E09A0CC2A46B9229FDE4EC46B236
-4BCEC1E9E0AC88617DED14FF9ADD9B3C874541E226EEB642A3762A382988A15E
-C1BA3F257880D0B0CA7912BF529F626E76D1B242833921A29725CEE9A66C0068
-3232BC8A3170DC768E8D9947B62742B9342B01AEF38E8331B997AF996A73FC48
-C8A457977CF1B4251E645F327B1CF9376D15ACD06D5AE59270E7254A56FB6852
-19CDAC3B14512CAA4D00823B693A1FF0C4E2462E3058DE548CF52047D9F9A39E
-109C9CB83E5AAD0A3C958FC40FFE45415B1EE51132FF593913F3BEE1C01AC778
-1BADA832CADA92FD40EF207617857160563BEB866C76D14FA651507C6739FA28
-FDDDDEA39E858CF7439BE229697565228F4CEB4C94A6878D30D32A00A1E5960B
-2D32953BCB686E0DA000AEA0192BD53618AF9481121779CACA0DE4F2FD4CF81F
-8D4B9D3846AEB66795F81D6EDBAE8BBC60AAE4540E19A6D2173C22D50F9CAF4F
-C4373617F5E449AE35F9820A53893570545D5EA6AE1E8B3D7775535041FD7860
-FCE9F0C78D142172CFB777081BB039877B98D59C797BB2CBB6E17E42DAF185DD
-E593D88552CA8605F910FB64C4292052F781FF971200FD88FFA5BC85CEC50068
-A91B20C2D4129FACF68EE0DB5D814B107AD35571F3BACD2C754EBC6175522881
-25D2168FBAC61AAEBDFC1F5D64F2BBDD8615623BCDAD49F21F7FA77743CC827D
-BF98D727204FBFB424F16C7151C282925198C644119FD82B9402D268755501E5
-7382AF8B16A825AF7368B2D04B77EA16B9A107F6588C346805EC51AA2954E3EB
-59F5C44A28A31E7AB1724337C42F4950651DDDC87F5EFFEA1B537F92A3F60058
-F99F05AF0E58FEEF778DE67A0FABBD933F0FC8D82C9A463088D46BB24D649C60
-C32571EE3E11E17317459D2CB58CB54027F895A862C18999BC0B10B1FA9C0B8D
-CDC2DE7847F8FAE9CEE8D817B4650D730B52506D2FDDB02B0B8FFE375E885C3A
-0F4A747C63BC4D70751B98A32FD386FC8BCC07CD52A9AE3C959311941C77A5C8
-6A5109E4F43C7B79A779FE30DE2AB50F4D3CCFD51C5CD55D7C43917491B364FA
-3BDC3B24043741B0C5D617688A05BCC8F01A14D643214E3B186E6D791A2AF3D3
-A972AF68CF394DE082CFCEC222EC928825CEEFAD02E84F845A5744EB7FB9841C
-F73384071D6DB7E6692B8792DC38256446FA4CC2D3D1E6F7436C568B97AC2950
-167FCA9D6D997218C05A905DDE26DDD283F64E21B11BA2D9217D93DDB0D2F985
-10770F9D756090F8D5F3B09A8B917F12D8D43C4B354FC26C8D56F53C62872CF5
-E32D25F0A993BC0F2E4F0E2103DA6E729996268A3FE96EA48EB6EA6B9C21D042
-BBC55FBCDEF0C786F1CAB555DEA42862F3B6B212952C1D944B010EC51DAEB5AD
-6E0D7361AAF600CD2659DC59DAEFCE791D9B0D3B718D45A1F93CDE3B2ED72E70
-13EE1705DBC0A8F0CDA57068E671B86F35CEF8161355336342F2B95D4092EF3A
-D403C417A5DACD576CC9DE10F0F837240B3669AABAC540361BC69F31AE7ABFED
-96838D6B70DBF3BE145BC07C60FE6498A925C51471788AA5D8E1E69010C8C513
-87C6602BCBD4AE75DCE4BC916D8E4F7B663EFC9939F55A6A8BA7D445D849BCB1
-2BD64A02224B841BC9872865F9A4068DBF73AF28DFCCDA23CFA589FAF6483E4C
-1A0D5D377CC241047AF5172C4E1A7E6C16750E53E61A74BE0CA3EA6E65E9D53A
-912578C709131FEDCBFCD1EFC0610F6D105438CF64A7F259737C3FBE09DA07CF
-8C67CC6FFA640DA3D57B3E2D695DFECF53981357BC06FCD7D089859064651EE6
-607BA03B0C3D7DDB0EAF225F1F28E0E4B38BBC08C76B6C42C4B1747AFCA9F2D5
-BFD0073C03841155CCF38214F48EAE34507272EE5CE69051CA87A6B6214C7A0E
-27F9F3AC4C962E920542C762510244A6B61502684BC99F9867557926066754FF
-D707640D0EE946F98922EC777B3631BFC5230B3892FBA074E6B0C91CBB36E51F
-4BEFA5CE13B58B6278D9A5D82C7EFE170EC2BE0367BF8531C7495C37B848DFE5
-3E789822DAC88A3D5ED772D681F4915983B3A67D3949FFD1A659F936771AAFA8
-C61C3C884F3BEFF84407144332DEAE18923FBD1CCB54DDE059694BB3E46BC0AE
-8C5B914EAA3EC71DA87B4E08CAE59E839546E0D89B3287EF19796E397826E7CF
-3E966F623FF66FD752460A15A7D85F84DEE0BAA16DBA3A649DD0420B28B4C39F
-D49F2058BC109C46C58AE2A9CF47FB3EE019BE11817C2623B473BED923955FED
-5CC714083DE1710E8648B6CE7F900F15C44344B2FAB16355FBD00ED9D16E4396
-36AAA4F49EEFF25401EAC8143E549824FD3949091BD47F24A84987379E3C3526
-8378C1BC4A12B09DD99B6AC638532477CCA879518994B01CD21A3930F1D9669B
-8A778E0CB2A68114D40996A3CE8E55436C5E8F20359E45A434EA9261AAF98F82
-269F021803FB661D4F8C881ADC90A09A1FBB2D03AC115D3421F122D01376AB23
-0220BA0DEA220D22E1490FFE1DD1CFC30986ABFED309FE126F0AEFFDD76EA1EF
-65DBF44E3765AF88E235C74E5242B02C802E4FDA8147D8874CE1C71669F4C261
-E06BA951DABCD307393DBE0F01349B66B8CFFEC90C39DD30BB8FEF864F5D85A8
-B46D8A796F5E25D033E59E14EA5E480F34807F92056CB5C143434525B32A77C9
-A76C1713EEB2D49C346D4B256D14EA6B0ECE2709A9E500C4EF203E031AA43459
-66CC59AB6C19BA33D153A4C53BD6B6037C59BF2C5EBC14563D97E38742FC23E0
-E6C5A1E8896CFA9A03FA76F1947FF788C7FC7C9973B958CE08BD2671C87A4EAC
-BFC023F12BDC146A49533435C0A60D313E0A08173288432DBC2D9DF015547B95
-A09D740908831AB01ACD75AA036961BAE0EF713470E727FBCA880F252116EBAB
-47A38B2D4901C84496FE92D31BBA8CFD8987FFF5E6E290EAF41E4EE3C9C7188A
-76AAA149913F62391663E75BA83A077EDA63A5982C3FE0EAE75C5D9EE8E17E5E
-21454664F25BC0684A225B5F3615205A85C07DF069BD1FE0FC10F12CD65CF334
-1C656085F29212B1E06834F4914260FF7862337BB4A256EF78D068C307947F30
-89C19617889308331CB4B53BA71E38AAB0D161B4112223719DD8D6D63C33FE3F
-569132EA533758DB58E180CFBBD49DCD306FDF0ECADE93EA5495F03AA370C394
-F8BA290FE270F202AEF202A6D15311D2F6EF4D7240E86F95224F6B2B58E0F81F
-82D037BB45D290EBD666AA3A3047484A4EC3ECE51978D2C860FAA066FC97C07D
-D6CE20450B310D93EEA5A306DA97CD6FC055ED1BC298F994CF8A92F2F8335EEB
-DAAED0BB928567A3F61A08AA1760B22413020CAFEBEC16A4AB9FBB6C0FCFAABF
-FF240F40CDFB5AFA8814156921831411912E2B8529325C35E7EA940610C46CCE
-ECC4090734C7DEF297B88B4B4119BD386E51730A492D9A53996A5E611ADED22D
-C6D38152834AD04CC9996E2FBFA34C90BF57ED326BCC7AB3010273E5EE8F1EE9
-60184E436768D65329665FD1043B419D165C12223A22242D03BBAF6FD6DDDD5C
-25570137EB04CAFF3B54198F049A587AEB1DB7604A79F5F25AAB7D457910A1A7
-A5C57B2626502F2C1B0A943C28CA273AD4E8750452FBBCF0DCF9A3E5A40DB15C
-EA31013596481168DC5C66DB2C1A5C18E8A6C8DFCA1BE89FF5727CAE7E9C5250
-67EA84EC9B60DF4CEFF2F4B127D9E6B000B543048D67884E11A41EE56D2D7736
-E1867FEFF8C8B97DFF3749A6C583AD095B8EDE970E3E2011996E4158CFC4E538
-F2951A95B1D9B7D778AA7252BBF3AA1FE817B6E1A3F3831F981DBBE0232B783C
-4BAFD6B0CD
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMBX12
-%!PS-AdobeFont-1.0: CMBX12 003.002
-%%Title: CMBX12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
-/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMBX12 def
-/FontBBox {-53 -251 1139 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 46 /period put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 89 /Y put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
-0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
-2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
-1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
-42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
-FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
-78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
-22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
-A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
-4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
-4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
-95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
-9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
-5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
-9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
-CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
-BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
-9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
-EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
-D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
-2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
-947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
-0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
-4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
-BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
-F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
-6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
-D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
-F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
-481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
-FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
-419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
-7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
-70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
-2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
-0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
-9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
-C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
-1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
-A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
-21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
-7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
-17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
-30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
-3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
-96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
-B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
-1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
-57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
-B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
-8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
-8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
-B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
-BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
-21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
-D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
-FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
-A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
-A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
-A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
-DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
-7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
-07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
-BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
-8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
-E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
-B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
-45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
-2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
-5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
-A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
-5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
-E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
-5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
-6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
-8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
-BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
-9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
-B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
-B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
-8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
-595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
-FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
-13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
-FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
-DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
-313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
-C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
-F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
-DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
-8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
-E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
-A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
-C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
-417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
-19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
-9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
-12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
-3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
-A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
-90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
-3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
-B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
-82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
-1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
-AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
-9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
-2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
-99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
-31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
-3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
-F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
-70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
-5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
-84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
-BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
-8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
-5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
-9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
-F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
-94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
-0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
-E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
-7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
-596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
-F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
-7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
-1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
-AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
-4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
-744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
-67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
-054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
-6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
-8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
-CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
-EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
-C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
-57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
-5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
-C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
-CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
-848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
-B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
-77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
-87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
-3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
-409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
-A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
-72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
-99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
-8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
-E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
-82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
-C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
-EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
-23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
-59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
-C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
-1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
-403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
-1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
-75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
-0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
-82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
-C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
-A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
-9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
-0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C
-5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060
-62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D
-6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E
-1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5
-648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1
-FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6
-754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A
-E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE
-E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4
-0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61
-CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05
-43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624
-2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30
-712D165DB658FDA800798803C3CD32B841E159AF0F748400314FAF5038EAD574
-57D57A34CABDBE4B8D145E439A11585A0CEDB161559AEE6459EB57592ECBF980
-681ACF9AD4AA4BF09071C600432BC884639C5F2C3AC4B53CA6285AD78B3070A8
-4912ADB3C55A03A6E1A795BE1026EBB6C6E90DB03B110D3F098CB97BFFD836AB
-EFFE06DABB1B3AF419BB3E10009AD2DA9CB7B01EDC45BD60B4BFF2C7E54036E8
-5B6BEF57D32A76AADAB3B1683A49F317F6ADC62E5AC8BA5514F1B560FE8C3394
-7B6536F37C106A2F7A346EFD1B0279949DDAB840CB184F55E74A1517222483F2
-F8DD0E850E93B6F294F711DBB234D59406AC5BA131B55185128B95723E5F064A
-8C00EF33860A0467B3ECF05E9CCAE87111A62D6FAE5A661014C7D1E7292AF006
-F77D59DD6993FA330DFF85CBDAC37A18D22AF83571E74E93E55AF28C9438D71A
-CF5AADB51C830DFB43104B9094BCF1241DCF70C3481D70B0A96718ABA59A9912
-3D012E528626FDE23D941ABACDD35F58F19DA750BA17D5785FA604F4D91FFE46
-B0AB1158E2E16D72C6C1D563E647AAFF306E3156A8DE6384030E1F83FA970026
-795E8C9905CCF7E0C355BF05638D13FA6B0DF34FC42F166AC2B66607E3DD6A0B
-0F19D8DBE03FEB652D9962B9CAA991223F58B3B945FD7E893EC56412F1D6DCE0
-2BC705DC83EA7109A632270F024264A2DA7311C4E185AFADC8D2C6B58C0BD2C3
-4B38AFDB4EFE7E6E03F76E53C4B9751C138349D42FF32951B446AAAF50C4A9BA
-90650B757DAC00A06C047685725F0D1D8E0A7534B26261AB4E79B5B88182AE6D
-E6FBB991E6BA763687CC9FCBDD922BEC387620F818A7389157AB8D41792E7CE7
-649B1FDF4B05EAAAE1B7301710559EE1E232AF70DD2E137157657237DC466C09
-183D1EFD1439003BF9D14D4CBAD51274816E094ECDD8D4477FE9D58122AA92A3
-1BA2D3F48A9951FDCACEC51FF9835B21C8BC0E1ADDDCEBBD3FF56BE075236F90
-31A61C56B7AFDDB9AA121A24F1D48FCE58E1C584F05B5556592B80824BD2F9E5
-88ED93DB19CFE5082E12B3158444A5F955A2392D840B3E52C74651ABDF75263E
-68C8B20F6108EE6EEBDC836838FF413958C294E140FB3679963224E6288EF036
-654CDE66C9FF8BB505AF95F29A5EE796B58B7205698375727743A69920D43D65
-C1F9F203722B0C6F400BA4F72AF4973CD6772BE36E304EF8983793547EBCB7E7
-5B93EB6160FF8860E4B0DC3BEB649C7D8E8BBFFE919E67661C00A7AAD0E92D38
-5BAB4A07BDF83A31AA8CAA6B995B8B7D0CF168E7488D4CD98A7AC3F0A03E2BD1
-0F6D9E915C1511976BBAE3C6000D428A52114A7DEBE35275E642B01C92BF9F8D
-E48CAAF7DF91E17359FCB334E5189359A26848FB3D21368120A93965C5E695BA
-49D584FFE6A7463499E10AA7D453B7B39A4E69395C9142150AFC85B6EA0D59D1
-D2749DF1E7B14F7C1977C9117A1D7295F527D4FCAC5610CFCA887632DDD84014
-7104D659F4EB53A4C92D553EFED124192BAC43D6BDEF60F3CE6A8F7E1946A2D0
-125435F0889CD55C6B77B5BCB9A76D142E802B56CDF2235A070B88AF1CB857AF
-8B11DDE2A9086BF1D250C2E355A4C72A20956992B43013F0E5258165467AFDE4
-9CDF57B377F18E497004A59EAC9D60F72C8138AF828A73AB373D97AC2654E2D2
-58150C99F15AC779ED77FC223B3E7945A29C8F12653ACA9A717CA5FB39209005
-2894F70E3D5F027319264BD398F94E4445E4A4D54E3CA1EEC859118192E0118E
-78F9ED10596D2F87816D710DF57315BE9FB0BDFE63E74E4023A8320DE5CDCEE3
-44534F95653A5109043AB0AE1E838A85538DF788BCE8C3603DA2A51909B61DF6
-046778206655ABD87C14583EABA345328C776F58DBE125AD481D4E922593B8D1
-15972DB2E1C6BED5870572216EDF4C19D7C12ED2C37E49E6E6CF552B0E9D9EDD
-4F659CB21F3EBD36F28275D69105BF903309C8A7B20258A9642B0541E033646A
-61601867A46F2A577265222BE3978E6F84C29576F2DDFAE642CB5F42DF45FB24
-FA36EC2575A286E4CDFA7F27D535E408716EA40BDCFD7096A5358E9A98F123D7
-92E8314B8D51D763A84993E7D45BEA3195EC3DAB2998DE69CBE2C92A15680F91
-76A05F32B384AFF81750D6A1662179FEE5C1CA80AC689148F3D99E0726D68566
-2256010D2B2274742DEDEF94B338525FEF89E5722CAD34EC2C2BA8AD1E7A1CC4
-E5B71EAA6D0069DE687C6306C3419A4F9BD7E5C9D9BB215E410FFBBD6436B57F
-C4B18AFB2A3412EE490726FB568CDE52E15CF7F12B360DFD08F6F43F295C4E9A
-6FA45D706C707B37FF0CE27BCCFABFF5417DE624A266BADCA629870EEFB43B41
-C5859A5219C9520087C213583AA21695E020B4A4743C06F3A1557AC56CDD305D
-D68D482A6D43F8E9E6135EA1C1F2AEABF167FF4869B46F57207502A39DFD1DC1
-25270E5A3BC02A042E2F98539F53A563364793966D809E17DFA9C91089D7B8F7
-B0169FF8AD8D88BB5903406070AAC303369FC4B7CCDC42105A69674BADCD17FF
-F90270B5CA84DE742E5593596E1ADA971066DE7A9A6AAF884C9312BA73313289
-28F80F803BE810B0C62278C925B41E22441F3018DBEFB30E9AF1C11712CCCB23
-E392DF6721C557E3523478F913EE3CB5CD1A0F6FD60E32D5F00E281B87E1846B
-C629E4896288B86097A2F02DEA398F16E09681886C1453CB71FB4EED50EA998E
-36F164980A2663428298DEEC9851F7174394DB1D21EFE96A3960A7BEC512162C
-72D1E85E823B0FE1600C36971B94A505A085E3FF9BE58FB6205ACB7353C03FE3
-71F64580C76AE11F25425D9C0682F42E9316F5BFCEC0F5D8D9D830FB41AEDA9B
-C02D1A77C1CE5FC6442311150BC3E4ADBFD779DC186592D4A548634F07A16C26
-B79B9D641EF2AA8FE056AF840F16FD232AE1A530B8D23B99D0984D7E98C90B55
-CF4D97F40CC83455CF898CD9A6F8051C30B151219B60F9468790F0A7F4CD053E
-542E1EFF158D94F4ADBF05DAAE0581F56E0F5C8952470EA0D1245680A5AE661F
-D2C83B8D7339D55401690648D47AE9828D233DB32F6C9D9493255E9BAB57C9D5
-3D08E5975F1A844CDCAAC830DD6D2B99C6BE2D2690726A913FFC41DB353B905B
-5B6AB3ED132B53F19F52A6F82ABA5077E0E5E7CFB1087A01B311E943CAC3F44D
-72F28E989AD53808A158A37E73B8E5AB83A920AB36C07BC8EA85A9C78B12E68F
-359661C847BCAB2A6D223CCC012528D868DFCA908C09C0FC39785CCC20D87781
-F165109222779410AF291A3655E2E8199314278E52CF03F93F02502D878583CB
-F75E27B85DFC0B00A2D475201786A32059E04B7F0FAD834A622932600BBB4747
-8A62B566D161E96ABD0195F7164CD84632372541A039E98F75B5B3947281F5B1
-FDD2A16FC8A06A9D16A3886216E1B7DA3EB4E07D25BA5841A21E926072050BF0
-FBD35652E7F3E33B911280C1D2BB6F62CDB5F5CC92540E34949B0BE3E8591084
-6946C8345A0A04BB51574D376C0BC65C7A10F2B1109DB99E62B75B591830BED5
-295C0204A5199E70974A10E61F5DFD751092EC081D9986A1D39D9035237AA552
-CFF4CEAC9CCCC5E5BD17E52E1E80CD0EEFF7F54A9F428D2D6EF035C8434FB215
-1F64D22D77A744D02291B06BFAA9EF6602E0E0DCDE7CC0F45A778D9793FC5281
-8D4269E2F9B61EDC1A3B8D8A75E65D4DA5B3EAE95153EF55504373C24C43D768
-A6D1E210D22FAA4D08F99474BDE3C4E0CBEFA6AB7F6E0153AFE7B2D3A6FC2B4A
-9C4955C15873D2460C94519A5605040F866AB6DCE24200ACCC6A7F685BB96737
-5F82C2B20D6D33E8C482241B82BF228568C542758207B3F26BED5AFE57A0BBC6
-589A676A958E8B444EB839F1508FD1B8D995969BFA5D4DDF345D536F24DA0052
-6C626FD8800C04C8E41A523B9DC0C4EE10D456995C2304C36CD4E867DFE91510
-36D534CF0C8E60CA8DC1815C6256484010BED831F0CB0CDD8FA8303A504B7BE7
-75C5DCA66AB89167236F6983219DE903DE58DB7EE2F04A501E573AACBA610D77
-F4445E54AD79B901DA24C399DDCCB7AC66249E53DB1C3E8AB1B7CD20F0183412
-D10E911CB758B93D6BABECCB29621EC1F1487183603C68AF7130E06413CDF3D8
-9E7EE2263B5D753ECB3795E8E6ACE1BD5EAD4E646F1D76A482BE76D09DE51427
-EB3CAF3876095E404BBDAC2095D8BEABE73C3E97725C34EE9D4449A1F998C318
-A85F8D78F772E4F67B2F84368E1E77BD9B9610BAC6FAD54E047FB71F824568A5
-7AFD5293F486E26BCDB1D39972A30C87D4385088F7D5982D9845F8520CA165F7
-E78E259C139520722D213C9BC811979E84AC1C2054C46D560135F19B87D7539B
-E851A4F76AEC7773F782CCDB2B6DABDEB5711E4CD431A86F5CEFEA6A4C60CC03
-1A1034EE91202F9941FB29D9486042B3BF9A70F9FE0B6D85C50D9B96BE3EAE92
-03331644C25882D3CD9E082D3A2A52798F51DD903CC927AA44C766B782D5A9B1
-54EC47ACEC605C2365E206980EB767E1ACE381154509BADCDA7C1EB736DD01CA
-DCB8D7F7F235A8C7D2E34A5C989C2098AC19067AB250D7C16ABBBD2FC8E4D79F
-F07B9CD3667D19FBFF96BB389F3F753645BA0DEC0A123621D506BC31E9095722
-10EDEE90C92670CDA95C17E4D7CAB6337C8FC0F20152DAB6D3BDEB16D336F478
-FE9A56C823B84FB62AB0AE6C4DADF7A0E7371AB52354A1DF0E9119746808255A
-95013629C536E1DAB1D4288171244D5F5135003EA03D23E222E805EC2E00271F
-9894A9E82B1F9EB36061D92836F31DE252E30954AEE7CAF8DBDD66114FA2B2F9
-9CAC74B353B7656E05835172735979E7DB48681B641A7485F18E460398028B02
-AC62210C0F36A7FECC771106BCED57DF6334EE566E0FE2BAA03E6557AC99D81A
-CA025C8D1D2719861FB05F3901C313AE4189A403BDC9A7D648CAC3561612E0F7
-3F668F58CCCEA9A1C6F4229D575B397FF16FE843C9875D7007408CEE84F6EB63
-5DB941E9AB63B18DA328A44D401AE71A13CA2164C4A5BA7BF78B0EF2AC20EA97
-780F5BE7AEDBB15A4D135BE7B322254E32EAEE7DE78EDC69872E6AA4D15BABF9
-EA2D5723EE875ED677D294CE2A476731E010D3C204CA8063D56F1EA7FAFDA2A6
-A906C3F80DB19183D048D140AE163BD785E3DD7545432F25FC63D2368E506EE5
-6326065BA138CEFD02AF2055D38E5918CAA4BF97C94418EC6F3E14F70140CFEB
-432923B2EE162EA0C3DE430E908DF4545B058ADE35FAFD0C82AD8018ABA534A6
-946ADAB80E5D410F034EB0E22938953E2A1855387CE4FE9A5AA9CE5A74864B19
-E0E9100B09A76442AA75BB5CB4F622AA74319EDB66E30F16CD3FD203362935AA
-180EE9918F4CAFB782E0741EE6196B640E3F0F2AD00B9E9EE198C85AFDA53319
-180EEA95DE8A78F9781B9787529A75E890E9014A2AAF772520CDEBD3DB92A429
-E125581B1CFE03FB7570FEB4F821AE0889D05B9E011643EF88E888801FF81457
-ABFE4B89A160C84C69B129A8434EA9F396DE4011A4E89DF1D27967646FAD2339
-78A9F37E1F730EE96EE3A1D98851C45C5F16122639B326DA74B63F637084678B
-30DAD882C0F0D25AB93A7A4DE413A41381A35E2927D4444257AEF9ADB5260A35
-8E74E6A8CC720DED20CA0C1539FB47F96156450C57E7C0FE5DEAF92F47F2E0F5
-BA9FCDBA25BF9B8326004755A4F4008EE63FD7789666788AB1F3613AE5ADEC78
-0A5ABC85E7DEB5508BFFBA9279C50EF9D5E9907E38EB0225C7562B8D857548A3
-EBCFE3A8F0EF5C3DB8955FB995BA5A482F9FCE4987FABD8D375AC72E4FF7C774
-F48C17F9B55BF5AF12906AA0FAD20934C7F080C49BCBB3F321A222ADEF47D283
-859755588716B89EAD7AB3AD5CF9E0DCB524EEA4A6353BDCF51A5AA45F7F830C
-606181EA7158FE373CADAEA1EE6B0528D95DA03C7A03A1BB2CCE4136198972BD
-445CE59483ACD728B42C40DB7A072F6C82C7F4FF01F8C9FC525E4A2DCC965FEE
-20880CC3A8543F15082C382C30F4FE654A6092B10DFD020B790B2D74BAC86D04
-D16E66EED137407055A86070985E41312C5DE0E899EEFDC13C070CFAA40AA4FD
-3CF1B702A713E877B3AB844E8F639ACFBCF275003F6A3A1B5AF4FBBB0AB04AA0
-52CF9E7B50CAAF2A7D76AB50236694CE617A75AAA31C0DB404298234666CF92C
-9D80B402E7711C7F5489BA6E08CDF0E47866D8EE5F74755BF55B10150D59CA85
-3395C4AD476C07C9E3F2F09698FEA720AA3C1B63611CCB1B56193594A24D5F41
-E6ACEF5989585051EA8650A20D727C179C17C40C6CDC9A7B796596EBA4BDF916
-7A3110FF3D5400ECEB533BFA9D16A931FCFDFC36C1C62F7C09A0AB3E08489F4F
-D6ED312B44B5A8FBCD38F04C89E3BD0BD14C2746C499B08DB1C2922CD7AA770F
-0506823B6007604A490950D6790D024FA38A62762CD693EA10A147CE22107376
-AAED22AE7F02FE1B4810A96A3840741F12AF3E57FC5849A4DE53E296A2B78E7F
-58085E498B304CC62F513ACDF0EA9EA29E8A39E67AF057CE3735E8612F98D9EE
-77EFA7B090BC8169534E3FFE43F392292D231BD04591AD35BBCF6AC5B29E805F
-79994B73DBE38ED215A3DBAA3E4FE249E59CBF889E3129C99590536BB69EAFDE
-94946A9E58AB3488F0E6B820E64D50D65C4D399AC35894DCFBD1358802F5C0F1
-0F628AD4048701ADE6522EEE704105230336F14FB81A3F2D84ADE5EEC2439A87
-BA5A647767EB8A7273CBAE6DB0E5DB87C00AD1C8CDF539F6D00DD61F102DA4BE
-EA6637A9681163EAD32D8913200EA059833DC67AD40A0B69427A588F0DC0A93E
-E86697619084EB4B3B3952EDC511879FC526C4A702B7E6453B16727E51610E5F
-BAB227F6C24874BDEFD5428D9254D4A87526A3324AD6F63557F7296B377CE53A
-A6E27FCFCF9F6170289187C5F9701B35D822E764C1E25296C5747A216384DD55
-B641F02F3756BAFDAA08B7D2BB293D9028D8392551F5BE3C9906926FC2F5BE7A
-3124813C8AF7BEE14C184AEA21515452C07B0D3D4EA3AD6AB8F9E5B7093112D7
-ED9E958AF921B6EAD2DCE5CC74D651996F81F5A5EC55D438C7E4DD3248862F57
-3DC28CAE798B543C6B8FEF03B55B158C96340D27A5A57B39A53883D174ED7A83
-0A2CBF5DF06999630A74A63B59888ACC88E96A13BC788F02C5433A0044D86DBC
-7F8F5D5FC2CD8C6AE4E0867DBE1140B2E2C90F4CEFB00692765854327A9A73CC
-9B52513076AD8B265E94CB4B8FC0033CEEF644EDD772CAF83DF7F0949BBDBD2C
-F681D17D257787B3B93C4FC5B5ECA7DC18466FB5DD0F2A3D360A9B35F39D57D0
-105A0A5FA461AA14DDF1A95CACDBB531755D85867336F5491A1B147DC530EA8C
-1DF6660FE3558EC163C8B0BB9E4DE424AF228819DE1EB8168C3187C6590372C9
-2FDAB4A0E5A08F1121A7F2642946DDB6D1E278B44F9337D31DAB725A2B6250AA
-4CDD4FD6D91CC78EC693AFD3FD30F697446B3B45DB48467CCB4903C25B0BA209
-24EA4BCB450A1FF5153ED0FF51C4C2767821A63281070E8458501627BDEE7B62
-166A66F840493795981162D9C4F19787C4EFF2058CD685DF1DB94102FB88F631
-87B546184C81D6953BA2D749203FAC6520DFBC1898DD01D18F7A3ACA2FEAEE7C
-F013E36C83CE5B56A79FB90E3F3BED6CCBE8433C8A9699DC7CEDB60BC1534271
-4CDFE08C178BDF612E4EB8FAD203B08EBF8D43F0762F09E1773715E75138E932
-B291DBBEBDBF9269833A2605A3DD5C36804077C7A408A1055EFA2A1776E1F9DC
-914C5965795508E5A65D185596A37BF91CF5D72FF27BB20FC9013F7EA391C892
-8BC7C738413CA8D3FBEC8E1DFEAE2DD22E768B5D503A722A430DD6B88E69B2A9
-1AC29D68B111019886484CCDC696C6A87F1F67462D3232C84F431588D38EFBAE
-D8C9D1418D81561F75632154173FA6ACB8A8CD8B7DB19B50A54A265C0CA7B0BC
-DFA77DB810691538ECD0D9615528F7DDD83CD80F97534C7B79ACB57E7DD37038
-B0FDED1E2A80716D2687C4ED42669C280CC14A116FFD9218C0FA289D24A03E51
-2DF267ABC9F9AB70CEA856A0A5EC28017174BF03E32ED851734DA4E20C282201
-3090E1A218C3BF3B1AA3B28732A4D8F552E9A9163BCC6EA10F708972A8BBA763
-9D489A1CC41FE78302CFA605583450FC7215E141AE43AAFFEB28C19411D5F5FF
-2F43DE7454CE4F6AF1A4CD704E8EAFC757AB202753DDF31D8676730D737F4051
-54A920003A0F336567F245356C6EDF40810B532AB5B475E116045C7798EFD152
-D76F0B5AAFD5A581AEFDE044360CA79D5F6776D75BCDBCDA149C2CABE1CCD237
-D1DD3C5166D7C3782540C9EFD1EB34B735C943A5CC7F7B804F92110A5AA95E7F
-8AFFD2884BB7522392AE92A89913DCEA0F28B7B89A244C992A15D0B8881E6F37
-D5B1ABB54B970B61DE93578A12D81E4CC21861BCB1D287CAC00502477850CC0D
-0DDC29D2DE7B362703D7CB938DEB1A64935B5C07B25F589E3C2369E1CC12CE57
-5BE15FADB9E65068B94B16242D3F0181DC92BF0B04C81716F4E197F04C17C568
-416ED85007EF4CAB706BFC780F584633922547178C2D4AE60A8D2B7BC2628674
-15D8AFEF916B6A2EAFB651697BB665A9D53DD0D0B569F8270C1E35C24DD5D2A6
-90257BE909FD3F2FC2BA7EDDE451764CB87897823AFDB0D2109AEDCC5087362C
-783D3276D3388841FFEFE969601A775CFC5AB41137D5E2B86F30C5A2DE485434
-F372BFA764BA67A1B7F54BBD37FFA74A7A927C25CB63032C194F1CEF1D861829
-2EBA90769496984256A7BD0F2A427B76964882486906BACCE372616088E59E34
-603A6862A0AA2CF780DADBD2FEDD4C74FEEC3DD5E9DE299EA4FE3E60A2EFDF13
-EEA265F9988A2DCEF04FC29753F88E30AB8AC6F11935D4863F57BC12D38EFDA5
-CB566A8FCBB2211B58B4E99545EE6E1BD1478B3D4191799E3234132BCCF021C1
-D4FCD08752F2BF8F4A2A05E5ABD47F163D95CF160CDCF82429A6BDB4F72D497A
-8C3C4847EB6F91BDB98786FEC2150C0707D9F1D7E4FF61685EF0BEDA88765072
-E29ADDCE776BDAB6808573E82ED790444457D1584004DA42192932A06ECC3F52
-42EBC78FAD914F5A85E892FEF5EFD24D011C5F0A177D61688A7877B5EEA3F9BC
-97DFE25CC815A67858FB7A11D40EC1538B1879051120FA3A55C089BB9090360A
-5D4BA4A68C8F94D99142E37D619723534A00DC29AF3F1031A6B6F9B2B3CFE40F
-9E538DCFFA89CDED0FE65BAACCD42EAF4AC81E0E3544C118A4223D87C9D82B4C
-E7F3D5DF5D04423A3F809B3806481D689AF165EC25FA0BBE9F052DCD8FEC161A
-1491AF032649472B5ED62E74CAE799A744EBAFA9EAFD33B09BFEDAB70ECC45E1
-461F22F533596013B865CE7C6B0DD363AD150085615C36F4012B0C2367898DEC
-6367112417D2C477D1674C091F1B87575F0107DE1E6919A0B3E23089D6371942
-93E2454C74599C144AFC5ED60AF6B27671821F08063FD47B6BB88D37B2D7074F
-D0CCA9AE060E99856D7612BCAAF9AA1F38879B07D1D7F568D872194A862C211A
-B959CA73B5042E1F024FF6C46D1CCB93179B8EF60B7C003FEF273F4A8BB18F3C
-F51F479543497B252548A219EF8C3643383362D6CB8D990415579589DB86E011
-457535ED6E63B9D9ACC38959D6C68069DFB9D3F72A9B0E0707EC0D6B89A5CAD9
-A8D74A1A1FB61788514579DD347B64681BC247B4E2391B92198BB9B7A16C8D5C
-C29B1F2EE9C5E2484D915EB6862034DEF5D7757588CD8F44EFF325293A8E2CAB
-3D75CDF690359CD1BB95A8DBFCCCB815A5B1DB3B8C7EFC795D1F5B07A08C6E42
-01C46FC11BCCE630AF5055380EAEF2BBE7B124FABD4702D0C620ABD776AEDE72
-E7EE27B34B23CF701C3E305B3D06087658BA8443DF6B6530EE3D2F548463EFB9
-3F86D99FEE1640753685D68ACAE49ABC661CD9408D49588161B2B8F5C9760B62
-90EF02FCCE05EB43BDEE228B11A0F2A0E25AF8DEAA21ED34907094D57602F530
-93B2FBF0BFEEE3AEB27E97D19AB6751A7D7091B58912EB954EEC6FC62CA1FEAB
-3F878C9214BD5085D49ECD04D8A811047F9B1E3D9E23510BF03F4D2FCC62AD51
-C36BB125B68D83A57CCD1B5C06876793C373FF0F201A83F3435CEB3A67C44048
-65D41E0EDB005F84318BE1947C8C66D79F36DECA043975383524A20A3A71D703
-613F52BBB49FE292871F5D87F18D24B4AB1D4492EC457856915A1DB3F13A6E6A
-445A3CF286DDBFD282FFAA768C2B019C8C329B2E61EC3DCC8D16A5DC2D781C7E
-0FF005826FA22BECE6978B61C4BE296D35546EC1D754A9A916C236BA6ABA545C
-A5ACB0C001365EEB32CA78B773C81EE63299CE728C349F28589D5DD4E9C3A81B
-2EE0DA75AA8ED5C6B23FC630C5C3907BBBCD01C83D5F2D07E936AC4B09333C78
-6004D36BB2943B4A5B644636C65753899448E04E967A7F48B186EAE079041782
-C75552B617052ED972D7B6FC5520266582D1F487EB4EF1A3FBD1E0848C80BC20
-066B7443434F1E2CBBDEBA68BBFBC8A38279178D4227821E8DFC21D0E2EBE901
-F9B5A8040AD1132B312A6B0EE9D79B2922C972A24BDA1349A3564C3CC5F02E91
-E3DB08FB2DA6DE7E255907B259FCF7E164154AB4D72CEC17F2E75085B0D1868A
-8A58A959BA88E506D8BFC0A184EC7888EEF77C5E2B5BCD22ACC4E6B00B139783
-E39069AFA2A37B2B4967AE46B9AD37659A3AE9A3DB12FEF79CB6AF18AA1D7A5C
-B2DFE741C367C6C4CA243309056EB3B1E108D9FB6EC8AD273DCD90F47FA5E2B1
-AA7C4F9FDC46E6BDDBC9F1322F019F105BE7DBED29488F3CA28F9190095A552C
-CCF84B07899129672812CB1569716951E8F5725BED497AF4E30359682C293BD7
-C6A56260826EED8D01A243CEB4E90F199AC0E13B169DD71031A34DCD0416F6E2
-5F64628BE29EFEA5F2D1BB19E16801A3E1141031B26A8FCBE9A743200179E8D7
-1119B503EB36E2948DF7FA999B9B727341FE50434ACE2C3C652CEBC5F6BFF03E
-2A33576E534068DADDD223AF11E43B8C4BB5D1200B4254CCE5643CBD73398234
-0C23EFF923ACA9153E65E63E37274D9BEBC952914026E0D661C41620027B5B3B
-016EEC9C0442F1C3C59F8F38BEB118FEB9FCB2815BEA7763B5917A2C6F46949A
-3D1D30605B4AE5D3298F4E96C2094D7B2AD397E4931CE82CC820928B215C70AE
-5A48E61E9B457E869D2D99E34023553B90836C6A836791C8B8E817C57BAE9348
-CBC2EC7A2438FAF387BAC96986380BD874C29EE03DA2C9783C84CDE58F15773C
-15568C23154F885838BF4E8F7F9A0BE9E9480D0CE94E769EDA4AB3BDE1DD30CE
-B2A8B8ED3843CE96A201A423E39E3A45986537A3ADA499C61FC9F5D538A291CC
-F6CF384AF64B8E1348673CC6B317B02AB47A88C4BAA6F8FFA0FA674F600C0120
-98314DEA39A7B5099F513283D572127EEA6439F9ADACCC981CA002E9E9052846
-B5B6CDF69389187DF7BC8942408C71B87C1BDB0E500E9B2E4212FC21340045F3
-E4C421BB9BE10E4C5802524500F4031AA36935F92D8DA29782A13D8D80AC6A57
-D2ECF2235FBCF6E0488C4523B69448D4D6D2040F7204FA910F09973EE65502E6
-4912276255CCC93F30471E517B2636754BFEB588A110BB0992A8AC423E83B22B
-5591FF12D13011F30C5D8C6A3E53F72195C815AE0E613551D4A5BF7ADD5EE851
-78459EFE389D7213812607C981F3F336D3872DC617E687E4C8639F5F58DF1B0D
-9F8F89EA14EB56A0F6BB0B40F9E98EF7F1774F756E8A1249BDF018B7C106B6E5
-E3DA46DC768B2BC9E6E0BFD0948F28FF5186B81A6D9ACA6F87979BE5B243819B
-C341C6B5F9FBD2709D5DD4514F55B16EF6C20A6DB1EEE8D06AC53D6A593596E3
-5CFFF0EED18A48A8A94217F8F656E7FF0815C7A99DEAE190A46F6705FE75EA36
-F4F40100E125A77EE96425FB83E4B470E37AB52CB7E12D57B52C5C856BC1B634
-5A9FD75F12854EDEC5B49A4EB5A4506A073971BA96D86E8EFBE4AA55A80F08E4
-F9FE6F7EAD3BFE9D6AD23CE23A42508B3D1F0C5C706C1EEBEECDE969D33880D1
-DC553F44709645866F3BD1BCB8E768B0921A5EF72DCAACC194A56F970B363E20
-6F427BB9F981224745489CFB750C01A3F0B7FA898E23A3FCEC7ACBF263A4CD6B
-9BB07614881C937DC99A90AF67A9D7F98D90CB6BC7E68A35A198124F3C4ABBA1
-B2166DAB62F411469AD070C81C11D79FD6B7698E45759695CBA05E7B7880DDB9
-E4E2F989CBCEED6C0F3F164ADCC88967C29D59FADA20AF5FC2FEE18FD0201DE8
-F49D96FE359741C7FA44FDF60BB354DA8116FD5B1910D5A26DA3693AF9EDAA68
-21955C318B5BC1C0C020ECB1AFB1090F4584B6BB616BCE5FEF3C0FEEECC545D1
-DE92766EC499E8BF2CE72DE9FE7611CAF4929E7B60DBF82175757080DCD053E3
-E6E8AEE50B540A0C27BB02D4ECBD3EE8B7ADC3312FA31F6C2586DD03505FE6DA
-B462E28B67938BE4B6748B6C8C8A773D454C7D537A695EA8AF0D84D846CF3B27
-D43D15B2263E8ECB5C3BDC91DC45A4E1A3E74DF11CFBB148472B9B320CAE6035
-57DD58C6C05877AC98507619AF78FF76F8C31F04487D82D11CB645C8927D3421
-0C9F889882086C4082B91D3737DC1222FCB6304CC8582628F84D7F88411DAF98
-D2B31E67725F103EFA380555C09A9C01778A05EAD5549DC599CC377D38AE5300
-5AC88D41BDD304409891F0162D3903075A4277813378ED1530310EE75A28EEE5
-489BBED315CEE9928C012B9210E7DD4598996CD7A4A896DAE05724EC43FACD97
-1511EE90285EDA062C703A602B14872122778BE37609FAA932EF0CE234BB4941
-562C19702DBB1016FC64D60CE11C1BF1A5C4CA404CEC577A350C27F87CDBBCB9
-29720680F80556201296302B64B82782C34DABC6222A36CBDEAC67306AC65870
-B4CF79FBC80ECB5F99121058F1609E1EF924181D1A819602B5398845A70A5D6C
-424E3A5C6BDA08FD2937871ED1D82C616F78D56C9307A62D654E2F41EA6CC1D9
-595963C8F308A250B855DBDDAD4A608B9A1579756B70E643EE3850010C1D8B7D
-35252716C4806A79BE13FE4CAD5269EA3B2134EF402478A5A0ED0A0D27AF1EED
-36F9F96A058957C383A19015531250B07A63ADF11769031F86AC1925A0FEE3C9
-ABA906808A9D8CFB58C3D09593ACC2B735B956E21B5C1139AB40CBC12F9C3C9F
-EAF0A42CA26A61424B047531F5C32E0A331960A08BBA8107608BAFC9DB2C76CC
-974E9EDA3840ED36B798902674A27352645858730DFEB91DCD0C2EA4514D5D37
-B4E4BBAE31D3F6282800B92D9B76AD55121D66F35BF1650B09F058D728ADF379
-1D9F342FABFF3EC15D45B8580599C10D0F5E82A490BFF210B8439249A483BF18
-64B6CE120278AFF67DAC16723E1A9056163215EA597947555C22C196D92A6C4D
-2BAEBD772B7CD296EACCE2555DB375D7435A0AFE58D9C6BC8744DA241A1E5836
-75C54C03CC4065A8FA402518FCE53BFFB202403352B6CFD49B83D50B1F1AECCE
-2D03FDE4CA913E7CED2CA42BE3F96CBCAEE028E4F619C788CB5AC5436EC8D21E
-26A3098D6F093002BFD7E71A8F3A024AC612A38759DE7F0CE54767C2122FC1E2
-5EFF6B6A88CDE57566FC4CB6883FC070A0043E847A74307798346E0CDFEE858C
-300E92C2AD0A625E2A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSL10
-%!PS-AdobeFont-1.0: CMSL10 003.002
-%%Title: CMSL10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
-/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSL10 def
-/FontBBox {-62 -250 1123 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
-/FullName (CMSL10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
-DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
-7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
-C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
-25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
-7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
-299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
-80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
-5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
-8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
-5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
-F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
-966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
-A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
-9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
-A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
-94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
-DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
-E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
-5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
-8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
-155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
-4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
-44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
-8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
-04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
-A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
-F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
-111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
-8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
-567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
-C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
-C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
-51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
-66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
-9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
-2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
-4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
-5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
-0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
-233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
-BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
-62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
-B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
-DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
-C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
-CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
-38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
-FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
-303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
-8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
-8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
-C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
-9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
-4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
-03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
-93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
-91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
-FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
-06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
-95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
-9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
-7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
-6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
-5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
-3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
-CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
-797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
-DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
-CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
-8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
-04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
-78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
-730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
-021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
-CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
-90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
-97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
-F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
-4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
-40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
-3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
-362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
-DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
-7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
-04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
-DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
-C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
-B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
-9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
-3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
-D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
-B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
-74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
-44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
-A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
-3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
-BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
-01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
-6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
-DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
-CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
-683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
-87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
-550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
-2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
-17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
-3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
-F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
-B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
-1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
-61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
-124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
-ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
-0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
-D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
-F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
-BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
-75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
-8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
-B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
-7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
-F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
-F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
-322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
-523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
-6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
-66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
-B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
-5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
-093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
-B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
-6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
-EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
-A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
-8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
-144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
-7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
-172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
-254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
-5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
-011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
-B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
-0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
-3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
-E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
-993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
-0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
-18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
-ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
-CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
-1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
-A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
-6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
-BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
-DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
-1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
-93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
-E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
-4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
-F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
-4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
-361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
-95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
-AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
-50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
-88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
-AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12
-60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC
-BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9
-9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C
-6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687
-22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796
-38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340
-B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC
-0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A
-6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9
-A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D
-84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61A5D75A6CE175F267274
-518107BE0ED6EEC098B1DE979EEDCAE669A52158C3CD36EE89D80ADC4F907F1F
-37B37B4F60A8EAB65D657DFEDD87CBA6F4A23318443ED93027964BC327B5D1AE
-2719395124A77EBB2410A97BAAF0B812498AE2C9B18C7002F7615017B2672079
-1E990697B148E31DA869A76DAE831C1EDB349280DC2160C833DB3BA5C5ACA1CF
-CAB1DF362D0026E6AF6D29FC09D862DCDB1BA4B69E0914A7991019208F6736F2
-0ED0AD5EB87DB341A65594255B7B73B9868EBBA57E019B49D6493CED5BE58691
-277AE58E62CA726946CDE196ABD2050D0F7617AF39781684E43FB203E7BDD2E4
-149F8DDCFC9BCDF09448C47FDF587388578AB9802528425BA2BC5F4AAAABE816
-6F0E1839C0D53B5A71BFBB591ADB521BD4619A927C7C2439B577568F0D82B68E
-6C1E341EECEC3EF7EC2DD576911172EB9AA85E4C66E37308CD8960E8D89AADF0
-E5260E443B822A47B5069F752748F8CD0AA360AAD6E65F1488818636096CB526
-9021C22375246E150218C84D032D6214AC83F4183DCA78C67FFD7FB64691FE35
-0243DD0762127C3EAC0F9993418B73756D14BBF8991171DD5E558749242C4951
-9D9BE86C662A5644BA7DD201BFD97E1C8328469226CDB427FC74ED8B7191FB8C
-A297F9F21F89669FCAE16C425C6B97A3C002C7B1D8ACBDD276A6A49126F674EF
-9A66195A8C4078851F1B2A94ADC04CF74FDD53F695FD9A67EF434CE57110373F
-B22B1B2CC2A0BF17F9FB12DD143A32FF6F4F6287636FE1215AC6020D563EECB8
-9129A0AFC39BF075EC71E49D71B2F47109088C973E0B8917DC453CC9D61FC8B2
-861CB6D8A3C680CF7C6220F5C8532D80769EA928E4DC747018D7F94285B2965E
-76EC3EEF7FD75E6D8DD03DDB4E09880CA3BDBDA99E70BE806805D0DFD22FF020
-E7F192F968FF0C36DF271463CABCA0A9B5EDA91B4B06C1A73D186B1B594369E9
-7E015363219BE2DA0AE8E3E08115899D367A5EDD5AE097E79D9645BC849096F7
-FE0868AD5FEDAB9A81C00DB528E699A2FB2CB329FC68E740984B0C3F1D228A95
-9AB66F292326D60127722373BB4A9FA9356E092D462A4EE944AFD1CF700F7870
-8CB2A5532772E04039427165FAE1DDA583F9C852BC199A62297B04ACB45A0980
-C91935E27A67D66630F85923428359B2979EE364DFFF05A5CBAD417C4A1DE05B
-64E3A7D83E7423630B006001EBDF78C4725A9379DA084194C5BEAE8CEBC14619
-57D71D7AD1980899523337EDA1BA949A447B9EBC0537BED02DC638BE8C266C6A
-50C7E306A8F31F94F7C53DE72EBE9CB6BFAE296F15743A97187ADD3E3B1643D0
-484D85DE8C9B8C841B5F5F11E9D52FAAE7ACCB3A4B107D0828F4DA6A2C223DF3
-2FDA8F781AD806FDC412D2D2627C961A3483704A9FF0C2681B0BB17FCFD0B2A0
-BE4DC3D3C4B13E8239C369C586E7F7EABA699FF81E3D9B8F8E26F5B01BF4785C
-FCA7954B37FC7C6834EFAC3FA714F11E8E32511F945E117220ECF50F04DA38FA
-434F945FB07067D5215061D0456415C3A5B61D079F506919AAF44B84A2264538
-F37E3B1DA9E8EE35BE937B19354B94AB63E4D37B9AAEFD6036D83FB7ECC36E34
-3F02DC31372231452FFFCD772269CCB783DB8E06B5C5A094CD9422AE9AA4A6B2
-7E69CC663FEB5247FE9AEE2A56F86D8AB28A3157DFAE1F927A19FA11D4C09FA5
-515B4C75A9C71F3DD607D292912F2291AB2A49263F1328F0784B8E65A4F8A8C1
-D5037989CBA8717BF0DE8567F2813DF72673041379A4C5BD74623B19E6AB7E3B
-A41EB7AD905120A5332E0F6ADA1E252E5C85EC79FF31EFC18D668CC80BB5C1E6
-4CD2973CF6BE85E151C0E48E84EE1A0BE7B5DBB6D9C9B63B9923C351A5CEFF69
-9A52B4797D345560CF865040444913A2E5F8F26F7A6C75F7DC3D72A4A873523A
-FD0F8FFC705D895B3E7BA879011C3B09A9EE88556861F8BE9834E82D5AB844E8
-9701AF0B46B19B594ACD6F5ADFEB997BF4F16621221901B7E1E672867AC9ED16
-C00BB166E84B9A81B3E7F330D34FCAAF1EFE1DFE3E40709AE2CDC28E3FE52ECB
-8899EDE8ACCF05EB29834F8E2C28F87598568BE250241516F8E92D3CD33B9C80
-31F355E315D6B5D86C9D8B535E9F2E2092DFFF39687CE11F32B9D7BB1AE71A13
-C47A2176094AF078F49D1E9CC798B759E5E4E0B96051977A747B38F786D7D512
-4929193826469DCFA0EBD9990773780F26A0E5392BBA495D5E71E68378D41184
-ACC705CDD839B67BC5D3F5EE8EE3293CF4D0B09BE8E985AC2BB19EDFC1328A5E
-3C19D2E33176989ED86098641F1B0D5D01BABC235A09AE8F8111E288CAAD3683
-2BB25487385C4C29E9FB829291296056C4DC7DCA779FC799F06682961A968749
-5DD1A86FA69E04C6BE9ABB3B6FB0FE49DBA05FF2C0107F72E761B066E1681F90
-FD82D0BF8C2F6175B5E75B7ECDE48AB32DC5BC6FD4E335A151D5548CB2834A2F
-E33A9E00328A4120360D91021E025281AC62478A5BA411EDB8CCF015758CAAF9
-0FC69B5DAD6FB9737480476844C7F8B624016552413E76057A9CD3D2591C56CF
-A70DD3209A0BE5302E03CB96E218B9659004D22E7DD05E3637C5830E63381A15
-DA29461514AEED7BD1383725052B5B062DAE3A480D8A5A448EEFB93924130C68
-AFCDE429B1E8A10623F3E67C66545C9AF2C31FEC84AE964033B0EB9ACBC60E04
-B7F228A685F0B466B06934AC0599895426D26E384CFA7F4F32305857F4C36247
-CC592FCA44AA1D091207D57C7B0A00B5608FC7082820035FDFA9BEB0BD0FD03B
-548BC380C5AC95F6B6204CD64441711B1CC8A187C7BAB09E45BC0DFF84E02288
-F2B799A30A0004A9F54125213131B4A2BB7A1AC8C6EA788998917029443A3771
-209CCA27B4B2A328201828E03390AE656222CE2476398CE9A8B38079A124065C
-BFCB8A1D5C5DD43ED28857B6C6345B8D9B81AB948BA6E0F236EFBC386215F4AD
-DBEA92303ABEC5D9551A848C09C97C46778F03F831B1C60721CD0FFF0B2D1C28
-890B5338A19926A5654D7C5D661A998E6EACDEC8B9248D650767E9802877EB31
-8D4E9D7BC290A43DB053F2452AE78AC296138719B432F99573315C190BFAB12D
-E3FFEFE91E20643C2FD6057CD61F65AE2611B62539CA73DFD601EB411C53CCB8
-7FBA0B4D77E46249B445341FC9CE4ECDC079EBD1671A0D2BC018172F46F046F6
-9137EED70FEE7A29D49152E2964F7FD8A24AE8D52D40C26A61D90C5195AEC4A9
-DA381536466509781766F21B2D52EE19877C9A9E54479128A97C60CAEF2C432B
-722282F589CCB5E480BF6A480342E3C095980BBDD863A135DF4827EFE3A17A3D
-2877614C580A0A41AF0F3A67E1E6099C6DA1A42C16877AB084155AA3A2E03318
-F596DCA94225621F1C1E73BDB948A06B17FFB8F698F6777029E2FFCCD81B518E
-69E106041AA0BDDFE910437E6F310573E2D42BE6DD1E62EC1760DDC1E2AA4E3A
-8347B13206F20F7FAD14D12B349A9E9C30503271596A48B7F974C83CBAF4486C
-8945F703387D97016D0F40E3A6624B74A96634607A7DD53214A8DD89FB51A763
-93422516DB7C4C2E944CAA0A5ABB1ACEC9AAF1C8CC732AD293A63D03FA2D09FE
-FECE20CE80D64B76A6CB8FC203C4168C18EBD163162B7D16F15B5617BA4CA837
-253A6183E37940429472BE6A252F3D24A4C0699DDA810A54BF4EF2AF1F05ED10
-ABA4DF51BF0EFB5747D1AA747B84934E1BAD5775B50403046241C706AF831C23
-86A20C96C5720D9941415C038FBC668D2EA0527060DB5E12BFA9E0BCC4499BEF
-78DAE8D352358111B7D26EEB52E86FFC8E0456BA2F6B33C43CD1E7709D087991
-F13B71F527D4804568118B3DB326396278C1F53C0484EDB6D5CA9A38C227F6AA
-BD0FDDA8073EE53ACD4E7EAA9BDE72236B0E58DE510AE4AEAC2313B54FC6E199
-5CC699FA12C8CC1F126608B82E228482344A2D6323F643BB3B53E53238883F00
-0358F81203C5661B24A5569BF6E498EB8FA10018CC4A5CA56CE38C681DF5FD7A
-957C416EE99BD7DDED32B0A0282A7C7AB54367A1D362495C78AE9723C1E66CC6
-777002EE0E290143EF572AD53F477617ADD4EE69D849DF67630044570624C18A
-D0FC24EBD36EF26F0C90167BE5425BEBFCFD0709BB1A1B92CD7B21190E78AA73
-DD79BC55E77BE76B83E304EC7843609381D66A24588B2DA34F26F082E8AD12C1
-8FC611DC96A30F33A9D2825CE04C46CDE63CB084A04C6ECF052871A644DFF238
-6F73702470B7B252EB91EE2FC9DC8F521E3CBC492398EF00F7958EC9273FD9C6
-E0AFD3A8A6A44231F14D5E6C2D7D573F0E8C4A4DAD1D32CC0E35B857F1A12A7F
-F5D2E57F05C53D6F36638581249F33B5383C21031B3FC3C975F95326C60084C6
-01DA86BB781A9DB96D583A16D146AACFFAE34F5C0A97E5EE842153E5BF21CF8D
-E54E134DB7942A1724C1D0BF15EC0570DAE8D96595394A15B93E4111B8EEC96F
-9BA1022DA26B26AAB58E8216185806A302CCF86997363831A69FA2AF27DEBA00
-C8E35F6AFFAC00BD24FEFCC672EA6B042BAC6B1B6EE09F2F2650527AF8C30E62
-1020A29C764B561C74A6CC483D8968102962DC2ABC515487BAE7D3E46CC74415
-D7C24C3605C710E9859456EE0F9932BD5DCDBB7B60D21F0179C61CA5807B0BD7
-994943C1436CF2C8F0DF2C07A5ACF3C8CCBEDEEAC3E2467061A29752BDAE7F58
-7C6B0BF363E8F71CF825878A789DEF0EA91A8DC251D5DC912166F4370DF6E9CD
-E15A81BDBE2334563C17945BD691B1162E2F0DC7A0C14216E2CFEB34D4D74D94
-6B88493A16E5CBF842F6F1E5367C19E0EEB59BB4EB57B7A366FEB7B1DBB23E87
-F670885CA539D6F89910094CBED95EE2928BB2D4323688AD97E4CDB31CEEBB12
-99171E652AB5DA554CAA8B00AEFB68012C31F3A7FCE54793095721CE7A0147C0
-FD1FB417A2E22708292BF2EC9D019F18E79A22EFF4523AD070B108559E5FFAC6
-D01480F85B25A482E2464A2457946654DB1580B28DC0301E7E816EF8698EE258
-9E9643C98B6D127E8FC8007F65CCCC7E6352A31C65D47288A9D52315B13AC7DD
-FEDA7CFB858BC79B9159DD926DED61EB7DAD964C6A2919B29563D7B1E650F2BE
-1AA01284E9E541FA9F5A0B4845DDCCD38A78E4AE70A53974DF507E57A15A9C99
-83CF1EBC170A91F85945FEBEDF2642001DB6E41EE6B3AE4A1A353A62FC70562E
-4E6E293FF671A25279930E1DB7897860271FFB50AEDF729CA23538B241E76302
-1953355EF7901ECAB00C2A087EAF92E23BCDF88E0EBAA8D1FDE1049F878F705F
-938B86B0415E7A3A52F8A98C747CB5BED198E7883535140788E7718E9448F490
-5DD5D5F850AA909B26B742985E29F416A994DF15D85F46F3B1F6DB6142CB08CA
-8068FBEF6C3E1BC787FB1F6F2BD7115732034F1D53AE8926A184114CDEF3554B
-B86F882F9207ED34F28D0736CAF1C042A539F2C9DC401BA31AEBAE3514331635
-C9B610E1893CE5AA5BC47722D4516B921D47B379BC009088A47C9A7EC7587B38
-4D11C7BF489298DC0D3860FC965E42A1757BD66336E737C6C102C0D9FA38483B
-3DD4C5C46D9A898A38FB26C656264BAF0A4E2950604C0B99085EB379BAFB5CA6
-8D261183220C536135CE78D6B38ED0CDF0EBA9DAC6672F1787C2F00A79E694D9
-B2E395090338DE0B4293C38A8EF7BA0B1DE255222D9427F5C3FBC0FDD47797CD
-156458D1A096E244FFFEB0616387ACB1DFDDBD9645E03DCA774E3D400C2104F1
-CAF3BC68E0C5F62BDA81A9ABB76EDE006FC163B5FBD7692B9C0282F7290246F7
-E9E8C45D53942061DD9F193C05075088389E1C67AD220D48C98C351209AD3196
-B05FF25D2954DC9FC4BB31C8DD738D930C509B7F508E9FF533041A847F34FA2B
-01FCDDF8FCFE3E5CF23C7AB317EA64CF410336B52BFE256BA60FF45C44FFB46A
-93CEE3E86F52943BF2960E4F52CBB94407F8B3E0A2107963730497EBE8FE5B0D
-82C2A821F2BBA66BC87696FD42107B0C0325C843183586BD218C83AA5C430FF8
-D128FE72E306E97E14E8C55D1892F42F4827D140D7A9C384AA9856AB0B45AD18
-93B5ADBE8FF79E6253484DFB86E612F11AD630C51081094B9AFFB0206A7F19FE
-4D87FC9C35A82581140E78390495DDA00850F39701D9EE2364E845669C834CE1
-4D4D137CA4C0F253CCDC5398F794F42C44C085EC8C8BC48C0C791E64D09EFD33
-BDD35753513A61989A690DC6E0A19B83B0FD74F7AFE9BF26B0A51293BBA7C7C0
-9989E41C3277C36DE6BD65DA2BF7990C9599BAD5459C2AF8350EF2EB25A41FE9
-5F486DDFD2041EDD44B5DCE518F40021F501027F030ECA4BF2F94F4B4BE4547A
-FB3C43474BB34C5F717D6CEC6A03523AD585418943B99DC0AA3021D4C37A227B
-C0469D210FBB5D6F68367BF0BCB18480881182863DA0BF46BB13C3B2C4559323
-F52C684A25BE57998E5A4C17EBF390D8CCCAD89274E51D621C2E0B050F1BA34F
-561749074CDD7F0476A9FCA21C71490FD367749A3411A5EA69F1415B2F694AC7
-BAD49471B35C349D71601FB5A718B27E8D60B951B48482F07B4967BAE49CC1B3
-3482B03ACCADD4878928D154E13D04E97B7638ADB35910DD2F8C03268C54C501
-9C6F5E435304D5D2AD6BF1066424BFC3EE5F1622F3CB008BEE546DCA7F127246
-1317FA4988C8BB56B0A653CBCA90E1E673338B8AC72283B9C05CD3745A7BF6C6
-7F3C924D5A9CE8FED15562298BD84E40D71C1F3E1698B5EF6371E0E73BF67D14
-4CBCC7401545FC2D8F3665A2DFAF96CA84AF0E2C873D00CF9C3B25C736BCFE9E
-DC0691D30078B22F862B6570F4F05312DFA07DCEF662A5F07A335050696FB528
-223A8CE16D37B9FBC01409650E70010C887DBF8659971FE8AE80BCF7EE8DE253
-9E152307BA29CBDAEEBF41B6FD7179AADD8E3A6E1F280E4A4D706965FE0E17E2
-3877BDC89E1D9390880FD8AC68B84389848B3D9EB1E5F4C890777E548988C697
-16AEDC4DE63869782A3A7719FB3DC875C1F1ABC6AC83201A53FD65B887F286AF
-245A7A3ABDAA76062A22E14B6B6F47FB0A56D45DCE7F02031CF9F6C2EC77621F
-444FA6598A43F75C39CE8E9B1C980DF3F8E5A7DA2F71AC5177E9FF55D5B80633
-9131318664FE513722357D5916F3A71E7784D8538998FAF4591A561926C73FEA
-73D3DAC4F3436A16F1555D753993C4CE9CDFD5766AFEDCD71A2682274F838005
-E1714D23510FF5021804A65D4250F45FEC02C5C77BB96CDA86BA8EA56BC6099D
-7D78115787A7D23F0D56CB6E37FC20BD2DAAD00544065DB6A197B6DDD7694935
-F55BD6D1BF653FAB2102F84EBE3DE4BF408C673896236B14C3019AF3378C31F0
-6EC4AC9ECE82BEBC325B3BD4CE9DE1FED067E7965C7EC6CC59D2535980658F34
-663E319CC48F9449E119C501092C69923CAA551283C97A9610E408F779CF89E8
-521A5B4F737764310D2D706D1E33B047DE7F9EF3249BD867AD4EBAD6D141BFE3
-3C3FC0BA5AC8213E01BC138B5801922F130B947C5055D2F3546C1264FA921956
-2767BA09C4EB296EF96E78A4764FEC6E9D87A93681872452EDAD3AFB61F90688
-54CC4030ECEDE68844E0D8C9D08F1FC2463F538CD9F59B7D1DAA6A5BED3AC138
-FECFC60FA711A080905E1440F9819E6BDFE96DC7A27F5BCCB22AA35F5CF45C29
-B84C97AD2B49490BB98CE34C1F9ACF861669F7ED2FC1C2137CFBD52882B8E660
-81DBDCDB4D17BECA1F14862EE61D3AE3F772B13F0383F2EFCE3B51C10CA20FDD
-3948FA5EC227CE64D4A13383ADEF0FD33FF33CC4DC07C5816BED85900433D0BA
-CB69F2DC68B0F832848D06E8FC48AF9B06A59D0BF9F5D07C3F73A5B0E3A6D4DF
-77A74E5E74AAE5EDA6FD8D5481CBFEAA2DD3C6570193C88B951B8BD7A989C8ED
-DE73A95D65BC97AB55A5D4250C924F6F7A7B94084C24F72F841AA46FE7C3F5C5
-A0D8A504399DFF335EEF06AE1C578588A622ED5EA23C179527B69D3CC9B6EC3E
-3AB568281F1ECB624893A8D42392FADCB06FAB2A8676E805CF08C9D8CC74312B
-53A1108A7BA2527DCA5080D9B2A4403A9F33F389F634EF2A4D50F9A39AEE4FAB
-6E77555EE4241B578BC01B8AD5ECDE9C3FEFF4F46FB16358270A3C55D63B4022
-1320C4EDA034AB6F79F125CD10BF0A57D25005F8445270C5F32FD15A00014373
-B5342B79922DF741724E8D187C5281B57A64E93AE027AA1E6A6E30FEDD89408A
-57019C2DF2789033534F7CB270C7A382E3D9EE4E5996604468E450F9E97C50B9
-B2E02EB6EFFC1851413804F972E2AA795213298A23CD044B69D3AAA6C416A49E
-4933D241493C212FE7314C149225B6EE11D7B4458168D4DA260B4F0E043FDAB3
-CED87E3C10620BCBE7CF2E7466B1BD9F6E620FBFB631DFB4FEEF7636A17AE5E8
-0DC5BC254BAC588F0F83FC132C9E5F876F26705097B4AD1D05A4F52929D1434E
-E123A49753CA9196D1C08322B54DFE3202C7A1C320ADC10A3C140CBD9B5A9DB1
-FB270BF61F5DB27A8AE2D43E271ADD0AFA7BFA1CDE4FFA2E63E61DDC905A064D
-79CF980FBEC055C345C62487B6107ABC365B2860C01AC82420D190A66237D262
-A8DDD039461C88391A27FDCB26C04EB8D6861CA2223BBAF4883A27A7F72D03E2
-4624D15B090344E6E5627D613B05465C632051701FC29CC4B4E50B33847773DA
-8E66DCAB76D3DDE136C3694E42EEB74FF64A65E314EA6149BD3426A13ED87418
-663F7B44A8D1B0BBCC331D5225BF2E59E5DC5E4A4E2667266AE1185C4466EE03
-B64B154E4FD72E1A70A95C03F619E5E847EA810FED21A0CF7FB15009695EA943
-BD3118E50E9CDE7A8E69102F7A4FF2AE3BF3E0ADB0514549A09EF7E53CEC8B9F
-5CFED55323713C580F91A2A5E16114979BF44C4B508C60B175A78DAB998A637C
-A61D43286A02213B73067F2EA38F822F7420C6BAFA5CB3DF83CB7ED5E23AB4F5
-57ED10B7B46E53676AC7146403360B81C020FFD274948F323DB81483808B0A1C
-D48B111C340E14A15EAC6C4DA4AEE1D046E2E6FBF879C195266E7A90FE0ABBEE
-085F31CE8D1BCC06CC8D6F5398501B736BEC24C4642467F6AD53F817B737982B
-CC25798BA05AB460B49064EF106A15DAF3B2ED51717FD3EC49C5D79513FD5F14
-D71A6842F269DC7365757F92682B03D6973214E0BB1D67408FFCF8B27AEAFB28
-263563EAEF546624CB9059E9D960D6FE59E51128FDB6BF2370125D1ECE8D54C2
-55F308A4AAF1A4B4990641483D57E10061C93B8B53C7E178B4F9A270901229C3
-50CEF638CF8361D6FDB5ABD23CD05C101DF31A39DB88172DD7478198D55E8532
-FE3C7937EEF35EE76DBE1996AC52E11D0EE3DA532DCFA4A5DD6B5B0BB8CB1A9C
-605FAA474FCAD651A760311C125BEE60780C26D9753368D3D9F8164B64662081
-84E596C83637ED5E725365F007E6AC708E2FEE2810FECB5DDE0772130F6B1BD3
-9BF5819D36917EDFA4E8DFE9CE6A8FC67BB20291F5E04CB4CB8511F278326D68
-574644D573D0D157FC70614F0E1FF1713F2894D7D683848F01C98AA570C4CD83
-AA41E43F9DD9751234599CA7946A2B15B769348D2C5F5729DCF5CD6E5943E9B7
-605D327DB48842F0FE5F10F2367AF50D52A65CD81336DD9E64961A550FCFBBD8
-01DB2DDF5420C060C887B0D6BC1C3964AA08D283A2B28969D5DB67EF25143522
-9441EE91A787C0370AF1C787FE033735E54656C24C8699E6DFA65592E78C8A9E
-8400FB03F34730B46AD31517884FEC16123869EA135C1F3BE5B087782E8EA356
-785926D5CD3DC14552372D1C8348A0F4DB60789647311A16C7CD803111B990EC
-FF4389AAE753C4EBB688A9B47AD5A34CC2EFD0754A7F22127C67398903DCC82D
-91663A2EEDC68C1F935664765A7E22A6A89443C05FC41CA2E4650256B3FAB63A
-24D02AFE2CAC1A99D63EC38D0AC684EE48225C49B79184D88AC2E54F829319B3
-323F302FDBF47F431061395F1669CC593C7BC8B24ACBFF6DDF9F0148151B12B4
-809D8586F4C2B37BD871B3C83370C310919D8ED713DA9847580A84390CDFA0F7
-3B51BA7E43D5FFB974C9B09C2C5876A13015678C5F0BEA3B39B717D807604F15
-DBB52E1FEADF5884C136CC5C311751FBD6B09026B94D7894A9FFEADDDF097E2F
-D0073026F57457D6BAAD83AF5AF808AB76A300A755C6B672A6537510968BB08D
-4D10FE6E5AB246378DB361276DD60CA40F076F3A843D7999F92D544DA683001F
-8DFE0D622242353E64B944230DD26046D752C2CAF15D3A74858C65E21136F0B5
-0B7D088EA8EBCBF80B61FF104D8785E8C1A087C12320896EBC0C67E8B9712A44
-2B176F03EF12652AC35E975BB17FF9BE61C2AFFAB4E20BC0A9DD1D188BFDDB50
-7B19507C237E75DC3B984F1E901A03FAE2B39BCD2EB8670B1B0395BECD0F4CB9
-57C60FB6628DAC59D8BFDEE0CB13D42BB07D6048B26F66FE23F4EB21C50F71F7
-E43DF2D75A3A4CF66140C80BC5E90F29A865FD4FEFB1F83CA1C3086EC977492B
-4D989B20469185C1BE7B0E0171D80707208D64CB9C849847E5F66B1AC998F387
-CC6290DFF14214056EEF9D1D01CE27F9F3E3DF9C076C751C88EB75345F01714B
-72416BDDC769AAC00AA63F581821C655943F21FEA1E0AF3BC738DC1734D86AAE
-CFF12F5795F9CA55EDB98BFFEA96566A7FB3ED2A012B4E6501CDCB96FC6B3A21
-B90237B17DE670136C411D329BCEFA6AF3E121C4A6B132D6096F4C9EF3F91B07
-1867D351D78E610B7CFFC6F66B0AD78D909667B07397CD6CFB7AC8B1D1E5B60E
-DAA2079DB71D295ED74443B7D0F0771B7BC2DB068E80219633E871354067BCB6
-D4ED193ABDC40E27B3B824A70DA042C6F835910B880A18D879B003C06F62E9E8
-CABB22B768E9401A389D98ECE5B2D4079D106D36E8CF8CB9A6C2300A8642F478
-C2C6A74DABC1AEAABAF8C0F48368FA8A1B2F16EE1CA02DDF0ADBFFF8DD35079A
-FEA6620856E15785D15E48F6F69DD50B61CD25EA7B7254D520EFCBFDBF313E84
-8BE5B09CD20F2387C61D89A2A7E60AD544C7C59E1B772B9D35B3DAAB3BCB7EDF
-12D82FADE756AAE4288966134524F68702E0AAD2A61F08677EB96C95D2A35D7E
-F06DFF454FB5A11E1027E7170DF4E251F155EE76EC403B50CA3920B4539F5A31
-BE3915DD802C1789FD665C1D5A0C5161B0D1476AA168360E35E5005A69C721F0
-226DF8F0B79B1B0B2C048A30A06A0B85BEC10F536821FB91CE1590D774A64232
-95D12D3FC681819619A206203D333D968C6299F06FA4E1380B9AF3DA2D284B75
-BF7565D70568ADD0A0301A469D59E5DF6045C056DD3C08BEE977C43702D7EC40
-2AF6E0A2D91DDCA9B7D92556523E9DC08E80BEDA5BD02841F15FA75973A34E17
-3D623FB195E781871F0828EF8AC184779B5E36A52D018B7CBF4A47F5DD8C0D82
-456A684800A8A6B1E323AB2ED161D2AA81F06348016062EF7A3D7C463EDB23EE
-C191191EEB0706C4EE51CB9AA3036B5037839AADC2A4DEAC772BC5D3191B22F6
-9F3184AA395FF6E1242264FB781DF81005465660A14B20DCD62C5DA8AB18AE74
-68EB116FA0B1E2004B95FAAF4FFCBC89CA1938EDEA1E8226C82BAAA987B1F08D
-DA63799218141E265D5D607CF07E8D147384F6A802C4A458776466C597BD7566
-20AC0E6CEF3FC646DEA2C080C31285C4DB729A25482C036844612B3FDAD18F82
-679F6CBCBE648F07D65F0087FAB090E6A0BDE29907BBFE861DBD3C99E7F82F0A
-EDC8BE776EFB3318E3C565478D98531E5603215625B5575D9188EAEE95AF90CF
-D9ED5822739415DBFAAB82CFFAB04807DB80DAB5C965D71F408915D908EC204C
-B24485B32E2200DD39A71DB6BC3E1F123F3ECD677157FD957692F14FD2C43363
-817C8370907AD6667CCBD9D2F4764D33F7CD1FCCBDEE4560F27179B78472B5BC
-A50282DF88B0CB7BFC80E1F8F8F49085933D670EE8B1B451EAEBE4F0DF5744A5
-E9A8A4038E3D438262F1E7A60EDBC3DCDEE3DD0D2C8D1A36D68C5E1868F9C976
-A217D7849025ED43E219AC16C8F8D23A1D6AC83B1630CC357AE219BE6465B7C7
-81B93A80195AC14673691AAD119111BA51F1EF28F737D807E2CB59BD1D1E0192
-1F28C8EDC198A8DA3119ED57E1F2B7A6F967F2C7BDE230A96D95E040BC58E37F
-4DA3C3444FBB1D6D4D37AD7B1D0B16448E900AD19CF0D41A3B476FD0C16D8093
-5E716D11C46DAD7654BCC3B41760D997BC6FDC0C617B462717892C0221AE8531
-98E2DB2676D925AE29A432B867B2F5F036D568FF241498326422F7B06D153D49
-0178219AE56D8DDB2215D822B788B445B9DC1A7F09768BEEB28E91B052F17B29
-3DE2F1349762766B65584064E2BA0E4336A493A9413CD4E0C1CF342CF6A53D23
-663E4CD6A42DE20B12CF0127382F5A7E668801E2C7CAB3437D75597696158BD6
-BB56D9847F37A9B0012E0CC7D8B7186BBAAC86F195566F47C3351243139F95E9
-C0C5DF236D3472254C85A89A05C09F17EF888E319E0F05C01840149A7C8567F7
-8D916203E835E9FE94D99F74992B042F5E3C10C8A7913106DC4572D46EA15DFF
-A0FA5E8CD87DE13957648B801F7A88A22344D54F8C433F801DBF7B15BA188297
-5C774C499DD1B28E08472B699FE8FFD2F04BEA197B7D00D1A477376F080F92BA
-B722FA4CEF906D122A696C0434571DA152FA241C4C95B5990583FF7E9C0A3FFF
-A1B466AB96F189AB100B209159306A8F7373E3D101C057EA3047129176C11420
-865B1B5B80EE64DBD1F223E80760339907C74639ABFB8719AEF71A192E3B666B
-0249A9AB24A25E9290CF115268DDF13A7E1FA35185F3AC717C1984D0AF26630B
-3A0BE89300012880916CBD34922CB8871C5D1E11C20FCD6EEB1198288F2DC794
-3B9EBD1BE4BDDBC9CFDCFEE715A60A94EA71F69A888A859738FF175E3048054D
-E2AFAB12130E892256246D509EC2F0831F722DA32633ACE9F40190C0817D326D
-B46B8D91ED0DDEF1D245B257BC06E5CF75ABCC23448008C77D2065AD6D09F5DA
-A4C1A314C4C877774EE039FB439CBE8F7421B3D7C2B85E2B4B7208058FA24CD2
-5ACB49DED05D20B6F4E6DC283379E93D1CFA152F2A4FB5
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTI10
-%!PS-AdobeFont-1.0: CMTI10 003.002
-%%Title: CMTI10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup
-/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTI10 def
-/FontBBox {-35 -250 1124 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI10.) readonly def
-/FullName (CMTI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 103 /g put
-dup 105 /i put
-dup 110 /n put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E
-2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A
-EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD
-8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF
-CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2
-7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC
-32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09
-482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF
-118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381
-1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC
-C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA
-8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4
-61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20
-C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504
-3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70
-9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A
-D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0
-125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8
-34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A
-30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9
-39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49
-9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184
-2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF
-0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348
-3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D
-9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757
-802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28
-FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0
-98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9
-5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF
-AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD
-A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93
-5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815
-DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37
-4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC
-8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B
-A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362
-E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F
-42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96
-3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59
-A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F
-7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4
-49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428
-D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C
-0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955
-CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485
-1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB
-8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388
-6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468
-83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29
-60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284
-42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2
-1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A
-21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA
-206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9
-D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7
-7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B
-55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4
-6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762
-4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392
-871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E
-9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645
-DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5
-41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8
-2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F
-220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001
-A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D
-981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F
-337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8
-139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B
-1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC
-100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A
-1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905
-F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB
-72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7
-A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D
-310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928
-7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989
-1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2
-8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33
-80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610
-3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C
-C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996
-4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB
-865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B
-301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48
-3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9
-1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B
-E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29
-0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0
-30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E
-2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0
-C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89
-14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A
-44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC
-CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654
-DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34
-9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87
-4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3
-2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676
-21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26
-47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4
-F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9
-D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F
-03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5
-886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8
-352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD
-9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0
-9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3
-92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F
-821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93
-3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0
-47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0
-F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B
-9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1
-AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71
-C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978
-B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED
-D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD
-F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E
-81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038
-970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C
-6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7
-97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668
-A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE
-AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594
-971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96
-514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7
-8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C
-392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170
-3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F
-464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE
-C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E
-F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053
-911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6
-261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED
-D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA
-147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D
-C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516
-C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB
-61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD
-FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3
-F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C
-2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C
-7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193
-11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C
-9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66
-C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3
-1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692
-5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5
-6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0
-EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E
-F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23
-AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D
-8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94
-376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6
-B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B
-02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56
-4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF
-9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD
-751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198
-3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A
-40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962
-2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360
-D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A
-0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E
-8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946
-AFFD0B2B724EF0F28393F3CB6A4DCBBA655E3D6E27F87E6D8BE12A15D35E1E75
-D36532B9C5000C06A58822444593A1038EEB23C7AFC9EEE3907DF8232322B09B
-230015E014F1B4CEB866234266440AD3686E30ABD086CF9C0926E711F0757925
-5DEB3D39C8E6D6F0C05A364A0DBF90F6E32CD28887F7E237E04093E07A94C973
-462254BC1B1586AAC29FC7F15A80FB5993ED22E79A0FB5BF0F7362CFA24BB2F3
-D4EF7D39E1902C53053C27E2AA49C4DE54A05AFB1AA6C7CCFBD9F72150DE259A
-BEBFCA5C7E828BE667E9C72222B84C4C79C2DEB885A69861DDB635B02814BAAD
-9672A14E50D6A2A236AB35C6DCBFA1165F47F8F52B0787EB4B70BFE3CAA8B511
-A630E8148A51C1394C7C321156CF52EE7BFE07B6C354CB65782464D2BE42C0D8
-14EAFBE88DA3D5C90614F22E02626ABD343F3AC0A9698AE84CB97F1CC421D34F
-98B69FF4C335B95F4222A8BAB77662B4A57A4B574265A679334D5EBCB073FF69
-66BD9322B1C2253AE85AB38889B26761BA509C7F638C6CBC4BBCDBBBF4BFE1AE
-855973129978F707C87462B67509FE6EEFB5E0949674C34768F001827F12F1BA
-77AE866711077C30DC0E40C2D8A6EF4D85355E596E26B675E8D223D4E55C3580
-5B79260E90985DA5E5B2F43DE7713D5E67080D2843D44A3585E078615BEA476C
-88233D241D3A427F9B1AD26ECD535E46C137084A835CD816CCA936D0011C53E7
-B33D5B50ED7BF3F41289F48E394BDC963EB1AFD6F14F0C146E0F13B03E76B389
-8AD8E81E41F14D1682A113D8BA1482D9DDFDE71208AFC351B62E028C3D50BE01
-FC9CD5D5F36E28DADB469201F41E9F39098B65E43FD1227A26F6FF812CE452F8
-B5476C28FC1B1B3E5FEF3A3B94CD552E29288AB0A3ABCEAAEACBD2D5E9001579
-738029B0E7F635C6C4962340187558084D9CD408EF7FDCE23F465AFCAA8EAAC4
-8855BF64EC9BC75371A98095CB51BE7FF107E4C6C2107D887716F94563768073
-B8C4238F51C1E63C279B23DE3DF51F656B90880333880515945253BE08582F17
-8888FF4AB1EA0051CC41CDCF6C2D4B2F19C17FDF8A8664754A884EB6A4311C08
-074B3CFC4E20FF71191E3C1648D2C38260315702E80A6425361E89CAE7108A3F
-C7FB9AD79D51427F8FAE45D1B02FA9083F76469C3378D3510246D81F10F3F48F
-9CF6D65D2F32BA1B012BAD2FDD43CE879EBFE2E5DC3BEC2EF496DD2C3848D655
-AAE8EB7970EF9F9A5AC6BF1C30B61659B7E8075DC32A70F10CBCAE6122894309
-5A0250411E81644F995A049EEEB89045B21B7741FE92A75A72C8B0A406275099
-8D134C8CB0CDFFE48353CE37202D9686FD7AF16500245B88C1C5B88E3DBC3B43
-BFDA072390A1D964E90FEA605DC6AEC44AA1D700017FB1F41C13A2C37B83FB64
-E63E895CE647A545FD5CA85463960331495B05929F57DC349736AF84A5687549
-CD60A676FD984F0C50AFC2F783594DE38ADF685F5E2937C95B50D07C6316ABC0
-8495EF319D914D65E08722DCE6A5762EDB87EA4AD820C359201059F56296F608
-395942723FB853CB67F553F689BBFDF60264E90AE6A7FBF7AEF443A3F760B490
-8C3513FCA7ECCA5A363D7F72C62DFB1773CF88D2D7E1F0FD606878C4F274F285
-5A3EF87C541495A067498702A89961BEFC26B229894408B4BAD353FE06295037
-9E55663FC427EAFBF65F616CE7A771421FCB22006B241CDB156035A428CFC241
-C3FB0343C9C040CA92ABC487113E09074631B554366DAD01C246F4E082C64B7A
-E9BE7C172B606786E702BA6D036D10682AD61CD0776567E40D095756D3D02704
-DA8492D994448DA3E66366CF2D712AC596DE587E976936D0B5B0E2F02724414B
-5AA83C1B3F8EFE2C0DB65600DA12E74A4E6D474A985BE62E8B0E6C0AA9E739B7
-D1A6359CB3AC713C743C7CDEE58649C4B6953E5671540BFB5FE80776FDA87A1C
-3B3B342B7AE56D96AA8F18DFD6A8DA83196B9F5DA844E622A6717CBCDB06B0A7
-70C750DE8AB3960E58BAA873F0C21D1157A2909231C41889BA6CFF45FC41F07E
-9F56466016A3C7BB340FD6B6321A5CB19788A886D0B5909DEF40ECE8923E7EC5
-CD3881FA4311C937C0572619DDEB4618EA621867B1B8556E73DB25F5E86C0D27
-913B40450E452906B5528E86B0F08246B595BC6487543AC0B789D555594ED997
-911B9D19F01232F69A42F99FFA56DC7DB66BD6B9158E32511F945E11724CF164
-DAF26FF59D8B728188A609D1D868C2536150F333BDD1DBE091283F1884D320EF
-908F80BBD8AA0C8BDFE625F34B41BDBB60DD9A6AB33298DBAF5224EB27D47B8F
-69588EA13F414A6E6EF3924EB12BD7DFA8F9628C4924BB5C065A6A581B31D314
-6AC33A670CAE923A46883115C5B26E3566D2811EB20634B14B53CF46E0C66F92
-4D5906B71A17C8E38C1EDC9A45C0E3472E4BD49FBC8F8D1226C8A020932DAA0E
-2FADA6A30D305693AB8E3E08897AF9EDCA74EA769AAA7D6824F01C3733E73214
-2D9AA6EF67203CC27E3E7510D09015533CC5CBDF4A4F43761B5019433B615A95
-F5D1FD30B1FF23619141C06772C69C0340C90443F192EFBC342D1ADEFCC125FC
-4BCD134167487DAC3A1C5D18CB454EB3BE7F3DFE59BC6F349395066C17BAD3A9
-94F54B393C29D53A3668370DC085A703FDC91930B0CD6F7FD4EC1F338D7DF701
-E96536126691975CF22A54EB33D276E0F67FCBE601DDBC41BDC763D9EC78D386
-51A7F72FF1338CB14A6F09670E67F472D6F57C6447F5C82305B56BFDEBC0B324
-EA6FD3853C831681645B10C42B9165789D5FB6EE1BCE6B3E908AFC374688E720
-5A3930D9918DB4189CCD63E6F4BD9ED18FC1F0F3E85D51E3615FBFA4F1E9A746
-96B0F85B468281C142E707271350C29703F947292B191990DDC3A13A60A981DD
-FA1F8B9151C8CB3738AEE8FF27E3390404F5C96874BE9290AE811A35E0C4727C
-C7425896985C8324159C8A3A4576BDBC6EE02323CF51ACA4AFEE28A4AFE6344F
-54C5064B9A124AD5E6B2B2CEE087768B97DA1468ABDE4FB32C632E1CC6BBF007
-B8C36E1D3F7696415EF51B3EA956FB3612B12FAF9B511F9D6B29DDD7C89FF065
-1752A6E7826C367ED149527468A9A8F3730DB8E6C7DA1EFD1BB1DD2693BB2421
-52733EE07D56146CD064222CA4D765AE3A1AC8366538BCF0101BD74F7DA3D330
-04575D95799244593ED3EA108FB8FCE3A8BC431416A6D60E27C9096444E8C225
-3B838FD5B8C78ADD9B7DF7EFBA6A6A466CD243EFFDAF90ABFE82CF2B9E06DCF3
-046758EFF0C168001B0AF208160B773913DEEAF4F167B0BCBA1EE3A51766C9B0
-D3440CE0A46DC741B417E21502354EB5DC09B91231A5B79FBE4F80028C01B505
-91866DE115685EA48FFF22ED898D8E64C7A9C9D8CB20451DEF0551610C6D1255
-7DEB229CD4AA2C8F0AA989EE31BB94D940835BA22BBD1607C8944C84226F1F59
-35248C1A4AA7F0AD631CB66B7A149AAC76044376FD050E367D993144111232DA
-DF4650BB5F45B791FB1221B54F88798E8619A3E82EA65C4A3DDD98A3E7D6B296
-EA6739A97A0771E6270528213FC6F372DF4F1FBB80A47FF62FFD5287C9AA4F91
-5064F8D3CE7B4C71156E4D21658D626B97E01711F123719E3DEA49CF8981DEDA
-CBDE3182826A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMCSC10
-%!PS-AdobeFont-1.0: CMCSC10 003.002
-%%Title: CMCSC10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMCSC10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup
-/UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMCSC10 def
-/FontBBox {14 -250 1077 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMCSC10.) readonly def
-/FullName (CMCSC10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 97 /a put
-dup 99 /c put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 105 /i put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 115 /s put
-dup 117 /u put
-dup 120 /x put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2
-048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31
-CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2
-0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3
-D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D
-567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3
-DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF
-435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E
-2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148
-D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1
-DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70
-8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F
-DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C
-9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E
-1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49
-59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402
-A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA
-90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E
-3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB
-3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41
-736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198
-E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94
-17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D
-FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E
-1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085
-35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367
-3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1
-5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245
-658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD
-8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F
-CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9
-D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7
-606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C
-64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8
-F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00
-C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7
-072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3
-7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317
-1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B
-5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3
-2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06
-491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C
-B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07
-8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F
-9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568
-4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781
-AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E
-36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA
-88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85
-5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3
-5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8
-AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152
-7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0
-CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8
-E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF
-53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9
-FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A
-94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4
-E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC
-4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B
-D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428
-F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4
-5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460
-7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2
-361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579
-5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7
-83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F
-8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3
-F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC
-F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327
-EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15
-B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D
-F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4
-8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE
-07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE
-8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4
-12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B
-E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA
-EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B
-EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207
-A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29
-0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F
-AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24
-3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128
-2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037
-215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE
-E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720
-70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5
-37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE
-BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A
-EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F
-AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A
-0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F
-7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8
-9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5
-28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A
-962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E
-F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3
-3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC
-3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5
-15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8
-DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF
-72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512
-D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588
-462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026
-465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607
-6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7
-8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A
-AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20
-53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34
-E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF
-E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605
-8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395
-CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064
-46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C
-AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7
-391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015
-55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643
-0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1
-0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8
-3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A
-22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384
-5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0
-20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3
-B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E
-AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED
-CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B
-7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9
-B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED
-A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201
-213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B
-57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE
-DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082
-9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271
-C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC
-F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F
-54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E
-C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051
-1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90
-7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287
-72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A
-DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC
-5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2
-7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901
-EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4
-62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1
-0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A
-94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6
-5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED
-D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E
-74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88
-159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5
-2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD
-D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143
-40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E
-DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977
-CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F
-C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A
-1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A
-7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5
-D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614
-37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874
-357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68
-6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435
-6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53
-686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F
-D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8
-EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6
-3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D
-E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3
-154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD
-9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092
-40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6
-A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE
-002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54
-810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D
-637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24
-1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1
-859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF
-6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE
-2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858
-89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A
-38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045
-9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F
-774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9
-75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC
-660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9
-2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C
-8BC2F3AB0BF5A6E5619BE16DF43BB099C6CEA5044ABACC419174664232E97B29
-ED32362D219AF109E5D8CA751EB1F9F31BDD08C93AE018E5269AC327FEC67D99
-588CA80F068AEB94A7B943BAD5EC8D89C0B8D153B4345E77A5AD9B4522208A33
-DA92CDF765B44123C6EBAA06D629EB9E8D0FDD29BFD60EB582CB369474767FE4
-C0947F27DCFE0C8BD3CF5131E706E02ED136DBCE6363CB5CA637E08C3D832037
-5AAA88B746B6D915EE72D7B458C55598DA6284F362D2DBF06C51DB50A9FFFB5E
-EBFD69D8D06AB0A6DF2D03F6E14FF290B1A1531109E43892B82B29395910021F
-A6EA74B8420A14FC189741ECF67F81686BD3C5559DAF75DF9FEF3346CCC35AC5
-37A1E30C2602945974A2359EE3183A1AA568978F7732C35BE2B9224C27161748
-515E5899B0387F0640DE1D712F390A8A026FC5C5A893E98F46B418B7B32BEF07
-AD0EEA87737D929180B2BE697D0DFD46CF307E4FF76BC03492E66633F1357848
-AA5A594EB8CC5913E76602C9CF8B7428F67965D5BAAA29BD6C978EF6B22B0BEF
-4203B223443554971EFE558FD2F51D01B35D2194A1F6820293385CF12DC1ED73
-79EA6082A30796D5EB72A67C5DB42A01F18CCBFEBE2F10B091C43C2CBACD8914
-D665B340281C1EBF92249FBDAA577CB7769974B669DA0B74E822EE5DCF3A32D8
-9C6714D8C82CE9BF3F16E6336094BC55381E73A96D45B7A70AE00F9CB8348E08
-2A64E4B40B3BD0A653B423C5D3C1ECB62F5E05393FB8C9B0C44AB26F6BF796BF
-5B51601913014ED708B97731A5642351ECD0F6CA9C06832E0BCD0055E9BA51CB
-7242CD34AF0B75F3594AF9235C42B974074665C5B6C934B08E5C7F55638E7DB5
-312BC541A8000E69A92ED6C63AA6485A50DFAA1DCF9B0DDAD23C43DF22F3000C
-0CBF6F8F64F37BDF8F8DF321FD8F42C3FF774A388F9C033572B177A493814ECC
-BE19595AD285F11763857603EAE0D6AED509225CACBC49351E6BF1457BD11490
-EDA1C3DD6DE8C7036464CF80FE562CDA51ED2EB92BBC79252FA79EAFE5E6BD4F
-DC16AB83B2C902A9027BA4AE30ABADFF6D513BEA850FF35416E76FE62D8E88DC
-69F0C60921B33BA59FA3EDC8F532B47FF2A5E5680BEFCDAEA4474DFA2F8FD68F
-74B5837A22984A7534A5321B83459E436AE4C498702EA14A77D3F78DAEA47BA0
-1BE6CFAD95132683BCE0601F3EDDEFF5207FD5FF3CC9093ABD946CC7C1076DB9
-4DAF08C682269CEE980159541D92FFE484B7440E5AC58D7707BAE579605D1EB6
-42C396807AA13B3ACEDBF3A465CBD56F076FA9319E43907B6522904F92483537
-6102700CEAA52EE916B80AA4C5F8C98C9AC9557F97784F075D37A83649D632F5
-82A519507162012A671F3B4DBAC454D920606E9C87CADCAA1172A04E445A28A7
-0FA9545E5FFD15302664B5C2C4F479C8C760C2A015F5F5CB51EC6C0260154D37
-4A65B01E58B458ED0FEBBE74884C9DF7D50770153FB498E94F65475A5EA6A687
-543DEA3156D3E5CEE23923120DF4D561D2C082F1F3BFC5039A1DFC1C9C3A328E
-6F879AB979F2C177FBA357FD63F8CC21E8AF632D6B01A3AC3EA7DE91C17B8120
-42E78A1AA2E04581B1C434A8147DBE81A87C73782DAF4BD5F309280FEA22DBAF
-586AF386182364E45D7DEAFFA74E338E875B64B13CFC909B30E074D777D347ED
-3A58A82D5F6A6E913054F9FABFDD9ABD8BBF54DC3480F3A90965A0081092714B
-D77604CC7275050DBCCC800BCD8E2BA540B18CB07AF27D66F8887A571685600F
-3FF8C7A4966A8CF8CB25DE0495CD4E048999ECE6579AFA82D1644FE160E2D3F0
-EE7CE89045332B172425D7D1443E8DD9043A12042ADD7EC106CB4DAAEAB310E5
-85F93869A1C519DC0E3CF8F4C05030F0BF7054C5859A74ECE7D6FC5644C5B84A
-F3EDF0C4B2DCDD0D193599CB3CA00464A90AB55674F884001EC896726A9B374B
-3A73AECDCBE06895E87FCE6267091C6CED0E779DEC36D8CC35184E00247AB90C
-37161FFEE7CABFD7499859042093BCAE22D6B811FD16EFBC8AAE6283881C12CA
-98E0792640063169F76B18EF543AFE7951E82EDB1DB9597F2F9C959B69943379
-CC7F5BDBD1BAFF7C77AD8D504D5F17E1B7DFFC515AC237748D33FB6B9D7DD903
-2F3E9768290A90A5FC5EA516A94C1885B17676D33CE4124CED1359E473305B02
-03C28731C0FC52B18FC14360C9494FF2A86AEE929E4022ACB78C02ADD6174FD0
-D35105BB00643F6560A9CCBB3E5CE2F79F0EB9BA774D27DC476867C991598380
-F77CC0444500CF43DAB8D729B31EA5A3184F178F82622A8B711A9CA6A770971C
-521C44969E814B44D8E1927C283E6A38B78D7C258630730EA463FEEEAB263838
-2A517BA176D1C137AAE7430532FFB0FFCA8BF110DECB42B1A7A9457A9ECCABFA
-D6CC11CD925518857AAA8498CEF35377CF92FEA77C09E6AE25DB2D09F1E355BD
-7F7F5C72A76315F3C2B6BEA1AF7BA5D0E8000778A0FB2C60FF677ADBA9156A11
-A5B0B7AE92DB368571C040FD7A29C3DF384CCC29A0E9F40FA385630D23AC1E97
-C15C06848761CC7D19D208BC115A6A2933056BCEB3717CE2488E86D0B0D6D276
-22B2FF1E77FA719372BE62A5B6E10D3DFCA57DE70AE16C57718B86C58B6A7F3D
-C6DD45D7559F9A0ED8889E707FE7622997F2D573F7688621245E0FB3D34A08C6
-40B72F4BDA0394CBF90735B9E6B3928AD56F50FEF9A5DA8B195008164EC03424
-7F5317FB8157C33F6903FD6D4B4728F82F1B02046DA16F4285DF088E08A136FD
-1366494E3F5AEBED4B48B3B9072BC811A700940FF4B2A51C0434ABF225B37BBF
-E4AB11F394332D66393420D4B843CAB6AAD9C32418CFE6A2A1260BF430E61176
-4B1762E3C9F1727BA47AAE4C7589E7099A56F5E1CB6BD64C0C8D026ED60EAFBC
-BAD1476E98F5F12ED94BDB1E4B0D8FE9E36CF40DA6F5B2E1BC41EF5F7CB49825
-EA5058FF7C49C5FA11F9F9F575AB4D8237FFC2573F94B695CBE9BC44A1BB26DD
-C6E55627BA16E5197CADA519CC7302DBE77F1FE4CF68C558D8F6E264
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.0: CMMI10 003.002
-%%Title: CMMI10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
-/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI10 def
-/FontBBox {-32 -250 1048 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI10.) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
-1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
-7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
-0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
-EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
-404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
-78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
-A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
-88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
-C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
-BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
-98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
-E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
-143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
-981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
-88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
-4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
-FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
-347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
-FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
-C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
-B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
-F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
-29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
-36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
-048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
-80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
-9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
-75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
-4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
-74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
-D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
-E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
-EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
-543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
-710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
-EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
-7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
-03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
-01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
-500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
-F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
-AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
-1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
-85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
-4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
-6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
-55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
-085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
-BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
-2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
-CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
-BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
-D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
-991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
-6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
-E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
-E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
-B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
-4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
-1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
-B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
-8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
-FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
-AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
-BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
-E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
-38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
-7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
-2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
-DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
-22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
-8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
-44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
-D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
-42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
-C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
-0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
-66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
-E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
-6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
-1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
-B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
-897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
-EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
-A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
-F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
-A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
-2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
-51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
-598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
-87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
-178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
-4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
-7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
-AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
-3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
-337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
-C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
-DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
-7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
-6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
-98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
-821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
-C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
-7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
-B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
-A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
-23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
-C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
-969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
-3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
-9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
-1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
-B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
-95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
-FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
-44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
-FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
-E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
-633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
-6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
-FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
-375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
-6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
-EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
-E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
-F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
-DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
-D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
-D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
-9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
-9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
-B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
-D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
-8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
-FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
-B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
-00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
-909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
-5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
-7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
-BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
-C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
-BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
-BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
-4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
-94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
-F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
-E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
-92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
-63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
-CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
-B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
-5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
-86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
-AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
-3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
-35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
-155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
-AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
-E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
-226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
-9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
-8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
-919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
-A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
-9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
-523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7
-88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D
-2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF
-AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66
-B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22
-CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744
-3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8
-404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84
-262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953
-084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341
-E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI12
-%!PS-AdobeFont-1.0: CMMI12 003.002
-%%Title: CMMI12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup
-/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI12 def
-/FontBBox {-31 -250 1026 750 }readonly def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI12.) readonly def
-/FullName (CMMI12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE
-882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3
-2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A
-7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541
-0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69
-987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7
-609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC
-182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A
-CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A
-1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE
-C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D
-3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6
-D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E
-E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200
-761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24
-8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F
-68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D
-10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4
-262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6
-922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16
-56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26
-32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA
-7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460
-7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A
-46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD
-754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF
-88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F
-CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A
-7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760
-8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0
-BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B
-CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25
-8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B
-D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300
-135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A
-C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812
-1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86
-07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39
-14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D
-7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D
-2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D
-639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3
-D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F
-90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948
-10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E
-1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E
-8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC
-D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9
-1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33
-9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875
-EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE
-DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3
-60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8
-FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D
-203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608
-FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09
-DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F
-2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D
-244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077
-31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B
-724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8
-F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7
-D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA
-AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907
-CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF
-01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D
-CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA
-287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605
-8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9
-9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1
-6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5
-7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C
-192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA
-AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4
-A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9
-50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67
-A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912
-3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF
-CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6
-5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96
-8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE
-084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7
-92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2
-AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27
-97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF
-92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5
-7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824
-5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199
-13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76
-6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1
-5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5
-6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83
-F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E
-A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4
-7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A
-9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817
-E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962
-AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD
-F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8
-0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003
-1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31
-7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E
-38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8
-5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F
-3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B
-B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85
-15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B
-AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674
-6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6
-CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322
-EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82
-A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D
-806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4
-461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1
-4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361
-9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C
-172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6
-69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E
-ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690
-356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0
-E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78
-7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C
-B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A
-31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF
-EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7
-98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30
-C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61
-AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208
-E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900
-76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40
-8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573
-CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7
-761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A
-2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138
-89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60
-D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF
-C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485
-D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8
-B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39
-AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F
-D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3
-866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD
-207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73
-756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7
-60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD
-A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A
-1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4
-A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048
-C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3
-03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321
-1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B
-97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE
-D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8
-4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF
-94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97
-201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7
-9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000
-CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7
-29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939
-4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED
-66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31
-14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53
-84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74
-6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12
-49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C
-224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5
-5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4
-A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498
-1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D
-5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6
-40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C
-E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B
-C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD
-CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D
-2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE
-710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45
-FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8
-FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736
-5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.0: CMSY10 003.002
-%%Title: CMSY10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
-/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSY10 def
-/FontBBox {-29 -960 1116 775 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
-7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
-DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
-511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
-1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
-028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
-1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
-3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
-91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
-E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
-11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
-C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
-D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
-B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
-93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
-10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
-7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
-B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
-491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
-F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
-019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
-915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
-356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
-5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
-9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
-3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
-FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
-720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
-D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
-BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
-7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
-DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
-AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
-A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
-0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
-AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
-CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
-0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
-5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
-5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
-E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
-54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
-E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
-A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
-4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
-4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
-038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
-B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
-5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
-B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
-A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
-2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
-CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
-455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
-FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
-16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
-16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
-483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
-67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
-3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
-1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
-93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
-051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
-8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
-8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
-6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
-06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
-84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
-D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
-DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
-0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
-8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
-C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
-754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
-1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
-CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
-1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
-153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
-905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
-617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
-8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
-98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
-53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
-888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
-052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
-CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
-A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
-07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
-B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
-10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
-CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
-3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
-D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
-849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
-648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
-84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
-2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
-2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
-9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
-B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
-D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
-135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
-EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
-C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
-7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
-4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
-9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
-050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
-3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
-C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
-843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
-CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
-B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
-3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
-19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
-FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
-17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
-8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
-CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
-F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
-1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
-4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
-2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
-9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
-E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
-8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
-BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
-04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
-C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
-ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
-4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
-84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
-C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
-09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
-D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
-56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
-035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
-FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
-CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
-B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
-F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
-CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
-0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
-B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
-33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
-4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
-F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
-2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
-CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
-88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
-17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
-55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
-A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
-2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
-406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
-AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
-60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
-C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
-5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
-822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
-94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
-D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
-343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
-894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
-DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
-DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
-8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
-A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
-DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
-E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
-DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
-4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
-5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
-02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
-88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
-60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
-71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
-9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
-A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
-AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
-F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
-A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
-AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
-EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
-EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
-CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
-86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
-AE5400775223E684BFCB
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT10
-%!PS-AdobeFont-1.0: CMTT10 003.002
-%%Title: CMTT10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
-/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT10 def
-/FontBBox {-4 -233 537 696 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 53 /five put
-dup 55 /seven put
-dup 56 /eight put
-dup 58 /colon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 95 /underscore put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
-7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
-6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
-14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
-0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
-3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
-BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
-D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
-FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
-556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
-8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
-F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
-B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
-125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
-A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
-4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
-56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
-E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
-15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
-2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
-05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
-6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
-04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
-C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
-70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
-4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
-A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
-62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
-240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
-69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
-ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
-121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
-0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
-D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
-0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
-D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
-550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
-CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
-9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
-FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
-7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
-E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
-50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
-2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
-9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
-44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
-49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
-385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
-8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
-6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
-EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
-E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
-C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
-484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
-4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
-0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
-6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
-5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
-1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
-909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
-BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
-CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
-2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
-CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
-EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
-0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
-9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
-D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
-21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
-7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
-52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
-FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
-AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
-F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
-067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
-E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
-C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
-5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
-0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
-CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
-2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
-E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
-56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
-F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
-E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
-0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
-67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
-EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
-CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
-9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
-9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
-C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
-327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
-F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
-60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
-A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
-B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
-0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
-1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
-DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
-55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
-7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
-75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
-E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
-8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
-F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
-8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
-D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
-54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
-49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
-CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
-34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
-1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
-6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
-DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
-E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
-4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
-2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
-ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
-3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
-97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
-FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
-A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
-639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
-D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
-E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
-1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
-A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
-F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
-5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
-4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
-664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
-4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
-35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
-1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
-01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
-5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
-2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
-DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
-BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
-39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
-C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
-99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
-7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
-D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
-6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
-5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
-6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
-F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
-E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
-39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
-7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
-ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
-6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
-2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
-1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
-06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
-5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
-288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
-7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
-759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
-E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
-03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
-6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
-314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
-74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
-906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
-673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
-A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
-931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
-CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
-E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
-4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
-2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
-F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
-E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
-E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
-251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
-7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
-46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
-E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
-DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
-F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
-507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
-46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49
-2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C
-C3ECC63492962B685F789DE4E796D1EE2F23B7C9F9A1656B85982FFAD6E2889C
-7A667DB07ADDE075297F9E5808A98A05DA37D8F23C62115D1C08A331532770B1
-E0C7B867A3C0DB7557FC8207C80F6E3717180E7D4F3D6B66C7406275A3206C80
-4CAB4DA1D6EABF67CB1B8D2E34F25900927BABC9BB12685D7D153D0960692BF6
-93BFCD7FD07158CECA1F10A5D75C8B02FB448147838490E80AFCBB1340C523C7
-E247273704AF5EFBC8FE5526AE4159CCFE773D9AD5893EAFABB4C4259D5A5BE2
-1B50B7377C8D45B3D39C45726F023EA52AFCD5C7FC6577880BEFBFF509D61A27
-A58C80AAFD09CBB71E088D7C414275F6256511CF4FE9B3F3E74D8B491F2E775A
-0495EC4C7C74092A337AF57451EC45DD1BE65EBB4F6F2AC454F58EDCC6B7AB68
-0728EBB958A1D5AED112BD7193A3047D23C8AEEAC26C7FFC1E78386C0FA6BA73
-DBD43E42A5C77201D4CD352EC3E9C496D2EA2BF7995852A50B29D3E2B16F9DE4
-A769ECC02C227A8487D22BE8EBA57308B5992B9433D88982233FA0C895FEDFB9
-10B63714A2FC8B9396F9D625DEC3240EB2AD54E3F08238AD01C665529018529F
-D078C2C287675D7315CA64E907C3D428ECF2F3283C5CCE860EC461D403251DC1
-75E7ACB31F8958132F3D57AB5E34F05EA9F5042786C108E51B07635DC743D063
-11AC9348380109216561C53A74F4C3D595426A1A86E9150D3A9EE3B09D7670CD
-D4F33FE94D92E8981FEAE708E978EBCE5A6D17B4A1D1D9161156127EC0AB5B6E
-22B801EF92649437D89CE344D6E4C92F942AC811710D83589A03AA83B229D3CE
-861D48CFA69CFB61BF3A6176FCE2E406CFB30ECBA8F9595CA3405C8F0FE23DAB
-A06D1300C586F8DBD775F22F2368B6714FAAE85868C9EB6F7548E63D6E08EAB8
-B6764FEA41156D3FAF9BCFDC75113B8E73AA4F31F475BE491B45FAC197ADA3E1
-57E0DFC05232D2596F7B69CBD593181849FCAD6FC6CE7217D6C6CAA328BF57F4
-FBEE4E16CE5035383201CDE43EF601624AA1E9061821345302A49C06AF6B003F
-14B42E6CE14F978F194F0502B7E610DC069791E52CE628CB5452BD6080C37F1B
-0A7E8F6FB6C40329A70AA824616CE893FFECD2EDD9F8EFABC788BD415FF70F0B
-F584471FC7DFFCDB8B5653DCBE2D191E1BCDCB83FAEDE288C9FC34C6D35E6738
-64F02C8A76BD7CAD08F318050E711C1687BB8C208C8ACA101470AB06D4975F82
-65EC88DFB0CE26289E3840E8D3E7146C9A03F3CE9D6434B04B0310308C221E7B
-8D8709D363DED43CA5FF1C8CE6CD13B5906236DDC75FF76DAB5A38765CADE270
-3BB52ECACFCEDB884D1453E01A9653816ED352AAED96DE3D2894D64D1FE67656
-57E1E7E51CC85CCA202965C0AB8DE87E729BE4D7F1C631B6DB9F0C901E83D397
-791E4DAAE3B96B8C7AE44F70AAFEFA1E8FE0EE6A8E811652DBB48F2336AED844
-3BFC598A713C268C171BA0331D042C38001800A4C8C647055A0B064DB18A9D3A
-AC9798AA8208FB2862002C164D0FCF6FC38B33F2AD7E48C29D349583E02248FD
-61E03C71E686B96B4D4E0124EE78FA97082369335AAAD3429F5A961BF05A228F
-11A453C158B731A5805EDA613947AE9FB40782C1077A71E5C95228916E337821
-DCE43615341DA9FA362007D0ADDAF128E4E336E0DC8190C5CE43B13C27519FD6
-8638AABF83D71DBA3B68D64A5E62CD663F9D79E56AABAB474EEBD3B4BC812DC5
-165D4777602F732DCC2A342BBDBD3215CC7360DE6902096DADAC86D9C2D17F9C
-23C68E22931E91FF5DB218AE2CA8EEF4F3FBE930FC47141078B466AB2C564FAB
-EA33AE882A540B806AB69CBD2A8E55D3C26BDF7A0FF87FB47A2839A2A7896502
-47F1C68F882E38CA6994D57D8EBC8F15FF8E091E3F1C87CB83A65571ABC8BC42
-F2D2E63D7D777AF0C2DD7E5BAF96F20E29D2F08BB1290FD43DCCB7C0C7F7B5FB
-BF67E1289014DA74C35B6734D3618489DB97DCDE55F701A63A70E3F59A3DDB7F
-C6A25976EC99019C6680BEB374214E92BB04498556D84BFE289BF1E02E07486E
-91F9E5E5FAD11E65FA0356054F352E3489ED93DF3A241CA4A354EDF0C5858517
-4C7B889D256FF8721CCC80D14C7B40B6CE001EB5EEFA0E2C991EFA6B80D1E6AB
-19B86AEEDEAEA08876BE071C01D801489F0775E46460F6DBAAB3F2C2C7F95394
-4CB70205A4CF5DF4CBCC45E8FCA893CCF96BFB8D08F2E439DD00EB511CA34AFE
-22AE0ED77D48EA49EAC1E2EA81594EBEBD0539801393C118CA227A95968FCB1C
-0AC1B08AC36A6CAC79E033E4283A38BAA3F3081D9AF5108E5185175C2D1CF1FA
-CCCBB612308A6A8ED21199759C04CCCCD3BEF1631AF6EBE4437900A3A581ADAA
-3DEF3F55C84532F7A083D553E91A965A732388B1440116903A65EB8D151C7135
-AB91DDBF69A6386B15C104868DB82ADB1FAAD169531A04FF73D89C8ED2356F8D
-6E6EC6D1476B8345D340D8B6827760CEF6C191E8843F12F3772EED191E596728
-80651E10D1B307DF76A84028EA7E64321F59B4EB9149B347248517A513750E53
-E61A74BE0CAF41F18C7AA88EEEDE0ED3D5CD84754657A92669CC9BFDEFAB9CE8
-11355329988AF84EF116B0E2F68451E799EDBA2007CDF555637E247F5E01D3EB
-CE40A4264D275863AB55D61C0533A4F49D64EEA8E05B2EB93366C64FCFF33D6B
-718706490AE470C0F297A27F4C1A269A3E9B75E9EE8CBEFCC44FE045B62B66FD
-47A2CDF0F19DC5210B65EECDA51DA371BE25DBABB2D13AB45F3B7BCAE838E26D
-B5319199372E44FD4BBE1C09AA6DB28CBA5D2EA7B9486B36BC7613A0F0246543
-B3824B039C624E2A05E4D3E10656D67DB6D7E5B4C2EF7D50C3A6F64CB2F35563
-43366F65963EA1EA05FDFEEF8A833B17DE2F15F77E8D1545EA1AF87EE6F50A85
-ABF31B62E3BE1DD013BFB96A574738360B1A6C9F649FD44176F5D4FC98A44707
-DCF14B274F902BC4580FF1E61176AAA10879A94A8BE4B7B8F191B2E624482DCA
-F73DBE465958ECE3902EB75059E17F3DCA96CB235B22332CB80FA23DC537231E
-02A005794EE621B1814B612EA22ED5710DDBE8F6616F1D67F8909018DF3377FA
-D66C42BD2C15D185C7B9CE30E8B27E6A142E89E6EA90FC9A02A52F5615394448
-923B60EE0CDB61683D6D6F786A20316B992FA8D6BA3738BB66CD55C1988F572E
-627FB1ADE7B5D74A54A8AF5A621AEA30899A3B1D45D75252AC88A7933ED97847
-B972F944716D8664A2E2E4BC4C28358583BD960AD45261866136E0A626C36842
-93F9D95A23EC5721F7783BCEBCFF7433D1FB87E6FCE3F16FDEAE6A34EC296E4E
-BE5A6B30FBB47562B4D2E8A1B3FB5F2AB273CCA2B4F32353A51541FD44E76060
-8889B4A454C42A159A0239B1E451987846DC2B5A1795DF53458AE0995EEA0521
-867422FD27F7DE1F177F9DDE065C882EB1AE2ECCDD5646D93B7FC13379451C78
-DA50030751DAE5776B8CB90DC02512BFA79391BF8B8BD3B7E893FDC359A36822
-536F79289BA4D82FAF112AC06A4EE34C8499CC7AE22F3F5DF7E096FC1748D1F1
-CEF00A20701BF1E476E19B8C904B4302D80D18F49E30DAAE2548EA21BCD8519D
-F1EF0D99125463A8E9B5E6943D1C18E1FD1DEA5073B6DDF91CC8D4FABDB5446D
-73F0A0CFB4BF1C4C74BD32FC0E299E355F3FBDF6E0A75285E2EEEA66E4EB2513
-995F1117FC751D55BB5B66CF37573A8A932A34AC29581D46D5AB5ED21A5C6AF7
-938C400AB449B328285B211E54FB22F2620E1908DB3F3396F91C5A87C4C4726C
-C8A54D630E9F3D878592520AE5E5B53668BE3FC3D1E4D263FF5C6A84BB5D55C5
-467BF67904172EF0CE6772759EB0F75D2403F8A0B40D6DB9F5D74C3A5FB6C30D
-D04B316A8B11B9611743BEA5CE92D8730E577B13B84283BBD970DF44BBB87A80
-959D4303F25033127E48173120E3C3595D095843F2467A3473C498CEB9075A20
-5DBB9F82DB7125B631139286D6C5633F94C4D5097EC8B7A8D096DFADDBC89C22
-135440B7929C0724EB1FB9D8C9D5480E97BB4606EE6976418A96B42FB0556928
-ECC51275CFA1D0ACBFFF46FC0B04CC70CF302406767C7FA493DF1EB10A5F9CEE
-B3AED9CD32F93D862FA2FFCADB986F443F088DAFA906D950D3257F24C64DFEEE
-C48CE69284FABA482D68FF726EB83685DD48052F130E18132954B3E44FD3E22F
-B39515841BEB0A79DAD72984C39DD4FB8C4FC508AFF5B45ECB4B23789F0EE906
-9EABEB099EBC24D1393866FD9F4CC79BC57C87D5F027501DA894F237A87BB9FB
-B09039B4E9CA8E767319630FA2CE444EB878069DA89D36AE4D9CE4E7F8ECC5B0
-06D85CF8ED33138F3F7D664E275D9041BA70C6CB4F9BF26EC2B9C5EF2BB9AA2A
-B5FF38657170B736D0A06F148970A385895F4C2F524A582CE0E224E778585652
-7C186BA249BEE06DFC457D728C6226027B8F92A0DF24E7F9E3A7AAE93FDF6F87
-E694DD95CCD0BC2504F3D9087210CE220862D34139D33EB505D90D39E7DEE3D9
-4DAF699231D57B5AC3DC301B2DD84F6B64D3EACF5D0B690D0BB7007693A72DD7
-949C98D8EB9035A0ECECD035CDC6E7B8A007BFD3EB3D8DFCD130158E473E636A
-3D00F8A2183766C422991EA3FB1A6F5DC967EF9C8736FB190191154216B7AC75
-F5E269CC1AB5FD8B1B8F1632E9496BF02CECAA66532357A0DB3AE03D98351FF7
-0A2AC142089A891607B075019E60BBC5CDB1AB6E31DFECD6500C6E40074023DB
-11474C87E51DC00983F99863097050A7E428E3BA47F9E40C9EF1B5F0590217A0
-A9DB1CAD41A5D420F20BC2AFF0A25BBEA832C3128628C241DF5FE78884C6ADDC
-E617893C14876F6330D6951DD113F3C4F8678EB201A60F4D9C07A3E29D763741
-10751577429E325609A544F60D83D0FD5D44990D5ED78A02BDB2467C8815F792
-804C8C32AF13EA9476679DDC9504C39846228B064450180C894451A8D43597EA
-50C94125A083C5A0F2E38E993B049C75AE05949B5B09DCCE5EED7C91601BD79A
-EA08883D8AA2D08C9D5E296AFD13383B457231E8797E5F8C73D0D56A1F7E1ACD
-3A1C48486E9CC4DF715366FAFC79A197595F18B60FC89EB02C9B8136131137AB
-222A517CD5F5797D6A65BE553168878325162072BA5D719F3510639FDBCBB448
-5DFA0B1774CFA961558A0A72D139AF0D5B42EF7897F697CB5942DB7B2FCCDB9D
-71472A56B663D2E55A7263E24137165D2F917DCABF63814C818CDE0B03B6E961
-9F220CA7EC58283B36F3B7AC37F415FDD00C248DECE7E9B57B07D0DC7A106C69
-55BD5F726687151CE743BA4703F19721E773F3BF02E67130F273D35DCF38642F
-919D3D0CC9434EBE1126FFED9D7D3DF75B2BBE10CD30D8B8C0903CD1FE3ABBB8
-BC90B87AC4478CD688616E797B2DBEE120183ED696226DA703C0CA001BE9D46B
-B306E7F7F63BED6FC610B8A89B00A5A95701FCC80D83C50874EE764B7C487097
-DBBB0146746FFE1CBFCF7D7195F08231FB46755C1DF964C7CCD803E7E69722F6
-9D5B3CC4890090A74AB2121E464354F724AB7D39E8DC2234DDA3674EF0695148
-63176CEB812F168A0A7498C96AF70A1A7FE2769A3E725883D789ACC8C71D0278
-CF3538E7AF786E5F241B9F91FB0604DD3EB2E444F548F5248F65DF7D175A0343
-DEB9AFE845F8975DA301F1A4C4CFEE3234AED965B423E4D203C9CA88AA967195
-B23B4CD359F7F4AD551BC2564E677FBBAB954D0C3EE386139F7F5A4B1DCF7FC7
-7230BCF476051638B337BCC8F5A9145AF38D4987A65FD5A7E8301F4B8D06F9E5
-B26EBA34CDB951F14C7B0BE1CFAB8098F64D529F70B452492A1B29E03AA1D0FA
-B54AA53EDD3EE3F74E230CABB2B94FEBE4913EF0A30E0C4F27A7E29FFE700BBE
-D43233DA1A0E4A32B0EEBC1B2F9FB7F6885992E21BD1BE5D912F282B0FCF1EFE
-62013C4B5C1CE5B8AE189B28747FD30961A3FB1C58C700C9119E592B7F52E24A
-F9AB44BA92AB05E2CA9CA2C443CC9E7E0165D8345BD37D961D945027E01DDEB1
-1DBB608A3A7995A9E99ADC90970D7F4EC02EDCB7D32AB877BF4797F38CE514F2
-C7F43965C3135FCBB4D8A986E119C562E6973942ADE968B09A36DBC5391321AE
-97265D39A7B7EE00ACD0661D426EA4E5E8114D65587170C73D3559258A172128
-5CA211EC04137A6227810826C10E676E9595F9880C0DAE45050EBA9FD950A591
-16A39911D102EC836D067418E3FE7B361BA40987B660717E4CCF43CBCF5D3668
-6AFE35386A12B9992F9EF7CE7A326A8C02EB51E90837A75A0B781DA6516F96AF
-F7BCC0503C01FF3C7DD5B574307D454E664CE49E37E01EDB9BAE51D41BAC615F
-08590D7A5CCD633E8EB051D8A4C066F0D63CBE9D2A0A38CF97401B541668661C
-7ABECADEE4BCBDEA822919196BF14DCFF9CD143FE5ECEE374907F17ABE47AD79
-B88BD1B6D6A8DDD56A95A2DAD1B2D3C45D19389F9CAAC36CB03641BB8CAB7C93
-69F7418CE2956990036E3A8BB0E48FADB3B56D08EBB536E3A2D176159DEBF462
-295F700F66A6917DD457589CCE6B33F498859C33E35F2D46336776BB31686529
-B303BA134073508E67ED9FCC2023873B21EE627CD2DFB6F4EBCCA944C3AD2B92
-4F9411C31ABE2FBC265D09AC7315F74D393AF906055A304AD1636A5CD22D2684
-83BE15E9A035804414CC68914F260510A30219E72F1C4D63363FE03C220A44BE
-90009E869C2DA6D639759EC8436096B593A917B3B604271F75C6941DC839EFA3
-0B9A58F85E67EBBD0895EF6BEA57CD716017EC0BCF009D27434156CD86F0B768
-175571C451520F4AA26BD45AF025C230BB98A9350407BE5C1F1C71F83517E580
-7F3A2542F4D6DFB5BA77D93116800A66D29B916F2FC78042068D44A8D6620DCE
-97A64BF9A7A488CBF302A6F0173EF1350FBBD46E307FA637AF4600D643372835
-04F98F008F3DBDF3D584D936FC268B799340D8647F0262B3C9DCE41687A8CC27
-0D6B2DD19FCB4E3AE162CC44390DF0D2A6A3BFD0DD5156B5ED3C031A371A24D4
-4DA4CB9B961C5447242055FA6CF13F67C155E6F36215628736704094836F03CF
-1D2823E43F30B68B4C0A95EDE5356C2654F9782FF4CAB180ED7B362914F4882A
-F765062AE02E2AB49E3FA86FBCC730849CE306949294893D2CF06DE88A7776E7
-ED162FAA07057BC0C1F5FC70326B2884A5E4685505E19DA512EE2C90EF91D7C0
-13F41B468ABDD40FA91430DE8289D65ACECF7BB7A4162949AEF4BCFB5B329542
-31F35AECE5E5641E9217BFCF742B8B908D54431CD98DFF97989F901C114984FA
-0B2726174AB60C6415A71CC1373AEE18D5A29C34C66E8822C2C298E912F2E217
-44B52FBD94B98CC6BD235322BCB219185B4273195271FD3DD5625D9483069494
-526694DD7B5632E9FBE1E6C71D50781FC5E4C578579CBF97288A9E92D84B6C5D
-055EBE77F09EF26329C9D687E89F7307650AF8E45713B65CB92C6C356EC62F33
-DCA398238DED9E66283D790346C019900C3EC090F97A9153F5E1BA5460B5E4C7
-52C9C90BE107B5341621E6D3BB7EB0F2AC3D11595F8F6DEAD3B9310B9F706A3E
-A3CD958623CC42ABE4E8BA63E102D56838503B608D5DFD3DF3BEC35C7157576F
-AF584C90AEB1012890559BAE9C90E3935CC1EA4E913FFEA421ECD35AA6F6C089
-82078877FD89A115C98F61E0999ED37FE634B710854AFE360201E858FC4F10B4
-9F3887390A579E01928F8C5AD522DA87167E6F1D2153A48397D23A9803F08478
-AD3ABCAAB2ADA02F36C06FA7B262AD0BD026E6500FA6600D71BEE0A365DDBA7D
-71A812EBBB71766909A02AE6DE30A9EC76F56E17D811B2EF177CF3537F1A4CCD
-5D39BA029F063080AC2ABF0D9EE11BD2593E3D637DC34D4E815BD6664FEA4969
-8F5E128D85484125F78AB2E16BB78E605A389377EC9E1876E5028830360F668C
-C77F377D1854ADA97454DBF45CBD2F10DBC4E9C6B29AA8A875B2012441653008
-F5EB97CA0AB351859499FD9F5ABA5464D1BF21CD3D3C1277F8B9796D98BF4CDA
-C045E7E674DC7B472D05ACF65FDE581C93A0B213C8EB8163957F28627EF14A72
-6049530168A4E11D2B7F4FD9391130007C67C4792CA94A72B8ABA43CB4B708CF
-DD0C96BE177380FDEE3E46DD584FA820C67463CD4031CE04652993FF3DBA19D1
-D0A520FD0E52DD5BE265CBADED20CE377F90F876998006F67AEDD30E3E8CAB3D
-4B2518556A99AA4FFABBB1E6ACCBEEDBAE2BC1DBE9D8292AEDB8E3F103DBF748
-D9E0C6C3F0A4A203DE481A462379216B3CCA465A41D0B9B5090206D797D3A3EA
-6E750E5C13F6DDFFF42CA7F046DB5699AA2209A038519F515B4886AFF04FF03C
-1DB46BCE65DBA0C4352D85F88E4AF74FC376B8476F610846100AC2A5C1CDB880
-A959EB2E020529E3C8456CDF94C36581409E8E1789B2B45AFB8FB541D431A748
-35443C33F1E4191B71A3996F53B98722DBF5E30717629EA737E4EB1F7F3A0F7A
-C0879729840AE4C830E3A2CC3ADD62C1145BF535D121E3875F12228B90561B82
-EB2CDB4F8BBF201769BBFDAAED00E9CFE295023034AADC12C217B0100CE8055A
-8D2DB665537FEBACD5BCD69D50F72DC60BE0DDC9AAF703C8041A3353DBB0244C
-A8488514C101E4D662D394A84C5B9048F2EEFF7931A3BDEA5DA02F3C4D564F1E
-73DDC5FE2CD57134C1DB9468A2DC585717F65E68CA931CC16F0F7887D2BF2375
-FD28B4C0D900692E944BF5710273E30138F4775422955D09B22B738142A37FCD
-83ACFD05B6AE9D17C673B24855F74FE10844B5ED73C25221623FCCDFED42D395
-DD426D6EAF323A54510021065F91B6248E1D8B0F466E3BE65C203FA87F98A297
-E5A95829A4E0A910FEAACD69F6FA81A9AB404778AE7C3BA4DAECDE05C1F86749
-66BB8107BA7F1AB76CA04C8C00262F0735ECB6D815C7B2AD937BB50275E1617F
-01F89AC79015E809211847CACEDAD713FED01470469311C9F6AA26EDA3021D7B
-A1C9E4E0F3D073B66BD9C3FBCB6B97FB5C48991C14F8459AAFFAEF73F83F4074
-96D705FABBFF885B801AEF577C84BADF4AC26B30A94B8C54B1229E666BD2FF2C
-A17D7743EAB5AD6E1C2A38BD2A7FED4300A81D982633440A01C55331895BC45B
-4B9DC7C0F43FBE75C02BE6ED47836EB92D7B6332D9867DBEB2F015C5A0F3F522
-20E262070FD52EE2BB71BEE7B0113B1FC80054ABBF13A376849751AE61ADF535
-4B95D1BD84934DDCA41015CD6BB80C324AE8B2772B073C437714B2CE80E11F2B
-76DB0DB35372C642AE7BC605B52C844F088CC468FCB9CFB13C6A4DA589049160
-2E1174520BD195FFEF8EB36EE6CF7C7138ACD19BA70CD00E7C6A18E0E0BF7C81
-295CE640135318682A1A4285C68B52DF7F950CE1BD26F6A5A51BF6C6766D2E66
-423B44BA965BBF34AD26D5A0F284B9D9E275AC18D80112EE8AEDBF5E2A6A58C2
-937E25BD76655873F1863056E3AE2325CE6F463D89A6178E3FF77351470579EA
-3BC3F74D30EE32192FBF71756BACC7E5BC8CA579247276A109093DA0F830A790
-9A3671B00269E0D361D7D08A09920B895D1F89346FF161A125E5892DBCC7F52A
-2848001F31BAB732EB4E00C976320F04088D0204434C9230B3D2D276A3481389
-49CC6E3FA168E4157858C7C6B50A8773F7F7625104C19AD63F2DA9503DA5ADB8
-8F8808FA9BC76E2FAA41B2A3BE135390C866A8B822C6E0AF049D82498FE60CEE
-529477538C36578BAA7C843BC8FC8659A1F685EF19BA5D5DC53167092562EA73
-BA7FE5D104E616DFDFA9331F7D6C9109FE513CD31940D87D0382E7157CF171E4
-A9236D5250DE6BCF0F246C5680A8D92791CA155AE942C1D8A77A9DCD88CF49B3
-663E993B0B1389DF2DE4420F29C0EC1FBED031486AE43137C68D3CB178B44D4B
-B181F63B11D2A21DE4A1E748C530CD046643BA951A81B3C0A5D78F53DE84D930
-033793C346BF6F1534037CC10E4468D0E359D6EC741C09E4A6EA4D8CEC41F846
-81CB64FAC81C877FC43DB4D00BE2D0EB06A80BAF795333376EB46FB942D38E90
-F3EE4A987EF66419E7989984ED8B36E9D936FDAF433D1A26DBFD21E69D37117B
-12426FE996620C50B0CE91BE8814410442FFB26273FC1F2C1FF4C9CFD3CDB6B8
-789B5DAD9E9E95474160F8F293F2D70ED25850C6EB5890D6BCED0B92B197C3A3
-431F2098DAB97889705FF519F48284CE07ADE6E6B2935BEE3BE6143EFF691949
-17BABBCA7B31E6F671DE31E5EF9B63C4C655460FFE6EE62852945BB1138052CA
-35CF43563ECA3587FD9F8290DFC9AB53D599428841AE1C67B22CFDA355FE092C
-252048396D0CABA7154EE336D1F021F4C0CC7C3EF47C33407D8F64741642DCDF
-C9B4C3B90A8AA883A327B95164F17A73F8BFF93F9C9BC8CA3075AF420D4A68A4
-CCA219B3D3BC5AA25486046277CEE16F512132FAE2D02CFDDCAA396083AF0B89
-591C79C211F90E5AB011E52B36827C7D3DFFDAAE45E196F3A37C0254B076E857
-5ACBF02204E8B1E01FA474C2CE29F8FF4B58E4A9DBADA84ADEC02749830CCCC4
-2ECB73AEACD6481FF0039067C298760A48C561AA968666F012037DA102DC4B7E
-450DB77AB426236601E8B53FC2D483FE9C47C8C645539B41D84C837E1875BBBD
-963D87D00BCD894434C466F39F7CF2F1CD1DF157A8F096FEE3B05E250290C74D
-8683F09F2CC02DC1B61149332E829494EB03469353948AC5AD5D84F04B4A6BFC
-C48A9455D3DBEC6F970E72A4F1BAE25D729B32280A43D16E0D780DA82518F0CD
-D7FC7FDBF93310A5C1B9CA867B436CB37DC30328966F8E6D85CC3BEE3ACAAFBB
-7AD796D617A6B480DCB507A605FD1347A693FF85C5DE7E864694EAB70D92FE56
-2E5BD7D673F3CD0D83F64192AA679CC947AD12FFC7026C7082AED8441A1A4008
-1761C4F442D8366B9505301526445E821C9713B00D6462E0D1236A363B9A143D
-5755999AA3254174F5401F03592133E2924D4994A97A620AE2A307BEDB04D9DA
-92D617AA7E1DC41B9F486196F85B0F9D4C26F4D67D74A3F8BE6A5E05F302E15C
-0D74CF24E14C4BB5625501A6863B1EE19032C3A28B07899B21E0A8DF706EA672
-D9DD51A2F5027A99E2B58E626FBF060BF25200B484060450ACF9C64318A86F69
-990ADC813C1EAAA76830206527AB4240EF28F04D538E98E31AD943D8B155ECCD
-98C39C82D7E43481202EF89CD4F871D3C997BA62B8DDF0CD885A6576CF1FC080
-412A9B9BF9FFCBB8DE22D63F6DDB9841ED350AA719EDA87A18DF0E776660023F
-FEAD68C95A159E5CE4731AA7FEF11A62FEF73CF850142CA18B29FD4981B2B461
-AEE5B1ECB409E9CEAB2F2A83940E79FA805E71646A48C120FF056D978F9D931F
-D5CA93F27B4855E6ED4D7121A56B90D9463EC6F9B76F4A262313A08E76BEA626
-3D33C83EA3262C03B5ED7B4C10F687E88F3FFE3B5F3BAF16F25003A21432826E
-D1C17D67172C5BD9B1D5E3DCAC4C14E0BE2D194F2D42DE37659C704C518E749A
-77E1AD2B11CAA8514791C9AD8DB8FBA16905349A0C8A176620C23342F68E8E27
-3880EBDBCA5F32FAEE3680092934BC7243500E2DE3A22DD325246F39ABA0F354
-36289AB53D71B147C85088703C683C1D96F47EA244E8513814769A7B30D52CF8
-49C9DCE11E912F7BFF5CFD25BAC588E476C76B5064D528381C6882CB3BA73A8E
-C1E605B14304D5BD1A755DEFE9C4D6D5100C1B810C622DF4990C4CFF82187FCA
-8CE5A717B266D35EEA7C2719E3AA0829704B3FDC4B0DCFA34E1EEBFB9B8BCAFD
-7036015D1D26573C8DD513B8E617746F89E6C890D11721AA61419CC3A3D256B6
-47E79645560AE6FBC56725850C60D68ABF8FF3514AAFE242CE44EF87F851E991
-C525AE6E8CCD5D2FD7E091972E688B826CCE918852E4FBF9DCA5AC377F7F0195
-8CCFA0A096C20318C5BA8628F1B3C553C1E0E083F24E22ADE00B2DB1C8439E8E
-F2138E45D8D6775B2910E50B91A04CB493A0E6E3F1A971ECC92E71F3E8F14DB8
-32CD332FB4C9D0C89CF1F1CCD77536DE9FA04DC3354910E3494B91659DACA558
-EC0F8CCFB7E0603570FD5CEE33FB603405D211B6C734BD2DC3378370B93087DD
-3EBD7184464B513DE3164CB0C10F5BF386D1308FB4AF8C26308C93ECAEA20C12
-D9716C8B29FC3367B36C77BA6F0B40B6220D70AA4C699FEBA3D9DA0655ECB2E8
-74CE90B53D74EDDECC270BD267886768DF920E850FBB196080512A0AE489D11C
-27D0DDC0DE1456EBE8376163C48ED8899E5C2BEF686464ED53277C764A1D8D80
-EC7812F2BA5B7E65349582CF436ABFF6249B4141EC6F21CD7CD4C1A23C8D017C
-DB296BF885E5B09B8EB36F9799E0355CAD64B60611D64001B91FF15FFCCEC35F
-4C4A4FF37124D8497F0508E52BA7C490F2481C833A8072A120ED280BC79336EE
-B03F07034E8EC04890779D7D222FDA4C4A282705B8A3E66BD5D96FABDCCFBD8C
-4F0B6AB3CB420978C2DECAB2D3CD19334396397432D8577CAB85D875E3ABEA8A
-51A1D8643619BAA52B7DD571939A2C327955DFC03F61527EC239E696E7C0B78E
-73A6D83EBF19244882785A3F582161D4492EE515C99623E0E0E3FCF6E38B4721
-7EB379E4491CE7343B593A8A266B83BE2A2277D5CC84335A776E658FF85D39C7
-9612211B3BC71E2B8D85474B18957807E746DA079887E28DECB9B3CE7E94669E
-EC25FF3035BBE99A7E2314FF4A8C4CEB5ECDDA4999B9B2500B46028A9B370B91
-61F6EE06F9E4C02EEA683FEE392659CDF283E39B61BFE99DCE8F30F5EC630067
-42D44AC6F7647AC4424E0C4964D8CA25CA6152364AD67638F2B7397413809F1E
-24F916933FA452A8683A953462BAC73128F890B07E9454FB4059D69B5851D744
-AB67E7C0A61414200E9813D685BC535D2B621F8C75F56014014D610FFC4C56FA
-06A81021A818D6D368EEDD862C9BB334F050F5502BC63CE2006DD12273746CB0
-4335C8E25C462E4DEF12DE2C80A2F25E81A04AE22205C8F61EE20636C2E1BA41
-00CE04BC0FE7A2128ED163112F69BDC089FBCD33545A412E24F1B885A315C1E2
-361FEBAC883956CFC4F9D2CA2998A8C882A678AE2F282C8E03AEDB9EB7D4F471
-55A5F118459A68150BCB2BD96FEA71221EAD5BE0B2CF5C80895F8CC2954A670B
-32BEFAA720634E28A6EC26B3F87C74AB7EE8812DA0D25444CA546A29CE234F7D
-09BE4F16D64B517D6DE603CCDDEEA0CBF3AA4E01EBC780B3481F8666B11B1C75
-C9EE8989EF359CAE9A3B90A20B946F6FB3E178A459BF425984666B617D9BE899
-1DFD5E21DDD66D2C064ED0FF7DE1307C3F0A720E0A97EE937B2ACD5518CFD8D1
-CB354D53E09E7F5576F456E0D48A5B17487FBF7418509B2E3B64C9B55282C9AF
-034233818D88FCC291FE5CDF13DC78D85AAE8892407AEE591B1E9AC0F54513FC
-BC04173FE429E9A56139B59EF1E68966418316B704C87F1E6A65B71776E90790
-6FA2275B1E008FAA1C24F1A81C96AE91620C54F48083A32C22DC34A4F3DB63AC
-39A3A61843C9D5F585AF29A534C5D81A4CDA1C29EDFCF2C85937206EB4CB1ADB
-B9616941A8E3F09E5CA686AC3C48D822A9D427C4A40ACC498E53A98704334CD6
-0570E591AF9C82168F3640BB70E1ACE1ED7DB6394603DC325CBD657A6333482F
-B53F47CE8207A268408B4C514C7BD1816C7E3B39262506597110CBF5B2C39863
-4272EFF639940302C2576A440B8D6D5D42DE3DE12F9A72DDB062805155DF7831
-18E426B79F4DAC9CD8A7A770CA7AD3CF6E980F1E3B970C9924E037F238A1D136
-EAB6923A8777D40C107AE9C94F6DF96C7906DC4D3F316517461AA237A4524E29
-044C718C69A97B882C85825DE80D2EF200A80C4ABED634374F207D96F86CD82E
-BE667AC443760263ABF558A985DB39268FBA2E269F8C2FD530EDBAE11F8B675F
-04002CC02F06FA8F0DD337CA95BBE3900CEC3FC4A779CC786E75519021848414
-C627B78999A01E4F1DD583A59F5C214B0237CCAFC61AC72FF1EEBA89290919B1
-5A45EF986EA5BBADFD24A349ED6A045519F74A5E562088FCD777DF45C6FB3453
-E4D353C5743FFE7081E04325E7EDA574DD56F297527EF7DABEB9F743EAB4F519
-600668E4454EA430D311BA1FA97D1C14DD3404B460C0F409C3E39CF779AB4F1D
-17B67BC88081D452039777E5D8D47D77D324EA364FEBE33D7B1A08828CD8FB05
-3DE0ED55F3E530AF1633E458852B735929381835DC00DFEE3D300F52896E5079
-7297820CD077E2F0E0ED088584EB67E64C99A62CC8AE9A9B3F5253E81A4BC631
-BF7332968C6C2CEE6ED5A3F1D2E1DB8D362A7B09BEB329B43716CFD997BA30D1
-074821847E87737B51490856228FFF070B7FC27DF6C18CECD5FC2FD568723BC2
-E9620AA94742606023A015F445B9B3BC89B5AF91962C4E659B2CAE981E4637D9
-5B5D074474973DBEDB804148DAEB0CFF939C282918A219726227BFEF91EFE98E
-F274D8A8A0E32EF7301BAE01A83E7FDBEEF87D87BCCEA23BA55F4DCE15F0E05F
-0EC406A4CD62E867A7CA57DD3D019BA08780F859EE584313D9240A8C3ED2BAE6
-9D5AB6B07424651AF5ADE40A7673DC5B3FDA0CD476DB9BE966E696F914D22014
-F46330ABB20E75EB0DB3A5A727CE54E08B44842F2787CF6BBCB7AB230EB5436E
-08B1D0D9F60572CACEA793A91F90C836F83E022F3C8D648839C630CDA27E74AD
-8A91F120882446E4AF11C73D525EDE5C005649A880FDE689467CB09A642EA5B8
-3C0DC11578DAD76E7017B88CFB546A081762C963DA2480430071D8A123DCD6D8
-A350B33C66E11B08E6B62CAB222D160E6C48776913331628DE5F0710F87B1C22
-C77F2D888F5C01BFF9879441A81CB7992A2BC042013008BE382206D45DB802BF
-BABFCA10AACD0E4FED2E035179BA5134073C1010226DEAF9DEDC976F0C524625
-4C4ED71C9F114B381AF4371A8E95352B648CA9F681978A49093A6C40E338CF75
-49F7998CFDC29670BAAE16189D6635A80B6793AB9186B66B8814BEF45B359F41
-EB3F7AA1E75D8D91373EB23CAC6E9A2C69F153AE238C6DCB7A4A4326099572D1
-AAE06D49343427770F37ED208FE983DFFDD3C7E32E0E9281578E115ABAA0EDE2
-0291B95A050B24D486D5F2CDB12F615AAE8C56C6D07DD22FF592BFCAE7A01E67
-333F90B0F07751621B32913A2DB059CC00F537425EA4EEDB491E595EF709B414
-7634D80E767BAF9FEBC1FC41D0FB3F5D162F66311F416A93BA6301ABB5AC7173
-7CBBA52D93D5031D1B7F2BB8595FA1C84E440D99BBA7E8EAC149DFF18C7049DA
-2788E3F847DC10DD9439C584D0446309206AC1C1D2A172BE0A6C5D8C5C0DC137
-CF56300F4156F86A1F4D502A0001BCFE8E82AA4212FF2864B1E081B3504C9ED3
-A508FFDB26EBEA894C33CE7B4FEC09F475F585B2E61599B4FCF4EFCC08B48CDF
-D2BEC7557520C0DC7A69A74CBC4C765025ACB960C010986BC5E2A96F5DEE58F7
-D05BB869712E6E66AEBFDCF2F90530B4262FE620D9F8D66B352A529488C005BA
-C3144B6A47053E9975DCBA568BB914F6FEB4E1804D2D99C56FACE488C8ECBF90
-BED15297E72E45A12C2D7D2A9D072B11EF324C6B5115076928B694E39E50C386
-F11C687EFADDB68C57AA29E3064CC387ACD573B2F29D27746F169902D3957EE1
-A02EC362C66754EFDA5A4644559536D3FC592F158C77B50708E74507A8AE6324
-3023BB7C93882B2675D612ACA1198C3B2813BA6E04AF30C98F3C0CDD9C63DEC1
-D0E9AC3764C872EE8D7D525F8AF36BDAA0B0CC112D2B46FF2EE95EA351321B94
-93BB28CD9BB63AC0841EB3070A33A016E1D6C87A55057118D14F7F53E18EAB1C
-09D22FBC1FA42CC6C7975E4FB0268944EE843E4A90D7F0AA228F0BE55B42EBD3
-EC32E11924F5D9742BE8E7A803FB25CD75DE330AC140601ACED8B1452BF8B2B4
-C55AFEF142AF8CCB3F394E5859EA994E3ABFF4C77871DC8668E47C858C35770B
-D9BC3BE31CD67C6B5E607F6DFFDC7EE338711C98C2A30AC2B612089CDE630E04
-A73B07518B9EA8A3AA324B6AEF0E5D7612DBE06BF7DE4A55796DAB2C81CFE23D
-0132797108BBB0193CE77D91DA6B48E951338E1E0DE6054FBD1A4FCAD95479DD
-2DFBFE923FB7A3B06B7085793C165A20D79BF09BE800B2ED7FBF43436EE7676C
-FD2EE1495E13D572912BE7C2379C8D1E7DA4A6A2EF9FE33AA14A75377A356DEC
-6AF1106AA3D780D1A99DD2E0CC66CCEBB8CA3CC418DE0A267E8E5D34EE925E2F
-827461088DB60E0D56BBD217D9E0C3D2B591CC60468A3F7A5A6D49FD8F64DD46
-BAC6215C2E56E67A10F69219E1C8A09DED4A745CD53E5748A7C2B57FCEFDE598
-A026E280A1E5767ECBD3A3ECC41D52232674BE60A3A8BB6FF9EE627AA4B2CC24
-9474949DAEA29AB9586836860AE1FFB4AADC75B0760015C86FE32F49F26FF44C
-C03D4BD3CDE93C57329410FA84900B19338CAC1C55B507A6B130EEFFB01A5E44
-0E3E133C17A0AA4ADF837C5D6CE284D053DCBB3C03F59C5C9BB80C0C4BEA25B6
-5FD00C833BDAEC0A4607285DEFBBC7D3A6A100E8D6453115233D76CA2C132D31
-A3A3FEA39606F68F0AC10CFD4F5701C4B2A7B6848C77A903BDA77904D038A1C5
-6014E31F975CF627D67B0D3F3AAEE72D32EA80709CF712A6EB46E508177AFA03
-F275DA9768CD589CB298322B0BF50B578E9E4B58989DDE12CBAAAEB7E36655C2
-842F5C7FC004B8B8516D8CD35543F3D2182DACC5EE8750A0CAB151C6EED04063
-71B111101991BABA8B86E9F6F718B9ED1E69D91EEB503C6AE45B661C8CA8B1CB
-20A9C01764DC4CC575C636B84755614BBFC242A5865469F87FF4F97A43B5A651
-B2DAF746AA69FA6B9CFC9FF4A2590DA2D23BEF1EA97DE3FF48A0A23369B90395
-0DFD36B3C7A992CDC1E49F42DE7C37CDEEC35A7AF8CADC2CA0BBB01895613E03
-9C157B1683F1421F74B08184D56DEFCA72132550C6C1061B36769DBD39EC22CF
-238641C90BB9510D564C0AB202205358CE42CDA4723E5506BF5A274236A6E9E4
-DD21C0FC9FE57974FCABC6C808856B5F837AF759863BEF5BB381E2A729C6C4DE
-2F53DD2DC92BAEAD141FD5FFE341E0FD5AEE566E2E1C6A44E94071DA0C3D4F57
-07B02D120D95B21086CC12F33FC4D0C7C8B6147928A00339324024F787193073
-13DD96DBC559F2339FB51C6123A3C51C70B7676B39255F589A80747491320833
-0FD6685904C70A865AABFCBB7F5E351BEF3B535D00403E1B5C4C64E8DE7061DC
-A1D9D4AE825BFEE090412772E057A13FCD3A897FDE348FD50E50C620C89461B8
-BE07B057B796B16E06CD314943153935D91152BC6E331DA67D73524ED7548385
-0F087BB2F0023532B945ECC61B6E3075FCDAA3ABBF945B64AADA7213C590A9B5
-11D068C9183BC0D2238DB3844BB4C7596E00BF6A67B6BDA2F85D5D603B80035B
-5DF1EC6C3570609A972B752550C89C34B8E14BD1E0A030303D9015EBC9114F57
-2899C129E72055B92DF22636EC479B03277E3E60DCAD36EB35CC3898C056C72D
-B58CCC6FCE3B2FFDCF560E130B196BC278224FD4901DD2F2F753494FFF4AAD61
-002715D828FCC2B6BA8794D843C1144231E818579B305AB9022AD279E0514068
-F4330A1C2C2C3FBDD150098C5B7DED6374D6B45CDBB7C88C78343959CC260B39
-986001C07720E3B745CAAFF84F858CF3AC4440B592D5A83BD96FB5980286CCB3
-6EDA47D11381FEE3F3CAEFB2D6E35F2B896DA68E8567D9327FB956733DA2896D
-1A63B1FB168529BE23A7D04607085DA1596BA1858B1A07F3F37A233D2E81D599
-82D885596BD3D041DBB2F3972CF605C0FD781C1360B368B49C4E41D2BF45FC3B
-15460C0D9AFB5BDBC87FEE463493E471DB54CFC064DBAF00EB126DEE19C58319
-71E77AFADB3B1256673E0B9226177A6161133FB030F063FA67C6
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-TeXDict begin 39158280 55380996 1000 300 300 (rluserman.dvi)
-@start /Fa 134[20 3[20 20 20 20 2[20 20 20 20 2[20 20
-2[20 3[20 97[{}13 37.3599 /CMSLTT10 rf /Fb 134[20 20
-20 20 20 20 20 20 1[20 20 20 20 20 20 1[20 20 20 20 20
-20 20 20 20 20 9[20 20 20 20 2[20 1[20 1[20 2[20 1[20
-20 1[20 20 20 20 5[20 7[20 1[20 1[20 20 20 20 2[20 20
-20 39[{}48 37.3599 /CMTT9 rf /Fc 167[31 3[30 23 2[28
-1[31 38 26 1[21 1[31 33 27 1[32 30 67[{}13 41.511 /CMR10
-rf /Fd 134[32 32 1[32 34 24 24 25 1[34 31 34 51 17 32
-1[17 34 31 19 28 34 27 34 30 7[46 4[43 34 46 3[48 58
-37 48 1[23 48 1[39 40 1[44 44 46 8[31 31 31 31 31 31
-31 31 2[17 46[{}46 54.5455 /CMBX12 rf /Fe 134[24 24 33
-1[25 18 18 18 24 25 23 25 38 13 24 1[13 25 23 14 20 1[20
-25 23 9[47 1[34 33 25 33 1[31 35 34 1[28 35 1[16 34 1[30
-31 35 33 32 34 19[15 45[{}41 45.4545 /CMSL10 rf /Ff 139[15
-19 19 3[26 4[14 1[21 90[26 12[{}7 45.4545 /CMTI10 rf
-/Fg 134[24 24 24 24 24 1[24 24 24 1[24 24 1[24 24 24
-24 1[24 24 24 24 1[24 24 1[24 2[24 14[24 24 1[24 1[24
-2[24 24 24 17[24 24 2[24 5[24 39[{}33 45.4545 /CMSLTT10
-rf /Fh 135[28 2[28 1[21 2[25 29 28 4[14 1[29 24 25 1[27
-1[28 97[{}12 45.4545 /CMCSC10 rf /Fi 197[13 58[{}1 45.4545
-/CMMI10 rf /Fj 197[16 58[{}1 59.7758 /CMMI12 rf /Fk 135[43
-2[45 31 32 33 1[45 40 45 67 22 2[22 1[40 25 37 45 36
-45 39 11[62 56 5[63 1[48 4[63 51 53 62 58 1[61 15[40
-49[{}29 71.731 /CMBX12 rf /Fl 242[45 13[{}1 45.4545 /CMSY10
-rf /Fm 134[35 35 49 35 37 26 27 27 1[37 34 37 56 19 2[19
-37 34 21 31 37 30 37 33 9[69 1[52 1[37 50 3[53 64 40
-2[25 53 53 42 44 52 49 48 51 6[19 4[34 34 34 34 34 2[19
-1[19 44[{}46 59.7758 /CMBX12 rf /Fn 129[24 24 1[24 24
-24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
-24 24 24 24 24 24 24 1[24 1[24 24 24 1[24 3[24 24 24
-24 24 24 24 24 24 24 24 1[24 24 24 24 24 24 24 24 24
-24 24 24 24 24 1[24 1[24 24 1[24 2[24 24 24 24 24 24
-24 1[24 24 24 24 2[24 24 24 24 33[{}78 45.4545 /CMTT10
-rf /Fo 131[45 23 20 24 24 33 24 25 18 18 18 24 25 23
-25 38 13 24 14 13 25 23 14 20 25 20 25 23 13 2[13 23
-13 28 34 34 47 34 34 33 25 33 35 31 35 34 42 28 35 23
-16 34 36 30 31 35 33 32 34 5[13 13 23 23 23 23 23 23
-23 23 23 23 23 13 15 13 2[18 18 13 4[23 20[25 25 27 11[{}81
-45.4545 /CMR10 rf /Fp 134[51 4[38 38 40 3[54 1[27 2[27
-2[30 44 54 43 54 47 11[74 2[72 3[76 1[58 2[36 1[76 71[{}19
-86.0772 /CMBX12 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%BeginPaperSize: a4
-/setpagedevice where
-{ pop << /PageSize [595 842] >> setpagedevice }
-{ /a4 where { pop a4 } if }
-ifelse
-%%EndPaperSize
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 75 659 a Fp(GNU)33 b(Readline)f(Library)f(User)i
-(In)m(terface)p 75 709 1800 17 v 936 757 a Fo(Edition)15
-b(6.4,)e(for)i Fn(Readline)f(Library)g Fo(V)l(ersion)h(6.4.)1682
-811 y(Ma)o(y)f(2015)75 2467 y Fm(Chet)22 b(Ramey)-6 b(,)23
-b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
-2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
-b(oundation)p 75 2570 1800 9 v eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 75 2207 a Fo(This)14 b(man)o(ual)g(describ)q(es)i
-(the)e(end)i(user)f(in)o(terface)f(of)g(the)h(GNU)f(Readline)h(Library)
-f(\(v)o(ersion)g(6.4,)g(28)75 2262 y(Ma)o(y)e(2015\),)f(a)h(library)f
-(whic)o(h)h(aids)g(in)h(the)f(consistency)h(of)f(user)g(in)o(terface)g
-(across)g(discrete)g(programs)75 2316 y(whic)o(h)j(pro)o(vide)g(a)g
-(command)g(line)g(in)o(terface.)75 2384 y(Cop)o(yrigh)o(t)301
-2383 y(c)289 2384 y Fl(\015)g Fo(1988{2014)e(F)l(ree)i(Soft)o(w)o(are)f
-(F)l(oundation,)g(Inc.)195 2451 y(P)o(ermission)9 b(is)h(gran)o(ted)f
-(to)h(cop)o(y)l(,)h(distribute)e(and/or)h(mo)q(dify)g(this)f(do)q
-(cumen)o(t)i(under)g(the)195 2506 y(terms)h(of)g(the)h(GNU)g(F)l(ree)f
-(Do)q(cumen)o(tation)g(License,)h(V)l(ersion)g(1.3)f(or)g(an)o(y)g
-(later)g(v)o(ersion)195 2560 y(published)23 b(b)o(y)f(the)h(F)l(ree)f
-(Soft)o(w)o(are)f(F)l(oundation;)k(with)c(no)i(In)o(v)m(arian)o(t)e
-(Sections,)j(no)195 2615 y(F)l(ron)o(t-Co)o(v)o(er)13
-b(T)l(exts,)h(and)g(no)h(Bac)o(k-Co)o(v)o(er)e(T)l(exts.)20
-b(A)14 b(cop)o(y)g(of)g(the)h(license)f(is)g(included)195
-2670 y(in)h(the)g(section)g(en)o(titled)f(\\GNU)h(F)l(ree)g(Do)q(cumen)
-o(tation)g(License".)p eop end
-%%Page: -1 3
-TeXDict begin -1 2 bop 1862 -58 a Fo(i)75 149 y Fk(T)-7
-b(able)28 b(of)e(Con)n(ten)n(ts)75 320 y Fm(1)67 b(Command)22
-b(Line)h(Editing)17 b Fj(:)10 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)39
-b Fm(1)137 389 y Fo(1.1)45 b(In)o(tro)q(duction)15 b(to)f(Line)i
-(Editing)t Fi(:)7 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)18 b Fo(1)137 444 y(1.2)45 b(Readline)15
-b(In)o(teraction)5 b Fi(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)19
-b Fo(1)200 499 y(1.2.1)43 b(Readline)16 b(Bare)f(Essen)o(tials)5
-b Fi(:)h(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)19 b Fo(1)200 553 y(1.2.2)43 b(Readline)16 b(Mo)o(v)o(emen)o(t)e
-(Commands)5 b Fi(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)19
-b Fo(2)200 608 y(1.2.3)43 b(Readline)16 b(Killing)e(Commands)d
-Fi(:)6 b(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
-b Fo(2)200 663 y(1.2.4)43 b(Readline)16 b(Argumen)o(ts)7
-b Fi(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)21 b Fo(3)200 718 y(1.2.5)43 b(Searc)o(hing)15
-b(for)g(Commands)g(in)g(the)g(History)6 b Fi(:)g(:)h(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20
-b Fo(3)137 773 y(1.3)45 b(Readline)15 b(Init)g(File)d
-Fi(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 b Fo(4)200
-827 y(1.3.1)43 b(Readline)16 b(Init)f(File)f(Syn)o(tax)9
-b Fi(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23
-b Fo(4)200 882 y(1.3.2)43 b(Conditional)14 b(Init)h(Constructs)e
-Fi(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
-b Fo(12)200 937 y(1.3.3)43 b(Sample)16 b(Init)f(File)7
-b Fi(:)f(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)22 b Fo(12)137 992 y(1.4)45
-b(Bindable)15 b(Readline)h(Commands)7 b Fi(:)f(:)h(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b Fo(15)200 1046 y(1.4.1)43
-b(Commands)15 b(F)l(or)g(Mo)o(ving)5 b Fi(:)h(:)h(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Fo(15)200
-1101 y(1.4.2)43 b(Commands)15 b(F)l(or)g(Manipulating)e(The)j(History)
-10 b Fi(:)c(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-25 b Fo(15)200 1156 y(1.4.3)43 b(Commands)15 b(F)l(or)g(Changing)f(T)l
-(ext)e Fi(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 b Fo(17)200
-1211 y(1.4.4)43 b(Killing)14 b(And)i(Y)l(anking)c Fi(:)c(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)27
-b Fo(18)200 1266 y(1.4.5)43 b(Sp)q(ecifying)16 b(Numeric)f(Argumen)o
-(ts)10 b Fi(:)c(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)24 b Fo(19)200
-1320 y(1.4.6)43 b(Letting)15 b(Readline)h(T)o(yp)q(e)f(F)l(or)g(Y)l(ou)
-7 b Fi(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 b Fo(20)200
-1375 y(1.4.7)43 b(Keyb)q(oard)16 b(Macros)c Fi(:)6 b(:)h(:)g(:)h(:)f(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)26
-b Fo(20)200 1430 y(1.4.8)43 b(Some)16 b(Miscellaneous)e(Commands)f
-Fi(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fo(21)137 1485
-y(1.5)45 b(Readline)15 b(vi)g(Mo)q(de)c Fi(:)c(:)h(:)f(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)26 b Fo(22)75 1606 y Fm(App)r(endix)d(A)80
-b(GNU)22 b(F)-6 b(ree)23 b(Do)r(cumen)n(tation)e(License)223
-1672 y Fj(:)10 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fm(23)p eop end
-%%Page: 1 4
-TeXDict begin 1 3 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(1)75 149 y Fk(1)41 b(Command)28 b(Line)f(Editing)75
-266 y Fo(This)15 b(c)o(hapter)g(describ)q(es)h(the)f(basic)g(features)g
-(of)f(the)i Fh(gnu)f Fo(command)g(line)g(editing)f(in)o(terface.)75
-382 y Fm(1.1)33 b(In)n(tro)r(duction)23 b(to)f(Line)h(Editing)75
-462 y Fo(The)15 b(follo)o(wing)e(paragraphs)i(describ)q(e)h(the)f
-(notation)f(used)h(to)g(represen)o(t)g(k)o(eystrok)o(es.)137
-529 y(The)k(text)e Fg(C-k)h Fo(is)f(read)i(as)e(`Con)o(trol-K')f(and)j
-(describ)q(es)f(the)h(c)o(haracter)e(pro)q(duced)i(when)g(the)f
-Fn(k)75 584 y Fo(k)o(ey)d(is)g(pressed)h(while)e(the)h(Con)o(trol)f(k)o
-(ey)h(is)g(depressed.)137 651 y(The)h(text)g Fg(M-k)f
-Fo(is)h(read)g(as)f(`Meta-K')g(and)h(describ)q(es)h(the)f(c)o(haracter)
-f(pro)q(duced)i(when)g(the)f(Meta)75 705 y(k)o(ey)g(\(if)g(y)o(ou)g(ha)
-o(v)o(e)g(one\))h(is)f(depressed,)h(and)g(the)g Fn(k)f
-Fo(k)o(ey)g(is)g(pressed.)25 b(The)17 b(Meta)e(k)o(ey)i(is)f(lab)q
-(eled)g Fn(ALT)75 760 y Fo(on)f(man)o(y)f(k)o(eyb)q(oards.)20
-b(On)15 b(k)o(eyb)q(oards)g(with)f(t)o(w)o(o)f(k)o(eys)i(lab)q(eled)g
-Fn(ALT)f Fo(\(usually)g(to)g(either)h(side)f(of)h(the)75
-815 y(space)g(bar\),)f(the)h Fn(ALT)g Fo(on)g(the)g(left)f(side)h(is)g
-(generally)f(set)h(to)f(w)o(ork)g(as)h(a)f(Meta)g(k)o(ey)l(.)20
-b(The)c Fn(ALT)e Fo(k)o(ey)h(on)75 870 y(the)f(righ)o(t)e(ma)o(y)h
-(also)g(b)q(e)h(con\014gured)g(to)f(w)o(ork)g(as)g(a)g(Meta)g(k)o(ey)g
-(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)g(other)75
-925 y(mo)q(di\014er,)i(suc)o(h)g(as)g(a)g(Comp)q(ose)g(k)o(ey)g(for)g
-(t)o(yping)f(accen)o(ted)i(c)o(haracters.)137 992 y(If)d(y)o(ou)f(do)g
-(not)g(ha)o(v)o(e)f(a)h(Meta)g(or)f Fn(ALT)h Fo(k)o(ey)l(,)h(or)e
-(another)h(k)o(ey)g(w)o(orking)f(as)h(a)g(Meta)f(k)o(ey)l(,)i(the)f
-(iden)o(tical)75 1047 y(k)o(eystrok)o(e)h(can)i(b)q(e)f(generated)h(b)o
-(y)f(t)o(yping)f Fn(ESC)h Ff(\014rst)p Fo(,)f(and)i(then)f(t)o(yping)g
-Fn(k)p Fo(.)19 b(Either)14 b(pro)q(cess)g(is)g(kno)o(wn)75
-1101 y(as)h Fe(metafying)j Fo(the)d Fn(k)g Fo(k)o(ey)l(.)137
-1169 y(The)21 b(text)e Fg(M-C-k)h Fo(is)g(read)g(as)f(`Meta-Con)o
-(trol-k')f(and)i(describ)q(es)h(the)f(c)o(haracter)g(pro)q(duced)h(b)o
-(y)75 1223 y Fe(metafying)d Fg(C-k)p Fo(.)137 1290 y(In)h(addition,)e
-(sev)o(eral)h(k)o(eys)f(ha)o(v)o(e)h(their)g(o)o(wn)f(names.)28
-b(Sp)q(eci\014cally)l(,)19 b Fn(DEL)p Fo(,)f Fn(ESC)p
-Fo(,)g Fn(LFD)p Fo(,)g Fn(SPC)p Fo(,)g Fn(RET)p Fo(,)75
-1345 y(and)f Fn(TAB)g Fo(all)f(stand)h(for)g(themselv)o(es)g(when)h
-(seen)f(in)g(this)g(text,)g(or)g(in)g(an)g(init)f(\014le)i(\(see)f
-(Section)g(1.3)75 1400 y([Readline)e(Init)g(File],)e(page)h(4\).)20
-b(If)15 b(y)o(our)f(k)o(eyb)q(oard)h(lac)o(ks)f(a)g Fn(LFD)h
-Fo(k)o(ey)l(,)f(t)o(yping)g Fn(C-j)h Fo(will)e(pro)q(duce)j(the)75
-1455 y(desired)f(c)o(haracter.)20 b(The)15 b Fn(RET)g
-Fo(k)o(ey)g(ma)o(y)f(b)q(e)i(lab)q(eled)f Fn(Return)g
-Fo(or)f Fn(Enter)h Fo(on)g(some)g(k)o(eyb)q(oards.)75
-1571 y Fm(1.2)33 b(Readline)21 b(In)n(teraction)75 1651
-y Fo(Often)c(during)f(an)g(in)o(teractiv)o(e)f(session)g(y)o(ou)h(t)o
-(yp)q(e)h(in)f(a)g(long)f(line)h(of)g(text,)g(only)g(to)f(notice)h
-(that)g(the)75 1705 y(\014rst)g(w)o(ord)f(on)h(the)h(line)f(is)f(missp)
-q(elled.)23 b(The)16 b(Readline)h(library)e(giv)o(es)g(y)o(ou)h(a)g
-(set)g(of)g(commands)g(for)75 1760 y(manipulating)d(the)i(text)g(as)f
-(y)o(ou)h(t)o(yp)q(e)g(it)f(in,)g(allo)o(wing)f(y)o(ou)i(to)f(just)h
-(\014x)g(y)o(our)f(t)o(yp)q(o,)g(and)h(not)g(forcing)75
-1815 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s(jorit)o(y)e(of)i(the)g
-(line.)19 b(Using)14 b(these)g(editing)f(commands,)h(y)o(ou)g(mo)o(v)o
-(e)f(the)h(cursor)75 1870 y(to)i(the)i(place)f(that)f(needs)i
-(correction,)f(and)g(delete)g(or)g(insert)f(the)i(text)e(of)h(the)g
-(corrections.)25 b(Then,)75 1924 y(when)13 b(y)o(ou)f(are)g
-(satis\014ed)g(with)g(the)h(line,)f(y)o(ou)g(simply)g(press)g
-Fn(RET)p Fo(.)19 b(Y)l(ou)12 b(do)h(not)f(ha)o(v)o(e)g(to)g(b)q(e)h(at)
-f(the)g(end)75 1979 y(of)k(the)h(line)f(to)g(press)h
-Fn(RET)p Fo(;)g(the)f(en)o(tire)g(line)h(is)f(accepted)h(regardless)f
-(of)g(the)h(lo)q(cation)e(of)i(the)f(cursor)75 2034 y(within)e(the)i
-(line.)75 2133 y Fd(1.2.1)30 b(Readline)20 b(Bare)g(Essen)n(tials)75
-2207 y Fo(In)d(order)e(to)h(en)o(ter)g(c)o(haracters)f(in)o(to)g(the)h
-(line,)g(simply)f(t)o(yp)q(e)h(them.)23 b(The)16 b(t)o(yp)q(ed)g(c)o
-(haracter)g(app)q(ears)75 2262 y(where)g(the)h(cursor)f(w)o(as,)f(and)h
-(then)h(the)f(cursor)g(mo)o(v)o(es)g(one)g(space)g(to)g(the)g(righ)o
-(t.)22 b(If)17 b(y)o(ou)f(mist)o(yp)q(e)f(a)75 2317 y(c)o(haracter,)f
-(y)o(ou)h(can)g(use)h(y)o(our)f(erase)g(c)o(haracter)f(to)h(bac)o(k)g
-(up)g(and)h(delete)f(the)g(mist)o(yp)q(ed)g(c)o(haracter.)137
-2384 y(Sometimes)g(y)o(ou)g(ma)o(y)g(mist)o(yp)q(e)g(a)g(c)o(haracter,)
-f(and)i(not)f(notice)g(the)g(error)g(un)o(til)g(y)o(ou)g(ha)o(v)o(e)g
-(t)o(yp)q(ed)75 2438 y(sev)o(eral)f(other)g(c)o(haracters.)19
-b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fg(C-b)f
-Fo(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)g(and)75
-2493 y(then)i(correct)e(y)o(our)h(mistak)o(e.)k(Afterw)o(ards,)13
-b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g(to)g(the)g(righ)o(t)f
-(with)g Fg(C-f)p Fo(.)137 2560 y(When)j(y)o(ou)f(add)g(text)g(in)g(the)
-h(middle)f(of)g(a)f(line,)h(y)o(ou)g(will)f(notice)h(that)g(c)o
-(haracters)f(to)h(the)g(righ)o(t)75 2615 y(of)e(the)g(cursor)g(are)g
-(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h(ro)q(om)g(for)f(the)i(text)f
-(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)20 b(Lik)o(ewise,)75
-2670 y(when)f(y)o(ou)g(delete)g(text)f(b)q(ehind)i(the)f(cursor,)g(c)o
-(haracters)f(to)g(the)h(righ)o(t)e(of)h(the)h(cursor)g(are)f(`pulled)p
-eop end
-%%Page: 2 5
-TeXDict begin 2 4 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(2)75 149 y(bac)o(k')11 b(to)g(\014ll)f(in)i(the)f
-(blank)g(space)h(created)f(b)o(y)h(the)f(remo)o(v)m(al)f(of)h(the)h
-(text.)18 b(A)11 b(list)f(of)h(the)h(bare)f(essen)o(tials)75
-204 y(for)k(editing)f(the)h(text)g(of)g(an)g(input)g(line)g(follo)o
-(ws.)75 281 y Fg(C-b)168 b Fo(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
-(haracter.)75 358 y Fg(C-f)168 b Fo(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
-(c)o(haracter.)75 434 y Fn(DEL)g Fo(or)f Fn(Backspace)315
-489 y Fo(Delete)h(the)g(c)o(haracter)g(to)f(the)h(left)g(of)g(the)g
-(cursor.)75 566 y Fg(C-d)168 b Fo(Delete)15 b(the)g(c)o(haracter)g
-(underneath)h(the)f(cursor.)75 642 y(Prin)o(ting)f(c)o(haracters)315
-697 y(Insert)h(the)h(c)o(haracter)e(in)o(to)g(the)i(line)f(at)f(the)h
-(cursor.)75 774 y Fg(C-_)g Fo(or)f Fg(C-x)h(C-u)315 829
-y Fo(Undo)i(the)g(last)e(editing)h(command.)25 b(Y)l(ou)17
-b(can)g(undo)g(all)e(the)i(w)o(a)o(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315
-884 y(line.)75 960 y(\(Dep)q(ending)f(on)g(y)o(our)f(con\014guration,)g
-(the)h Fn(Backspace)e Fo(k)o(ey)i(b)q(e)g(set)g(to)f(delete)h(the)g(c)o
-(haracter)f(to)g(the)75 1015 y(left)j(of)h(the)g(cursor)g(and)g(the)h
-Fn(DEL)e Fo(k)o(ey)h(set)g(to)g(delete)g(the)g(c)o(haracter)g
-(underneath)g(the)h(cursor,)f(lik)o(e)75 1070 y Fg(C-d)p
-Fo(,)c(rather)h(than)g(the)g(c)o(haracter)g(to)f(the)i(left)e(of)h(the)
-g(cursor.\))75 1166 y Fd(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i
-(Commands)75 1240 y Fo(The)14 b(ab)q(o)o(v)o(e)g(table)f(describ)q(es)h
-(the)g(most)f(basic)h(k)o(eystrok)o(es)f(that)g(y)o(ou)g(need)i(in)f
-(order)f(to)g(do)h(editing)f(of)75 1295 y(the)k(input)f(line.)23
-b(F)l(or)16 b(y)o(our)g(con)o(v)o(enience,)h(man)o(y)f(other)g
-(commands)h(ha)o(v)o(e)f(b)q(een)h(added)h(in)e(addition)75
-1349 y(to)h Fg(C-b)p Fo(,)g Fg(C-f)p Fo(,)g Fg(C-d)p
-Fo(,)g(and)h Fn(DEL)p Fo(.)26 b(Here)18 b(are)f(some)g(commands)h(for)e
-(mo)o(ving)h(more)g(rapidly)g(ab)q(out)g(the)75 1404
-y(line.)75 1481 y Fg(C-a)168 b Fo(Mo)o(v)o(e)14 b(to)h(the)g(start)f
-(of)h(the)g(line.)75 1558 y Fg(C-e)168 b Fo(Mo)o(v)o(e)14
-b(to)h(the)g(end)h(of)f(the)g(line.)75 1634 y Fg(M-f)168
-b Fo(Mo)o(v)o(e)14 b(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h
-(is)g(comp)q(osed)g(of)g(letters)f(and)i(digits.)75 1711
-y Fg(M-b)168 b Fo(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
-1788 y Fg(C-l)168 b Fo(Clear)14 b(the)i(screen,)f(reprin)o(ting)f(the)h
-(curren)o(t)g(line)g(at)g(the)g(top.)137 1864 y(Notice)d(ho)o(w)g
-Fg(C-f)g Fo(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)g
-Fg(M-f)g Fo(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18
-b(It)13 b(is)f(a)g(lo)q(ose)75 1919 y(con)o(v)o(en)o(tion)i(that)g(con)
-o(trol)g(k)o(eystrok)o(es)g(op)q(erate)h(on)f(c)o(haracters)h(while)f
-(meta)g(k)o(eystrok)o(es)g(op)q(erate)h(on)75 1974 y(w)o(ords.)75
-2071 y Fd(1.2.3)30 b(Readline)20 b(Killing)h(Commands)75
-2144 y Fe(Killing)16 b Fo(text)d(means)g(to)g(delete)g(the)g(text)g
-(from)g(the)g(line,)g(but)h(to)e(sa)o(v)o(e)h(it)f(a)o(w)o(a)o(y)g(for)
-h(later)f(use,)i(usually)75 2199 y(b)o(y)f Fe(y)o(anking)k
-Fo(\(re-inserting\))12 b(it)h(bac)o(k)g(in)o(to)g(the)g(line.)19
-b(\(`Cut')12 b(and)i(`paste')e(are)h(more)h(recen)o(t)f(jargon)g(for)75
-2254 y(`kill')g(and)j(`y)o(ank'.\))137 2319 y(If)g(the)f(description)f
-(for)h(a)g(command)g(sa)o(ys)f(that)h(it)f(`kills')f(text,)h(then)i(y)o
-(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o(ou)75 2374 y(can)h(get)g(the)g
-(text)g(bac)o(k)g(in)g(a)g(di\013eren)o(t)f(\(or)h(the)g(same\))g
-(place)g(later.)137 2440 y(When)d(y)o(ou)g(use)g(a)f(kill)f(command,)i
-(the)g(text)f(is)g(sa)o(v)o(ed)g(in)h(a)f Fe(kill-ring)p
-Fo(.)17 b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-2495 y(kills)j(sa)o(v)o(e)h(all)f(of)h(the)h(killed)f(text)g(together,)
-f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)g(bac)o(k,)g(y)o(ou)g(get)g
-(it)g(all.)20 b(The)75 2549 y(kill)15 b(ring)h(is)f(not)h(line)g(sp)q
-(eci\014c;)h(the)f(text)g(that)f(y)o(ou)h(killed)g(on)g(a)g(previously)
-f(t)o(yp)q(ed)i(line)f(is)f(a)o(v)m(ailable)75 2604 y(to)g(b)q(e)g(y)o
-(ank)o(ed)g(bac)o(k)h(later,)d(when)j(y)o(ou)f(are)g(t)o(yping)f
-(another)h(line.)137 2670 y(Here)h(is)e(the)i(list)e(of)g(commands)h
-(for)g(killing)f(text.)p eop end
-%%Page: 3 6
-TeXDict begin 3 5 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(3)75 149 y Fg(C-k)168 b Fo(Kill)14 b(the)i(text)e(from)
-h(the)g(curren)o(t)g(cursor)g(p)q(osition)f(to)h(the)g(end)h(of)f(the)g
-(line.)75 230 y Fg(M-d)168 b Fo(Kill)12 b(from)h(the)g(cursor)g(to)f
-(the)i(end)g(of)e(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)f(b)q(et)o(w)o
-(een)i(w)o(ords,)e(to)h(the)315 285 y(end)j(of)f(the)g(next)g(w)o(ord.)
-k(W)l(ord)c(b)q(oundaries)h(are)f(the)g(same)g(as)g(those)f(used)i(b)o
-(y)f Fg(M-f)p Fo(.)75 366 y Fg(M-DEL)120 b Fo(Kill)14
-b(from)h(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o(t)g(w)o(ord,)
-f(or,)h(if)f(b)q(et)o(w)o(een)i(w)o(ords,)e(to)h(the)315
-421 y(start)j(of)h(the)g(previous)g(w)o(ord.)31 b(W)l(ord)19
-b(b)q(oundaries)g(are)g(the)h(same)e(as)h(those)g(used)h(b)o(y)315
-476 y Fg(M-b)p Fo(.)75 557 y Fg(C-w)168 b Fo(Kill)17
-b(from)f(the)i(cursor)f(to)g(the)h(previous)f(whitespace.)27
-b(This)17 b(is)g(di\013eren)o(t)f(than)i Fg(M-DEL)315
-611 y Fo(b)q(ecause)e(the)f(w)o(ord)g(b)q(oundaries)g(di\013er.)137
-693 y(Here)21 b(is)g(ho)o(w)f(to)g Fe(y)o(ank)j Fo(the)e(text)f(bac)o
-(k)h(in)o(to)f(the)g(line.)37 b(Y)l(anking)20 b(means)h(to)f(cop)o(y)h
-(the)g(most-)75 748 y(recen)o(tly-killed)14 b(text)h(from)f(the)i(kill)
-e(bu\013er.)75 829 y Fg(C-y)168 b Fo(Y)l(ank)15 b(the)h(most)e(recen)o
-(tly)h(killed)f(text)h(bac)o(k)g(in)o(to)f(the)i(bu\013er)f(at)f(the)i
-(cursor.)75 910 y Fg(M-y)168 b Fo(Rotate)17 b(the)g(kill-ring,)f(and)h
-(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)f(do)g(this)g
-(if)f(the)i(prior)315 965 y(command)d(is)g Fg(C-y)g Fo(or)f
-Fg(M-y)p Fo(.)75 1066 y Fd(1.2.4)30 b(Readline)20 b(Argumen)n(ts)75
-1139 y Fo(Y)l(ou)g(can)f(pass)h(n)o(umeric)f(argumen)o(ts)g(to)g
-(Readline)h(commands.)32 b(Sometimes)19 b(the)h(argumen)o(t)e(acts)75
-1194 y(as)i(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)f(it)h(is)f(the)h
-Ff(sign)j Fo(of)c(the)h(argumen)o(t)g(that)f(is)h(signi\014can)o(t.)33
-b(If)20 b(y)o(ou)75 1249 y(pass)d(a)f(negativ)o(e)g(argumen)o(t)g(to)g
-(a)g(command)h(whic)o(h)g(normally)e(acts)h(in)h(a)f(forw)o(ard)g
-(direction,)g(that)75 1304 y(command)i(will)e(act)h(in)h(a)f(bac)o(kw)o
-(ard)g(direction.)26 b(F)l(or)17 b(example,)h(to)f(kill)g(text)g(bac)o
-(k)g(to)g(the)h(start)e(of)75 1359 y(the)f(line,)g(y)o(ou)g(migh)o(t)f
-(t)o(yp)q(e)h(`)p Fn(M--)f(C-k)p Fo('.)137 1427 y(The)h(general)e(w)o
-(a)o(y)g(to)h(pass)g(n)o(umeric)g(argumen)o(ts)f(to)g(a)h(command)g(is)
-g(to)f(t)o(yp)q(e)h(meta)g(digits)f(b)q(efore)75 1482
-y(the)j(command.)k(If)c(the)f(\014rst)g(`digit')f(t)o(yp)q(ed)h(is)g(a)
-h(min)o(us)f(sign)g(\(`)p Fn(-)p Fo('\),)e(then)j(the)f(sign)g(of)g
-(the)h(argumen)o(t)75 1537 y(will)i(b)q(e)i(negativ)o(e.)30
-b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(one)g(meta)g(digit)f
-(to)g(get)h(the)g(argumen)o(t)f(started,)h(y)o(ou)75
-1592 y(can)c(t)o(yp)q(e)f(the)h(remainder)f(of)g(the)g(digits,)f(and)i
-(then)g(the)f(command.)20 b(F)l(or)13 b(example,)h(to)g(giv)o(e)g(the)g
-Fg(C-d)75 1646 y Fo(command)19 b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f
-(could)h(t)o(yp)q(e)g(`)p Fn(M-1)14 b(0)h(C-d)p Fo(',)k(whic)o(h)f
-(will)f(delete)i(the)g(next)g(ten)75 1701 y(c)o(haracters)14
-b(on)i(the)f(input)g(line.)75 1802 y Fd(1.2.5)30 b(Searc)n(hing)21
-b(for)f(Commands)h(in)f(the)h(History)75 1875 y Fo(Readline)11
-b(pro)o(vides)f(commands)h(for)f(searc)o(hing)g(through)g(the)h
-(command)f(history)g(for)g(lines)g(con)o(taining)75 1930
-y(a)15 b(sp)q(eci\014ed)h(string.)j(There)c(are)g(t)o(w)o(o)f(searc)o
-(h)h(mo)q(des:)20 b Fe(incremen)o(tal)c Fo(and)g Fe(non-incremen)o(tal)
-p Fo(.)137 1999 y(Incremen)o(tal)d(searc)o(hes)g(b)q(egin)g(b)q(efore)g
-(the)g(user)g(has)g(\014nished)g(t)o(yping)f(the)h(searc)o(h)g(string.)
-18 b(As)13 b(eac)o(h)75 2054 y(c)o(haracter)k(of)g(the)h(searc)o(h)g
-(string)e(is)h(t)o(yp)q(ed,)i(Readline)f(displa)o(ys)e(the)i(next)g(en)
-o(try)f(from)g(the)h(history)75 2108 y(matc)o(hing)11
-b(the)h(string)f(t)o(yp)q(ed)h(so)g(far.)18 b(An)13 b(incremen)o(tal)e
-(searc)o(h)h(requires)f(only)h(as)g(man)o(y)f(c)o(haracters)g(as)75
-2163 y(needed)16 b(to)d(\014nd)j(the)e(desired)h(history)e(en)o(try)l
-(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o(ard)f(in)i(the)f(history)f(for)h
-(a)g(particular)75 2218 y(string,)f(t)o(yp)q(e)i Fg(C-r)p
-Fo(.)k(T)o(yping)c Fg(C-s)f Fo(searc)o(hes)h(forw)o(ard)e(through)h
-(the)h(history)l(.)k(The)c(c)o(haracters)f(presen)o(t)75
-2273 y(in)19 b(the)g(v)m(alue)g(of)g(the)g Fn(isearch-terminators)d
-Fo(v)m(ariable)i(are)h(used)h(to)e(terminate)g(an)h(incremen)o(tal)75
-2328 y(searc)o(h.)35 b(If)20 b(that)f(v)m(ariable)h(has)g(not)g(b)q
-(een)h(assigned)f(a)g(v)m(alue,)h(the)f Fn(ESC)g Fo(and)g
-Fg(C-J)g Fo(c)o(haracters)f(will)75 2382 y(terminate)h(an)h(incremen)o
-(tal)g(searc)o(h.)37 b Fg(C-g)21 b Fo(will)f(ab)q(ort)h(an)g(incremen)o
-(tal)f(searc)o(h)h(and)g(restore)g(the)75 2437 y(original)13
-b(line.)19 b(When)c(the)f(searc)o(h)g(is)g(terminated,)g(the)g(history)
-g(en)o(try)g(con)o(taining)f(the)i(searc)o(h)f(string)75
-2492 y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 2560
-y(T)l(o)g(\014nd)i(other)e(matc)o(hing)f(en)o(tries)h(in)h(the)f
-(history)g(list,)f(t)o(yp)q(e)h Fg(C-r)g Fo(or)g Fg(C-s)g
-Fo(as)h(appropriate.)j(This)75 2615 y(will)12 b(searc)o(h)h(bac)o(kw)o
-(ard)f(or)g(forw)o(ard)g(in)h(the)g(history)f(for)h(the)g(next)g(en)o
-(try)g(matc)o(hing)f(the)h(searc)o(h)g(string)75 2670
-y(t)o(yp)q(ed)19 b(so)g(far.)30 b(An)o(y)19 b(other)f(k)o(ey)h
-(sequence)h(b)q(ound)g(to)e(a)h(Readline)g(command)f(will)g(terminate)g
-(the)p eop end
-%%Page: 4 7
-TeXDict begin 4 6 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(4)75 149 y(searc)o(h)13 b(and)f(execute)i(that)e
-(command.)19 b(F)l(or)12 b(instance,)h(a)f Fn(RET)g Fo(will)g
-(terminate)f(the)i(searc)o(h)g(and)g(accept)75 204 y(the)i(line,)f
-(thereb)o(y)h(executing)f(the)h(command)g(from)f(the)g(history)g(list.)
-k(A)d(mo)o(v)o(emen)o(t)f(command)g(will)75 259 y(terminate)g(the)h
-(searc)o(h,)g(mak)o(e)g(the)g(last)f(line)h(found)h(the)f(curren)o(t)g
-(line,)f(and)i(b)q(egin)f(editing.)137 323 y(Readline)j(remem)o(b)q
-(ers)f(the)h(last)e(incremen)o(tal)h(searc)o(h)g(string.)26
-b(If)17 b(t)o(w)o(o)f Fg(C-r)p Fo(s)h(are)g(t)o(yp)q(ed)h(without)75
-378 y(an)o(y)g(in)o(terv)o(ening)f(c)o(haracters)h(de\014ning)g(a)g
-(new)h(searc)o(h)f(string,)f(an)o(y)h(remem)o(b)q(ered)h(searc)o(h)f
-(string)f(is)75 433 y(used.)137 498 y(Non-incremen)o(tal)23
-b(searc)o(hes)g(read)h(the)f(en)o(tire)g(searc)o(h)g(string)f(b)q
-(efore)i(starting)e(to)g(searc)o(h)i(for)75 552 y(matc)o(hing)c
-(history)h(lines.)37 b(The)22 b(searc)o(h)f(string)f(ma)o(y)h(b)q(e)h
-(t)o(yp)q(ed)f(b)o(y)h(the)f(user)h(or)e(b)q(e)i(part)f(of)g(the)75
-607 y(con)o(ten)o(ts)15 b(of)f(the)i(curren)o(t)f(line.)75
-718 y Fm(1.3)33 b(Readline)21 b(Init)i(File)75 797 y
-Fo(Although)e(the)h(Readline)h(library)d(comes)i(with)f(a)h(set)f(of)h
-(Emacs-lik)o(e)f(k)o(eybindings)g(installed)g(b)o(y)75
-852 y(default,)12 b(it)g(is)g(p)q(ossible)g(to)g(use)g(a)g(di\013eren)o
-(t)g(set)g(of)g(k)o(eybindings.)19 b(An)o(y)12 b(user)h(can)f
-(customize)g(programs)75 907 y(that)21 b(use)i(Readline)f(b)o(y)h
-(putting)e(commands)h(in)g(an)g Fe(inputrc)j Fo(\014le,)f(con)o(v)o(en)
-o(tionally)c(in)i(his)g(home)75 962 y(directory)l(.)c(The)12
-b(name)g(of)f(this)g(\014le)h(is)f(tak)o(en)g(from)g(the)h(v)m(alue)g
-(of)f(the)h(en)o(vironmen)o(t)f(v)m(ariable)g Fn(INPUTRC)p
-Fo(.)75 1017 y(If)k(that)g(v)m(ariable)f(is)h(unset,)g(the)g(default)g
-(is)f Fn(~/.inputrc)p Fo(.)19 b(If)c(that)f(\014le)h(do)q(es)h(not)e
-(exist)h(or)f(cannot)h(b)q(e)75 1071 y(read,)g(the)g(ultimate)f
-(default)h(is)f Fn(/etc/inputrc)p Fo(.)137 1136 y(When)h(a)g(program)f
-(whic)o(h)g(uses)h(the)g(Readline)g(library)f(starts)f(up,)i(the)g
-(init)f(\014le)h(is)f(read,)h(and)g(the)75 1191 y(k)o(ey)g(bindings)g
-(are)g(set.)137 1255 y(In)f(addition,)f(the)g Fn(C-x)i(C-r)e
-Fo(command)g(re-reads)h(this)f(init)f(\014le,)i(th)o(us)f(incorp)q
-(orating)f(an)o(y)h(c)o(hanges)75 1310 y(that)h(y)o(ou)h(migh)o(t)f(ha)
-o(v)o(e)h(made)g(to)g(it.)75 1404 y Fd(1.3.1)30 b(Readline)20
-b(Init)g(File)h(Syn)n(tax)75 1477 y Fo(There)g(are)f(only)g(a)g(few)h
-(basic)f(constructs)g(allo)o(w)o(ed)f(in)h(the)h(Readline)f(init)g
-(\014le.)36 b(Blank)20 b(lines)g(are)75 1532 y(ignored.)35
-b(Lines)21 b(b)q(eginning)g(with)e(a)i(`)p Fn(#)p Fo(')e(are)h(commen)o
-(ts.)35 b(Lines)21 b(b)q(eginning)g(with)f(a)g(`)p Fn($)p
-Fo(')f(indicate)75 1587 y(conditional)g(constructs)i(\(see)f(Section)h
-(1.3.2)e([Conditional)g(Init)h(Constructs],)h(page)f(12\).)36
-b(Other)75 1642 y(lines)15 b(denote)g(v)m(ariable)g(settings)f(and)h(k)
-o(ey)g(bindings.)75 1716 y(V)l(ariable)f(Settings)315
-1771 y(Y)l(ou)20 b(can)h(mo)q(dify)f(the)g(run-time)g(b)q(eha)o(vior)g
-(of)f(Readline)i(b)o(y)f(altering)f(the)h(v)m(alues)g(of)315
-1826 y(v)m(ariables)c(in)h(Readline)g(using)f(the)h Fn(set)g
-Fo(command)f(within)g(the)h(init)f(\014le.)25 b(The)17
-b(syn)o(tax)315 1880 y(is)e(simple:)435 1945 y Fn(set)23
-b Fg(variable)g(value)315 2009 y Fo(Here,)14 b(for)f(example,)g(is)g
-(ho)o(w)g(to)g(c)o(hange)h(from)f(the)h(default)f(Emacs-lik)o(e)g(k)o
-(ey)g(binding)h(to)315 2064 y(use)i Fn(vi)e Fo(line)h(editing)g
-(commands:)435 2129 y Fn(set)23 b(editing-mode)g(vi)315
-2193 y Fo(V)l(ariable)17 b(names)g(and)h(v)m(alues,)g(where)f
-(appropriate,)g(are)g(recognized)h(without)e(regard)315
-2248 y(to)f(case.)k(Unrecognized)d(v)m(ariable)f(names)g(are)g
-(ignored.)315 2312 y(Bo)q(olean)d(v)m(ariables)g(\(those)g(that)g(can)g
-(b)q(e)i(set)e(to)g(on)g(or)g(o\013)t(\))f(are)h(set)h(to)f(on)g(if)g
-(the)h(v)m(alue)f(is)315 2367 y(n)o(ull)g(or)f(empt)o(y)l(,)h
-Fe(on)h Fo(\(case-insensitiv)o(e\),)d(or)i(1.)19 b(An)o(y)12
-b(other)g(v)m(alue)g(results)f(in)h(the)h(v)m(ariable)315
-2422 y(b)q(eing)i(set)g(to)g(o\013.)315 2486 y(A)g(great)g(deal)f(of)h
-(run-time)g(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)i(follo)o
-(wing)c(v)m(ariables.)315 2560 y Fn(bell-style)555 2615
-y Fo(Con)o(trols)20 b(what)i(happ)q(ens)h(when)f(Readline)g(w)o(an)o
-(ts)f(to)g(ring)h(the)g(termi-)555 2670 y(nal)c(b)q(ell.)30
-b(If)19 b(set)f(to)g(`)p Fn(none)p Fo(',)g(Readline)h(nev)o(er)g(rings)
-f(the)g(b)q(ell.)30 b(If)19 b(set)g(to)p eop end
-%%Page: 5 8
-TeXDict begin 5 7 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(5)555 149 y(`)p Fn(visible)p Fo(',)15
-b(Readline)h(uses)h(a)f(visible)g(b)q(ell)h(if)f(one)g(is)g(a)o(v)m
-(ailable.)23 b(If)16 b(set)h(to)555 204 y(`)p Fn(audible)p
-Fo(')g(\(the)h(default\),)h(Readline)g(attempts)f(to)g(ring)g(the)h
-(terminal's)555 259 y(b)q(ell.)315 350 y Fn(bind-tty-special-chars)555
-405 y Fo(If)f(set)f(to)g(`)p Fn(on)p Fo(')f(\(the)i(default\),)f
-(Readline)g(attempts)g(to)g(bind)h(the)f(con)o(trol)555
-460 y(c)o(haracters)d(treated)g(sp)q(ecially)g(b)o(y)g(the)h(k)o
-(ernel's)e(terminal)h(driv)o(er)g(to)f(their)555 515
-y(Readline)j(equiv)m(alen)o(ts.)315 606 y Fn(blink-matching-paren)555
-661 y Fo(If)i(set)g(to)g(`)p Fn(on)p Fo(',)f(Readline)i(attempts)e(to)g
-(brie\015y)h(mo)o(v)o(e)g(the)g(cursor)g(to)f(an)555
-716 y(op)q(ening)k(paren)o(thesis)f(when)i(a)e(closing)g(paren)o
-(thesis)h(is)f(inserted.)37 b(The)555 770 y(default)15
-b(is)f(`)p Fn(off)p Fo('.)315 862 y Fn(colored-completion-prefix)555
-917 y Fo(If)h(set)f(to)g(`)p Fn(on)p Fo(',)g(when)h(listing)e
-(completions,)h(Readline)h(displa)o(ys)e(the)i(com-)555
-971 y(mon)e(pre\014x)g(of)f(the)h(set)f(of)g(p)q(ossible)h(completions)
-f(using)g(a)g(di\013eren)o(t)g(color.)555 1026 y(The)20
-b(color)f(de\014nitions)h(are)g(tak)o(en)f(from)g(the)h(v)m(alue)h(of)e
-(the)h Fn(LS_COLORS)555 1081 y Fo(en)o(vironmen)o(t)14
-b(v)m(ariable.)20 b(The)15 b(default)g(is)g(`)p Fn(off)p
-Fo('.)315 1172 y Fn(colored-stats)555 1227 y Fo(If)f(set)f(to)f(`)p
-Fn(on)p Fo(',)g(Readline)i(displa)o(ys)e(p)q(ossible)h(completions)g
-(using)g(di\013eren)o(t)555 1282 y(colors)19 b(to)f(indicate)i(their)f
-(\014le)g(t)o(yp)q(e.)33 b(The)20 b(color)f(de\014nitions)g(are)g(tak)o
-(en)555 1337 y(from)12 b(the)g(v)m(alue)h(of)e(the)i
-Fn(LS_COLORS)e Fo(en)o(vironmen)o(t)h(v)m(ariable.)18
-b(The)12 b(default)555 1391 y(is)j(`)p Fn(off)p Fo('.)315
-1483 y Fn(comment-begin)555 1538 y Fo(The)31 b(string)f(to)h(insert)g
-(at)f(the)h(b)q(eginning)h(of)e(the)h(line)g(when)h(the)555
-1592 y Fn(insert-comment)13 b Fo(command)i(is)g(executed.)21
-b(The)15 b(default)g(v)m(alue)g(is)g Fn("#")p Fo(.)315
-1684 y Fn(completion-display-width)555 1738 y Fo(The)21
-b(n)o(um)o(b)q(er)g(of)g(screen)g(columns)f(used)i(to)e(displa)o(y)g(p)
-q(ossible)g(matc)o(hes)555 1793 y(when)15 b(p)q(erforming)f
-(completion.)19 b(The)14 b(v)m(alue)h(is)f(ignored)g(if)g(it)g(is)g
-(less)g(than)555 1848 y(0)f(or)f(greater)h(than)g(the)g(terminal)f
-(screen)h(width.)19 b(A)13 b(v)m(alue)g(of)g(0)g(will)f(cause)555
-1903 y(matc)o(hes)j(to)f(b)q(e)i(displa)o(y)o(ed)f(one)g(p)q(er)h
-(line.)j(The)d(default)e(v)m(alue)i(is)f(-1.)315 1994
-y Fn(completion-ignore-case)555 2049 y Fo(If)f(set)f(to)g(`)p
-Fn(on)p Fo(',)g(Readline)h(p)q(erforms)f(\014lename)h(matc)o(hing)f
-(and)h(completion)555 2104 y(in)h(a)g(case-insensitiv)o(e)f(fashion.)20
-b(The)15 b(default)g(v)m(alue)g(is)g(`)p Fn(off)p Fo('.)315
-2195 y Fn(completion-map-case)555 2250 y Fo(If)c(set)g(to)g(`)p
-Fn(on)p Fo(',)f(and)h Fe(completion-ignore-case)i Fo(is)e(enabled,)h
-(Readline)f(treats)555 2305 y(h)o(yphens)16 b(\(`)p Fn(-)p
-Fo('\))e(and)i(underscores)g(\(`)p Fn(_)p Fo('\))d(as)j(equiv)m(alen)o
-(t)f(when)h(p)q(erforming)555 2359 y(case-insensitiv)o(e)e(\014lename)i
-(matc)o(hing)e(and)h(completion.)315 2451 y Fn
-(completion-prefix-display-)o(length)555 2506 y Fo(The)h(length)f(in)h
-(c)o(haracters)f(of)g(the)h(common)f(pre\014x)h(of)f(a)h(list)e(of)h(p)
-q(ossible)555 2560 y(completions)f(that)g(is)g(displa)o(y)o(ed)g
-(without)g(mo)q(di\014cation.)19 b(When)c(set)g(to)f(a)555
-2615 y(v)m(alue)f(greater)f(than)h(zero,)f(common)h(pre\014xes)g
-(longer)f(than)h(this)f(v)m(alue)h(are)555 2670 y(replaced)i(with)g(an)
-g(ellipsis)f(when)i(displa)o(ying)e(p)q(ossible)h(completions.)p
-eop end
-%%Page: 6 9
-TeXDict begin 6 8 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(6)315 149 y Fn(completion-query-items)555
-204 y Fo(The)13 b(n)o(um)o(b)q(er)h(of)e(p)q(ossible)h(completions)g
-(that)f(determines)h(when)h(the)f(user)555 259 y(is)h(ask)o(ed)h
-(whether)g(the)f(list)g(of)g(p)q(ossibilities)f(should)i(b)q(e)g
-(displa)o(y)o(ed.)k(If)c(the)555 314 y(n)o(um)o(b)q(er)f(of)f(p)q
-(ossible)g(completions)f(is)h(greater)g(than)g(this)g(v)m(alue,)h
-(Readline)555 369 y(will)e(ask)h(the)g(user)h(whether)f(or)g(not)g(he)g
-(wishes)g(to)g(view)g(them;)g(otherwise,)555 423 y(they)f(are)g(simply)
-g(listed.)18 b(This)12 b(v)m(ariable)f(m)o(ust)h(b)q(e)h(set)f(to)f(an)
-h(in)o(teger)g(v)m(alue)555 478 y(greater)g(than)g(or)g(equal)g(to)g
-(0.)18 b(A)13 b(negativ)o(e)e(v)m(alue)i(means)f(Readline)h(should)555
-533 y(nev)o(er)i(ask.)20 b(The)15 b(default)g(limit)f(is)g
-Fn(100)p Fo(.)315 611 y Fn(convert-meta)555 666 y Fo(If)d(set)g(to)g(`)
-p Fn(on)p Fo(',)f(Readline)h(will)f(con)o(v)o(ert)g(c)o(haracters)h
-(with)f(the)h(eigh)o(th)g(bit)f(set)555 721 y(to)15 b(an)h
-Fh(asci)q(i)f Fo(k)o(ey)h(sequence)h(b)o(y)f(stripping)f(the)h(eigh)o
-(th)f(bit)h(and)g(pre\014xing)555 776 y(an)c Fn(ESC)g
-Fo(c)o(haracter,)g(con)o(v)o(erting)f(them)h(to)f(a)h(meta-pre\014xed)h
-(k)o(ey)f(sequence.)555 830 y(The)j(default)g(v)m(alue)h(is)e(`)p
-Fn(on)p Fo('.)315 909 y Fn(disable-completion)555 964
-y Fo(If)19 b(set)f(to)f(`)p Fn(On)p Fo(',)h(Readline)h(will)e(inhibit)g
-(w)o(ord)h(completion.)28 b(Completion)555 1018 y(c)o(haracters)12
-b(will)g(b)q(e)i(inserted)f(in)o(to)f(the)h(line)f(as)h(if)g(they)g
-(had)g(b)q(een)h(mapp)q(ed)555 1073 y(to)h Fn(self-insert)p
-Fo(.)j(The)d(default)g(is)g(`)p Fn(off)p Fo('.)315 1151
-y Fn(editing-mode)555 1206 y Fo(The)g Fn(editing-mode)d
-Fo(v)m(ariable)i(con)o(trols)f(whic)o(h)h(default)g(set)g(of)g(k)o(ey)g
-(bind-)555 1261 y(ings)e(is)g(used.)20 b(By)12 b(default,)h(Readline)f
-(starts)g(up)h(in)f(Emacs)g(editing)g(mo)q(de,)555 1316
-y(where)j(the)f(k)o(eystrok)o(es)g(are)g(most)g(similar)f(to)g(Emacs.)
-20 b(This)14 b(v)m(ariable)g(can)555 1371 y(b)q(e)i(set)f(to)f(either)h
-(`)p Fn(emacs)p Fo(')f(or)h(`)p Fn(vi)p Fo('.)315 1449
-y Fn(emacs-mode-string)555 1504 y Fo(This)f(string)g(is)h(displa)o(y)o
-(ed)f(immediately)f(b)q(efore)j(the)e(last)g(line)h(of)f(the)h(pri-)555
-1558 y(mary)21 b(prompt)g(when)h(emacs)g(editing)f(mo)q(de)h(is)f
-(activ)o(e.)39 b(The)22 b(v)m(alue)f(is)555 1613 y(expanded)15
-b(lik)o(e)f(a)g(k)o(ey)g(binding,)g(so)g(the)g(standard)g(set)g(of)g
-(meta-)g(and)h(con-)555 1668 y(trol)h(pre\014xes)j(and)f(bac)o(kslash)f
-(escap)q(e)h(sequences)h(is)e(a)o(v)m(ailable.)26 b(Use)18
-b(the)555 1723 y(`)p Fn(\\1)p Fo(')g(and)h(`)p Fn(\\2)p
-Fo(')f(escap)q(es)i(to)e(b)q(egin)h(and)g(end)h(sequences)g(of)f
-(non-prin)o(ting)555 1778 y(c)o(haracters,)11 b(whic)o(h)h(can)g(b)q(e)
-g(used)h(to)e(em)o(b)q(ed)h(a)g(terminal)e(con)o(trol)h(sequence)555
-1832 y(in)o(to)j(the)h(mo)q(de)h(string.)j(The)c(default)g(is)g(`)p
-Fn(@)p Fo('.)315 1911 y Fn(echo-control-characters)555
-1965 y Fo(When)h(set)e(to)h(`)p Fn(on)p Fo(',)f(on)h(op)q(erating)f
-(systems)h(that)f(indicate)h(they)g(supp)q(ort)555 2020
-y(it,)g(readline)g(ec)o(ho)q(es)h(a)g(c)o(haracter)f(corresp)q(onding)h
-(to)f(a)g(signal)g(generated)555 2075 y(from)f(the)i(k)o(eyb)q(oard.)k
-(The)15 b(default)g(is)f(`)p Fn(on)p Fo('.)315 2153 y
-Fn(enable-bracketed-paste)555 2208 y Fo(When)f(set)f(to)f(`)p
-Fn(On)p Fo(',)h(Readline)g(will)f(con\014gure)i(the)f(terminal)f(in)h
-(a)g(w)o(a)o(y)g(that)555 2263 y(will)h(enable)h(it)g(to)f(insert)h
-(eac)o(h)g(paste)g(in)o(to)f(the)h(editing)g(bu\013er)g(as)g(a)g
-(single)555 2318 y(string)h(of)h(c)o(haracters,)g(instead)g(of)f
-(treating)g(eac)o(h)i(c)o(haracter)e(as)h(if)g(it)g(had)555
-2373 y(b)q(een)i(read)e(from)g(the)h(k)o(eyb)q(oard.)24
-b(This)16 b(can)h(prev)o(en)o(t)f(pasted)h(c)o(haracters)555
-2427 y(from)d(b)q(eing)i(in)o(terpreted)f(as)g(editing)f(commands.)20
-b(The)15 b(default)g(is)g(`)p Fn(off)p Fo('.)315 2506
-y Fn(enable-keypad)555 2560 y Fo(When)d(set)f(to)h(`)p
-Fn(on)p Fo(',)e(Readline)i(will)f(try)g(to)g(enable)h(the)g
-(application)e(k)o(eypad)555 2615 y(when)k(it)e(is)h(called.)19
-b(Some)13 b(systems)g(need)h(this)f(to)g(enable)g(the)h(arro)o(w)e(k)o
-(eys.)555 2670 y(The)j(default)g(is)g(`)p Fn(off)p Fo('.)p
-eop end
-%%Page: 7 10
-TeXDict begin 7 9 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(7)315 149 y Fn(enable-meta-key)555 204
-y Fo(When)20 b(set)g(to)f(`)p Fn(on)p Fo(',)h(Readline)g(will)e(try)i
-(to)f(enable)h(an)o(y)g(meta)f(mo)q(di\014er)555 259
-y(k)o(ey)i(the)g(terminal)e(claims)h(to)g(supp)q(ort)h(when)h(it)e(is)g
-(called.)37 b(On)21 b(man)o(y)555 314 y(terminals,)16
-b(the)i(meta)f(k)o(ey)h(is)f(used)h(to)f(send)h(eigh)o(t-bit)e(c)o
-(haracters.)27 b(The)555 369 y(default)15 b(is)f(`)p
-Fn(on)p Fo('.)315 463 y Fn(expand-tilde)555 517 y Fo(If)g(set)g(to)f(`)
-p Fn(on)p Fo(',)f(tilde)i(expansion)f(is)h(p)q(erformed)g(when)g
-(Readline)g(attempts)555 572 y(w)o(ord)h(completion.)k(The)c(default)g
-(is)f(`)p Fn(off)p Fo('.)315 666 y Fn(history-preserve-point)555
-721 y Fo(If)21 b(set)g(to)f(`)p Fn(on)p Fo(',)h(the)g(history)f(co)q
-(de)h(attempts)f(to)g(place)h(the)g(p)q(oin)o(t)f(\(the)555
-776 y(curren)o(t)d(cursor)h(p)q(osition\))e(at)h(the)h(same)f(lo)q
-(cation)f(on)i(eac)o(h)g(history)e(line)555 830 y(retriev)o(ed)i(with)f
-Fn(previous-history)f Fo(or)i Fn(next-history)p Fo(.)27
-b(The)18 b(default)555 885 y(is)d(`)p Fn(off)p Fo('.)315
-979 y Fn(history-size)555 1034 y Fo(Set)20 b(the)f(maxim)o(um)g(n)o(um)
-o(b)q(er)h(of)f(history)f(en)o(tries)h(sa)o(v)o(ed)g(in)g(the)h
-(history)555 1089 y(list.)k(If)17 b(set)g(to)f(zero,)h(an)o(y)f
-(existing)g(history)g(en)o(tries)g(are)h(deleted)g(and)g(no)555
-1144 y(new)f(en)o(tries)f(are)h(sa)o(v)o(ed.)21 b(If)16
-b(set)g(to)f(a)h(v)m(alue)g(less)f(than)h(zero,)g(the)g(n)o(um)o(b)q
-(er)555 1198 y(of)f(history)f(en)o(tries)h(is)f(not)h(limited.)k(By)d
-(default,)e(the)i(n)o(um)o(b)q(er)f(of)g(history)555
-1253 y(en)o(tries)g(is)f(not)h(limited.)315 1347 y Fn
-(horizontal-scroll-mode)555 1402 y Fo(This)j(v)m(ariable)f(can)h(b)q(e)
-g(set)g(to)f(either)h(`)p Fn(on)p Fo(')f(or)g(`)p Fn(off)p
-Fo('.)27 b(Setting)18 b(it)f(to)g(`)p Fn(on)p Fo(')555
-1457 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)g(b)q(eing)g
-(edited)g(will)f(scroll)g(horizon)o(tally)555 1511 y(on)k(a)f(single)g
-(screen)i(line)e(when)i(they)f(are)f(longer)g(than)h(the)g(width)f(of)h
-(the)555 1566 y(screen,)e(instead)e(of)h(wrapping)f(on)o(to)g(a)h(new)g
-(screen)h(line.)19 b(By)13 b(default,)g(this)555 1621
-y(v)m(ariable)i(is)f(set)h(to)g(`)p Fn(off)p Fo('.)315
-1715 y Fn(input-meta)555 1770 y Fo(If)h(set)f(to)g(`)p
-Fn(on)p Fo(',)f(Readline)i(will)f(enable)g(eigh)o(t-bit)g(input)g(\(it)
-g(will)f(not)h(clear)555 1825 y(the)20 b(eigh)o(th)f(bit)g(in)h(the)g
-(c)o(haracters)f(it)g(reads\),)h(regardless)f(of)h(what)f(the)555
-1879 y(terminal)g(claims)g(it)g(can)h(supp)q(ort.)34
-b(The)20 b(default)g(v)m(alue)g(is)g(`)p Fn(off)p Fo('.)33
-b(The)555 1934 y(name)15 b Fn(meta-flag)f Fo(is)h(a)g(synon)o(ym)g(for)
-f(this)h(v)m(ariable.)315 2028 y Fn(isearch-terminators)555
-2083 y Fo(The)26 b(string)f(of)g(c)o(haracters)g(that)g(should)h
-(terminate)f(an)h(incremen)o(tal)555 2138 y(searc)o(h)12
-b(without)g(subsequen)o(tly)g(executing)h(the)f(c)o(haracter)g(as)g(a)g
-(command)555 2192 y(\(see)22 b(Section)g(1.2.5)f([Searc)o(hing],)i
-(page)f(3\).)40 b(If)23 b(this)f(v)m(ariable)f(has)h(not)555
-2247 y(b)q(een)d(giv)o(en)e(a)g(v)m(alue,)i(the)f(c)o(haracters)e
-Fn(ESC)i Fo(and)g Fg(C-J)f Fo(will)f(terminate)h(an)555
-2302 y(incremen)o(tal)d(searc)o(h.)315 2396 y Fn(keymap)96
-b Fo(Sets)19 b(Readline's)h(idea)f(of)g(the)g(curren)o(t)h(k)o(eymap)f
-(for)f(k)o(ey)i(binding)f(com-)555 2451 y(mands.)41 b(Acceptable)22
-b Fn(keymap)g Fo(names)g(are)f Fn(emacs)p Fo(,)i Fn(emacs-standard)p
-Fo(,)555 2506 y Fn(emacs-meta)p Fo(,)49 b Fn(emacs-ctlx)p
-Fo(,)g Fn(vi)p Fo(,)h Fn(vi-move)p Fo(,)f Fn(vi-command)p
-Fo(,)g(and)555 2560 y Fn(vi-insert)p Fo(.)31 b Fn(vi)20
-b Fo(is)f(equiv)m(alen)o(t)g(to)g Fn(vi-command)p Fo(;)g
-Fn(emacs)g Fo(is)g(equiv)m(alen)o(t)555 2615 y(to)c Fn(emacs-standard)p
-Fo(.)20 b(The)d(default)e(v)m(alue)h(is)g Fn(emacs)p
-Fo(.)21 b(The)16 b(v)m(alue)g(of)g(the)555 2670 y Fn(editing-mode)e
-Fo(v)m(ariable)g(also)g(a\013ects)h(the)g(default)g(k)o(eymap.)p
-eop end
-%%Page: 8 11
-TeXDict begin 8 10 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(8)315 149 y Fn(keyseq-timeout)555 204
-y Fo(Sp)q(eci\014es)14 b(the)f(duration)f(Readline)h(will)e(w)o(ait)g
-(for)h(a)h(c)o(haracter)f(when)h(read-)555 259 y(ing)i(an)f(am)o
-(biguous)g(k)o(ey)h(sequence)h(\(one)f(that)f(can)i(form)e(a)g
-(complete)h(k)o(ey)555 314 y(sequence)j(using)e(the)h(input)f(read)h
-(so)f(far,)g(or)g(can)h(tak)o(e)f(additional)f(input)555
-369 y(to)h(complete)g(a)g(longer)g(k)o(ey)g(sequence\).)25
-b(If)16 b(no)h(input)f(is)g(receiv)o(ed)h(within)555
-423 y(the)22 b(timeout,)f(Readline)h(will)e(use)i(the)g(shorter)e(but)i
-(complete)f(k)o(ey)h(se-)555 478 y(quence.)e(Readline)13
-b(uses)g(this)f(v)m(alue)h(to)g(determine)f(whether)h(or)g(not)f(input)
-555 533 y(is)j(a)o(v)m(ailable)f(on)h(the)g(curren)o(t)h(input)f
-(source)g(\()p Fn(rl_instream)f Fo(b)o(y)h(default\).)555
-588 y(The)e(v)m(alue)g(is)f(sp)q(eci\014ed)i(in)e(milliseconds,)g(so)g
-(a)g(v)m(alue)h(of)g(1000)e(means)i(that)555 643 y(Readline)e(will)f(w)
-o(ait)g(one)h(second)h(for)f(additional)e(input.)19 b(If)11
-b(this)g(v)m(ariable)f(is)555 697 y(set)k(to)f(a)h(v)m(alue)g(less)f
-(than)h(or)g(equal)f(to)h(zero,)f(or)h(to)f(a)h(non-n)o(umeric)g(v)m
-(alue,)555 752 y(Readline)h(will)e(w)o(ait)g(un)o(til)h(another)g(k)o
-(ey)h(is)f(pressed)h(to)f(decide)i(whic)o(h)e(k)o(ey)555
-807 y(sequence)i(to)f(complete.)20 b(The)15 b(default)g(v)m(alue)g(is)g
-Fn(500)p Fo(.)315 901 y Fn(mark-directories)555 956 y
-Fo(If)k(set)g(to)g(`)p Fn(on)p Fo(',)f(completed)h(directory)g(names)g
-(ha)o(v)o(e)f(a)h(slash)g(app)q(ended.)555 1010 y(The)c(default)g(is)g
-(`)p Fn(on)p Fo('.)315 1104 y Fn(mark-modified-lines)555
-1159 y Fo(This)j(v)m(ariable,)f(when)i(set)e(to)h(`)p
-Fn(on)p Fo(',)f(causes)h(Readline)g(to)f(displa)o(y)g(an)h(as-)555
-1214 y(terisk)e(\(`)p Fn(*)p Fo('\))f(at)i(the)f(start)g(of)h(history)e
-(lines)i(whic)o(h)f(ha)o(v)o(e)h(b)q(een)h(mo)q(di\014ed.)555
-1269 y(This)d(v)m(ariable)f(is)h(`)p Fn(off)p Fo(')f(b)o(y)h(default.)
-315 1363 y Fn(mark-symlinked-directories)555 1418 y Fo(If)30
-b(set)f(to)g(`)p Fn(on)p Fo(',)j(completed)e(names)g(whic)o(h)f(are)h
-(sym)o(b)q(olic)f(links)g(to)555 1472 y(directories)34
-b(ha)o(v)o(e)g(a)h(slash)f(app)q(ended)i(\(sub)s(ject)e(to)h(the)f(v)m
-(alue)h(of)555 1527 y Fn(mark-directories)p Fo(\).)17
-b(The)f(default)f(is)f(`)p Fn(off)p Fo('.)315 1621 y
-Fn(match-hidden-files)555 1676 y Fo(This)d(v)m(ariable,)g(when)g(set)g
-(to)g(`)p Fn(on)p Fo(',)f(causes)h(Readline)h(to)e(matc)o(h)h(\014les)g
-(whose)555 1731 y(names)22 b(b)q(egin)g(with)g(a)f(`)p
-Fn(.)p Fo(')h(\(hidden)g(\014les\))g(when)g(p)q(erforming)g(\014lename)
-555 1785 y(completion.)35 b(If)21 b(set)g(to)f(`)p Fn(off)p
-Fo(',)g(the)h(leading)f(`)p Fn(.)p Fo(')g(m)o(ust)g(b)q(e)h(supplied)g
-(b)o(y)555 1840 y(the)c(user)g(in)g(the)g(\014lename)h(to)e(b)q(e)i
-(completed.)25 b(This)17 b(v)m(ariable)f(is)h(`)p Fn(on)p
-Fo(')f(b)o(y)555 1895 y(default.)315 1989 y Fn
-(menu-complete-display-pref)o(ix)555 2044 y Fo(If)h(set)g(to)f(`)p
-Fn(on)p Fo(',)f(men)o(u)i(completion)f(displa)o(ys)g(the)h(common)f
-(pre\014x)i(of)e(the)555 2099 y(list)i(of)g(p)q(ossible)g(completions)g
-(\(whic)o(h)h(ma)o(y)f(b)q(e)h(empt)o(y\))f(b)q(efore)h(cycling)555
-2153 y(through)c(the)g(list.)k(The)c(default)g(is)g(`)p
-Fn(off)p Fo('.)315 2247 y Fn(output-meta)555 2302 y Fo(If)j(set)f(to)g
-(`)p Fn(on)p Fo(',)g(Readline)h(will)f(displa)o(y)g(c)o(haracters)f
-(with)i(the)f(eigh)o(th)g(bit)555 2357 y(set)h(directly)g(rather)f
-(than)h(as)g(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30
-b(The)555 2412 y(default)15 b(is)f(`)p Fn(off)p Fo('.)315
-2506 y Fn(page-completions)555 2560 y Fo(If)j(set)g(to)f(`)p
-Fn(on)p Fo(',)g(Readline)h(uses)h(an)e(in)o(ternal)g
-Fn(more)p Fo(-lik)o(e)g(pager)h(to)f(displa)o(y)555 2615
-y(a)g(screenful)g(of)g(p)q(ossible)g(completions)f(at)h(a)g(time.)22
-b(This)16 b(v)m(ariable)f(is)h(`)p Fn(on)p Fo(')555 2670
-y(b)o(y)f(default.)p eop end
-%%Page: 9 12
-TeXDict begin 9 11 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1075 b(9)315 149 y Fn(print-completions-horizont)o(ally)555
-204 y Fo(If)12 b(set)g(to)f(`)p Fn(on)p Fo(',)h(Readline)g(will)e
-(displa)o(y)i(completions)f(with)g(matc)o(hes)g(sorted)555
-259 y(horizon)o(tally)20 b(in)h(alphab)q(etical)g(order,)i(rather)e
-(than)g(do)o(wn)h(the)g(screen.)555 314 y(The)15 b(default)g(is)g(`)p
-Fn(off)p Fo('.)315 396 y Fn(revert-all-at-newline)555
-451 y Fo(If)g(set)g(to)f(`)p Fn(on)p Fo(',)f(Readline)i(will)f(undo)h
-(all)f(c)o(hanges)g(to)h(history)e(lines)i(b)q(efore)555
-506 y(returning)f(when)h Fn(accept-line)e Fo(is)g(executed.)21
-b(By)14 b(default,)g(history)f(lines)555 560 y(ma)o(y)20
-b(b)q(e)i(mo)q(di\014ed)f(and)g(retain)f(individual)g(undo)i(lists)d
-(across)i(calls)f(to)555 615 y Fn(readline)p Fo(.)f(The)c(default)g(is)
-g(`)p Fn(off)p Fo('.)315 697 y Fn(show-all-if-ambiguous)555
-752 y Fo(This)g(alters)e(the)j(default)e(b)q(eha)o(vior)h(of)f(the)h
-(completion)f(functions.)20 b(If)15 b(set)555 807 y(to)e(`)p
-Fn(on)p Fo(',)g(w)o(ords)g(whic)o(h)g(ha)o(v)o(e)h(more)f(than)g(one)h
-(p)q(ossible)g(completion)f(cause)555 862 y(the)20 b(matc)o(hes)f(to)f
-(b)q(e)j(listed)d(immediately)g(instead)h(of)g(ringing)g(the)g(b)q
-(ell.)555 917 y(The)c(default)g(v)m(alue)h(is)e(`)p Fn(off)p
-Fo('.)315 999 y Fn(show-all-if-unmodified)555 1054 y
-Fo(This)19 b(alters)f(the)i(default)e(b)q(eha)o(vior)h(of)g(the)h
-(completion)e(functions)h(in)g(a)555 1108 y(fashion)12
-b(similar)f(to)h Fe(sho)o(w-all-if-am)o(biguous)p Fo(.)17
-b(If)c(set)f(to)g(`)p Fn(on)p Fo(',)g(w)o(ords)g(whic)o(h)555
-1163 y(ha)o(v)o(e)j(more)g(than)g(one)h(p)q(ossible)f(completion)f
-(without)h(an)o(y)g(p)q(ossible)g(par-)555 1218 y(tial)20
-b(completion)g(\(the)h(p)q(ossible)g(completions)f(don't)h(share)g(a)f
-(common)555 1273 y(pre\014x\))15 b(cause)h(the)f(matc)o(hes)g(to)f(b)q
-(e)i(listed)e(immediately)g(instead)h(of)f(ring-)555
-1328 y(ing)h(the)g(b)q(ell.)20 b(The)15 b(default)g(v)m(alue)g(is)g(`)p
-Fn(off)p Fo('.)315 1410 y Fn(show-mode-in-prompt)555
-1465 y Fo(If)g(set)g(to)f(`)p Fn(on)p Fo(',)g(add)h(a)g(c)o(haracter)f
-(to)h(the)g(b)q(eginning)g(of)f(the)i(prompt)e(indi-)555
-1519 y(cating)h(the)g(editing)g(mo)q(de:)21 b(emacs,)15
-b(vi)g(command,)h(or)f(vi)g(insertion.)20 b(The)555 1574
-y(mo)q(de)15 b(strings)g(are)f(user-settable.)20 b(The)15
-b(default)g(v)m(alue)h(is)e(`)p Fn(off)p Fo('.)315 1656
-y Fn(skip-completed-text)555 1711 y Fo(If)j(set)f(to)g(`)p
-Fn(on)p Fo(',)f(this)h(alters)f(the)i(default)f(completion)f(b)q(eha)o
-(vior)h(when)h(in-)555 1766 y(serting)d(a)g(single)g(matc)o(h)g(in)o
-(to)f(the)i(line.)k(It's)14 b(only)g(activ)o(e)g(when)h(p)q(erform-)555
-1821 y(ing)i(completion)f(in)h(the)h(middle)f(of)g(a)g(w)o(ord.)25
-b(If)18 b(enabled,)g(readline)f(do)q(es)555 1875 y(not)j(insert)g(c)o
-(haracters)f(from)h(the)g(completion)f(that)h(matc)o(h)g(c)o(haracters)
-555 1930 y(after)e(p)q(oin)o(t)g(in)g(the)g(w)o(ord)g(b)q(eing)h
-(completed,)g(so)f(p)q(ortions)f(of)h(the)h(w)o(ord)555
-1985 y(follo)o(wing)14 b(the)h(cursor)h(are)g(not)f(duplicated.)22
-b(F)l(or)15 b(instance,)g(if)h(this)f(is)g(en-)555 2040
-y(abled,)21 b(attempting)e(completion)g(when)i(the)f(cursor)g(is)g
-(after)g(the)g(`)p Fn(e)p Fo(')f(in)555 2095 y(`)p Fn(Makefile)p
-Fo(')e(will)g(result)h(in)h(`)p Fn(Makefile)p Fo(')e(rather)h(than)h(`)
-p Fn(Makefilefile)p Fo(',)555 2149 y(assuming)e(there)h(is)f(a)g
-(single)g(p)q(ossible)g(completion.)27 b(The)18 b(default)f(v)m(alue)
-555 2204 y(is)e(`)p Fn(off)p Fo('.)315 2286 y Fn(vi-cmd-mode-string)555
-2341 y Fo(This)f(string)g(is)h(displa)o(y)o(ed)f(immediately)f(b)q
-(efore)j(the)e(last)g(line)h(of)f(the)h(pri-)555 2396
-y(mary)10 b(prompt)g(when)i(vi)e(editing)g(mo)q(de)h(is)f(activ)o(e)g
-(and)h(in)f(command)h(mo)q(de.)555 2451 y(The)19 b(v)m(alue)h(is)e
-(expanded)j(lik)o(e)d(a)h(k)o(ey)g(binding,)h(so)e(the)i(standard)e
-(set)h(of)555 2506 y(meta-)14 b(and)g(con)o(trol)f(pre\014xes)i(and)g
-(bac)o(kslash)f(escap)q(e)h(sequences)g(is)f(a)o(v)m(ail-)555
-2560 y(able.)24 b(Use)17 b(the)f(`)p Fn(\\1)p Fo(')g(and)h(`)p
-Fn(\\2)p Fo(')e(escap)q(es)j(to)e(b)q(egin)h(and)f(end)i(sequences)f
-(of)555 2615 y(non-prin)o(ting)i(c)o(haracters,)i(whic)o(h)f(can)g(b)q
-(e)h(used)g(to)e(em)o(b)q(ed)i(a)f(terminal)555 2670
-y(con)o(trol)14 b(sequence)i(in)o(to)e(the)i(mo)q(de)f(string.)k(The)c
-(default)g(is)g(`)p Fn(\(cmd\))p Fo('.)p eop end
-%%Page: 10 13
-TeXDict begin 10 12 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(10)315 149 y Fn(vi-ins-mode-string)555
-204 y Fo(This)14 b(string)g(is)h(displa)o(y)o(ed)f(immediately)f(b)q
-(efore)j(the)e(last)g(line)h(of)f(the)h(pri-)555 259
-y(mary)d(prompt)g(when)h(vi)f(editing)g(mo)q(de)h(is)f(activ)o(e)f(and)
-i(in)f(insertion)g(mo)q(de.)555 314 y(The)19 b(v)m(alue)h(is)e
-(expanded)j(lik)o(e)d(a)h(k)o(ey)g(binding,)h(so)e(the)i(standard)e
-(set)h(of)555 369 y(meta-)14 b(and)g(con)o(trol)f(pre\014xes)i(and)g
-(bac)o(kslash)f(escap)q(e)h(sequences)g(is)f(a)o(v)m(ail-)555
-423 y(able.)24 b(Use)17 b(the)f(`)p Fn(\\1)p Fo(')g(and)h(`)p
-Fn(\\2)p Fo(')e(escap)q(es)j(to)e(b)q(egin)h(and)f(end)i(sequences)f
-(of)555 478 y(non-prin)o(ting)i(c)o(haracters,)i(whic)o(h)f(can)g(b)q
-(e)h(used)g(to)e(em)o(b)q(ed)i(a)f(terminal)555 533 y(con)o(trol)14
-b(sequence)i(in)o(to)e(the)i(mo)q(de)f(string.)k(The)c(default)g(is)g
-(`)p Fn(\(ins\))p Fo('.)315 611 y Fn(visible-stats)555
-666 y Fo(If)h(set)g(to)f(`)p Fn(on)p Fo(',)g(a)h(c)o(haracter)f
-(denoting)g(a)h(\014le's)g(t)o(yp)q(e)g(is)f(app)q(ended)j(to)d(the)555
-721 y(\014lename)g(when)h(listing)e(p)q(ossible)h(completions.)j(The)e
-(default)f(is)f(`)p Fn(off)p Fo('.)75 799 y(Key)i(Bindings)315
-854 y(The)21 b(syn)o(tax)f(for)h(con)o(trolling)e(k)o(ey)i(bindings)f
-(in)h(the)g(init)f(\014le)h(is)g(simple.)37 b(First)19
-b(y)o(ou)315 909 y(need)c(to)e(\014nd)h(the)g(name)g(of)g(the)f
-(command)h(that)f(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19
-b(The)14 b(follo)o(wing)315 964 y(sections)j(con)o(tain)h(tables)f(of)g
-(the)h(command)g(name,)g(the)g(default)g(k)o(eybinding,)g(if)f(an)o(y)l
-(,)315 1018 y(and)e(a)g(short)g(description)g(of)f(what)h(the)g
-(command)g(do)q(es.)315 1085 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g
-(of)g(the)g(command,)g(simply)f(place)h(on)g(a)f(line)h(in)g(the)g
-(init)315 1140 y(\014le)f(the)g(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f
-(wish)h(to)f(bind)h(the)g(command)g(to,)f(a)g(colon,)h(and)g(then)315
-1194 y(the)f(name)g(of)g(the)g(command.)22 b(There)17
-b(can)f(b)q(e)h(no)f(space)g(b)q(et)o(w)o(een)h(the)f(k)o(ey)g(name)g
-(and)315 1249 y(the)k(colon)g({)g(that)g(will)f(b)q(e)i(in)o(terpreted)
-f(as)g(part)g(of)g(the)h(k)o(ey)f(name.)35 b(The)21 b(name)f(of)315
-1304 y(the)d(k)o(ey)g(can)h(b)q(e)g(expressed)g(in)f(di\013eren)o(t)f
-(w)o(a)o(ys,)h(dep)q(ending)h(on)f(what)g(y)o(ou)g(\014nd)h(most)315
-1359 y(comfortable.)315 1425 y(In)h(addition)e(to)g(command)h(names,)g
-(readline)g(allo)o(ws)e(k)o(eys)i(to)f(b)q(e)i(b)q(ound)g(to)e(a)h
-(string)315 1480 y(that)c(is)h(inserted)g(when)h(the)f(k)o(ey)g(is)g
-(pressed)h(\(a)e Fe(macro)r Fo(\).)315 1558 y Fe(k)o(eyname)s
-Fo(:)19 b Fe(function-name)f Fo(or)d Fe(macro)555 1613
-y(k)o(eyname)i Fo(is)d(the)g(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)h(out)
-f(in)g(English.)19 b(F)l(or)13 b(example:)675 1680 y
-Fn(Control-u:)22 b(universal-argument)675 1735 y(Meta-Rubout:)g
-(backward-kill-word)675 1789 y(Control-o:)g(">)i(output")555
-1856 y Fo(In)48 b(the)f(ab)q(o)o(v)o(e)g(example,)55
-b Fg(C-u)46 b Fo(is)h(b)q(ound)h(to)f(the)g(function)555
-1911 y Fn(universal-argument)p Fo(,)61 b Fg(M-DEL)54
-b Fo(is)g(b)q(ound)i(to)e(the)g(function)555 1965 y Fn
-(backward-kill-word)p Fo(,)37 b(and)e Fg(C-o)g Fo(is)f(b)q(ound)i(to)e
-(run)i(the)f(macro)555 2020 y(expressed)24 b(on)e(the)h(righ)o(t)f
-(hand)h(side)g(\(that)f(is,)i(to)e(insert)g(the)h(text)g(`)p
-Fn(>)555 2075 y(output)p Fo(')14 b(in)o(to)g(the)h(line\).)555
-2142 y(A)31 b(n)o(um)o(b)q(er)g(of)g(sym)o(b)q(olic)f(c)o(haracter)g
-(names)h(are)f(recognized)h(while)555 2196 y(pro)q(cessing)20
-b(this)f(k)o(ey)h(binding)g(syn)o(tax:)28 b Fe(DEL)p
-Fo(,)21 b Fe(ESC)p Fo(,)g Fe(ESCAPE)p Fo(,)g Fe(LFD)p
-Fo(,)555 2251 y Fe(NEWLINE)p Fo(,)15 b Fe(RET)p Fo(,)g
-Fe(RETURN)p Fo(,)h Fe(R)o(UBOUT)p Fo(,)g Fe(SP)l(A)o(CE)p
-Fo(,)e Fe(SPC)p Fo(,)h(and)g Fe(T)l(AB)p Fo(.)315 2329
-y Fn(")p Fe(k)o(eyseq)q Fn(")p Fo(:)20 b Fe(function-name)d
-Fo(or)e Fe(macro)555 2384 y(k)o(eyseq)i Fo(di\013ers)d(from)h
-Fe(k)o(eyname)j Fo(ab)q(o)o(v)o(e)d(in)h(that)e(strings)h(denoting)g
-(an)g(en-)555 2439 y(tire)h(k)o(ey)h(sequence)h(can)f(b)q(e)g(sp)q
-(eci\014ed,)h(b)o(y)f(placing)f(the)h(k)o(ey)g(sequence)h(in)555
-2494 y(double)d(quotes.)k(Some)c Fh(gnu)g Fo(Emacs)f(st)o(yle)g(k)o(ey)
-h(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 2549 y(in)i(the)g(follo)o
-(wing)d(example,)j(but)g(the)g(sp)q(ecial)g(c)o(haracter)f(names)h(are)
-f(not)555 2603 y(recognized.)675 2670 y Fn("\\C-u":)23
-b(universal-argument)p eop end
-%%Page: 11 14
-TeXDict begin 11 13 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(11)675 149 y Fn("\\C-x\\C-r":)22 b(re-read-init-file)
-675 204 y("\\e[11~":)h("Function)f(Key)i(1")555 277 y
-Fo(In)33 b(the)f(ab)q(o)o(v)o(e)g(example,)k Fg(C-u)c
-Fo(is)g(again)f(b)q(ound)i(to)f(the)g(function)555 332
-y Fn(universal-argument)19 b Fo(\(just)j(as)f(it)g(w)o(as)g(in)h(the)g
-(\014rst)f(example\),)i(`)p Fg(C-x)555 386 y(C-r)p Fo(')14
-b(is)h(b)q(ound)h(to)f(the)g(function)g Fn(re-read-init-file)p
-Fo(,)d(and)k(`)p Fn(ESC)e([)h(1)g(1)555 441 y(~)p Fo(')g(is)f(b)q(ound)
-j(to)d(insert)h(the)g(text)g(`)p Fn(Function)e(Key)i(1)p
-Fo('.)315 531 y(The)g(follo)o(wing)e Fh(gnu)h Fo(Emacs)h(st)o(yle)f
-(escap)q(e)i(sequences)g(are)e(a)o(v)m(ailable)g(when)h(sp)q(ecifying)
-315 586 y(k)o(ey)g(sequences:)315 676 y Fg(\\C-)168 b
-Fo(con)o(trol)14 b(pre\014x)315 767 y Fg(\\M-)168 b Fo(meta)15
-b(pre\014x)315 857 y Fg(\\e)192 b Fo(an)15 b(escap)q(e)h(c)o(haracter)
-315 947 y Fg(\\\\)192 b Fo(bac)o(kslash)315 1037 y Fg(\\)p
-Fn(")g(")p Fo(,)15 b(a)g(double)g(quotation)f(mark)315
-1127 y Fg(\\')192 b Fn(')p Fo(,)15 b(a)g(single)f(quote)h(or)g(ap)q
-(ostrophe)315 1218 y(In)f(addition)f(to)h(the)f Fh(gnu)h
-Fo(Emacs)g(st)o(yle)e(escap)q(e)j(sequences,)g(a)e(second)i(set)e(of)h
-(bac)o(kslash)315 1272 y(escap)q(es)i(is)f(a)o(v)m(ailable:)315
-1363 y Fn(\\a)192 b Fo(alert)14 b(\(b)q(ell\))315 1453
-y Fn(\\b)192 b Fo(bac)o(kspace)315 1543 y Fn(\\d)g Fo(delete)315
-1633 y Fn(\\f)g Fo(form)14 b(feed)315 1724 y Fn(\\n)192
-b Fo(newline)315 1814 y Fn(\\r)g Fo(carriage)14 b(return)315
-1904 y Fn(\\t)192 b Fo(horizon)o(tal)14 b(tab)315 1994
-y Fn(\\v)192 b Fo(v)o(ertical)14 b(tab)315 2084 y Fn(\\)p
-Fg(nnn)144 b Fo(the)17 b(eigh)o(t-bit)f(c)o(haracter)h(whose)g(v)m
-(alue)h(is)e(the)i(o)q(ctal)e(v)m(alue)i Fe(nnn)g Fo(\(one)f(to)555
-2139 y(three)e(digits\))315 2229 y Fn(\\x)p Fg(HH)144
-b Fo(the)19 b(eigh)o(t-bit)f(c)o(haracter)h(whose)g(v)m(alue)g(is)g
-(the)g(hexadecimal)g(v)m(alue)g Fe(HH)555 2284 y Fo(\(one)c(or)g(t)o(w)
-o(o)f(hex)h(digits\))315 2375 y(When)k(en)o(tering)f(the)h(text)f(of)g
-(a)h(macro,)f(single)g(or)g(double)h(quotes)g(m)o(ust)f(b)q(e)h(used)h
-(to)315 2429 y(indicate)10 b(a)h(macro)f(de\014nition.)18
-b(Unquoted)11 b(text)f(is)h(assumed)f(to)h(b)q(e)g(a)f(function)h
-(name.)18 b(In)315 2484 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o
-(kslash)f(escap)q(es)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(are)g(expanded.)
-20 b(Bac)o(kslash)315 2539 y(will)f(quote)g(an)o(y)h(other)g(c)o
-(haracter)f(in)h(the)g(macro)f(text,)h(including)g(`)p
-Fn(")p Fo(')f(and)h(`)p Fn(')p Fo('.)34 b(F)l(or)315
-2594 y(example,)13 b(the)g(follo)o(wing)d(binding)j(will)f(mak)o(e)g(`)
-p Fg(C-x)i Fn(\\)p Fo(')f(insert)f(a)h(single)f(`)p Fn(\\)p
-Fo(')g(in)o(to)g(the)h(line:)435 2666 y Fn("\\C-x\\\\":)23
-b("\\\\")p eop end
-%%Page: 12 15
-TeXDict begin 12 14 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(12)75 149 y Fd(1.3.2)30 b(Conditional)20
-b(Init)g(Constructs)75 223 y Fo(Readline)f(implemen)o(ts)e(a)h(facilit)
-o(y)f(similar)f(in)i(spirit)g(to)f(the)i(conditional)e(compilation)f
-(features)i(of)75 278 y(the)d(C)h(prepro)q(cessor)f(whic)o(h)g(allo)o
-(ws)f(k)o(ey)h(bindings)g(and)h(v)m(ariable)e(settings)h(to)f(b)q(e)i
-(p)q(erformed)g(as)f(the)75 333 y(result)g(of)f(tests.)20
-b(There)15 b(are)g(four)g(parser)g(directiv)o(es)f(used.)75
-412 y Fn($if)168 b Fo(The)16 b Fn($if)f Fo(construct)g(allo)o(ws)f
-(bindings)i(to)f(b)q(e)h(made)g(based)g(on)f(the)h(editing)f(mo)q(de,)h
-(the)315 467 y(terminal)i(b)q(eing)h(used,)h(or)f(the)g(application)f
-(using)g(Readline.)32 b(The)19 b(text)g(of)f(the)i(test)315
-522 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)g(no)g(c)o(haracters)
-f(are)h(required)h(to)e(isolate)g(it.)315 601 y Fn(mode)144
-b Fo(The)15 b Fn(mode=)g Fo(form)f(of)h(the)g Fn($if)f
-Fo(directiv)o(e)h(is)f(used)i(to)e(test)h(whether)g(Read-)555
-656 y(line)21 b(is)g(in)h Fn(emacs)f Fo(or)g Fn(vi)g
-Fo(mo)q(de.)40 b(This)21 b(ma)o(y)g(b)q(e)h(used)g(in)g(conjunction)555
-711 y(with)d(the)h(`)p Fn(set)14 b(keymap)p Fo(')19 b(command,)h(for)f
-(instance,)h(to)f(set)h(bindings)f(in)555 766 y(the)d
-Fn(emacs-standard)e Fo(and)i Fn(emacs-ctlx)e Fo(k)o(eymaps)i(only)f(if)
-g(Readline)h(is)555 821 y(starting)e(out)g(in)h Fn(emacs)g
-Fo(mo)q(de.)315 900 y Fn(term)144 b Fo(The)14 b Fn(term=)e
-Fo(form)h(ma)o(y)g(b)q(e)h(used)g(to)f(include)h(terminal-sp)q
-(eci\014c)f(k)o(ey)g(bind-)555 955 y(ings,)18 b(p)q(erhaps)h(to)e(bind)
-h(the)h(k)o(ey)e(sequences)j(output)e(b)o(y)g(the)g(terminal's)555
-1010 y(function)12 b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o
-(t)f(side)g(of)h(the)g(`)p Fn(=)p Fo(')f(is)g(tested)h(against)555
-1065 y(b)q(oth)j(the)g(full)g(name)g(of)f(the)h(terminal)f(and)h(the)g
-(p)q(ortion)g(of)f(the)h(terminal)555 1120 y(name)i(b)q(efore)g(the)g
-(\014rst)f(`)p Fn(-)p Fo('.)24 b(This)16 b(allo)o(ws)f
-Fn(sun)h Fo(to)g(matc)o(h)h(b)q(oth)f Fn(sun)h Fo(and)555
-1174 y Fn(sun-cmd)p Fo(,)d(for)g(instance.)315 1254 y
-Fn(application)555 1309 y Fo(The)d Fe(application)f Fo(construct)h(is)f
-(used)i(to)e(include)h(application-sp)q(eci\014c)g(set-)555
-1364 y(tings.)18 b(Eac)o(h)12 b(program)f(using)i(the)f(Readline)h
-(library)e(sets)h(the)g Fe(application)555 1418 y(name)p
-Fo(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)f(v)m(alue.)19
-b(This)11 b(could)h(b)q(e)g(used)h(to)555 1473 y(bind)k(k)o(ey)f
-(sequences)i(to)d(functions)i(useful)f(for)g(a)g(sp)q(eci\014c)h
-(program.)23 b(F)l(or)555 1528 y(instance,)16 b(the)h(follo)o(wing)d
-(command)j(adds)f(a)g(k)o(ey)h(sequence)g(that)f(quotes)555
-1583 y(the)f(curren)o(t)g(or)g(previous)g(w)o(ord)f(in)i(Bash:)675
-1650 y Fn($if)23 b(Bash)675 1705 y(#)h(Quote)f(the)g(current)g(or)h
-(previous)f(word)675 1760 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
-1814 y($endif)75 1894 y($endif)96 b Fo(This)15 b(command,)f(as)h(seen)h
-(in)f(the)g(previous)g(example,)g(terminates)f(an)h Fn($if)f
-Fo(command.)75 1974 y Fn($else)120 b Fo(Commands)15 b(in)g(this)f
-(branc)o(h)i(of)e(the)i Fn($if)e Fo(directiv)o(e)h(are)g(executed)h(if)
-f(the)g(test)g(fails.)75 2054 y Fn($include)48 b Fo(This)21
-b(directiv)o(e)g(tak)o(es)g(a)h(single)f(\014lename)h(as)f(an)h
-(argumen)o(t)f(and)h(reads)f(commands)315 2108 y(and)e(bindings)h(from)
-e(that)h(\014le.)32 b(F)l(or)19 b(example,)h(the)f(follo)o(wing)e
-(directiv)o(e)i(reads)g(from)315 2163 y Fn(/etc/inputrc)p
-Fo(:)435 2230 y Fn($include)k(/etc/inputrc)75 2330 y
-Fd(1.3.3)30 b(Sample)20 b(Init)h(File)75 2403 y Fo(Here)13
-b(is)g(an)g(example)g(of)g(an)g Fe(inputrc)j Fo(\014le.)k(This)12
-b(illustrates)g(k)o(ey)h(binding,)g(v)m(ariable)g(assignmen)o(t,)f(and)
-75 2458 y(conditional)i(syn)o(tax.)p eop end
-%%Page: 13 16
-TeXDict begin 13 15 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(13)195 204 y Fn(#)24 b(This)f(file)g(controls)g(the)h
-(behaviour)e(of)i(line)f(input)g(editing)g(for)195 259
-y(#)h(programs)e(that)i(use)f(the)h(GNU)f(Readline)g(library.)47
-b(Existing)195 314 y(#)24 b(programs)e(include)h(FTP,)h(Bash,)f(and)g
-(GDB.)195 369 y(#)195 423 y(#)h(You)f(can)h(re-read)f(the)g(inputrc)g
-(file)g(with)h(C-x)f(C-r.)195 478 y(#)h(Lines)f(beginning)g(with)g('#')
-g(are)h(comments.)195 533 y(#)195 588 y(#)g(First,)f(include)g(any)g
-(system-wide)f(bindings)h(and)h(variable)195 643 y(#)g(assignments)e
-(from)h(/etc/Inputrc)195 697 y($include)g(/etc/Inputrc)195
-807 y(#)195 862 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)
-195 971 y(set)g(editing-mode)g(emacs)195 1081 y($if)g(mode=emacs)195
-1191 y(Meta-Control-h:)46 b(backward-kill-word)21 b(Text)i(after)h(the)
-f(function)g(name)g(is)h(ignored)p 1985 1201 21 38 v
-195 1300 a(#)195 1355 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
-1410 y(#)195 1465 y(#"\\M-OD":)190 b(backward-char)195
-1519 y(#"\\M-OC":)g(forward-char)195 1574 y(#"\\M-OA":)g
-(previous-history)195 1629 y(#"\\M-OB":)g(next-history)195
-1684 y(#)195 1738 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
-1793 y(#)195 1848 y("\\M-[D":)190 b(backward-char)195
-1903 y("\\M-[C":)g(forward-char)195 1958 y("\\M-[A":)g
-(previous-history)195 2012 y("\\M-[B":)g(next-history)195
-2067 y(#)195 2122 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
-195 2177 y(#)195 2232 y(#"\\M-\\C-OD":)165 b(backward-char)195
-2286 y(#"\\M-\\C-OC":)g(forward-char)195 2341 y(#"\\M-\\C-OA":)g
-(previous-history)195 2396 y(#"\\M-\\C-OB":)g(next-history)195
-2451 y(#)195 2506 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
-195 2560 y(#)195 2615 y(#"\\M-\\C-[D":)165 b(backward-char)195
-2670 y(#"\\M-\\C-[C":)g(forward-char)p eop end
-%%Page: 14 17
-TeXDict begin 14 16 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(14)195 149 y Fn(#"\\M-\\C-[A":)165 b(previous-history)
-195 204 y(#"\\M-\\C-[B":)g(next-history)195 314 y(C-q:)23
-b(quoted-insert)195 423 y($endif)195 533 y(#)h(An)f(old-style)g
-(binding.)47 b(This)23 b(happens)g(to)g(be)h(the)f(default.)195
-588 y(TAB:)g(complete)195 697 y(#)h(Macros)f(that)g(are)h(convenient)e
-(for)h(shell)h(interaction)195 752 y($if)f(Bash)195 807
-y(#)h(edit)f(the)g(path)195 862 y("\\C-xp":)g
-("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195 917 y(#)h(prepare)f(to)g
-(type)h(a)f(quoted)g(word)h(--)195 971 y(#)g(insert)f(open)g(and)h
-(close)f(double)g(quotes)195 1026 y(#)h(and)f(move)g(to)h(just)f(after)
-h(the)f(open)g(quote)195 1081 y("\\C-x\\"":)g("\\"\\"\\C-b")195
-1136 y(#)h(insert)f(a)g(backslash)g(\(testing)g(backslash)g(escapes)195
-1191 y(#)h(in)f(sequences)g(and)g(macros\))195 1245 y("\\C-x\\\\":)g
-("\\\\")195 1300 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)195
-1355 y("\\C-xq":)g("\\eb\\"\\ef\\"")195 1410 y(#)h(Add)f(a)h(binding)f
-(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)195
-1465 y("\\C-xr":)f(redraw-current-line)195 1519 y(#)h(Edit)f(variable)g
-(on)g(current)g(line.)195 1574 y("\\M-\\C-v":)f
-("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")195 1629 y($endif)195
-1738 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)195
-1793 y(set)f(bell-style)g(visible)195 1903 y(#)h(don't)f(strip)g
-(characters)g(to)g(7)h(bits)f(when)h(reading)195 1958
-y(set)f(input-meta)g(on)195 2067 y(#)h(allow)f(iso-latin1)f(characters)
-h(to)g(be)h(inserted)f(rather)195 2122 y(#)h(than)f(converted)g(to)g
-(prefix-meta)g(sequences)195 2177 y(set)g(convert-meta)g(off)195
-2286 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
-(directly)195 2341 y(#)g(rather)f(than)g(as)h(meta-prefixed)e
-(characters)195 2396 y(set)h(output-meta)g(on)195 2506
-y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
-(for)195 2560 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g(he)h(wants)f
-(to)h(see)f(all)h(of)f(them)195 2615 y(set)g(completion-query-items)e
-(150)p eop end
-%%Page: 15 18
-TeXDict begin 15 17 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(15)195 149 y Fn(#)24 b(For)f(FTP)195
-204 y($if)g(Ftp)195 259 y("\\C-xg":)g("get)g(\\M-?")195
-314 y("\\C-xt":)g("put)g(\\M-?")195 369 y("\\M-.":)g(yank-last-arg)195
-423 y($endif)75 539 y Fm(1.4)33 b(Bindable)22 b(Readline)f(Commands)75
-618 y Fo(This)12 b(section)h(describ)q(es)g(Readline)g(commands)g(that)
-f(ma)o(y)g(b)q(e)i(b)q(ound)f(to)g(k)o(ey)f(sequences.)20
-b(Command)75 673 y(names)15 b(without)f(an)h(accompan)o(ying)g(k)o(ey)g
-(sequence)h(are)f(un)o(b)q(ound)i(b)o(y)e(default.)137
-740 y(In)f(the)f(follo)o(wing)e(descriptions,)i Fe(p)q(oin)o(t)g
-Fo(refers)g(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)h(and)g
-Fe(mark)i Fo(refers)75 795 y(to)k(a)g(cursor)g(p)q(osition)f(sa)o(v)o
-(ed)h(b)o(y)h(the)f Fn(set-mark)g Fo(command.)32 b(The)20
-b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)f(and)75
-850 y(mark)c(is)f(referred)i(to)e(as)h(the)g Fe(region)p
-Fo(.)75 948 y Fd(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
-b(Mo)n(ving)75 1034 y Fn(beginning-of-line)13 b(\(C-a\))315
-1089 y Fo(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g
-(line.)75 1167 y Fn(end-of-line)f(\(C-e\))315 1222 y
-Fo(Mo)o(v)o(e)g(to)h(the)g(end)h(of)f(the)g(line.)75
-1301 y Fn(forward-char)f(\(C-f\))315 1356 y Fo(Mo)o(v)o(e)g(forw)o(ard)
-g(a)h(c)o(haracter.)75 1434 y Fn(backward-char)e(\(C-b\))315
-1489 y Fo(Mo)o(v)o(e)h(bac)o(k)h(a)g(c)o(haracter.)75
-1568 y Fn(forward-word)f(\(M-f\))315 1623 y Fo(Mo)o(v)o(e)g(forw)o(ard)
-g(to)g(the)i(end)g(of)e(the)h(next)h(w)o(ord.)j(W)l(ords)c(are)f(comp)q
-(osed)i(of)f(letters)f(and)315 1678 y(digits.)75 1756
-y Fn(backward-word)f(\(M-b\))315 1811 y Fo(Mo)o(v)o(e)j(bac)o(k)g(to)h
-(the)f(start)g(of)g(the)h(curren)o(t)g(or)f(previous)h(w)o(ord.)24
-b(W)l(ords)16 b(are)h(comp)q(osed)315 1866 y(of)e(letters)f(and)h
-(digits.)75 1945 y Fn(clear-screen)f(\(C-l\))315 2000
-y Fo(Clear)e(the)i(screen)g(and)f(redra)o(w)g(the)g(curren)o(t)g(line,)
-g(lea)o(ving)g(the)g(curren)o(t)g(line)g(at)g(the)g(top)315
-2054 y(of)i(the)g(screen.)75 2133 y Fn(redraw-current-line)e(\(\))315
-2188 y Fo(Refresh)j(the)f(curren)o(t)g(line.)20 b(By)15
-b(default,)g(this)f(is)h(un)o(b)q(ound.)75 2287 y Fd(1.4.2)30
-b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f(History)75
-2372 y Fn(accept-line)14 b(\(Newline)g(or)h(Return\))315
-2427 y Fo(Accept)j(the)g(line)f(regardless)g(of)g(where)h(the)g(cursor)
-f(is.)26 b(If)18 b(this)f(line)g(is)h(non-empt)o(y)l(,)g(it)315
-2482 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)f(list)f(for)i
-(future)g(recall)f(with)g Fn(add_history\(\))p Fo(.)20
-b(If)d(this)315 2536 y(line)e(is)g(a)f(mo)q(di\014ed)i(history)e(line,)
-h(the)g(history)f(line)h(is)g(restored)f(to)h(its)f(original)g(state.)
-75 2615 y Fn(previous-history)f(\(C-p\))315 2670 y Fo(Mo)o(v)o(e)h
-(`bac)o(k')h(through)f(the)i(history)e(list,)f(fetc)o(hing)i(the)g
-(previous)g(command.)p eop end
-%%Page: 16 19
-TeXDict begin 16 18 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(16)75 149 y Fn(next-history)14 b(\(C-n\))315
-204 y Fo(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)e(list,)f
-(fetc)o(hing)i(the)g(next)h(command.)75 279 y Fn(beginning-of-history)c
-(\(M-<\))315 334 y Fo(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)g(in)g
-(the)g(history)l(.)75 408 y Fn(end-of-history)e(\(M->\))315
-463 y Fo(Mo)o(v)o(e)h(to)h(the)g(end)h(of)f(the)g(input)g(history)l(,)f
-(i.e.,)g(the)h(line)g(curren)o(tly)g(b)q(eing)g(en)o(tered.)75
-538 y Fn(reverse-search-history)d(\(C-r\))315 593 y Fo(Searc)o(h)k(bac)
-o(kw)o(ard)e(starting)g(at)h(the)h(curren)o(t)f(line)h(and)f(mo)o(ving)
-g(`up')g(through)g(the)h(his-)315 648 y(tory)e(as)h(necessary)l(.)20
-b(This)15 b(is)g(an)g(incremen)o(tal)f(searc)o(h.)75
-722 y Fn(forward-search-history)e(\(C-s\))315 777 y Fo(Searc)o(h)22
-b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)h(and)g(mo)o
-(ving)f(`do)o(wn')f(through)i(the)315 832 y(history)14
-b(as)h(necessary)l(.)20 b(This)15 b(is)g(an)g(incremen)o(tal)f(searc)o
-(h.)75 907 y Fn(non-incremental-reverse-se)o(arch-hi)o(story)e(\(M-p\))
-315 961 y Fo(Searc)o(h)k(bac)o(kw)o(ard)e(starting)g(at)h(the)h(curren)
-o(t)f(line)h(and)f(mo)o(ving)g(`up')g(through)g(the)h(his-)315
-1016 y(tory)h(as)h(necessary)g(using)g(a)f(non-incremen)o(tal)h(searc)o
-(h)g(for)f(a)h(string)f(supplied)h(b)o(y)g(the)315 1071
-y(user.)i(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)o
-(ywhere)g(in)g(a)g(history)f(line.)75 1146 y Fn
-(non-incremental-forward-se)o(arch-hi)o(story)e(\(M-n\))315
-1200 y Fo(Searc)o(h)22 b(forw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
-f(line)h(and)g(mo)o(ving)f(`do)o(wn')f(through)i(the)315
-1255 y(history)12 b(as)h(necessary)h(using)f(a)g(non-incremen)o(tal)g
-(searc)o(h)g(for)g(a)g(string)f(supplied)i(b)o(y)f(the)315
-1310 y(user.)20 b(The)15 b(searc)o(h)g(string)g(ma)o(y)f(matc)o(h)h(an)
-o(ywhere)g(in)g(a)g(history)f(line.)75 1385 y Fn
-(history-search-forward)e(\(\))315 1440 y Fo(Searc)o(h)21
-b(forw)o(ard)e(through)i(the)f(history)g(for)g(the)h(string)f(of)g(c)o
-(haracters)g(b)q(et)o(w)o(een)h(the)315 1494 y(start)c(of)g(the)h
-(curren)o(t)g(line)g(and)g(the)g(p)q(oin)o(t.)28 b(The)18
-b(searc)o(h)g(string)f(m)o(ust)g(matc)o(h)h(at)f(the)315
-1549 y(b)q(eginning)f(of)g(a)g(history)f(line.)23 b(This)16
-b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)f(this)315 1604 y(command)f(is)g(un)o(b)q(ound.)75
-1679 y Fn(history-search-backward)d(\(\))315 1733 y Fo(Searc)o(h)18
-b(bac)o(kw)o(ard)e(through)h(the)h(history)e(for)h(the)g(string)g(of)g
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 1788 y(start)f(of)g(the)h
-(curren)o(t)g(line)g(and)g(the)g(p)q(oin)o(t.)28 b(The)18
-b(searc)o(h)g(string)f(m)o(ust)g(matc)o(h)h(at)f(the)315
-1843 y(b)q(eginning)f(of)g(a)g(history)f(line.)23 b(This)16
-b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)f(this)315 1898 y(command)f(is)g(un)o(b)q(ound.)75
-1973 y Fn(history-substr-search-forw)o(ard)d(\(\))315
-2027 y Fo(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)g(for)g
-(the)h(string)f(of)g(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-2082 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h(the)f(p)q(oin)o
-(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g(an)o(ywhere)315
-2137 y(in)i(a)g(history)f(line.)23 b(This)16 b(is)g(a)g(non-incremen)o
-(tal)f(searc)o(h.)23 b(By)17 b(default,)e(this)h(command)315
-2192 y(is)f(un)o(b)q(ound.)75 2267 y Fn(history-substr-search-back)o
-(ward)d(\(\))315 2321 y Fo(Searc)o(h)18 b(bac)o(kw)o(ard)e(through)h
-(the)h(history)e(for)h(the)g(string)g(of)g(c)o(haracters)f(b)q(et)o(w)o
-(een)i(the)315 2376 y(start)13 b(of)h(the)h(curren)o(t)f(line)g(and)h
-(the)f(p)q(oin)o(t.)19 b(The)c(searc)o(h)f(string)f(ma)o(y)h(matc)o(h)g
-(an)o(ywhere)315 2431 y(in)i(a)g(history)f(line.)23 b(This)16
-b(is)g(a)g(non-incremen)o(tal)f(searc)o(h.)23 b(By)17
-b(default,)e(this)h(command)315 2486 y(is)f(un)o(b)q(ound.)75
-2560 y Fn(yank-nth-arg)f(\(M-C-y\))315 2615 y Fo(Insert)19
-b(the)f(\014rst)h(argumen)o(t)e(to)h(the)h(previous)f(command)g
-(\(usually)g(the)h(second)g(w)o(ord)315 2670 y(on)d(the)g(previous)g
-(line\))f(at)g(p)q(oin)o(t.)22 b(With)15 b(an)h(argumen)o(t)f
-Fe(n)p Fo(,)h(insert)f(the)h Fe(n)p Fo(th)g(w)o(ord)g(from)p
-eop end
-%%Page: 17 20
-TeXDict begin 17 19 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(17)315 149 y(the)18 b(previous)f(command)g(\(the)g(w)o
-(ords)g(in)g(the)h(previous)f(command)g(b)q(egin)h(with)f(w)o(ord)315
-204 y(0\).)33 b(A)20 b(negativ)o(e)f(argumen)o(t)g(inserts)g(the)h
-Fe(n)p Fo(th)g(w)o(ord)f(from)g(the)h(end)g(of)f(the)h(previous)315
-259 y(command.)k(Once)17 b(the)g(argumen)o(t)e Fe(n)i
-Fo(is)f(computed,)h(the)f(argumen)o(t)g(is)g(extracted)g(as)g(if)315
-314 y(the)f(`)p Fn(!)p Fg(n)p Fo(')f(history)h(expansion)g(had)g(b)q
-(een)h(sp)q(eci\014ed.)75 388 y Fn(yank-last-arg)d(\(M-.)i(or)g(M-_\))
-315 442 y Fo(Insert)j(last)e(argumen)o(t)h(to)g(the)g(previous)h
-(command)f(\(the)g(last)g(w)o(ord)g(of)g(the)g(previous)315
-497 y(history)f(en)o(try\).)24 b(With)16 b(a)g(n)o(umeric)h(argumen)o
-(t,)f(b)q(eha)o(v)o(e)h(exactly)f(lik)o(e)g Fn(yank-nth-arg)p
-Fo(.)315 552 y(Successiv)o(e)d(calls)e(to)h Fn(yank-last-arg)f
-Fo(mo)o(v)o(e)g(bac)o(k)i(through)f(the)g(history)g(list,)f(inserting)
-315 607 y(the)g(last)g(w)o(ord)f(\(or)h(the)g(w)o(ord)g(sp)q(eci\014ed)
-h(b)o(y)f(the)h(argumen)o(t)e(to)h(the)g(\014rst)g(call\))f(of)h(eac)o
-(h)g(line)315 662 y(in)18 b(turn.)29 b(An)o(y)18 b(n)o(umeric)g
-(argumen)o(t)g(supplied)g(to)g(these)g(successiv)o(e)h(calls)e
-(determines)315 716 y(the)g(direction)g(to)g(mo)o(v)o(e)g(through)g
-(the)g(history)l(.)26 b(A)17 b(negativ)o(e)g(argumen)o(t)f(switc)o(hes)
-h(the)315 771 y(direction)11 b(through)g(the)g(history)g(\(bac)o(k)g
-(or)g(forw)o(ard\).)17 b(The)11 b(history)g(expansion)g(facilities)315
-826 y(are)i(used)i(to)e(extract)g(the)h(last)e(argumen)o(t,)h(as)h(if)f
-(the)h(`)p Fn(!$)p Fo(')e(history)h(expansion)h(had)g(b)q(een)315
-881 y(sp)q(eci\014ed.)75 975 y Fd(1.4.3)30 b(Commands)21
-b(F)-5 b(or)19 b(Changing)i(T)-5 b(ext)75 1057 y Fg(end-of-file)14
-b Fn(\(usually)g(C-d\))315 1112 y Fo(The)f(c)o(haracter)g(indicating)f
-(end-of-\014le)i(as)e(set,)h(for)g(example,)g(b)o(y)g
-Fn(stty)p Fo(.)18 b(If)c(this)e(c)o(harac-)315 1167 y(ter)f(is)f(read)h
-(when)g(there)g(are)g(no)g(c)o(haracters)f(on)h(the)g(line,)g(and)g(p)q
-(oin)o(t)f(is)h(at)f(the)h(b)q(eginning)315 1222 y(of)k(the)g(line,)g
-(Readline)g(in)o(terprets)f(it)h(as)g(the)g(end)h(of)f(input)g(and)g
-(returns)g Fh(eof)p Fo(.)75 1296 y Fn(delete-char)f(\(C-d\))315
-1350 y Fo(Delete)i(the)h(c)o(haracter)f(at)g(p)q(oin)o(t.)23
-b(If)17 b(this)f(function)h(is)f(b)q(ound)i(to)e(the)g(same)h(c)o
-(haracter)315 1405 y(as)e(the)g(tt)o(y)f Fh(eof)i Fo(c)o(haracter,)e
-(as)h Fg(C-d)g Fo(commonly)f(is,)g(see)i(ab)q(o)o(v)o(e)f(for)f(the)i
-(e\013ects.)75 1479 y Fn(backward-delete-char)c(\(Rubout\))315
-1534 y Fo(Delete)j(the)g(c)o(haracter)f(b)q(ehind)i(the)g(cursor.)j(A)c
-(n)o(umeric)g(argumen)o(t)f(means)i(to)e(kill)g(the)315
-1589 y(c)o(haracters)g(instead)h(of)g(deleting)g(them.)75
-1662 y Fn(forward-backward-delete-ch)o(ar)d(\(\))315
-1717 y Fo(Delete)19 b(the)g(c)o(haracter)f(under)i(the)f(cursor,)h
-(unless)f(the)g(cursor)g(is)g(at)f(the)h(end)h(of)f(the)315
-1772 y(line,)c(in)h(whic)o(h)g(case)f(the)h(c)o(haracter)g(b)q(ehind)g
-(the)g(cursor)g(is)f(deleted.)22 b(By)16 b(default,)g(this)315
-1827 y(is)f(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 1901
-y Fn(quoted-insert)e(\(C-q)i(or)g(C-v\))315 1955 y Fo(Add)j(the)f(next)
-g(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)e(v)o(erbatim.)25
-b(This)17 b(is)f(ho)o(w)h(to)g(insert)f(k)o(ey)315 2010
-y(sequences)g(lik)o(e)f Fg(C-q)p Fo(,)f(for)h(example.)75
-2084 y Fn(tab-insert)f(\(M-TAB\))315 2139 y Fo(Insert)h(a)g(tab)g(c)o
-(haracter.)75 2213 y Fn(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o
-(\))315 2267 y Fo(Insert)g(y)o(ourself.)75 2341 y Fn
-(bracketed-paste-begin)d(\(\))315 2396 y Fo(This)g(function)g(is)g(in)o
-(tended)h(to)f(b)q(e)h(b)q(ound)g(to)f(the)h Fn(")p Fo(brac)o(k)o(eted)
-f(paste)p Fn(")g Fo(escap)q(e)h(sequence)315 2451 y(sen)o(t)18
-b(b)o(y)h(some)g(terminals,)f(and)g(suc)o(h)i(a)e(binding)h(is)f
-(assigned)g(b)o(y)h(default.)30 b(It)19 b(allo)o(ws)315
-2506 y(Readline)e(to)e(insert)h(the)g(pasted)g(text)g(as)g(a)g(single)g
-(unit)g(without)f(treating)g(eac)o(h)h(c)o(har-)315 2560
-y(acter)j(as)g(if)g(it)g(had)g(b)q(een)i(read)e(from)g(the)g(k)o(eyb)q
-(oard.)33 b(The)19 b(c)o(haracters)g(are)g(inserted)315
-2615 y(as)h(if)g(eac)o(h)h(one)g(w)o(as)e(b)q(ound)j(to)e
-Fn(self-insert)p Fo(\))e(instead)j(of)f(executing)g(an)o(y)h(editing)
-315 2670 y(commands.)p eop end
-%%Page: 18 21
-TeXDict begin 18 20 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(18)75 149 y Fn(transpose-chars)13 b(\(C-t\))315
-204 y Fo(Drag)i(the)h(c)o(haracter)f(b)q(efore)h(the)h(cursor)e(forw)o
-(ard)g(o)o(v)o(er)g(the)h(c)o(haracter)f(at)h(the)g(cursor,)315
-259 y(mo)o(ving)h(the)g(cursor)h(forw)o(ard)e(as)i(w)o(ell.)26
-b(If)18 b(the)g(insertion)f(p)q(oin)o(t)g(is)g(at)g(the)h(end)h(of)e
-(the)315 314 y(line,)11 b(then)g(this)g(transp)q(oses)f(the)h(last)f(t)
-o(w)o(o)g(c)o(haracters)g(of)h(the)g(line.)18 b(Negativ)o(e)10
-b(argumen)o(ts)315 369 y(ha)o(v)o(e)15 b(no)g(e\013ect.)75
-453 y Fn(transpose-words)e(\(M-t\))315 508 y Fo(Drag)i(the)h(w)o(ord)g
-(b)q(efore)g(p)q(oin)o(t)g(past)g(the)g(w)o(ord)f(after)h(p)q(oin)o(t,)
-f(mo)o(ving)g(p)q(oin)o(t)h(past)g(that)315 563 y(w)o(ord)d(as)h(w)o
-(ell.)19 b(If)14 b(the)g(insertion)g(p)q(oin)o(t)f(is)h(at)g(the)g(end)
-h(of)e(the)i(line,)e(this)h(transp)q(oses)g(the)315 618
-y(last)g(t)o(w)o(o)g(w)o(ords)g(on)i(the)f(line.)75 703
-y Fn(upcase-word)f(\(M-u\))315 757 y Fo(Upp)q(ercase)j(the)f(curren)o
-(t)g(\(or)f(follo)o(wing\))e(w)o(ord.)22 b(With)15 b(a)h(negativ)o(e)f
-(argumen)o(t,)g(upp)q(er-)315 812 y(case)g(the)g(previous)g(w)o(ord,)g
-(but)g(do)g(not)g(mo)o(v)o(e)f(the)i(cursor.)75 897 y
-Fn(downcase-word)d(\(M-l\))315 952 y Fo(Lo)o(w)o(ercase)d(the)h(curren)
-o(t)g(\(or)f(follo)o(wing\))e(w)o(ord.)17 b(With)10 b(a)h(negativ)o(e)f
-(argumen)o(t,)g(lo)o(w)o(ercase)315 1007 y(the)15 b(previous)g(w)o
-(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f(the)h(cursor.)75
-1091 y Fn(capitalize-word)e(\(M-c\))315 1146 y Fo(Capitalize)c(the)i
-(curren)o(t)f(\(or)g(follo)o(wing\))e(w)o(ord.)18 b(With)10
-b(a)g(negativ)o(e)g(argumen)o(t,)g(capitalize)315 1201
-y(the)15 b(previous)g(w)o(ord,)f(but)i(do)f(not)g(mo)o(v)o(e)f(the)h
-(cursor.)75 1286 y Fn(overwrite-mode)e(\(\))315 1341
-y Fo(T)l(oggle)i(o)o(v)o(erwrite)g(mo)q(de.)24 b(With)16
-b(an)g(explicit)g(p)q(ositiv)o(e)g(n)o(umeric)g(argumen)o(t,)g(switc)o
-(hes)315 1395 y(to)10 b(o)o(v)o(erwrite)f(mo)q(de.)19
-b(With)10 b(an)h(explicit)f(non-p)q(ositiv)o(e)g(n)o(umeric)h(argumen)o
-(t,)f(switc)o(hes)h(to)315 1450 y(insert)k(mo)q(de.)20
-b(This)15 b(command)g(a\013ects)g(only)g Fn(emacs)f Fo(mo)q(de;)h
-Fn(vi)g Fo(mo)q(de)h(do)q(es)g(o)o(v)o(erwrite)315 1505
-y(di\013eren)o(tly)l(.)j(Eac)o(h)c(call)f(to)h Fn(readline\(\))f
-Fo(starts)f(in)j(insert)e(mo)q(de.)315 1575 y(In)27 b(o)o(v)o(erwrite)d
-(mo)q(de,)29 b(c)o(haracters)c(b)q(ound)i(to)f Fn(self-insert)f
-Fo(replace)h(the)g(text)g(at)315 1629 y(p)q(oin)o(t)j(rather)g(than)g
-(pushing)g(the)h(text)f(to)f(the)i(righ)o(t.)61 b(Characters)28
-b(b)q(ound)j(to)315 1684 y Fn(backward-delete-char)12
-b Fo(replace)k(the)f(c)o(haracter)f(b)q(efore)i(p)q(oin)o(t)f(with)f(a)
-h(space.)315 1754 y(By)g(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 1859 y Fd(1.4.4)30 b(Killing)20 b(And)h(Y)-5
-b(anking)75 1947 y Fn(kill-line)14 b(\(C-k\))315 2002
-y Fo(Kill)g(the)i(text)e(from)h(p)q(oin)o(t)g(to)f(the)h(end)h(of)f
-(the)g(line.)75 2087 y Fn(backward-kill-line)e(\(C-x)h(Rubout\))315
-2142 y Fo(Kill)g(bac)o(kw)o(ard)h(from)f(the)i(cursor)e(to)h(the)g(b)q
-(eginning)h(of)e(the)i(curren)o(t)f(line.)75 2226 y Fn
-(unix-line-discard)e(\(C-u\))315 2281 y Fo(Kill)h(bac)o(kw)o(ard)h
-(from)f(the)i(cursor)e(to)h(the)g(b)q(eginning)h(of)e(the)i(curren)o(t)
-f(line.)75 2366 y Fn(kill-whole-line)e(\(\))315 2421
-y Fo(Kill)k(all)h(c)o(haracters)f(on)h(the)h(curren)o(t)f(line,)g(no)g
-(matter)g(where)g(p)q(oin)o(t)g(is.)28 b(By)19 b(default,)315
-2476 y(this)c(is)f(un)o(b)q(ound.)75 2560 y Fn(kill-word)g(\(M-d\))315
-2615 y Fo(Kill)g(from)g(p)q(oin)o(t)g(to)g(the)h(end)g(of)f(the)h
-(curren)o(t)g(w)o(ord,)e(or)i(if)f(b)q(et)o(w)o(een)h(w)o(ords,)e(to)i
-(the)f(end)315 2670 y(of)h(the)g(next)g(w)o(ord.)20 b(W)l(ord)14
-b(b)q(oundaries)i(are)f(the)g(same)g(as)g Fn(forward-word)p
-Fo(.)p eop end
-%%Page: 19 22
-TeXDict begin 19 21 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(19)75 149 y Fn(backward-kill-word)13
-b(\(M-DEL\))315 204 y Fo(Kill)h(the)g(w)o(ord)g(b)q(ehind)h(p)q(oin)o
-(t.)20 b(W)l(ord)14 b(b)q(oundaries)g(are)g(the)h(same)f(as)g
-Fn(backward-word)p Fo(.)75 288 y Fn(unix-word-rubout)f(\(C-w\))315
-343 y Fo(Kill)i(the)h(w)o(ord)f(b)q(ehind)i(p)q(oin)o(t,)e(using)h
-(white)f(space)h(as)g(a)f(w)o(ord)g(b)q(oundary)l(.)23
-b(The)16 b(killed)315 398 y(text)f(is)f(sa)o(v)o(ed)h(on)g(the)h
-(kill-ring.)75 482 y Fn(unix-filename-rubout)c(\(\))315
-537 y Fo(Kill)17 b(the)i(w)o(ord)e(b)q(ehind)i(p)q(oin)o(t,)f(using)g
-(white)g(space)g(and)h(the)f(slash)g(c)o(haracter)f(as)h(the)315
-591 y(w)o(ord)d(b)q(oundaries.)20 b(The)15 b(killed)g(text)f(is)h(sa)o
-(v)o(ed)g(on)g(the)g(kill-ring.)75 675 y Fn(delete-horizontal-space)d
-(\(\))315 730 y Fo(Delete)j(all)f(spaces)h(and)h(tabs)e(around)i(p)q
-(oin)o(t.)j(By)c(default,)g(this)f(is)h(un)o(b)q(ound.)75
-814 y Fn(kill-region)f(\(\))315 869 y Fo(Kill)g(the)i(text)e(in)h(the)h
-(curren)o(t)f(region.)k(By)c(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 953 y Fn(copy-region-as-kill)e(\(\))315 1008
-y Fo(Cop)o(y)j(the)i(text)e(in)h(the)g(region)f(to)h(the)g(kill)e
-(bu\013er,)i(so)g(it)f(can)h(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)f(a)o(w)o
-(a)o(y)l(.)315 1063 y(By)f(default,)g(this)f(command)h(is)g(un)o(b)q
-(ound.)75 1147 y Fn(copy-backward-word)e(\(\))315 1202
-y Fo(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)g(to)f(the)i
-(kill)e(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)g(are)g(the)315
-1256 y(same)c(as)g Fn(backward-word)p Fo(.)j(By)d(default,)f(this)h
-(command)g(is)g(un)o(b)q(ound.)75 1340 y Fn(copy-forward-word)e(\(\))
-315 1395 y Fo(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)g(p)q(oin)o(t)h
-(to)g(the)g(kill)g(bu\013er.)20 b(The)c(w)o(ord)f(b)q(oundaries)h(are)f
-(the)315 1450 y(same)g(as)g Fn(forward-word)p Fo(.)j(By)d(default,)g
-(this)f(command)h(is)g(un)o(b)q(ound.)75 1534 y Fn(yank)g(\(C-y\))315
-1589 y Fo(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)e(ring)g(in)o(to)g(the)
-i(bu\013er)f(at)f(p)q(oin)o(t.)75 1673 y Fn(yank-pop)g(\(M-y\))315
-1728 y Fo(Rotate)j(the)g(kill-ring,)f(and)h(y)o(ank)g(the)h(new)f(top.)
-26 b(Y)l(ou)17 b(can)h(only)f(do)g(this)g(if)f(the)i(prior)315
-1782 y(command)d(is)g Fn(yank)f Fo(or)h Fn(yank-pop)p
-Fo(.)75 1886 y Fd(1.4.5)30 b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)
-75 1974 y Fn(digit-argument)13 b(\()p Fg(M-0)p Fn(,)i
-Fg(M-1)p Fn(,)f(...)h Fg(M--)p Fn(\))315 2029 y Fo(Add)f(this)f(digit)f
-(to)h(the)h(argumen)o(t)e(already)h(accum)o(ulating,)f(or)h(start)f(a)h
-(new)h(argumen)o(t.)315 2084 y Fg(M--)h Fo(starts)f(a)h(negativ)o(e)f
-(argumen)o(t.)75 2168 y Fn(universal-argument)f(\(\))315
-2223 y Fo(This)f(is)h(another)f(w)o(a)o(y)g(to)g(sp)q(ecify)h(an)g
-(argumen)o(t.)18 b(If)13 b(this)f(command)h(is)f(follo)o(w)o(ed)f(b)o
-(y)i(one)315 2278 y(or)h(more)h(digits,)e(optionally)g(with)h(a)h
-(leading)f(min)o(us)g(sign,)g(those)h(digits)e(de\014ne)j(the)f(ar-)315
-2332 y(gumen)o(t.)k(If)c(the)g(command)f(is)g(follo)o(w)o(ed)f(b)o(y)i
-(digits,)e(executing)h Fn(universal-argument)315 2387
-y Fo(again)h(ends)h(the)g(n)o(umeric)g(argumen)o(t,)f(but)h(is)g
-(otherwise)f(ignored.)21 b(As)16 b(a)g(sp)q(ecial)f(case,)315
-2442 y(if)h(this)g(command)g(is)g(immediately)f(follo)o(w)o(ed)g(b)o(y)
-h(a)g(c)o(haracter)g(that)g(is)g(neither)g(a)g(digit)315
-2497 y(nor)k(min)o(us)h(sign,)g(the)f(argumen)o(t)g(coun)o(t)h(for)f
-(the)g(next)h(command)g(is)f(m)o(ultiplied)f(b)o(y)315
-2552 y(four.)27 b(The)17 b(argumen)o(t)g(coun)o(t)g(is)g(initially)f
-(one,)i(so)f(executing)g(this)g(function)h(the)f(\014rst)315
-2606 y(time)d(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)h(four,)g(a)g
-(second)h(time)f(mak)o(es)f(the)i(argumen)o(t)e(coun)o(t)315
-2661 y(sixteen,)i(and)g(so)g(on.)20 b(By)15 b(default,)f(this)h(is)g
-(not)g(b)q(ound)h(to)e(a)h(k)o(ey)l(.)p eop end
-%%Page: 20 23
-TeXDict begin 20 22 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(20)75 149 y Fd(1.4.6)30 b(Letting)20
-b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5 b(ou)75
-242 y Fn(complete)14 b(\(TAB\))315 296 y Fo(A)o(ttempt)c(to)h(p)q
-(erform)g(completion)g(on)g(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)18
-b(The)11 b(actual)g(completion)315 351 y(p)q(erformed)k(is)g
-(application-sp)q(eci\014c.)20 b(The)15 b(default)g(is)g(\014lename)g
-(completion.)75 443 y Fn(possible-completions)d(\(M-?\))315
-498 y Fo(List)17 b(the)g(p)q(ossible)g(completions)g(of)g(the)g(text)g
-(b)q(efore)h(p)q(oin)o(t.)25 b(When)18 b(displa)o(ying)e(com-)315
-553 y(pletions,)f(Readline)i(sets)f(the)g(n)o(um)o(b)q(er)h(of)e
-(columns)h(used)h(for)f(displa)o(y)f(to)h(the)g(v)m(alue)g(of)315
-608 y Fn(completion-display-width)p Fo(,)f(the)k(v)m(alue)f(of)g(the)g
-(en)o(vironmen)o(t)g(v)m(ariable)f Fn(COLUMNS)p Fo(,)315
-662 y(or)e(the)g(screen)h(width,)e(in)h(that)g(order.)75
-754 y Fn(insert-completions)e(\(M-*\))315 809 y Fo(Insert)j(all)e
-(completions)g(of)h(the)g(text)g(b)q(efore)h(p)q(oin)o(t)e(that)h(w)o
-(ould)g(ha)o(v)o(e)g(b)q(een)h(generated)315 864 y(b)o(y)f
-Fn(possible-completions)p Fo(.)75 956 y Fn(menu-complete)e(\(\))315
-1011 y Fo(Similar)d(to)i Fn(complete)p Fo(,)f(but)h(replaces)g(the)g(w)
-o(ord)f(to)g(b)q(e)i(completed)e(with)h(a)f(single)h(matc)o(h)315
-1066 y(from)18 b(the)h(list)f(of)g(p)q(ossible)h(completions.)30
-b(Rep)q(eated)20 b(execution)f(of)g Fn(menu-complete)315
-1120 y Fo(steps)h(through)g(the)g(list)f(of)h(p)q(ossible)g
-(completions,)g(inserting)f(eac)o(h)h(matc)o(h)f(in)h(turn.)315
-1175 y(A)o(t)e(the)g(end)h(of)f(the)h(list)e(of)h(completions,)g(the)g
-(b)q(ell)h(is)e(rung)i(\(sub)s(ject)f(to)f(the)i(setting)315
-1230 y(of)f Fn(bell-style)p Fo(\))e(and)i(the)g(original)e(text)i(is)f
-(restored.)28 b(An)19 b(argumen)o(t)e(of)g Fe(n)i Fo(mo)o(v)o(es)e
-Fe(n)315 1285 y Fo(p)q(ositions)f(forw)o(ard)g(in)i(the)f(list)f(of)h
-(matc)o(hes;)h(a)f(negativ)o(e)f(argumen)o(t)h(ma)o(y)g(b)q(e)h(used)g
-(to)315 1339 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h(through)g(the)g(list.)30
-b(This)19 b(command)g(is)g(in)o(tended)g(to)g(b)q(e)h(b)q(ound)g(to)315
-1394 y Fn(TAB)p Fo(,)14 b(but)i(is)e(un)o(b)q(ound)j(b)o(y)e(default.)
-75 1486 y Fn(menu-complete-backward)d(\(\))315 1541 y
-Fo(Iden)o(tical)17 b(to)g Fn(menu-complete)p Fo(,)f(but)i(mo)o(v)o(es)e
-(bac)o(kw)o(ard)h(through)g(the)h(list)e(of)h(p)q(ossible)315
-1596 y(completions,)d(as)h(if)f Fn(menu-complete)g Fo(had)h(b)q(een)h
-(giv)o(en)f(a)g(negativ)o(e)f(argumen)o(t.)75 1688 y
-Fn(delete-char-or-list)f(\(\))315 1743 y Fo(Deletes)19
-b(the)g(c)o(haracter)g(under)h(the)g(cursor)f(if)g(not)g(at)g(the)g(b)q
-(eginning)h(or)f(end)h(of)f(the)315 1798 y(line)24 b(\(lik)o(e)g
-Fn(delete-char)p Fo(\).)47 b(If)25 b(at)f(the)h(end)g(of)g(the)g(line,)
-h(b)q(eha)o(v)o(es)f(iden)o(tically)f(to)315 1852 y Fn
-(possible-completions)p Fo(.)17 b(This)e(command)g(is)g(un)o(b)q(ound)h
-(b)o(y)f(default.)75 1964 y Fd(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 2056 y Fn(start-kbd-macro)13 b(\(C-x)i(\(\))315
-2111 y Fo(Begin)g(sa)o(ving)f(the)i(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)e(the)h(curren)o(t)g(k)o(eyb)q(oard)g(macro.)75 2203
-y Fn(end-kbd-macro)e(\(C-x)i(\)\))315 2258 y Fo(Stop)f(sa)o(ving)e(the)
-i(c)o(haracters)f(t)o(yp)q(ed)h(in)o(to)e(the)i(curren)o(t)g(k)o(eyb)q
-(oard)f(macro)g(and)h(sa)o(v)o(e)f(the)315 2313 y(de\014nition.)75
-2405 y Fn(call-last-kbd-macro)g(\(C-x)h(e\))315 2460
-y Fo(Re-execute)19 b(the)f(last)e(k)o(eyb)q(oard)i(macro)f(de\014ned,)i
-(b)o(y)e(making)g(the)h(c)o(haracters)e(in)i(the)315
-2514 y(macro)c(app)q(ear)i(as)f(if)f(t)o(yp)q(ed)i(at)e(the)i(k)o(eyb)q
-(oard.)75 2606 y Fn(print-last-kbd-macro)c(\(\))315 2661
-y Fo(Prin)o(t)i(the)h(last)g(k)o(eb)q(oard)g(macro)f(de\014ned)j(in)e
-(a)g(format)f(suitable)g(for)h(the)g Fe(inputrc)j Fo(\014le.)p
-eop end
-%%Page: 21 24
-TeXDict begin 21 23 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(21)75 149 y Fd(1.4.8)30 b(Some)20 b(Miscellaneous)h
-(Commands)75 233 y Fn(re-read-init-file)13 b(\(C-x)h(C-r\))315
-288 y Fo(Read)e(in)e(the)h(con)o(ten)o(ts)g(of)f(the)h
-Fe(inputrc)j Fo(\014le,)d(and)h(incorp)q(orate)e(an)o(y)g(bindings)h
-(or)g(v)m(ariable)315 343 y(assignmen)o(ts)j(found)i(there.)75
-418 y Fn(abort)e(\(C-g\))315 473 y Fo(Ab)q(ort)f(the)g(curren)o(t)h
-(editing)e(command)h(and)h(ring)e(the)i(terminal's)d(b)q(ell)i(\(sub)s
-(ject)g(to)g(the)315 528 y(setting)h(of)h Fn(bell-style)p
-Fo(\).)75 603 y Fn(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
-Fg(x)p Fn(,)h(...\))315 658 y Fo(If)f(the)g(meta\014ed)g(c)o(haracter)f
-Fe(x)k Fo(is)c(lo)o(w)o(ercase,)g(run)h(the)g(command)f(that)h(is)f(b)q
-(ound)i(to)e(the)315 712 y(corresp)q(onding)i(upp)q(ercase)h(c)o
-(haracter.)75 788 y Fn(prefix-meta)e(\(ESC\))315 842
-y Fo(Metafy)k(the)h(next)g(c)o(haracter)f(t)o(yp)q(ed.)30
-b(This)19 b(is)f(for)g(k)o(eyb)q(oards)h(without)f(a)g(meta)g(k)o(ey)l
-(.)315 897 y(T)o(yping)d(`)p Fn(ESC)f(f)p Fo(')h(is)f(equiv)m(alen)o(t)
-h(to)g(t)o(yping)f Fg(M-f)p Fo(.)75 972 y Fn(undo)h(\(C-_)f(or)h(C-x)g
-(C-u\))315 1027 y Fo(Incremen)o(tal)g(undo,)g(separately)g(remem)o(b)q
-(ered)h(for)e(eac)o(h)h(line.)75 1102 y Fn(revert-line)f(\(M-r\))315
-1157 y Fo(Undo)j(all)e(c)o(hanges)i(made)f(to)g(this)g(line.)24
-b(This)16 b(is)g(lik)o(e)g(executing)g(the)h Fn(undo)f
-Fo(command)315 1212 y(enough)g(times)e(to)h(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 1287 y Fn(tilde-expand)f(\(M-~\))315
-1342 y Fo(P)o(erform)g(tilde)h(expansion)g(on)g(the)g(curren)o(t)g(w)o
-(ord.)75 1417 y Fn(set-mark)f(\(C-@\))315 1472 y Fo(Set)i(the)h(mark)f
-(to)f(the)i(p)q(oin)o(t.)23 b(If)17 b(a)f(n)o(umeric)g(argumen)o(t)g
-(is)f(supplied,)i(the)g(mark)e(is)h(set)315 1527 y(to)f(that)f(p)q
-(osition.)75 1602 y Fn(exchange-point-and-mark)e(\(C-x)j(C-x\))315
-1657 y Fo(Sw)o(ap)g(the)h(p)q(oin)o(t)f(with)g(the)h(mark.)k(The)c
-(curren)o(t)f(cursor)h(p)q(osition)e(is)h(set)h(to)f(the)g(sa)o(v)o(ed)
-315 1712 y(p)q(osition,)f(and)h(the)h(old)e(cursor)h(p)q(osition)f(is)h
-(sa)o(v)o(ed)g(as)g(the)g(mark.)75 1787 y Fn(character-search)e
-(\(C-]\))315 1842 y Fo(A)f(c)o(haracter)g(is)g(read)h(and)f(p)q(oin)o
-(t)g(is)g(mo)o(v)o(ed)g(to)g(the)g(next)h(o)q(ccurrence)g(of)f(that)g
-(c)o(haracter.)315 1896 y(A)j(negativ)o(e)g(coun)o(t)g(searc)o(hes)g
-(for)f(previous)h(o)q(ccurrences.)75 1972 y Fn
-(character-search-backward)d(\(M-C-]\))315 2026 y Fo(A)22
-b(c)o(haracter)g(is)g(read)g(and)h(p)q(oin)o(t)f(is)g(mo)o(v)o(ed)g(to)
-g(the)g(previous)g(o)q(ccurrence)i(of)e(that)315 2081
-y(c)o(haracter.)d(A)c(negativ)o(e)g(coun)o(t)g(searc)o(hes)g(for)f
-(subsequen)o(t)i(o)q(ccurrences.)75 2156 y Fn(skip-csi-sequence)d(\(\))
-315 2211 y Fo(Read)h(enough)g(c)o(haracters)f(to)g(consume)h(a)g(m)o
-(ulti-k)o(ey)e(sequence)j(suc)o(h)f(as)f(those)h(de\014ned)315
-2266 y(for)k(k)o(eys)g(lik)o(e)g(Home)h(and)g(End.)30
-b(Suc)o(h)19 b(sequences)h(b)q(egin)f(with)f(a)g(Con)o(trol)f(Sequence)
-315 2321 y(Indicator)h(\(CSI\),)g(usually)f(ESC-[.)29
-b(If)19 b(this)f(sequence)h(is)f(b)q(ound)h(to)f Fn("\\)p
-Fo(e[)p Fn(")p Fo(,)g(k)o(eys)g(pro-)315 2376 y(ducing)e(suc)o(h)h
-(sequences)g(will)d(ha)o(v)o(e)i(no)g(e\013ect)g(unless)g(explicitly)e
-(b)q(ound)j(to)f(a)f(readline)315 2430 y(command,)h(instead)f(of)h
-(inserting)f(stra)o(y)f(c)o(haracters)i(in)o(to)f(the)h(editing)f
-(bu\013er.)22 b(This)15 b(is)315 2485 y(un)o(b)q(ound)h(b)o(y)g
-(default,)e(but)h(usually)g(b)q(ound)h(to)f(ESC-[.)75
-2560 y Fn(insert-comment)e(\(M-#\))315 2615 y Fo(Without)k(a)g(n)o
-(umeric)h(argumen)o(t,)f(the)h(v)m(alue)g(of)g(the)f
-Fn(comment-begin)f Fo(v)m(ariable)i(is)f(in-)315 2670
-y(serted)f(at)f(the)h(b)q(eginning)g(of)f(the)h(curren)o(t)g(line.)21
-b(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)g(supplied,)p
-eop end
-%%Page: 22 25
-TeXDict begin 22 24 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)h
-(Editing)1053 b(22)315 149 y(this)18 b(command)g(acts)g(as)f(a)h
-(toggle:)25 b(if)18 b(the)g(c)o(haracters)g(at)f(the)i(b)q(eginning)f
-(of)g(the)g(line)315 204 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)h(of)f
-Fn(comment-begin)p Fo(,)e(the)i(v)m(alue)h(is)f(inserted,)f(otherwise)h
-(the)315 259 y(c)o(haracters)k(in)h Fn(comment-begin)e
-Fo(are)i(deleted)h(from)e(the)h(b)q(eginning)g(of)g(the)g(line.)34
-b(In)315 314 y(either)15 b(case,)g(the)g(line)g(is)g(accepted)g(as)g
-(if)g(a)g(newline)g(had)g(b)q(een)i(t)o(yp)q(ed.)75 394
-y Fn(dump-functions)c(\(\))315 448 y Fo(Prin)o(t)f(all)g(of)h(the)g
-(functions)g(and)h(their)f(k)o(ey)g(bindings)g(to)f(the)i(Readline)f
-(output)g(stream.)315 503 y(If)j(a)g(n)o(umeric)f(argumen)o(t)g(is)h
-(supplied,)g(the)g(output)f(is)h(formatted)e(in)i(suc)o(h)g(a)g(w)o(a)o
-(y)f(that)315 558 y(it)f(can)i(b)q(e)g(made)f(part)f(of)h(an)g
-Fe(inputrc)j Fo(\014le.)i(This)15 b(command)g(is)g(un)o(b)q(ound)h(b)o
-(y)f(default.)75 638 y Fn(dump-variables)e(\(\))315 692
-y Fo(Prin)o(t)d(all)f(of)h(the)h(settable)f(v)m(ariables)g(and)h(their)
-f(v)m(alues)h(to)f(the)h(Readline)g(output)f(stream.)315
-747 y(If)16 b(a)g(n)o(umeric)f(argumen)o(t)g(is)h(supplied,)g(the)g
-(output)f(is)h(formatted)e(in)i(suc)o(h)g(a)g(w)o(a)o(y)f(that)315
-802 y(it)f(can)i(b)q(e)g(made)f(part)f(of)h(an)g Fe(inputrc)j
-Fo(\014le.)i(This)15 b(command)g(is)g(un)o(b)q(ound)h(b)o(y)f(default.)
-75 882 y Fn(dump-macros)f(\(\))315 936 y Fo(Prin)o(t)i(all)g(of)g(the)h
-(Readline)g(k)o(ey)g(sequences)h(b)q(ound)g(to)e(macros)g(and)h(the)g
-(strings)f(they)315 991 y(output.)26 b(If)18 b(a)f(n)o(umeric)g
-(argumen)o(t)g(is)g(supplied,)h(the)f(output)g(is)g(formatted)f(in)i
-(suc)o(h)f(a)315 1046 y(w)o(a)o(y)d(that)g(it)h(can)g(b)q(e)g(made)g
-(part)g(of)f(an)h Fe(inputrc)j Fo(\014le.)i(This)14 b(command)h(is)g
-(un)o(b)q(ound)h(b)o(y)315 1101 y(default.)75 1181 y
-Fn(emacs-editing-mode)d(\(C-e\))315 1235 y Fo(When)j(in)f
-Fn(vi)f Fo(command)i(mo)q(de,)f(this)f(causes)i(a)f(switc)o(h)f(to)h
-Fn(emacs)f Fo(editing)h(mo)q(de.)75 1315 y Fn(vi-editing-mode)e
-(\(M-C-j\))315 1370 y Fo(When)j(in)f Fn(emacs)f Fo(editing)h(mo)q(de,)g
-(this)f(causes)i(a)f(switc)o(h)f(to)h Fn(vi)f Fo(editing)h(mo)q(de.)75
-1486 y Fm(1.5)33 b(Readline)21 b(vi)i(Mo)r(de)75 1566
-y Fo(While)15 b(the)h(Readline)g(library)f(do)q(es)h(not)f(ha)o(v)o(e)g
-(a)h(full)f(set)h(of)f Fn(vi)g Fo(editing)g(functions,)h(it)f(do)q(es)h
-(con)o(tain)75 1621 y(enough)h(to)g(allo)o(w)e(simple)h(editing)h(of)f
-(the)i(line.)25 b(The)17 b(Readline)g Fn(vi)g Fo(mo)q(de)g(b)q(eha)o(v)
-o(es)g(as)g(sp)q(eci\014ed)h(in)75 1675 y(the)d Fh(posix)g
-Fo(standard.)137 1743 y(In)g(order)g(to)f(switc)o(h)f(in)o(teractiv)o
-(ely)g(b)q(et)o(w)o(een)i Fn(emacs)e Fo(and)i Fn(vi)f
-Fo(editing)g(mo)q(des,)h(use)f(the)h(command)75 1797
-y Fg(M-C-j)j Fo(\(b)q(ound)i(to)e(emacs-editing-mo)q(de)h(when)g(in)g
-Fn(vi)g Fo(mo)q(de)g(and)g(to)f(vi-editing-mo)q(de)h(in)g
-Fn(emacs)75 1852 y Fo(mo)q(de\).)h(The)15 b(Readline)h(default)f(is)f
-Fn(emacs)h Fo(mo)q(de.)137 1919 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)g
-(in)f Fn(vi)h Fo(mo)q(de,)g(y)o(ou)g(are)f(already)h(placed)g(in)g
-(`insertion')e(mo)q(de,)i(as)g(if)f(y)o(ou)75 1974 y(had)h(t)o(yp)q(ed)
-g(an)g(`)p Fn(i)p Fo('.)j(Pressing)c Fn(ESC)h Fo(switc)o(hes)f(y)o(ou)g
-(in)o(to)g(`command')g(mo)q(de,)g(where)h(y)o(ou)g(can)f(edit)h(the)75
-2029 y(text)h(of)h(the)g(line)f(with)h(the)g(standard)f
-Fn(vi)h Fo(mo)o(v)o(emen)o(t)f(k)o(eys,)g(mo)o(v)o(e)g(to)h(previous)f
-(history)g(lines)h(with)75 2084 y(`)p Fn(k)p Fo(')d(and)i(subsequen)o
-(t)f(lines)g(with)g(`)p Fn(j)p Fo(',)f(and)h(so)g(forth.)p
-eop end
-%%Page: 23 26
-TeXDict begin 23 25 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(23)75 149
-y Fk(App)r(endix)26 b(A)41 b(GNU)27 b(F)-7 b(ree)26 b(Do)r(cumen)n
-(tation)j(License)679 251 y Fo(V)l(ersion)15 b(1.3,)f(3)h(No)o(v)o(em)o
-(b)q(er)g(2008)195 318 y(Cop)o(yrigh)o(t)421 317 y(c)409
-318 y Fl(\015)g Fo(2000,)f(2001,)f(2002,)h(2007,)g(2008)g(F)l(ree)h
-(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)195 373 y Fn(http://fsf.org/)
-195 482 y Fo(Ev)o(ery)o(one)h(is)f(p)q(ermitted)h(to)g(cop)o(y)g(and)g
-(distribute)g(v)o(erbatim)f(copies)195 537 y(of)h(this)f(license)i(do)q
-(cumen)o(t,)f(but)g(c)o(hanging)g(it)f(is)h(not)g(allo)o(w)o(ed.)100
-603 y(0.)29 b(PREAMBLE)165 670 y(The)19 b(purp)q(ose)g(of)f(this)g
-(License)i(is)e(to)g(mak)o(e)g(a)g(man)o(ual,)g(textb)q(o)q(ok,)h(or)f
-(other)g(functional)g(and)165 725 y(useful)d(do)q(cumen)o(t)h
-Fe(free)h Fo(in)e(the)g(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
-o(one)f(the)i(e\013ectiv)o(e)e(freedom)165 780 y(to)h(cop)o(y)h(and)g
-(redistribute)f(it,)f(with)h(or)g(without)g(mo)q(difying)g(it,)g
-(either)g(commercially)f(or)i(non-)165 834 y(commercially)l(.)25
-b(Secondarily)l(,)17 b(this)g(License)h(preserv)o(es)f(for)g(the)g
-(author)g(and)h(publisher)f(a)g(w)o(a)o(y)165 889 y(to)g(get)h(credit)g
-(for)f(their)h(w)o(ork,)f(while)h(not)g(b)q(eing)g(considered)g(resp)q
-(onsible)g(for)g(mo)q(di\014cations)165 944 y(made)d(b)o(y)g(others.)
-165 1010 y(This)c(License)i(is)e(a)g(kind)h(of)f(\\cop)o(yleft",)f
-(whic)o(h)i(means)f(that)g(deriv)m(ativ)o(e)g(w)o(orks)g(of)g(the)h(do)
-q(cumen)o(t)165 1065 y(m)o(ust)k(themselv)o(es)h(b)q(e)h(free)e(in)h
-(the)g(same)g(sense.)26 b(It)16 b(complemen)o(ts)h(the)g(GNU)g(General)
-f(Public)165 1120 y(License,)g(whic)o(h)f(is)f(a)h(cop)o(yleft)g
-(license)g(designed)g(for)g(free)g(soft)o(w)o(are.)165
-1187 y(W)l(e)g(ha)o(v)o(e)f(designed)h(this)g(License)g(in)g(order)f
-(to)g(use)h(it)f(for)h(man)o(uals)e(for)h(free)h(soft)o(w)o(are,)e(b)q
-(ecause)165 1241 y(free)21 b(soft)o(w)o(are)e(needs)j(free)f(do)q
-(cumen)o(tation:)31 b(a)21 b(free)g(program)f(should)h(come)g(with)g
-(man)o(uals)165 1296 y(pro)o(viding)13 b(the)i(same)f(freedoms)g(that)g
-(the)g(soft)o(w)o(are)f(do)q(es.)20 b(But)14 b(this)g(License)h(is)f
-(not)g(limited)g(to)165 1351 y(soft)o(w)o(are)g(man)o(uals;)g(it)g(can)
-i(b)q(e)g(used)g(for)e(an)o(y)h(textual)g(w)o(ork,)f(regardless)g(of)h
-(sub)s(ject)g(matter)f(or)165 1406 y(whether)i(it)f(is)g(published)h
-(as)g(a)f(prin)o(ted)h(b)q(o)q(ok.)21 b(W)l(e)16 b(recommend)g(this)f
-(License)i(principally)e(for)165 1461 y(w)o(orks)f(whose)h(purp)q(ose)h
-(is)f(instruction)f(or)h(reference.)100 1527 y(1.)29
-b(APPLICABILITY)17 b(AND)e(DEFINITIONS)165 1594 y(This)20
-b(License)g(applies)g(to)f(an)o(y)h(man)o(ual)f(or)g(other)h(w)o(ork,)g
-(in)g(an)o(y)f(medium,)i(that)e(con)o(tains)g(a)165 1648
-y(notice)h(placed)h(b)o(y)g(the)g(cop)o(yrigh)o(t)e(holder)i(sa)o(ying)
-f(it)g(can)h(b)q(e)g(distributed)f(under)i(the)f(terms)165
-1703 y(of)d(this)g(License.)32 b(Suc)o(h)19 b(a)g(notice)f(gran)o(ts)f
-(a)i(w)o(orld-wide,)f(ro)o(y)o(alt)o(y-free)f(license,)i(unlimited)f
-(in)165 1758 y(duration,)23 b(to)f(use)h(that)f(w)o(ork)g(under)h(the)g
-(conditions)f(stated)g(herein.)42 b(The)23 b(\\Do)q(cumen)o(t",)165
-1813 y(b)q(elo)o(w,)14 b(refers)g(to)f(an)o(y)h(suc)o(h)g(man)o(ual)g
-(or)f(w)o(ork.)19 b(An)o(y)14 b(mem)o(b)q(er)h(of)e(the)i(public)f(is)g
-(a)g(licensee,)g(and)165 1868 y(is)e(addressed)h(as)f(\\y)o(ou".)18
-b(Y)l(ou)13 b(accept)g(the)f(license)h(if)f(y)o(ou)g(cop)o(y)l(,)h(mo)q
-(dify)f(or)g(distribute)f(the)i(w)o(ork)165 1922 y(in)i(a)g(w)o(a)o(y)f
-(requiring)h(p)q(ermission)f(under)i(cop)o(yrigh)o(t)e(la)o(w.)165
-1989 y(A)j(\\Mo)q(di\014ed)g(V)l(ersion")f(of)g(the)h(Do)q(cumen)o(t)g
-(means)g(an)o(y)f(w)o(ork)g(con)o(taining)g(the)h(Do)q(cumen)o(t)f(or)
-165 2044 y(a)i(p)q(ortion)g(of)h(it,)f(either)h(copied)g(v)o(erbatim,)f
-(or)g(with)g(mo)q(di\014cations)g(and/or)g(translated)g(in)o(to)165
-2099 y(another)d(language.)165 2165 y(A)e(\\Secondary)g(Section")g(is)f
-(a)h(named)g(app)q(endix)h(or)e(a)h(fron)o(t-matter)e(section)h(of)h
-(the)g(Do)q(cumen)o(t)165 2220 y(that)d(deals)g(exclusiv)o(ely)g(with)g
-(the)h(relationship)e(of)i(the)f(publishers)h(or)f(authors)g(of)g(the)h
-(Do)q(cumen)o(t)165 2275 y(to)18 b(the)h(Do)q(cumen)o(t's)f(o)o(v)o
-(erall)f(sub)s(ject)h(\(or)g(to)g(related)g(matters\))f(and)i(con)o
-(tains)f(nothing)g(that)165 2329 y(could)i(fall)f(directly)h(within)f
-(that)g(o)o(v)o(erall)g(sub)s(ject.)34 b(\(Th)o(us,)21
-b(if)f(the)g(Do)q(cumen)o(t)g(is)g(in)g(part)f(a)165
-2384 y(textb)q(o)q(ok)12 b(of)f(mathematics,)g(a)g(Secondary)h(Section)
-g(ma)o(y)f(not)h(explain)f(an)o(y)h(mathematics.\))17
-b(The)165 2439 y(relationship)12 b(could)i(b)q(e)g(a)g(matter)e(of)i
-(historical)d(connection)j(with)f(the)h(sub)s(ject)f(or)h(with)f
-(related)165 2494 y(matters,)k(or)g(of)g(legal,)g(commercial,)g
-(philosophical,)g(ethical)g(or)g(p)q(olitical)f(p)q(osition)h
-(regarding)165 2549 y(them.)165 2615 y(The)c(\\In)o(v)m(arian)o(t)f
-(Sections")g(are)h(certain)f(Secondary)h(Sections)g(whose)g(titles)e
-(are)i(designated,)f(as)165 2670 y(b)q(eing)i(those)f(of)g(In)o(v)m
-(arian)o(t)f(Sections,)h(in)h(the)f(notice)g(that)f(sa)o(ys)h(that)g
-(the)g(Do)q(cumen)o(t)g(is)g(released)p eop end
-%%Page: 24 27
-TeXDict begin 24 26 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(24)165 149
-y(under)15 b(this)e(License.)20 b(If)14 b(a)g(section)f(do)q(es)h(not)g
-(\014t)f(the)h(ab)q(o)o(v)o(e)g(de\014nition)g(of)f(Secondary)h(then)g
-(it)f(is)165 204 y(not)j(allo)o(w)o(ed)e(to)h(b)q(e)i(designated)f(as)f
-(In)o(v)m(arian)o(t.)21 b(The)c(Do)q(cumen)o(t)e(ma)o(y)h(con)o(tain)f
-(zero)h(In)o(v)m(arian)o(t)165 259 y(Sections.)j(If)12
-b(the)h(Do)q(cumen)o(t)f(do)q(es)h(not)f(iden)o(tify)f(an)o(y)h(In)o(v)
-m(arian)o(t)g(Sections)g(then)h(there)f(are)g(none.)165
-334 y(The)19 b(\\Co)o(v)o(er)e(T)l(exts")g(are)h(certain)g(short)g
-(passages)g(of)f(text)h(that)g(are)g(listed,)g(as)g(F)l(ron)o(t-Co)o(v)
-o(er)165 389 y(T)l(exts)12 b(or)g(Bac)o(k-Co)o(v)o(er)g(T)l(exts,)g(in)
-h(the)f(notice)g(that)g(sa)o(ys)g(that)g(the)g(Do)q(cumen)o(t)h(is)f
-(released)g(under)165 444 y(this)g(License.)20 b(A)13
-b(F)l(ron)o(t-Co)o(v)o(er)e(T)l(ext)i(ma)o(y)f(b)q(e)i(at)e(most)g(5)h
-(w)o(ords,)f(and)h(a)g(Bac)o(k-Co)o(v)o(er)f(T)l(ext)h(ma)o(y)165
-499 y(b)q(e)j(at)e(most)h(25)f(w)o(ords.)165 574 y(A)k(\\T)l(ransparen)
-o(t")e(cop)o(y)i(of)f(the)h(Do)q(cumen)o(t)g(means)f(a)h(mac)o
-(hine-readable)f(cop)o(y)l(,)h(represen)o(ted)165 629
-y(in)g(a)f(format)g(whose)g(sp)q(eci\014cation)h(is)g(a)o(v)m(ailable)e
-(to)h(the)h(general)g(public,)g(that)f(is)g(suitable)h(for)165
-684 y(revising)d(the)h(do)q(cumen)o(t)g(straigh)o(tforw)o(ardly)d(with)
-i(generic)h(text)f(editors)g(or)g(\(for)g(images)g(com-)165
-738 y(p)q(osed)d(of)g(pixels\))f(generic)h(pain)o(t)f(programs)g(or)g
-(\(for)g(dra)o(wings\))g(some)g(widely)g(a)o(v)m(ailable)g(dra)o(wing)
-165 793 y(editor,)j(and)g(that)g(is)g(suitable)g(for)g(input)g(to)g
-(text)g(formatters)f(or)h(for)g(automatic)f(translation)g(to)165
-848 y(a)g(v)m(ariet)o(y)g(of)g(formats)f(suitable)g(for)h(input)h(to)e
-(text)h(formatters.)18 b(A)13 b(cop)o(y)h(made)f(in)g(an)h(otherwise)
-165 903 y(T)l(ransparen)o(t)k(\014le)h(format)e(whose)i(markup,)g(or)g
-(absence)g(of)g(markup,)g(has)f(b)q(een)i(arranged)f(to)165
-958 y(th)o(w)o(art)12 b(or)g(discourage)h(subsequen)o(t)h(mo)q
-(di\014cation)f(b)o(y)g(readers)g(is)g(not)g(T)l(ransparen)o(t.)18
-b(An)c(image)165 1012 y(format)i(is)h(not)f(T)l(ransparen)o(t)h(if)g
-(used)g(for)g(an)o(y)g(substan)o(tial)e(amoun)o(t)i(of)f(text.)26
-b(A)17 b(cop)o(y)g(that)f(is)165 1067 y(not)f(\\T)l(ransparen)o(t")f
-(is)h(called)f(\\Opaque".)165 1143 y(Examples)26 b(of)g(suitable)g
-(formats)f(for)h(T)l(ransparen)o(t)g(copies)g(include)h(plain)f
-Fh(asci)q(i)g Fo(without)165 1197 y(markup,)18 b(T)l(exinfo)g(input)g
-(format,)f(LaT)879 1207 y(E)905 1197 y(X)h(input)g(format,)f
-Fc(SGML)h Fo(or)f Fc(XML)i Fo(using)e(a)h(publicly)165
-1252 y(a)o(v)m(ailable)g Fc(DTD)p Fo(,)i(and)g(standard-conforming)f
-(simple)g Fc(HTML)p Fo(,)i(P)o(ostScript)d(or)i Fc(PDF)g
-Fo(designed)165 1307 y(for)e(h)o(uman)i(mo)q(di\014cation.)30
-b(Examples)19 b(of)g(transparen)o(t)f(image)g(formats)g(include)h
-Fc(PNG)p Fo(,)h Fc(X)o(CF)165 1362 y Fo(and)f Fc(JPG)p
-Fo(.)33 b(Opaque)20 b(formats)e(include)h(proprietary)f(formats)g(that)
-h(can)g(b)q(e)h(read)f(and)h(edited)165 1417 y(only)26
-b(b)o(y)h(proprietary)f(w)o(ord)g(pro)q(cessors,)j Fc(SGML)d
-Fo(or)h Fc(XML)g Fo(for)f(whic)o(h)g(the)h Fc(DTD)g Fo(and/or)165
-1471 y(pro)q(cessing)j(to)q(ols)g(are)g(not)g(generally)g(a)o(v)m
-(ailable,)i(and)f(the)g(mac)o(hine-generated)f Fc(HTML)p
-Fo(,)165 1526 y(P)o(ostScript)14 b(or)h Fc(PDF)g Fo(pro)q(duced)h(b)o
-(y)f(some)g(w)o(ord)g(pro)q(cessors)g(for)f(output)h(purp)q(oses)h
-(only)l(.)165 1601 y(The)h(\\Title)f(P)o(age")g(means,)i(for)e(a)h
-(prin)o(ted)g(b)q(o)q(ok,)g(the)g(title)f(page)h(itself,)g(plus)g(suc)o
-(h)g(follo)o(wing)165 1656 y(pages)d(as)f(are)h(needed)h(to)e(hold,)h
-(legibly)l(,)e(the)i(material)e(this)i(License)g(requires)g(to)f(app)q
-(ear)h(in)g(the)165 1711 y(title)e(page.)19 b(F)l(or)13
-b(w)o(orks)f(in)h(formats)f(whic)o(h)h(do)g(not)g(ha)o(v)o(e)g(an)o(y)g
-(title)f(page)h(as)g(suc)o(h,)h(\\Title)e(P)o(age")165
-1766 y(means)j(the)h(text)e(near)i(the)f(most)g(prominen)o(t)f(app)q
-(earance)i(of)f(the)g(w)o(ork's)f(title,)g(preceding)i(the)165
-1821 y(b)q(eginning)f(of)g(the)g(b)q(o)q(dy)h(of)f(the)g(text.)165
-1896 y(The)j(\\publisher")e(means)i(an)o(y)f(p)q(erson)g(or)g(en)o(tit)
-o(y)f(that)h(distributes)g(copies)g(of)g(the)g(Do)q(cumen)o(t)165
-1951 y(to)e(the)g(public.)165 2026 y(A)g(section)f(\\En)o(titled)g
-(XYZ")g(means)h(a)g(named)g(subunit)g(of)f(the)h(Do)q(cumen)o(t)g
-(whose)g(title)e(either)165 2081 y(is)g(precisely)h(XYZ)g(or)f(con)o
-(tains)g(XYZ)h(in)g(paren)o(theses)g(follo)o(wing)d(text)j(that)f
-(translates)f(XYZ)i(in)165 2136 y(another)e(language.)18
-b(\(Here)13 b(XYZ)f(stands)g(for)g(a)g(sp)q(eci\014c)i(section)e(name)g
-(men)o(tioned)g(b)q(elo)o(w,)h(suc)o(h)165 2191 y(as)h(\\Ac)o(kno)o
-(wledgemen)o(ts",)e(\\Dedications",)h(\\Endorsemen)o(ts",)g(or)g
-(\\History".\))18 b(T)l(o)13 b(\\Preserv)o(e)165 2245
-y(the)k(Title")e(of)i(suc)o(h)g(a)f(section)h(when)g(y)o(ou)f(mo)q
-(dify)h(the)g(Do)q(cumen)o(t)f(means)h(that)f(it)g(remains)g(a)165
-2300 y(section)f(\\En)o(titled)f(XYZ")g(according)h(to)g(this)f
-(de\014nition.)165 2375 y(The)g(Do)q(cumen)o(t)g(ma)o(y)f(include)h(W)l
-(arran)o(t)o(y)e(Disclaimers)g(next)i(to)g(the)g(notice)f(whic)o(h)h
-(states)f(that)165 2430 y(this)j(License)i(applies)f(to)f(the)h(Do)q
-(cumen)o(t.)25 b(These)17 b(W)l(arran)o(t)o(y)e(Disclaimers)h(are)g
-(considered)i(to)165 2485 y(b)q(e)h(included)h(b)o(y)f(reference)g(in)g
-(this)f(License,)i(but)f(only)f(as)h(regards)f(disclaiming)f(w)o(arran)
-o(ties:)165 2540 y(an)o(y)h(other)g(implication)f(that)h(these)g(W)l
-(arran)o(t)o(y)f(Disclaimers)g(ma)o(y)g(ha)o(v)o(e)h(is)g(v)o(oid)g
-(and)h(has)f(no)165 2595 y(e\013ect)d(on)g(the)g(meaning)g(of)g(this)g
-(License.)100 2670 y(2.)29 b(VERBA)l(TIM)16 b(COPYING)p
-eop end
-%%Page: 25 28
-TeXDict begin 25 27 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(25)165 149
-y(Y)l(ou)19 b(ma)o(y)g(cop)o(y)f(and)i(distribute)e(the)h(Do)q(cumen)o
-(t)g(in)g(an)o(y)g(medium,)g(either)g(commercially)e(or)165
-204 y(noncommercially)l(,)k(pro)o(vided)g(that)g(this)g(License,)i(the)
-e(cop)o(yrigh)o(t)f(notices,)i(and)g(the)f(license)165
-259 y(notice)d(sa)o(ying)e(this)i(License)g(applies)g(to)f(the)h(Do)q
-(cumen)o(t)g(are)f(repro)q(duced)i(in)f(all)f(copies,)h(and)165
-314 y(that)13 b(y)o(ou)g(add)g(no)g(other)g(conditions)g(whatso)q(ev)o
-(er)f(to)h(those)g(of)g(this)g(License.)20 b(Y)l(ou)13
-b(ma)o(y)g(not)g(use)165 369 y(tec)o(hnical)j(measures)g(to)g(obstruct)
-g(or)g(con)o(trol)f(the)h(reading)g(or)g(further)h(cop)o(ying)f(of)g
-(the)g(copies)165 423 y(y)o(ou)c(mak)o(e)g(or)f(distribute.)19
-b(Ho)o(w)o(ev)o(er,)11 b(y)o(ou)h(ma)o(y)g(accept)g(comp)q(ensation)g
-(in)g(exc)o(hange)h(for)e(copies.)165 478 y(If)16 b(y)o(ou)g
-(distribute)f(a)h(large)f(enough)i(n)o(um)o(b)q(er)f(of)g(copies)g(y)o
-(ou)g(m)o(ust)f(also)g(follo)o(w)g(the)h(conditions)165
-533 y(in)f(section)g(3.)165 600 y(Y)l(ou)c(ma)o(y)e(also)h(lend)g
-(copies,)h(under)g(the)g(same)f(conditions)f(stated)h(ab)q(o)o(v)o(e,)h
-(and)f(y)o(ou)g(ma)o(y)g(publicly)165 655 y(displa)o(y)k(copies.)100
-722 y(3.)29 b(COPYING)16 b(IN)f(QUANTITY)165 789 y(If)e(y)o(ou)f
-(publish)h(prin)o(ted)f(copies)h(\(or)e(copies)i(in)f(media)h(that)e
-(commonly)h(ha)o(v)o(e)g(prin)o(ted)h(co)o(v)o(ers\))e(of)165
-844 y(the)16 b(Do)q(cumen)o(t,)g(n)o(um)o(b)q(ering)f(more)h(than)g
-(100,)e(and)i(the)g(Do)q(cumen)o(t's)g(license)g(notice)f(requires)165
-898 y(Co)o(v)o(er)h(T)l(exts,)h(y)o(ou)g(m)o(ust)g(enclose)g(the)g
-(copies)g(in)g(co)o(v)o(ers)g(that)f(carry)l(,)h(clearly)f(and)i
-(legibly)l(,)e(all)165 953 y(these)k(Co)o(v)o(er)e(T)l(exts:)29
-b(F)l(ron)o(t-Co)o(v)o(er)18 b(T)l(exts)h(on)g(the)h(fron)o(t)f(co)o(v)
-o(er,)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l(exts)g(on)165
-1008 y(the)c(bac)o(k)f(co)o(v)o(er.)19 b(Both)14 b(co)o(v)o(ers)g(m)o
-(ust)g(also)g(clearly)g(and)g(legibly)g(iden)o(tify)g(y)o(ou)g(as)g
-(the)h(publisher)165 1063 y(of)i(these)g(copies.)26 b(The)17
-b(fron)o(t)f(co)o(v)o(er)h(m)o(ust)f(presen)o(t)i(the)f(full)f(title)g
-(with)h(all)f(w)o(ords)g(of)h(the)g(title)165 1117 y(equally)e
-(prominen)o(t)g(and)g(visible.)20 b(Y)l(ou)c(ma)o(y)e(add)i(other)f
-(material)e(on)j(the)f(co)o(v)o(ers)g(in)g(addition.)165
-1172 y(Cop)o(ying)i(with)h(c)o(hanges)g(limited)f(to)g(the)h(co)o(v)o
-(ers,)g(as)g(long)f(as)h(they)g(preserv)o(e)g(the)g(title)f(of)h(the)
-165 1227 y(Do)q(cumen)o(t)g(and)h(satisfy)e(these)i(conditions,)f(can)h
-(b)q(e)g(treated)f(as)h(v)o(erbatim)e(cop)o(ying)h(in)g(other)165
-1282 y(resp)q(ects.)165 1349 y(If)f(the)f(required)h(texts)e(for)h
-(either)g(co)o(v)o(er)g(are)g(to)q(o)g(v)o(oluminous)f(to)h(\014t)g
-(legibly)l(,)f(y)o(ou)h(should)h(put)165 1404 y(the)g(\014rst)f(ones)g
-(listed)g(\(as)f(man)o(y)h(as)g(\014t)h(reasonably\))e(on)h(the)h
-(actual)f(co)o(v)o(er,)f(and)i(con)o(tin)o(ue)f(the)165
-1458 y(rest)f(on)o(to)f(adjacen)o(t)h(pages.)165 1525
-y(If)f(y)o(ou)f(publish)h(or)f(distribute)f(Opaque)j(copies)e(of)g(the)
-h(Do)q(cumen)o(t)f(n)o(um)o(b)q(ering)h(more)f(than)g(100,)165
-1580 y(y)o(ou)h(m)o(ust)f(either)h(include)g(a)g(mac)o(hine-readable)g
-(T)l(ransparen)o(t)f(cop)o(y)h(along)f(with)g(eac)o(h)h(Opaque)165
-1635 y(cop)o(y)l(,)k(or)f(state)g(in)g(or)g(with)g(eac)o(h)g(Opaque)i
-(cop)o(y)e(a)g(computer-net)o(w)o(ork)g(lo)q(cation)f(from)h(whic)o(h)
-165 1690 y(the)12 b(general)g(net)o(w)o(ork-using)f(public)h(has)g
-(access)g(to)g(do)o(wnload)f(using)h(public-standard)g(net)o(w)o(ork)
-165 1745 y(proto)q(cols)18 b(a)h(complete)h(T)l(ransparen)o(t)e(cop)o
-(y)i(of)f(the)g(Do)q(cumen)o(t,)h(free)g(of)f(added)h(material.)31
-b(If)165 1799 y(y)o(ou)19 b(use)h(the)f(latter)f(option,)i(y)o(ou)f(m)o
-(ust)g(tak)o(e)f(reasonably)h(pruden)o(t)h(steps,)g(when)g(y)o(ou)f(b)q
-(egin)165 1854 y(distribution)f(of)g(Opaque)i(copies)f(in)g(quan)o(tit)
-o(y)l(,)g(to)f(ensure)i(that)e(this)h(T)l(ransparen)o(t)f(cop)o(y)h
-(will)165 1909 y(remain)c(th)o(us)f(accessible)h(at)g(the)g(stated)g
-(lo)q(cation)e(un)o(til)i(at)f(least)g(one)i(y)o(ear)e(after)g(the)i
-(last)e(time)165 1964 y(y)o(ou)k(distribute)g(an)g(Opaque)h(cop)o(y)f
-(\(directly)g(or)g(through)g(y)o(our)g(agen)o(ts)f(or)h(retailers\))f
-(of)h(that)165 2019 y(edition)d(to)f(the)h(public.)165
-2086 y(It)i(is)g(requested,)h(but)f(not)g(required,)h(that)e(y)o(ou)h
-(con)o(tact)g(the)g(authors)g(of)f(the)i(Do)q(cumen)o(t)f(w)o(ell)165
-2140 y(b)q(efore)e(redistributing)e(an)o(y)h(large)f(n)o(um)o(b)q(er)i
-(of)e(copies,)h(to)g(giv)o(e)g(them)g(a)g(c)o(hance)h(to)e(pro)o(vide)h
-(y)o(ou)165 2195 y(with)h(an)g(up)q(dated)h(v)o(ersion)e(of)h(the)g(Do)
-q(cumen)o(t.)100 2262 y(4.)29 b(MODIFICA)l(TIONS)165
-2329 y(Y)l(ou)13 b(ma)o(y)f(cop)o(y)h(and)g(distribute)f(a)g(Mo)q
-(di\014ed)h(V)l(ersion)g(of)f(the)h(Do)q(cumen)o(t)f(under)i(the)f
-(conditions)165 2384 y(of)d(sections)g(2)g(and)h(3)f(ab)q(o)o(v)o(e,)h
-(pro)o(vided)f(that)g(y)o(ou)g(release)g(the)h(Mo)q(di\014ed)g(V)l
-(ersion)f(under)h(precisely)165 2439 y(this)j(License,)h(with)f(the)g
-(Mo)q(di\014ed)h(V)l(ersion)f(\014lling)g(the)h(role)e(of)i(the)f(Do)q
-(cumen)o(t,)g(th)o(us)h(licensing)165 2493 y(distribution)h(and)h(mo)q
-(di\014cation)f(of)h(the)g(Mo)q(di\014ed)g(V)l(ersion)g(to)f(who)q(ev)o
-(er)h(p)q(ossesses)h(a)e(cop)o(y)h(of)165 2548 y(it.)i(In)d(addition,)e
-(y)o(ou)h(m)o(ust)f(do)h(these)h(things)f(in)g(the)g(Mo)q(di\014ed)g(V)
-l(ersion:)178 2615 y(A.)30 b(Use)17 b(in)f(the)g(Title)f(P)o(age)h
-(\(and)g(on)h(the)f(co)o(v)o(ers,)g(if)f(an)o(y\))h(a)g(title)f
-(distinct)h(from)f(that)h(of)g(the)255 2670 y(Do)q(cumen)o(t,)h(and)g
-(from)f(those)h(of)f(previous)h(v)o(ersions)f(\(whic)o(h)g(should,)h
-(if)g(there)g(w)o(ere)f(an)o(y)l(,)p eop end
-%%Page: 26 29
-TeXDict begin 26 28 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(26)255 149
-y(b)q(e)16 b(listed)f(in)h(the)g(History)e(section)h(of)g(the)h(Do)q
-(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g(same)f(title)f(as)
-255 204 y(a)h(previous)g(v)o(ersion)f(if)h(the)g(original)e(publisher)j
-(of)f(that)f(v)o(ersion)g(giv)o(es)h(p)q(ermission.)180
-273 y(B.)30 b(List)15 b(on)g(the)g(Title)g(P)o(age,)f(as)h(authors,)f
-(one)h(or)g(more)g(p)q(ersons)g(or)g(en)o(tities)f(resp)q(onsible)i
-(for)255 328 y(authorship)d(of)f(the)h(mo)q(di\014cations)f(in)h(the)g
-(Mo)q(di\014ed)h(V)l(ersion,)f(together)f(with)g(at)h(least)f(\014v)o
-(e)255 382 y(of)g(the)g(principal)f(authors)g(of)h(the)g(Do)q(cumen)o
-(t)g(\(all)e(of)i(its)f(principal)g(authors,)h(if)f(it)g(has)h(few)o
-(er)255 437 y(than)j(\014v)o(e\),)g(unless)g(they)g(release)g(y)o(ou)g
-(from)f(this)h(requiremen)o(t.)180 506 y(C.)29 b(State)15
-b(on)g(the)h(Title)e(page)h(the)h(name)f(of)g(the)g(publisher)h(of)f
-(the)g(Mo)q(di\014ed)h(V)l(ersion,)f(as)g(the)255 560
-y(publisher.)178 629 y(D.)29 b(Preserv)o(e)15 b(all)f(the)h(cop)o
-(yrigh)o(t)f(notices)h(of)g(the)g(Do)q(cumen)o(t.)181
-697 y(E.)30 b(Add)16 b(an)g(appropriate)f(cop)o(yrigh)o(t)f(notice)h
-(for)g(y)o(our)g(mo)q(di\014cations)g(adjacen)o(t)h(to)f(the)g(other)
-255 752 y(cop)o(yrigh)o(t)f(notices.)183 821 y(F.)29
-b(Include,)15 b(immediately)e(after)g(the)h(cop)o(yrigh)o(t)e(notices,)
-i(a)f(license)h(notice)g(giving)f(the)h(public)255 875
-y(p)q(ermission)e(to)f(use)i(the)f(Mo)q(di\014ed)h(V)l(ersion)f(under)h
-(the)f(terms)g(of)f(this)h(License,)h(in)f(the)h(form)255
-930 y(sho)o(wn)i(in)g(the)g(Addendum)i(b)q(elo)o(w.)177
-999 y(G.)29 b(Preserv)o(e)11 b(in)g(that)g(license)g(notice)h(the)f
-(full)g(lists)f(of)h(In)o(v)m(arian)o(t)g(Sections)g(and)g(required)h
-(Co)o(v)o(er)255 1054 y(T)l(exts)j(giv)o(en)g(in)g(the)g(Do)q(cumen)o
-(t's)g(license)g(notice.)178 1122 y(H.)30 b(Include)16
-b(an)f(unaltered)h(cop)o(y)f(of)f(this)h(License.)196
-1191 y(I.)30 b(Preserv)o(e)16 b(the)g(section)g(En)o(titled)f
-(\\History",)f(Preserv)o(e)h(its)h(Title,)e(and)j(add)f(to)f(it)h(an)g
-(item)255 1245 y(stating)d(at)g(least)g(the)h(title,)f(y)o(ear,)g(new)i
-(authors,)e(and)h(publisher)g(of)g(the)g(Mo)q(di\014ed)g(V)l(ersion)255
-1300 y(as)h(giv)o(en)g(on)h(the)g(Title)e(P)o(age.)21
-b(If)16 b(there)g(is)f(no)h(section)f(En)o(titled)f(\\History")g(in)i
-(the)g(Do)q(cu-)255 1355 y(men)o(t,)h(create)g(one)h(stating)e(the)h
-(title,)g(y)o(ear,)g(authors,)g(and)g(publisher)h(of)f(the)g(Do)q
-(cumen)o(t)255 1410 y(as)h(giv)o(en)f(on)h(its)f(Title)g(P)o(age,)h
-(then)h(add)f(an)g(item)f(describing)h(the)g(Mo)q(di\014ed)g(V)l
-(ersion)g(as)255 1465 y(stated)d(in)g(the)g(previous)g(sen)o(tence.)189
-1533 y(J.)30 b(Preserv)o(e)16 b(the)g(net)o(w)o(ork)f(lo)q(cation,)g
-(if)h(an)o(y)l(,)g(giv)o(en)g(in)g(the)g(Do)q(cumen)o(t)g(for)g(public)
-g(access)h(to)255 1588 y(a)e(T)l(ransparen)o(t)g(cop)o(y)h(of)f(the)g
-(Do)q(cumen)o(t,)h(and)f(lik)o(ewise)g(the)g(net)o(w)o(ork)g(lo)q
-(cations)f(giv)o(en)h(in)255 1643 y(the)h(Do)q(cumen)o(t)g(for)f
-(previous)g(v)o(ersions)g(it)g(w)o(as)g(based)i(on.)k(These)c(ma)o(y)e
-(b)q(e)h(placed)g(in)g(the)255 1697 y(\\History")11 b(section.)18
-b(Y)l(ou)13 b(ma)o(y)f(omit)f(a)h(net)o(w)o(ork)g(lo)q(cation)f(for)h
-(a)g(w)o(ork)g(that)g(w)o(as)f(published)255 1752 y(at)17
-b(least)g(four)h(y)o(ears)f(b)q(efore)h(the)g(Do)q(cumen)o(t)g(itself,)
-f(or)g(if)h(the)f(original)f(publisher)i(of)g(the)255
-1807 y(v)o(ersion)c(it)h(refers)g(to)f(giv)o(es)h(p)q(ermission.)177
-1875 y(K.)30 b(F)l(or)11 b(an)o(y)h(section)f(En)o(titled)g(\\Ac)o(kno)
-o(wledgemen)o(ts")g(or)g(\\Dedications",)f(Preserv)o(e)i(the)g(Title)
-255 1930 y(of)h(the)g(section,)g(and)g(preserv)o(e)h(in)f(the)g
-(section)g(all)f(the)i(substance)f(and)h(tone)f(of)g(eac)o(h)g(of)g
-(the)255 1985 y(con)o(tributor)h(ac)o(kno)o(wledgemen)o(ts)g(and/or)h
-(dedications)f(giv)o(en)h(therein.)184 2054 y(L.)30 b(Preserv)o(e)17
-b(all)g(the)h(In)o(v)m(arian)o(t)f(Sections)g(of)h(the)f(Do)q(cumen)o
-(t,)h(unaltered)g(in)f(their)h(text)f(and)255 2108 y(in)h(their)f
-(titles.)27 b(Section)18 b(n)o(um)o(b)q(ers)g(or)g(the)g(equiv)m(alen)o
-(t)f(are)h(not)g(considered)g(part)f(of)h(the)255 2163
-y(section)d(titles.)171 2232 y(M.)29 b(Delete)15 b(an)o(y)g(section)g
-(En)o(titled)f(\\Endorsemen)o(ts".)20 b(Suc)o(h)c(a)f(section)g(ma)o(y)
-f(not)h(b)q(e)h(included)255 2286 y(in)f(the)g(Mo)q(di\014ed)h(V)l
-(ersion.)178 2355 y(N.)30 b(Do)14 b(not)f(retitle)g(an)o(y)h(existing)f
-(section)h(to)g(b)q(e)g(En)o(titled)g(\\Endorsemen)o(ts")f(or)h(to)f
-(con\015ict)h(in)255 2410 y(title)g(with)g(an)o(y)h(In)o(v)m(arian)o(t)
-g(Section.)177 2478 y(O.)30 b(Preserv)o(e)15 b(an)o(y)g(W)l(arran)o(t)o
-(y)e(Disclaimers.)165 2560 y(If)k(the)g(Mo)q(di\014ed)g(V)l(ersion)f
-(includes)h(new)g(fron)o(t-matter)e(sections)h(or)g(app)q(endices)i
-(that)e(qualify)165 2615 y(as)e(Secondary)g(Sections)g(and)g(con)o
-(tain)f(no)h(material)e(copied)i(from)f(the)h(Do)q(cumen)o(t,)g(y)o(ou)
-f(ma)o(y)h(at)165 2670 y(y)o(our)i(option)f(designate)h(some)g(or)f
-(all)g(of)h(these)h(sections)e(as)h(in)o(v)m(arian)o(t.)22
-b(T)l(o)15 b(do)i(this,)e(add)h(their)p eop end
-%%Page: 27 30
-TeXDict begin 27 29 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(27)165 149
-y(titles)16 b(to)h(the)h(list)f(of)g(In)o(v)m(arian)o(t)g(Sections)h
-(in)f(the)h(Mo)q(di\014ed)g(V)l(ersion's)f(license)h(notice.)27
-b(These)165 204 y(titles)14 b(m)o(ust)h(b)q(e)g(distinct)g(from)f(an)o
-(y)h(other)g(section)g(titles.)165 275 y(Y)l(ou)21 b(ma)o(y)g(add)g(a)g
-(section)g(En)o(titled)f(\\Endorsemen)o(ts",)h(pro)o(vided)g(it)g(con)o
-(tains)f(nothing)h(but)165 330 y(endorsemen)o(ts)15 b(of)f(y)o(our)h
-(Mo)q(di\014ed)g(V)l(ersion)f(b)o(y)h(v)m(arious)f(parties|for)g
-(example,)h(statemen)o(ts)e(of)165 385 y(p)q(eer)h(review)f(or)h(that)e
-(the)i(text)f(has)h(b)q(een)g(appro)o(v)o(ed)g(b)o(y)f(an)h
-(organization)d(as)j(the)f(authoritativ)o(e)165 440 y(de\014nition)i
-(of)g(a)g(standard.)165 511 y(Y)l(ou)f(ma)o(y)g(add)g(a)g(passage)g(of)
-f(up)i(to)e(\014v)o(e)i(w)o(ords)e(as)h(a)g(F)l(ron)o(t-Co)o(v)o(er)e
-(T)l(ext,)i(and)g(a)g(passage)g(of)f(up)165 566 y(to)g(25)g(w)o(ords)g
-(as)g(a)g(Bac)o(k-Co)o(v)o(er)g(T)l(ext,)g(to)g(the)g(end)i(of)e(the)g
-(list)g(of)g(Co)o(v)o(er)f(T)l(exts)i(in)f(the)h(Mo)q(di\014ed)165
-621 y(V)l(ersion.)28 b(Only)18 b(one)g(passage)f(of)h(F)l(ron)o(t-Co)o
-(v)o(er)e(T)l(ext)i(and)g(one)g(of)f(Bac)o(k-Co)o(v)o(er)g(T)l(ext)h
-(ma)o(y)f(b)q(e)165 675 y(added)d(b)o(y)g(\(or)f(through)g(arrangemen)o
-(ts)g(made)h(b)o(y\))f(an)o(y)h(one)g(en)o(tit)o(y)l(.)k(If)c(the)g(Do)
-q(cumen)o(t)g(already)165 730 y(includes)j(a)g(co)o(v)o(er)f(text)h
-(for)f(the)h(same)g(co)o(v)o(er,)f(previously)g(added)i(b)o(y)f(y)o(ou)
-g(or)f(b)o(y)h(arrangemen)o(t)165 785 y(made)h(b)o(y)f(the)h(same)f(en)
-o(tit)o(y)g(y)o(ou)g(are)g(acting)g(on)g(b)q(ehalf)h(of,)g(y)o(ou)f(ma)
-o(y)g(not)g(add)h(another;)g(but)165 840 y(y)o(ou)f(ma)o(y)f(replace)h
-(the)g(old)g(one,)g(on)g(explicit)f(p)q(ermission)g(from)h(the)g
-(previous)g(publisher)g(that)165 895 y(added)f(the)f(old)g(one.)165
-966 y(The)e(author\(s\))e(and)i(publisher\(s\))f(of)h(the)g(Do)q(cumen)
-o(t)f(do)h(not)f(b)o(y)h(this)f(License)i(giv)o(e)e(p)q(ermission)165
-1021 y(to)j(use)g(their)g(names)g(for)f(publicit)o(y)h(for)f(or)h(to)f
-(assert)h(or)f(imply)h(endorsemen)o(t)g(of)g(an)o(y)g(Mo)q(di\014ed)165
-1075 y(V)l(ersion.)100 1147 y(5.)29 b(COMBINING)16 b(DOCUMENTS)165
-1218 y(Y)l(ou)k(ma)o(y)e(com)o(bine)h(the)h(Do)q(cumen)o(t)f(with)g
-(other)g(do)q(cumen)o(ts)g(released)h(under)g(this)f(License,)165
-1273 y(under)h(the)f(terms)g(de\014ned)h(in)f(section)g(4)f(ab)q(o)o(v)
-o(e)h(for)g(mo)q(di\014ed)g(v)o(ersions,)g(pro)o(vided)g(that)f(y)o(ou)
-165 1328 y(include)13 b(in)f(the)h(com)o(bination)f(all)f(of)h(the)h
-(In)o(v)m(arian)o(t)f(Sections)h(of)f(all)f(of)i(the)f(original)f(do)q
-(cumen)o(ts,)165 1382 y(unmo)q(di\014ed,)j(and)g(list)e(them)h(all)g
-(as)g(In)o(v)m(arian)o(t)f(Sections)i(of)f(y)o(our)f(com)o(bined)i(w)o
-(ork)e(in)h(its)g(license)165 1437 y(notice,)h(and)i(that)e(y)o(ou)h
-(preserv)o(e)g(all)g(their)f(W)l(arran)o(t)o(y)g(Disclaimers.)165
-1508 y(The)h(com)o(bined)h(w)o(ork)e(need)i(only)e(con)o(tain)h(one)g
-(cop)o(y)g(of)g(this)f(License,)i(and)f(m)o(ultiple)f(iden)o(tical)165
-1563 y(In)o(v)m(arian)o(t)i(Sections)g(ma)o(y)f(b)q(e)i(replaced)g
-(with)e(a)h(single)g(cop)o(y)l(.)23 b(If)16 b(there)h(are)f(m)o
-(ultiple)f(In)o(v)m(arian)o(t)165 1618 y(Sections)e(with)g(the)g(same)g
-(name)h(but)f(di\013eren)o(t)g(con)o(ten)o(ts,)g(mak)o(e)g(the)g(title)
-f(of)h(eac)o(h)h(suc)o(h)f(section)165 1673 y(unique)18
-b(b)o(y)e(adding)h(at)g(the)g(end)g(of)g(it,)f(in)h(paren)o(theses,)g
-(the)g(name)g(of)g(the)g(original)e(author)h(or)165 1728
-y(publisher)d(of)f(that)g(section)g(if)g(kno)o(wn,)g(or)g(else)g(a)h
-(unique)g(n)o(um)o(b)q(er.)19 b(Mak)o(e)12 b(the)g(same)h(adjustmen)o
-(t)165 1782 y(to)f(the)g(section)g(titles)f(in)h(the)g(list)f(of)h(In)o
-(v)m(arian)o(t)f(Sections)h(in)g(the)h(license)f(notice)g(of)g(the)g
-(com)o(bined)165 1837 y(w)o(ork.)165 1908 y(In)21 b(the)g(com)o
-(bination,)f(y)o(ou)h(m)o(ust)f(com)o(bine)g(an)o(y)g(sections)h(En)o
-(titled)e(\\History")g(in)i(the)f(v)m(ari-)165 1963 y(ous)c(original)e
-(do)q(cumen)o(ts,)i(forming)f(one)i(section)e(En)o(titled)g
-(\\History";)g(lik)o(ewise)f(com)o(bine)i(an)o(y)165
-2018 y(sections)f(En)o(titled)g(\\Ac)o(kno)o(wledgemen)o(ts",)g(and)h
-(an)o(y)f(sections)h(En)o(titled)e(\\Dedications".)21
-b(Y)l(ou)165 2073 y(m)o(ust)15 b(delete)g(all)f(sections)h(En)o(titled)
-f(\\Endorsemen)o(ts.")100 2144 y(6.)29 b(COLLECTIONS)17
-b(OF)e(DOCUMENTS)165 2215 y(Y)l(ou)h(ma)o(y)f(mak)o(e)h(a)f(collection)
-g(consisting)g(of)g(the)h(Do)q(cumen)o(t)g(and)g(other)g(do)q(cumen)o
-(ts)g(released)165 2270 y(under)22 b(this)f(License,)i(and)e(replace)g
-(the)g(individual)g(copies)g(of)g(this)f(License)i(in)f(the)g(v)m
-(arious)165 2325 y(do)q(cumen)o(ts)h(with)e(a)h(single)g(cop)o(y)g
-(that)f(is)h(included)h(in)f(the)g(collection,)h(pro)o(vided)f(that)f
-(y)o(ou)165 2380 y(follo)o(w)d(the)h(rules)h(of)f(this)g(License)h(for)
-f(v)o(erbatim)f(cop)o(ying)h(of)g(eac)o(h)h(of)f(the)h(do)q(cumen)o(ts)
-g(in)f(all)165 2434 y(other)d(resp)q(ects.)165 2506 y(Y)l(ou)h(ma)o(y)f
-(extract)g(a)g(single)g(do)q(cumen)o(t)h(from)f(suc)o(h)h(a)g
-(collection,)e(and)i(distribute)f(it)g(individu-)165
-2560 y(ally)h(under)j(this)e(License,)h(pro)o(vided)f(y)o(ou)g(insert)g
-(a)h(cop)o(y)f(of)g(this)g(License)h(in)o(to)f(the)g(extracted)165
-2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)e(this)i(License)h(in)f(all)g
-(other)f(resp)q(ects)i(regarding)f(v)o(erbatim)f(cop)o(ying)g(of)165
-2670 y(that)f(do)q(cumen)o(t.)p eop end
-%%Page: 28 31
-TeXDict begin 28 30 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(28)100 149
-y(7.)29 b(A)o(GGREGA)l(TION)15 b(WITH)h(INDEPENDENT)e(W)o(ORKS)165
-221 y(A)g(compilation)e(of)i(the)g(Do)q(cumen)o(t)g(or)f(its)h(deriv)m
-(ativ)o(es)f(with)g(other)h(separate)f(and)i(indep)q(enden)o(t)165
-275 y(do)q(cumen)o(ts)i(or)f(w)o(orks,)g(in)g(or)g(on)h(a)f(v)o(olume)g
-(of)g(a)h(storage)e(or)h(distribution)g(medium,)g(is)g(called)165
-330 y(an)f(\\aggregate")e(if)h(the)i(cop)o(yrigh)o(t)d(resulting)h
-(from)h(the)g(compilation)e(is)i(not)f(used)i(to)e(limit)g(the)165
-385 y(legal)e(righ)o(ts)g(of)h(the)g(compilation's)f(users)h(b)q(ey)o
-(ond)h(what)f(the)g(individual)f(w)o(orks)h(p)q(ermit.)19
-b(When)165 440 y(the)g(Do)q(cumen)o(t)g(is)g(included)h(in)f(an)g
-(aggregate,)f(this)h(License)h(do)q(es)g(not)e(apply)h(to)g(the)g
-(other)165 495 y(w)o(orks)14 b(in)h(the)g(aggregate)f(whic)o(h)h(are)g
-(not)g(themselv)o(es)g(deriv)m(ativ)o(e)f(w)o(orks)g(of)h(the)g(Do)q
-(cumen)o(t.)165 566 y(If)d(the)f(Co)o(v)o(er)f(T)l(ext)i(requiremen)o
-(t)f(of)g(section)g(3)g(is)g(applicable)f(to)h(these)h(copies)f(of)g
-(the)g(Do)q(cumen)o(t,)165 621 y(then)h(if)e(the)i(Do)q(cumen)o(t)f(is)
-f(less)h(than)g(one)h(half)e(of)h(the)g(en)o(tire)g(aggregate,)f(the)h
-(Do)q(cumen)o(t's)g(Co)o(v)o(er)165 675 y(T)l(exts)i(ma)o(y)g(b)q(e)h
-(placed)f(on)g(co)o(v)o(ers)g(that)f(brac)o(k)o(et)h(the)g(Do)q(cumen)o
-(t)g(within)g(the)g(aggregate,)f(or)h(the)165 730 y(electronic)k(equiv)
-m(alen)o(t)g(of)g(co)o(v)o(ers)g(if)g(the)h(Do)q(cumen)o(t)f(is)g(in)g
-(electronic)g(form.)27 b(Otherwise)17 b(they)165 785
-y(m)o(ust)e(app)q(ear)g(on)g(prin)o(ted)g(co)o(v)o(ers)g(that)f(brac)o
-(k)o(et)h(the)g(whole)g(aggregate.)100 856 y(8.)29 b(TRANSLA)l(TION)165
-928 y(T)l(ranslation)18 b(is)i(considered)g(a)g(kind)g(of)f(mo)q
-(di\014cation,)h(so)g(y)o(ou)g(ma)o(y)f(distribute)g(translations)165
-982 y(of)j(the)g(Do)q(cumen)o(t)g(under)h(the)f(terms)g(of)g(section)f
-(4.)41 b(Replacing)22 b(In)o(v)m(arian)o(t)g(Sections)g(with)165
-1037 y(translations)f(requires)h(sp)q(ecial)h(p)q(ermission)f(from)g
-(their)g(cop)o(yrigh)o(t)f(holders,)j(but)f(y)o(ou)g(ma)o(y)165
-1092 y(include)13 b(translations)d(of)i(some)g(or)f(all)g(In)o(v)m
-(arian)o(t)h(Sections)g(in)g(addition)g(to)f(the)h(original)f(v)o
-(ersions)165 1147 y(of)k(these)h(In)o(v)m(arian)o(t)f(Sections.)22
-b(Y)l(ou)15 b(ma)o(y)g(include)i(a)e(translation)f(of)h(this)g
-(License,)h(and)g(all)f(the)165 1201 y(license)21 b(notices)f(in)g(the)
-h(Do)q(cumen)o(t,)g(and)g(an)o(y)f(W)l(arran)o(t)o(y)f(Disclaimers,)h
-(pro)o(vided)g(that)g(y)o(ou)165 1256 y(also)f(include)h(the)g
-(original)f(English)g(v)o(ersion)g(of)h(this)f(License)i(and)f(the)g
-(original)e(v)o(ersions)h(of)165 1311 y(those)e(notices)f(and)i
-(disclaimers.)24 b(In)18 b(case)f(of)f(a)h(disagreemen)o(t)f(b)q(et)o
-(w)o(een)i(the)f(translation)e(and)165 1366 y(the)j(original)d(v)o
-(ersion)i(of)g(this)g(License)i(or)e(a)g(notice)g(or)g(disclaimer,)g
-(the)h(original)d(v)o(ersion)i(will)165 1421 y(prev)m(ail.)165
-1492 y(If)e(a)f(section)f(in)i(the)f(Do)q(cumen)o(t)g(is)g(En)o(titled)
-f(\\Ac)o(kno)o(wledgemen)o(ts",)g(\\Dedications",)g(or)g(\\His-)165
-1547 y(tory",)f(the)h(requiremen)o(t)g(\(section)f(4\))h(to)f(Preserv)o
-(e)h(its)g(Title)f(\(section)g(1\))h(will)f(t)o(ypically)f(require)165
-1601 y(c)o(hanging)k(the)g(actual)f(title.)100 1673 y(9.)29
-b(TERMINA)l(TION)165 1744 y(Y)l(ou)15 b(ma)o(y)f(not)h(cop)o(y)l(,)f
-(mo)q(dify)l(,)h(sublicense,)g(or)f(distribute)g(the)h(Do)q(cumen)o(t)g
-(except)h(as)e(expressly)165 1799 y(pro)o(vided)19 b(under)h(this)f
-(License.)33 b(An)o(y)19 b(attempt)f(otherwise)h(to)f(cop)o(y)l(,)i(mo)
-q(dify)l(,)g(sublicense,)g(or)165 1854 y(distribute)14
-b(it)h(is)g(v)o(oid,)f(and)h(will)f(automatically)f(terminate)h(y)o
-(our)g(righ)o(ts)g(under)i(this)f(License.)165 1925 y(Ho)o(w)o(ev)o
-(er,)g(if)h(y)o(ou)g(cease)g(all)f(violation)f(of)i(this)g(License,)h
-(then)f(y)o(our)g(license)g(from)f(a)h(particular)165
-1980 y(cop)o(yrigh)o(t)h(holder)g(is)h(reinstated)f(\(a\))g(pro)o
-(visionally)l(,)f(unless)i(and)g(un)o(til)f(the)h(cop)o(yrigh)o(t)e
-(holder)165 2034 y(explicitly)j(and)i(\014nally)e(terminates)h(y)o(our)
-f(license,)j(and)e(\(b\))g(p)q(ermanen)o(tly)l(,)h(if)f(the)g(cop)o
-(yrigh)o(t)165 2089 y(holder)d(fails)f(to)h(notify)f(y)o(ou)h(of)g(the)
-g(violation)e(b)o(y)i(some)g(reasonable)g(means)g(prior)f(to)h(60)f(da)
-o(ys)165 2144 y(after)e(the)i(cessation.)165 2215 y(Moreo)o(v)o(er,)e
-(y)o(our)h(license)h(from)f(a)g(particular)g(cop)o(yrigh)o(t)f(holder)i
-(is)f(reinstated)g(p)q(ermanen)o(tly)g(if)165 2270 y(the)f(cop)o(yrigh)
-o(t)f(holder)g(noti\014es)h(y)o(ou)f(of)h(the)g(violation)e(b)o(y)h
-(some)h(reasonable)f(means,)h(this)f(is)h(the)165 2325
-y(\014rst)g(time)f(y)o(ou)g(ha)o(v)o(e)h(receiv)o(ed)g(notice)f(of)h
-(violation)e(of)h(this)h(License)g(\(for)f(an)o(y)h(w)o(ork\))f(from)g
-(that)165 2380 y(cop)o(yrigh)o(t)i(holder,)g(and)h(y)o(ou)g(cure)g(the)
-g(violation)e(prior)i(to)f(30)g(da)o(ys)h(after)f(y)o(our)g(receipt)h
-(of)g(the)165 2434 y(notice.)165 2506 y(T)l(ermination)d(of)g(y)o(our)g
-(righ)o(ts)g(under)h(this)f(section)h(do)q(es)g(not)f(terminate)g(the)h
-(licenses)f(of)h(parties)165 2560 y(who)19 b(ha)o(v)o(e)g(receiv)o(ed)g
-(copies)g(or)f(righ)o(ts)g(from)g(y)o(ou)h(under)h(this)e(License.)33
-b(If)19 b(y)o(our)g(righ)o(ts)e(ha)o(v)o(e)165 2615 y(b)q(een)d
-(terminated)e(and)i(not)e(p)q(ermanen)o(tly)h(reinstated,)f(receipt)h
-(of)g(a)g(cop)o(y)g(of)f(some)h(or)f(all)g(of)h(the)165
-2670 y(same)i(material)e(do)q(es)j(not)f(giv)o(e)f(y)o(ou)h(an)o(y)g
-(righ)o(ts)f(to)g(use)i(it.)p eop end
-%%Page: 29 32
-TeXDict begin 29 31 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(29)77 149
-y(10.)29 b(FUTURE)15 b(REVISIONS)j(OF)d(THIS)h(LICENSE)165
-217 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l(oundation)h(ma)o(y)g
-(publish)h(new,)h(revised)f(v)o(ersions)f(of)g(the)h(GNU)g(F)l(ree)165
-271 y(Do)q(cumen)o(tation)15 b(License)i(from)e(time)g(to)h(time.)21
-b(Suc)o(h)c(new)f(v)o(ersions)g(will)e(b)q(e)j(similar)d(in)i(spirit)
-165 326 y(to)h(the)g(presen)o(t)g(v)o(ersion,)g(but)g(ma)o(y)f
-(di\013er)h(in)g(detail)f(to)h(address)g(new)g(problems)g(or)g
-(concerns.)165 381 y(See)f Fn(http://www.gnu.org/copyle)o(ft/)p
-Fo(.)165 448 y(Eac)o(h)f(v)o(ersion)e(of)i(the)g(License)g(is)f(giv)o
-(en)g(a)h(distinguishing)e(v)o(ersion)h(n)o(um)o(b)q(er.)20
-b(If)15 b(the)g(Do)q(cumen)o(t)165 503 y(sp)q(eci\014es)23
-b(that)f(a)h(particular)e(n)o(um)o(b)q(ered)j(v)o(ersion)d(of)i(this)f
-(License)h(\\or)f(an)o(y)g(later)g(v)o(ersion")165 558
-y(applies)16 b(to)f(it,)h(y)o(ou)g(ha)o(v)o(e)g(the)g(option)f(of)h
-(follo)o(wing)e(the)i(terms)g(and)g(conditions)g(either)g(of)g(that)165
-613 y(sp)q(eci\014ed)k(v)o(ersion)e(or)h(of)f(an)o(y)h(later)f(v)o
-(ersion)g(that)g(has)h(b)q(een)h(published)g(\(not)e(as)g(a)h(draft\))f
-(b)o(y)165 667 y(the)e(F)l(ree)h(Soft)o(w)o(are)e(F)l(oundation.)22
-b(If)17 b(the)g(Do)q(cumen)o(t)f(do)q(es)g(not)g(sp)q(ecify)h(a)f(v)o
-(ersion)g(n)o(um)o(b)q(er)g(of)165 722 y(this)h(License,)h(y)o(ou)f(ma)
-o(y)f(c)o(ho)q(ose)i(an)o(y)e(v)o(ersion)h(ev)o(er)g(published)h(\(not)
-e(as)h(a)g(draft\))f(b)o(y)i(the)f(F)l(ree)165 777 y(Soft)o(w)o(are)e
-(F)l(oundation.)21 b(If)16 b(the)g(Do)q(cumen)o(t)g(sp)q(eci\014es)h
-(that)e(a)h(pro)o(xy)f(can)h(decide)h(whic)o(h)f(future)165
-832 y(v)o(ersions)f(of)h(this)g(License)h(can)f(b)q(e)h(used,)g(that)f
-(pro)o(xy's)f(public)h(statemen)o(t)g(of)g(acceptance)g(of)g(a)165
-887 y(v)o(ersion)e(p)q(ermanen)o(tly)h(authorizes)g(y)o(ou)g(to)f(c)o
-(ho)q(ose)i(that)e(v)o(ersion)g(for)h(the)g(Do)q(cumen)o(t.)77
-954 y(11.)29 b(RELICENSING)165 1021 y(\\Massiv)o(e)17
-b(Multiauthor)g(Collab)q(oration)f(Site")i(\(or)g(\\MMC)g(Site"\))f
-(means)i(an)o(y)f(W)l(orld)g(Wide)165 1076 y(W)l(eb)g(serv)o(er)g(that)
-f(publishes)h(cop)o(yrigh)o(table)e(w)o(orks)h(and)h(also)f(pro)o
-(vides)h(prominen)o(t)f(facilities)165 1131 y(for)c(an)o(yb)q(o)q(dy)h
-(to)f(edit)h(those)f(w)o(orks.)19 b(A)14 b(public)f(wiki)g(that)g(an)o
-(yb)q(o)q(dy)h(can)g(edit)g(is)f(an)h(example)f(of)165
-1186 y(suc)o(h)k(a)g(serv)o(er.)24 b(A)17 b(\\Massiv)o(e)e(Multiauthor)
-g(Collab)q(oration")g(\(or)h(\\MMC"\))f(con)o(tained)h(in)h(the)165
-1240 y(site)e(means)g(an)o(y)g(set)g(of)f(cop)o(yrigh)o(table)g(w)o
-(orks)g(th)o(us)h(published)h(on)f(the)g(MMC)g(site.)165
-1308 y(\\CC-BY-SA")j(means)f(the)h(Creativ)o(e)e(Commons)h(A)o
-(ttribution-Share)f(Alik)o(e)h(3.0)g(license)g(pub-)165
-1362 y(lished)c(b)o(y)h(Creativ)o(e)e(Commons)g(Corp)q(oration,)g(a)h
-(not-for-pro\014t)g(corp)q(oration)f(with)h(a)g(principal)165
-1417 y(place)g(of)f(business)i(in)f(San)g(F)l(rancisco,)f(California,)f
-(as)h(w)o(ell)g(as)h(future)g(cop)o(yleft)f(v)o(ersions)g(of)h(that)165
-1472 y(license)i(published)h(b)o(y)f(that)g(same)f(organization.)165
-1539 y(\\Incorp)q(orate")h(means)g(to)g(publish)g(or)g(republish)g(a)g
-(Do)q(cumen)o(t,)g(in)g(whole)g(or)g(in)g(part,)g(as)g(part)165
-1594 y(of)g(another)g(Do)q(cumen)o(t.)165 1661 y(An)e(MMC)g(is)f
-(\\eligible)g(for)g(relicensing")h(if)f(it)h(is)f(licensed)i(under)g
-(this)e(License,)i(and)f(if)g(all)f(w)o(orks)165 1716
-y(that)20 b(w)o(ere)h(\014rst)g(published)g(under)h(this)e(License)i
-(somewhere)f(other)g(than)g(this)f(MMC,)g(and)165 1771
-y(subsequen)o(tly)e(incorp)q(orated)e(in)i(whole)f(or)g(in)g(part)g(in)
-o(to)f(the)h(MMC,)f(\(1\))h(had)g(no)h(co)o(v)o(er)f(texts)165
-1826 y(or)e(in)o(v)m(arian)o(t)e(sections,)i(and)g(\(2\))f(w)o(ere)h
-(th)o(us)g(incorp)q(orated)g(prior)f(to)h(No)o(v)o(em)o(b)q(er)g(1,)f
-(2008.)165 1893 y(The)21 b(op)q(erator)e(of)h(an)g(MMC)f(Site)h(ma)o(y)
-g(republish)h(an)f(MMC)f(con)o(tained)h(in)g(the)h(site)e(under)165
-1948 y(CC-BY-SA)d(on)f(the)g(same)g(site)f(at)h(an)o(y)f(time)h(b)q
-(efore)g(August)g(1,)g(2009,)e(pro)o(vided)i(the)g(MMC)f(is)165
-2002 y(eligible)g(for)h(relicensing.)p eop end
-%%Page: 30 33
-TeXDict begin 30 32 bop 75 -58 a Fo(App)q(endix)16 b(A:)f(GNU)g(F)l
-(ree)g(Do)q(cumen)o(tation)g(License)802 b(30)75 149
-y Fm(ADDENDUM:)20 b(Ho)n(w)h(to)h(use)g(this)g(License)g(for)g(y)n(our)
-h(do)r(cumen)n(ts)75 229 y Fo(T)l(o)17 b(use)h(this)e(License)i(in)g(a)
-f(do)q(cumen)o(t)g(y)o(ou)g(ha)o(v)o(e)g(written,)g(include)g(a)g(cop)o
-(y)g(of)g(the)h(License)g(in)f(the)75 284 y(do)q(cumen)o(t)f(and)f(put)
-g(the)h(follo)o(wing)d(cop)o(yrigh)o(t)g(and)j(license)f(notices)g
-(just)g(after)f(the)h(title)f(page:)234 340 y Fb(Copyright)i(\(C\))38
-b Fa(year)g(your)18 b(name)p Fb(.)234 384 y(Permission)e(is)j(granted)e
-(to)i(copy,)e(distribute)f(and/or)h(modify)h(this)g(document)234
-427 y(under)g(the)g(terms)g(of)h(the)f(GNU)h(Free)f(Documenta)o(tio)o
-(n)e(License,)h(Version)g(1.3)234 471 y(or)i(any)g(later)e(version)g
-(published)f(by)j(the)g(Free)f(Software)e(Foundation)o(;)234
-514 y(with)i(no)h(Invariant)d(Sections,)g(no)j(Front-Cove)o(r)e(Texts,)
-g(and)h(no)h(Back-Cover)234 558 y(Texts.)37 b(A)19 b(copy)f(of)h(the)g
-(license)e(is)h(included)f(in)i(the)f(section)f(entitled)g(``GNU)234
-601 y(Free)h(Documentat)o(ion)e(License'')o(.)137 669
-y Fo(If)k(y)o(ou)g(ha)o(v)o(e)g(In)o(v)m(arian)o(t)f(Sections,)h(F)l
-(ron)o(t-Co)o(v)o(er)f(T)l(exts)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l
-(exts,)i(replace)f(the)75 724 y(\\with)s(.)10 b(.)g(.)5
-b(T)l(exts.")20 b(line)15 b(with)f(this:)273 780 y Fb(with)19
-b(the)f(Invariant)e(Sections)h(being)g Fa(list)h(their)g(titles)p
-Fb(,)f(with)273 823 y(the)i(Front-Cov)o(er)d(Texts)i(being)g
-Fa(list)p Fb(,)f(and)i(with)f(the)g(Back-Cover)e(Texts)273
-867 y(being)i Fa(list)p Fb(.)137 934 y Fo(If)g(y)o(ou)f(ha)o(v)o(e)h
-(In)o(v)m(arian)o(t)f(Sections)g(without)g(Co)o(v)o(er)f(T)l(exts,)i
-(or)f(some)g(other)g(com)o(bination)g(of)g(the)75 989
-y(three,)e(merge)g(those)g(t)o(w)o(o)f(alternativ)o(es)f(to)i(suit)f
-(the)h(situation.)137 1056 y(If)d(y)o(our)g(do)q(cumen)o(t)g(con)o
-(tains)f(non)o(trivial)f(examples)i(of)f(program)g(co)q(de,)i(w)o(e)f
-(recommend)g(releasing)75 1111 y(these)22 b(examples)f(in)g(parallel)g
-(under)h(y)o(our)f(c)o(hoice)g(of)g(free)h(soft)o(w)o(are)e(license,)i
-(suc)o(h)g(as)g(the)f(GNU)75 1166 y(General)15 b(Public)g(License,)g
-(to)g(p)q(ermit)g(their)f(use)i(in)f(free)g(soft)o(w)o(are.)p
-eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/lib/readline/doc/rluserman.texinfo b/lib/readline/doc/rluserman.texinfo
deleted file mode 100644 (file)
index 89abe31..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-\input texinfo    @c -*-texinfo-*-
-@comment %**start of header (This is for running Texinfo on a region.)
-@setfilename rluserman.info
-@settitle GNU Readline Library
-@comment %**end of header (This is for running Texinfo on a region.)
-@setchapternewpage odd
-
-@include manvers.texinfo
-
-@ifinfo
-@dircategory Libraries
-@direntry
-* RLuserman: (rluserman).       The GNU readline library User's Manual.
-@end direntry
-
-This document describes the end user interface of the GNU Readline Library,
-a utility which aids in the consistency of user interface across discrete
-programs that need to provide a command line interface.
-
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-pare preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
-@titlepage  
-@title GNU Readline Library User Interface
-@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
-@author Brian Fox, Free Software Foundation
-@author Chet Ramey, Case Western Reserve University
-
-@page
-This document describes the end user interface of the GNU Readline Library,
-a utility which aids in the consistency of user interface across discrete
-programs that need to provide a command line interface.
-
-Published by the Free Software Foundation @*
-59 Temple Place, Suite 330, @*
-Boston, MA 02111 USA
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988-2002 Free Software Foundation, Inc.
-@end titlepage
-
-@ifinfo
-@node Top
-@top GNU Readline Library
-
-This document describes the end user interface of the GNU Readline Library,
-a utility which aids in the consistency of user interface across discrete
-programs that need to provide a command line interface.
-
-@menu
-* Command Line Editing::          GNU Readline User's Manual.
-@end menu
-@end ifinfo
-
-@include rluser.texinfo
-
-@contents
-@bye
diff --git a/lib/readline/doc/rluserman.tmp b/lib/readline/doc/rluserman.tmp
deleted file mode 100644 (file)
index 95e17c4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-This manual describes the end user interface of the GNU Readline Library
-(version @value{VERSION}, @value{UPDATED}), a library which aids in the
-consistency of user interface across discrete programs which provide
-a command line interface.
-
-Copyright @copyright{} 1988--2014 Free Software Foundation, Inc.
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-@end quotation
-@empty 
diff --git a/lib/readline/doc/rluserman.toc b/lib/readline/doc/rluserman.toc
deleted file mode 100644 (file)
index 08ecaf9..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-@numchapentry{Command Line Editing}{1}{Command Line Editing}{1}
-@numsecentry{Introduction to Line Editing}{1.1}{Introduction and Notation}{1}
-@numsecentry{Readline Interaction}{1.2}{Readline Interaction}{1}
-@numsubsecentry{Readline Bare Essentials}{1.2.1}{Readline Bare Essentials}{1}
-@numsubsecentry{Readline Movement Commands}{1.2.2}{Readline Movement Commands}{2}
-@numsubsecentry{Readline Killing Commands}{1.2.3}{Readline Killing Commands}{2}
-@numsubsecentry{Readline Arguments}{1.2.4}{Readline Arguments}{3}
-@numsubsecentry{Searching for Commands in the History}{1.2.5}{Searching}{3}
-@numsecentry{Readline Init File}{1.3}{Readline Init File}{4}
-@numsubsecentry{Readline Init File Syntax}{1.3.1}{Readline Init File Syntax}{4}
-@numsubsecentry{Conditional Init Constructs}{1.3.2}{Conditional Init Constructs}{12}
-@numsubsecentry{Sample Init File}{1.3.3}{Sample Init File}{12}
-@numsecentry{Bindable Readline Commands}{1.4}{Bindable Readline Commands}{15}
-@numsubsecentry{Commands For Moving}{1.4.1}{Commands For Moving}{15}
-@numsubsecentry{Commands For Manipulating The History}{1.4.2}{Commands For History}{15}
-@numsubsecentry{Commands For Changing Text}{1.4.3}{Commands For Text}{17}
-@numsubsecentry{Killing And Yanking}{1.4.4}{Commands For Killing}{18}
-@numsubsecentry{Specifying Numeric Arguments}{1.4.5}{Numeric Arguments}{19}
-@numsubsecentry{Letting Readline Type For You}{1.4.6}{Commands For Completion}{20}
-@numsubsecentry{Keyboard Macros}{1.4.7}{Keyboard Macros}{20}
-@numsubsecentry{Some Miscellaneous Commands}{1.4.8}{Miscellaneous Commands}{21}
-@numsecentry{Readline vi Mode}{1.5}{Readline vi Mode}{22}
-@appentry{GNU Free Documentation License}{A}{GNU Free Documentation License}{23}
diff --git a/lib/readline/doc/rluserman.tp b/lib/readline/doc/rluserman.tp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lib/readline/doc/rluserman.vr b/lib/readline/doc/rluserman.vr
deleted file mode 100644 (file)
index 5666f4f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-\entry{bell-style}{4}{\code {bell-style}}
-\entry{bind-tty-special-chars}{5}{\code {bind-tty-special-chars}}
-\entry{blink-matching-paren}{5}{\code {blink-matching-paren}}
-\entry{colored-completion-prefix}{5}{\code {colored-completion-prefix}}
-\entry{colored-stats}{5}{\code {colored-stats}}
-\entry{comment-begin}{5}{\code {comment-begin}}
-\entry{completion-display-width}{5}{\code {completion-display-width}}
-\entry{completion-ignore-case}{5}{\code {completion-ignore-case}}
-\entry{completion-map-case}{5}{\code {completion-map-case}}
-\entry{completion-prefix-display-length}{5}{\code {completion-prefix-display-length}}
-\entry{completion-query-items}{6}{\code {completion-query-items}}
-\entry{convert-meta}{6}{\code {convert-meta}}
-\entry{disable-completion}{6}{\code {disable-completion}}
-\entry{editing-mode}{6}{\code {editing-mode}}
-\entry{emacs-mode-string}{6}{\code {emacs-mode-string}}
-\entry{echo-control-characters}{6}{\code {echo-control-characters}}
-\entry{enable-bracketed-paste}{6}{\code {enable-bracketed-paste}}
-\entry{enable-keypad}{6}{\code {enable-keypad}}
-\entry{expand-tilde}{7}{\code {expand-tilde}}
-\entry{history-preserve-point}{7}{\code {history-preserve-point}}
-\entry{history-size}{7}{\code {history-size}}
-\entry{horizontal-scroll-mode}{7}{\code {horizontal-scroll-mode}}
-\entry{input-meta}{7}{\code {input-meta}}
-\entry{meta-flag}{7}{\code {meta-flag}}
-\entry{isearch-terminators}{7}{\code {isearch-terminators}}
-\entry{keymap}{7}{\code {keymap}}
-\entry{mark-modified-lines}{8}{\code {mark-modified-lines}}
-\entry{mark-symlinked-directories}{8}{\code {mark-symlinked-directories}}
-\entry{match-hidden-files}{8}{\code {match-hidden-files}}
-\entry{menu-complete-display-prefix}{8}{\code {menu-complete-display-prefix}}
-\entry{output-meta}{8}{\code {output-meta}}
-\entry{page-completions}{8}{\code {page-completions}}
-\entry{revert-all-at-newline}{9}{\code {revert-all-at-newline}}
-\entry{show-all-if-ambiguous}{9}{\code {show-all-if-ambiguous}}
-\entry{show-all-if-unmodified}{9}{\code {show-all-if-unmodified}}
-\entry{show-mode-in-prompt}{9}{\code {show-mode-in-prompt}}
-\entry{skip-completed-text}{9}{\code {skip-completed-text}}
-\entry{vi-cmd-mode-string}{9}{\code {vi-cmd-mode-string}}
-\entry{vi-ins-mode-string}{10}{\code {vi-ins-mode-string}}
-\entry{visible-stats}{10}{\code {visible-stats}}
diff --git a/lib/readline/doc/rluserman.vrs b/lib/readline/doc/rluserman.vrs
deleted file mode 100644 (file)
index 0c19fa4..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-\initial {B}
-\entry {\code {bell-style}}{4}
-\entry {\code {bind-tty-special-chars}}{5}
-\entry {\code {blink-matching-paren}}{5}
-\initial {C}
-\entry {\code {colored-completion-prefix}}{5}
-\entry {\code {colored-stats}}{5}
-\entry {\code {comment-begin}}{5}
-\entry {\code {completion-display-width}}{5}
-\entry {\code {completion-ignore-case}}{5}
-\entry {\code {completion-map-case}}{5}
-\entry {\code {completion-prefix-display-length}}{5}
-\entry {\code {completion-query-items}}{6}
-\entry {\code {convert-meta}}{6}
-\initial {D}
-\entry {\code {disable-completion}}{6}
-\initial {E}
-\entry {\code {echo-control-characters}}{6}
-\entry {\code {editing-mode}}{6}
-\entry {\code {emacs-mode-string}}{6}
-\entry {\code {enable-bracketed-paste}}{6}
-\entry {\code {enable-keypad}}{6}
-\entry {\code {expand-tilde}}{7}
-\initial {H}
-\entry {\code {history-preserve-point}}{7}
-\entry {\code {history-size}}{7}
-\entry {\code {horizontal-scroll-mode}}{7}
-\initial {I}
-\entry {\code {input-meta}}{7}
-\entry {\code {isearch-terminators}}{7}
-\initial {K}
-\entry {\code {keymap}}{7}
-\initial {M}
-\entry {\code {mark-modified-lines}}{8}
-\entry {\code {mark-symlinked-directories}}{8}
-\entry {\code {match-hidden-files}}{8}
-\entry {\code {menu-complete-display-prefix}}{8}
-\entry {\code {meta-flag}}{7}
-\initial {O}
-\entry {\code {output-meta}}{8}
-\initial {P}
-\entry {\code {page-completions}}{8}
-\initial {R}
-\entry {\code {revert-all-at-newline}}{9}
-\initial {S}
-\entry {\code {show-all-if-ambiguous}}{9}
-\entry {\code {show-all-if-unmodified}}{9}
-\entry {\code {show-mode-in-prompt}}{9}
-\entry {\code {skip-completed-text}}{9}
-\initial {V}
-\entry {\code {vi-cmd-mode-string}}{9}
-\entry {\code {vi-ins-mode-string}}{10}
-\entry {\code {visible-stats}}{10}
diff --git a/lib/readline/doc/texi2dvi b/lib/readline/doc/texi2dvi
deleted file mode 120000 (symlink)
index 113d526..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../support/texi2dvi
\ No newline at end of file
diff --git a/lib/readline/doc/texi2html b/lib/readline/doc/texi2html
deleted file mode 120000 (symlink)
index 93433e5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../support/texi2html
\ No newline at end of file
diff --git a/lib/readline/doc/texinfo.tex b/lib/readline/doc/texinfo.tex
deleted file mode 120000 (symlink)
index 234f085..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../doc/texinfo.tex
\ No newline at end of file
diff --git a/lib/readline/examples/rl-callbacktest2.c b/lib/readline/examples/rl-callbacktest2.c
deleted file mode 100644 (file)
index 2525b70..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Standard include files. stdio.h is required. */
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-
-/* Used for select(2) */
-#include <sys/types.h>
-#include <sys/select.h>
-#include <errno.h>
-
-#include <signal.h>
-
-#include <stdio.h>
-
-/* Standard readline include files. */
-#if defined (READLINE_LIBRARY)
-#  include "readline.h"
-#  include "history.h"
-#else
-#  include <readline/readline.h>
-#  include <readline/history.h>
-#endif
-
-static void cb_linehandler (char *);
-static void sigint_sighandler (int);
-static int sigint_handler (int);
-
-static int saw_signal = 0;
-
-int running;
-const char *prompt = "rltest$ ";
-char *input_string;
-
-/* Callback function called for each line when accept-line executed, EOF
-   seen, or EOF character read.  This sets a flag and returns; it could
-   also call exit(3). */
-static void
-cb_linehandler (char *line)
-{
-  if (line && *line)
-    add_history (line);
-  printf ("input line: %s\n", line ? line : "");
-  input_string = line;
-  rl_callback_handler_remove ();
-}
-
-static char *
-cb_readline ()
-{
-  fd_set fds;
-  int r, err;
-  char *not_done = "";
-  
-  /* Install the line handler. */
-  rl_callback_handler_install (prompt, cb_linehandler);
-
-if (RL_ISSTATE (RL_STATE_ISEARCH))
-  fprintf(stderr, "cb_readline: after handler install, state (ISEARCH) = %d", rl_readline_state);
-else if (RL_ISSTATE (RL_STATE_NSEARCH))
-  fprintf(stderr, "cb_readline: after handler install, state (NSEARCH) = %d", rl_readline_state);
-/* MULTIKEY VIMOTION NUMERICARG _rl_callback_func */
-
-  FD_ZERO (&fds);
-  FD_SET (fileno (rl_instream), &fds);    
-
-  input_string = not_done;
-
-  while (input_string == not_done)
-    {
-      r = err = 0;
-      /* Enter a simple event loop.  This waits until something is available
-        to read on readline's input stream (defaults to standard input) and
-        calls the builtin character read callback to read it.  It does not
-        have to modify the user's terminal settings. */
-      while (r == 0)
-       {
-         struct timeval timeout = {0, 100000};
-         struct timeval *timeoutp = NULL;      
-
-         timeoutp = &timeout;
-         FD_SET (fileno (rl_instream), &fds);    
-         r = select (FD_SETSIZE, &fds, NULL, NULL, timeoutp);
-         err = errno;
-       }
-
-      if (saw_signal)
-        sigint_handler (saw_signal);
-
-      if (r < 0)
-       {
-         perror ("rltest: select");
-         rl_callback_handler_remove ();
-         break;
-       }
-
-      /* if (FD_ISSET (fileno (rl_instream), &fds)) */
-      if (r > 0)
-       rl_callback_read_char ();
-    }
-  return input_string;
-}
-
-void
-sigint_sighandler (s)
-     int s;
-{
-  saw_signal = s;
-}
-
-int
-sigint_handler (s)
-     int s;
-{
-  rl_free_line_state ();
-  rl_callback_sigcleanup ();
-  rl_cleanup_after_signal ();
-  rl_callback_handler_remove ();
-  saw_signal = 0;
-fprintf(stderr, "sigint_handler: readline state = %d\r\n", rl_readline_state);
-  return s;  
-}
-
-int
-main (int c, char **v)
-{
-  char *p;
-
-  running = 1;
-  rl_catch_signals = 1;
-
-  rl_bind_key_in_map ('r', rl_history_search_backward, emacs_meta_keymap);
-  rl_bind_key_in_map ('s', rl_history_search_forward, emacs_meta_keymap);
-
-  signal (SIGINT, sigint_sighandler);
-  while (running)
-    {
-      p = cb_readline ();
-      if (p == 0 || strcmp (p, "exit") == 0)
-        break;
-    }
-  printf ("rl-callbacktest2: Event loop has exited\n");
-  return 0;
-}
diff --git a/lib/readline/examples/rlptytest.c b/lib/readline/examples/rlptytest.c
deleted file mode 100644 (file)
index 79257db..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- *
- * Another test harness for the readline callback interface.
- *
- * Author: Bob Rossi <bob@brasko.net>
- */
-
-#if defined (HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <curses.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <signal.h>
-
-#if 0  /* LINUX */
-#include <pty.h>
-#else
-#include <util.h>
-#endif
-
-#ifdef READLINE_LIBRARY
-#  include "readline.h"
-#else
-#  include <readline/readline.h>
-#endif
-
-/**
- * Master/Slave PTY used to keep readline off of stdin/stdout.
- */
-static int masterfd = -1;
-static int slavefd;
-
-void
-sigint (s)
-     int s;
-{
-  tty_reset (STDIN_FILENO);
-  close (masterfd);
-  close (slavefd);
-  printf ("\n");
-  exit (0);
-}
-
-static int 
-user_input()
-{
-  int size;
-  const int MAX = 1024;
-  char *buf = (char *)malloc(MAX+1);
-
-  size = read (STDIN_FILENO, buf, MAX);
-  if (size == -1)
-    return -1;
-
-  size = write (masterfd, buf, size);
-  if (size == -1)
-    return -1;
-
-  return 0;
-}
-
-static int 
-readline_input()
-{
-  const int MAX = 1024;
-  char *buf = (char *)malloc(MAX+1);
-  int size;
-
-  size = read (masterfd, buf, MAX);
-  if (size == -1)
-    {
-      free( buf );
-      buf = NULL;
-      return -1;
-    }
-
-  buf[size] = 0;
-
-  /* Display output from readline */
-  if ( size > 0 )
-    fprintf(stderr, "%s", buf);
-
-  free( buf );
-  buf = NULL;
-  return 0;
-}
-
-static void 
-rlctx_send_user_command(char *line)
-{
-  /* This happens when rl_callback_read_char gets EOF */
-  if ( line == NULL )
-    return;
-    
-  if (strcmp (line, "exit") == 0) {
-       tty_reset (STDIN_FILENO);
-       close (masterfd);
-       close (slavefd);
-       printf ("\n");
-       exit (0);
-  }
-  
-  /* Don't add the enter command */
-  if ( line && *line != '\0' )
-    add_history(line);
-}
-
-static void 
-custom_deprep_term_function ()
-{
-}
-
-static int 
-init_readline (int inputfd, int outputfd) 
-{
-  FILE *inputFILE, *outputFILE;
-
-  inputFILE = fdopen (inputfd, "r");
-  if (!inputFILE)
-    return -1;
-
-  outputFILE = fdopen (outputfd, "w");
-  if (!outputFILE)
-    return -1;
-
-  rl_instream = inputFILE;
-  rl_outstream = outputFILE;
-
-  /* Tell readline what the prompt is if it needs to put it back */
-  rl_callback_handler_install("(rltest):  ", rlctx_send_user_command);
-
-  /* Set the terminal type to dumb so the output of readline can be
-   * understood by tgdb */
-  if ( rl_reset_terminal("dumb") == -1 )
-    return -1;
-
-  /* For some reason, readline can not deprep the terminal.
-   * However, it doesn't matter because no other application is working on
-   * the terminal besides readline */
-  rl_deprep_term_function = custom_deprep_term_function;
-
-  using_history();
-  read_history(".history"); 
-
-  return 0;
-}
-
-static int 
-main_loop(void)
-{
-  fd_set rset;
-  int max;
-    
-  max = (masterfd > STDIN_FILENO) ? masterfd : STDIN_FILENO;
-  max = (max > slavefd) ? max : slavefd;
-
-  for (;;)
-    {
-      /* Reset the fd_set, and watch for input from GDB or stdin */
-      FD_ZERO(&rset);
-        
-      FD_SET(STDIN_FILENO, &rset);
-      FD_SET(slavefd, &rset);
-      FD_SET(masterfd, &rset);
-
-      /* Wait for input */
-      if (select(max + 1, &rset, NULL, NULL, NULL) == -1)
-        {
-          if (errno == EINTR)
-             continue;
-          else
-            return -1;
-        }
-
-      /* Input received through the pty:  Handle it 
-       * Wrote to masterfd, slave fd has that input, alert readline to read it. 
-       */
-      if (FD_ISSET(slavefd, &rset))
-        rl_callback_read_char();
-
-      /* Input received through the pty.
-       * Readline read from slavefd, and it wrote to the masterfd. 
-       */
-      if (FD_ISSET(masterfd, &rset))
-        if ( readline_input() == -1 )
-          return -1;
-
-      /* Input received:  Handle it, write to masterfd (input to readline) */
-      if (FD_ISSET(STDIN_FILENO, &rset))
-        if ( user_input() == -1 )
-          return -1;
-  }
-
-  return 0;
-}
-
-/* The terminal attributes before calling tty_cbreak */
-static struct termios save_termios;
-static struct winsize size;
-static enum { RESET, TCBREAK } ttystate = RESET;
-
-/* tty_cbreak: Sets terminal to cbreak mode. Also known as noncanonical mode.
- *    1. Signal handling is still turned on, so the user can still type those.
- *    2. echo is off
- *    3. Read in one char at a time.
- *
- * fd    - The file descriptor of the terminal
- * 
- * Returns: 0 on sucess, -1 on error
- */
-int tty_cbreak(int fd){
-   struct termios buf;
-    int ttysavefd = -1;
-   
-   if(tcgetattr(fd, &save_termios) < 0)
-      return -1;
-      
-   buf = save_termios;
-   buf.c_lflag &= ~(ECHO | ICANON);
-   buf.c_iflag &= ~(ICRNL | INLCR);
-   buf.c_cc[VMIN] = 1;
-   buf.c_cc[VTIME] = 0;
-
-#if defined (VLNEXT) && defined (_POSIX_VDISABLE)
-   buf.c_cc[VLNEXT] = _POSIX_VDISABLE;
-#endif
-
-#if defined (VDSUSP) && defined (_POSIX_VDISABLE)
-   buf.c_cc[VDSUSP] = _POSIX_VDISABLE;
-#endif
-
-  /* enable flow control; only stty start char can restart output */
-#if 0
-  buf.c_iflag |= (IXON|IXOFF);
-#ifdef IXANY
-  buf.c_iflag &= ~IXANY;
-#endif
-#endif
-
-  /* disable flow control; let ^S and ^Q through to pty */
-  buf.c_iflag &= ~(IXON|IXOFF);
-#ifdef IXANY
-  buf.c_iflag &= ~IXANY;
-#endif
-
-  if(tcsetattr(fd, TCSAFLUSH, &buf) < 0)
-      return -1;
-
-   ttystate = TCBREAK;
-   ttysavefd = fd;
-
-   /* set size */
-   if(ioctl(fd, TIOCGWINSZ, (char *)&size) < 0)
-      return -1;
-
-#ifdef DEBUG
-   err_msg("%d rows and %d cols\n", size.ws_row, size.ws_col);   
-#endif
-   
-   return (0);   
-}
-
-int 
-tty_off_xon_xoff (int fd)
-{
-  struct termios buf;
-  int ttysavefd = -1;
-
-  if(tcgetattr(fd, &buf) < 0)
-    return -1;
-     
-  buf.c_iflag &= ~(IXON|IXOFF);
-
-  if(tcsetattr(fd, TCSAFLUSH, &buf) < 0)
-    return -1;
-
-  return 0;   
-}
-
-/* tty_reset: Sets the terminal attributes back to their previous state.
- * PRE: tty_cbreak must have already been called.
- * 
- * fd    - The file descrioptor of the terminal to reset.
- * 
- * Returns: 0 on success, -1 on error
- */
-int tty_reset(int fd)
-{
-   if(ttystate != TCBREAK)
-      return (0);
-
-   if(tcsetattr(fd, TCSAFLUSH, &save_termios) < 0)
-      return (-1);
-      
-   ttystate = RESET;
-   
-   return 0;   
-}
-
-int 
-main()
-{
-  int val;
-  val = openpty (&masterfd, &slavefd, NULL, NULL, NULL);
-  if (val == -1)
-    return -1;
-
-  val = tty_off_xon_xoff (masterfd);
-  if (val == -1)
-    return -1;
-
-  val = init_readline (slavefd, slavefd);
-  if (val == -1)
-    return -1;
-
-  val = tty_cbreak (STDIN_FILENO);
-  if (val == -1)
-    return -1;
-
-  signal (SIGINT, sigint);
-
-  val = main_loop ();
-
-  tty_reset (STDIN_FILENO);
-
-  if (val == -1)
-    return -1;
-
-  return 0;
-}
diff --git a/lib/sh/fdprintf.c b/lib/sh/fdprintf.c
deleted file mode 100644 (file)
index 27d3a4b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* fdprintf -- printf to a file descriptor */
-
-/* Copyright (C) 2008,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 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/>.
-*/
-                                 
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <stdc.h>
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#endif
-
-#if defined (PREFER_STDARG)
-#  include <stdarg.h>
-#else
-#  include <varargs.h>
-#endif
-
-#include <stdio.h>
-
-int
-#if defined (PREFER_STDARG)
-fdprintf(int fd, const char *format, ...)
-#else
-fdprintf(fd, format, va_alist)
-     int fd;
-     const char *format;
-     va_dcl
-#endif
-{
-  FILE *fp;
-  int fd2, rc, r2;
-  va_list args;
-
-  if ((fd2 = dup(fd)) < 0)
-    return -1;
-  fp = fdopen (fd2, "w");
-  if (fp == 0)
-    {
-      close (fd2);
-      return -1;
-    }
-
-  SH_VA_START (args, format);
-  rc = vfprintf (fp, format, args);
-  fflush (fp);
-  va_end (args);
-
-  r2 = fclose (fp);    /* check here */
-
-  return rc;
-}           
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/lib/termcap/grot/COPYING b/lib/termcap/grot/COPYING
deleted file mode 100644 (file)
index 2b940a4..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-The Free Software Foundation has exempted Bash from the requirement of
-Paragraph 2c of the General Public License.  This is to say, there is
-no requirement for Bash to print a notice when it is started
-interactively in the usual way.  We made this exception because users
-and standards expect shells not to print such messages.  This
-exception applies to any program that serves as a shell and that is
-based primarily on Bash as opposed to other GNU software.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-\f
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-       Appendix: How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
-
-    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
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/lib/termcap/grot/ChangeLog b/lib/termcap/grot/ChangeLog
deleted file mode 100644 (file)
index e8c4751..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-Wed Aug 16 20:45:44 1995  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>
-
-       * version.c: Version 1.3.
-
-       * termcap.c (tgetent): Use the user-supplied buffer even if we
-       don't find a matching terminal, so the program can set the buffer
-       if they want (`less' does this).  From Bob Pegram
-       <pegram@emba.uvm.edu>.
-
-Wed Jul 26 11:44:51 1995  David J. MacKenzie  <djm@geech.gnu.ai.mit.edu>
-
-       * termcap.c: TERMCAP_NAME -> TERMCAP_FILE.
-
-       * configure.in: Add --enable-install-termcap and --with-termcap
-       options.
-
-       * Makefile.in: Add hooks for new configure options.
-
-       * Makefile.in (DISTFILES): Add termcap.src.
-       (DEFS): Remove -DNO_ARG_ARRAY.
-       (install-data, uninstall-data): New targets.
-
-       * tparam.c (tparam): Remove arg array version and the #ifdef.
-
-       * termcap.c: Move #define of bcopy to after #include <string.h>.
-
-       * termcap.h: Prototype the arg to the tputs outfun arg.
-
-       * Makefile.in: realclean -> maintainer-clean.  Use @prefix@ and
-       @exec_prefix@.
-
-       * Makefile.in (DISTFILES): Add install-sh.
-
-Fri Apr  7 14:57:45 1995  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
-
-       * termcap.c (tgetent): Don't try to return the allocated address.
-       Always return 1 if successful.
-
-Tue Feb 14 02:34:43 1995  Richard Stallman  <rms@pogo.gnu.ai.mit.edu>
-
-       * termcap.c (speeds): Make it ints.  Add some higher speeds.
-       (tputs) [emacs]: If speed is high, convert to smaller units.
-       (tputs): Really use SPEED to calculate PADCOUNT.
-
-Sat Dec 17 07:20:24 1994  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
-
-       * termcap.c (tgetst1): Let ^? stand for DEL character.
-
-Thu Jun 30 04:35:50 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
-
-       * configure.in: Use AC_HAVE_HEADERS instead of AC_UNISTD_H.
-       Add AC_PROG_RANLIB.
-       * Makefile.in (AR, RANLIB): New variables.
-       (install, libtermcap.a): Use them instead of hard-wired commands.
-
-Sat Jun  4 12:21:41 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
-
-       * termcap.c [HAVE_CONFIG_H]: Include <sys/file.h>, and include
-       <fcntl.h> #ifdef USG5, so we get O_* defns.
-
-Wed May 25 19:05:30 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
-
-       * termcap.c (O_RDONLY): Define to 0 if not already defined.
-       (tgetent): Use O_RDONLY instead of explicit 0 in call to open.
-
-Wed Jan  5 22:20:15 1993  Morten Welinder  (terra@diku.dk)
-
-       * termcap.c (tgetent) [INTERNAL_TERMINAL]: Fake internal terminal 
-       without reading any files.
-       (valid_file_name, tgetent) [MSDOS]: Drive letter support.
-       (tgetent) [MSDOS]: Use text mode for database.
-
-Fri Dec 17 00:22:43 1993  Mike Long  (mike.long@analog.com)
-
-       * termcap.c (tgetent): Replaced literal filenames for termcap
-       database with preprocessor symbol TERMCAP_NAME.
-       (TERMCAP_NAME): Define if not defined.
-
-Fri Sep 10 00:35:07 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
-
-       * Makefile.in (.c.o): Put -I. before -I$(srcdir).
-       * termcap.c: Include <config.h> instead of "config.h".
-       * tparam.c: Likewise.
-
-Thu Jul 29 20:53:30 1993  David J. MacKenzie  (djm@wookumz.gnu.ai.mit.edu)
-
-       * Makefile.in (config.status): Run config.status --recheck, not
-       configure, to get the right args passed.
-
-Thu Apr 15 12:45:10 1993  David J. MacKenzie  (djm@kropotkin.gnu.ai.mit.edu)
-
-       * Version 1.2.
-
-       * tparam.c [!emacs] (xmalloc, xrealloc, memory_out): New functions.
-       (tparam1): Use them.
-
-       * termcap.c, tparam.c: Use NULL or '\0' where appropriate
-       instead of 0.  Rename some vars.
-       * termcap.c (tgetent): If EOF is reached on termcap file,
-       free allocated resources before returning.
-
-       * termcap.c (tgetent): Use /etc/termcap if TERMCAP is an entry
-       for a term type other than TERM.
-       From pjr@jet.UK (Paul J Rippin).
-
-Sat Apr 10 23:55:12 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
-
-       * tparam.c (tparam1): Don't set the 0200 bit on a non-0 character code.
-       From junio@twinsun.COM (Junio Hamano).
-
-Tue Dec  8 22:02:15 1992  David J. MacKenzie  (djm@kropotkin.gnu.ai.mit.edu)
-
-       * termcap.c, tparam.c: Use HAVE_STRING_H instead of USG.
-
-Thu Dec  3 13:47:56 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
-
-       * termcap.c, tparam.c [HAVE_CONFIG_H]: Include config.h.
-
-Fri Oct 23 12:35:29 1992  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
-
-       * termcap.h [__STDC__]: Add consts.  From Franc,ois Pinard.
-
-Tue Oct 13 15:52:21 1992  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
-
-       * Version 1.1.
-
-Tue Sep 29 21:04:39 1992  David J. MacKenzie  (djm@geech.gnu.ai.mit.edu)
-
-       * termcap.[ch], tparam.c: Fix some lint.
-
-       * version.c: New file.
-\f
-Local Variables:
-mode: indented-text
-left-margin: 8
-version-control: never
-End:
diff --git a/lib/termcap/grot/INSTALL b/lib/termcap/grot/INSTALL
deleted file mode 100644 (file)
index 95d84c8..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-Basic Installation
-==================
-
-   These are generic installation instructions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
-
-  4. Type `make install' to install the programs and any data files and
-     documentation.
-
-  5. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory.  After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
-     CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
-   If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
-
-`--help'
-     Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
-
diff --git a/lib/termcap/grot/Makefile.in b/lib/termcap/grot/Makefile.in
deleted file mode 100644 (file)
index e6f06ae..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-# Makefile for GNU termcap library.
-# Copyright (C) 1992, 1993, 1994 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, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-#### Start of system configuration section. ####
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-CC = @CC@
-AR = ar
-RANLIB = @RANLIB@
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-MAKEINFO = makeinfo
-
-DEFS = @DEFS@ -DTERMCAP_FILE=\"$(termcapfile)\"
-
-CFLAGS = -g
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-# Directory in which to install libtermcap.a.
-libdir = $(exec_prefix)/lib
-
-# Directory in which to install termcap.h.
-includedir = $(prefix)/include
-
-# Directory in which to optionally also install termcap.h,
-# so compilers besides gcc can find it by default.
-# If it is empty or not defined, termcap.h will only be installed in
-# includedir. 
-oldincludedir = /usr/include
-
-# Directory in which to install the documentation info files.
-infodir = $(prefix)/info
-
-# File to which `install-data' should install the data file
-# if --enable-install-termcap was given.
-termcapfile = @termcapfile@
-
-#### End of system configuration section. ####
-
-SHELL = /bin/sh
-
-SRCS = termcap.c tparam.c version.c
-OBJS = termcap.o tparam.o version.o
-HDRS = termcap.h
-DISTFILES = $(SRCS) $(HDRS) ChangeLog COPYING README INSTALL NEWS \
-termcap.src termcap.texi termcap.info* \
-texinfo.tex Makefile.in configure configure.in mkinstalldirs install-sh
-
-all:   libtermcap.a info
-
-.c.o:
-       $(CC) -c $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) $(CFLAGS) $<
-
-install: all installdirs @installdata@
-       $(INSTALL_DATA) libtermcap.a $(libdir)/libtermcap.a
-       -$(RANLIB) $(libdir)/libtermcap.a
-       cd $(srcdir); $(INSTALL_DATA) termcap.h $(includedir)/termcap.h
-       -cd $(srcdir); test -z "$(oldincludedir)" || \
-         $(INSTALL_DATA) termcap.h $(oldincludedir)/termcap.h
-       cd $(srcdir); for f in termcap.info*; \
-       do $(INSTALL_DATA) $$f $(infodir)/$$f; done
-
-uninstall: @uninstalldata@
-       rm -f $(libdir)/libtermcap.a $(includedir)/termcap.h
-       test -z "$(oldincludedir)" || rm -f $(oldincludedir)/termcap.h
-       rm -f $(infodir)/termcap.info*
-
-# These are separate targets to avoid trashing the user's existing
-# termcap file unexpectedly.
-install-data:
-       $(INSTALL_DATA) ${srcdir}/termcap.src ${termcapfile}
-
-uninstall-data:
-       rm -f ${termcapfile}
-
-installdirs:
-       $(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(libdir) \
-       $(includedir) $(infodir)
-
-Makefile: Makefile.in config.status
-       $(SHELL) config.status
-config.status: configure
-       $(SHELL) config.status --recheck
-configure: configure.in
-       cd $(srcdir) && autoconf
-
-libtermcap.a: $(OBJS)
-       $(AR) rc $@ $(OBJS)
-       -$(RANLIB) $@
-
-info: termcap.info
-
-termcap.info: termcap.texi
-       $(MAKEINFO) $(srcdir)/termcap.texi --output=$@
-
-TAGS:  $(SRCS)
-       etags $(SRCS)
-
-clean:
-       rm -f *.a *.o core
-
-mostlyclean: clean
-
-distclean: clean
-       rm -f Makefile config.status config.cache config.log
-
-maintainer-clean: distclean
-       @echo "This command is intended for maintainers to use;"
-       @echo "rebuilding the deleted files requires makeinfo."
-       rm -f TAGS *.info*
-
-dist: $(DISTFILES)
-       echo termcap-`sed -e '/version_string/!d' -e 's/[^0-9]*\([0-9a-z.]*\).*/\1/' -e q version.c` > .fname
-       rm -rf `cat .fname`
-       mkdir `cat .fname`
-       ln $(DISTFILES) `cat .fname`
-       tar chzf `cat .fname`.tar.gz `cat .fname`
-       rm -rf `cat .fname` .fname
diff --git a/lib/termcap/grot/NEWS b/lib/termcap/grot/NEWS
deleted file mode 100644 (file)
index e5d58b9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Major changes in release 1.3:
-
-Termcap data file is now included in distribution and may optionally
-  be installed, or used in a non-default location.
-Support for a fake internal terminal (no external files).
-Higher tty speeds supported.
-Portability tweaks.
-\f
-Major changes in release 1.2:
-
-For `%.', only set the high bit on NUL.
-Fix a file descriptor and memory leak.
-Add const in termcap.h prototypes.
-Configuration improvements.
-\f
-Major changes in release 1.1:
-
-Fix portability problems.
-Improve configuration and installation.
-Fix compiler warnings.
diff --git a/lib/termcap/grot/README b/lib/termcap/grot/README
deleted file mode 100644 (file)
index ba1a19c..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-This is the GNU termcap library -- a library of C functions that
-enable programs to send control strings to terminals in a way
-independent of the terminal type.  The GNU termcap library does not
-place an arbitrary limit on the size of termcap entries, unlike most
-other termcap libraries.
-
-Most of this package is also distributed with GNU Emacs, but it is
-available in this separate distribution to make it easier to install
-as -ltermcap.  However, use of termcap is discouraged.  Termcap is
-being phased out in favor of the terminfo-based ncurses library, which
-contains an emulation of the termcap library routines in addition to
-an excellent curses implementation.  ncurses is available from the
-usual GNU archive sites.
-
-See the file INSTALL for compilation and installation instructions.
-Additionally:
-
-This package contains termcap.src, the latest official termcap data
-file.  By default, it is not installed.  The current version contains
-some entries that are more than 1023 bytes long, which is the largest
-value that is safe to use with the many historical applications that
-only allocate a 1024 byte termcap buffer (telnet, for example).  If
-you make sure that all of your programs allocate buffers of at least
-2500 bytes, or let the termcap library do it by passing a NULL
-pointer, then it is safe to install the new termcap file, as described
-below.
-
-You can give configure two special options:
-  --enable-install-termcap install the termcap data file
-  --with-termcap=FILE     use data file FILE instead of /etc/termcap
-
-Please report any bugs in this library to bug-gnu-emacs@prep.ai.mit.edu.
-You can check which version of the library you have by using the RCS
-`ident' command on libtermcap.a.
diff --git a/lib/termcap/grot/configure b/lib/termcap/grot/configure
deleted file mode 100755 (executable)
index 8a885fa..0000000
+++ /dev/null
@@ -1,998 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.4 
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
-  --enable-install-termcap install the termcap data file"
-ac_help="$ac_help
-  --with-termcap=FILE     use data file FILE instead of /etc/termcap"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Initialize some other variables.
-subdirs=
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -build | --build | --buil | --bui | --bu | --b)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=PREFIX    install architecture-dependent files in PREFIX
-                          [same as prefix]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
---enable and --with options recognized:$ac_help
-EOF
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.4"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-    ;;
-
-  *) 
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=termcap.h
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-# Check whether --enable-install-termcap or --disable-install-termcap was given.
-enableval="$enable_install_termcap"
-if test -n "$enableval"; then
-  if test $enableval = yes; then
-   installdata=install-data uninstalldata=uninstall-data
- fi
-fi
-
-
-# Check whether --with-termcap or --without-termcap was given.
-withval="$with_termcap"
-if test -n "$withval"; then
-  termcapfile=$withval
-else
-  termcapfile=/etc/termcap
-fi
-
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="cc"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if ${CC-cc} -E conftest.c 2>&5 | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gcc=yes
-else
-  ac_cv_prog_gcc=no
-fi
-fi
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-  if test "${CFLAGS+set}" != set; then
-    echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_gcc_g=yes
-else
-  ac_cv_prog_gcc_g=no
-fi
-rm -f conftest*
-
-fi
-    echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
-    if test $ac_cv_prog_gcc_g = yes; then
-      CFLAGS="-g -O"
-    else
-      CFLAGS="-O"
-    fi
-  fi
-else
-  GCC=
-  test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
-
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_RANLIB="ranlib"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    IFS="${IFS=        }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      for ac_prog in ginstall installbsd scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           # OSF/1 installbsd also uses dspmsg, but is usable.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
-         fi
-       fi
-      done
-      ;;
-    esac
-  done
-  IFS="$ac_save_ifs"
-  # As a last resort, use the slow shell script.
-  test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh"
-fi
-  INSTALL="$ac_cv_path_install"
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    # This must be in double quotes, not single quotes, because CPP may get
-  # substituted into the Makefile and "${CC-cc}" will confuse make.
-  CPP="${CC-cc} -E"
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp.
-  cat > conftest.$ac_ext <<EOF
-#line 612 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -E -traditional-cpp"
-  cat > conftest.$ac_ext <<EOF
-#line 626 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-  ac_cv_prog_CPP="$CPP"
-fi
-  CPP="$ac_cv_prog_CPP"
-else
-  ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-for ac_hdr in string.h unistd.h
-do
-ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 659 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-# If we cannot run a trivial program, we must be cross compiling.
-echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_c_cross=yes
-else
-cat > conftest.$ac_ext <<EOF
-#line 696 "configure"
-#include "confdefs.h"
-main(){return(0);}
-EOF
-eval $ac_link
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
-  ac_cv_c_cross=no
-else
-  ac_cv_c_cross=yes
-fi
-fi
-rm -fr conftest*
-fi
-cross_compiling=$ac_cv_c_cross
-echo "$ac_t""$ac_cv_c_cross" 1>&6
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 717 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  ac_cv_header_stdc=yes
-else
-  echo "$ac_err" >&5
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 739 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "memchr" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 757 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "free" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
-  ac_cv_header_stdc=no
-else
-cat > conftest.$ac_ext <<EOF
-#line 778 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-eval $ac_link
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-fi
-rm -fr conftest*
-fi
-fi
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
-  cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
-  >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g
-s%[    `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.4"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-
-# Protect against being on the right side of a sed subst in config.status. 
-sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; 
- s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@installdata@%$installdata%g
-s%@uninstalldata@%$uninstalldata%g
-s%@termcapfile@%$termcapfile%g
-s%@CC@%$CC%g
-s%@RANLIB@%$RANLIB%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@CPP@%$CPP%g
-
-CEOF
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust relative srcdir, etc. for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-fi; done
-rm -f conftest.subs
-
-
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
diff --git a/lib/termcap/grot/configure.in b/lib/termcap/grot/configure.in
deleted file mode 100644 (file)
index f3f944f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(termcap.h)
-
-AC_ARG_ENABLE(install-termcap,
-[  --enable-install-termcap install the termcap data file],
-[if test $enableval = yes; then
-   installdata=install-data uninstalldata=uninstall-data
- fi])
-AC_SUBST(installdata)dnl
-AC_SUBST(uninstalldata)dnl
-
-AC_ARG_WITH(termcap,
-[  --with-termcap=FILE     use data file FILE instead of /etc/termcap],
-termcapfile=$withval, termcapfile=/etc/termcap)
-AC_SUBST(termcapfile)dnl
-
-AC_PROG_CC
-AC_PROG_RANLIB
-AC_PROG_INSTALL
-AC_HAVE_HEADERS(string.h unistd.h)
-AC_STDC_HEADERS
-
-AC_OUTPUT(Makefile)
diff --git a/lib/termcap/grot/termcap.info b/lib/termcap/grot/termcap.info
deleted file mode 100644 (file)
index f663195..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-This is Info file ./termcap.info, produced by Makeinfo-1.55 from the
-input file ./termcap.texi.
-
-   This file documents the termcap library of the GNU system.
-
-   Copyright (C) 1988 Free Software Foundation, Inc.
-
-   Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-   Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-   Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-\1f
-Indirect:
-termcap.info-1: 874
-termcap.info-2: 47411
-termcap.info-3: 90390
-termcap.info-4: 138827
-\1f
-Tag Table:
-(Indirect)
-Node: Top\7f874
-Node: Introduction\7f4105
-Node: Library\7f5832
-Node: Preparation\7f6851
-Node: Find\7f8034
-Node: Interrogate\7f11492
-Node: Initialize\7f16800
-Node: Padding\7f18440
-Node: Why Pad\7f19146
-Node: Not Enough\7f20768
-Node: Describe Padding\7f23336
-Node: Output Padding\7f24826
-Node: Parameters\7f28441
-Node: Encode Parameters\7f30101
-Node: Using Parameters\7f36185
-Node: tparam\7f36780
-Node: tgoto\7f38806
-Node: Data Base\7f41361
-Node: Format\7f42257
-Node: Capability Format\7f44346
-Node: Naming\7f47411
-Node: Inheriting\7f51980
-Node: Changing\7f54224
-Node: Capabilities\7f55388
-Node: Basic\7f58127
-Node: Screen Size\7f62180
-Node: Cursor Motion\7f63920
-Node: Wrapping\7f74062
-Node: Scrolling\7f77091
-Node: Windows\7f82980
-Node: Clearing\7f83714
-Node: Insdel Line\7f85478
-Node: Insdel Char\7f90390
-Node: Standout\7f100375
-Node: Underlining\7f109433
-Node: Cursor Visibility\7f111852
-Node: Bell\7f112600
-Node: Keypad\7f113149
-Node: Meta Key\7f117864
-Node: Initialization\7f118818
-Node: Pad Specs\7f121369
-Node: Status Line\7f123422
-Node: Half-Line\7f125306
-Node: Printer\7f126108
-Node: Summary\7f127787
-Node: Var Index\7f138114
-Node: Cap Index\7f138827
-Node: Index\7f145991
-\1f
-End Tag Table
diff --git a/lib/termcap/grot/termcap.info-1 b/lib/termcap/grot/termcap.info-1
deleted file mode 100644 (file)
index a5b5da0..0000000
+++ /dev/null
@@ -1,1114 +0,0 @@
-This is Info file ./termcap.info, produced by Makeinfo-1.55 from the
-input file ./termcap.texi.
-
-   This file documents the termcap library of the GNU system.
-
-   Copyright (C) 1988 Free Software Foundation, Inc.
-
-   Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-   Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-   Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-\1f
-File: termcap.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
-
-* Menu:
-
-* Introduction::  What is termcap?  Why this manual?
-* Library::     The termcap library functions.
-* Data Base::   What terminal descriptions in `/etc/termcap' look like.
-* Capabilities::  Definitions of the individual terminal capabilities:
-                 how to write them in descriptions, and how to use
-                 their values to do display updating.
-* Summary::     Brief table of capability names and their meanings.
-* Var Index::   Index of C functions and variables.
-* Cap Index::   Index of termcap capabilities.
-* Index::       Concept index.
-
- -- The Detailed Node Listing --
-
-The Termcap Library
-
-* Preparation::  Preparing to use the termcap library.
-* Find::        Finding the description of the terminal being used.
-* Interrogate::  Interrogating the description for particular capabilities.
-* Initialize::  Initialization for output using termcap.
-* Padding::     Outputting padding.
-* Parameters::  Encoding parameters such as cursor positions.
-
-Padding
-
-* Why Pad::     Explanation of padding.
-* Not Enough::  When there is not enough padding.
-* Describe Padding::  The data base says how much padding a terminal needs.
-* Output Padding::    Using `tputs' to output the needed padding.
-
-Filling In Parameters
-
-* Encode Parameters::  The language for encoding parameters.
-* Using Parameters::   Outputting a string command with parameters.
-
-Sending Display Commands with Parameters
-
-* tparam::      The general case, for GNU termcap only.
-* tgoto::       The special case of cursor motion.
-
-The Format of the Data Base
-
-* Format::      Overall format of a terminal description.
-* Capability Format::  Format of capabilities within a description.
-* Naming::      Naming conventions for terminal types.
-* Inheriting::  Inheriting part of a description from
-a related terminal type.
-* Changing::    When changes in the data base take effect.
-
-Definitions of the Terminal Capabilities
-
-* Basic::       Basic characteristics.
-* Screen Size::  Screen size, and what happens when it changes.
-* Cursor Motion::  Various ways to move the cursor.
-* Wrapping::    What happens if you write a character in the last column.
-* Scrolling::   Pushing text up and down on the screen.
-* Windows::     Limiting the part of the window that output affects.
-* Clearing::    Erasing one or many lines.
-* Insdel Line::  Making new blank lines in mid-screen; deleting lines.
-* Insdel Char::  Inserting and deleting characters within a line.
-* Standout::    Highlighting some of the text.
-* Underlining::  Underlining some of the text.
-* Cursor Visibility::  Making the cursor more or less easy to spot.
-* Bell::        Attracts user's attention; not localized on the screen.
-* Keypad::      Recognizing when function keys or arrows are typed.
-* Meta Key::    META acts like an extra shift key.
-* Initialization::  Commands used to initialize or reset the terminal.
-* Pad Specs::   Info for the kernel on how much padding is needed.
-* Status Line::  A status line displays "background" information.
-* Half-Line::   Moving by half-lines, for superscripts and subscripts.
-* Printer::     Controlling auxiliary printers of display terminals.
-
-\1f
-File: termcap.info,  Node: Introduction,  Next: Library,  Prev: Top,  Up: Top
-
-Introduction
-************
-
-   "Termcap" is a library and data base that enables programs to use
-display terminals in a terminal-independent manner.  It originated in
-Berkeley Unix.
-
-   The termcap data base describes the capabilities of hundreds of
-different display terminals in great detail.  Some examples of the
-information recorded for a terminal could include how many columns wide
-it is, what string to send to move the cursor to an arbitrary position
-(including how to encode the row and column numbers), how to scroll the
-screen up one or several lines, and how much padding is needed for such
-a scrolling operation.
-
-   The termcap library is provided for easy access this data base in
-programs that want to do terminal-independent character-based display
-output.
-
-   This manual describes the GNU version of the termcap library, which
-has some extensions over the Unix version.  All the extensions are
-identified as such, so this manual also tells you how to use the Unix
-termcap.
-
-   The GNU version of the termcap library is available free as source
-code, for use in free programs, and runs on Unix and VMS systems (at
-least).  You can find it in the GNU Emacs distribution in the files
-`termcap.c' and `tparam.c'.
-
-   This manual was written for the GNU project, whose goal is to
-develop a complete free operating system upward-compatible with Unix
-for user programs.  The project is approximately two thirds complete.
-For more information on the GNU project, including the GNU Emacs editor
-and the mostly-portable optimizing C compiler, send one dollar to
-
-     Free Software Foundation
-     675 Mass Ave
-     Cambridge, MA 02139
-
-\1f
-File: termcap.info,  Node: Library,  Next: Data Base,  Prev: Introduction,  Up: Top
-
-The Termcap Library
-*******************
-
-   The termcap library is the application programmer's interface to the
-termcap data base.  It contains functions for the following purposes:
-
-   * Finding the description of the user's terminal type (`tgetent').
-
-   * Interrogating the description for information on various topics
-     (`tgetnum', `tgetflag', `tgetstr').
-
-   * Computing and performing padding (`tputs').
-
-   * Encoding numeric parameters such as cursor positions into the
-     terminal-specific form required for display commands (`tparam',
-     `tgoto').
-
-* Menu:
-
-* Preparation::  Preparing to use the termcap library.
-* Find::        Finding the description of the terminal being used.
-* Interrogate::  Interrogating the description for particular capabilities.
-* Initialize::  Initialization for output using termcap.
-* Padding::     Outputting padding.
-* Parameters::  Encoding parameters such as cursor positions.
-
-\1f
-File: termcap.info,  Node: Preparation,  Next: Find,  Up: Library
-
-Preparing to Use the Termcap Library
-====================================
-
-   To use the termcap library in a program, you need two kinds of
-preparation:
-
-   * The compiler needs declarations of the functions and variables in
-     the library.
-
-     On GNU systems, it suffices to include the header file `termcap.h'
-     in each source file that uses these functions and variables.
-
-     On Unix systems, there is often no such header file.  Then you must
-     explictly declare the variables as external.  You can do likewise
-     for the functions, or let them be implicitly declared and cast
-     their values from type `int' to the appropriate type.
-
-     We illustrate the declarations of the individual termcap library
-     functions with ANSI C prototypes because they show how to pass the
-     arguments.  If you are not using the GNU C compiler, you probably
-     cannot use function prototypes, so omit the argument types and
-     names from your declarations.
-
-   * The linker needs to search the library.  Usually either
-     `-ltermcap' or `-ltermlib' as an argument when linking will do
-     this.
-
-\1f
-File: termcap.info,  Node: Find,  Next: Interrogate,  Prev: Preparation,  Up: Library
-
-Finding a Terminal Description: `tgetent'
-=========================================
-
-   An application program that is going to use termcap must first look
-up the description of the terminal type in use.  This is done by calling
-`tgetent', whose declaration in ANSI Standard C looks like:
-
-     int tgetent (char *BUFFER, char *TERMTYPE);
-
-This function finds the description and remembers it internally so that
-you can interrogate it about specific terminal capabilities (*note
-Interrogate::.).
-
-   The argument TERMTYPE is a string which is the name for the type of
-terminal to look up.  Usually you would obtain this from the environment
-variable `TERM' using `getenv ("TERM")'.
-
-   If you are using the GNU version of termcap, you can alternatively
-ask `tgetent' to allocate enough space.  Pass a null pointer for
-BUFFER, and `tgetent' itself allocates the storage using `malloc'.
-There is no way to get the address that was allocated, and you
-shouldn't try to free the storage.
-
-   With the Unix version of termcap, you must allocate space for the
-description yourself and pass the address of the space as the argument
-BUFFER.  There is no way you can tell how much space is needed, so the
-convention is to allocate a buffer 2048 characters long and assume that
-is enough.  (Formerly the convention was to allocate 1024 characters and
-assume that was enough.  But one day, for one kind of terminal, that was
-not enough.)
-
-   No matter how the space to store the description has been obtained,
-termcap records its address internally for use when you later
-interrogate the description with `tgetnum', `tgetstr' or `tgetflag'.  If
-the buffer was allocated by termcap, it will be freed by termcap too if
-you call `tgetent' again.  If the buffer was provided by you, you must
-make sure that its contents remain unchanged for as long as you still
-plan to interrogate the description.
-
-   The return value of `tgetent' is -1 if there is some difficulty
-accessing the data base of terminal types, 0 if the data base is
-accessible but the specified type is not defined in it, and some other
-value otherwise.
-
-   Here is how you might use the function `tgetent':
-
-     #ifdef unix
-     static char term_buffer[2048];
-     #else
-     #define term_buffer 0
-     #endif
-     
-     init_terminal_data ()
-     {
-       char *termtype = getenv ("TERM");
-       int success;
-     
-       if (termtype == 0)
-         fatal ("Specify a terminal type with `setenv TERM <yourtype>'.\n");
-     
-       success = tgetent (term_buffer, termtype);
-       if (success < 0)
-         fatal ("Could not access the termcap data base.\n");
-       if (success == 0)
-         fatal ("Terminal type `%s' is not defined.\n", termtype);
-     }
-
-Here we assume the function `fatal' prints an error message and exits.
-
-   If the environment variable `TERMCAP' is defined, its value is used
-to override the terminal type data base.  The function `tgetent' checks
-the value of `TERMCAP' automatically.  If the value starts with `/'
-then it is taken as a file name to use as the data base file, instead
-of `/etc/termcap' which is the standard data base.  If the value does
-not start with `/' then it is itself used as the terminal description,
-provided that the terminal type TERMTYPE is among the types it claims
-to apply to.  *Note Data Base::, for information on the format of a
-terminal description.
-
-\1f
-File: termcap.info,  Node: Interrogate,  Next: Initialize,  Prev: Find,  Up: Library
-
-Interrogating the Terminal Description
-======================================
-
-   Each piece of information recorded in a terminal description is
-called a "capability".  Each defined terminal capability has a
-two-letter code name and a specific meaning.  For example, the number
-of columns is named `co'.  *Note Capabilities::, for definitions of all
-the standard capability names.
-
-   Once you have found the proper terminal description with `tgetent'
-(*note Find::.), your application program must "interrogate" it for
-various terminal capabilities.  You must specify the two-letter code of
-the capability whose value you seek.
-
-   Capability values can be numeric, boolean (capability is either
-present or absent) or strings.  Any particular capability always has
-the same value type; for example, `co' always has a numeric value,
-while `am' (automatic wrap at margin) is always a flag, and `cm'
-(cursor motion command) always has a string value.  The documentation
-of each capability says which type of value it has.
-
-   There are three functions to use to get the value of a capability,
-depending on the type of value the capability has.  Here are their
-declarations in ANSI C:
-
-     int tgetnum (char *NAME);
-     int tgetflag (char *NAME);
-     char *tgetstr (char *NAME, char **AREA);
-
-`tgetnum'
-     Use `tgetnum' to get a capability value that is numeric.  The
-     argument NAME is the two-letter code name of the capability.  If
-     the capability is present, `tgetnum' returns the numeric value
-     (which is nonnegative).  If the capability is not mentioned in the
-     terminal description, `tgetnum' returns -1.
-
-`tgetflag'
-     Use `tgetflag' to get a boolean value.  If the capability NAME is
-     present in the terminal description, `tgetflag' returns 1;
-     otherwise, it returns 0.
-
-`tgetstr'
-     Use `tgetstr' to get a string value.  It returns a pointer to a
-     string which is the capability value, or a null pointer if the
-     capability is not present in the terminal description.
-
-     There are two ways `tgetstr' can find space to store the string
-     value:
-
-        * You can ask `tgetstr' to allocate the space.  Pass a null
-          pointer for the argument AREA, and `tgetstr' will use
-          `malloc' to allocate storage big enough for the value.
-          Termcap will never free this storage or refer to it again; you
-          should free it when you are finished with it.
-
-          This method is more robust, since there is no need to guess
-          how much space is needed.  But it is supported only by the GNU
-          termcap library.
-
-        * You can provide the space.  Provide for the argument AREA the
-          address of a pointer variable of type `char *'.  Before
-          calling `tgetstr', initialize the variable to point at
-          available space.  Then `tgetstr' will store the string value
-          in that space and will increment the pointer variable to
-          point after the space that has been used.  You can use the
-          same pointer variable for many calls to `tgetstr'.
-
-          There is no way to determine how much space is needed for a
-          single string, and no way for you to prevent or handle
-          overflow of the area you have provided.  However, you can be
-          sure that the total size of all the string values you will
-          obtain from the terminal description is no greater than the
-          size of the description (unless you get the same capability
-          twice).  You can determine that size with `strlen' on the
-          buffer you provided to `tgetent'.  See below for an example.
-
-          Providing the space yourself is the only method supported by
-          the Unix version of termcap.
-
-   Note that you do not have to specify a terminal type or terminal
-description for the interrogation functions.  They automatically use the
-description found by the most recent call to `tgetent'.
-
-   Here is an example of interrogating a terminal description for
-various capabilities, with conditionals to select between the Unix and
-GNU methods of providing buffer space.
-
-     char *tgetstr ();
-     
-     char *cl_string, *cm_string;
-     int height;
-     int width;
-     int auto_wrap;
-     
-     char PC;   /* For tputs.  */
-     char *BC;  /* For tgoto.  */
-     char *UP;
-     
-     interrogate_terminal ()
-     {
-     #ifdef UNIX
-       /* Here we assume that an explicit term_buffer
-          was provided to tgetent.  */
-       char *buffer
-         = (char *) malloc (strlen (term_buffer));
-     #define BUFFADDR &buffer
-     #else
-     #define BUFFADDR 0
-     #endif
-     
-       char *temp;
-     
-       /* Extract information we will use.  */
-       cl_string = tgetstr ("cl", BUFFADDR);
-       cm_string = tgetstr ("cm", BUFFADDR);
-       auto_wrap = tgetflag ("am");
-       height = tgetnum ("li");
-       width = tgetnum ("co");
-     
-       /* Extract information that termcap functions use.  */
-       temp = tgetstr ("pc", BUFFADDR);
-       PC = temp ? *temp : 0;
-       BC = tgetstr ("le", BUFFADDR);
-       UP = tgetstr ("up", BUFFADDR);
-     }
-
-*Note Padding::, for information on the variable `PC'.  *Note Using
-Parameters::, for information on `UP' and `BC'.
-
-\1f
-File: termcap.info,  Node: Initialize,  Next: Padding,  Prev: Interrogate,  Up: Library
-
-Initialization for Use of Termcap
-=================================
-
-   Before starting to output commands to a terminal using termcap, an
-application program should do two things:
-
-   * Initialize various global variables which termcap library output
-     functions refer to.  These include `PC' and `ospeed' for padding
-     (*note Output Padding::.) and `UP' and `BC' for cursor motion
-     (*note tgoto::.).
-
-   * Tell the kernel to turn off alteration and padding of
-     horizontal-tab characters sent to the terminal.
-
-   To turn off output processing in Berkeley Unix you would use `ioctl'
-with code `TIOCLSET' to set the bit named `LLITOUT', and clear the bits
-`ANYDELAY' using `TIOCSETN'.  In POSIX or System V, you must clear the
-bit named `OPOST'.  Refer to the system documentation for details.
-
-   If you do not set the terminal flags properly, some older terminals
-will not work.  This is because their commands may contain the
-characters that normally signify newline, carriage return and
-horizontal tab--characters which the kernel thinks it ought to modify
-before output.
-
-   When you change the kernel's terminal flags, you must arrange to
-restore them to their normal state when your program exits.  This
-implies that the program must catch fatal signals such as `SIGQUIT' and
-`SIGINT' and restore the old terminal flags before actually terminating.
-
-   Modern terminals' commands do not use these special characters, so
-if you do not care about problems with old terminals, you can leave the
-kernel's terminal flags unaltered.
-
-\1f
-File: termcap.info,  Node: Padding,  Next: Parameters,  Prev: Initialize,  Up: Library
-
-Padding
-=======
-
-   "Padding" means outputting null characters following a terminal
-display command that takes a long time to execute.  The terminal
-description says which commands require padding and how much; the
-function `tputs', described below, outputs a terminal command while
-extracting from it the padding information, and then outputs the
-padding that is necessary.
-
-* Menu:
-
-* Why Pad::     Explanation of padding.
-* Not Enough::  When there is not enough padding.
-* Describe Padding::  The data base says how much padding a terminal needs.
-* Output Padding::  Using `tputs' to output the needed padding.
-
-\1f
-File: termcap.info,  Node: Why Pad,  Next: Not Enough,  Up: Padding
-
-Why Pad, and How
-----------------
-
-   Most types of terminal have commands that take longer to execute
-than they do to send over a high-speed line.  For example, clearing the
-screen may take 20msec once the entire command is received.  During
-that time, on a 9600 bps line, the terminal could receive about 20
-additional output characters while still busy clearing the screen.
-Every terminal has a certain amount of buffering capacity to remember
-output characters that cannot be processed yet, but too many slow
-commands in a row can cause the buffer to fill up.  Then any additional
-output that cannot be processed immediately will be lost.
-
-   To avoid this problem, we normally follow each display command with
-enough useless charaters (usually null characters) to fill up the time
-that the display command needs to execute.  This does the job if the
-terminal throws away null characters without using up space in the
-buffer (which most terminals do).  If enough padding is used, no output
-can ever be lost.  The right amount of padding avoids loss of output
-without slowing down operation, since the time used to transmit padding
-is time that nothing else could be done.
-
-   The number of padding characters needed for an operation depends on
-the line speed.  In fact, it is proportional to the line speed.  A 9600
-baud line transmits about one character per msec, so the clear screen
-command in the example above would need about 20 characters of padding.
-At 1200 baud, however, only about 3 characters of padding are needed
-to fill up 20msec.
-
-\1f
-File: termcap.info,  Node: Not Enough,  Next: Describe Padding,  Prev: Why Pad,  Up: Padding
-
-When There Is Not Enough Padding
---------------------------------
-
-   There are several common manifestations of insufficient padding.
-
-   * Emacs displays `I-search: ^Q-' at the bottom of the screen.
-
-     This means that the terminal thought its buffer was getting full of
-     display commands, so it tried to tell the computer to stop sending
-     any.
-
-   * The screen is garbled intermittently, or the details of garbling
-     vary when you repeat the action.  (A garbled screen could be due
-     to a command which is simply incorrect, or to user option in the
-     terminal which doesn't match the assumptions of the terminal
-     description, but this usually leads to reproducible failure.)
-
-     This means that the buffer did get full, and some commands were
-     lost.  Many changeable factors can change which ones are lost.
-
-   * Screen is garbled at high output speeds but not at low speeds.
-     Padding problems nearly always go away at low speeds, usually even
-     at 1200 baud.
-
-     This means that a high enough speed permits commands to arrive
-     faster than they can be executed.
-
-   Although any obscure command on an obscure terminal might lack
-padding, in practice problems arise most often from the clearing
-commands `cl' and `cd' (*note Clearing::.), the scrolling commands `sf'
-and `sr' (*note Scrolling::.), and the line insert/delete commands `al'
-and `dl' (*note Insdel Line::.).
-
-   Occasionally the terminal description fails to define `sf' and some
-programs will use `do' instead, so you may get a problem with `do'.  If
-so, first define `sf' just like `do', then add some padding to `sf'.
-
-   The best strategy is to add a lot of padding at first, perhaps 200
-msec.  This is much more than enough; in fact, it should cause a
-visible slowdown.  (If you don't see a slowdown, the change has not
-taken effect; *note Changing::..)  If this makes the problem go away,
-you have found the right place to add padding; now reduce the amount
-until the problem comes back, then increase it again.  If the problem
-remains, either it is in some other capability or it is not a matter of
-padding at all.
-
-   Keep in mind that on many terminals the correct padding for
-insert/delete line or for scrolling is cursor-position dependent.  If
-you get problems from scrolling a large region of the screen but not
-from scrolling a small part (just a few lines moving), it may mean that
-fixed padding should be replaced with position-dependent padding.
-
-\1f
-File: termcap.info,  Node: Describe Padding,  Next: Output Padding,  Prev: Not Enough,  Up: Padding
-
-Specifying Padding in a Terminal Description
---------------------------------------------
-
-   In the terminal description, the amount of padding required by each
-display command is recorded as a sequence of digits at the front of the
-command.  These digits specify the padding time in milliseconds (msec).
-They can be followed optionally by a decimal point and one more digit,
-which is a number of tenths of msec.
-
-   Sometimes the padding needed by a command depends on the cursor
-position.  For example, the time taken by an "insert line" command is
-usually proportional to the number of lines that need to be moved down
-or cleared.  An asterisk (`*') following the padding time says that the
-time should be multiplied by the number of screen lines affected by the
-command.
-
-     :al=1.3*\E[L:
-
-is used to describe the "insert line" command for a certain terminal.
-The padding required is 1.3 msec per line affected.  The command itself
-is `ESC [ L'.
-
-   The padding time specified in this way tells `tputs' how many pad
-characters to output.  *Note Output Padding::.
-
-   Two special capability values affect padding for all commands.
-These are the `pc' and `pb'.  The variable `pc' specifies the character
-to pad with, and `pb' the speed below which no padding is needed.  The
-defaults for these variables, a null character and 0, are correct for
-most terminals.  *Note Pad Specs::.
-
-\1f
-File: termcap.info,  Node: Output Padding,  Prev: Describe Padding,  Up: Padding
-
-Performing Padding with `tputs'
--------------------------------
-
-   Use the termcap function `tputs' to output a string containing an
-optional padding spec of the form described above (*note Describe
-Padding::.).  The function `tputs' strips off and decodes the padding
-spec, outputs the rest of the string, and then outputs the appropriate
-padding.  Here is its declaration in ANSI C:
-
-     char PC;
-     short ospeed;
-     
-     int tputs (char *STRING, int NLINES, int (*OUTFUN) ());
-
-   Here STRING is the string (including padding spec) to be output;
-NLINES is the number of lines affected by the operation, which is used
-to multiply the amount of padding if the padding spec ends with a `*'.
-Finally, OUTFUN is a function (such as `fputchar') that is called to
-output each character.  When actually called, OUTFUN should expect one
-argument, a character.
-
-   The operation of `tputs' is controlled by two global variables,
-`ospeed' and `PC'.  The value of `ospeed' is supposed to be the
-terminal output speed, encoded as in the `ioctl' system call which gets
-the speed information.  This is needed to compute the number of padding
-characters.  The value of `PC' is the character used for padding.
-
-   You are responsible for storing suitable values into these variables
-before using `tputs'.  The value stored into the `PC' variable should be
-taken from the `pc' capability in the terminal description (*note Pad
-Specs::.).  Store zero in `PC' if there is no `pc' capability.
-
-   The argument NLINES requires some thought.  Normally, it should be
-the number of lines whose contents will be cleared or moved by the
-command.  For cursor motion commands, or commands that do editing
-within one line, use the value 1.  For most commands that affect
-multiple lines, such as `al' (insert a line) and `cd' (clear from the
-cursor to the end of the screen), NLINES should be the screen height
-minus the current vertical position (origin 0).  For multiple insert
-and scroll commands such as `AL' (insert multiple lines), that same
-value for NLINES is correct; the number of lines being inserted is not
-correct.
-
-   If a "scroll window" feature is used to reduce the number of lines
-affected by a command, the value of NLINES should take this into
-account.  This is because the delay time required depends on how much
-work the terminal has to do, and the scroll window feature reduces the
-work.  *Note Scrolling::.
-
-   Commands such as `ic' and `dc' (insert or delete characters) are
-problematical because the padding needed by these commands is
-proportional to the number of characters affected, which is the number
-of columns from the cursor to the end of the line.  It would be nice to
-have a way to specify such a dependence, and there is no need for
-dependence on vertical position in these commands, so it is an obvious
-idea to say that for these commands NLINES should really be the number
-of columns affected.  However, the definition of termcap clearly says
-that NLINES is always the number of lines affected, even in this case,
-where it is always 1.  It is not easy to change this rule now, because
-too many programs and terminal descriptions have been written to follow
-it.
-
-   Because NLINES is always 1 for the `ic' and `dc' strings, there is
-no reason for them to use `*', but some of them do.  These should be
-corrected by deleting the `*'.  If, some day, such entries have
-disappeared, it may be possible to change to a more useful convention
-for the NLINES argument for these operations without breaking any
-programs.
-
-\1f
-File: termcap.info,  Node: Parameters,  Prev: Padding,  Up: Library
-
-Filling In Parameters
-=====================
-
-   Some terminal control strings require numeric "parameters".  For
-example, when you move the cursor, you need to say what horizontal and
-vertical positions to move it to.  The value of the terminal's `cm'
-capability, which says how to move the cursor, cannot simply be a
-string of characters; it must say how to express the cursor position
-numbers and where to put them within the command.
-
-   The specifications of termcap include conventions as to which
-string-valued capabilities require parameters, how many parameters, and
-what the parameters mean; for example, it defines the `cm' string to
-take two parameters, the vertical and horizontal positions, with 0,0
-being the upper left corner.  These conventions are described where the
-individual commands are documented.
-
-   Termcap also defines a language used within the capability
-definition for specifying how and where to encode the parameters for
-output.  This language uses character sequences starting with `%'.
-(This is the same idea as `printf', but the details are different.)
-The language for parameter encoding is described in this section.
-
-   A program that is doing display output calls the functions `tparam'
-or `tgoto' to encode parameters according to the specifications.  These
-functions produce a string containing the actual commands to be output
-(as well a padding spec which must be processed with `tputs'; *note
-Padding::.).
-
-* Menu:
-
-* Encode Parameters::  The language for encoding parameters.
-* Using Parameters::  Outputting a string command with parameters.
-
-\1f
-File: termcap.info,  Node: Encode Parameters,  Next: Using Parameters,  Up: Parameters
-
-Describing the Encoding
------------------------
-
-   A terminal command string that requires parameters contains special
-character sequences starting with `%' to say how to encode the
-parameters.  These sequences control the actions of `tparam' and
-`tgoto'.
-
-   The parameters values passed to `tparam' or `tgoto' are considered
-to form a vector.  A pointer into this vector determines the next
-parameter to be processed.  Some of the `%'-sequences encode one
-parameter and advance the pointer to the next parameter.  Other
-`%'-sequences alter the pointer or alter the parameter values without
-generating output.
-
-   For example, the `cm' string for a standard ANSI terminal is written
-as `\E[%i%d;%dH'.  (`\E' stands for ESC.)  `cm' by convention always
-requires two parameters, the vertical and horizontal goal positions, so
-this string specifies the encoding of two parameters.  Here `%i'
-increments the two values supplied, and each `%d' encodes one of the
-values in decimal.  If the cursor position values 20,58 are encoded
-with this string, the result is `\E[21;59H'.
-
-   First, here are the `%'-sequences that generate output.  Except for
-`%%', each of them encodes one parameter and advances the pointer to
-the following parameter.
-
-`%%'
-     Output a single `%'.  This is the only way to represent a literal
-     `%' in a terminal command with parameters.  `%%' does not use up a
-     parameter.
-
-`%d'
-     As in `printf', output the next parameter in decimal.
-
-`%2'
-     Like `%02d' in `printf': output the next parameter in decimal, and
-     always use at least two digits.
-
-`%3'
-     Like `%03d' in `printf': output the next parameter in decimal, and
-     always use at least three digits.  Note that `%4' and so on are
-     *not* defined.
-
-`%.'
-     Output the next parameter as a single character whose ASCII code is
-     the parameter value.  Like `%c' in `printf'.
-
-`%+CHAR'
-     Add the next parameter to the character CHAR, and output the
-     resulting character.  For example, `%+ ' represents 0 as a space,
-     1 as `!', etc.
-
-   The following `%'-sequences specify alteration of the parameters
-(their values, or their order) rather than encoding a parameter for
-output.  They generate no output; they are used only for their side
-effects on the parameters.  Also, they do not advance the "next
-parameter" pointer except as explicitly stated.  Only `%i', `%r' and
-`%>' are defined in standard Unix termcap.  The others are GNU
-extensions.
-
-`%i'
-     Increment the next two parameters.  This is used for terminals that
-     expect cursor positions in origin 1.  For example, `%i%d,%d' would
-     output two parameters with `1' for 0, `2' for 1, etc.
-
-`%r'
-     Interchange the next two parameters.  This is used for terminals
-     whose cursor positioning command expects the horizontal position
-     first.
-
-`%s'
-     Skip the next parameter.  Do not output anything.
-
-`%b'
-     Back up one parameter.  The last parameter used will become once
-     again the next parameter to be output, and the next output command
-     will use it.  Using `%b' more than once, you can back up any
-     number of parameters, and you can refer to each parameter any
-     number of times.
-
-`%>C1C2'
-     Conditionally increment the next parameter.  Here C1 and C2 are
-     characters which stand for their ASCII codes as numbers.  If the
-     next parameter is greater than the ASCII code of C1, the ASCII
-     code of C2 is added to it.
-
-`%a OP TYPE POS'
-     Perform arithmetic on the next parameter, do not use it up, and do
-     not output anything.  Here OP specifies the arithmetic operation,
-     while TYPE and POS together specify the other operand.
-
-     Spaces are used above to separate the operands for clarity; the
-     spaces don't appear in the data base, where this sequence is
-     exactly five characters long.
-
-     The character OP says what kind of arithmetic operation to
-     perform.  It can be any of these characters:
-
-    `='
-          assign a value to the next parameter, ignoring its old value.
-          The new value comes from the other operand.
-
-    `+'
-          add the other operand to the next parameter.
-
-    `-'
-          subtract the other operand from the next parameter.
-
-    `*'
-          multiply the next parameter by the other operand.
-
-    `/'
-          divide the next parameter by the other operand.
-
-     The "other operand" may be another parameter's value or a constant;
-     the character TYPE says which.  It can be:
-
-    `p'
-          Use another parameter.  The character POS says which
-          parameter to use.  Subtract 64 from its ASCII code to get the
-          position of the desired parameter relative to this one.  Thus,
-          the character `A' as POS means the parameter after the next
-          one; the character `?' means the parameter before the next
-          one.
-
-    `c'
-          Use a constant value.  The character POS specifies the value
-          of the constant.  The 0200 bit is cleared out, so that 0200
-          can be used to represent zero.
-
-   The following `%'-sequences are special purpose hacks to compensate
-for the weird designs of obscure terminals.  They modify the next
-parameter or the next two parameters but do not generate output and do
-not use up any parameters.  `%m' is a GNU extension; the others are
-defined in standard Unix termcap.
-
-`%n'
-     Exclusive-or the next parameter with 0140, and likewise the
-     parameter after next.
-
-`%m'
-     Complement all the bits of the next parameter and the parameter
-     after next.
-
-`%B'
-     Encode the next parameter in BCD.  It alters the value of the
-     parameter by adding six times the quotient of the parameter by ten.
-     Here is a C statement that shows how the new value is computed:
-
-          PARM = (PARM / 10) * 16 + PARM % 10;
-
-`%D'
-     Transform the next parameter as needed by Delta Data terminals.
-     This involves subtracting twice the remainder of the parameter by
-     16.
-
-          PARM -= 2 * (PARM % 16);
-
-\1f
-File: termcap.info,  Node: Using Parameters,  Prev: Encode Parameters,  Up: Parameters
-
-Sending Display Commands with Parameters
-----------------------------------------
-
-   The termcap library functions `tparam' and `tgoto' serve as the
-analog of `printf' for terminal string parameters.  The newer function
-`tparam' is a GNU extension, more general but missing from Unix
-termcap.  The original parameter-encoding function is `tgoto', which is
-preferable for cursor motion.
-
-* Menu:
-
-* tparam::      The general case, for GNU termcap only.
-* tgoto::       The special case of cursor motion.
-
-\1f
-File: termcap.info,  Node: tparam,  Next: tgoto,  Up: Using Parameters
-
-`tparam'
-........
-
-   The function `tparam' can encode display commands with any number of
-parameters and allows you to specify the buffer space.  It is the
-preferred function for encoding parameters for all but the `cm'
-capability.  Its ANSI C declaration is as follows:
-
-     char *tparam (char *CTLSTRING, char *BUFFER, int SIZE, int PARM1,...)
-
-   The arguments are a control string CTLSTRING (the value of a terminal
-capability, presumably), an output buffer BUFFER and SIZE, and any
-number of integer parameters to be encoded.  The effect of `tparam' is
-to copy the control string into the buffer, encoding parameters
-according to the `%' sequences in the control string.
-
-   You describe the output buffer by its address, BUFFER, and its size
-in bytes, SIZE.  If the buffer is not big enough for the data to be
-stored in it, `tparam' calls `malloc' to get a larger buffer.  In
-either case, `tparam' returns the address of the buffer it ultimately
-uses.  If the value equals BUFFER, your original buffer was used.
-Otherwise, a new buffer was allocated, and you must free it after you
-are done with printing the results.  If you pass zero for SIZE and
-BUFFER, `tparam' always allocates the space with `malloc'.
-
-   All capabilities that require parameters also have the ability to
-specify padding, so you should use `tputs' to output the string
-produced by `tparam'.  *Note Padding::.  Here is an example.
-
-     {
-     char *buf;
-     char buffer[40];
-     
-     buf = tparam (command, buffer, 40, parm);
-     tputs (buf, 1, fputchar);
-     if (buf != buffer)
-     free (buf);
-     }
-
-   If a parameter whose value is zero is encoded with `%.'-style
-encoding, the result is a null character, which will confuse `tputs'.
-This would be a serious problem, but luckily `%.' encoding is used only
-by a few old models of terminal, and only for the `cm' capability.  To
-solve the problem, use `tgoto' rather than `tparam' to encode the `cm'
-capability.
-
-\1f
-File: termcap.info,  Node: tgoto,  Prev: tparam,  Up: Using Parameters
-
-`tgoto'
-.......
-
-   The special case of cursor motion is handled by `tgoto'.  There are
-two reasons why you might choose to use `tgoto':
-
-   * For Unix compatibility, because Unix termcap does not have
-     `tparam'.
-
-   * For the `cm' capability, since `tgoto' has a special feature to
-     avoid problems with null characters, tabs and newlines on certain
-     old terminal types that use `%.' encoding for that capability.
-
-   Here is how `tgoto' might be declared in ANSI C:
-
-     char *tgoto (char *CSTRING, int HPOS, int VPOS)
-
-   There are three arguments, the terminal description's `cm' string and
-the two cursor position numbers; `tgoto' computes the parametrized
-string in an internal static buffer and returns the address of that
-buffer.  The next time you use `tgoto' the same buffer will be reused.
-
-   Parameters encoded with `%.' encoding can generate null characters,
-tabs or newlines.  These might cause trouble: the null character because
-`tputs' would think that was the end of the string, the tab because the
-kernel or other software might expand it into spaces, and the newline
-becaue the kernel might add a carriage-return, or padding characters
-normally used for a newline.  To prevent such problems, `tgoto' is
-careful to avoid these characters.  Here is how this works: if the
-target cursor position value is such as to cause a problem (that is to
-say, zero, nine or ten), `tgoto' increments it by one, then compensates
-by appending a string to move the cursor back or up one position.
-
-   The compensation strings to use for moving back or up are found in
-global variables named `BC' and `UP'.  These are actual external C
-variables with upper case names; they are declared `char *'.  It is up
-to you to store suitable values in them, normally obtained from the
-`le' and `up' terminal capabilities in the terminal description with
-`tgetstr'.  Alternatively, if these two variables are both zero, the
-feature of avoiding nulls, tabs and newlines is turned off.
-
-   It is safe to use `tgoto' for commands other than `cm' only if you
-have stored zero in `BC' and `UP'.
-
-   Note that `tgoto' reverses the order of its operands: the horizontal
-position comes before the vertical position in the arguments to
-`tgoto', even though the vertical position comes before the horizontal
-in the parameters of the `cm' string.  If you use `tgoto' with a
-command such as `AL' that takes one parameter, you must pass the
-parameter to `tgoto' as the "vertical position".
-
-\1f
-File: termcap.info,  Node: Data Base,  Next: Capabilities,  Prev: Library,  Up: Top
-
-The Format of the Data Base
-***************************
-
-   The termcap data base of terminal descriptions is stored in the file
-`/etc/termcap'.  It contains terminal descriptions, blank lines, and
-comments.
-
-   A terminal description starts with one or more names for the
-terminal type.  The information in the description is a series of
-"capability names" and values.  The capability names have standard
-meanings (*note Capabilities::.) and their values describe the terminal.
-
-* Menu:
-
-* Format::      Overall format of a terminal description.
-* Capability Format::  Format of capabilities within a description.
-* Naming::      Naming conventions for terminal types.
-* Inheriting::  Inheriting part of a description from
-a related terminal type.
-* Changing::    When changes in the data base take effect.
-
-\1f
-File: termcap.info,  Node: Format,  Next: Capability Format,  Up: Data Base
-
-Terminal Description Format
-===========================
-
-   Aside from comments (lines starting with `#', which are ignored),
-each nonblank line in the termcap data base is a terminal description.
-A terminal description is nominally a single line, but it can be split
-into multiple lines by inserting the two characters `\ newline'.  This
-sequence is ignored wherever it appears in a description.
-
-   The preferred way to split the description is between capabilities:
-insert the four characters `: \ newline tab' immediately before any
-colon.  This allows each sub-line to start with some indentation.  This
-works because, after the `\ newline' are ignored, the result is `: tab
-:'; the first colon ends the preceding capability and the second colon
-starts the next capability.  If you split with `\ newline' alone, you
-may not add any indentation after them.
-
-   Here is a real example of a terminal description:
-
-     dw|vt52|DEC vt52:\
-             :cr=^M:do=^J:nl=^J:bl=^G:\
-             :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:\
-             :cm=\EY%+ %+ :co#80:li#24:\
-             :nd=\EC:ta=^I:pt:sr=\EI:up=\EA:\
-             :ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:
-
-   Each terminal description begins with several names for the terminal
-type.  The names are separated by `|' characters, and a colon ends the
-last name.  The first name should be two characters long; it exists
-only for the sake of very old Unix systems and is never used in modern
-systems.  The last name should be a fully verbose name such as "DEC
-vt52" or "Ann Arbor Ambassador with 48 lines".  The other names should
-include whatever the user ought to be able to specify to get this
-terminal type, such as `vt52' or `aaa-48'.  *Note Naming::, for
-information on how to choose terminal type names.
-
-   After the terminal type names come the terminal capabilities,
-separated by colons and with a colon after the last one.  Each
-capability has a two-letter name, such as `cm' for "cursor motion
-string" or `li' for "number of display lines".
-
-\1f
-File: termcap.info,  Node: Capability Format,  Next: Naming,  Prev: Format,  Up: Data Base
-
-Writing the Capabilities
-========================
-
-   There are three kinds of capabilities: flags, numbers, and strings.
-Each kind has its own way of being written in the description.  Each
-defined capability has by convention a particular kind of value; for
-example, `li' always has a numeric value and `cm' always a string value.
-
-   A flag capability is thought of as having a boolean value: the value
-is true if the capability is present, false if not.  When the
-capability is present, just write its name between two colons.
-
-   A numeric capability has a value which is a nonnegative number.
-Write the capability name, a `#', and the number, between two colons.
-For example, `...:li#48:...' is how you specify the `li' capability for
-48 lines.
-
-   A string-valued capability has a value which is a sequence of
-characters.  Usually these are the characters used to perform some
-display operation.  Write the capability name, a `=', and the
-characters of the value, between two colons.  For example,
-`...:cm=\E[%i%d;%dH:...' is how the cursor motion command for a
-standard ANSI terminal would be specified.
-
-   Special characters in the string value can be expressed using
-`\'-escape sequences as in C; in addition, `\E' stands for ESC.  `^' is
-also a kind of escape character; `^' followed by CHAR stands for the
-control-equivalent of CHAR.  Thus, `^a' stands for the character
-control-a, just like `\001'.  `\' and `^' themselves can be represented
-as `\\' and `\^'.
-
-   To include a colon in the string, you must write `\072'.  You might
-ask, "Why can't `\:' be used to represent a colon?"  The reason is that
-the interrogation functions do not count slashes while looking for a
-capability.  Even if `:ce=ab\:cd:' were interpreted as giving the `ce'
-capability the value `ab:cd', it would also appear to define `cd' as a
-flag.
-
-   The string value will often contain digits at the front to specify
-padding (*note Padding::.) and/or `%'-sequences within to specify how
-to encode parameters (*note Parameters::.).  Although these things are
-not to be output literally to the terminal, they are considered part of
-the value of the capability.  They are special only when the string
-value is processed by `tputs', `tparam' or `tgoto'.  By contrast, `\'
-and `^' are considered part of the syntax for specifying the characters
-in the string.
-
-   Let's look at the VT52 example again:
-
-     dw|vt52|DEC vt52:\
-             :cr=^M:do=^J:nl=^J:bl=^G:\
-             :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:\
-             :cm=\EY%+ %+ :co#80:li#24:\
-             :nd=\EC:ta=^I:pt:sr=\EI:up=\EA:\
-             :ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:
-
-   Here we see the numeric-valued capabilities `co' and `li', the flags
-`bs' and `pt', and many string-valued capabilities.  Most of the
-strings start with ESC represented as `\E'.  The rest contain control
-characters represented using `^'.  The meanings of the individual
-capabilities are defined elsewhere (*note Capabilities::.).
-
diff --git a/lib/termcap/grot/termcap.info-2 b/lib/termcap/grot/termcap.info-2
deleted file mode 100644 (file)
index 6098d62..0000000
+++ /dev/null
@@ -1,974 +0,0 @@
-This is Info file ./termcap.info, produced by Makeinfo-1.55 from the
-input file ./termcap.texi.
-
-   This file documents the termcap library of the GNU system.
-
-   Copyright (C) 1988 Free Software Foundation, Inc.
-
-   Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-   Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-   Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-\1f
-File: termcap.info,  Node: Naming,  Next: Inheriting,  Prev: Capability Format,  Up: Data Base
-
-Terminal Type Name Conventions
-==============================
-
-   There are conventions for choosing names of terminal types.  For one
-thing, all letters should be in lower case.  The terminal type for a
-terminal in its most usual or most fundamental mode of operation should
-not have a hyphen in it.
-
-   If the same terminal has other modes of operation which require
-different terminal descriptions, these variant descriptions are given
-names made by adding suffixes with hyphens.  Such alternate descriptions
-are used for two reasons:
-
-   * When the terminal has a switch that changes its behavior.  Since
-     the computer cannot tell how the switch is set, the user must tell
-     the computer by choosing the appropriate terminal type name.
-
-     For example, the VT-100 has a setup flag that controls whether the
-     cursor wraps at the right margin.  If this flag is set to "wrap",
-     you must use the terminal type `vt100-am'.  Otherwise you must use
-     `vt100-nam'.  Plain `vt100' is defined as a synonym for either
-     `vt100-am' or `vt100-nam' depending on the preferences of the
-     local site.
-
-     The standard suffix `-am' stands for "automatic margins".
-
-   * To give the user a choice in how to use the terminal.  This is done
-     when the terminal has a switch that the computer normally controls.
-
-     For example, the Ann Arbor Ambassador can be configured with many
-     screen sizes ranging from 20 to 60 lines.  Fewer lines make bigger
-     characters but more lines let you see more of what you are editing.
-     As a result, users have different preferences.  Therefore, termcap
-     provides terminal types for many screen sizes.  If you choose type
-     `aaa-30', the terminal will be configured to use 30 lines; if you
-     choose `aaa-48', 48 lines will be used, and so on.
-
-   Here is a list of standard suffixes and their conventional meanings:
-
-`-w'
-     Short for "wide".  This is a mode that gives the terminal more
-     columns than usual.  This is normally a user option.
-
-`-am'
-     "Automatic margins".  This is an alternate description for use when
-     the terminal's margin-wrap switch is on; it contains the `am'
-     flag.  The implication is that normally the switch is off and the
-     usual description for the terminal says that the switch is off.
-
-`-nam'
-     "No automatic margins".  The opposite of `-am', this names an
-     alternative description which lacks the `am' flag.  This implies
-     that the terminal is normally operated with the margin-wrap switch
-     turned on, and the normal description of the terminal says so.
-
-`-na'
-     "No arrows".  This terminal description initializes the terminal to
-     keep its arrow keys in local mode.  This is a user option.
-
-`-rv'
-     "Reverse video".  This terminal description causes text output for
-     normal video to appear as reverse, and text output for reverse
-     video to come out as normal.  Often this description differs from
-     the usual one by interchanging the two strings which turn reverse
-     video on and off.
-
-     This is a user option; you can choose either the "reverse video"
-     variant terminal type or the normal terminal type, and termcap will
-     obey.
-
-`-s'
-     "Status".  Says to enable use of a status line which ordinary
-     output does not touch (*note Status Line::.).
-
-     Some terminals have a special line that is used only as a status
-     line.  For these terminals, there is no need for an `-s' variant;
-     the status line commands should be defined by default.  On other
-     terminals, enabling a status line means removing one screen line
-     from ordinary use and reducing the effective screen height.  For
-     these terminals, the user can choose the `-s' variant type to
-     request use of a status line.
-
-`-NLINES'
-     Says to operate with NLINES lines on the screen, for terminals
-     such as the Ambassador which provide this as an option.  Normally
-     this is a user option; by choosing the terminal type, you control
-     how many lines termcap will use.
-
-`-NPAGESp'
-     Says that the terminal has NPAGES pages worth of screen memory,
-     for terminals where this is a hardware option.
-
-`-unk'
-     Says that description is not for direct use, but only for
-     reference in `tc' capabilities.  Such a description is a kind of
-     subroutine, because it describes the common characteristics of
-     several variant descriptions that would use other suffixes in
-     place of `-unk'.
-
-\1f
-File: termcap.info,  Node: Inheriting,  Next: Changing,  Prev: Naming,  Up: Data Base
-
-Inheriting from Related Descriptions
-====================================
-
-   When two terminal descriptions are similar, their identical parts do
-not need to be given twice.  Instead, one of the two can be defined in
-terms of the other, using the `tc' capability.  We say that one
-description "refers to" the other, or "inherits from" the other.
-
-   The `tc' capability must be the last one in the terminal description,
-and its value is a string which is the name of another terminal type
-which is referred to.  For example,
-
-     N9|aaa|ambassador|aaa-30|ann arbor ambassador/30 lines:\
-             :ti=\E[2J\E[30;0;0;30p:\
-             :te=\E[60;0;0;30p\E[30;1H\E[J:\
-             :li#30:tc=aaa-unk:
-
-defines the terminal type `aaa-30' (also known as plain `aaa') in terms
-of `aaa-unk', which defines everything about the Ambassador that is
-independent of screen height.  The types `aaa-36', `aaa-48' and so on
-for other screen heights are likewise defined to inherit from `aaa-unk'.
-
-   The capabilities overridden by `aaa-30' include `li', which says how
-many lines there are, and `ti' and `te', which configure the terminal
-to use that many lines.
-
-   The effective terminal description for type `aaa' consists of the
-text shown above followed by the text of the description of `aaa-unk'.
-The `tc' capability is handled automatically by `tgetent', which finds
-the description thus referenced and combines the two descriptions
-(*note Find::.).  Therefore, only the implementor of the terminal
-descriptions needs to think about using `tc'.  Users and application
-programmers do not need to be concerned with it.
-
-   Since the reference terminal description is used last, capabilities
-specified in the referring description override any specifications of
-the same capabilities in the reference description.
-
-   The referring description can cancel out a capability without
-specifying any new value for it by means of a special trick.  Write the
-capability in the referring description, with the character `@' after
-the capability name, as follows:
-
-     NZ|aaa-30-nam|ann arbor ambassador/30 lines/no automatic-margins:\
-             :am@:tc=aaa-30:
-
-\1f
-File: termcap.info,  Node: Changing,  Prev: Inheriting,  Up: Data Base
-
-When Changes in the Data Base Take Effect
-=========================================
-
-   Each application program must read the terminal description from the
-data base, so a change in the data base is effective for all jobs
-started after the change is made.
-
-   The change will usually have no effect on a job that have been in
-existence since before the change. The program probably read the
-terminal description once, when it was started, and is continuing to
-use what it read then.  If the program does not have a feature for
-reexamining the data base, then you will need to run it again (probably
-killing the old job).
-
-   If the description in use is coming from the `TERMCAP' environment
-variable, then the data base file is effectively overridden, and
-changes in it will have no effect until you change the `TERMCAP'
-variable as well.  For example, some users' `.login' files
-automatically copy the terminal description into `TERMCAP' to speed
-startup of applications.  If you have done this, you will need to
-change the `TERMCAP' variable to make the changed data base take effect.
-
-\1f
-File: termcap.info,  Node: Capabilities,  Next: Summary,  Prev: Data Base,  Up: Top
-
-Definitions of the Terminal Capabilities
-****************************************
-
-   This section is divided into many subsections, each for one aspect of
-use of display terminals.  For writing a display program, you usually
-need only check the subsections for the operations you want to use.
-For writing a terminal description, you must read each subsection and
-fill in the capabilities described there.
-
-   String capabilities that are display commands may require numeric
-parameters (*note Parameters::.).  Most such capabilities do not use
-parameters.  When a capability requires parameters, this is explicitly
-stated at the beginning of its definition.  In simple cases, the first
-or second sentence of the definition mentions all the parameters, in
-the order they should be given, using a name in upper case for each
-one.  For example, the `rp' capability is a command that requires two
-parameters; its definition begins as follows:
-
-     String of commands to output a graphic character C, repeated N
-     times.
-
-   In complex cases or when there are many parameters, they are
-described explicitly.
-
-   When a capability is described as obsolete, this means that programs
-should not be written to look for it, but terminal descriptions should
-still be written to provide it.
-
-   When a capability is described as very obsolete, this means that it
-should be omitted from terminal descriptions as well.
-
-* Menu:
-
-* Basic::       Basic characteristics.
-* Screen Size::  Screen size, and what happens when it changes.
-* Cursor Motion::  Various ways to move the cursor.
-* Wrapping::    What happens if you write a character in the last column.
-* Scrolling::   Pushing text up and down on the screen.
-* Windows::     Limiting the part of the window that output affects.
-* Clearing::    Erasing one or many lines.
-* Insdel Line::  Making new blank lines in mid-screen; deleting lines.
-* Insdel Char::  Inserting and deleting characters within a line.
-* Standout::    Highlighting some of the text.
-* Underlining::  Underlining some of the text.
-* Cursor Visibility::  Making the cursor more or less easy to spot.
-* Bell::        Attracts user's attention; not localized on the screen.
-* Keypad::      Recognizing when function keys or arrows are typed.
-* Meta Key::    META acts like an extra shift key.
-* Initialization::  Commands used to initialize or reset the terminal.
-* Pad Specs::   Info for the kernel on how much padding is needed.
-* Status Line::  A status line displays "background" information.
-* Half-Line::   Moving by half-lines, for superscripts and subscripts.
-* Printer::     Controlling auxiliary printers of display terminals.
-
-\1f
-File: termcap.info,  Node: Basic,  Next: Screen Size,  Up: Capabilities
-
-Basic Characteristics
-=====================
-
-   This section documents the capabilities that describe the basic and
-nature of the terminal, and also those that are relevant to the output
-of graphic characters.
-
-`os'
-     Flag whose presence means that the terminal can overstrike.  This
-     means that outputting a graphic character does not erase whatever
-     was present in the same character position before.  The terminals
-     that can overstrike include printing terminals, storage tubes (all
-     obsolete nowadays), and many bit-map displays.
-
-`eo'
-     Flag whose presence means that outputting a space erases a
-     character position even if the terminal supports overstriking.  If
-     this flag is not present and overstriking is supported, output of
-     a space has no effect except to move the cursor.
-
-     (On terminals that do not support overstriking, you can always
-     assume that outputting a space at a position erases whatever
-     character was previously displayed there.)
-
-`gn'
-     Flag whose presence means that this terminal type is a generic type
-     which does not really describe any particular terminal.  Generic
-     types are intended for use as the default type assigned when the
-     user connects to the system, with the intention that the user
-     should specify what type he really has.  One example of a generic
-     type is the type `network'.
-
-     Since the generic type cannot say how to do anything interesting
-     with the terminal, termcap-using programs will always find that the
-     terminal is too weak to be supported if the user has failed to
-     specify a real terminal type in place of the generic one.  The
-     `gn' flag directs these programs to use a different error message:
-     "You have not specified your real terminal type", rather than
-     "Your terminal is not powerful enough to be used".
-
-`hc'
-     Flag whose presence means this is a hardcopy terminal.
-
-`rp'
-     String of commands to output a graphic character C, repeated N
-     times.  The first parameter value is the ASCII code for the desired
-     character, and the second parameter is the number of times to
-     repeat the character.  Often this command requires padding
-     proportional to the number of times the character is repeated.
-     This effect can be had by using parameter arithmetic with
-     `%'-sequences to compute the amount of padding, then generating
-     the result as a number at the front of the string so that `tputs'
-     will treat it as padding.
-
-`hz'
-     Flag whose presence means that the ASCII character `~' cannot be
-     output on this terminal because it is used for display commands.
-
-     Programs handle this flag by checking all text to be output and
-     replacing each `~' with some other character(s).  If this is not
-     done, the screen will be thoroughly garbled.
-
-     The old Hazeltine terminals that required such treatment are
-     probably very rare today, so you might as well not bother to
-     support this flag.
-
-`CC'
-     String whose presence means the terminal has a settable command
-     character.  The value of the string is the default command
-     character (which is usually ESC).
-
-     All the strings of commands in the terminal description should be
-     written to use the default command character.  If you are writing
-     an application program that changes the command character, use the
-     `CC' capability to figure out how to translate all the display
-     commands to work with the new command character.
-
-     Most programs have no reason to look at the `CC' capability.
-
-`xb'
-     Flag whose presence identifies Superbee terminals which are unable
-     to transmit the characters ESC and `Control-C'.  Programs which
-     support this flag are supposed to check the input for the code
-     sequences sent by the F1 and F2 keys, and pretend that ESC or
-     `Control-C' (respectively) had been read.  But this flag is
-     obsolete, and not worth supporting.
-
-\1f
-File: termcap.info,  Node: Screen Size,  Next: Cursor Motion,  Prev: Basic,  Up: Capabilities
-
-Screen Size
-===========
-
-   A terminal description has two capabilities, `co' and `li', that
-describe the screen size in columns and lines.  But there is more to
-the question of screen size than this.
-
-   On some operating systems the "screen" is really a window and the
-effective width can vary.  On some of these systems, `tgetnum' uses the
-actual width of the window to decide what value to return for the `co'
-capability, overriding what is actually written in the terminal
-description.  On other systems, it is up to the application program to
-check the actual window width using a system call.  For example, on BSD
-4.3 systems, the system call `ioctl' with code `TIOCGWINSZ' will tell
-you the current screen size.
-
-   On all window systems, termcap is powerless to advise the application
-program if the user resizes the window.  Application programs must deal
-with this possibility in a system-dependent fashion.  On some systems
-the C shell handles part of the problem by detecting changes in window
-size and setting the `TERMCAP' environment variable appropriately.
-This takes care of application programs that are started subsequently.
-It does not help application programs already running.
-
-   On some systems, including BSD 4.3, all programs using a terminal get
-a signal named `SIGWINCH' whenever the screen size changes.  Programs
-that use termcap should handle this signal by using `ioctl TIOCGWINSZ'
-to learn the new screen size.
-
-`co'
-     Numeric value, the width of the screen in character positions.
-     Even hardcopy terminals normally have a `co' capability.
-
-`li'
-     Numeric value, the height of the screen in lines.
-
-\1f
-File: termcap.info,  Node: Cursor Motion,  Next: Wrapping,  Prev: Screen Size,  Up: Capabilities
-
-Cursor Motion
-=============
-
-   Termcap assumes that the terminal has a "cursor", a spot on the
-screen where a visible mark is displayed, and that most display
-commands take effect at the position of the cursor.  It follows that
-moving the cursor to a specified location is very important.
-
-   There are many terminal capabilities for different cursor motion
-operations.  A terminal description should define as many as possible,
-but most programs do not need to use most of them.  One capability,
-`cm', moves the cursor to an arbitrary place on the screen; this by
-itself is sufficient for any application as long as there is no need to
-support hardcopy terminals or certain old, weak displays that have only
-relative motion commands.  Use of other cursor motion capabilities is an
-optimization, enabling the program to output fewer characters in some
-common cases.
-
-   If you plan to use the relative cursor motion commands in an
-application program, you must know what the starting cursor position
-is.  To do this, you must keep track of the cursor position and update
-the records each time anything is output to the terminal, including
-graphic characters.  In addition, it is necessary to know whether the
-terminal wraps after writing in the rightmost column.  *Note Wrapping::.
-
-   One other motion capability needs special mention: `nw' moves the
-cursor to the beginning of the following line, perhaps clearing all the
-starting line after the cursor, or perhaps not clearing at all.  This
-capability is a least common denominator that is probably supported
-even by terminals that cannot do most other things such as `cm' or `do'.
-Even hardcopy terminals can support `nw'.
-
-`cm'
-     String of commands to position the cursor at line L, column C.
-     Both parameters are origin-zero, and are defined relative to the
-     screen, not relative to display memory.
-
-     All display terminals except a few very obsolete ones support `cm',
-     so it is acceptable for an application program to refuse to
-     operate on terminals lacking `cm'.
-
-`ho'
-     String of commands to move the cursor to the upper left corner of
-     the screen (this position is called the "home position").  In
-     terminals where the upper left corner of the screen is not the
-     same as the beginning of display memory, this command must go to
-     the upper left corner of the screen, not the beginning of display
-     memory.
-
-     Every display terminal supports this capability, and many
-     application programs refuse to operate if the `ho' capability is
-     missing.
-
-`ll'
-     String of commands to move the cursor to the lower left corner of
-     the screen.  On some terminals, moving up from home position does
-     this, but programs should never assume that will work.  Just
-     output the `ll' string (if it is provided); if moving to home
-     position and then moving up is the best way to get there, the `ll'
-     command will do that.
-
-`cr'
-     String of commands to move the cursor to the beginning of the line
-     it is on.  If this capability is not specified, many programs
-     assume they can use the ASCII carriage return character for this.
-
-`le'
-     String of commands to move the cursor left one column.  Unless the
-     `bw' flag capability is specified, the effect is undefined if the
-     cursor is at the left margin; do not use this command there.  If
-     `bw' is present, this command may be used at the left margin, and
-     it wraps the cursor to the last column of the preceding line.
-
-`nd'
-     String of commands to move the cursor right one column.  The
-     effect is undefined if the cursor is at the right margin; do not
-     use this command there, not even if `am' is present.
-
-`up'
-     String of commands to move the cursor vertically up one line.  The
-     effect of sending this string when on the top line is undefined;
-     programs should never use it that way.
-
-`do'
-     String of commands to move the cursor vertically down one line.
-     The effect of sending this string when on the bottom line is
-     undefined; programs should never use it that way.
-
-     Some programs do use `do' to scroll up one line if used at the
-     bottom line, if `sf' is not defined but `sr' is.  This is only to
-     compensate for certain old, incorrect terminal descriptions.  (In
-     principle this might actually lead to incorrect behavior on other
-     terminals, but that seems to happen rarely if ever.)  But the
-     proper solution is that the terminal description should define
-     `sf' as well as `do' if the command is suitable for scrolling.
-
-     The original idea was that this string would not contain a newline
-     character and therefore could be used without disabling the
-     kernel's usual habit of converting of newline into a
-     carriage-return newline sequence.  But many terminal descriptions
-     do use newline in the `do' string, so this is not possible; a
-     program which sends the `do' string must disable output conversion
-     in the kernel (*note Initialize::.).
-
-`bw'
-     Flag whose presence says that `le' may be used in column zero to
-     move to the last column of the preceding line.  If this flag is
-     not present, `le' should not be used in column zero.
-
-`nw'
-     String of commands to move the cursor to start of next line,
-     possibly clearing rest of line (following the cursor) before
-     moving.
-
-`DO', `UP', `LE', `RI'
-     Strings of commands to move the cursor N lines down vertically, up
-     vertically, or N columns left or right.  Do not attempt to move
-     past any edge of the screen with these commands; the effect of
-     trying that is undefined.  Only a few terminal descriptions provide
-     these commands, and most programs do not use them.
-
-`CM'
-     String of commands to position the cursor at line L, column C,
-     relative to display memory.  Both parameters are origin-zero.
-     This capability is present only in terminals where there is a
-     difference between screen-relative and memory-relative addressing,
-     and not even in all such terminals.
-
-`ch'
-     String of commands to position the cursor at column C in the same
-     line it is on.  This is a special case of `cm' in which the
-     vertical position is not changed.  The `ch' capability is provided
-     only when it is faster to output than `cm' would be in this
-     special case.  Programs should not assume most display terminals
-     have `ch'.
-
-`cv'
-     String of commands to position the cursor at line L in the same
-     column.  This is a special case of `cm' in which the horizontal
-     position is not changed.  The `cv' capability is provided only
-     when it is faster to output than `cm' would be in this special
-     case.  Programs should not assume most display terminals have `cv'.
-
-`sc'
-     String of commands to make the terminal save the current cursor
-     position.  Only the last saved position can be used.  If this
-     capability is present, `rc' should be provided also.  Most
-     terminals have neither.
-
-`rc'
-     String of commands to make the terminal restore the last saved
-     cursor position.  If this capability is present, `sc' should be
-     provided also.  Most terminals have neither.
-
-`ff'
-     String of commands to advance to the next page, for a hardcopy
-     terminal.
-
-`ta'
-     String of commands to move the cursor right to the next hardware
-     tab stop column.  Missing if the terminal does not have any kind of
-     hardware tabs.  Do not send this command if the kernel's terminal
-     modes say that the kernel is expanding tabs into spaces.
-
-`bt'
-     String of commands to move the cursor left to the previous hardware
-     tab stop column.  Missing if the terminal has no such ability; many
-     terminals do not.  Do not send this command if the kernel's
-     terminal modes say that the kernel is expanding tabs into spaces.
-
-   The following obsolete capabilities should be included in terminal
-descriptions when appropriate, but should not be looked at by new
-programs.
-
-`nc'
-     Flag whose presence means the terminal does not support the ASCII
-     carriage return character as `cr'.  This flag is needed because
-     old programs assume, when the `cr' capability is missing, that
-     ASCII carriage return can be used for the purpose.  We use `nc' to
-     tell the old programs that carriage return may not be used.
-
-     New programs should not assume any default for `cr', so they need
-     not look at `nc'.  However, descriptions should contain `nc'
-     whenever they do not contain `cr'.
-
-`xt'
-     Flag whose presence means that the ASCII tab character may not be
-     used for cursor motion.  This flag exists because old programs
-     assume, when the `ta' capability is missing, that ASCII tab can be
-     used for the purpose.  We use `xt' to tell the old programs not to
-     use tab.
-
-     New programs should not assume any default for `ta', so they need
-     not look at `xt' in connection with cursor motion.  Note that `xt'
-     also has implications for standout mode (*note Standout::.).  It
-     is obsolete in regard to cursor motion but not in regard to
-     standout.
-
-     In fact, `xt' means that the terminal is a Teleray 1061.
-
-`bc'
-     Very obsolete alternative name for the `le' capability.
-
-`bs'
-     Flag whose presence means that the ASCII character backspace may be
-     used to move the cursor left.  Obsolete; look at `le' instead.
-
-`nl'
-     Obsolete capability which is a string that can either be used to
-     move the cursor down or to scroll.  The same string must scroll
-     when used on the bottom line and move the cursor when used on any
-     other line.  New programs should use `do' or `sf', and ignore `nl'.
-
-     If there is no `nl' capability, some old programs assume they can
-     use the newline character for this purpose.  These programs follow
-     a bad practice, but because they exist, it is still desirable to
-     define the `nl' capability in a terminal description if the best
-     way to move down is *not* a newline.
-
-\1f
-File: termcap.info,  Node: Wrapping,  Next: Scrolling,  Prev: Cursor Motion,  Up: Capabilities
-
-Wrapping
-========
-
-   "Wrapping" means moving the cursor from the right margin to the left
-margin of the following line.  Some terminals wrap automatically when a
-graphic character is output in the last column, while others do not.
-Most application programs that use termcap need to know whether the
-terminal wraps.  There are two special flag capabilities to describe
-what the terminal does when a graphic character is output in the last
-column.
-
-`am'
-     Flag whose presence means that writing a character in the last
-     column causes the cursor to wrap to the beginning of the next line.
-
-     If `am' is not present, writing in the last column leaves the
-     cursor at the place where the character was written.
-
-     Writing in the last column of the last line should be avoided on
-     terminals with `am', as it may or may not cause scrolling to occur
-     (*note Scrolling::.).  Scrolling is surely not what you would
-     intend.
-
-     If your program needs to check the `am' flag, then it also needs
-     to check the `xn' flag which indicates that wrapping happens in a
-     strange way.  Many common terminals have the `xn' flag.
-
-`xn'
-     Flag whose presence means that the cursor wraps in a strange way.
-     At least two distinct kinds of strange behavior are known; the
-     termcap data base does not contain anything to distinguish the two.
-
-     On Concept-100 terminals, output in the last column wraps the
-     cursor almost like an ordinary `am' terminal.  But if the next
-     thing output is a newline, it is ignored.
-
-     DEC VT-100 terminals (when the wrap switch is on) do a different
-     strange thing: the cursor wraps only if the next thing output is
-     another graphic character.  In fact, the wrap occurs when the
-     following graphic character is received by the terminal, before the
-     character is placed on the screen.
-
-     On both of these terminals, after writing in the last column a
-     following graphic character will be displayed in the first column
-     of the following line.  But the effect of relative cursor motion
-     characters such as newline or backspace at such a time depends on
-     the terminal.  The effect of erase or scrolling commands also
-     depends on the terminal.  You can't assume anything about what
-     they will do on a terminal that has `xn'.  So, to be safe, you
-     should never do these things at such a time on such a terminal.
-
-     To be sure of reliable results on a terminal which has the `xn'
-     flag, output a `cm' absolute positioning command after writing in
-     the last column.  Another safe thing to do is to output
-     carriage-return newline, which will leave the cursor at the
-     beginning of the following line.
-
-`LP'
-     Flag whose presence means that it is safe to write in the last
-     column of the last line without worrying about undesired
-     scrolling.  `LP' indicates the DEC flavor of `xn' strangeness.
-
-\1f
-File: termcap.info,  Node: Scrolling,  Next: Windows,  Prev: Wrapping,  Up: Capabilities
-
-Scrolling
-=========
-
-   "Scrolling" means moving the contents of the screen up or down one or
-more lines.  Moving the contents up is "forward scrolling"; moving them
-down is "reverse scrolling".
-
-   Scrolling happens after each line of output during ordinary output
-on most display terminals.  But in an application program that uses
-termcap for random-access output, scrolling happens only when
-explicitly requested with the commands in this section.
-
-   Some terminals have a "scroll region" feature.  This lets you limit
-the effect of scrolling to a specified range of lines.  Lines outside
-the range are unaffected when scrolling happens.  The scroll region
-feature is available if either `cs' or `cS' is present.
-
-`sf'
-     String of commands to scroll the screen one line up, assuming it is
-     output with the cursor at the beginning of the bottom line.
-
-`sr'
-     String of commands to scroll the screen one line down, assuming it
-     is output with the cursor at the beginning of the top line.
-
-`do'
-     A few programs will try to use `do' to do the work of `sf'.  This
-     is not really correct--it is an attempt to compensate for the
-     absence of a `sf' command in some old terminal descriptions.
-
-     Since these terminal descriptions do define `sr', perhaps at one
-     time the definition of `do' was different and it could be used for
-     scrolling as well.  But it isn't desirable to combine these two
-     functions in one capability, since scrolling often requires more
-     padding than simply moving the cursor down.  Defining `sf' and
-     `do' separately allows you to specify the padding properly.  Also,
-     all sources agree that `do' should not be relied on to do
-     scrolling.
-
-     So the best approach is to add `sf' capabilities to the
-     descriptions of these terminals, copying the definition of `do' if
-     that does scroll.
-
-`SF'
-     String of commands to scroll the screen N lines up, assuming it is
-     output with the cursor at the beginning of the bottom line.
-
-`SR'
-     String of commands to scroll the screen N lines down, assuming it
-     is output with the cursor at the beginning of the top line.
-
-`cs'
-     String of commands to set the scroll region.  This command takes
-     two parameters, START and END, which are the line numbers
-     (origin-zero) of the first line to include in the scroll region
-     and of the last line to include in it.  When a scroll region is
-     set, scrolling is limited to the specified range of lines; lines
-     outside the range are not affected by scroll commands.
-
-     Do not try to move the cursor outside the scroll region.  The
-     region remains set until explicitly removed.  To remove the scroll
-     region, use another `cs' command specifying the full height of the
-     screen.
-
-     The cursor position is undefined after the `cs' command is set, so
-     position the cursor with `cm' immediately afterward.
-
-`cS'
-     String of commands to set the scroll region using parameters in
-     different form.  The effect is the same as if `cs' were used.
-     Four parameters are required:
-
-       1. Total number of lines on the screen.
-
-       2. Number of lines above desired scroll region.
-
-       3. Number of lines below (outside of) desired scroll region.
-
-       4. Total number of lines on the screen, the same as the first
-          parameter.
-
-     This capability is a GNU extension that was invented to allow the
-     Ann Arbor Ambassador's scroll-region command to be described; it
-     could also be done by putting non-Unix `%'-sequences into a `cs'
-     string, but that would have confused Unix programs that used the
-     `cs' capability with the Unix termcap.  Currently only GNU Emacs
-     uses the `cS' capability.
-
-`ns'
-     Flag which means that the terminal does not normally scroll for
-     ordinary sequential output.  For modern terminals, this means that
-     outputting a newline in ordinary sequential output with the cursor
-     on the bottom line wraps to the top line.  For some obsolete
-     terminals, other things may happen.
-
-     The terminal may be able to scroll even if it does not normally do
-     so.  If the `sf' capability is provided, it can be used for
-     scrolling regardless of `ns'.
-
-`da'
-     Flag whose presence means that lines scrolled up off the top of the
-     screen may come back if scrolling down is done subsequently.
-
-     The `da' and `db' flags do not, strictly speaking, affect how to
-     scroll.  But programs that scroll usually need to clear the lines
-     scrolled onto the screen, if these flags are present.
-
-`db'
-     Flag whose presence means that lines scrolled down off the bottom
-     of the screen may come back if scrolling up is done subsequently.
-
-`lm'
-     Numeric value, the number of lines of display memory that the
-     terminal has.  A value of zero means that the terminal has more
-     display memory than can fit on the screen, but no fixed number of
-     lines.  (The number of lines may depend on the amount of text in
-     each line.)
-
-   Any terminal description that defines `SF' should also define `sf';
-likewise for `SR' and `sr'.  However, many terminals can only scroll by
-one line at a time, so it is common to find `sf' and not `SF', or `sr'
-without `SR'.
-
-   Therefore, all programs that use the scrolling facilities should be
-prepared to work with `sf' in the case that `SF' is absent, and
-likewise with `sr'.  On the other hand, an application program that
-uses only `sf' and not `SF' is acceptable, though slow on some
-terminals.
-
-   When outputting a scroll command with `tputs', the NLINES argument
-should be the total number of lines in the portion of the screen being
-scrolled.  Very often these commands require padding proportional to
-this number of lines.  *Note Padding::.
-
-\1f
-File: termcap.info,  Node: Windows,  Next: Clearing,  Prev: Scrolling,  Up: Capabilities
-
-Windows
-=======
-
-   A "window", in termcap, is a rectangular portion of the screen to
-which all display operations are restricted.  Wrapping, clearing,
-scrolling, insertion and deletion all operate as if the specified
-window were all the screen there was.
-
-`wi'
-     String of commands to set the terminal output screen window.  This
-     string requires four parameters, all origin-zero:
-       1. The first line to include in the window.
-
-       2. The last line to include in the window.
-
-       3. The first column to include in the window.
-
-       4. The last column to include in the window.
-
-   Most terminals do not support windows.
-
-\1f
-File: termcap.info,  Node: Clearing,  Next: Insdel Line,  Prev: Windows,  Up: Capabilities
-
-Clearing Parts of the Screen
-============================
-
-   There are several terminal capabilities for clearing parts of the
-screen to blank.  All display terminals support the `cl' string, and
-most display terminals support all of these capabilities.
-
-`cl'
-     String of commands to clear the entire screen and position the
-     cursor at the upper left corner.
-
-`cd'
-     String of commands to clear the line the cursor is on, and all the
-     lines below it, down to the bottom of the screen.  This command
-     string should be used only with the cursor in column zero; their
-     effect is undefined if the cursor is elsewhere.
-
-`ce'
-     String of commands to clear from the cursor to the end of the
-     current line.
-
-`ec'
-     String of commands to clear N characters, starting with the
-     character that the cursor is on.  This command string is expected
-     to leave the cursor position unchanged.  The parameter N should
-     never be large enough to reach past the right margin; the effect
-     of such a large parameter would be undefined.
-
-   Clear to end of line (`ce') is extremely important in programs that
-maintain an updating display.  Nearly all display terminals support this
-operation, so it is acceptable for a an application program to refuse to
-work if `ce' is not present.  However, if you do not want this
-limitation, you can accomplish clearing to end of line by outputting
-spaces until you reach the right margin.  In order to do this, you must
-know the current horizontal position.  Also, this technique assumes
-that writing a space will erase.  But this happens to be true on all
-the display terminals that fail to support `ce'.
-
-\1f
-File: termcap.info,  Node: Insdel Line,  Next: Insdel Char,  Prev: Clearing,  Up: Capabilities
-
-Insert/Delete Line
-==================
-
-   "Inserting a line" means creating a blank line in the middle of the
-screen, and pushing the existing lines of text apart.  In fact, the
-lines above the insertion point do not change, while the lines below
-move down, and one is normally lost at the bottom of the screen.
-
-   "Deleting a line" means causing the line to disappear from the
-screen, closing up the gap by moving the lines below it upward.  A new
-line appears at the bottom of the screen.  Usually this line is blank,
-but on terminals with the `db' flag it may be a line previously moved
-off the screen bottom by scrolling or line insertion.
-
-   Insertion and deletion of lines is useful in programs that maintain
-an updating display some parts of which may get longer or shorter.
-They are also useful in editors for scrolling parts of the screen, and
-for redisplaying after lines of text are killed or inserted.
-
-   Many terminals provide commands to insert or delete a single line at
-the cursor position.  Some provide the ability to insert or delete
-several lines with one command, using the number of lines to insert or
-delete as a parameter.  Always move the cursor to column zero before
-using any of these commands.
-
-`al'
-     String of commands to insert a blank line before the line the
-     cursor is on.  The existing line, and all lines below it, are
-     moved down.  The last line in the screen (or in the scroll region,
-     if one is set) disappears and in most circumstances is discarded.
-     It may not be discarded if the `db' is present (*note
-     Scrolling::.).
-
-     The cursor must be at the left margin before this command is used.
-     This command does not move the cursor.
-
-`dl'
-     String of commands to delete the line the cursor is on.  The
-     following lines move up, and a blank line appears at the bottom of
-     the screen (or bottom of the scroll region).  If the terminal has
-     the `db' flag, a nonblank line previously pushed off the screen
-     bottom may reappear at the bottom.
-
-     The cursor must be at the left margin before this command is used.
-     This command does not move the cursor.
-
-`AL'
-     String of commands to insert N blank lines before the line that
-     the cursor is on.  It is like `al' repeated N times, except that
-     it is as fast as one `al'.
-
-`DL'
-     String of commands to delete N lines starting with the line that
-     the cursor is on.  It is like `dl' repeated N times, except that
-     it is as fast as one `dl'.
-
-   Any terminal description that defines `AL' should also define `al';
-likewise for `DL' and `dl'.  However, many terminals can only insert or
-delete one line at a time, so it is common to find `al' and not `AL',
-or `dl' without `DL'.
-
-   Therefore, all programs that use the insert and delete facilities
-should be prepared to work with `al' in the case that `AL' is absent,
-and likewise with `dl'.  On the other hand, it is acceptable to write
-an application that uses only `al' and `dl' and does not look for `AL'
-or `DL' at all.
-
-   If a terminal does not support line insertion and deletion directly,
-but does support a scroll region, the effect of insertion and deletion
-can be obtained with scrolling.  However, it is up to the individual
-user program to check for this possibility and use the scrolling
-commands to get the desired result.  It is fairly important to implement
-this alternate strategy, since it is the only way to get the effect of
-line insertion and deletion on the popular VT100 terminal.
-
-   Insertion and deletion of lines is affected by the scroll region on
-terminals that have a settable scroll region.  This is useful when it is
-desirable to move any few consecutive lines up or down by a few lines.
-*Note Scrolling::.
-
-   The line pushed off the bottom of the screen is not lost if the
-terminal has the `db' flag capability; instead, it is pushed into
-display memory that does not appear on the screen.  This is the same
-thing that happens when scrolling pushes a line off the bottom of the
-screen.  Either reverse scrolling or deletion of a line can bring the
-apparently lost line back onto the bottom of the screen.  If the
-terminal has the scroll region feature as well as `db', the pushed-out
-line really is lost if a scroll region is in effect.
-
-   When outputting an insert or delete command with `tputs', the NLINES
-argument should be the total number of lines from the cursor to the
-bottom of the screen (or scroll region).  Very often these commands
-require padding proportional to this number of lines.  *Note Padding::.
-
-   For `AL' and `DL' the NLINES argument should *not* depend on the
-number of lines inserted or deleted; only the total number of lines
-affected.  This is because it is just as fast to insert two or N lines
-with `AL' as to insert one line with `al'.
-
diff --git a/lib/termcap/grot/termcap.info-3 b/lib/termcap/grot/termcap.info-3
deleted file mode 100644 (file)
index d5b309f..0000000
+++ /dev/null
@@ -1,1480 +0,0 @@
-This is Info file ./termcap.info, produced by Makeinfo-1.55 from the
-input file ./termcap.texi.
-
-   This file documents the termcap library of the GNU system.
-
-   Copyright (C) 1988 Free Software Foundation, Inc.
-
-   Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-   Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-   Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-\1f
-File: termcap.info,  Node: Insdel Char,  Next: Standout,  Prev: Insdel Line,  Up: Capabilities
-
-Insert/Delete Character
-=======================
-
-   "Inserting a character" means creating a blank space in the middle
-of a line, and pushing the rest of the line rightward.  The character
-in the rightmost column is lost.
-
-   "Deleting a character" means causing the character to disappear from
-the screen, closing up the gap by moving the rest of the line leftward.
-A blank space appears in the rightmost column.
-
-   Insertion and deletion of characters is useful in programs that
-maintain an updating display some parts of which may get longer or
-shorter.  It is also useful in editors for redisplaying the results of
-editing within a line.
-
-   Many terminals provide commands to insert or delete a single
-character at the cursor position.  Some provide the ability to insert
-or delete several characters with one command, using the number of
-characters to insert or delete as a parameter.
-
-   Many terminals provide an insert mode in which outputting a graphic
-character has the added effect of inserting a position for that
-character.  A special command string is used to enter insert mode and
-another is used to exit it.  The reason for designing a terminal with
-an insert mode rather than an insert command is that inserting
-character positions is usually followed by writing characters into
-them.  With insert mode, this is as fast as simply writing the
-characters, except for the fixed overhead of entering and leaving
-insert mode.  However, when the line speed is great enough, padding may
-be required for the graphic characters output in insert mode.
-
-   Some terminals require you to enter insert mode and then output a
-special command for each position to be inserted.  Or they may require
-special commands to be output before or after each graphic character to
-be inserted.
-
-   Deletion of characters is usually accomplished by a straightforward
-command to delete one or several positions; but on some terminals, it
-is necessary to enter a special delete mode before using the delete
-command, and leave delete mode afterward.  Sometimes delete mode and
-insert mode are the same mode.
-
-   Some terminals make a distinction between character positions in
-which a space character has been output and positions which have been
-cleared.  On these terminals, the effect of insert or delete character
-runs to the first cleared position rather than to the end of the line.
-In fact, the effect may run to more than one line if there is no
-cleared position to stop the shift on the first line.  These terminals
-are identified by the `in' flag capability.
-
-   On terminals with the `in' flag, the technique of skipping over
-characters that you know were cleared, and then outputting text later
-on in the same line, causes later insert and delete character
-operations on that line to do nonstandard things.  A program that has
-any chance of doing this must check for the `in' flag and must be
-careful to write explicit space characters into the intermediate
-columns when `in' is present.
-
-   A plethora of terminal capabilities are needed to describe all of
-this complexity.  Here is a list of them all.  Following the list, we
-present an algorithm for programs to use to take proper account of all
-of these capabilities.
-
-`im'
-     String of commands to enter insert mode.
-
-     If the terminal has no special insert mode, but it can insert
-     characters with a special command, `im' should be defined with a
-     null value, because the `vi' editor assumes that insertion of a
-     character is impossible if `im' is not provided.
-
-     New programs should not act like `vi'.  They should pay attention
-     to `im' only if it is defined.
-
-`ei'
-     String of commands to leave insert mode.  This capability must be
-     present if `im' is.
-
-     On a few old terminals the same string is used to enter and exit
-     insert mode.  This string turns insert mode on if it was off, and
-     off it it was on.  You can tell these terminals because the `ei'
-     string equals the `im' string.  If you want to support these
-     terminals, you must always remember accurately whether insert mode
-     is in effect.  However, these terminals are obsolete, and it is
-     reasonable to refuse to support them.  On all modern terminals, you
-     can safely output `ei' at any time to ensure that insert mode is
-     turned off.
-
-`ic'
-     String of commands to insert one character position at the cursor.
-     The cursor does not move.
-
-     If outputting a graphic character while in insert mode is
-     sufficient to insert the character, then the `ic' capability
-     should be defined with a null value.
-
-     If your terminal offers a choice of ways to insert--either use
-     insert mode or use a special command--then define `im' and do not
-     define `ic', since this gives the most efficient operation when
-     several characters are to be inserted.  *Do not* define both
-     strings, for that means that *both* must be used each time
-     insertion is done.
-
-`ip'
-     String of commands to output following an inserted graphic
-     character in insert mode.  Often it is used just for a padding
-     spec, when padding is needed after an inserted character (*note
-     Padding::.).
-
-`IC'
-     String of commands to insert N character positions at and after
-     the cursor.  It has the same effect as repeating the `ic' string
-     and a space, N times.
-
-     If `IC' is provided, application programs may use it without first
-     entering insert mode.
-
-`mi'
-     Flag whose presence means it is safe to move the cursor while in
-     insert mode and assume the terminal remains in insert mode.
-
-`in'
-     Flag whose presence means that the terminal distinguishes between
-     character positions in which space characters have been output and
-     positions which have been cleared.
-
-   An application program can assume that the terminal can do character
-insertion if *any one of* the capabilities `IC', `im', `ic' or `ip' is
-provided.
-
-   To insert N blank character positions, move the cursor to the place
-to insert them and follow this algorithm:
-
-  1. If an `IC' string is provided, output it with parameter N and you
-     are finished.  Otherwise (or if you don't want to bother to look
-     for an `IC' string) follow the remaining steps.
-
-  2. Output the `im' string, if there is one, unless the terminal is
-     already in insert mode.
-
-  3. Repeat steps 4 through 6, N times.
-
-  4. Output the `ic' string if any.
-
-  5. Output a space.
-
-  6. Output the `ip' string if any.
-
-  7. Output the `ei' string, eventually, to exit insert mode.  There is
-     no need to do this right away.  If the `mi' flag is present, you
-     can move the cursor and the cursor will remain in insert mode;
-     then you can do more insertion elsewhere without reentering insert
-     mode.
-
-   To insert N graphic characters, position the cursor and follow this
-algorithm:
-
-  1. If an `IC' string is provided, output it with parameter N, then
-     output the graphic characters, and you are finished.  Otherwise
-     (or if you don't want to bother to look for an `IC' string) follow
-     the remaining steps.
-
-  2. Output the `im' string, if there is one, unless the terminal is
-     already in insert mode.
-
-  3. For each character to be output, repeat steps 4 through 6.
-
-  4. Output the `ic' string if any.
-
-  5. Output the next graphic character.
-
-  6. Output the `ip' string if any.
-
-  7. Output the `ei' string, eventually, to exit insert mode.  There is
-     no need to do this right away.  If the `mi' flag is present, you
-     can move the cursor and the cursor will remain in insert mode;
-     then you can do more insertion elsewhere without reentering insert
-     mode.
-
-   Note that this is not the same as the original Unix termcap
-specifications in one respect: it assumes that the `IC' string can be
-used without entering insert mode.  This is true as far as I know, and
-it allows you be able to avoid entering and leaving insert mode, and
-also to be able to avoid the inserted-character padding after the
-characters that go into the inserted positions.
-
-   Deletion of characters is less complicated; deleting one column is
-done by outputting the `dc' string.  However, there may be a delete
-mode that must be entered with `dm' in order to make `dc' work.
-
-`dc'
-     String of commands to delete one character position at the cursor.
-     If `dc' is not present, the terminal cannot delete characters.
-
-`DC'
-     String of commands to delete N characters starting at the cursor.
-     It has the same effect as repeating the `dc' string N times.  Any
-     terminal description that has `DC' also has `dc'.
-
-`dm'
-     String of commands to enter delete mode.  If not present, there is
-     no delete mode, and `dc' can be used at any time (assuming there is
-     a `dc').
-
-`ed'
-     String of commands to exit delete mode.  This must be present if
-     `dm' is.
-
-   To delete N character positions, position the cursor and follow these
-steps:
-
-  1. If the `DC' string is present, output it with parameter N and you
-     are finished.  Otherwise, follow the remaining steps.
-
-  2. Output the `dm' string, unless you know the terminal is already in
-     delete mode.
-
-  3. Output the `dc' string N times.
-
-  4. Output the `ed' string eventually.  If the flag capability `mi' is
-     present, you can move the cursor and do more deletion without
-     leaving and reentering delete mode.
-
-   As with the `IC' string, we have departed from the original termcap
-specifications by assuming that `DC' works without entering delete mode
-even though `dc' would not.
-
-   If the `dm' and `im' capabilities are both present and have the same
-value, it means that the terminal has one mode for both insertion and
-deletion.  It is useful for a program to know this, because then it can
-do insertions after deletions, or vice versa, without leaving
-insert/delete mode and reentering it.
-
-\1f
-File: termcap.info,  Node: Standout,  Next: Underlining,  Prev: Insdel Char,  Up: Capabilities
-
-Standout and Appearance Modes
-=============================
-
-   "Appearance modes" are modifications to the ways characters are
-displayed.  Typical appearance modes include reverse video, dim, bright,
-blinking, underlined, invisible, and alternate character set.  Each
-kind of terminal supports various among these, or perhaps none.
-
-   For each type of terminal, one appearance mode or combination of
-them that looks good for highlighted text is chosen as the "standout
-mode".  The capabilities `so' and `se' say how to enter and leave
-standout mode.  Programs that use appearance modes only to highlight
-some text generally use the standout mode so that they can work on as
-many terminals as possible.  Use of specific appearance modes other
-than "underlined" and "alternate character set" is rare.
-
-   Terminals that implement appearance modes fall into two general
-classes as to how they do it.
-
-   In some terminals, the presence or absence of any appearance mode is
-recorded separately for each character position.  In these terminals,
-each graphic character written is given the appearance modes current at
-the time it is written, and keeps those modes until it is erased or
-overwritten.  There are special commands to turn the appearance modes
-on or off for characters to be written in the future.
-
-   In other terminals, the change of appearance modes is represented by
-a marker that belongs to a certain screen position but affects all
-following screen positions until the next marker.  These markers are
-traditionally called "magic cookies".
-
-   The same capabilities (`so', `se', `mb' and so on) for turning
-appearance modes on and off are used for both magic-cookie terminals
-and per-character terminals.  On magic cookie terminals, these give the
-commands to write the magic cookies.  On per-character terminals, they
-change the current modes that affect future output and erasure.  Some
-simple applications can use these commands without knowing whether or
-not they work by means of cookies.
-
-   However, a program that maintains and updates a display needs to know
-whether the terminal uses magic cookies, and exactly what their effect
-is.  This information comes from the `sg' capability.
-
-   The `sg' capability is a numeric capability whose presence indicates
-that the terminal uses magic cookies for appearance modes.  Its value is
-the number of character positions that a magic cookie occupies.  Usually
-the cookie occupies one or more character positions on the screen, and
-these character positions are displayed as blank, but in some terminals
-the cookie has zero width.
-
-   The `sg' capability describes both the magic cookie to turn standout
-on and the cookie to turn it off.  This makes the assumption that both
-kinds of cookie have the same width on the screen.  If that is not true,
-the narrower cookie must be "widened" with spaces until it has the same
-width as the other.
-
-   On some magic cookie terminals, each line always starts with normal
-display; in other words, the scope of a magic cookie never extends over
-more than one line.  But on other terminals, one magic cookie affects
-all the lines below it unless explicitly canceled.  Termcap does not
-define any way to distinguish these two ways magic cookies can work.
-To be safe, it is best to put a cookie at the beginning of each line.
-
-   On some per-character terminals, standout mode or other appearance
-modes may be canceled by moving the cursor.  On others, moving the
-cursor has no effect on the state of the appearance modes.  The latter
-class of terminals are given the flag capability `ms' ("can move in
-standout").  All programs that might have occasion to move the cursor
-while appearance modes are turned on must check for this flag; if it is
-not present, they should reset appearance modes to normal before doing
-cursor motion.
-
-   A program that has turned on only standout mode should use `se' to
-reset the standout mode to normal.  A program that has turned on only
-alternate character set mode should use `ae' to return it to normal.
-If it is possible that any other appearance modes are turned on, use the
-`me' capability to return them to normal.
-
-   Note that the commands to turn on one appearance mode, including `so'
-and `mb' ... `mr', if used while some other appearance modes are turned
-on, may combine the two modes on some terminals but may turn off the
-mode previously enabled on other terminals.  This is because some
-terminals do not have a command to set or clear one appearance mode
-without changing the others.  Programs should not attempt to use
-appearance modes in combination except with `sa', and when switching
-from one single mode to another should always turn off the previously
-enabled mode and then turn on the new desired mode.
-
-   On some old terminals, the `so' and `se' commands may be the same
-command, which has the effect of turning standout on if it is off, or
-off it is on.  It is therefore risky for a program to output extra `se'
-commands for good measure.  Fortunately, all these terminals are
-obsolete.
-
-   Programs that update displays in which standout-text may be replaced
-with non-standout text must check for the `xs' flag.  In a per-character
-terminal, this flag says that the only way to remove standout once
-written is to clear that portion of the line with the `ce' string or
-something even more powerful (*note Clearing::.); just writing new
-characters at those screen positions will not change the modes in
-effect there.  In a magic cookie terminal, `xs' says that the only way
-to remove a cookie is to clear a portion of the line that includes the
-cookie; writing a different cookie at the same position does not work.
-
-   Such programs must also check for the `xt' flag, which means that the
-terminal is a Teleray 1061.  On this terminal it is impossible to
-position the cursor at the front of a magic cookie, so the only two
-ways to remove a cookie are (1) to delete the line it is on or (2) to
-position the cursor at least one character before it (possibly on a
-previous line) and output the `se' string, which on these terminals
-finds and removes the next `so' magic cookie on the screen.  (It may
-also be possible to remove a cookie which is not at the beginning of a
-line by clearing that line.)  The `xt' capability also has implications
-for the use of tab characters, but in that regard it is obsolete (*Note
-Cursor Motion::).
-
-`so'
-     String of commands to enter standout mode.
-
-`se'
-     String of commands to leave standout mode.
-
-`sg'
-     Numeric capability, the width on the screen of the magic cookie.
-     This capability is absent in terminals that record appearance modes
-     character by character.
-
-`ms'
-     Flag whose presence means that it is safe to move the cursor while
-     the appearance modes are not in the normal state.  If this flag is
-     absent, programs should always reset the appearance modes to
-     normal before moving the cursor.
-
-`xs'
-     Flag whose presence means that the only way to reset appearance
-     modes already on the screen is to clear to end of line.  On a
-     per-character terminal, you must clear the area where the modes
-     are set.  On a magic cookie terminal, you must clear an area
-     containing the cookie.  See the discussion above.
-
-`xt'
-     Flag whose presence means that the cursor cannot be positioned
-     right in front of a magic cookie, and that `se' is a command to
-     delete the next magic cookie following the cursor.  See discussion
-     above.
-
-`mb'
-     String of commands to enter blinking mode.
-
-`md'
-     String of commands to enter double-bright mode.
-
-`mh'
-     String of commands to enter half-bright mode.
-
-`mk'
-     String of commands to enter invisible mode.
-
-`mp'
-     String of commands to enter protected mode.
-
-`mr'
-     String of commands to enter reverse-video mode.
-
-`me'
-     String of commands to turn off all appearance modes, including
-     standout mode and underline mode.  On some terminals it also turns
-     off alternate character set mode; on others, it may not.  This
-     capability must be present if any of `mb' ... `mr' is present.
-
-`as'
-     String of commands to turn on alternate character set mode.  This
-     mode assigns some or all graphic characters an alternate picture
-     on the screen.  There is no standard as to what the alternate
-     pictures look like.
-
-`ae'
-     String of commands to turn off alternate character set mode.
-
-`sa'
-     String of commands to turn on an arbitrary combination of
-     appearance modes.  It accepts 9 parameters, each of which controls
-     a particular kind of appearance mode.  A parameter should be 1 to
-     turn its appearance mode on, or zero to turn that mode off.  Most
-     terminals do not support the `sa' capability, even among those
-     that do have various appearance modes.
-
-     The nine parameters are, in order, STANDOUT, UNDERLINE, REVERSE,
-     BLINK, HALF-BRIGHT, DOUBLE-BRIGHT, BLANK, PROTECT, ALT CHAR SET.
-
-\1f
-File: termcap.info,  Node: Underlining,  Next: Cursor Visibility,  Prev: Standout,  Up: Capabilities
-
-Underlining
-===========
-
-   Underlining on most terminals is a kind of appearance mode, much like
-standout mode.  Therefore, it may be implemented using magic cookies or
-as a flag in the terminal whose current state affects each character
-that is output.  *Note Standout::, for a full explanation.
-
-   The `ug' capability is a numeric capability whose presence indicates
-that the terminal uses magic cookies for underlining.  Its value is the
-number of character positions that a magic cookie for underlining
-occupies; it is used for underlining just as `sg' is used for standout.
-Aside from the simplest applications, it is impossible to use
-underlining correctly without paying attention to the value of `ug'.
-
-`us'
-     String of commands to turn on underline mode or to output a magic
-     cookie to start underlining.
-
-`ue'
-     String of commands to turn off underline mode or to output a magic
-     cookie to stop underlining.
-
-`ug'
-     Width of magic cookie that represents a change of underline mode;
-     or missing, if the terminal does not use a magic cookie for this.
-
-`ms'
-     Flag whose presence means that it is safe to move the cursor while
-     the appearance modes are not in the normal state.  Underlining is
-     an appearance mode.  If this flag is absent, programs should
-     always turn off underlining before moving the cursor.
-
-   There are two other, older ways of doing underlining: there can be a
-command to underline a single character, or the output of `_', the
-ASCII underscore character, as an overstrike could cause a character to
-be underlined.  New programs need not bother to handle these
-capabilities unless the author cares strongly about the obscure
-terminals which support them.  However, terminal descriptions should
-provide these capabilities when appropriate.
-
-`uc'
-     String of commands to underline the character under the cursor, and
-     move the cursor right.
-
-`ul'
-     Flag whose presence means that the terminal can underline by
-     overstriking an underscore character (`_'); some terminals can do
-     this even though they do not support overstriking in general.  An
-     implication of this flag is that when outputting new text to
-     overwrite old text, underscore characters must be treated
-     specially lest they underline the old text instead.
-
-\1f
-File: termcap.info,  Node: Cursor Visibility,  Next: Bell,  Prev: Underlining,  Up: Capabilities
-
-Cursor Visibility
-=================
-
-   Some terminals have the ability to make the cursor invisible, or to
-enhance it.  Enhancing the cursor is often done by programs that plan
-to use the cursor to indicate to the user a position of interest that
-may be anywhere on the screen--for example, the Emacs editor enhances
-the cursor on entry.  Such programs should always restore the cursor to
-normal on exit.
-
-`vs'
-     String of commands to enhance the cursor.
-
-`vi'
-     String of commands to make the cursor invisible.
-
-`ve'
-     String of commands to return the cursor to normal.
-
-   If you define either `vs' or `vi', you must also define `ve'.
-
-\1f
-File: termcap.info,  Node: Bell,  Next: Keypad,  Prev: Cursor Visibility,  Up: Capabilities
-
-Bell
-====
-
-   Here we describe commands to make the terminal ask for the user to
-pay attention to it.
-
-`bl'
-     String of commands to cause the terminal to make an audible sound.
-     If this capability is absent, the terminal has no way to make a
-     suitable sound.
-
-`vb'
-     String of commands to cause the screen to flash to attract
-     attention ("visible bell").  If this capability is absent, the
-     terminal has no way to do such a thing.
-
-\1f
-File: termcap.info,  Node: Keypad,  Next: Meta Key,  Prev: Bell,  Up: Capabilities
-
-Keypad and Function Keys
-========================
-
-   Many terminals have arrow and function keys that transmit specific
-character sequences to the computer.  Since the precise sequences used
-depend on the terminal, termcap defines capabilities used to say what
-the sequences are.  Unlike most termcap string-valued capabilities,
-these are not strings of commands to be sent to the terminal, rather
-strings that are received from the terminal.
-
-   Programs that expect to use keypad keys should check, initially, for
-a `ks' capability and send it, to make the keypad actually transmit.
-Such programs should also send the `ke' string when exiting.
-
-`ks'
-     String of commands to make the keypad keys transmit.  If this
-     capability is not provided, but the others in this section are,
-     programs may assume that the keypad keys always transmit.
-
-`ke'
-     String of commands to make the keypad keys work locally.  This
-     capability is provided only if `ks' is.
-
-`kl'
-     String of input characters sent by typing the left-arrow key.  If
-     this capability is missing, you cannot expect the terminal to have
-     a left-arrow key that transmits anything to the computer.
-
-`kr'
-     String of input characters sent by typing the right-arrow key.
-
-`ku'
-     String of input characters sent by typing the up-arrow key.
-
-`kd'
-     String of input characters sent by typing the down-arrow key.
-
-`kh'
-     String of input characters sent by typing the "home-position" key.
-
-`K1' ... `K5'
-     Strings of input characters sent by the five other keys in a 3-by-3
-     array that includes the arrow keys, if the keyboard has such a
-     3-by-3 array.  Note that one of these keys may be the
-     "home-position" key, in which case one of these capabilities will
-     have the same value as the `kh' key.
-
-`k0'
-     String of input characters sent by function key 10 (or 0, if the
-     terminal has one labeled 0).
-
-`k1' ... `k9'
-     Strings of input characters sent by function keys 1 through 9,
-     provided for those function keys that exist.
-
-`kn'
-     Number: the number of numbered function keys, if there are more
-     than 10.
-
-`l0' ... `l9'
-     Strings which are the labels appearing on the keyboard on the keys
-     described by the capabilities `k0' ... `l9'.  These capabilities
-     should be left undefined if the labels are `f0' or `f10' and `f1'
-     ... `f9'.
-
-`kH'
-     String of input characters sent by the "home down" key, if there is
-     one.
-
-`kb'
-     String of input characters sent by the "backspace" key, if there is
-     one.
-
-`ka'
-     String of input characters sent by the "clear all tabs" key, if
-     there is one.
-
-`kt'
-     String of input characters sent by the "clear tab stop this column"
-     key, if there is one.
-
-`kC'
-     String of input characters sent by the "clear screen" key, if
-     there is one.
-
-`kD'
-     String of input characters sent by the "delete character" key, if
-     there is one.
-
-`kL'
-     String of input characters sent by the "delete line" key, if there
-     is one.
-
-`kM'
-     String of input characters sent by the "exit insert mode" key, if
-     there is one.
-
-`kE'
-     String of input characters sent by the "clear to end of line" key,
-     if there is one.
-
-`kS'
-     String of input characters sent by the "clear to end of screen"
-     key, if there is one.
-
-`kI'
-     String of input characters sent by the "insert character" or "enter
-     insert mode" key, if there is one.
-
-`kA'
-     String of input characters sent by the "insert line" key, if there
-     is one.
-
-`kN'
-     String of input characters sent by the "next page" key, if there is
-     one.
-
-`kP'
-     String of input characters sent by the "previous page" key, if
-     there is one.
-
-`kF'
-     String of input characters sent by the "scroll forward" key, if
-     there is one.
-
-`kR'
-     String of input characters sent by the "scroll reverse" key, if
-     there is one.
-
-`kT'
-     String of input characters sent by the "set tab stop in this
-     column" key, if there is one.
-
-`ko'
-     String listing the other function keys the terminal has.  This is a
-     very obsolete way of describing the same information found in the
-     `kH' ... `kT' keys.  The string contains a list of two-character
-     termcap capability names, separated by commas.  The meaning is
-     that for each capability name listed, the terminal has a key which
-     sends the string which is the value of that capability.  For
-     example, the value `:ko=cl,ll,sf,sr:' says that the terminal has
-     four function keys which mean "clear screen", "home down", "scroll
-     forward" and "scroll reverse".
-
-\1f
-File: termcap.info,  Node: Meta Key,  Next: Initialization,  Prev: Keypad,  Up: Capabilities
-
-Meta Key
-========
-
-   A Meta key is a key on the keyboard that modifies each character you
-type by controlling the 0200 bit.  This bit is on if and only if the
-Meta key is held down when the character is typed.  Characters typed
-using the Meta key are called Meta characters.  Emacs uses Meta
-characters as editing commands.
-
-`km'
-     Flag whose presence means that the terminal has a Meta key.
-
-`mm'
-     String of commands to enable the functioning of the Meta key.
-
-`mo'
-     String of commands to disable the functioning of the Meta key.
-
-   If the terminal has `km' but does not have `mm' and `mo', it means
-that the Meta key always functions.  If it has `mm' and `mo', it means
-that the Meta key can be turned on or off.  Send the `mm' string to
-turn it on, and the `mo' string to turn it off.  I do not know why one
-would ever not want it to be on.
-
-\1f
-File: termcap.info,  Node: Initialization,  Next: Pad Specs,  Prev: Meta Key,  Up: Capabilities
-
-Initialization
-==============
-
-`ti'
-     String of commands to put the terminal into whatever special modes
-     are needed or appropriate for programs that move the cursor
-     nonsequentially around the screen.  Programs that use termcap to do
-     full-screen display should output this string when they start up.
-
-`te'
-     String of commands to undo what is done by the `ti' string.
-     Programs that output the `ti' string on entry should output this
-     string when they exit.
-
-`is'
-     String of commands to initialize the terminal for each login
-     session.
-
-`if'
-     String which is the name of a file containing the string of
-     commands to initialize the terminal for each session of use.
-     Normally `is' and `if' are not both used.
-
-`i1'
-`i3'
-     Two more strings of commands to initialize the terminal for each
-     login session.  The `i1' string (if defined) is output before `is'
-     or `if', and the `i3' string (if defined) is output after.
-
-     The reason for having three separate initialization strings is to
-     make it easier to define a group of related terminal types with
-     slightly different initializations.  Define two or three of the
-     strings in the basic type; then the other types can override one
-     or two of the strings.
-
-`rs'
-     String of commands to reset the terminal from any strange mode it
-     may be in.  Normally this includes the `is' string (or other
-     commands with the same effects) and more.  What would go in the
-     `rs' string but not in the `is' string are annoying or slow
-     commands to bring the terminal back from strange modes that nobody
-     would normally use.
-
-`it'
-     Numeric value, the initial spacing between hardware tab stop
-     columns when the terminal is powered up.  Programs to initialize
-     the terminal can use this to decide whether there is a need to set
-     the tab stops.  If the initial width is 8, well and good; if it is
-     not 8, then the tab stops should be set; if they cannot be set,
-     the kernel is told to convert tabs to spaces, and other programs
-     will observe this and do likewise.
-
-`ct'
-     String of commands to clear all tab stops.
-
-`st'
-     String of commands to set tab stop at current cursor column on all
-     lines.
-
-`NF'
-     Flag whose presence means that the terminal does not support
-     XON/XOFF flow control.  Programs should not send XON (`C-q') or
-     XOFF (`C-s') characters to the terminal.
-
-\1f
-File: termcap.info,  Node: Pad Specs,  Next: Status Line,  Prev: Initialization,  Up: Capabilities
-
-Padding Capabilities
-====================
-
-   There are two terminal capabilities that exist just to explain the
-proper way to obey the padding specifications in all the command string
-capabilities.  One, `pc', must be obeyed by all termcap-using programs.
-
-`pb'
-     Numeric value, the lowest baud rate at which padding is actually
-     needed.  Programs may check this and refrain from doing any
-     padding at lower speeds.
-
-`pc'
-     String of commands for padding.  The first character of this
-     string is to be used as the pad character, instead of using null
-     characters for padding.  If `pc' is not provided, use null
-     characters.  Every program that uses termcap must look up this
-     capability and use it to set the variable `PC' that is used by
-     `tputs'.  *Note Padding::.
-
-   Some termcap capabilities exist just to specify the amount of
-padding that the kernel should give to cursor motion commands used in
-ordinary sequential output.
-
-`dC'
-     Numeric value, the number of msec of padding needed for the
-     carriage-return character.
-
-`dN'
-     Numeric value, the number of msec of padding needed for the newline
-     (linefeed) character.
-
-`dB'
-     Numeric value, the number of msec of padding needed for the
-     backspace character.
-
-`dF'
-     Numeric value, the number of msec of padding needed for the
-     formfeed character.
-
-`dT'
-     Numeric value, the number of msec of padding needed for the tab
-     character.
-
-   In some systems, the kernel uses the above capabilities; in other
-systems, the kernel uses the paddings specified in the string
-capabilities `cr', `sf', `le', `ff' and `ta'.  Descriptions of
-terminals which require such padding should contain the `dC' ...  `dT'
-capabilities and also specify the appropriate padding in the
-corresponding string capabilities.  Since no modern terminals require
-padding for ordinary sequential output, you probably won't need to do
-either of these things.
-
-\1f
-File: termcap.info,  Node: Status Line,  Next: Half-Line,  Prev: Pad Specs,  Up: Capabilities
-
-Status Line
-===========
-
-   A "status line" is a line on the terminal that is not used for
-ordinary display output but instead used for a special message.  The
-intended use is for a continuously updated description of what the
-user's program is doing, and that is where the name "status line" comes
-from, but in fact it could be used for anything.  The distinguishing
-characteristic of a status line is that ordinary output to the terminal
-does not affect it; it changes only if the special status line commands
-of this section are used.
-
-`hs'
-     Flag whose presence means that the terminal has a status line.  If
-     a terminal description specifies that there is a status line, it
-     must provide the `ts' and `fs' capabilities.
-
-`ts'
-     String of commands to move the terminal cursor into the status
-     line.  Usually these commands must specifically record the old
-     cursor position for the sake of the `fs' string.
-
-`fs'
-     String of commands to move the cursor back from the status line to
-     its previous position (outside the status line).
-
-`es'
-     Flag whose presence means that other display commands work while
-     writing the status line.  In other words, one can clear parts of
-     it, insert or delete characters, move the cursor within it using
-     `ch' if there is a `ch' capability, enter and leave standout mode,
-     and so on.
-
-`ds'
-     String of commands to disable the display of the status line.  This
-     may be absent, if there is no way to disable the status line
-     display.
-
-`ws'
-     Numeric value, the width of the status line.  If this capability is
-     absent in a terminal that has a status line, it means the status
-     line is the same width as the other lines.
-
-     Note that the value of `ws' is sometimes as small as 8.
-
-\1f
-File: termcap.info,  Node: Half-Line,  Next: Printer,  Prev: Status Line,  Up: Capabilities
-
-Half-Line Motion
-================
-
-   Some terminals have commands for moving the cursor vertically by
-half-lines, useful for outputting subscripts and superscripts.  Mostly
-it is hardcopy terminals that have such features.
-
-`hu'
-     String of commands to move the cursor up half a line.  If the
-     terminal is a display, it is your responsibility to avoid moving
-     up past the top line; however, most likely the terminal that
-     supports this is a hardcopy terminal and there is nothing to be
-     concerned about.
-
-`hd'
-     String of commands to move the cursor down half a line.  If the
-     terminal is a display, it is your responsibility to avoid moving
-     down past the bottom line, etc.
-
-\1f
-File: termcap.info,  Node: Printer,  Prev: Half-Line,  Up: Capabilities
-
-Controlling Printers Attached to Terminals
-==========================================
-
-   Some terminals have attached hardcopy printer ports.  They may be
-able to copy the screen contents to the printer; they may also be able
-to redirect output to the printer.  Termcap does not have anything to
-tell the program whether the redirected output appears also on the
-screen; it does on some terminals but not all.
-
-`ps'
-     String of commands to cause the contents of the screen to be
-     printed.  If it is absent, the screen contents cannot be printed.
-
-`po'
-     String of commands to redirect further output to the printer.
-
-`pf'
-     String of commands to terminate redirection of output to the
-     printer.  This capability must be present in the description if
-     `po' is.
-
-`pO'
-     String of commands to redirect output to the printer for next N
-     characters of output, regardless of what they are.  Redirection
-     will end automatically after N characters of further output.  Until
-     then, nothing that is output can end redirection, not even the
-     `pf' string if there is one.  The number N should not be more than
-     255.
-
-     One use of this capability is to send non-text byte sequences
-     (such as bit-maps) to the printer.
-
-   Most terminals with printers do not support all of `ps', `po' and
-`pO'; any one or two of them may be supported.  To make a program that
-can send output to all kinds of printers, it is necessary to check for
-all three of these capabilities, choose the most convenient of the ones
-that are provided, and use it in its own appropriate fashion.
-
-\1f
-File: termcap.info,  Node: Summary,  Next: Var Index,  Prev: Capabilities,  Up: Top
-
-Summary of Capability Names
-***************************
-
-   Here are all the terminal capability names in alphabetical order
-with a brief description of each.  For cross references to their
-definitions, see the index of capability names (*note Cap Index::.).
-
-`ae'
-     String to turn off alternate character set mode.
-
-`al'
-     String to insert a blank line before the cursor.
-
-`AL'
-     String to insert N blank lines before the cursor.
-
-`am'
-     Flag: output to last column wraps cursor to next line.
-
-`as'
-     String to turn on alternate character set mode.like.
-
-`bc'
-     Very obsolete alternative name for the `le' capability.
-
-`bl'
-     String to sound the bell.
-
-`bs'
-     Obsolete flag: ASCII backspace may be used for leftward motion.
-
-`bt'
-     String to move the cursor left to the previous hardware tab stop
-     column.
-
-`bw'
-     Flag: `le' at left margin wraps to end of previous line.
-
-`CC'
-     String to change terminal's command character.
-
-`cd'
-     String to clear the line the cursor is on, and following lines.
-
-`ce'
-     String to clear from the cursor to the end of the line.
-
-`ch'
-     String to position the cursor at column C in the same line.
-
-`cl'
-     String to clear the entire screen and put cursor at upper left
-     corner.
-
-`cm'
-     String to position the cursor at line L, column C.
-
-`CM'
-     String to position the cursor at line L, column C, relative to
-     display memory.
-
-`co'
-     Number: width of the screen.
-
-`cr'
-     String to move cursor sideways to left margin.
-
-`cs'
-     String to set the scroll region.
-
-`cS'
-     Alternate form of string to set the scroll region.
-
-`ct'
-     String to clear all tab stops.
-
-`cv'
-     String to position the cursor at line L in the same column.
-
-`da'
-     Flag: data scrolled off top of screen may be scrolled back.
-
-`db'
-     Flag: data scrolled off bottom of screen may be scrolled back.
-
-`dB'
-     Obsolete number: msec of padding needed for the backspace
-     character.
-
-`dc'
-     String to delete one character position at the cursor.
-
-`dC'
-     Obsolete number: msec of padding needed for the carriage-return
-     character.
-
-`DC'
-     String to delete N characters starting at the cursor.
-
-`dF'
-     Obsolete number: msec of padding needed for the formfeed character.
-
-`dl'
-     String to delete the line the cursor is on.
-
-`DL'
-     String to delete N lines starting with the cursor's line.
-
-`dm'
-     String to enter delete mode.
-
-`dN'
-     Obsolete number: msec of padding needed for the newline character.
-
-`do'
-     String to move the cursor vertically down one line.
-
-`DO'
-     String to move cursor vertically down N lines.
-
-`ds'
-     String to disable the display of the status line.
-
-`dT'
-     Obsolete number: msec of padding needed for the tab character.
-
-`ec'
-     String of commands to clear N characters at cursor.
-
-`ed'
-     String to exit delete mode.
-
-`ei'
-     String to leave insert mode.
-
-`eo'
-     Flag: output of a space can erase an overstrike.
-
-`es'
-     Flag: other display commands work while writing the status line.
-
-`ff'
-     String to advance to the next page, for a hardcopy terminal.
-
-`fs'
-     String to move the cursor back from the status line to its
-     previous position (outside the status line).
-
-`gn'
-     Flag: this terminal type is generic, not real.
-
-`hc'
-     Flag: hardcopy terminal.
-
-`hd'
-     String to move the cursor down half a line.
-
-`ho'
-     String to position cursor at upper left corner.
-
-`hs'
-     Flag: the terminal has a status line.
-
-`hu'
-     String to move the cursor up half a line.
-
-`hz'
-     Flag: terminal cannot accept `~' as output.
-
-`i1'
-     String to initialize the terminal for each login session.
-
-`i3'
-     String to initialize the terminal for each login session.
-
-`ic'
-     String to insert one character position at the cursor.
-
-`IC'
-     String to insert N character positions at the cursor.
-
-`if'
-     String naming a file of commands to initialize the terminal.
-
-`im'
-     String to enter insert mode.
-
-`in'
-     Flag: outputting a space is different from moving over empty
-     positions.
-
-`ip'
-     String to output following an inserted character in insert mode.
-
-`is'
-     String to initialize the terminal for each login session.
-
-`it'
-     Number: initial spacing between hardware tab stop columns.
-
-`k0'
-     String of input sent by function key 0 or 10.
-
-`k1 ... k9'
-     Strings of input sent by function keys 1 through 9.
-
-`K1 ... K5'
-     Strings sent by the five other keys in 3-by-3 array with arrows.
-
-`ka'
-     String of input sent by the "clear all tabs" key.
-
-`kA'
-     String of input sent by the "insert line" key.
-
-`kb'
-     String of input sent by the "backspace" key.
-
-`kC'
-     String of input sent by the "clear screen" key.
-
-`kd'
-     String of input sent by typing the down-arrow key.
-
-`kD'
-     String of input sent by the "delete character" key.
-
-`ke'
-     String to make the function keys work locally.
-
-`kE'
-     String of input sent by the "clear to end of line" key.
-
-`kF'
-     String of input sent by the "scroll forward" key.
-
-`kh'
-     String of input sent by typing the "home-position" key.
-
-`kH'
-     String of input sent by the "home down" key.
-
-`kI'
-     String of input sent by the "insert character" or "enter insert
-     mode" key.
-
-`kl'
-     String of input sent by typing the left-arrow key.
-
-`kL'
-     String of input sent by the "delete line" key.
-
-`km'
-     Flag: the terminal has a Meta key.
-
-`kM'
-     String of input sent by the "exit insert mode" key.
-
-`kn'
-     Numeric value, the number of numbered function keys.
-
-`kN'
-     String of input sent by the "next page" key.
-
-`ko'
-     Very obsolete string listing the terminal's named function keys.
-
-`kP'
-     String of input sent by the "previous page" key.
-
-`kr'
-     String of input sent by typing the right-arrow key.
-
-`kR'
-     String of input sent by the "scroll reverse" key.
-
-`ks'
-     String to make the function keys transmit.
-
-`kS'
-     String of input sent by the "clear to end of screen" key.
-
-`kt'
-     String of input sent by the "clear tab stop this column" key.
-
-`kT'
-     String of input sent by the "set tab stop in this column" key.
-
-`ku'
-     String of input sent by typing the up-arrow key.
-
-`l0'
-     String on keyboard labelling function key 0 or 10.
-
-`l1 ... l9'
-     Strings on keyboard labelling function keys 1 through 9.
-
-`le'
-     String to move the cursor left one column.
-
-`LE'
-     String to move cursor left N columns.
-
-`li'
-     Number: height of the screen.
-
-`ll'
-     String to position cursor at lower left corner.
-
-`lm'
-     Number: lines of display memory.
-
-`LP'
-     Flag: writing to last column of last line will not scroll.
-
-`mb'
-     String to enter blinking mode.
-
-`md'
-     String to enter double-bright mode.
-
-`me'
-     String to turn off all appearance modes
-
-`mh'
-     String to enter half-bright mode.
-
-`mi'
-     Flag: cursor motion in insert mode is safe.
-
-`mk'
-     String to enter invisible mode.
-
-`mm'
-     String to enable the functioning of the Meta key.
-
-`mo'
-     String to disable the functioning of the Meta key.
-
-`mp'
-     String to enter protected mode.
-
-`mr'
-     String to enter reverse-video mode.
-
-`ms'
-     Flag: cursor motion in standout mode is safe.
-
-`nc'
-     Obsolete flag: do not use ASCII carriage-return on this terminal.
-
-`nd'
-     String to move the cursor right one column.
-
-`NF'
-     Flag: do not use XON/XOFF flow control.
-
-`nl'
-     Obsolete alternative name for the `do' and `sf' capabilities.
-
-`ns'
-     Flag: the terminal does not normally scroll for sequential output.
-
-`nw'
-     String to move to start of next line, possibly clearing rest of
-     old line.
-
-`os'
-     Flag: terminal can overstrike.
-
-`pb'
-     Number: the lowest baud rate at which padding is actually needed.
-
-`pc'
-     String containing character for padding.
-
-`pf'
-     String to terminate redirection of output to the printer.
-
-`po'
-     String to redirect further output to the printer.
-
-`pO'
-     String to redirect N characters ofoutput to the printer.
-
-`ps'
-     String to print the screen on the attached printer.
-
-`rc'
-     String to move to last saved cursor position.
-
-`RI'
-     String to move cursor right N columns.
-
-`rp'
-     String to output character C repeated N times.
-
-`rs'
-     String to reset the terminal from any strange modes.
-
-`sa'
-     String to turn on an arbitrary combination of appearance modes.
-
-`sc'
-     String to save the current cursor position.
-
-`se'
-     String to leave standout mode.
-
-`sf'
-     String to scroll the screen one line up.
-
-`SF'
-     String to scroll the screen N lines up.
-
-`sg'
-     Number: width of magic standout cookie.  Absent if magic cookies
-     are not used.
-
-`so'
-     String to enter standout mode.
-
-`sr'
-     String to scroll the screen one line down.
-
-`SR'
-     String to scroll the screen N line down.
-
-`st'
-     String to set tab stop at current cursor column on all lines.
-     programs.
-
-`ta'
-     String to move the cursor right to the next hardware tab stop
-     column.
-
-`te'
-     String to return terminal to settings for sequential output.
-
-`ti'
-     String to initialize terminal for random cursor motion.
-
-`ts'
-     String to move the terminal cursor into the status line.
-
-`uc'
-     String to underline one character and move cursor right.
-
-`ue'
-     String to turn off underline mode
-
-`ug'
-     Number: width of underlining magic cookie.  Absent if underlining
-     doesn't use magic cookies.
-
-`ul'
-     Flag: underline by overstriking with an underscore.
-
-`up'
-     String to move the cursor vertically up one line.
-
-`UP'
-     String to move cursor vertically up N lines.
-
-`us'
-     String to turn on underline mode
-
-`vb'
-     String to make the screen flash.
-
-`ve'
-     String to return the cursor to normal.
-
-`vi'
-     String to make the cursor invisible.
-
-`vs'
-     String to enhance the cursor.
-
-`wi'
-     String to set the terminal output screen window.
-
-`ws'
-     Number: the width of the status line.
-
-`xb'
-     Flag: superbee terminal.
-
-`xn'
-     Flag: cursor wraps in a strange way.
-
-`xs'
-     Flag: clearing a line is the only way to clear the appearance
-     modes of positions in that line (or, only way to remove magic
-     cookies on that line).
-
-`xt'
-     Flag: Teleray 1061; several strange characteristics.
-
-\1f
-File: termcap.info,  Node: Var Index,  Next: Cap Index,  Prev: Summary,  Up: Top
-
-Variable and Function Index
-***************************
-
-* Menu:
-
-* BC:                                   tgoto.
-* ospeed:                               Output Padding.
-* PC:                                   Output Padding.
-* tgetent:                              Find.
-* tgetflag:                             Interrogate.
-* tgetnum:                              Interrogate.
-* tgetstr:                              Interrogate.
-* tgoto:                                tgoto.
-* tparam:                               tparam.
-* tputs:                                Output Padding.
-* UP:                                   tgoto.
-
diff --git a/lib/termcap/grot/termcap.info-4 b/lib/termcap/grot/termcap.info-4
deleted file mode 100644 (file)
index 4b8bf79..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-This is Info file ./termcap.info, produced by Makeinfo-1.55 from the
-input file ./termcap.texi.
-
-   This file documents the termcap library of the GNU system.
-
-   Copyright (C) 1988 Free Software Foundation, Inc.
-
-   Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-   Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-   Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-\1f
-File: termcap.info,  Node: Cap Index,  Next: Index,  Prev: Var Index,  Up: Top
-
-Capability Index
-****************
-
-* Menu:
-
-* ae:                                   Standout.
-* al:                                   Insdel Line.
-* AL:                                   Insdel Line.
-* am:                                   Wrapping.
-* as:                                   Standout.
-* bc:                                   Cursor Motion.
-* bl:                                   Bell.
-* bs:                                   Cursor Motion.
-* bt:                                   Cursor Motion.
-* bw:                                   Cursor Motion.
-* CC:                                   Basic.
-* cd:                                   Clearing.
-* ce:                                   Clearing.
-* ch:                                   Cursor Motion.
-* cl:                                   Clearing.
-* cm:                                   Cursor Motion.
-* CM:                                   Cursor Motion.
-* co:                                   Screen Size.
-* cr:                                   Cursor Motion.
-* cS:                                   Scrolling.
-* cs:                                   Scrolling.
-* ct:                                   Initialization.
-* cv:                                   Cursor Motion.
-* da:                                   Scrolling.
-* dB:                                   Pad Specs.
-* db:                                   Scrolling.
-* dC:                                   Pad Specs.
-* DC:                                   Insdel Char.
-* dc:                                   Insdel Char.
-* dF:                                   Pad Specs.
-* dl:                                   Insdel Line.
-* DL:                                   Insdel Line.
-* dm:                                   Insdel Char.
-* dN:                                   Pad Specs.
-* do:                                   Cursor Motion.
-* DO:                                   Cursor Motion.
-* ds:                                   Status Line.
-* dT:                                   Pad Specs.
-* ec:                                   Clearing.
-* ed:                                   Insdel Char.
-* ei:                                   Insdel Char.
-* eo:                                   Basic.
-* es:                                   Status Line.
-* ff:                                   Cursor Motion.
-* fs:                                   Status Line.
-* gn:                                   Basic.
-* hc:                                   Basic.
-* hd:                                   Half-Line.
-* ho:                                   Cursor Motion.
-* hs:                                   Status Line.
-* hu:                                   Half-Line.
-* hz:                                   Basic.
-* i1:                                   Initialization.
-* i3:                                   Initialization.
-* IC:                                   Insdel Char.
-* ic:                                   Insdel Char.
-* if:                                   Initialization.
-* im:                                   Insdel Char.
-* in:                                   Insdel Char.
-* ip:                                   Insdel Char.
-* is:                                   Initialization.
-* it:                                   Initialization.
-* K1...K5:                              Keypad.
-* k1...k9:                              Keypad.
-* kA...kT:                              Keypad.
-* ka...ku:                              Keypad.
-* km:                                   Meta Key.
-* l0...l9:                              Keypad.
-* le:                                   Cursor Motion.
-* LE:                                   Cursor Motion.
-* li:                                   Screen Size.
-* ll:                                   Cursor Motion.
-* lm:                                   Scrolling.
-* LP:                                   Wrapping.
-* mb:                                   Standout.
-* md:                                   Standout.
-* me:                                   Standout.
-* mh:                                   Standout.
-* mi:                                   Insdel Char.
-* mk:                                   Standout.
-* mm:                                   Meta Key.
-* mo:                                   Meta Key.
-* mp:                                   Standout.
-* mr:                                   Standout.
-* ms:                                   Standout.
-* ms:                                   Underlining.
-* nc:                                   Cursor Motion.
-* nd:                                   Cursor Motion.
-* NF:                                   Initialization.
-* nl:                                   Cursor Motion.
-* ns:                                   Scrolling.
-* nw:                                   Cursor Motion.
-* os:                                   Basic.
-* pb:                                   Pad Specs.
-* pc:                                   Pad Specs.
-* pf:                                   Printer.
-* pO:                                   Printer.
-* po:                                   Printer.
-* ps:                                   Printer.
-* rc:                                   Cursor Motion.
-* RI:                                   Cursor Motion.
-* rp:                                   Basic.
-* rs:                                   Initialization.
-* sa:                                   Standout.
-* sc:                                   Cursor Motion.
-* se:                                   Standout.
-* SF:                                   Scrolling.
-* sf:                                   Scrolling.
-* sg:                                   Standout.
-* so:                                   Standout.
-* SR:                                   Scrolling.
-* sr:                                   Scrolling.
-* st:                                   Initialization.
-* ta:                                   Cursor Motion.
-* te:                                   Initialization.
-* ti:                                   Initialization.
-* ts:                                   Status Line.
-* uc:                                   Underlining.
-* ue:                                   Underlining.
-* ug:                                   Underlining.
-* ul:                                   Underlining.
-* up:                                   Cursor Motion.
-* UP:                                   Cursor Motion.
-* us:                                   Underlining.
-* vb:                                   Bell.
-* ve:                                   Cursor Visibility.
-* vi:                                   Cursor Visibility.
-* vs:                                   Cursor Visibility.
-* wi:                                   Windows.
-* ws:                                   Status Line.
-* xb:                                   Basic.
-* xn:                                   Wrapping.
-* xs:                                   Standout.
-* xt:                                   Cursor Motion.
-* xt:                                   Standout.
-
-\1f
-File: termcap.info,  Node: Index,  Prev: Cap Index,  Up: Top
-
-Concept Index
-*************
-
-* Menu:
-
-* %:                                    Encode Parameters.
-* appearance modes:                     Standout.
-* bell:                                 Bell.
-* clearing the screen:                  Clearing.
-* command character:                    Basic.
-* cursor motion:                        Cursor Motion.
-* delete character:                     Insdel Char.
-* delete line:                          Insdel Line.
-* delete mode:                          Insdel Char.
-* description format:                   Format.
-* erasing:                              Clearing.
-* generic terminal type:                Basic.
-* home position:                        Cursor Motion.
-* inheritance:                          Inheriting.
-* initialization:                       Initialization.
-* insert character:                     Insdel Char.
-* insert line:                          Insdel Line.
-* insert mode:                          Insdel Char.
-* line speed:                           Output Padding.
-* magic cookie:                         Standout.
-* meta key:                             Meta Key.
-* names of terminal types:              Naming.
-* overstrike:                           Basic.
-* padding:                              Pad Specs.
-* padding:                              Padding.
-* parameters:                           Parameters.
-* printer:                              Printer.
-* repeat output:                        Basic.
-* reset:                                Initialization.
-* screen size:                          Screen Size.
-* screen size:                          Naming.
-* screen size:                          Screen Size.
-* scrolling:                            Scrolling.
-* standout:                             Standout.
-* status line:                          Status Line.
-* Superbee:                             Basic.
-* tab stops:                            Initialization.
-* termcap:                              Introduction.
-* terminal flags (kernel):              Initialize.
-* underlining:                          Underlining.
-* visibility:                           Cursor Visibility.
-* visible bell:                         Bell.
-* window:                               Windows.
-* wrapping:                             Wrapping.
-* wrapping:                             Naming.
-
-
diff --git a/lib/termcap/grot/termcap.src b/lib/termcap/grot/termcap.src
deleted file mode 100644 (file)
index e214fcc..0000000
+++ /dev/null
@@ -1,9888 +0,0 @@
-####### TERMINAL TYPE DESCRIPTIONS SOURCE FILE
-#
-#      Version 9.8.1
-#      termcap syntax
-#
-#      Eric S. Raymond         (current maintainer)
-#      John Kunze, Berkeley
-#      Craig Leres, Berkeley
-#
-# Please e-mail changes to terminfo@ccil.org.  The old termcap@berkeley.edu
-# address is no longer valid.
-#
-# PURPOSE OF THIS FILE:
-#
-# This file describes the capabilities of various character-cell terminals,
-# as needed by software such as screen-oriented editors.
-#
-# Pointers to related resources (including the ncurses distribution) may
-# be found at <http://www.ccil.org/~esr/ncurses.html>.
-#
-# FILE FORMAT:
-#
-# The version you are looking at may be in any of three formats: master
-# (terminfo with OT capabilities), stock terminfo, or termcap.  You can tell
-# which by the format given in the header above.
-#
-# The master format is accepted and generated by the terminfo tools in the
-# ncurses suite; it differs from stock (System V-compatible) terminfo only
-# in that it admits a group of capabilities (prefixed `OT') equivalent to
-# various obsolete termcap capabilities.  You can, thus, convert from master
-# to stock terminfo simply by filtering with `sed "/OT[^,]*,/s///"'; but if
-# you have ncurses `tic -I' is nicer.
-#
-# The termcap version is generated automatically from the master version
-# using tic -C.  This filtering leaves in the OT capabilities under their
-# original termcap names.  All translated entries fit within the
-# 1023-byte string-table limit of archaic termcap libraries except where
-# explicitly noted below.
-#
-# For details on these formats, see terminfo(5) in the ncurses distribution,
-# and termcap(5) in the 4.4BSD Unix Programmer's Manual.  Be aware that 4.4BSD
-# curses has been declared obsolete by the caretakers of the 4.4BSD sources
-# as of June 1995; they are encouraging everyone to migrate to ncurses.
-#
-# Note: unlike some other distributed terminfo files (Novell Unix & SCO's),
-# no entry in this file has embedded comments.  This is so source translation
-# to termcap only has to carry over leading comments.  Also, no name field
-# contains embedded whitespace (such whitespace confuses rdist).
-#
-# Further note: older versions of this file were often installed with an editor
-# script (reorder) that moved the most common terminal types to the front of
-# the file.  This should no longer be necessary, as the file is now ordered
-# roughly by type frequency with ANSI/VT100 and other common types up front.
-#
-# CONTINUITY WITH HISTORICAL VERSIONS:
-#
-# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94.
-# Releases 9 and up are maintained by Eric Raymond as part of the ncurses
-# project.
-#
-# This file contains all the capability information present in John Kunze's
-# last version of the termcap master file, except as noted in the change 
-# comments at end of file.  Some information about very ancient obsolete
-# capabilities has been moved to comments.  Some all-numeric names of older
-# terminals have been retired.
-#
-# The 9.1.0 version of this file was translated from a syntax-corrected copy of
-# 8.3, then mechanically checked against 8.3 using Emacs Lisp code written for
-# the purpose.  Unless the ncurses tic implementation and the Lisp code were
-# making perfectly synchronized mistakes which I then failed to catch by
-# eyeball, the translation was correct and perfectly information-preserving.
-#
-# Some information has been merged in from terminfo files distributed by
-# USL and SCO (see COPYRIGHTS AND OTHER DELUSIONS below).  Much information
-# comes from vendors who maintain official terminfos for their hardware
-# (notably DEC and Wyse).
-#
-# A detailed change history is included at the end of this file.
-#
-# FILE ORGANIZATION:
-#
-# Comments in this file begin with # - they cannot appear in the middle
-# of a terminfo/termcap entry.  Individual capabilities are commented out by
-# placing a period between the colon and the capability name.
-#
-# Starting with version 9.0.0, the file is divided up into major sections
-# (headed by lines beginning with "########") and minor sections (beginning
-# with "####"); do
-#
-#      grep "^####" <file> | more
-#
-# to see a listing of section headings.  The intent of the divisions is
-# (a) to make it easier to find things, and (b) to order the database so
-# that important and frequently-encountered terminal types are near the
-# front (so that you'll get reasonable search efficiency even if you don't
-# use reorder).  Minor sections usually correspond to manufacturers or
-# standard terminal classes.  Parenthesized words following manufacturer
-# names are type prefixes or product line names used by that manufacturers.
-#
-# Finally, because this file is released in both terminfo and termcap formats,
-# most references to termcap names in comments are bracketed with colons (the
-# termcap separator) so they can be distinguished from terminfo capability
-# names.
-#
-# HOW TO READ THE ENTRIES:
-#
-# The first name in an entry is the canonical name for the model or
-# type, last entry is a verbose description.  Others are mnemonic synonyms for
-# the terminal.
-#
-# Terminal names look like <manufacturer> <model> - <modes/options>
-# The part to the left of the dash, if a dash is present, describes the
-# particular hardware of the terminal.  The part to the right may be used
-# for flags indicating special ROMs, extra memory, particular terminal modes,
-# or user preferences.
-#
-# All names should be in lower case, for consistency in typing.
-#
-# The following are conventionally used suffixes:
-#      mono    suppress color support
-#      rv      Terminal in reverse video mode (black on white)
-#      2p      Has two pages of memory.  Likewise 4p, 8p, etc.
-#      w       Wide - in 132 column mode.
-#      pp      Has a printer port which is used.
-#      na      No arrow keys - termcap ignores arrow keys which are
-#              actually there on the terminal, so the user can use
-#              the arrow keys locally.
-#      nam     No auto-margin - suppress am capability
-#      mc      Magic-cookie.  Some terminals (notably older Wyses) can
-#              only support one attribute without magic-cookie lossage.
-#              Their base entry is usually paired with another that
-#              uses magic cookies to support multiple attributes.
-#      vb      Use visible bell (flash) rather than beep.
-#
-# To easily test a new terminal description, put it in $HOME/.termcap
-# and programs will look there before looking in /etc/termcap.
-# You can also setenv TERMPATH to a list of full pathnames (separated
-# by spaces or colons) to be searched by tgetent() in the order listed.
-# The TERMCAP environment variable is usually set to the termcap
-# entry itself to avoid reading files when starting up a program.
-#
-# RELEASE 9 COMMENTS:
-#
-# To avoid search clashes, some older all-numeric names for terminals have
-# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621).
-# All primary names of terminals now have alphanumeric prefixes.
-#
-# Comments marked "esr" are mostly results of applying the termcap-compiler
-# code packaged with ncurses and contemplating the resulting error messages. 
-# In many cases, these indicated obvious fixes to syntax garbled by the
-# composers.  In a few cases, I was able to deduce corrected forms for garbled
-# capabilities by looking at context.  All the information in the original
-# entries is preserved in the comments.
-#
-# I changed :MT: to :km: (the 4.4BSD name) everywhere.  I commented out some
-# capabilities (EP, dF, dT, dV, kn, ko, ma, ml, mu, xr, xx) that are no longer
-# used by BSD curses.
-#
-# Entries derived from XENIX use a termcap-extension set that showed up in
-# several entries, notably those for scoansi, ibmpcx, lisa, trs16, fos, and
-# the altos terminals.  Its signature is the use of GS/GE as an as/ae pair.
-# This set of extensions and their translations are described in the extended
-# comment at the end of this file.
-#
-# There is a second, smaller set of extensions used by AT&T terminals and
-# also described in the trailing comment.
-#
-# Besides these and the terminals mentioned above, only the psterm variants,
-# zen50, wsiris and minitel had unknown capabilities that weren't obviously
-# garbled.
-#
-# INTERPRETATION OF USER CAPABILITIES
-#
-# The System V Release 4 and XPG4 terminfo format defines ten string
-# capabilities for use by applications, u0...u9.   In this file, we use
-# certain of these capabilities to describe functions which are not covered
-# by terminfo.  The mapping is as follows:
-#
-#      u9      terminal enquire string (equivalent to ANSI DA)
-#      u8      terminal answerback description
-#      u7      cursor position request (equivalent to VT100 DSR 6)
-#      u6      cursor position report (equivalent to ANSI CPR)
-#
-# The terminal enquire string u9 should elicit an answerback response
-# from the terminal.  Common values for u9 will be ^E (on older ASCII
-# terminals) or \E[c (on newer VT100/ANSI-compatible terminals).
-#
-# The cursor position request (u7) string should elicit a cursor position
-# report.  A typical value (for ANSI/VT100 terminals) is \E[6n.
-#
-# The terminal answerback description (u8) must consist of an expected
-# answerback string.  The string may contain the following scanf(3)-like
-# escapes:
-#
-#      %c      Accept any character
-#      %[...]  Accept any number of characters in the given set
-#
-# The cursor position report (u6) string must contain two scanf(3)-style 
-# %d format elements.  The first of these must correspond to the Y coordinate
-# and the second to the %d.  The typical CPR value is \E[%d;%dR (on VT100/
-# ANSI-compatible terminals).
-#
-# These capabilities are used by tac(1m), the terminfo action checker soon
-# to be distributed with ncurses.
-# 
-# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL:
-#
-# As the ANSI standard and variants take firmer hold, and as character-cell
-# terminals are increasingly replaced by X displays, much of this file
-# is becoming a historical document (this is part of the reason for the
-# new organization, which puts ANSI types, xterm, and vt100 up front in
-# confidence that this will catch 95% of new hardware).
-#
-# For the terminal types still alive, I'd like to have manufacturer's
-# contact data (Internet address and/or snail-mail + phone).
-#
-# I'm also interested in enriching the comments so that the latter portions of
-# the file do in fact become a potted history of VDT technology as seen by
-# UNIX hackers.  Ideally, I'd like the headers for each manufacturer to
-# include its live/dead/out-of-the-business status, and for as many
-# terminal types as possible to be tagged with information like years
-# of heaviest use, popularity, and interesting features.
-#
-# I'm especially interested in identifying the obscure entries listed under
-# `Manufacturer unknown' and `Utter unknowns', before the tribal wisdom 
-# about them gets lost.
-#
-# If you have been around long enough to contribute, please read the file
-# with this in mind and send me your annotations.
-#
-# COPYRIGHTS AND OTHER DELUSIONS
-#
-# The BSD ancestor of this file had a standard Regents of the University of
-# California copyright with dates from 1980 to 1993.
-#
-# Some information has been merged in from a terminfo file SCO distributes.
-# It has an obnoxious boilerplate copyright which I'm ignoring because they 
-# took so much of the content from the ancestral BSD versions of this file
-# and didn't attribute it, thereby violating the BSD Regents' copyright.
-#
-# Not that anyone should care.  However many valid functions copyrights may
-# serve, putting one on a termcap/terminfo file with hundreds of anonymous
-# contributors makes about as much sense as copyrighting a wall-full of
-# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous.
-#
-# This file deliberately has no copyright.  It belongs to no one and everyone.
-# If you claim you own it, you will merely succeed in looking like a fool. 
-# Use it as you like.  Use it at your own risk.  Copy and redistribute freely.
-# There are no guarantees anywhere.  Svaha!
-
-######## STANDARD AND SPECIAL TYPES
-#
-# This section describes terminal classes and maker brands that are still
-# quite common.
-#
-
-#### Specials
-#
-# Special "terminals".  These are used to label tty lines when you don't
-# know what kind of terminal is on it.  The characteristics of an unknown
-# terminal are the lowest common denominator - they look about like a ti 700.
-# The last one, "other", is like unknown but it allows an escape from software
-# that insists that a "real" unknown terminal is merely so far unspecified.
-#
-
-dumb:\
-       :am:\
-       :co#80:\
-       :bl=^G:cr=^M:do=^J:sf=^J:
-unknown:\
-       :gn:\
-       :tc=dumb:
-other|none of the above, but not exactly unknown:\
-       :am:gn:\
-       :co#80:\
-       :cl=^M^J:do=^J:ho=^M:
-
-arpanet|bussiplexer|dialup|ethernet|network|net|patch|plugboard|switch|network switch or dialup:\
-       :tc=unknown:
-lpr|printer|print|printing|line printer:\
-       :hc:os:\
-       :co#132:li#66:\
-       :bl=^G:cr=^M:do=^J:ff=^L:le=^H:sf=^J:
-
-#### ANSI terminals and terminal emulators
-#
-# See near the end of this file for details on ANSI conformance.
-# Don't mess with these entries!  Lots of other entries depend on them!
-#
-# This section lists entries in a least-capable to most-capable order.
-# if you're in doubt about what `ANSI' matches yours, try them in that
-# order and back off from the first that breaks.
-
-# (ansi: changed ":pt:" to ":it#8:" -- esr)
-ansi-mini|any ansi terminal with pessimistic assumptions:\
-       :am:bs:\
-       :co#80:it#8:li#24:\
-       :ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:do=\E[B:\
-       :ho=\E[H:le=\E[D:nd=\E[C:up=\E[A:
-
-# Color controls corresponding to the ANSI.SYS de-facto standard
-# (This is not a standalone entry)
-ansi-pc-color:\
-       :Co#8:NC#3:pa#64:\
-       :AB=\E[4%p1%dm:AF=\E[3%p1%dm:\
-       :..Sb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m:\
-       :..Sf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m:\
-       :op=\E[37;40m:
-
-# Procomm and some other ANSI emulations don't recognize all of the ANSI-
-# standard capabilities.  This entry deletes cuu, cuf, cud, cub, and vpa/hpa
-# capabilities, forcing curses to use repetitions of cuu1, cuf1, cud1 and cub1.
-# Also deleted ich and ich1, as QModem up to 5.03 doesn't recognize these.
-# Finally, we delete rep and ri, which seem to confuse many emulators.
-# On the other hand, we can count on these programs doing rmacs/smacs/sgr.
-# From: Eric S. Raymond <esr@snark.thyrsus.com> July 25 1995
-pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode):\
-       :am:bs:mi:ms:pt:\
-       :co#80:it#8:li#24:\
-       :ae=\E[10m:al=\E[L:as=\E[12m:bl=^G:bt=\E[Z:cd=\E[J:\
-       :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[2g:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ho=\E[H:kb=^H:kd=\E[B:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:\
-       :md=\E[1m:me=\E[0m:mk=\E[9m:mr=\E[7m:nd=\E[C:\
-       :..sa=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m:\
-       :se=\E[m:sf=^J:so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\E[A:\
-       :us=\E[4m:
-pcansi-mono25|ansi25|ibm-pc terminal programs with 25 lines (mono mode):\
-       :li#25:\
-       :tc=pcansi-mono:
-pcansi-mono33|ansi33|ibm-pc terminal programs with 33 lines (mono mode):\
-       :li#33:\
-       :tc=pcansi-mono:
-pcansi-mono43|ansi43|ibm-pc terminal programs with 43 lines (mono mode):\
-       :li#43:\
-       :tc=pcansi-mono:
-# The color versions.  All PC emulators do color...
-pcansi|ibm-pc terminal programs claiming to be ansi:\
-       :tc=ansi-pc-color:tc=pcansi-mono:
-pcansi-25|ansi25|ibm-pc terminal programs with 25 lines:\
-       :li#25:\
-       :tc=pcansi:
-pcansi-33|ansi33|ibm-pc terminal programs with 33 lines:\
-       :li#33:\
-       :tc=pcansi:
-pcansi-43|ansi43|ibm-pc terminal programs with 43 lines:\
-       :li#43:\
-       :tc=pcansi:
-
-# From: Eric S. Raymond <esr@snark.thyrsus.com> Feb 3 1995
-# ansi-mono -- full X.364 with ANSI.SYS-compatible attributes, no color.
-# Function-key mappings aren't in X3.64 but these are pretty standard.
-# If you want pound signs rather than dollars, replace `B' with `A'
-# in the s?ds capabilities.
-ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes:\
-       :5i:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[W:\
-       :F2=\E[X:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:\
-       :SR=\E[%dT:UP=\E[%dA:cb=\E[1K:ch=\E[%dG:ct=\E[2g:\
-       :cv=\E[%dd:ec=\E[%dX:ei=:im=:k1=\E[M:k2=\E[N:k3=\E[O:\
-       :k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:\
-       :k;=\E[V:kB=\E[Z:kI=\E[L:kb=^H:kd=\E[B:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:me=\E[0;10m:nw=\r\E[S:pf=\E[4i:\
-       :po=\E[5i:..rp=%p1%c\E[%p2%{1}%-%db:s0=\E(B:s1=\E)B:\
-       :s2=\E*B:s3=\E+B:\
-       :..sa=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m:\
-       :ta=\E[I:tc=pcansi:
-
-# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in
-# standard terminfo.  Assumes ANSI.SYS-compatible attributes and color
-# From: Eric S. Raymond <esr@snark.thyrsus.com> Feb 12 1995
-ansi|ansi/pc-term compatible with color:\
-       :u6=\E[%d;%dR:u7=\E[6n:..u8=\E[?%[;0123456789]c:\
-       :u9=\E[c:tc=ansi-pc-color:tc=ansi-mono:
-
-#
-# ANSI.SYS entries
-#
-# Cannot use :pt:, it does not work (why?).  :ho: seems required (why?). [gts]
-# Caution: 4.3 BSD tset does not pass li#25 to stty rows except during login?
-# :cl: clears attributes and sets wrap at margin before clearing the screen.
-# (ansi.sys: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
-# From: greg small <gts@populi.berkeley.edu>
-ansi.sys|ansisys|PC-DOS 3.1 ANSI.SYS:\
-       :am:bs:ms:\
-       :co#80:li#25:\
-       :ae=\E[10:as=\E[12:ce=\E[K:cl=\E[m\E[7h\E[2J:\
-       :cm=\E[%i%d;%dH:ho=\E[H:\
-       :is=U1 PC-DOS 3.1 ANSI.SYS 9-23-86\n\E[m\E[7h:kd=^J:\
-       :kh=^^:kl=^H:kr=^L:ku=^K:md=\E[1m:me=\E[0;10m:\
-       :mr=\E[7m:nd=\E[C:se=\E[m:so=\E[1m:ue=\E[m:up=\E[A:\
-       :us=\E[4m:
-#
-# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS.
-# This should only be used when the terminal emulator cannot redefine the keys.
-# Since redefining keys with ansi.sys also affects PC-DOS programs, the key
-# definitions must be restored.  If the terminal emulator is quit while in vi
-# or others using :ks:ke:, the keypad keys will not be defined as per PC-DOS.
-# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix
-# (^U and ^D are already defined for tn3270).  The ESC is safe for vi but it
-# does "beep".  ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab.
-# Left arrow is always BS, because PC-dos can tolerate this change.
-# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi.
-# Consequently the End keypad key could not be set (it is relatively safe and
-# actually useful because it sends ^@ O, which beeps and opens a line above).
-ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi:\
-       :is=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\
-       :ke=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p:\
-       :ks=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p:tc=ansi.sys:
-#
-# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
-nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS:\
-       :al=\E[1L:dc=\E[1P:dl=\E[1M:ei=:ic=\E[1@:im=:\
-       :is=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n:tc=ansi.sys:
-#
-# See ansi.sysk and nansi.sys above.
-nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi:\
-       :al=\E[1L:dc=\E[1P:dl=\E[1M:ei=:ic=\E[1@:im=:\
-       :is=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:tc=ansi.sysk:
-
-#### ANSI console types
-#
-
-# This entry is good for the 1.1.47 version of the Linux console driver.
-#
-# It assumes that you want A_PROTECT mapped to the alternate character set
-# mode that permits IBM ROM characters to be displayed (this is the assumption
-# used by ncurses version 1.9 and after, in order not to collide with the
-# internationalization attribute values specified in the XSI Curses standard).
-#
-# We use \E11m for rmacs rather than \E12m so the acsc string can use the ROM
-# graphics for control characters such as the diamond, up arrow and down-arrow.
-# This trick could work with other Intel consoles like the att6386 and pc3.
-#
-# Note: there are numerous broken linux entries out there, which didn't screw
-# up BSD termcap but hose ncurses's smarter cursor-movement optimization.
-# One common pathology is an incorrect tab length of 4.  Also note that the 
-# hpa=\E[%dG/vpa=\E[%dd capabilities seem not to be reliable.  To reproduce
-# the bug, re-introduce them and run worm -T 200 212 from the ncurses
-# test suite, save the trace, then worm -N -T 200 212.  Observe that the first
-# run fails to properly delete some worm segments, then diff the trace files.
-#
-# From: Eric S. Raymond <esr@snark.thyrsus.com> 23 July 1995
-linux|linux console:\
-       :am:bs:eo:mi:ms:ut:xn:xo:\
-       :Co#8:co#80:it#8:li#25:pa#64:\
-       :&7=^Z:@7=\E[4~:AB=\E[4%p1%dm:AF=\E[3%p1%dm:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:F1=\E[23~:F2=\E[24~:\
-       :F3=\E[25~:F4=\E[26~:F5=\E[28~:F6=\E[29~:F7=\E[31~:\
-       :F8=\E[32~:F9=\E[33~:FA=\E[34~:IC=\E[%d@:K2=\E[G:\
-       :S2=\E[11m:S3=\E[10m:Sb=\E[%+(m:Sf=\E[%+^^m:\
-       :ac=`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~q\304r\362s_t\303u\264v\301w\302x\263y\371z\372{\373|\374}\375~\376.\031-\030\054\021+^P0\333:\
-       :ae=\E[10m:al=\E[L:as=\E[11m:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
-       :ic=\E[@:im=\E[4h:k1=\E[[A:k2=\E[[B:k3=\E[[C:\
-       :k4=\E[[D:k5=\E[[E:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
-       :k9=\E[20~:k;=\E[21~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
-       :kP=\E[5~:kb=^H:kd=\E[B:kh=\E[1~:kl=\E[D:kr=\E[C:\
-       :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0;10m:\
-       :mr=\E[7m:nd=\E[C:nw=^M^J:op=\E[37;40m:r1=\Ec:rc=\E8:\
-       :..sa=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;11%;m:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
-       :u6=\E[%d;%dR:u7=\E[6n:u8=\E[?6c:u9=\E[c:ue=\E[24m:\
-       :up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:\
-       :vi=\E[?25l:
-linux-mono|Linux console, no color:\
-       :Co@:pa@:\
-       :AB@:Sb@:Sf@:tc=linux:
-
-# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
-linux-nic|linux with ich/ich1 suppressed for non-curses programs:\
-       :IC@:ei=:ic@:im=:tc=linux:
-
-# SCO console and SOS-Syscons console for 386bsd
-# (scoansi: had unknown capabilities
-#      :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\
-#      :GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C:RT=^J:
-#      :G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\
-#      :CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\
-#      :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\
-# I renamed GS/GE/HM/EN/PU/PD and mapped ":pt:" to ":it#8:" -- esr)
-scoansi|SCO Extended ANSI standard crt:\
-       :am:bs:eo:pt:\
-       :co#80:it#8:li#25:\
-       :@7=\E[F:ae=\E[10m:al=\E[L:as=\E[12m:bt=\E[Z:cd=\E[J:\
-       :ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:\
-       :do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:k1=\E[M:k2=\E[N:\
-       :k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:\
-       :k9=\E[U:k;=\E[V:kN=\E[G:kP=\E[I:kb=^H:kd=\E[B:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:mb=\E[5m:md=\E[1m:\
-       :me=\E[m:nd=\E[C:se=\E[m:sf=\E[S:so=\E[7m:sr=\E[T:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-
-# From: Eric Raymond <esr@snark.thyrsus.com> Wed Jan 18 17:14:34 EST 1995
-att6386|AT386|at386|386AT|386at|AT&T WGS 6386 console:\
-       :am:bw:eo:xo:\
-       :co#80:it#8:li#25:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\EOZ:\
-       :F2=\EOA:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:\
-       :SR=\E[%dT:UP=\E[%dA:\
-       :ac=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~:\
-       :ae=\E[10m:al=\E[1L:as=\E[12m:bl=^G:bt=\E[Z:cd=\E[J:\
-       :ce=\E[K:ch=\E[%i%dG:cl=\E[2J\E[H:cm=\E[%i%d;%dH:\
-       :cr=^M:ct=\E[2g:cv=\E[%dd:dc=\E[P:dl=\E[1M:do=\E[B:\
-       :ec=\E[%dX:ei=:ho=\E[H:ic=\E[1@:im=:is=\E[0;10;39m:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:\
-       :k7=\EOV:k8=\EOW:k9=\EOX:k;=\EOY:kD=\E[P:kI=\E[@:\
-       :kM=\E0:kN=\E[U:kP=\E[V:kb=^H:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:\
-       :me=\E[0;10m:mk=\E[9m:mr=\E[7m:nd=\E[C:nw=\r\E[S:\
-       :..sa=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m:\
-       :se=\E[m:sf=\E[S:so=\E[7m:sr=\E[T:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:vb=^G:tc=ansi-pc-color:
-# (pc6300plus: ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr)
-pc6300plus|6300plus:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\E[1L:bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[H:\
-       :cm=\E[%i%2;%2H:cr=^M:ct=\E[3g:dc=\E[1P:dl=\E[1M:\
-       :do=\E[B:ei=:ho=\E[H:ic=\E[1@:im=:k1=\EOc:k2=\EOd:\
-       :k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:\
-       :k9=\EOk:k;=\EOu:kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:\
-       :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mh=\E[2m:\
-       :mk=\E[9m:mr=\E[7m:nd=\E[C:nw=^M^J:se=\E[m:sf=^J:\
-       :so=\E[7m:st=\EH:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[=1C:\
-       :vi=\E[=C:
-
-#
-#      Terminfo entry for the AT&T Unix PC 7300
-#      from escape(7) in Unix PC 7300 Manual.
-#      Somewhat similar to a vt100-am (but different enough
-#      to redo this from scratch.)
-#
-#      /***************************************************************
-#      *
-#      *           FONT LOADING PROGRAM FOR THE UNIX PC
-#      *
-#      *     This routine loads a font defined in the file ALTFONT
-#      *     into font memory slot #1.  Once the font has been loaded,
-#      *     it can be used as an alternative character set.
-#      *
-#      *     The call to ioctl with the argument WIOCLFONT is the key 
-#      *     to this routine.  For more information, see window(7) in 
-#      *     the PC 7300 documentation.
-#      ***************************************************************/
-#      #include <string.h>             /* needed for strcpy call */
-#      #include <sys/window.h>         /* needed for ioctl call */
-#      #define FNSIZE  60              /* font name size */
-#      #define ALTFONT  "/usr/lib/wfont/special.8.ft"  /* font file */
-#      /*
-#      *     The file /usr/lib/wfont/special.8.ft comes with the
-#      *     standard PC software.  It defines a graphics character set
-#      *     similar to that of the Teletype 5425 terminal.  To view
-#      *     this or other fonts in /usr/lib/wfont, use the command
-#      *     cfont <filename>.  For further information on fonts see
-#      *     cfont(1) in the PC 7300 documentation.
-#      */
-#      
-#      struct altfdata         /* structure for alt font data */
-#      {
-#      short   altf_slot;              /* memory slot number */
-#      char    altf_name[FNSIZE];      /* font name (file name) */
-#      };
-#      ldfont()
-#      {
-#              int wd;         /* window in which altfont will be */
-#              struct altfdata altf;
-#              altf.altf_slot=1;
-#              strcpy(altf.altf_name,ALTFONT);
-#              for (wd =1; wd < 12; wd++) {
-#                   ioctl(wd, WIOCLFONT,&altf);
-#              }
-#      }
-#
-att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300:\
-       :am:xn:xo:\
-       :co#80:it#8:li#24:\
-       :!1=\ESV:!3=\EUD:#1=\EHL:#2=\EHM:#3=\ENJ:#4=\EBW:\
-       :%0=\Ero:%1=\Ehl:%2=\Emk:%4=\Emv:%5=\Enx:%6=\Eop:\
-       :%7=\Eot:%8=\Epv:%9=\Epr:%b=\EMV:%c=\ENX:%d=\EOT:\
-       :%e=\EPV:%g=\ERO:%h=\ERP:%i=\EFW:&0=\ECN:&1=\Ere:\
-       :&2=\Erf:&3=\Erp:&4=\Ers:&6=\Esv:&8=\Eud:&9=\EBG:\
-       :*0=\EFI:*2=\ECP:*3=\ECR:*4=\EDC:*5=\EDL:*6=\Esl:\
-       :*7=\EEN:*8=\ECI:@0=\Efi:@1=\Ebg:@2=\Ecn:@3=\Ecl:\
-       :@4=\Ecm:@5=\Ecp:@6=\Ecr:@7=\Een:@9=\Eex:AL=\E[%dL:\
-       :DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ae=\E[10m:al=\E[L:as=\E[11m:bl=^G:bt=\E^I:cd=\E[0J:\
-       :ce=\E[0K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:cr=^M:dl=\E[M:\
-       :do=\E[B:ho=\E[H:i1=^O:k1=\EOP:k2=\EOQ:k3=\EOR:\
-       :k4=\EOS:k5=\E5:k6=\E6:k7=\E7:k8=\E8:kB=\E^I:kC=\Ece:\
-       :kD=\Edc:kE=\Eci:kF=\Erd:kI=\Eim:kN=\Epg:kP=\EPG:\
-       :kR=\Eru:kS=\Ece:kb=^H:kd=\E[B:kh=\Ehm:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:md=\E[7m:me=\E[0;10m:mh=\E[2m:\
-       :mr=\E[7m:nd=\E[C:nw=\EE:se=\E[0m:sf=^J:so=\E[7m:\
-       :sr=\EM:ue=\E[0m:up=\E[A:us=\E[4m:
-
-# From: <davis@unidata.ucar.edu>
-iris-ansi|iris-ansi-net|IRIS emulating ANSI terminal:\
-       :am:\
-       :co#80:it#8:li#40:\
-       :!2=\E[218q:#2=\E[143q:#4=\E[158q:%9=\E[209q:\
-       :%f=\E[210q:%i=\E[167q:&7=\E[217q:*4=\E[P:*7=\E[147q:\
-       :@7=\E[146q:@8=^M:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:\
-       :F1=\EOR:F2=\EOS:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :al=\E[L:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dl=\E[M:do=^J:ho=\E[H:\
-       :is=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8:k1=\E[001q:\
-       :k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\
-       :k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\EOP:k;=\EOQ:\
-       :kB=\E[Z:kD=\177:kI=\E[139q:kM=\E[146q:kN=\E[154q:\
-       :kP=\E[150q:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:\
-       :ku=\E[A:le=\E[D:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
-       :nw=\EE:pk=\EP101;%d.y%s\E\\:rc=\E8:sc=\E7:se=\E[m:\
-       :sf=\ED:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:\
-       :up=\E[A:us=\E[4m:ve=\E[9/y\E[12/y\E[=6l:\
-       :vs=\E[10/y\E[=1h\E[=2l\E[=6h:
-
-# From: Alex R.N. Wetmore <aw2t@andrew.cmu.edu>
-oldpc3|oibmpc3|IBM PC 386BSD Console:\
-       :am:bs:bw:eo:\
-       :co#80:li#25:\
-       :ac=l\332q\304k\277x\263j\331m\300w\302u\264v\301t\303n\305:\
-       :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:\
-       :ho=\E[;H:kd=\E[B:kh=\E[Y:kl=\E[D:kr=\E[C:ku=\E[A:\
-       :md=\E[7m:me=\E[0m\E[1;0x\E[2;7x:nd=\E[C:\
-       :se=\E[1;0x\E[2;7x:sf=\E[S:so=\E[1;7x\E[2;0x:sr=\E[T:\
-       :ue=\E[1;0x\E[2;7x:up=\E[A:us=\E[1;7x\E[2;0x:
-
-# BSD/OS console emulator
-# The emulator supports many of the additional console features
-# listed in the iBSC2 (e.g. color and character-set selection).
-# The console will also work with fewer lines after doing
-# "stty rows NN", e.g. to use 24 lines.
-# (This is the entry BSDI ships)
-pc3|ibmpc3|IBM PC BSD/OS Console:\
-       :am:bw:eo:km:\
-       :co#80:it#8:li#25:\
-       :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
-       :UP=\E[%dA:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\Ec:\
-       :cm=\E[%i%d;%dH:cr=^M:dl=\E[M:do=^J:ho=\E[H:kH=\E[F:\
-       :kI=\E[L:kN=\E[G:kP=\E[I:kb=^H:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
-       :me=\E[0m:mh=\E[=8F:mr=\E[7m:nd=\E[C:nw=^M^J:\
-       :rc=\E[=u:sc=\E[=s:se=\E[0m:sf=^J:so=\E[7m:ta=^I:\
-       :up=\E[A:
-pc3-bold|ibmpc3|IBM PC BSD/OS Console with bold instead of underline:\
-       :ue=\E[0m:us=\E[1m:tc=pc3:
-
-# The following is a version of the ibm-pc entry distributed with PC/IX,
-# (Interactive Systems' System 3 for the Big Blue), modified by Richard
-# McIntosh at UCB/CSM.  The :pt: and :uc: have been removed from the original,
-# (the former is untrue, and the latter failed under UCB/man); standout and
-# underline modes have been added.  Note: this entry describes the "native"
-# capabilities of the PC monochrome display, without ANY emulation; most
-# communications packages (but NOT PC/IX connect) do some kind of emulation.
-pcix|PC/IX console:\
-       :am:bs:bw:eo:\
-       :co#80:li#24:\
-       :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:\
-       :ho=\E[;H:nd=\E[C:se=\E[0m:so=\E[7m:ue=\E[0m:up=\E[A:\
-       :us=\E[4m:
-
-# (ibmx: this entry formerly included the following unknown capabilities:
-#      :GC=b:GL=v:GR=t:RT=^J:\
-#      :GH=\E[196g:GV=\E[179g:\
-#      :GU=\E[193g:GD=\E[194g:\
-#      :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\
-#      :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\
-#      :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\
-# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate
-# ":kh=\E[Y:" -- esr)
-ibmpcx|xenix|ibmx|IBM PC xenix console display:\
-       :am:bs:ms:\
-       :co#80:li#25:\
-       :@7=\E[d:MR=\E[0m:ae=\E[10m:al=\E[L:as=\E[11m:\
-       :cd=\E[J:ce=\E[K:cl=^L:cm=\E[%d;%dH:dc=\E[P:dl=\E[M:\
-       :do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:k1=\E[K:k2=\E[L:\
-       :k3=\E[M:k4=\E[N:kN=\E[e:kP=\E[Z:kb=^H:kd=\E[B:\
-       :kh=\E[Y:kl=\E[D:kr=\E[C:ku=\E[A:nd=\E[C:se=\E[0m:\
-       :so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:
-ibmc|ibmcpc|IBM PC xenix color console display:\
-       :tc=ibmpcx:
-ibmcx|ibmcpcx:\
-       :tc=ibmpcx:
-
-pcvt25h|386BSD pcvt rel 2.10 vt220 emulator video driver:\
-       :am:km:mi:ms:xn:\
-       :it#8:pb#9216:vt#3:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
-       :LE=\E[%dD:RI=\E[%dC:SF=\E%dD:SR=\E%dM:UP=\E[%dA:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
-       :i1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
-       :ic=\E[@:im=\E[4h:k1=\E[17~:k2=\E[18~:k3=\E[19~:\
-       :k4=\E[20~:k5=\E[21~:k6=\E[23~:k7=\E[24~:k8=\E[25~:\
-       :kD=\E[3~:kH=\E[4~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^_:\
-       :kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\
-       :ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
-       :me=\E[m:mr=\E[7m:nd=\E[C:nw=^M^J:\
-       :r1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :rf=/usr/share/tabset/vt100:sc=\E7:se=\E[27m:sf=\ED:\
-       :so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[24m:up=\E[A:\
-       :us=\E[4m:
-
-#### DEC VT100 and compatibles
-#
-# DEC terminals from the vt100 forward are collected here.  Older DEC terminals
-# and micro consoles can be found in the `obsolete' section.  More details
-# on the relationship between the VT100 and ANSI X3.64 may be found near the
-# end of this file.
-#
-# Except where noted, these entries are DEC's official terminfos.
-# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
-# Engineering for more information.  Updated terminfos and termcaps 
-# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
-#
-
-# Note that the xenl glitch in vt100 is not quite the same as on the Concept,
-# since the cursor is left in a different position while in the
-# weird state (concept at beginning of next line, vt100 at end
-# of this line) so all versions of vi before 3.7 don't handle
-# xenl right on vt100. The correct way to handle xenl is when
-# you output the char in column 80, immediately output CR LF
-# and then assume you are in column 1 of the next line. If xenl
-# is on, am should be on too.
-# 
-# I assume you have smooth scroll off or are at a slow enough baud
-# rate that it doesn't matter (1200? or less). Also this assumes
-# that you set auto-nl to "on", if you set it off use vt100-nam 
-# below.
-# 
-# The padding requirements listed here are guesses. It is strongly
-# recommended that xon/xoff be enabled, as this is assumed here.
-# 
-# The vt100 uses rs2 and rf rather than is2/tbc/hts because the 
-# tab settings are in non-volatile memory and don't need to be 
-# reset upon login. Also setting the number of columns glitches 
-# the screen annoyingly. You can type "reset" to get them set.
-#
-# This is how the keypad gets assigned in Application Keypad mode.
-#      PF1 = kf1         PF2 = kf2         PF3   = kf3       PF4 = kf4
-#      7   = kf9         8   = kf10        9     = kf0       - 
-#      4   = kf5         5   = kf6         6     = kf7       ,   = kf8
-#      1   = ka1         2   = kb2         3     = ka3
-#      0   = kc1         .   = kc3         ENTER = kent
-#
-vt100|vt100-am|dec vt100 (w/advanced video):\
-       :am:mi:ms:xn:xo:\
-       :co#80:it#8:li#24:vt#3:\
-       :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:\
-       :K5=\EOn:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:do=^J:eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:\
-       :k8=\EOl:k9=\EOw:k;=\EOx:kb=^H:kd=\EOB:ke=\E[?1l\E>:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-
-vt100nam|vt100-nam|vt100 w/no am (w/advanced video):\
-       :am@:xn@:\
-       :tc=vt100-am:
-
-# Ordinary vt100 in 132 column ("wide") mode.
-vt100-w|vt100-w-am|dec vt100 132 cols (w/advanced video):\
-       :co#132:li#24:\
-       :r2=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-am:
-vt100-w-nam|vt100-nam-w|dec vt100 132 cols (w/advanced video):\
-       :co#132:li#14:vt@:\
-       :r2=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-nam:
-
-# vt100 with no advanced video.
-vt100-nav|vt100 without advanced video option:\
-       :sg#1:\
-       :mb@:md@:me@:mr@:sa@:se=\E[m:so=\E[7m:ue@:us@:tc=vt100:
-vt100-nav-w|vt100-w-nav|dec vt100 132 cols 14 lines (no advanced video option):\
-       :co#132:li#14:\
-       :tc=vt100-nav:
-
-# vt100 with one of the 24 lines used as a status line.
-# We put the status line on the top.
-vt100-s|vt100-s-top|vt100-top-s|vt100 for use with sysline:\
-       :es:hs:\
-       :li#23:\
-       :cl=\E[2;1H\E[J:cm=\E[%i%+^A;%dH:cs=\E[%i%i%d;%dr:\
-       :ds=\E7\E[1;24r\E8:fs=\E8:ho=\E[2;1H:\
-       :is=\E7\E[2;24r\E8:ts=\E7\E[1;%p1%dH\E[1K:tc=vt100-am:
-
-# Status line at bottom. 
-# Clearing the screen will clobber status line.
-vt100-s-bot|vt100-bot-s|vt100 for use with sysline:\
-       :es:hs:\
-       :li#23:\
-       :ds=\E7\E[1;24r\E8:fs=\E8:is=\E[1;23r\E[23;1H:\
-       :ts=\E7\E[24;%p1%dH\E[1K:tc=vt100-am:
-
-# DEC VT100 with Advanced Video Option -- NOT DEC'S ENTRY!!!
-# This may be used as an alternate vt102 entry; it's probably better than the
-# stock one if you can live with XON/XOFF.  All the AVO gave you was smul/rmul.
-# From: Doug Gwyn <gwyn@smoke.brl.mil> 25 Jan 93
-# The following SET-UP modes are assumed for normal operation:
-#      ANSI_MODE       AUTO_XON/XOFF_ON        NEWLINE_OFF     80_COLUMNS
-#      WRAP_AROUND_ON
-# Other SET-UP modes may be set for operator convenience or communication
-# requirements; I recommend
-#      SMOOTH_SCROLL   AUTOREPEAT_ON   BLOCK_CURSOR    MARGIN_BELL_OFF
-#      SHIFTED_3_#
-# Unless you have a graphics add-on such as Digital Engineering's VT640
-# (and even then, whenever it can be arranged!) you should set
-#      INTERLACE_OFF
-# Hardware tabs are assumed to be set every 8 columns; they can be set up
-# by the "reset", "tset", or "tabs" utilities (use vt100-x, 132 columns, for
-# this).  I have included some compatible code in "rs" for the VT640 if you
-# have one.  No delays are specified; use "stty ixon -ixany" to enable DC3/DC1
-# flow control!
-# Thanks to elsie!ado (Arthur David Olson) for numerous improvements.
-vt100-avo|DEC VT100 with AVO:\
-       :ms:xo:\
-       :co#80:it#8:li#24:vt#3:\
-       :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:as=^N:\
-       :bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:do=^J:ho=\E[H:\
-       :is=\E<\E)0:k0=\EOP:k1=\EOQ:k2=\EOR:k3=\EOS:kb=^H:\
-       :kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
-       :ku=\EOA:l0=PF1:l1=PF2:l2=PF3:l3=PF4:le=^H:ll=\E[24H:\
-       :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=\EE:\
-       :rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:\
-       :ta=^I:te=150\E[?7h:ti=\E[?7l:ue=\E[m:up=\EM:\
-       :us=\E[4m:
-
-# Most of the `vt100' emulators out there actually emulate a vt102
-# This entry (or vt102-nsgr) is probably the right thing to use for
-# these.  
-vt102|dec vt102:\
-       :mi:\
-       :al=\E[L:dc=\E[P:dl=\E[M:ei=\E[4l:im=\E[4h:tc=vt100:
-
-# Many brain-dead PC comm programs that pretend to be `vt100-compatible'
-# fail to interpret the ^O and ^N escapes properly.  Symptom: the sgr0
-# string in the canonical vt100 entry above leaves the screen littered
-# with little  snowflake or star characters (IBM PC ROM character \017 = ^O)
-# after highlight turnoffs.  This entry should fix that, and even leave
-# ACS support working, at the cost of making multiple-highlight changes 
-# slightly more expensive.
-# From: Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995
-vt102-nsgr|dec vt102 with ACS support disabled:\
-       :me=\E[m:sa@:tc=vt102:
-
-# VT125 Graphics CRT.  Clear screen also erases graphics
-vt125|vt125 graphics terminal:\
-       :cl=\E[;H\E[2J\EPpS(E)\E\\:tc=vt100:
-
-# vt132 - like vt100 but slower and has ins/del line and such.
-# I'm told that smir/rmir are backwards in the terminal from the
-# manual and from the ANSI standard, this describes the actual 
-# terminal. I've never actually used a vt132 myself, so this 
-# is untested.
-#
-vt132|DEC vt132:\
-       :xn:\
-       :al=\E[L:dc=\E[P:dl=\E[M:ei=\E[4h:im=\E[4l:ip=:sf=\n:tc=vt100:
-
-# vt220:
-# This vt220 description maps F5--F9 to the second block of function keys
-# at the top of the keyboard.  The "DO" key is used as F10 to avoid conflict
-# with the key marked (ESC) on the vt220.  See vt220d for an alternate mapping.
-# PF1--PF4 are used as F1--F4.
-#
-vt220|DEC VT220 in vt100 emulation mode:\
-       :am:mi:xn:xo:\
-       :co#80:li#24:vt#3:\
-       :@7=\E[4~:ac=kkllmmjjnnwwqquuttvvxx:ae=\E(B:al=\E[L:\
-       :as=\E(0:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:\
-       :do=\E[B:ei=\E[4l:ho=\E[H:if=/usr/lib/tabset/vt100:\
-       :im=\E[4h:is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:\
-       :k3=\EOR:k4=\EOS:k5=\E[17~:k6=\E[18~:k7=\E[19~:\
-       :k8=\E[20~:k9=\E[21~:k;=\E[29~:kD=\E[3~:kI=\E[2~:\
-       :kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:kh=\E[1~:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:\
-       :mr=\E[7m:nd=\E[C:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :rf=/usr/lib/tabset/vt100:\
-       :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;:\
-       :sc=\E7:se=\E[m:sf=20\ED:so=\E[7m:sr=14\EM:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
-#
-# vt220d:
-# This vt220 description regards F6--F10 as the second block of function keys
-# at the top of the keyboard.  This mapping follows the description given
-# in the VT220 Programmer Reference Manual and agrees with the labeling
-# on some terminals that emulate the vt220.  There is no support for an F5.
-# See vt220 for an alternate mapping. 
-#
-vt220d|DEC VT220 in vt100 mode with DEC function key labeling:\
-       :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
-       :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:\
-       :k5@:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
-       :k;=\E[21~:tc=vt220:
-
-vt220nam|vt220-nam|v220n|VT220 in vt100 mode with no auto margins:\
-       :am@:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h:tc=vt220:
-
-vt220-8|dec vt220 8 bit terminal:\
-       :5i:am:mi:ms:xn:xo:\
-       :co#80:it#8:li#24:\
-       :%0=\E[29~:%1=\E[28~:*6=\E[4~:@0=\E[1~:AL=\E[%dL:\
-       :DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:F2=\E[24~:\
-       :F3=\E[25~:F4=\E[26~:F7=\E[31~:F8=\E[32~:F9=\E[33~:\
-       :FA=\E[34~:IC=\E[%d@:LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:\
-       :SA=\E[?7h:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E)0:ec=\E[%dX:\
-       :ei=\E[4l:ho=\E[H:if=/usr/lib/tabset/vt100:im=\E[4h:\
-       :is=\E[?7h\E[>\E[?1h\E F\E[?4l:k1=\EOP:k2=\EOQ:\
-       :k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
-       :k9=\E[20~:k;=\E[21~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
-       :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
-       :l1=pf1:l2=pf2:l3=pf3:l4=pf4:le=^H:mb=\E[5m:md=\E[1m:\
-       :me=\E[0m:mr=\E[7m:nd=\E[C:nw=\EE:pf=\E[4i:po=\E[5i:\
-       :ps=\E[i:r1=\E[?3l:rc=\E8:sc=\E7:se=\E[27m:sf=\ED:\
-       :so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[24m:up=\E[A:\
-       :us=\E[4m:vb=\E[?5h\E[?5l:
-
-vt320|DEC VT320 in vt100 emulation mode:\
-       :tc=vt220:
-#
-#  Use v320n for LYRIX
-#
-vt320nam|vt320-nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode:\
-       :am@:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h:tc=vt220:
-
-vt420|DEC VT420:\
-       :am:mi:xn:xo:\
-       :co#80:li#24:vt#3:\
-       :*6=\E[4~:@0=\E[1~:\
-       :S5=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[;H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
-       :i2=\E[?67h\E[64;1"p:if=/usr/lib/tabset/vt100:\
-       :im=\E[4h:is=\E[1;24r\E[24;1H:k0=\E[29~:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[17~:k6=\E[18~:\
-       :k7=\E[19~:k8=\E[20~:k9=\E[21~:k;=\E[29~:kD=\E[3~:\
-       :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
-       :kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
-       :r3=\E[?67h\E[64;1"p:rc=\E8:rf=/usr/lib/tabset/vt100:\
-       :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;:\
-       :se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\
-       :up=\E[A:us=\E[4m:
-
-vt420nam|vt420-nam|v420n|DEC VT420 in vt100 emul. mode with NO AUTO WRAP mode:\
-       :am@:\
-       :tc=vt420:
-
-#
-#  DECUDK   
-#               if (key < 16) then  value = key;
-#               else if (key < 21) then value = key + 1; 
-#               else if (key < 25) then value = key + 2;
-#               else if (key < 27) then value = key + 3;
-#               else if (key < 30) then value = key + 4;
-#               else value = key + 5;
-#
-vt420pc|DEC VT420 w/PC keyboard:\
-       :@7=\E[4~:F1=\E[23~:F2=\E[24~:F3=\E[11;2~:\
-       :F4=\E[12;2~:F5=\E[13;2~:F6=\E[14;2~:F7=\E[15;2~:\
-       :F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:FB=\E[20;2~:\
-       :FC=\E[21;2~:FD=\E[23;2~:FE=\E[24;2~:FF=\E[23~:\
-       :FG=\E[24~:FH=\E[25~:FI=\E[26~:FJ=\E[28~:FK=\E[29~:\
-       :FL=\E[31~:FM=\E[32~:FN=\E[33~:FO=\E[34~:FP=\E[35~:\
-       :FQ=\E[36~:FR=\E[23;2~:FS=\E[24;2~:FT=\E[25;2~:\
-       :FU=\E[26;2~:FV=\E[28;2~:FW=\E[29;2~:FX=\E[31;2~:\
-       :FY=\E[32;2~:FZ=\E[33;2~:Fa=\E[34;2~:Fb=\E[35;2~:\
-       :Fc=\E[36;2~:S6=USR_TERM\072vt420pcdos\072:k1=\E[11~:\
-       :k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:k6=\E[17~:\
-       :k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:kD=^_:\
-       :kh=\E[H:\
-       :..px=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\:tc=vt420:
-
-vt420pcdos|DEC VT420 w/PC for DOS Merge:\
-       :li#25:\
-       :S1=%?%p2%{19}%=%t\E\023\021%e%p2%{32}%<%t\E%p2%c%e%p2%{127}%=%t\E\177%e%p2%c%;:\
-       :S4=\E[?1;2r\E[34h:\
-       :S5=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:S6@:\
-       :me=\E[0m:sa@:tc=vt420pc:
-
-vt420f|DEC VT420 with VT kbd; VT400 mode; F1-F5 used as Fkeys:\
-       :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
-       :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:\
-       :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
-       :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
-       :kD=^_:kh=\E[H:l1=\EOP:l2=\EOQ:l3=\EOR:l4=\EOS:tc=vt420:
-
-vt420f-nam|v420fn|DEC VT420 no auto margins:\
-       :am@:\
-       :tc=vt420f:
-vt420pc-nam|v420pcn|DEC VT420 PC keyboard no auto margins:\
-       :am@:\
-       :tc=vt420pc:
-
-vt510|DEC VT510:\
-       :tc=vt420:
-vt510nam|vt510-nam|v510n|DEC VT510 in vt100 emul. mode with NO AUTO WRAP mode:\
-       :tc=vt420nam:
-vt510pc|DEC VT510 w/PC keyboard:\
-       :tc=vt420pc:
-vt510pc-nam|v510pcn|DEC VT510 PC keyboard no auto margins:\
-       :am@:\
-       :tc=vt420pc:
-vt510pcdos|DEC VT510 w/PC for DOS Merge:\
-       :tc=vt420pcdos:
-
-# VT520/VT525
-#
-# The VT520 is a monochrome text terminal capable of managing up to
-# four independent sessions in the terminal.  It has multiple ANSI
-# emulations (VT520, VT420, VT320, VT220, VT100, VT PCTerm, SCO Console)
-# and ASCII emulations (WY160/60, PCTerm, 50/50+, 150/120, TVI 950,
-# 925 910+, ADDS A2).  This terminfo data is for the ANSI emulations only.
-#
-# Terminal Set-Up is entered by pressing [F3], [Caps Lock]/[F3] or
-# [Alt]/[Print Screen] depending upon which keyboard and which
-# terminal mode is being used.  If Set-Up has been disabled or
-# assigned to an unknown key, Set-Up may be entered by pressing
-# [F3] as the first key after power up, regardless of keyboard type.
-vt520|DEC VT520:\
-       :am:mi:xn:xo:\
-       :co#80:li#24:vt#3:\
-       :*6=\E[4~:@0=\E[1~:\
-       :S5=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[;H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
-       :i2=\E[?67h\E[64;1"p:if=/usr/lib/tabset/vt100:\
-       :im=\E[4h:is=\E[1;24r\E[24;1H:k0=\E[29~:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[17~:k6=\E[18~:\
-       :k7=\E[19~:k8=\E[20~:k9=\E[21~:k;=\E[29~:kD=\E[3~:\
-       :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:\
-       :mr=\E[7m:nd=\E[C:\
-       :..px=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\:\
-       :r3=\E[?67h\E[64;1"p:rc=\E8:rf=/usr/lib/tabset/vt100:\
-       :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;:\
-       :se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\
-       :up=\E[A:us=\E[4m:
-
-vt520nam|vt520-nam|v520n|DEC VT520 with NO AUTO WRAP:\
-       :am@:\
-       :tc=vt520:
-
-vt525|DEC VT525:\
-       :am:mi:xn:xo:\
-       :co#80:li#24:vt#3:\
-       :*6=\E[4~:@0=\E[1~:\
-       :S5=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[;H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
-       :i2=\E[?67h\E[64;1"p:if=/usr/lib/tabset/vt100:\
-       :im=\E[4h:is=\E[1;24r\E[24;1H:k0=\E[29~:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[17~:k6=\E[18~:\
-       :k7=\E[19~:k8=\E[20~:k9=\E[21~:k;=\E[29~:kD=\E[3~:\
-       :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:\
-       :mr=\E[7m:nd=\E[C:\
-       :..px=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\:\
-       :r3=\E[?67h\E[64;1"p:rc=\E8:rf=/usr/lib/tabset/vt100:\
-       :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;:\
-       :se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\
-       :up=\E[A:us=\E[4m:
-
-vt525nam|vt525-nam|v525n|DEC VT525 with NO AUTO WRAP:\
-       :am@:\
-       :tc=vt525:
-
-#### Xterm variants
-#
-
-# X10/6.6      11/7/86, minus alternate screen, plus (csr)
-# (xterm: ":MT:" changed to ":km:"; mapped ":pt:" to ":it#8:";
-# removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E)
-# as these seem not to work -- esr)
-x10term|vs100-x10|xterm terminal emulator (X10 window system):\
-       :am:bs:km:mi:ms:pt:xn:xo:\
-       :co#80:it#8:li#65:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:al=\E[L:cd=\E[J:\
-       :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:\
-       :dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:im=\E[4h:\
-       :is=\E\E[m\E[?7h\E[?1;4l:k1=\EOP:k2=\EOQ:k3=\EOR:\
-       :k4=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:\
-       :ks=\E[?1h\E=:ku=\EOA:le=^H:md=\E[1m:me=\E[m:\
-       :mr=\E[7m:nd=\E[C:\
-       :rs=\E[r\E<\E[m\E[H\E[2J\E[?7h\E[?1;3;4;6l:se=\E[m:\
-       :sf=^J:so=\E[7m:sr=\EM:ue=\E[m:up=\E[A:us=\E[4m:
-# X11R6 xterm.  This is known good for the XFree86 version under Linux.
-# From: Eric S. Raymond <esr@snark.thyrsus.com> 9 Jul 1995
-# Note: If you use the line-drawing character set, the disable afterwards
-# will leave you in US-ASCII.  If you live somewhere that wants a pound sign
-# at 2/3, change rmacs to "\E(A".  Further note: cuf and cub don't seem
-# to be reliable under my xterm, so they're commented out.  Final note:
-# Older versions of this entry set/reset application keypad mode (\EO-prefix
-# cursor keys) in the [sr]mkx caps, but it wasn't necessary, and doesn't
-# actually fit the terminfo model properly.
-xterm|vs100|xterm terminal emulator (X11R6 Window System):\
-       :am:bs:km:mi:ms:pt:xn:xo:\
-       :co#80:it#8:li#65:\
-       :@7=\E[[:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:F1=\E[23~:\
-       :F2=\E[24~:IC=\E[%d@:LE=\E[%dD:UP=\E[%dA:\
-       :ac=++\054\054..00II--``aaffgghhjjkkllmmnnooqqssttuuvvwwxx~~:\
-       :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3k:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
-       :ic=\E[@:im=\E[4h:\
-       :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
-       :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
-       :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
-       :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:kh=\E[@:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:md=\E[1m:me=\E[m:\
-       :mr=\E[7m:nd=\E[C:\
-       :r2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<:\
-       :rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
-       :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:u6=\E[%d;%dR:\
-       :u7=\E[6n:u8=\E[?1;2c:u9=\E[c:ue=\E[m:up=\E[A:\
-       :us=\E[4m:
-xterm24|vs100-24|xterm terminal emulator (24 lines) (X11R6 window system):\
-       :co#80:li#24:\
-       :tc=xterm:
-xterm25|vs100-25|xterm terminal emulator (25 lines) (X11R6 window system):\
-       :co#80:li#25:\
-       :tc=xterm:
-xterm50|vs100-50|xterm terminal emulator (50 lines) (X11R6 window system):\
-       :co#80:li#50:\
-       :tc=xterm:
-xterms|vs100s|xterm terminal emulator (small) (X11R6 window system):\
-       :tc=xterm24:
-# (kterm: this had unknown capabilities ":KJ:TY=ascii:" -- esr)
-kterm|kterm kanji terminal emulator (X window system):\
-       :es:hs:\
-       :cs=\E[%i%d;%dr:ds=\E[?H:fs=\E[?F:rc=\E8:sc=\E7:\
-       :ts=\E[?E\E[?%i%dT:tc=xterm:
-
-# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
-xterm-nic|xterm with ich/ich1 suppressed for non-curses programs:\
-       :IC@:ei=:ic@:im=:tc=xterm:
-
-# From: Eric S. Raymond <esr@snark.thyrsus.com> May 4 1995
-# Should work with the color xterm on the X11R6 contrib tape.
-xterm-color|xterm with color support:\
-       :tc=xterm:tc=ansi-pc-color:
-
-# From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
-# Here's a termcap entry I've been using for xterm_color, which comes
-# with BSD/OS 2.0, and the X11R6 contrib tape too I think.  Besides the
-# color stuff, I also have a status line defined as the window manager
-# title bar. [I have translated it to terminfo -- ESR]
-xterm-pcolor|xterm with color used for highlights and status line:\
-       :hs:\
-       :ws#40:\
-       :ds=\E]0;\007:fs=^G:md=\E[1m\E[43m:mr=\E[7m\E[34m:\
-       :so=\E[7m\E[31m:ts=\E]0;:us=\E[4m\E[42m:tc=xterm:
-
-######## UNIX VIRTUAL TERMINALS AND VIRTUAL CONSOLES
-#
-
-# Columbus UNIX virtual terminal. This terminal also appears in 
-# UNIX 4.0 and successors as line discipline 1 (?), but is 
-# undocumented and does not really work quite right.
-cbunix|cb unix virtual terminal:\
-       :am:bs:da:db:\
-       :co#80:li#24:lm#0:\
-       :al=\EP:bl=^G:cd=\EL:ce=\EK:cl=\EL:cm=\EG%r%.%.:\
-       :cr=^M:dc=\EM:dl=\EN:do=^J:ei=:ic=\EO:im=:kd=\EB:\
-       :kh=\EE:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:se=\Eb^D:\
-       :sf=^J:so=\Ea^D:ue=\Eb^A:up=\EA:us=\Ea^A:
-# (vremote: removed obsolete ":nl@:" -- esr)
-vremote|virtual remote terminal:\
-       :am@:\
-       :co#79:\
-       :tc=cbunix:
-pty|4bsd pseudo teletype:\
-       :cm=\EG%+ %+ :se=\Eb$:so=\Ea$:ue=\Eb!:us=\Ea!:tc=cbunix:
-
-# Entries for use by the FSF's `screen' program.  These came with version 3.6.2
-screen|VT 100/ANSI X3.64 virtual terminal:\
-       :am:km:mi:ms:xn:\
-       :co#80:it#8:li#24:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:\
-       :F2=\E[24~:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++\054\054hhII00:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
-       :im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
-       :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
-       :k;=\E[21~:kD=\E[3~:kH=\E[4~:kI=\E[2~:kN=\E[6~:\
-       :kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=\EE:r2=\Ec:\
-       :rc=\E8:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:sr=\EM:\
-       :st=\EH:ta=^I:ue=\E[24m:up=\EM:us=\E[4m:
-screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols:\
-       :am:km:mi:ms:xn:\
-       :co#132:it#8:li#24:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:\
-       :F2=\E[24~:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++\054\054hhII00:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
-       :im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
-       :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
-       :k;=\E[21~:kD=\E[3~:kH=\E[4~:kI=\E[2~:kN=\E[6~:\
-       :kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=\EE:r2=\Ec:\
-       :rc=\E8:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:sr=\EM:\
-       :st=\EH:ta=^I:ue=\E[24m:up=\EM:us=\E[4m:
-
-######## WORKSTATION CONSOLES
-#
-
-#### Sun consoles
-#
-
-# :is: resets scrolling region in case a previous user had used "tset vt100"
-# (sun: mapped ":pt:" to ":it#8:" -- esr)
-oldsun|Sun Microsystems Workstation console:\
-       :am:bs:km:mi:ms:pt:\
-       :co#80:it#8:li#34:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:al=\E[L:\
-       :bl=^G:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%i%d;%dH:cr=^M:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ei=:ic=\E[@:im=:is=\E[1r:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:nd=\E[C:rs=\E[1r:\
-       :se=\E[m:sf=^J:so=\E[7m:ta=^I:up=\E[A:
-# New entry from vendor
-sun|sun1|sun2|Sun Microsystems Inc. workstation:\
-       :am:km:ms:\
-       :co#80:li#34:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:al=\E[L:\
-       :bl=^G:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%i%d;%dH:cr=^M:\
-       :dc=\E[P:dl=\E[M:do=^J:ei=:ho=\E[H:ic=\E[@:im=:\
-       :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:\
-       :k5=\E[228z:k6=\E[229z:k7=\E[230z:k8=\E[231z:\
-       :k9=\E[232z:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
-       :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:r2=\E[s:\
-       :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m:\
-       :se=\E[m:sf=^J:so=\E[7m:ta=^I:ue=\E[m:up=\E[A:\
-       :us=\E[4m:
-# From: <john@ucbrenoir>  Tue Sep 24 13:14:44 1985
-sun-s|Sun Microsystems Workstation window with status line:\
-       :hs:\
-       :ds=\E]l\E\\:fs=\E\\:ts=\E]l:tc=sun:
-sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs:\
-       :hs:\
-       :ds=\E]l\E\\:fs=\E\\:ts=\E]l:tc=sun-e:
-sun-48|Sun 48-line window:\
-       :co#80:li#48:\
-       :tc=sun:
-sun-34|Sun 34-line window:\
-       :co#80:li#34:\
-       :tc=sun:
-sun-24|Sun 24-line window:\
-       :co#80:li#24:\
-       :tc=sun:
-sun-17|Sun 17-line window:\
-       :co#80:li#17:\
-       :tc=sun:
-sun-12|Sun 12-line window:\
-       :co#80:li#12:\
-       :tc=sun:
-sun-1|Sun 1-line window for sysline:\
-       :es:hs:\
-       :co#80:li#1:\
-       :ds=^L:fs=\E[K:ts=^M:tc=sun:
-sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character:\
-       :ei@:ic@:im@:tc=sun:
-sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history:\
-       :te=\E[>4h:ti=\E[>4l:tc=sun:
-
-#### Iris consoles
-#
-
-# (wsiris: this had unknown capabilities
-#      :HS=\E7F2:HE=\E7F7:\
-#      :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite:
-# I mapped ":pt:" to ":it#8:", removed incorrect ":cl=\Ev:" -- esr)
-wsiris|iris40|iris emulating a 40 line visual 50 (approximately):\
-       :am:bs:pt:\
-       :co#80:it#8:li#40:\
-       :al=\EL:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :dl=\EM:\
-       :ho=\EH:is=\E7B0\E7F7\E7C2\E7R3:k0=\E0:k1=\E1:k2=\E2:\
-       :k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\
-       :kd=\EB:kl=\ED:kr=\EC:ku=\EA:nd=\EC:se=\E0@:so=\E9P:\
-       :sr=\EI:ue=\E7R3\E0@:up=\EA:us=\E7R2\E9P:ve=\E>:\
-       :vs=\E;:
-
-#### Masscomp consoles
-#
-
-masscomp2:\
-       :co#64:li#21:\
-       :tc=masscomp:
-masscomp1:\
-       :co#104:li#36:\
-       :tc=masscomp:
-# (masscomp: ":MT:" changed to ":km:"; mapped ":pt:" to ":it#8:" -- esr)
-masscomp:\
-       :bs:km:mi:pt:\
-       :co#80:it#8:li#24:sg#0:\
-       :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:im=\E[4h:\
-       :is=\EGc\EGb\EGw:kb=^H:kd=\EOB:kl=\EOD:kr=\EOC:\
-       :ku=\EOA:nd=\E[C:se=\E[0m:so=\E[7m:ue=\EGau:up=\E[A:\
-       :us=\EGu:
-
-#### NeWS consoles
-#
-# Console terminal windows under the NeWS (Sun's Display Postscript windowing
-# environment).   Note: these have nothing to do with Sony's News workstation
-# line.
-#
-
-# Entry for NeWS's psterm from Eric Messick & Hugh Daniel
-# (psterm: unknown ":sl=\EOl:el=\ENl:" removed;
-# mapped ":pt:" to ":it#8:" -- esr)
-psterm|psterm-basic|psterm-80x34:\
-       :am:bs:hs:km:pt:ul:\
-       :co#80:it#8:li#34:\
-       :al=\EA:cd=\EB:ce=\EC:cl=^L:cm=\E%d;%d;:cs=\EE%d;%d;:\
-       :dc=\EF:dl=\EK:do=\EP:ei=\ENi:fs=\ENl:ho=\ER:im=\EOi:\
-       :is=\EN*:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=\ET:\
-       :ll=\EU:mb=\EOb:md=\EOd:me=\EN*:mr=\EOr:nd=\EV:rc=^\:\
-       :rs=\EN*:sc=^]:se=\ENo:sf=\EW:so=\EOo:sr=\EX:te=\ENt:\
-       :ti=\EOt:ts=\EOl:ue=\ENu:up=\EY:us=\EOu:vb=\EZ:
-psterm-96x48:\
-       :co#96:li#48:\
-       :tc=psterm:
-psterm-90x28:\
-       :co#90:li#28:\
-       :tc=psterm:
-psterm-80x24:\
-       :co#80:li#24:\
-       :tc=psterm:
-# This is a faster termcap for psterm.  Warning:  if you use this termcap,
-# some control characters you type will do strange things to the screen.
-# (psterm-fast: unknown ":sl=^Ol:el=^Nl:";
-# removed; mapped ":pt:" to ":it#8:" -- esr)
-psterm-fast:\
-       :am:bs:hs:km:pt:ul:\
-       :co#80:it#8:li#34:\
-       :al=^A:cd=^B:ce=^C:cl=^L:cm=\004%d;%d;:cs=\005%d;%d;:\
-       :dc=^F:dl=^K:do=^P:ei=^Ni:fs=^Nl:ho=^R:im=^Oi:is=^N*:\
-       :kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^T:ll=^U:mb=^Ob:\
-       :md=^Od:me=^N*:mr=^Or:nd=^V:rc=^\:rs=^N*:sc=^]:\
-       :se=^No:sf=^W:so=^Oo:sr=^X:te=^Nt:ti=^Ot:ts=^Ol:\
-       :ue=^Nu:up=^Y:us=^Ou:vb=^Z:
-
-#### Apollo consoles
-#
-# Apollo got bought by Hewlett-Packard.  The Apollo workstations are 
-# labeled HP700s now.
-#
-
-# From: Gary Darland <goodmanc@garnet.berkeley.edu>
-apollo:\
-       :am:bs:mi:\
-       :co#88:li#53:\
-       :al=\EI:cd=\EJ:ce=\EK:ch=\EN%d:cl=^L:cm=\EM%+ %d):\
-       :cv=\EO+ :dc=\EP:dl=\EL:do=\EB:ei=\ER:im=\EQ:nd=\EC:\
-       :se=\ET:sf=\EE:so=\ES:sr=\ED:te=\EX:ti=\EW:ue=\EV:\
-       :up=\EA:us=\EU:
-apollo_15P|apollo 15 inch display:\
-       :dN@:\
-       :tc=vt132:
-apollo_19L|apollo 19 inch display:\
-       :dN@:\
-       :tc=vt132:
-apollo_color|apollo color display:\
-       :dN@:\
-       :tc=vt132:
-
-#### Fortune Systems consoles
-#
-
-# From: Robert Nathanson <c160-3bp@Coral> via tut   Wed Oct 5, 1983
-# (This had unknown capabilities
-#      :rv=\EH:re=\EI:rg=0:\
-#      :GG=0:GV=-:GH=&:GU=%:GD=#:G1=(:G2= :G3=":G4=*:CF=\E]:\
-#      :CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\
-#      :RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:\
-#      :PU=^An\r:PD=^Ao\r:PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F:
-# It had both ":bs:" and ":bs=^H:"; I removed the latter.  Also, it had
-# ":sg=0:" and ":ug=0:"; evidently the composer was trying (unnecessarily)
-# to force both magic cookie glitches off.  Once upon a time, I
-# used a Fortune myself, so I know the capabilities of the form ^A[a-z]\r are
-# function keys; thus the "Al" value for HM was certainly an error.  I renamed
-# EN/PD/PU/CO/CF according to the XENIX/TC mappings, but not HM/DL/RF/RC/RT.  
-# I think rv and re are start and end reverse video and rg is a nonexistent
-# "reverse-video-glitch" capability; I have put rv and re in with standard
-# names below.  I've removed obsolete ":nl=5^J:" as there is a :do: -- esr)
-fos|fortune|Fortune system:\
-       :am:bs:bw:\
-       :co#80:li#25:\
-       :@7=^Ak\r:ae=^O:al=\034E:as=\Eo:bl=^G:cd=\034Y:\
-       :ce=^\Z:cl=\014:cm=\034C%+ %+ :cr=^M:dc=\034W:\
-       :dl=\034R:do=\n:ei=:ho=\036:ic=\034Q:im=:is=^_..:\
-       :k1=^Aa\r:k2=^Ab\r:k3=^Ac\r:k4=^Ad\r:k5=^Ae\r:\
-       :k6=^Af\r:k7=^Ag\r:k8=^Ah\r:kN=^Ao\r:kP=^An\r:kb=^H:\
-       :kd=^Ay\r:kh=^A?\r:kl=^Aw\r:kr=^Az\r:ku=^Ax\r:le=^H:\
-       :mb=\EN:me=\EI:mr=\EH:nw=^M^J:se=^\I`:sf=^J:so=^\H`:\
-       :ta=^Z:ue=^\IP:up=\013:us=^\HP:ve=\E\\:vi=\E]:\
-       :vs=\E\072:
-
-######## COMMON TERMINAL TYPES
-#
-# This section describes terminal classes and maker brands that are still
-# quite common, but have proprietary command sets not blessed by ANSI.
-
-#### Altos
-#
-# Altos descriptions from Ted Mittelstaedt <tedm@agora.rain.com> 4 Sep 1993
-# His comments suggest they were shipped with the system.
-#
-
-# (altos2: had unknown capabilities
-#      :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
-#      :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
-#      :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
-#      :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
-#      :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
-#      :YU=^AQ\r:YD=^AR\r:YR=^AS\r:YL=^AT\r:\
-#      :HL=^AP\r:SP=\E[i:\
-#      :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
-#      :LO=\E[0q:LC=\E[5q:LL=\E[6q:\
-# Comparison with the k* capabilities makes it obvious that the c* things are
-# shift keys.  I have renamed them to keys 32 and up accordingly.  Also,
-# :sr: was given as a boolean-- esr)
-altos2|alt2|altos-2|altos II:\
-       :co#80:it#8:li#24:sg#0:\
-       :*5=^Am\r:*8=^An\r:DL=\E[M:FM=^A`\r:FN=^Aa\r:\
-       :FO=^Ab\r:FP=^Ac\r:FQ=^Ad\r:FR=^Ae\r:FS=^Af\r:\
-       :FT=^Ag\r:FU=^Ah\r:FV=^Ai\r:FW=^Aj\r:FX=^Ak\r:\
-       :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:do=\E[1B:ei=:ho=\E[H:\
-       :ic=\E[@:if=/usr/share/lib/tabset/vt100:im=:\
-       :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:k0=^AI\r:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=^AJ\r:\
-       :kB=^AK\r:kC=^AL\r:kD=^AM\r:kE=^AN\r:kF=^AO\r:kb=^H:\
-       :kd=\E[B:kh=\E[f:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
-       :nd=\E[1C:nw=^M^J:se=\E[m:sf=^J:so=\E[7m:ta=^I:\
-       :ue=\E[m:up=\E[1A:us=\E[4m:
-# (altos3: had unknown capabilities
-#      :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
-#      :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
-#      :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
-#      :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
-#      :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
-#      :HL=^AP\r:SP=\E[i:\
-#      :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
-# Comparison with the k* capabilities makes it obvious that the c* things are
-# shift keys.  I have renamed them to keys 32 and up accordingly -- esr)
-altos3|alt3|altos-3|altos III:\
-       :co#80:it#8:li#24:sg#0:\
-       :*5=^Am\r:*8=^An\r:DL=\E[M:FM=^A`\r:FN=^Aa\r:\
-       :FO=^Ab\r:FP=^Ac\r:FQ=^Ad\r:FR=^Ae\r:FS=^Af\r:\
-       :FT=^Ag\r:FU=^Ah\r:FV=^Ai\r:FW=^Aj\r:FX=^Ak\r:\
-       :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:do=\E[1B:ei=:ho=\E[H:\
-       :ic=\E[@:if=/usr/share/lib/tabset/vt100:im=:\
-       :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:k0=^AI\r:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=^AJ\r:\
-       :kB=^AK\r:kC=^AL\r:kD=^AM\r:kE=^AN\r:kF=^AO\r:kb=^H:\
-       :kd=\E[B:kh=\E[f:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
-       :mb=\E[5p:me=\E[p:nd=\E[1C:nw=^M^J:se=\E[m:sf=^J:\
-       :so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[1A:us=\E[4m:
-altos4|alt4|altos-4|altos IV:\
-       :tc=wy50:
-altos5|alt5|altos-5|altos V:\
-       :tc=altos3:
-# (altos7: had unknown capabilities:
-#      :GG#0:GS=\EH^B:GE=\EH^C:\
-#      :G1=3:G2=2:G3=1:G4=5:GD=0:GU==:GH=\072:\
-#      :GV=6:GR=4:GL=9:GC=8:GI=\EH8:GF=\EH7:\
-#      :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
-#      :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
-#      :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
-#      :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
-#      :PD=\EK:PU=\EJ:PN=\Ed#:PS=\EJ:DL=\ER:\
-# Comparison with the k* capabilities makes it obvious that the c* things are
-# shift keys.  I have renamed them to keys 32 and up accordingly -- esr)
-altos7|alt7|altos VII:\
-       :am:mi:\
-       :co#80:li#24:sg#0:\
-       :*5=^Am\r:*8=^An\r:DL=\ER:FM=^A`\r:FN=^Aa\r:FO=^Ab\r:\
-       :FP=^Ac\r:FQ=^Ad\r:FR=^Ae\r:FS=^Af\r:FT=^Ag\r:\
-       :FU=^Ah\r:FV=^Ai\r:FW=^Aj\r:FX=^Ak\r:al=\EE:cd=\EY:\
-       :ce=\ET:cl=\E+^^:cm=\E=%+ %+ :cr=^M:dc=\EW:do=^J:\
-       :ei=\Er:ho=^^:im=\Eq:\
-       :is=\E`\072\Ee(\EO\Ee6\Ec41\E~4\Ec21\Eu\E~2:k0=^AI\r:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=^AJ\r:\
-       :kB=^AK\r:kC=^AL\r:kD=^AM\r:kE=^AN\r:kF=^AO\r:kb=^H:\
-       :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:mb=\EG2:md=\EGt:\
-       :me=\EG0:mh=\EGp:mk=\EG1:mr=\EG4:nd=^L:nw=^M^J:\
-       :se=\EG0:sf=^J:so=\EG4:sr=\Ej:ta=^I:ue=\EG0:up=^K:\
-       :us=\EG8:
-altos7pc|alt7pc|altos PC VII:\
-       :@7=\ET:tc=altos7:
-
-#### Hewlett-Packard (hp)
-#
-#      Hewlett-Packard
-#      8000 Foothills Blvd 
-#      Roseville, CA 95747
-#      Vox: 1-(916)-785-4363   (Technical response line for VDTs)
-#           1-(800)-633-3600   (General customer support)
-#
-
-# Generic HP terminal - this should (hopefully) work on any HP terminal.
-hpgeneric|hewlett-packar|hewlettpackard:\
-       :am:da:db:mi:xs:\
-       :co#80:li#24:lm#0:vt#6:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:\
-       :cm=\E&a%r%dc%dY:cr=^M:ct=\E3:cv=\E&a%dY:dc=\EP:\
-       :dl=\EM:do=^J:ei=\ER:im=\EQ:kB=\Ei:kb=^H:le=^H:\
-       :nd=\EC:se=\E&d@:sf=^J:so=\E&dJ:st=\E1:ta=^I:\
-       :ue=\E&d@:up=\EA:us=\E&dD:
-
-hp110|hewlett-packard model 110 portable:\
-       :li#16:\
-       :tc=hpgeneric:
-
-hp+pfk+cr|hp function keys with CR:\
-       :k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:\
-       :k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:
-
-hp+pfk-cr|hp function keys w/o CR:\
-       :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:\
-       :k8=\Ew:
-
-# The 2621s use the same keys for the arrows and function keys, 
-# but not separate escape sequences. These definitions allow the 
-# user to use those keys as arrow keys rather than as function 
-# keys.
-hp+pfk+arrows|hp alternate arrow definitions:\
-       :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:kF=\Er\r:kH=\Eq\r:\
-       :kR=\Es\r:kd=\Ew\r:kh=\Ep\r:kl=\Eu\r:kr=\Ev\r:\
-       :ku=\Et\r:
-
-hp+arrows|hp arrow definitions:\
-       :kF=\ES:kH=\EF:kR=\ET:kd=\EB:kh=\Eh:kl=\ED:kr=\EC:\
-       :ku=\EA:
-
-# Generic stuff from the HP 262x series
-#
-hp262x:\
-       :xs:\
-       :cd=\EJ:dc=\EP:ip=:kA=\EL:kD=\EP:kE=\EK:kF=\ES:\
-       :kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:kR=\ET:kS=\EJ:\
-       :kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:\
-       :ku=\EA:mb=\E&dA:me=\E&d@:mk=\E&dS:mr=\E&dB:\
-       :..sa=\E&d%'@'%?%p1%t%'B'%|%;%?%p2%t%'D'%|%;%?%p3%t%'B'%|%;%?%p4%t%'A'%|%;%c:\
-       :se=\E&d@:sf=\ES:so=\E&dB:ta=\011:ue=\E&d@:us=\E&dD:
-# Note: no "home" on HP's since that homes to top of memory, not screen.
-# Due to severe 2621 braindamage, the only way to get the arrow keys to
-# transmit anything at all is to turn on the function key labels
-# with smkx, and even then the user has to hold down shift!
-# The default 2621 turns off the labels except when it has to to 
-# enable the function keys. If your installation prefers labels 
-# on all the time, or off all the time (at the "expense" of the 
-# function keys) move the # 2621-nl or 2621-wl labels to the 
-# front using reorder.
-# Note: there are newer ROMs for 2621's that allow you to set 
-# strap A so the regular arrow keys xmit \EA, etc, as with the 
-# 2645. However, even with this strap set, the terminal stops 
-# xmitting if you reset it, until you unset and reset the strap!
-# Since there is no way to set/unset the strap with an escape 
-# sequence, we don't use it in the default.
-# If you like, you can use 2621-ba (braindmaged arrow keys).
-hp2621-ba|2621-ba|2621 w/new rom and strap A set:\
-       :ke@:ks@:tc=hp+arrows:tc=hp2621:
-
-# 2621 with function labels. Most of the time they are off,
-# but inside vi, the function key labels appear. You have to
-# hold down shift to get them to xmit.
-hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels:\
-       :is=\E&jA\r:ke=\E&jA:tc=hp2621-fl:
-
-# 2621 with function labels.  Most of the time they are off,
-# but inside vi, the function key labels appear.  You have to
-# hold down shift to get them to xmit.
-hp2621-fl|2621-fl|hp 2621:\
-       :xo:xs@:\
-       :pb#19200:\
-       :bt=\Ei:cm=\E&a%r%dc%dY:dc=\EP:ip=:is=\E&j@\r:\
-       :ke=\E&j@:ks=\E&jB:me=\E&d@:se=\E&d@:so=\E&dD:\
-       :ta=\011:ue=\E&d@:us=\E&dD:tc=hp+pfk+cr:tc=hpgeneric:
-
-# To use 2621p printer, setenv TERM=2621p, PRINTER=2612p
-hp2621p|2621p|2621P|hp 2621 with printer:\
-       :pf=\E&p13C:po=\E&p11C:tc=hp2621:
-
-hp2621p-a|2621p-a|hp2621p with fn as arrows:\
-       :tc=hp+pfk+arrows:tc=hp2621p:
-
-# hp2621 with k45 keyboard
-hp2621-k45|hp2621k45|2621k45|k45|hp 2621 with 45 keyboard:\
-       :kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:\
-       :ks=\E&s1A:ku=\EA:tc=hp2621:
-
-# This terminal should be used at 4800 baud or less. It needs padding for
-# plain characters at 9600, I guessed at an appropriate cr delay.  It really
-# wants ^E/^F handshaking, but that doesn't work well even if you write
-# software to support it.
-hp2645|hp45|hp 264x series:\
-       :pb#9600:\
-       :cr=\r:kA=\EL:kD=\EP:kE=\EK:kF=\ES:kI=\EQ:kL=\EM:\
-       :kM=\ER:kN=\EU:kP=\EV:kR=\ET:kS=\EJ:kT=\E1:kd=\EB:\
-       :ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:kt=\E2:\
-       :ku=\EA:mb=\E&dA:me=\E&d@:mh=\E&dH:mr=\E&dB:\
-       :..sa=\E&d%'@'%?%p1%t%'B'%|%;%?%p2%t%'D'%|%;%?%p3%t%'B'%|%;%?%p4%t%'A'%|%;%?%p5%t%'H'%|%;%?%p6%t%'B'%|%;%c:\
-       :us=\E&dD:tc=hpgeneric:
-
-# Hp 2624 B with 4 or 10 pages of memory.
-# 
-# Some assumptions are made with this entry. These settings are 
-# NOT set up by the initialization strings.
-# 
-# Port Configuration
-#      RecvPace=Xon/Xoff
-#      XmitPace=Xon/Xoff
-#      StripNulDel=Yes
-# 
-# Terminal Configuration
-#      InhHndShk=Yes
-#      InhDC2=Yes
-#      XmitFnctn(A)=No
-#      InhEolWrp=No
-# 
-# Note: the 2624 DOES have a true "home," believe it or not!
-# 
-# The 2624 has an "error line" to which messages can be sent. 
-# This is CLOSE to what is expected for a "status line". However,
-# after a message is sent to the "error line", the next carriage 
-# return is EATEN and the "error line" is turned back off again! 
-# So I guess we can't define hs, eslok, wsl, dsl, fsl, tsl
-# 
-# This entry supports emacs (and any other program that uses raw 
-# mode) at 4800 baud and less. I couldn't get the padding right 
-# for 9.6.
-#
-hp2624|hp2624a|hp2624b|hp2624b-4p|2624-4p|2624|2624a|2624b|Hewlett Packard 2624 B:\
-       :da:db:\
-       :lm#96:\
-       :vb=\E&w13F\200\200\200\200\E&w12F\200\200\200\200\E&w13F\200\200\200\200\E&w12F:tc=hp+labels:tc=scrhp:
-
-# These attributes are not set above:
-# 
-# civis, cmdch, cnorm, csr, cub, cud, cuf, cuu, cvvis, dch, dl, 
-# ech, eo, eslok, fsl, gn, hc, hd, hu, hz, ich, ich1, if, il, in,
-# indn, iprog, is2, is3, it, ka1, ka3, kb2, kc1, kc3, kclr, kf0, 
-# kf10, khts, km, ktbc, lf0, lf1, lf10, lf2, lf3, lf4, lf5, lf6, 
-# lf7, lf8, lf9, mc5p, os, pad, pfkey*, pfloc*, pfx*, prot, rc, 
-# rep, rin, rmcup, rmdc, rmm, rs2, rs3, sc, smcup, smdc, smm, tsl,
-# uc, ul, vt, wind, wsl, xenl, xmc, xsb, xt
-# 
-# not needed if tset is used:
-#      if=/usr/lib/tabset/std,
-# 
-# This hp2626 entry does not use any of the fancy windowing stuff 
-# of the 2626.
-# 
-# Indeed, terminfo does not yet handle such stuff. Since changing 
-# any window clears memory, it is probably not possible to use 
-# this for screen opt.
-# 
-# ed is incredibly slow most of the time - I am guessing at the 
-# exact padding. Since the terminal uses xoff/xon this is intended 
-# only for cost computation, so that the terminal will prefer el 
-# or even dl1 which is probably faster!
-# 
-# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only 
-# extra slow # on the last line of the window. 
-# 
-# The padding probably should be changed.
-#
-hp2626|hp2626a|hp2626p|2626|2626a|2626p|2626A|2626P|hp 2626:\
-       :da:db:\
-       :lm#0:pb#19200:\
-       :SF=\E&r%dD:SR=\E&r%dU:cd=\ED\EJ\EC:ip=:is=\E&j@\r:tc=hp+pfk+cr:tc=hp+labels:tc=scrhp:
-
-# This entry is for sysline. It allocates a 23 line window with 
-# a 115 line workspace for regular use, and a 1 line window for 
-# the status line.
-# 
-# This assumes port 2 is being used.
-# Turn off horizontal line, Create ws #1 with 115 lines,
-# Create ws #2 with 1 line, Create window #1 lines 1-23,
-# Create window #2 lines 24-24, Attach cursor to workspace #1.
-# Note that this clears the tabs so it must be done by tset before
-# it sets the tabs.
-#
-hp2626-s|2626-s|hp 2626 using only 23 lines:\
-       :es:hs:\
-       :li#23:\
-       :fs=\E&d@\E&w7f2p1I\E&w4f1I:\
-       :i1=\E&q3t0{0H \E&w0f115n1I \E&w0f1n2I\n\E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \r:\
-       :ts=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC:tc=hp2626:
-# Force terminal back to 24 lines after being 23.
-#
-hp2626-ns|2626-ns|hp 2626 using all 24 lines:\
-       :i1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I\n\E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r:tc=hp2626:
-# Various entries useful for small windows on 2626.
-#
-hp2626-12|2626-12:\
-       :li#12:\
-       :tc=hp2626:
-hp2626-12x40|2626-12x40:\
-       :co#40:li#12:\
-       :tc=hp2626:
-hp2626-x40|2626-x40:\
-       :co#40:\
-       :tc=hp2626:
-hp2626-12-s|2626-12-s:\
-       :li#11:\
-       :tc=hp2626-s:
-# You should use this terminal at 4800 baud or less.
-#
-hp2648|hp2648a|2648a|2648A|2648|HP 2648a graphics terminal:\
-       :cl=\EH\EJ:cm=\E&a%r%dc%dY:dc=\EP:ip=:tc=hp2645:
-
-# 2640a doesn't have the Y cursor addressing feature, and C is 
-# memory relative instead of screen relative, as we need.
-#
-hp2640a|2640a|hp 2640a:\
-       :cm@:ke@:ks@:tc=hp2645:
-
-hp2640b|hp2644a|hp 264x series:\
-       :ke@:ks@:tc=hp2645:
-
-# 2621 using all 48 lines of memory, only 24 visible at any time.  
-#
-hp2621-48|48 line 2621:\
-       :li#48:\
-       :cm=\E&a%r%dc%dR:cv=\E&a%dR:ho=\EH:tc=hp2621:
-
-# 2621 with no labels ever. Also prevents vi delays on escape.
-#
-hp2621-nl|hp 2621 with no labels:\
-       :kd@:ke@:kh@:kl@:kr@:ks@:ku@:tc=hp2621-fl:
-
-# Needed for UCB ARPAVAX console, since lsi-11 expands tabs 
-# (wrong).
-#
-hp2621-nt|hp 2621 w/no tabs:\
-       :ta@:tc=hp2621:
-
-# The HP 150 terminal is a fairly vanilla HP terminal, with the 
-# clreol standout problem. It also has graphics capabilities and 
-# a touch screen, which we don't describe here.
-hp150|hewlett packard Model 150:\
-       :tc=hp2622:
-
-# Hp 2382a terminals, "the little ones." They don't have any 
-# alternate character set support and sending out ^N/^O will 
-# leave the screen blank.
-hp2382a|hp2382|hewlett packard 2382a:\
-       :da:db:\
-       :lh#1:lm#48:\
-       :ac@:ae@:as@:me=\E&d@:\
-       :..pn=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s:\
-       :..sa=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%'@'%+%e%'S'%;%e%?%ga%t%ga%'@'%+%e%'@'%;%;%c:tc=hp+labels:tc=scrhp:
-
-hp2621-a|hp2621a-a|2621-a|hp2621 with fn as arrows:\
-       :tc=hp+pfk+arrows:tc=hp2621-fl:
-
-# newer hewlett packard terminals
-
-newhpkeyboard|generic entry for HP extended keyboard:\
-       :kA=\EL:kB=\Ei:kC=\EJ:kD=\EP:kE=\EK:kF=\ET:kH=\EF:\
-       :kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:kR=\ES:kS=\EJ:\
-       :kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:\
-       :ks=\E&s1A:ku=\EA:tc=hp+pfk-cr:
-
-newhp|generic entry for new hewlett packard terminals:\
-       :am:bw:mi:xo:xs:\
-       :co#80:li#24:pb#4800:\
-       :ac=T1R!U2S"W3O#V4P$t5u6w7v8\072'9(LQKWlRkT5I3@2[MAJSmFjGdHQ;Y+Z*X\0724>q\\\054x.n/:\
-       :ae=^O:al=\EL:as=^N:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:cr=^M:\
-       :ct=\E3:dc=\EP:dl=\EM:do=^J:ei=\ER:i1=\E&jB:im=\EQ:\
-       :ip=:le=^H:mb=\E&dA:md=\E&dF:me=\E&d@\017:mh=\E&dH:\
-       :mk=\E&dS:mr=\E&dB:nd=\EC:nw=^M^J:\
-       :..pk=\E&f0a%p1%dk0d%p2%l%dL%p2%s:\
-       :..pl=\E&f1a%p1%dk0d%p2%l%dL%p2%s:\
-       :..px=\E&f2a%p1%dk0d%p2%l%dL%p2%s:r1=\Eg:\
-       :..sa=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%'@'%+%e%'S'%;%e%?%ga%t%ga%'@'%+%e%'@'%;%;%c%?%p9%t\016%e\017%;:\
-       :se=\E&d@:sf=^J:so=\E&dJ:sr=\ET:st=\E1:ta=\011:\
-       :ue=\E&d@:up=\EA:us=\E&dD:tc=newhpkeyboard:
-
-memhp|memory relative addressing for new HP ttys:\
-       :vt#6:\
-       :CM=\E&a%p1%dr%p2%dC:DO=\E&a+%dR:LE=\E&a-%dC:\
-       :RI=\E&a+%dC:UP=\E&a-%dR:ch=\E&a%dC:cl=\EH\EJ:\
-       :cm=\E&a%dr%dC:cv=\E&a%dR:ho=\EH:ll=\E&a23R\r:tc=newhp:
-
-scrhp|screen relative addressing for new HP ttys:\
-       :CM=\E&a%p1%dr%p2%dC:DO=\E&a+%dR:LE=\E&a-%dC:\
-       :RI=\E&a+%dC:UP=\E&a-%dR:ch=\E&a%dC:cl=\E&a0c0Y\EJ:\
-       :cm=\E&a%dy%dC:cv=\E&a%dY:ho=\E&a0y0C:ll=\E&a0y0C\EA:tc=newhp:
-
-hp+labels|"standard" label info for new HP ttys:\
-       :Nl#8:lh#2:lw#8:\
-       :LO=\E&jB:\
-       :..pn=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s:
-
-hp+printer| "standard" printer info for HP ttys:\
-       :ff=\E&p4u0C:pf=\E&p13C:po=\E&p11C:ps=\EH\E&p4dF:
-
-
-# The new hp2621b is kind of a cross between the old 2621 and the
-# new 262x series of machines. It has dip-switched options. 
-# The firmware has a bug in it such that if you give it a null 
-# length label, the following character is eaten!
-hp2621b|2621b|hp 2621b with old style keyboard:\
-       :Nl#8:lh#1:lm#48:lw#8:\
-       :LO=\E&jB:kF=\ET:kH=\EF:kR=\ES:kd=\EB:kh=\Eh:kl=\ED:\
-       :kr=\EC:ku=\EA:\
-       :..pn=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c%;%p2%s\E%'o'%p1%+%c\r:tc=hp2621:
-
-hp2621b-p|2621b-p|hp 2621b with printer:\
-       :tc=hp+printer:tc=hp2621b:
-
-# hp2621b - new 2621b with new extended keyboard
-# these are closer to the new 26xx series than the other 2621b
-hp2621b-kx|2621b-kx|hp 2621b with extended keyboard:\
-       :tc=newhpkeyboard:tc=hp2621b:
-
-hp2621b-kx-p|2621b-kx-p|hp 2621b with new keyboard & printer:\
-       :tc=hp+printer:tc=hp2621b-kx:
-
-# Some assumptions are made in the following entries.
-# These settings are NOT set up by the initialization strings.
-# 
-#    Port Configuration
-# RecvPace=Xon/Xoff    XmitPace=Xon/Xoff       StripNulDel=Yes
-# 
-#    Terminal Configuration
-# InhHndShk(G)=Yes     InhDC2(H)=Yes
-# XmitFnctn(A)=No              InhEolWrp=No
-#
-# 
-# Hp 2622a & hp2623a display and graphics terminals
-#
-hp2622|hp2622a|2622|2622a|hp 2622:\
-       :da:db:\
-       :lm#0:pb#19200:\
-       :is=\E&dj@\r:tc=hp+pfk+cr:tc=hp+labels:tc=scrhp:
-
-# The 2623 is a 2622 with extra graphics hardware.
-hp2623|hp2623a|2623|2623a|hp 2623:\
-       :tc=hp2622:
-
-
-hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer:\
-       :tc=hp+printer:tc=hp2624:
-
-# The hewlett packard B can have an optional extra 6 pages of 
-# memory.
-hp2624-10p|hp2624a-10p|hp2624b-10p|2624-10p|2624a-10p|2624b-10p|hewlett packard 2624 B w/ 10 pages of memory:\
-       :lm#240:\
-       :tc=hp2624:
-
-hp2624b-10p-p|hewlett packard 2624 B w/ extra memory & printer:\
-       :lm#240:\
-       :tc=hp2624b-p:
-
-# Color manipulations for HP terminals
-
-hp+color|hp with colors:\
-       :cc:\
-       :Co#16:NC#17:pa#7:\
-       :..Ip=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a\n%?%p3%{1000}%=%t1%e.%p3%d%;b\n%?%p4%{1000}%=%t1%e.%p4%d%;c\n%?%p5%{1000}%=%t1%e.%p5%d%;x\n%?%p6%{1000}%=%t1%e.%p6%d%;y\n%?%p7%{1000}%=%t1%e.%p7%d%;z\n%p1%dI:\
-       :oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5I\E&v1b1c6I\E&v1x1y7I:\
-       :op=\E&v0S:sp=\E&v%dS:
-
-# is2 set screen to be 80 columns wide
-hp2397a|2397a|hp2397|2397|hewlett packard 2397A color terminal:\
-       :is=\E&w6f80X:tc=memhp:tc=hp+labels:tc=hp+color:
-
-#  HP 700/44 Setup parameters:  
-# Terminal Mode                HP-PCterm
-# Inhibit Auto Wrap    NO
-# Status Line          Host Writable
-# PC Character Set     YES
-# Twenty-Five Line Mode        YES
-# XON/XOFF             @128 or 64 (sc)
-# Keycode Mode                 NO   or YES (sc)
-# Backspace Key                BS or BS/DEL
-#
-# is2  sets pcterm; autowrap; 25 lines; pc char set; prog DEL key; \E\\?
-# does not turn off keycode mode
-# smsc sets alternate start/stop; keycode on
-#
-hpansi|hp700|hewlett packard 700/44 in HP-PCterm mode:\
-       :am:eo:xn:xo:\
-       :co#80:li#25:\
-       :@7=\E[4~:S4=\E[>11h\EPO**x0/65;1/67\E\\:\
-       :S5=\E[>11l\EP1**x0/11;1/13\E[0m\E\\:XF=g:XN=e:\
-       :ac=k\277l\332m\300j\331n\305w\302q\304u\264t\303v\301x\263:\
-       :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:ei=:\
-       :ho=\E[H:ic=\E[@:im=:\
-       :is=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\:\
-       :k1=\E[17~:k2=\E[18~:k3=\E[19~:k4=\E[20~:k5=\E[21~:\
-       :k6=\E[23~:k7=\E[24~:k8=\E[25~:k9=\E[26~:k;=\E[28~:\
-       :kB=\E[Z:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:kh=\E[1~:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:nd=\E[C:se=\E[m:\
-       :sf=^J:so=\E[7m:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\
-       :ve=\E[?25h:vi=\E[?25l:
-#
-hp2392|2392|2393|239x series:\
-       :co#80:\
-       :bt=\Ei:cm=\E&a%dy%dC:cv=\E&a%dY:im=\EQ:k1=\Ep\r:\
-       :k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:\
-       :k7=\Ev\r:k8=\Ew\r:kF=\EU:kN=\Eu:kP=\Ev:kR=\EV:\
-       :kh=\Eh:ue=\E&d@:us=\E&dD:tc=hpsub:
-
-2392nam|hp2392nam|HP 239x series with no auto margins:\
-       :am@:\
-       :tc=hp2392:
-
-hpsub|hp terminals -- capability subset:\
-       :am:da:db:mi:xo:xs:\
-       :li#24:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:\
-       :cr=^M:dc=\EP:dl=\EM:do=\EB:ei=\ER:\
-       :if=/usr/lib/tabset/stdcrt:is=\E&s1A\E<\E&k0\\:kb=^H:\
-       :kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:\
-       :ku=\EA:le=^H:nd=\EC:se=\E&d@:sf=^J:so=\E&dB:ta=^I:\
-       :up=\EA:
-
-# HP 236 console
-# From: <ddavis@ic.berkeley.edu>
-hp236|hp236 internal terminal emulator:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\EG:ce=\EK:cl=\EF:cm=\EE%+ %+ :dc=\EJ:dl=\EH:ei=:\
-       :ic=\EI:im=:se=\ECI:so=\EBI:up=^K:ve=\EDE:vs=\EDB:
-
-# This works on a hp300 console running Utah 4.3 BSD
-# From: Craig Leres <leres@okeeffe.berkeley.edu>
-hp300h|HP Catseye console:\
-       :am:bs:da:db:mi:xs:\
-       :co#128:li#51:lm#0:sg#0:\
-       :al=\EL:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:\
-       :cl=\E&a0y0C\EJ:cm=\E&a%dy%dC:cr=^M:ct=\E3:\
-       :cv=\E&a%dY:dc=\EP:dl=\EM:do=\EB:ei=\ER:\
-       :if=/usr/share/tabset/stdcrt:im=\EQ:kb=^H:kd=\EB:\
-       :ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:ku=\EA:\
-       :le=^H:me=\E&d@:nd=\EC:se=\E&d@:sf=^J:so=\E&dB:ta=^I:\
-       :ue=\E&d@:up=\EA:us=\E&dD:
-# From: Greg Couch <gregc@ernie.berkeley.edu>
-# (hp9837: removed obsolete ":ko=ce,cd,al,im,dl,dc:";
-# mapped ":pt:" to ":it#8:" -- esr)
-hp9837|hp98720|hp98721|HP 9000/300 workstations:\
-       :am:bs:da:db:mi:pt:xs:\
-       :co#128:it#8:li#46:lm#0:\
-       :al=\EL:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:\
-       :cl=\E&a0y0C\EJ:cm=\E&a%dy%dC:ct=\E3:cv=\E&a%dY:\
-       :dc=\EP:dl=\EM:do=\EB:ei=\ER:im=\EQ:is=\E&v0m1b0i&j@:\
-       :kN=\EU:kP=\EV:kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:\
-       :kr=\EC:ks=\E&s1A:ku=\EA:le=^H:me=\E&d@:nd=\EC:\
-       :se=\E&v0S:sf=^J:so=\E&v5S:st=\E1:ue=\E&d@:up=\EA:\
-       :us=\E&dD:
-# From: Charles A. Finnell of MITRE <finnell@mitre.org>, developed 07SEP90
-# (hp98550: removed obsolete ":kn#12:ko=al,cd,ce,ct,dc,dl,do,ei,im,nd,st,up:";
-# mapped ":pt:" to ":it#8:" -- esr)
-hp98550|hp98550a|HP 9000 Series 300 color console:\
-       :am:bs:da:db:mi:pt:xs:\
-       :co#128:it#8:li#49:lm#0:\
-       :ae=^O:al=\EL:as=^N:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:\
-       :ch=\E&a%dC:cl=\EH\EJ:cm=\E&a%dy%dC:cr=^M:ct=\E3:\
-       :cv=\E&a%dY:dc=\EP:dl=\EM:do=^J:ei=\ER:\
-       :if=/usr/share/tabset/9837:im=\EQ:k1=\Ep:k2=\Eq:\
-       :k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kA=\EL:\
-       :kC=\EJ:kD=\EP:kE=\EK:kF=\ES:kH=\EF:kI=\EQ:kL=\EM:\
-       :kM=\ER:kN=\EU:kP=\EV:kR=\ET:kS=\EJ:kT=\E1:ka=\E3:\
-       :kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:\
-       :ks=\E&s1A:kt=\E2:ku=\EA:le=^H:mb=\E&dA:md=\E&dJ:\
-       :me=\E&d@:mh=\E&dH:mk=\E&ds:mr=\E&dJ:nd=\EC:se=\E&d@:\
-       :sf=^J:so=\E&dJ:st=\E1:ta=^I:ue=\E&d@:up=\EA:\
-       :us=\E&dD:ve=\E*dQ:vi=\E*dR:
-# From: Victor Duchovni <vic@fine.princeton.edu>
-# (hp700-wy: removed obsolete ":ko=cl,ho,ce,bt,ta,im,ei,ce,cd:nl=^J:";
-# mapped ":pt:" to ":it#8:" -- esr)
-hp700-wy|HP700/41 emulating wyse30:\
-       :am:bs:bw:mi:ms:pt:\
-       :co#80:it#8:li#24:sg#1:ug#1:\
-       :al=0.7*\EE:bl=^G:bt=\EI:cd=\EY:ce=10\ET:cl=^Z:\
-       :cm=\E=%+ %+ :cr=^M:ct=\E0:cv=\E[%+ :dc=\EW:dl=\ER:\
-       :do=^V:ei=\Er:ho=^^:if=/usr/share/tabset/hp700-wy:\
-       :im=\Eq:is=\E~"\EC\Er\E(\EG0\003\E`9\E`1:kb=\177:\
-       :kd=^V:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=^^^K:nd=^L:\
-       :rs=\E~"\EC\Er\E(\EG0\003\E`9\E`1:se=10\EG0:\
-       :so=10\EG4:sr=\Ej:st=\E1:ue=10\EG0:up=^K:us=10\EG8:
-hp70092|70092a|70092A|hp70092a|hp70092A|Hewlett-Packard 70092:\
-       :am:da:db:xs:\
-       :Nl#8:co#80:lh#2:li#24:lm#0:lw#8:\
-       :LF=\E&j@:LO=\E&jB:ae=^O:al=\EL:as=^N:bl=^G:bt=\Ei:\
-       :ce=\EK:ch=\E&a%dC:cl=\E&a0y0C\EJ:cm=\E&a%dy%dC:\
-       :cr=^M:ct=\E3:cv=\E&a%dY:dc=\EP:dl=\EM:do=\EB:ei=\ER:\
-       :im=\EQ:k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:\
-       :k7=\Ev:k8=\Ew:kA=\EL:kC=\EJ:kD=\EP:kE=\EK:kF=\ES:\
-       :kH=\EF:kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:kR=\ET:\
-       :kS=\EJ:kT=\E1:ka=\E3:kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:\
-       :kl=\ED:kr=\EC:ks=\E&s1A:kt=\E2:ku=\EA:le=^H:\
-       :mb=\E&dA:md=\E&dB:me=\E&d@:mh=\E&dH:mr=\E&dB:nd=\EC:\
-       :se=\E&d@:so=\E&dJ:sr=\ET:st=\E1:ta=^I:ue=\E&d@:\
-       :up=\EA:us=\E&dD:
-
-bobcat|sbobcat|HP 9000 model 300 console:\
-       :am:da:db:mi:xs:\
-       :co#128:it#8:li#47:sg#0:\
-       :al=10*\EL:bt=\Ei:cd=\EJ:ce=\EK:ch=6\E&a%dC:\
-       :cl=\EH\EJ:cm=6\E&a%dy%dC:cr=^M:cv=6\E&a%dY:dc=\EP:\
-       :dl=10*\EM:do=\EB:ei=\ER:im=\EQ:kb=^H:kd=\EB:\
-       :ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:ku=\EA:\
-       :le=^H:nd=\EC:nw=^M^J:se=\E&d@:sf=^J:so=\E&dB:ta=^I:\
-       :ue=\E&d@:up=\EA:us=\E&dD:
-gator-t|HP 9000 model 237 emulating extra-tall AAA:\
-       :bw:km:mi:ul:\
-       :co#128:it#8:li#94:\
-       :AL=1*\E[%dL:DC=4\E[%dP:DL=1*\E[%dM:IC=4\E[%d@:\
-       :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%i%d`:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:\
-       :do=^J:ei=:ho=\E[H:ic=\E[@:im=:kb=^H:kd=^J:kl=^H:\
-       :le=^H:me=\E[m:mr=\E[7m:nd=\E[C:nw=^M^J:\
-       :..rp=%.\E[%db:se=\E[m:so=\E[7m:ta=^I:ue=\E[m:up=\EM:\
-       :us=\E[4m:
-gator|HP 9000 model 237 emulating AAA:\
-       :bw:km:mi:ul:\
-       :co#128:it#8:li#47:\
-       :AL=1*\E[%dL:DC=4\E[%dP:DL=1*\E[%dM:IC=4\E[%d@:\
-       :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%i%d`:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:\
-       :do=^J:ei=:ho=\E[H:ic=\E[@:im=:kb=^H:kd=^J:kl=^H:\
-       :le=^H:me=\E[m:mr=\E[7m:nd=\E[C:nw=^M^J:\
-       :..rp=%.\E[%db:se=\E[m:so=\E[7m:ta=^I:ue=\E[m:up=\EM:\
-       :us=\E[4m:
-gator-52|HP 9000 model 237 emulating VT52:\
-       :co#128:it#8:li#47:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:..cm=\EY%+ %+ :cr=^M:\
-       :do=^J:ho=\EH:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\
-       :le=^H:nd=\EC:nw=^M^J:sr=\EI:ta=^I:up=\EA:
-gator-52t|HP 9000 model 237 emulating extra-tall VT52:\
-       :co#128:it#8:li#94:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:..cm=\EY%+ %+ :cr=^M:\
-       :do=^J:ho=\EH:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\
-       :le=^H:nd=\EC:nw=^M^J:sr=\EI:ta=^I:up=\EA:
-
-#### Honeywell-Bull
-#
-# From: Michael Haardt <michael@gandalf.moria> 11 Jan 93
-#
-
-# Honeywell Bull terminal.  Its cursor and function keys send single
-# control characters and it has standout/underline glitch.  Most programs
-# do not like these features/bugs.  This is a dumb mode for this terminal.
-# Visual bell is realized by flashing the "keyboard locked" LED.
-dku7003-dumb|Honeywell Bull DKU 7003, dumb mode:\
-       :co#80:li#25:\
-       :cd=^_:ce=\E[K:cl=^]^_:cm=\E[%i%d;%dH:cr=^M:do=^K:\
-       :ho=^]:kb=^H:kd=^K:kh=^]:kl=^Y:kr=^X:ku=^Z:le=^Y:\
-       :nd=^X:nw=^M^J:sf=^J:ta=^I:up=^Z:vb=\E[2h\E[2l:
-# Honeywell Bull terminal.  Its cursor and function keys send single
-# control characters and it has standout/underline glitch.  Most programs
-# do not like these features/bugs.  The following entry may cause problems
-# with some programs.  Visual bell is realized by flashing the "keyboard 
-# locked" LED.
-dku7003|Honeywell Bull DKU 7003, all features described:\
-       :ms:\
-       :co#80:li#25:sg#1:ug#1:\
-       :cd=^_:ce=\E[K:cl=^]^_:cm=\E[%i%d;%dH:cr=^M:do=^K:\
-       :ho=^]:kb=^H:kd=^K:kh=^]:kl=^Y:kr=^X:ku=^Z:le=^Y:\
-       :mb=\E[5m:md=\E[7m:me=\E[0m:mh=\E[2m:mr=\E[7m:nd=^X:\
-       :nw=^M^J:se=\E[0m:sf=^J:so=\E[7m:ta=^I:ue=\E[0m:\
-       :up=^Z:us=\E[4m:vb=\E[2h\E[2l:
-
-#### Lear-Siegler (adm)
-#
-# These guys are long since out of the terminals business, but
-# in 1995 many current terminals still have an adm type as one of their
-# emulations (usually their stupidest, and usually labelled adm3, though
-# these `adm3' emulations normally have adm3a+ capabilities).
-#
-
-adm1a|adm1|lsi adm1a:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cl=\E;:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:le=^H:\
-       :nd=^L:sf=^J:up=^K:
-adm2|lsi adm2:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :\
-       :cr=^M:dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:im=:\
-       :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:sf=^J:\
-       :up=^K:
-# (adm3: removed obsolete ":ma=^K^P:" -- esr)
-adm3|lsi adm3:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cl=^Z:cr=^M:do=^J:le=^H:sf=^J:
-# The following ADM-3A switch settings are assumed for normal operation:
-#      SPACE           U/L_DISP        CLR_SCRN        24_LINE
-#      CUR_CTL         LC_EN           AUTO_NL         FDX
-# Other switches may be set for operator convenience or communication
-# requirements.  I recommend
-#      DISABLE_KB_LOCK LOCAL_OFF       103             202_OFF
-#      ETX_OFF         EOT_OFF
-# (adm3a: removed obsolete ":ma=^K^P:" -- esr)
-adm3a|lsi adm3a:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cl=\032:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:le=^H:\
-       :nd=^L:sf=^J:up=^K:
-adm3a+|adm3aplus:\
-       :kd=^J:kl=^H:kr=^L:ku=^K:tc=adm3a:
-# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do+^J:" -- esr)
-adm5|lsi adm5:\
-       :sg#1:\
-       :bl=^G:cd=\EY:ce=\ET:cr=^M:do=^J:kb=^H:kh=^^:se=\EG:\
-       :so=\EG:tc=adm3a+:
-# From: <stephen%comp.lancs.ac.uk@ucl-cs.arpa>
-# (adm11: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
-adm11|lsi adm11:\
-       :am:bs:hs:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:do=^J:\
-       :ds=\Eh:fs=\E(\r:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:\
-       :nd=^L:se=\E(:so=\E):ts=\EF\E):up=^K:
-# From: Andrew Scott Beals <bandy@lll-crg.ARPA>
-# Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995
-# (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :" -- esr)
-adm12|lsi adm12:\
-       :am:bs:mi:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:\
-       :dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:is=\Eq:\
-       :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:\
-       :k5=^A5\r:k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:\
-       :kl=^H:kr=^L:ku=^K:le=^H:mk=\EG1:nd=^L:se=\EG0:\
-       :so=\EG4:ue=\EG0:up=^K:us=\EG8:
-# (adm20: removed obsolete ":kn#7:"; mapped ":pt:" to ":it#8:" -- esr)
-adm20|lear siegler adm20:\
-       :am:bs:pt:\
-       :co#80:it#8:li#24:\
-       :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^Z:\
-       :cm=\E=%i%r%+^_%+^_:cr=^M:dc=\EW:dl=\ER:ei=:ho=^^:\
-       :ic=\EQ:im=:k1=^A:k2=^B:k3=^W:k4=^D:k5=^E:k6=^X:\
-       :k7=^Z:nd=^L:se=\E(:so=\E):up=^K:
-adm21|lear siegler adm21:\
-       :sg#1:ug#1:\
-       :al=30*\EE:bl=^G:cd=\EY:ce=\ET:cr=^M:dc=\EW:\
-       :dl=30*\ER:do=^J:ei=:ic=\EQ:im=:kb=^H:kd=^J:kh=^^:\
-       :kl=^H:kr=^L:ku=^K:se=\EG0:sf=^J:so=\EG4:ue=\EG0:\
-       :us=\EG8:tc=adm3a:
-# (adm22: ":em=:" was an obvious typo for ":ei=:"; also,
-# removed obsolete ":kn#7:ko=ho:ma=j^Jk^P^K^Pl ^R^L^L :" -- esr)
-adm22|lsi adm22:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E+:\
-       :cm=\200\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=:\
-       :ho=^^:ic=\EQ:im=:\
-       :is=\E%\014\014\014\016\003\200\003\002\003\002\200\200\200\200\200\200\200\200\200\200\200:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:\
-       :ku=^K:l1=F1:l2=F2:l3=F3:l4=F4:l5=F5:l6=F6:l7=F7:\
-       :nd=^L:se=\E(:so=\E):ta=\Ei:up=^K:
-# If the adm31 gives you trouble with standout mode, check the DIP switch in
-# position 6, bank @c11, 25% from back end of the circuit board.  Should be
-# OFF.  If there is no such switch, you have an old adm31 and must use oadm31.
-# (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr)
-adm31|lsi adm31:\
-       :am:bs:mi:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :\
-       :cr=^M:dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:\
-       :is=\Eu\E0:k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:\
-       :k4=^A4\r:k5=^A5\r:k6=^A6\r:k7=^A7\r:k8=^A8\r:\
-       :k9=^A9\r:kd=^J:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:\
-       :se=\EG0:sf=^J:so=\EG1:ue=\EG0:up=^K:us=\EG1:
-oadm31|o31|old adm31:\
-       :so=\EG4:ue@:us@:tc=adm31:
-# ADM36 in native mode (not VT52 emulation mode)
-adm36|lsi adm36:\
-       :am:mi:\
-       :co#80:li#24:\
-       :al=\E[1L:cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:\
-       :cm=\E[%i%d;%dH:dl=\E[1M:ei=\E[4l:im=\E[4h:\
-       :is=\E[6;?7h\E[4;20;?1;?3;?6;?4l\E(B\E)B\E>:kd=\EB:\
-       :kl=\ED:kr=\EC:ku=\E[A:le=^H:nd=\E[D:up=\E[A:
-# (adm42: removed obsolete ":ma=^K^P:" -- esr)
-adm42|lsi adm42:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E;:\
-       :cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=\Er:\
-       :im=\Eq:ip=:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:\
-       :nd=^L:pc=\177:se=\EG0:sf=^J:so=\EG4:ta=^I:up=^K:\
-       :vs=\EC\E3 \E3(:
-# The following termcap for the Lear Siegler ADM-42 leaves the 
-# "system line" at the bottom of the screen blank (for those who 
-# find it distracting otherwise)
-adm42-nl|lsi adm-42 with no system line:\
-       :al=\EE\EF \011:bt=\EI\EF \011:cd=\EY\EF \011:\
-       :ce=\ET\EF \011:cl=\E;\EF \011:cm=\E=%+ %+ \EF \011:\
-       :dc=\EW\EF \011:dl=\ER\EF \011:ei=\Er\EF \011:\
-       :im=\Eq\EF \011:tc=adm42:
-
-#### Prime
-#
-# Yes, Prime makes terminals.  These entries were posted by Kevin J. Cummings
-# <cummings@primerd.Prime.COM> on 14 Dec 1992 and lightly edited by esr.
-
-pt100|pt200|wren|fenix|prime pt100/pt200:\
-       :am:bw:mi:ms:\
-       :co#80:it#8:li#24:\
-       :DC=\E[%dP:DL=\E[M:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
-       :UP=\E[%dA:al=\E[L\E[t:bt=\E[Z:cd=\E[J\E[r:\
-       :ce=\E[K\E[t:cl=\E?:cm=\E0%+!%+!:cr=^M:dc=\E[P:\
-       :do=\ED:ei=\E[4l:ho=\E$B:im=\E[4h:kb=^H:kd=\E[B:\
-       :ke=\E[>13l:kh=\E$A:kl=\E[D:kr=\E[C:ks=\E[>13h:\
-       :ku=\E[A:le=^H:nd=\E[C:nw=^M^J:se=\E[m:sf=^J:\
-       :so=\E[2;7m:ta=^I:\
-       :ti=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q:\
-       :ue=\E[m:up=\EM:us=\E[4m:\
-       :vb=\E$E\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E$P:
-pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode:\
-       :co#132:\
-       :cm=\E[%i%d;%dH:tc=pt100:
-pt250|Prime PT250:\
-       :so@:tc=pt100:
-pt250w|Prime PT250 in 132-column mode:\
-       :so@:tc=pt100w:
-
-#### Qume (qvt)
-#
-#      Qume, Inc.
-#      3475-A North 1st Street
-#      San Jose CA 95134
-#      Vox: (800)-457-4447
-#      Fax: (408)-473-1510
-#      Net: josed@techsupp.wyse.com (Jose D'Oliveira)
-#
-# Qume was bought by Wyse, but still (as of early 1995) has its own support
-# group and production division.
-#
-# Discontinued Qume models:
-#
-# The qvt101 and qvt102 listed here are long obsolete; so is the qvt101+
-# built to replace them, and a qvt119+ which was a 101+ with available wide
-# mode (132 columns).  There was a qvt103 which added vt100/vt131 emulations
-# and an ANSI-compatible qvt203 that replaced it.  Qume started producing
-# ANSI-compatible terminals with the qvt323 and qvt61.
-#
-# Current Qume models (as of February 1995):
-#
-# All current Qume terminals have ANSI-compatible operation modes.
-# Qume is still producing the qvt62, which features emulations for other
-# popular lines such as ADDS, and dual-host capabilities.  The qvt82 is
-# designed for use as a SCO ANSI terminal.  The qvt70 is a color terminal
-# with many emulatioms including Wyse370, Wyse 325, etc.  Their newest
-# model is the qvt520, which is vt420-compatible.
-#
-# There are some ancient printing Qume terminals under `Daisy Wheel Printers'
-
-qvt101|qvt108|qume qvt 101 and QVT 108:\
-       :sg#1:\
-       :se=\EG0:so=\EG4:tc=qvt101+:
-qvt101+|qvt101p|qume qvt 101 PLUS product:\
-       :am:bw:hs:ul:\
-       :co#80:li#24:sg#0:\
-       :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^Z:\
-       :cm=\E=%+ %+ :cr=^M:ct=\E3:dc=\EW:dl=\ER:do=^J:\
-       :ds=\Eg\Ef\r:ei=:fs=^M:ho=^^:ic=\EQ:im=:k1=^A@\r:\
-       :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
-       :k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:kB=\EI:\
-       :kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:\
-       :kr=^L:ku=^K:le=^H:nd=^L:pf=\EA:po=\E@:se=\E(:sf=^J:\
-       :so=\E0P\E):st=\E1:ta=^I:ts=\Eg\Ef:ue=\EG0:up=^K:\
-       :us=\EG8:vb=\Eb\Ed:ve=\E.4:vs=\E.2:
-qvt102|qume qvt 102 product:\
-       :ve=\E.:tc=qvt101:
-qvt103|qume qvt 103:\
-       :am:xn:xo:\
-       :co#80:it#8:li#24:vt#3:\
-       :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bl=^G:\
-       :cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
-       :cs=\E[%i%d;%dr:ct=\E[3g:do=^J:ho=\E[H:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-qvt103-w|qume qvt103 132 cols:\
-       :co#132:li#24:\
-       :r2=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=qvt103:
-qvt119+|qvt119p|qvt119|qume qvt 119 and 119PLUS terminals:\
-       :am:hs:mi:ms:\
-       :co#80:li#24:sg#0:\
-       :al=\EE:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E*1:\
-       :cm=\E=%+ %+ :cr=^M:ct=\E3:dc=\EW:dl=\ER:do=^J:\
-       :ds=\Eg\Ef\r:ei=\Er:fs=^M:ho=^^:im=\Eq:\
-       :is=\EDF\EC\EG0\Er\E(\E%EX:k0=^AI\r:k1=^A@\r:\
-       :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
-       :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^J:kh=^^:kl=^H:\
-       :kr=^L:ku=^K:le=^H:nd=^L:pf=\EA:po=\E@:se=\EG0:sf=^J:\
-       :so=\EG4:sr=\EJ:st=\E1:ta=^I:ts=\Eg\Ef:ue=\EG0:up=^K:\
-       :us=\EG8:vb=\En0\En1:ve=\E.4:vs=\E.2:
-qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines:\
-       :li#25:\
-       :tc=qvt119+:
-qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode:\
-       :co#132:\
-       :is=\EDF\EC\EG0\Er\E(\E%\EX\En4:tc=qvt119+:
-qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25:\
-       :li#25:\
-       :tc=qvt119+:
-qvt203|qvt203+|qume qvt 203 Plus:\
-       :am:xn:xo:\
-       :co#80:it#8:li#24:vt#3:\
-       :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:\
-       :bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:\
-       :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
-       :ei=\E[4l:ho=\E[H:im=\E[4h:ip=:k0=\E[29~:k1=\E[17~:\
-       :k2=\E[18~:k3=\E[19~:k4=\E[20~:k5=\E[21~:k6=\E[23~:\
-       :k7=\E[24~:k8=\E[25~:k9=\E[28~:kb=^H:kd=\EOB:\
-       :ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:\
-       :le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:\
-       :sc=\E7:se=\E[m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-qvt203-w|qvt203-w-am|qume qvt 203 PLUS in 132 cols (w/advanced video):\
-       :co#132:li#24:\
-       :r2=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=qvt203:
-#
-#      Since a command is present for enabling 25 data lines,
-#      a specific terminfo entry may be generated for the 203.
-#      If one is desired for the QVT 119 PLUS then 25 lines must
-#      be selected in the status line (setup line 9).
-#
-qvt203-25|QVT 203 PLUS with 25 by 80 column mode:\
-       :co#80:li#25:\
-       :is=\E[=40h\E[?3l:tc=qvt203:
-qvt203-25-w|QVT 203 PLUS with 25 by 132 columns:\
-       :co#132:li#25:\
-       :r2=\E[?3h\E[=40h:tc=qvt203:
-
-#### Televideo (tvi)
-#
-#      TeleVideo
-#      550 East Brokaw Road
-#      PO Box 49048    95161
-#      San Jose CA 95112
-#      Vox: (408)-954-8333
-#      Fax: (408)-954-0623
-#
-#
-# There are some tvi terminals that require incredible amounts of padding and
-# some that don't.  I'm assuming 912 and 920 are the old slow ones,
-# and 912b, 912c, 920b, 920c are the new ones that don't need padding.
-#
-# All of these terminals (912 to 970 and the tvipt) are discontinued.  Newer
-# Televideo terminals are ANSI and PC-ANSI compatible.
-
-tvi803|televideo 803:\
-       :cl=\E*:tc=tvi950:
-
-# Vanilla tvi910 -- W. Gish <cswarren@violet> 10/29/86
-# (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:";
-# mapped ":pt:" to ":it#8:"; added ":ug#0:" for terminfo translation;
-# added khome, cub1, cud1, ind, hpa, vpa, am, msgr from SCO entry -- esr)
-tvi910|televideo model 910:\
-       :am:bs:ms:pt:\
-       :co#80:it#8:li#24:sg#1:ug#0:\
-       :bl=^G:bt=\EI:cd=\EY:ce=\ET:ch=\E]%+ :cl=^Z:\
-       :cm=\E=%+ %+ :cr=^M:cv=\E[%+ :do=^J:ho=\E=\001\001:\
-       :if=/usr/share/tabset/stdcrt:k0=^AI\r:k1=^A@\r:\
-       :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
-       :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^J:kh=^^:kl=^H:\
-       :kr=^L:ku=^K:le=^H:nd=^L:se=\EG0:sf=^J:so=\EG4:\
-       :ue=\EG0:up=^K:us=\EG8:
-# From: Alan R. Rogers <rogers%albany@csnet-relay>
-# as subsequently hacked over by someone at SCO
-# (tvi910+: removed obsolete ":ma=^K^P^L :"; mapped ":pt:" to ":it#8:";
-# added ":ug#0:" for terminfo translation -- esr)
-tvi910+|910+|televideo 910+:\
-       :am:bs:ms:pt:\
-       :co#80:it#8:li#24:sg#1:ug#0:\
-       :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:ch=\E]%+ :cl=^Z:\
-       :cm=\E=%+ %+ :cr=^M:cv=\E[%+ :dc=\EW:dl=\ER:do=^J:\
-       :ei=:ho=^^:ic=\EQ:if=/usr/share/tabset/stdcrt:im=:\
-       :k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:k4=^AD\r:\
-       :k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:kb=^H:\
-       :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^M:ll=\E=7 :nd=^L:\
-       :se=\EG0:sf=^J:so=\EG4:ue=\EG0:up=^K:us=\EG8:
-
-# (tvi912: removed obsolete ":ma=^K^P^L :";
-# mapped ":pt:" to default tabs -- esr)
-tvi912|tvi920|old televideo 912:\
-       :am:bs:pt:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=\EE:bl=^G:cd=\Ey:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:\
-       :ct=\E3:dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:\
-       :if=/usr/share/tabset/stdcrt:im=:k0=^AI\r:k1=^A@\r:\
-       :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
-       :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^J:kl=^H:kr=^L:\
-       :ku=^K:le=^H:nd=^L:se=\Ek:sf=^J:so=\Ej:st=\E1:ta=^I:\
-       :ue=\Em:up=^K:us=\El:
-# the 912 has a <funct> key that's like shift: <funct>8 xmits "^A8\r".
-# The 920 has this plus real function keys that xmit different things.
-# Terminfo makes you use the funct key on the 912 but the real keys on the 920.
-tvi912c|tvi912b|912c|912b|tvi|new televideo 912:\
-       :al=\EE:dl=\ER:tc=tvi912:
-# set to page 1 when entering ex (\E-17 )
-# reset to page 0 when exiting ex (\E-07 )
-tvi912-2p|tvi920-2p|912-2p|920-2p|tvi-2p|televideo w/2 pages:\
-       :te=\E-07 :ti=\E-17 :tc=tvi912:
-# We got some new tvi912c terminals that act really weird on the regular 
-# termcap, so one of our gurus worked this up. Seems that cursor 
-# addressing is broken.
-tvi912cc|tvi912 at cowell college:\
-       :cm@:tc=tvi912c:
-
-tvi920b|tvi920c|new televideo 920:\
-       :al=\EE:dl=\ER:k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
-       :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:\
-       :k9=^AH\r:tc=tvi912:
-
-tvi924|televideo tvi924:\
-       :am:bw:hs:in:mi:ms:xn:xo:\
-       :co#80:it#8:li#24:sg#0:ws#80:\
-       :F1=^AK\r:F2=^AL\r:F3=^AM\r:F4=^AN\r:F5=^AO\r:al=\EE:\
-       :bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E*0:cm=\E=%+ %+ :\
-       :cr=^M:cs=\E_%+ %+ :ct=\E3:dc=\EW:dl=\ER:do=^V:\
-       :ds=\Es0:ei=:fs=^Y:ho=^^:\
-       :i1=\017\E%\E'\E(\EDF\EC\EG0\EN0\Es0\Ev0:ic=\EQ:\
-       :if=/usr/lib/tabset/stdcrt:im=:k0=^A@\r:k1=^AA\r:\
-       :k2=^AB\r:k3=^AC\r:k4=^AD\r:k5=^AE\r:k6=^AF\r:\
-       :k7=^AG\r:k8=^AH\r:k9=^AI\r:k;=^AJ\r:kA=\EE:kC=\E*0:\
-       :kD=\EW:kE=\Et:kI=\EQ:kL=\ER:kS=\Ey:kb=^H:kd=^V:\
-       :kh=^^:kl=^H:kr=^L:ku=^K:l0=F1:l1=F2:l2=F3:l3=F4:\
-       :l4=F5:l5=F6:l6=F7:l7=F8:l8=F9:l9=F10:la=F11:le=^H:\
-       :mb=\EG2:me=\EG0:mk=\EG1:nd=^L:pk=\E|%+1%s\031:\
-       :se=\EG0:sf=^J:so=\EG4:sr=\Ej:st=\E1:ta=^I:ts=\Ef:\
-       :ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:ve=\E.3:vi=\E.0:\
-       :vs=\E.1:
-tvi924vb|924vb|televideo model 924 visual bells:\
-       :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:tc=tvi924:
-
-tvi925|925|televideo 925:\
-       :am:bw:hs:ul:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^Z:\
-       :cm=\E=%+ %+ :cr=^M:ct=\E3:dc=\EW:dl=\ER:do=^V:\
-       :ds=\Eh:ei=:fs=^M\Eg:ho=^^:ic=\EQ:im=:k0=^AI\r:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:kC=^Z:\
-       :kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:kd=^V:\
-       :kh=^^:kl=^H:kr=^L:ku=^K:le=^H:se=\EG0:sf=^J:so=\EG4:\
-       :st=\E1:ta=^I:ts=\Eh\Ef:ue=\EG0:up=^K:us=\EG8:\
-       :vb=\Eb\Ed:ve=\E.4:vs=\E.2:
-tvi925vb|925vb|televideo model 925 visual bells:\
-       :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:tc=tvi925:
-# Since the 925 uses a character position to store the escape sequences to go
-# in and out of both stand out and underline modes, screen positioning is
-# difficult.  The following 925 entries don't use these modes.
-tvi925n|925n|televideo model 925 no standout or underline:\
-       :se@:so@:ue@:us@:tc=tvi925:
-tvi925vbn|925vbn|televideo model 925 visual bells no so or ul:\
-       :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:tc=tvi925n:
-
-# From: Tim Curry, Univ. of Central Fla. <duke!ucf-cs!tim> 5/21/82 
-# (tvi925a: removed obsolete ":kn#12:"; mapped ":pt:" to ":it#8:" --esr)
-tvi925a|925a|TeleVideo Model 925:\
-       :am:bs:bw:pt:\
-       :co#80:it#8:li#24:sg#1:ug#1:\
-       :al=\EE:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :\
-       :dc=\EW:dl=\ER:do=^V:ei=:ic=\EQ:\
-       :if=/usr/share/tabset/std:im=:is=\El:kb=^H:kd=^V:\
-       :kh=^^:kl=^H:kr=^L:ku=^K:nd=^L:se=\EG0:so=\EG4:\
-       :ue=\EG0:up=^K:us=\EG8:\
-       :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
-       :ve=\E.4:vs=\E.2:
-
-# From: Todd Litwin <litwin@litwin.jpl.nasa.gov> 28 May 1993
-# Originally Tim Curry, Univ. of Central Fla., <duke!ucf-cs!tim> 5/21/82
-# for additional capabilities, 
-# The following tvi descriptions from B:pjphar and virus!mike
-# is for all 950s.  It sets the following attributes:
-# full duplex (\EDF)           write protect off (\E()
-# conversation mode (\EC)      graphics mode off (\E%)
-# white on black (\Ed)         auto page flip off (\Ew)
-# turn off status line (\Eg)   clear status line (\Ef\r)
-# normal video (\E0)           monitor mode off (\EX or \Eu)
-# edit mode (\Er)              load blank char to space (\Ee\040)
-# line edit mode (\EO)         enable buffer control (^O)
-# protect mode off (\E\047)    duplex edit keys (\El)
-# program unshifted send key to send line all (\E016)
-# program shifted send key to send line unprotected (\E004)
-# set the following to nulls:
-#      field delimiter (\Ex0\200\200)
-#      line delimiter (\Ex1\200\200)
-#      start-protected field delimiter (\Ex2\200\200)
-#      end-protected field delimiter (\Ex3\200\200)
-# set end of text delimiter to carriage return/null (\Ex4\r\200)
-# (tvi950: early versions had ":ko=ic,dc,al,dl,cl,bt,ce,cd:"
-# and ":ma=^Vj^Kk^Hh^Ll^^H:". I mapped ":pt:" to ":it#8:";
-#
-tvi950|950|televideo950:\
-       :am:bs:hs:mi:ms:pt:xn:xo:\
-       :co#80:li#24:sg#1:ug#1:\
-       :ac=d\rc\014e\nb\011i\013:ae=^X:al=\EE:as=^U:bl=^G:\
-       :bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :cr=^M:\
-       :ct=\E3:dc=\EW:dl=\ER:do=^J:ds=\Eg\Ef\r:ei=\Er:fs=^M:\
-       :ho=^^:im=\Eq:\
-       :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\Ef\r:\
-       :k0=^A0\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
-       :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:\
-       :kB=\EI:kC=\E*:kD=\EW:kE=\Et:kL=\ER:kS=\Ey:kb=^H:\
-       :kd=^V:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:pf=\Ea:\
-       :po=\E`:se=\EG0:sf=^J:so=\EG4:sr=\Ej:st=\E1:ta=^I:\
-       :ts=\Eg\Ef:ue=\EG0:up=^K:us=\EG8:\
-       :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:
-#
-# is for 950 with two pages adds the following:
-#      set 48 line page (\E\\2)
-#      place cursor at page 0, line 24, column 1 (\E-07 )
-#      set local (no send) edit keys (\Ek)
-#
-# two page 950 adds the following:
-#      when entering ex, set 24 line page (\E\\1)
-#      when exiting ex, reset 48 line page (\E\\2)
-#                       place cursor at 0,24,1 (\E-07 )
-#      set duplex (send) edit keys (\El) when entering vi
-#      set local (no send) edit keys (\Ek) when exiting vi
-#
-tvi950-2p|950-2p|televideo950 w/2 pages:\
-       :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\E\\2\E-07 \011:\
-       :ke=\Ek:ks=\El:te=\E\\2\E-07 :ti=\E\\1\E-07 :tc=tvi950:
-#
-# is for 950 with four pages adds the following:
-#      set 96 line page (\E\\3)
-#      place cursor at page 0, line 24, column 1 (\E-07 )
-#
-# four page 950 adds the following:
-#      when entering ex, set 24 line page (\E\\1)
-#      when exiting ex, reset 96 line page (\E\\3)
-#                       place cursor at 0,24,1 (\E-07 )
-#
-tvi950-4p|950-4p|televideo950 w/4 pages:\
-       :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\E\\3\E-07 \011:\
-       :ke=\Ek:ks=\El:te=\E\\3\E-07 :ti=\E\\1\E-07 :tc=tvi950:
-#
-# is for reverse video 950 changes the following:
-#      set reverse video (\Ed)
-#
-# set vb accordingly (\Ed ...nulls... \Eb)
-#
-tvi950-rv|950-rv|televideo950 rev video:\
-       :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200:\
-       :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:tc=tvi950:
-#
-# uses the appropriate entries from 950-2p and 950-rv
-#
-tvi950-rv-2p|950-rv-2p|televideo950 rev video w/2 pages:\
-       :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\E\\2\E-07 :\
-       :ke=\Ek:ks=\El:te=\E\\2\E-07 :ti=\E\\1\E-07 :\
-       :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:tc=tvi950:
-#
-# uses the appropriate entries from 950-4p and 950-rv
-#
-tvi950-rv-4p|950-rv-4p|televideo950 rev video w/4 pages:\
-       :is=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\E\\3\E-07 :\
-       :ke=\Ek:ks=\El:te=\E\\3\E-07 :ti=\E\\1\E-07 :\
-       :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:tc=tvi950:
-# From: Andreas Stolcke <stolcke@icsi.berkeley.edu>
-# (tvi955: removed obsolete ":ko=ic,dc,al,dl,cl,bt,ce,cd:ma:=^Vj^Kk^Hh^Ll^^H";
-# mapped ":pt:" to ":it#8:"; removed incorrect (and overridden) ":do=^J:";
-# fixed broken continuations in the :rs: string -- esr)
-tvi955|televideo955:\
-       :5i:am:bs:hs:mi:pt:xn:xo:\
-       :co#80:it#8:li#24:\
-       :RA=\E[=7l:RX=^N:SA=\E[=7h:SX=^O:\
-       :ac=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ:ae=\E%:al=\EE:\
-       :as=\E$:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :\
-       :ct=\E3:dc=\EW:dl=\ER:do=^V:ds=\Eg\Ef\r:ei=\Er:fs=^M:\
-       :ho=^^:im=\Eq:is=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El:\
-       :k0=^A0\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
-       :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:\
-       :kB=\EI:kC=\EY:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kM=\EQ:\
-       :kN=\EK:kP=\EJ:kT=\E1:ka=\E3:kb=^H:kd=^V:kh=^^:kl=^H:\
-       :kr=^L:kt=\E2:ku=^K:le=^H:mb=\EG2:me=\EG0\E[=5l:\
-       :mh=\E[=5h:mk=\EG1:mr=\EG4:nd=^L:pf=\Ea:po=\E`:\
-       :ps=\EP:\
-       :rs=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee \017\E0P\E6\200\E0p\E4\200\Ef\r:\
-       :se=\EG0:so=\EG4:sr=\Ej:st=\E1:ts=\Eg\Ef:ue=\EG0:\
-       :up=^K:us=\EG8:\
-       :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
-       :ve=\E.2:vi=\E.0:vs=\E.1:
-tvi955-w|955-w|televideo955 w/132 cols:\
-       :co#132:\
-       :cm=\E[%i%d;%dH:is=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El:tc=tvi955:
-# use half-intensity as normal mode, full intensity as bold (md)
-tvi955-hb|955-hb|televideo955 half-bright:\
-       :is=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El:md=\E[=5l:\
-       :me=\EG0\E[=5h:mh@:tc=tvi955:
-# From: Humberto Appleton <beto@cs.utexas.edu>, 880521 UT Austin
-# (tvi970: removed ":sg#0:"; mapped ":pt:" to ":it#8:" -- esr)
-tvi970|televideo970:\
-       :bs:da:db:mi:ms:pt:\
-       :co#80:it#8:li#24:\
-       :ae=\E(B:al=\E[L:as=\E(B:bt=\E[Z:cd=\E[0J:ce=\E[0K:\
-       :cl=\E[H\E[2J:cm=\E[%i%d;%df:dc=\E[P:dl=\E[M:do=\ED:\
-       :ei=\E[4l:im=\E[4h:\
-       :is=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J:\
-       :k1=\E?a:k2=\E?b:k3=\E?c:k4=\E?d:k5=\E?e:k6=\E?f:\
-       :k7=\E?g:k8=\E?h:k9=\E?i:kb=^H:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:nd=\E[C:se=\E[0m:so=\E[7m:\
-       :sr=\EM:ue=\E[0m:up=\EM:us=\E[4m:\
-       :vb=\E[5;m\200\200\200\200\200\200\200\200\200\E[0;m:\
-       :vs=\E[1Q:
-# From Gene Rochlin <armsis@amber> 9/19/84. 
-# Works with vi and rogue.  NOTE: Esc v sets autowrap on, Esc u sets 80 chars
-# per line (rather than 40), Esc K chooses the normal character set.  Not sure
-# padding is needed, but adapted from the tvi920c termcap.  The :so: and :us:
-# strings are klutzy, but at least use no screen space.
-# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:" -- esr)
-tvipt|televideopt:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\EE<5*>:bt=\EI:ce=\ET:cl=^Z:cm=\E=%+ %+ :\
-       :dl=\ER<5*>:ho=^^:if=/usr/share/tabset/stdcrt:\
-       :is=\Ev\Eu\EK:kb=^H:kd=^J:kl=^H:kr=^L:ku=^K:nd=^L:\
-       :se=\EF:so=\EG1@A\EH:ue=\EF:up=^K:us=\EG1B@\EH:
-
-#### Visual (vi)
-#
-
-# (vi50: mapped ":pt:" to default 8-char tabs -- esr)
-vi50|visual 50:\
-       :am:bs:ms:pt:\
-       :co#80:li#24:\
-       :al=\EL:bl=^G:cd=\Ek:ce=\EK:cl=^Z:cm=\E=%+ %+ :cr=^M:\
-       :dl=\EM:do=^J:ho=\EH:kb=^H:kd=\EB:kh=\EH:kl=\ED:\
-       :kr=\EC:ku=\EA:le=^H:nd=^L:se=\ET:sf=^J:so=\EU:ta=^I:\
-       :up=^K:
-# From: Jeff Siegal <jbs@athena.mit.edu>
-# (vi55: mapped ":pt:" to ":it#8:" -- esr)
-vi55|Visual 55:\
-       :am:bs:mi:ms:pt:\
-       :co#80:it#8:li#24:\
-       :al=\EL:cd=\EJ:ce=\EK:cl=\Ev:cm=\EY%+ %+ :\
-       :cs=\E_%+A%+A:dc=\Ew:dl=\EM:do=^J:ei=\Eb:ho=\EH:\
-       :im=\Ea:is=\Ev\E_AX\Eb\EW\E9P\ET:kb=^H:kd=\EB:kl=\ED:\
-       :kr=\EC:ku=\EA:le=^H:nd=\EC:se=\ET:so=\EU:sr=\EI:\
-       :up=\EA:
-
-# The Visual 200 beeps when you type a character in insert mode.
-# This is a horribly obnoxious misfeature, and some of the entries
-# below try to get around the problem by ignoring the feature or
-# turning it off when inputting a character.  They are said not to
-# work well at 300 baud.  (You could always cut the wire to the bell!)
-# From: <mike@brl-vgr> Mon Nov 14 08:34:29 1983
-# (vi200: mapped ":pt:" to default 8-char tabbing -- esr)
-vi200|vis200|visual 200 with function keys:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :al=\EL:bl=^G:cd=\Ey:ce=\Ex:cl=\Ev:cm=\EY%+ %+ :\
-       :cr=^M:dc=\EO:dl=\EM:do=^J:ei=:ho=\EH:ic=\Ei \010\Ej:\
-       :im=:is=\E3\Eb\Ej\E\\\El\EG\Ec\Ek:k0=\EP:k1=\EQ:\
-       :k2=\ER:k3=\E :k4=\E!:k5=\E":k6=\E#:k7=\E$:k8=\E%:\
-       :k9=\E&:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:\
-       :nd=\EC:se=\E3:sf=^J:so=\E4:sr=\EI:ta=^I:up=\EA:\
-       :ve=\Ec:vs=\Ed:
-vi200-rv-ic|visual 200 reverse video using insert char:\
-       :ei=\Ej:ic@:im=\Ei:tc=vi200-rv:
-# The older Visuals didn't come with function keys. This entry uses
-# ks and ke so that the keypad keys can be used as function keys.
-# If your version of vi doesn't support function keys you may want
-# to use vi200-f.
-# (vi200: mapped ":pt:" to ":it#8:" -- esr)
-vi200-f|visual|visual 200 no function keys:\
-       :am:bs:pt:\
-       :co#80:it#8:li#24:\
-       :al=\EL:bl=^G:cd=\Ey:ce=\Ex:cl=\Ev:cm=\EY%+ %+ :\
-       :cr=^M:dc=\EO:dl=\EM:do=^J:ei=:ho=\EH:ic=\Ei \010\Ej:\
-       :im=:is=\E3\Eb\Ej\E\\\El\EG\Ed\Ek:k0=\E?p:k1=\E?q:\
-       :k2=\E?r:k3=\E?s:k4=\E?t:k5=\E?u:k6=\E?v:k7=\E?w:\
-       :k8=\E?x:k9=\E?y:kd=\EB:ke=\E>:kh=\EH:kl=\ED:kr=\EC:\
-       :ks=\E=:ku=\EA:le=^H:nd=\EC:sf=^J:sr=\EI:ta=^I:\
-       :up=\EA:ve=\Ec:vs=\Ed:
-vi200-rv|visual 200 reverse video:\
-       :se=\E3:so=\E4:sr@:ve@:vs@:tc=vi200:
-vi200-ic|visual 200 using insert char:\
-       :ei=\Ej:ic@:im=\Ei:tc=vi200:
-
-# the function keys are programmable but we don't reprogram
-# them to their default values with "is" because programming
-# them is very verbose. maybe an "if" file should be made for
-# the 300 and they could be stuck in it.
-vi300|visual 300 ansi x3.64:\
-       :am:bw:mi:xn:\
-       :co#80:li#24:\
-       :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:\
-       :ei=\E[4l:ho=\E[H:im=\E[4h:\
-       :is=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[1Q\E[0;1(D\E[8s:\
-       :k1=\E_A\E\\:k2=\E_B\E\\:k3=\E_C\E\\:k4=\E_D\E\\:\
-       :k5=\E_E\E\\:k6=\E_F\E\\:k7=\E_G\E\\:k8=\E_H\E\\:\
-       :k9=\E_I\E\\:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
-       :le=^H:nd=\E[C:se=\E[m:sf=^J:so=\E[1m:sr=\EM:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-vi300-rv|visual 300 reverse video:\
-       :bl=^G:cr=^M:do=^J:\
-       :is=\E[7s\E[2;3;4;20;?6l\E[12;?5;?7h\E[1Q\E[0;1(D\E[8s:\
-       :sf=^J:tc=vi300:
-# slow scroll doesn't work that well; if you type on the
-# keyboard while the terminal is scrolling it drops characters
-vi300-ss|visual 300 slow scroll:\
-       :bl=^G:cr=^M:do=^J:sf=^J:ve=\E[?4h:vs=\E[?4l:tc=vi300:
-# some of the vi300s have older firmware that has the command
-# sequence for setting editing extent reversed.
-ovi300|visual 300 old:\
-       :bl=^G:cr=^M:do=^J:\
-       :is=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s:\
-       :sf=^J:tc=vi300:
-# if your version of ex/vi doesn't correctly implement xn
-# use this termcap for the vi300
-vi300-aw|visual 300 no autowrap:\
-       :am@:xn@:\
-       :ve=\E[?7h:vs=\E[?7l:tc=vi300:
-
-# the visual 550 is a visual 300 with tektronix graphics,
-# and with 33 lines. clear screen is modified here to
-# also clear the graphics.
-vi550|visual 550 ansi x3.64:\
-       :li#33:\
-       :bl=^G:cl=\030\E[H\E[2J:cr=^M:do=^J:sf=^J:tc=vi300:
-
-# (vi603: this had ":sb=\EM:"; sb is undefined, prob. an error for sr -- esr)
-vi603|visual603|visual 603:\
-       :hs:mi:\
-       :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
-       :cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:\
-       :ds=\EP2;1~\E\\:ei=\E[4l:fs=\E\\:im=\E[4h:\
-       :is=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r\E[24;1H:\
-       :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
-       :rs=\E>\E[?3l\E[?4l\E[?7h\E[?8h:se=\E[27m:sf=\ED:\
-       :so=\E[7m:sr=\EM:ts=\EP2~:ue=\E[24m:up=\E[A:us=\E[4m:tc=vt100:
-
-#### Wyse (wy)
-#
-#      Wyse Technology
-#      3471 North First Street
-#      San Jose, CA 95134
-#      Vox: (408)-473-1200
-#      Fax: (408) 473-1222
-#
-# Wyse sales can be reached by phone at 1-800-GET-WYSE.  Tech support is at
-# (800)-800-WYSE (option 5 gets you a human).
-#
-# All the following entries until (but not including) wy100q are direct from
-# Wyse technical support and represent their best knowledge as of January 1995.
-# I made two trivial syntax fixes in the wyse30 entry, added OTbs everywhere
-# needed, and merged in OTug#1 entries (as indicated by the termcap version of
-# their descriptions).
-#
-# Note: The wyse75, wyse85, and wyse99 have been discontinued.
-
-#         Although the Wyse 30 can support more than one attribute
-#      it requires magic cookies to do so.  Many applications do not
-#      function well with magic cookies.  The following terminfo uses
-#      the protect mode to support one attribute (dim) without cookies.
-#      If more than one attribute is needed then the wy30-mc terminfo
-#      should be used.
-#
-wy30|wyse30|Wyse 30:\
-       :5i:am:bs:bw:hs:mi:ms:xo:\
-       :Nl#8:co#80:lh#1:li#24:lw#8:ma#1:ug#1:ws#45:\
-       :#2=\E{:&3=\Er:@8=\E7:LF=\EA11:LO=\EA10:\
-       :ac=0wa_h[jukslrmqnxqzttuyv]wpxv:ae=\EH^C:al=\EE:\
-       :as=\EH^B:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:\
-       :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:\
-       :ds=\EF\r:ei=\Er:fs=^M:ho=^^:im=\Eq:ip=:\
-       :is=\E'\E(\E^3\E`9\016\024:k1=^A@\r:k2=^AA\r:\
-       :k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\
-       :k8=^AG\r:kA=\EE:kB=\EI:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:\
-       :kN=\EK:kP=\EJ:kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:\
-       :ku=^K:le=^H:ll=^^^K:me=\E(\EH\003:mh=\E`7\E):\
-       :mp=\E`7\E):nd=^L:nw=^M^J:pf=^T:pn=\Ez%+/%s\r:po=^X:\
-       :ps=\EP:px=\Ez%+?%s\177:\
-       :..sa=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;:\
-       :se=\E(:sf=\n:so=\E`7\E):sr=\Ej:st=\E1:ta=\011:\
-       :ts=\EF:up=^K:ve=\E`1:vi=\E`0:
-#
-#      This terminal description uses the non-hidden attribute mode
-#      (with magic cookie).
-#
-wy30-mc|wyse30-mc|wyse 30 with magic cookies:\
-       :ms@:\
-       :ma@:sg#1:ug#1:\
-       :ae=\EG0\EH\003:as=\EG0\EH\002:mb=\EG2:\
-       :me=\EG0\E(\EH\003:mh=\EGp:mk=\EG1:mp=\EG0\E):\
-       :mr=\EG4:\
-       :..sa=\EG%'0'%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;:\
-       :se=\EG0:so=\EG4:te=\EG0:ue=\EG0:us=\EG8:tc=wy30:
-#      The manditorary pause used by flash does not work with
-#      older versions of terminfo.  If you see this effect then
-#      unset xon and delete the / from the delay.
-#      i.e. change $<100/> to $<100>
-wy30-vb|wyse30-vb|wyse 30 visible bell:\
-       :vb=\E`8\E`9:tc=wy30:
-#
-#         The Wyse 50 can support one attribute (e.g. Dim, Inverse,
-#      Normal) without magic cookies by using the protect mode.
-#      The following description uses this feature, but when more
-#      than one attribute is put on the screen at once, all attributes
-#      will be changed to be the same as the last attribute given.
-#         The Wyse 50 can support more attributes when used with magic
-#      cookies.  The wy50-mc terminal description uses magic cookies
-#      to correctly handle multiple attributes on a screen.
-#
-wy50|wyse50|Wyse 50:\
-       :5i:am:bs:bw:hs:mi:ms:xo:\
-       :Nl#8:co#80:lh#1:li#24:lw#8:ma#1:ws#45:\
-       :#2=\E{:%9=\EP:&3=\Er:@8=\E7:F1=^AJ\r:F2=^AK\r:\
-       :F3=^AL\r:F4=^AM\r:F5=^AN\r:F6=^AO\r:LF=\EA11:\
-       :LO=\EA10:ac=0wa_h[jukslrmqnxqzttuyv]wpxv:ae=\EH^C:\
-       :al=\EE:as=\EH^B:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:\
-       :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:\
-       :ds=\EF\r:ei=\Er:fs=^M:ho=^^:i1=\E`\072\E`9:im=\Eq:\
-       :ip=:is=\016\024\E'\E(:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
-       :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:\
-       :k9=^AH\r:k;=^AI\r:kA=\EE:kB=\EI:kD=\EW:kE=\ET:\
-       :kI=\EQ:kL=\ER:kN=\EK:kP=\EJ:kS=\EY:kb=^H:kd=^J:\
-       :kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=^^^K:me=\E(\EH\003:\
-       :mh=\E`7\E):mp=\E`7\E):mr=\E`6\E):nd=^L:nw=^M^J:\
-       :pf=^T:pn=\Ez%+/%s\r:po=^X:ps=\EP:px=\Ez%+?%s\177:\
-       :..sa=%?%p1%p3%|%t\E`6\E)\n%e%p5%p8%|%t\E`7\E)%e\E(%;\n%?%p9%t\EH\002%e\EH\003%;:\
-       :se=\E(:sf=\n:so=\E`6\E):sr=\Ej:st=\E1:ta=^I:ts=\EF:\
-       :up=^K:ve=\E`1:vi=\E`0:
-#
-#      This terminal description uses the non-hidden attribute mode
-#      (with magic cookie).
-#
-wy50-mc|wyse50-mc|wyse 50 with magic cookies:\
-       :ms@:\
-       :ma@:sg#1:ug#1:\
-       :ae=\EG0\EH\003:as=\EG0\EH\002:mb=\EG2:\
-       :me=\EG0\E(\EH\003:mh=\EGp:mk=\EG1:mp=\EG0\E):\
-       :mr=\EG4:\
-       :..sa=\EG%'0'%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;:\
-       :se=\EG0:so=\EGt:te=\EG0:ue=\EG0:us=\EG8:tc=wy50:
-#      The mandatory pause used by flash does not work with
-#      older versions of terminfo.  If you see this effect then
-#      unset xon and delete the / from the delay.
-#      i.e. change $<100/> to $<100>
-wy50-vb|wyse50-vb|wyse 50 visible bell:\
-       :vb=\E`8\E`9:tc=wy50:
-wy50-w|wyse50-w|wyse 50 132-column:\
-       :Nl#16:co#132:lw#7:ws#97:\
-       :cm=\Ea%i%dR%dC:dc=\EW:i1=\E`;\E`9:tc=wy50:
-wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell:\
-       :vb=\E`8\E`9:tc=wy50-w:
-#
-#      The Wyse 350 is a Wyse 50 with color.
-#      Unfortunately this means that it has magic cookies.
-#      The color attributes are designed to overlap the reverse, dim and
-#      underline attributes.  This is nice for monochrome applications
-#      because you can make underline stuff green (or any other color)
-#      but for true color applications it's not so hot because you cannot
-#      mix color with reverse, dim or underline.
-#          To further complicate things one of the attributes must be
-#      black (either the foreground or the background).  In reverse video
-#      the background changes color with black letters.  In normal video
-#      the foreground changes colors on a black background.  
-#          This terminfo uses some of the more advanced features of curses
-#      to display both color and blink.  In the final analysis I am not
-#      sure that the wy350 runs better with this terminfo than it does
-#      with the wy50 terminfo (with user adjusted colors).
-#
-wy350|wyse350|Wyse 350:\
-       :5i:am:bs:bw:hs:mi:xo:\
-       :Co#8:NC#55:Nl#8:co#80:lh#1:li#24:lw#8:pa#8:sg#1:\
-       :ug#1:ws#45:\
-       :#2=\E{:%9=\EP:&3=\Er:@8=\E7:F1=^AJ\r:F2=^AK\r:\
-       :F3=^AL\r:F4=^AM\r:F5=^AN\r:F6=^AO\r:LF=\EA11:\
-       :LO=\EA10:Sb= :\
-       :..Sf=%?%p1%{0}%=%t%{76}\n%e%p1%{1}%=%t%{64}\n%e%p1%{2}%=%t%{8}\n%e%p1%{3}%=%t%{72}\n%e%p1%{4}%=%t%{4}\n%e%p1%{5}%=%t%{68}\n%e%p1%{6}%=%t%{12}\n%e%p1%{7}%=%t%{0}\n%;%PC\n\EG%gC%gA%+%'0'%+%c:\
-       :ac=0wa_h[jukslrmqnxqzttuyv]wpxv:ae=\EG0\EH\003:\
-       :al=\EE:as=\EG0\EH\002:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :cl=\E+:cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:\
-       :do=^J:ds=\EF\r:ei=\Er:fs=^M:ho=^^:i1=\E`\072\E`9:\
-       :i2=\E%?:im=\Eq:ip=:is=\016\024\E'\E(:k1=^A@\r:\
-       :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
-       :k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:kB=\EI:\
-       :kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kN=\EK:kP=\EJ:kS=\EY:\
-       :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=^^^K:\
-       :mb=\EG2:me=\EG0\E(\EH\003%{0}%PA%{0}%PC:mh=\EGp:\
-       :mk=\EG1:mp=\EG0\E):mr=\EG4:nd=^L:nw=^M^J:oc=\E%?:\
-       :op=\EG0:pf=^T:pn=\Ez%+/%s\r:po=^X:ps=\EP:\
-       :px=\Ez%+?%s\177:\
-       :..sa=%{0}%?%p4%t%{2}%|%;\n%?%p7%t%{1}%|%;%PA\n\EG%?%gC%t%gC%e\n%{0}%?%p1%t%{4}%|%;\n%?%p2%t%{8}%|%;\n%?%p3%t%{4}%|%;\n%?%p5%t%{64}%|%;\n%;%gA%+%'0'%+%c\n%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;:\
-       :se=\EG0:sf=\n:so=\EG4:sr=\Ej:st=\E1:ta=^I:ts=\EF:\
-       :ue=\EG0:up=^K:us=\EG8:ve=\E`1:vi=\E`0:
-#      The manditorary pause used by flash does not work with
-#      older versions of terminfo.  If you see this effect then
-#      unset xon and delete the / from the delay.
-#      i.e. change $<100/> to $<100>
-wy350-vb|wyse350-vb|wyse 350 visible bell:\
-       :vb=\E`8\E`9:tc=wy350:
-wy350-w|wyse350-w|wyse 350 132-column:\
-       :Nl#16:co#132:lw#7:ws#97:\
-       :cm=\Ea%i%dR%dC:dc=\EW:i1=\E`;\E`9:tc=wy350:
-wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell:\
-       :vb=\E`8\E`9:tc=wy350-w:
-#
-#      This terminfo description is untested.
-#
-wy100|wyse 100:\
-       :hs:mi:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :\
-       :cr=^M:dc=\EW:dl=\ER:do=^J:ds=\EA31:ei=\Er:fs=^M:\
-       :im=\Eq:is=\Eu\E0:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
-       :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:kb=^H:\
-       :kd=^J:kh=\E{:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:se=\EG0:\
-       :sf=^J:so=\EG4:ts=\EF:ue=\EG0:up=^K:us=\EG8:
-#
-#      The Wyse 120/150 has most of the features of the Wyse 60.
-#
-#      This terminal does not need padding up to 9600 baud!
-#
-#      (msgr) should be set but the clear screen fails when in
-#      alt-charset mode.  Try \EcE  \E+  if the screen is really clear
-#      then set msgr.
-#
-wy120|wyse120|wy150|wyse150|Wyse 120/150:\
-       :5i:am:bs:bw:hs:km:mi:ms:xo:\
-       :Nl#8:co#80:it#8:lh#1:li#24:lw#8:pb#9601:ws#45:\
-       :#2=\E{:%9=\EP:&3=\Er:@8=\E7:F1=^AJ\r:F2=^AK\r:\
-       :F3=^AL\r:F4=^AM\r:F5=^AN\r:F6=^AO\r:LF=\EA11:\
-       :LO=\EA10:RA=\Ed.:RX=\Ec20:SA=\Ed/:SX=\Ec21\ntbc=\E0:\
-       :ac=+/\\\054.0[Iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~:\
-       :ae=\EcD:al=\EE:as=\EcE:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :cl=\E+:cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=^J:\
-       :ds=\EF\r:ei=\Er:fs=^M:ho=^^:i1=\EcB0\EcC1:\
-       :i2=\EwJ\Ew1:im=\Eq:ip=:\
-       :is=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:\
-       :kB=\EI:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kN=\EK:kP=\EJ:\
-       :kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:\
-       :ll=^^^K:mb=\EG2:me=\E(\EH\003\EG0\EcD:mh=\EGp:\
-       :mk=\EG1:mp=\E):mr=\EG4:nd=^L:nw=\r\n:pf=^T:\
-       :pl=\EZ2%+?%s\177:pn=\Ez%+/%s\r:po=\Ed#:ps=\EP:\
-       :px=\EZ1%+?%s\177:r1=\E~!\E~4:r2=\EeF\E`\072:\
-       :r3=\EwG\Ee(:\
-       :..sa=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%'0'%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c:\
-       :se=\EG0:sf=\n:so=\EGt:sr=\Ej:st=\E1:ta=\011:te=\Ew1:\
-       :ti=\Ew0:ts=\EF:ue=\EG0:up=^K:us=\EG8:ve=\E`1:\
-       :vi=\E`0:
-#
-wy120-w|wyse120-w|wy150-w|wyse150-w|wyse 120/150 132-column:\
-       :Nl#16:co#132:lw#7:ws#97:\
-       :cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\E`;:tc=wy120:
-#
-wy120-25|wyse120-25|wy150-25|wyse150-25|wyse 120/150 80-column 25-lines:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy120:
-#
-wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|wyse 120/150 132-column 25-lines:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy120-w:
-#
-wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell:\
-       :vb=\E`8\E`9:tc=wy120:
-#
-wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell:\
-       :vb=\E`8\E`9:tc=wy120-w:
-#
-#      The Wyse 60 is like the Wyse 50 but with more padding.
-#      The reset strings are slow and the pad times very depending
-#      on other parameters such as font loading.  I have tried
-#      to follow the following outline:
-#              rs1 -> set personality
-#              rs2 -> set number of columns
-#              rs3 -> set number of lines
-#              is1 -> select the proper font
-#              is2 -> do the initialization
-#              is3 -> set up display memory (2 pages)
-#
-#      The Wyse 60's that have vt100 emulation are slower than the
-#      older Wyse 60's.  This change happened mid-1987.
-#      The capabilities effected are (dch1) (dl1) (il1) (ind) (ri)
-#
-#      The meta key is only half right.  This terminal will return the
-#      high order bit set when you hit CTRL-function_key
-#
-#      It may be useful to assign two function keys with the
-#      values  \E=(\s  look at old data in page 1
-#              \E=W,   look at bottem of page 1
-#      where \s is a space ( ).
-#
-#      Note:
-#         The Wyse 60 runs faster when the XON/XOFF
-#         handshake is turned off.
-#
-wy60|wyse60|Wyse 60:\
-       :5i:am:bs:bw:hs:km:mi:ms:\
-       :Nl#8:co#80:lh#1:li#24:lw#8:ws#45:\
-       :#2=\E{:%9=\EP:&3=\Er:@8=\E7:DK=\E`b:F1=^AJ\r:\
-       :F2=^AK\r:F3=^AL\r:F4=^AM\r:F5=^AN\r:F6=^AO\r:\
-       :LF=\EA11:LO=\EA10:RA=\Ed.:RC=\E`c:RX=\Ec20:SA=\Ed/:\
-       :SX=\Ec21:\
-       :ac=+/\\\054.0[Iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~:\
-       :ae=\EcD:al=\EE:as=\EcE:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :cl=\E+:cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:\
-       :do=^J:ds=\EF\r:ei=\Er:fs=^M:ho=^^:i1=\EcB0\EcC1:\
-       :i2=\EwJ\Ew1:im=\Eq:ip=:\
-       :is=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:\
-       :kB=\EI:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kN=\EK:kP=\EJ:\
-       :kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:\
-       :ll=^^^K:mb=\EG2:me=\E(\EH\003\EG0\EcD:mh=\EGp:\
-       :mk=\EG1:mp=\E):mr=\EG4:nd=^L:nw=\r\n:pf=^T:\
-       :pl=\EZ2%+?%s\177:pn=\Ez%+/%s\r:po=\Ed#:ps=\EP:\
-       :px=\EZ1%+?%s\177:r1=\E~!\E~4:r2=\EeG:r3=\EwG\Ee(:\
-       :..sa=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%'0'%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c:\
-       :se=\EG0:sf=\n:so=\EGt:sr=\Ej:st=\E1:ta=\011:te=\Ew1:\
-       :ti=\Ew0:ts=\EF:ue=\EG0:up=^K:us=\EG8:ve=\E`1:\
-       :vi=\E`0:
-#
-wy60-w|wyse60-w|wyse 60 132-column:\
-       :Nl#16:co#132:lw#7:ws#97:\
-       :cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\EeF\E`;:tc=wy60:
-#
-wy60-25|wyse60-25|wyse 60 80-column 25-lines:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy60:
-wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy60-w:
-#
-wy60-42|wyse60-42|wyse 60 80-column 42-lines:\
-       :li#42:\
-       :al=\EE:cd=\Ey:cl=\E+:cm=\E=%+ %+ :dc=\EW:dl=\ER:\
-       :i1=\EcB2\EcC3:ip=:nw=\r\n:r3=\Ee*:sf=\n:sr=\Ej:tc=wy60:
-wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines:\
-       :Nl#16:co#132:lw#7:ws#97:\
-       :cd=\Ey:cl=\E+:cm=\Ea%i%dR%dC:dc=\EW:ho=\036:ip=:\
-       :nw=\r\n:r2=\EeF\E`;:tc=wy60-42:
-#
-wy60-43|wyse60-43|wyse 60 80-column 43-lines:\
-       :Nl@:lh@:li#43:lw@:\
-       :pn@:r3=\Ee+:tc=wy60-42:
-wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines:\
-       :Nl@:lh@:li#43:lw@:\
-       :pn@:r3=\Ee+:tc=wy60-42-w:
-#
-wy60-vb|wyse60-vb|Wyse 60 visible bell:\
-       :vb=\E`8\E`9:tc=wy60:
-wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell:\
-       :vb=\E`8\E`9:tc=wy60-w:
-
-#      The Wyse-99GT looks at lot like the Wyse 60 except that it
-#      does not have the 42/43 line mode.  In the Wyse-60 the "lines"
-#      setup parameter controls the number of lines on the screen.
-#      For the Wyse 99GT the "lines" setup parameter controls the
-#      number of lines in a page.  The screen can display 25 lines max.
-#          The Wyse-99GT also has personalities for the VT220 and
-#      Tektronix 4014.  But this has no bearing on the native mode.
-#
-#      (msgr) should be set but the clear screen fails when in
-#      alt-charset mode.  Try \EcE  \E+  if the screen is really clear
-#      then set msgr, else use msgr@.
-#
-#      u0 -> enter Tektronix mode
-#      u1 -> exit Tektronix mode
-#
-wy99gt|wyse99gt|Wyse 99gt:\
-       :ms@:\
-       :al=\EE:cd=\Ey:ce=\Et:cl=\E+:dc=\EW:dl=\ER:i2=\Ew0:\
-       :ip=:nw@:r2=\E`\072:sf=\n:sr=\Ej:ta=\011:te=\Ew0:\
-       :ti=\Ew1:u0=\E~>\E8:u1=\E[42h:tc=wy60:
-#
-wy99gt-w|wyse99gt-w|wyse 99gt 132-column:\
-       :Nl#16:co#132:lw#7:ws#97:\
-       :cd=\Ey:cl=\E+:cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\E`;:tc=wy99gt:
-#
-wy99gt-25|wyse99gt-25|wyse 99gt 80-column 25-lines:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r2=\E`\072:r3=\EwG\Ee):tc=wy99gt:
-#
-wy99gt-25-w|wyse99gt-25-w|wyse 99gt 132-column 25-lines:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r2=\E`;:tc=wy99gt-w:
-#
-wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell:\
-       :vb=\E`8\E`9:tc=wy99gt:
-#
-wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell:\
-       :vb=\E`8\E`9:tc=wy99gt-w:
-#
-#      The Wyse 160 is combination of the WY-60 and the WY-99gt.
-#      The reset strings are slow and the pad times very depending
-#      on other parameters such as font loading.  I have tried
-#      to follow the following outline:
-#              rs1 -> set personality
-#              rs2 -> set number of columns
-#              rs3 -> set number of lines
-#              is1 -> select the proper font
-#              is2 -> do the initialization
-#              is3 -> set up display memory (2 pages)
-#
-#      The display memory may be used for either text or graphics.
-#      When "Display Memory = Shared" the terminal will have more pages
-#      but garbage may be left on the screen when you switch from
-#      graphics to text.  If "Display Memory = Unshared" then the
-#      text area will be only one page long.
-#
-wy160|wyse160|Wyse 160:\
-       :5i:am:bs:bw:hs:km:mi:ms:\
-       :Nl#8:co#80:lh#1:li#24:lw#8:ws#38:\
-       :#2=\E{:%9=\EP:&3=\Er:@8=\E7:DK=\E`b:F1=^AJ\r:\
-       :F2=^AK\r:F3=^AL\r:F4=^AM\r:F5=^AN\r:F6=^AO\r:\
-       :LF=\EA11:LO=\EA10:RA=\Ed.:RC=\E`c:RX=\Ec20:SA=\Ed/:\
-       :SX=\Ec21:\
-       :ac=+/\\\054.0[Iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~:\
-       :ae=\EcD:al=\EE:as=\EcE:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :cl=\E+:cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:\
-       :do=^J:ds=\EF\r:ei=\Er:fs=^M:ho=^^:i1=\EcB0\EcC1:\
-       :i2=\Ew0:im=\Eq:ip=:\
-       :is=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:\
-       :kB=\EI:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kN=\EK:kP=\EJ:\
-       :kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:\
-       :ll=^^^K:mb=\EG2:me=\E(\EH\003\EG0\EcD:mh=\EGp:\
-       :mk=\EG1:mp=\E):mr=\EG4:nd=^L:nw=\r\n:pf=^T:\
-       :pl=\EZ2%+?%s\177:pn=\Ez%+/%s\r:po=\Ed#:ps=\EP:\
-       :px=\EZ1%+?%s\177:r1=\E~!\E~4:r2=\E`\072:r3=\EwG\Ee(:\
-       :..sa=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%'0'%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c:\
-       :se=\EG0:sf=\n:so=\EGt:sr=\Ej:st=\E1:ta=^I:te=\Ew0:\
-       :ti=\Ew1:ts=\EF:ue=\EG0:up=^K:us=\EG8:ve=\E`1:\
-       :vi=\E`0:
-#
-wy160-w|wyse160-w|wyse 160 132-column:\
-       :Nl#16:co#132:lw#7:ws#90:\
-       :cm=\Ea%i%dR%dC:dc=\EW:r2=\EeF\E`;:tc=wy160:
-#
-wy160-25|wyse160-25|wyse 160 80-column 25-lines:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy160:
-wy160-25-w|wyse160-25-w|wyse 160 132-column 25-lines:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy160-w:
-#
-wy160-42|wyse160-42|wyse 160 80-column 42-lines:\
-       :li#42:\
-       :al=\EE:cd=\Ey:cl=\E+:dl=\ER:i1=\EcB2\EcC3:nw=\r\n:\
-       :r3=\Ee*:sf=\n:sr=\Ej:tc=wy160:
-wy160-42-w|wyse160-42-w|wyse 160 132-column 42-lines:\
-       :Nl#16:co#132:lw#7:ws#90:\
-       :cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\EeF\E`;:tc=wy160-42:
-#
-wy160-43|wyse160-43|wyse 160 80-column 43-lines:\
-       :Nl@:lh@:li#43:lw@:\
-       :pn@:r3=\Ee+:tc=wy160-42:
-wy160-43-w|wyse160-43-w|wyse 160 132-column 43-lines:\
-       :Nl@:lh@:li#43:lw@:\
-       :pn@:r3=\Ee+:tc=wy160-42-w:
-#
-wy160-vb|wyse160-vb|Wyse 160 visible bell:\
-       :vb=\E`8\E`9:tc=wy160:
-wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell:\
-       :vb=\E`8\E`9:tc=wy160-w:
-#
-#      The Wyse 75 is a vt100 lookalike without advanced video.
-#
-#         The Wyse 75 can support one attribute (e.g. Dim, Inverse,
-#      Underline) without magic cookies.  The following description
-#      uses this capability, but when more than one attribute is
-#      put on the screen at once, all attributes will be changed
-#      to be the same as the last attribute given.
-#         The Wyse 75 can support more attributes when used with magic
-#      cookies.  The wy75-mc terminal description uses magic cookies
-#      to correctly handle multiple attributes on a screen.
-#
-wy75|wyse75|wyse 75:\
-       :5i:am:bs:hs:mi:ms:xn:xo:\
-       :co#80:li#24:ma#1:pb#1201:ug#1:ws#78:\
-       :%1=\E[28~:%9=\E[?5i:*6=\E[4~:@0=\E[1~:@8=\EOM:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:\
-       :F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:F6=\E[29~:\
-       :F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:FB=\E[35~:\
-       :IC=\E[%d@:K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:\
-       :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
-       :ds=\E[>\\\054\001\001\E[>-\001\001:eA=\E)0:\
-       :ec=\E[%dX:ei=\E[4l:fs=^A:ho=\E[H:\
-       :i1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h:i2=\E[m:\
-       :im=\E[4h:ip=:is=\E>\E(B\E)0\017:k1=\E[?5i:k2=\E[?3i:\
-       :k3=\E[2i:k4=\E[@:k5=\E[M:k6=\E[17~:k7=\E[18~:\
-       :k8=\E[19~:k9=\E[20~:k;=\E[21~:kA=\E[L:kE=\E[K:\
-       :kI=\E[@:kL=\E[M:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:\
-       :ke=\E>:kh=\E[H:kl=\E[D:kr=\E[C:ks=\E[?1l\E[?7h\E=:\
-       :ku=\E[A:le=^H:me=\E[m\017:mh=\E[0t\E[2m:\
-       :mr=\E[1t\E[7m:nd=\E[C:pf=\E[4i:po=\E[5i:ps=\E[0i:\
-       :r1=\E[13l\E[3l\E!p:r2=\E[35h\E[?3l:r3=\E[?5l:rc=\E8:\
-       :..sa=%?%p5%t\E[0t%;%?%p3%p1%|%t\E[1t%;%?%p2%t\E[2t%;%?%p4%t\E[3t%;%?%p1%p2%p3%p4%p5%|%|%|%|%t\E[7m%e\E[m%;%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=\n:so=\E[1t\E[7m:sr=\EM:st=\EH:\
-       :ta=^I:ts=\E[>\\\054\001:ue=\E[m:up=\E[A:\
-       :us=\E[2t\E[4m:ve=\E[?25h:vi=\E[?25l:
-#
-#      This terminal description uses the non-hidden attribute mode
-#      (with magic cookie).
-#
-wy75-mc|wyse75-mc|wyse 75 with magic cookies:\
-       :ms@:\
-       :ma@:sg#1:ug#1:\
-       :ae=\E[0p\017:as=\E[0p\016:i2=\E[m\E[p:mb=\E[2p:\
-       :me=\E[0p\017:mh=\E[1p:mk=\E[4p:mr=\E[16p:\
-       :..sa=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9%t\016%e\017%;:\
-       :se=\E[0p:so=\E[17p:ue=\E[0p:us=\E[8p:tc=wy75:
-wy75-vb|wyse75-vb|wyse 75 with visible bell:\
-       :pb@:\
-       :vb=\E[30h\E\\\054\E[30l:tc=wy75:
-wy75-w|wyse75-w|wyse 75 in 132 column mode:\
-       :co#132:ws#130:\
-       :r2=\E[35h\E[?3h:tc=wy75:
-wy75-wvb|wyse75-wvb|wyse 75 with visible bell 132 columns:\
-       :pb@:\
-       :vb=\E[30h\E\\\054\E[30l:tc=wy75-w:
-#
-#      Wyse 85 emulating a vt220 7 bit mode.
-#              24 line screen with status line.
-#
-#      The vt220 mode permits more function keys but it wipes out
-#      the escape key.  I strongly reccomend that f11 be set to
-#      escape (esc).
-#      The terminal may have to be set for 8 data bits and 2 stop
-#      bits for the arrow keys to work.
-#      The Wyse 85 runs faster with XON/XOFF enabled.  Also the
-#      (dch) and (ich) work best when XON/XOFF is set.  (ich) and
-#      (dch) leave trash on the screen when used without XON/XOFF.
-#
-wy85|wyse85|wyse 85:\
-       :5i:am:bs:hs:mi:ms:xn:xo:\
-       :co#80:it#8:li#24:ws#80:\
-       :%1=\E[28~:*6=\E[4~:@0=\E[1~:@8=\EOM:AL=\E[%dL:\
-       :DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:F2=\E[24~:\
-       :F3=\E[25~:F4=\E[26~:F5=\E[28~:F6=\E[29~:F7=\E[31~:\
-       :F8=\E[32~:F9=\E[33~:FA=\E[34~:IC=\E[%d@:K1=\EOw:\
-       :K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RA=\E[?7l:\
-       :RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
-       :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
-       :ds=\E[40l:eA=\E)0:ec=\E[%dX:ei=\E[4l:fs=\E[1;24r\E8:\
-       :ho=\E[H:i1=\E[62;1"p\E[?5W:i2=\E>\E(B\E)0\017\E[m:\
-       :im=\E[4h:ip=:\
-       :is=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
-       :k8=\E[19~:k9=\E[20~:k;=\E[21~:kD=\E[3~:kI=\E[2~:\
-       :kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:kh=\E[26~:\
-       :kl=\E[D:kr=\E[C:ks=\E[?1l\E=:ku=\E[A:l1=PF1:l2=PF2:\
-       :l3=PF3:l4=PF4:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:\
-       :mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:pf=\E[4i:\
-       :po=\E[5i:ps=\E[0i:r1=\E[13l\E[3l\E!p:\
-       :r2=\E[35h\E[?3l:r3=\E[?5l:rc=\E8:\
-       :..sa=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=\011:\
-       :ts=\E[40h\E7\E[25;%i%p1%dH:ue=\E[m:up=\E[A:us=\E[4m:\
-       :ve=\E[?25h:vi=\E[?25l:
-#
-#      Wyse 85 with visual bell.
-wy85-vb|wyse85-vb|wyse 85 with visible bell:\
-       :vb=\E[30h\E\\\054\E[30l:tc=wy85:
-#
-#      Wyse 85 in 132-column mode.
-wy85-w|wyse85-w|wyse 85 in 132-column mode:\
-       :co#132:ws#132:\
-       :r2=\E[35h\E[?3h:tc=wy85:
-#
-#      Wyse 85 in 132-column mode with visual bell.
-wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns:\
-       :vb=\E[30h\E\\\054\E[30l:tc=wy85-w:
-#
-#      Wyse 185 emulating a vt320 7 bit mode.
-#
-#      This terminal always displays 25 lines.  These lines may be used
-#      as 24 data lines and a terminal status line (top or bottom) or
-#      25 data lines.  The 48 and 50 line modes change the page size
-#      and not the number of lines on the screen.
-#
-#      The Compose Character key can be used as a meta key if changed
-#      by set-up.
-#
-wy185|wyse185|wyse 185:\
-       :5i:am:bs:hs:km:mi:ms:xn:xo:\
-       :co#80:it#8:li#24:ws#80:\
-       :%1=\E[28~:*6=\E[4~:@0=\E[1~:@8=\EOM:AL=\E[%dL:\
-       :DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:F2=\E[24~:\
-       :F3=\E[25~:F4=\E[26~:F5=\E[28~:F6=\E[29~:F7=\E[31~:\
-       :F8=\E[32~:F9=\E[33~:FA=\E[34~:IC=\E[%d@:K1=\EOw:\
-       :K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:RA=\E[?7l:\
-       :RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:ch=\E[%i%d`:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:\
-       :dl=\E[M:do=^J:ds=\E7\E[99;0H\E[K\E8:eA=\E)0:\
-       :ec=\E[%dX:ei=\E[4l:fs=\E[1;24r\E8:ho=\E[H:i1=\E[?5W:\
-       :i2=\E>\E(B\E)0\017\E[m:im=\E[4h:ip=:\
-       :is=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
-       :k8=\E[19~:k9=\E[20~:k;=\E[21~:kB=\E[Z:kD=\E[3~:\
-       :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
-       :kh=\E[26~:kl=\E[D:kr=\E[C:ks=\E[?1l\E=:ku=\E[A:\
-       :l1=PF1:l2=PF2:l3=PF3:l4=PF4:le=^H:mb=\E[5m:md=\E[1m:\
-       :me=\E[m\017:mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:\
-       :pf=\E[4i:po=\E[5i:ps=\E[0i:\
-       :r1=\E[13l\E[3l\E\\\E[63;1"p\E[!p:r2=\E[35h\E[?3l:\
-       :r3=\E[?5l\E[47h\E[40l\E[r:rc=\E8:\
-       :..sa=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[27m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
-       :te=\E[ R:ti=\E[ Q:ts=\E7\E[99;%i%p1%dH:ue=\E[24m:\
-       :up=\E[A:us=\E[4m:ve=\E[34h\E[?25h:vi=\E[?25l:\
-       :vs=\E[?25h\E[34l:
-#
-#      Wyse 185 with 24 data lines and top status (terminal status)
-wy185-24|wyse185-24|wyse 185 with 24 data lines:\
-       :hs@:\
-       :ds@:fs@:r3=\E[?5l\E[47h\E[40l\E[1;24r:ts@:tc=wy185:
-#
-#      Wyse 185 with visual bell.
-wy185-vb|wyse185-vb|wyse 185 with visible bell:\
-       :vb=\E[30h\E\\\054\E[30l:tc=wy185:
-#
-#      Wyse 185 in 132-column mode.
-wy185-w|wyse185-w|wyse 185 in 132-column mode:\
-       :co#132:ws#132:\
-       :DC=\E[%dP:IC=\E[%d@:dc=\E[P:ei=:im=:ip=:\
-       :r2=\E[35h\E[?3h:tc=wy185:
-#
-#      Wyse 185 in 132-column mode with visual bell.
-wy185-wvb|wyse185-wvb|wyse 185 with visible bell 132-columns:\
-       :vb=\E[30h\E\\\054\E[30l:tc=wy185-w:
-
-# wy325 terminfo entries
-# Done by Joe H. Davis        3-9-92
-
-# lines 25  columns 80
-#
-wy325|wyse325|Wyse-epc:\
-       :5i:am:bs:bw:hs:mi:\
-       :Nl#8:co#80:lh#1:li#24:lw#8:pb#9601:ws#45:\
-       :#2=\E{:%9=\EP:&3=\Er:@8=\E7:F1=^AJ\r:F2=^AK\r:\
-       :F3=^AL\r:F4=^AM\r:F5=^AN\r:F6=^AO\r:LF=\EA11:\
-       :LO=\EA10:RA=\Ed.:SA=\Ed/:\
-       :ac=+/\\\054.0[Iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~:\
-       :ae=\EcD:al=\EE:as=\EcE:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :cl=\E+:cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:\
-       :do=^J:ds=\EF\r:ei=\Er:fs=^M:ho=^^:i1=\EcB0\EcC1:\
-       :i2=\Ew0:im=\Eq:ip=:\
-       :is=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:\
-       :kB=\EI:kD=\EW:kE=\ET:kI=\Eq:kL=\ER:kN=\EK:kP=\EJ:\
-       :kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:\
-       :ll=^^^K:mb=\EG2:me=\E(\EH\003\EG0\EcD:mh=\EGp:\
-       :mk=\EG1:mp=\E):mr=\EG4:nd=^L:pf=^T:pl=\EZ2%+?%s\177:\
-       :pn=\Ez%+/%s\r:po=\Ed#:ps=\EP:px=\EZ1%+?%s\177:\
-       :r1=\E~!\E~4:r2=\EeF\E`\072:r3=\EwG\Ee(:\
-       :..sa=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%'0'%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c:\
-       :se=\EG0:sf=\n:so=\EGt:sr=\Ej:st=\E1:ta=^I:te=\Ew0:\
-       :ti=\Ew1:ts=\EF:ue=\EG0:up=^K:us=\EG8:ve=\E`1:\
-       :vi=\E`0:
-
-#
-# lines 24  columns 80  vb 
-#
-wy325-vb|wyse325-vb|wy150-vb:\
-       :vb=\E`8\E`9:tc=wy325:
-
-#
-# lines 24  columns 132
-#
-wy325-w|wyse325-w|wy325w-24:\
-       :Nl#16:co#132:lw#7:ws#97:\
-       :cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\E`;:tc=wy325:
-#
-# lines 25  columns 80
-#
-wy325-25|wyse325-25|wy325-80:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy325:
-#
-# lines 25  columns 132
-#
-wy325-25w|wyse325-25w|wy325 132 columns:\
-       :Nl@:lh@:li#25:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy325-w:
-#
-# lines 25  columns 132  vb 
-#
-wy325-w-vb|wy325-wvb|wyse325-wvb:\
-       :vb=\E`8\E`9:tc=wy325-w:
-
-#
-# lines 42  columns 80
-#
-wy325-42|wyse325-42:\
-       :Nl@:lh@:li#42:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy325:
-#
-# lines 42  columns 132
-#
-wy325-42w|wyse325-42w:\
-       :Nl@:lh@:li#42:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy325-w:
-#
-# lines 42  columns 132  vb 
-#
-wy325-42w-vb|wy325-42wvb:\
-       :vb=\E`8\E`9:tc=wy325-w:
-#
-# lines 43  columns 80
-#
-wy325-43|wyse325-43:\
-       :Nl@:lh@:li#43:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy325:
-#
-# lines 43  columns 132
-#
-wy325-43w|wyse325-43w:\
-       :Nl@:lh@:li#43:lw@:\
-       :pn@:r3=\EwG\Ee):tc=wy325-w:
-#
-# lines 43  columns 132  vb 
-#
-wy325-43w-vb|wy325-43wvb:\
-       :vb=\E`8\E`9:tc=wy325-w:
-#      Wyse 370
-#
-#              24 line screen with status line.
-#
-#      The terminal may have to be set for 8 data bits and 2 stop
-#      bits for the arrow keys to work.
-#
-#      If you change keyboards the terminal will send different
-#      escape sequences.
-#      The following definition is for the basic terminal without
-#      function keys.
-#
-#      u0 -> enter Tektronix 4010/4014 mode
-#      u1 -> exit  Tektronix 4010/4014 mode
-#      u2 -> enter ASCII mode (from any ANSI mode)
-#      u3 -> exit  ASCII mode (goto native ANSI mode)
-#      u4 -> enter Tek 4207 ANSI mode (from any ANSI mode)
-#      u5 -> exit  Tek 4207 mode (goto native ANSI mode)
-#
-# (untranslatable capabilities removed to fit entry within 1023 bytes)
-# WARNING: this entry, 1201 bytes long, may core-dump older termcap libraries!
-wy370-nk|wyse 370 without function keys:\
-       :5i:am:bs:cc:hs:mi:ms:xn:xo:\
-       :Co#64:NC#48:co#80:it#8:li#24:pa#64:ws#80:\
-       :AL=\E[%dL:DC=\E[%dP:DK=\E[31h:DL=\E[%dM:DO=\E[%dB:\
-       :IC=\E[%d@::LE=\E[%dD:RA=\E[?7l:RC=\E[31l:RI=\E[%dC:\
-       :SA=\E[?7h:Sb=\E[62;%dw:Sf=\E[61;%dw:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:ch=\E[%i%d`:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:\
-       :dl=\E[M:do=^J:ds=\E[40l:eA=\E)0:ec=\E[%dX:ei=\E[4l:\
-       :fs=\E[1;24r\E8:ho=\E[H:i1=\E[90;1"p\E[?5W:\
-       :i2=\E>\017\E)0\E(B\E[63;0w\E[m:im=\E[4h:ip=:\
-       :is=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h:\
-       :ke=\E>:ks=\E[?1l\E=:le=^H:mb=\E[5m:md=\E[1m:\
-       :me=\E[m\017:mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:\
-       :oc=\E[60w\E[63;0w\n\E[66;1;4w\n\E[66;2;13w\n\E[66;3;16w\n\E[66;4;49w\n\E[66;5;51w\n\E[66;6;61w\n\E[66;7;64w:\
-       :op=\E[m:pf=\E[4i:po=\E[5i:ps=\E[0i:\
-       :r1=\E[13l\E[3l\E!p\E[?4i:r2=\E[35h\E[?3l:r3=\E[?5l:\
-       :rc=\E8::sc=\E7:se=\E[27m:sf=\n:so=\E[7m:sr=\EM:\
-       :st=\EH:ta=\011:te=\E[ R:ti=\E[ Q:\
-       :ts=\E[40l\E[40h\E7\E[99;%i%p1%dH:u0=\E[?38h\E8:\
-       :u1=\E[?38l\E)0:u2=\E[92;52"p:u3=\E~B:u4=\E[92;76"p::\
-       :ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[34h\E[?25h:\
-       :vi=\E[?25l:vs=\E[?25h\E[34l:
-#
-#      Function key set for the ASCII (wy-50 compatable) keyboard
-#
-wy370-101k|Wyse 370 with 101 key keyboard:\
-       :@8=\EOM:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:\
-       :F5=\E[28~:F6=\E[29~:k1=\E[?4i:k2=\E[?3i:k3=\E[2i:\
-       :k4=\E[@:k5=\E[M:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
-       :k9=\E[20~:k;=\E[21~:kA=\EOP:kB=\E[Z:kD=\EOQ:kI=\EOP:\
-       :kL=\EOQ:kN=\E[U:kP=\E[V:kb=^H:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:tc=wy370-nk:
-#
-#      Function key set for the VT-320 (and wy85) compatable keyboard
-#
-wy370-105k|Wyse 370 with 105 key keyboard:\
-       :%1=\E[28~:*6=\E[4~:@0=\E[1~:@8=\EOM:F1=\E[23~:\
-       :F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:F6=\E[29~:\
-       :F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:K1=\EOw:\
-       :K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:k1=\EOP:k2=\EOQ:\
-       :k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
-       :k9=\E[20~:k;=\E[21~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
-       :kP=\E[5~:kb=^H:kd=\E[B:kh=\E[26~:kl=\E[D:kr=\E[C:\
-       :ku=\E[A:l1=PF1:l2=PF2:l3=PF3:l4=PF4:tc=wy370-nk:
-#
-#      Function key set for the PC compatable keyboard
-#
-wy370-EPC|Wyse 370 with 102 key keyboard:\
-       :@7=\E[1~:@8=\EOM:F1=\E[23~:F2=\E[24~:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[M:k6=\E[17~:k7=\E[18~:\
-       :k8=\E[19~:k9=\E[20~:k;=\E[21~:kB=\E[Z:kI=\E[2~:\
-       :kN=\E[U:kP=\E[V:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:tc=wy370-nk:
-#
-#      Set up the default WY-370.
-#
-wy370|wyse370|Wyse 370:\
-       :tc=wy370-101k:
-#
-#      Wyse 370 with visual bell.
-wy370-vb|Wyse 370 with visible bell:\
-       :vb=\E[30h\E\\\054\E[30l:tc=wy370:
-#
-#      Wyse 370 in 132-column mode.
-wy370-w|Wyse 370 in 132-column mode:\
-       :co#132:ws#132:\
-       :r2=\E[35h\E[?3h:tc=wy370:
-#
-#      Wyse 370 in 132-column mode with visual bell.
-wy370-wvb|Wyse 370 with visible bell 132-columns:\
-       :vb=\E[30h\E\\\054\E[30l:tc=wy370-w:
-wy370-rv|Wyse 370 reverse video:\
-       :r3=\E[32h\E[?5h:tc=wy370:
-#
-#      Wyse 99gt Tektronix 4010/4014 emulator,
-#
-wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator:\
-       :am:bs:os:\
-       :co#74:li#35:\
-       :bl=^G:cl=\E^L:\
-       :..cm=\035%{3040}%{89}%p1%*%-%Py\n%p2%{55}%*%Px\n%gy%{128}%/%{31}%&%{32}%+%c\n%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c\n%gy%{004}%/%{31}%&%{96}%+%c\n%gx%{128}%/%{31}%&%{32}%+%c\n%gx%{004}%/%{31}%&%{64}%+%c\037:\
-       :cr=^M:do=^J:ff=^L:\
-       :hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037:\
-       :ho=^]7`x @\037:\
-       :hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037:\
-       :is=\E8:le=^H:nd= :nw=^M^J:u0=\E~>\E8:u1=\E[42h:\
-       :up=^K:
-#
-#      Wyse 160 Tektronix 4010/4014 emulator,
-#
-wy160-tek|Wyse 160 Tektronix 4010/4014 emulator:\
-       :..cm=\035%{3103}%{91}%p1%*%-%Py\n%p2%{55}%*%Px\n%gy%{128}%/%{31}%&%{32}%+%c\n%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c\n%gy%{004}%/%{31}%&%{96}%+%c\n%gx%{128}%/%{31}%&%{32}%+%c\n%gx%{004}%/%{31}%&%{64}%+%c\037:\
-       :ho=^]8`g @\037:tc=wy99gt-tek:
-#
-#      Wyse 370 Tektronix 4010/4014 emulator,
-#
-wy370-tek|Wyse 370 Tektronix 4010/4014 emulator:\
-       :am:bs:os:\
-       :co#80:li#36:\
-       :bl=^G:cl=\E^L:\
-       :..cm=\035%{775}%{108}%p1%*%{5}%/%-%Py\n%p2%{64}%*%{4}%+%{5}%/%Px\n%gy%{32}%/%{31}%&%{32}%+%c\n%gy%{31}%&%{96}%+%c\n%gx%{32}%/%{31}%&%{32}%+%c\n%gx%{31}%&%{64}%+%c\037:\
-       :cr=^M:do=^J:ff=^L:\
-       :hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037:\
-       :ho=^]8g @\037:\
-       :hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037:\
-       :is=\E8:kb=^H:kd=^J:kl=^H:kr=^I:ku=^K:le=^H:nd= :\
-       :nw=^M^J:u0=\E[?38h\E8:u1=\E[?38l\E)0:up=^K:
-
-# Vendor-supplied Wyse entries end here.
-
-# From: Eric Freudenthal <freudent@eric.ultra.nyu.edu>
-wy100q|Wyse 100 for Quotron:\
-       :bs:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=\EE:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :\
-       :dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:\
-       :is=\E`\072\200\EC\EDF\E0\E'\E(\EA21:kd=^J:kl=^H:\
-       :kr=^L:ku=^K:nd=^L:se=\EG0:so=\EG4:sr=\Ej:ue=\EG0:\
-       :up=^K:us=\EG8:
-
-#### Kermit terminal emulations
-#
-# Obsolete Kermit versions may be listed in the section describing obsolete
-# non-ANSI terminal emulators later in the file.
-#
-
-# KERMIT standard all versions.
-# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
-# (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
-# From: greg small <gts@populi.berkeley.edu> 9-25-84
-kermit|standard kermit:\
-       :bs:\
-       :co#80:li#24:\
-       :cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :ho=\EH:\
-       :is=K0 Standard Kermit  9-25-84\n:kd=^J:kh=^^:kl=^H:\
-       :kr=^L:ku=^K:nd=\EC:up=\EA:
-kermitam|standard kermit plus auto-margin:\
-       :am:\
-       :is=K1 Standard Kermit plus Automatic Margins\n:tc=kermit:
-# IBMPC Kermit 1.2.
-# Bugs :cd:ce: do not work except at beginning of line!  :cl: does not work,
-# but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of line).
-# From: greg small <gts@populi.berkeley.edu> 8-30-84
-pckermit|pckermit12|UCB IBMPC Kermit 1.2:\
-       :am:\
-       :li#25:\
-       :cd@:ce@:cl=\EH\EJ:\
-       :is=K2 UCB IBMPC Kermit 1.2  8-30-84\n:tc=kermit:
-# IBMPC Kermit 1.20
-# Cannot use line 25, now acts funny like ansi special scrolling region.
-# Initialization must escape from that region by cursor position to line 24.
-# Cannot use character insert because 1.20 goes crazy if insert at col 80.
-# Does not use am: because autowrap mode lost when kermit dropped and restarted.
-# (pckermit: mapped ":pt:" to ":it#8:" -- esr)
-# From: greg small <gts@populi.berkeley.edu> 12-19-84
-pckermit120|UCB IBMPC Kermit 1.20:\
-       :am@:pt:\
-       :it#8:li#24:\
-       :al=\EL:dc=\EN:dl=\EM:do=\EB:ei@:im@:\
-       :is=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20  12-19-84\n:\
-       :se=\Eq:so=\Ep:vs=\EO\Eq\EEK3:tc=kermit:
-# MS-DOS Kermit 2.27 for the IBMPC
-# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
-# Cannot use line 25, now acts funny like ansi special scrolling region.
-# Initialization must escape from that region by cursor position to line 24.
-# Does not use am: because autowrap mode lost when kermit dropped and restarted.
-# Reverse video for standout like H19.
-# (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:";
-# mapped ":pt:" to ":it#8:" -- esr)
-# From: greg small <gts@populi.berkeley.edu> 3-17-85
-msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC:\
-       :am@:bs:pt:\
-       :co#80:it#8:li#24:\
-       :al=\EL:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :dc=\EN:\
-       :dl=\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:\
-       :is=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n:\
-       :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:nd=\EC:rc=\Ek:sc=\Ej:\
-       :se=\Eq:so=\Ep:up=\EA:vs=\EO\Eq\EG\EwK4:
-# MS-DOS Kermit 2.27 with automatic margins
-# From:        greg small <gts@populi.berkeley.edu> 3-17-85
-msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins:\
-       :am:\
-       :is=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n:\
-       :vs=\EO\Eq\EG\EvK5:tc=msk227:
-# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC
-# Automatic margins now default.  Use ansi set graphic rendition for standout,
-# underline and ul codes (:md:,:me:,:mr:).  Define function keys.
-# (msk22714: removed obsolete ":kn#10:" -- esr)
-# From: greg small <gts@populi.berkeley.edu> 3-17-85
-msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC:\
-       :am:\
-       :is=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n:\
-       :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:\
-       :k7=\E7:k8=\E8:k9=\E9:md=\E[1m:me=\E[m:mr=\E[7m:\
-       :se=\E[m:so=\E[1m:ue=\E[m:us=\E[4m:vs=\EO\Eq\EG\EvK6:tc=mskermit227:
-# This was designed for a VT320 emulator, but it is probably a good start
-# at support for the VT320 itself.
-# Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
-vt320-k3|MS-Kermit 3.00's vt320 emulation:\
-       :am:es:hs:km:mi:ms:xn:\
-       :co#80:it#8:li#49:pb#9600:vt#3:\
-       :AL=\E[%dL:CC=\E:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
-       :IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:SR=\E[%dL:UP=\E[%dA:\
-       :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
-       :ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
-       :cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:dl=\E[M:\
-       :do=^J:ds=\E[0$~:ec=\E[%dX:ei=\E[4l:fs=\E[0$}:\
-       :ho=\E[H:im=\E[4h:is=\E>\E F\E[?1l\E[?7h\E[r\E[2$~:\
-       :k0=\E[21~:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:\
-       :k7=\E[18~:k8=\E[19~:k9=\E[20~:kI=\E[2~:kL=\E[3~:\
-       :kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=^M^J:pf=\E[4i:\
-       :po=\E[5i:ps=\E[0i:\
-       :r1=\E(B\E)B\E>\E F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E4i\E?4i\E[m\E[r\E[2$~:\
-       :rc=\E8:sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:\
-       :st=\EH:ta=^I:ts=\E[1$}\r\E[K:ue=\E[24m:up=\E[A:\
-       :us=\E[4m:vb=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l:\
-       :ve=\E[?25h:vi=\E[?25l:
-
-######## OLDER TERMINAL TYPES
-#
-# This section is devoted to older commercial terminal brands that are now
-# discontinued, but known to be still in use or represented by emulations.
-#
-
-#### AT&T (att, tty)
-#
-# This section also includes Teletype-branded VDTs.
-#
-# The AT&T/Teletype terminals group was sold to SunRiver Data Systems; for
-# details, see the header comment on the ADDS section.
-#
-# These are AT&T's official terminfo entries
-#
-att2300|ATT2300|sv80|AT&T 2300 Video Information Terminal 80 column mode:\
-       :am:eo:mi:ms:xo:\
-       :co#80:it#8:li#24:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[11r:\
-       :F2=\E[12r:F3=\E[13r:F4=\E[14r:F5=\E[15r:F6=\E[16r:\
-       :IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:\
-       :bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:\
-       :ho=\E[H:im=\E[4h:k1=\E[1r:k2=\E[2r:k3=\E[3r:\
-       :k4=\E[4r:k5=\E[5r:k6=\E[6r:k7=\E[7r:k8=\E[8r:\
-       :k9=\E[9r:k;=\E[10r:kA=\E[L:kB=\E[Z:kC=\E[J:kD=\E[P:\
-       :kI=\E[@:kL=\E[M:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=^H:me=\E[m:mr=\E[7m:nd=\E[C:\
-       :pf=\E[4i:po=\E[5i:ps=\E[0i:se=\E[0m:sf=^J:so=\E[7m:\
-       :ta=^I:up=\E[A:
-att2350|AT&T 2350 Video Information Terminal 80 column mode:\
-       :pf@:po@:ps@:tc=att2300:
-att2300-x40|sv40|AT&T 2300 Video Information Terminal 40 column mode:\
-       :co#40:it#5:li#23:\
-       :AL@:al@:tc=att2300:
-att2350-x40|ATT2350-x40|AT&T 2350 Video Information Terminal 40 column mode:\
-       :co#40:it#5:li#23:\
-       :AL@:al@:tc=att2350:
-
-# Must setup RETURN KEY - CR, REC'VD LF - INDEX.
-# Seems upward compatible with vt100, plus ins/del line/char.
-# On sgr, the protection parameter is ignored.
-# No check is made to make sure that only 3 parameters are output.
-#      standout= reverse + half-intensity = 3 | 5.
-#      bold= reverse + underline = 2 | 3.
-# note that half-bright blinking doesn't look different from normal blinking.
-# NOTE:you must program the function keys first, label second!
-att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1:\
-       :am:hs:mi:ms:xo:\
-       :Nl#8:co#80:it#8:lh#2:li#24:lw#8:ws#80:\
-       :ac=``aaffhhggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~00++--\\\054\\\054..:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ei=:fs=\E8:ho=\E[H:\
-       :i1=\E[?3l\E)0:\
-       :i2=\E[1;03q   f1           \EOP\E[2;03q   f2           \EOQ\E[3;03q   f3           \EOR\E[4;03q   f4           \EOS\E[5;03q   f5           \EOT\E[6;03q   f6           \EOU\E[7;03q   f7           \EOV\E[8;03q   f8           \EOW:\
-       :ic=\E[@:im=:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:\
-       :k6=\EOU:k7=\EOV:k8=\EOW:kC=\E[2J:kH=\E[24;1H:kb=^H:\
-       :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
-       :ll=\E[24H:mb=\E[5m:md=\E[2;7m:me=\E[m\017:mh=\E[2m:\
-       :mk=\E[8m:mr=\E[7m:nd=\E[C:nw=^M^J:\
-       :..pn=\E[%p1%d;00q%p2%\072-16s:\
-       :..px=\E[%p1%1d;%p2%l%2.2dq   f%p1%1d           %p2%s:\
-       :r2=\Ec\E[?3l\E[2;0y:rc=\E8:\
-       :..sa=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
-       :ts=\E7\E[25;%p1%{1}%+%dH:ue=\E[m:up=\E[A:us=\E[4m:
-
-att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1:\
-       :co#132:ws#132:\
-       :i1=\E[?3h\E)0:r2=\Ec\E[?3h\E[2;0y:tc=att5410v1:
-
-att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2:\
-       :..px=\E[%p1%d;%p2%l%02dq   f%p1%d           %p2%s:tc=att5410v1:
-
-att4410-nfk|att5410-nfk|4410-nfk|tty5410-nfk|5410-nfk|version 1 AT&T 4410/5410 entry without function keys:\
-       :i3@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:pn@:tc=att4410:
-
-att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode:\
-       :co#132:ws#132:\
-       :i1=\E[?3h\E)0:r2=\Ec\E[?3h\E[2;0y:tc=att4410:
-
-att5410-nsl|4410-nsl|att4410-nsl|ATT4410-nsl|tty5410-nsl|tty5410 entry without pln defined:\
-       :pn@:tc=att4410:
-
-otty5410|teletype 5410 for S5R2 curses:\
-       :ts=\E7\E[25;%p1%{1}%+%dH:tc=att4410:
-
-# 5410 in terms of a vt100
-v5410|5410 in terms of a vt100:\
-       :am:mi:ms:xo:\
-       :co#80:it#8:li#24:vt#3:\
-       :@8=\EOM:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ei=:\
-       :ho=\E[H:ic=\E[@:im=:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:\
-       :k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:\
-       :k;=\EOx:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:\
-       :ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
-       :me=\E[m\017:mr=\E[7m:nd=\E[C:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-
-# 
-# Teletype Model 5420 -- A souped up 5410, with multiple windows,
-# even! the 5420 has three modes: scroll, window or page mode
-# this terminfo should work in scroll or window mode, but doesn't
-# take advantage of any of the differences between them.
-#
-# Has memory below (2 lines!)
-# 3 pages of memory (plus some spare)
-# The 5410 sequences for cup,cvvis,dch,dl,ech,flash,home,hpa,hts would work
-# for these, but these work in both scroll and window mode...
-# Unset insert character so insert mode works
-# is1 sets 80 column mode,
-# is2 escape sequence:
-# 1) turn off all fonts
-# 2) function keys off, keyboard lock off, control display off,
-#    insert mode off, erasure mode off,
-# 3) full duplex, monitor mode off, send graphics off, nl on lf off
-# 4) reset origin mode
-# 5) set line wraparound
-# 6) exit erasure mode, positional attribute mode, and erasure extent mode
-# 7) clear margins
-# 8) program ENTER to transmit ^J,
-# We use \212 to program the ^J because a bare ^J will get translated by
-# UNIX into a CR/LF. The enter key is needed for AT&T uOMS.
-#     1      2            3              4     5     6    7  8
-# is3 set screen color to black,
-# No representation in terminfo for the delete word key: kdw1=\Ed
-# Key capabilities assume the power-up send sequence...
-# This rmcup is not strictly necessary, but it helps maximize 
-# memory usefulness: rmcup=\Ez,
-# Alternate sgr0:      sgr0=\E[0m\EW^O,
-# Alternate sgr:       sgr=\E[%?%p1%t2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t^N%e^O%;,
-# smkx programs the SYS PF keys to send a set sequence.
-# It also sets up labels f1, f2, ..., f8, and sends edit keys.
-# This string causes them to send the strings kf1-kf8
-# when pressed in SYS PF mode.
-att4415|tty5420|att5420|AT&T 4415/5420 80 columns:\
-       :db:mi:xo:\
-       :Nl#8:lh#2:lm#78:lw#8:ws#55:\
-       :@1=\Et:@7=\Ez:@8=\Eent:AL=\E[%dL:\
-       :CM=\E[%i%p1%d;%p2%dt:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
-       :IC=\E[%d@:LE=\E[%dD:LF=\E|:LO=\E~:RI=\E[%dC:\
-       :SF=\E[%dE:SR=\E[%dF:UP=\E[%dA:bt=\E[Z:ch=\E[%+^AG:\
-       :cl=\E[x\E[J:cm=\E[%i%d;%dx:ct=\E[3g:cv=\E[%+^Ad:\
-       :ec=\E[%ds\E[%dD:ei=\E[4l:ho=\E[x:i1=\E[?3l:\
-       :i2=\E[?5l:ic@:im=\E[4h:\
-       :is=\E[0m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[21;1j\212:\
-       :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:\
-       :k7=\EOi:k8=\EOj:kA=\E[L:kB=\E[Z:kD=\E[P:kE=\E[2K:\
-       :kF=\E[T:kH=\Eu:kI=\E[4h:kL=\E[M:kN=\E[U:kP=\E[V:\
-       :kR=\E[S:ke=\E[19;0j\E[21;1j\212:\
-       :ks=\E[19;1j\E[21;4j\Eent:l1=F1:l2=F2:l3=F3:l4=F4:\
-       :l5=F5:l6=F6:l7=F7:l8=F8:ll=\Ew:me=\E[0m\017:mp=\EV:\
-       :pf=\E[?9i:..pn=\E[%p1%d;0;0;0q%p2%\072-16.16s:\
-       :po=\E[?4i:ps=\E[?2i:\
-       :..px=\E[%p1%d;%p2%l%02dq   F%p1%d           %p2%s:\
-       :..sa=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :st=\EH:ts=\E7\E[25;%p1%{8}%+%dH:vb=\E[?5h\E[?5l:\
-       :ve=\E[11;0j:vs=\E[11;1j:tc=att4410:
-
-att4415-w|tty5420-w|att5420-w|5420-w|AT&T model 4415/5420 in 132 column mode:\
-       :co#132:lm#54:ws#97:\
-       :i1=\E[?3h:tc=att4415:
-
-att4415-rv|tty5420-rv|att5420-rv|AT&T model 4415/5420 80 columns in reverse video:\
-       :i2=\E[?5h:vb=\E[?5l\E[?5h:tc=att4415:
-
-att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T model 4415/5420 132 columns in reverse video:\
-       :co#132:lm#54:ws#97:\
-       :i1=\E[?3h:i2=\E[?5h:vb=\E[?5l\E[?5h:tc=att4415:
-
-# Note that this mode permits programming USER PF KEYS and labels
-# However, when you program user pf labels you have to reselect
-# user pf keys to make them appear! 
-att4415+nl|4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing labels:\
-       :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:\
-       :..pn=\E[%p1%d;0;0;1q%p2%\072-16.16s:\
-       :..px=\E[%p1%d;%p2%l%02d;0;1q   F%p1%d           %p2%s:
-
-att4415-nl|4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels:\
-       :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:tc=att4415+nl:tc=att4415:
-
-att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels:\
-       :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:tc=att4415+nl:tc=att4415-rv:
-
-att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels:\
-       :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:tc=att4415+nl:tc=att4415-w:
-
-att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels:\
-       :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:tc=att4415+nl:tc=att4415-w-rv:
-
-otty5420|teletype 5420 for SVR2 curses on the 3B-20's:\
-       :ch=\E[%+^AG:cv=\E[%+^Ad:tc=tty5420:
-
-att5420_2|AT&T 5420 model 2 in 80 column mode:\
-       :am:db:hs:mi:ms:xo:\
-       :Nl#8:co#80:it#8:lh#2:li#24:lm#78:lw#8:ws#55:\
-       :@1=\Et:@7=\Ez:@8=^J:AL=\E[%dL:CM=\E[%i%p1%d;%p2%dt:\
-       :DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:LE=\E[%dD:LF=\E|:\
-       :LO=\E~:RI=\E[%dC:SF=\E[%dE:SR=\E[%dF:UP=\E[%dA:\
-       :ae=^O:al=\E[L:as=^N:bt=\E[1Z:cb=\E[1K:cd=\E[0J:\
-       :ce=\E[0K:ch=\E[%+^AG:cl=\EH\EJ:cm=\E[%i%d;%dH:\
-       :cr=\EG:cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%+^Ad:dc=\E[P:\
-       :dl=\E[M:do=\E[1B:ec=\E[%ds\E[%dD:ei=:fs=\E8:ho=\E[H:\
-       :i1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;0j\E[6;0j\E[7;0j\E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j\E[29;0j\E[1;24r:\
-       :ic=\E[@:im=:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:\
-       :k6=\EOh:k7=\EOi:k8=\EOj:kA=\E[L:kB=\E[Z:kC=\E[2J:\
-       :kD=\E[P:kE=\E[2K:kF=\E[T:kH=\Eu:kI=\E[4h:kL=\E[M:\
-       :kN=\E[U:kP=\E[V:kR=\E[S:kb=^H:kd=\E[B:ke=\E[19;0j:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:ks=\E[19;1j:ku=\E[A:l1=F1:\
-       :l2=F2:l3=F3:l4=F4:l5=F5:l6=F6:l7=F7:l8=F8:le=^H:\
-       :ll=\Ew:mb=\E[5m:me=\E[0m\017:mh=\E[2m:mk=\E[8m:\
-       :mp=\EV:mr=\E[7m:nd=\E[1C:nw=^M^J:pf=\E[4i:\
-       :..pn=\E[%p1%d;0;0;0q%p2%\072-16.16s\E~:po=\E[5i:\
-       :ps=\E[?;2i:\
-       :..px=\E[%p1%d;%p2%l%02dq   F%p1%d           %p2%s\E~:\
-       :r2=\Ec\E[?3l\E[2;0y:rc=\E8:\
-       :..sa=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
-       :ts=\E7\E[25;%p1%{8}%+%dH:ue=\E[m:us=\E[4m:\
-       :vb=\E[?5h\E[?5l:ve=\E[11;0j:vs=\E[11;1j:
-att5420_2-w|AT&T 5420 model 2 in 132 column mode:\
-       :co#132:\
-       :i1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\E[6;0j\E[7;0j\E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j\E[29;0j\E[1;24r:tc=att5420_2:
-
-att4418|att5418|ATT5418|AT&T 5418 in 80 column mode:\
-       :am:xo:\
-       :co#80:li#24:\
-       :@8=\E[:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
-       :F1=\E[n:F2=\E[o:F3=\E[H:F4=\E[I:F5=\E[J:F8=\E[K:\
-       :F9=\E[L:FA=\E[E:FB=\E[_:FC=\E[M:FD=\E[N:FE=\E[O:\
-       :IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:\
-       :al=\E[1L:as=^N:bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[1P:dl=\E[M:do=\E[B:ei=:\
-       :ho=\E[H:i1=\E[?3l:ic=\E[1@:im=:is=\E)0\E?6l\E?5l:\
-       :k1=\E[h:k2=\E[i:k3=\E[j:k6=\E[k:k7=\E[l:k8=\E[f:\
-       :k9=\E[w:k;=\E[m:kC=\E[%:kd=\EU:kh=\Ec:kl=\E@:kr=\EA:\
-       :ku=\ES:le=\E[D:mb=\E[5m:me=\E[0m\017:mh=\E[2m:\
-       :mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[0m:sf=^J:\
-       :so=\E[7m:ue=\E[0m:up=\E[A:us=\E[4m:
-att4418-w|att5418-w|AT&T 5418 in 132 column mode:\
-       :co#132:\
-       :i1=\E[?3h:tc=att5418:
-
-tty4420|teletype 4420:\
-       :da:db:eo:ms:ul:xo:\
-       :co#80:li#24:lm#72:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\Ez:cl=\EH\EJ:cm=\EY%+ %+ :\
-       :cr=\EG:dc=\EP:dl=\EM:dm@:do=\EB:ed@:ho=\EH:k0=\EU:\
-       :k3=\E@:kA=\EL:kB=\EO:kC=\EJ:kD=\EP:kF=\ES:kI=\E^:\
-       :kL=\EM:kR=\ET:kd=\EB:kh=\EH:kl=^H:kr=\EC:ku=\EA:\
-       :l0=segment advance:l3=cursor tab:le=\ED:nd=\EC:\
-       :se=\E~:sf=\EH\EM\EY7 :so=\E}:ue=\EZ:up=\EA:us=\E\\:
-
-#  The following is a termcap entry for the Teletype 4424
-#  asynchronous keyboard-display terminal.  It supports
-#  the vi editor.  The terminal must be "set up" as follows,
-#      
-#      HIGHLIGHT DEFINITION    3-TONE
-#      DISPLAY FUNCTION        GROUP III
-#      
-#  The second entry below provides limited (a la adm3a)
-#  operation under GROUP II.
-#      
-#  This must be used with DISPLAY FUNCTION GROUP I or III
-#      and HIGHLIGHT DEFINITION 3-TONE
-# The terminal has either bold or blink, depending on options
-#
-att4424|tty4424|4424-3|teletype 4424:\
-       :am:xo:\
-       :co#80:li#24:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
-       :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=\E(B:al=\EL:\
-       :as=\E(0:bl=^G:bt=\EO:cd=\EJ:ce=\Ez:cl=\E[H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\EF:dc=\EP:\
-       :dl=\EM:do=\EB:ei=:ho=\E[H:ic=\E^:im=:\
-       :is=\E[20l\E[?7h:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
-       :kC=\EJ:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:\
-       :ku=\E[A:le=^H:mb=\E3:md=\E3:me=\EX\E~\EZ\E4\E(B:\
-       :mh=\EW:mr=\E}:nd=\EC:nw=\EE:\
-       :..sa=\E[%?%p1%t7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p6%p4%|%t;5%;%?%p5%t;0%;m:\
-       :se=\E~:sf=^J:so=\E}:sr=\ET:st=\EH:ta=^I:ti=\E[1m:\
-       :ue=\EZ:up=\EA:us=\E\\:
-
-att4424-1|tty4424-1|teletype 4424 in display function group I:\
-       :kC@:kd=\EB:kh@:kl=\ED:kr=\EC:ku=\EA:tc=att4424:
-
-# The Teletype 5425 is really version 2 of the Teletype 5420. It 
-# is quite similar, except for some minor differences. No page 
-# mode, for example, so all of the cup sequences used above have 
-# to change back to what's being used for the 5410. Many of the 
-# option settings have changed their numbering as well.
-# 
-# This has been tested on a preliminary model.
-#
-att5425|tty5425|att4425|AT&T 4425/5425:\
-       :am:da:db:hs:mi:ms:xn:xo:\
-       :Nl#8:co#80:it#8:lh#2:li#24:lm#78:lw#8:ws#55:\
-       :@1=\Et:@7=\Ez:@8=\Eent:AL=\E[%dL:DC=\E[%dP:\
-       :DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:LF=\E|:\
-       :LO=\E~:RI=\E[%dC:SF=\E[%dE:SR=\E[%dF:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:ch=\E[%+^AG:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%+^Ad:dc=\E[P:\
-       :dl=\E[M:do=^J:eA=\E(B\E)0:ec=\E[%ds\E[%dD:ei=\E[4l:\
-       :fs=\E8:ho=\E[H:i1=\E<\E[?3l:i2=\E[?5l:im=\E[4h:\
-       :is=\E[0m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[25;1j\212:\
-       :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:\
-       :k7=\EOi:k8=\EOj:kA=\E[L:kB=\E[Z:kC=\E[J:kD=\E[P:\
-       :kE=\E[2K:kF=\E[T:kI=\E[4h:kL=\E[M:kR=\E[S:kb=^H:\
-       :kd=\E[B:ke=\E[21;0j\E[25;1j\212:kh=\E[H:kl=\E[D:\
-       :kr=\E[C:ks=\E[21;1j\E[25;4j\Eent\E~:ku=\E[A:le=^H:\
-       :ll=\E[24H:mb=\E[5m:md=\E[2;7m:me=\E[m\017:mh=\E[2m:\
-       :mk=\E[8m:mp=\EV:mr=\E[7m:nd=\E[C:nw=^M^J:pf=\E[?9i:\
-       :..pn=\E[%p1%d;0;0;0q%p2%\072-16.16s:po=\E[?4i:\
-       :ps=\E[?2i:\
-       :..px=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s:\
-       :r2=\Ec\E[?3l\E[2;0y:rc=\E8:\
-       :..sa=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
-       :ts=\E7\E[25;%p1%{8}%+%dH:ue=\E[m:up=\E[A:us=\E[4m:\
-       :vb=\E[?5h\E[?5l:ve=\E[12;0j:vs=\E[12;1j:
-
-att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels:\
-       :ks=\E[21;1j\E[25;4j\Eent:tc=att4425:
-
-att5425-nl-w|tty5425-nl-w|att4425-nl-w|AT&T 4425/5425 132 columns no labels:\
-       :ks=\E[21;1j\E[25;4j\Eent:tc=att4425-w:
-
-tty5425-fk|att4425-fk|AT&T 4425/5425 without function keys:\
-       :ke@:ks@:tc=att5425:
-
-att5425-w|att4425-w|tty5425-w|teletype 4425/5425 in 132 column mode:\
-       :co#132:lm#54:ws#97:\
-       :i1=\E[?3h:tc=tty5425:
-
-tty5425-w-fk|att4425-w-fk|att5425-w-fk|AT&T 4425/5425 without function keys in wide mode:\
-       :ke@:ks@:tc=att5425-w:
-
-       
-# This had bogus capabilities: ri=\EM, ri=\E[1U, 
-att4426|tty4426|teletype 4426S:\
-       :am:da:db:xo:\
-       :co#80:li#24:lm#48:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
-       :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
-       :ae=\E(B:al=\EL:as=\E(0:bl=^G:cd=\E[J:ce=\E[0K:\
-       :ch=\E[%dG:cl=\E[H\E[2J\E[1U\E[H\E[2J\E[1V:\
-       :cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:cv=\E[%dd:dc=\EP:\
-       :dl=\E[M:do=\E[B:ei=:ho=\E[H:i1=\Ec\E[?7h:ic=\E^:im=:\
-       :is=\E[m\E[1;24r:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
-       :k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW:kB=\EO:kC=\E[2J:\
-       :kH=\E[24;1H:kb=^H:kd=\EB:kh=\E[H:kl=\ED:kr=\EC:\
-       :ku=\EA:le=\E[D:ll=\E[24H:md=\E[5m:me=\E[0m\E(B:\
-       :mr=\E[7m:nd=\E[C:nw=^M^J:r2=\Ec\E[?3l\E[2;0y:rc=\E8:\
-       :sc=\E7:se=\E[0m:sf=^J:so=\E[5m:sr=\ET:st=\E1:ta=^I:\
-       :ue=\E[m:up=\EA:us=\E[4m:
-
-
-# Terminfo entry for the AT&T 510 A Personal Terminal
-# Function keys 9 - 16 are available only after the 
-# screen labeled (soft keys/action blocks) are labeled.  Function key
-# 9 corresponds to the leftmost touch target on the screen,
-# function key 16 corresponds to the rightmost.
-#
-# This entry is based on one done by Ernie Rice at Summit, NJ and
-# changed by Anne Gallup, Skokie, IL, ttrdc!anne
-att510a|510a|bct510a|510A|AT&T 510A Personal Terminal:\
-       :am:mi:ms:xn:xo:\
-       :Nl#8:co#80:lh#2:li#24:lw#7:\
-       :#4=\E[u:%i=\E[v:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
-       :DO=\E[%dB:F1=\EOe:F2=\EOf:F3=\EOg:F4=\EOh:F5=\EOi:\
-       :F6=\EOj:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ac=hrisjjkkllmmnnqqttuuvvwwxx{{||}}~~-f\\\054h.e+g`b:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[0J:\
-       :ce=\E[0K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:\
-       :dc=\E[P:dl=\E[M:do=\E[1B:eA=\E(B\E)1:ff=^L:ho=\E[H:\
-       :i1=\E(B\E)1\E[2l:i2=\E[21;1|\212:k1=\EOm:k2=\EOV:\
-       :k3=\EOu:k4=\ENj:k5=\ENe:k6=\ENf:k7=\ENh:k8=\E[H:\
-       :k9=\EOc:k;=\EOd:kB=\E[Z:kF=\E[S:kR=\E[T:kb=^H:\
-       :kd=\E[B:ke=\E[19;0|:kl=\E[D:kr=\E[C:ks=\E[19;1|:\
-       :ku=\E[A:le=^H:mb=\E[5m:md=\E[2;7m:me=\E[m\017:\
-       :mh=\E[2m:mr=\E[7m:nd=\E[C:nw=\EE:pf=\E[?8i:\
-       :..pn=\E[%p1%dp%p2%\072-16s:po=\E[?4i:ps=\E[0i:\
-       :rc=\E8:\
-       :..sa=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:ve=\E[11;3|:vi=\E[11;0|:\
-       :vs=\E[11;2|:
-
-# Terminfo entry for the AT&T 510 D Personal Terminal
-# Function keys 9 through 16 are accessed by bringing up the
-# system blocks.
-# Function key 9 corresponds to the leftmost touch target on the screen,
-# function key 16 corresponds to the rightmost.
-#
-# There are problems with soft key labeling.  These are due to 
-# strangenesses in the native terminal that are impossible to
-# describe in a terminfo.  
-att510d|510d|bct510d|510D|AT&T 510D Personal Terminal:\
-       :am:da:db:mi:ms:xn:xo:\
-       :Nl#8:co#80:lh#2:li#24:lm#48:lw#7:\
-       :#4=\E[u:%i=\E[v:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
-       :DO=\E[%dB:F1=\EOe:F2=\EOf:F3=\EOg:F4=\EOh:F5=\EOi:\
-       :F6=\EOj:IC=\E[%d@:LE=\E[%dD:LF=\E<:LO=\E?:MC=\E\072:\
-       :ML=\E4:MR=\E5:RI=\E[%dC:RX=\E[29;1|:SF=\E[%dS:\
-       :SR=\E[%dT:SX=\E[29;0|:UP=\E[%dA:\
-       :ac=hrisjjkkllmmnnqqttuuvvwwxx{{||}}~~-f\\\054h.e+g`b:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[0J:\
-       :ce=\E[0K:ch=\E[%+^AG:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:ct=\E[3g:cv=\E[%+^Ad:dc=\E[P:dl=\E[M:do=\E[1B:\
-       :eA=\E(B\E)1:ei=\E[4l:ff=^L:ho=\E[H:\
-       :i1=\E(B\E)1\E[5;0|:i2=\E[21;1|\212:im=\E[4h:k1=\EOm:\
-       :k2=\EOV:k3=\EOu:k4=\ENj:k5=\ENe:k6=\ENf:k7=\ENh:\
-       :k8=\E[H:k9=\EOc:k;=\EOd:kB=\E[Z:kF=\E[S:kR=\E[T:\
-       :kb=^H:kd=\E[B:ke=\E[19;0|:kl=\E[D:kr=\E[C:\
-       :ks=\E[19;1|:ku=\E[A:le=^H:ll=\E#2:mb=\E[5m:\
-       :md=\E[2;7m:me=\E[m\017:mh=\E[2m:mk=\E[8m:mr=\E[7m:\
-       :nd=\E[C:nw=\EE:pf=\E[?8i:..pn=\E[%p1%dp%p2%\072-16s:\
-       :po=\E[?4i:ps=\E[0i:r2=\E[5;0|:rc=\E8:\
-       :..rp=%p1%c\E[%p2%{1}%-%db:\
-       :..sa=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:ve=\E[11;3|:vs=\E[11;2|:
-
-# (untranslatable capabilities removed to fit entry within 1023 bytes)
-# WARNING: this entry, 1245 bytes long, may core-dump older termcap libraries!
-att513|att513-page|513-page|attis513-pfk|513bct|AT&T 513 Terminal using page mode:\
-       :HC:am:mi:ms:xn:xo:\
-       :Nl#8:co#80:lh#2:li#24:lw#8:\
-       :!1=\EOO:!2=\EOP:!3=\EOS:#1=\EOM:#2=\ENM:#3=\ENJ:\
-       :#4=\ENK:%0=\EOt:%1=\EOm:%2=\ENi:%3=\EOl:%4=\ENc:\
-       :%5=\ENh:%6=\EOv:%7=\EOr:%8=\ENg:%9=\EOz:%a=\EOL:\
-       :%b=\ENC:%c=\ENH:%d=\EOR:%e=\ENG:%f=\EOZ:%g=\EOT:\
-       :%h=\EOY:%i=\ENL:%j=\EOQ:&0=\EOW:&1=\EOb:&2=\ENa:\
-       :&3=\EOy:&4=\EOB:&5=\EOq:&6=\EOo:&7=\EOp:&8=\EOs:\
-       :&9=\ENB:*0=\EOX:*1=\EOU:*2=\END:*3=\EON:*4=\ENF:\
-       :*5=\ENE:*6=\ENI:*7=\ENN:*8=\EOA:*9=\EOK:@0=\EOx:\
-       :@1=\E9:@2=\EOw:@3=\EOV:@4=\EOu:@5=\ENd:@6=\EOn:\
-       :@7=\E0:@8=\Eent:@9=\EOk:AL=\E[%dL:DC=\E[%dP:\
-       :DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:LF=\E<:\
-       :LO=\E?:RI=\E[%dC:SF=\E[%dE:SR=\E[%dF:UP=\E[%dA:\
-       :ac=hrisjjkkllmmnnqqttuuvvwwxx{{||}}~~-f\\\054h.e+g`b:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:ch=\E[%+^AG:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:cs=%i\E[%d;%dr:ct=\E[3g:cv=\E[%+^Ad:dc=\E[P:\
-       :dl=\E[M:do=^J:eA=\E(B\E)1:ei=\E[4l:ho=\E[H:\
-       :i1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l:\
-       :im=\E[4h:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:\
-       :k6=\EOh:k7=\EOi:k8=\EOj:kB=\E[Z:kC=\E[J:kD=\ENf:\
-       :kE=\EOa:kF=\E[S:kI=\ENj:kL=\ENe:kN=\E[U:kP=\E[V:\
-       :kR=\E[T:kb=^H:kd=\E[B:ke=\E[19;0|\E[21;1|\212:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:ks=\E[19;1|\E[21;4|\Eent:\
-       :ku=\E[A:le=^H:ll=\E#2:mb=\E[5m:md=\E[2;7m:\
-       :me=\E[m\017:mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:\
-       :nw=\EE:pf=\E[?98l\E[?8i::::po=\E[?98l\E[?4i:\
-       :ps=\E[?98l\E[0i::\
-       :r1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0|\E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l:\
-       :r2=\E[5;0|:rc=\E8:::sc=\E7:se=\E[m:sf=^J:so=\E[7m:\
-       :sr=\EM:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\
-       :ve=\E[11;0|:vs=\E[11;1|:
-
-att500|bct500|500|AT&T-IS 500 terminal:\
-       :tc=att513:
-
-# 01-07-88
-# printer must be set to EMUL ANSI to accept ESC codes
-# cuu1 stops at top margin
-# is1 sets cpi 10,lpi 6,form 66,left 1,right 132,top 1,bottom 66,font
-#      and alt font ascii,wrap on,tabs cleared
-# is2 disables newline on LF,Emphasized off
-# The u0 capability sets form length
-# (untranslatable capabilities removed to fit entry within 1023 bytes)
-# WARNING: this entry, 1034 bytes long, may core-dump older termcap libraries!
-att5320|AT&T Model 5320 matrix printer:\
-       :YA:YD:\
-       :Ya#8192:Yi#10:Yj#12:Yk#100:Yl#72:Ym#120:co#132:it#8:\
-       :li#66:\
-       :DO=\E[%de:RI=\E[%da:\
-       :ZA=%?%p1%{10}%=%t\E[w%e%p1%{12}%=%t\E[2w%e%p1%{5}%=%t\E[5w%e%p1%{13}%=%p1%{14}%=%O%t\E[3w%e%p1%{16}%=%p1%{17}%=%O%t\E[4w%e%p1%{6}%=%t\E[6w%e%p1%{7}%=%t\E[7w%e%p1%{8}%=%t\E[8w%;:\
-       :ZB=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e%p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;:\
-       :ZM=\E[5m:ZU=\E[m:\
-       :Zj=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1%{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6}%=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t\E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t\E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%ttM\ 1:\
-       :Zl=\E[;%dr:Zm=\E[%+^As:Zn=\E[;%+^As:Zp=\E[%dr:\
-       :Zy=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfinnish%e%p1%{3}%=%tjapanese%e%p1%{4}%=%tnorwegian%e%p1%{5}%=%tswedish%e%p1%{6}%=%tgermanic%e%p1%{7}%=%tfrench%e%p1%{8}%=%tcanadian_french%e%p1%{9}%=%titalian%e%p1%{10}%=%tspanish%e%p1%{11}%=%tline%e%p1%ÆM\ 1:\
-       :ch=\E[%d`:cr=^M:cv=\E[%dd:do=^J:ff=^L:i1=\Ec:\
-       :is=\E[20l\r:nd= :ta=^I:u0=\E[%dt:up=\EM:
-
-att5310|AT&T 5310 matrix printer:\
-       :co#80:\
-       :tc=att5320:
-
-# 5620 terminfo  (2.0 or later ROMS with char attributes)
-# assumptions: ind (scroll forward one line) is only done at screen bottom
-att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns:\
-       :NL:NP:am:xo:\
-       :co#88:it#8:li#70:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:SF=\E[%dS:\
-       :SR=\E[%dT:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:ei=:\
-       :ho=\E[H:ic=\E[@:im=:kC=\E[2J:kH=\E[70;1H:kb=^H:\
-       :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
-       :md=\E[2m:me=\E[0m:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=^J:\
-       :..px=\E[%p1%d;%p2%l%dq%p2%s:r1=\Ec:rc=\E8:sc=\E7:\
-       :se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T:ta=^I:ue=\E[0m:\
-       :up=\E[A:us=\E[4m:
-
-att5620-24|dmd-24|teletype dmd 5620 in a 24x80 layer:\
-       :li#24:\
-       :tc=att5620:
-
-att5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer:\
-       :li#34:\
-       :tc=att5620:
-
-# Entries for kf15 thru kf28 refer to the shifted system pf keys.
-#
-# Entries for kf29 thru kf46 refer to the alternate keypad mode
-# keys:  = * / + 7 8 9 - 4 5 6 , 1 2 3 0 . ENTER
-att605|605bct|AT&T 605  80 column  102key keyboard:\
-       :am:eo:xo:\
-       :Nl#8:co#80:li#24:lw#8:ws#80:\
-       :#4=\E[ A:%i=\E[ @:@7=\E[24;1H:DC=\E[%dP:DL=\E[%dM:\
-       :F1=\ENq:F2=\ENr:F3=\ENs:F4=\ENt:F5=\EOC:F6=\EOD:\
-       :F7=\EOE:F8=\EOF:F9=\EOG:FA=\EOH:FB=\EOI:FC=\EOJ:\
-       :FD=\ENO:FE=\ENP:FF=\ENQ:FG=\ENR:FH=\ENS:FI=\ENT:\
-       :FJ=\EOP:FK=\EOQ:FL=\EOR:FM=\EOS:FN=\EOw:FO=\EOx:\
-       :FP=\EOy:FQ=\EOm:FR=\EOt:FS=\EOu:FT=\EOv:FU=\EOl:\
-       :FV=\EOq:FW=\EOr:FX=\EOs:FY=\EOp:FZ=\EOn:Fa=\EOM:\
-       :IC=\E[%d@:LF=\E[2p:LO=\E[p:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=\E)0\016:bl=^G:bt=\E[Z:cb=\E[1K:\
-       :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:fs=\E8:\
-       :i1=\E[8;0|\E[?\E[13;20l\E[?\E[12h:ic=\E[@:im=\E[4h:\
-       :is=\E[0m\017:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:\
-       :k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:k9=\ENo:k;=\ENp:\
-       :kA=\E[L:kB=\E[Z:kC=\E[2J:kD=\E[P:kF=\E[S:kI=\E[@:\
-       :kL=\E[M:kN=\E[U:kP=\E[V:kb=^H:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:ll=\E[24H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m\017:mh=\E[2m:mk=\E[8m:mr=\E[7m:\
-       :nd=\E[C:nw=\EE:pf=\E[?4i:\
-       :..pn=\E[%p1%d;0;0;0q%p2%\072-16.16s:po=\E[?5i:\
-       :..px=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s:\
-       :r2=\Ec\E[?3l:rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:\
-       :ta=^I:ts=\E7\E[25;%i%p1%dx:ue=\E[m:up=\E[A:us=\E[4m:
-att605-pc|605bct-pc|ATT 605 in pc term mode:\
-       :@7=\E[F:AL=\E[L:S4=250\E[?11l\E[50;1|:\
-       :S5=400\E[50;0|:XF=g:XN=e:\
-       :ac=k\277l\332m\300j\331n\305w\302q\304u\264t\303v\301x\263:\
-       :al=\E[L:bt=\E[Z:dc=\E[P:dl=\E[M:do=\E[B:ei=:ic=\E[@:\
-       :im=:k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:\
-       :k7=\E[S:k8=\E[T:k9=\E[U:k;=\E[V:kB=\E[Z:kD=\E[P:\
-       :kI=\E[@:kL=\E[M:kN=\E[G:kP=\E[I:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:nd=\E[C:up=\E[A:tc=att605:
-att605-w|605bct-w|AT&T 605-w 132 column 102 key keyboard:\
-       :co#132:ws#132:\
-       :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0:tc=att605:
-att610|610bct|AT&T 610; 80 column; 98key keyboard:\
-       :am:es:hs:mi:ms:xn:xo:\
-       :Nl#8:co#80:it#8:lh#2:li#24:lw#8:ws#80:\
-       :#4=\E[ @:%i=\E[ A:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
-       :DO=\E[%dB:F1=\ENq:F2=\ENr:F3=\ENs:F4=\ENt:IC=\E[%d@:\
-       :LE=\E[%dD:LF=\E[2p:LO=\E[p:RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
-       :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:\
-       :fs=\E8:ho=\E[H:\
-       :i1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0:\
-       :i2=\E(B\E)0:im=\E[4h:is=\E[0m\017:k1=\EOc:k2=\EOd:\
-       :k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:\
-       :k9=\ENo:k;=\ENp:kB=\E[Z:kC=\E[2J:kF=\E[S:kR=\E[T:\
-       :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
-       :ll=\E[24H:mb=\E[5m:md=\E[1m:me=\E[m\017:mh=\E[2m:\
-       :mk=\E[8m:mr=\E[7m:nd=\E[C:nw=\EE:pf=\E[?4i:\
-       :..pn=\E[%p1%d;0;0;0q%p2%\072-16.16s:po=\E[?5i:\
-       :..px=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s:\
-       :r2=\Ec\E[?3l:rc=\E8:\
-       :..sa=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:\
-       :ts=\E7\E[25;%i%p1%dx:ue=\E[m:up=\E[A:us=\E[4m:\
-       :vb=\E[?5h\E[?5l:ve=\E[?25h\E[?12l:vi=\E[?25l:\
-       :vs=\E[?12;25h:
-att610-w|610bct-w|AT&T 610; 132 column; 98key keyboard:\
-       :co#132:ws#132:\
-       :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h:tc=att610:
-
-att610-103k|610-103k|610bct-103k|AT&T 610; 80 column; 103key keyboard:\
-       :!1=\EOO:!2=\EOP:!3=\EOS:#1=\EOM:%0=\EOt:%1=\EOm:\
-       :%2=\ENi:%3=\EOl:%4=\ENc:%5=\ENh:%6=\EOv:%7=\EOr:\
-       :%8=\ENg:%9=\EOz:%a=\EOL:%b=\ENC:%c=\ENH:%d=\EOR:\
-       :%e=\ENG:%f=\EOZ:%g=\EOT:%h=\EOY:%j=\EOQ:&0=\EOW:\
-       :&1=\EOb:&2=\ENa:&3=\EOy:&4=\EOB:&5=\EOq:&6=\EOo:\
-       :&7=\EOp:&8=\EOs:&9=\ENB:*0=\EOX:*1=\EOU:*2=\END:\
-       :*3=\EON:*4=\ENF:*5=\ENE:*6=\ENI:*7=\ENN:*8=\EOA:\
-       :*9=\EOK:@0=\EOx:@1=\E9:@2=\EOw:@3=\EOV:@4=\EOu:\
-       :@5=\ENd:@6=\EOn:@7=\E0:@8=^M:@9=\EOk:F1@:F2@:F3@:\
-       :F4@:k9@:k;@:kD=\ENf:kE=\EOa:kI=\ENj:kL=\ENe:kM=\ENj:\
-       :kN=\E[U:kP=\E[V:tc=att610:
-att610-103k-w|610-103k-w|610bct-103k-w|AT&T 610; 132 column; 103key keyboard:\
-       :co#132:ws#132:\
-       :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h:tc=att610-103k:
-att615|615mt|AT&T 615; 80 column; 98key keyboard:\
-       :#4=\E[ A:%i=\E[ @:F5=\EOC:F6=\EOD:F7=\EOE:F8=\EOF:\
-       :F9=\EOG:FA=\EOH:FB=\EOI:FC=\EOJ:FD=\ENO:FE=\ENP:\
-       :FF=\ENQ:FG=\ENR:FH=\ENS:FI=\ENT:FJ=\EOP:FK=\EOQ:\
-       :FL=\EOR:FM=\EOS:FN=\EOw:FO=\EOx:FP=\EOy:FQ=\EOm:\
-       :FR=\EOt:FS=\EOu:FT=\EOv:FU=\EOl:FV=\EOq:FW=\EOr:\
-       :FX=\EOs:FY=\EOp:FZ=\EOn:Fa=\EOM:tc=att610:
-att615-w|615-w|615mt-w|AT&T 615; 132 column; 98key keyboard:\
-       :#4=\E[ A:%i=\E[ @:F5=\EOC:F6=\EOD:F7=\EOE:F8=\EOF:\
-       :F9=\EOG:FA=\EOH:FB=\EOI:FC=\EOJ:FD=\ENO:FE=\ENP:\
-       :FF=\ENQ:FG=\ENR:FH=\ENS:FI=\ENT:FJ=\EOP:FK=\EOQ:\
-       :FL=\EOR:FM=\EOS:FN=\EOw:FO=\EOx:FP=\EOy:FQ=\EOm:\
-       :FR=\EOt:FS=\EOu:FT=\EOv:FU=\EOl:FV=\EOq:FW=\EOr:\
-       :FX=\EOs:FY=\EOp:FZ=\EOn:Fa=\EOM:tc=att610-w:
-att615-103k|615-103k|615mt-103k|AT&T 615; 80 column; 103key keyboard:\
-       :#4=\E[ A:%i=\E[ @:tc=att610-103k:
-att615-103k-w|615-103k-w|615mt-103k-w|AT&T 615; 132 column; 103key keyboard:\
-       :#4=\E[ A:%i=\E[ @:tc=att610-103k-w:
-att620|620mtg|AT&T 620; 80 column; 98key keyboard:\
-       :am:es:hs:mi:ms:xn:xo:\
-       :Nl#8:co#80:it#8:lh#2:li#24:lw#8:ws#80:\
-       :#4=\E[ A:%i=\E[ @:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
-       :DO=\E[%dB:F1=\ENq:F2=\ENr:F3=\ENs:F4=\ENt:F5=\EOC:\
-       :F6=\EOD:F7=\EOE:F8=\EOF:F9=\EOG:FA=\EOH:FB=\EOI:\
-       :FC=\EOJ:FD=\ENO:FE=\ENP:FF=\ENQ:FG=\ENR:FH=\ENS:\
-       :FI=\ENT:FJ=\EOP:FK=\EOQ:FL=\EOR:FM=\EOS:FN=\EOw:\
-       :FO=\EOx:FP=\EOy:FQ=\EOm:FR=\EOt:FS=\EOu:FT=\EOv:\
-       :FU=\EOl:FV=\EOq:FW=\EOr:FX=\EOs:FY=\EOp:FZ=\EOn:\
-       :Fa=\EOM:IC=\E[%d@:LE=\E[%dD:LF=\E[2p:LO=\E[p:\
-       :RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=\E(B\017:al=\E[L:as=\E)0\016:bl=^G:bt=\E[Z:\
-       :cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:\
-       :ei=\E[4l:fs=\E8:ho=\E[H:\
-       :i1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h:\
-       :i2=\E(B\E)0:im=\E[4h:is=\E[0m\017:k1=\EOc:k2=\EOd:\
-       :k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:\
-       :k9=\ENo:k;=\ENp:kB=\E[Z:kC=\E[2J:kF=\E[S:kR=\E[T:\
-       :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
-       :ll=\E[24H:mb=\E[5m:md=\E[1m:me=\E[m\E(B\017:\
-       :mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:nw=\EE:pf=\E[?4i:\
-       :..pn=\E[%p1%d;0;0;0q%p2%\072-16.16s:po=\E[?5i:\
-       :..px=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s:\
-       :r2=\Ec\E[?3l:rc=\E8:\
-       :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:\
-       :ts=\E7\E[25;%i%p1%dx:ue=\E[m:up=\E[A:us=\E[4m:\
-       :vb=\E[?5h\E[?5l:ve=\E[?25h\E[?12l:vi=\E[?25l:\
-       :vs=\E[?12;25h:
-att620-w|620-w|620mtg-w|AT&T 620; 132 column; 98key keyboard:\
-       :co#132:ws#132:\
-       :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h:tc=att620:
-att620-103k|620-103k|620mtg-103k|AT&T 620; 80 column; 103key keyboard:\
-       :!1=\EOO:!2=\EOP:!3=\EOS:#1=\EOM:%0=\EOt:%1=\EOm:\
-       :%2=\ENi:%3=\EOl:%4=\ENc:%5=\ENh:%6=\EOv:%7=\EOr:\
-       :%8=\ENg:%9=\EOz:%a=\EOL:%b=\ENC:%c=\ENH:%d=\EOR:\
-       :%e=\ENG:%f=\EOZ:%g=\EOT:%h=\EOY:%j=\EOQ:&0=\EOW:\
-       :&1=\EOb:&2=\ENa:&3=\EOy:&4=\EOB:&5=\EOq:&6=\EOo:\
-       :&7=\EOp:&8=\EOs:&9=\ENB:*0=\EOX:*1=\EOU:*2=\END:\
-       :*3=\EON:*4=\ENF:*5=\ENE:*6=\ENI:*7=\ENN:*8=\EOA:\
-       :*9=\EOK:@0=\EOx:@1=\E9:@2=\EOw:@3=\EOV:@4=\EOu:\
-       :@5=\ENd:@6=\EOn:@7=\E0:@8=^M:@9=\EOk:F1@:F2@:F3@:\
-       :F4@:F5@:F6@:F7@:F8@:F9@:FA@:FB@:FC@:FD@:FE@:FF@:FG@:\
-       :FH@:FI@:FJ@:FK@:FL@:FM@:FN@:FO@:FP@:FQ@:FR@:FS@:FT@:\
-       :FU@:FV@:FW@:FX@:FY@:FZ@:Fa@:k9@:k;@:kD=\ENf:kE=\EOa:\
-       :kI=\ENj:kL=\ENe:kM=\ENj:kN=\E[U:kP=\E[V:tc=att620:
-
-att620-103k-w|620-103k-w|620mtg-103k-w|AT&T 620; 132 column; 103key keyboard:\
-       :co#132:ws#132:\
-       :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h:tc=att620-103k:
-
-# 630 short descriptions without \E
-att630|5630|5630DMD|630MTG|AT&T 630 windowing terminal:\
-       :NP:am:da:db:mi:ms:xo:\
-       :co#80:it#8:li#60:lm#0:\
-       :@8=^M:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
-       :F1=\ENq:F2=\ENr:F3=\ENs:F4=\ENt:F5=\ENu:F6=\ENv:\
-       :F7=\ENw:F8=\ENx:F9=\ENy:FA=\ENz:FB=\EN{:FC=\EN|:\
-       :FD=\EN}:FE=\EN~:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:\
-       :SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:al=\E[L:bl=^G:bt=\E[Z:\
-       :cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
-       :im=\E[4h:is=\E[m:k9=\ENo:k;=\ENp:kA=\E[L:kB=\E[Z:\
-       :kC=\E[2J:kD=\E[P:kI=\E[@:kL=\E[M:kb=^H:kd=\E[B:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:me=\E[m:\
-       :mr=\E[7m:nd=\E[C:nw=^M^J:pf=\E[?4i:po=\E[?5i:\
-       :..px=\E[%p1%d;%p2%l%dq%p2%s:r2=\Ec:rc=\E8:\
-       :..sa=\E[0%?%p2%t;4%;%?%p1%p3%|%p4%|%p5%|%t;7%;m:\
-       :sc=\E7:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\
-       :up=\E[A:us=\E[4m:
-
-
-att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines:\
-       :li#24:\
-       :tc=att630:
-
-# This entry was modified 3/13/90 by JWE.
-# fixes include additions of enacs, correcting rep, and modification
-# of kHOM.  (See comments below)
-# has status line of 80 chars
-# These were commented out: indn=\E[%p1%dS, rin=\E[%p1%dT,
-# the k25 and up keys are used for shifted system Fkeys
-# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is 
-# currently the same as khome (unshifted HOME or \E[H).  On the 102, 102+1
-# and 122 key keyboards, the 730's translation is \E[2J.  For consistency
-# kHOM has been commented out.  The user can uncomment kHOM if using the
-# 102, 102+1, or 122 key keyboards
-#       kHOM=\E[2J,
-# (untranslatable capabilities removed to fit entry within 1023 bytes)
-# WARNING: this entry, 1063 bytes long, may core-dump older termcap libraries!
-att730|730MTG|AT&T 730 windowing terminal Version:\
-       :NP:am:da:db:es:hs:mi:ms:xn:xo:\
-       :Nl#24:co#80:it#8:lh#2:li#60:lm#0:lw#8:ws#80:\
-       :#4=\E[ @:%i=\E[ A:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
-       :DO=\E[%dB:F1=\ENq:F2=\ENr:F3=\ENs:F4=\ENt:F5=\ENu:\
-       :F6=\ENv:F7=\ENw:F8=\ENx:F9=\ENy:FA=\ENz:FB=\EN{:\
-       :FC=\EN|:FD=\EN}:FE=\EN~:FF=\EOC:FG=\EOD:FH=\EOE:\
-       :FI=\EOF:FJ=\EOG:FK=\EOH:FL=\EOI:FM=\EOJ:FN=\ENO:\
-       :FO=\ENP:FP=\ENQ:FQ=\ENR:FR=\ENS:FS=\ENT:FT=\EOU:\
-       :FU=\EOV:FV=\EOW:FW=\EOX:FX=\EOY:FY=\EOZ:FZ=\EO[:\
-       :Fa=\EO :Fb=\EO]:Fc=\EO^:IC=\E[%d@:LE=\E[%dD:\
-       :LF=\E[?13h:LO=\E[?13l:RI=\E[%dC:RX=\E[?21l:\
-       :SX=\E[?21h:UP=\E[%dA:ZF=\E#6:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
-       :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:eA=\E(B\E)0:\
-       :ei=\E[4l:fs=\E8:ho=\E[H:\
-       :i1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B:\
-       :i2=\E(B\E)0:im=\E[4h:is=\E[0m\017:k1=\EOc:k2=\EOd:\
-       :k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:\
-       :k9=\ENo:k;=\ENp:kA=\E[L:kB=\E[Z:kC=\E[2J:kF=\E[S:\
-       :kI=\E[@:kR=\E[T:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:\
-       :mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:nw=\EE:pf=\E[?4i:\
-       ::po=\E[?5i:ps=\E[?19h\E[0i::r2=\Ec\E[?3l:rc=\E8:::\
-       :sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:\
-       :ts=\E7\E[;%i%p1%dx:ue=\E[24m:up=\E[A:us=\E[4m:\
-       :vb=\E[?5h\E[?5l:ve=\E[?25h\E[?12l:vi=\E[?25l:\
-       :vs=\E[?12;25h::
-
-att730-41|730MTG-41|AT&T 730-41 windowing terminal Version:\
-       :li#41:\
-       :tc=att730:
-
-att730-24|730MTG-24|AT&T 730-24 windowing terminal Version:\
-       :li#24:\
-       :tc=att730:
-
-att730r|730MTGr|AT&T 730 rev video windowing terminal Version:\
-       :i1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B:\
-       :vb=\E[?5l\E[?5h:tc=att730:
-
-att730r-41|730MTG-41r|AT&T 730r-41 rev video windowing terminal Version:\
-       :li#41:\
-       :tc=att730r:
-
-att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version:\
-       :li#24:\
-       :tc=att730r:
-
-
-# 05-Aug-86:
-# The following Terminfo entry describes functions which are supported by
-# the AT&T 5430/pt505 terminal software version 2 and later.
-#
-# The following represents the screen layout along with the associated
-# bezel buttons for the 5430/pt505 terminal. The "kf" designations do
-# not appear on the screen but are shown to reference the bezel buttons.
-# The "CMD", "MAIL", and "REDRAW" buttons are shown in their approximate
-# position relative to the screen.
-#
-#
-#
-#      +----------------------------------------------------------------+
-#      |                                                                |
-# XXXX | kf0                                                       kf24 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf1                                                       kf23 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf2                                                       kf22 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf3                                                       kf21 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf4                                                       kf20 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf5                                                       kf19 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf6                                                       kf18 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX |                                                                | XXXX
-#      |                                                                |
-#      |                                                                |
-#      +----------------------------------------------------------------+
-#
-#          XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX
-#
-# Note: XXXX represents the screen buttons
-#                                                          CMD   REDRAW
-#
-#                                                          MAIL
-#
-# Depression of the "CMD" key sends    \E!    (kcmd)
-# Depression of the "MAIL" key sends   \E[26s (kf26)
-# "REDRAW" same as "REFRESH" (krfr)
-#
-# "kf" functions adds carriage return to output string if terminal is in
-# 'new line' mode.
-#
-# The following are functions not covered in the table above:
-#
-#       Set keyboard character (SKC): \EPn1;Pn2w
-#                       Pn1= 0 Back Space key
-#                       Pn1= 1 Break key
-#                       Pn2=   Program char (hex)
-#
-#       Screen Definition (SDF): \E[Pn1;Pn2;Pn3;Pn4;Pn5t
-#                       Pn1=     Window number (1-39)
-#                       Pn2-Pn5= Y;X;Y;X coordinates
-#
-#       Screen Selection (SSL): \E[Pnu
-#                       Pn= Window number
-#
-#       Set Terminal Modes (SM): \E[Pnh
-#                       Pn= 3 Graphics mode
-#                       Pn= > Cursor blink
-#                       Pn= < Enter new line mode
-#                       Pn= = Enter reverse insert/replace mode
-#                       Pn= ? Enter no scroll mode
-#
-#       Reset Terminal Mode (RM): \E[Pnl
-#                       Pn= 3 Exit graphics mode
-#                       Pn= > Exit cursor blink
-#                       Pn= < Exit new line mode
-#                       Pn= = Exit reverse insert/replace mode
-#                       Pn= ? Exit no scroll mode
-#
-#       Screen Status Report (SSR): \E[Pnp
-#                       Pn= 0 Request current window number
-#                       Pn= 1 Request current window dimensions
-#
-#       Device Status Report (DSR): \E[6n    Request cursor position
-#
-#       Call Status Report (CSR): \E[Pnv
-#                       Pn= 0 Call failed
-#                       Pn= 1 Call successful
-#
-#       Transparent Button String (TBS): \E[Pn1;Pn2;Pn3;{string
-#                       Pn1= Button number to be loaded
-#                       Pn2= Character count of "string"
-#                       Pn3= Key mode being loaded:
-#                               0= Unshifted
-#                               1= Shifted
-#                               2= Control
-#                       String= Text string (15 chars max)
-#
-#       Screen Number Report (SNR): \E[Pnp
-#                       Pn= Screen number
-#
-#       Screen Dimension Report (SDR): \E[Pn1;Pn2r
-#                       Pn1= Number of rows available in window
-#                       Pn2= Number of columns available in window
-#
-#       Cursor Position Report (CPR): \E[Pn1;Pn2R
-#                       Pn1= "Y" Position of cousor
-#                       Pn2= "X" Position of cursor
-#
-#       Request Answer Back (RAB): \E[c
-#
-#       Answer Back Response (ABR): \E[?;*;30;VSV
-#                       *=  0 No printer available
-#                       *=  2 Printer available
-#                       V=  Software version number
-#                       SV= Software sub version number
-#
-#       Screen Alingment Aid: \En
-#
-#       Bell (lower pitch): \E[x
-#
-#       Dial Phone Number: \EPdstring\
-#                       string= Phone number to be dialed
-#
-#       Set Phone Labels: \EPpstring\
-#                       string= Label for phone buttons
-#
-#       Set Clock: \EPchour;minute;second\
-#
-#       Position Clock: \EPsY;X\
-#                       Y= "Y" coordinate
-#                       X= "X" coordinate
-#
-#       Delete Clock: \Epr\
-#
-#       Programming The Function Buttons: \EPfPn;string\
-#                       Pn= Button number (00-06, 18-24)
-#                                         (kf00-kf06, kf18-kf24)
-#                       string= Text to sent on button depression
-#
-#       Request For Local Directory Data: \EPp12;\
-#
-#       Local Directory Data to host: \EPp11;LOCAL...DIRECTORY...DATA\
-#
-#      Request for Local Directory Data in print format: \EPp13;\
-#
-#      Enable 'Prt on Line' mode: \022 (DC2)
-#
-#      Disable 'Prt on Line' mode: \024 (DC4)
-#
-att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal:\
-       :am:xo:\
-       :co#80:it#8:li#24:\
-       :&2=\E[27s:@4=\E!:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
-       :DO=\E[%dB:F8=\E[18s:F9=\E[19s:FA=\E[20s:FB=\E[21s:\
-       :FC=\E[22s:FD=\E[23s:FE=\E24s:FG=\E26s:LE=\E[%dD:\
-       :RA=\E[11;1j:RI=\E[%dC:SA=\E[11;0j:UP=\E[%dA:\
-       :ae=\E[10m:al=\E[L:as=\E[11m:bl=^G:cb=\E2K:cd=\E[0J:\
-       :ce=\E[0K:cl=\E[2J\E[H:cm=\E[%d;%dH:cr=^M:dc=\E[P:\
-       :dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
-       :i1=\EPr\\E[0u\E[2J\E[0;0H\E[0m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l:\
-       :im=\E[4h:k0=\E[00s:k1=\E[01s:k2=\E[02s:k3=\E[03s:\
-       :k4=\E[04s:k5=\E[05s:k6=\E[06s:kb=^H:kd=\E[B:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:\
-       :mr=\E[7m:nd=\E[C:pf=\E[4i:po=\E[5i:r1=\Ec:rc=\E8:\
-       :sc=\E7:se=\E[0m:sf=^J:so=\E[1m:ta=^I:ue=\E[0m:\
-       :up=\E[A:us=\E[4m:ve=\E[>l:vs=\E[>h:
-
-#
-# The following Terminfo entry describes functions which are supported by
-# the AT&T 5430/pt505 terminal software version 1.
-#
-# The following represents the screen layout along with the associated
-# bezel buttons for the 5430/pt505 terminal. The "kf" designations do
-# not appear on the screen but are shown to reference the bezel buttons.
-# The "CMD", "MAIL", and "REDRAW" buttons are shown in their approximate
-# position relative to the screen.
-#
-#
-#
-#      +----------------------------------------------------------------+
-#      |                                                                |
-# XXXX | kf0                                                       kf24 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf1                                                       kf23 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf2                                                       kf22 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf3                                                       kf21 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf4                                                       kf20 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf5                                                       kf19 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX | kf6                                                       kf18 | XXXX
-#      |                                                                |
-#      |                                                                |
-# XXXX |                                                                | XXXX
-#      |                                                                |
-#      |                                                                |
-#      +----------------------------------------------------------------+
-#
-#          XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX
-#
-# Note: XXXX represents the screen buttons
-#                                                          CMD   REDRAW
-#
-#                                                          MAIL
-#
-#       Depression of the "CMD" key sends    \E!    (kcmd)
-# Depression of the "MAIL" key sends   (note) (kf26)
-# "REDRAW" same as "REFRESH" (krfr)    (note)
-#
-# note: The character string sent by key 'kf26' may be user programmable
-#       to send either \E[16s, or \E[26s.
-#       The character string sent by key 'krfr' may be user programmable
-#       to send either \E[17s, or \E[27s.
-#
-# "kf" functions adds carriage return to output string if terminal is in
-# 'new line' mode.
-#
-# The following are functions not covered in the table above:
-#
-#       Set keyboard character (SKC):
-#
-#               \EPn1;Pn2w
-#
-#                       Pn1= 0 Back Space key
-#                       Pn1= 1 Break key
-#                       Pn2=   Program char (hex)
-#
-#       Screen Definition (SDF):
-#
-#               \E[Pn1;Pn2;Pn3;Pn4;Pn5t
-#
-#                       Pn1=     Window number (1-39)
-#                       Pn2-Pn5= Y;X;Y;X coordinates
-#
-#       Screen Selection (SSL):
-#
-#               \E[Pnu
-#
-#                       Pn= Window number
-#
-#       Set Terminal Modes (SM):
-#
-#               \E[Pnh
-#
-#                       Pn= 3 Graphics mode
-#                       Pn= > Cursor blink
-#                       Pn= < Enter new line mode
-#                       Pn= = Enter reverse insert/replace mode
-#                       Pn= ? Enter no scroll mode
-#
-#       Reset Terminal Mode (RM):
-#
-#               \E[Pnl
-#
-#                       Pn= 3 Exit graphics mode
-#                       Pn= > Exit cursor blink
-#                       Pn= < Exit new line mode
-#                       Pn= = Exit reverse insert/replace mode
-#                       Pn= ? Exit no scroll mode
-#
-#       Screen Status Report (SSR):
-#
-#               \E[Pnp
-#
-#                       Pn= 0 Request current window number
-#                       Pn= 1 Request current window dimensions
-#
-#       Device Status Report (DSR):
-#
-#               \E[6n    Request cursor position
-#
-#       Call Status Report (CSR):
-#
-#               \E[Pnv
-#
-#                       Pn= 0 Call failed
-#                       Pn= 1 Call successful
-#
-#       Transparent Button String (TBS):
-#
-#               \E[Pn1;Pn2;Pn3;{string
-#
-#                       Pn1= Button number to be loaded
-#                       Pn2= Character count of "string"
-#                       Pn3= Key mode being loaded:
-#                               0= Unshifted
-#                               1= Shifted
-#                               2= Control
-#                       String= Text string (15 chars max)
-#
-#       Screen Number Report (SNR):
-#
-#               \E[Pnp
-#
-#                       Pn= Screen number
-#
-#       Screen Dimension Report (SDR):
-#
-#               \E[Pn1;Pn2r
-#
-#                       Pn1= Number of rows available in window
-#                       Pn2= Number of columns available in window
-#
-#       Cursor Position Report (CPR):
-#
-#               \E[Pn1;Pn2R
-#
-#                       Pn1= "Y" Position of cousor
-#                       Pn2= "X" Position of cursor
-#
-#       Request Answer Back (RAB):
-#
-#               \E[c
-#
-#       Answer Back Response (ABR):
-#
-#               \E[?;0;30;VSV
-#
-#                       V=  Software version number
-#                       SV= Software sub version number
-#
-#       Screen Alignment Aid:
-#
-#               \En
-#
-#       Bell (lower pitch):
-#
-#               \E[x
-#
-#       Dial Phone Number:
-#
-#               \EPdstring\
-#
-#                       string= Phone number to be dialed
-#
-#       Set Phone Labels:
-#
-#               \EPpstring\
-#
-#                       string= Label for phone buttons
-#
-#       Set Clock:
-#
-#               \EPchour;minute;second\
-#
-#       Position Clock:
-#
-#               \EPsY;X\
-#
-#                       Y= "Y" coordinate
-#                       X= "X" coordinate
-#
-#       Delete Clock:
-#
-#               \Epr\
-#
-#       Programming The Function Buttons:
-#
-#               \EPfPn;string\
-#
-#                       Pn= Button number (00-06, 18-24)
-#                                         (kf00-kf06, kf18-kf24)
-#
-#                       string= Text to sent on button depression
-#
-#
-#
-#                                                      05-Aug-86
-#
-# 
-att505-24|pt505-24|gs5430-24| AT&T PT505 or 5430 GETSET version 1 24 lines:\
-       :am:xo:\
-       :co#80:it#8:li#24:\
-       :&2=\E[27s:@4=\E!:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
-       :DO=\E[%dB:F8=\E[18s:F9=\E[19s:FA=\E[20s:FB=\E[21s:\
-       :FC=\E[22s:FD=\E[23s:FE=\E24s:FG=\E26s:LE=\E[%dD:\
-       :RI=\E[%dC:UP=\E[%dA:ae=\E[10m:al=\E[L:as=\E[11m:\
-       :bl=^G:cb=\E2K:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[H:\
-       :cm=\E[%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:\
-       :ho=\E[H:\
-       :i1=\EPr\\E[0u\E[2J\E[0;0H\E[0m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l:\
-       :im=\E[4h:k0=\E[00s:k1=\E[01s:k2=\E[02s:k3=\E[03s:\
-       :k4=\E[04s:k5=\E[05s:k6=\E[06s:kb=^H:kd=\E[B:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:\
-       :mr=\E[7m:nd=\E[C:r1=\Ec:se=\E[0m:sf=^J:so=\E[1m:\
-       :ta=^I:ue=\E[0m:up=\E[A:us=\E[4m:ve=\E[>l:vs=\E[>h:
-att505-22|pt505-22|gs5430-22| AT&T PT505 or 5430 GETSET version 1 22 lines:\
-       :li#22:\
-       :tc=att505-24:
-#
-# -------------------- TERMINFO FILE CAN BE SPLIT HERE -----------------------
-# This cut mark helps make life less painful for people running ncurses tic
-# on machines with relatively little RAM.  The file can be broken in half here
-# cleanly and compiled in sections -- no `use' references cross this cut
-# going forward.
-#
-
-#### Ampex (Dialogue)
-#
-# Yes, these are the same people who are better-known for making audio- and
-# videotape.  I'm told they are located in Redwood City, CA.
-
-# From: <cbosg!ucbvax!SRC:george> Fri Sep 11 22:38:32 1981
-# (ampex80: mapped ":pt:" to default tabs; some capabilities merged in from
-# SCO's entry -- esr)
-ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80:\
-       :am:bs:bw:pt:ul:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:\
-       :cm=\E=%+ %+ :cr=^M:ct=\E3:dc=\EW:dl=\ER:do=^J:ei=:\
-       :ic=\EQ:im=:is=\EA:le=^H:nd=^L:se=\Ek:sf=^J:so=\Ej:\
-       :st=\E1:ta=^I:ue=\Em:up=^K:us=\El:
-# This entry was from somebody anonymous, Tue Aug  9 20:11:37 1983, who wrote:
-ampex175|ampex d175:\
-       :am:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:cd=\Ey:ce=\Et:cl=\E+:cm=\E=%+ %+ :\
-       :cr=^M:dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:im=:\
-       :is=\EX\EA\EF:kA=\EE:kD=\EW:kI=\EQ:kL=\ER:kd=^J:\
-       :kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=^^^K:nd=^L:se=\Ek:\
-       :sf=^J:so=\Ej:te=\EF:ti=\EN:ue=\Em:up=^K:us=\El:
-# No backspace key in the main QWERTY cluster. Fortunately, it has a
-# NEWLINE/PAGE key just above RETURN that sends a strange single-character
-# code.  Given a suitable Unix (one that lets you set an echo-erase-as-BS-SP-BS
-# mode), this key can be used as the erase key; I find I like this. Because
-# some people and some systems may not, there is another termcap ("ampex175")
-# that suppresses this little eccentricity by omitting the relevant capability.
-ampex175-b|ampex d175 using left arrow for erase:\
-       :kb=^_:tc=ampex175:
-# From: Richard Bascove <atd!dsd!rcb@ucbvax.berkeley.edu>
-# (ampex210: removed obsolete ":kn#10:"; mapped ":pt:" to default tabs -- esr)
-ampex210|a210|ampex a210:\
-       :am:bs:hs:pt:xn:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=\EE:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :\
-       :dc=\EW:dl=\ER:ei=:fs=\E.2:ho=^^:ic=\EQ:\
-       :if=/usr/share/tabset/std:im=:\
-       :is=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En:k0=^A0\r:\
-       :k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:k5=^A5\r:\
-       :k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^V:kh=^^:\
-       :kl=^H:kr=^L:ku=^K:nd=^L:se=\EG0:so=\EG4:\
-       :ts=\E.0\Eg\E}\Ef:ue=\EG0:up=^K:us=\EG8:\
-       :vb=\EU\EX\EU\EX\EU\EX\EU\EX:
-ampex219|ampex-219|amp219|Ampex with Automargins:\
-       :hs:xn:\
-       :co#80:it#8:li#24:\
-       :bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:cs=%i\E[%2;%2r:do=\E[B:ho=\E[H:\
-       :is=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
-       :k0=\E[21~:k1=\E[7~:k2=\E[8~:k3=\E[9~:k4=\E[10~:\
-       :k5=\E[11~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
-       :kd=\E[B:ke=\E>:kh=\E[H:kl=\E[D:kr=\E[C:ks=\E=:\
-       :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mh=\E[1m:\
-       :mr=\E[7m:nd=\E[C:se=\E[0m:sf=^J:so=\E[7m:sr=\EM:\
-       :ta=^I:ue=\E[0m:up=\E[A:us=\E[4m:
-ampex219w|ampex-219w|amp219w|Ampex 132 cols:\
-       :co#132:li#24:\
-       :bl=^G:cr=^M:do=^J:\
-       :is=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h:sf=^J:\
-       :vs=\E[?3h:tc=ampex219:
-ampex232|ampex-232|Ampex Model 232:\
-       :am:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=5*\EE:bt=\EI:cd=\EY:ce=\ET:cl=\E+:cm=\E=%+ %+ :\
-       :dc=\EW:dl=5*\ER:do=^V:ei=:ic=\EQ:\
-       :if=/usr/lib/tabset/ampex:im=:is=\Eg\El:k0=^A@\r:\
-       :k1=^AA\r:k2=^AB\r:k3=^AC\r:k4=^AD\r:k5=^AE\r:\
-       :k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:kb=^H:kd=^V:\
-       :kh=^^:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:se=\EG0:so=\EG4:\
-       :ta=^I:ue=\EG0:up=^K:us=\EG8:\
-       :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
-       :ve=\E.4:vi=\E.0:
-ampex232w|Ampex Model 232 / 132 columns:\
-       :co#132:li#24:\
-       :if=/usr/lib/tabset/amp-132:is=\E\034Eg\El:tc=ampex232:
-
-#### Ann Arbor (aa)
-#
-
-# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs.
-# Highly modified 6/22 by Mike O'Brien.
-# split out into several for the various screen sizes by dave-yost@rand
-# Modifications made 3/82 by Mark Horton
-# Modified by Tom Quarles at UCB for greater efficiency and more diversity
-# status line moved to top of screen, :vb: removed 5/82
-# Some unknown person at SCO then hacked the init strings to make them more
-# efficient.
-#
-# assumes the following setup:
-#   A menu: 0000 1010  0001 0000
-#   B menu: 9600  0100 1000  0000 0000  1000 0000  17  19
-#   C menu: 56   66   0    0    9600  0110 1100
-#   D menu: 0110 1001   1   0
-#
-#      Briefly, the settings are for the following modes:
-#         (values are for bit set/clear with * indicating our preference
-#          and the value used to test these termcaps)
-#      Note that many of these settings are irelevent to the termcap
-#      and are just set to the default mode of the terminal as shipped
-#      by the factory.
-#
-# A menu: 0000 1010  0001 0000
-#      Block/underline cursor*
-#      blinking/nonblinking cursor*
-#      key click/no key click*
-#      bell/no bell at column 72*
-#
-#      key pad is cursor control*/key pad is numeric
-#      return and line feed/return for <cr> key *
-#      repeat after .5 sec*/no repeat
-#      repeat at 25/15 chars per sec. *
-#
-#      hold data until pause pressed/process data unless pause pressed*
-#      slow scroll/no slow scroll*
-#      Hold in area/don't hold in area*
-#      functions keys have default*/function keys disabled on powerup
-#
-#      show/don't show position of cursor during page transmit*
-#      unused
-#      unused
-#      unused
-#
-# B menu: 9600  0100 1000  0000 0000  1000 0000  17  19
-#      Baud rate (9600*)
-#
-#      2 bits of parity - 00=odd,01=even*,10=space,11=mark
-#      1 stop bit*/2 stop bits
-#      parity error detection off*/on
-#
-#      keyboard local/on line*
-#      half/full duplex*
-#      disable/do not disable keyboard after data transmission*
-#
-#      transmit entire page/stop transmission at cursor*
-#      transfer/do not transfer protected characters*
-#      transmit all characters/transmit only selected characters*
-#      transmit all selected areas/transmit only 1 selected area*
-#
-#      transmit/do not transmit line seperators to host*
-#      transmit/do not transmit page tab stops tabs to host*
-#      transmit/do not transmit column tab stop tabs to host*
-#      transmit/do not transmit graphics control (underline,inverse..)*
-#
-#      enable*/disable auto XON/XOFF control
-#      require/do not require receipt of a DC1 from host after each LF*
-#      pause key acts as a meta key/pause key is pause*
-#      unused
-#
-#      unused
-#      unused
-#      unused
-#      unused
-#
-#      XON character (17*)
-#      XOFF character (19*)
-#
-# C menu: 56   66   0    0    9600  0110 1100
-#      number of lines to print data on (printer) (56*)
-#
-#      number of lines on a sheet of paper (printer) (66*)
-#
-#      left margin (printer) (0*)
-#
-#      number of pad chars on new line to printer (0*)
-#
-#      printer baud rate (9600*)
-#
-#      printer parity: 00=odd,01=even*,10=space,11=mark
-#      printer stop bits: 2*/1
-#      print/do not print guarded areas*
-#
-#      new line is: 01=LF,10=CR,11=CRLF*
-#      unused
-#      unused
-#
-# D menu: 0110 1001   1   0
-#      LF is newline/LF is down one line, same column*
-#      wrap to preceeding line if move left from col 1*/don't wrap
-#      wrap to next line if move right from col 80*/don't wrap
-#      backspace is/is not destructive*
-#
-#      display*/ignore DEL character
-#      display will not/will scroll*
-#      page/column tab stops*
-#      erase everything*/erase unprotected only
-#
-#      editing extent: 0=display,1=line*,2=field,3=area
-#
-#      unused
-#
-
-annarbor|4080|ann arbor 4080:\
-       :am:\
-       :co#80:li#40:\
-       :bl=^G:cl=\014:\
-       :..cm=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t%{12}%+%;%'@'%+%c:\
-       :cr=^M:ct=^^P^P:do=^J:ho=^K:kb=^^:kd=^J:kh=^K:kl=^H:\
-       :kr=^_:ku=^N:le=^H:nd=^_:sf=^J:st=^]^P1:ta=^I:up=^N:
-
-# If you're using the GNU termcap library, add
-#      :cS=\E[%d;%d;%d;%dp:
-# to these capabilities.  This is the nonstandard GNU termcap scrolling
-# capability, arguments are:
-#   1. Total number of lines on the screen.
-#   2. Number of lines above desired scroll region.
-#   3. Number of lines below (outside of) desired scroll region.
-#   4. Total number of lines on the screen, the same as the first parameter.
-# The generic Ann Arbor entry is the only one that uses this.
-aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly):\
-       :5i:am:km:mi:xo:\
-       :co#80:it#8:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\EOK:\
-       :F2=\EOL:F3=\EOM:F4=\EON:F5=\EOO:F6=\EOP:F7=\EOQ:\
-       :F8=\EOR:F9=\EOS:FA=\EOT:FB=\EOU:FC=\EOV:FD=\EOW:\
-       :FE=\EOX:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%+^AG:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[2g:\
-       :cv=\E[%+^Ad:dc=\E[P:dl=\E[M:do=^K:ei=:ho=\E[H:\
-       :i1=\E[m\E7\E[H\E9\E8:i2=\E[1Q\E[>20;30l\EP`+x~M\E\\:\
-       :ic=\E[@:im=:k1=\EOA:k2=\EOB:k3=\EOC:k4=\EOD:k5=\EOE:\
-       :k6=\EOF:k7=\EOG:k8=\EOH:k9=\EOI:k;=\EOJ:kA=\E[L:\
-       :kB=\E[Z:kC=\E[J:kD=\E[P:kI=\E[@:kL=\E[M:kM=\E6:\
-       :kb=^H:kd=\E[B:\
-       :ke=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E\\:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:\
-       :ks=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\\:\
-       :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:mk=\E[8m:\
-       :mm=\E[>52h:mo=\E[>52l:mr=\E[7m:nd=\E[C:pO=\E[%dv:\
-       :pf=^C:po=\E[v:ps=\E[0i:rc=\E8:\
-       :..rp=%p1%c\E[%p2%{1}%-%db:\
-       :..sa=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m:\
-       :sc=\E7:se=\E[m:sf=^K:so=\E[7m:st=\EH:ta=^I:ue=\E[m:\
-       :up=\E[A:us=\E[4m:
-
-aaa+rv:\
-       :i1=\E[7m\E7\E[H\E9\E8:mb=\E[5;7m:md=\E[1;7m:\
-       :me=\E[7m\016:mk=\E[7;8m:mr=\E[m:r1=\E[H\E[7m\E[J:\
-       :..sa=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m:\
-       :se=\E[7m:so=\E[m:ue=\E[7m:us=\E[4;7m:
-# Ambassador with the DEC option, for partial vt100 compatibility.
-aaa+dec:\
-       :ac=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz||}}:\
-       :ae=^N:as=^O:cs=\E[%i%d;%dr:eA=\E(0:\
-       :..sa=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;:
-aaa-18|ann arbor ambassador/18 lines:\
-       :li#18:\
-       :is=\E7\E[60;0;0;18p\E8:te=\E[60;0;0;18p\E[60;1H\E[K:\
-       :ti=\E[18;0;0;18p:tc=aaa+unk:
-aaa-18-rv|ann arbor ambassador/18 lines+reverse video:\
-       :tc=aaa+rv:tc=aaa-18:
-aaa-20|ann arbor ambassador/20 lines:\
-       :li#20:\
-       :is=\E7\E[60;0;0;20p\E8:te=\E[60;0;0;20p\E[60;1H\E[K:\
-       :ti=\E[20;0;0;20p:tc=aaa+unk:
-aaa-22|ann arbor ambassador/22 lines:\
-       :li#22:\
-       :is=\E7\E[60;0;0;22p\E8:te=\E[60;0;0;22p\E[60;1H\E[K:\
-       :ti=\E[22;0;0;22p:tc=aaa+unk:
-aaa-24|ann arbor ambassador/24 lines:\
-       :li#24:\
-       :is=\E7\E[60;0;0;24p\E8:te=\E[60;0;0;24p\E[60;1H\E[K:\
-       :ti=\E[24;0;0;24p:tc=aaa+unk:
-aaa-24-rv|ann arbor ambassador/24 lines+reverse video:\
-       :tc=aaa+rv:tc=aaa-24:
-aaa-26|ann arbor ambassador/26 lines:\
-       :li#26:\
-       :is=\E7\E[60;0;0;26p\E8:te=\E[60;0;0;26p\E[26;1H\E[K:\
-       :ti=\E[H\E[J\E[26;0;0;26p:tc=aaa+unk:
-aaa-28|ann arbor ambassador/28 lines:\
-       :li#28:\
-       :is=\E7\E[60;0;0;28p\E8:te=\E[60;0;0;28p\E[28;1H\E[K:\
-       :ti=\E[H\E[J\E[28;0;0;28p:tc=aaa+unk:
-aaa-30-s|aaa-s|ann arbor ambassador/30 lines w/status:\
-       :es:hs:\
-       :li#29:\
-       :ds=\E7\E[60;0;0;30p\E[1;1H\E[K\E[H\E8\r\n\E[K:\
-       :fs=\E[>51l:is=\r\n\E[A\E7\E[60;1;0;30p\E8:\
-       :te=\E[60;1;0;30p\E[29;1H\E[K:\
-       :ti=\E[H\E[J\E[30;1;0;30p\E[30;1H\E[K:\
-       :ts=\E[>51h\E[1;%p1%dH\E[2K:tc=aaa+unk:
-aaa-30-s-rv|aaa-s-rv|ann arbor ambassador/30 lines+status line+reverse video:\
-       :tc=aaa+rv:tc=aaa-30-s:
-aaa-s-ctxt|aaa-30-s-ctxt|ann arbor ambassador/30 lines+status line+save context:\
-       :te=\E[60;1;0;30p\E[59;1H\E[K:\
-       :ti=\E[30;1H\E[K\E[30;1;0;30p:tc=aaa-30-s:
-aaa-s-rv-ctxt|aaa-30-s-rv-ct|aaa-30-srvctxt|ann arbor ambassador/30 lines; status line; saving context:\
-       :te=\E[60;1;0;30p\E[59;1H\E[K:\
-       :ti=\E[30;1H\E[K\E[30;1;0;30p:tc=aaa-30-s-rv:
-aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines:\
-       :li#30:\
-       :is=\E7\E[60;0;0;30p\E8:te=\E[60;0;0;30p\E[30;1H\E[K:\
-       :ti=\E[H\E[J\E[30;0;0;30p:tc=aaa+unk:
-aaa-30-rv|aaa-rv|ann arbor ambassador/30 lines in reverse video:\
-       :tc=aaa+rv:tc=aaa-30:
-aaa-30-ctxt|aaa-ctxt|ann arbor ambassador/30 lines; saving context:\
-       :te=\E[60;0;0;30p\E[60;1H\E[K:ti=\E[30;0;0;30p:tc=aaa-30:
-aaa-30-rv-ctxt|aaa-rv-ctxt|ann arbor ambassador/30 lines; saving context:\
-       :te=\E[60;0;0;30p\E[60;1H\E[K:ti=\E[30;0;0;30p:tc=aaa+rv:tc=aaa-30:
-aaa-36|ann arbor ambassador/36 lines:\
-       :li#36:\
-       :is=\E7\E[60;0;0;36p\E8:te=\E[60;0;0;36p\E[36;1H\E[K:\
-       :ti=\E[H\E[J\E[36;0;0;36p:tc=aaa+unk:
-aaa-36-rv|ann arbor ambassador/36 lines+reverse video:\
-       :tc=aaa+rv:tc=aaa-36:
-aaa-40|ann arbor ambassador/40 lines:\
-       :li#40:\
-       :is=\E7\E[60;0;0;40p\E8:te=\E[60;0;0;40p\E[40;1H\E[K:\
-       :ti=\E[H\E[J\E[40;0;0;40p:tc=aaa+unk:
-aaa-40-rv|ann arbor ambassador/40 lines+reverse video:\
-       :tc=aaa+rv:tc=aaa-40:
-aaa-48|ann arbor ambassador/48 lines:\
-       :li#48:\
-       :is=\E7\E[60;0;0;48p\E8:te=\E[60;0;0;48p\E[48;1H\E[K:\
-       :ti=\E[H\E[J\E[48;0;0;48p:tc=aaa+unk:
-aaa-48-rv|ann arbor ambassador/48 lines+reverse video:\
-       :tc=aaa+rv:tc=aaa-48:
-aaa-60-s|ann arbor ambassador/59 lines plus status line:\
-       :es:hs:\
-       :li#59:\
-       :ds=\E7\E[60;0;0;60p\E[1;1H\E[K\E[H\E8\r\n\E[K:\
-       :fs=\E[>51l:is=\r\n\E[A\E7\E[60;1;0;60p\E8:\
-       :ts=\E[>51h\E[1;%p1%dH\E[2K:tc=aaa+unk:
-aaa-60-s-rv|ann arbor ambassador/59 lines+status line+reverse video:\
-       :tc=aaa+rv:tc=aaa-60-s:
-aaa-60-s-rv-dec|ann arbor ambassador/dec mode+59 lines+status line+rev video:\
-       :tc=aaa+dec:tc=aaa+rv:tc=aaa-60-s:
-aaa-60|ann arbor ambassador/60 lines:\
-       :li#60:\
-       :is=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8:tc=aaa+unk:
-aaa-60-rv|ann arbor ambassador/60 lines+reverse video:\
-       :tc=aaa+rv:tc=aaa-60:
-aaa-db|ann arbor ambassador 30/destructive backspace:\
-       :i2=\E[1Q\E[m\E[>20l\E[>30h:le=\E[D:tc=aaa-30:
-
-guru|guru-33|guru+unk|ann arbor guru/33 lines 80 cols:\
-       :li#33:\
-       :i2=\E[>59l:is=\E7\E[255;0;0;33;80;80p\E8\E[J:\
-       :te=\E[255p\E[255;1H\E[K:ti=\E[33p:vb=\E[>59h\E[>59l:tc=aaa+unk:
-guru+rv|guru changes for reverse video:\
-       :i2=\E[>59h:vb=\E[>59l\E[>59h:
-guru-rv|guru-33-rv|ann arbor guru/33 lines+reverse video:\
-       :tc=guru+rv:tc=guru-33:
-guru+s|changes for status line:\
-       :es:hs:\
-       :ds=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K:fs=\E[>51l:\
-       :te=\E[255;1p\E[255;1H\E[K:\
-       :ts=\E[>51h\E[1;%p1%dH\E[2K:
-guru-nctxt:\
-       :ti=\E[H\E[J\E[33p\E[255;1H\E[K:tc=guru:
-guru-s|guru-33-s|ann arbor guru/33 lines w/status line:\
-       :li#32:\
-       :is=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J:\
-       :ti=\E[33;1p\E[255;1H\E[K:tc=guru+s:tc=guru+unk:
-guru-24:\
-       :co#80:li#24:\
-       :is=\E7\E[255;0;0;24;80;80p\E8\E[J:ti=\E[24p:tc=guru+unk:
-guru-44:\
-       :co#97:li#44:\
-       :is=\E7\E[255;0;0;44;97;100p\E8\E[J:ti=\E[44p:tc=guru+unk:
-guru-44-s|ann arbor guru/44 lines w/status line:\
-       :li#43:\
-       :is=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J:\
-       :ti=\E[44;1p\E[255;1H\E[K:tc=guru+s:tc=guru+unk:
-guru-76|guru with 76 lines by 89 cols:\
-       :co#89:li#76:\
-       :is=\E7\E[255;0;0;76;89;100p\E8\E[J:ti=\E[76p:tc=guru+unk:
-guru-76-s|ann arbor guru/76 lines w/status line:\
-       :co#89:li#75:\
-       :is=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J:\
-       :ti=\E[76;1p\E[255;1H\E[K:tc=guru+s:tc=guru+unk:
-guru-76-lp|guru-lp|guru with page bigger than line printer:\
-       :co#134:li#76:\
-       :is=\E7\E[255;0;0;76;134;134p\E8\E[J:ti=\E[76p:tc=guru+unk:
-guru-76-w|guru 76 lines by 178 cols:\
-       :co#178:li#76:\
-       :is=\E7\E[255;0;0;76;178;178p\E8\E[J:ti=\E[76p:tc=guru+unk:
-guru-76-w-s|ann arbor guru/76 lines w/status line:\
-       :co#178:li#75:\
-       :is=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J:\
-       :ti=\E[76;1p\E[255;1H\E[K:tc=guru+s:tc=guru+unk:
-guru-76-wm|guru 76 lines by 178 cols with 255 cols memory:\
-       :co#178:li#76:\
-       :is=\E7\E[255;0;0;76;178;255p\E8\E[J:ti=\E[76p:tc=guru+unk:
-aaa-rv-unk:\
-       :Nl#0:lh#0:lw#0:\
-       :i1=\E[7m\E7\E[H\E9\E8:mb=\E[5;7m:md=\E[1;7m:\
-       :me=\E[7m:mk=\E[7;8m:mr=\E[m:r1=\E[H\E[7m\E[J:\
-       :..sa=\E[%?%p1%!%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m:\
-       :se=\E[7m:so=\E[m:ue=\E[7m:us=\E[4;7m:
-
-#### Applied Digital Data Systems (adds)
-#
-# ADDS itself is long gone.  ADDS was bought by NCR, and the same group made
-# ADDS and NCR terminals.  When AT&T and NCR merged, the engineering for
-# terminals was merged again.  Then AT&T sold the terminal business to
-# SunRiver.  The engineers from Teletype, AT&T terminals, ADDS,
-# and NCR (who are still there) are at:
-#
-#      SunRiver Data Systems
-#      100 Marcus Boulevard
-#      Hauppauge, NY 117883-762
-#      Vox: (800)-231-5445
-#      Fax: (516)-342-7378
-#
-# Their voice mail describes the place as "SunRiver (formerly ADDS)". 
-
-# Regent: lowest common denominator, works on all regents.
-# (regent: renamed ":bc:" to ":le:" -- esr)
-regent|Adds Regent Series:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cl=^L:cr=^M:do=^J:ho=\EY  :le=^U:ll=^A:nd=^F:\
-       :sf=^J:up=^Z:
-# Regent 100 has a bug where if computer sends escape when user is holding
-# down shift key it gets confused, so we avoid escape.
-regent100|Adds Regent 100:\
-       :sg#1:ug#1:\
-       :bl=^G:cm=\013%+ %B\020%.:k0=^B1\r:k1=^B2\r:k2=^B3\r:\
-       :k3=^B4\r:k4=^B5\r:k5=^B6\r:k6=^B7\r:k7=^B8\r:l0=F1:\
-       :l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:se=\E0@:\
-       :so=\E0P:ue=\E0@:us=\E0`:tc=regent:
-regent20|Adds Regent 20:\
-       :bl=^G:cd=\Ek:ce=\EK:cm=\EY%+ %+ :tc=regent:
-regent25|Adds Regent 25:\
-       :bl=^G:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:tc=regent20:
-regent40|Adds Regent 40:\
-       :sg#1:ug#1:\
-       :al=\EM:bl=^G:dl=\El:k0=^B1\r:k1=^B2\r:k2=^B3\r:\
-       :k3=^B4\r:k4=^B5\r:k5=^B6\r:k6=^B7\r:k7=^B8\r:l0=F1:\
-       :l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:se=\E0@:\
-       :so=\E0P:ue=\E0@:us=\E0`:tc=regent25:
-regent40+|Adds Regent 40+:\
-       :is=\EB:tc=regent40:
-# (regent60: removed obsolete ":ko=dc,im,ei:" -- esr)
-regent60|regent200|Adds Regent 60:\
-       :dc=\EE:ei=\EF:im=\EF:is=\EV\EB:kD=\EE:kI=\EF:kM=\EF:\
-       :se=\ER\E0@\EV:so=\ER\E0P\EV:tc=regent40+:
-regent60na|regent 60 w/no arrow keys:\
-       :kd@:kl@:kr@:ku@:tc=regent60:
-# From: <edward@onyx.berkeley.edu> Thu Jul  9 09:27:33 1981
-# (viewpoint: added kcuf1, kf* and dl1 capabilities -- esr)
-viewpoint|addsviewpoint|adds viewpoint:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cd=\Ek:ce=\EK:cl=^L:cm=\EY%+ %+ :cr=^M:dl=\El:\
-       :do=^J:is=\017\E0`:k0=^B1:k2=^B2:k3=^B!:k4=^B":\
-       :k5=^B#:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:le=^H:ll=^A:\
-       :nd=^F:se=^O:sf=^J:so=^N:ue=^O:up=^Z:us=^N:\
-       :ve=\017\E0`:vs=\017\E0P:
-screwpoint|adds viewpoint with ^O bug:\
-       :am:bs:\
-       :Nl#0:co#80:lh#0:li#24:lw#0:\
-       :bl=^G:cd=\Ek:ce=\EK:cl=\014:cm=\EY%+ %+ :cr=^M:\
-       :dl=\El:do=^J:is=^G:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:\
-       :le=^H:ll=^A:nd=^F:sf=^J:up=^Z:
-fviewpoint|flaky adds viewpoint with ^O bug:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cd=\Ek:ce=\EK:cl=\014:cm=\EY%+ %+ :cr=^M:\
-       :dl=\El:do=^J:is=^G:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:\
-       :le=^H:ll=^A:nd=^F:sf=^J:up=^Z:
-# From: Jay S. Rouman <jsr@dexter.mi.org> 5 Jul 92
-# The civis/cnorm/sgr/sgr0 strings were added by ESR from specs.  
-# Theory; the 3a+ wants \E0%c to set highlights, where normal=01000000,
-# underline=01100000, rev=01010000, blink=01000010,dim=01000001,
-# invis=01000100 and %c is the logical or of desired attributes.
-# There is also a `tag bit' enabling attributes, set by \E) and unset by \E(.
-vp3a+|viewpoint3a+|adds viewpoint 3a+:\
-       :am:bw:\
-       :co#80:it#8:li#24:\
-       :cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:\
-       :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:me=\E(:\
-       :nd=^L:nw=^M^J:\
-       :..sa=\E0%'@'%?%p1%tQ%|%;%?%p2%t%'`'%|%;%?%p3%tP%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%?%p7%tD%|%;%c\E):\
-       :se=\E(:sf=^J:so=\E0Q\E):ta=^I:up=^K:ve=^X:vi=^W:
-vp60|viewpoint60|addsviewpoint60|adds viewpoint60:\
-       :tc=regent40:
-#
-# adds viewpoint 90 - from cornell
-# Note:  emacs sends ei occasionally to insure the terminal is out of
-#        insert mode. This unfortunately puts the viewpoint90 IN insert
-#        mode.  A hack to get around this is :ic=\EF \EF^U:.  (Also,
-#   -    :ei=:im=: must be present in the termcap translation.)
-#   -    :xs: indicates glitch that attributes stick to location
-#   -    :ms: means it's safe to move in standout mode
-#   -    :cl=\EG\Ek: clears screen and visual attributes without affecting
-#               the status line
-# Function key and label capabilities merged in from SCO.
-vp90|viewpoint90|adds viewpoint 90:\
-       :bs:bw:ms:xs:\
-       :co#80:li#24:\
-       :cd=\Ek:ce=\EK:cl=\EG\Ek:cm=\EY%+ %+ :dc=\EE:dl=\El:\
-       :do=^J:ei=:ho=\EY  :ic=\EF \EF\025:im=:k0=^B1\r:\
-       :k1=^B2\r:k2=^B3\r:k3=^B4\r:k4=^B5\r:k5=^B6\r:\
-       :k6=^B7\r:k7=^B8\r:k8=^B9\r:k9=^B\072\r:k;=^B;\r:\
-       :kb=^H:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:l0=F1:l1=F2:\
-       :l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:l8=F9:l9=F10:\
-       :la=F11:ll=^A:nd=^F:se=\ER\E0@\EV:sf=^J:\
-       :so=\ER\E0Q\EV:ta=^I:ue=\ER\E0@\EV:up=^Z:\
-       :us=\ER\E0`\EV:
-# Note: if return acts weird on a980, check internal switch #2
-# on the top chip on the CONTROL pc board.
-adds980|a980|adds consul 980:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\E\016:bl=^G:cl=\014\013@:cm=\013%+@\E\005%2:\
-       :cr=^M:dl=\E\017:do=^J:k0=\E0:k1=\E1:k2=\E2:k3=\E3:\
-       :k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:le=^H:\
-       :nd=\E^E01:se=^O:sf=^J:so=^Y^^^N:
-
-#### C. Itoh Electronics
-#
-# As of 1995 these people no longer make terminals (they're still in the
-# printer business).  Their terminals were all clones of the DEC VT series.
-# They're located in Orange County, CA.
-#
-
-# CIT 80  - vt-52 emulator, the termcap has been modified to remove
-#           the delay times and do an auto tab set rather than the indirect
-#           file used in vt100.
-cit80|cit-80|citoh 80:\
-       :am:bs:\
-       :co#80:li#24:\
-       :cd=\EJ:ce=\EK:cl=\E[;H\EJ:cm=\E[%i%2;%2H:cr=^M:\
-       :ff=^L:is=\E>:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:\
-       :ks=\E[?1h\E=:ku=\EOA:nd=\E[C:sf=^J:up=\E[A:
-# Alternate cit101 (vt100 em) file used in vt100.
-#          Uses 23 lines so can run citsys (like h19sys).
-#      24 May 85 (mtxinu!sybase!tim) - removed 2-byte limit on :cm: cursor
-#        coordinates otherwise there is garbling on long lines in 
-#        co#132 mode; also added support for multipage memory on the Itoh.
-# From: Tim Wood <mtxinu!sybase!tim> Fri Sep 27 09:39:12 PDT 1985
-citc|Citoh fast vt100:\
-       :am:bs:xn:\
-       :co#80:li#23:\
-       :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:\
-       :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:ei=:ic=\E[@:im=:\
-       :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\
-       :kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
-       :ku=\EOA:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:\
-       :us=\E[4m:\
-       :vb=\E[?5h\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E[?5l:\
-       :ve=\E[V\E8:vs=\E7\E[U:
-cita:\
-       :am:bs:xn:\
-       :co#80:li#23:\
-       :cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:\
-       :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\
-       :kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
-       :ku=\EOA:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:\
-       :us=\E[4m:\
-       :vb=\E[?5h\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E[?5l:\
-       :ve=\E[V\E8:vs=\E7\E[U:
-cit101:\
-       :li#24:\
-       :vb@:tc=citc:
-cit101b:\
-       :li#24:\
-       :tc=citc:
-# The CIT-500 was unusual in that it had a portrait-style display.
-# (cit500: mapped ":pt:" to default tabs -- esr)
-cit500|cit-500|cit 500:\
-       :am:bs:pt:xn:\
-       :co#80:li#40:\
-       :al=\E[L:cd=50\E[J:ce=3\E[K:cl=50\E[;H\E[2J:\
-       :cm=5\E[%i%2;%2H:dc=\E[P:dl=\E[M:do=\ED:\
-       :is=\E(B\E)0\E>\E[?3l\E[?7h\E[?8h:k1=\EOP:k2=\EOQ:\
-       :k3=\EOR:k4=\EOS:kd=\EOB:ke=\E[?1l\E>:kh=\E[H:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:nd=2\E[C:\
-       :se=2\E[m:so=2\E[7m:sr=5\EM:ue=2\E[m:up=2\E[A:\
-       :us=2\E[4m:
-
-citoh|ci8510|8510|c.itoh 8510a:\
-       :co#80:it#8:\
-       :is=\E(009\054017\054025\054033\054041\054049\054057\054065\054073.:\
-       :le@:md=\E!:me=\E"\EY:rp=\ER%r%03%.:sr=\Er:ue=\EY:\
-       :us=\EX:tc=lpr:
-citoh-pica|citoh in pica:\
-       :i1=\EN:tc=citoh:
-citoh-elite|citoh in elite:\
-       :co#96:\
-       :i1=\EE:\
-       :is=\E(009\054017\054025\054033\054041\054049\054057\054065\054073\054081\054089.:tc=citoh:
-citoh-comp|citoh in compressed:\
-       :co#136:\
-       :i1=\EQ:\
-       :is=\E(009\054017\054025\054033\054041\054049\054057\054065\054073\054081\054089\054097\054105\054113\054121\054129.:tc=citoh:
-# citoh has infinite cols because we don't want lp ever inserting \n\t**.
-citoh-prop|citoh-ps|ips|citoh in proportional spacing mode:\
-       :co#32767:\
-       :i1=\EP:tc=citoh:
-citoh-6lpi|citoh in 6 lines per inch mode:\
-       :i2=\EA:tc=citoh:
-citoh-8lpi|citoh in 8 lines per inch mode:\
-       :li#88:\
-       :i2=\EB:tc=citoh:
-
-#### Control Data (cdc)
-#
-
-cdc456|cdc:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\EL:bl=^G:cd=^X:ce=^V:cl=^Y^X:cm=\E1%+ %+ :cr=^M:\
-       :dl=\EJ:do=^J:ho=^Y:le=^H:nd=^L:sf=^J:up=^Z:
-cdc456tst:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cl=^Y^X:cm=\E1%+ %+ :cr=^M:do=^J:le=^H:sf=^J:
-
-#### Human Designed Systems (Concept)
-#
-#      Human Designed Systems
-#      400 Fehley Drive
-#      King of Prussia, PA 19406
-#      Vox: (610)-277-8300
-#      Fax: (610)-275-5739
-#      Net: support@hds.com
-# 
-# John Martin <john@hds.com> is their termcap expert.  They're mostly out of
-# the character-terminal business now (1995) and making X terminals.  In
-# particular, the whole `Concept' line described here was discontinued long
-# ago.
-
-# From: <vax135!hpk>  Sat Jun 27 07:41:20 1981
-# Extensive changes to c108 by arpavax:eric Feb 1982
-# Some unknown person at SCO then translated it to terminfo.
-#
-# There seem to be a number of different versions of the C108 PROMS
-# (with bug fixes in its Z-80 program).
-# 
-# The first one that we had would lock out the keyboard of you
-# sent lots of short lines (like /usr/dict/words) at 9600 baud.
-# Try that on your C108 and see if it sends a ^S when you type it.
-# If so, you have an old version of the PROMs.
-# 
-# You should configure the C108 to send ^S/^Q before running this.
-# It is much faster (at 9600 baud) than the c100 because the delays
-# are not fixed.
-# new status line display entries for c108-8p:
-# is3 - init str #3 - setup term for status display - 
-# set programmer mode, select window 2, define window at last 
-# line of memory, set bkgnd stat mesg there, select window 0.
-# 
-# tsl - to status line - select window 2, home cursor, erase to 
-# end-of-window, 1/2 bright on, goto(line#0, col#?)
-# 
-# fsl - from status line - 1/2 bright off, select window 0
-# 
-# dsl - disable status display - set bkgnd status mesg with 
-# illegal window #
-# 
-# There are probably more function keys that should be added but 
-# I don't know what they are.
-#
-c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages:\
-       :i2=\EU\E z"\Ev\001\177 !p\E ;"\E z \Ev  \001\177p\Ep\n:\
-       :te=\Ev  \001\177p\Ep\r\n:tc=c108-4p:
-c108+acs|alternate charset defns for c108:\
-       :ac=l\\qLkTxUmMjE:ae=\Ej :as=\Ej!:
-c108-4p-acs|c108-4p w/ acs:\
-       :tc=c108+acs:tc=c108-4p:
-c108-8p-acs|c108-8p w/ acs:\
-       :tc=c108+acs:tc=c108-8p:
-c108-rv-8p-acs|c108-rv-8p w/ acs:\
-       :tc=c108+acs:tc=c108-rv-8p:
-c108-4p|concept108-4p|concept 108 w/4 pages:\
-       :es:hs:xo:\
-       :pb@:\
-       :..cm=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}%>%t\001%{96}%-%;%{32}%+%c:\
-       :cr=^M:dc=\E 1:ds=\E ;\177:fs=\Ee\E z :i1=\EK\E!\E F:\
-       :i2=\EU\E z"\Ev\177 !p\E ;"\E z \Ev  \001 p\Ep\n:\
-       :sf=^J:te=\Ev  \001 p\Ep\r\n:\
-       :ti=\EU\Ev  8p\Ep\r\E\025:\
-       :ts=\E z"\E?\E\005\EE\Ea %+ :ve=\Ew:vs=\EW:tc=c100:
-c108-rv|c108-rv-8p|concept 108 w/8 pages in reverse video:\
-       :te=\Ev  \002 p\Ep\r\n:ti=\EU\Ev  8p\Ep\r:tc=c108-rv-4p:
-c108-rv-4p|concept108-rv-4p|concept108rv4p|concept 108 w/4 pages in reverse video:\
-       :i1=\Ek:se=\Ee:so=\EE:vb=\EK\Ek:tc=c108-4p:
-c108-rv-4p-acs|c108-rv-4p w/ acs:\
-       :tc=c108+acs:tc=c108-rv-4p:
-c108-na|c108-na-8p|c108-8p-na|concept108-na-|concept108na8p|concept 108 w/8 pages no arrows:\
-       :k7=\E;:k8=\E<:k9=\E=:ke@:ks@:tc=c108-8p:
-c108-na-acs|c108-na w/ acs:\
-       :tc=c108+acs:tc=c108-na:
-c108-rv-na|c108-rv-na-8p|c108-8p-rv-na|concept 108 8 pages no arrows rev video:\
-       :k7=\E;:k8=\E<:k9=\E=:ke@:ks@:tc=c108-rv-8p:
-c108-rv-na-acs|c108-na w/ acs:\
-       :tc=c108+acs:tc=c108-rv-na:
-c108-w|c108-w-8p|concept108-w-8|concept108-w8p|concept 108 w/8 pages in wide mode:\
-       :co#132:\
-       :i1=\E F\E":te=\Ev  ^A0\001D\Ep\r\n:\
-       :ti=\EU\Ev  8\001D\Ep\r:tc=c108-8p:
-c108-w-acs|c108-w w/ acs:\
-       :tc=c108+acs:tc=c108-w:
-
-# Concept 100:
-# These have only window relative cursor addressing, not screen 
-# relative. To get it to work right here, smcup/rmcup (which 
-# were invented for the concept) lock you into a one page 
-# window for screen style programs.
-# 
-# To get out of the one page window, we use a clever trick:
-# we set the window size to zero ("\Ev    " in rmcup) which the 
-# terminal recognizes as an error and resets the window to all 
-# of memory.
-# 
-# This trick works on c100 but does not on c108, sigh.
-# 
-# Some tty drivers use cr3 for concept, others use nl3, hence 
-# the delays on cr and ind below. This padding is only needed at 
-# 9600 baud. One or the other is commented out depending on 
-# local conventions.
-# 
-# 2 ms padding on rmcup isn't always enough. 6 works fine. Maybe 
-# less than 6 but more than 2 will work.
-# 
-# Note: can't use function keys f7-f10 because they are 
-# indistinguishable from arrow keys (!), also, del char and 
-# clear eol use xon/xoff so they probably won't work very well.
-# 
-# Also note that we don't define insrt/del char/delline/eop/send 
-# because they don't transmit unless we reset them - I figured 
-# it was a bad idea to clobber their definitions.
-# 
-# The mc5 sequence changes the escape character to ^^ so that 
-# escapes will be passed through to the printer. Only trouble 
-# is that ^^ won't be - ^^ was chosen to be unlikely. 
-# Unfortunately, if you're sending raster bits through to be 
-# plotted, any character you choose will be likely, so we lose.
-#
-# \EQ"\EY(^W (send anything from printer to host, for xon/xoff) 
-# cannot be # in is2 because it will hang a c100 with no printer 
-# if sent twice.
-c100|concept100|concept|c104|c100-4p|hds concept 100:\
-       :am:eo:mi:ul:xn:\
-       :co#80:li#24:pb#9600:vt#8:\
-       :al=\E\022:bl=^G:cd=\E\005:ce=\E\025:cl=\E?\E\005:\
-       :cm=\Ea%+ %+ :cr=\r:dc=\E\021:dl=\E\002:do=^J:\
-       :ei=\E  :i1=\EK:i2=\Ev    \Ep\n:im=\E^P:ip=:\
-       :is=\EU\Ef\E7\E5\E8\El\ENH\E\200\Eo&\200\Eo'\E\Eo!\200\E\007!\E\010A@ \E4#\072"\E\072a\E4#;"\E\072b\E4#<"\E\072c:\
-       :k1=\E5:k2=\E6:k3=\E7:k4=\E8:k5=\E9:k6=\E\072a:\
-       :k7=\E\072b:k8=\E\072c:kA=\E^R:kB=\E':kD=\E^Q:\
-       :kE=\E^S:kF=\E[:kI=\E^P:kL=\E^B:kM=\E\200:kN=\E-:\
-       :kP=\E.:kR=\E\\:kS=\E^C:kT=\E]:kb=^H:kd=\E<:ke=\Ex:\
-       :kh=\E?:kl=\E>:kr=\E=:ks=\EX:kt=\E_:ku=\E;:le=^H:\
-       :mb=\EC:me=\EN@:mh=\EE:mk=\EH:mp=\EI:mr=\ED:nd=\E=:\
-       :pf=\036o \E\EQ!\EYP\027:po=\EQ"\EY(\027\EYD\Eo \036:\
-       :rp=\Er%.%+ :se=\Ed:sf=^J:so=\ED:ta=\011:\
-       :te=\Ev    \Ep\r\n:ti=\EU\Ev  8p\Ep\r\E\025:ue=\Eg:\
-       :up=\E;:us=\EG:vb=\Ek\EK:
-c100-rv|c100-rv-4p|concept100-rv|c100 rev video:\
-       :i1=\Ek:se=\Ee:so=\EE:vb=\EK\Ek:ve@:vs@:tc=c100:
-c100-rv-na|c100-rv-4p-na|c100 with no arrows:\
-       :ke@:ks@:tc=c100-rv:
-oc100|oconcept|c100-1p|old 1 page concept 100:\
-       :in:\
-       :i3@:tc=c100:
-
-# ht through el included to specify padding needed in raw mode.
-avt-ns|concept avt with status lins disabled:\
-       :am:eo:mi:ul:xn:xo:\
-       :co#80:it#8:li#24:lm#192:\
-       :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:\
-       :RI=\E[%dC:UP=\E[%dA:ae=\016:al=\E[L:as=\017:bl=^G:\
-       :bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%+^AG:cl=\E[H\E[J:\
-       :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[2g:\
-       :cv=\E[%+^Ad:dc=\E[P:dl=\E[M:do=^J:ei=\E4l:ho=\E[H:\
-       :i1=\E[=103l\E[=205l:ic=\E[@:im=\E1:ip=:\
-       :is=\E[1*q\E[2!t\E[7!t\E[=4;101;119;122l\E[=107;118;207h\E)1\E[1Q\EW\E[!y\E[!z\E>\E[0\0720\07232!r\E[0*w\E[w\E2\r\n\E[2;27!t:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kA=\E^C\r:kD=\E^B\r:\
-       :kI=\E^A\r:kS=\E^D\r:kb=^H:kd=\E[B:ke=\E[!z\E[0;2u:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:ks=\E[1!z\E[0;3u:ku=\E[A:\
-       :le=^H:ll=\E[24H:mb=\E[5m:md=\E[1m:me=\E[m:mh=\E[1!{:\
-       :mk=\E8m:mp=\E[99m:mr=\E[7m:nd=\E[C:pf=\E[4i:\
-       :pl=\E[%d;0u#%s#:po=\E[5i:ps=\E[0i:px=\E[%d;1u#%s#:\
-       :rc=\E8:..rp=%p1%c\E[%p2%{1}%-%db:\
-       :..sa=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m:\
-       :sc=\E7:se=\E[7!{:sf=\n:so=\E[7m:sr=\EM:st=\EH:\
-       :ta=\011:te=\E[w\E2\r\n:ti=\E[=4l\E[1;24w\E2\r:\
-       :ue=\E[4!{:up=\E[A:us=\E[4m:ve=\E[=119l:vs=\E[=119h:
-avt-rv-ns|concept avt in reverse video mode/no status line:\
-       :i1=\E[=103l\E[=205h:vb=\E[=205l\E[=205h:tc=avt-ns:
-avt-w-ns|concept avt in 132 column mode/no status line:\
-       :i1=\E[=103h\E[=205l:ti=\E[H\E[1;24;1;132w:tc=avt-ns:
-avt-w-rv-ns|concept avt in 132 column mode/no status line:\
-       :i1=\E[=103h\E[=205h:ti=\E[H\E[1;24;1;132w:\
-       :vb=\E[=205l\E[=205h:tc=avt-ns:
-
-# Concept AVT with status line. We get the status line using the
-# "Background status line" feature of the terminal. We swipe the
-# first line of memory in window 2 for the status line, keeping
-# 191 lines of memory and 24 screen lines for regular use.
-# The first line is used instead of the last so that this works
-# on both 4 and 8 page AVTs. (Note the lm#191 or 192 - this
-# assumes an 8 page AVT but lm isn't currently used anywhere.)
-#
-avt+s|concept avt status line changes:\
-       :es:hs:\
-       :lm#191:\
-       :ds=\E[0*w:fs=\E[1;1!w:\
-       :i2=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n:\
-       :te=\E[2w\E2\r\n:ti=\E[2;25w\E2\r:\
-       :ts=\E[2;1!w\E[;%p1%dH\E[2K:
-avt|avt-s|concept-avt|avt w/80 columns:\
-       :tc=avt+s:tc=avt-ns:
-avt-rv|avt-s-rv|avt-rv-s|concept avt in reverse video w/status line:\
-       :i1=\E[=103l\E[=205h:vb=\E[=205l\E[=205h:tc=avt+s:tc=avt-ns:
-avt-w|avt-w-s|concept avt in 132 column mode w/status line:\
-       :i1=\E[=103h\E[=205l:ti=\E[H\E[1;24;1;132w:tc=avt+s:tc=avt-ns:
-avt-w-rv|avt-rv-w|avt-w-s-rv|avt-w-rv-s|avt 132 cols w/status line:\
-       :i1=\E[=103h\E[=205h:ti=\E[H\E[1;24;1;132w:\
-       :vb=\E[=205l\E[=205h:tc=avt+s:tc=avt-ns:
-
-#### Contel Business Systems. 
-#
-
-# Contel c300 and c320 terminals. 
-contel300|contel320|c300|Contel Business Systems C-300 or C-320:\
-       :am:in:xo:\
-       :co#80:li#24:sg#1:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EI:cl=\EK:cm=\EX%+ \EY%+ :\
-       :cr=^M:ct=\E3:dc=\EO:dl=\EM:do=^J:ei=:ho=\EH:ic=\EN:\
-       :im=:ip=:k0=\ERJ:k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:\
-       :k5=\ERE:k6=\ERF:k7=\ERG:k8=\ERH:k9=\ERI:kb=^H:le=^H:\
-       :ll=\EH\EA:nd=\EC:se=\E!\200:sf=^J:so=\E!\r:st=\E1:\
-       :up=\EA:vb=\020\002\020\003:
-# Contel c301 and c321 terminals.
-contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321:\
-       :am:in:xo:\
-       :co#80:li#24:sg#1:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EI:cl=\EK:cm=\EX%+ \EY%+ :\
-       :cr=^M:ct=\E3:dc=\EO:dl=\EM:do=^J:ho=\EH:k0=\ERJ:\
-       :k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:\
-       :k7=\ERG:k8=\ERH:k9=\ERI:kb=^H:le=^H:ll=\EH\EA:\
-       :nd=\EC:se=\E!\200:sf=^J:so=\E!\r:st=\E1:up=\EA:
-
-#### Data General (dg)
-#
-# According to James Carlson <carlson@xylogics.com> writing in January 1995,
-# the terminals group at Data General was shut down in 1991; all these
-# terminals have thus been discontinued.
-#
-
-dg200|data general dasher 200:\
-       :NL:am:bw:\
-       :co#80:li#24:\
-       :bl=^G:ce=^K:cl=^L:cm=\020%r%.%.:cr=^M:do=^Z:ho=^H:\
-       :k0=^^z:k1=^^q:k2=^^r:k3=^^s:k4=^^t:k5=^^u:k6=^^v:\
-       :k7=^^w:k8=^^x:k9=^^y:kd=^Z:kh=^H:kl=^Y:kr=^X:ku=^W:\
-       :l0=f10:le=^Y:nd=^X:nw=^J:se=^^E:sf=^J:so=^^D:ue=^U:\
-       :up=^W:us=^T:
-#
-# dg450 and dg200 from cornell
-dg450|dg6134|data general 6134:\
-       :bs@:\
-       :nd=^X:tc=dg200:
-# Note: lesser Dasher terminals will not work with vi because vi insists upon
-# having a command to move straight down from any position on the bottom line
-# and scroll the screen up, or a direct vertical scroll command.  The 460 and
-# above have both, the D210/211, for instance, has neither.  We must use ANSI
-# mode rather than DG mode because standard UNIX tty drivers assume that ^H is
-# backspace on all terminals.  This is not so in DG mode.
-# (dg460-ansi: removed obsolete ":kn#6:"; also removed ":mu=\EW:", on the
-# grounds that there is no matching ":ml:"; mapped ":pt:" to default tabs; 
-# fixed garbled ":k9=\E[00\:z:" capability -- esr)
-dg460-ansi|Data General Dasher 460, ANSI-mode:\
-       :am:bs:ms:pt:ul:\
-       :co#80:li#24:\
-       :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%2;%2H:\
-       :dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:\
-       :is=^^F@:k0=\E[001z:k1=\E[002z:k2=\E[003z:k3=\E[004z:\
-       :k4=\E[005z:k5=\E[006z:k6=\E[007z:k7=\E[008z:\
-       :k8=\E[009z:k9=\E[010z:kb=\E[D:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:l0=f1:l1=f2:l2=f3:l3=f4:\
-       :l4=f5:l5=f6:l6=f7:l7=f8:l9=f10:le=^H:mb=\E[5m:\
-       :me=\E[0m:mh=\E[2m:mr=\E[7m:nd=\E[C:nl=\ED:se=\E[0m:\
-       :sf=\E[S:so=\E[7m:sr=\E[T:ue=\E[05:up=\E[A:us=\E[4m:
-# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw>
-# Data General 605x     
-# Ought to work for a Model 6242, Type D210 as well as a 605x.
-# Note that the cursor-down key transmits ^Z.  Job control users, beware!
-dg6053|data general 6053:\
-       :am:bs:bw:pt:ul:\
-       :co#80:li#24:\
-       :bl=^G:ce=^K:cl=^L:cm=\020%r%.%.:cr=^M:do=^Z:ho=^H:\
-       :is=^R:k0=^^q:k1=^^r:k2=^^s:k3=^^t:k4=^^u:k5=^^v:\
-       :k6=^^w:k7=^^x:k8=^^y:kb=^Y:kd=^Z:kh=^H:kl=^Y:kr=^X:\
-       :ku=^W:le=^Y:nd=^X:nw=^M^Z:se=\200^^E:\
-       :so=\200\200\200\200\200\036D:ta=^I:te=^L:ti=^L^R:\
-       :ue=^U:up=^W:us=^T:ve=^L:vs=^L^R:
-# From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
-# courtesy of Carlos Rucalde of Vantage Software, Inc.
-dgd211|Data General d211:\
-       :am:bw:\
-       :co#80:li#24:\
-       :ce=^K:cl=^L:..cm=\020%r%.%.:cr=^M:do=^Z:ho=^H:kb=^Y:\
-       :kd=^Z:kh=^H:kl=^Y:kr=^X:ku=^W:le=^Y:nd=^X:nw=^M^Z:\
-       :se=00\036E\200/>:so=00\036D\200\200\200\200\200/>:\
-       :ta=^I:te=^L:ti=^L^R:ue=^U:up=^W:us=^T:ve=^L:vs=^L^R:
-# From: Joan Walter <joanw@BRL.ARPA>
-# Data General/One
-#  David Holub got the dg1 to work with jove with this termcap
-#   by making li#23 and co#78 to comply with obvious terminal
-#   capabilities.  Still waiting for documentation.
-# Data General/One from  modified DG Dasher DG210/211 (bw removed)
-# From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
-# courtesy of Carlos Rucalde of Vantage Software, Inc.
-dg1|Data General/One:\
-       :am:\
-       :co#78:li#23:\
-       :ce=^K:cl=^L:cm=\020%r%.%.:cr=^M:do=^Z:ho=^H:kb=^Y:\
-       :kd=^Z:kh=^H:kl=^Y:kr=^X:ku=^W:le=^Y:nd=^X:nw=^M^Z:\
-       :ta=^I:up=^W:
-
-#### Datamedia (dm)
-#
-
-cs10|colorscan|Datamedia Color Scan 10:\
-       :ms:\
-       :co#80:li#24:\
-       :bl=^G:cd=\E[J:ce=\E[K:cl=\E[;H\E[J:cm=\E[%i%02;%02H:\
-       :cr=^M:do=^J:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kd=\E[B:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:nd=\E[C:se=\E[m:sf=^J:\
-       :so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:
-cs10-w|Datamedia Color Scan 10 with 132 columns:\
-       :co#132:\
-       :cm=\E[%i%02;%03H:tc=cs10:
-
-# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:";
-# mapped ":pt:" to default tabs -- esr)
-dm1520|dm1521|datamedia 1520:\
-       :am:bs:pt:xn:\
-       :co#80:li#24:\
-       :bl=^G:cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :cr=^M:do=^J:\
-       :ho=^Y:kd=^J:kh=^Y:kl=^H:kr=^\:ku=^_:le=^H:nd=^\:\
-       :sf=^J:ta=^I:up=^_:
-dm2500|datamedia2500|datamedia 2500:\
-       :bs:nc:\
-       :co#80:li#24:\
-       :al=\020\n\030\035\030\035:bl=^G:ce=^W:cl=^^^^\177:\
-       :cm=\014%r%n%.%.:dc=\020\010\030\035:\
-       :dl=\020\032\030\035:dm=^P:do=^J:ed=^X^]:\
-       :ei=\377\377\030\035:ho=^B:ic=\020\034\030\035:im=^P:\
-       :le=^H:nd=^\:pc=\377:se=^X^]:sf=^J:so=^N:up=^Z:
-# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82)
-# also, has a meta-key (:km:)
-# From: <goldberger@su-csli.arpa>
-# (dmchat: ":MT:" changed to ":km:" -- esr)
-dmchat|dmchat version of datamedia 2500:\
-       :km:\
-       :al=1*\020\n\030\035\030\035:dl=2\020\032\030\035:tc=dm2500:
-# (dm3025: ":MT:" changed to ":km:"; mapped ":pt:" to default tabs -- esr)
-dm3025|datamedia 3025a:\
-       :bs:km:pt:\
-       :co#80:li#24:\
-       :al=\EP\n\EQ:bl=^G:cd=\EJ:ce=\EK:cl=\EM:\
-       :cm=\EY%r%+ %+ :cr=^M:dc=\010:dl=\EP\EA\EQ:dm=\EP:\
-       :do=^J:ed=\EQ:ei=\EQ:ho=\EH:im=\EP:ip=:is=\EQ\EU\EV:\
-       :le=^H:nd=\EC:se=\EO0:sf=^J:so=\EO1:ta=^I:up=\EA:
-# (dm3045: mapped ":pt:" to default tabs -- esr)
-dm3045|datamedia 3045a:\
-       :am:bs:eo:pt:ul:xn:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EM:cm=\EY%r%+ %+ :cr=^M:\
-       :dc=\EB:do=^J:ei=\EP:ho=\EH:im=\EP:ip=:is=\EU\EV:\
-       :k0=\Ey\r:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:\
-       :k5=\Et\r:k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:k9=\Ex\r:kh=\EH:\
-       :kr=\EC:ku=\EA:le=^H:nd=\EC:pc=\177:sf=^J:ta=^I:\
-       :up=\EA:
-# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding.
-dm80|dmdt80|dt80|datamedia dt80/1:\
-       :cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=%i\E[%d;%dH:do=^J:\
-       :ho=\E[H:nd=\E[C:pf=\E[4i:po=\E[5i:ps=\E[0i:se=\E[m:\
-       :so=\E[7m:sr=\EM:ue=\E[m:up=\E[A:us=\E[4m:tc=vt100:
-# except in 132 column mode, where it needs a little padding.
-# This is still less padding than the vt100, and you can always turn on
-# the ^S/^Q handshaking, so you can use vt100 flavors for things like
-# reverse video.
-dm80w|dmdt80w|dt80w|datamedia dt80/1 in 132 char mode:\
-       :co#132:\
-       :cd=20\E[0J:ce=20\E[0K:cl=50\E[H\E[2J:\
-       :cm=5\E[%i%d;%dH:do=^J:up=5\E[A:tc=dm80:
-
-#### Falco
-#
-#      Falco Data Products
-#      440 Potrero Avenue
-#      Sunnyvale, CA 940864-196
-#      Vox: (800)-325-2648
-#      Fax: (408)-745-7860
-#      Net: techsup@charm.sys.falco.com
-#
-# Current Falco models as of 1995 are generally ANSI-compatible and support
-# emulations of DEC VT-series, Wyse, and Televideo types.
-
-# Test version for Falco ts-1. See "arpavax.hickman@ucb" for info
-# (falco: mapped ":pt:" to default tabs -- esr)
-# This terminal was released around 1983 and was discontinued long ago.
-falco|ts1|ts-1|falco ts-1:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:cd=\EY:ce=\ET\EG0\010:cl=\E*:\
-       :cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:\
-       :im=\Eq:is=\Eu\E3:k0=^A0\r:kd=^J:kl=^H:kr=^L:ku=^K:\
-       :le=^H:nd=^L:se=\Eg0:sf=^J:so=\Eg1:ta=^I:ue=\Eg0:\
-       :up=^K:us=\Eg1:
-# (falco-p: mapped ":pt:" to default tabs -- esr)
-falco-p|ts1p|ts-1p|falco ts-1 with paging option:\
-       :am:bs:da:db:mi:ms:pt:ul:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET\EG0\010\Eg0:\
-       :cl=\E*:cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=\E[B:\
-       :ei=\Er:im=\Eq:is=\EZ\E3\E_c:kd=\E[B:kh=\E[H:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=^H:nd=\E[C:se=\Eg0:sf=^J:so=\Eg4:\
-       :ta=^I:te=\E_b:ti=\E_d:ue=\Eg0:up=\E[A:us=\Eg1:
-ts100|ts100-sp|falco ts100-sp:\
-       :am:mi:ms:xn:xo:\
-       :co#80:it#8:li#24:vt#3:\
-       :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:\
-       :K5=\EOn:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E~E:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:dc=\E~W:dl=\E~R:do=^J:eA=\E(B\E)0:ei=:\
-       :ho=\E[H:i1=\E~)\E~ea:ic=\E~Q:im=:k0=\EOy:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:\
-       :k8=\EOl:k9=\EOw:k;=\EOx:kb=^H:kd=\EOB:ke=\E[?1l\E>:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-ts100-ctxt|falco ts-100 saving context:\
-       :te=\E~_b:ti=\E~_d\E[2J:tc=ts100:
-
-#### Florida Computer Graphics
-#
-
-#      Florida Computer Graphics Beacon System, using terminal emulator
-#      program "host.com", as provided by FCG.  Entry provided by
-#      David Bryant (cbosg!djb) 1/7/83.
-#      This description is for an early release of the "host" program.
-#      Known bug: ed clears the whole screen, so it's commented out.
-#
-beacon|FCG Beacon System:\
-       :am:da:db:\
-       :co#80:li#32:\
-       :al=\EE:bl=\ESTART\r\E37\r\EEND\r:ce=\ET:cl=\EZ:\
-       :cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=:ho=\EH:\
-       :ic=\EQ:im=:le=^H:mb=\ESTART\r\E61\0541\r\EEND\r:\
-       :me=\ESTART\r\E78\r\E70\0540\r\EEND\r:\
-       :mr=\ESTART\r\E59\0541\r\EEND\r:nd=\EV:\
-       :se=\ESTART\r\E70\0540\r\EEND\r:sf=^J:\
-       :so=\ESTART\r\E70\0546\r\EEND\r:\
-       :ti=\ESTART\r\E2\0540\r\E12\r\EEND\r:\
-       :ue=\ESTART\r\E60\0540\r\EEND\r:up=\EU:\
-       :us=\ESTART\r\E60\0541\r\EEND\r:
-
-#### Fluke
-#
-
-# The 1720a differences from ANSI: no auto margin, destructive 
-# tabs, # of lines, funny highlighting and underlining
-f1720|f1720a|fluke 1720A:\
-       :xt:\
-       :co#80:li#16:sg#1:ug#1:\
-       :bl=^G:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:\
-       :cr=^M:do=\E[B:is=\E[;H\E[2J:kd=^]:kl=^_:kr=^^:ku=^\:\
-       :le=^H:nd=\E[C:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-
-#### Liberty Electronics (Freedom)
-#
-#      Liberty Electronics
-#      48089 Fremont Blvd
-#      Fremont CA 94538
-#      Vox: (510)-623-6000
-#      Fax: (510)-623-7021
-
-# From: <faletti@berkeley.edu>
-f100|freedom|freedom100|freedom model 100:\
-       :am:bw:hs:mi:ms:xo:\
-       :co#80:li#24:\
-       :ae=\E$:al=\EE:as=\E%:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :ch=\E]%+ :cl=^Z:cm=\E=%+ %+ :cr=^M:ct=\E3:cv=\E[%+ :\
-       :dc=\EW:dl=\ER:do=^J:ds=\Eg\Ef\r:ei=\Er:fs=^M:ho=^^:\
-       :im=\Eq:ip=:is=\Eg\Ef\r\Ed:k1=^A@\r:k2=^AA\r:\
-       :k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\
-       :k8=^AG\r:k9=^AH\r:k;=^AI\r:kB=\EI:kb=^H:kd=^V:kh=^^:\
-       :kl=^H:kr=^L:ku=^K:le=^H:nd=^L:se=\EG0:sf=^J:so=\EG4:\
-       :sr=\Ej:st=\E1:ta=^I:ts=\Eg\Ef:ue=\EG0:up=^K:us=\EG8:\
-       :vb=\Eb\Ed:
-f100-rv|freedom-rv|freedom 100 in reverse video:\
-       :is=\Eg\Ef\r\Eb:vb=\Ed\Eb:tc=f100:
-# The f110 and f200 have problems with vi(1).  They use the ^V
-# code for the down cursor key. When kcud1 is defined in terminfo
-# as ^V, the Control Character Quoting capability (^V in insert mode)
-# is lost! It cannot be remapped in vi because it is necessary to enter
-# a ^V to to quote the ^V that is being remapped!!!
-# 
-# f110 users will have to decide whether
-# to lose the down cursor key or the quoting capability. We will opt
-# initially for leaving the quoting capability out, since use of VI
-# is not generally applicable to most interactive applications
-# 
-# The same applies to f200 users, except that another option exists.
-# This option has been chosen locally. It will not be distributed unless
-# a user runs into this problem and requests assistance. Very few users,
-# if any, should run into this problem. The local solution is in
-# vifix.local.ti. The f200 has the ability to reprogram the down cursor
-# key. The key is reprogrammed to ^J (linefeed). This value is remembered
-# in non-volatile RAM, so powering the terminal off and on will not cause
-# the change to be lost. The terminfo definition for the f200 is changed
-# to identify kcud1 as ^J instead of ^V.
-f110|freedom110|Liberty Freedom 110:\
-       :am:es:hs:mi:ms:xo:\
-       :co#80:it#8:li#24:ws#80:\
-       :ae=\E%%:al=\EE:as=\E$:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :ch=\E]%+ :cl=^Z:cm=\E=%+ %+ :cr=^M:ct=\E3:cv=\E[%+ :\
-       :dc=\EW:dl=\ER:do=^V:ds=\Ef\r:ei=\Er\EO:fs=^M:ho=^^:\
-       :k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
-       :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:\
-       :kC=^^:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:\
-       :kd=^V:kl=^H:kr=^L:ku=^K:le=^H:mb=\EG2:md=\EG0:\
-       :me=\EG0:mh=\EG@:mk=\EG1:mr=\EG4:nd=^L:pf=\Ea:po=\E`:\
-       :se=\EG0:sf=^J:so=\EG<:sr=\EJ\nsmir=\EO\Eq:st=\E1:\
-       :ts=\Ef:ue=\EG0:up=^K:us=\EG8:\
-       :vb=\Eb\200\200\200\200\Ed:ve=\E.2:vi=\E.1:vs=\E.2:
-f110-14|Liberty Freedom 110 14inch:\
-       :dc@:tc=f110:
-f110-w|Liberty Freedom 110 - 132 cols:\
-       :co#132:\
-       :tc=f110:
-f110-14w|Liberty Freedom 110 14in/132 cols:\
-       :co#132:\
-       :dc@:tc=f110:
-f200|freedom200|Liberty Freedom 200:\
-       :am:es:hs:mi:ms:xo:\
-       :co#80:it#8:li#24:ws#80:\
-       :ae=\E%%:al=\EE:as=\E$:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :ch=\E]%+ :cl=^Z:cm=\E=%+ %+ :cr=^M:cs=\Em0%+ %+ :\
-       :ct=\E3:cv=\E[%+ :dc=\EW:dl=\ER:do=^V:ds=\Ef\r:\
-       :ei=\Er:fs=^M:ho=^^:im=\Eq:k0=^AI\r:k1=^A@\r:\
-       :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
-       :k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:kC=^^:kD=\EW:\
-       :kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:kd=^V:kl=^H:kr=^L:\
-       :ku=^K:le=^H:mb=\EG2:md=\EG0:me=\EG0:mh=\EG@:mk=\EG1:\
-       :mr=\EG4:nd=^L:pf=\Ea:po=\E`:se=\EG0:sf=^J:so=\EG<:\
-       :sr=\EJ:st=\E1:ts=\Ef:ue=\EG0:up=^K:us=\EG8:\
-       :vb=\Eo\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\En:\
-       :ve=\E.1:vi=\E.0:vs=\E.1:
-f200-w|Liberty Freedom 200 - 132 cols:\
-       :co#132:\
-       :tc=f200:
-f200vi|Liberty Freedom 200 for vi:\
-       :am:es:hs:mi:ms:xo:\
-       :co#80:it#8:li#24:ws#80:\
-       :ae=\E%%:al=\EE:as=\E$:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :ch=\E]%+ :cl=^Z:cm=\E=%+ %+ :cr=^M:cs=\Em0%+ %+ :\
-       :ct=\E3:cv=\E[%+ :dc=\EW:dl=\ER:do=^V:ds=\Ef\r:\
-       :ei=\Er:fs=^M:ho=^^:im=\Eq:k0=^AI\r:k1=^A@\r:\
-       :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
-       :k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:kC=^^:kD=\EW:\
-       :kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:kd=^J:kl=^H:kr=^L:\
-       :ku=^K:le=^H:mb=\EG2:md=\EG0:me=\EG0:mh=\EG@:mk=\EG1:\
-       :mr=\EG4:nd=^L:pf=\Ea:po=\E`:se=\EG0:sf=^J:so=\EG<:\
-       :sr=\EJ:st=\E1:ts=\Ef:ue=\EG0:up=^K:us=\EG8:\
-       :vb=\Eb\200\200\200\200\Ed:ve=\E.1:vi=\E.0:vs=\E.1:
-f200vi-w|Liberty Freedom 200 - 132 cols for vi:\
-       :co#132:\
-       :tc=f200vi:
-
-#### GraphOn (go)
-#
-#      Graphon Corporation
-#      544 Division Street
-#      Campbell, CA 95008
-#      Vox: (408)-370-4080
-#      Fax: (408)-370-5047
-#      Net: troy@graphon.com (Troy Morrison)
-#
-#
-# The go140 and go225 have been discontinued.  GraphOn now makes X terminals,
-# including one odd hybrid that starts out life on power-up as a character
-# terminal, than can be switched to X graphics mode (driven over the serial
-# line) by an escape sequence.  No info on this beast yet.
-
-# (go140: mapped ":pt:" to default tabs -- esr)
-go140|graphon go-140:\
-       :bs:pt:\
-       :co#80:li#24:\
-       :al=\E[L:cd=10\E[J:ce=\E[K:cl=10\E[;H\E[2J:\
-       :cm=\E[%i%2;%2H:dc=\E[P:dl=\E[M:ei=\E[4l:\
-       :if=/usr/share/tabset/vt100:im=\E[4h:\
-       :is=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kd=\EOB:\
-       :ke=\E[?1l\E>:kh=\E[H:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
-       :ku=\EOA:nd=\E[C:se=\E[m:so=\E[7m:sr=\EM:ue=\E[m:\
-       :up=\E[A:us=\E[4m:
-go140w|graphon go-140 in 132 column mode:\
-       :co#132:\
-       :is=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q:tc=go140:
-# Hacked up vt200 termcap to handle GO-225/VT220
-# From: <edm@nwnexus.WA.COM>
-# (go225: mapped ":pt:" to default tabs -- esr)
-go225|go-225|Graphon 225:\
-       :am:bs:mi:pt:xn:\
-       :co#80:li#25:vt#3:\
-       :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:\
-       :ho=\E[H:im=\E[4h:\
-       :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:kd=\E[B:ke=\E>:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:\
-       :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:rc=\E8:\
-       :rf=/usr/share/tabset/vt100:rs=\E[!p\E[?7h\E[2;1;1#w:\
-       :sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:\
-       :te=\E[!p\E[?7h\E[2;1;1#w:ti=\E[2;0#w\E[1;25r:\
-       :ue=\E[24m:up=\E[A:us=\E[4m:
-
-#### Harris (Beehive)
-#
-# Bletch.  These guys shared the Terminal Brain Damage laurels with Hazeltine.
-# Their terminal group is ancient history now (1995) though the parent
-# company is still in business.
-#
-
-# Beehive documentation is undated and marked Preliminary and has no figures
-# so we must have early Superbee2 (Model 600, according to phone conversation
-# with mfr.). It has proved reliable except for some missing padding
-# (notably after \EK and nl at bottom of screen).
-# 
-# The key idea is that AEP mode is poison for cup & that US's in 
-# the local memory should be avoided like the plague. That means 
-# that the 2048 character local buffer is used as 25 lines of 80 
-# characters, period. No scrolling local memory, folks. It also 
-# appears that we cannot use naked INS LINE feature since it uses
-# US. The sbi fakes il1 with an 80-space insert that may be too 
-# slow at low speeds; also spaces get converted to \040 which is 
-# too long for some programs (not vi).  DEL LINE is ok but slow.
-# 
-# The nl string is designed for last line of screen ONLY; cup to 
-# 25th line corrects the motion inherent in scrolling to Page 1.
-# 
-# There is one understood bug. It is that the screen appears to
-# pop to a new (blank) page after a nel, or leave a half-line 
-# elipsis to a quad that is the extra 48 memory locations. The 
-# data received is dumped into memory but not displayed.  Not to 
-# worry if cup is being used; the lines not displayed will be, 
-# whenever the cursor is moved up there. Since cup is addressed 
-# relative to MEMORY of window, nothing is lost; but beware of 
-# relative cursor motion (cuu1,cud1,cuf1,cub1). Recommended, therefore, 
-# is setenv MORE -c .
-# 
-# WARNING: Not all features tested.
-# 
-# Timings are assembled from 3 sources. Some timings may reflect 
-# SB2/Model 300 that were used if more conservative.
-# Tested on a Model 600 at 1200 and 9600 bd.
-# 
-# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly 
-# placed on the keyboard and useless because of AEP, is made 
-# into a backspace key. In use ESC must be pressed twice (to send)
-# and sending ^C must be prefixed by ESC to avoid that wierd 
-# transmit mode associated with ENTER key.
-# 
-# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across 
-# the screen, then it has dropped into ENTER mode; hit 
-# RESET--ONLINE--!tset.
-# 
-# As delivered this machine has a FATAL feature that will throw 
-# it into that strange transmit state (SPOW) if the space bar is 
-# hit after a CR is received, but before receiving a LF (or a 
-# few others).
-# 
-# The circuits MUST be modified to eliminate the SPOW latch. 
-# This is done by strapping on chip A46 of the I/O board; cut 
-# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that 
-# chip. This mod has been checked out on a Mod 600 of Superbee II.
-# With this modification absurdly high timings on cr are 
-# unnecessary.
-# 
-# NOTE WELL that the rear panel switch should be set to CR/LF, 
-# not AEP!
-#
-sb1|beehive superbee:\
-       :am:bw:da:db:mi:ul:xb:\
-       :co#80:li#25:sg#1:ug#1:\
-       :al=\EN\EL\EQ                                                                                \EP \EO\ER\EA:\
-       :bl=^G:bt=\E`:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EF%r%03%03:\
-       :cr=\r:ct=\E3:dc=\EP:dl=\EM:do=^J:ei=\ER:ho=\EH:\
-       :im=\EQ\EO:is=\EE\EX\EZ\EO\Eb\Eg\ER:k0=\E2:k1=\Ep:\
-       :k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\
-       :k9=\E1:kE=\EK:kI=\EQ\EO:kL=\EM:kM=\ER:kS=\EJ:kb=^_:\
-       :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:l0=TAB CLEAR:\
-       :l9=TAB SET:le=^H:nd=\EC:se=\E_3:sf=^J:so=\E_1:\
-       :st=\E1:ta=^I:ti=\EO:ue=\E_3:up=\EA:us=\E_0:
-sbi|superbee|beehive superbee at Indiana U.:\
-       :xb:\
-       :al=1\EN\EL\EQ \EP \EO\ER\EA:cr=\r:tc=sb1:
-# Alternate (older) description of Superbee - f1=escape, f2=^C.
-# Note: there are at least 3 kinds of superbees in the world.  The sb1
-# holds onto escapes and botches ^C's.  The sb2 is the best of the 3.
-# The sb3 puts garbage on the bottom of the screen when you scroll with
-# the switch in the back set to CRLF instead of AEP.  This description
-# is tested on the sb2 but should work on all with either switch setting.
-# The f1/f2 business is for the sb1 and the xsb can be taken out for
-# the other two if you want to try to hit that tiny escape key.
-# This description is tricky: being able to use cup depends on there being
-# 2048 bytes of memory and the hairy nl string.
-superbee-xsb|beehive super bee:\
-       :am:bs:da:db:pt:xb:\
-       :co#80:dC#10:it#8:li#25:\
-       :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EF%r%3%3:cr=\r:ct=\E3:\
-       :dc=\EP:dl=\EM:do=^J:ho=\EH:is=\EH\EJ:k1=\Ep:k2=\Eq:\
-       :k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kd=\EB:\
-       :kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\
-       :nl=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\
-       :se=\E_3:\
-       :sf=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\
-       :so=\E_1:st=\E1:up=\EA:ve=^J:
-# This loses on lines > 80 chars long, use at your own risk
-superbeeic|super bee with insert char:\
-       :ei=\ER:ic=:im=\EQ:tc=superbee-xsb:
-sb2|sb3|fixed superbee:\
-       :xb@:\
-       :tc=superbee:
-
-# Reports are that most of these Beehive entries (except superbee) have not
-# been tested and do not work right.  :se: is a trouble spot.  Be warned.
-
-# (bee: removed obsolete ":ko=al,bt,ce,cl,dc,dl,ei,ho,ic,im:" -- esr)
-beehive|bee|harris beehive:\
-       :am:bs:mi:\
-       :co#80:li#24:\
-       :al=\EL:bt=\E>:cd=\EJ:ce=\EK:cl=\EE:cm=\EF%+ %+ :\
-       :dc=\EP:dl=\EM:do=\EB:ei=\E@:ho=\EH:ic=:im=\EQ:kb=^H:\
-       :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:nd=\EC:se=\Ed@:\
-       :so=\EdP:ue=\Ed@:up=\EA:us=\Ed`:
-# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs.
-# good grief - does this entry make sg/ug when it doesn't have to?
-# look at those spaces in se/so.  Seems strange to me...
-# (bh3m: mapped ":pt:" to default tabs -- esr)
-beehive3|bh3m|beehiveIIIm:\
-       :am:bs:pt:\
-       :co#80:li#20:\
-       :al=\023:bl=^G:cd=^R:ce=^P:cl=^E^R:cr=^M:dl=\021:\
-       :do=^J:ho=^E:if=/usr/share/tabset/beehive:le=^H:\
-       :ll=^E^K:nd=^L:se= ^_:sf=^J:so=^] :ta=^I:up=^K:
-beehive4|bh4|beehive 4:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EE:cr=^M:do=^J:ho=\EH:\
-       :le=\ED:nd=\EC:sf=^J:up=\EA:
-# (microb: mapped ":pt:" to default tabs -- esr)
-microb|microbee|micro bee series:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EE:cm=\EF%+ %+ :cr=^M:do=^J:\
-       :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:\
-       :k8=\Ew:k9=\Ex:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:\
-       :le=^H:nd=\EC:se=\Ed@ :sf=^J:so= \EdP:ta=^I:ue=\Ed@:\
-       :up=\EA:us=\Ed`:
-
-# 8675, 8686, and bee from Cyrus Rahman
-# (8675: changed k10, k11...k16 to k;, F1...F6 -- esr)
-ha8675|harris 8675:\
-       :F1=^W:F2=\ER:F3=\EE:F4=\EI:F5=\Ei:F6=\Eg:\
-       :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU:k1=^F:k2=^P:\
-       :k3=^N:k4=^V:k5=^J:k6=^T:k7=^H:k8=\177:k9=\Ee:k;=\Ed:tc=bee:
-# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation
-# in :is: -- esr)
-ha8686|harris 8686:\
-       :F1=\EW:F2=\002\E{\003:F3=\002\E|\003:F4=\002\E}\003:\
-       :F5=\002\E~\003:F6=\002\E\177\003:\
-       :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8FB5021B7283#:\
-       :k1=\002\Ep\003:k2=\002\Eq\003:k3=\002\Er\003:\
-       :k4=\002\Es\003:k5=\E3:k6=\EI:k7=\ER:k8=\EJ:k9=\E(:\
-       :k;=\Ej:tc=bee:
-
-#### Hazeltine
-#
-# Hazeltine appears to be out of the business now (1995).  These guys were 
-# co-owners of the Terminal Brain Damage Hall Of Fame along with Harris.
-# Good riddance.
-#
-# The ony contact information I have dates from 1993 and is:
-#
-# Customer Service Division
-# 15 Law Drive
-# P.O. Box 2076
-# Fairfield, NJ 07007-2078
-#
-# Since :nd: is blank, when you want to erase something you
-# are out of luck.  You will have to do ^L's a lot to
-# redraw the screen.  h1000 is untested.  It doesn't work in
-# vi - this terminal is too dumb for even vi.  (The code is
-# there but it isn't debugged for this case.)
-h1000|hazeltine 1000:\
-       :bs:\
-       :co#80:li#12:\
-       :bl=^G:cl=^L:cr=^M:do=^J:ho=^K:le=^H:nd= :sf=^J:
-# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
-h1420|hazeltine 1420:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\E^Z:bl=^G:cd=\E^X:ce=\E^O:cl=\E^\:\
-       :cm=\E\021%r%.%+ :cr=^M:dl=\E^S:do=^J:le=^H:nd=^P:\
-       :se=\E^Y:sf=^J:so=\E^_:ta=^N:up=\E^L:
-# New "safe" cursor movement (11/87) from cgs@umd5.umd.edu.  Prevents freakout
-# with out-of-range args and tn3270.  No hz since it needs to receive ~'s.
-h1500|hazeltine 1500:\
-       :am:bs:hz:\
-       :co#80:li#24:\
-       :al=~\032:bl=^G:cd=~\030:ce=~^O:cl=~^\:\
-       :cm=~\021%r%>^^ %+`%+`:cr=^M:dl=~\023:do=~^K:ho=~^R:\
-       :kd=^J:kh=~^R:kl=^H:kr=^P:ku=~^L:le=^H:nd=^P:se=~^Y:\
-       :sf=^J:so=~^_:up=~^L:
-# h1510 assumed to be in sane escape mode.  Else use h1500.
-# (h1510: early versions of this entry apparently had ":se=\E^_:so=\E^Y:",
-# but these caps were commented out in 8.3; also, removed incorrect
-# and overridden ":do=^J:" -- esr)
-h1510|hazeltine 1510:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\E^Z:bl=^G:cd=\E^X:ce=\E^O:cl=\E^\:\
-       :cm=\E\021%r%.%.:cr=^M:dl=\E^S:do=\E^K:le=^H:nd=^P:\
-       :sf=^J:up=\E^L:
-# (h1520: removed incorrect and overridden ":do=^J:" -- esr)
-h1520|hazeltine 1520:\
-       :am:bs:hz:\
-       :co#80:li#24:\
-       :al=~^Z:bl=^G:cd=~^X:ce=~^O:cl=~^\:cm=~\021%r%.%.:\
-       :cr=^M:dl=~^S:do=~^K:ho=~^R:le=^H:nd=^P:se=~^Y:sf=^J:\
-       :so=~^_:up=~^L:
-# Note: the h1552 appears to be the first Hazeltine terminal which
-# is not braindamaged.  It has tildes and backprimes and everything!
-# Be sure the auto lf/cr switch is set to cr.
-h1552|hazeltine 1552:\
-       :al=\EE:dl=\EO:do=^J:k1=\EP:k2=\EQ:k3=\ER:l1=blue:\
-       :l2=red:l3=green:tc=vt52:
-h1552rv|hazeltine 1552 reverse video:\
-       :do=^J:se=\ET:so=\ES:tc=h1552:
-# Note: h2000 won't work well because of a clash between upper case and ~'s.
-h2000|hazeltine 2000:\
-       :am:bs:nc:\
-       :co#74:li#27:\
-       :al=~\032:bl=^G:cl=~\034:cm=~\021%r%.%.:dl=~\023:\
-       :do=^J:ho=~^R:le=^H:pc=\177:sf=^J:
-# Date: Fri Jul 23 10:27:53 1982.  Some unknown person wrote:
-# I tested this termcap entry for the Hazeltine Esprit with vi. It seems
-# to work ok. There is one problem though if one types a lot of garbage
-# characters very fast vi seems not able to keep up and hangs while trying
-# to insert. That's in insert mode while trying to insert in the middle of
-# a line. It might be because the Esprit doesn't have insert char and delete
-# char as a built in function. Vi has to delete to end of line and then 
-# redraw the rest of the line.
-esprit|Hazeltine Esprit I:\
-       :am:bw:\
-       :co#80:li#24:\
-       :al=\E^Z:bl=^G:bt=\E^T:cd=\E^W:ce=\E^O:cl=\E^\:\
-       :cm=\E\021%r%.%.:cr=^M:dl=\E^S:do=\E^K:ho=\E^R:\
-       :is=\E?:k0=^B0^J:k1=^B1^J:k2=^B2^J:k3=^B3^J:k4=^B4^J:\
-       :k5=^B5^J:k6=^B6^J:k7=^B7^J:k8=^B8^J:k9=^B9^J:kb=^H:\
-       :kd=\E^K:ke=\E>:kh=\E^R:kl=^H:kr=^P:ks=\E<:ku=\E^L:\
-       :l0=0:l1=1:l2=2:l3=3:l4=4:l5=5:l6=6:l7=7:l8=8:l9=9:\
-       :le=^H:nd=^P:se=\E^Y:sf=^J:so=\E^_:up=\E^L:
-esprit-am|hazeltine esprit auto-margin:\
-       :am:\
-       :tc=esprit:
-
-#### IBM
-#
-
-ibm327x|line mode IBM 3270 style:\
-       :gn:\
-       :ce=^M:cl=^M^J:ho=^M:
-# From: J.B. Nicholson-Owens <jeffo@uiuc.edu> 8 Mar 94
-ibm3101|i3101|IBM 3101-10:\
-       :am:bs:pt:xo:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EJ:ce=\EI:cl=\EK:cm=\EY%+ %+ :cr=^M:\
-       :ct=\E1:do=^J:ho=\EH:if=/usr/share/tabset/ibm3101:\
-       :kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\
-       :nw=^M^J:sf=^J:st=\E0:ta=^I:up=\EA:
-#   Received from the IBM terminals division (given to DRB)
-#   June 1988 for PS/2 OS 2.2.3 cut
-ibm3151|i3151:\
-       :me=\E4@:\
-       :..sa=\E4%{64}%?%p1%{0}%>%p1%{4}%<%&%t%{8}%|%;%?%p1%{7}%=%t%{16}%|%;%?%p2%t%{1}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%c:\
-       :se=\E4@:so=\E4A:ue=\E4@:us=\E4B:tc=ibm3163:
-# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992 
-# I commented out some IBM extensions.
-ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display:\
-       :am:mi:ms:\
-       :co#80:it#8:li#24:\
-       :F1=\Ek\r:F2=\El\r:F3=\E!a\r:F4=\E!b\r:F5=\E!c\r:\
-       :F6=\E!d\r:F7=\E!e\r:F8=\E!f\r:F9=\E!g\r:FA=\E!h\r:\
-       :FB=\E!i\r:FC=\E!j\r:FD=\E!k\r:FE=\E!l\r:bl=^G:\
-       :cd=\EJ:ce=\EI:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:dc=\EQ:\
-       :dl=\EO:do=\EB:ho=\EH:k1=\Ea\r:k2=\Eb\r:k3=\Ec\r:\
-       :k4=\Ed\r:k5=\Ee\r:k6=\Ef\r:k7=\Eg\r:k8=\Eh\r:\
-       :k9=\Ei\r:k;=\Ej\r:kA=\EN:kC=\EL\r:kD=\EQ:kE=\EI:\
-       :kI=\EP \010:kL=\EO:kS=\EJ:kT=\E0:ka=\E 1:kb=^H:\
-       :kd=\EB:kh=\EH:kl=\ED:kr=\EC:kt=\E1:ku=\EA:le=\ED:\
-       :mb=\E4D:md=\E4H:me=\E4@\E<@:mk=\E4P:mr=\E4A:nd=\EC:\
-       :..sa=\E4%'@'%?%p1%t%'A'%|%;\n%?%p2%t%'B'%|%;\n%?%p3%t%'A'%|%;\n%?%p4%t%'D'%|%;\n%?%p5%t%'@'%|%;\n%?%p6%t%'H'%|%;\n%?%p7%t%'P'%|%;%c\n%?%p9%t\E>A%e\E<@%;:\
-       :se=\E4@:sf=^J:so=\E4A:te=\E>A:ti=\E>A:ue=\E4@:\
-       :up=\EA:us=\E4B:
-
-# How the 3164 sgr string works:
-#      %{32}           # push space for no special video characteristics
-#      %?%p2%t%{1}%|%; # if p2 set, then OR the 1 bit for reverse
-#      %?%p3%t%{4}%|%; # if p3 set, then OR the 4 bit for blink
-#      %?%p4%t%{2}%|%; # if p4 set, then OR the 2 bit for underline
-#      %c              # pop Pa1
-#      %{39}%p1%-      # calculate 32 + (7 - p1) for foreground
-#      %c              # pop Pa2 
-#      %{64}           # use only black background for now
-#      %c              # pop Pa3
-ibm3164|i3164|3164:\
-       :mb=\E4D:md=\E4H:me=\E4@:\
-       :..sa=\E4%{32}%?%p2%t%{1}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%c%{39}%p1%-%c%{64}%c:tc=ibm3163:
-
-# (ibmaed: mapped ":pt:" to default tabs -- esr)
-ibmaed|IBM Experimental display:\
-       :am:bs:eo:ms:pt:\
-       :co#80:li#52:\
-       :al=\EN:cd=\EJ:ce=\EI:cl=\EH\EK:cm=\EY%+ %+ :dc=\EQ:\
-       :dl=\EO:do=\EB:ei=:ho=\EH:ic=\EP:im=:kb=^H:kd=\EB:\
-       :kl=\ED:kr=\EC:ku=\EA:nd=\EC:se=\E0:so=\E0:ue=:\
-       :up=\EA:us=:vb=\EG:
-ibm-apl|apl|IBM apl terminal simulator:\
-       :li#25:\
-       :tc=dm1520:
-# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'.  
-# Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr)
-ibmmono|ibm5151|IBM workstation monochrome:\
-       :bs:es:hs:\
-       :al=\EL:dl=\EM:ds=\Ej\EY8 \EI\Ek:fs=\Ek:k0=\E<:\
-       :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:\
-       :k8=\ER:k9=\EY:kF=\EE:kI=\200:kN=\EE:kP=\Eg:kR=\EG:\
-       :kb=^H:kh=\EH:l0=f10:md=\EZ:me=\Ew\Eq\Ez\EB:\
-       :mk=\EF\Ef0;\Eb0;:mr=\Ep:se=\Ez:so=\EZ:sr=\EA:\
-       :ts=\Ej\EY8%+ \Eo:ue=\Ew:us=\EW:tc=ibm3101:
-ibmega-c|ibm5154-c|IBM Enhanced Color Display:\
-       :se=\EB:so=\EF\Ef3;:ue=\EB:us=\EF\Ef2;:tc=ibmmono:
-# ibmapa* and ibmmono entries come from ACIS 4.3 distribution
-rtpc|ibmapa16|ibm6155|IBM 6155 Extended Monochrome Graphics Display:\
-       :li#32:\
-       :ds=\Ej\EY@ \EI\Ek:ts=\Ej\EY@%+ \Eo:tc=ibmmono:
-# Advanced Monochrome (6153) and Color (6154) Graphics Display:
-ibmapa8c|ibmapa8|ibm6154|ibm6153|IBM 6153/4 Advanced Graphics Display:\
-       :li#31:\
-       :ds=\Ej\EY? \EI\Ek:ts=\Ej\EY?%+ \Eo:tc=ibmmono:
-ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display:\
-       :li#31:\
-       :ds=\Ej\EY? \EI\Ek:mh=\EF\Ef7;:ts=\Ej\EY?%+ \Eo:tc=ibmega-c:
-# From: Marc Pawliger <marc@ibminet.awdpa.ibm.com>
-# also in /usr/lpp/bos/bsdsysadmin.
-# (hft-c: this entry had :kb=\E[D:kf=\E[C: on the line with ku/kd/kh; this was
-# pretty obviously mislabeled for :le: and :nd:; also ":ul=\E[4m:" was clearly
-# a typo for ":us=\E[4m:"; also ":el=\E[K:" was a typo for ":ce=\E[K:".
-# There was an unknown boolean ":ht:" which I assume was meant to set 
-# hardware tabs, so I have insrted it#8. Finally, "ac=^N" paired with the
-# ae looked like a typo for ":as=^N:" -- esr)
-ibm8512|ibm8513|hft-c|IBM High Function Terminal:\
-       :am:mi:ms:\
-       :co#80:it#8:li#25:\
-       :AL=\E[%dL:DL=\E[%dM:ae=^O:al=\E[L:as=^N:cd=\E[J:\
-       :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:dl=\E[M:dm=\E[4h:\
-       :do=^J:ec=\E[%dX:ed=\E[4l:ei=\E[4l:ho=\E[H:im=\E[4h:\
-       :is=\Eb\E[m\017\E[?7h:k0=\E[010q:k1=\E[001q:\
-       :k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\
-       :k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\E[009q:kd=\E[B:\
-       :kh=\E[H:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[m:\
-       :mr=\E[7m:nd=\E[C:rc=\E[u:\
-       :rs=\Eb\E[m\017\E[?7h\E[H\E[J:sc=\E[s:se=\E[m:\
-       :so=\E[7m:te=\E[20h:ti=\E[20;4l\E[?7h\Eb:ue=\E[m:\
-       :up=\E[A:us=\E[4m:
-hft|AIWS High Function Terminal:\
-       :am:xo:\
-       :co#80:li#25:\
-       :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=^J:ei=\E6:\
-       :ho=\E[H:ic=\E[@:im=\E6:k1=\E[001q:k2=\E[002q:\
-       :k3=\E[003q:k4=\E[004q:k5=\E[005q:k6=\E[006q:\
-       :k7=\E[007q:k8=\E[008q:k9=\E[009q:kN=\E[153q:\
-       :kP=\E[159q:ka=\E[010q:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
-       :mk=\E[8m:mr=\E[7m:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:\
-       :ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
-# From: <pryor@math.berkeley.edu>
-ibm5081|ibmmpel|IBM 5081 1024x1024 256/4096 color display:\
-       :es:hs:\
-       :li#33:\
-       :ds=\Ej\EYA \EI\Ek:fs=\Ek:ts=\Ej\EYA%+ \Eo:tc=ibmmono:
-ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 enhanced color display:\
-       :es:hs:\
-       :li#33:\
-       :ds=\Ej\EYA \EI\Ek:fs=\Ek:ts=\Ej\EYA%+ \Eo:tc=ibmega-c:
-ibm-system1|system1|ibm system/1 computer:\
-       :am:xt:\
-       :co#80:li#24:\
-       :bl=^G:cl=^Z:cm=\005%+ %+ :ho=^K:le=^H:nd=^\:sf=^J:\
-       :up=^^:
-
-#### Infoton/General Terminal Corp.
-#
-
-# gt100 sounds like something DEC would come out with.  Let's hope they don't.
-i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100):\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=^L:cm=\Ef%r%+ %+ :\
-       :cr=^M:dl=\EM:do=^J:ho=\EH:le=^H:nd=\EC:se=\Ea:sf=^J:\
-       :so=\Eb:up=\EA:vb=\Eb\Ea:
-i400|infoton 400:\
-       :am:bs:\
-       :co#80:li#25:\
-       :al=\E[L:bl=^G:ce=\E[N:cl=\E[2J:cm=%i\E[%3;%3H:cr=^M:\
-       :dc=\E[4h\E[2Q\E[P\E[4l\E[0Q:dl=\E[M:do=^J:\
-       :ei=\E[4l\E[0Q:im=\E[4h\E[2Q:le=^H:nd=\E[C:sf=^J:\
-       :up=\E[A:
-# (addrinfo: removed obsolete ":bc=^Z:" -- esr)
-addrinfo:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cd=^K:cl=^L:..cm=\037%p1%{1}%-%c%p2%{1}%-%c:\
-       :cr=^M:do=^J:ho=^H:le=^Z:ll=^H^\:nd=^Y:sf=^J:up=^\:
-infoton:\
-       :am:\
-       :Nl#0:co#80:lh#0:li#24:lw#0:\
-       :bl=^G:cd=^K:cl=^L:cr=^M:do=^J:le=^Z:ll=^H^\:nd=^Y:\
-       :sf=^J:up=^\:
-# (infotonKAS: removed obsolete ":bc=^Z:" -- esr)
-infotonKAS:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cd=^K:cl=^L:cr=^M:do=^J:le=^Z:ll=^H^\:nd=^Y:\
-       :sf=^J:up=^\:
-
-#### Interactive Systems Corp
-#
-# ISC used to sell OEMed and customized hardware to support ISC UNIX.
-# ISC UNIX still exists in 1995, but ISC itself is no more; they got
-# bought out by Sun.
-#
-
-# From: <cithep!eric>  Wed Sep 16 08:06:44 1981
-# (intext: removed obsolete ":ma=^K^P^R^L^L :";
-# mapped ":pt:" to default tabs, removed obsolete ":bc=^_:", also the
-# ":le=^_:" later overridden -- esr)
-intext|Interactive Systems Corporation modified owl 1200:\
-       :am:\
-       :co#80:li#24:sg#1:\
-       :al=\020:bl=^G:bt=^Y:cd=\026J:ce=^Kp^R:cl=\014:\
-       :cm=\017%+ %+ :cr=^M:dc=\022:dl=\021:do=^J:ei=^V<:\
-       :im=^V;:ip=:k0=^VJ\r:k1=^VA\r:k2=^VB\r:k3=^VC\r:\
-       :k4=^VD\r:k5=^VE\r:k6=^VF\r:k7=^VG\r:k8=^VH\r:\
-       :k9=^VI\r:kb=^H:kd=^J:ke=^V9:kh=^Z:kl=^_:kr=^^:\
-       :ks=\036\072\264\026%:ku=^\:le=^H:nd=^^:se=^V# :\
-       :sf=^J:so=^V$\054:ta=^I:up=^\:
-intext2|intextii|INTERACTIVE modified owl 1251:\
-       :am:bw:ul:\
-       :co#80:li#24:sg#0:\
-       :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%+^AG:\
-       :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:\
-       :do=\E[B:ei=:ic=\E[@:im=:k0=\E@\r:k1=\EP\r:k2=\EQ\r:\
-       :k3=\ES\r:k4=\ET\r:k5=\EU\r:k6=\EV\r:k7=\EW\r:\
-       :k8=\EX\r:k9=\EY\r:kb=^H:kd=\EB\r:kh=\ER\r:kl=\ED\r:\
-       :kr=\EC\r:ku=\EA\r:l0=REFRSH:l1=DEL CH:l2=TABSET:\
-       :l3=GOTO:l4=+PAGE:l5=+SRCH:l6=-PAGE:l7=-SRCH:l8=LEFT:\
-       :l9=RIGHT:nd=\E[C:se=\E[2 D:sf=\E[S:so=\E[6 D:\
-       :sr=\E[T:ta=^I:ue=\E[2 D:up=\E[A:us=\E[18 D:\
-       :vb=\E[;;;;;;;;;2;;u\E[;;;;;;;;;1;;u:
-
-#### Kimtron (abm, kt)
-#
-# Kimtron entries include (undocumented) codes for: enter dim mode (:mh:),
-# enter bold mode (:md:), enter reverse mode (:mr:), turn off all attributes
-# (:me:).
-
-# Kimtron ABM 85 added by Dual Systems
-# (abm85: mapped ":pt:" to default tabs; removed duplicated ":kd=^J:" -- esr)
-abm85|Kimtron ABM 85:\
-       :am:bs:bw:ms:pt:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=\EE:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :\
-       :dc=\EW:dl=\ER:do=^J:ei=\Er:\
-       :if=/usr/share/tabset/stdcrt:im=\EQ:\
-       :is=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq:kb=^H:kd=^J:kh=^^:\
-       :kl=^H:kr=^L:ku=^K:nd=^L:se=\Ek:so=\Ej:ue=\Em:up=^K:\
-       :us=\El:
-# Kimtron ABM 85H added by Dual Systems.
-# Some notes about the 85h entries:
-# 1) there are several firmware revs of 85H in the world. Use o85h for
-#    firmware revs prior to SP51
-# 2) Make sure to use 85h entry if the terminal is in 85H mode and the
-#    85e entry if it is in 920 emulation mode. They are incompatible in
-#    some places and NOT software settable i.e., :is: can't fix change it)
-# 3) In 85h mode, the arrow keys and special functions transmit when
-#    the terminal is in dup-edit, and work only locally in local-edit.
-#    Vi won't swallow `del char' for instance, but :vs: turns on
-#    dup-edit anyway so that the arrow keys will work right. If the
-#    arrow keys don't work the way you like, change :vs:, :ve:, and :is:.
-#    920E mode does not have software commands to toggle between dup
-#    and local edit, so you get whatever was set last on the terminal.
-# 4) :vb: attribute is nice, but seems too slow to work correctly (\Eb<pad>\Ed)
-# 5) Make sure `hidden' attributes are selected. If `embedded' attributes
-#    are selected, the entries :sg@: and :ug@: should be removed.
-# 6) auto new-line should be on (selectable from setup mode only)
-#
-# From: Erik Fair <fair@ucbarpa>  Sun Oct 27 07:21:05 1985
-abm85h|85H|85h|Kimtron ABM 85H, 85H mode:\
-       :hs:\
-       :sg@:ug@:\
-       :ds=\Ee:fs=^M:im=\EZ:\
-       :is=\EC\EN\EX\024\016\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\EG0\Ed\E.4\El:\
-       :kd=^V:me=\E(\EG0:mh=\E):mr=\EG4:se=\EG0:so=\EG4:\
-       :ts=\Eg\Ef:ue=\EG0:us=\EG8:vb@:ve=\E.4:vs=\E.2:tc=abm85:
-abm85e|85E|85e|Kimtron ABM 85H, 920E mode:\
-       :sg@:ug@:\
-       :im=\EZ:\
-       :is=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq\Em:\
-       :me=\E(\Ek:mh=\E):mr=\Ej:vb@:tc=abm85:
-abm85h-o|oabm85h|o85h|Kimtron ABM 85H, old firmware rev.:\
-       :sg@:ug@:\
-       :im=\EZ:\
-       :is=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF:\
-       :me=\E(\Ek:mh=\E):mr=\Ej:\
-       :vb=\200\200\200\007\200\200\200:tc=abm85:
-# From: <malman@bbn-vax.arpa>
-# (kt7: removed obsolete ":ko=ic,dc,al,dl,cl,ce,cd,bt:", ":ma=^V^J^L :";
-# mapped ":pt:" to default tabs -- esr)
-kt7|kimtron model kt-7:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :al=\EE:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :\
-       :dc=\EW:dl=\ER:do=^V:ei=:fs=\Eg:ho=^^:ic=\EQ:\
-       :if=/usr/share/tabset/stdcrt:im=:is=\El\E":k0=^AI\r:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^V:\
-       :kh=^^:kl=^H:kr=^L:ku=^K:nd=^L:se=\EG0:so=\EG4:\
-       :ts=\Ef:ue=\EG0:up=^K:us=\EG8:
-
-#### Microterm (act, mime)
-#
-# The mime1 entries refer to the Microterm Mime I or Mime II.
-# The default mime is assumed to be in enhanced act iv mode.
-#
-
-# New "safe" cursor movement (5/87) from reuss@umd5.umd.edu.  Prevents freakout with
-# out-of-range args on Sytek multiplexors.  No ":so=^N:" and ":se=^N:" since 
-# it gets confused and it's too dim anyway.  No ic since Sytek insists ^S 
-# means xoff.
-# (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr)
-act4|microterm|microterm act iv:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=2.3*\001<2.3*/>:bl=^G:cd=2.2*\037:ce=.1*\036:\
-       :cl=12\014:cm=\024%+^X%>/0%+P:cr=^M:dc=.1*\004:\
-       :dl=2.3*\027:do=^K:ho=^]:kd=^K:kl=^H:kr=^X:ku=^Z:\
-       :le=^H:nd=^X:sf=^J:up=^Z:
-# The padding on :sr: and :ta: for act5 and mime is a guess and not final.
-# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
-# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr)
-act5|microterm5|microterm act v:\
-       :kd=^K:kl=^H:kr=^X:ku=^Z:sr=\EH:uc=^H\EA:tc=act4:
-# Act V in split screen mode.  act5s is not tested and said not to work.
-act5s|skinny act5:\
-       :co#39:li#48:\
-       :te=\EQ:ti=\EP:tc=act5:
-# Mimes using brightness for standout.  Half bright is really dim unless
-# you turn up the brightness so far that lines show up on the screen.
-mime-fb|full bright mime1:\
-       :is=^S\E:se=^S:so=^Y:tc=mime:
-mime-hb|half bright mime1:\
-       :is=^Y\E:se=^Y:so=^S:tc=mime:
-# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode
-# the more plausible ":do=^J:"; mapped ":pt:" to ":it#8:" -- esr)
-# uc was at one time disabled to get around a curses bug, be wary of it
-mime|mime1|mime2|mimei|mimeii|microterm mime1:\
-       :am:bs:pt:\
-       :co#80:it#8:li#24:vt#9:\
-       :al=\001:bl=^G:cd=^_:ce=^^:cl=^]^C:\
-       :cm=\024%+^X%> 0%+P:cr=^M:dl=\027:do=^J:ho=^]:\
-       :is=^S\E^Q:kd=^K:kl=^H:kr=^X:ku=^Z:le=^H:nd=^X:sf=^J:\
-       :sr=\022:ta=\011:uc=^U:up=^Z:
-# These termcaps (for mime 2a) put the terminal in low intensity mode
-# since high intensity mode is so obnoxious.
-mime2a-s|microterm mime2a (emulating an enhanced soroc iq120):\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\001:bl=^G:cd=\EJ:ce=\EK:cl=\EL:cm=\E=%+ %+ :\
-       :cr=^M:dc=\ED:dl=\027:do=^J:ei=^Z:ho=^^:im=\EE:ip=:\
-       :is=\E):kd=^J:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:se=\E;:\
-       :sf=^J:so=\E\072:sr=\EI:ue=\E7:up=\EI:us=\E6:
-# This is the preferred mode (but ^X can't be used as a kill character)
-# (mime2a: replaced ":pt:" with SCO's "it#8" -- esr)
-mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52):\
-       :bs:pt:\
-       :co#80:it#8:li#24:\
-       :al=\001:bl=^G:cd=\EQ:ce=\EP:cl=\EL:cm=\EY%+ %+ :\
-       :cr=^M:dc=^N:dl=\027:do=^J:ei=^Z:ho=\EH:im=^O:ip=:\
-       :is=^Y:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\
-       :se=\E9:sf=^J:so=\E8:sr=\EA:ta=^I:ue=\E5:up=\EA:\
-       :us=\E4:
-# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr)
-mime3a|mime1 emulating 3a:\
-       :am@:\
-       :kd=^K:kl=^H:kr=^X:ku=^Z:tc=adm3a:
-# (mime3ax: mapped ":pt:" to default tabs -- esr)
-mime3ax|mime-3ax|mime1 emulating enhanced 3a:\
-       :pt:\
-       :it#8:\
-       :al=\001:cd=^_:ce=^X:dl=\027:ta=\011:tc=mime3a:
-# Wed Mar  9 18:53:21 1983
-# We run our terminals at 2400 baud, so there might be some timing problems at
-# higher speeds. The major improvements in this model are the terminal now 
-# scrolls down and insert mode works without redrawing the rest of the line
-# to the right of the cursor. This is done with a bit of a kludge using the
-# exit graphics mode to get out of insert, but it does not appear to hurt
-# anything when using vi at least. If you have some users using act4s with
-# programs that use curses and graphics mode this could be a problem.
-mime314|mm314|mime 314:\
-       :am:\
-       :co#80:li#24:\
-       :al=^A:cd=^_:ce=^^:cl=^L:cm=\024%.%.:dc=^D:dl=^W:\
-       :ei=^V:ho=^]:im=^S:kd=^K:kl=^H:kr=^X:ku=^Z:le=^H:\
-       :nd=^X:ta=^I:up=^Z:
-# Fri Aug  5 08:11:57 1983
-# This entry works for the ergo 4000 with the following setups:
-# ansi,wraparound,newline disabled, xon/xoff disabled in both
-# setup a & c.
-#      
-# WARNING!!! There are multiple versions of ERGO 4000 microcode
-# Be advised that very early versions DO NOT WORK RIGHT !!  
-# Microterm does have a ROM exchange program- use it or lose big
-ergo4000|microterm ergo 4000:\
-       :da:db:ms:\
-       :co#80:li#66:\
-       :AL=\E[1L:bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:\
-       :cm=\E[%i%d;%dH:cr=^M:dc=\E[1P:dl=\E[1M:do=\E[B:\
-       :ei=\E[4l:im=\E[4h:\
-       :is=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:kd=\E[B:ke=\E=:kl=\E[D:\
-       :kr=\E[C:ks=\E=:ku=\E[A:l1=pf1:l2=pf2:l3=pf3:l4=pf4:\
-       :le=^H:nd=\E[C:se=\E[0m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:\
-       :up=\E[A:
-
-#### NCR 
-#
-# NCR's terminal group was merged with AT&T's when AT&T bought the company.
-# For what happened to that group, see the ADDS section.
-#
-
-# From <root@goliath.un.atlantaga.NCR.COM>, init string hacked by SCO.
-ncr7900i|7900i|ncr7900|7900|ncr 7900 model 1:\
-       :am:bw:ul:\
-       :co#80:li#24:sg#1:ug#1:\
-       :bl=^G:cd=\Ek:ce=\EK:cl=^L:cm=\E1%r%.%.:cr=^M:do=^J:\
-       :is=\E0@\010\E3\E4\E7:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:\
-       :le=^H:ll=^A:mb=\E0B:me=\E0@:mh=\E0A:mr=\E0P:nd=^F:\
-       :pf=^T:po=^R:\
-       :..sa=\E0%p5%'@'%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c:\
-       :se=\E0@:sf=^J:so=\E0Q:ue=\E0@:up=^Z:us=\E0`:
-ncr7900i-na|ncr7900-na|7900-na|ncr 7900 model 1 with no arrows:\
-       :kd@:kl@:kr@:ku@:tc=ncr7900i:
-ncr7900iv|ncr 7900 model 4:\
-       :am:bw:es:hs:\
-       :co#80:li#24:\
-       :al=\E^N:bl=^G:cl=^L:cm=\013%+@\E\005%02:cr=^M:\
-       :dl=\E^O:do=^J:ds=\Ey1:fs=\Ek\Ey5:ho=\013@\E^E00:\
-       :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:\
-       :k8=\ER:kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:\
-       :l6=blue:l7=red:l8=white:le=^H:nw=^M^J:sf=^J:\
-       :ts=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo:
-ncr7901|7901|ncr 7901 model:\
-       :am:bw:ul:\
-       :co#80:li#24:\
-       :bl=^G:cd=\Ek:ce=\EK:ch=\020%+^J:cl=^L:cm=\EY%+ %+ :\
-       :cr=^M:cv=\013%+@:do=^J:is=\E4^O:kC=^L:kd=^J:kh=^H:\
-       :kl=^U:kr=^F:ku=^Z:le=^H:ll=^A:mb=\E0B:me=^O:mh=\E0A:\
-       :mr=\E0P:nd=^F:pf=^T:po=^R:\
-       :..sa=\E0%p5%'@'%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c\016:\
-       :se=^O:sf=^J:so=\E0Q\016:ue=^O:up=^Z:us=\E0`\016:\
-       :ve=^X:vi=^W:
-
-#### Perkin-Elmer (Owl)
-#
-# These are official terminfo entries from within Perkin-Elmer.
-#
-
-bantam|pe550|pe6100|perkin elmer 550:\
-       :co#80:li#24:\
-       :bl=^G:ce=\EI:cl=\EK:cm=\EX%+ \EY%+ :cr=^M:do=^J:\
-       :ho=\EH:le=^H:ll=\EH\EA:nd=\EC:sf=^J:up=\EA:
-fox|pe1100|perkin elmer 1100:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EJ:ce=\EI:cl=\EH\EJ:cm=\EX%+ \EY%+ :cr=^M:\
-       :ct=\E3:do=^J:ho=\EH:le=^H:ll=\EH\EA:nd=\EC:sf=^J:\
-       :st=\E1:up=\EA:vb=\020\002\020\003:
-owl|pe1200|perkin elmer 1200:\
-       :am:in:\
-       :co#80:li#24:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EI:cl=\EH\EJ:\
-       :cm=\EX%+ \EY%+ :cr=^M:ct=\E3:dc=\EO:dl=\EM:do=^J:\
-       :ei=:ho=\EH:ic=\EN:im=:ip=:k0=\ERJ:k1=\ERA:k2=\ERB:\
-       :k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:k7=\ERG:k8=\ERH:\
-       :k9=\ERI:kb=^H:le=^H:ll=\EH\EA:nd=\EC:se=\E!\200:\
-       :sf=^J:so=\E!^H:st=\E1:up=\EA:vb=\020\002\020\003:
-pe1251|pe6300|pe6312|perkin elmer 1251:\
-       :am:\
-       :co#80:it#8:li#24:pb#300:sg#1:vt#8:\
-       :bl=^G:cd=\EJ:ce=\EI:cl=\EK:cm=\EX%+ \EY%+ :cr=^M:\
-       :ct=\E3:do=\EB:ho=\EH:k0=\ERA:k1=\ERB:k2=\ERC:\
-       :k3=\ERD:k4=\ERE:k5=\ERF:k6=\ERG:k7=\ERH:k8=\ERI:\
-       :k9=\ERJ:k;=\ERK:le=\ED:nd=\EC:sf=^J:st=\E1:up=\EA:
-pe7000m|perkin elmer 7000 series monochrome monitor:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:bt=\E!Y:cd=\EJ:ce=\EI:cl=\EK:cm=\ES%+ %+ :\
-       :cr=^M:do=\EB:ho=\EH:i1=\E!\200\EW  7o\Egf\ES7 :\
-       :k0=\E!\200:k1=\E!^A:k2=\E!^B:k3=\E!^C:k4=\E!^D:\
-       :k5=\E!^E:k6=\E!^F:k7=\E!^G:k8=\E!^H:k9=\E!^I:\
-       :k;=\E!^J:kb=^H:kd=\E!U:kh=\E!S:kl=\E!V:kr=\E!W:\
-       :ku=\E!T:le=\ED:ll=\ES7 :nd=\EC:se=\E!\200:sf=^J:\
-       :so=\E!^H:sr=\ER:ue=\E!\200:up=\EA:us=\E! :
-pe7000c|perkin elmer 7000 series colour monitor:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:bt=\E!Y:cd=\EJ:ce=\EI:cl=\EK:cm=\ES%+ %+ :\
-       :cr=^M:do=\EB:ho=\EH:\
-       :i1=\E!\200\EW  7o\Egf\Eb0\Ec7\ES7 :k0=\E!\200:\
-       :k1=\E!^A:k2=\E!^B:k3=\E!^C:k4=\E!^D:k5=\E!^E:\
-       :k6=\E!^F:k7=\E!^G:k8=\E!^H:k9=\E!^I:k;=\E!^J:kb=^H:\
-       :kd=\E!U:kh=\E!S:kl=\E!V:kr=\E!W:ku=\E!T:le=\ED:\
-       :ll=\ES7 :nd=\EC:se=\Eb0:sf=^J:so=\Eb2:sr=\ER:\
-       :ue=\E!\200:up=\EA:us=\E! :
-
-#### Sperry Univac
-#
-# Sperry Univac has merged with Burroughs to form Unisys.
-#
-
-# This entry is for the Sperry UTS30 terminal running the TTY 
-# utility under control of CP/M Plus 1R1. The functionality 
-# provided is comparable to the DEC vt100.
-uts30|sperry uts30 with cp/m@1R1:\
-       :am:bw:hs:\
-       :co#80:li#24:ws#40:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
-       :LE=\E[%dD:RI=\E[%dC:SF=\E[%dB:SR=\E[%dA:UP=\E[%dA:\
-       :ae=\Ed:al=\EN:as=\EF:bl=^G:cd=\E[J:ce=\E[K:cl=^L:\
-       :cm=\E[%i%d;%dH:cr=^M:cs=\EU%+ %+ :dc=\EM:dl=\EL:\
-       :do=\EB:ei=:fs=^M:ho=\E[H:ic=\EO:im=:\
-       :is=\E[U 7\E[24;1H:kb=^H:kd=\EOB:kh=\E[H:kl=\EOD:\
-       :kr=\EOC:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:\
-       :mr=\E[7m:nd=\EC:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\EX:\
-       :rf=/usr/lib/tabset/vt100:sc=\EW:se=\E[m:sf=^J:\
-       :so=\E[7m:sr=\EI:ta=^I:ts=\E]:uc=\EPB:ue=\E[m:\
-       :up=\E[A:us=\E[4m:ve=\ES:vi=\ER:
-
-#### Tandem
-#
-# Tandem builds these things for use with its line of fault-tolerant
-# transaction-processing computers.  They aren't generally available
-# on the merchant market, and so are fairly uncommon.
-#
-
-tandem6510|adm3a repackaged by Tandem:\
-       :tc=adm3a:
-
-# A funny series of terminal that TANDEM uses.  The actual model numbers
-# have a fourth digit after 653 that designates minor variants.  These are
-# natively block-mode and rather ugly, but they have a character mode which
-# this doubtless(?) exploits.  There is a 6520 that is slightly dumber.
-# (tandem653: had ":sb=\ES:", probably someone's mistake for sf -- esr)
-tandem653|t653x|Tandem 653x multipage terminal:\
-       :am:bs:da:db:hs:\
-       :co#80:li#24:sg#1:ug#1:ws#64:\
-       :cd=\EJ:ce=\EK:cl=\EI:cm=\023%+ %+ :do=^J:ds=\Eo\r:\
-       :fs=^M:ho=\EH:if=/usr/share/tabset/tandem653:le=^H:\
-       :nd=\EC:se=\E6 :sf=\ES:so=\E6$:sr=\ET:ts=\Eo:ue=\E6 :\
-       :up=\EA:us=\E60:
-
-#### Tandy/Radio Shack
-#
-# Tandy has a line of VDTs distinct from its microcomputers.
-#
-
-dmterm|deskmate terminal:\
-       :am:bw:\
-       :co#80:li#24:\
-       :al=\EP:bl=^G:cd=\EJ:ce=\EK:cl=\Ej:cm=\EY%+ %+ :\
-       :cr=^M:dc=\ES:dl=\ER:do=\EB:ei=:ho=\EH:ic=\EQ:im=:\
-       :k0=\E1:k1=\E2:k2=\E3:k3=\E4:k4=\E5:k5=\E6:k6=\E7:\
-       :k7=\E8:k8=\E9:k9=\E0:kd=\EB:kh=\EH:kl=\ED:kr=\EC:\
-       :ku=\EA:l0=f1:l1=f2:l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:\
-       :l7=f8:l8=f9:l9=f10:le=^H:ll=\EE:nd=\EC:se=\EG0:\
-       :sf=\EX:so=\EG4:ta=^I:up=\EA:ve=\EG6:vi=\EG5:
-dt100|dt-100|Tandy DT-100 terminal:\
-       :xo:\
-       :co#80:li#24:sg#1:ug#1:\
-       :ac=kkllmmjjnnwwvvttuuqqxx:ae=^O:al=\E[L:as=^N:bl=^G:\
-       :cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\010\E[%i%d;%dH:\
-       :cr=^M:cs=\E[%2;%2r:dc=\E[P:dl=\E[M:do=\E[B:ei=:\
-       :ho=\E[H:ic=\E[@:im=:is=\E[?3l\E)0\E(B:k1=\E[?3i:\
-       :k2=\E[2i:k3=\E[@:k4=\E[M:k5=\E[17~:k6=\E[18~:\
-       :k7=\E[19~:k8=\E[20~:k9=\E[21~:k;=\E[?5i:kN=\E[29~:\
-       :kP=\E[28~:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
-       :l1=f1:l2=f2:l3=f3:l4=f4:l5=f5:l6=f6:l7=f7:l8=f8:\
-       :le=^H:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
-dt100w|dt-100w|Tandy DT-100 terminal:\
-       :co#132:\
-       :bl=^G:cr=^M:do=^J:is=\E[?3l\E)0\E(B:sf=^J:tc=dt100:
-dt110|Tandy DT-110 emulating ansi:\
-       :xo:\
-       :co#80:li#24:\
-       :@7=\E[K:ac=kkllmmjjnnwwvvuuttqqxx:ae=^O:al=\E[0L:\
-       :as=^N:bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[;H\E[2J:\
-       :cm=\010\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:dc=\E[0P:\
-       :dl=\E[0M:do=\E[0B:eA=\E(B\E)0:ei=:ho=\E[H:ic=\E[0@:\
-       :im=:is=\E[?3l\E)0\E(B:k1=\E[1~:k2=\E[2~:k3=\E[3~:\
-       :k4=\E[4~:k5=\E[5~:k6=\E[6~:k7=\E[7~:k8=\E[8~:\
-       :k9=\E[9~:k;=\E[10~:kI=\E[@:kN=\E[26~:kP=\E[25~:\
-       :kd=\E[B:kh=\E[G:kl=\E[D:kr=\E[C:ku=\E[A:l0=f1:l1=f2:\
-       :l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:l8=f9:l9=f10:\
-       :le=^H:nd=\E[C:se=\E[0m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
-       :ue=\E[0m:up=\E[0A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
-dt200|td200|Tandy 200:\
-       :am:xt:\
-       :co#40:li#16:\
-       :al=\EL:bl=^G:cd=^L:ce=\EK:cl=\EE:cm=\EY%+ %+ :cr=^M:\
-       :dl=\EM:do=^_:kd=^_:kl=^]:kr=^\:ku=^^:le=^H:nd=^\:\
-       :se=\Eq:sf=^J:so=\Ep:up=\EA:
-pt210|TRS-80 PT-210 printing terminal:\
-       :hc:os:\
-       :co#80:\
-       :bl=^G:cr=^M:do=^J:sf=^J:
-
-#### Tektronix (tek)
-#
-# Tektronix tubes are graphics terminals.  Most of them use modified 
-# oscilloscope technology incorporating a long-persistence green phosphor,
-# and support vector graphics on a main screen with an attached "dialogue
-# area" for interactive text.
-#
-
-tek|tek4012|4012|tektronix 4012:\
-       :os:\
-       :co#75:li#35:\
-       :bl=^G:cl=\E\014:cr=^M:do=^J:ff=\014:is=\E^O:le=^H:
-tek4013|4013|tektronix 4013:\
-       :ae=\E^O:as=\E^N:tc=tek4012:
-tek4014|4014|tektronix 4014:\
-       :co#81:li#38:\
-       :is=\E\017\E9:tc=tek4012:
-tek4015|4015|tektronix 4015:\
-       :ae=\E^O:as=\E^N:tc=tek4014:
-tek4014-sm|4014-sm|tektronix 4014 in small font:\
-       :co#121:li#58:\
-       :is=\E\017\E\072:tc=tek4014:
-tek4015-sm|4015-sm|tektronix 4015 in small font:\
-       :ae=\E^O:as=\E^N:tc=tek4014-sm:
-tek4023|4023|tex|tektronix 4023:\
-       :am:\
-       :co#80:li#24:vt#4:\
-       :bl=^G:cl=\E\014:cm=\034%r%+ %+ :cr=^M:do=^J:le=^H:\
-       :nd=^I:se=^_@:sf=^J:so=^_P:
-# It is recommended that you run the 4025 at 4800 baud or less;
-# various bugs in the terminal appear at 9600.  It wedges at the
-# bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed
-# on keyboard don't work.  You have to hit BREAK twice to get
-# one break at any speed - this is a documented feature.
-# Can't use cursor motion because it's memory relative, and 
-# because it only works in the workspace, not the monitor.  
-# Same for home. Likewise, standout only works in the workspace.
-# 
-# el was commented out since vi and rogue seem to work better 
-# simulating it with lots of spaces!
-# 
-# il1 and il had 145ms of padding, but that slowed down vi's ^U 
-# and didn't seem necessary.
-#
-tek4024|tek4025|tek4027|tektronix 4024/4025/4027:\
-       :am:da:db:\
-       :co#80:it#8:li#34:lm#0:\
-       :AL=\037up\r\037ili %d\r:CC=^_:DL=\037dli %d\r\006:\
-       :DO=\037dow %d\r:LE=\037lef %d\r:RI=\037rig %d\r:\
-       :UP=\037up %d\r:al=\037up\r\037ili\r:bl=^G:\
-       :cd=\037dli 50\r:cl=\037era\r\n\n:cr=^M:dc=\037dch\r:\
-       :dl=\037dli\r\006:do=^F^J:ei=:ic=\037ich\r \010:im=:\
-       :is=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r:\
-       :ke=\037lea p2\r\037lea p4\r\037lea p6\r\037lea p8\r\037lea f5\r:\
-       :ks=\037lea p4 /h/\r\037lea p8 /k/\r\037lea p6 / /\r\037lea p2 /j/\r\037lea f5 /H/\r:\
-       :le=^H:nd=\037rig\r:sf=^F^J:ta=^I:up=^K:
-tek4025-17|4025-17|4027-17|tek 4025 17 line window:\
-       :li#17:\
-       :tc=tek4025:
-tek4025-17-ws|4025-17-ws|4025-17ws|4027-17ws|4027-17-ws|tek 4025 17 line window in workspace:\
-       :is=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r\037wor 17\r\037mon 17\r:\
-       :se=\037att s\r:so=\037att e\r:te=\037mon h\r:\
-       :ti=\037wor h\r:tc=tek4025-17:
-tek4025-ex|tek4027-ex|tek 4025/4027 w/!:\
-       :is=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r:\
-       :te=\037com 33\r:ti=!com 31\r:tc=tek4025:
-# Tektronix 4025a
-# From: Doug Gwyn <gwyn@brl-smoke.ARPA>
-# The following status modes are assumed for normal operation (replace the
-# initial "!" by whatever the current command character is):
-#      !COM 29                 # NOTE: changes command character to GS (^])
-#      ^]DUP
-#      ^]ECH R
-#      ^]EOL
-#      ^]RSS T
-#      ^]SNO N
-#      ^]STO 9 17 25 33 41 49 57 65 73
-# Other modes may be set according to communication requirements.
-# If the command character is inadvertently changed, termcap can't restore it.
-# Insert-character cannot be made to work on both top and bottom rows.
-# Clear-to-end-of-display emulation via !DLI 988 is too groady to use, alas.
-# There also seems to be a problem with vertical motion, perhaps involving
-# delete/insert-line, following a typed carriage return.  This terminal sucks.
-# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
-# (tek4025a: mapped ":pt:" to default tabs; removed obsolete ":xx:".
-# This may mean the tek4025a entry won't work any more. -- esr)
-tek4025a|4025a|Tektronix 4025A:\
-       :am:bs:bw:da:db:pt:xo:\
-       :co#80:li#34:\
-       :CC=^]:DC=\035dch %d;:DL=\035dli %d;:DO=\035dow %d;:\
-       :LE=\035lef %d;:RI=\035rig %d;:SF=\035dow %d;:\
-       :UP=\035up %d;:al=\013\035ili;:bl=^G:bt=\035bac;:\
-       :ce=\035dch 80;:ch=\r\035rig %d;:\
-       :cl=\035era;\n\035rup;:cr=^M:ct=\035sto;:dc=\035dch;:\
-       :dl=\035dli;:do=^J:le=^H:nd=\035rig;:\
-       :rs=!com 29\035del 0\035rss t\035buf\035buf n\035cle\035dis\035dup\035ech r\035eol\035era g\035for n\035pad 203\035pad 209\035sno n\035sto 9 17 25 33 41 49 57 65 73\035wor 0;:\
-       :sf=^J:ta=^I:up=^K:
-# From: cbosg!teklabs!davem Wed Sep 16 21:11:41 1981
-# Here's the command file that I use to get rogue to work on the 4025.
-# It should work with any program using the old curses (e.g. it better
-# not try to scroll, or cursor addressing won't work.  Also, you can't
-# see the cursor.)
-# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh)
-# (tek4025-cr: mapped ":pt:" to default tabs -- esr)
-tek4025-cr|4025-cr|tek 4025 for curses and rogue:\
-       :am:bs:pt:\
-       :co#80:li#33:\
-       :cl=\037era;:cm=\037jum%i%d\054%d;:do=^F^J:\
-       :is=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r:\
-       :le=^H:nd=\037rig;:nl=^F^J:te=\037wor 0:\
-       :ti=\037wor 33h:up=^K:
-# next two lines commented out since curses only allows 128 chars, sigh.
-#      :ti=\037lea p1/b/\037lea p2/j/\037lea p3/n/\037lea p4/h/\037lea p5/ /\037lea p6/l/\037lea p7/y/\037lea p8/k/\037lea p9/u/\037lea p./f/\037lea pt/`era w/13\037lea p0/s/\037wor 33h:\
-#      :te=\037lea p1\037lea p2\037lea p3\037lea p4\037lea pt\037lea p5\037lea p6\037lea p7\037lea p8\037lea p9/la/13\037lea p.\037lea p0\037wor 0:
-tek4025ex|4025ex|4027ex|tek 4025 w/!:\
-       :is=\037com 33\r\n!sto 9\05417\05425\05433\05441\05449\05457\05465\05473\r:\
-       :te=\037com 33\r:ti=!com 31\r:tc=tek4025:
-tek4105|4105|tektronix 4105:\
-       :am:mi:ms:ul:xn:xt:\
-       :co#79:it#8:li#29:\
-       :ae=\E[0m:al=\E[1L:as=\E[1m:bl=^G:bt=\E[Z:cd=\E[J:\
-       :ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%2;%2H:cr=^M:ct=\E[1g:\
-       :dc=\E[1P:dl=\E[1M:do=\E[1B:ei=\E[4l:ho=\E[H:\
-       :i1=\E%!1\E[0m:im=\E[4h:is=\E%!1\E[?6141\E[0m:kb=^H:\
-       :kd=\E[1B:kl=\E[1D:kr=\E[1C:ku=\E[1A:mb=\E[=3;<7m:\
-       :md=\E[=7;<4m:me=\E[=0;<1m:mh=\E[=1;<6m:mk=\E[=6;<5:\
-       :mr=\E[=1;<3m:nd=\E[1C:se=\E[=0;<1m:sf=\E[S:\
-       :so=\E[=2;<3m:sr=\E[T:ta=^I:ti=\E%!1\E[?6l\E[2J:\
-       :ue=\E[=0;<1m:up=\E[1A:us=\E[=5;<2m:
-
-tek4105-30|4105-30|4015 emulating 30 line vt100:\
-       :am:mi:ms:xn:xo:\
-       :co#80:it#8:li#30:vt#3:\
-       :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:\
-       :K5=\EOn:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:do=^J:eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:\
-       :k8=\EOl:k9=\EOw:k;=\EOx:kb=^H:kd=\EOB:ke=\E[?1l\E>:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
-       :sc=\E7:se=\E[m:sf=^J:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-
-tek4107|tek4109|4107|4109|tektronix terminals 4107 4109:\
-       :am:mi:ms:ul:xn:xt:\
-       :co#79:it#8:li#29:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\ELZ:cm=\EY%+ %+ :cr=^M:\
-       :do=^J:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:\
-       :mb=\E%!1\E[5m\E%!0:md=\E%!1\E[1m\E%!0:\
-       :me=\E%!1\E[m\E%!0:mh=\E%!1\E[<0m\E%!0:\
-       :mr=\E%!1\E[7m\E%0:nd=\EC:\
-       :..sa=\E%%!1\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m\E%%!0:\
-       :se=\E%!1\E[m\E%!0:sf=^J:so=\E%!1\E[7;5m\E%!0:sr=\EI:\
-       :ta=^I:ue=\E%!1\E[m\E%!0:up=\EA:us=\E%!1\E[4m\E%!0:\
-       :ve=\E%!0:vs=\E%!3:
-# Tektronix 4207 with sysline.  In the ancestral termcap file this was 4107-s;
-# see the note attached to tek4207.
-tek4207-s|Tektronix 4207 with sysline but no memory:\
-       :es:hs:\
-       :ds=\E7\E[?6l\E[2K\E[?6h\E8:fs=\E[?6h\E8:\
-       :i2=\E7\E[?6l\E[2K\E[?6h\E8:\
-       :is=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\
-       :ts=\E7\E[?6l\E[2K\E[;%i%df:tc=tek4107:
-
-# The 4110 series may be a wonderful graphics series, but they make the 4025
-# look good for screen editing.  In the dialog area, you can't move the cursor
-# off the bottom line.  Out of the dialog area, ^K moves it up, but there
-# is no way to scroll.
-# 
-# Note that there is a floppy for free from Tek that makes the 
-# 4112 emulate the vt52 (use the vt52 termcap). There is also
-# an expected enhancement that will use ANSI standard sequences.
-# 
-# 4112 in non-dialog area pretending to scroll. It really wraps 
-# but vi is said to work (more or less) in this mode.
-# 
-# 'vi' works reasonably well with this entry.
-#
-otek4112|o4112-nd|otek4113|otek4114|tektronix 4110 series:\
-       :am:\
-       :co#80:li#34:\
-       :bl=^G:cl=\E^L:cr=^M:do=^J:le=^H:sf=^J:te=\EKA1\ELV1:\
-       :ti=\EKA0\ELV0\EMG0:up=^K:
-# The 4112 with the ANSI compatibility enhancement
-tek4112|tek4114|tektronix 4110 series:\
-       :am:bs:db:\
-       :co#80:li#34:\
-       :al=\E[L:bt=\E[Z:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[0;0H:\
-       :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:ei=:ic=\E[@:im=:\
-       :is=\E3!1:nd=\E[C:se=\E[m:sf=\E7\E[0;0H\E[M\E8:\
-       :so=\E[7m:sr=\E7\E[0;0H\E[L\E8:ue=\E[m:up=\EM:\
-       :us=\E[4m:ve=:vs=:
-tek4112-nd|4112-nd|4112 not in dialog area:\
-       :ns:\
-       :up=^K:tc=tek4112:
-tek4112-5|4112-5|4112 in 5 line dialog area:\
-       :li#5:\
-       :tc=tek4112:
-# (tek4113: this used to have ":nd=\LM1 \LM0:", someone's mistake;
-# removed ":as=\E^N:ae=\E^O:", which had been commented out in 8.3.
-# Note, the !0 and !1 sequences in :te:/:ti:/:ve:/:vs: were previously \0410
-# and \0411 sequences...I don't *think* they were supposed to be 4-digit
-# octal -- esr)
-tek4113|tektronix 4113 color graphics, 5 line dialog area:\
-       :am:bs:da:eo:\
-       :co#80:li#5:\
-       :cl=\ELZ:do=^J:is=\EKA1\ELL5\ELV0\ELV1:le=^H:\
-       :nd=\ELM1 \ELM0:uc=\010\ELM1_\ELM0:\
-       :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:
-tek4113-34|4113-34|tektronix 4113 color graphics, 34 line dialog area:\
-       :li#34:\
-       :is=\EKA1\ELLB2\ELV0\ELV1:tc=tek4113:
-# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not 
-# supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up .
-# :vb: needs enough delay to let you see the background color being toggled.
-# (tek4113-nd: mapped ":pt:" to default tabs -- esr)
-tek4113-nd|4113-nd|tektronix 4113 color graphics, no dialog area:\
-       :am:bs:eo:pt:\
-       :co#80:li#34:\
-       :cl=\E^L:do=^J:ho=\ELF7l\177 @:\
-       :is=\ELZ\EKA0\ELF7l\177 @:le=^H:ll=\ELF hl @:nd=^I:\
-       :se=\EMT1:so=\EMT2:uc=\010\EMG1_\EMG0:up=^K:\
-       :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:\
-       :vs=\ELZ\EKA0:
-# This entry is from Tek. Inc.  (Brian Biehl)
-# (tek4115: mapped ":pt:" to default tabs; :bc: renamed to :le: -- esr)
-otek4115|Tektronix 4115:\
-       :am:bs:da:db:eo:pt:\
-       :co#80:li#34:\
-       :al=\E[L:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:\
-       :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:\
-       :ho=\E[;H:if=/usr/share/tabset/vt100:im=\E[4h:\
-       :is=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA?\E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[0m:\
-       :kb=^H:ke=\E>:ks=\E=:le=\E[D:nd=\E[C:se=\E[m:\
-       :so=\E[7m:sr=\EM:te=\E%!0\ELBG8\E%!1\E[34;1H\E[J:\
-       :ti=\E%!0\ELBB2\E%!1:ue=\E[m:up=\E[A:us=\E[4m:\
-       :ve=\E%!0\ELBG8\E%!1\E[34;1H:vs=\E%!0\ELBB2\E%!1:
-tek4115|newer tektronix 4115 entry with more ANSI capabilities:\
-       :am:xo:\
-       :co#80:li#34:\
-       :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:\
-       :RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:\
-       :ce=\E[K:ch=\E[%+^AG:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :cr=^M:ct=\E[2g:cv=\E[%+^Ad:dc=\E[P:dl=\E[M:do=^J:\
-       :ei=:ho=\E[H:ic=\E[@:im=:kb=^H:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
-       :me=\E[0m:mk=\E[8m:mr=\E[7m:nd=\E[C:\
-       :..rp=%p1%c\E[%p2%{1}%-%db:\
-       :..sa=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m:\
-       :se=\E[m:sf=^J:so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\E[A:\
-       :us=\E[4m:
-# The tek4125 emulates a vt100 incorrectly - the scrolling region
-# command is ignored.  The following entry replaces the :cs: with the needed
-# :al:, :dl:, and :im:; removes some cursor pad commands that the tek4125
-# chokes on; and adds a lot of initialization for the tek dialog area.
-# Note that this entry uses all 34 lines and sets the cursor color to green.
-# Steve Jacobson 8/85
-# (tek4125: there were two "\!"s in the is that I replaced with "\E!" -- esr)
-tek4125|4125:\
-       :li#34:\
-       :al=\E[1L:cs@:dl=\E[1M:im=\E1:\
-       :is=\E%\E!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\E!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
-       :ks=\E=:rc@:sc@:tc=vt100:
-
-# From: <jcoker@ucbic>
-# (tek4107: mapped ":pt:" to default tabs.  This was the termcap file's
-# entry for the 4107/4207, but SCO supplied another, less capable 4107 entry. 
-# So we'll use that for 4107 and note that if jcoker wasn't confused you
-# may be able to use this one. -- esr)
-tek4207|Tektronix 4207 graphics terminal with memory:\
-       :am:bs:bw:mi:pt:ul:xn:\
-       :co#80:li#32:\
-       :al=3\E[L:bt=\E[Z:cd=\E[J:ce=5\E[K:cl=156\E[H\E[J:\
-       :cm=\E[%i%d;%dH:dc=4\E[P:dl=3\E[M:do=^J:ei=:ho=\E[H:\
-       :ic=4\E[@:im=:\
-       :is=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\
-       :kd=\ED:kh=\E[H:kl=\E[D:kr=\E[C:ku=\EM:le=^H:\
-       :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:se=\E[m:\
-       :so=\E[7m:te=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f:\
-       :ti=\E[?6l\E[H\E[J:ue=\E[m:up=\EM:us=\E[4m:
-
-# From: <carolyn@dali.berkeley.edu>  Thu Oct 31 12:54:27 1985
-# (tek4404: There was a "\!" in :ti: that I replaced with "\E!";
-# also mapped ":pt:" to default tabs -- esr)
-tek4404|4404:\
-       :bs:pt:\
-       :co#80:li#32:\
-       :al=\E[1L:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:\
-       :cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[1M:\
-       :do=^J:ei=\E[4l:ho=\E[H:im=\E[4h:kd=\E[B:ke=\E[?1h:\
-       :kl=\E[D:kr=\E[C:ks=\E[?1l:ku=\E[A:mb=\E[5m:md=\E[1m:\
-       :me=\E[m:nd=\E[C:rc=\E8:sc=\E7:se=\E[27m:so=\E[7m:\
-       :ta=\E[2I:te=\E[1;1H\E[0J\E[?6h\E[?1l:\
-       :ti=\E%\E!1\E[1;32r\E[?6l\E>:ue=\E[m:up=\E[A:\
-       :us=\E[4m:
-# t500 is a local entry for the oddball Tek 500 owned by Fluke 
-# Labs
-#
-t500|Tek series 500:\
-       :am:bw:\
-       :co#80:li#25:\
-       :bl=^G:cl=\005:cm=\E=%+ %+ :cr=^M:do=^J:ho=^T:le=^H:\
-       :sf=^J:
-# I added the is string - straight Unix has ESC ; in the login 
-# string which sets a ct8500 into monitor mode (aka 4025 snoopy 
-# mode). The is string here cleans up a few things (but not 
-# everything).
-#
-ct8500|tektronix ct8500:\
-       :am:bw:da:db:\
-       :co#80:li#25:\
-       :al=\E^L:bl=^G:bt=\E^I:cd=\E^U:ce=\E^T:cl=\E^E:\
-       :cm=\E|%+ %+ :cr=^M:dc=\E^]:dl=\E^M:do=^J:ei=:\
-       :ic=\E^\:im=:is=\037\EZ\Ek:le=^H:me=\E :nd=\ES:\
-       :se=\E :sf=^J:so=\E$:sr=\E^A:ta=^I:ue=\E :up=\ER:\
-       :us=\E!:
-
-# Tektronix 4205 terminal.
-#
-# am is not defined because the wrap around occurs not when the char.
-# is placed in the 80'th column, but when we are attempting to type
-# the 81'st character on the line.
-#
-# Bold, dim, and standout are simulated by colors and thus not allowed
-# with colors.  The tektronix color table is mapped into the RGB color
-# table by setf/setb. All colors are reset to factory specifications by oc.
-# The initc cap uses RGB notation to define colors.  for arguments 1-3 the 
-# interval (0-1000) is broken into 8 smaller sub-intervals (125).  Each sub-
-# interval then maps into pre-defined value.
-# (untranslatable capabilities removed to fit entry within 1023 bytes)
-# WARNING: this entry, 1264 bytes long, may core-dump older termcap libraries!
-tek4205|4205|tektronix 4205:\
-       :cc:mi:ms:\
-       :Co#8:NC#49:co#80:it#8:li#30:pa#63:\
-       :AL=\E[%dL:DO=\E[%dB:IC=\E[%d@::LE=\E[%dD:RI=\E[%dC::\
-       ::UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[1L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
-       :ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:cr=^M:ct=\E[1g:\
-       :dc=\E[1P:dl=\E[1M:do=\E[B:eA=\E)0:ec=\E%dX:ei=\E[4l:\
-       :ho=\E[H:i1=\E%!0\ETM1\E%!1\E[0m:im=\E[4h:k0=\EOA:\
-       :k1=\EOB:k2=\EOC:k3=\EOD:k4=\EP:k5=\EQ:k6=\ER:k7=\ES:\
-       :kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:\
-       :mb=\E[5m:md=\E[=7;<4m:me=\E[=0;<1m\E[24;25;27m\017:\
-       :mh=\E[=1;<6m:mk=\E[=6;<5:mr=\E[7m:nd=\E[C:\
-       :oc=\E%!0\n\ETFB0\n0000\n1F4F4F4\n2F400\n30F40\n4A4C<F4\n50F4F4\n6F40F4\n7F4F40\n\E%!1:\
-       :op=\E[39;40m:se=\E[=0;<1m:sf=\ED:so=\E[=2;<3m:\
-       :sr=\EM:ta=^I:ti=\E%%!1\E[?6l\E[2J:ue=\E[24m:up=\E[A:\
-       :us=\E[4m:
-
-#### Teletype (tty)
-#
-# These are the hardcopy Teletypes from before AT&T bought the company,
-# clattering electromechanical dinosaurs in Bakelite cases that printed on
-# pulpy yellow roll paper.  If you remember these you go back a ways.
-# Teletype-branded VDTs are listed in the AT&T section.
-#
-# The earliest UNIXes were designed to use these clunkers; nroff and a few
-# other programs still default to emitting codes for the Model 37.
-#
-
-tty33|model 33 teletype:\
-       :hc:os:xo:\
-       :co#72:\
-       :bl=^G:cr=^M:do=^J:sf=^J:
-tty35|model 35 teletype:\
-       :tc=tty33:
-tty37|model 37 teletype:\
-       :bs:hc:os:xo:\
-       :bl=^G:cr=^M:do=^J:hd=\E9:hu=\E8:le=^H:sf=^J:up=\E7:
-
-# There are known to be at least three flavors of the tty40, all seem more
-# like IBM half duplex forms fillers than ASCII terminals.  They have lots of
-# awful braindamage, such as printing a visible newline indicator after each
-# newline.  The 40-1 is a half duplex terminal and is hopeless.  The 40-2 is
-# braindamaged but has hope and is described here.  The 40-4 is a 3270
-# lookalike and beyond hope.  The terminal has visible bell but I don't know
-# it - it's null here to prevent it from showing the BL character.
-# There is an \EG in :nl: because of a bug in old vi (if stty says you have
-# a "newline" style terminal (-crmode) vi figures all it needs is nl
-# to get crlf, even if :cr: is not ^M.)
-# (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr)
-tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2:\
-       :xo:\
-       :co#80:li#24:\
-       :al=\EL:cd=\EJ:cl=\EH\EJ:cr=\EG:ct=\EH\E2:dc=\EP:\
-       :dl=\EM:do=\EB:ei=:ho=\EH:ic=\E^:im=:kb=^]:kl=^H:\
-       :le=^H:nd=\EC:pf=^T:po=\022:r2=\023\ER:se=\E4:sf=\ES:\
-       :so=\E3:sr=\ET:st=\E1:ta=\E@:up=\E7:
-tty43|model 43 teletype:\
-       :am:bs:hc:os:xo:\
-       :co#132:\
-       :bl=^G:cr=^M:do=^J:kb=^H:le=^H:sf=^J:
-
-#### Tymshare
-#
-
-scanset|sc410|sc415|Tymshare Scan Set:\
-       :am:bw:ms:\
-       :co#80:li#24:\
-       :ac=l<m-k4j%q\\\054x5:ae=^O:as=^N:bl=^G:cd=\EJ:\
-       :ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:do=^J:ho=\EH:\
-       :kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=^I:pf=\E;0:\
-       :po=\E;0:ps=\E;3:r1=\E>:rc=^C:sc=^B:sf=^J:up=^K:
-
-scanset-n|Tymshare Scan Set in 40 col mode:\
-       :r2=\E<:tc=scanset:
-
-#### Volker-Craig (vc)
-#
-
-# Missing in vc303a and vc303 descriptions:  they scroll 2 lines at a time
-# every other linefeed.
-vc303a|vc403a|volker-craig 303a:\
-       :am:bs:ns:\
-       :co#80:li#24:\
-       :bl=^G:ce=\026:cl=\030:cr=^M:do=^J:ho=\031:kd=^J:\
-       :kl=^H:kr=^U:ku=^Z:le=^H:ll=^P:nd=^U:up=^Z:
-vc303|vc103|vc203|volker-craig 303:\
-       :am:bs:ns:\
-       :co#80:li#24:\
-       :bl=^G:cl=\014:cr=^M:do=^J:ho=\013:kd=^J:kl=^H:kr=^I:\
-       :ku=^N:le=^H:ll=\017W:nd=^I:up=^N:
-# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr)
-vc404|volker-craig 404:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cd=\027:ce=\026:cl=\030:cm=\020%+ %+ :cr=^M:\
-       :do=^J:ho=\031:kd=^J:kl=^H:kr=^U:ku=^Z:le=^H:nd=^U:\
-       :sf=^J:up=^Z:
-vc404-s|volker-craig 404 w/standout mode:\
-       :do=^J:se=^O:so=^N:tc=vc404:
-# (vc404-na: removed obsolete ":ma@:" -- esr)
-vc404-na|volker-craig 404 w/no arrow keys:\
-       :kr@:ku@:tc=vc404:
-vc404-s-na|volker-craig 404 w/standout mode and no arrow keys:\
-       :se=^O:so=^N:tc=vc404-na:
-# From: <wolfgang@cs.sfu.ca>
-vc414|vc414h|Volker-Craig 414H in sane escape mode.:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\E\032:cd=\E^X:ce=10\E\017:cl=\E\034:dc=\E3:\
-       :do=\E^K:ei=:ic=\E\072:im=:k0=\EA:k1=\EB:k2=\EC:\
-       :k3=\ED:k4=\EE:k5=\EF:k6=\EG:k7=\EH:kd=\E^K:kh=\E^R:\
-       :kl=^H:kr=^P:ku=\E^L:l0=PF1:l1=PF2:l2=PF3:l3=PF4:\
-       :l4=PF5:l5=PF6:l6=PF7:l7=PF8:nd=^P:se=\E^_:so=\E^Y:\
-       :up=\E^L:
-vc414h-noxon:\
-       :cm=\E\021%r%.%.:dl=\E\023:ho=\E^R:tc=vc414h:
-vc415|volker-craig 415:\
-       :cl=^L:tc=vc404:
-
-######## OBSOLETE PERSONAL-MICRO CONSOLES AND EMULATIONS
-#
-
-#### IBM PC and clones
-#
-
-# The pcplot IBM-PC terminal emulation program is really messed up. It is
-# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly,
-# doesn't support scrolling regions, ignores add line commands, and ignores
-# delete line commands. Consequently, the resulting behavior looks like a
-# crude adm3a-type terminal.
-# Steve Jacobson 8/85
-pcplot:\
-       :xn@:\
-       :cs@:rc@:sc@:tc=vt100:
-# (kaypro: removed obsolete ":ma=^K^P:" -- esr)
-kaypro|kaypro2|kaypro II:\
-       :am:bs:\
-       :co#80:li#24:\
-       :cl=1\032:cm=\E=%+ %+ :ho=^^:kd=^J:kl=^H:kr=^L:ku=^K:\
-       :nd=^L:up=^K:
-sanyo55|sanyo|sanyo mbc-55x pc compatible:\
-       :am:bs:\
-       :co#80:li#25:\
-       :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:nd=\E[C:\
-       :se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:
-
-# From IBM, Thu May  5 19:35:27 1983
-ibmpc|ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS):\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cl=^L^K:cr=^M^^:do=^J:ho=^K:im=\200R:kd=^_:\
-       :le=^]:nd=^\:sf=\n:up=^^:
-
-#### Apple
-#
-
-# apple -- works with an Apple ][+ that is equipped with a Videx 80 column
-# card in slot 3. A special routine must be installed at the apple end to
-# enable scroll down, here indicated with a ^U.  The Videx card must have 
-# inverse char set, which is used as standout.
-apple|apple-v80|Apple][+ w/Videx80 & custom scroll down:\
-       :am:xn:\
-       :co#80:li#24:\
-       :ae=^Z3:as=^Z2:bl=^G:cd=\013:ce=\035:cl=\014:\
-       :..cm=\r\036%r%p1%{32}%+%c%p2%{32}%+%c$<6>:cr=^M:\
-       :do=^J:ho=\031:le=\010:nd=^\:se=^Z2:sf=^J:so=^Z3:\
-       :sr=^P:up=^_:
-# (appleII: mapped ":pt:" to default tabs -- esr)
-appleII|apple ii plus:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :do=^J:ho=\E^Y:\
-       :is=\024T1\016:kd=^J:kr=^U:nd=^\:se=^N:so=^O:up=^_:\
-       :vb=\024G1\024T1:ve=^TC2:vs=^TC6:
-# Originally by Gary Ford 21NOV83
-# From: <ee178aci%sdcc7@SDCSVAX.ARPA>  Fri Oct 11 21:27:00 1985
-apple-80|apple II with smarterm 80 col:\
-       :am:bs:bw:\
-       :co#80:li#24:\
-       :bt=^R:cd=10*\013:ce=10\035:cl=10*\014:\
-       :cm=\036%r%+ %+ :cr=10*\r:do=^J:ho=^Y:le=^H:nd=^\:\
-       :up=^_:
-apple-soroc|apple emulating soroc 120:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :cr=^M:do=^J:\
-       :ho=^^:kd=^J:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:sf=^J:\
-       :up=^K:
-# From Peter Harrison, Computer Graphics Lab, San Francisco
-#   ucbvax!ucsfmis!harrison  .....uucp
-#   ucbvax!ucsfmis!harrison@BERKELEY   .......ARPA
-# "These two work.  If you don't have the inverse video chip for the
-# Apple with videx then remove the so and se fields."
-# (DaleApple: mapped ":pt:" to default tabs -- esr)
-DaleApple|Apple with videx videoterm 80 column board with inverse video:\
-       :am:bs:pt:xn:\
-       :co#80:li#24:\
-       :cd=^K:ce=^]:cl=300\014:cm=\036%r%+ %+ :do=^J:ho=^Y:\
-       :kd=^J:kh=^Y:kl=^H:kr=^U:le=^H:nd=^\:se=^Z2:so=^Z3:\
-       :up=^_:
-# (lisa: this had forms-drawing capabilities
-#      :GV=`:GH=a:G1=c:G2=f:G3=e:G4=d:GU=u:GD=s:GC=b:GL=v:GR=t:
-# I renamed GS/GE/CO/CF, mapped ":pt:" to default tabs -- esr)
-lisa|apple lisa console display, black on white:\
-       :am:bs:eo:ms:pt:\
-       :co#88:li#32:\
-       :ae=\E[10m:al=\E[L:as=\E[11m:cd=\E[J:ce=\E[K:cl=^L:\
-       :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:\
-       :ic=\E[@:im=:is=\E>\E[0m\014:kb=^H:kd=\E[B:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:\
-       :up=\E[A:us=\E[4m:vi=\E[5h:vs=\E[5l:
-liswb|apple lisa console display, white on black:\
-       :is=\E>\E[0;7m\014:se=\E[0;7m:so=\E[0m:ue=\E[0;7m:\
-       :us=\E[4m:tc=lisa:
-mac|macintosh|Macintosh with MacTerminal:\
-       :xn:\
-       :dN#30:\
-       :al=20\E[L:dc=7\E[P:dl=20\E[M:ei=:ic=9\E[@:im=:ip=7:tc=vt100:
-
-#### Radio Shack/Tandy
-#
-
-# (coco3: This had "ta" used incorrectly as a boolean and bl given as "bl#7".
-# I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr)
-# From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90
-coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II:\
-       :am:bs:\
-       :co#80:it#8:li#24:\
-       :al=^_0:bl=^G:cd=^K:ce=^D:cl=5*\014:cm=2\002%r%+ %+ :\
-       :dl=^_1:do=^J:ho=^A:kd=^J:kl=^H:kr=^I:ku=^L:mb=^_":\
-       :md=\E\072^A:me=\037!\E\072\200:mr=^_ :nd=^F:se=^_!:\
-       :so=^_ :ue=^_#:up=^I:us=^_":ve=^E!:vi=^E :
-trs80|trs-80|radio shack trs-80 Model I:\
-       :am:bs:\
-       :co#64:li#16:\
-       :bl=^G:cr=^M:do=^J:le=^H:sf=^J:
-# (trs2: mapped ":pt:" to default tabs; removed obsolete ":nl=^_:" -- esr)
-trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M:\
-       :am:bs:ms:pt:\
-       :co#80:li#24:\
-       :al=^D:bl=^G:cd=^B:ce=^A:cl=^L:cm=\EY%+ %+ :cr=^M:\
-       :dl=^K:do=^_:ho=^F:kb=^H:kd=^_:kl=^\:kr=^]:ku=^^:\
-       :nd=^]:se=^O:sf=^J:so=^N:up=^^:
-# From: Kevin Braunsdorf <ksb@mentor.cc.purdue.edu>
-# (This had unknown capabilities
-#      :GV=s:GH=u:GU=e:GD=c:G1=`:G2=_:G3=b:G4=a:\
-#      :BN=\E[?33h:BF=\E[?33l:UC=\E[_ q:BC=\E[\177 q:\
-#      :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@:
-# I renamed GS/GE,also deleted the unnecessary ":kn#2:", ":sg#0:"
-# and mapped ":pt:" to default tabs -- esr)
-trs16|trs-80 model 16 console:\
-       :am:bs:pt:\
-       :co#80:li#24:sg#0:\
-       :ae=\ERg:al=\EL:as=\ERG:bl=^G:cd=\EJ:ce=\EK:cl=^L:\
-       :cm=\EY%+ %+ :cr=^M:dc=\EQ:dl=\EM:do=\EB:ei=:ho=\EH:\
-       :ic=\EP:im=:k0=^A:k1=^B:k2=^D:k3=^L:k4=^U:k5=^P:\
-       :k6=^N:k7=^S:kb=^H:kd=\EB:kh=^W:kl=\ED:kr=\EC:ku=\EA:\
-       :l0=f1:l1=f2:l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:\
-       :le=^H:nd=\EC:pf=\E]+:po=\E]=:se=\ER@:sf=^J:so=\ERD:\
-       :ta=^I:up=\EA:ve=\ERC:vi=\ERc:
-# From: Suk Lee <..!{decvax,linus,allegra,ihnp4}!utcsrgv!spoo>
-# (civis/cnorm added from SCO description)
-trs100|Radio Shack Model 100:\
-       :am:bs:xt:\
-       :co#40:li#8:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :\
-       :cr=^M:dl=\EM:do=^J:ho=\EH:kb=^H:kd=^_:kl=^]:kr=^\:\
-       :ku=^^:le=^H:nd=\EC:se=\Eq:sf=^J:so=\Ep:up=\EA:\
-       :ve=\EP:vi=\EQ:
-trs200|Tandy 200:\
-       :am:xt:\
-       :co#40:li#16:\
-       :al=\EL:bl=^G:cd=^L:ce=\EK:cl=\EE:cm=\EY%+ %+ :cr=^M:\
-       :dl=\EM:do=^_:kd=^_:kl=^]:kr=^\:ku=^^:le=^H:nd=^\:\
-       :se=\Eq:sf=^J:so=\Ep:up=\EA:
-trs600|Tandy Model 600:\
-       :am:\
-       :co#80:li#15:\
-       :bl=^G:cl=\EH\EE:cm=\EY%+ 040%+ :cr=^M:do=\EB:kd=\EB:\
-       :kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:sf=^J:ta=^I:\
-       :up=\EA:
-
-#### Atari ST
-#
-
-# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
-# (atari: mapped ":pt:" to default tabs -- esr)
-atari|atari st:\
-       :am:bs:pt:\
-       :co#80:li#25:\
-       :al=\EL:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :dl=\EM:\
-       :do=\EB:kd=\EB:kl=\ED:kr=\EC:ku=\EA:nd=\EC:se=\Eq:\
-       :so=\Ep:sr=\EI:up=\EA:
-# UniTerm terminal program for the Atari ST:  49-line VT220 emulation mode
-# From: Paul M. Aoki <aoki@ucbvax.berkeley.edu>
-uniterm|uniterm49|UniTerm VT220 emulator, 49 lines:\
-       :li#49:\
-       :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H:tc=vt220:
-
-#### Commodore Business Machines
-#
-# Formerly located in West Chester, PA; went spectacularly bust in 1994
-# after years of shaky engineering and egregious mismanagement.  Made one
-# really nice machine (the Amiga) and boatloads of nasty ones (PET, C-64,
-# C-128, VIC-20).  The C-64 is said to have been the most popular machine
-# ever (most units sold); they can still be found gathering dust in closets
-# everywhere.
-#
-
-# From: Kent Polk <kent@swrinde.nde.swri.edu>, 30 May 90
-# Added a few more entries, converted caret-type control sequence (^x) entries
-# to '\0xx' entries since a couple of people mentioned losing '^x' sequences.
-#
-# :as:, :ae:                   Support for alternate character sets.
-# :ve=\E[\040p:vi=\E[\060\040p:        cursor visible/invisible.
-# :xn:  vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept)
-#     This one appears to fix a problem I always had with a line ending
-#     at 'width+1' (I think) followed by a blank line in vi. The blank
-#     line tended to disappear and reappear depending on how the screen
-#     was refreshed. Note that this is probably needed only if you use
-#     something like a Dnet Fterm with the window sized to some peculiar
-#     dimension larger than 80 columns.
-# :k0=\E9~:    map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;'
-# (amiga: removed obsolete ":kn#10:" -- esr)
-amiga|Amiga ANSI:\
-       :am:bs:bw:xn:\
-       :co#80:li#24:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
-       :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:\
-       :ei=:ho=\E[H:ic=\E[@:im=:is=\E[20l:k0=\E9~:k1=\E0~:\
-       :k2=\E1~:k3=\E2~:k4=\E3~:k5=\E4~:k6=\E5~:k7=\E6~:\
-       :k8=\E7~:k9=\E8~:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\
-       :le=\E[D:mb=\E[7;2m:md=\E[1m:me=\E[0m:mh=\E[2m:\
-       :mk=\E[8m:mr=\E[7m:nd=\E[C:rs=\Ec:se=\E[0m:sf=\E[S:\
-       :so=\E[7m:sr=\E[T:ue=\E[0m:up=\E[A:us=\E[4m:vb=^G:\
-       :ve=\E[ p:vi=\E[0 p:
-
-# The legendary home of B1FF...
-vic20|vic|VIC-20 Personal Computer:\
-       :am:\
-       :co#22:li#20:\
-       :bl=^G:cl=^K^L:cr=^M:do=^J:ho=^L:nd=^\:sf=^J:up=^^:
-
-#### CompuColor
-#
-# These were consoles for a line of Z80-based micros dating from around 1977.
-#
-
-# These compucolors appear similar, but they at least have different
-# sized screens.  I don't know what's going on here.
-# (compucolor: removed obsolete ":bc=^Z:" -- esr)
-compucolor|isc8001|intecolor:\
-       :am:\
-       :co#80:li#47:\
-       :al=\EU:bl=^G:cl=\014:cr=\r:dl=\EV\034:do=\n:\
-       :ei=\022\EK:im=\023\EQ:kd=^J:kh=^H:kl=^Z:kr=^Y:ku=^\:\
-       :le=\032:nd=\031:sf=\n:ue=\022:up=\034:us=\021:
-# (compucolor2: mapped ":pt:" to default tabs,
-# removed obsolete ":bc=^Z:" -- esr)
-compucolor2|compucolorII:\
-       :am:pt:\
-       :co#64:li#32:\
-       :bl=^G:cl=^L:cm=\003%r%.%.:cr=^M:do=^J:ho=^H:le=^Z:\
-       :nd=^Y:sf=^J:ta=^I:up=^\:
-
-#### Exidy Sorcerer
-#
-
-# (exidy: mapped ":pt:" to default tabs -- esr)
-exidy|exidy2500|exidy sorcerer as dm2500:\
-       :am:\
-       :co#64:li#30:\
-       :al=^P^J^X:bl=^G:cd=^X:ce=^W:cl=^^:\
-       :..cm=\014%p2%'`'%^%c%p1%'`'%^%c:cr=^M:dc=^H:\
-       :dl=^P^Z^X:dm=^P:do=^J:ei=^X:ho=^B:ic=^\:im=^P:le=^H:\
-       :nd=^\:se=^X:sf=^J:so=^N:ta=^I:up=^Z:
-ex3000:\
-       :co#80:li#24:\
-       :bl=^G:cr=^M:do=^J:ho=^Q:sf=^J:
-# This came from the comp ctr who got it from some user.  Smart indeed!
-# (sexidy: looks like an Exidy Sorcerer in some bizarre emulation mode;
-# removed obsolete ":ma=^x^J:"; removed obsolete ":bc=^A:"; removed 
-# incorrect (and overridden) ":le=^H:" -- esr)
-sexidy|exidy smart:\
-       :bs:\
-       :co#64:li#24:\
-       :bl=^G:cl=^L:cr=^M:do=^J:ho=^Q:kd=^S:le=^A:nd=^S:\
-       :sf=^J:up=^W:
-
-#### Osborne
-#
-# Thu Jul  7 03:55:16 1983
-#      
-# As an aside, be careful; it may sound like an anomaly on the 
-# Osborne, but with the 80-column upgrade, it's too easy to 
-# enter lines >80 columns!
-#      
-# I've already had several comments...
-# The Osborne-1 with the 80-col option is capable of being 
-# 52,80, or 104 characters wide; default to 80 for compatibility 
-# with most systems.
-#      
-# The tab is destructive on the Ozzie; make sure to 'stty -tabs'.
-ozzie|osborne|osborne1|osborne 1:\
-       :ms:ul:xt:\
-       :co#104:li#24:\
-       :al=\EE:bl=^G:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:dc=\EW:\
-       :dl=\ER:do=^J:ei=:ic=\EQ:im=:kd=^J:kl=^H:kr=^L:ku=^K:\
-       :le=^H:nd=^L:se=\E(:sf=^J:so=\E):ue=\Em:up=^K:us=\El:
-
-#### Console types for UNIX clones
-#
-
-# According to the Coherent 2.3 manual, the PC console is similar
-# to a z19. The differences seem to be (1) 25 lines, (2) no status
-# line, (3) standout is broken, (4) ins/del line is broken, (5)
-# has blinking and bold.
-pc-coherent|pcz19|coherent|IBM PC console running Coherent:\
-       :am:mi:\
-       :co#80:it#8:li#25:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :cr=^M:\
-       :dc=\EN:do=\EB:ei=\EO:ho=\EH:im=\E@:kb=^H:kd=\EB:\
-       :kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:se=\Eq:\
-       :sf=^J:so=\Ep:sr=\EI:ta=^I:up=\EA:
-
-# According to the Venix 1.1 manual, the PC console is similar
-# to a DEC vt52.  Differences seem to be (1) arrow keys send 
-# different strings, (2) enhanced standout, (3) added insert/delete line.
-# Note in particular that it doesn't have automatic margins (am).
-# There are other keys (f1-f10, pgup, pgdn, backtab, insch, delch)
-# not described here.
-pc-venix|venix|IBM PC console running Venix:\
-       :co#80:it#8:li#25:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\
-       :cr=^M:dl=\EM:do=^J:kb=^H:kd=\EP:kh=\EG:kl=\EK:\
-       :kr=\EM:ku=\EH:le=^H:nd=\EC:sf=^J:sr=\EI:ta=^I:\
-       :up=\EA:
-
-#### Miscellaneous microcomputer consoles
-#
-# If you know anything more about any of these, please tell me.
-
-# I don't know which, if either, of these sols to believe.
-# ^S is an arrow key!  Boy is this guy in for a surprise...
-sol|sol1|sol terminal computer:\
-       :am:\
-       :co#64:li#16:\
-       :bl=^G:cl=^K:cm=\E\021%.\E\022%.:cr=^M:do=^J:ho=^N:\
-       :kd=^Z:kl=^A:kr=^S:ku=^W:le=^H:nd=^S:sf=^J:up=^W:
-sol2|sol terminal computer:\
-       :am:mi:xn:\
-       :co#64:li#16:\
-       :al=20\EL:bl=^G:cd=20\EJ:ce=\EK:cl=20\EE:\
-       :cm=\EY%+ %+ :cr=^M:dc=\EN:dl=20\EM:do=^J:ei=\EO:\
-       :ho=\EH:im=\E@:kd=\ED:kh=\EH:kl=\EL:kr=\ER:ku=\EU:\
-       :le=^H:nd=\EC:sf=\n:ta=^I:up=\EA:ve=\EX:vs=^N^Lv:
-# basis from Peter Harrison, Computer Graphics Lab, San Francisco
-#   ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
-# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr)
-basis|BASIS108 computer with terminal translation table active:\
-       :cd=\EY:ce=\ET:cl=300\E*:do=5000\n:kb=^H:kd=^J:kl=^H:\
-       :kr=^L:ku=^K:se=\E):so=\E(:tc=adm3a:
-# luna's BMC terminal emulator
-luna|luna68k|LUNA68K Bitmap console:\
-       :co#88:li#46:\
-       :tc=ansi-mini:
-microkit|mkt|microkit terminal computer:\
-       :am:mi:xn:\
-       :co#40:li#23:\
-       :al=\El:bl=^G:cd=\Ej:ce=\Ek:cl=\Ee:cm=\Ey%+ %+ :\
-       :cr=^M:dc=\En:dl=\Em:do=^J:ei=\Eo:ho=\Eh:im=\E@:\
-       :kd=\Ed:kh=\Eh:kl=\El:kr=\Er:ku=\Eu:le=^H:nd=\Ec:\
-       :sf=^J:ta=^I:up=\Ea:ve=\Ex:vs=\016\014zv:
-megatek|pegasus workstation terminal emulator:\
-       :am:os:\
-       :co#83:li#60:\
-       :
-# The Xerox 820 was an early Z80 micro that went nowhere (I think)
-xerox820|x820|Xerox 820:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cd=^Q:ce=^X:cl=1^Z:cm=\E=%+ %+ :cr=^M:do=^J:\
-       :ho=^^:le=^H:nd=^L:sf=^J:up=^K:
-
-#### Videotex and teletext
-#
-
-# standard-issue France Telecom minitel terminal (made by Philips)
-# (m2-nam: had unknown ":zd=\E[1m:zb=\E[5m:zc=lkmjqxtuwvn:";
-# also deleted unnecessary ":ug#0:sg#0:"; mapped ":pt:" to "" -- esr)
-m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel:\
-       :am@:bs:pt:xn:\
-       :co#80:it#8:li#24:\
-       :ae=\E(B:al=\E[L:as=\E(0:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
-       :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:ei=\E[4l:ho=\E[H:\
-       :im=\E[4h:ip=7:is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:\
-       :k3=\EOR:k4=\EOS:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:\
-       :ku=\E[A:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:sr=\EM:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-# From: Joel Rubin <jmrubin@coral.berkeley.edu>
-# This is a preliminary TERMCAP for VIDTEX, a terminal program sold by 
-# Compuserve.  Line and column numbers are computer-dependent (I have a
-# Commodore '64); you should use the meta-B option to shut off clean-breaking
-# of lines.  No key codes included since some of them are programmable and
-# most are machine-specific.  Works on vi if you don't use clean-breaking.
-# Very similar to the IBM 3101 termcap.  Escape-D used for backspace because
-# control-H is destructive backspace.  There seem to be a few weirdnesses
-# (especially at the beginning of a wrapped line), and the cursor does not,
-# unfortunately, flash.
-# (vid: mapped ":pt:" to default tabs; changed :bc: to :le: -- esr)
-vid|vidtex|Compuserve vidtex program:\
-       :am:pt:\
-       :co#40:li#25:\
-       :cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :ho=\EH:le=\ED:\
-       :nd=\EC:up=\EA:
-# This (inherited from the Emacs termcap.dat file) is probably *way* obsolete!
-rsvidtx|Radio Shack VIDEOTEX:\
-       :co#32:li#16:\
-       :cd=\EJ:ce=\EK:cl=\EH\EJ:..cm=\EY%+ %+ :cr=^M:do=^J:\
-       :kb=^H:kd=^J:kl=^H:nd=\EC:nw=^M^J:sf=^J:ta=^I:up=\EA:
-
-######## OBSOLETE VDT TYPES
-#
-# These terminals are *long* dead -- these entries are retained for
-# historical interest only.
-
-#### AED
-#
-# Advanced Electronic Devices made its name manufacturing super-expensive
-# vector-graphics displays and frame buffers in the late 1970s.  They used
-# to be in Sunnyvale CA 94086 on Pastoria Avenue.  They're long gone now.
-#
-
-# From: Giles Billingsley <gilesb%ucbcad@berkeley.edu>
-# rewritten 8/82 for newer AEDs and better operation of vi, etc.
-# (bel/cr/cub1/cud1/ind added from SCO entry, which doesn't have db or the
-# humongous is2, thus they are commented out here -- esr)
-aed|AED|aed512|AED512|aed 512:\
-       :bs:\
-       :co#64:li#40:\
-       :bl=^G:cl=^L:cr=^M:do=^J:le=^H:nd=\Ei0800\001:\
-       :se=\E[00C80\001:\
-       :sf=\E;1100\072004=000200??;1300'\200\001\n\E\072004=0002??00;1200\001\n:\
-       :so=\E\07200>8000140[80C00\001:\
-       :te=\E\07200>8000100{804<0??00001000L80\072004=000200??\001:\
-       :ti=\E\07200>8000140{<04<0??00001010L<0\072004=0002??00\001:\
-       :uc=\Ei???>l0800i0102\001:ue=\E\07200>8000100\001:\
-       :up=^K:us=\E\07200>8000140\001:\
-       :vb=\EK0001??0000K0001202080\001:\
-       :ve=\E\072004=000200??\001:
-aed-ucb|AED-UCB|aed512-ucb|AED512-UCB|aed 512 w/o UCB ROM:\
-       :bs:db:\
-       :co#64:li#40:\
-       :cl=^L:if=/usr/share/tabset/aed512:nd=\Ei0800\001:\
-       :se=\E[00C80\001:so=\E\07200>8000140[80C00\001:\
-       :te=\E\07200>8000100{804<0??00001000L80\072004=000200??\001:\
-       :ti=\E\07200>8000140{<04<0??00001010L<0\072004=0002??00\001:\
-       :uc=\Ei???>l0800i0102\001:ue=\E\07200>8000100\001:\
-       :up=^K:us=\E\07200>8000140\001:\
-       :vb=\EK0001??0000K0001202080\001:\
-       :ve=\E\E\E\E\E\E\E\072004=000200??\001:
-
-#### Amtek Business Machines
-#
-
-# (abm80: early versions of this entry apparently had ":se=\E^_:so=\E^Y",
-# but these caps were commented out in 8.3; also, removed overridden
-# ":do=^J:" -- esr)
-abm80|amtek business machines 80:\
-       :am:bs:bw:\
-       :co#80:li#24:\
-       :al=\E^Z:bt=^T:cd=\E^X:ce=\E^O:cl=\E^\:\
-       :cm=\E\021%r%+ %+ :dl=\E^S:do=\E^K:ho=\E^R:le=^H:\
-       :nd=^P:up=\E^L:
-
-#### Bell Labs blit terminals
-#
-# These were AT&T's official entries.
-#
-
-blit|jerq|blit running teletype rom:\
-       :am:eo:ul:xo:\
-       :co#87:it#8:li#72:\
-       :AL=\EF%+ :DC=\Ee%+ :DL=\EE%+ :IC=\Ef%+ :al=\EF!:\
-       :bl=^G:ce=\EK:cl=^L:cm=\EY%r%+ %+ :cr=^M:dc=\Ee!:\
-       :dl=\EE!:do=^J:ei=:ic=\Ef!:im=:k1=\Ex:k2=\Ey:k3=\Ez:\
-       :kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=\ED:nd=\EC:\
-       :sf=^J:ta=^I:up=\EA:
-
-cbblit|fixterm|blit running columbus code:\
-       :co#88:\
-       :cd=\EJ:ei=\ER:ic@:im=\EQ:pO=\EP%03:pf=^T:po=^R:\
-       :se=\EV!:so=\EU!:ue=\EV":us=\EU":vb=\E^G:tc=blit:
-
-oblit|ojerq|first version of blit rom:\
-       :am:da:db:eo:mi:ul:xo:\
-       :co#88:it#8:li#72:\
-       :AL=\Ef%+ :DL=\Ee%+ :al=\EF:bl=^G:cd=\EJ:ce=\EK:\
-       :cl=^L:cm=\EY%r%+ %+ :cr=^M:dc=\EO:dl=\EE:do=^J:\
-       :ei=\ER:im=\EQ:kb=^H:le=\ED:nd=\EC:sf=^J:ta=^I:\
-       :up=\EA:vb=\E^G:
-
-daleblit|daleterm|blit running Dale DeJager's ROM:\
-       :da@:db@:\
-       :kd=\EB:kl=\ED:kr=\EC:ku=\EA:se=\EV!:so=\EU!:ue=\EV":\
-       :us=\EU":tc=oblit:
-
-#### Bolt, Beranek & Newman (bbn)
-#
-# The BitGraph was a product of the now-defunct BBN Computer Corporation.
-# The parent company, best known as the architects of the Internet, is
-# still around.
-#
-
-# Entries for the BitGraph terminals.  The problem 
-# with scrolling in vi can only be fixed by getting BBN to put 
-# smarter scroll logic in the terminal or changing vi or padding 
-# scrolls with about 500 ms delay.
-#      
-# I always thought the problem was related to the terminal 
-# counting newlines in its input buffer before scrolling and 
-# then moving the screen that much. Then vi comes along and 
-# paints lines in on the bottom line of the screen, so you get 
-# this big white gap.
-
-bitgraph|bbn bitgraph:\
-       :tc=bg3.10rv:
-bg3.10rv|bgrv|bbn bitgraph (reverse video):\
-       :tc=bg2.0rv:
-bg3.10nv|bgnv|bbn bitgraph (normal video):\
-       :tc=bg2.0nv:
-bg3.10|bgn|bbn bitgraph (no init):\
-       :tc=bg2.0:
-bg2.0rv|bbn bitgraph (reverse video):\
-       :is=\E>\E[?5h\E[?7h:vb=\E[?5l\E[?5h:tc=bg2.0:
-bg2.0nv|bbn bitgraph (normal video):\
-       :is=\E>\E[?5l\E[?7h:vb=\E[?5h\E[?5l:tc=bg2.0:
-bg2.0|bbn bitgraph (no init):\
-       :xn:\
-       :co#85:li#64:\
-       :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
-       :cm=%i\E[%d;%dH:cr=^M:cs=\E[%i%d;%dr:dl=\E[M:do=\E[B:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kd=\E[B:ke=\E>:\
-       :kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:l1=PF1:l2=PF2:l3=PF3:\
-       :l4=PF4:le=^H:nd=\E[C:rc=\E8:sc=\E7:se=\E[0m:sf=\n:\
-       :so=\E[7m:ta=^I:up=\E[A:
-bg1.25rv|bbn bitgraph (reverse video):\
-       :is=\E>\E[?5h\E[?7h:vb=\E[?5l\E[?5h:tc=bg1.25:
-bg1.25nv|bbn bitgraph (normal video):\
-       :is=\E>\E[?5l\E[?7h:vb=\E[?5h\E[?5l:tc=bg1.25:
-bg1.25|bbn bitgraph:\
-       :co#85:li#64:\
-       :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
-       :cm=%i\E[%d;%dH:cr=^M:dl=\E[M:do=\E[B:k1=\EP:k2=\EQ:\
-       :k3=\ER:k4=\ES:kd=\EB:ke=\E>:kl=\ED:kr=\EC:ks=\E=:\
-       :ku=\EA:l1=PF1:l2=PF2:l3=PF3:l4=PF4:le=^H:\
-       :ll=\E[64;1H:nd=\E[C:se=\E[0m:sf=\n:so=\E[7m:ta=^I:\
-       :up=\E[A:
-
-#### Chromatics
-#
-
-# cg7900: Following is revised version. As I mentioned, I recompiled 
-# curses in order to accomadate the large amount of definition.
-# I have put the long strings in ti/te. Ti sets up a window 
-# that is smaller than the screen, and puts up a warning message 
-# outside the window. Te erases the warning message, puts the 
-# window back to be the whole screen, and puts the cursor at just
-# below the small window. A defined vs and ve to really turn 
-# the cursor on and off, but I have taken this out since I don't 
-# like the cursor being turned off when vi exits.   
-cg7900|chromatics|chromatics 7900:\
-       :am:\
-       :co#80:li#40:\
-       :al=^A>2:bl=^G:cd=^Al:ce=^A`:cl=^L:\
-       :cm=\001M%r%d\\\054%d\\\054:cr=^M:dc=^A<1:dl=^A<2:\
-       :do=^J:ei=:ho=^\:ic=^A>1:im=:le=^H:ll=^A|:nd=^]:\
-       :se=\001C1\\\054\001c2\\\054:sf=^J:\
-       :so=\001C4\\\054\001c7\\\054:\
-       :te=\001W0\\\05440\\\05485\\\05448\\\054\014\001W0\\\0540\\\05485\\\05448\\\054\001M0\\\05440\\\054:\
-       :ti=\001P0\001O1\001R1\001C4\\\054\001c0\\\054\014\001M0\\\05442\\\054WARNING DOUBLE ENTER ESCAPE and \025\001C1\\\054\001c2\\\054\001W0\\\0540\\\05479\\\05439\\\054:\
-       :uc=\001\001_\001\200:up=^K:
-
-#### Computer Automation
-#
-
-ca22851|computer automation 22851:\
-       :am:\
-       :co#80:li#24:\
-       :bl=^G:cd=^\:ce=^]:cl=\014:cm=\002%i%.%.:cr=^M:do=^J:\
-       :ho=^^:kd=^W:kh=^^:kl=^U:ku=^V:le=^U:nd=^I:sf=^J:\
-       :up=^V:
-
-#### Cybernex
-#
-
-# This entry has correct padding and the undocumented "ri" capability
-cyb83|xl83|cybernex xl-83:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cd=\020:ce=\017:cl=\014:cm=\027%+ %+ :cr=^M:\
-       :do=^J:ho=^K:kd=^J:kl=^H:kr=^I:ku=^N:le=^H:nd=^I:\
-       :sf=^J:sr=^N:up=^N:
-# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr)
-cyb110|mdl110|cybernex mdl-110:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=\016A\016\035:bl=^G:cd=\016@\026:ce=\016@\026:\
-       :cl=\030:cm=\020%+ %+ :cr=^M:dc=\016A\036:\
-       :dl=\016A\016\036:do=^J:ei=:ho=^Y:ic=\016A\035:im=:\
-       :le=^H:nd=^U:se=^NG:sf=^J:so=^NF:ta=\011:up=^Z:
-
-#### Datapoint
-#
-# Datapoint is gone.  They used to be headquartered in Texas.
-# They created ARCnet, an Ethernet competitor that flourished for a while
-# in the early 1980s before 3COM got wise and cut its prices.  The service
-# side of Datapoint still lives (1995) in the form of Intelogic Trace.
-#
-
-dp3360|datapoint|datapoint 3360:\
-       :am:bs:\
-       :co#82:li#25:\
-       :bl=^G:cd=^_:ce=^^:cl=^]^_:cr=^M:do=^J:ho=^]:le=^H:\
-       :nd=^X:sf=^J:up=^Z:
-
-#### DEC terminals (Obsolete types: DECwriter and vt40/42/50)
-#
-# These entries are DEC's official terminfos for its older terminals.
-# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
-# Engineering for more information.  Updated terminfos and termcaps 
-# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
-#
-
-gt40|dec gt40:\
-       :os:\
-       :co#72:li#30:\
-       :bl=^G:cr=^M:do=^J:le=^H:
-gt42|dec gt42:\
-       :os:\
-       :co#72:li#40:\
-       :bl=^G:cr=^M:do=^J:le=^H:
-vt50|dec vt50:\
-       :co#80:li#12:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cr=^M:do=^J:le=^H:\
-       :nd=\EC:sf=^J:ta=^I:up=\EA:
-vt50h|dec vt50h:\
-       :co#80:li#12:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:\
-       :do=^J:le=^H:nd=\EC:sf=^J:sr=\EI:ta=^I:up=\EA:
-vt52|dec vt52:\
-       :co#80:it#8:li#24:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:\
-       :do=^J:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:\
-       :nd=\EC:sf=^J:sr=\EI:ta=^I:up=\EA:
-vt61|vt-61|vt61.5:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=\r:\
-       :do=^J:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\
-       :sf=\n:sr=\EI:ta=^I:up=\EA:
-
-# The gigi does standout with red!
-gigi|vk100|dec gigi graphics terminal:\
-       :am:xn:\
-       :co#84:li#24:\
-       :DO=\E[%dB:LE=\E[%r%dD:RI=\E[%dC:UP=\E[%dA:bl=^G:\
-       :cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
-       :do=^J:is=\E>\E[?3l\E[?4l\E[?5l\E[?20l\E[?7h\E[?8h:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kd=\EOB:\
-       :ke=\E[?1l\E>:kh=\E[H:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
-       :ku=\EOA:le=^H:nd=\E[C:se=\E[m:sf=^J:so=\E[7;31m:\
-       :sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
-
-# DEC PRO-350 console (VT220-style).  The 350 was DEC's attempt to produce
-# a PC differentiated from the IBM clones.  It was a total, ludicrous,
-# grossly-overpriced failure (among other things, DEC's OS didn't include
-# a format program, so you had to buy pre-formatted floppies from DEC at
-# a hefty premium!).
-# (pro350: mapped ":pt:" to default tabs -- esr)
-pro350|decpro|dec pro console:\
-       :bs:pt:\
-       :co#80:li#24:\
-       :ae=\EG:as=\EF:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\
-       :do=\EB:ho=\EH:k0=\EE:k1=\EF:k2=\EG:k3=\EH:k4=\EI:\
-       :k5=\EJ:k6=\Ei:k7=\Ej:kd=\EB:kh=\EH:kl=\ED:kr=\EC:\
-       :ku=\EA:nd=\EC:se=\E^N:so=\E^H:sr=\EI:ue=\E^C:up=\EA:\
-       :us=\E^D:
-
-dw1|decwriter I:\
-       :hc:os:\
-       :co#72:\
-       :bl=^G:cr=^M:do=^J:le=^H:sf=^J:
-dw2|decwriter|dw|decwriter II:\
-       :hc:os:\
-       :co#132:\
-       :bl=^G:cr=^M:do=^J:kb=^H:le=^H:sf=^J:
-
-# \E(B         Use U.S. character set (otherwise # => british pound !)
-# \E[20l       Disable "linefeed newline" mode (else puts \r after \n,\f,\v)
-# \E[w         10 char/in pitch
-# \E[1;132     full width horizontal margins
-# \E[2g                clear all tab stops
-# \E[z         6 lines/in
-# \E[66t       66 lines/page (for \f)
-# \E[1;66r     full vertical page can be printed
-# \E[4g                clear vertical tab stops
-# \E>          disable alternate keypad mode (so it transmits numbers!)
-# \E[%i%du     set tab stop at column %d (origin == 1)
-#              (Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is 
-#              a tab stop)
-#
-#       The dw3 does standout with wide characters.
-#
-dw3|la120|decwriter III:\
-       :hc:os:\
-       :co#132:\
-       :bl=^G:cr=^M:do=^J:\
-       :i1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>:\
-       :is=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\r:\
-       :kb=^H:le=^H:se=\E[w:sf=^J:so=\E[6w:ta=^I:
-dw4|decwriter IV:\
-       :am:hc:os:\
-       :co#132:\
-       :bl=^G:cr=^M:do=^J:is=\Ec:k0=\EOP:k1=\EOQ:k2=\EOR:\
-       :k3=\EOS:kb=^H:le=^H:sf=^J:ta=^I:
-
-#### Delta Data (dd)
-#
-
-# Untested. The cup sequence is hairy enough that it probably needs work.
-# The idea is ctrl(O), dd(row), dd(col), where dd(x) is x - 2*(x%16) + '9'.
-# There are BSD-derived termcap entries floating around for this puppy
-# that are *certainly* wrong.
-delta|dd5000|delta data 5000:\
-       :am:\
-       :co#80:li#27:\
-       :bl=^G:ce=^NU:cl=^NR:cm=\017%+^P%+^P:dc=^NV:do=^J:\
-       :ho=^NQ:le=^H:nd=^Y:sf=^J:up=^Z:
-
-#### Digital Data Research (ddr)
-#
-
-# (ddr: mapped ":pt:" to default tabs -- esr)
-ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator:\
-       :am:bs:pt:xn:\
-       :co#80:li#24:vt#3:\
-       :cd=50\E[J:ce=3\E[K:cl=50\E[;H\E[2J:cm=5\E[%i%d;%dH:\
-       :cs=\E[%i%d;%dr:do=^J:ho=\E[H:is=\E[1;24r\E[24;1H:\
-       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:kd=\E[B:\
-       :ke=\E[?1l\E>:kl=\E[D:kr=\E[C:ks=\E[?1h\E=:ku=\E[A:\
-       :le=^H:mb=2\E[5m:md=2\E[1m:me=2\E[m:mr=2\E[7m:\
-       :nd=2\E[C:rc=\E8:rf=/usr/share/lib/tabset/vt100:\
-       :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:sc=\E7:se=\E[m:\
-       :sf=5\ED:so=\E[7m:sr=5\EM:ue=2\E[m:up=2\E[A:\
-       :us=2\E[4m:
-
-#### General Electric (ge)
-#
-
-terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200:\
-       :hc:os:\
-       :co#120:\
-       :bl=^G:cr=^M:do=^J:sf=^J:
-
-#### Heathkit/Zenith
-#
-
-h19-a|heath-ansi|heathkit-a|heathkit h19 ansi mode:\
-       :am:mi:ms:\
-       :co#80:it#8:li#24:\
-       :ae=\E[11m:al=\E[1L:as=\E[10m:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[2J:cm=\E[%i%d;%dH:cr=^M:dc=\E[1P:dl=\E[1M:\
-       :do=\E[1B:ei=\E[4l:ho=\E[H:im=\E[4h:\
-       :is=\E<\E[>1;2;3;4;5;6;7;8;9l\E[0m\E[11m\E[?7h:\
-       :k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:k6=\EOP:\
-       :k7=\EOQ:k8=\EOR:kb=^H:kd=\E[1B:kh=\E[H:kl=\E[1D:\
-       :kr=\E[1C:ku=\E[1A:l6=blue:l7=red:l8=white:le=^H:\
-       :nd=\E[1C:se=\E[0m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
-       :up=\E[1A:ve=\E[>4l:vs=\E[>4h:
-h19-bs|heathkit w/keypad shifted:\
-       :ke=\Eu:ks=\Et:tc=h19-b:
-h19-smul|heathkit w/keypad shifted/underscore cursor:\
-       :ke=\Eu:ks=\Et:tc=h19-u:
-h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19:\
-       :am:es:hs:mi:ms:\
-       :co#80:it#8:li#24:\
-       :ae=\EG:al=\EL:as=\EF:bl=^G:cd=\EJ:ce=\EK:cl=\EE:\
-       :cm=\EY%+ %+ :cr=^M:dc=\EN:dl=\EM:do=\EB:ei=\EO:\
-       :fs=\Ek\Ey5:ho=\EH:im=\E@:k1=\ES:k2=\ET:k3=\EU:\
-       :k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:kb=^H:kd=\EB:\
-       :kh=\EH:kl=\ED:kr=\EC:ku=\EA:l6=blue:l7=red:l8=white:\
-       :le=^H:nd=\EC:se=\Eq:sf=^J:so=\Ep:sr=\EI:ta=^I:\
-       :ts=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo:up=\EA:ve=\Ey4:\
-       :vs=\Ex4:
-h19-u|heathkit with underscore cursor:\
-       :ve@:vs@:tc=h19-b:
-alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19:\
-       :li#60:\
-       :al=\EL:dl=\EM:tc=h19:
-
-# The major problem with the Z29 is that it requires more 
-# padding than the Z19. Once again, here's a little termcap 
-# entry for it that will do the trick. 
-# 
-# The problem declaring an H19 to be synonomous with a Z29 is that
-# it needs more padding. It especially loses if a program attempts
-# to put the Z29 into insert mode and insert text at 9600 baud. It
-# even loses worse if the program attempts to insert tabs at 9600
-# baud. Adding padding to text that is inserted loses because in 
-# order to make the Z29 not die, one must add so much padding that
-# whenever the program tries to use insert mode, the effective 
-# rate is about 110 baud.
-# 
-# What program would want to put the terminal into insert mode 
-# and shove stuff at it at 9600 baud you ask?  
-# 
-# Emacs. Emacs seems to want to do the mathematically optimal 
-# thing in doing a redisplay rather than the practical thing.
-# When it is about to output a line on top of a line that is 
-# already on the screen, instead of just killing to the end of 
-# the line and outputing the new line, it compares the old line 
-# and the new line and if there are any similarities, it 
-# constructs the new line by deleting the text on the old line 
-# on the terminal that is already there and then inserting new
-# text into the line to transform it into the new line that is 
-# to be displayed. The Z29 does not react kindly to this.
-# 
-# But don't cry for too long.... There is a solution. You can make
-# a termcap entry for the Z29 that says the Z29 has no insert mode.
-# Then Emacs cannot use it. "Oh, no, but now inserting into a 
-# line will be really slow", you say. Well there is a sort of a
-# solution to that too. There is an insert character option on 
-# the Z29 that will insert one character. Unfortunately, it 
-# involves putting the terminal into ansi mode, inserting the 
-# character, and changing it back to H19 mode. All this takes 12 
-# characters. Pretty expensive to insert one character, but it 
-# works. Either Emacs doesn't try to use its inserting hack when 
-# it's only given an insert character ability or the Z29 doesn't 
-# require padding with this (the former is probably more likely, 
-# but I haven't checked it out).
-z29|zenith29|z29b|zenith z29b:\
-       :am:ms:\
-       :co#80:li#24:\
-       :ae=\EF:al=\EL:as=\EG:bl=^G:bt=\E-:cd=\EJ:ce=\EK:\
-       :cl=\EE:cm=\EY%+ %+ :cr=^M:dc=\EN:dl=\EM:do=\EB:ei=:\
-       :ho=\EH:ic=\E<\E[1@\E[?2h:im=:is=\E<\E[?2h\Ev:k0=\E~:\
-       :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:\
-       :k8=\ER:k9=\E0I:kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:\
-       :ku=\EA:l0=home:le=^H:nd=\EC:se=\Eq:sf=\n:so=\Ep:\
-       :sr=\EI:ta=^I:ue=\Es0:up=\EA:us=\Es8:ve=\Ey4:vs=\Ex4:
-
-# From: Brad Brahms <Brahms@USC-ECLC>
-z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor:\
-       :ve=\Ey4\Em70:vs=\Ex4\Em71:tc=z100bw:
-# (z100bw: removed obsolete ":kn#10:"; mapped ":pt:" to default tabs -- esr)
-z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc:\
-       :bs:mi:ms:pt:\
-       :co#80:li#24:\
-       :ae=\EG:al=5*\EL:as=\EF:cd=\EJ:ce=\EK:cl=5*\EE:\
-       :cm=1*\EY%+ %+ :dc=1*\EN:dl=5*\EM:do=\EB:ei=\EO:\
-       :ho=\EH:im=\E@:k0=\EJ:k1=\ES:k2=\ET:k3=\EU:k4=\EV:\
-       :k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\EOI:kb=^H:kd=\EB:\
-       :kh=\EH:kl=\ED:kr=\EC:ku=\EA:nd=\EC:se=\Eq:so=\Ep:\
-       :sr=\EI:up=\EA:ve=\Ey4:vs=\Ex4:
-p19:\
-       :al=2*\EL:dl=2*\EM:tc=h19-b:
-# From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
-# (ztx: mapped ":pt:" to default tabs; removed duplicate :sr: -- esr)
-ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10/11:\
-       :am:bs:es:hs:pt:\
-       :co#80:li#24:\
-       :al=\EL:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :dl=\EM:\
-       :do=^J:ds=\Ey1:fs=\Ek\Ey5:ho=\EH:\
-       :is=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>:k0=\ES:\
-       :k1=\EB:k2=\EU:k3=\EV:k4=\EW:k5=\EP:k6=\EQ:k7=\ER:\
-       :kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\
-       :se=\Eq:so=\Es5:sr=\EI:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:\
-       :ue=\Eq:up=\EA:us=\Es2:
-
-#### IMS International (ims)
-#
-# There was a company called IMS International located in Carson City, 
-# Nevada, that flourished from the mid-70s to mid-80s.  They made S-100
-# bus/Z80 hardware and a line of terminals called Ultimas.  
-
-# From: Erik Fair <fair@ucbarpa.berkeley.edu>  Sun Oct 27 07:21:05 1985
-ims950-b|bare ims950 no init string:\
-       :is@:tc=ims950:
-ims950-ns|ims950 w/no standout:\
-       :se@:so@:ue@:us@:tc=ims950:
-# (ims950: removed obsolete ":ko@:" -- esr)
-ims950|ims televideo 950 emulation:\
-       :xn@:\
-       :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:\
-       :kl@:kr@:ku@:vb@:tc=tvi950:
-# (ims950-rv: removed obsolete ":ko@:" -- esr)
-ims950-rv|ims tvi950 rev video:\
-       :xn@:\
-       :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:\
-       :kl@:kr@:ku@:vb@:tc=tvi950-rv:
-# (ims-ansi: mapped ":pt:" to default tabs -- esr)
-ims-ansi|ultima2|ultimaII|IMS Ultima II:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :cd=\E[0J:ce=\E[0K:cl=\E[;H\E[2J:cm=\E[%i%2;%2H:\
-       :do=\ED:if=/usr/share/tabset/vt100:\
-       :is=\E[0m\E[>14l\E[?1;?5;20l\E>\E[1m\r:kd=\E[B:\
-       :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:se=\E[0m\E[1m:\
-       :so=\E[7m:sr=\EM:ue=\E[0m\E[1m:up=\EM:us=\E[4m:
-
-#### Intertec Data Systems
-#
-# I think this company is long dead as of 1995.  They made an early CP/M
-# micro called the "Intertec Superbrain" that was moderately popular,
-# then sank out of sight.
-#
-
-superbrain|intertec superbrain:\
-       :am:bw:\
-       :co#80:li#24:\
-       :bl=^G:cd=\E~k<10*>:ce=\E~K:cl=\014:cm=\EY%+ %+ :\
-       :cr=^M:do=^J:kd=^J:kl=^U:kr=^F:ku=^K:le=^H:nd=^F:\
-       :sf=^J:ta=^I:te=^L:ti=^L:up=^K:
-intertube|intertec|Intertec InterTube:\
-       :am:\
-       :co#80:li#25:\
-       :bl=^G:cl=^L:cm=\EY%+ %+ :cr=^M:do=^J:ho=^A:le=^H:\
-       :nd=^F:se=\E0@:sf=^J:so=\E0P:up=^Z:
-# The intertube 2 has the "full duplex" problem like the tek 4025: if you
-# are typing and a command comes in, the keystrokes you type get interspersed
-# with the command and it messes up
-it2|intertube2|intertec data systems intertube 2:\
-       :am:\
-       :co#80:li#25:\
-       :bl=^G:ce=\EK:ch=\020%+^J:cl=^L:cm=\016%.\020%+^J:\
-       :cr=^M:cv=\013%.:do=^J:ho=^A:le=^H:ll=^K^X\r:nd=^F:\
-       :se=\E0@:sf=^J:so=\E0P:up=^Z:
-
-#### Modgraph
-#
-# These people used to be reachable at:
-#
-#      Modgraph, Inc
-#      1393 Main Street,
-#      Waltham, MA 02154
-#      Vox: (617)-890-5796.
-#
-# However, if you call that number today you'll get an insurance company.
-# I think Modgraph is long gone.
-#
-
-modgraph|mod|modgraph terminal emulating vt100:\
-       :xn@:\
-       :co#80:li#24:\
-       :is=\E^9;0s\E^7;1s\E[3g\E^11;9s\E^11;17s\E^11;25s\E^11;33s\E^11;41s\E^11;49s\E^11;57s\E^11;65s\E^11;73s\E^11;81s\E^11;89s:\
-       :rf@:sr=5\EM\E[K:vs=\E^9;0s\E^7;1s:tc=vt100:
-# (modgraph2: mapped ":pt:" to default tabs -- esr)
-# The GX-1000 manual is dated 1984
-modgraph2|modgraph gx-1000, set to 80x24, keypad not enabled:\
-       :am:bs:da:db:pt:\
-       :co#80:li#24:\
-       :cd=50\EJ:ce=3\EK:cl=50\EH\EJ:cm=5\EY%+ %+ :\
-       :is=\E<\E^5;2s\E^7;1s\E[3g\E^11;9s\E^11;17s\E^11;25s\E^11;33s\E^11;41s\E^11;49s\E^11;57s\E^11;65s\E^11;73s\E^11;81s\E^11;89s\E^12;0s\E^14;2s\E^15;9s\E^25;1s\E^9;1s\E^27;1:\
-       :nd=2\EC:sr=5\EI:up=2\EA:
-
-#### Morrow Designs
-# 
-# This was George Morrow's company.  They started in the late 1970s making
-# S100-bus machines.  They used to be reachable at:
-#
-#        Morrow
-#        600 McCormick St.
-#        San Leandro, CA 94577
-#
-# but they're long gone now (1995).
-#
-
-# The mt70 terminal was shipped with the Morrow MD-3 microcomputer. 
-# Jeff's specimen was dated June 1984.
-# From: Jeff Wieland <wieland@acn.purdue.edu> 24 Feb 1995
-mt70|mt-70|Morrow MD-70; native Morrow mode:\
-       :am:mi:ms:xo:\
-       :co#80:it#8:li#24:\
-       :%1=^AO\r:F1=^A`\r:F2=^Aa\r:F3=^Ab\r:F4=^Ac\r:\
-       :F5=^Ad\r:F6=^Ae\r:F7=^Af\r:F8=^Ag\r:F9=^Ah\r:\
-       :FA=^Ai\r:ac=+z\\\054{.yOi-x`|jGkFlEmDnHtLuKvNwMxIqJ:\
-       :ae=\E%:al=\EE:as=\E$:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
-       :cl=^Z:cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:\
-       :ei=:ho=^^:i1=\E"2\EG0\E]:ic=\EQ:im=:k1=^A@\r:\
-       :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
-       :k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kB=^A^Z\r:\
-       :kC=^An\r:kD=\177:kb=^H:kd=^AK\r:kh=^AN\r:kl=^AL\r:\
-       :kr=^AM\r:ku=^AJ\r:le=^H:me=\EG0:mh=\EG2:mr=\EG4:\
-       :nd=^L:nw=^_:se=\EG0:sf=^J:so=\EG4:ta=^I:\
-       :ti=\E"2\EG0\E]:up=^K:us=\EG1:vb=\EK1\EK0:ve=\E"2:\
-       :vi=\E"0:
-
-#### Netronics
-#
-# The Netronics Smarterm 80 was a kit-built terminal that came in at least two
-# flavors, a first 40-column version, and a second 64-column version released
-# about 1983.
-
-# (netx: removed obsolete ":ma=j^Jk^Pl :" -- esr)
-netx|netronics:\
-       :bs:\
-       :co#64:li#16:\
-       :bl=^G:cd=\006\005:ce=\005:cl=\014:cm=\E=%+@%+@:\
-       :cr=^M:do=^J:ho=^D:le=^H:nd=\E+@A:sf=^J:sr=\E=@@\013:\
-       :up=^K:
-smartvid|Netronics Smartvid 80:\
-       :am:bw:eo:ms:xs:\
-       :co#80:li#24:sg#1:ug#1:\
-       :ae=\EGB:as=\EG@:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^L:\
-       :cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=\ED:ho=^Z:\
-       :ic=\EQ:im=\EC:le=^H:ll=^Z^K:nd=^A:se=\EG@:sf=^J:\
-       :so=\EGC:sr=^K:ta=\Ei:te=^Z^K:ue=\EG@:up=^K:us=\EGA:\
-       :ve=^Z^K:
-smarterm|smarterm-s|netronics smarterm 80x24 naked terminal:\
-       :am:ul:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^L:\
-       :cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=\ED:ho=^Z:\
-       :ic=\EQ:im=\EC:le=^H:nd=^A:sf=^J:ta=^I:ue=\EG@:\
-       :us=\EGA:
-
-#### Omron
-#
-# This company is still around in 1995, manufacturing point-of-sale systems.
-
-omron|Omron 8025AG:\
-       :am:bs:da:db:\
-       :co#80:li#24:\
-       :al=\EL:bl=^G:cd=\ER:ce=\EK:cl=\EJ:cr=^M:dc=\EP:\
-       :dl=\EM:do=^J:ho=\EH:le=^H:nd=\EC:se=\E4:sf=\ES:\
-       :so=\Ef:sr=\ET:up=\EA:vs=\EN:
-
-#### Soroc
-#
-
-# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr)
-soroc120|iq120|soroc iq120:\
-       :cd=\EY:ce=\ET:cl=\E*:do=^J:kd=^J:kl=^H:kr=^L:ku=^K:tc=adm3a:
-soroc140|iq140|soroc iq140:\
-       :am:mi:\
-       :co#80:li#24:\
-       :al=\Ee:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E+:\
-       :cm=\E=%+ %+ :cr=^M:dc=\Ew:dl=\Er:do=^J:ei=\E8:ho=^^:\
-       :im=\E9:k0=^A0\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
-       :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:\
-       :kh=^^:kr=^L:ku=^K:le=^H:ll=^^^K:nd=^L:se=\E\177:\
-       :sf=^J:so=\E\177:ue=\E^A:up=^K:us=\E^A:
-
-#### Southwest Technical Products
-#
-# These guys made an early personal micro called the M6800.  
-# The ct82 was probably its console terminal.
-#
-
-# (swtp: removed obsolete ":bc=^D:" -- esr)
-swtp|ct82|southwest technical products ct82:\
-       :am:\
-       :co#82:li#20:\
-       :al=^^Y:bl=^G:cd=^V:ce=^F:cl=^L:cm=\013%r%.%.:cr=^M:\
-       :dc=^^H:dl=^Z:do=^J:ei=:ho=^P:ic=^^X:im=:\
-       :is=\034\022\036\023\036\004\035\027\011\023\036\035\036\017\035\027\022\011:\
-       :le=^D:ll=^C:nd=^S:se=^^^F:sf=^N:so=^^^V:sr=^O:up=^A:
-
-#### Synertek
-#
-# Bob Manson <manson@pattyr.acs.ohio-state.edu> writes (28 Apr 1995):
-#
-# Synertek used to make ICs, various 6502-based single-board process
-# control and hobbyist computers, and assorted peripherals including a
-# series of small inexpensive terminals (I think they were one of the
-# first to have a "terminal-on-a-keyboard", where the terminal itself
-# was only slightly larger than the keyboard).
-#
-# They apparently had a KTM-1 model, which I've never seen. The KTM-2/40
-# was a 40x24 terminal that could connect to a standard TV through a
-# video modulator.  The KTM-2/80 was the 80-column version (the 2/40
-# could be upgraded to the 2/80 by adding 2 2114 SRAMs and a new ROM).
-# I have a KTM-2/80 still in working order.  The KTM-2s had fully
-# socketed parts, used 2 6507s, a 6532 as keyboard scanner, a program
-# ROM and 2 ROMs as character generators. They were incredibly simple,
-# and I've never had any problems with mine (witness the fact that mine
-# was made in 1981 and is still working great... I've blown the video
-# output transistor a couple of times, but it's a 2N2222 :-)
-#
-# The KTM-3 (which is what is listed in the terminfo file) was their
-# attempt at putting a KTM-2 in a box (and some models came with a
-# CRT). It wasn't much different from the KTM-2 hardware-wise, but the
-# control and escape sequences are very different. The KTM-3 was always
-# real broken, at least according to the folks I've talked to about it.
-# 
-# The padding in the entry is probably off--these terminals were very
-# slow (it takes like 100ms for the KTM-2 to clear the screen...) And
-# anyone with any sanity replaced the ROMs with something that provided
-# a reasonable subset of VT100 functionality, since the usual ROMs were
-# obviously very primitive... oh, you could get an upgraded ROM from
-# Synertek for some incredible amount of money, but what hacker with an
-# EPROM burner would do that? :)
-# 
-# Sorry I don't have any contact info; I believe they were located in
-# Sunnyvale, and I'm fairly sure they are still manufacturing ICs
-# (they've gone to ASICs and FPGAs), but I doubt they're in the computer
-# business these days.
-
-# Tested, seems to work fine with vi.
-synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal:\
-       :am:\
-       :co#80:li#24:\
-       :cd=\EJ:ce=\EK:cl=^Z:cm=\E=%+ %+ :le=^H:nd=^L:up=^K:
-
-#### Tab Office Products
-#
-#      TAB Products Co. - Palo Alto, California
-#      Electronic Office Products,
-#      1451 California Avenue 94304
-#
-# I think they're out of business.
-#
-
-# The tab 132 uses xon/xoff, so no padding needed.
-# :ks:/:ke: have nothing to do with arrow keys.
-# :is: sets 80 col mode, normal video, autowrap on (for :am:).
-# Seems to be no way to get rid of status line.
-# The manual for this puppy was dated June 1981.  It claims to be VT52-
-# compatible.
-tab132|tab|tab132-15|tab 132/15:\
-       :da:db:\
-       :co#80:dN@:li#24:lm#96:\
-       :al=\E[L:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=^J:\
-       :ei=\E[4l:im=\E[4h:is=\E[?7h\E[?3l\E[?5l:kd=\E[B:ke@:\
-       :kl=\E[D:ks@:ku=\E[A:tc=vt100:
-tab132-w:\
-       :co#132:\
-       :is=\E[?7h\E[?3h\E[?5l:tc=tab132:
-tab132-rv:\
-       :is=\E[?7h\E[?3l\E[?5h:tc=tab132:
-tab132-w-rv:\
-       :is=\E[?7h\E[?3h\E[?5h:tc=tab132-w:
-
-
-#### Teleray
-#
-#      Research Incorporated
-#      6425 Flying Cloud Drive
-#      Eden Prairie, MN 55344
-#      Vox: (612)-941-3300
-#
-# The Teleray terminals were all discontinued in 1992-93.  RI still services
-# and repairs these beasts, but no longer manufactures them.  The Teleray
-# people believe that all the types listed below are very rare now (1995).
-# There was a newer line of Telerays (Model 7, Model 20, Model 30, and
-# Model 100) that were ANSI-compatible.
-#
-# Note two things called "teleray".  Reorder should move the common one
-# to the front if you have either.  A dumb teleray with the cursor stuck
-# on the bottom and no obvious model number is probably a 3700.
-#
-
-t3700|dumb teleray 3700:\
-       :bs:\
-       :co#80:li#24:\
-       :bl=^G:cl=^L:cr=^M:do=^J:le=^H:sf=^J:
-# (t3800: mapped ":pt:" to default tabs -- esr)
-t3800|teleray 3800 series:\
-       :bs:pt:\
-       :co#80:li#24:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :cr=^M:do=^J:\
-       :ho=\EH:le=^H:ll=\EY7 :nd=\EC:sf=^J:ta=^I:up=^K:
-# (t1061: mapped ":pt:" to default tabs -- esr)
-t1061|teleray|teleray 1061:\
-       :am:km:xs:xt:\
-       :co#80:li#24:sg#1:ug#1:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\014:cm=\EY%+ %+ :\
-       :cr=^M:ct=\EG:dc=\EQ:dl=\EM:do=^J:ei=:ho=\EH:ic=\EP:\
-       :im=:ip=:\
-       :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\
-       :k1=^Z1:k2=^Z2:k3=^Z3:k4=^Z4:k5=^Z5:k6=^Z6:k7=^Z7:\
-       :k8=^Z8:le=^H:nd=\EC:se=\ER@:sf=^J:so= \ERD:st=\EF:\
-       :ta=^I:ue=\ER@:up=\EA:us=\ERH:
-t1061f|teleray 1061 with fast PROMs:\
-       :al=\EL:dl=\EM:ip@:tc=t1061:
-# "Teleray Arpa Special", offically designated as
-# "Teleray Arpa network model 10" with "Special feature 720".
-# This is the new (1981) fast microcode updating the older "arpa" proms
-# (which gave meta-key and progmmable-fxn keys).  720 is much much faster,
-# converts the keypad to programmable function keys, and has other goodies.
-# Standout mode is still broken (magic cookie, etc) so is suppressed as no
-# programs handle such lossage properly.
-# Note: this is NOT the old termcap's "t1061f with fast proms."
-# From: J. Lepreau <lepreau@utah-cs> Tue Feb  1 06:39:37 1983, Univ of Utah
-# (t10: mapped ":pt:" to default tabs;
-# removed overridden ":so@:se@:us@:ue@:" -- esr)
-t10|teleray 10 special:\
-       :bs:km:pt:xs:xt:\
-       :co#80:li#24:sg#2:ug#1:\
-       :al=\EL:cd=\EJ:ce=\EK:cl=30\Ej:cm=\EY%+ %+ :dc=\EQ:\
-       :dl=\EM:ei=:ho=\EH:ic=\EP:im=:nd=\EC:pc=\200:se=\ER@:\
-       :sf=\Eq:so=\ERD:sr=\Ep:ue=\ER@:up=\EA:us=\ERH:
-# teleray 16 - map the arrow keys for vi/rogue, shifted to up/down page, and
-# back/forth words. Put the function keys (f1-f10) where they can be
-# found, and turn off the other magic keys along the top row, except
-# for line/local. Do the magic appropriate to make the page shifts work.
-# Also toggle ^S/^Q for those of us who use Emacs.
-t16|teleray 16:\
-       :am:da:db:mi:xs:xt:\
-       :co#80:li#24:\
-       :al=\E[L:bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:\
-       :cm=%i\E[%d;%df:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:\
-       :ei=\E[4l:ho=\E[H:im=\E[4h:k1=^Z1:k2=^Z2:k3=^Z3:\
-       :k4=^Z4:k5=^Z5:k6=^Z6:k7=^Z7:k8=^Z8:k9=^Z9:k;=^Z0:\
-       :le=^H:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:sr=\E[T:ta=^I:\
-       :te=\E[V\E[24;1f\E[?38h:ti=\E[U\E[?38l:ue=\E[m:\
-       :up=\E[A:us=\E[4m:
-
-#### Texas Instruments (ti)
-#
-
-ti700|ti733|ti735|ti silent 700:\
-       :bs:hc:os:\
-       :co#80:dC#162:\
-       :bl=^G:cr=\r:do=^J:le=^H:sf=^J:
-ti743|ti745|ti silent 745:\
-       :bs:hc:os:\
-       :co#80:\
-       :bl=^G:cr=^M:do=^J:le=^H:sf=^J:
-ti800|ti omni 800:\
-       :bs:hc:os:\
-       :co#132:\
-       :bl=^G:cr=^M:do=^J:le=^H:sf=^J:
-ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL:\
-       :am:xo:\
-       :co#80:it#8:li#24:\
-       :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:\
-       :cm=%i\E[%d;%dH:cr=^M:cs=%i\E[%d;%dr:ct=\E[3g:\
-       :dl=\E[M:do=\E[B:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:\
-       :k4=\EOS:k5=\E[16~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
-       :k9=\E[20~:kD=\E[P:kI=\E[@:kb=^H:kd=\E[B:kl=\E[D:\
-       :kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:\
-       :mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[m:sf=\ED:\
-       :so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:up=\E[A:\
-       :us=\E[4m:ve=\E[?25h:vi=\E[?25l:vs=\E[?31h:
-ti924-8|Texas Instruments 924 VDT 8859/1 8 bit CTRL:\
-       :am:xo:\
-       :co#80:it#8:li#24:\
-       :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:\
-       :cm=%i\E[%d;%dH:cr=^M:cs=%i\E[%d;%dr:ct=\E[3g:\
-       :dl=\E[M:do=\E[B:ho=\E[H:k1=P\217>:k2=Q\217>:\
-       :k3=R\217>:k4=S\217>:k5=~\23316>:k6=~\23317>:\
-       :k7=~\23318>:k8=~\23319>:k9=~\23320>:kD=P\233>:\
-       :kI=@\233>:kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:\
-       :le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:\
-       :rc=\E8:sc=\E7:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:st=\EH:\
-       :ta=^I:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[?25h:\
-       :vi=\E[?25l:vs=\E[?31h:
-ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode:\
-       :co#132:\
-       :tc=ti924:
-ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode:\
-       :co#132:\
-       :tc=ti924-8:
-em931-9|Texas Instruments 924 Emulator in the 931 Mode:\
-       :tc=ti931:
-em924|Texas Instruments 924 Emulator in the 924 Mode:\
-       :tc=ti924:
-em931|Texas Instruments 931 Emulator:\
-       :tc=ti931:
-ti931|Texas Instruments 931 VDT:\
-       :am:xo:\
-       :co#80:li#24:\
-       :LE=ENTR:al=\EN:bl=^G:cd=\EJ:ce=\EI:cl=\EL:\
-       :cm=\EY%+ %+ :cr=^M:dc=\EQ:dl=\EO:do=\EB:ei=:ho=\EH:\
-       :ic=\ER\EP\EM:im=:is=\EGB\E(@B@@\E):k1=\Ei1:k2=\Ei2:\
-       :k3=\Ei3:k4=\Ei4:k5=\Ei5:k6=\Ei6:k7=\Ei7:k8=\Ei8:\
-       :k9=\Ei9:kA=\EN:kD=\EQ:kI=\EP:kL=\EO:kd=\EB:kl=\ED:\
-       :kr=\EC:ku=\EA:le=\ED:mb=\E4P:me=\E4@:mk=\E4H:\
-       :mr=\E4B:nd=\EC:se=\E4@:sf=\Ea:so=\E4A:sr=\Eb:\
-       :ue=\E4@:up=\EA:us=\E4D:ve=\E4@:
-ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL:\
-       :cs@:sf=\E[1S:sr=\E[1T:tc=ti924:
-ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL:\
-       :cs@:sf=S\2331>:sr=T\2331>:tc=ti924-8:
-ti_ansi|basic entry for ti928:\
-       :am:eo:ut:xn:xo:\
-       :Co#8:co#80:it#8:li#25:pa#64:\
-       :@7=\E[F:Sb=\E[4%dm:Sf=\E[3%dm:al=\E[L:bl=^G:bt=\E[Z:\
-       :cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:cr=^M:\
-       :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:\
-       :ic=\E[@:im=:k0=\E[V:k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:\
-       :k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:kN=\E[G:\
-       :kP=\E[I:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:\
-       :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:nd=\E[C:\
-       :op=\E[37;40m:se=\E[m:sf=\E[S:so=\E[7m:sr=\E[T:ta=^I:\
-       :ue=\E[m:up=\E[A:us=\E[4m:
-#
-#       928 VDT 7 bit control mode
-#
-ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL::\
-       :%9=\E[35~:@7=\E_1\E\\:@8=\E[8~:F1=\E[29~:F2=\E[31~:\
-       :F3=\E[32~:F5=\E[34~:k1=\E[17~:k2=\E[18~:k3=\E[19~:\
-       :k4=\E[20~:k5=\E[21~:k6=\E[23~:k7=\E[24~:k8=\E[25~:\
-       :k9=\E[26~:k;=\E[28~:kD=\E[P:kI=\E[@:kN=\E[S:kP=\E[T:tc=ti_ansi:
-#
-#       928 VDT 8 bit control mode
-#
-ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL::\
-       :%9=\23335~:@7=\2371\234:@8=\2338~:F1=\23329~:\
-       :F2=\23331~:F3=\23332~:F5=\23334~:k1=\23317~:\
-       :k2=\23318~:k3=\23319~:k4=\23320~:k5=\23321~:\
-       :k6=\23323~:k7=\23324~:k8=\23325~:k9=\23326~:\
-       :k;=\23328~:kD=\233P:kI=\233@:kN=\233S:kP=\233T:\
-       :kh=\233H:tc=ti_ansi:
-
-#### Zentec (zen)
-#
-
-# (zen30: removed obsolete ":ma=^L ^R^L^K^P:" -- esr)
-zen30|z30|zentec 30:\
-       :am:bs:mi:ul:\
-       :co#80:li#24:\
-       :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :\
-       :cr=^M:dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:le=^H:\
-       :nd=^L:se=\EG0:sf=^J:so=\EG6:up=^K:
-# (zen50: this had unknown capabilities
-#      :BS=^U:CL=^V:CR=^B:
-# UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh,
-# which were also in the original entry -- esr)
-# (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr)
-zen50|z50|zentec zephyr:\
-       :am:bs:\
-       :co#80:li#24:sg#1:\
-       :al=\EE:cd=\EY:ce=\ET:cl=\E+:cm=\E=%+ %+ :dc=\EW:\
-       :dl=\ER:ei=:ic=\EQ:im=:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:\
-       :se=\EGO:so=\EG4:up=^K:
-
-######## OTHER OBSOLETE TYPES
-#
-# These terminals are *long* dead -- these entries are retained for
-# historical interest only.
-
-#### Obsolete non-ANSI software emulations
-#
-
-# CTRM terminal emulator
-# 1. underlining is not allowed with colors: first, is is simulated by 
-# black on white, second, it disables background color manipulations.
-# 2. BLINKING, REVERSE and BOLD are allowed with colors,
-# so we have to save their status in the static registers A, B and H
-# respectively, to be able to restore them when color changes
-# (because any color change turns off ALL attributes)
-# 3. "enter_bold_mode" and "enter_reverse_mode" sequences alternates modes,
-# rather then simply  entering them.  Thus we have to check the
-# static register B and H to determine the status, before sending the 
-# escape sequence.
-# 4. sgr0 now must set the status of all 3 register (A,B,H) to zero
-# and then reset colors
-# 5. implementation of the protect mode would badly penalize the performance.
-# we would have to use \E&bn sequence to turn off colors (as well as all
-# other attributes), and keep the status of protect mode in yet another
-# static variable.  If someone really need this mode, they would have to
-# create another terminfo entry.
-# 6. original color-pair is white on black.
-# store the information about colors into static registers
-# 7. set foreground color.  it performs the following steps.
-#   1) turn off all attributes
-#   2) turn on the background and video attribues that have been turned
-#      on before (this information is stored in static registers X,Y,Z,A,B,H,D).
-#   3) turn on foreground attributes
-#   4) store information about foreground into U,V,W static registers
-# 8. turn on background: similar to turn on foreground above
-ctrm|C terminal emulator:\
-       :am:ut:xo:\
-       :Co#8:NC#2:Nl#0:co#80:lh#0:li#24:lm#0:lw#0:pa#63:\
-       :pb#19200:vt#6:\
-       :..Sb=\E&bn\n%?%gA%t\E&dA%;\n%?%gB%t\E&dB%;\n%?%gH%t\E&dH%;\n%?%gU%t\E&bR%;\n%?%gV%t\E&bG%;\n%?%gW%t\E&bB%;\n\n%?%p1%{1}%&%t\E&bb%{1}%e%{0}%;%PZ\n%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY\n%?%p1%{4}%&%t\E&br%{1}%e%{0}%;%PX:\
-       :..Sf=\E&bn\n%?%gA%t\E&dA%;\n%?%gB%t\E&dB%;\n%?%gH%t\E&dH%;\n%?%gX%t\E&br%;\n%?%gY%t\E&bg%;\n%?%gZ%t\E&bb%;\n\n%?%p1%{1}%&%t\E&bB%{1}%e%{0}%;%PW\n%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV\n%?%p1%{4}%&%t\E&bR%{1}%e%{0}%;%PU:\
-       :al=\EL:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:\
-       :cl=\EH\EJ:cm=\E&a%r%dc%dY:cr=^M:ct=\E3:cv=\E&a%dY:\
-       :dc=\EP:dl=\EM:do=^J:ei=\ER:im=\EQ:ip=:is=\E&jA\r:\
-       :k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:\
-       :k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:kb=^H:kd=\Ew\r:ke=\E&jA:\
-       :kh=\Ep\r:kl=\Eu\r:kr=\Ev\r:ks=\E&jB:ku=\Et\r:le=^H:\
-       :mb=\E&dA%{1}%PA:md=%?%gH%{0}%=%t\E&dH%{1}%PH%;:\
-       :me=\E&d@%{0}%PA%{0}%PB%{0}%PH:\
-       :mr=%?%gB%{0}%=%t\E&dB%{1}%PB%;:nd=\EC:\
-       :op=\E&bn\E&bB\E&bG\E&bR\n%{0}%PX%{0}%PY%{0}%PZ\n%{1}%PW%{1}%PV%{1}%PU:\
-       :..sa=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH\n%?%p1%p3%p5%|%|%t\E&dB%{1}%PB%;\n%?%p4%t\E&dA%{1}%PA%;\n%?%p6%t\E&dH%{1}%PH%;\n%?%p2%t\E&dD%;:\
-       :sf=^J:so=\E&dD:st=\E1:ta=\011:up=\EA:us=\E&dD:
-
-# gs6300 - can't use blue foreground, it clashes with underline;
-# it's simulated with cyan
-gs6300|emots|AT&T PC6300 with EMOTS Terminal Emulator:\
-       :am:ms:ut:xo:\
-       :Co#8:co#80:it#8:li#24:pa#63:\
-       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
-       :LE=\E[%dD:LF=\E|:RI=\E[%dC:Sb=\E[?;%dm:\
-       :..Sf=\E[?%?%p1%{0}%=%t0\n%e%p1%{1}%=%t2\n%e%p1%{1}%-%d%;m:\
-       :UP=\E[%dA:\
-       :ac=\\\054\\\054..--++``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=\E[10m:al=\E[L:as=\E[11m:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:\
-       :do=^J:ei=:ho=\E[H:ic=\E[@:im=:is=\E[0m:k1=\E[0s:\
-       :k2=\E[24s:k3=\E[1s:k4=\E[23s:k5=\E[2s:k6=\E[22s:\
-       :k7=\E[3s:k8=\E[21s:kB=^R^I:kb=^H:kd=\E[B:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
-       :me=\E[m\E[10m:mr=\E[7m:nd=\E[C:op=\E[?;m:pf=\E[4i:\
-       :po=\E[5i:r1=\Ec:sf=^J:so=\E[1m:sr=\E[L:ta=^I:\
-       :up=\E[A:us=\E[4m:
-
-# From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT
-# MS-Kermit with Heath-19 emulation mode enabled
-# (h19k: changed ":pt@:" to ":it@"
-h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin):\
-       :am@:da:db:xt:\
-       :it@:\
-       :ta@:tc=h19-u:
-
-# pc52 - can't use blue foreground, it clashes with underline;
-# it's simulated with cyan
-# bold means: white on black bold, so it not allowed with colors
-# rev means: black on white, also not allowed
-# smso and dim are simulated with colors, ditto
-# smul is allowed, even though it always means white foreground:
-# it is too important to leave out.
-pc52|dec vt52 for PC:\
-       :am:ms:ut:\
-       :Co#8:NC#53:co#80:it#8:li#25:pa#63:\
-       :Sb=\Ec%d:..Sf=\Eb%?%p1%{1}%=%t3\n%e%p1%d%;:al=\EL:\
-       :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:\
-       :dl=\EM:do=^J:k1=\Ea:k2=\Eb:k3=\Ec:k4=\Ed:k5=\Ee:\
-       :k6=\Ef:k7=\Eg:k8=\Eh:k9=\Ei:k;=\Ej:kb=^H:kd=\ED:\
-       :kl=\EL:kr=\ER:ku=\EU:le=^H:mb=\Eo:md=\Ebo\Ec0:\
-       :me=\Eb7\Ec0\Et:mh=\Eb3\Ec0:mr=\Ep:nd=\EC:\
-       :op=\Eb7\Ec0:se=\Eb7\Ec0:sf=^J:so=\Eb6\Ec4:sr=\EI:\
-       :ta=^I:up=\EA:us=\Es:
-
-# vs100 emulator using tsim
-# From: <lai@decwrl.dec.com>
-# (vs100t: had Al/Dl in front of obvious AL/DL capabilities;
-# also mapped ":pt:" to default tabs -- esr)
-vs100t|tsim|vs100-tsim:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :AL=\E+%+ :DL=\E-%+ :al=\EI:cd=\EQ:ce=\EL:cl=\EE:\
-       :cm=\EM%+ %+ :cs=\ES%+ %+ :dc=\Ed:dl=\ED:do=^J:ei=:\
-       :ho=\EH:ic=\Ei:im=:is=\ER:nd=\En:rs=\ER:se=\Er:\
-       :so=\Eh:ue=\Ev:up=^K:us=\Eu:
-
-# From: Rick Thomas <ihnp4!btlunix!rbt>
-xtalk|IBM PC with xtalk communication program (versions up to 3.4):\
-       :am:mi:ms:xo:\
-       :co#80:it#8:li#24:sg#1:vt#3:\
-       :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:\
-       :K5=\EOn:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:al=\E[L:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dl=\E[M:\
-       :do=^J:eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:k2=\EOQ:\
-       :k3=\EOR:k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:\
-       :k9=\EOw:k;=\EOx:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
-       :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:nd=\E[C:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:se=\E[m :sf=^J:\
-       :so=\E[7m :sr=\EM:st=\EH:ta=^I:up=\E[A:
-
-# YTERM standard version 1.0.
-# Straight old ascii keyboard except function keys are Yale (e.g.,ASCII.KBD).
-# Only 80 tab columns (else yterm 1.1 bug).  No :xn: in 1.0.
-# Cannot use termcap :sr=\EM: because vi will not work, too bad.
-# vi string is given so that yterm is reset each vi startup.
-# (yterm10: removed obsolete ":EP:" and ":ma=\bh^Jj\vk\fl\1eH:" capabilities;
-# mapped ":pt:" to default tabs -- esr)
-# From: greg small <gts@populi.berkeley.edu> 9-25-84
-yterm10|yterm 1.0 UCB ascii.kbd:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :ho=^Y:\
-       :is=\017\E[7i\E[m\E[?7h\E[?3g\r\EHY0  for \EHYTERM 1.\EH0 with A\EHSCII.KBD\EH 9-13-84\EH        \EH        \EH        \EH        \EH\n:\
-       :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:\
-       :k7=\E7:k8=\E8:k9=\E9:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:\
-       :nd=^\:rc=\E8:sc=\E7:se=\E[m:so=\E[7m:ue=\E[m:up=^_:\
-       :us=\E[4m:\
-       :vs=\017\E[7i\E[m\E[?7h\E[?3g\r\EHY0      \EH        \EH        \EH        \EH        \EH        \EH        \EH        \EH        \EH\r:
-# YTERM variant version 1.1.  Version 1.1 has :xn:.
-# From: greg small <gts@populi.berkeley.edu> 9-13-84
-yterm11|yterm 1.1 UCB ascii.kbd:\
-       :xn:\
-       :is=\017\E[7i\E[m\E[?7h\E[?3g\r\EHY1  for \EHYTERM 1.\EH1 with A\EHSCII.KBD\EH 9-13-84\EH        \EH        \EH        \EH        \EH\n:tc=yterm10:
-# YTERM 1.0 variant no autowrap or tabs
-# X does not remember autowrap or tabs when T is deleted and restarted.
-# (yterm: changed ":pt@:" to ":it@:" -- esr)
-yterm10nat|yterm 1.0 UCB ascii.kbd no autowrap or tabs:\
-       :am@:\
-       :it@:\
-       :is=\017\E[7i\E[m\E[?7l\E[?3g\rY2  for YTERM 1.0 with ASCII.KBD 9-20-84 no autowrap or tabs\n:\
-       :vs=\017\E[7i\E[m\E[?7l\E[?3g\rY2\r:tc=yterm10:
-
-# The official PC terminal emulator program of the AT&T Product Centers.
-# Note - insert mode commented out - doesn't seem to work on AT&T PC.
-simterm|attpc running simterm:\
-       :am:\
-       :co#80:li#24:\
-       :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\E=%+ %+ :\
-       :cr=^M:dc=\ER:dl=\EM:do=\EB:ho=\EH:im=\EQ:le=^H:\
-       :nd=\EC:sf=^J:so=\E&dB:te=\EVE:ti=\EVS:up=\EA:
-
-#### Daisy wheel printers
-#
-
-# This section collects Diablo, DTC, Xerox, Qume, and other daisy
-# wheel terminals.  These are now largely obsolete.
-#
-# This is an "experimental" entry for the SRI Agiles.
-# It has been tried in a minimal way -- the Agile did not blow up!
-# However, it has not been exhaustively tested.
-# Anyone who tries it and finds it wanting should get in touch with:
-# From: Ralph Keirstead <ralph@sri-unix>
-#      EK352; SRI International; 333 Ravenswood Avenue; Menlo Park, CA 94025
-# (agile: I removed an incorrect ":pl:" -- esr)
-agile|agiles|sri agiles:\
-       :hc:os:\
-       :co#132:\
-       :bl=^G:cr=^M:ct=\E2:do=^J:hd=\E9:hu=\E0:is=\EE\EF\EJ:\
-       :kb=^H:le=^H:sf=^J:st=\E1:ta=^I:up=\E^J:
-# (1620: mapped ":pt:" to default tabs -- esr)
-diablo1620|diablo1720|diablo450|ipsi|diablo 1620:\
-       :bs:hc:os:pt:\
-       :co#132:\
-       :ch=\E\011%i%.:ct=\E2:do=^J:hd=\ED:hu=\EU:\
-       :if=/usr/share/tabset/xerox1720:kb=^H:le=^H:st=\E1:\
-       :up=\E^J:
-diablo1620-m8|diablo1640-m8|diablo 1620 w/8 column left margin:\
-       :co#124:\
-       :do=^J:is=\r        \E9:tc=diablo1620:
-diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|diablo 1640:\
-       :bl=^G:if=/usr/share/tabset/xerox1730:se=\E&:so=\EW:\
-       :ue=\ER:us=\EE:tc=diablo1620:
-diablo1640-lm|diablo-lm|xerox-lm|diablo 1640 with indented left margin:\
-       :co#124:\
-       :if=/usr/share/tabset/xerox1730-lm:se=\E&:so=\EW:\
-       :ue=\ER:us=\EE:tc=diablo1620:
-diablo1740-lm|630-lm|1730-lm|x1700-lm:\
-       :tc=diablo1640-lm:
-# DTC 382 with VDU.  Has no :cd: so we fake it with :ce:.  Standout
-# (so="^P \002^PF:") works but won't go away without dynamite (":se=^P \200:").
-# The terminal has tabs, but I'm getting tired of fighting the braindamage. 
-# If no tab is set or the terminal's in a bad mood, it glitches the screen
-# around all of memory.  Note that return puts a blank ("a return character")
-# in the space the cursor was at, so we use ^P return (and thus ^P newline for
-# newline).  Note also that if you turn off pt and let Unix expand tabs,
-# curses won't work (current version) because it doesn't turn off this bit,
-# and cursor addressing sends a tab for row/column 9.  What a losing terminal!
-# I have been unable to get tabs set in all 96 lines - it always leaves at
-# least one line with no tabs in it, and once you tab through that line,
-# it completely weirds out.
-dtc382|DTC 382:\
-       :am:da:db:xs:\
-       :co#80:li#24:lm#96:\
-       :al=^P^Z:bl=^G:cd=\020\025\020\023\020\023:ce=^P^U:\
-       :cl=\020\035:cm=\020\021%r%.%.:cr=^P^M:dc=^X:dl=^P^S:\
-       :ei=^Pi:ho=^P^R:im=^PI:le=^H:nd=^PR:pc=\177:sf=^J:\
-       :te=\020\035:ue=^P \200:up=^P^L:us=^P ^P:ve=^Pb:\
-       :vs=^PB:
-dtc300s|DTC 300s:\
-       :hc:os:\
-       :co#132:\
-       :bl=^G:cr=^M:ct=\E3:do=^J:ff=^L:hd=\Eh:hu=\EH:kb=^H:\
-       :le=^H:sf=^J:st=\E1:ta=^I:up=^Z:
-gsi:\
-       :hc:os:\
-       :co#132:\
-       :bl=^G:cr=^M:do=^J:hd=\Eh:hu=\EH:le=^H:sf=^J:ta=^I:\
-       :up=^Z:
-aj830|aj832|aj|anderson jacobson:\
-       :bs:hc:os:\
-       :bl=^G:cr=^M:do=^J:hd=\E9:hu=\E8:le=^H:sf=^J:up=\E7:
-# From: Chris Torek <chris@gyre.umd.edu> Thu, 7 Nov 85 18:21:58 EST
-aj510|AJ510|Anderson-Jacobson model 510:\
-       :am:bs:mi:\
-       :co#80:li#24:\
-       :al=2*\E&I:cd=\E'P:ce=\E'L:cl=^L:cm=\E#%+ %+ :\
-       :dc=.1*\E'D:dl=2*\E&D:ei=\E'J:ic=:im=\E'I:ip=.1*:\
-       :kd=\EZ:kl=\EW:kr=\EX:ku=\EY:nd=\EX:pc=\177:se=\E"I:\
-       :so=\E"I:te=\E"N:ti=\E"N:ue=\E"U:up=\EY:us=\E"U:
-# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
-# This is incomplete, but it's a start.
-# (5520: mapped ":pt:" to default tabs -- esr)
-nec5520|nec|spinwriter|nec 5520:\
-       :bs:hc:os:pt:\
-       :co#132:\
-       :bl=^G:cr=^M:ct=\E3:do=^J:ff=^L:hd=\E]s\n\E]W:\
-       :hu=\E]s\E9\E]W:kb=^H:le=^H:sf=^J:st=\E1:ta=^I:\
-       :up=\E9:
-# (qume5: mapped ":pt:" to default tabs -- esr)
-qume5|qume|Qume Sprint 5:\
-       :bs:hc:os:pt:\
-       :co#80:\
-       :bl=^G:cr=^M:ct=\E3:do=^J:ff=^L:hd=\Eh:hu=\EH:kb=^H:\
-       :le=^H:sf=^J:st=\E1:ta=^I:up=^Z:
-# I suspect the xerox1720 is the same as the diablo 1620.
-# (x1720: mapped ":pt:" to default tabs -- esr)
-xerox1720|x1720|x1750|xerox 1720:\
-       :bs:hc:os:pt:\
-       :co#132:\
-       :bl=^G:cr=^M:ct=\E2:do=^J:ff=^L:le=^H:sf=^J:st=\E1:\
-       :ta=^I:
-
-#### Miscellaneous obsolete terminals, manufacturers unknown
-#
-# If you have any information about these (like, a manufacturer's name, 
-# and a date on the serial-number plate) please send it!
-
-cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars:\
-       :am:bs:\
-       :co#73:li#36:\
-       :cl=^Z:ho=^^:nd=^L:up=^K:
-cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars:\
-       :am:bs:\
-       :co#85:li#39:\
-       :cl=^Z:ho=^^:k1=\E5:k2=\E6:k3=\E7:k4=\E8:kd=\E2:\
-       :kl=\E3:kr=\E4:ku=\E1:nd=^L:se=\Em^C:so=\Em^L:up=^K:
-cdi|cdi1203:\
-       :am:bs:hc:os:\
-       :co#80:\
-       :bl=^G:cr=\r:do=^J:le=^H:sf=^J:
-cops10|cops|cops-10:\
-       :am:bw:\
-       :co#80:li#24:\
-       :bl=^G:cd=^W:ce=^V:cl=30^X:cm=\020%+ %+ :cr=^M:do=^J:\
-       :kb=^H:kd=^J:kh=^Y:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:\
-       :sf=^J:up=^K:
-# (d132: removed duplicate ":ic=\E5:" -- esr)
-d132|datagraphix|datagraphix 132a:\
-       :da:db:in:\
-       :co#80:li#30:\
-       :al=\E3:bl=^G:cl=^L:cr=^M:dc=\E6:do=^J:ei=:ho=\Et:\
-       :ic=\E5:im=:nd=\El:sf=\Ev:sr=\Ew:up=\Ek:ve=\Em\En:\
-       :vs=\Ex:
-# I'm told the d800 was an early portable terminal that looked a lot like the
-# original Compaq portable.
-# (d800: mapped ":pt:" to default tabs -- esr)
-d800|Direct 800/A:\
-       :am:bs:da:db:ms:pt:xs:\
-       :co#80:li#24:\
-       :ae=\E[0m:as=\E[1m:bl=^G:cd=\E[J:ce=\E[K:\
-       :cl=\E[1;1H\E[2J:cm=\E[%i%d;%dH:cr=^M:do=^J:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:\
-       :k8=\EOW:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
-       :nd=\E[C:se=\E[0m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:\
-       :ue=\E[0m:up=\E[A:us=\E[4m:ve=\E[>12h:vs=\E[>12l:
-digilog|digilog 333:\
-       :bs:\
-       :co#80:li#16:\
-       :bl=^G:ce=^X:cr=^M:do=^J:ho=^N:le=^H:nd=^I:sf=^J:\
-       :up=^O:
-env230|envision230|envision 230 graphics terminal:\
-       :am:mi:ms:xo:\
-       :co#80:it#8:li#24:vt#3:\
-       :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:\
-       :K5=\EOn:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
-       :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
-       :ae=^O:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
-       :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
-       :ct=\E[3g:do=^J:eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:\
-       :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:\
-       :k8=\EOl:k9=\EOw:k;=\EOx:kb=^H:kd=\EOB:ke=\E[?1l\E>:\
-       :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
-       :md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:pf=\E[4i:\
-       :po=\E[5i:ps=\E[0i:\
-       :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
-       :..sa=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:\
-       :sc=\E7:se=\E[0m<2>:sf=^J:so=\E[1m<2>:sr=\EM:st=\EH:\
-       :ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
-# These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic
-# coupler attached, the whole rig fitting in a suitcase and more or less
-# portable.  Hot stuff for c.1977 :-) -- esr
-ep48|ep4080|execuport 4080:\
-       :am:bs:os:\
-       :co#80:\
-       :bl=^G:cr=^M:do=^J:hd=^\:hu=^^:le=^H:sf=^J:
-ep40|ep4000|execuport 4000:\
-       :am:bs:os:\
-       :co#136:\
-       :bl=^G:cr=^M:do=^J:hd=^\:hu=^^:le=^H:sf=^J:
-# From: Paul Leondis <unllab@amber.berkeley.edu>
-ifmr|Informer D304:\
-       :am:bs:\
-       :co#80:li#24:\
-       :cd=\E/:ce=\EQ:cl=\EZ:cm=\EY%r%+ %+ :dc=\E\\:do=^J:\
-       :ei=:ho=\EH:ic=\E[:im=:nd=\EC:se=\EK:so=\EJ:sr=\En:\
-       :up=\EA:
-# This used to say "de#001202" which presumably refers to the stty bits
-# that need to be set for some version of Unix.  We need the real delay
-# requirements in MS.
-mw2|Multiwriter 2:\
-       :hc:os:\
-       :co#132:\
-       :bl=^G:cr=^M:do=^J:sf=^J:
-# Entry largely based on wy60 and has the features of wy60ak.
-opus3n1+|Esprit  Opus3n1+ in wy60 mode with ANSI arrow keys +:\
-       :am:bw:hs:km:mi:ms:ul:xo:\
-       :Nl#8:co#80:lh#1:li#24:lw#8:ws#80:\
-       :#2=\E{:%9=\EP:&3=\Er:@7=\E[F:@8=\E7:F1=^AJ\r:\
-       :F2=^AK\r:F3=^AL\r:F4=^AM\r:F5=^AN\r:F6=^AO\r:\
-       :LF=\EA11:LO=\EA10:RA=\Ed.:RX=\Ec20:SA=\Ed/:SX=\Ec21:\
-       :ac=0wa_h[jukslrmqnxqzttuyv]wpxv:ae=\EH^C:al=\EE:\
-       :as=\EH^B:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E*:\
-       :cm=\Ea%i%dR%dC:cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:\
-       :ds=\Ez(\r:ei=\Er:fs=^M:ho=\036:\
-       :if=/usr/lib/tabset/std:im=\Eq:ip=:\
-       :is=\E`\072\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\037\Ezz'\E[B\037\Ezz(\E[D\037\Ezz)\E[C\037\Ezz<\E[Q\037\Ezz`\E[F\037\EA1*\EZH12:\
-       :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
-       :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:\
-       :kB=\EI:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kN=\EK:kP=\EJ:\
-       :kS=\EY:kb=^H:kd=\E[B:kh=^^:kl=\E[D:kr=\E[C:ku=\E[A:\
-       :le=^H:mb=\EG2:me=\E(\EH\003\EG0\EcD:mh=\EGp:mk=\EG1:\
-       :mp=\E):mr=\EG4:nd=^L:nw=\r\n:pf=^T:pl=\EZ2%+?%s\177:\
-       :pn=\Ez%+/%s\r:po=^R:ps=\EP:px=\EZ1%+?%s\177:\
-       :r1=\E~!\E~4:r2=\EeF:r3=\EwG\Ee(:\
-       :..sa=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%'0'%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c:\
-       :se=\EG0:sf=^J:so=\EG4:sr=\Ej:st=\E1:ta=\011:\
-       :ti=\Ezz&\E[A\037\Ezz'\E[B\037\Ezz(\E[D\037\Ezz)\E[C\037\Ezz<\E[Q\037:\
-       :ts=\Ez(:uc=\EG8%p1%c\EG0:ue=\EG0:up=^K:us=\EG8:\
-       :ve=\E`1:vi=\E`0:
-# (ps300: changed ":pt@:" to "it@" -- esr)
-ps300|Picture System 300:\
-       :xt:\
-       :it@:\
-       :se@:so@:ue@:us@:tc=vt100:
-ramtek|ramtek 6000:\
-       :am:\
-       :co#78:li#24:\
-       :bl=^G:cl=[alpha]\n[erase]\n:cr=^M:do=^J:le=^H:sf=^J:
-# Upper case terminal, uses lower case for control sequences!!!
-tec400|tec scope:\
-       :sg#1:\
-       :al=e:cd=s:ce=c:cl=f:..cm=l%p2%~%c%p1%~%c:dc=t:dl=u:\
-       :do=h:ei=:ho=i:ic=d:im=:le=w:nd=g:se=|:so={:up=x:
-# From: <ucbvax!geoff> Mon Sep 21 21:15:45 1981
-# This entry has been tested.
-tec500|tec 500:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cl=\032:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:le=^H:\
-       :nd=^L:se=^\:sf=^J:so=^]:up=^K:
-# tec is untested, and taken from CB/Unix virtual terminal driver.
-# I would appreciate more information on this terminal, such as the
-# manufacturer and the model number.  There are too many tecs in here.
-# (tec: removed obsolete ":ma=^K^P^_ :" -- esr)
-tec:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cl=^L:cr=^M:do=^J:ho=^^:le=^H:nd=^_:sf=^J:\
-       :up=^K:
-teletec|Teletec Datascreen:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cl=^L:cr=^M:do=^J:ho=^^:le=^H:nd=^_:sf=^J:\
-       :up=^K:
-# Terak made a PDP-11 based box with a bitmapped display that ran UCSD
-# Pascal as the native O/S. It was quite a nice box, and there were several
-# at Berkeley.
-terak|Terak emulating Datamedia 1520:\
-       :tc=dm1520:
-# From: Mark Dornfeld <romwa@ucbvax.berkeley.edu>
-#              This termcap is for the LANPAR Technologies VISION 3220
-#      terminal.  The function key definitions k0-k5 represent the
-#      edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN,
-#      NEXT SCREEN. The key definitions k6-k9 represent the PF1 to
-#      PF4 keys.
-# (v3220: mapped ":pt:" to default tabs, removed obsolete ":kn#10:" -- esr)
-v3220|LANPAR Vision II model 3220/3221/3222:\
-       :am:bs:mi:pt:xn:\
-       :co#80:li#24:\
-       :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
-       :dc=\E[P:dl=\E[M:ei=\E[4l:im=\E[4h:\
-       :is=\E>\E[?3l\E[?7h\E[?8h\E[p:k0=\E[1~:k1=\E[2~:\
-       :k2=\E[3~:k3=\E[4~:k4=\E[5~:k5=\E[6~:k6=\E[OP:\
-       :k7=\E[OQ:k8=\E[OR:k9=\E[OS:kd=\E[B:ke=\E>:kh=\E[H:\
-       :kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:nd=\E[C:se=\E[m:\
-       :so=\E[7m:sr=\EM:ue=\E[m:up=\E[A:us=\E[4m:
-# Does anybody know where these "wind" terminals came from?
-wind:\
-       :bs:\
-       :co#80:li#24:\
-       :cl=\EnP(\Eo:cm=\Ep%r%.%.:ho=\Ep\200\200:k1=\E5:\
-       :k2=\E6:k3=\E7:k4=\E8:kd=\E2:kl=\E3:kr=\E4:ku=\E1:\
-       :nd=^L:nl=^]:se=\Em^C:so=\Em^L:up=^K:
-wind16:\
-       :bs:\
-       :co#80:li#16:\
-       :cl=\EnP\020\Eo:cm=\Ep%r%.%.:ho=\Ep\200\200:nd=^L:\
-       :nl=^]:se=\Em^C:so=\Em^L:up=^K:
-wind40:\
-       :bs:\
-       :co#80:li#40:\
-       :cl=\EnP(\Eo:cm=\Ep%r%.%.:ho=\Ep\200\200:nd=^L:nl=^]:\
-       :se=\Em^C:so=\Em^L:up=^K:
-# (wind50: corrected :cl=\EnP\128\062\Eo: -- esr)
-wind50:\
-       :bs:\
-       :co#88:li#50:\
-       :cl=\EnP2\Eo:cm=\Ep%r%.%.:ho=\Ep\200\200:k1=\E5:\
-       :k2=\E6:k3=\E7:k4=\E8:kd=\E2:kl=\E3:kr=\E4:ku=\E1:\
-       :nd=^L:nl=^]:se=\Em^C:so=\Em^L:up=^K:
-# (xitex: removed obsolete ":ma=j^Jk^Pl :" -- esr)
-xitex|xitex sct-100:\
-       :bs:\
-       :co#64:li#16:\
-       :bl=^G:cd=\006\005:ce=\005:cl=\014:cm=\E=%+@%+@:\
-       :cr=^M:do=^J:ho=^D:le=^H:nd=\E+@A:sf=^J:sr=\E=@@\013:\
-       :up=^K:
-plasma|plasma panel:\
-       :am:bs:\
-       :co#85:li#45:\
-       :bl=^G:cl=^L:cr=^M:do=^J:ho=^^:le=^H:nd=^X:sf=^J:\
-       :up=^V:
-
-#### Homebrew and custom terminals
-#
-
-# Nu machine parameters taken from mit-vax.
-#                                              smc - 5/21/85
-#
-nuterminal:\
-       :am:mi:ms:\
-       :co#80:it#8:li#24:\
-       :ae=\EG:al=1*\EL:as=\EF:cd=60\EJ:ce=10\EK:cl=60\EE:\
-       :..cm=\EY%+ %+ :cr=^M:dc=2.5*\EN:dl=1*\EM:do=\EB:\
-       :ei=\EO:ho=\EH:im=\E@:ip=2.5*:k1=\ES:k2=\ET:k3=\EU:\
-       :k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:kb=^H:kd=\EB:\
-       :kh=\EH:kl=\ED:kr=\EC:ku=\EA:l6=blue:l7=red:l8=white:\
-       :le=^H:nd=\EC:nw=^M^J:se=\Eq:sf=^J:so=\Ep:sr=\EI:\
-       :ta=^I:up=\EA:ve=\Ey4:vs=\Ex4:
-nu24|nuwindow:\
-       :mi:ms:\
-       :co#86:it#8:li#24:\
-       :ae=\EG:al=1*\EL:as=\EF:cd=\EJ:ce=\EK:cl=\EE:\
-       :..cm=\EY%+ %+ :cr=^M:dl=1*\EM:do=\EB:ei=\EO:ho=\EH:\
-       :im=\E@:ip=2.5*:kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:\
-       :ku=\EA:le=^H:nd=\EC:nw=^M^J:se=\Eq:sf=^J:so=\Ep:\
-       :sr=\EI:ta=^I:up=\EA:ve=\Ey4:vs=\Ex4:
-bnu|nu51|bnuwindow:\
-       :co#86:li#51:\
-       :tc=nuterminal:
-fnu|nu61|fnuwindow:\
-       :co#86:li#61:\
-       :tc=nuterminal:
-nunix-30|nu-telnet-30|nu-half -- Half nu screen thru telnet:\
-       :am:\
-       :co#78:it#8:li#30:\
-       :al=\EL:cd=\EJ:ce=\EK:cl=\EE:..cm=\EY%+ %+ :cr=^M:\
-       :dl=\EM:do=\EB:ho=\EH:ip=2.5*:kb=^H:kd=^J:kl=^H:\
-       :le=^H:nd=\EC:nw=^M^J:se=\Eq:sf=^J:so=\Ep:sr=\EI:\
-       :ta=^I:up=\EA:
-nunix-61|nu-telnet-61|nu-full| Full nu screen thru telnet:\
-       :co#78:li#61:\
-       :tc=nunix-30:
-
-bch|bc|bill croft homebrew:\
-       :am:bs:\
-       :co#96:li#72:\
-       :cl=^Z:cm=\E=%+ %+ :do=^J:ho=^^:le=^H:nd=^L:up=^K:\
-       :vb=:
-nucterm|rayterm|NUC homebrew:\
-       :am:bs:\
-       :co#80:li#24:\
-       :bl=^G:cd=^E:ce=^A:cl=\014:cr=^M:do=^J:ho=^B:le=^H:\
-       :ll=^K:nd=^C:sf=^J:up=^N:
-carlock|klc:\
-       :am:bs:\
-       :co#80:li#24:\
-       :al=^E:bl=^G:ce=^U:cl=\032:cm=\E=%+ %+ :cr=^M:\
-       :dc=\177:dl=^D:do=^J:ei=^T:ho=^^:im=^T:nd=^L:se=^V:\
-       :sf=^J:so=^V:up=^K:vb=\EV\EV:
-# uVAX
-qdss|qdcons|qdss glass tty:\
-       :am:bs:\
-       :co#128:li#57:\
-       :cl=1\032:cm=\E=%.%.:do=^J:le=^H:nd=^L:up=^K:
-# (ubell: removed obsolete ":ma=j^Jk^P^K^Pl :";
-# mapped ":pt:" to default tabs; removed obsolete ":bc=^Y:" -- esr)
-ubell|ubellchar:\
-       :am:bs:pt:\
-       :co#80:li#24:\
-       :bl=^G:ce=\Ed:cl=^Z:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:\
-       :le=^H:nd=^L:sf=^J:ta=^I:up=^K:
-ttywilliams:\
-       :am:\
-       :co#80:li#12:\
-       :bl=^G:ce=^_:cl=^^:cr=^M:do=^K:ho=^]:le=^Y:nd=^X:\
-       :sf=^J:up=^Z:
-######## ICH/ICH1 VERSUS RMIR/SMIR
-#
-# Some non-curses applications get confused if both ich/ich1 and rmir/smir
-# are present; the symptom is doubled characters in an update using insert.
-# These applications are technically correct; in both 4.3BSD termcap and
-# terminfo, you're not actually supposed to specify both ich/ich1 and rmir/smir
-# unless the terminal needs both.  This requirement is now rare; most ich
-# sequences do not require previous smir, and most smir insert modes do not
-# require ich1 before each character.
-#
-# For ncurses-based applications this is not a problem, as ncurses uses
-# one or the other as appropriate but never mixes the two.  Therefore we
-# have not corrected entries like `linux' and `xterm' that specify both.
-# If you see doubled characters from these, use the linux-nic and xterm-nic
-# entries that suppress ich/ich1.
-#
-######## ANSI/VT100/PC-TERM TERMINAL STANDARDS
-#
-# ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals
-# 
-# Most of the content of this comment is adapted from a table prepared by
-# Richard Shuford, based on a 1984 Byte article.  Terminfo correspondences
-# and discussion of some terminfo-related issues have been added.
-#
-# The table is a complete list of the defined ANSI X.364 control sequences.
-# In the main table, \E stands for an escape (\033) character, SPC for space.
-# Pn stands for a single numeric parameter to be inserted in decimal ASCII.
-# Ps stands for a list of such parameters separated by semicolons
-#
-#                                                   Default    Type
-# Sequence     Sequence                             Parameter   or
-# Mnemonic     Name              Sequence           Value      Mode   terminfo
-# -----------------------------------------------------------------------------
-# APC  Applicatn Program Command \E Fe               -         Delim  -
-# CBT  Cursor Backward Tab       \E [ Pn Z           1         eF     cbt
-# CCH  Cancel Previous Character \E T                -         -      -
-# CHA  Cursor Horzntal Absolute  \E [ Pn G           1         eF     hpa (1)
-# CHT  Cursor Horizontal Tab     \E [ Pn I           1         eF     tab (2)
-# CNL  Cursor Next Line          \E [ Pn E           1         eF     nel (3)
-# CPL  Cursor Preceding Line     \E [ Pn F           1         eF     -
-# CPR  Cursor Position Report    \E [ Pn ; Pn R      1, 1      -      -
-# CSI  Control Sequence Intro    \E [                -         Intro  -
-# CTC  Cursor Tab Control        \E [ Ps W           0         eF     -
-# CUB  Cursor Backward           \E [ Pn D           1         eF     cub
-# CUD  Cursor Down               \E [ Pn B           1         eF     cud
-# CUF  Cursor Forward            \E [ Pn C           1         eF     cuf
-# CUP  Cursor Position           \E [ Pn ; Pn H      1, 1      eF     cup (4)
-# CUU  Cursor Up                 \E [ Pn A           1         eF     cuu
-# CVT  Cursor Vertical Tab       \E [ Pn Y           -         eF     -
-# DA   Device Attributes         \E [ Pn c           0         -      -
-# DAQ  Define Area Qualification \E [ Ps o           0         -      -
-# DCH  Delete Character          \E [ Pn P           1         eF     dch
-# DCS  Device Control String     \E P                -         Delim  -
-# DL   Delete Line               \E [ Pn M           1         eF     dl
-# DMI  Disable Manual Input      \E \                -         Fs     -
-# DSR  Device Status Report      \E [ Ps n           0         -      -
-# EA   Erase in Area             \E [ Ps O           0         eF     -
-# ECH  Erase Character           \E [ Pn X           1         eF     ech
-# ED   Erase in Display          \E [ Ps J           0         eF     ed  (5)
-# EF   Erase in Field            \E [ Ps N           0         eF     -
-# EL   Erase in Line             \E [ Ps K           0         eF     el  (5)
-# EMI  Enable Manual Input       \E b                          Fs     -
-# EPA  End of Protected Area     \E W                -         -      -
-# ESA  End of Selected Area      \E G                -         -      -
-# FNT  Font Selection            \E [ Pn ; Pn SPC D  0, 0      FE     -
-# GSM  Graphic Size Modify       \E [ Pn ; Pn SPC B  100, 100  FE     -
-# GSS  Graphic Size Selection    \E [ Pn SPC C       none      FE     -
-# HPA  Horz Position Absolute    \E [ Pn `           1         FE     (1)
-# HPR  Horz Position Relative    \E [ Pn a           1         FE     (6)
-# HTJ  Horz Tab w/Justification  \E I                -         FE     (2)
-# HTS  Horizontal Tab Set        \E H                -         FE     hts
-# HVP  Horz & Vertical Position  \E [ Pn ; Pn f      1, 1      FE     (4)
-# ICH  Insert Character          \E [ Pn @           1         eF     ich
-# IL   Insert Line               \E [ Pn L           1         eF     il
-# IND  Index                     \E D                -         FE     -
-# INT  Interrupt                 \E a                -         Fs     -
-# JFY  Justify                   \E [ Ps SPC F       0         FE     -
-# MC   Media Copy                \E [ Ps i           0         -      -
-# MW   Message Waiting           \E U                -         -      -
-# NEL  Next Line                 \E E                -         FE     nel (3)
-# NP   Next Page                 \E [ Pn U           1         eF     -
-# OSC  Operating System Command  \E ]                -         Delim  -
-# PLD  Partial Line Down         \E K                -         FE     -
-# PLU  Partial Line Up           \E L                -         FE     -
-# PM   Privacy Message           \E ^                -         Delim  -
-# PP   Preceding Page            \E [ Pn V           1         eF     -
-# PU1  Private Use 1             \E Q                -         -      -
-# PU2  Private Use 2             \E R                -         -      -
-# QUAD Typographic Quadding      \E [ Ps SPC H       0         FE     -
-# REP  Repeat Char or Control    \E [ Pn b           1         -      rep
-# RI   Reverse Index             \E M                -         FE     -
-# RIS  Reset to Initial State    \E c                -         Fs     -
-# RM   Reset Mode                \E [ Ps l           none      -      -
-# SD   Scroll Down               \E [ Pn T           1         eF     rin
-# SEM  Select Edit Extent Mode   \E [ Ps Q           0         -      -
-# SGR  Select Graphic Rendition  \E [ Ps m           0         FE     sgr (7)
-# SL   Scroll Left               \E [ Pn SPC @       1         eF     -
-# SM   Select Mode               \E [ Ps h           none      -      -
-# SPA  Start of Protected Area   \E V                -         -      -
-# SPI  Spacing Increment         \E [ Pn ; Pn SPC G  none      FE     -
-# SR   Scroll Right              \E [ Pn SPC A       1         eF     -
-# SS2  Single Shift 2 (G2 set)   \E N                -         Intro  -
-# SS3  Single Shift 3 (G3 set)   \E O                -         Intro  -
-# SSA  Start of Selected Area    \E F                -         -      -
-# ST   String Terminator         \E \                -         Delim  -
-# STS  Set Transmit State        \E S                -         -      -
-# SU   Scroll Up                 \E [ Pn S           1         eF     indn
-# TBC  Tab Clear                 \E [ Ps g           0         FE     tbc
-# TSS  Thin Space Specification  \E [ Pn SC E        none      FE     -
-# VPA  Vert Position Absolute    \E [ Pn d           1         FE     vpa
-# VPR  Vert Position Relative    \E [ Pn e           1         FE     (8)
-# VTS  Vertical Tabulation Set   \E J                -         FE     -
-# 
-# ---------------------------------------------------------------------------
-#
-# Notes:
-#
-# (1) There seems to be some confusion abroad between CHA and HPA.  Most
-# `ANSI' terminals accept the CHA sequence, not the HPA. but terminfo calls
-# the capability (hpa).
-#
-# (2) CHT corresponds to terminfo (tab).  Usually it has the value ^I.
-# Occasionally (as on, for example, certain HP terminals) this has the HTJ
-# value.
-#
-# (3) terminfo (nel) is usually \r\n rather than ANSI \EE.
-#
-# (4) CUP and HVP are identical in effect.  Some ANSI.SYS versions accept
-# HVP, but always allow CUP as an alternate.
-#
-# (5) See the VT100 discussion for the meaning of the ED parameter.
-# 
-# (6) Some ANSI.SYS versions accept HPR, but more commonly `ANSI' terminals
-# use CUF for this function and ignore HPR
-#
-# (7) In SGR, the ANSI.SYS values for attributes are now nearly universal.
-#
-# (8) Some ANSI.SYS versions accept VPR, but more commonly `ANSI' terminals
-# use CUD for this function and ignore VPR.
-#
-# ---------------------------------------------------------------------------
-# 
-# Abbreviations:
-#
-# Intro  an Introducer of some kind of defined sequence; the normal 7-bit
-#        X3.64 Control Sequence Introducer is the two characters "Escape ["
-# 
-# Delim  a Delimiter
-# 
-# x/y    identifies a character by position in the ASCII table (column/row)
-# 
-# eF     editor function (see explanation)
-# 
-# FE     format effector (see explanation)
-# 
-# F      is a Final character in
-#             an Escape sequence (F from 3/0 to 7/14 in the ASCII table)
-#             a control sequence (F from 4/0 to 7/14)
-# 
-# Gs     is a graphic character appearing in strings (Gs ranges from
-#        2/0 to 7/14) in the ASCII table
-# 
-# Ce     is a control represented as a single bit combination in the C1 set
-#        of controls in an 8-bit character set
-# 
-# C0     the familiar set of 7-bit ASCII control characters
-# 
-# C1     roughly, the set of control characters available only in 8-bit systems.
-#        This is too complicated to explain fully here, so read Jim Fleming's
-#        article in the February 1983 BYTE, especially pages 214 through 224.
-# 
-# Fe     is a Final character of a 2-character Escape sequence that has an
-#        equivalent representation in an 8-bit environment as a Ce-type
-#        (Fe ranges from 4/0 to 5/15)
-# 
-# Fs     is a Final character of a 2-character Escape sequence that is
-#        standardized internationally with identical representation in 7-bit
-#        and 8-bit environments and is independent of the currently
-#        designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14)
-# 
-# I      is an Intermediate character from 2/0 to 2/15 (inclusive) in the
-#        ASCII table
-# 
-# P      is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII
-#        table
-# 
-# Pn     is a numeric parameter in a control sequence, a string of zero or
-#        more characters ranging from 3/0 to 3/9 in the ASCII table
-# 
-# Ps     is a variable number of selective parameters in a control sequence
-#        with each selective parameter separated from the other by the code
-#        3/11 (which usually represents a semicolon); Ps ranges from
-#        3/0 to 3/9 and includes 3/11
-# 
-# Format Effectors versus Editor Functions
-# 
-# A format effector specifies how following output is to be displayed.
-# An editor function allows you to modify the display.  Informally
-# format effectors may be destructive; format effectors should not be.
-# 
-# For instance, a format effector that moves the "active position" (the 
-# cursor or equivalent) one space to the left would be useful when you want to
-# create an overstrike, a compound character made of two standard characters
-# overlaid. Control-H, the Backspace character, is actually supposed to be a
-# format effector, so you can do this. But many systems use it in a
-# nonstandard fashion, as an editor function, deleting the character to the
-# left of the cursor and moving the cursor left. When Control-H is assumed to
-# be an editor function, you cannot predict whether its use will create an
-# overstrike unless you also know whether the output device is in an "insert
-# mode" or an "overwrite mode". When Control-H is used as a format effector,
-# its effect can always be predicted. The familiar characters carriage
-# return, linefeed, formfeed, etc., are defined as format effectors.
-#
-# The ANSI Standard
-# 
-# The complete document describing the standard,  "ANSI X3.64-1979:
-# Additional Controls for Use with the American National Standard
-# Code for Information Interchange," can be ordered for $13.50 (plus
-# $4 postage) from
-# 
-#      Standards Sales Department
-#      American National Standards Institute
-#      1430 Broadway
-#      New York, NY 10018
-#      212/354-3300
-# 
-# It's best to read the full standard before using it. It also helps
-# to have copies of the related standards "X3.4-1977: American
-# National Standard Code for Information Interchange" (the ASCII
-# standard) and "X3.41.1974: Code-Extension Techniques for Use with
-# the 7-Bit Coded Character Set of American National Standard for
-# Information Interchange."
-# 
-# NOTES ON THE DEC VT100 IMPLEMENTATION
-# 
-# Control sequences implemented in the VT100 are as follows:
-# 
-#      CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND,
-#      LNM, NEL, RI, RIS, RM, SGR, SM, TBC
-# 
-# plus several private DEC commands.
-# 
-# Erasing parts of the display (EL and ED) in the VT100 is performed thus:
-# 
-#      Erase from cursor to end of line           Esc [ 0 K    or Esc [ K
-#      Erase from beginning of line to cursor     Esc [ 1 K
-#      Erase line containing cursor               Esc [ 2 K
-#      Erase from cursor to end of screen         Esc [ 0 J    or Esc [ J
-#      Erase from beginning of screen to cursor   Esc [ 1 J
-#      Erase entire screen                        Esc [ 2 J
-# 
-# The VT100 responds to receiving the DA (Device Attributes) control
-# 
-#      Esc [ c    (or Esc [ 0 c)
-# 
-# by transmitting the sequence
-# 
-#      Esc [ ? l ; Ps c
-# 
-# where Ps is a character that describes installed options.
-# 
-# The VT100's cursor location can be read with the DSR (Device Status
-# Report) control
-# 
-#      Esc [ 6 n
-# 
-# The VT100 reports by transmitting the CPR sequence
-# 
-#      Esc [ Pl ; Pc R
-# 
-# where Pl is the line number and Pc is the column number (in decimal).
-# 
-# The specification for the DEC VT100 is document EK-VT100-UG-003.
-# 
-# NOTES ON `PC-TERM' COMPATIBILITY
-#
-# The MS-DOS ANSI.SYS driver has set the de-facto standard for attribute
-# and color values in the SGR string.  These are as follows:
-#
-# 0    all attributes off
-# 1    foreground bright
-# 4    underscore on
-# 5    blink on/background bright (not reliable with brown)
-# 7    reverse-video
-# 8    set blank (non-display)
-# 10   set primary font
-# 11   set first alternate font (on PCs, display ROM characters 1-31)
-# 12   set second alternate font (on PCs, display IBM high-half chars)
-#
-#                      Color attribute sets
-# 3n   set foreground color       / 0=black, 1=red,     2=green, 3=brown,
-# 4n   set background color       \ 4=blue,  5=magenta, 6=cyan,  7=white
-# Bright black becomes gray.  Bright brown becomes yellow,
-#      
-# * Many VGA cards (such as the Paradise and compatibles) do the wrong thing
-#   when you try to set a "bright brown" (yellow) background with attribute
-#   5 (you get a blinking yellow foreground instead).  A few displays
-#   (including the System V console) support an attribute 6 that undoes this
-#   braindamage.
-#
-# * Some older versions of ANSI.SYS have a bug that causes thems to require
-#   ESC [ Pn k as EL rather than the ANSI ESC [ Pn K.
-
-######## NONSTANDARD CAPABILITY TRANSLATIONS USED IN THIS FILE
-#
-# The historical termcap file entries were written primarily in 4.4BSD termcap.
-# The 4.4BSD termcap set was substantially larger than the original 4.1BSD set,
-# with the extension names chosen for compatibility with the termcap names
-# assigned in System V terminfo.  There are some variant extension sets out
-# there.  We try to describe them here.
-#
-# XENIX extensions:
-#
-# The XENIX extensions include a set of function-key capabilities as follows:
-#
-#       code   XENIX variable name     terminfo name   name clashes?
-#      ----    -------------------     -------------   -----------------------
-#      CL      key_char_left
-#      CR      key_char_right
-#      CW      key_change_window                       create_window
-#      EN      key_end                 kend
-#      HM      key_home                khome
-#      HP      ??
-#      LD      key_delete_line         kdl1
-#      LF      key_linefeed                            label_off
-#      NU      key_next_unlocked_cell
-#      PD      key_page_down           knp
-#      PL      ??
-#      PN      start_print             mc5
-#      PR      ??
-#      PS      stop_print              mc4
-#      PU      key_page_up             kpp             pulse
-#      RC      key_recalc                              remove_clock
-#      RF      key_toggle_ref                          req_for_input
-#      RT      key_return              kent
-#      UP      key_up_arrow            kcuu1           parm_up_cursor
-#      WL      key_word_left
-#      WR      key_word_right
-#
-# The XENIX extensions also include the following character-set and highlight
-# capabilities:
-#
-#      XENIX   terminfo        function
-#      -----   --------        ------------------------------
-#      GS      smacs           start alternate character set
-#      GE      rmacs           end alternate character set
-#      GG                      :as:/:ae: glitch (analogous to :sg:/:ug:)
-#      bo      blink           begin blink (not used in /etc/termcap)
-#      be                      end blink (not used in /etc/termcap)
-#      bb                      blink glitch  (not used in /etc/termcap)
-#      it      dim             begin dim (not used in /etc/termcap)
-#      ie                      end dim (not used in /etc/termcap)
-#      ig                      dim glitch  (not used in /etc/termcap)
-#
-# XENIX also supposedly uses the following forms-drawing capabilities:
-#
-#      single  double type
-#      ------  ------  -------------
-#      gv      GV      vertical line (|)
-#      gh      GH      horizontal line (-)
-#      g1      G1      top right corner
-#      g4      G4      bottom right corner (_|)
-#      g2      G2      top left corner
-#      g3      G3      bottom left corner (|_)
-#      gd      GD      down-tick character (T)
-#      gl      GL      left-tick character (-|)
-#      gr      GR      right-tick character (|-)
-#      gc      GC      middle intersection (-|-)
-#      gu      GU      up-tick character (_|_)
-#
-# However, there is some confusion about case.  The scoansi entry uses
-# mixed-case versions of these, and the historical ibmpcx, lisa, trs16, and fos
-# entries have only the uppercase versions.  Accordingly, the ncurses tools
-# don't try to translate these.
-#
-# AT&T Extensions:
-#
-# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
-# nonstandard capabilities.  Its signature is the KM capability, used to name
-# some sort of keymap file.  EE, BO, CI, CV, XS, DS, FL and FE are in this
-# set.  Comments in the original, and a little cross-checking with other AT&T
-# documentation, seem to establish that BO=:mr: (start reverse video), DS=:mh:
-# (start dim), XS=:mk: (secure/invisible mode), EE=:me: (end highlights),
-# FL=:LO: (enable soft labels), FE=:LF: (disable soft labels), CI=:vi: (make
-# cursor invisible), and CV=:ve: (make cursor normal).
-#
-# TC Extensions:
-#
-# There is a set of extended termcaps associated with something
-# called the "Terminal Control" or TC package created by MainStream Systems,
-# Winfield Kansas.  This one also uses GS/GE for as/ae, and also uses
-# CF for civis and CO for cvvis.  Finally, they define a boolean :ct:
-# that flags color terminals.
-
-######## CHANGE HISTORY
-#
-# 9.1.0 (Wed Feb  1 04:50:32 EST 1995):
-#      * First terminfo master translated from 8.3.
-# 9.2.0 (Wed Feb  1 12:21:45 EST 1995):
-#      * Replaced Wyse entries with updated entries supplied by vendor.
-# 9.3.0 (Mon Feb  6 19:14:40 EST 1995):
-#      * Added contact & status info from G. Clark Brown <clark@sssi.com>.
-# 9.3.1 (Tue Feb  7 12:00:24 EST 1995):
-#      * Better XENIX keycap translation.  Describe TC termcaps.
-#      * Contact and history info supplied by Qume.
-# 9.3.2 (Sat Feb 11 23:40:02 EST 1995):
-#      * Raided the Shufort FTP site for recent termcaps/terminfos.
-#      * Added information on X3.64 and VT100 standard escape sequences.
-# 9.3.3 (Mon Feb 13 12:26:15 EST 1995):
-#      * Added a correct X11R6 xterm entry.
-#      * Fixed terminfo translations of padding.
-# 9.3.4 (Wed Feb 22 19:27:34 EST 1995):
-#      * Added correct acsc/smacs/rmacs strings for vt100 and xterm.
-#      * Added u6/u7/u8/u9 capabilities.
-#      * Added PCVT entry.
-# 9.3.5 (Thu Feb 23 09:37:12 EST 1995):
-#      * Emacs uses :so:, not :mr:, for its mode line.  Fix linux entry
-#        to use reverse-video standout so Emacs will look right.
-#      * Added el1 capability to ansi.
-#      * Added smacs/rmacs to ansi.sys.
-# 9.4.0 (Sat Feb 25 16:43:25 EST 1995):
-#      * New mt70 entry.
-#      * Added COPYRIGHTS AND OTHER DELUSIONS.
-#      * Added AT&T 23xx & 500/513, vt220 and vt420, opus3n1+, netronics
-#        smartvid & smarterm, ampex 175 & 219 & 232,
-#        env230, falco ts100, fluke, intertube, superbrain, ncr7901, vic20,
-#        ozzie, trs200, tr600, Tandy & Texas Instruments VDTs, intext2,
-#        screwpoint, fviewpoint, Contel Business Systems, Datamedia Colorscan,
-#        adm36, mime314, ergo4000, ca22851.  Replaced att7300, esprit, dd5500.
-#      * Replaced the Perkin-Elmer entries with vendor's official ones.
-#      * Restored the old minimal-ansi entry, luna needs it.
-#      * Fixed some incorrect ip and proportional-padding translations.
-# 9.4.1 (Mon Feb 27 14:18:33 EST 1995):
-#      * Fix linux & AT386 sgr strings to do A_ALTCHARSET turnoff correctly.
-#      * Make the xterm entry 65 lines again; create xterm25 and xterm24
-#        to force a particular height.
-#      * Added beehive4 and reorganized other Harris entries.
-# 9.4.2 (Thu Mar  9 01:45:44 EST 1995):
-#      * Merged in DEC's official entries for its terminals.  The only old
-#        entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo).
-#      * Replaced the translated BBN Bitgraph entries with purpose-built
-#        ones from AT&T's SVr3.
-#      * Replaced the AT&T entries with AT&T's official terminfos.
-#      * Added teleray 16, vc415, cops10. 
-#      * Merged in many individual capabilities from SCO terminfo files.
-# 9.4.3 (Mon Mar 13 02:37:53 EST 1995):
-#      * Typo fixes.
-#      * Change linux entry so A_PROTECT enables IBM-PC ROM characters.
-# 9.4.4 (Mon Mar 27 12:32:35 EST 1995):
-#      * Added tty35, Ann Arbor Guru series. vi300 and 550, cg7900, tvi803,
-#        pt210, ibm3164, IBM System 1, ctrm, Tymshare scanset, dt200, adm21,
-#        simterm, citoh and variants.
-#      * Replaced sol entry with sol1 and sol2.
-#      * Replaced Qume QVT and Freedom-series entries with purpose-built
-#        terminfo entries.
-#      * Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek
-#        and dg200 entries using caps from from SCO.
-#      * Added the usual set of function-key mappings to ANSI entry.
-#      * Corrected xterm's function-key capabilities.
-# 9.4.5 (Tue Mar 28 14:27:49 EST 1995):
-#      * Fix in xterm entry, cub and cud are not reliable under X11R6.
-# 9.4.6 (Thu Mar 30 14:52:15 EST 1995):
-#      * Fix in xterm entry, get the arrow keys right.
-#      * Change some \0 escapes to \200.
-# 9.4.7 (Tue Apr  4 11:27:11 EDT 1995)
-#      * Added apple (Videx card), adm1a, oadm31.
-#      * Fixed malformed ampex csr.
-#      * Fixed act4, cyb110; they had old-style prefix padding left in. 
-#      * Changed mandatory to advisory padding in many entries.
-#      * Replaced HP entries up to hpsub with purpose-built ones.
-#      * Blank rmir/smir/rmdc/smdc capabilities removed.
-#      * Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924.
-# 9.4.8 (Fri Apr  7 09:36:34 EDT 199):
-#      * Replaced the Ann Arbor entries with SCO's, the init strings are
-#        more efficient (but the entries otherwise identical).
-#      * Added dg211 from Shuford archive.
-#      * Added synertek, apple-soroc, ibmpc, pc-venix, pc-coherent, xtalk,
-#        adm42-nl, pc52, gs6300, xerox820, uts30.
-#      * Pull SCO's padding into vi200 entry.
-#      * Improved capabilities for tvi4107 and other Televideo and Viewpoint
-#        entries merged in from SCO's descriptions.
-#      * Fixed old-style prefix padding on zen50, h1500.
-#      * Moved old superbee entry to superbee-xsb, pulled in new superbee
-#        entry from SCO's description.
-#      * Reorganized the special entries.
-#      * Added lm#0 to cbunix and virtual entries.
-#
-# 9.5.0 (Mon Apr 10 11:30:00 EDT 1995):
-#      * Restored cdc456tst.
-#      * Fixed sb1 entry, SCO erroneously left out the xsb glitch.
-#      * Added megatek, beacon, microkit.
-#      * Freeze for ncurses-1.9 release.
-#
-# 9.5.1 (Fri Apr 21 12:46:42 EDT 1995):
-#      * Added historical data for TAB.
-#      * Comment fixes from David MacKenzie.
-#      * Added the new BSDI pc3 entry.
-#
-# 9.5.2 (Tue Apr 25 17:27:52 EDT 1995)
-#      * A change in the tic -C logic now ensures that all entries in 
-#        the termcap translation will fit in < 1024 bytes.
-#      * Added `bobcat' and `gator' HP consoles and the Nu machine entries
-#        from GNU termcap file.  This merges in all their local information.
-#
-# 9.5.3 (Tue Apr 25 22:28:13 EDT 1995)
-#      * Changed tic -C logic to dump all capabilities used by GNU termcap.
-#      * Added warnings about entries with long translations (restoring
-#        all the GNU termcaps pushes a few over the edge).
-#
-# 9.5.4 (Wed Apr 26 15:35:09 EDT 1995)
-#      * Yet another tic change, and a couple of entry tweaks, to reduce the
-#        number of long (> 1024) termcap translations back to 0.
-#
-# 9.6.0 (Mon May  1 10:35:54 EDT 1995)
-#      * Added kf13-kf20 to Linux entry.
-#      * Regularize Prime terminal names.
-#      * Historical data on Synertek.
-#      * Freeze for ncurses-1.9.1.
-#
-# 9.6.1 (Sat May  6 02:00:52 EDT 1995):
-#      * Added true xterm-color entry, renamed djm's pseudo-color entry.
-#      * Eliminate whitespace in short name fields, this tanks some scripts.
-#      * Name field changes to shorten some long entries.
-#      * Termcap translation now automatically generates empty rmir/smir
-#        when ich1/ich is present (copes with an ancient vi bug).
-#      * Added `screen' entries from FSF's screen-3.6.2.
-#      * Added linux-nic and xterm-nic entries.
-#
-# 9.6.2 (Sat May  6 17:00:55 EDT 1995):
-#      * Change linux entry to use smacs=\E[11m and have an explicit acsc,
-#        eliminating some special-case code in ncurses.
-#
-# 9.7.0 (Tue May  9 18:03:12 EDT 1995):
-#      * Added vt320-k3, rsvidtx from the Emacs termcap.dat file.  I think
-#        that captures everything unique from it.
-#      * Added reorder script generator.
-#      * Freeze for ncurses 1.9.2 release.
-#
-# 9.7.1 (Thu Jun 29 09:35:22 EDT 1995):
-#      * Added Sean Farley's kspd, flash, rs1 capabilities for linux.
-#      * Added Olaf Siebert's corrections for adm12.
-#      * ansi-pc-color now includes the colors and pairs caps, so that
-#        entries which use it will inherit them automatically.
-#      * The linux entry can now recognize the center (keypad 5) key.
-#      * Removed some junk that found its way into Linux acsc.
-#
-# 9.8.0 (Fri Jul  7 04:46:57 EDT 1995):
-#      * Add 50% cut mark as a desperate hack to reduce tic's core usage.
-#      * xterm doesn't try to use application keypad mode any more.
-#      * Freeze for ncurses-1.9.3 release.
-#
-# 9.8.1 (Thu Jul 19 17:02:12 EDT 1995):
-#      * Added corrected sun entry from vendor.
-#      * Added csr capability to linux entry.
-#      * Peter Wemm says the at386 hpa should be \E[%i%p1%dG, not \E[%p1%dG.
-#      * Added vt102-nsgr to cope with stupid IBM PC `VT100' emulators.
-#      * Some commented-out caps in long entries come back in, my code 
-#        for computing string-table lengths had a bug in it.
-#      * pcansi series modified to fit comm-program reality better.
-#
-######## REORDER
-#
-# Older termcap distributions featured a kluge called `reorder' intended to
-# time-optimize access to selected terminals by moving them to the front of
-# the file.  This is obsolete under terminfo, but for completeness's sake
-# we give a reorder script generator here (strip off the leading #s to use).
-#
-#: mkreorder --  generate script to optimize access to given terminal types
-#:
-#: entries named on command line will be sorted to the front in reverse order
-#echo "ed -- termcap <<EOF"
-#for x in $*
-#do
-#      echo "/^$x[|:]/;.,/^[a-z#]/-1m0"
-#done
-#echo "0a"
-#echo "."
-#echo "w termcap.sorted"
-#echo "q"
-#echo "EOF"
-#:end of script
-#
-# Invoke this script like this:
-#
-#      mkreorder h19 wy60 vt100 >reorder
-#
-# The following sets edit modes for GNU EMACS
-# Local Variables:
-# fill-prefix:"\t"
-# fill-column:75
-# End:
-######## SHANTIH!  SHANTIH!  SHANTIH!
diff --git a/lib/termcap/grot/termcap.texi b/lib/termcap/grot/termcap.texi
deleted file mode 100644 (file)
index eab49e8..0000000
+++ /dev/null
@@ -1,3617 +0,0 @@
-\input texinfo  @c -*-texinfo-*-
-@setfilename termcap.info
-@settitle The Termcap Library
-@smallbook
-
-@ifinfo
-This file documents the termcap library of the GNU system.
-
-Copyright (C) 1988 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end ifinfo
-
-@setchapternewpage odd
-
-@c @shorttitlepage The Termcap Manual
-
-@titlepage
-@ignore
-@sp 6
-@center @titlefont{Termcap}
-@sp 1
-@center The Termcap Library and Data Base
-@sp 4
-@center Second Edition
-@sp 1
-@center December 1992
-@sp 5
-@center Richard M. Stallman
-@sp 1
-@center Free Software Foundation
-@end ignore
-
-@c Real title page
-@title The Termcap Manual
-@subtitle The Termcap Library and Data Base
-@subtitle Second Edition
-@subtitle December 1992
-@author Richard M. Stallman
-@page
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1988 Free Software Foundation, Inc.
-
-Published by the Free Software Foundation
-(59 Temple Place, Suite 330, Boston, MA 02111 USA).
-Printed copies are available for $10 each.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@sp 2
-Cover art by Etienne Suvasa.
-@end titlepage
-@page
-
-@synindex vr fn
-
-@node Top, Introduction, (dir), (dir)
-
-@menu
-* Introduction::  What is termcap?  Why this manual?
-* Library::     The termcap library functions.
-* Data Base::   What terminal descriptions in @file{/etc/termcap} look like.
-* Capabilities::  Definitions of the individual terminal capabilities:
-                 how to write them in descriptions, and how to use
-                 their values to do display updating.
-* Summary::     Brief table of capability names and their meanings.
-* Var Index::   Index of C functions and variables.
-* Cap Index::   Index of termcap capabilities.
-* Index::       Concept index.
-
- --- The Detailed Node Listing ---
-
-The Termcap Library
-
-* Preparation::  Preparing to use the termcap library.
-* Find::        Finding the description of the terminal being used.
-* Interrogate::  Interrogating the description for particular capabilities.
-* Initialize::  Initialization for output using termcap.
-* Padding::     Outputting padding.
-* Parameters::  Encoding parameters such as cursor positions.
-
-Padding
-
-* Why Pad::     Explanation of padding.
-* Not Enough::  When there is not enough padding.
-* Describe Padding::  The data base says how much padding a terminal needs.
-* Output Padding::    Using @code{tputs} to output the needed padding.
-
-Filling In Parameters
-
-* Encode Parameters::  The language for encoding parameters.
-* Using Parameters::   Outputting a string command with parameters.
-
-Sending Display Commands with Parameters
-
-* tparam::      The general case, for GNU termcap only.
-* tgoto::       The special case of cursor motion.
-
-The Format of the Data Base
-
-* Format::      Overall format of a terminal description.
-* Capability Format::  Format of capabilities within a description.
-* Naming::      Naming conventions for terminal types.
-* Inheriting::  Inheriting part of a description from
-a related terminal type.
-* Changing::    When changes in the data base take effect.
-
-Definitions of the Terminal Capabilities
-
-* Basic::       Basic characteristics.
-* Screen Size::  Screen size, and what happens when it changes.
-* Cursor Motion::  Various ways to move the cursor.
-* Wrapping::    What happens if you write a character in the last column.
-* Scrolling::   Pushing text up and down on the screen.
-* Windows::     Limiting the part of the window that output affects.
-* Clearing::    Erasing one or many lines.
-* Insdel Line::  Making new blank lines in mid-screen; deleting lines.
-* Insdel Char::  Inserting and deleting characters within a line.
-* Standout::    Highlighting some of the text.
-* Underlining::  Underlining some of the text.
-* Cursor Visibility::  Making the cursor more or less easy to spot.
-* Bell::        Attracts user's attention; not localized on the screen.
-* Keypad::      Recognizing when function keys or arrows are typed.
-* Meta Key::    @key{META} acts like an extra shift key.
-* Initialization::  Commands used to initialize or reset the terminal.
-* Pad Specs::   Info for the kernel on how much padding is needed.
-* Status Line::  A status line displays ``background'' information.
-* Half-Line::   Moving by half-lines, for superscripts and subscripts.
-* Printer::     Controlling auxiliary printers of display terminals.
-@end menu
-
-@node Introduction, Library, Top, Top
-@unnumbered Introduction
-
-@cindex termcap
-@dfn{Termcap} is a library and data base that enables programs to use
-display terminals in a terminal-independent manner.  It originated in
-Berkeley Unix.
-
-The termcap data base describes the capabilities of hundreds of different
-display terminals in great detail.  Some examples of the information
-recorded for a terminal could include how many columns wide it is, what
-string to send to move the cursor to an arbitrary position (including how
-to encode the row and column numbers), how to scroll the screen up one or
-several lines, and how much padding is needed for such a scrolling
-operation.
-
-The termcap library is provided for easy access this data base in programs
-that want to do terminal-independent character-based display output.
-
-This manual describes the GNU version of the termcap library, which has
-some extensions over the Unix version.  All the extensions are identified
-as such, so this manual also tells you how to use the Unix termcap.
-
-The GNU version of the termcap library is available free as source code,
-for use in free programs, and runs on Unix and VMS systems (at least).  You
-can find it in the GNU Emacs distribution in the files @file{termcap.c} and
-@file{tparam.c}.
-
-This manual was written for the GNU project, whose goal is to develop a
-complete free operating system upward-compatible with Unix for user
-programs.  The project is approximately two thirds complete.  For more
-information on the GNU project, including the GNU Emacs editor and the
-mostly-portable optimizing C compiler, send one dollar to
-
-@display
-Free Software Foundation
-675 Mass Ave
-Cambridge, MA 02139
-@end display
-
-@node Library, Data Base, Introduction, Top
-@chapter The Termcap Library
-
-The termcap library is the application programmer's interface to the
-termcap data base.  It contains functions for the following purposes:
-
-@itemize @bullet
-@item
-Finding the description of the user's terminal type (@code{tgetent}).
-
-@item
-Interrogating the description for information on various topics
-(@code{tgetnum}, @code{tgetflag}, @code{tgetstr}).
-
-@item
-Computing and performing padding (@code{tputs}).
-
-@item
-Encoding numeric parameters such as cursor positions into the
-terminal-specific form required for display commands (@code{tparam},
-@code{tgoto}).
-@end itemize
-
-@menu
-* Preparation::  Preparing to use the termcap library.
-* Find::        Finding the description of the terminal being used.
-* Interrogate::  Interrogating the description for particular capabilities.
-* Initialize::  Initialization for output using termcap.
-* Padding::     Outputting padding.
-* Parameters::  Encoding parameters such as cursor positions.
-@end menu
-
-@node Preparation, Find,  , Library
-@section Preparing to Use the Termcap Library
-
-To use the termcap library in a program, you need two kinds of preparation:
-
-@itemize @bullet
-@item
-The compiler needs declarations of the functions and variables in the
-library.
-
-On GNU systems, it suffices to include the header file
-@file{termcap.h} in each source file that uses these functions and
-variables.@refill
-
-On Unix systems, there is often no such header file.  Then you must
-explictly declare the variables as external.  You can do likewise for
-the functions, or let them be implicitly declared and cast their
-values from type @code{int} to the appropriate type.
-
-We illustrate the declarations of the individual termcap library
-functions with ANSI C prototypes because they show how to pass the
-arguments.  If you are not using the GNU C compiler, you probably
-cannot use function prototypes, so omit the argument types and names
-from your declarations.
-
-@item
-The linker needs to search the library.  Usually either
-@samp{-ltermcap} or @samp{-ltermlib} as an argument when linking will
-do this.@refill
-@end itemize
-
-@node Find, Interrogate, Preparation, Library
-@section Finding a Terminal Description: @code{tgetent}
-
-@findex tgetent
-An application program that is going to use termcap must first look up the
-description of the terminal type in use.  This is done by calling
-@code{tgetent}, whose declaration in ANSI Standard C looks like:
-
-@example
-int tgetent (char *@var{buffer}, char *@var{termtype});
-@end example
-
-@noindent
-This function finds the description and remembers it internally so that
-you can interrogate it about specific terminal capabilities
-(@pxref{Interrogate}).
-
-The argument @var{termtype} is a string which is the name for the type of
-terminal to look up.  Usually you would obtain this from the environment
-variable @code{TERM} using @code{getenv ("TERM")}.
-
-If you are using the GNU version of termcap, you can alternatively ask
-@code{tgetent} to allocate enough space.  Pass a null pointer for
-@var{buffer}, and @code{tgetent} itself allocates the storage using
-@code{malloc}.  There is no way to get the address that was allocated,
-and you shouldn't try to free the storage.@refill
-
-With the Unix version of termcap, you must allocate space for the
-description yourself and pass the address of the space as the argument
-@var{buffer}.  There is no way you can tell how much space is needed, so
-the convention is to allocate a buffer 2048 characters long and assume that
-is enough.  (Formerly the convention was to allocate 1024 characters and
-assume that was enough.  But one day, for one kind of terminal, that was
-not enough.)
-
-No matter how the space to store the description has been obtained,
-termcap records its address internally for use when you later interrogate
-the description with @code{tgetnum}, @code{tgetstr} or @code{tgetflag}.  If
-the buffer was allocated by termcap, it will be freed by termcap too if you
-call @code{tgetent} again.  If the buffer was provided by you, you must
-make sure that its contents remain unchanged for as long as you still plan
-to interrogate the description.@refill
-
-The return value of @code{tgetent} is @minus{}1 if there is some difficulty
-accessing the data base of terminal types, 0 if the data base is accessible
-but the specified type is not defined in it, and some other value
-otherwise.
-
-Here is how you might use the function @code{tgetent}:
-
-@smallexample
-#ifdef unix
-static char term_buffer[2048];
-#else
-#define term_buffer 0
-#endif
-
-init_terminal_data ()
-@{
-  char *termtype = getenv ("TERM");
-  int success;
-
-  if (termtype == 0)
-    fatal ("Specify a terminal type with `setenv TERM <yourtype>'.\n");
-
-  success = tgetent (term_buffer, termtype);
-  if (success < 0)
-    fatal ("Could not access the termcap data base.\n");
-  if (success == 0)
-    fatal ("Terminal type `%s' is not defined.\n", termtype);
-@}
-@end smallexample
-
-@noindent
-Here we assume the function @code{fatal} prints an error message and exits.
-
-If the environment variable @code{TERMCAP} is defined, its value is used to
-override the terminal type data base.  The function @code{tgetent} checks
-the value of @code{TERMCAP} automatically.  If the value starts with
-@samp{/} then it is taken as a file name to use as the data base file,
-instead of @file{/etc/termcap} which is the standard data base.  If the
-value does not start with @samp{/} then it is itself used as the terminal
-description, provided that the terminal type @var{termtype} is among the
-types it claims to apply to.  @xref{Data Base}, for information on the
-format of a terminal description.@refill
-
-@node Interrogate, Initialize, Find, Library
-@section Interrogating the Terminal Description
-
-Each piece of information recorded in a terminal description is called a
-@dfn{capability}.  Each defined terminal capability has a two-letter code
-name and a specific meaning.  For example, the number of columns is named
-@samp{co}.  @xref{Capabilities}, for definitions of all the standard
-capability names.
-
-Once you have found the proper terminal description with @code{tgetent}
-(@pxref{Find}), your application program must @dfn{interrogate} it for
-various terminal capabilities.  You must specify the two-letter code of
-the capability whose value you seek.
-
-Capability values can be numeric, boolean (capability is either present or
-absent) or strings.  Any particular capability always has the same value
-type; for example, @samp{co} always has a numeric value, while @samp{am}
-(automatic wrap at margin) is always a flag, and @samp{cm} (cursor motion
-command) always has a string value.  The documentation of each capability
-says which type of value it has.@refill
-
-There are three functions to use to get the value of a capability,
-depending on the type of value the capability has.  Here are their
-declarations in ANSI C:
-
-@findex tgetnum
-@findex tgetflag
-@findex tgetstr
-@example
-int tgetnum (char *@var{name});
-int tgetflag (char *@var{name});
-char *tgetstr (char *@var{name}, char **@var{area});
-@end example
-
-@table @code
-@item tgetnum
-Use @code{tgetnum} to get a capability value that is numeric.  The
-argument @var{name} is the two-letter code name of the capability.  If
-the capability is present, @code{tgetnum} returns the numeric value
-(which is nonnegative).  If the capability is not mentioned in the
-terminal description, @code{tgetnum} returns @minus{}1.
-
-@item tgetflag
-Use @code{tgetflag} to get a boolean value.  If the capability
-@var{name} is present in the terminal description, @code{tgetflag}
-returns 1; otherwise, it returns 0.
-
-@item tgetstr
-Use @code{tgetstr} to get a string value.  It returns a pointer to a
-string which is the capability value, or a null pointer if the
-capability is not present in the terminal description.
-
-There are two ways @code{tgetstr} can find space to store the string value:
-
-@itemize @bullet
-@item
-You can ask @code{tgetstr} to allocate the space.  Pass a null
-pointer for the argument @var{area}, and @code{tgetstr} will use
-@code{malloc} to allocate storage big enough for the value.
-Termcap will never free this storage or refer to it again; you
-should free it when you are finished with it.
-
-This method is more robust, since there is no need to guess how
-much space is needed.  But it is supported only by the GNU
-termcap library.
-
-@item
-You can provide the space.  Provide for the argument @var{area} the
-address of a pointer variable of type @code{char *}.  Before calling
-@code{tgetstr}, initialize the variable to point at available space.
-Then @code{tgetstr} will store the string value in that space and will
-increment the pointer variable to point after the space that has been
-used.  You can use the same pointer variable for many calls to
-@code{tgetstr}.
-
-There is no way to determine how much space is needed for a single
-string, and no way for you to prevent or handle overflow of the area
-you have provided.  However, you can be sure that the total size of
-all the string values you will obtain from the terminal description is
-no greater than the size of the description (unless you get the same
-capability twice).  You can determine that size with @code{strlen} on
-the buffer you provided to @code{tgetent}.  See below for an example.
-
-Providing the space yourself is the only method supported by the Unix
-version of termcap.
-@end itemize
-@end table
-
-Note that you do not have to specify a terminal type or terminal
-description for the interrogation functions.  They automatically use the
-description found by the most recent call to @code{tgetent}.
-
-Here is an example of interrogating a terminal description for various
-capabilities, with conditionals to select between the Unix and GNU methods
-of providing buffer space.
-
-@example
-char *tgetstr ();
-
-char *cl_string, *cm_string;
-int height;
-int width;
-int auto_wrap;
-
-char PC;   /* For tputs.  */
-char *BC;  /* For tgoto.  */
-char *UP;
-
-interrogate_terminal ()
-@{
-#ifdef UNIX
-  /* Here we assume that an explicit term_buffer
-     was provided to tgetent.  */
-  char *buffer
-    = (char *) malloc (strlen (term_buffer));
-#define BUFFADDR &buffer
-#else
-#define BUFFADDR 0
-#endif
-
-  char *temp;
-
-  /* Extract information we will use.  */
-  cl_string = tgetstr ("cl", BUFFADDR);
-  cm_string = tgetstr ("cm", BUFFADDR);
-  auto_wrap = tgetflag ("am");
-  height = tgetnum ("li");
-  width = tgetnum ("co");
-
-  /* Extract information that termcap functions use.  */
-  temp = tgetstr ("pc", BUFFADDR);
-  PC = temp ? *temp : 0;
-  BC = tgetstr ("le", BUFFADDR);
-  UP = tgetstr ("up", BUFFADDR);
-@}
-@end example
-
-@noindent
-@xref{Padding}, for information on the variable @code{PC}.  @xref{Using
-Parameters}, for information on @code{UP} and @code{BC}.
-
-@node Initialize, Padding, Interrogate, Library
-@section Initialization for Use of Termcap
-@cindex terminal flags (kernel)
-
-Before starting to output commands to a terminal using termcap,
-an application program should do two things:
-
-@itemize @bullet
-@item
-Initialize various global variables which termcap library output
-functions refer to.  These include @code{PC} and @code{ospeed} for
-padding (@pxref{Output Padding}) and @code{UP} and @code{BC} for
-cursor motion (@pxref{tgoto}).@refill
-
-@item
-Tell the kernel to turn off alteration and padding of horizontal-tab
-characters sent to the terminal.
-@end itemize
-
-To turn off output processing in Berkeley Unix you would use @code{ioctl}
-with code @code{TIOCLSET} to set the bit named @code{LLITOUT}, and clear
-the bits @code{ANYDELAY} using @code{TIOCSETN}.  In POSIX or System V, you
-must clear the bit named @code{OPOST}.  Refer to the system documentation
-for details.@refill
-
-If you do not set the terminal flags properly, some older terminals will
-not work.  This is because their commands may contain the characters that
-normally signify newline, carriage return and horizontal tab---characters
-which the kernel thinks it ought to modify before output.
-
-When you change the kernel's terminal flags, you must arrange to restore
-them to their normal state when your program exits.  This implies that the
-program must catch fatal signals such as @code{SIGQUIT} and @code{SIGINT}
-and restore the old terminal flags before actually terminating.
-
-Modern terminals' commands do not use these special characters, so if you
-do not care about problems with old terminals, you can leave the kernel's
-terminal flags unaltered.
-
-@node Padding, Parameters, Initialize, Library
-@section Padding
-@cindex padding
-
-@dfn{Padding} means outputting null characters following a terminal display
-command that takes a long time to execute.  The terminal description says
-which commands require padding and how much; the function @code{tputs},
-described below, outputs a terminal command while extracting from it the
-padding information, and then outputs the padding that is necessary.
-
-@menu
-* Why Pad::     Explanation of padding.
-* Not Enough::  When there is not enough padding.
-* Describe Padding::  The data base says how much padding a terminal needs.
-* Output Padding::  Using @code{tputs} to output the needed padding.
-@end menu
-
-@node Why Pad, Not Enough,  , Padding
-@subsection Why Pad, and How
-
-Most types of terminal have commands that take longer to execute than they
-do to send over a high-speed line.  For example, clearing the screen may
-take 20msec once the entire command is received.  During that time, on a
-9600 bps line, the terminal could receive about 20 additional output
-characters while still busy clearing the screen.  Every terminal has a
-certain amount of buffering capacity to remember output characters that
-cannot be processed yet, but too many slow commands in a row can cause the
-buffer to fill up.  Then any additional output that cannot be processed
-immediately will be lost.
-
-To avoid this problem, we normally follow each display command with enough
-useless charaters (usually null characters) to fill up the time that the
-display command needs to execute.  This does the job if the terminal throws
-away null characters without using up space in the buffer (which most
-terminals do).  If enough padding is used, no output can ever be lost.  The
-right amount of padding avoids loss of output without slowing down
-operation, since the time used to transmit padding is time that nothing
-else could be done.
-
-The number of padding characters needed for an operation depends on the
-line speed.  In fact, it is proportional to the line speed.  A 9600 baud
-line transmits about one character per msec, so the clear screen command in
-the example above would need about 20 characters of padding.  At 1200 baud,
-however, only about 3 characters of padding are needed to fill up 20msec.
-
-@node Not Enough, Describe Padding, Why Pad, Padding
-@subsection When There Is Not Enough Padding
-
-There are several common manifestations of insufficient padding.
-
-@itemize @bullet
-@item
-Emacs displays @samp{I-search: ^Q-} at the bottom of the screen.
-
-This means that the terminal thought its buffer was getting full of
-display commands, so it tried to tell the computer to stop sending
-any.
-
-@item
-The screen is garbled intermittently, or the details of garbling vary
-when you repeat the action.  (A garbled screen could be due to a
-command which is simply incorrect, or to user option in the terminal
-which doesn't match the assumptions of the terminal description, but
-this usually leads to reproducible failure.)
-
-This means that the buffer did get full, and some commands were lost.
-Many changeable factors can change which ones are lost.
-
-@item
-Screen is garbled at high output speeds but not at low speeds.
-Padding problems nearly always go away at low speeds, usually even at
-1200 baud.
-
-This means that a high enough speed permits commands to arrive faster
-than they can be executed.
-@end itemize
-
-Although any obscure command on an obscure terminal might lack padding,
-in practice problems arise most often from the clearing commands
-@samp{cl} and @samp{cd} (@pxref{Clearing}), the scrolling commands
-@samp{sf} and @samp{sr} (@pxref{Scrolling}), and the line insert/delete
-commands @samp{al} and @samp{dl} (@pxref{Insdel Line}).
-
-Occasionally the terminal description fails to define @samp{sf} and some
-programs will use @samp{do} instead, so you may get a problem with
-@samp{do}.  If so, first define @samp{sf} just like @samp{do}, then
-add some padding to @samp{sf}.
-
-The best strategy is to add a lot of padding at first, perhaps 200 msec.
-This is much more than enough; in fact, it should cause a visible slowdown.
-(If you don't see a slowdown, the change has not taken effect;
-@pxref{Changing}.)  If this makes the problem go away, you have found the
-right place to add padding; now reduce the amount until the problem comes
-back, then increase it again.  If the problem remains, either it is in some
-other capability or it is not a matter of padding at all.
-
-Keep in mind that on many terminals the correct padding for insert/delete
-line or for scrolling is cursor-position dependent.  If you get problems
-from scrolling a large region of the screen but not from scrolling a small
-part (just a few lines moving), it may mean that fixed padding should be
-replaced with position-dependent padding.
-
-@node Describe Padding, Output Padding, Not Enough, Padding
-@subsection Specifying Padding in a Terminal Description
-
-In the terminal description, the amount of padding required by each display
-command is recorded as a sequence of digits at the front of the command.
-These digits specify the padding time in milliseconds (msec).  They can be
-followed optionally by a decimal point and one more digit, which is a
-number of tenths of msec.
-
-Sometimes the padding needed by a command depends on the cursor position.
-For example, the time taken by an ``insert line'' command is usually
-proportional to the number of lines that need to be moved down or cleared.
-An asterisk (@samp{*}) following the padding time says that the time
-should be multiplied by the number of screen lines affected by the command.
-
-@example
-:al=1.3*\E[L:
-@end example
-
-@noindent
-is used to describe the ``insert line'' command for a certain terminal.
-The padding required is 1.3 msec per line affected.  The command itself is
-@samp{@key{ESC} [ L}.
-
-The padding time specified in this way tells @code{tputs} how many pad
-characters to output.  @xref{Output Padding}.
-
-Two special capability values affect padding for all commands.  These are
-the @samp{pc} and @samp{pb}.  The variable @samp{pc} specifies the
-character to pad with, and @samp{pb} the speed below which no padding is
-needed.  The defaults for these variables, a null character and 0,
-are correct for most terminals.  @xref{Pad Specs}.
-
-@node Output Padding,  , Describe Padding, Padding
-@subsection Performing Padding with @code{tputs}
-@cindex line speed
-
-@findex tputs
-Use the termcap function @code{tputs} to output a string containing an
-optional padding spec of the form described above (@pxref{Describe
-Padding}).  The function @code{tputs} strips off and decodes the padding
-spec, outputs the rest of the string, and then outputs the appropriate
-padding.  Here is its declaration in ANSI C:
-
-@example
-char PC;
-short ospeed;
-
-int tputs (char *@var{string}, int @var{nlines}, int (*@var{outfun}) ());
-@end example
-
-Here @var{string} is the string (including padding spec) to be output;
-@var{nlines} is the number of lines affected by the operation, which is
-used to multiply the amount of padding if the padding spec ends with a
-@samp{*}.  Finally, @var{outfun} is a function (such as @code{fputchar})
-that is called to output each character.  When actually called,
-@var{outfun} should expect one argument, a character.
-
-@vindex ospeed
-@vindex PC
-The operation of @code{tputs} is controlled by two global variables,
-@code{ospeed} and @code{PC}.  The value of @code{ospeed} is supposed to be
-the terminal output speed, encoded as in the @code{ioctl} system call which
-gets the speed information.  This is needed to compute the number of
-padding characters.  The value of @code{PC} is the character used for
-padding.
-
-You are responsible for storing suitable values into these variables before
-using @code{tputs}.  The value stored into the @code{PC} variable should be
-taken from the @samp{pc} capability in the terminal description (@pxref{Pad
-Specs}).  Store zero in @code{PC} if there is no @samp{pc}
-capability.@refill
-
-The argument @var{nlines} requires some thought.  Normally, it should be
-the number of lines whose contents will be cleared or moved by the command.
-For cursor motion commands, or commands that do editing within one line,
-use the value 1.  For most commands that affect multiple lines, such as
-@samp{al} (insert a line) and @samp{cd} (clear from the cursor to the end
-of the screen), @var{nlines} should be the screen height minus the current
-vertical position (origin 0).  For multiple insert and scroll commands such
-as @samp{AL} (insert multiple lines), that same value for @var{nlines} is
-correct; the number of lines being inserted is @i{not} correct.@refill
-
-If a ``scroll window'' feature is used to reduce the number of lines
-affected by a command, the value of @var{nlines} should take this into
-account.  This is because the delay time required depends on how much work
-the terminal has to do, and the scroll window feature reduces the work.
-@xref{Scrolling}.
-
-Commands such as @samp{ic} and @samp{dc} (insert or delete characters) are
-problematical because the padding needed by these commands is proportional
-to the number of characters affected, which is the number of columns from
-the cursor to the end of the line.  It would be nice to have a way to
-specify such a dependence, and there is no need for dependence on vertical
-position in these commands, so it is an obvious idea to say that for these
-commands @var{nlines} should really be the number of columns affected.
-However, the definition of termcap clearly says that @var{nlines} is always
-the number of lines affected, even in this case, where it is always 1.  It
-is not easy to change this rule now, because too many programs and terminal
-descriptions have been written to follow it.
-
-Because @var{nlines} is always 1 for the @samp{ic} and @samp{dc} strings,
-there is no reason for them to use @samp{*}, but some of them do.  These
-should be corrected by deleting the @samp{*}.  If, some day, such entries
-have disappeared, it may be possible to change to a more useful convention
-for the @var{nlines} argument for these operations without breaking any
-programs.
-
-@node Parameters,  , Padding, Library
-@section Filling In Parameters
-@cindex parameters
-
-Some terminal control strings require numeric @dfn{parameters}.  For
-example, when you move the cursor, you need to say what horizontal and
-vertical positions to move it to.  The value of the terminal's @samp{cm}
-capability, which says how to move the cursor, cannot simply be a string of
-characters; it must say how to express the cursor position numbers and
-where to put them within the command.
-
-The specifications of termcap include conventions as to which string-valued
-capabilities require parameters, how many parameters, and what the
-parameters mean; for example, it defines the @samp{cm} string to take
-two parameters, the vertical and horizontal positions, with 0,0 being the
-upper left corner.  These conventions are described where the individual
-commands are documented.
-
-Termcap also defines a language used within the capability definition for
-specifying how and where to encode the parameters for output.  This language
-uses character sequences starting with @samp{%}.  (This is the same idea as
-@code{printf}, but the details are different.)  The language for parameter
-encoding is described in this section.
-
-A program that is doing display output calls the functions @code{tparam} or
-@code{tgoto} to encode parameters according to the specifications.  These
-functions produce a string containing the actual commands to be output (as
-well a padding spec which must be processed with @code{tputs};
-@pxref{Padding}).
-
-@menu
-* Encode Parameters::  The language for encoding parameters.
-* Using Parameters::  Outputting a string command with parameters.
-@end menu
-
-@node Encode Parameters, Using Parameters,  , Parameters
-@subsection Describing the Encoding
-@cindex %
-
-A terminal command string that requires parameters contains special
-character sequences starting with @samp{%} to say how to encode the
-parameters.  These sequences control the actions of @code{tparam} and
-@code{tgoto}.
-
-The parameters values passed to @code{tparam} or @code{tgoto} are
-considered to form a vector.  A pointer into this vector determines
-the next parameter to be processed.  Some of the @samp{%}-sequences
-encode one parameter and advance the pointer to the next parameter.
-Other @samp{%}-sequences alter the pointer or alter the parameter
-values without generating output.
-
-For example, the @samp{cm} string for a standard ANSI terminal is written
-as @samp{\E[%i%d;%dH}.  (@samp{\E} stands for @key{ESC}.)  @samp{cm} by
-convention always requires two parameters, the vertical and horizontal goal
-positions, so this string specifies the encoding of two parameters.  Here
-@samp{%i} increments the two values supplied, and each @samp{%d} encodes
-one of the values in decimal.  If the cursor position values 20,58 are
-encoded with this string, the result is @samp{\E[21;59H}.
-
-First, here are the @samp{%}-sequences that generate output.  Except for
-@samp{%%}, each of them encodes one parameter and advances the pointer
-to the following parameter.
-
-@table @samp
-@item %%
-Output a single @samp{%}.  This is the only way to represent a literal
-@samp{%} in a terminal command with parameters.  @samp{%%} does not
-use up a parameter.
-
-@item %d
-As in @code{printf}, output the next parameter in decimal.
-
-@item %2
-Like @samp{%02d} in @code{printf}: output the next parameter in
-decimal, and always use at least two digits.
-
-@item %3
-Like @samp{%03d} in @code{printf}: output the next parameter in
-decimal, and always use at least three digits.  Note that @samp{%4}
-and so on are @emph{not} defined.
-
-@item %.
-Output the next parameter as a single character whose ASCII code is
-the parameter value.  Like @samp{%c} in @code{printf}.
-
-@item %+@var{char}
-Add the next parameter to the character @var{char}, and output the
-resulting character.  For example, @samp{%+ } represents 0 as a space,
-1 as @samp{!}, etc.
-@end table
-
-The following @samp{%}-sequences specify alteration of the parameters
-(their values, or their order) rather than encoding a parameter for output.
-They generate no output; they are used only for their side effects
-on the parameters.  Also, they do not advance the ``next parameter'' pointer
-except as explicitly stated.  Only @samp{%i}, @samp{%r} and @samp{%>} are
-defined in standard Unix termcap.  The others are GNU extensions.@refill
-
-@table @samp
-@item %i
-Increment the next two parameters.  This is used for terminals that
-expect cursor positions in origin 1.  For example, @samp{%i%d,%d} would
-output two parameters with @samp{1} for 0, @samp{2} for 1, etc.
-
-@item %r
-Interchange the next two parameters.  This is used for terminals whose
-cursor positioning command expects the horizontal position first.
-
-@item %s
-Skip the next parameter.  Do not output anything.
-
-@item %b
-Back up one parameter.  The last parameter used will become once again
-the next parameter to be output, and the next output command will use
-it.  Using @samp{%b} more than once, you can back up any number of
-parameters, and you can refer to each parameter any number of times.
-
-@item %>@var{c1}@var{c2}
-Conditionally increment the next parameter.  Here @var{c1} and
-@var{c2} are characters which stand for their ASCII codes as numbers.
-If the next parameter is greater than the ASCII code of @var{c1}, the
-ASCII code of @var{c2} is added to it.@refill
-
-@item %a @var{op} @var{type} @var{pos}
-Perform arithmetic on the next parameter, do not use it up, and do not
-output anything.  Here @var{op} specifies the arithmetic operation,
-while @var{type} and @var{pos} together specify the other operand.
-
-Spaces are used above to separate the operands for clarity; the spaces
-don't appear in the data base, where this sequence is exactly five
-characters long.
-
-The character @var{op} says what kind of arithmetic operation to
-perform.  It can be any of these characters:
-
-@table @samp
-@item =
-assign a value to the next parameter, ignoring its old value.
-The new value comes from the other operand.
-
-@item +
-add the other operand to the next parameter.
-
-@item -
-subtract the other operand from the next parameter.
-
-@item *
-multiply the next parameter by the other operand.
-
-@item /
-divide the next parameter by the other operand.
-@end table
-
-The ``other operand'' may be another parameter's value or a constant;
-the character @var{type} says which.  It can be:
-
-@table @samp
-@item p
-Use another parameter.  The character @var{pos} says which
-parameter to use.  Subtract 64 from its ASCII code to get the
-position of the desired parameter relative to this one.  Thus,
-the character @samp{A} as @var{pos} means the parameter after the
-next one; the character @samp{?} means the parameter before the
-next one.
-
-@item c
-Use a constant value.  The character @var{pos} specifies the
-value of the constant.  The 0200 bit is cleared out, so that 0200
-can be used to represent zero.
-@end table
-@end table
-
-The following @samp{%}-sequences are special purpose hacks to compensate
-for the weird designs of obscure terminals.  They modify the next parameter
-or the next two parameters but do not generate output and do not use up any
-parameters.  @samp{%m} is a GNU extension; the others are defined in
-standard Unix termcap.
-
-@table @samp
-@item %n
-Exclusive-or the next parameter with 0140, and likewise the parameter
-after next.
-
-@item %m
-Complement all the bits of the next parameter and the parameter after next.
-
-@item %B
-Encode the next parameter in BCD.  It alters the value of the
-parameter by adding six times the quotient of the parameter by ten.
-Here is a C statement that shows how the new value is computed:
-
-@example
-@var{parm} = (@var{parm} / 10) * 16 + @var{parm} % 10;
-@end example
-
-@item %D
-Transform the next parameter as needed by Delta Data terminals.
-This involves subtracting twice the remainder of the parameter by 16.
-
-@example
-@var{parm} -= 2 * (@var{parm} % 16);
-@end example
-@end table
-
-@node Using Parameters,  , Encode Parameters, Parameters
-@subsection Sending Display Commands with Parameters
-
-The termcap library functions @code{tparam} and @code{tgoto} serve as the
-analog of @code{printf} for terminal string parameters.  The newer function
-@code{tparam} is a GNU extension, more general but missing from Unix
-termcap.  The original parameter-encoding function is @code{tgoto}, which
-is preferable for cursor motion.
-
-@menu
-* tparam::      The general case, for GNU termcap only.
-* tgoto::       The special case of cursor motion.
-@end menu
-
-@node tparam, tgoto,  , Using Parameters
-@subsubsection @code{tparam}
-
-@findex tparam
-The function @code{tparam} can encode display commands with any number of
-parameters and allows you to specify the buffer space.  It is the preferred
-function for encoding parameters for all but the @samp{cm} capability.  Its
-ANSI C declaration is as follows:
-
-@smallexample
-char *tparam (char *@var{ctlstring}, char *@var{buffer}, int @var{size}, int @var{parm1},...)
-@end smallexample
-
-The arguments are a control string @var{ctlstring} (the value of a terminal
-capability, presumably), an output buffer @var{buffer} and @var{size}, and
-any number of integer parameters to be encoded.  The effect of
-@code{tparam} is to copy the control string into the buffer, encoding
-parameters according to the @samp{%} sequences in the control string.
-
-You describe the output buffer by its address, @var{buffer}, and its size
-in bytes, @var{size}.  If the buffer is not big enough for the data to be
-stored in it, @code{tparam} calls @code{malloc} to get a larger buffer.  In
-either case, @code{tparam} returns the address of the buffer it ultimately
-uses.  If the value equals @var{buffer}, your original buffer was used.
-Otherwise, a new buffer was allocated, and you must free it after you are
-done with printing the results.  If you pass zero for @var{size} and
-@var{buffer}, @code{tparam} always allocates the space with @code{malloc}.
-
-All capabilities that require parameters also have the ability to specify
-padding, so you should use @code{tputs} to output the string produced by
-@code{tparam}.  @xref{Padding}.  Here is an example.
-
-@example
-@{
-char *buf;
-char buffer[40];
-
-buf = tparam (command, buffer, 40, parm);
-tputs (buf, 1, fputchar);
-if (buf != buffer)
-free (buf);
-@}
-@end example
-
-If a parameter whose value is zero is encoded with @samp{%.}-style
-encoding, the result is a null character, which will confuse @code{tputs}.
-This would be a serious problem, but luckily @samp{%.} encoding is used
-only by a few old models of terminal, and only for the @samp{cm}
-capability.  To solve the problem, use @code{tgoto} rather than
-@code{tparam} to encode the @samp{cm} capability.@refill
-
-@node tgoto,  , tparam, Using Parameters
-@subsubsection @code{tgoto}
-
-@findex tgoto
-The special case of cursor motion is handled by @code{tgoto}.  There
-are two reasons why you might choose to use @code{tgoto}:
-
-@itemize @bullet
-@item
-For Unix compatibility, because Unix termcap does not have @code{tparam}.
-
-@item
-For the @samp{cm} capability, since @code{tgoto} has a special feature
-to avoid problems with null characters, tabs and newlines on certain old
-terminal types that use @samp{%.} encoding for that capability.
-@end itemize
-
-Here is how @code{tgoto} might be declared in ANSI C:
-
-@example
-char *tgoto (char *@var{cstring}, int @var{hpos}, int @var{vpos})
-@end example
-
-There are three arguments, the terminal description's @samp{cm} string and
-the two cursor position numbers; @code{tgoto} computes the parametrized
-string in an internal static buffer and returns the address of that buffer.
-The next time you use @code{tgoto} the same buffer will be reused.
-
-@vindex UP
-@vindex BC
-Parameters encoded with @samp{%.} encoding can generate null characters,
-tabs or newlines.  These might cause trouble: the null character because
-@code{tputs} would think that was the end of the string, the tab because
-the kernel or other software might expand it into spaces, and the newline
-becaue the kernel might add a carriage-return, or padding characters
-normally used for a newline.  To prevent such problems, @code{tgoto} is
-careful to avoid these characters.  Here is how this works: if the target
-cursor position value is such as to cause a problem (that is to say, zero,
-nine or ten), @code{tgoto} increments it by one, then compensates by
-appending a string to move the cursor back or up one position.
-
-The compensation strings to use for moving back or up are found in global
-variables named @code{BC} and @code{UP}.  These are actual external C
-variables with upper case names; they are declared @code{char *}.  It is up
-to you to store suitable values in them, normally obtained from the
-@samp{le} and @samp{up} terminal capabilities in the terminal description
-with @code{tgetstr}.  Alternatively, if these two variables are both zero,
-the feature of avoiding nulls, tabs and newlines is turned off.
-
-It is safe to use @code{tgoto} for commands other than @samp{cm} only if
-you have stored zero in @code{BC} and @code{UP}.
-
-Note that @code{tgoto} reverses the order of its operands: the horizontal
-position comes before the vertical position in the arguments to
-@code{tgoto}, even though the vertical position comes before the horizontal
-in the parameters of the @samp{cm} string.  If you use @code{tgoto} with a
-command such as @samp{AL} that takes one parameter, you must pass the
-parameter to @code{tgoto} as the ``vertical position''.@refill
-
-@node Data Base, Capabilities, Library, Top
-@chapter The Format of the Data Base
-
-The termcap data base of terminal descriptions is stored in the file
-@file{/etc/termcap}.  It contains terminal descriptions, blank lines, and
-comments.
-
-A terminal description starts with one or more names for the terminal type.
-The information in the description is a series of @dfn{capability names}
-and values.  The capability names have standard meanings
-(@pxref{Capabilities}) and their values describe the terminal.
-
-@menu
-* Format::      Overall format of a terminal description.
-* Capability Format::  Format of capabilities within a description.
-* Naming::      Naming conventions for terminal types.
-* Inheriting::  Inheriting part of a description from
-a related terminal type.
-* Changing::    When changes in the data base take effect.
-@end menu
-
-@node Format, Capability Format,  , Data Base
-@section Terminal Description Format
-@cindex description format
-
-Aside from comments (lines starting with @samp{#}, which are ignored), each
-nonblank line in the termcap data base is a terminal description.
-A terminal description is nominally a single line, but it can be split
-into multiple lines by inserting the two characters @samp{\ newline}.
-This sequence is ignored wherever it appears in a description.
-
-The preferred way to split the description is between capabilities: insert
-the four characters @samp{: \ newline tab} immediately before any colon.
-This allows each sub-line to start with some indentation.  This works
-because, after the @samp{\ newline} are ignored, the result is @samp{: tab
-:}; the first colon ends the preceding capability and the second colon
-starts the next capability.  If you split with @samp{\ newline} alone, you
-may not add any indentation after them.
-
-Here is a real example of a terminal description:
-
-@example
-dw|vt52|DEC vt52:\
-        :cr=^M:do=^J:nl=^J:bl=^G:\
-        :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:\
-        :cm=\EY%+ %+ :co#80:li#24:\
-        :nd=\EC:ta=^I:pt:sr=\EI:up=\EA:\
-        :ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:
-@end example
-
-Each terminal description begins with several names for the terminal type.
-The names are separated by @samp{|} characters, and a colon ends the last
-name.  The first name should be two characters long; it exists only for the
-sake of very old Unix systems and is never used in modern systems.  The
-last name should be a fully verbose name such as ``DEC vt52'' or ``Ann
-Arbor Ambassador with 48 lines''.  The other names should include whatever
-the user ought to be able to specify to get this terminal type, such as
-@samp{vt52} or @samp{aaa-48}.  @xref{Naming}, for information on how to
-choose terminal type names.
-
-After the terminal type names come the terminal capabilities, separated by
-colons and with a colon after the last one.  Each capability has a
-two-letter name, such as @samp{cm} for ``cursor motion string'' or @samp{li}
-for ``number of display lines''.
-
-@node Capability Format, Naming, Format, Data Base
-@section Writing the Capabilities
-
-There are three kinds of capabilities: flags, numbers, and strings.  Each
-kind has its own way of being written in the description.  Each defined
-capability has by convention a particular kind of value; for example,
-@samp{li} always has a numeric value and @samp{cm} always a string value.
-
-A flag capability is thought of as having a boolean value: the value is
-true if the capability is present, false if not.  When the capability is
-present, just write its name between two colons.
-
-A numeric capability has a value which is a nonnegative number.  Write the
-capability name, a @samp{#}, and the number, between two colons.  For
-example, @samp{@dots{}:li#48:@dots{}} is how you specify the @samp{li}
-capability for 48 lines.@refill
-
-A string-valued capability has a value which is a sequence of characters.
-Usually these are the characters used to perform some display operation.
-Write the capability name, a @samp{=}, and the characters of the value,
-between two colons.  For example, @samp{@dots{}:cm=\E[%i%d;%dH:@dots{}} is
-how the cursor motion command for a standard ANSI terminal would be
-specified.@refill
-
-Special characters in the string value can be expressed using
-@samp{\}-escape sequences as in C; in addition, @samp{\E} stands for
-@key{ESC}.  @samp{^} is also a kind of escape character; @samp{^} followed
-by @var{char} stands for the control-equivalent of @var{char}.  Thus,
-@samp{^a} stands for the character control-a, just like @samp{\001}.
-@samp{\} and @samp{^} themselves can be represented as @samp{\\} and
-@samp{\^}.@refill
-
-To include a colon in the string, you must write @samp{\072}.  You might
-ask, ``Why can't @samp{\:} be used to represent a colon?''  The reason is
-that the interrogation functions do not count slashes while looking for a
-capability.  Even if @samp{:ce=ab\:cd:} were interpreted as giving the
-@samp{ce} capability the value @samp{ab:cd}, it would also appear to define
-@samp{cd} as a flag.
-
-The string value will often contain digits at the front to specify padding
-(@pxref{Padding}) and/or @samp{%}-sequences within to specify how to encode
-parameters (@pxref{Parameters}).  Although these things are not to be
-output literally to the terminal, they are considered part of the value of
-the capability.  They are special only when the string value is processed
-by @code{tputs}, @code{tparam} or @code{tgoto}.  By contrast, @samp{\} and
-@samp{^} are considered part of the syntax for specifying the characters
-in the string.
-
-Let's look at the VT52 example again:
-
-@example
-dw|vt52|DEC vt52:\
-        :cr=^M:do=^J:nl=^J:bl=^G:\
-        :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:\
-        :cm=\EY%+ %+ :co#80:li#24:\     
-        :nd=\EC:ta=^I:pt:sr=\EI:up=\EA:\
-        :ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:
-@end example
-
-Here we see the numeric-valued capabilities @samp{co} and @samp{li}, the
-flags @samp{bs} and @samp{pt}, and many string-valued capabilities.  Most
-of the strings start with @key{ESC} represented as @samp{\E}.  The rest
-contain control characters represented using @samp{^}.  The meanings of the
-individual capabilities are defined elsewhere (@pxref{Capabilities}).
-
-@node Naming, Inheriting, Capability Format, Data Base
-@section Terminal Type Name Conventions
-@cindex names of terminal types
-
-There are conventions for choosing names of terminal types.  For one thing,
-all letters should be in lower case.  The terminal type for a terminal in
-its most usual or most fundamental mode of operation should not have a
-hyphen in it.
-
-If the same terminal has other modes of operation which require
-different terminal descriptions, these variant descriptions are given
-names made by adding suffixes with hyphens.  Such alternate descriptions
-are used for two reasons:
-
-@itemize @bullet
-@item
-When the terminal has a switch that changes its behavior.  Since the
-computer cannot tell how the switch is set, the user must tell the
-computer by choosing the appropriate terminal type name.
-
-@cindex wrapping
-For example, the VT-100 has a setup flag that controls whether the
-cursor wraps at the right margin.  If this flag is set to ``wrap'',
-you must use the terminal type @samp{vt100-am}.  Otherwise you must
-use @samp{vt100-nam}.  Plain @samp{vt100} is defined as a synonym for
-either @samp{vt100-am} or @samp{vt100-nam} depending on the
-preferences of the local site.@refill
-
-The standard suffix @samp{-am} stands for ``automatic margins''.
-
-@item
-To give the user a choice in how to use the terminal.  This is done
-when the terminal has a switch that the computer normally controls.
-
-@cindex screen size
-For example, the Ann Arbor Ambassador can be configured with many
-screen sizes ranging from 20 to 60 lines.  Fewer lines make bigger
-characters but more lines let you see more of what you are editing.
-As a result, users have different preferences.  Therefore, termcap
-provides terminal types for many screen sizes.  If you choose type
-@samp{aaa-30}, the terminal will be configured to use 30 lines; if you
-choose @samp{aaa-48}, 48 lines will be used, and so on.
-@end itemize
-
-Here is a list of standard suffixes and their conventional meanings:
-
-@table @samp
-@item -w
-Short for ``wide''.  This is a mode that gives the terminal more
-columns than usual.  This is normally a user option.
-
-@item -am
-``Automatic margins''.  This is an alternate description for use when
-the terminal's margin-wrap switch is on; it contains the @samp{am}
-flag.  The implication is that normally the switch is off and the
-usual description for the terminal says that the switch is off.
-
-@item -nam
-``No automatic margins''.  The opposite of @samp{-am}, this names an
-alternative description which lacks the @samp{am} flag.  This implies
-that the terminal is normally operated with the margin-wrap switch
-turned on, and the normal description of the terminal says so.
-
-@item -na
-``No arrows''.  This terminal description initializes the terminal to
-keep its arrow keys in local mode.  This is a user option.
-
-@item -rv
-``Reverse video''.  This terminal description causes text output for
-normal video to appear as reverse, and text output for reverse video
-to come out as normal.  Often this description differs from the usual
-one by interchanging the two strings which turn reverse video on and
-off.@refill
-
-This is a user option; you can choose either the ``reverse video''
-variant terminal type or the normal terminal type, and termcap will
-obey.
-
-@item -s
-``Status''.  Says to enable use of a status line which ordinary output
-does not touch (@pxref{Status Line}).
-
-Some terminals have a special line that is used only as a status line.
-For these terminals, there is no need for an @samp{-s} variant; the
-status line commands should be defined by default.  On other
-terminals, enabling a status line means removing one screen line from
-ordinary use and reducing the effective screen height.  For these
-terminals, the user can choose the @samp{-s} variant type to request
-use of a status line.
-
-@item -@var{nlines}
-Says to operate with @var{nlines} lines on the screen, for terminals
-such as the Ambassador which provide this as an option.  Normally this
-is a user option; by choosing the terminal type, you control how many
-lines termcap will use.
-
-@item -@var{npages}p
-Says that the terminal has @var{npages} pages worth of screen memory,
-for terminals where this is a hardware option.
-
-@item -unk
-Says that description is not for direct use, but only for reference in
-@samp{tc} capabilities.  Such a description is a kind of subroutine,
-because it describes the common characteristics of several variant
-descriptions that would use other suffixes in place of @samp{-unk}.
-@end table
-
-@node Inheriting, Changing, Naming, Data Base
-@section Inheriting from Related Descriptions
-
-@cindex inheritance
-When two terminal descriptions are similar, their identical parts do not
-need to be given twice.  Instead, one of the two can be defined in terms of
-the other, using the @samp{tc} capability.  We say that one description
-@dfn{refers to} the other, or @dfn{inherits from} the other.
-
-The @samp{tc} capability must be the last one in the terminal description,
-and its value is a string which is the name of another terminal type which
-is referred to.  For example,
-
-@example
-N9|aaa|ambassador|aaa-30|ann arbor ambassador/30 lines:\
-        :ti=\E[2J\E[30;0;0;30p:\
-        :te=\E[60;0;0;30p\E[30;1H\E[J:\
-        :li#30:tc=aaa-unk:
-@end example
-
-@noindent
-defines the terminal type @samp{aaa-30} (also known as plain @samp{aaa}) in
-terms of @samp{aaa-unk}, which defines everything about the Ambassador that
-is independent of screen height.  The types @samp{aaa-36}, @samp{aaa-48}
-and so on for other screen heights are likewise defined to inherit from
-@samp{aaa-unk}.
-
-The capabilities overridden by @samp{aaa-30} include @samp{li}, which says
-how many lines there are, and @samp{ti} and @samp{te}, which configure the
-terminal to use that many lines.
-
-The effective terminal description for type @samp{aaa} consists of the text
-shown above followed by the text of the description of @samp{aaa-unk}.  The
-@samp{tc} capability is handled automatically by @code{tgetent}, which
-finds the description thus referenced and combines the two descriptions
-(@pxref{Find}).  Therefore, only the implementor of the terminal
-descriptions needs to think about using @samp{tc}.  Users and application
-programmers do not need to be concerned with it.
-
-Since the reference terminal description is used last, capabilities
-specified in the referring description override any specifications of the
-same capabilities in the reference description.
-
-The referring description can cancel out a capability without specifying
-any new value for it by means of a special trick.  Write the capability in
-the referring description, with the character @samp{@@} after the capability
-name, as follows:
-
-@smallexample
-NZ|aaa-30-nam|ann arbor ambassador/30 lines/no automatic-margins:\
-        :am@@:tc=aaa-30:
-@end smallexample
-
-@node Changing,  , Inheriting, Data Base
-@section When Changes in the Data Base Take Effect
-
-Each application program must read the terminal description from the
-data base, so a change in the data base is effective for all jobs started
-after the change is made.
-
-The change will usually have no effect on a job that have been in existence
-since before the change. The program probably read the terminal description
-once, when it was started, and is continuing to use what it read then.
-If the program does not have a feature for reexamining the data base, then
-you will need to run it again (probably killing the old job).
-
-If the description in use is coming from the @code{TERMCAP} environment
-variable, then the data base file is effectively overridden, and changes in
-it will have no effect until you change the @code{TERMCAP} variable as
-well.  For example, some users' @file{.login} files automatically copy the
-terminal description into @code{TERMCAP} to speed startup of applications.
-If you have done this, you will need to change the @code{TERMCAP} variable
-to make the changed data base take effect.
-
-@node Capabilities, Summary, Data Base, Top
-@chapter Definitions of the Terminal Capabilities
-
-This section is divided into many subsections, each for one aspect of
-use of display terminals.  For writing a display program, you usually need
-only check the subsections for the operations you want to use.  For writing
-a terminal description, you must read each subsection and fill in the
-capabilities described there.
-
-String capabilities that are display commands may require numeric
-parameters (@pxref{Parameters}).  Most such capabilities do not use
-parameters.  When a capability requires parameters, this is explicitly
-stated at the beginning of its definition.  In simple cases, the first or
-second sentence of the definition mentions all the parameters, in the order
-they should be given, using a name
-@iftex
-in italics
-@end iftex
-@ifinfo
-in upper case
-@end ifinfo
-for each one.  For example, the @samp{rp} capability is a command that
-requires two parameters; its definition begins as follows:
-
-@quotation
-String of commands to output a graphic character @var{c}, repeated @var{n}
-times.
-@end quotation
-
-In complex cases or when there are many parameters, they are described
-explicitly.
-
-When a capability is described as obsolete, this means that programs should
-not be written to look for it, but terminal descriptions should still be
-written to provide it.
-
-When a capability is described as very obsolete, this means that it should
-be omitted from terminal descriptions as well.
-
-@menu
-* Basic::       Basic characteristics.
-* Screen Size::  Screen size, and what happens when it changes.
-* Cursor Motion::  Various ways to move the cursor.
-* Wrapping::    What happens if you write a character in the last column.
-* Scrolling::   Pushing text up and down on the screen.
-* Windows::     Limiting the part of the window that output affects.
-* Clearing::    Erasing one or many lines.
-* Insdel Line::  Making new blank lines in mid-screen; deleting lines.
-* Insdel Char::  Inserting and deleting characters within a line.
-* Standout::    Highlighting some of the text.
-* Underlining::  Underlining some of the text.
-* Cursor Visibility::  Making the cursor more or less easy to spot.
-* Bell::        Attracts user's attention; not localized on the screen.
-* Keypad::      Recognizing when function keys or arrows are typed.
-* Meta Key::    @key{META} acts like an extra shift key.
-* Initialization::  Commands used to initialize or reset the terminal.
-* Pad Specs::   Info for the kernel on how much padding is needed.
-* Status Line::  A status line displays ``background'' information.
-* Half-Line::   Moving by half-lines, for superscripts and subscripts.
-* Printer::     Controlling auxiliary printers of display terminals.
-@end menu
-
-@node Basic, Screen Size,  , Capabilities
-@section Basic Characteristics
-
-This section documents the capabilities that describe the basic and
-nature of the terminal, and also those that are relevant to the output
-of graphic characters.
-
-@table @samp
-@item os
-@kindex os
-@cindex overstrike
-Flag whose presence means that the terminal can overstrike.  This
-means that outputting a graphic character does not erase whatever was
-present in the same character position before.  The terminals that can
-overstrike include printing terminals, storage tubes (all obsolete
-nowadays), and many bit-map displays.
-
-@item eo
-@kindex eo
-Flag whose presence means that outputting a space erases a character
-position even if the terminal supports overstriking.  If this flag is
-not present and overstriking is supported, output of a space has no
-effect except to move the cursor.
-
-(On terminals that do not support overstriking, you can always assume
-that outputting a space at a position erases whatever character was
-previously displayed there.)
-
-@item gn
-@kindex gn
-@cindex generic terminal type
-Flag whose presence means that this terminal type is a generic type
-which does not really describe any particular terminal.  Generic types
-are intended for use as the default type assigned when the user
-connects to the system, with the intention that the user should
-specify what type he really has.  One example of a generic type
-is the type @samp{network}.
-
-Since the generic type cannot say how to do anything interesting with
-the terminal, termcap-using programs will always find that the
-terminal is too weak to be supported if the user has failed to specify
-a real terminal type in place of the generic one.  The @samp{gn} flag
-directs these programs to use a different error message: ``You have
-not specified your real terminal type'', rather than ``Your terminal
-is not powerful enough to be used''.
-
-@item hc
-@kindex hc
-Flag whose presence means this is a hardcopy terminal.
-
-@item rp
-@kindex rp
-@cindex repeat output
-String of commands to output a graphic character @var{c}, repeated @var{n}
-times.  The first parameter value is the ASCII code for the desired
-character, and the second parameter is the number of times to repeat the
-character.  Often this command requires padding proportional to the 
-number of times the character is repeated.  This effect can be had by
-using parameter arithmetic with @samp{%}-sequences to compute the
-amount of padding, then generating the result as a number at the front
-of the string so that @code{tputs} will treat it as padding.
-
-@item hz
-@kindex hz
-Flag whose presence means that the ASCII character @samp{~} cannot be
-output on this terminal because it is used for display commands.
-
-Programs handle this flag by checking all text to be output and
-replacing each @samp{~} with some other character(s).  If this is not
-done, the screen will be thoroughly garbled.
-
-The old Hazeltine terminals that required such treatment are probably
-very rare today, so you might as well not bother to support this flag.
-
-@item CC
-@kindex CC
-@cindex command character
-String whose presence means the terminal has a settable command
-character.  The value of the string is the default command character
-(which is usually @key{ESC}).
-
-All the strings of commands in the terminal description should be
-written to use the default command character.  If you are writing an
-application program that changes the command character, use the
-@samp{CC} capability to figure out how to translate all the display
-commands to work with the new command character.
-
-Most programs have no reason to look at the @samp{CC} capability.
-
-@item xb
-@kindex xb
-@cindex Superbee
-Flag whose presence identifies Superbee terminals which are unable to
-transmit the characters @key{ESC} and @kbd{Control-C}.  Programs which
-support this flag are supposed to check the input for the code sequences
-sent by the @key{F1} and @key{F2} keys, and pretend that @key{ESC}
-or @kbd{Control-C} (respectively) had been read.  But this flag is
-obsolete, and not worth supporting.
-@end table
-
-@node Screen Size, Cursor Motion, Basic, Capabilities
-@section Screen Size
-@cindex screen size
-
-A terminal description has two capabilities, @samp{co} and @samp{li},
-that describe the screen size in columns and lines.  But there is more
-to the question of screen size than this.
-
-On some operating systems the ``screen'' is really a window and the
-effective width can vary.  On some of these systems, @code{tgetnum}
-uses the actual width of the window to decide what value to return for
-the @samp{co} capability, overriding what is actually written in the
-terminal description.  On other systems, it is up to the application
-program to check the actual window width using a system call.  For
-example, on BSD 4.3 systems, the system call @code{ioctl} with code
-@code{TIOCGWINSZ} will tell you the current screen size.
-
-On all window systems, termcap is powerless to advise the application
-program if the user resizes the window.  Application programs must
-deal with this possibility in a system-dependent fashion.  On some
-systems the C shell handles part of the problem by detecting changes
-in window size and setting the @code{TERMCAP} environment variable
-appropriately.  This takes care of application programs that are
-started subsequently.  It does not help application programs already
-running.
-
-On some systems, including BSD 4.3, all programs using a terminal get
-a signal named @code{SIGWINCH} whenever the screen size changes.
-Programs that use termcap should handle this signal by using
-@code{ioctl TIOCGWINSZ} to learn the new screen size.
-
-@table @samp
-@item co
-@kindex co
-@cindex screen size
-Numeric value, the width of the screen in character positions.  Even
-hardcopy terminals normally have a @samp{co} capability.
-
-@item li
-@kindex li
-Numeric value, the height of the screen in lines.
-@end table
-
-@node Cursor Motion, Wrapping, Screen Size, Capabilities
-@section Cursor Motion
-@cindex cursor motion
-
-Termcap assumes that the terminal has a @dfn{cursor}, a spot on the screen
-where a visible mark is displayed, and that most display commands take
-effect at the position of the cursor.  It follows that moving the cursor
-to a specified location is very important.
-
-There are many terminal capabilities for different cursor motion
-operations.  A terminal description should define as many as possible, but
-most programs do not need to use most of them.  One capability, @samp{cm},
-moves the cursor to an arbitrary place on the screen; this by itself is
-sufficient for any application as long as there is no need to support
-hardcopy terminals or certain old, weak displays that have only relative
-motion commands.  Use of other cursor motion capabilities is an
-optimization, enabling the program to output fewer characters in some
-common cases.
-
-If you plan to use the relative cursor motion commands in an application
-program, you must know what the starting cursor position is.  To do this,
-you must keep track of the cursor position and update the records each
-time anything is output to the terminal, including graphic characters.
-In addition, it is necessary to know whether the terminal wraps after
-writing in the rightmost column.  @xref{Wrapping}.
-
-One other motion capability needs special mention: @samp{nw} moves the
-cursor to the beginning of the following line, perhaps clearing all the
-starting line after the cursor, or perhaps not clearing at all.  This
-capability is a least common denominator that is probably supported even by
-terminals that cannot do most other things such as @samp{cm} or @samp{do}.
-Even hardcopy terminals can support @samp{nw}.
-
-@table @asis
-@item @samp{cm}
-@kindex cm
-String of commands to position the cursor at line @var{l}, column @var{c}.
-Both parameters are origin-zero, and are defined relative to the
-screen, not relative to display memory.
-
-All display terminals except a few very obsolete ones support @samp{cm},
-so it is acceptable for an application program to refuse to operate on
-terminals lacking @samp{cm}.
-
-@item @samp{ho}
-@kindex ho
-@cindex home position
-String of commands to move the cursor to the upper left corner of the
-screen (this position is called the @dfn{home position}).  In
-terminals where the upper left corner of the screen is not the same as
-the beginning of display memory, this command must go to the upper
-left corner of the screen, not the beginning of display memory.
-
-Every display terminal supports this capability, and many application
-programs refuse to operate if the @samp{ho} capability is missing.
-
-@item @samp{ll}
-@kindex ll
-String of commands to move the cursor to the lower left corner of the
-screen.  On some terminals, moving up from home position does this,
-but programs should never assume that will work.  Just output the
-@samp{ll} string (if it is provided); if moving to home position and
-then moving up is the best way to get there, the @samp{ll} command
-will do that.
-
-@item @samp{cr}
-@kindex cr
-String of commands to move the cursor to the beginning of the line it
-is on.  If this capability is not specified, many programs assume
-they can use the ASCII carriage return character for this.
-
-@item @samp{le}
-@kindex le
-String of commands to move the cursor left one column.  Unless the
-@samp{bw} flag capability is specified, the effect is undefined if the
-cursor is at the left margin; do not use this command there.  If
-@samp{bw} is present, this command may be used at the left margin, and
-it wraps the cursor to the last column of the preceding line.
-
-@item @samp{nd}
-@kindex nd
-String of commands to move the cursor right one column.  The effect is
-undefined if the cursor is at the right margin; do not use this
-command there, not even if @samp{am} is present.
-
-@item @samp{up}
-@kindex up
-String of commands to move the cursor vertically up one line.  The
-effect of sending this string when on the top line is undefined;
-programs should never use it that way.
-
-@item @samp{do}
-@kindex do
-String of commands to move the cursor vertically down one line.  The
-effect of sending this string when on the bottom line is undefined;
-programs should never use it that way.
-
-Some programs do use @samp{do} to scroll up one line if used at the
-bottom line, if @samp{sf} is not defined but @samp{sr} is.  This is
-only to compensate for certain old, incorrect terminal descriptions.
-(In principle this might actually lead to incorrect behavior on other
-terminals, but that seems to happen rarely if ever.)  But the proper
-solution is that the terminal description should define @samp{sf} as
-well as @samp{do} if the command is suitable for scrolling.
-
-The original idea was that this string would not contain a newline
-character and therefore could be used without disabling the kernel's
-usual habit of converting of newline into a carriage-return newline
-sequence.  But many terminal descriptions do use newline in the
-@samp{do} string, so this is not possible; a program which sends the
-@samp{do} string must disable output conversion in the kernel
-(@pxref{Initialize}).
-
-@item @samp{bw}
-@kindex bw
-Flag whose presence says that @samp{le} may be used in column zero
-to move to the last column of the preceding line.  If this flag
-is not present, @samp{le} should not be used in column zero.
-
-@item @samp{nw}
-@kindex nw
-String of commands to move the cursor to start of next line, possibly
-clearing rest of line (following the cursor) before moving.
-
-@item @samp{DO}, @samp{UP}, @samp{LE}, @samp{RI}
-@kindex DO
-@kindex LE
-@kindex RI
-@kindex UP
-Strings of commands to move the cursor @var{n} lines down vertically,
-up vertically, or @var{n} columns left or right.  Do not attempt to
-move past any edge of the screen with these commands; the effect of
-trying that is undefined.  Only a few terminal descriptions provide
-these commands, and most programs do not use them.
-
-@item @samp{CM}
-@kindex CM
-String of commands to position the cursor at line @var{l}, column
-@var{c}, relative to display memory.  Both parameters are origin-zero.
-This capability is present only in terminals where there is a
-difference between screen-relative and memory-relative addressing, and
-not even in all such terminals.
-
-@item @samp{ch}
-@kindex ch
-String of commands to position the cursor at column @var{c} in the
-same line it is on.  This is a special case of @samp{cm} in which the
-vertical position is not changed.  The @samp{ch} capability is
-provided only when it is faster to output than @samp{cm} would be in
-this special case.  Programs should not assume most display terminals
-have @samp{ch}.
-
-@item @samp{cv}
-@kindex cv
-String of commands to position the cursor at line @var{l} in the same
-column.  This is a special case of @samp{cm} in which the horizontal
-position is not changed.  The @samp{cv} capability is provided only
-when it is faster to output than @samp{cm} would be in this special
-case.  Programs should not assume most display terminals have
-@samp{cv}.
-
-@item @samp{sc}
-@kindex sc
-String of commands to make the terminal save the current cursor
-position.  Only the last saved position can be used.  If this
-capability is present, @samp{rc} should be provided also.  Most
-terminals have neither.
-
-@item @samp{rc}
-@kindex rc
-String of commands to make the terminal restore the last saved cursor
-position.  If this capability is present, @samp{sc} should be provided
-also.  Most terminals have neither.
-
-@item @samp{ff}
-@kindex ff
-String of commands to advance to the next page, for a hardcopy
-terminal.
-
-@item @samp{ta}
-@kindex ta
-String of commands to move the cursor right to the next hardware tab
-stop column.  Missing if the terminal does not have any kind of
-hardware tabs.  Do not send this command if the kernel's terminal
-modes say that the kernel is expanding tabs into spaces.
-
-@item @samp{bt}
-@kindex bt
-String of commands to move the cursor left to the previous hardware
-tab stop column.  Missing if the terminal has no such ability; many
-terminals do not.  Do not send this command if the kernel's terminal
-modes say that the kernel is expanding tabs into spaces.
-@end table
-
-The following obsolete capabilities should be included in terminal
-descriptions when appropriate, but should not be looked at by new programs.
-
-@table @samp
-@item nc
-@kindex nc
-Flag whose presence means the terminal does not support the ASCII
-carriage return character as @samp{cr}.  This flag is needed because
-old programs assume, when the @samp{cr} capability is missing, that
-ASCII carriage return can be used for the purpose.  We use @samp{nc}
-to tell the old programs that carriage return may not be used.
-
-New programs should not assume any default for @samp{cr}, so they need
-not look at @samp{nc}.  However, descriptions should contain @samp{nc}
-whenever they do not contain @samp{cr}.
-
-@item xt
-@kindex xt
-Flag whose presence means that the ASCII tab character may not be used
-for cursor motion.  This flag exists because old programs assume, when
-the @samp{ta} capability is missing, that ASCII tab can be used for
-the purpose.  We use @samp{xt} to tell the old programs not to use tab.
-
-New programs should not assume any default for @samp{ta}, so they need
-not look at @samp{xt} in connection with cursor motion.  Note that
-@samp{xt} also has implications for standout mode (@pxref{Standout}).
-It is obsolete in regard to cursor motion but not in regard to
-standout.
-
-In fact, @samp{xt} means that the terminal is a Teleray 1061.
-
-@item bc
-@kindex bc
-Very obsolete alternative name for the @samp{le} capability.
-
-@item bs
-@kindex bs
-Flag whose presence means that the ASCII character backspace may be
-used to move the cursor left.  Obsolete; look at @samp{le} instead.
-
-@item nl
-@kindex nl
-Obsolete capability which is a string that can either be used to move
-the cursor down or to scroll.  The same string must scroll when used
-on the bottom line and move the cursor when used on any other line.
-New programs should use @samp{do} or @samp{sf}, and ignore @samp{nl}.
-
-If there is no @samp{nl} capability, some old programs assume they can
-use the newline character for this purpose.  These programs follow a
-bad practice, but because they exist, it is still desirable to define
-the @samp{nl} capability in a terminal description if the best way to
-move down is @emph{not} a newline.
-@end table
-
-@node Wrapping, Scrolling, Cursor Motion, Capabilities
-@section Wrapping
-@cindex wrapping
-
-@dfn{Wrapping} means moving the cursor from the right margin to the left
-margin of the following line.  Some terminals wrap automatically when a
-graphic character is output in the last column, while others do not.  Most
-application programs that use termcap need to know whether the terminal
-wraps.  There are two special flag capabilities to describe what the
-terminal does when a graphic character is output in the last column.
-
-@table @samp
-@item am
-@kindex am
-Flag whose presence means that writing a character in the last column
-causes the cursor to wrap to the beginning of the next line.
-
-If @samp{am} is not present, writing in the last column leaves the
-cursor at the place where the character was written.
-
-Writing in the last column of the last line should be avoided on
-terminals with @samp{am}, as it may or may not cause scrolling to
-occur (@pxref{Scrolling}).  Scrolling is surely not what you would
-intend.
-
-If your program needs to check the @samp{am} flag, then it also needs
-to check the @samp{xn} flag which indicates that wrapping happens in a
-strange way.  Many common terminals have the @samp{xn} flag.
-
-@item xn
-@kindex xn
-Flag whose presence means that the cursor wraps in a strange way.  At
-least two distinct kinds of strange behavior are known; the termcap
-data base does not contain anything to distinguish the two.
-
-On Concept-100 terminals, output in the last column wraps the cursor
-almost like an ordinary @samp{am} terminal.  But if the next thing
-output is a newline, it is ignored.
-
-DEC VT-100 terminals (when the wrap switch is on) do a different
-strange thing: the cursor wraps only if the next thing output is
-another graphic character.  In fact, the wrap occurs when the
-following graphic character is received by the terminal, before the
-character is placed on the screen.
-
-On both of these terminals, after writing in the last column a
-following graphic character will be displayed in the first column of
-the following line.  But the effect of relative cursor motion
-characters such as newline or backspace at such a time depends on the
-terminal.  The effect of erase or scrolling commands also depends on
-the terminal.  You can't assume anything about what they will do on a
-terminal that has @samp{xn}.  So, to be safe, you should never do
-these things at such a time on such a terminal.
-
-To be sure of reliable results on a terminal which has the @samp{xn}
-flag, output a @samp{cm} absolute positioning command after writing in
-the last column.  Another safe thing to do is to output carriage-return
-newline, which will leave the cursor at the beginning of the following
-line.
-
-@item LP
-@kindex LP
-Flag whose presence means that it is safe to write in the last column of
-the last line without worrying about undesired scrolling.  @samp{LP}
-indicates the DEC flavor of @samp{xn} strangeness.
-@end table
-
-@node Scrolling, Windows, Wrapping, Capabilities
-@section Scrolling
-@cindex scrolling
-
-@dfn{Scrolling} means moving the contents of the screen up or down one or
-more lines.  Moving the contents up is @dfn{forward scrolling}; moving them
-down is @dfn{reverse scrolling}.
-
-Scrolling happens after each line of output during ordinary output on most
-display terminals.  But in an application program that uses termcap for
-random-access output, scrolling happens only when explicitly requested with
-the commands in this section.
-
-Some terminals have a @dfn{scroll region} feature.  This lets you limit
-the effect of scrolling to a specified range of lines.  Lines outside the
-range are unaffected when scrolling happens.  The scroll region feature
-is available if either @samp{cs} or @samp{cS} is present.
-
-@table @samp
-@item sf
-@kindex sf
-String of commands to scroll the screen one line up, assuming it is
-output with the cursor at the beginning of the bottom line.
-
-@item sr
-@kindex sr
-String of commands to scroll the screen one line down, assuming it is
-output with the cursor at the beginning of the top line.
-
-@item do
-A few programs will try to use @samp{do} to do the work of @samp{sf}.
-This is not really correct---it is an attempt to compensate for the
-absence of a @samp{sf} command in some old terminal descriptions.
-
-Since these terminal descriptions do define @samp{sr}, perhaps at one
-time the definition of @samp{do} was different and it could be used
-for scrolling as well.  But it isn't desirable to combine these two
-functions in one capability, since scrolling often requires more
-padding than simply moving the cursor down.  Defining @samp{sf} and
-@samp{do} separately allows you to specify the padding properly.
-Also, all sources agree that @samp{do} should not be relied on to do
-scrolling.
-
-So the best approach is to add @samp{sf} capabilities to the
-descriptions of these terminals, copying the definition of @samp{do}
-if that does scroll.
-
-@item SF
-@kindex SF
-String of commands to scroll the screen @var{n} lines up, assuming it
-is output with the cursor at the beginning of the bottom line.
-
-@item SR
-@kindex SR
-String of commands to scroll the screen @var{n} lines down, assuming it
-is output with the cursor at the beginning of the top line.
-
-@item cs
-@kindex cs
-String of commands to set the scroll region.  This command takes two
-parameters, @var{start} and @var{end}, which are the line numbers
-(origin-zero) of the first line to include in the scroll region and of
-the last line to include in it.  When a scroll region is set,
-scrolling is limited to the specified range of lines; lines outside
-the range are not affected by scroll commands.
-
-Do not try to move the cursor outside the scroll region.  The region
-remains set until explicitly removed.  To remove the scroll region,
-use another @samp{cs} command specifying the full height of the
-screen.
-
-The cursor position is undefined after the @samp{cs} command is set,
-so position the cursor with @samp{cm} immediately afterward.
-
-@item cS
-@kindex cS
-String of commands to set the scroll region using parameters in
-different form.  The effect is the same as if @samp{cs} were used.
-Four parameters are required:
-
-@enumerate
-@item
-Total number of lines on the screen.
-@item
-Number of lines above desired scroll region.
-@item
-Number of lines below (outside of) desired scroll region.
-@item
-Total number of lines on the screen, the same as the first parameter.
-@end enumerate
-
-This capability is a GNU extension that was invented to allow the Ann
-Arbor Ambassador's scroll-region command to be described; it could
-also be done by putting non-Unix @samp{%}-sequences into a @samp{cs}
-string, but that would have confused Unix programs that used the
-@samp{cs} capability with the Unix termcap.  Currently only GNU Emacs
-uses the @samp{cS} capability.
-
-@item ns
-@kindex ns
-Flag which means that the terminal does not normally scroll for
-ordinary sequential output.  For modern terminals, this means that
-outputting a newline in ordinary sequential output with the cursor on
-the bottom line wraps to the top line.  For some obsolete terminals,
-other things may happen.
-
-The terminal may be able to scroll even if it does not normally do so.
-If the @samp{sf} capability is provided, it can be used for scrolling
-regardless of @samp{ns}.
-
-@item da
-@kindex da
-Flag whose presence means that lines scrolled up off the top of the
-screen may come back if scrolling down is done subsequently.
-
-The @samp{da} and @samp{db} flags do not, strictly speaking, affect
-how to scroll.  But programs that scroll usually need to clear the
-lines scrolled onto the screen, if these flags are present.
-
-@item db
-@kindex db
-Flag whose presence means that lines scrolled down off the bottom of
-the screen may come back if scrolling up is done subsequently.
-
-@item lm
-@kindex lm
-Numeric value, the number of lines of display memory that the terminal
-has.  A value of zero means that the terminal has more display memory
-than can fit on the screen, but no fixed number of lines.  (The number
-of lines may depend on the amount of text in each line.)
-@end table
-
-Any terminal description that defines @samp{SF} should also define @samp{sf};
-likewise for @samp{SR} and @samp{sr}.  However, many terminals can only
-scroll by one line at a time, so it is common to find @samp{sf} and not
-@samp{SF}, or @samp{sr} without @samp{SR}.@refill
-
-Therefore, all programs that use the scrolling facilities should be
-prepared to work with @samp{sf} in the case that @samp{SF} is absent, and
-likewise with @samp{sr}.  On the other hand, an application program that
-uses only @samp{sf} and not @samp{SF} is acceptable, though slow on some
-terminals.@refill
-
-When outputting a scroll command with @code{tputs}, the @var{nlines}
-argument should be the total number of lines in the portion of the screen
-being scrolled.  Very often these commands require padding proportional to
-this number of lines.  @xref{Padding}.
-
-@node Windows, Clearing, Scrolling, Capabilities
-@section Windows
-@cindex window
-
-A @dfn{window}, in termcap, is a rectangular portion of the screen to which
-all display operations are restricted.  Wrapping, clearing, scrolling,
-insertion and deletion all operate as if the specified window were all the
-screen there was.
-
-@table @samp
-@item wi
-@kindex wi
-String of commands to set the terminal output screen window.
-This string requires four parameters, all origin-zero:
-@enumerate
-@item
-The first line to include in the window.
-@item
-The last line to include in the window.
-@item
-The first column to include in the window.
-@item
-The last column to include in the window.
-@end enumerate
-@end table
-
-Most terminals do not support windows.
-
-@node Clearing, Insdel Line, Windows, Capabilities
-@section Clearing Parts of the Screen
-@cindex erasing
-@cindex clearing the screen
-
-There are several terminal capabilities for clearing parts of the screen
-to blank.  All display terminals support the @samp{cl} string, and most
-display terminals support all of these capabilities.
-
-@table @samp
-@item cl
-@kindex cl
-String of commands to clear the entire screen and position the cursor
-at the upper left corner.
-
-@item cd
-@kindex cd
-String of commands to clear the line the cursor is on, and all the
-lines below it, down to the bottom of the screen.  This command string
-should be used only with the cursor in column zero; their effect is
-undefined if the cursor is elsewhere.
-
-@item ce
-@kindex ce
-String of commands to clear from the cursor to the end of the current
-line.
-
-@item ec
-@kindex ec
-String of commands to clear @var{n} characters, starting with the
-character that the cursor is on.  This command string is expected to
-leave the cursor position unchanged.  The parameter @var{n} should never
-be large enough to reach past the right margin; the effect of such a
-large parameter would be undefined.
-@end table
-
-Clear to end of line (@samp{ce}) is extremely important in programs that
-maintain an updating display.  Nearly all display terminals support this
-operation, so it is acceptable for a an application program to refuse to
-work if @samp{ce} is not present.  However, if you do not want this
-limitation, you can accomplish clearing to end of line by outputting spaces
-until you reach the right margin.  In order to do this, you must know the
-current horizontal position.  Also, this technique assumes that writing a
-space will erase.  But this happens to be true on all the display terminals
-that fail to support @samp{ce}.
-
-@node Insdel Line, Insdel Char, Clearing, Capabilities
-@section Insert/Delete Line
-
-@cindex insert line
-@cindex delete line
-@dfn{Inserting a line} means creating a blank line in the middle
-of the screen, and pushing the existing lines of text apart.  In fact,
-the lines above the insertion point do not change, while the lines below
-move down, and one is normally lost at the bottom of the screen.
-
-@dfn{Deleting a line} means causing the line to disappear from the screen,
-closing up the gap by moving the lines below it upward.  A new line
-appears at the bottom of the screen.  Usually this line is blank, but
-on terminals with the @samp{db} flag it may be a line previously moved
-off the screen bottom by scrolling or line insertion.
-
-Insertion and deletion of lines is useful in programs that maintain an
-updating display some parts of which may get longer or shorter.  They are
-also useful in editors for scrolling parts of the screen, and for
-redisplaying after lines of text are killed or inserted.
-
-Many terminals provide commands to insert or delete a single line at the
-cursor position.  Some provide the ability to insert or delete several
-lines with one command, using the number of lines to insert or delete as a
-parameter.  Always move the cursor to column zero before using any of
-these commands.
-
-@table @samp
-@item al
-@kindex al
-String of commands to insert a blank line before the line the cursor
-is on.  The existing line, and all lines below it, are moved down.
-The last line in the screen (or in the scroll region, if one is set)
-disappears and in most circumstances is discarded.  It may not be
-discarded if the @samp{db} is present (@pxref{Scrolling}).
-
-The cursor must be at the left margin before this command is used.
-This command does not move the cursor.
-
-@item dl
-@kindex dl
-String of commands to delete the line the cursor is on.  The following
-lines move up, and a blank line appears at the bottom of the screen
-(or bottom of the scroll region).  If the terminal has the @samp{db}
-flag, a nonblank line previously pushed off the screen bottom may
-reappear at the bottom.
-
-The cursor must be at the left margin before this command is used.
-This command does not move the cursor.
-
-@item AL
-@kindex AL
-String of commands to insert @var{n} blank lines before the line that
-the cursor is on.  It is like @samp{al} repeated @var{n} times, except
-that it is as fast as one @samp{al}.
-
-@item DL
-@kindex DL
-String of commands to delete @var{n} lines starting with the line that
-the cursor is on.  It is like @samp{dl} repeated @var{n} times, except
-that it is as fast as one @samp{dl}.
-@end table
-
-Any terminal description that defines @samp{AL} should also define
-@samp{al}; likewise for @samp{DL} and @samp{dl}.  However, many terminals
-can only insert or delete one line at a time, so it is common to find
-@samp{al} and not @samp{AL}, or @samp{dl} without @samp{DL}.@refill
-
-Therefore, all programs that use the insert and delete facilities should be
-prepared to work with @samp{al} in the case that @samp{AL} is absent, and
-likewise with @samp{dl}.  On the other hand, it is acceptable to write
-an application that uses only @samp{al} and @samp{dl} and does not look
-for @samp{AL} or @samp{DL} at all.@refill
-
-If a terminal does not support line insertion and deletion directly,
-but does support a scroll region, the effect of insertion and deletion
-can be obtained with scrolling.  However, it is up to the individual
-user program to check for this possibility and use the scrolling
-commands to get the desired result.  It is fairly important to implement
-this alternate strategy, since it is the only way to get the effect of
-line insertion and deletion on the popular VT100 terminal.
-
-Insertion and deletion of lines is affected by the scroll region on
-terminals that have a settable scroll region.  This is useful when it is
-desirable to move any few consecutive lines up or down by a few lines.
-@xref{Scrolling}.
-
-The line pushed off the bottom of the screen is not lost if the terminal
-has the @samp{db} flag capability; instead, it is pushed into display
-memory that does not appear on the screen.  This is the same thing that
-happens when scrolling pushes a line off the bottom of the screen.
-Either reverse scrolling or deletion of a line can bring the apparently
-lost line back onto the bottom of the screen.  If the terminal has the
-scroll region feature as well as @samp{db}, the pushed-out line really
-is lost if a scroll region is in effect.
-
-When outputting an insert or delete command with @code{tputs}, the
-@var{nlines} argument should be the total number of lines from the cursor
-to the bottom of the screen (or scroll region).  Very often these commands
-require padding proportional to this number of lines.  @xref{Padding}.
-
-For @samp{AL} and @samp{DL} the @var{nlines} argument should @emph{not}
-depend on the number of lines inserted or deleted; only the total number of
-lines affected.  This is because it is just as fast to insert two or
-@var{n} lines with @samp{AL} as to insert one line with @samp{al}.
-
-@node Insdel Char, Standout, Insdel Line, Capabilities
-@section Insert/Delete Character
-@cindex insert character
-@cindex delete character
-
-@dfn{Inserting a character} means creating a blank space in the middle of a
-line, and pushing the rest of the line rightward.  The character in the
-rightmost column is lost.
-
-@dfn{Deleting a character} means causing the character to disappear from
-the screen, closing up the gap by moving the rest of the line leftward.  A
-blank space appears in the rightmost column.
-
-Insertion and deletion of characters is useful in programs that maintain an
-updating display some parts of which may get longer or shorter.  It is also
-useful in editors for redisplaying the results of editing within a line.
-
-Many terminals provide commands to insert or delete a single character at
-the cursor position.  Some provide the ability to insert or delete several
-characters with one command, using the number of characters to insert or
-delete as a parameter.
-
-@cindex insert mode
-Many terminals provide an insert mode in which outputting a graphic
-character has the added effect of inserting a position for that character.
-A special command string is used to enter insert mode and another is used
-to exit it.  The reason for designing a terminal with an insert mode rather
-than an insert command is that inserting character positions is usually
-followed by writing characters into them.  With insert mode, this is as
-fast as simply writing the characters, except for the fixed overhead of
-entering and leaving insert mode.  However, when the line speed is great
-enough, padding may be required for the graphic characters output in insert
-mode.
-
-Some terminals require you to enter insert mode and then output a special
-command for each position to be inserted.  Or they may require special
-commands to be output before or after each graphic character to be
-inserted.
-
-@cindex delete mode
-Deletion of characters is usually accomplished by a straightforward command
-to delete one or several positions; but on some terminals, it is necessary
-to enter a special delete mode before using the delete command, and leave
-delete mode afterward.  Sometimes delete mode and insert mode are the same
-mode.
-
-Some terminals make a distinction between character positions in which a
-space character has been output and positions which have been cleared.  On
-these terminals, the effect of insert or delete character runs to the first
-cleared position rather than to the end of the line.  In fact, the effect
-may run to more than one line if there is no cleared position to stop the
-shift on the first line.  These terminals are identified by the @samp{in}
-flag capability.
-
-On terminals with the @samp{in} flag, the technique of skipping over
-characters that you know were cleared, and then outputting text later on in
-the same line, causes later insert and delete character operations on that
-line to do nonstandard things.  A program that has any chance of doing this
-must check for the @samp{in} flag and must be careful to write explicit
-space characters into the intermediate columns when @samp{in} is present.
-
-A plethora of terminal capabilities are needed to describe all of this
-complexity.  Here is a list of them all.  Following the list, we present
-an algorithm for programs to use to take proper account of all of these
-capabilities.
-
-@table @samp
-@item im
-@kindex im
-String of commands to enter insert mode.
-
-If the terminal has no special insert mode, but it can insert
-characters with a special command, @samp{im} should be defined with a
-null value, because the @samp{vi} editor assumes that insertion of a
-character is impossible if @samp{im} is not provided.
-
-New programs should not act like @samp{vi}.  They should pay attention
-to @samp{im} only if it is defined.
-
-@item ei
-@kindex ei
-String of commands to leave insert mode.  This capability must be
-present if @samp{im} is.
-
-On a few old terminals the same string is used to enter and exit
-insert mode.  This string turns insert mode on if it was off, and off
-it it was on.  You can tell these terminals because the @samp{ei}
-string equals the @samp{im} string.  If you want to support these
-terminals, you must always remember accurately whether insert mode is
-in effect.  However, these terminals are obsolete, and it is
-reasonable to refuse to support them.  On all modern terminals, you
-can safely output @samp{ei} at any time to ensure that insert mode is
-turned off.
-
-@item ic
-@kindex ic
-String of commands to insert one character position at the cursor.
-The cursor does not move.
-
-If outputting a graphic character while in insert mode is sufficient
-to insert the character, then the @samp{ic} capability should be
-defined with a null value.
-
-If your terminal offers a choice of ways to insert---either use insert
-mode or use a special command---then define @samp{im} and do not define
-@samp{ic}, since this gives the most efficient operation when several
-characters are to be inserted.  @emph{Do not} define both strings, for
-that means that @emph{both} must be used each time insertion is done.
-
-@item ip
-@kindex ip
-String of commands to output following an inserted graphic character
-in insert mode.  Often it is used just for a padding spec, when padding
-is needed after an inserted character (@pxref{Padding}).
-
-@item IC
-@kindex IC
-String of commands to insert @var{n} character positions at and after
-the cursor.  It has the same effect as repeating the @samp{ic} string
-and a space, @var{n} times.
-
-If @samp{IC} is provided, application programs may use it without first
-entering insert mode.
-
-@item mi
-@kindex mi
-Flag whose presence means it is safe to move the cursor while in insert
-mode and assume the terminal remains in insert mode.
-
-@item in
-@kindex in
-Flag whose presence means that the terminal distinguishes between
-character positions in which space characters have been output and
-positions which have been cleared.
-@end table
-
-An application program can assume that the terminal can do character
-insertion if @emph{any one of} the capabilities @samp{IC}, @samp{im},
-@samp{ic} or @samp{ip} is provided.
-
-To insert @var{n} blank character positions, move the cursor to the place
-to insert them and follow this algorithm:
-
-@enumerate
-@item
-If an @samp{IC} string is provided, output it with parameter @var{n}
-and you are finished.  Otherwise (or if you don't want to bother to
-look for an @samp{IC} string) follow the remaining steps.
-
-@item
-Output the @samp{im} string, if there is one, unless the terminal is
-already in insert mode.
-
-@item
-Repeat steps 4 through 6, @var{n} times.
-
-@item
-Output the @samp{ic} string if any.
-
-@item
-Output a space.
-
-@item
-Output the @samp{ip} string if any.
-
-@item
-Output the @samp{ei} string, eventually, to exit insert mode.  There
-is no need to do this right away.  If the @samp{mi} flag is present,
-you can move the cursor and the cursor will remain in insert mode;
-then you can do more insertion elsewhere without reentering insert
-mode.
-@end enumerate
-
-To insert @var{n} graphic characters, position the cursor and follow this
-algorithm:
-
-@enumerate
-@item
-If an @samp{IC} string is provided, output it with parameter @var{n},
-then output the graphic characters, and you are finished.  Otherwise
-(or if you don't want to bother to look for an @samp{IC} string)
-follow the remaining steps.
-
-@item
-Output the @samp{im} string, if there is one, unless the terminal is
-already in insert mode.
-
-@item
-For each character to be output, repeat steps 4 through 6.
-
-@item
-Output the @samp{ic} string if any.
-
-@item
-Output the next graphic character.
-
-@item
-Output the @samp{ip} string if any.
-
-@item
-Output the @samp{ei} string, eventually, to exit insert mode.  There
-is no need to do this right away.  If the @samp{mi} flag is present,
-you can move the cursor and the cursor will remain in insert mode;
-then you can do more insertion elsewhere without reentering insert
-mode.
-@end enumerate
-
-Note that this is not the same as the original Unix termcap specifications
-in one respect: it assumes that the @samp{IC} string can be used without
-entering insert mode.  This is true as far as I know, and it allows you be
-able to avoid entering and leaving insert mode, and also to be able to
-avoid the inserted-character padding after the characters that go into the
-inserted positions.
-
-Deletion of characters is less complicated; deleting one column is done by
-outputting the @samp{dc} string.  However, there may be a delete mode that
-must be entered with @samp{dm} in order to make @samp{dc} work.
-
-@table @samp
-@item dc
-@kindex dc
-String of commands to delete one character position at the cursor.  If
-@samp{dc} is not present, the terminal cannot delete characters.
-
-@item DC
-@kindex DC
-String of commands to delete @var{n} characters starting at the cursor.
-It has the same effect as repeating the @samp{dc} string @var{n} times.
-Any terminal description that has @samp{DC} also has @samp{dc}.
-
-@item dm
-@kindex dm
-String of commands to enter delete mode.  If not present, there is no
-delete mode, and @samp{dc} can be used at any time (assuming there is
-a @samp{dc}).
-
-@item ed
-@kindex ed
-String of commands to exit delete mode.  This must be present if
-@samp{dm} is.
-@end table
-
-To delete @var{n} character positions, position the cursor and follow these
-steps:
-
-@enumerate
-@item
-If the @samp{DC} string is present, output it with parameter @var{n}
-and you are finished.  Otherwise, follow the remaining steps.
-
-@item
-Output the @samp{dm} string, unless you know the terminal is already
-in delete mode.
-
-@item
-Output the @samp{dc} string @var{n} times.
-
-@item
-Output the @samp{ed} string eventually.  If the flag capability
-@samp{mi} is present, you can move the cursor and do more deletion
-without leaving and reentering delete mode.
-@end enumerate
-
-As with the @samp{IC} string, we have departed from the original termcap
-specifications by assuming that @samp{DC} works without entering delete
-mode even though @samp{dc} would not.
-
-If the @samp{dm} and @samp{im} capabilities are both present and have the
-same value, it means that the terminal has one mode for both insertion and
-deletion.  It is useful for a program to know this, because then it can do
-insertions after deletions, or vice versa, without leaving insert/delete
-mode and reentering it.
-
-@node Standout, Underlining, Insdel Char, Capabilities
-@section Standout and Appearance Modes
-@cindex appearance modes
-@cindex standout
-@cindex magic cookie
-
-@dfn{Appearance modes} are modifications to the ways characters are
-displayed.  Typical appearance modes include reverse video, dim, bright,
-blinking, underlined, invisible, and alternate character set.  Each kind of
-terminal supports various among these, or perhaps none.
-
-For each type of terminal, one appearance mode or combination of them that
-looks good for highlighted text is chosen as the @dfn{standout mode}.  The
-capabilities @samp{so} and @samp{se} say how to enter and leave standout
-mode.  Programs that use appearance modes only to highlight some text
-generally use the standout mode so that they can work on as many terminals
-as possible.  Use of specific appearance modes other than ``underlined''
-and ``alternate character set'' is rare.
-
-Terminals that implement appearance modes fall into two general classes as
-to how they do it.
-
-In some terminals, the presence or absence of any appearance mode is
-recorded separately for each character position.  In these terminals, each
-graphic character written is given the appearance modes current at the time
-it is written, and keeps those modes until it is erased or overwritten.
-There are special commands to turn the appearance modes on or off for
-characters to be written in the future.
-
-In other terminals, the change of appearance modes is represented by a
-marker that belongs to a certain screen position but affects all following
-screen positions until the next marker.  These markers are traditionally
-called @dfn{magic cookies}.
-
-The same capabilities (@samp{so}, @samp{se}, @samp{mb} and so on) for
-turning appearance modes on and off are used for both magic-cookie
-terminals and per-character terminals.  On magic cookie terminals, these
-give the commands to write the magic cookies.  On per-character terminals,
-they change the current modes that affect future output and erasure.  Some
-simple applications can use these commands without knowing whether or not
-they work by means of cookies.
-
-However, a program that maintains and updates a display needs to know
-whether the terminal uses magic cookies, and exactly what their effect is.
-This information comes from the @samp{sg} capability.
-
-The @samp{sg} capability is a numeric capability whose presence indicates
-that the terminal uses magic cookies for appearance modes.  Its value is
-the number of character positions that a magic cookie occupies.  Usually
-the cookie occupies one or more character positions on the screen, and these
-character positions are displayed as blank, but in some terminals the
-cookie has zero width.
-
-The @samp{sg} capability describes both the magic cookie to turn standout
-on and the cookie to turn it off.  This makes the assumption that both
-kinds of cookie have the same width on the screen.  If that is not true,
-the narrower cookie must be ``widened'' with spaces until it has the same
-width as the other.
-
-On some magic cookie terminals, each line always starts with normal
-display; in other words, the scope of a magic cookie never extends over
-more than one line.  But on other terminals, one magic cookie affects all
-the lines below it unless explicitly canceled.  Termcap does not define any
-way to distinguish these two ways magic cookies can work.  To be safe, it
-is best to put a cookie at the beginning of each line.
-
-On some per-character terminals, standout mode or other appearance modes
-may be canceled by moving the cursor.  On others, moving the cursor has no
-effect on the state of the appearance modes.  The latter class of terminals
-are given the flag capability @samp{ms} (``can move in standout'').  All
-programs that might have occasion to move the cursor while appearance modes
-are turned on must check for this flag; if it is not present, they should
-reset appearance modes to normal before doing cursor motion.
-
-A program that has turned on only standout mode should use @samp{se} to
-reset the standout mode to normal.  A program that has turned on only
-alternate character set mode should use @samp{ae} to return it to normal.
-If it is possible that any other appearance modes are turned on, use the
-@samp{me} capability to return them to normal.
-
-Note that the commands to turn on one appearance mode, including @samp{so}
-and @samp{mb} @dots{} @samp{mr}, if used while some other appearance modes
-are turned on, may combine the two modes on some terminals but may turn off
-the mode previously enabled on other terminals.  This is because some
-terminals do not have a command to set or clear one appearance mode without
-changing the others.  Programs should not attempt to use appearance modes
-in combination except with @samp{sa}, and when switching from one single
-mode to another should always turn off the previously enabled mode and then
-turn on the new desired mode.
-
-On some old terminals, the @samp{so} and @samp{se} commands may be the same
-command, which has the effect of turning standout on if it is off, or off
-it is on.  It is therefore risky for a program to output extra @samp{se}
-commands for good measure.  Fortunately, all these terminals are obsolete.
-
-Programs that update displays in which standout-text may be replaced with
-non-standout text must check for the @samp{xs} flag.  In a per-character
-terminal, this flag says that the only way to remove standout once written is
-to clear that portion of the line with the @samp{ce} string or something
-even more powerful (@pxref{Clearing}); just writing new characters at those
-screen positions will not change the modes in effect there.  In a magic
-cookie terminal, @samp{xs} says that the only way to remove a cookie is to
-clear a portion of the line that includes the cookie; writing a different
-cookie at the same position does not work.
-
-Such programs must also check for the @samp{xt} flag, which means that the
-terminal is a Teleray 1061.  On this terminal it is impossible to position
-the cursor at the front of a magic cookie, so the only two ways to remove a
-cookie are (1) to delete the line it is on or (2) to position the cursor at
-least one character before it (possibly on a previous line) and output the
-@samp{se} string, which on these terminals finds and removes the next
-@samp{so} magic cookie on the screen.  (It may also be possible to remove a
-cookie which is not at the beginning of a line by clearing that line.)  The
-@samp{xt} capability also has implications for the use of tab characters,
-but in that regard it is obsolete (@xref{Cursor Motion}).
-
-@table @samp
-@item so
-@kindex so
-String of commands to enter standout mode.
-
-@item se
-@kindex se
-String of commands to leave standout mode.
-
-@item sg
-@kindex sg
-Numeric capability, the width on the screen of the magic cookie.  This
-capability is absent in terminals that record appearance modes
-character by character.
-
-@item ms
-@kindex ms
-Flag whose presence means that it is safe to move the cursor while the
-appearance modes are not in the normal state.  If this flag is absent,
-programs should always reset the appearance modes to normal before
-moving the cursor.
-
-@item xs
-@kindex xs
-Flag whose presence means that the only way to reset appearance modes
-already on the screen is to clear to end of line.  On a per-character
-terminal, you must clear the area where the modes are set.  On a magic
-cookie terminal, you must clear an area containing the cookie.
-See the discussion above.
-
-@item xt
-@kindex xt
-Flag whose presence means that the cursor cannot be positioned right
-in front of a magic cookie, and that @samp{se} is a command to delete
-the next magic cookie following the cursor.  See discussion above.
-
-@item mb
-@kindex mb
-String of commands to enter blinking mode.
-
-@item md
-@kindex md
-String of commands to enter double-bright mode.
-
-@item mh
-@kindex mh
-String of commands to enter half-bright mode.
-
-@item mk
-@kindex mk
-String of commands to enter invisible mode.
-
-@item mp
-@kindex mp
-String of commands to enter protected mode.
-
-@item mr
-@kindex mr
-String of commands to enter reverse-video mode.
-
-@item me
-@kindex me
-String of commands to turn off all appearance modes, including
-standout mode and underline mode.  On some terminals it also turns off
-alternate character set mode; on others, it may not.  This capability
-must be present if any of @samp{mb} @dots{} @samp{mr} is present.
-
-@item as
-@kindex as
-String of commands to turn on alternate character set mode.  This mode
-assigns some or all graphic characters an alternate picture on the
-screen.  There is no standard as to what the alternate pictures look
-like.
-
-@item ae
-@kindex ae
-String of commands to turn off alternate character set mode.
-
-@item sa
-@kindex sa
-String of commands to turn on an arbitrary combination of appearance
-modes.  It accepts 9 parameters, each of which controls a particular
-kind of appearance mode.  A parameter should be 1 to turn its appearance
-mode on, or zero to turn that mode off.  Most terminals do not support
-the @samp{sa} capability, even among those that do have various
-appearance modes.
-
-The nine parameters are, in order, @var{standout}, @var{underline},
-@var{reverse}, @var{blink}, @var{half-bright}, @var{double-bright},
-@var{blank}, @var{protect}, @var{alt char set}.
-@end table
-
-@node Underlining, Cursor Visibility, Standout, Capabilities
-@section Underlining
-@cindex underlining
-
-Underlining on most terminals is a kind of appearance mode, much like
-standout mode.  Therefore, it may be implemented using magic cookies or as
-a flag in the terminal whose current state affects each character that is
-output.  @xref{Standout}, for a full explanation.
-
-The @samp{ug} capability is a numeric capability whose presence indicates
-that the terminal uses magic cookies for underlining.  Its value is the
-number of character positions that a magic cookie for underlining occupies;
-it is used for underlining just as @samp{sg} is used for standout.  Aside
-from the simplest applications, it is impossible to use underlining
-correctly without paying attention to the value of @samp{ug}.
-
-@table @samp
-@item us
-@kindex us
-String of commands to turn on underline mode or to output a magic cookie
-to start underlining.
-
-@item ue
-@kindex ue
-String of commands to turn off underline mode or to output a magic
-cookie to stop underlining.
-
-@item ug
-@kindex ug
-Width of magic cookie that represents a change of underline mode;
-or missing, if the terminal does not use a magic cookie for this.
-
-@item ms
-@kindex ms
-Flag whose presence means that it is safe to move the cursor while the
-appearance modes are not in the normal state.  Underlining is an
-appearance mode.  If this flag is absent, programs should always turn
-off underlining before moving the cursor.
-@end table
-
-There are two other, older ways of doing underlining: there can be a
-command to underline a single character, or the output of @samp{_}, the
-ASCII underscore character, as an overstrike could cause a character to be
-underlined.  New programs need not bother to handle these capabilities
-unless the author cares strongly about the obscure terminals which support
-them.  However, terminal descriptions should provide these capabilities
-when appropriate.
-
-@table @samp
-@item uc
-@kindex uc
-String of commands to underline the character under the cursor, and
-move the cursor right.
-
-@item ul
-@kindex ul
-Flag whose presence means that the terminal can underline by
-overstriking an underscore character (@samp{_}); some terminals can do
-this even though they do not support overstriking in general.  An
-implication of this flag is that when outputting new text to overwrite
-old text, underscore characters must be treated specially lest they
-underline the old text instead.
-@end table
-
-@node Cursor Visibility, Bell, Underlining, Capabilities
-@section Cursor Visibility
-@cindex visibility
-
-Some terminals have the ability to make the cursor invisible, or to enhance
-it.  Enhancing the cursor is often done by programs that plan to use the
-cursor to indicate to the user a position of interest that may be anywhere
-on the screen---for example, the Emacs editor enhances the cursor on entry.
-Such programs should always restore the cursor to normal on exit.
-
-@table @samp
-@item vs
-@kindex vs
-String of commands to enhance the cursor.
-
-@item vi
-@kindex vi
-String of commands to make the cursor invisible.
-
-@item ve
-@kindex ve
-String of commands to return the cursor to normal.
-@end table
-
-If you define either @samp{vs} or @samp{vi}, you must also define @samp{ve}.
-
-@node Bell, Keypad, Cursor Visibility, Capabilities
-@section Bell
-@cindex bell
-@cindex visible bell
-
-Here we describe commands to make the terminal ask for the user to pay
-attention to it.
-
-@table @samp
-@item bl
-@kindex bl
-String of commands to cause the terminal to make an audible sound.  If
-this capability is absent, the terminal has no way to make a suitable
-sound.
-
-@item vb
-@kindex vb
-String of commands to cause the screen to flash to attract attention
-(``visible bell'').  If this capability is absent, the terminal has no
-way to do such a thing.
-@end table
-
-@node Keypad, Meta Key, Bell, Capabilities
-@section Keypad and Function Keys
-
-Many terminals have arrow and function keys that transmit specific
-character sequences to the computer.  Since the precise sequences used
-depend on the terminal, termcap defines capabilities used to say what the
-sequences are.  Unlike most termcap string-valued capabilities, these are
-not strings of commands to be sent to the terminal, rather strings that
-are received from the terminal.
-
-Programs that expect to use keypad keys should check, initially, for a
-@samp{ks} capability and send it, to make the keypad actually transmit.
-Such programs should also send the @samp{ke} string when exiting.
-
-@table @asis
-@item @samp{ks}
-@kindex ka@dots{}ku
-String of commands to make the keypad keys transmit.  If this
-capability is not provided, but the others in this section are,
-programs may assume that the keypad keys always transmit.
-
-@item @samp{ke}
-String of commands to make the keypad keys work locally.  This
-capability is provided only if @samp{ks} is.
-
-@item @samp{kl}
-String of input characters sent by typing the left-arrow key.  If this
-capability is missing, you cannot expect the terminal to have a
-left-arrow key that transmits anything to the computer.
-
-@item @samp{kr}
-String of input characters sent by typing the right-arrow key.
-
-@item @samp{ku}
-String of input characters sent by typing the up-arrow key.
-
-@item @samp{kd}
-String of input characters sent by typing the down-arrow key.
-
-@item @samp{kh}
-String of input characters sent by typing the ``home-position'' key.
-
-@item @samp{K1} @dots{} @samp{K5}
-@kindex K1@dots{}K5
-Strings of input characters sent by the five other keys in a 3-by-3
-array that includes the arrow keys, if the keyboard has such a 3-by-3
-array.  Note that one of these keys may be the ``home-position'' key,
-in which case one of these capabilities will have the same value as
-the @samp{kh} key.
-
-@item @samp{k0}
-String of input characters sent by function key 10 (or 0, if the terminal
-has one labeled 0).
-
-@item @samp{k1} @dots{} @samp{k9}
-@kindex k1@dots{}k9
-Strings of input characters sent by function keys 1 through 9,
-provided for those function keys that exist.
-
-@item @samp{kn}
-Number: the number of numbered function keys, if there are more than
-10.
-
-@item @samp{l0} @dots{} @samp{l9}
-@kindex l0@dots{}l9
-Strings which are the labels appearing on the keyboard on the keys
-described by the capabilities @samp{k0} @dots{} @samp{l9}.  These
-capabilities should be left undefined if the labels are @samp{f0} or
-@samp{f10} and @samp{f1} @dots{} @samp{f9}.@refill
-
-@item @samp{kH}
-@kindex kA@dots{}kT
-String of input characters sent by the ``home down'' key, if there is
-one.
-
-@item @samp{kb}
-String of input characters sent by the ``backspace'' key, if there is
-one.
-
-@item @samp{ka}
-String of input characters sent by the ``clear all tabs'' key, if there
-is one.
-
-@item @samp{kt}
-String of input characters sent by the ``clear tab stop this column''
-key, if there is one.
-
-@item @samp{kC}
-String of input characters sent by the ``clear screen'' key, if there is
-one.
-
-@item @samp{kD}
-String of input characters sent by the ``delete character'' key, if
-there is one.
-
-@item @samp{kL}
-String of input characters sent by the ``delete line'' key, if there is
-one.
-
-@item @samp{kM}
-String of input characters sent by the ``exit insert mode'' key, if
-there is one.
-
-@item @samp{kE}
-String of input characters sent by the ``clear to end of line'' key, if
-there is one.
-
-@item @samp{kS}
-String of input characters sent by the ``clear to end of screen'' key,
-if there is one.
-
-@item @samp{kI}
-String of input characters sent by the ``insert character'' or ``enter
-insert mode'' key, if there is one.
-
-@item @samp{kA}
-String of input characters sent by the ``insert line'' key, if there is
-one.
-
-@item @samp{kN}
-String of input characters sent by the ``next page'' key, if there is
-one.
-
-@item @samp{kP}
-String of input characters sent by the ``previous page'' key, if there is
-one.
-
-@item @samp{kF}
-String of input characters sent by the ``scroll forward'' key, if there
-is one.
-
-@item @samp{kR}
-String of input characters sent by the ``scroll reverse'' key, if there
-is one.
-
-@item @samp{kT}
-String of input characters sent by the ``set tab stop in this column''
-key, if there is one.
-
-@item @samp{ko}
-String listing the other function keys the terminal has.  This is a
-very obsolete way of describing the same information found in the
-@samp{kH} @dots{} @samp{kT} keys.  The string contains a list of
-two-character termcap capability names, separated by commas.  The
-meaning is that for each capability name listed, the terminal has a
-key which sends the string which is the value of that capability.  For
-example, the value @samp{:ko=cl,ll,sf,sr:} says that the terminal has
-four function keys which mean ``clear screen'', ``home down'',
-``scroll forward'' and ``scroll reverse''.@refill
-@end table
-
-@node Meta Key, Initialization, Keypad, Capabilities
-@section Meta Key
-
-@cindex meta key
-A Meta key is a key on the keyboard that modifies each character you type
-by controlling the 0200 bit.  This bit is on if and only if the Meta key is
-held down when the character is typed.  Characters typed using the Meta key
-are called Meta characters.  Emacs uses Meta characters as editing
-commands.
-
-@table @samp
-@item km
-@kindex km
-Flag whose presence means that the terminal has a Meta key.
-
-@item mm
-@kindex mm
-String of commands to enable the functioning of the Meta key.
-
-@item mo
-@kindex mo
-String of commands to disable the functioning of the Meta key.
-@end table
-
-If the terminal has @samp{km} but does not have @samp{mm} and @samp{mo}, it
-means that the Meta key always functions.  If it has @samp{mm} and
-@samp{mo}, it means that the Meta key can be turned on or off.  Send the
-@samp{mm} string to turn it on, and the @samp{mo} string to turn it off.
-I do not know why one would ever not want it to be on.
-
-@node Initialization, Pad Specs, Meta Key, Capabilities
-@section Initialization
-@cindex reset
-@cindex initialization
-@cindex tab stops
-
-@table @samp
-@item ti
-@kindex ti
-String of commands to put the terminal into whatever special modes are
-needed or appropriate for programs that move the cursor
-nonsequentially around the screen.  Programs that use termcap to do
-full-screen display should output this string when they start up.
-
-@item te
-@kindex te
-String of commands to undo what is done by the @samp{ti} string.
-Programs that output the @samp{ti} string on entry should output this
-string when they exit.
-
-@item is
-@kindex is
-String of commands to initialize the terminal for each login session.
-
-@item if
-@kindex if
-String which is the name of a file containing the string of commands
-to initialize the terminal for each session of use.  Normally @samp{is}
-and @samp{if} are not both used.
-
-@item i1
-@itemx i3
-@kindex i1
-@kindex i3
-Two more strings of commands to initialize the terminal for each login
-session.  The @samp{i1} string (if defined) is output before @samp{is}
-or @samp{if}, and the @samp{i3} string (if defined) is output after.
-
-The reason for having three separate initialization strings is to make
-it easier to define a group of related terminal types with slightly
-different initializations.  Define two or three of the strings in the
-basic type; then the other types can override one or two of the
-strings.
-
-@item rs
-@kindex rs
-String of commands to reset the terminal from any strange mode it may
-be in.  Normally this includes the @samp{is} string (or other commands
-with the same effects) and more.  What would go in the @samp{rs}
-string but not in the @samp{is} string are annoying or slow commands
-to bring the terminal back from strange modes that nobody would
-normally use.
-
-@item it
-@kindex it
-Numeric value, the initial spacing between hardware tab stop columns
-when the terminal is powered up.  Programs to initialize the terminal
-can use this to decide whether there is a need to set the tab stops.
-If the initial width is 8, well and good; if it is not 8, then the
-tab stops should be set; if they cannot be set, the kernel is told
-to convert tabs to spaces, and other programs will observe this and do
-likewise.
-
-@item ct
-@kindex ct
-String of commands to clear all tab stops.
-
-@item st
-@kindex st
-String of commands to set tab stop at current cursor column on all
-lines.
-
-@item NF
-@kindex NF
-Flag whose presence means that the terminal does not support XON/XOFF
-flow control.  Programs should not send XON (@kbd{C-q}) or XOFF
-(@kbd{C-s}) characters to the terminal.
-@end table
-
-@node Pad Specs, Status Line, Initialization, Capabilities
-@section Padding Capabilities
-@cindex padding
-
-There are two terminal capabilities that exist just to explain the proper
-way to obey the padding specifications in all the command string
-capabilities.  One, @samp{pc}, must be obeyed by all termcap-using
-programs.
-
-@table @samp
-@item pb
-@kindex pb
-Numeric value, the lowest baud rate at which padding is actually
-needed.  Programs may check this and refrain from doing any padding at
-lower speeds.
-
-@item pc
-@kindex pc
-String of commands for padding.  The first character of this string is
-to be used as the pad character, instead of using null characters for
-padding.  If @samp{pc} is not provided, use null characters.  Every
-program that uses termcap must look up this capability and use it to
-set the variable @code{PC} that is used by @code{tputs}.
-@xref{Padding}.
-@end table
-
-Some termcap capabilities exist just to specify the amount of padding that
-the kernel should give to cursor motion commands used in ordinary
-sequential output.
-
-@table @samp
-@item dC
-@kindex dC
-Numeric value, the number of msec of padding needed for the
-carriage-return character.
-
-@item dN
-@kindex dN
-Numeric value, the number of msec of padding needed for the newline
-(linefeed) character.
-
-@item dB
-@kindex dB
-Numeric value, the number of msec of padding needed for the backspace
-character.
-
-@item dF
-@kindex dF
-Numeric value, the number of msec of padding needed for the formfeed
-character.
-
-@item dT
-@kindex dT
-Numeric value, the number of msec of padding needed for the tab
-character.
-@end table
-
-In some systems, the kernel uses the above capabilities; in other systems,
-the kernel uses the paddings specified in the string capabilities
-@samp{cr}, @samp{sf}, @samp{le}, @samp{ff} and @samp{ta}.  Descriptions of
-terminals which require such padding should contain the @samp{dC} @dots{}
-@samp{dT} capabilities and also specify the appropriate padding in the
-corresponding string capabilities.  Since no modern terminals require
-padding for ordinary sequential output, you probably won't need to do
-either of these things.
-
-@node Status Line, Half-Line, Pad Specs, Capabilities
-@section Status Line
-
-@cindex status line
-A @dfn{status line} is a line on the terminal that is not used for ordinary
-display output but instead used for a special message.  The intended use is
-for a continuously updated description of what the user's program is doing,
-and that is where the name ``status line'' comes from, but in fact it could
-be used for anything.  The distinguishing characteristic of a status line
-is that ordinary output to the terminal does not affect it; it changes only
-if the special status line commands of this section are used.
-
-@table @samp
-@item hs
-@kindex hs
-Flag whose presence means that the terminal has a status line.  If a
-terminal description specifies that there is a status line, it must
-provide the @samp{ts} and @samp{fs} capabilities.
-
-@item ts
-@kindex ts
-String of commands to move the terminal cursor into the status line.
-Usually these commands must specifically record the old cursor
-position for the sake of the @samp{fs} string.
-
-@item fs
-@kindex fs
-String of commands to move the cursor back from the status line to its
-previous position (outside the status line).
-
-@item es
-@kindex es
-Flag whose presence means that other display commands work while
-writing the status line.  In other words, one can clear parts of it,
-insert or delete characters, move the cursor within it using @samp{ch}
-if there is a @samp{ch} capability, enter and leave standout mode, and
-so on.
-
-@item ds
-@kindex ds
-String of commands to disable the display of the status line.  This
-may be absent, if there is no way to disable the status line display.
-
-@item ws
-@kindex ws
-Numeric value, the width of the status line.  If this capability is
-absent in a terminal that has a status line, it means the status line
-is the same width as the other lines.
-
-Note that the value of @samp{ws} is sometimes as small as 8.
-@end table
-
-@node Half-Line, Printer, Status Line, Capabilities
-@section Half-Line Motion
-
-Some terminals have commands for moving the cursor vertically by half-lines,
-useful for outputting subscripts and superscripts.  Mostly it is hardcopy
-terminals that have such features.
-
-@table @samp
-@item hu
-@kindex hu
-String of commands to move the cursor up half a line.  If the terminal
-is a display, it is your responsibility to avoid moving up past the
-top line; however, most likely the terminal that supports this is a
-hardcopy terminal and there is nothing to be concerned about.
-
-@item hd
-@kindex hd
-String of commands to move the cursor down half a line.  If the
-terminal is a display, it is your responsibility to avoid moving down
-past the bottom line, etc.
-@end table
-
-@node Printer,  , Half-Line, Capabilities
-@section Controlling Printers Attached to Terminals
-@cindex printer
-
-Some terminals have attached hardcopy printer ports.  They may be able to
-copy the screen contents to the printer; they may also be able to redirect
-output to the printer.  Termcap does not have anything to tell the program
-whether the redirected output appears also on the screen; it does on some
-terminals but not all.
-
-@table @samp
-@item ps
-@kindex ps
-String of commands to cause the contents of the screen to be printed.
-If it is absent, the screen contents cannot be printed.
-
-@item po
-@kindex po
-String of commands to redirect further output to the printer.
-
-@item pf
-@kindex pf
-String of commands to terminate redirection of output to the printer.
-This capability must be present in the description if @samp{po} is.
-
-@item pO
-@kindex pO
-String of commands to redirect output to the printer for next @var{n}
-characters of output, regardless of what they are.  Redirection will
-end automatically after @var{n} characters of further output.  Until
-then, nothing that is output can end redirection, not even the
-@samp{pf} string if there is one.  The number @var{n} should not be
-more than 255.
-
-One use of this capability is to send non-text byte sequences (such as
-bit-maps) to the printer.
-@end table
-
-Most terminals with printers do not support all of @samp{ps}, @samp{po} and
-@samp{pO}; any one or two of them may be supported.  To make a program that
-can send output to all kinds of printers, it is necessary to check for all
-three of these capabilities, choose the most convenient of the ones that
-are provided, and use it in its own appropriate fashion.
-
-@node Summary, Var Index, Capabilities, Top
-@chapter Summary of Capability Names
-
-Here are all the terminal capability names in alphabetical order
-with a brief description of each.  For cross references to their definitions,
-see the index of capability names (@pxref{Cap Index}).
-
-@table @samp
-@item ae
-String to turn off alternate character set mode.
-@item al
-String to insert a blank line before the cursor.
-@item AL
-String to insert @var{n} blank lines before the cursor.
-@item am
-Flag: output to last column wraps cursor to next line.
-@item as
-String to turn on alternate character set mode.like.
-@item bc
-Very obsolete alternative name for the @samp{le} capability.
-@item bl
-String to sound the bell.
-@item bs
-Obsolete flag: ASCII backspace may be used for leftward motion.
-@item bt
-String to move the cursor left to the previous hardware tab stop column.
-@item bw
-Flag: @samp{le} at left margin wraps to end of previous line.
-@item CC
-String to change terminal's command character.
-@item cd
-String to clear the line the cursor is on, and following lines.
-@item ce
-String to clear from the cursor to the end of the line.
-@item ch
-String to position the cursor at column @var{c} in the same line.
-@item cl
-String to clear the entire screen and put cursor at upper left corner.
-@item cm
-String to position the cursor at line @var{l}, column @var{c}.
-@item CM
-String to position the cursor at line @var{l}, column
-@var{c}, relative to display memory.
-@item co
-Number: width of the screen.
-@item cr
-String to move cursor sideways to left margin.
-@item cs
-String to set the scroll region.
-@item cS
-Alternate form of string to set the scroll region.
-@item ct
-String to clear all tab stops.
-@item cv
-String to position the cursor at line @var{l} in the same column.
-@item da
-Flag: data scrolled off top of screen may be scrolled back.
-@item db
-Flag: data scrolled off bottom of screen may be scrolled back.
-@item dB
-Obsolete number: msec of padding needed for the backspace character.
-@item dc
-String to delete one character position at the cursor.
-@item dC
-Obsolete number: msec of padding needed for the carriage-return character.
-@item DC
-String to delete @var{n} characters starting at the cursor.
-@item dF
-Obsolete number: msec of padding needed for the formfeed character.
-@item dl
-String to delete the line the cursor is on.
-@item DL
-String to delete @var{n} lines starting with the cursor's line.
-@item dm
-String to enter delete mode.
-@item dN
-Obsolete number: msec of padding needed for the newline character.
-@item do
-String to move the cursor vertically down one line.
-@item DO
-String to move cursor vertically down @var{n} lines.
-@item ds
-String to disable the display of the status line.
-@item dT
-Obsolete number: msec of padding needed for the tab character.
-@item ec
-String of commands to clear @var{n} characters at cursor.
-@item ed
-String to exit delete mode.
-@item ei
-String to leave insert mode.
-@item eo
-Flag: output of a space can erase an overstrike.
-@item es
-Flag: other display commands work while writing the status line.
-@item ff
-String to advance to the next page, for a hardcopy terminal.
-@item fs
-String to move the cursor back from the status line to its
-previous position (outside the status line).
-@item gn
-Flag: this terminal type is generic, not real.
-@item hc
-Flag: hardcopy terminal.
-@item hd
-String to move the cursor down half a line.
-@item ho
-String to position cursor at upper left corner.
-@item hs
-Flag: the terminal has a status line.
-@item hu
-String to move the cursor up half a line.
-@item hz
-Flag: terminal cannot accept @samp{~} as output.
-@item i1
-String to initialize the terminal for each login session.
-@item i3
-String to initialize the terminal for each login session.
-@item ic
-String to insert one character position at the cursor.
-@item IC
-String to insert @var{n} character positions at the cursor.
-@item if
-String naming a file of commands to initialize the terminal.
-@item im
-String to enter insert mode.
-@item in
-Flag: outputting a space is different from moving over empty positions.
-@item ip
-String to output following an inserted character in insert mode.
-@item is
-String to initialize the terminal for each login session.
-@item it
-Number: initial spacing between hardware tab stop columns.
-@item k0
-String of input sent by function key 0 or 10.
-@item k1 @dots{} k9
-Strings of input sent by function keys 1 through 9.
-@item K1 @dots{} K5
-Strings sent by the five other keys in 3-by-3 array with arrows.
-@item ka
-String of input sent by the ``clear all tabs'' key.
-@item kA
-String of input sent by the ``insert line'' key.
-@item kb
-String of input sent by the ``backspace'' key.
-@item kC
-String of input sent by the ``clear screen'' key.
-@item kd
-String of input sent by typing the down-arrow key.
-@item kD
-String of input sent by the ``delete character'' key.
-@item ke
-String to make the function keys work locally.
-@item kE
-String of input sent by the ``clear to end of line'' key.
-@item kF
-String of input sent by the ``scroll forward'' key.
-@item kh
-String of input sent by typing the ``home-position'' key.
-@item kH
-String of input sent by the ``home down'' key.
-@item kI
-String of input sent by the ``insert character'' or ``enter
-insert mode'' key.
-@item kl
-String of input sent by typing the left-arrow key.
-@item kL
-String of input sent by the ``delete line'' key.
-@item km
-Flag: the terminal has a Meta key.
-@item kM
-String of input sent by the ``exit insert mode'' key.
-@item kn
-Numeric value, the number of numbered function keys.
-@item kN
-String of input sent by the ``next page'' key.
-@item ko
-Very obsolete string listing the terminal's named function keys.
-@item kP
-String of input sent by the ``previous page'' key.
-@item kr
-String of input sent by typing the right-arrow key.
-@item kR
-String of input sent by the ``scroll reverse'' key.
-@item ks
-String to make the function keys transmit.
-@item kS
-String of input sent by the ``clear to end of screen'' key.
-@item kt
-String of input sent by the ``clear tab stop this column'' key.
-@item kT
-String of input sent by the ``set tab stop in this column'' key.
-@item ku
-String of input sent by typing the up-arrow key.
-@item l0
-String on keyboard labelling function key 0 or 10.
-@item l1 @dots{} l9
-Strings on keyboard labelling function keys 1 through 9.
-@item le
-String to move the cursor left one column.
-@item LE
-String to move cursor left @var{n} columns.
-@item li
-Number: height of the screen.
-@item ll
-String to position cursor at lower left corner.
-@item lm
-Number: lines of display memory.
-@item LP
-Flag: writing to last column of last line will not scroll.
-@item mb
-String to enter blinking mode.
-@item md
-String to enter double-bright mode.
-@item me
-String to turn off all appearance modes
-@item mh
-String to enter half-bright mode.
-@item mi
-Flag: cursor motion in insert mode is safe.
-@item mk
-String to enter invisible mode.
-@item mm
-String to enable the functioning of the Meta key.
-@item mo
-String to disable the functioning of the Meta key.
-@item mp
-String to enter protected mode.
-@item mr
-String to enter reverse-video mode.
-@item ms
-Flag: cursor motion in standout mode is safe.
-@item nc
-Obsolete flag: do not use ASCII carriage-return on this terminal.
-@item nd
-String to move the cursor right one column.
-@item NF
-Flag: do not use XON/XOFF flow control.
-@item nl
-Obsolete alternative name for the @samp{do} and @samp{sf} capabilities.
-@item ns
-Flag: the terminal does not normally scroll for sequential output.
-@item nw
-String to move to start of next line, possibly clearing rest of old line.
-@item os
-Flag: terminal can overstrike.
-@item pb
-Number: the lowest baud rate at which padding is actually needed.
-@item pc
-String containing character for padding.
-@item pf
-String to terminate redirection of output to the printer.
-@item po
-String to redirect further output to the printer.
-@item pO
-String to redirect @var{n} characters ofoutput to the printer.
-@item ps
-String to print the screen on the attached printer.
-@item rc
-String to move to last saved cursor position.
-@item RI
-String to move cursor right @var{n} columns.
-@item rp
-String to output character @var{c} repeated @var{n} times.
-@item rs
-String to reset the terminal from any strange modes.
-@item sa
-String to turn on an arbitrary combination of appearance modes.
-@item sc
-String to save the current cursor position.
-@item se
-String to leave standout mode.
-@item sf
-String to scroll the screen one line up.
-@item SF
-String to scroll the screen @var{n} lines up.
-@item sg
-Number: width of magic standout cookie.  Absent if magic cookies are
-not used.
-@item so
-String to enter standout mode.
-@item sr
-String to scroll the screen one line down.
-@item SR
-String to scroll the screen @var{n} line down.
-@item st
-String to set tab stop at current cursor column on all lines.
-programs.
-@item ta
-String to move the cursor right to the next hardware tab stop column.
-@item te
-String to return terminal to settings for sequential output.
-@item ti
-String to initialize terminal for random cursor motion.
-@item ts
-String to move the terminal cursor into the status line.
-@item uc
-String to underline one character and move cursor right.
-@item ue
-String to turn off underline mode
-@item ug
-Number: width of underlining magic cookie.  Absent if underlining
-doesn't use magic cookies.
-@item ul
-Flag: underline by overstriking with an underscore.
-@item up
-String to move the cursor vertically up one line.
-@item UP
-String to move cursor vertically up @var{n} lines.
-@item us
-String to turn on underline mode
-@item vb
-String to make the screen flash.
-@item ve
-String to return the cursor to normal.
-@item vi
-String to make the cursor invisible.
-@item vs
-String to enhance the cursor.
-@item wi
-String to set the terminal output screen window.
-@item ws
-Number: the width of the status line.
-@item xb
-Flag: superbee terminal.
-@item xn
-Flag: cursor wraps in a strange way.
-@item xs
-Flag: clearing a line is the only way to clear the appearance modes of
-positions in that line (or, only way to remove magic cookies on that
-line).
-@item xt
-Flag: Teleray 1061; several strange characteristics.
-@end table
-
-@node Var Index, Cap Index, Summary, Top
-@unnumbered Variable and Function Index
-
-@printindex fn
-
-@node Cap Index, Index, Var Index, Top
-@unnumbered Capability Index
-
-@printindex ky
-
-@node Index,  , Cap Index, Top
-@unnumbered Concept Index
-
-@printindex cp
-
-@contents
-@bye
diff --git a/lib/termcap/grot/texinfo.tex b/lib/termcap/grot/texinfo.tex
deleted file mode 100644 (file)
index f62e9f5..0000000
+++ /dev/null
@@ -1,4422 +0,0 @@
-%% TeX macros to handle texinfo files
-
-%   Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 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 2, 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 texinfo.tex file; see the file COPYING.  If not, write
-%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
-%USA.
-
-
-%In other words, you are welcome to use, share and improve this program.
-%You are forbidden to forbid anyone else to use, share and improve
-%what you give them.   Help stamp out software-hoarding!
-
-
-% Send bug reports to bug-texinfo@prep.ai.mit.edu.
-% Please include a *precise* test case in each bug report.
-
-
-% Make it possible to create a .fmt file just by loading this file:
-% if the underlying format is not loaded, start by loading it now.
-% Added by gildea November 1993.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-
-% This automatically updates the version number based on RCS.
-\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision: 2.146 $
-\message{Loading texinfo package [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]}\message{}
-  \catcode`+=\active \catcode`\_=\active}
-
-% Save some parts of plain tex whose names we will redefine.
-
-\let\ptextilde=\~
-\let\ptexlbrace=\{
-\let\ptexrbrace=\}
-\let\ptexdots=\dots
-\let\ptexdot=\.
-\let\ptexstar=\*
-\let\ptexend=\end
-\let\ptexbullet=\bullet
-\let\ptexb=\b
-\let\ptexc=\c
-\let\ptexi=\i
-\let\ptext=\t
-\let\ptexl=\l
-\let\ptexL=\L
-
-% 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
- \gdef\tie{\leavevmode\penalty\@M\ }
-}
-\let\~ = \tie                  % And make it available as @~.
-
-\message{Basics,}
-\chardef\other=12
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Set up fixed words for English.
-\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi%
-\def\putwordInfo{Info}%
-\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi%
-\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi%
-\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi%
-\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi%
-\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi%
-\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi%
-\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi%
-\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi%
-\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\fi%
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-\hyphenation{ap-pen-dix}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{eshell}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen \bindingoffset  \bindingoffset=0pt
-\newdimen \normaloffset   \normaloffset=\hoffset
-\newdimen\pagewidth \newdimen\pageheight
-\pagewidth=\hsize \pageheight=\vsize
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal.  We don't just call \tracingall here,
-% since that produces some useless output on the terminal.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{\tracingcommands2 \tracingstats2
-   \tracingpages1 \tracingoutput1 \tracinglostchars1
-   \tracingmacros2 \tracingparagraphs1 \tracingrestores1
-   \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-
-%---------------------Begin change-----------------------
-%
-%%%% For @cropmarks command.
-% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\cornerlong \newdimen\cornerthick
-\newdimen \topandbottommargin
-\newdimen \outerhsize \newdimen \outervsize
-\cornerlong=1pc\cornerthick=.3pt       % These set size of cropmarks
-\outerhsize=7in
-%\outervsize=9.5in
-% Alternative @smallbook page size is 9.25in
-\outervsize=9.25in
-\topandbottommargin=.75in
-%
-%---------------------End change-----------------------
-
-% \onepageout takes a vbox as an argument.  Note that \pagecontents
-% does insertions itself, but you have to call it yourself.
-\chardef\PAGE=255  \output={\onepageout{\pagecontents\PAGE}}
-\def\onepageout#1{\hoffset=\normaloffset
-\ifodd\pageno  \advance\hoffset by \bindingoffset
-\else \advance\hoffset by -\bindingoffset\fi
-{\escapechar=`\\\relax % makes sure backslash is used in output files.
-\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}%
-{\let\hsize=\pagewidth \makefootline}}}%
-\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
-
-%%%% For @cropmarks command %%%%
-
-% Here is a modification of the main output routine for Near East Publications
-% This provides right-angle cropmarks at all four corners.
-% The contents of the page are centerlined into the cropmarks,
-% and any desired binding offset is added as an \hskip on either
-% site of the centerlined box.  (P. A. MacKay, 12 November, 1986)
-%
-\def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up
-{\escapechar=`\\\relax % makes sure backslash is used in output files.
-                \shipout
-                \vbox to \outervsize{\hsize=\outerhsize
-                 \vbox{\line{\ewtop\hfill\ewtop}}
-                 \nointerlineskip
-                 \line{\vbox{\moveleft\cornerthick\nstop}
-                       \hfill
-                       \vbox{\moveright\cornerthick\nstop}}
-                 \vskip \topandbottommargin
-                 \centerline{\ifodd\pageno\hskip\bindingoffset\fi
-                       \vbox{
-                       {\let\hsize=\pagewidth \makeheadline}
-                       \pagebody{#1}
-                       {\let\hsize=\pagewidth \makefootline}}
-                       \ifodd\pageno\else\hskip\bindingoffset\fi}
-                \vskip \topandbottommargin plus1fill minus1fill
-                 \boxmaxdepth\cornerthick
-                 \line{\vbox{\moveleft\cornerthick\nsbot}
-                       \hfill
-                       \vbox{\moveright\cornerthick\nsbot}}
-                 \nointerlineskip
-                 \vbox{\line{\ewbot\hfill\ewbot}}
-       }}
-  \advancepageno
-  \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
-%
-% Do @cropmarks to get crop marks
-\def\cropmarks{\let\onepageout=\croppageout }
-
-\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 \unvbox#1
-\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#1{%
-  \let\next = #1%
-  \begingroup
-    \obeylines
-    \futurelet\temp\parseargx
-}
-
-% If the next token is an obeyed space (from an @example environment or
-% the like), remove it and recurse.  Otherwise, we're done.
-\def\parseargx{%
-  % \obeyedspace is defined far below, after the definition of \sepspaces.
-  \ifx\obeyedspace\temp
-    \expandafter\parseargdiscardspace
-  \else
-    \expandafter\parseargline
-  \fi
-}
-
-% Remove a single space (as the delimiter token to the macro call).
-{\obeyspaces %
- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
-{\obeylines %
-  \gdef\parseargline#1^^M{%
-    \endgroup % End of the group started in \parsearg.
-    %
-    % First remove any @c comment, then any @comment.
-    % Result of each macro is put in \toks0.
-    \argremovec #1\c\relax %
-    \expandafter\argremovecomment \the\toks0 \comment\relax %
-    %
-    % Call the caller's macro, saved as \next in \parsearg.
-    \expandafter\next\expandafter{\the\toks0}%
-  }%
-}
-
-% Since all \c{,omment} does is throw away the argument, we can let TeX
-% do that for us.  The \relax here is matched by the \relax in the call
-% in \parseargline; it could be more or less anything, its purpose is
-% just to delimit the argument to the \c.
-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
-
-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
-%    @end itemize  @c foo
-% will have two active spaces as part of the argument with the
-% `itemize'.  Here we remove all active spaces from #1, and assign the
-% result to \toks0.
-%
-% This loses if there are any *other* active characters besides spaces
-% in the argument -- _ ^ +, for example -- since they get expanded.
-% Fortunately, Texinfo does not define any such commands.  (If it ever
-% does, the catcode of the characters in questionwill have to be changed
-% here.)  But this means we cannot call \removeactivespaces as part of
-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
-% that \parsearg gets might well have any character at all in it.
-%
-\def\removeactivespaces#1{%
-  \begingroup
-    \ignoreactivespaces
-    \edef\temp{#1}%
-    \global\toks0 = \expandafter{\temp}%
-  \endgroup
-}
-
-% Change the active space to expand to nothing.
-%
-\begingroup
-  \obeyspaces
-  \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
-\endgroup
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment.  Type Return to continue.}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
-
-% @begin foo  is the same as @foo, for now.
-\newhelp\EMsimple{Type <Return> to continue.}
-
-\outer\def\begin{\parsearg\beginxxx}
-
-\def\beginxxx #1{%
-\expandafter\ifx\csname #1\endcsname\relax
-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
-\csname #1\endcsname\fi}
-
-% @end foo executes the definition of \Efoo.
-%
-\def\end{\parsearg\endxxx}
-\def\endxxx #1{%
-  \removeactivespaces{#1}%
-  \edef\endthing{\the\toks0}%
-  %
-  \expandafter\ifx\csname E\endthing\endcsname\relax
-    \expandafter\ifx\csname \endthing\endcsname\relax
-      % There's no \foo, i.e., no ``environment'' foo.
-      \errhelp = \EMsimple
-      \errmessage{Undefined command `@end \endthing'}%
-    \else
-      \unmatchedenderror\endthing
-    \fi
-  \else
-    % Everything's ok; the right environment has been started.
-    \csname E\endthing\endcsname
-  \fi
-}
-
-% There is an environment #1, but it hasn't been started.  Give an error.
-%
-\def\unmatchedenderror#1{%
-  \errhelp = \EMsimple
-  \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-}
-
-% Define the control sequence \E#1 to give an unmatched @end error.
-%
-\def\defineunmatchedend#1{%
-  \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-}
-
-
-% Single-spacing is done by various environments (specifically, in
-% \nonfillstart and \quotations).
-\newskip\singlespaceskip \singlespaceskip = 12.5pt
-\def\singlespace{%
-  % Why was this kern here?  It messes up equalizing space above and below
-  % environments.  --karl, 6may93
-  %{\advance \baselineskip by -\singlespaceskip
-  %\kern \baselineskip}%
-  \setleading \singlespaceskip
-}
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt \char '100}}
-
-% 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 \char '173}}
-\def\myrbrace {{\tt \char '175}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
-
-% @enddots{} is an end-of-sentence ellipsis.
-\gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp}$\spacefactor=3000}
-
-% @! is an end-of-sentence bang.
-\gdef\!{!\spacefactor=3000 }
-
-% @? is an end-of-sentence query.
-\gdef\?{?\spacefactor=3000 }
-
-% @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.
-%
-\def\group{\begingroup
-  \ifnum\catcode13=\active \else
-    \errhelp = \groupinvalidhelp
-    \errmessage{@group invalid in context where filling is enabled}%
-  \fi
-  %
-  % The \vtop we start below 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.  (See p.82 of
-  % the TeXbook.)  Thus, space below is not quite equal to space
-  % above.  But it's pretty close.
-  \def\Egroup{%
-    \egroup           % End the \vtop.
-    \endgroup         % End the \group.
-  }%
-  %
-  \vtop\bgroup
-    % We have to put a strut on the last line in case the @group is in
-    % the midst of an example, rather than completely enclosing it.
-    % Otherwise, the interline space between the last line of the group
-    % and the first line afterwards is too small.  But we can't put the
-    % strut in \Egroup, since there it would be on a line by itself.
-    % Hence this just inserts a strut at the beginning of each line.
-    \everypar = {\strut}%
-    %
-    % Since we have a strut on every line, we don't need any of TeX's
-    % normal interline spacing.
-    \offinterlineskip
-    %
-    % OK, but now we have to do something about blank
-    % lines in the input in @example-like environments, which normally
-    % just turn into \lisppar, which will insert no space now that we've
-    % turned off the interline space.  Simplest is to make them be an
-    % empty paragraph.
-    \ifx\par\lisppar
-      \edef\par{\leavevmode \par}%
-      %
-      % Reset ^^M's definition to new definition of \par.
-      \obeylines
-    \fi
-    %
-    % 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
-}
-%
-% 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
-
-\def\need{\parsearg\needx}
-
-% Old definition--didn't work.
-%\def\needx #1{\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\penalty 10000
-%\prevdepth=-1000pt
-%}}
-
-\def\needx#1{%
-  % Go into vertical mode, so we don't make a big box in the middle of a
-  % paragraph.
-  \par
-  %
-  % Don't add any leading before our big empty box, but allow a page
-  % break, since the best break might be right here.
-  \allowbreak
-  \nointerlineskip
-  \vtop to #1\mil{\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
-}
-
-% @br   forces paragraph break
-
-\let\br = \par
-
-% @dots{}  output some dots
-
-\def\dots{$\ldots$}
-
-% @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.
-\def\exdent{\parsearg\exdentyyy}
-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
-
-% This defn is used inside nofill environments such as @example.
-\def\nofillexdent{\parsearg\nofillexdentyyy}
-\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
-\leftline{\hskip\leftskip{\rm#1}}}}
-
-%\hbox{{\rm#1}}\hfil\break}}
-
-% @include file    insert text of that file as input.
-
-\def\include{\parsearg\includezzz}
-%Use \input\thisfile to avoid blank after \input, which may be an active
-%char (in which case the blank would become the \input argument).
-%The grouping keeps the value of \thisfile correct even when @include
-%is nested.
-\def\includezzz #1{\begingroup
-\def\thisfile{#1}\input\thisfile
-\endgroup}
-
-\def\thisfile{}
-
-% @center line   outputs that line, centered
-
-\def\center{\parsearg\centerzzz}
-\def\centerzzz #1{{\advance\hsize by -\leftskip
-\advance\hsize by -\rightskip
-\centerline{#1}}}
-
-% @sp n   outputs n lines of vertical space
-
-\def\sp{\parsearg\spxxx}
-\def\spxxx #1{\par \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{\catcode 64=\other \catcode 123=\other \catcode 125=\other%
-\parsearg \commentxxx}
-
-\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 }
-
-\let\c=\comment
-
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
-\let\chapter=\relax
-\let\unnumbered=\relax
-\let\top=\relax
-\let\unnumberedsec=\relax
-\let\unnumberedsection=\relax
-\let\unnumberedsubsec=\relax
-\let\unnumberedsubsection=\relax
-\let\unnumberedsubsubsec=\relax
-\let\unnumberedsubsubsection=\relax
-\let\section=\relax
-\let\subsec=\relax
-\let\subsubsec=\relax
-\let\subsection=\relax
-\let\subsubsection=\relax
-\let\appendix=\relax
-\let\appendixsec=\relax
-\let\appendixsection=\relax
-\let\appendixsubsec=\relax
-\let\appendixsubsection=\relax
-\let\appendixsubsubsec=\relax
-\let\appendixsubsubsection=\relax
-\let\contents=\relax
-\let\smallbook=\relax
-\let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-\def\ignoremorecommands{%
-  \let\defcv = \relax
-  \let\deffn = \relax
-  \let\deffnx = \relax
-  \let\defindex = \relax
-  \let\defivar = \relax
-  \let\defmac = \relax
-  \let\defmethod = \relax
-  \let\defop = \relax
-  \let\defopt = \relax
-  \let\defspec = \relax
-  \let\deftp = \relax
-  \let\deftypefn = \relax
-  \let\deftypefun = \relax
-  \let\deftypevar = \relax
-  \let\deftypevr = \relax
-  \let\defun = \relax
-  \let\defvar = \relax
-  \let\defvr = \relax
-  \let\ref = \relax
-  \let\xref = \relax
-  \let\printindex = \relax
-  \let\pxref = \relax
-  \let\settitle = \relax
-  \let\include = \relax
-  \let\lowersections = \relax
-  \let\down = \relax
-  \let\raisesections = \relax
-  \let\up = \relax
-  \let\set = \relax
-  \let\clear = \relax
-  \let\item = \relax
-  \let\message = \relax
-}
-
-% Ignore @ignore ... @end ignore.
-%
-\def\ignore{\doignore{ignore}}
-
-% Also ignore @ifinfo, @ifhtml, @html, @menu, and @direntry text.
-%
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\html{\doignore{html}}
-\def\menu{\doignore{menu}}
-\def\direntry{\doignore{direntry}}
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
-  % Don't complain about control sequences we have declared \outer.
-  \ignoresections
-  %
-  % Define a command to swallow text until we reach `@end #1'.
-  \long\def\doignoretext##1\end #1{\enddoignore}%
-  %
-  % Make sure that spaces turn into tokens that match what \doignoretext wants.
-  \catcode32 = 10
-  %
-  % And now expand that command.
-  \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
-  \ifwarnedobs\relax\else
-  % We need to warn folks that they may have trouble with TeX 3.0.
-  % This uses \immediate\write16 rather than \message to get newlines.
-    \immediate\write16{}
-    \immediate\write16{***WARNING*** for users of Unix TeX 3.0!}
-    \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
-    \immediate\write16{If you are running another version of TeX, relax.}
-    \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
-    \immediate\write16{  Then upgrade your TeX installation if you can.}
-    \immediate\write16{If you are stuck with version 3.0, run the}
-    \immediate\write16{  script ``tex3patch'' from the Texinfo distribution}
-    \immediate\write16{  to use a workaround.}
-    \immediate\write16{}
-    \warnedobstrue
-    \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex.  For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
-  \obstexwarn
-  % We must actually expand the ignored text to look for the @end
-  % command, so that nested ignore constructs work.  Thus, we put the
-  % text into a \vbox and then do nothing with the result.  To minimize
-  % the change of memory overflow, we follow the approach outlined on
-  % page 401 of the TeXbook: make the current font be a dummy font.
-  %
-  \setbox0 = \vbox\bgroup
-    % Don't complain about control sequences we have declared \outer.
-    \ignoresections
-    %
-    % Define `@end #1' to end the box, which will in turn undefine the
-    % @end command again.
-    \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
-    %
-    % We are going to be parsing Texinfo commands.  Most cause no
-    % trouble when they are used incorrectly, but some commands do
-    % complicated argument parsing or otherwise get confused, so we
-    % undefine them.
-    %
-    % We can't do anything about stray @-signs, unfortunately;
-    % they'll produce `undefined control sequence' errors.
-    \ignoremorecommands
-    %
-    % Set the current font to be \nullfont, a TeX primitive, and define
-    % all the font commands to also use \nullfont.  We don't use
-    % dummy.tfm, as suggested in the TeXbook, because not all sites
-    % might have that installed.  Therefore, math mode will still
-    % produce output, but that should be an extremely small amount of
-    % stuff compared to the main input.
-    %
-    \nullfont
-    \let\tenrm = \nullfont  \let\tenit = \nullfont  \let\tensl = \nullfont
-    \let\tenbf = \nullfont  \let\tentt = \nullfont  \let\smallcaps = \nullfont
-    \let\tensf = \nullfont
-    % Similarly for index fonts (mostly for their use in
-    % smallexample)
-    \let\indrm = \nullfont  \let\indit = \nullfont  \let\indsl = \nullfont
-    \let\indbf = \nullfont  \let\indtt = \nullfont  \let\indsc = \nullfont
-    \let\indsf = \nullfont
-    %
-    % Don't complain when characters are missing from the fonts.
-    \tracinglostchars = 0
-    %
-    % Don't bother to do space factor calculations.
-    \frenchspacing
-    %
-    % Don't report underfull hboxes.
-    \hbadness = 10000
-    %
-    % Do minimal line-breaking.
-    \pretolerance = 10000
-    %
-    % Do not execute instructions in @tex
-    \def\tex{\doignore{tex}}
-}
-
-% @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.
-%
-\def\set{\parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
-  \def\temp{#2}%
-  \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
-  \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
-  \fi
-}
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-%
-\def\value#1{\expandafter
-               \ifx\csname SET#1\endcsname\relax
-                       {\{No value for ``#1''\}}
-               \else \csname SET#1\endcsname \fi}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-\def\ifset{\parsearg\ifsetxxx}
-\def\ifsetxxx #1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    \expandafter\ifsetfail
-  \else
-    \expandafter\ifsetsucceed
-  \fi
-}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\ifclearxxx}
-\def\ifclearxxx #1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    \expandafter\ifclearsucceed
-  \else
-    \expandafter\ifclearfail
-  \fi
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex always succeeds; we read the text following, through @end
-% iftex).  But `@end iftex' should be valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\defineunmatchedend{iftex}
-
-% We can't just want to start a group at @iftex (for example) and end it
-% at @end iftex, since then @set commands inside the conditional have no
-% effect (they'd get reverted at the end of the group).  So we must
-% define \Eiftex to redefine itself to be its previous value.  (We can't
-% just define it to fail again with an ``unmatched end'' error, since
-% the @ifset might be nested.)
-%
-\def\conditionalsucceed#1{%
-  \edef\temp{%
-    % Remember the current value of \E#1.
-    \let\nece{prevE#1} = \nece{E#1}%
-    %
-    % At the `@end #1', redefine \E#1 to be its previous value.
-    \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
-  }%
-  \temp
-}
-
-% We need to expand lots of \csname's, but we don't want to expand the
-% control sequences after we've constructed them.
-%
-\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
-
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math means output in math mode.
-% We don't use $'s directly in the definition of \math because control
-% sequences like \math are expanded when the toc file is written.  Then,
-% we read the toc file back, the $'s will be normal characters (as they
-% should be, according to the definition of Texinfo).  So we must use a
-% control sequence to switch into and out of math mode.
-%
-% This isn't quite enough for @math to work properly in indices, but it
-% seems unlikely it will ever be needed there.
-%
-\let\implicitmath = $
-\def\math#1{\implicitmath #1\implicitmath}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{\implicitmath\ptexbullet\implicitmath}
-\def\minus{\implicitmath-\implicitmath}
-
-\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx [#1,]}
-\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
-\let\nwnode=\node
-\let\lastnode=\relax
-
-\def\donoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\setref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\def\unnumbnoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\def\appendixnoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\let\refill=\relax
-
-% @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{%
-   \readauxfile
-   \opencontents
-   \openindices
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
-   \comment % Ignore the actual filename.
-}
-
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
-  node \samp{\ignorespaces#1{}}}
-
-\message{fonts,}
-
-% Font-change commands.
-
-% Texinfo supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
-\newfam\sffam
-\def\sf{\fam=\sffam \tensf}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-%% Try out Computer Modern fonts at \magstephalf
-\let\mainmagstep=\magstephalf
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-\def\setfont#1#2{\font#1=\fontprefix#2}
-
-% 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
-
-\ifx\bigger\relax
-\let\mainmagstep=\magstep1
-\setfont\textrm{r12}
-\setfont\texttt{tt12}
-\else
-\setfont\textrm{r10 scaled \mainmagstep}
-\setfont\texttt{tt10 scaled \mainmagstep}
-\fi
-% Instead of cmb10, you many want to use cmbx10.
-% cmbx10 is a prettier font on its own, but cmb10
-% looks better when embedded in a line with cmr10.
-\setfont\textbf{b10 scaled \mainmagstep}
-\setfont\textit{ti10 scaled \mainmagstep}
-\setfont\textsl{sl10 scaled \mainmagstep}
-\setfont\textsf{ss10 scaled \mainmagstep}
-\setfont\textsc{csc10 scaled \mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun, etc.
-\setfont\defbf{bx10 scaled \magstep1} %was 1314
-\setfont\deftt{tt10 scaled \magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-
-% Fonts for indices and small examples.
-% We actually use the slanted font rather than the italic,
-% because texinfo normally uses the slanted fonts for that.
-% Do not make many font distinctions in general in the index, since they
-% aren't very useful.
-\setfont\ninett{tt9}
-\setfont\indrm{r9}
-\setfont\indit{sl9}
-\let\indsl=\indit
-\let\indtt=\ninett
-\let\indsf=\indrm
-\let\indbf=\indrm
-\setfont\indsc{csc10 at 9pt}
-\font\indi=cmmi9
-\font\indsy=cmsy9
-
-% Fonts for headings
-\setfont\chaprm{bx12 scaled \magstep2}
-\setfont\chapit{ti12 scaled \magstep2}
-\setfont\chapsl{sl12 scaled \magstep2}
-\setfont\chaptt{tt12 scaled \magstep2}
-\setfont\chapsf{ss12 scaled \magstep2}
-\let\chapbf=\chaprm
-\setfont\chapsc{csc10 scaled\magstep3}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-
-\setfont\secrm{bx12 scaled \magstep1}
-\setfont\secit{ti12 scaled \magstep1}
-\setfont\secsl{sl12 scaled \magstep1}
-\setfont\sectt{tt12 scaled \magstep1}
-\setfont\secsf{ss12 scaled \magstep1}
-\setfont\secbf{bx12 scaled \magstep1}
-\setfont\secsc{csc10 scaled\magstep2}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-
-% \setfont\ssecrm{bx10 scaled \magstep1}    % This size an font looked bad.
-% \setfont\ssecit{cmti10 scaled \magstep1}    % The letters were too crowded.
-% \setfont\ssecsl{sl10 scaled \magstep1}
-% \setfont\ssectt{tt10 scaled \magstep1}
-% \setfont\ssecsf{ss10 scaled \magstep1}
-
-%\setfont\ssecrm{b10 scaled 1315}      % Note the use of cmb rather than cmbx.
-%\setfont\ssecit{ti10 scaled 1315}     % Also, the size is a little larger than
-%\setfont\ssecsl{sl10 scaled 1315}     % being scaled magstep1.
-%\setfont\ssectt{tt10 scaled 1315}
-%\setfont\ssecsf{ss10 scaled 1315}
-
-%\let\ssecbf=\ssecrm
-
-\setfont\ssecrm{bx12 scaled \magstephalf}
-\setfont\ssecit{ti12 scaled \magstephalf}
-\setfont\ssecsl{sl12 scaled \magstephalf}
-\setfont\ssectt{tt12 scaled \magstephalf}
-\setfont\ssecsf{ss12 scaled \magstephalf}
-\setfont\ssecbf{bx12 scaled \magstephalf}
-\setfont\ssecsc{csc10 scaled \magstep1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled \magstep1
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
-
-% Fonts for title page:
-\setfont\titlerm{bx12 scaled \magstep3}
-\let\authorrm = \secrm
-
-% 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, 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 so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current.  Plain TeX does, for example,
-% \def\bf{\fam=\bffam \tenbf}  By redefining \tenbf, we obviate the need
-% to redefine \bf itself.
-\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
-  \resetmathfonts}
-\def\chapfonts{%
-  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
-  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
-  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
-  \resetmathfonts}
-\def\secfonts{%
-  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
-  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
-  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
-  \resetmathfonts}
-\def\subsecfonts{%
-  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
-  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
-  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
-  \resetmathfonts}
-\def\indexfonts{%
-  \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
-  \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
-  \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy
-  \resetmathfonts}
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\textfonts
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Fonts for short table of contents.
-\setfont\shortcontrm{r12}
-\setfont\shortcontbf{bx12}
-\setfont\shortcontsl{sl12}
-
-%% 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\/\fi\fi\fi}
-\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\var=\smartitalic
-\let\dfn=\smartitalic
-\let\emph=\smartitalic
-\let\cite=\smartitalic
-
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% 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 = `- }
-
-\def\t#1{%
-  {\tt \rawbackslash \frenchspacing #1}%
-  \null
-}
-\let\ttfont=\t
-\def\samp #1{`\tclose{#1}'\null}
-\def\key #1{{\tt \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-\let\file=\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
-    \frenchspacing
-    #1%
-  }%
-  \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in \code.
-% Otherwise, it is too hard to avoid overful hboxes
-% in the Emacs manual, the Library manual, etc.
-
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate an a dash.
-%  -- rms.
-{
-\catcode`\-=\active
-\catcode`\_=\active
-\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex}
-% The following is used by \doprintindex to insure that long function names
-% wrap around.  It is necessary for - and _ to be active before the index is
-% read from the file, as \entry parses the arguments long before \code is
-% ever called.  -- mycroft
-\global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder}
-}
-
-\def\realdash{-}
-\def\realunder{_}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{\normalunderscore\discretionary{}{}{}}
-\def\codex #1{\tclose{#1}\endgroup}
-
-%\let\exp=\tclose  %Was temporary
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else\tclose{\look}\fi
-\else\tclose{\look}\fi}
-
-% 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}
-
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
-\def\l#1{{\li #1}\null}                %
-
-\def\r#1{{\rm #1}}             % roman font
-% Use of \lowercase was suggested.
-\def\sc#1{{\smallcaps#1}}      % smallcaps font
-\def\ii#1{{\it #1}}            % italic font
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page.  Must do @settitle before @titlepage.
-\def\titlefont#1{{\titlerm #1}}
-
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-       \endgroup\page\hbox{}\page}
-
-\def\titlepage{\begingroup \parindent=0pt \textfonts
-   \let\subtitlerm=\tenrm
-% I deinstalled the following change because \cmr12 is undefined.
-% This change was not in the ChangeLog anyway.  --rms.
-%   \let\subtitlerm=\cmr12
-   \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
-   %
-   \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
-   %
-   % Leave some space at the very top of the page.
-   \vglue\titlepagetopglue
-   %
-   % Now you can print the title using @title.
-   \def\title{\parsearg\titlezzz}%
-   \def\titlezzz##1{\leftline{\titlefont{##1}}
-                   % print a rule at the page bottom also.
-                   \finishedtitlepagefalse
-                   \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
-   % No rule at page bottom unless we print one at the top with @title.
-   \finishedtitlepagetrue
-   %
-   % Now you can put text using @subtitle.
-   \def\subtitle{\parsearg\subtitlezzz}%
-   \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
-   %
-   % @author should come last, but may come many times.
-   \def\author{\parsearg\authorzzz}%
-   \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
-      {\authorfont \leftline{##1}}}%
-   %
-   % 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
-      \oldpage
-      \let\page = \oldpage
-      \hbox{}}%
-%   \def\page{\oldpage \hbox{}}
-}
-
-\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
-   \HEADINGSon
-}
-
-\def\finishtitlepage{%
-   \vskip4pt \hrule height 2pt width \hsize
-   \vskip\titlepagebottomglue
-   \finishedtitlepagetrue
-}
-
-%%% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks \evenheadline    % Token sequence for heading line of even pages
-\newtoks \oddheadline     % Token sequence for heading line of odd pages
-\newtoks \evenfootline    % Token sequence for footing line of even pages
-\newtoks \oddfootline     % Token sequence for footing line of 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\oddheading{\parsearg\oddheadingxxx}
-\def\everyheading{\parsearg\everyheadingxxx}
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\everyfooting{\parsearg\everyfootingxxx}
-
-{\catcode`\@=0 %
-
-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyheadingxxx #1{\everyheadingyyy #1@|@|@|@|\finish}
-\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
-\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyfootingxxx #1{\everyfootingyyy #1@|@|@|@|\finish}
-\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
-\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-%
-}% unbind the catcode of @.
-
-% @headings double     turns headings on for double-sided printing.
-% @headings single     turns headings on for single-sided printing.
-% @headings off                turns them off.
-% @headings on         same as @headings double, retained for compatibility.
-% @headings after      turns on double-sided headings after this page.
-% @headings doubleafter        turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off.
-
-\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{
-%\pagealignmacro
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{
-%\pagealignmacro
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-\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}}
-}
-
-\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}}
-}
-
-% Subroutines used in generating headings
-% Produces Day Month Year style of output.
-\def\today{\number\day\space
-\ifcase\month\or
-January\or February\or March\or April\or May\or June\or
-July\or August\or September\or October\or November\or December\fi
-\space\number\year}
-
-% Use this if you want the Month Day, Year style of output.
-%\def\today{\ifcase\month\or
-%January\or February\or March\or April\or May\or June\or
-%July\or August\or September\or October\or November\or December\fi
-%\space\number\day, \number\year}
-
-% @settitle line...  specifies the title of the document, for headings
-% It generates no output of its own
-
-\def\thistitle{No Title}
-\def\settitle{\parsearg\settitlezzz}
-\def\settitlezzz #1{\gdef\thistitle{#1}}
-
-\message{tables,}
-
-% @tabs -- simple alignment
-
-% These don't work.  For one thing, \+ is defined as outer.
-% So these macros cannot even be defined.
-
-%\def\tabs{\parsearg\tabszzz}
-%\def\tabszzz #1{\settabs\+#1\cr}
-%\def\tabline{\parsearg\tablinezzz}
-%\def\tablinezzz #1{\+#1\cr}
-%\def\&{&}
-
-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(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, @vtable, 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\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
-
-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
-
-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
-                 \itemzzz {#1}}
-
-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
-                 \itemzzz {#1}}
-
-\def\itemzzz #1{\begingroup %
-  \advance\hsize by -\rightskip
-  \advance\hsize by -\tableindent
-  \setbox0=\hbox{\itemfont{#1}}%
-  \itemindex{#1}%
-  \nobreak % This prevents a break before @itemx.
-  %
-  % Be sure we are not still in the middle of a paragraph.
-  %{\parskip = 0in
-  %\par
-  %}%
-  %
-  % 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.  Unfortunately
-    % we can't prevent a possible page break at the following
-    % \baselineskip glue.
-    \nobreak
-    \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.  Since that
-    % text will be indented by \tableindent, we make the item text be in
-    % a zero-width box.
-    \noindent
-    \rlap{\hskip -\tableindent\box0}\ignorespaces%
-    \endgroup%
-    \itemxneedsnegativevskiptrue%
-  \fi
-}
-
-\def\item{\errmessage{@item while not in a table}}
-\def\itemx{\errmessage{@itemx while not in a table}}
-\def\kitem{\errmessage{@kitem while not in a table}}
-\def\kitemx{\errmessage{@kitemx while not in a table}}
-\def\xitem{\errmessage{@xitem while not in a table}}
-\def\xitemx{\errmessage{@xitemx while not in a table}}
-
-%% Contains a kludge to get @end[description] to work
-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
-
-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
-{\obeylines\obeyspaces%
-\gdef\tablex #1^^M{%
-\tabley\dontindex#1        \endtabley}}
-
-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
-{\obeylines\obeyspaces%
-\gdef\ftablex #1^^M{%
-\tabley\fnitemindex#1        \endtabley
-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
-{\obeylines\obeyspaces%
-\gdef\vtablex #1^^M{%
-\tabley\vritemindex#1        \endtabley
-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\dontindex #1{}
-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
-
-{\obeyspaces %
-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
-
-\def\tablez #1#2#3#4#5#6{%
-\aboveenvbreak %
-\begingroup %
-\def\Edescription{\Etable}% Neccessary kludge.
-\let\itemindex=#1%
-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
-\ifnum 0#4>0 \tableindent=#4\mil \fi %
-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
-\def\itemfont{#2}%
-\itemmax=\tableindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \tableindent %
-\exdentamount=\tableindent
-\parindent = 0pt
-\parskip = \smallskipamount
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def\Etable{\endgraf\afterenvbreak\endgroup}%
-\let\item = \internalBitem %
-\let\itemx = \internalBitemx %
-\let\kitem = \internalBkitem %
-\let\kitemx = \internalBkitemx %
-\let\xitem = \internalBxitem %
-\let\xitemx = \internalBxitemx %
-}
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\def\itemize{\parsearg\itemizezzz}
-
-\def\itemizezzz #1{%
-  \begingroup % ended by the @end itemsize
-  \itemizey {#1}{\Eitemize}
-}
-
-\def\itemizey #1#2{%
-\aboveenvbreak %
-\itemmax=\itemindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \itemindent %
-\exdentamount=\itemindent
-\parindent = 0pt %
-\parskip = \smallskipamount %
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def#2{\endgraf\afterenvbreak\endgroup}%
-\def\itemcontents{#1}%
-\let\item=\itemizeitem}
-
-% Set sfcode to normal for the chars that usually have another value.
-% These are `.?!:;,'
-\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
-  \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
-
-% \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'.
-%
-\def\enumerate{\parsearg\enumeratezzz}
-\def\enumeratezzz #1{\enumeratey #1  \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
-  \begingroup % ended by the @end enumerate
-  %
-  % 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 itemizey, 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
-  \itemizey{#1.}\Eenumerate\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}
-
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{\in hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94
-%
-% @multitable ... @endmultitable 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 @percentofhsize .2 .3 .5
-%   @item ...
-%
-%   Numbers following @percentofhsize 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, @multicolumn or @endmulticolumn 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.
-%   @endmultitable
-
-% Default dimensions may be reset by user.
-% @intableparskip will set vertical space between paragraphs in table.
-% @intableparindent will set paragraph indent in table.
-% @spacebetweencols will set horizontal space to be left between columns.
-% @spacebetweenlines will set vertical space to be left between lines.
-
-%%%%
-% Dimensions 
-
-\newdimen\intableparskip
-\newdimen\intableparindent
-\newdimen\spacebetweencols
-\newdimen\spacebetweenlines
-\intableparskip=0pt
-\intableparindent=6pt
-\spacebetweencols=12pt
-\spacebetweenlines=12pt
-
-%%%%
-% Macros used to set up halign preamble:
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\percentofhsize\relax
-\def\xpercentofhsize{\percentofhsize}
-\newif\ifsetpercent
-
-\newcount\colcount
-\def\setuptable#1{\def\firstarg{#1}%
-\ifx\firstarg\xendsetuptable\let\go\relax%
-\else
-  \ifx\firstarg\xpercentofhsize\global\setpercenttrue%
-  \else
-    \ifsetpercent
-       \if#1.\else%
-       \global\advance\colcount by1 %
-       \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
-       \fi
-    \else
-       \global\advance\colcount by1
-       \setbox0=\hbox{#1}%
-       \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
-    \fi%
-  \fi%
-  \let\go\setuptable%
-\fi\go}
-%%%%
-% multitable syntax
-\def\tab{&}
-
-%%%%
-% @multitable ... @endmultitable definitions:
-
-\def\multitable#1\item{\bgroup
-\let\item\cr
-\tolerance=9500
-\hbadness=9500
-\parskip=\intableparskip
-\parindent=\intableparindent
-\overfullrule=0pt
-\global\colcount=0\relax%
-\def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%
- % To parse everything between @multitable and @item :
-\def\one{#1}\expandafter\setuptable\one\endsetuptable
- % Need to reset this to 0 after \setuptable.
-\global\colcount=0\relax% 
- %
- % 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\relax%
-\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
- % In order to keep entries from bumping into each other
- % we will add a \leftskip of \spacebetweencols to all columns after
- % the first one.
- %  If a template has been used, we will add \spacebetweencols 
- % to the width of each template entry.
- %  If user has set preamble in terms of percent of \hsize
- % we will use that dimension as the width of the column, and
- % the \leftskip will keep entries from bumping into each other.
- % Table will start at left margin and final column will justify at
- % right margin.
-\ifnum\colcount=1
-\else
-  \ifsetpercent
-  \else
-   % If user has <not> set preamble in terms of percent of \hsize
-   % we will advance \hsize by \spacebetweencols 
-  \advance\hsize by \spacebetweencols
-  \fi
- % In either case we will make \leftskip=\spacebetweencols:
-\leftskip=\spacebetweencols
-\fi
-\noindent##}\cr%
- % \everycr will reset column counter, \colcount, at the end of
- % each line. Every column  entry will cause \colcount to advance by one. 
- % The table preamble
- % looks at the current \colcount to find the correct column width.
-\global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines
-\filbreak%% keeps underfull box messages off when table breaks over pages.
-\global\colcount=0\relax}}}
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
-
-% \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{
-\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1        % Open the file
-\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
-\noexpand\doindex {#1}}
-}
-
-% @defindex foo  ==  \newindex{foo}
-
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-
-\def\newcodeindex #1{
-\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1        % Open the file
-\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
-\noexpand\docodeindex {#1}}
-}
-
-\def\defcodeindex{\parsearg\newcodeindex}
-
-% @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.
-\def\synindex #1 #2 {%
-\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
-\expandafter\let\csname#1indfile\endcsname=\synindexfoo
-\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
-\noexpand\doindex {#2}}%
-}
-
-% @syncodeindex foo bar   similar, but put all entries made for index foo
-% inside @code.
-\def\syncodeindex #1 #2 {%
-\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
-\expandafter\let\csname#1indfile\endcsname=\synindexfoo
-\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
-\noexpand\docodeindex {#2}}%
-}
-
-% 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}}}
-
-\def\indexdummies{%
-% Take care of the plain tex accent commands.
-\def\"{\realbackslash "}%
-\def\`{\realbackslash `}%
-\def\'{\realbackslash '}%
-\def\^{\realbackslash ^}%
-\def\~{\realbackslash ~}%
-\def\={\realbackslash =}%
-\def\b{\realbackslash b}%
-\def\c{\realbackslash c}%
-\def\d{\realbackslash d}%
-\def\u{\realbackslash u}%
-\def\v{\realbackslash v}%
-\def\H{\realbackslash H}%
-% Take care of the plain tex special European modified letters.
-\def\oe{\realbackslash oe}%
-\def\ae{\realbackslash ae}%
-\def\aa{\realbackslash aa}%
-\def\OE{\realbackslash OE}%
-\def\AE{\realbackslash AE}%
-\def\AA{\realbackslash AA}%
-\def\o{\realbackslash o}%
-\def\O{\realbackslash O}%
-\def\l{\realbackslash l}%
-\def\L{\realbackslash L}%
-\def\ss{\realbackslash ss}%
-% Take care of texinfo commands likely to appear in an index entry.
-\def\_{{\realbackslash _}}%
-\def\w{\realbackslash w }%
-\def\bf{\realbackslash bf }%
-\def\rm{\realbackslash rm }%
-\def\sl{\realbackslash sl }%
-\def\sf{\realbackslash sf}%
-\def\tt{\realbackslash tt}%
-\def\gtr{\realbackslash gtr}%
-\def\less{\realbackslash less}%
-\def\hat{\realbackslash hat}%
-\def\char{\realbackslash char}%
-\def\TeX{\realbackslash TeX}%
-\def\dots{\realbackslash dots }%
-\def\copyright{\realbackslash copyright }%
-\def\tclose##1{\realbackslash tclose {##1}}%
-\def\code##1{\realbackslash code {##1}}%
-\def\samp##1{\realbackslash samp {##1}}%
-\def\t##1{\realbackslash r {##1}}%
-\def\r##1{\realbackslash r {##1}}%
-\def\i##1{\realbackslash i {##1}}%
-\def\b##1{\realbackslash b {##1}}%
-\def\cite##1{\realbackslash cite {##1}}%
-\def\key##1{\realbackslash key {##1}}%
-\def\file##1{\realbackslash file {##1}}%
-\def\var##1{\realbackslash var {##1}}%
-\def\kbd##1{\realbackslash kbd {##1}}%
-\def\dfn##1{\realbackslash dfn {##1}}%
-\def\emph##1{\realbackslash emph {##1}}%
-}
-
-% \indexnofonts no-ops all font-change commands.
-% This is used when outputting the strings to sort the index by.
-\def\indexdummyfont#1{#1}
-\def\indexdummytex{TeX}
-\def\indexdummydots{...}
-
-\def\indexnofonts{%
-% Just ignore accents.
-\let\"=\indexdummyfont
-\let\`=\indexdummyfont
-\let\'=\indexdummyfont
-\let\^=\indexdummyfont
-\let\~=\indexdummyfont
-\let\==\indexdummyfont
-\let\b=\indexdummyfont
-\let\c=\indexdummyfont
-\let\d=\indexdummyfont
-\let\u=\indexdummyfont
-\let\v=\indexdummyfont
-\let\H=\indexdummyfont
-% Take care of the plain tex special European modified letters.
-\def\oe{oe}%
-\def\ae{ae}%
-\def\aa{aa}%
-\def\OE{OE}%
-\def\AE{AE}%
-\def\AA{AA}%
-\def\o{o}%
-\def\O{O}%
-\def\l{l}%
-\def\L{L}%
-\def\ss{ss}%
-\let\w=\indexdummyfont
-\let\t=\indexdummyfont
-\let\r=\indexdummyfont
-\let\i=\indexdummyfont
-\let\b=\indexdummyfont
-\let\emph=\indexdummyfont
-\let\strong=\indexdummyfont
-\let\cite=\indexdummyfont
-\let\sc=\indexdummyfont
-%Don't no-op \tt, since it isn't a user-level command
-% and is used in the definitions of the active chars like <, >, |...
-%\let\tt=\indexdummyfont
-\let\tclose=\indexdummyfont
-\let\code=\indexdummyfont
-\let\file=\indexdummyfont
-\let\samp=\indexdummyfont
-\let\kbd=\indexdummyfont
-\let\key=\indexdummyfont
-\let\var=\indexdummyfont
-\let\TeX=\indexdummytex
-\let\dots=\indexdummydots
-}
-
-% To define \realbackslash, we must make \ not be an escape.
-% We must first make another character (@) an escape
-% so we do not become unable to do a definition.
-
-{\catcode`\@=0 \catcode`\\=\other
-@gdef@realbackslash{\}}
-
-\let\indexbackslash=0  %overridden during \printindex.
-
-\let\SETmarginindex=\relax %initialize!
-% workhorse for all \fooindexes
-% #1 is name of index, #2 is stuff to put there
-\def\doind #1#2{%
-% Put the index entry in the margin if desired.
-\ifx\SETmarginindex\relax\else%
-\insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
-\fi%
-{\count10=\lastpenalty %
-{\indexdummies % Must do this here, since \bf, etc expand at this stage
-\escapechar=`\\%
-{\let\folio=0% Expand all macros now EXCEPT \folio
-\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
-% so it will be output as is; and it will print as backslash in the indx.
-%
-% Now process the index-string once, with all font commands turned off,
-% to get the string to sort the index by.
-{\indexnofonts
-\xdef\temp1{#2}%
-}%
-% Now produce the complete index entry.  We process the index-string again,
-% this time with font commands expanded, to get what to print in the index.
-\edef\temp{%
-\write \csname#1indfile\endcsname{%
-\realbackslash entry {\temp1}{\folio}{#2}}}%
-\temp }%
-}\penalty\count10}}
-
-\def\dosubind #1#2#3{%
-{\count10=\lastpenalty %
-{\indexdummies % Must do this here, since \bf, etc expand at this stage
-\escapechar=`\\%
-{\let\folio=0%
-\def\rawbackslashxx{\indexbackslash}%
-%
-% Now process the index-string once, with all font commands turned off,
-% to get the string to sort the index by.
-{\indexnofonts
-\xdef\temp1{#2 #3}%
-}%
-% Now produce the complete index entry.  We process the index-string again,
-% this time with font commands expanded, to get what to print in the index.
-\edef\temp{%
-\write \csname#1indfile\endcsname{%
-\realbackslash entry {\temp1}{\folio}{#2}{#3}}}%
-\temp }%
-}\penalty\count10}}
-
-% 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.
-
-% This is what you call to cause a particular index to get printed.
-% Write
-% @unnumbered Function Index
-% @printindex fn
-
-\def\printindex{\parsearg\doprintindex}
-
-\def\doprintindex#1{%
-  \tex
-  \dobreak \chapheadingskip {10000}
-  \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
-  \catcode`\$=\other
-  \catcode`\~=\other
-  \indexbreaks
-  %
-  % The following don't help, since the chars were translated
-  % when the raw index was written, and their fonts were discarded
-  % due to \indexnofonts.
-  %\catcode`\"=\active
-  %\catcode`\^=\active
-  %\catcode`\_=\active
-  %\catcode`\|=\active
-  %\catcode`\<=\active
-  %\catcode`\>=\active
-  % %
-  \def\indexbackslash{\rawbackslashxx}
-  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
-  \begindoublecolumns
-  %
-  % See if the index file exists and is nonempty.
-  \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.
-    (Index is nonexistent)
-    \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
-      (Index is empty)
-    \else
-      \input \jobname.#1s
-    \fi
-  \fi
-  \closein 1
-  \enddoublecolumns
-  \Etex
-}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-% Same as \bigskipamount except no shrink.
-% \balancecolumns gets confused if there is any shrink.
-\newskip\initialskipamount \initialskipamount 12pt plus4pt
-
-\def\initial #1{%
-{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
-\ifdim\lastskip<\initialskipamount
-\removelastskip \penalty-200 \vskip \initialskipamount\fi
-\line{\secbf#1\hfill}\kern 2pt\penalty10000}}
-
-% This typesets a paragraph consisting of #1, dot leaders, and then #2
-% flush to the right margin.  It is used for index and table of contents
-% entries.  The paragraph is indented by \leftskip.
-%
-\def\entry #1#2{\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
-  %
-  % Start a ``paragraph'' for the index entry so the line breaking
-  % parameters we've set above will have an effect.
-  \noindent
-  %
-  % Insert the text of the index entry.  TeX will do line-breaking on it.
-  #1%
-  % The following is kluged to not output a line of dots in the index if
-  % there are no page numbers.  The next person who breaks this will be
-  % cursed by a Unix daemon.
-  \def\tempa{{\rm }}%
-  \def\tempb{#2}%
-  \edef\tempc{\tempa}%
-  \edef\tempd{\tempb}%
-  \ifx\tempc\tempd\ \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.
-    \ #2% The page number ends the paragraph.
-  \fi%
-  \par
-\endgroup}
-
-% Like \dotfill except takes at least 1 em.
-\def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \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 #2\par
-}}
-
-%% Define two-column mode, which is used in indexes.
-%% Adapted from the TeXbook, page 416.
-\catcode `\@=11
-
-\newbox\partialpage
-
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup
-  % Grab any single-column material above us.
-  \output = {\global\setbox\partialpage
-    =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}%
-  \eject
-  %
-  % Now switch to the double-column output routine.
-  \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 once.
-  %
-  % 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
-  \doublecolumnpagegoal
-}
-
-\def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage}
-
-\def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth
-  \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage
-  \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1}
-  \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3}
-  \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
-  \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
-}
-\def\doublecolumnpagegoal{%
-  \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@
-}
-\def\pagesofar{\unvbox\partialpage %
-  \hsize=\doublecolumnhsize % have to restore this since output routine
-  \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
-\def\doublecolumnout{%
-  \setbox5=\copy255
-  {\vbadness=10000 \doublecolumnsplit}
-  \ifvbox255
-    \setbox0=\vtop to\dimen@{\unvbox0}
-    \setbox2=\vtop to\dimen@{\unvbox2}
-    \onepageout\pagesofar \unvbox255 \penalty\outputpenalty
-  \else
-    \setbox0=\vbox{\unvbox5}
-    \ifvbox0
-      \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
-      \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth
-      {\vbadness=10000
-       \loop \global\setbox5=\copy0
-          \setbox1=\vsplit5 to\dimen@
-          \setbox3=\vsplit5 to\dimen@
-          \ifvbox5 \global\advance\dimen@ by1pt \repeat
-        \setbox0=\vbox to\dimen@{\unvbox1}
-        \setbox2=\vbox to\dimen@{\unvbox3}
-        \global\setbox\partialpage=\vbox{\pagesofar}
-        \doublecolumnpagegoal
-      }
-    \fi
-  \fi
-}
-
-\catcode `\@=\other
-\message{sectioning,}
-% Define chapters, sections, etc.
-
-\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}
-
-\newwrite \contentsfile
-% This is called from \setfilename.
-\def\opencontents{\openout \contentsfile = \jobname.toc}
-
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it.  @section does likewise
-
-\def\thischapter{} \def\thissection{}
-\def\seccheck#1{\if \pageno<0 %
-\errmessage{@#1 not allowed after generating table of contents}\fi
-%
-}
-
-\def\chapternofonts{%
-\let\rawbackslash=\relax%
-\let\frenchspacing=\relax%
-\def\result{\realbackslash result}
-\def\equiv{\realbackslash equiv}
-\def\expansion{\realbackslash expansion}
-\def\print{\realbackslash print}
-\def\TeX{\realbackslash TeX}
-\def\dots{\realbackslash dots}
-\def\copyright{\realbackslash copyright}
-\def\tt{\realbackslash tt}
-\def\bf{\realbackslash bf }
-\def\w{\realbackslash w}
-\def\less{\realbackslash less}
-\def\gtr{\realbackslash gtr}
-\def\hat{\realbackslash hat}
-\def\char{\realbackslash char}
-\def\tclose##1{\realbackslash tclose {##1}}
-\def\code##1{\realbackslash code {##1}}
-\def\samp##1{\realbackslash samp {##1}}
-\def\r##1{\realbackslash r {##1}}
-\def\b##1{\realbackslash b {##1}}
-\def\key##1{\realbackslash key {##1}}
-\def\file##1{\realbackslash file {##1}}
-\def\kbd##1{\realbackslash kbd {##1}}
-% These are redefined because @smartitalic wouldn't work inside xdef.
-\def\i##1{\realbackslash i {##1}}
-\def\cite##1{\realbackslash cite {##1}}
-\def\var##1{\realbackslash var {##1}}
-\def\emph##1{\realbackslash emph {##1}}
-\def\dfn##1{\realbackslash dfn {##1}}
-}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raise/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
-
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \chapterzzz{#2}
-\or
-  \seczzz{#2}
-\or
-  \numberedsubseczzz{#2}
-\or
-  \numberedsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \chapterzzz{#2}
-  \else
-    \numberedsubsubseczzz{#2}
-  \fi
-\fi
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \appendixzzz{#2}
-\or
-  \appendixsectionzzz{#2}
-\or
-  \appendixsubseczzz{#2}
-\or
-  \appendixsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \appendixzzz{#2}
-  \else
-    \appendixsubsubseczzz{#2}
-  \fi
-\fi
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \unnumberedzzz{#2}
-\or
-  \unnumberedseczzz{#2}
-\or
-  \unnumberedsubseczzz{#2}
-\or
-  \unnumberedsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \unnumberedzzz{#2}
-  \else
-    \unnumberedsubsubseczzz{#2}
-  \fi
-\fi
-}
-
-
-\def\thischaptername{No Chapter Title}
-\outer\def\chapter{\parsearg\chapteryyy}
-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz #1{\seccheck{chapter}%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \chapno by 1 \message{\putwordChapter \the\chapno}%
-\chapmacro {#1}{\the\chapno}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-% We don't substitute the actual chapter name into \thischapter
-% because we don't want its macros evaluated now.
-\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
-{\chapternofonts%
-\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp  %
-\donoderef %
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-}}
-
-\outer\def\appendix{\parsearg\appendixyyy}
-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz #1{\seccheck{appendix}%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \appendixno by 1 \message{Appendix \appendixletter}%
-\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
-{\chapternofonts%
-\edef\temp{{\realbackslash chapentry
-  {#1}{\putwordAppendix{} \appendixletter}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp  %
-\appendixnoderef %
-\global\let\section = \appendixsec
-\global\let\subsection = \appendixsubsec
-\global\let\subsubsection = \appendixsubsubsec
-}}
-
-\outer\def\top{\parsearg\unnumberedyyy}
-\outer\def\unnumbered{\parsearg\unnumberedyyy}
-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz #1{\seccheck{unnumbered}%
-\secno=0 \subsecno=0 \subsubsecno=0
-%
-% 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 the <toks register>.
-\toks0 = {#1}\message{(\the\toks0)}%
-%
-\unnumbchapmacro {#1}%
-\gdef\thischapter{#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp  %
-\unnumbnoderef %
-\global\let\section = \unnumberedsec
-\global\let\subsection = \unnumberedsubsec
-\global\let\subsubsection = \unnumberedsubsubsec
-}}
-
-\outer\def\numberedsec{\parsearg\secyyy}
-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
-\def\seczzz #1{\seccheck{section}%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash secentry %
-{#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appenixsection{\parsearg\appendixsecyyy}
-\outer\def\appendixsec{\parsearg\appendixsecyyy}
-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz #1{\seccheck{appendixsection}%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash secentry %
-{#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz #1{\seccheck{unnumberedsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz #1{\seccheck{subsection}%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsecentry %
-{#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz #1{\seccheck{appendixsubsec}%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsecentry %
-{#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz #1{\seccheck{subsubsection}%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
-  {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsubsecentry %
-  {#1}
-  {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}
-  {\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
-  {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsubsecentry{#1}%
-  {\appendixletter}
-  {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they should now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
-% 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.
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\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{\parsearg\majorheadingzzz}
-\def\majorheadingzzz #1{%
-{\advance\chapheadingskip by 10pt \chapbreak }%
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                  \parindent=0pt\raggedright
-                  \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\chapheading{\parsearg\chapheadingzzz}
-\def\chapheadingzzz #1{\chapbreak %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                  \parindent=0pt\raggedright
-                  \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\heading{\parsearg\secheadingi}
-
-\def\subheading{\parsearg\subsecheadingi}
-
-\def\subsubheading{\parsearg\subsubsecheadingi}
-
-% 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}
-
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-\def\CHAPFplain{
-\global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain}
-
-\def\chfplain #1#2{%
-  \pchapsepmacro
-  {%
-    \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                     \parindent=0pt\raggedright
-                     \rm #2\enspace #1}%
-  }%
-  \bigskip
-  \penalty5000
-}
-
-\def\unnchfplain #1{%
-\pchapsepmacro %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                  \parindent=0pt\raggedright
-                  \rm #1\hfill}}\bigskip \par\penalty 10000 %
-}
-\CHAPFplain % The default
-
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\raggedright
-                       \rm #1\hfill}}\bigskip \par\penalty 10000 %
-}
-
-\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\CHAPFopen{
-\global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen}
-
-% Parameter controlling skip before section headings.
-
-\newskip \subsecheadingskip  \subsecheadingskip = 17pt plus 8pt minus 4pt
-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
-
-\newskip \secheadingskip  \secheadingskip = 21pt plus 8pt minus 4pt
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
-
-% @paragraphindent  is defined for the Info formatting commands only.
-\let\paragraphindent=\comment
-
-% Section fonts are the base font at magstep2, which produces
-% a size a bit more than 14 points in the default situation.
-
-\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}}
-\def\plainsecheading #1{\secheadingi {#1}}
-\def\secheadingi #1{{\advance \secheadingskip by \parskip %
-\secheadingbreak}%
-{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                 \parindent=0pt\raggedright
-                 \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
-
-
-% Subsection fonts are the base font at magstep1,
-% which produces a size of 12 points.
-
-\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}}
-\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip %
-\subsecheadingbreak}%
-{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                     \parindent=0pt\raggedright
-                     \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
-
-\def\subsubsecfonts{\subsecfonts} % Maybe this should change:
-                                 % Perhaps make sssec fonts scaled
-                                 % magstep half
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}}
-\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip %
-\subsecheadingbreak}%
-{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\raggedright
-                       \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000}
-
-
-\message{toc printing,}
-
-% Finish up the main text and prepare to read what we've written
-% to \contentsfile.
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\def\startcontents#1{%
-   \pagealignmacro
-   \immediate\closeout \contentsfile
-   \ifnum \pageno>0
-      \pageno = -1             % Request roman numbered pages.
-   \fi
-   % Don't need to put `Contents' or `Short Contents' in the headline.
-   % It is abundantly clear what they are.
-   \unnumbchapmacro{#1}\def\thischapter{}%
-   \begingroup                 % Set up to handle contents files properly.
-      \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
-      \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
-      \raggedbottom             % Worry more about breakpoints than the bottom.
-      \advance\hsize by -\contentsrightmargin % Don't use the full line length.
-}
-
-
-% Normal (long) toc.
-\outer\def\contents{%
-   \startcontents{\putwordTableofContents}%
-      \input \jobname.toc
-   \endgroup
-   \vfill \eject
-}
-
-% And just the chapters.
-\outer\def\summarycontents{%
-   \startcontents{\putwordShortContents}%
-      %
-      \let\chapentry = \shortchapentry
-      \let\unnumbchapentry = \shortunnumberedentry
-      % We want a true roman here for the page numbers.
-      \secfonts
-      \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
-      \rm
-      \advance\baselineskip by 1pt % Open it up a little.
-      \def\secentry ##1##2##3##4{}
-      \def\unnumbsecentry ##1##2{}
-      \def\subsecentry ##1##2##3##4##5{}
-      \def\unnumbsubsecentry ##1##2{}
-      \def\subsubsecentry ##1##2##3##4##5##6{}
-      \def\unnumbsubsubsecentry ##1##2{}
-      \input \jobname.toc
-   \endgroup
-   \vfill \eject
-}
-\let\shortcontents = \summarycontents
-
-% 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, ...
-
-% Chapter-level things, for both the long and short contents.
-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
-
-% See comments in \dochapentry re vbox and related settings
-\def\shortchapentry#1#2#3{%
-  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}%
-}
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
-% We could simplify the code here by writing out an \appendixentry
-% command in the toc file for appendices, instead of using \chapentry
-% for both, but it doesn't seem worth it.
-\setbox0 = \hbox{\shortcontrm \putwordAppendix }
-\newdimen\shortappendixwidth \shortappendixwidth = \wd0
-
-\def\shortchaplabel#1{%
-  % We typeset #1 in a box of constant width, regardless of the text of
-  % #1, so the chapter titles will come out aligned.
-  \setbox0 = \hbox{#1}%
-  \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
-  %
-  % This space should be plenty, since a single number is .5em, and the
-  % widest letter (M) is 1em, at least in the Computer Modern fonts.
-  % (This space doesn't include the extra space that gets added after
-  % the label; that gets put in in \shortchapentry above.)
-  \advance\dimen0 by 1.1em
-  \hbox to \dimen0{#1\hfil}%
-}
-
-\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}}
-
-% Sections.
-\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
-
-% Subsections.
-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
-
-% And subsubsections.
-\def\subsubsecentry#1#2#3#4#5#6{%
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
-
-
-% This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 3pc
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we would want to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
-   \penalty-300 \vskip\baselineskip
-   \begingroup
-     \chapentryfonts
-     \tocentry{#1}{\dopageno{#2}}%
-   \endgroup
-   \nobreak\vskip .25\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
-  \secentryfonts \leftskip=\tocindent
-  \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
-  \subsecentryfonts \leftskip=2\tocindent
-  \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
-  \subsubsecentryfonts \leftskip=3\tocindent
-  \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-% Final typesetting of a toc entry; we use the same \entry macro as for
-% the index entries, but we want to suppress hyphenation here.  (We
-% can't do that in the \entry macro, since index entries might consist
-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-%
-% \turnoffactive is for the sake of @" used for umlauts.
-\def\tocentry#1#2{\begingroup
-  \hyphenpenalty = 10000
-  \entry{\turnoffactive #1}{\turnoffactive #2}%
-\endgroup}
-
-% 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}
-\let\subsecentryfonts = \textfonts
-\let\subsubsecentryfonts = \textfonts
-
-
-\message{environments,}
-
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-% Furthermore, these definitions must come after we define our fonts.
-\newbox\dblarrowbox    \newbox\longdblarrowbox
-\newbox\pushcharbox    \newbox\bullbox
-\newbox\equivbox       \newbox\errorbox
-
-\let\ptexequiv = \equiv
-
-%{\tentt
-%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
-%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
-%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
-%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
-% Adapted from the manmac format (p.420 of TeXbook)
-%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
-%                                      depth .1ex\hfil}
-%}
-
-\def\point{$\star$}
-
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% Adapted from the TeXbook's \boxit.
-{\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 \tensf error\kern-1.5pt}
-
-\global\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}
-
-% The @error{} command.
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @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.
-
-\def\tex{\begingroup
-\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
-\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
-\catcode `\%=14
-\catcode 43=12
-\catcode`\"=12
-\catcode`\==12
-\catcode`\|=12
-\catcode`\<=12
-\catcode`\>=12
-\escapechar=`\\
-%
-\let\~=\ptextilde
-\let\{=\ptexlbrace
-\let\}=\ptexrbrace
-\let\.=\ptexdot
-\let\*=\ptexstar
-\let\dots=\ptexdots
-\def\@{@}%
-\let\bullet=\ptexbullet
-\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl
-\let\L=\ptexL
-%
-\let\Etex=\endgroup}
-
-% Define @lisp ... @endlisp.
-% @lisp does a \begingroup so it can rebind things,
-% including the definition of @endlisp (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}
-
-% 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.
-%
-{\obeyspaces %
-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
-% Define \obeyedspace to be our active space, whatever it is.  This is
-% for use in \parsearg.
-{\sepspaces%
-\global\let\obeyedspace= }
-
-% 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{{\advance\envskipamount by \parskip
-\endgraf \ifdim\lastskip<\envskipamount
-\removelastskip \penalty-50 \vskip\envskipamount \fi}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins.
-\let\nonarrowing=\relax
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \cartouche: draw rectangle w/rounded corners around argument
-\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
-
-\long\def\cartouche{%
-\begingroup
-       \lskip=\leftskip \rskip=\rightskip
-       \leftskip=0pt\rightskip=0pt %we want these *outside*.
-       \cartinner=\hsize \advance\cartinner by-\lskip
-                         \advance\cartinner by-\rskip
-       \cartouter=\hsize
-       \advance\cartouter by 18pt % allow for 3pt kerns on either
-%                                   side, and for 6pt waste from
-%                                   each corner char
-       \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
-       % Flag to tell @lisp, etc., not to narrow margin.
-       \let\nonarrowing=\comment
-       \vbox\bgroup
-               \baselineskip=0pt\parskip=0pt\lineskip=0pt
-               \carttop
-               \hbox\bgroup
-                       \hskip\lskip
-                       \vrule\kern3pt
-                       \vbox\bgroup
-                               \hsize=\cartinner
-                               \kern3pt
-                               \begingroup
-                                       \baselineskip=\normbskip
-                                       \lineskip=\normlskip
-                                       \parskip=\normpskip
-                                       \vskip -\parskip
-\def\Ecartouche{%
-                               \endgroup
-                               \kern3pt
-                       \egroup
-                       \kern3pt\vrule
-                       \hskip\rskip
-               \egroup
-               \cartbot
-       \egroup
-\endgroup
-}}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\def\nonfillstart{%
-  \aboveenvbreak
-  \inENV % This group ends at the end of the body
-  \hfuzz = 12pt % Don't be fussy
-  \sepspaces % Make spaces be word-separators rather than space tokens.
-  \singlespace
-  \let\par = \lisppar % don't ignore blank lines
-  \obeylines % each line of input is a line of output
-  \parskip = 0pt
-  \parindent = 0pt
-  \emergencystretch = 0pt % don't try to avoid overfull boxes
-  % @cartouche defines \nonarrowing to inhibit narrowing
-  % at next level down.
-  \ifx\nonarrowing\relax
-    \advance \leftskip by \lispnarrowing
-    \exdentamount=\lispnarrowing
-    \let\exdent=\nofillexdent
-    \let\nonarrowing=\relax
-  \fi
-}
-
-% To ending an @example-like environment, we first end the paragraph
-% (via \afterenvbreak's vertical glue), and then the group.  That way we
-% keep the zero \parskip that the environments set -- \parskip glue
-% will be inserted at the beginning of the next paragraph in the
-% document, after the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}%
-
-% This macro is
-\def\lisp{\begingroup
-  \nonfillstart
-  \let\Elisp = \nonfillfinish
-  \tt
-  \rawbackslash % have \ input char produce \ char from current font
-  \gobble
-}
-
-% Define the \E... control sequence only if we are inside the
-% environment, so the error checking in \end will work.
-%
-% We must call \lisp last in the definition, since it reads the
-% return following the @example (or whatever) command.
-%
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-\def\smallexample{\begingroup \def\Esmallexample{\nonfillfinish\endgroup}\lisp}
-\def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}\lisp}
-
-% @smallexample and @smalllisp.  This is not used unless the @smallbook
-% command is given.  Originally contributed by Pavel@xerox.
-%
-\def\smalllispx{\begingroup
-  \nonfillstart
-  \let\Esmalllisp = \nonfillfinish
-  \let\Esmallexample = \nonfillfinish
-  %
-  % Smaller interline space and fonts for small examples.
-  \setleading{10pt}%
-  \indexfonts \tt
-  \rawbackslash % make \ output the \ character from the current font (tt)
-  \gobble
-}
-
-% This is @display; same as @lisp except use roman font.
-%
-\def\display{\begingroup
-  \nonfillstart
-  \let\Edisplay = \nonfillfinish
-  \gobble
-}
-
-% This is @format; same as @display except don't narrow margins.
-%
-\def\format{\begingroup
-  \let\nonarrowing = t
-  \nonfillstart
-  \let\Eformat = \nonfillfinish
-  \gobble
-}
-
-% @flushleft (same as @format) and @flushright.
-%
-\def\flushleft{\begingroup
-  \let\nonarrowing = t
-  \nonfillstart
-  \let\Eflushleft = \nonfillfinish
-  \gobble
-}
-\def\flushright{\begingroup
-  \let\nonarrowing = t
-  \nonfillstart
-  \let\Eflushright = \nonfillfinish
-  \advance\leftskip by 0pt plus 1fill
-  \gobble}
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
-%
-\def\quotation{%
-  \begingroup\inENV %This group ends at the end of the @quotation body
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \singlespace
-  \parindent=0pt
-  % We have retained a nonzero parskip for the environment, since we're
-  % doing normal filling. So to avoid extra space below the environment...
-  \def\Equotation{\parskip = 0pt \nonfillfinish}%
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
-  \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
-    \advance\rightskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-    \let\nonarrowing = \relax
-  \fi
-}
-
-\message{defuns,}
-% Define formatter for defuns
-% First, allow user to change definition object font (\df) internally
-\def\setdeffont #1 {\csname DEF#1\endcsname}
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deftypemargin \deftypemargin=12pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-
-\newcount\parencount
-% define \functionparens, which makes ( and ) and & do special things.
-% \functionparens affects the group it is contained in.
-\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 = )
-
-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
-
-% 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.
-\global\let(=\lparen \global\let)=\rparen
-\global\let[=\lbrack \global\let]=\rbrack
-
-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-% This is used to turn on special parens
-% but make & act ordinary (given that it's active).
-\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
-
-% Definitions of (, ) and & used in args for functions.
-% This is the definition of ( outside of all parentheses.
-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %
-\global\advance\parencount by 1 }
-%
-% This is the definition of ( when already inside a level of parens.
-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-%
-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
-% also in that case restore the outer-level definition of (.
-\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
-\global\advance \parencount by -1 }
-% If we encounter &foo, then turn on ()-hacking afterwards
-\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
-%
-\gdef\normalparens{\boldbrax\let&=\ampnr}
-} % End of definition inside \activeparens
-%% These parens (in \boldbrax) actually are a little bolder than the
-%% contained text.  This is especially needed for [ and ]
-\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&}
-\def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}}
-
-% First, defname, which formats the header line itself.
-% #1 should be the function name.
-% #2 should be the type of definition, such as "Function".
-
-\def\defname #1#2{%
-% Get the values of \leftskip and \rightskip as they were
-% outside the @def...
-\dimen2=\leftskip
-\advance\dimen2 by -\defbodyindent
-\dimen3=\rightskip
-\advance\dimen3 by -\defbodyindent
-\noindent        %
-\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
-\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
-\parshape 2 0in \dimen0 \defargsindent \dimen1     %
-% Now output arg 2 ("Function" or some such)
-% ending at \deftypemargin from the right margin,
-% but stuck inside a box of width 0 so it does not interfere with linebreaking
-{% Adjust \hsize to exclude the ambient margins,
-% so that \rightline will obey them.
-\advance \hsize by -\dimen2 \advance \hsize by -\dimen3
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}%
-% Make all lines underfull and no complaints:
-\tolerance=10000 \hbadness=10000
-\advance\leftskip by -\defbodyindent
-\exdentamount=\defbodyindent
-{\df #1}\enskip        % Generate function name
-}
-
-% Actually process the body of a definition
-% #1 should be the terminating control sequence, such as \Edefun.
-% #2 should be the "another name" control sequence, such as \defunx.
-% #3 should be the control sequence that actually processes the header,
-%    such as \defunheader.
-
-\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active % 61 is `='
-\obeylines\activeparens\spacesplit#3}
-
-\def\defmethparsebody #1#2#3#4 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
-
-\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
-
-% These parsing functions are similar to the preceding ones
-% except that they do not make parens into active characters.
-% These are used for "variables" since they have no arguments.
-
-\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active %
-\obeylines\spacesplit#3}
-
-% This is used for \def{tp,vr}parsebody.  It could probably be used for
-% some of the others, too, with some judicious conditionals.
-% 
-\def\parsebodycommon#1#2#3{%
-  \begingroup\inENV %
-  \medbreak %
-  % Define the end token that this defining construct specifies
-  % so that it will exit this group.
-  \def#1{\endgraf\endgroup\medbreak}%
-  \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
-  \parindent=0in
-  \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-  \exdentamount=\defbodyindent
-  \begingroup\obeylines
-}
-
-\def\defvrparsebody#1#2#3#4 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \spacesplit{#3{#4}}%
-}
-
-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
-% type is just `struct', because we lose the braces in `{struct
-% termios}' when \spacesplit reads its undelimited argument.  Sigh.
-% \let\deftpparsebody=\defvrparsebody
-%
-% So, to get around this, we put \empty in with the type name.  That
-% way, TeX won't find exactly `{...}' as an undelimited argument, and
-% won't strip off the braces.
-%
-\def\deftpparsebody #1#2#3#4 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-}
-
-% Fine, but then we have to eventually remove the \empty *and* the
-% braces (if any).  That's what this does, putting the result in \tptemp.
-% 
-\def\removeemptybraces\empty#1\relax{\def\tptemp{#1}}%
-
-% After \spacesplit has done its work, this is called -- #1 is the final
-% thing to call, #2 the type name (which starts with \empty), and #3
-% (which might be empty) the arguments.
-% 
-\def\parsetpheaderline#1#2#3{%
-  \removeemptybraces#2\relax
-  #1{\tptemp}{#3}%
-}%
-
-\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\spacesplit{#3{#5}}}
-
-% Split up #2 at the first space token.
-% call #1 with two arguments:
-%  the first is all of #2 before the space token,
-%  the second is all of #2 after that space token.
-% If #2 contains no space token, all of it is passed as the first arg
-% and the second is passed as empty.
-
-{\obeylines
-\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
-\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
-\ifx\relax #3%
-#1{#2}{}\else #1{#2}{#3#4}\fi}}
-
-% So much for the things common to all kinds of definitions.
-
-% Define @defun.
-
-% First, define the processing that is wanted for arguments of \defun
-% Use this to expand the args and terminate the paragraph they make up
-
-\def\defunargs #1{\functionparens \sl
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-\hyphenchar\tensl=0
-#1%
-\hyphenchar\tensl=45
-\ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi%
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
-}
-
-\def\deftypefunargs #1{%
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Use \boldbraxnoamp, not \functionparens, so that & is not special.
-\boldbraxnoamp
-\tclose{#1}% avoid \code because of side effects on active chars
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
-}
-
-% Do complete processing of one @defun or @defunx line already parsed.
-
-% @deffn Command forward-char nchars
-
-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
-
-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defun == @deffn Function
-
-\def\defun{\defparsebody\Edefun\defunx\defunheader}
-
-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Function}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefun int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
-
-% #1 is the data type.  #2 is the name and args.
-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
-% #1 is the data type, #2 the name, #3 the args.
-\def\deftypefunheaderx #1#2 #3\relax{%
-\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}%
-\deftypefunargs {#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
-
-% \defheaderxcond#1\relax$$$
-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
-\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
-
-% #1 is the classification.  #2 is the data type.  #3 is the name and args.
-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
-\def\deftypefnheaderx #1#2#3 #4\relax{%
-\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup
-\normalparens % notably, turn off `&' magic, which prevents
-%               at least some C++ text from working
-\defname {\defheaderxcond#2\relax$$$#3}{#1}%
-\deftypefunargs {#4}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defmac == @deffn Macro
-
-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
-
-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Macro}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defspec == @deffn Special Form
-
-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
-
-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Special Form}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% This definition is run if you use @defunx
-% anywhere other than immediately after a @defun or @defunx.
-
-\def\deffnx #1 {\errmessage{@deffnx in invalid context}}
-\def\defunx #1 {\errmessage{@defunx in invalid context}}
-\def\defmacx #1 {\errmessage{@defmacx in invalid context}}
-\def\defspecx #1 {\errmessage{@defspecx in invalid context}}
-\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}}
-
-% @defmethod, and so on
-
-% @defop {Funny Method} foo-class frobnicate argument
-
-\def\defop #1 {\def\defoptype{#1}%
-\defopparsebody\Edefop\defopx\defopheader\defoptype}
-
-\def\defopheader #1#2#3{%
-\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index
-\begingroup\defname {#2}{\defoptype{} on #1}%
-\defunargs {#3}\endgroup %
-}
-
-% @defmethod == @defop Method
-
-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-
-\def\defmethodheader #1#2#3{%
-\dosubind {fn}{\code{#2}}{on #1}% entry in function index
-\begingroup\defname {#2}{Method on #1}%
-\defunargs {#3}\endgroup %
-}
-
-% @defcv {Class Option} foo-class foo-flag
-
-\def\defcv #1 {\def\defcvtype{#1}%
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
-
-\def\defcvarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{\defcvtype{} of #1}%
-\defvarargs {#3}\endgroup %
-}
-
-% @defivar == @defcv {Instance Variable}
-
-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-
-\def\defivarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{Instance Variable of #1}%
-\defvarargs {#3}\endgroup %
-}
-
-% These definitions are run if you use @defmethodx, etc.,
-% anywhere other than immediately after a @defmethod, etc.
-
-\def\defopx #1 {\errmessage{@defopx in invalid context}}
-\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}}
-\def\defcvx #1 {\errmessage{@defcvx in invalid context}}
-\def\defivarx #1 {\errmessage{@defivarx in invalid context}}
-
-% Now @defvar
-
-% First, define the processing that is wanted for arguments of @defvar.
-% This is actually simple: just print them in roman.
-% This must expand the args and terminate the paragraph they make up
-\def\defvarargs #1{\normalparens #1%
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000}
-
-% @defvr Counter foo-count
-
-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
-
-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
-
-% @defvar == @defvr Variable
-
-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
-
-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{Variable}%
-\defvarargs {#2}\endgroup %
-}
-
-% @defopt == @defvr {User Option}
-
-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
-
-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{User Option}%
-\defvarargs {#2}\endgroup %
-}
-
-% @deftypevar int foobar
-
-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
-
-% #1 is the data type.  #2 is the name.
-\def\deftypevarheader #1#2{%
-\doind {vr}{\code{#2}}% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}%
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000
-\endgroup}
-
-% @deftypevr {Global Flag} int enable
-
-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
-
-\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}%
-\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000
-\endgroup}
-
-% This definition is run if you use @defvarx
-% anywhere other than immediately after a @defvar or @defvarx.
-
-\def\defvrx #1 {\errmessage{@defvrx in invalid context}}
-\def\defvarx #1 {\errmessage{@defvarx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}}
-
-% Now define @deftp
-% Args are printed in bold, a slight difference from @defvar.
-
-\def\deftpargs #1{\bf \defvarargs{#1}}
-
-% @deftp Class window height width ...
-
-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
-
-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-
-% This definition is run if you use @deftpx, etc
-% anywhere other than immediately after a @deftp, etc.
-
-\def\deftpx #1 {\errmessage{@deftpx in invalid context}}
-
-\message{cross reference,}
-% Define cross-reference macros
-\newwrite \auxfile
-
-\newif\ifhavexrefs  % True if xref values are known.
-\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
-
-% \setref{foo} defines a cross-reference point named foo.
-
-\def\setref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Ysectionnumberandtype}}
-
-\def\unnumbsetref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Ynothing}}
-
-\def\appendixsetref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Yappendixletterandtype}}
-
-% \xref, \pxref, and \ref generate cross-references to specified points.
-% 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
-  \def\printedmanual{\ignorespaces #5}%
-  \def\printednodename{\ignorespaces #3}%
-  \setbox1=\hbox{\printedmanual}%
-  \setbox0=\hbox{\printednodename}%
-  \ifdim \wd0 = 0pt
-    % No printed node name was explicitly given.
-    \ifx\SETxref-automatic-section-title\relax %
-      % 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\printednodename{\ignorespaces #1}%
-      \else
-        \ifhavexrefs
-          % We know the real title if we have the xref values.
-          \def\printednodename{\refx{#1-title}}%
-        \else
-          % Otherwise just copy the Info node name.
-          \def\printednodename{\ignorespaces #1}%
-        \fi%
-      \fi
-      \def\printednodename{#1-title}%
-    \else
-      % Use the node name inside the square brackets.
-      \def\printednodename{\ignorespaces #1}%
-    \fi
-  \fi
-  %
-  % 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{} ``\printednodename'' in \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 \refx{#1-snt}{}}%
-    \space [\printednodename],\space
-    \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
-  \fi
-\endgroup}
-
-% \dosetq is the interface for calls from other macros
-
-% Use \turnoffactive so that punctuation chars such as underscore
-% work in node names.
-\def\dosetq #1#2{{\let\folio=0 \turnoffactive \auxhat%
-\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}%
-\next}}
-
-% \internalsetq {foo}{page} expands into
-% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
-% When the aux file is read, ' is the escape character
-
-\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
-
-% Things to be expanded by \internalsetq
-
-\def\Ypagenumber{\folio}
-
-\def\Ytitle{\thissection}
-
-\def\Ynothing{}
-
-\def\Ysectionnumberandtype{%
-\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
-\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\def\Yappendixletterandtype{%
-\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
-\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\gdef\xreftie{'tie}
-
-% 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 % Non-3.0.
-\else
-  \def\linenumber{\the\inputlineno:\space}
-\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{%
-  \expandafter\ifx\csname X#1\endcsname\relax
-    % If not defined, say something at least.
-    $\langle$un\-de\-fined$\rangle$%
-    \ifhavexrefs
-      \message{\linenumber Undefined cross reference `#1'.}%
-    \else
-      \ifwarnedxrefs\else
-        \global\warnedxrefstrue
-        \message{Cross reference values unknown; you must run TeX again.}%
-      \fi
-    \fi
-  \else
-    % It's defined, so just use it.
-    \csname X#1\endcsname
-  \fi
-  #2% Output the suffix in any case.
-}
-
-% Read the last existing aux file, if any.  No error if none exists.
-
-% This is the macro invoked by entries in the aux file.
-\def\xrdef #1#2{
-{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}}
-
-\def\readauxfile{%
-\begingroup
-\catcode `\^^@=\other
-\catcode `\\ 1=\other
-\catcode `\\ 2=\other
-\catcode `\^^C=\other
-\catcode `\^^D=\other
-\catcode `\^^E=\other
-\catcode `\^^F=\other
-\catcode `\^^G=\other
-\catcode `\^^H=\other
-\catcode `\\v=\other
-\catcode `\^^L=\other
-\catcode `\\ e=\other
-\catcode `\\ f=\other
-\catcode `\\10=\other
-\catcode `\\11=\other
-\catcode `\\12=\other
-\catcode `\\13=\other
-\catcode `\\14=\other
-\catcode `\\15=\other
-\catcode `\\16=\other
-\catcode `\\17=\other
-\catcode `\\18=\other
-\catcode `\\19=\other
-\catcode 26=\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
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode `\$=\other
-\catcode `\#=\other
-\catcode `\&=\other
-% `\+ does not work, so use 43.
-\catcode 43=\other
-% Make the characters 128-255 be printing characters
-{%
-  \count 1=128
-  \def\loop{%
-    \catcode\count 1=\other
-    \advance\count 1 by 1
-    \ifnum \count 1<256 \loop \fi
-  }%
-}%
-% the aux file uses ' as the escape.
-% Turn off \ as an escape so we do not lose on
-% entries which were dumped with control sequences in their names.
-% For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
-% Reference to such entries still does not work the way one would wish,
-% but at least they do not bomb out when the aux file is read in.
-\catcode `\{=1 \catcode `\}=2
-\catcode `\%=\other
-\catcode `\'=0
-\catcode`\^=7 % to make ^^e4 etc usable in xref tags 
-\catcode `\\=\other
-\openin 1 \jobname.aux
-\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue
-\global\warnedobstrue
-\fi
-% Open the new aux file.  Tex will close it automatically at exit.
-\openout \auxfile=\jobname.aux
-\endgroup}
-
-
-% 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.
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for info output only..
-\let\footnotestyle=\comment
-
-\let\ptexfootnote=\footnote
-
-{\catcode `\@=11
-%
-% Auto-number footnotes.  Otherwise like plain.
-\gdef\footnote{%
-  \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}\/\fi
-  %
-  % Remove inadvertent blank space before typesetting the footnote number.
-  \unskip
-  \thisfootno\@sf
-  \footnotezzz
-}%
-
-% 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.
-%
-\long\gdef\footnotezzz#1{\insert\footins{%
-  % 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.
-  \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
-  %
-  % Hang the footnote text off the number.
-  \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
-  #1\strut}%
-}
-
-}%end \catcode `\@=11
-
-% 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}
-%
-\def\setleading#1{%
-  \normalbaselineskip = #1\relax
-  \normallineskip = \lineskipfactor\normalbaselineskip
-  \normalbaselines
-  \setbox\strutbox =\hbox{%
-    \vrule width0pt height\strutheightpercent\baselineskip
-                    depth \strutdepthpercent \baselineskip
-  }%
-}
-
-% @| 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
-    }%
-  }%
-}
-
-% 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}
-
-
-% End of control word definitions.
-
-\message{and turning on texinfo input format.}
-
-\def\openindices{%
-   \newindex{cp}%
-   \newcodeindex{fn}%
-   \newcodeindex{vr}%
-   \newcodeindex{tp}%
-   \newcodeindex{ky}%
-   \newcodeindex{pg}%
-}
-
-% Set some numeric style parameters, for 8.5 x 11 format.
-
-%\hsize = 6.5in
-\newdimen\defaultparindent \defaultparindent = 15pt
-\parindent = \defaultparindent
-\parskip 18pt plus 1pt
-\setleading{15pt}
-\advance\topskip by 1.2cm
-
-% Prevent underfull vbox error messages.
-\vbadness=10000
-
-% Following George Bush, just 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.  This makes it come to about 9pt for the 8.5x11 format.
-%
-\ifx\emergencystretch\thisisundefined
-  % Allow us to assign to \emergencystretch anyway.
-  \def\emergencystretch{\dimen0}%
-\else
-  \emergencystretch = \hsize
-  \divide\emergencystretch by 45
-\fi
-
-% Use @smallbook to reset parameters for 7x9.5 format  (or else 7x9.25)
-\def\smallbook{
-
-% These values for secheadingskip and subsecheadingskip are
-% experiments.  RJC 7 Aug 1992
-\global\secheadingskip = 17pt plus 6pt minus 3pt
-\global\subsecheadingskip = 14pt plus 6pt minus 3pt
-
-\global\lispnarrowing = 0.3in
-\setleading{12pt}
-\advance\topskip by -1cm
-\global\parskip 3pt plus 1pt
-\global\hsize = 5in
-\global\vsize=7.5in
-\global\tolerance=700
-\global\hfuzz=1pt
-\global\contentsrightmargin=0pt
-\global\deftypemargin=0pt
-\global\defbodyindent=.5cm
-
-\global\pagewidth=\hsize
-\global\pageheight=\vsize
-
-\global\let\smalllisp=\smalllispx
-\global\let\smallexample=\smalllispx
-\global\def\Esmallexample{\Esmalllisp}
-}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{
-\global\tolerance=700
-\global\hfuzz=1pt
-\setleading{12pt}
-\global\parskip 15pt plus 1pt
-
-\global\vsize= 53\baselineskip
-\advance\vsize by \topskip
-%\global\hsize=   5.85in     % A4 wide 10pt
-\global\hsize=  6.5in
-\global\outerhsize=\hsize
-\global\advance\outerhsize by 0.5in
-\global\outervsize=\vsize
-\global\advance\outervsize by 0.6in
-
-\global\pagewidth=\hsize
-\global\pageheight=\vsize
-}
-
-% Allow control of the text dimensions.  Parameters in order: textheight;
-% textwidth; \voffset; \hoffset (!); binding offset.  All require a dimension;
-% header is additional; added length extends the bottom of the page.
-
-\def\changepagesizes#1#2#3#4#5{
- \global\vsize= #1
- \advance\vsize by \topskip
- \global\voffset= #3
- \global\hsize= #2
- \global\outerhsize=\hsize
- \global\advance\outerhsize by 0.5in
- \global\outervsize=\vsize
- \global\advance\outervsize by 0.6in
- \global\pagewidth=\hsize
- \global\pageheight=\vsize
- \global\normaloffset= #4
- \global\bindingoffset= #5}
-
-% This layout is compatible with Latex on A4 paper.
-
-\def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}}
-
-% Use @afourwide to print on European A4 paper in wide format.
-\def\afourwide{\afourpaper
-\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}}
-
-% 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
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, 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\the\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 \char '042}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt \char '176}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def\auxhat{\def^{'hat}}
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-% Subroutine for the previous macro.
-\def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}}
-
-% \lvvmode is equivalent in function to \leavevmode.
-% Using \leavevmode runs into trouble when written out to
-% an index file due to the expansion of \leavevmode into ``\unhbox
-% \voidb@x'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our
-% magic tricks with @.
-\def\lvvmode{\vbox to 0pt{}}
-
-\catcode`\|=\active
-\def|{{\tt \char '174}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-%\catcode 27=\active
-%\def^^[{$\diamondsuit$}
-
-% Set up an active definition for =, but don't enable it most of the time.
-{\catcode`\==\active
-\global\def={{\tt \char 61}}}
-
-\catcode`+=\active
-\catcode`\_=\active
-
-% 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}
-
-\catcode`\@=0
-
-% \rawbackslashxx output one backslash character in current font
-\global\chardef\rawbackslashxx=`\\
-%{\catcode`\\=\other
-%@gdef@rawbackslashxx{\}}
-
-% \rawbackslash redefines \ as input to do \rawbackslashxx.
-{\catcode`\\=\active
-@gdef@rawbackslash{@let\=@rawbackslashxx }}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
-
-% Say @foo, not \foo, in error messages.
-\escapechar=`\@
-
-% \catcode 17=0   % Define control-q
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{@let"=@normaldoublequote
-@let\=@realbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus}
-
-@def@normalturnoffactive{@let"=@normaldoublequote
-@let\=@normalbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus}
-
-% 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 back turn 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}
-
-%% These look ok in all fonts, so just make them not special.  The @rm below
-%% makes sure that the current font starts out as the newly loaded cmr10
-@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other
-
-@textfonts
-@rm
-
-@c Local variables:
-@c page-delimiter: "^\\\\message"
-@c End:
diff --git a/lib/tilde/ChangeLog b/lib/tilde/ChangeLog
deleted file mode 100644 (file)
index 986db67..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-Mon Jul 13 12:01:51 1992  Brian Fox  (bfox@cubit)
-
-       * tilde.c: (tilde_expand_word) If there is no variable $HOME, then
-       look up the user's home directory in the password database.
-
-
diff --git a/lib/tilde/doc/Makefile b/lib/tilde/doc/Makefile
deleted file mode 100644 (file)
index a2246db..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-clean distclean mostlyclean maintainer-clean:
-       rm -f tilde.??
-
-all:
-       cp tilde.texi tilde.info
diff --git a/lib/tilde/doc/tilde.texi b/lib/tilde/doc/tilde.texi
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/po/Makevars.template b/po/Makevars.template
deleted file mode 100644 (file)
index 32692ab..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
-# package.  (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.)  Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright.  The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = Free Software Foundation, Inc.
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-#   in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-#   understood.
-# - Strings which make invalid assumptions about notation of date, time or
-#   money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS =
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used.  It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
diff --git a/po/bash-3.1.pot b/po/bash-3.1.pot
deleted file mode 100644 (file)
index c96e866..0000000
+++ /dev/null
@@ -1,2568 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2005-10-03 17:31-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: arrayfunc.c:48
-msgid "bad array subscript"
-msgstr ""
-
-#: arrayfunc.c:360
-#, c-format
-msgid "%s: cannot assign to non-numeric index"
-msgstr ""
-
-#: bashhist.c:328
-#, c-format
-msgid "%s: cannot create: %s"
-msgstr ""
-
-#: bashline.c:2947
-msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-
-#: bashline.c:2996
-#, c-format
-msgid "%s: first non-whitespace character is not `\"'"
-msgstr ""
-
-#: bashline.c:3025
-#, c-format
-msgid "no closing `%c' in %s"
-msgstr ""
-
-#: bashline.c:3059
-#, c-format
-msgid "%s: missing colon separator"
-msgstr ""
-
-#: builtins/bind.def:194
-#, c-format
-msgid "`%s': invalid keymap name"
-msgstr ""
-
-#: builtins/bind.def:233
-#, c-format
-msgid "%s: cannot read: %s"
-msgstr ""
-
-#: builtins/bind.def:248
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr ""
-
-#: builtins/bind.def:283
-#, c-format
-msgid "`%s': unknown function name"
-msgstr ""
-
-#: builtins/bind.def:291
-#, c-format
-msgid "%s is not bound to any keys.\n"
-msgstr ""
-
-#: builtins/bind.def:295
-#, c-format
-msgid "%s can be invoked via "
-msgstr ""
-
-#: builtins/break.def:128
-msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr ""
-
-#: builtins/caller.def:132
-msgid "Returns the context of the current subroutine call."
-msgstr ""
-
-#: builtins/caller.def:133 builtins/caller.def:137 builtins/pushd.def:660
-#: builtins/pushd.def:668 builtins/pushd.def:671 builtins/pushd.def:681
-#: builtins/pushd.def:685 builtins/pushd.def:689 builtins/pushd.def:692
-#: builtins/pushd.def:695 builtins/pushd.def:704 builtins/pushd.def:708
-#: builtins/pushd.def:712 builtins/pushd.def:715
-msgid " "
-msgstr ""
-
-#: builtins/caller.def:134
-msgid "Without EXPR, returns returns \"$line $filename\".  With EXPR,"
-msgstr ""
-
-#: builtins/caller.def:135
-msgid "returns \"$line $subroutine $filename\"; this extra information"
-msgstr ""
-
-#: builtins/caller.def:136
-msgid "can be used used to provide a stack trace."
-msgstr ""
-
-#: builtins/caller.def:138
-msgid "The value of EXPR indicates how many call frames to go back before the"
-msgstr ""
-
-#: builtins/caller.def:139
-msgid "current one; the top frame is frame 0."
-msgstr ""
-
-#: builtins/cd.def:203
-msgid "HOME not set"
-msgstr ""
-
-#: builtins/cd.def:215
-msgid "OLDPWD not set"
-msgstr ""
-
-#: builtins/common.c:133 test.c:921
-msgid "too many arguments"
-msgstr ""
-
-#: builtins/common.c:157 shell.c:474 shell.c:747
-#, c-format
-msgid "%s: option requires an argument"
-msgstr ""
-
-#: builtins/common.c:164
-#, c-format
-msgid "%s: numeric argument required"
-msgstr ""
-
-#: builtins/common.c:171
-#, c-format
-msgid "%s: not found"
-msgstr ""
-
-#: builtins/common.c:180 shell.c:760
-#, c-format
-msgid "%s: invalid option"
-msgstr ""
-
-#: builtins/common.c:187
-#, c-format
-msgid "%s: invalid option name"
-msgstr ""
-
-#: builtins/common.c:194 general.c:231 general.c:236
-#, c-format
-msgid "`%s': not a valid identifier"
-msgstr ""
-
-#: builtins/common.c:201
-#, c-format
-msgid "%s: invalid number"
-msgstr ""
-
-#: builtins/common.c:208
-#, c-format
-msgid "%s: invalid signal specification"
-msgstr ""
-
-#: builtins/common.c:215
-#, c-format
-msgid "`%s': not a pid or valid job spec"
-msgstr ""
-
-#: builtins/common.c:222 error.c:453
-#, c-format
-msgid "%s: readonly variable"
-msgstr ""
-
-#: builtins/common.c:230
-#, c-format
-msgid "%s: %s out of range"
-msgstr ""
-
-#: builtins/common.c:230 builtins/common.c:232
-msgid "argument"
-msgstr ""
-
-#: builtins/common.c:232
-#, c-format
-msgid "%s out of range"
-msgstr ""
-
-#: builtins/common.c:240
-#, c-format
-msgid "%s: no such job"
-msgstr ""
-
-#: builtins/common.c:248
-#, c-format
-msgid "%s: no job control"
-msgstr ""
-
-#: builtins/common.c:250
-msgid "no job control"
-msgstr ""
-
-#: builtins/common.c:260
-#, c-format
-msgid "%s: restricted"
-msgstr ""
-
-#: builtins/common.c:262
-msgid "restricted"
-msgstr ""
-
-#: builtins/common.c:270
-#, c-format
-msgid "%s: not a shell builtin"
-msgstr ""
-
-#: builtins/common.c:276
-#, c-format
-msgid "write error: %s"
-msgstr ""
-
-#: builtins/common.c:484
-#, c-format
-msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr ""
-
-#: builtins/common.c:550 builtins/common.c:552
-#, c-format
-msgid "%s: ambiguous job spec"
-msgstr ""
-
-#: builtins/complete.def:251
-#, c-format
-msgid "%s: invalid action name"
-msgstr ""
-
-#: builtins/complete.def:381 builtins/complete.def:524
-#, c-format
-msgid "%s: no completion specification"
-msgstr ""
-
-#: builtins/complete.def:571
-msgid "warning: -F option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:573
-msgid "warning: -C option may not work as you expect"
-msgstr ""
-
-#: builtins/declare.def:105
-msgid "can only be used in a function"
-msgstr ""
-
-#: builtins/declare.def:301
-msgid "cannot use `-f' to make functions"
-msgstr ""
-
-#: builtins/declare.def:313 execute_cmd.c:3986
-#, c-format
-msgid "%s: readonly function"
-msgstr ""
-
-#: builtins/declare.def:401
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr ""
-
-#: builtins/enable.def:128 builtins/enable.def:136
-msgid "dynamic loading not available"
-msgstr ""
-
-#: builtins/enable.def:303
-#, c-format
-msgid "cannot open shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:326
-#, c-format
-msgid "cannot find %s in shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:450
-#, c-format
-msgid "%s: not dynamically loaded"
-msgstr ""
-
-#: builtins/enable.def:465
-#, c-format
-msgid "%s: cannot delete: %s"
-msgstr ""
-
-#: builtins/evalfile.c:129 execute_cmd.c:3852 shell.c:1408
-#, c-format
-msgid "%s: is a directory"
-msgstr ""
-
-#: builtins/evalfile.c:134
-#, c-format
-msgid "%s: not a regular file"
-msgstr ""
-
-#: builtins/evalfile.c:142
-#, c-format
-msgid "%s: file is too large"
-msgstr ""
-
-#: builtins/exec.def:205
-#, c-format
-msgid "%s: cannot execute: %s"
-msgstr ""
-
-#: builtins/exit.def:83
-msgid "not login shell: use `exit'"
-msgstr ""
-
-#: builtins/exit.def:111
-msgid "There are stopped jobs.\n"
-msgstr ""
-
-#: builtins/fc.def:259
-msgid "no command found"
-msgstr ""
-
-#: builtins/fc.def:329
-msgid "history specification"
-msgstr ""
-
-#: builtins/fc.def:350
-#, c-format
-msgid "%s: cannot open temp file: %s"
-msgstr ""
-
-#: builtins/fg_bg.def:149
-#, c-format
-msgid "job %d started without job control"
-msgstr ""
-
-#: builtins/getopt.c:109
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr ""
-
-#: builtins/getopt.c:110
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr ""
-
-#: builtins/hash.def:83
-msgid "hashing disabled"
-msgstr ""
-
-#: builtins/hash.def:128
-#, c-format
-msgid "%s: hash table empty\n"
-msgstr ""
-
-#: builtins/help.def:108
-msgid "Shell commands matching keywords `"
-msgstr ""
-
-#: builtins/help.def:110
-msgid "Shell commands matching keyword `"
-msgstr ""
-
-#: builtins/help.def:138
-#, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-
-#: builtins/help.def:164
-#, c-format
-msgid "%s: cannot open: %s"
-msgstr ""
-
-#: builtins/help.def:182
-msgid ""
-"These shell commands are defined internally.  Type `help' to see this list.\n"
-"Type `help name' to find out more about the function `name'.\n"
-"Use `info bash' to find out more about the shell in general.\n"
-"Use `man -k' or `info' to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-msgstr ""
-
-#: builtins/history.def:150
-msgid "cannot use more than one of -anrw"
-msgstr ""
-
-#: builtins/history.def:182
-msgid "history position"
-msgstr ""
-
-#: builtins/history.def:400
-#, c-format
-msgid "%s: history expansion failed"
-msgstr ""
-
-#: builtins/jobs.def:99
-msgid "no other options allowed with `-x'"
-msgstr ""
-
-#: builtins/kill.def:187
-#, c-format
-msgid "%s: arguments must be process or job IDs"
-msgstr ""
-
-#: builtins/kill.def:250
-msgid "Unknown error"
-msgstr ""
-
-#: builtins/let.def:94 builtins/let.def:119 expr.c:497 expr.c:512
-msgid "expression expected"
-msgstr ""
-
-#: builtins/printf.def:327
-#, c-format
-msgid "`%s': missing format character"
-msgstr ""
-
-#: builtins/printf.def:502
-#, c-format
-msgid "`%c': invalid format character"
-msgstr ""
-
-#: builtins/printf.def:708
-msgid "missing hex digit for \\x"
-msgstr ""
-
-#: builtins/pushd.def:173
-msgid "no other directory"
-msgstr ""
-
-#: builtins/pushd.def:440
-msgid "<no current directory>"
-msgstr ""
-
-#: builtins/pushd.def:657
-msgid "Display the list of currently remembered directories.  Directories"
-msgstr ""
-
-#: builtins/pushd.def:658
-msgid "find their way onto the list with the `pushd' command; you can get"
-msgstr ""
-
-#: builtins/pushd.def:659
-msgid "back up through the list with the `popd' command."
-msgstr ""
-
-#: builtins/pushd.def:661
-msgid "The -l flag specifies that `dirs' should not print shorthand versions"
-msgstr ""
-
-#: builtins/pushd.def:662
-msgid "of directories which are relative to your home directory.  This means"
-msgstr ""
-
-#: builtins/pushd.def:663
-msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
-msgstr ""
-
-#: builtins/pushd.def:664
-msgid "causes `dirs' to print the directory stack with one entry per line,"
-msgstr ""
-
-#: builtins/pushd.def:665
-msgid "prepending the directory name with its position in the stack.  The -p"
-msgstr ""
-
-#: builtins/pushd.def:666
-msgid "flag does the same thing, but the stack position is not prepended."
-msgstr ""
-
-#: builtins/pushd.def:667
-msgid "The -c flag clears the directory stack by deleting all of the elements."
-msgstr ""
-
-#: builtins/pushd.def:669
-msgid "+N   displays the Nth entry counting from the left of the list shown by"
-msgstr ""
-
-#: builtins/pushd.def:670 builtins/pushd.def:673
-msgid "     dirs when invoked without options, starting with zero."
-msgstr ""
-
-#: builtins/pushd.def:672
-msgid ""
-"-N   displays the Nth entry counting from the right of the list shown by"
-msgstr ""
-
-#: builtins/pushd.def:678
-msgid "Adds a directory to the top of the directory stack, or rotates"
-msgstr ""
-
-#: builtins/pushd.def:679
-msgid "the stack, making the new top of the stack the current working"
-msgstr ""
-
-#: builtins/pushd.def:680
-msgid "directory.  With no arguments, exchanges the top two directories."
-msgstr ""
-
-#: builtins/pushd.def:682
-msgid "+N   Rotates the stack so that the Nth directory (counting"
-msgstr ""
-
-#: builtins/pushd.def:683
-msgid "     from the left of the list shown by `dirs', starting with"
-msgstr ""
-
-#: builtins/pushd.def:684 builtins/pushd.def:688
-msgid "     zero) is at the top."
-msgstr ""
-
-#: builtins/pushd.def:686
-msgid "-N   Rotates the stack so that the Nth directory (counting"
-msgstr ""
-
-#: builtins/pushd.def:687
-msgid "     from the right of the list shown by `dirs', starting with"
-msgstr ""
-
-#: builtins/pushd.def:690
-msgid "-n   suppress the normal change of directory when adding directories"
-msgstr ""
-
-#: builtins/pushd.def:691
-msgid "     to the stack, so only the stack is manipulated."
-msgstr ""
-
-#: builtins/pushd.def:693
-msgid "dir  adds DIR to the directory stack at the top, making it the"
-msgstr ""
-
-#: builtins/pushd.def:694
-msgid "     new current working directory."
-msgstr ""
-
-#: builtins/pushd.def:696 builtins/pushd.def:716
-msgid "You can see the directory stack with the `dirs' command."
-msgstr ""
-
-#: builtins/pushd.def:701
-msgid "Removes entries from the directory stack.  With no arguments,"
-msgstr ""
-
-#: builtins/pushd.def:702
-msgid "removes the top directory from the stack, and cd's to the new"
-msgstr ""
-
-#: builtins/pushd.def:703
-msgid "top directory."
-msgstr ""
-
-#: builtins/pushd.def:705
-msgid "+N   removes the Nth entry counting from the left of the list"
-msgstr ""
-
-#: builtins/pushd.def:706
-msgid "     shown by `dirs', starting with zero.  For example: `popd +0'"
-msgstr ""
-
-#: builtins/pushd.def:707
-msgid "     removes the first directory, `popd +1' the second."
-msgstr ""
-
-#: builtins/pushd.def:709
-msgid "-N   removes the Nth entry counting from the right of the list"
-msgstr ""
-
-#: builtins/pushd.def:710
-msgid "     shown by `dirs', starting with zero.  For example: `popd -0'"
-msgstr ""
-
-#: builtins/pushd.def:711
-msgid "     removes the last directory, `popd -1' the next to last."
-msgstr ""
-
-#: builtins/pushd.def:713
-msgid "-n   suppress the normal change of directory when removing directories"
-msgstr ""
-
-#: builtins/pushd.def:714
-msgid "     from the stack, so only the stack is manipulated."
-msgstr ""
-
-#: builtins/read.def:211
-#, c-format
-msgid "%s: invalid timeout specification"
-msgstr ""
-
-#: builtins/read.def:234
-#, c-format
-msgid "%s: invalid file descriptor specification"
-msgstr ""
-
-#: builtins/read.def:241
-#, c-format
-msgid "%d: invalid file descriptor: %s"
-msgstr ""
-
-#: builtins/read.def:474
-#, c-format
-msgid "read error: %d: %s"
-msgstr ""
-
-#: builtins/return.def:63
-msgid "can only `return' from a function or sourced script"
-msgstr ""
-
-#: builtins/set.def:745
-msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-
-#: builtins/set.def:782
-#, c-format
-msgid "%s: cannot unset"
-msgstr ""
-
-#: builtins/set.def:789
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr ""
-
-#: builtins/set.def:800
-#, c-format
-msgid "%s: not an array variable"
-msgstr ""
-
-#: builtins/setattr.def:166
-#, c-format
-msgid "%s: not a function"
-msgstr ""
-
-#: builtins/shift.def:66 builtins/shift.def:72
-msgid "shift count"
-msgstr ""
-
-#: builtins/shopt.def:227
-msgid "cannot set and unset shell options simultaneously"
-msgstr ""
-
-#: builtins/shopt.def:292
-#, c-format
-msgid "%s: invalid shell option name"
-msgstr ""
-
-#: builtins/source.def:117
-msgid "filename argument required"
-msgstr ""
-
-#: builtins/source.def:137
-#, c-format
-msgid "%s: file not found"
-msgstr ""
-
-#: builtins/suspend.def:93
-msgid "cannot suspend"
-msgstr ""
-
-#: builtins/suspend.def:103
-msgid "cannot suspend a login shell"
-msgstr ""
-
-#: builtins/type.def:232
-#, c-format
-msgid "%s is aliased to `%s'\n"
-msgstr ""
-
-#: builtins/type.def:253
-#, c-format
-msgid "%s is a shell keyword\n"
-msgstr ""
-
-#: builtins/type.def:273
-#, c-format
-msgid "%s is a function\n"
-msgstr ""
-
-#: builtins/type.def:298
-#, c-format
-msgid "%s is a shell builtin\n"
-msgstr ""
-
-#: builtins/type.def:319
-#, c-format
-msgid "%s is %s\n"
-msgstr ""
-
-#: builtins/type.def:339
-#, c-format
-msgid "%s is hashed (%s)\n"
-msgstr ""
-
-#: builtins/ulimit.def:344
-#, c-format
-msgid "%s: invalid limit argument"
-msgstr ""
-
-#: builtins/ulimit.def:370
-#, c-format
-msgid "`%c': bad command"
-msgstr ""
-
-#: builtins/ulimit.def:399
-#, c-format
-msgid "%s: cannot get limit: %s"
-msgstr ""
-
-#: builtins/ulimit.def:437
-#, c-format
-msgid "%s: cannot modify limit: %s"
-msgstr ""
-
-#: builtins/umask.def:112
-msgid "octal number"
-msgstr ""
-
-#: builtins/umask.def:226
-#, c-format
-msgid "`%c': invalid symbolic mode operator"
-msgstr ""
-
-#: builtins/umask.def:281
-#, c-format
-msgid "`%c': invalid symbolic mode character"
-msgstr ""
-
-#: error.c:165
-#, c-format
-msgid "last command: %s\n"
-msgstr ""
-
-#: error.c:173
-msgid "Aborting..."
-msgstr ""
-
-#: error.c:260
-#, c-format
-msgid "%s: warning: "
-msgstr ""
-
-#: error.c:405
-msgid "unknown command error"
-msgstr ""
-
-#: error.c:406
-msgid "bad command type"
-msgstr ""
-
-#: error.c:407
-msgid "bad connector"
-msgstr ""
-
-#: error.c:408
-msgid "bad jump"
-msgstr ""
-
-#: error.c:446
-#, c-format
-msgid "%s: unbound variable"
-msgstr ""
-
-#: eval.c:176
-msgid "\atimed out waiting for input: auto-logout\n"
-msgstr ""
-
-#: execute_cmd.c:471
-#, c-format
-msgid "cannot redirect standard input from /dev/null: %s"
-msgstr ""
-
-#: execute_cmd.c:1036
-#, c-format
-msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr ""
-
-#: execute_cmd.c:3551
-#, c-format
-msgid "%s: restricted: cannot specify `/' in command names"
-msgstr ""
-
-#: execute_cmd.c:3639
-#, c-format
-msgid "%s: command not found"
-msgstr ""
-
-#: execute_cmd.c:3876
-#, c-format
-msgid "%s: %s: bad interpreter"
-msgstr ""
-
-#: execute_cmd.c:3913
-#, c-format
-msgid "%s: cannot execute binary file"
-msgstr ""
-
-#: execute_cmd.c:4025
-#, c-format
-msgid "cannot duplicate fd %d to fd %d"
-msgstr ""
-
-#: expr.c:240
-msgid "expression recursion level exceeded"
-msgstr ""
-
-#: expr.c:264
-msgid "recursion stack underflow"
-msgstr ""
-
-#: expr.c:375
-msgid "syntax error in expression"
-msgstr ""
-
-#: expr.c:415
-msgid "attempted assignment to non-variable"
-msgstr ""
-
-#: expr.c:436 expr.c:441 expr.c:751
-msgid "division by 0"
-msgstr ""
-
-#: expr.c:467
-msgid "bug: bad expassign token"
-msgstr ""
-
-#: expr.c:509
-msgid "`:' expected for conditional expression"
-msgstr ""
-
-#: expr.c:776
-msgid "exponent less than 0"
-msgstr ""
-
-#: expr.c:821
-msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
-
-#: expr.c:849
-msgid "missing `)'"
-msgstr ""
-
-#: expr.c:892
-msgid "syntax error: operand expected"
-msgstr ""
-
-#: expr.c:1178
-msgid "invalid number"
-msgstr ""
-
-#: expr.c:1182
-msgid "invalid arithmetic base"
-msgstr ""
-
-#: expr.c:1202
-msgid "value too great for base"
-msgstr ""
-
-#: general.c:62
-msgid "getcwd: cannot access parent directories"
-msgstr ""
-
-#: input.c:231
-#, c-format
-msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr ""
-
-#: input.c:239
-#, c-format
-msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr ""
-
-#: jobs.c:923
-#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr ""
-
-#: jobs.c:1308
-#, c-format
-msgid "describe_pid: %ld: no such pid"
-msgstr ""
-
-#: jobs.c:1981 nojobs.c:648
-#, c-format
-msgid "wait: pid %ld is not a child of this shell"
-msgstr ""
-
-#: jobs.c:2180
-#, c-format
-msgid "wait_for: No record of process %ld"
-msgstr ""
-
-#: jobs.c:2435
-#, c-format
-msgid "wait_for_job: job %d is stopped"
-msgstr ""
-
-#: jobs.c:2657
-#, c-format
-msgid "%s: job has terminated"
-msgstr ""
-
-#: jobs.c:2666
-#, c-format
-msgid "%s: job %d already in background"
-msgstr ""
-
-#: jobs.c:3452
-msgid "no job control in this shell"
-msgstr ""
-
-#: lib/malloc/malloc.c:298
-#, c-format
-msgid "malloc: failed assertion: %s\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:314
-#, c-format
-msgid ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:740
-msgid "malloc: block on free list clobbered"
-msgstr ""
-
-#: lib/malloc/malloc.c:817
-msgid "free: called with already freed block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:820
-msgid "free: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:839
-msgid "free: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:845
-msgid "free: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/malloc.c:942
-msgid "realloc: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:957
-msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:963
-msgid "realloc: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/table.c:175
-msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
-
-#: lib/malloc/table.c:182
-#, c-format
-msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
-
-#: lib/malloc/table.c:218
-#, c-format
-msgid "register_free: %p already in table as free?\n"
-msgstr ""
-
-#: lib/malloc/watch.c:46
-msgid "allocated"
-msgstr ""
-
-#: lib/malloc/watch.c:48
-msgid "freed"
-msgstr ""
-
-#: lib/malloc/watch.c:50
-msgid "requesting resize"
-msgstr ""
-
-#: lib/malloc/watch.c:52
-msgid "just resized"
-msgstr ""
-
-#: lib/malloc/watch.c:54
-msgid "bug: unknown operation"
-msgstr ""
-
-#: lib/malloc/watch.c:56
-#, c-format
-msgid "malloc: watch alert: %p %s "
-msgstr ""
-
-#: lib/sh/fmtulong.c:101
-msgid "invalid base"
-msgstr ""
-
-#: lib/sh/netopen.c:158
-#, c-format
-msgid "%s: host unknown"
-msgstr ""
-
-#: lib/sh/netopen.c:165
-#, c-format
-msgid "%s: invalid service"
-msgstr ""
-
-#: lib/sh/netopen.c:296
-#, c-format
-msgid "%s: bad network path specification"
-msgstr ""
-
-#: lib/sh/netopen.c:336
-msgid "network operations not supported"
-msgstr ""
-
-#: mailcheck.c:386
-msgid "You have mail in $_"
-msgstr ""
-
-#: mailcheck.c:411
-msgid "You have new mail in $_"
-msgstr ""
-
-#: mailcheck.c:427
-#, c-format
-msgid "The mail in %s has been read\n"
-msgstr ""
-
-#: make_cmd.c:322
-msgid "syntax error: arithmetic expression required"
-msgstr ""
-
-#: make_cmd.c:324
-msgid "syntax error: `;' unexpected"
-msgstr ""
-
-#: make_cmd.c:325
-#, c-format
-msgid "syntax error: `((%s))'"
-msgstr ""
-
-#: make_cmd.c:566
-#, c-format
-msgid "make_here_document: bad instruction type %d"
-msgstr ""
-
-#: make_cmd.c:736
-#, c-format
-msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
-
-#: parse.y:2747
-#, c-format
-msgid "unexpected EOF while looking for matching `%c'"
-msgstr ""
-
-#: parse.y:3043
-msgid "unexpected EOF while looking for `]]'"
-msgstr ""
-
-#: parse.y:3048
-#, c-format
-msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr ""
-
-#: parse.y:3052
-msgid "syntax error in conditional expression"
-msgstr ""
-
-#: parse.y:3130
-#, c-format
-msgid "unexpected token `%s', expected `)'"
-msgstr ""
-
-#: parse.y:3134
-msgid "expected `)'"
-msgstr ""
-
-#: parse.y:3162
-#, c-format
-msgid "unexpected argument `%s' to conditional unary operator"
-msgstr ""
-
-#: parse.y:3166
-msgid "unexpected argument to conditional unary operator"
-msgstr ""
-
-#: parse.y:3203
-#, c-format
-msgid "unexpected token `%s', conditional binary operator expected"
-msgstr ""
-
-#: parse.y:3207
-msgid "conditional binary operator expected"
-msgstr ""
-
-#: parse.y:3223
-#, c-format
-msgid "unexpected argument `%s' to conditional binary operator"
-msgstr ""
-
-#: parse.y:3227
-msgid "unexpected argument to conditional binary operator"
-msgstr ""
-
-#: parse.y:3238
-#, c-format
-msgid "unexpected token `%c' in conditional command"
-msgstr ""
-
-#: parse.y:3241
-#, c-format
-msgid "unexpected token `%s' in conditional command"
-msgstr ""
-
-#: parse.y:3245
-#, c-format
-msgid "unexpected token %d in conditional command"
-msgstr ""
-
-#: parse.y:4461
-#, c-format
-msgid "syntax error near unexpected token `%s'"
-msgstr ""
-
-#: parse.y:4479
-#, c-format
-msgid "syntax error near `%s'"
-msgstr ""
-
-#: parse.y:4489
-msgid "syntax error: unexpected end of file"
-msgstr ""
-
-#: parse.y:4489
-msgid "syntax error"
-msgstr ""
-
-#: parse.y:4551
-#, c-format
-msgid "Use \"%s\" to leave the shell.\n"
-msgstr ""
-
-#: parse.y:4710
-msgid "unexpected EOF while looking for matching `)'"
-msgstr ""
-
-#: pcomplete.c:1001
-#, c-format
-msgid "completion: function `%s' not found"
-msgstr ""
-
-#: pcomplib.c:179
-#, c-format
-msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr ""
-
-#: print_cmd.c:264
-#, c-format
-msgid "print_command: bad connector `%d'"
-msgstr ""
-
-#: print_cmd.c:1236
-#, c-format
-msgid "cprintf: `%c': invalid format character"
-msgstr ""
-
-#: redir.c:99
-msgid "file descriptor out of range"
-msgstr ""
-
-#: redir.c:141
-#, c-format
-msgid "%s: ambiguous redirect"
-msgstr ""
-
-#: redir.c:145
-#, c-format
-msgid "%s: cannot overwrite existing file"
-msgstr ""
-
-#: redir.c:150
-#, c-format
-msgid "%s: restricted: cannot redirect output"
-msgstr ""
-
-#: redir.c:155
-#, c-format
-msgid "cannot create temp file for here document: %s"
-msgstr ""
-
-#: redir.c:509
-msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
-
-#: redir.c:956
-msgid "redirection error: cannot duplicate fd"
-msgstr ""
-
-#: shell.c:309
-msgid "could not find /tmp, please create!"
-msgstr ""
-
-#: shell.c:313
-msgid "/tmp must be a valid directory name"
-msgstr ""
-
-#: shell.c:849
-#, c-format
-msgid "%c%c: invalid option"
-msgstr ""
-
-#: shell.c:1598
-msgid "I have no name!"
-msgstr ""
-
-#: shell.c:1733
-#, c-format
-msgid ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-msgstr ""
-
-#: shell.c:1735
-msgid "GNU long options:\n"
-msgstr ""
-
-#: shell.c:1739
-msgid "Shell options:\n"
-msgstr ""
-
-#: shell.c:1740
-msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
-
-#: shell.c:1755
-#, c-format
-msgid "\t-%s or -o option\n"
-msgstr ""
-
-#: shell.c:1761
-#, c-format
-msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-
-#: shell.c:1762
-#, c-format
-msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-
-#: shell.c:1763
-msgid "Use the `bashbug' command to report bugs.\n"
-msgstr ""
-
-#: sig.c:494
-#, c-format
-msgid "sigprocmask: %d: invalid operation"
-msgstr ""
-
-#: subst.c:1123
-#, c-format
-msgid "bad substitution: no closing `%s' in %s"
-msgstr ""
-
-#: subst.c:2269
-#, c-format
-msgid "%s: cannot assign list to array member"
-msgstr ""
-
-#: subst.c:4208 subst.c:4224
-msgid "cannot make pipe for process substitution"
-msgstr ""
-
-#: subst.c:4255
-msgid "cannot make child for process substitution"
-msgstr ""
-
-#: subst.c:4300
-#, c-format
-msgid "cannot open named pipe %s for reading"
-msgstr ""
-
-#: subst.c:4302
-#, c-format
-msgid "cannot open named pipe %s for writing"
-msgstr ""
-
-#: subst.c:4310
-#, c-format
-msgid "cannout reset nodelay mode for fd %d"
-msgstr ""
-
-#: subst.c:4320
-#, c-format
-msgid "cannot duplicate named pipe %s as fd %d"
-msgstr ""
-
-#: subst.c:4495
-msgid "cannot make pipe for command substitution"
-msgstr ""
-
-#: subst.c:4531
-msgid "cannot make child for command substitution"
-msgstr ""
-
-#: subst.c:4548
-msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr ""
-
-#: subst.c:5013
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr ""
-
-#: subst.c:5287
-#, c-format
-msgid "%s: substring expression < 0"
-msgstr ""
-
-#: subst.c:6058
-#, c-format
-msgid "%s: bad substitution"
-msgstr ""
-
-#: subst.c:6134
-#, c-format
-msgid "$%s: cannot assign in this way"
-msgstr ""
-
-#: subst.c:7687
-#, c-format
-msgid "no match: %s"
-msgstr ""
-
-#: test.c:154
-msgid "argument expected"
-msgstr ""
-
-#: test.c:163
-#, c-format
-msgid "%s: integer expression expected"
-msgstr ""
-
-#: test.c:361
-msgid "`)' expected"
-msgstr ""
-
-#: test.c:363
-#, c-format
-msgid "`)' expected, found %s"
-msgstr ""
-
-#: test.c:378 test.c:787 test.c:790
-#, c-format
-msgid "%s: unary operator expected"
-msgstr ""
-
-#: test.c:543 test.c:830
-#, c-format
-msgid "%s: binary operator expected"
-msgstr ""
-
-#: test.c:905
-msgid "missing `]'"
-msgstr ""
-
-#: trap.c:194
-msgid "invalid signal number"
-msgstr ""
-
-#: trap.c:309
-#, c-format
-msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
-
-#: trap.c:313
-#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-
-#: trap.c:349
-#, c-format
-msgid "trap_handler: bad signal %d"
-msgstr ""
-
-#: variables.c:320
-#, c-format
-msgid "error importing function definition for `%s'"
-msgstr ""
-
-#: variables.c:692
-#, c-format
-msgid "shell level (%d) too high, resetting to 1"
-msgstr ""
-
-#: variables.c:1651
-msgid "make_local_variable: no function context at current scope"
-msgstr ""
-
-#: variables.c:2807
-msgid "all_local_variables: no function context at current scope"
-msgstr ""
-
-#: variables.c:3021 variables.c:3030
-#, c-format
-msgid "invalid character %d in exportstr for %s"
-msgstr ""
-
-#: variables.c:3036
-#, c-format
-msgid "no `=' in exportstr for %s"
-msgstr ""
-
-#: variables.c:3463
-msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-
-#: variables.c:3476
-msgid "pop_var_context: no global_variables context"
-msgstr ""
-
-#: variables.c:3548
-msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-
-#: version.c:82
-msgid "Copyright (C) 2005 Free Software Foundation, Inc.\n"
-msgstr ""
-
-#: xmalloc.c:93
-#, c-format
-msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:95
-#, c-format
-msgid "xmalloc: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:115
-#, c-format
-msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:117
-#, c-format
-msgid "xrealloc: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:151
-#, c-format
-msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:153
-#, c-format
-msgid "xmalloc: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:175
-#, c-format
-msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:177
-#, c-format
-msgid "xrealloc: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: builtins.c:244
-msgid ""
-" `alias' with no arguments or with the -p option prints the list\n"
-"    of aliases in the form alias NAME=VALUE on standard output.\n"
-"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-"    A trailing space in VALUE causes the next word to be checked for\n"
-"    alias substitution when the alias is expanded.  Alias returns\n"
-"    true unless a NAME is given for which no alias has been defined."
-msgstr ""
-
-#: builtins.c:257
-msgid ""
-" Remove NAMEs from the list of defined aliases.  If the -a option is given,\n"
-"    then remove all alias definitions."
-msgstr ""
-
-#: builtins.c:266
-msgid ""
-" Bind a key sequence to a Readline function or a macro, or set\n"
-"    a Readline variable.  The non-option argument syntax is equivalent\n"
-"    to that found in ~/.inputrc, but must be passed as a single argument:\n"
-"    bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"    bind accepts the following options:\n"
-"      -m  keymap         Use `keymap' as the keymap for the duration of "
-"this\n"
-"                         command.  Acceptable keymap names are emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-"                         vi-command, and vi-insert.\n"
-"      -l                 List names of functions.\n"
-"      -P                 List function names and bindings.\n"
-"      -p                 List functions and bindings in a form that can be\n"
-"                         reused as input.\n"
-"      -r  keyseq         Remove the binding for KEYSEQ.\n"
-"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-"    \t\t\t\tKEYSEQ is entered.\n"
-"      -f  filename       Read key bindings from FILENAME.\n"
-"      -q  function-name  Query about which keys invoke the named function.\n"
-"      -u  function-name  Unbind all keys which are bound to the named "
-"function.\n"
-"      -V                 List variable names and values\n"
-"      -v                 List variable names and values in a form that can\n"
-"                         be reused as input.\n"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\n"
-"                         in a form that can be reused as input."
-msgstr ""
-
-#: builtins.c:297
-msgid ""
-" Exit from within a FOR, WHILE or UNTIL loop.  If N is specified,\n"
-"    break N levels."
-msgstr ""
-
-#: builtins.c:304
-msgid ""
-" Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-"    If N is specified, resume at the N-th enclosing loop."
-msgstr ""
-
-#: builtins.c:311
-msgid ""
-" Run a shell builtin.  This is useful when you wish to rename a\n"
-"    shell builtin to be a function, but need the functionality of the\n"
-"    builtin within the function itself."
-msgstr ""
-
-#: builtins.c:320
-msgid ""
-" Returns the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns returns \"$line $filename\".  With EXPR,\n"
-"    returns \"$line $subroutine $filename\"; this extra information\n"
-"    can be used used to provide a stack trace.\n"
-"    \n"
-"    The value of EXPR indicates how many call frames to go back before the\n"
-"    current one; the top frame is frame 0."
-msgstr ""
-
-#: builtins.c:334
-msgid ""
-" Change the current directory to DIR.  The variable $HOME is the\n"
-"    default DIR.  The variable CDPATH defines the search path for\n"
-"    the directory containing DIR.  Alternative directory names in CDPATH\n"
-"    are separated by a colon (:).  A null directory name is the same as\n"
-"    the current directory, i.e. `.'.  If DIR begins with a slash (/),\n"
-"    then CDPATH is not used.  If the directory is not found, and the\n"
-"    shell option `cdable_vars' is set, then try the word as a variable\n"
-"    name.  If that variable has a value, then cd to the value of that\n"
-"    variable.  The -P option says to use the physical directory structure\n"
-"    instead of following symbolic links; the -L option forces symbolic "
-"links\n"
-"    to be followed."
-msgstr ""
-
-#: builtins.c:350
-msgid ""
-" Print the current working directory.  With the -P option, pwd prints\n"
-"    the physical directory, without any symbolic links; the -L option\n"
-"    makes pwd follow symbolic links."
-msgstr ""
-
-#: builtins.c:358
-msgid " No effect; the command does nothing.  A zero exit code is returned."
-msgstr ""
-
-#: builtins.c:364
-msgid " Return a successful result."
-msgstr ""
-
-#: builtins.c:370
-msgid " Return an unsuccessful result."
-msgstr ""
-
-#: builtins.c:376
-msgid ""
-" Runs COMMAND with ARGS ignoring shell functions.  If you have a shell\n"
-"    function called `ls', and you wish to call the command `ls', you can\n"
-"    say \"command ls\".  If the -p option is given, a default value is used\n"
-"    for PATH that is guaranteed to find all of the standard utilities.  If\n"
-"    the -V or -v option is given, a string is printed describing COMMAND.\n"
-"    The -V option produces a more verbose description."
-msgstr ""
-
-#: builtins.c:387
-msgid ""
-" Declare variables and/or give them attributes.  If no NAMEs are\n"
-"    given, then display the values of variables instead.  The -p option\n"
-"    will display the attributes and values of each NAME.\n"
-"    \n"
-"    The flags are:\n"
-"    \n"
-"      -a\tto make NAMEs arrays (if supported)\n"
-"      -f\tto select from among function names only\n"
-"      -F\tto display function names (and line number and source file name "
-"if\n"
-"    \tdebugging) without definitions\n"
-"      -i\tto make NAMEs have the `integer' attribute\n"
-"      -r\tto make NAMEs readonly\n"
-"      -t\tto make NAMEs have the `trace' attribute\n"
-"      -x\tto make NAMEs export\n"
-"    \n"
-"    Variables with the integer attribute have arithmetic evaluation (see\n"
-"    `let') done when the variable is assigned to.\n"
-"    \n"
-"    When displaying values of variables, -f displays a function's name\n"
-"    and definition.  The -F option restricts the display to function\n"
-"    name only.\n"
-"    \n"
-"    Using `+' instead of `-' turns off the given attribute instead.  When\n"
-"    used in a function, makes NAMEs local, as with the `local' command."
-msgstr ""
-
-#: builtins.c:416
-msgid " Obsolete.  See `declare'."
-msgstr ""
-
-#: builtins.c:422
-msgid ""
-" Create a local variable called NAME, and give it VALUE.  LOCAL\n"
-"    can only be used within a function; it makes the variable NAME\n"
-"    have a visible scope restricted to that function and its children."
-msgstr ""
-
-#: builtins.c:431
-msgid ""
-" Output the ARGs.  If -n is specified, the trailing newline is\n"
-"    suppressed.  If the -e option is given, interpretation of the\n"
-"    following backslash-escaped characters is turned on:\n"
-"    \t\\a\talert (bell)\n"
-"    \t\\b\tbackspace\n"
-"    \t\\c\tsuppress trailing newline\n"
-"    \t\\E\tescape character\n"
-"    \t\\f\tform feed\n"
-"    \t\\n\tnew line\n"
-"    \t\\r\tcarriage return\n"
-"    \t\\t\thorizontal tab\n"
-"    \t\\v\tvertical tab\n"
-"    \t\\\\\tbackslash\n"
-"    \t\\num\tthe character whose ASCII code is NUM (octal).\n"
-"    \n"
-"    You can explicitly turn off the interpretation of the above characters\n"
-"    with the -E option."
-msgstr ""
-
-#: builtins.c:455
-msgid ""
-" Output the ARGs.  If -n is specified, the trailing newline is suppressed."
-msgstr ""
-
-#: builtins.c:462
-msgid ""
-" Enable and disable builtin shell commands.  This allows\n"
-"    you to use a disk command which has the same name as a shell\n"
-"    builtin without specifying a full pathname.  If -n is used, the\n"
-"    NAMEs become disabled; otherwise NAMEs are enabled.  For example,\n"
-"    to use the `test' found in $PATH instead of the shell builtin\n"
-"    version, type `enable -n test'.  On systems supporting dynamic\n"
-"    loading, the -f option may be used to load new builtins from the\n"
-"    shared object FILENAME.  The -d option will delete a builtin\n"
-"    previously loaded with -f.  If no non-option names are given, or\n"
-"    the -p option is supplied, a list of builtins is printed.  The\n"
-"    -a option means to print every builtin with an indication of whether\n"
-"    or not it is enabled.  The -s option restricts the output to the "
-"POSIX.2\n"
-"    `special' builtins.  The -n option displays a list of all disabled "
-"builtins."
-msgstr ""
-
-#: builtins.c:480
-msgid " Read ARGs as input to the shell and execute the resulting command(s)."
-msgstr ""
-
-#: builtins.c:486
-msgid ""
-" Getopts is used by shell procedures to parse positional parameters.\n"
-"    \n"
-"    OPTSTRING contains the option letters to be recognized; if a letter\n"
-"    is followed by a colon, the option is expected to have an argument,\n"
-"    which should be separated from it by white space.\n"
-"    \n"
-"    Each time it is invoked, getopts will place the next option in the\n"
-"    shell variable $name, initializing name if it does not exist, and\n"
-"    the index of the next argument to be processed into the shell\n"
-"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
-"    a shell script is invoked.  When an option requires an argument,\n"
-"    getopts places that argument into the shell variable OPTARG.\n"
-"    \n"
-"    getopts reports errors in one of two ways.  If the first character\n"
-"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
-"    this mode, no error messages are printed.  If an invalid option is\n"
-"    seen, getopts places the option character found into OPTARG.  If a\n"
-"    required argument is not found, getopts places a ':' into NAME and\n"
-"    sets OPTARG to the option character found.  If getopts is not in\n"
-"    silent mode, and an invalid option is seen, getopts places '?' into\n"
-"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
-"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-"    printed.\n"
-"    \n"
-"    If the shell variable OPTERR has the value 0, getopts disables the\n"
-"    printing of error messages, even if the first character of\n"
-"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
-"    \n"
-"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
-"    more arguments are given, they are parsed instead."
-msgstr ""
-
-#: builtins.c:521
-msgid ""
-" Exec FILE, replacing this shell with the specified program.\n"
-"    If FILE is not specified, the redirections take effect in this\n"
-"    shell.  If the first argument is `-l', then place a dash in the\n"
-"    zeroth arg passed to FILE, as login does.  If the `-c' option\n"
-"    is supplied, FILE is executed with a null environment.  The `-a'\n"
-"    option means to make set argv[0] of the executed process to NAME.\n"
-"    If the file cannot be executed and the shell is not interactive,\n"
-"    then the shell exits, unless the shell option `execfail' is set."
-msgstr ""
-
-#: builtins.c:534
-msgid ""
-" Exit the shell with a status of N.  If N is omitted, the exit status\n"
-"    is that of the last command executed."
-msgstr ""
-
-#: builtins.c:541
-msgid " Logout of a login shell."
-msgstr ""
-
-#: builtins.c:548
-msgid ""
-" fc is used to list or edit and re-execute commands from the history list.\n"
-"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-"    string, which means the most recent command beginning with that\n"
-"    string.\n"
-"    \n"
-"       -e ENAME selects which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
-"          then vi.\n"
-"    \n"
-"       -l means list lines instead of editing.\n"
-"       -n means no line numbers listed.\n"
-"       -r means reverse the order of the lines (making it newest listed "
-"first).\n"
-"    \n"
-"    With the `fc -s [pat=rep ...] [command]' format, the command is\n"
-"    re-executed after the substitution OLD=NEW is performed.\n"
-"    \n"
-"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
-"    runs the last command beginning with `cc' and typing `r' re-executes\n"
-"    the last command."
-msgstr ""
-
-#: builtins.c:573
-msgid ""
-" Place JOB_SPEC in the foreground, and make it the current job.  If\n"
-"    JOB_SPEC is not present, the shell's notion of the current job is\n"
-"    used."
-msgstr ""
-
-#: builtins.c:583
-msgid ""
-" Place each JOB_SPEC in the background, as if it had been started with\n"
-"    `&'.  If JOB_SPEC is not present, the shell's notion of the current\n"
-"    job is used."
-msgstr ""
-
-#: builtins.c:592
-msgid ""
-" For each NAME, the full pathname of the command is determined and\n"
-"    remembered.  If the -p option is supplied, PATHNAME is used as the\n"
-"    full pathname of NAME, and no path search is performed.  The -r\n"
-"    option causes the shell to forget all remembered locations.  The -d\n"
-"    option causes the shell to forget the remembered location of each NAME.\n"
-"    If the -t option is supplied the full pathname to which each NAME\n"
-"    corresponds is printed.  If multiple NAME arguments are supplied with\n"
-"    -t, the NAME is printed before the hashed full pathname.  The -l option\n"
-"    causes output to be displayed in a format that may be reused as input.\n"
-"    If no arguments are given, information about remembered commands is "
-"displayed."
-msgstr ""
-
-#: builtins.c:608
-msgid ""
-" Display helpful information about builtin commands.  If PATTERN is\n"
-"    specified, gives detailed help on all commands matching PATTERN,\n"
-"    otherwise a list of the builtins is printed.  The -s option\n"
-"    restricts the output for each builtin command matching PATTERN to\n"
-"    a short usage synopsis."
-msgstr ""
-
-#: builtins.c:620
-msgid ""
-" Display the history list with line numbers.  Lines listed with\n"
-"    with a `*' have been modified.  Argument of N says to list only\n"
-"    the last N lines.  The `-c' option causes the history list to be\n"
-"    cleared by deleting all of the entries.  The `-d' option deletes\n"
-"    the history entry at offset OFFSET.  The `-w' option writes out the\n"
-"    current history to the history file;  `-r' means to read the file and\n"
-"    append the contents to the history list instead.  `-a' means\n"
-"    to append history lines from this session to the history file.\n"
-"    Argument `-n' means to read all history lines not already read\n"
-"    from the history file and append them to the history list.\n"
-"    \n"
-"    If FILENAME is given, then that is used as the history file else\n"
-"    if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-"    If the -s option is supplied, the non-option ARGs are appended to\n"
-"    the history list as a single entry.  The -p option means to perform\n"
-"    history expansion on each ARG and display the result, without storing\n"
-"    anything in the history list.\n"
-"    \n"
-"    If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-"    as a format string for strftime(3) to print the time stamp associated\n"
-"    with each displayed history entry.  No time stamps are printed otherwise."
-msgstr ""
-
-#: builtins.c:648
-msgid ""
-" Lists the active jobs.  The -l option lists process id's in addition\n"
-"    to the normal information; the -p option lists process id's only.\n"
-"    If -n is given, only processes that have changed status since the last\n"
-"    notification are printed.  JOBSPEC restricts output to that job.  The\n"
-"    -r and -s options restrict output to running and stopped jobs only,\n"
-"    respectively.  Without options, the status of all active jobs is\n"
-"    printed.  If -x is given, COMMAND is run after all job specifications\n"
-"    that appear in ARGS have been replaced with the process ID of that "
-"job's\n"
-"    process group leader."
-msgstr ""
-
-#: builtins.c:664
-msgid ""
-" By default, removes each JOBSPEC argument from the table of active jobs.\n"
-"    If the -h option is given, the job is not removed from the table, but "
-"is\n"
-"    marked so that SIGHUP is not sent to the job if the shell receives a\n"
-"    SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove "
-"all\n"
-"    jobs from the job table; the -r option means to remove only running jobs."
-msgstr ""
-
-#: builtins.c:675
-msgid ""
-" Send the processes named by PID (or JOBSPEC) the signal SIGSPEC.  If\n"
-"    SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'\n"
-"    lists the signal names; if arguments follow `-l' they are assumed to\n"
-"    be signal numbers for which names should be listed.  Kill is a shell\n"
-"    builtin for two reasons: it allows job IDs to be used instead of\n"
-"    process IDs, and, if you have reached the limit on processes that\n"
-"    you can create, you don't have to start a process to kill another one."
-msgstr ""
-
-#: builtins.c:687
-msgid ""
-" Each ARG is an arithmetic expression to be evaluated.  Evaluation\n"
-"    is done in fixed-width integers with no check for overflow, though\n"
-"    division by 0 is trapped and flagged as an error.  The following\n"
-"    list of operators is grouped into levels of equal-precedence operators.\n"
-"    The levels are listed in order of decreasing precedence.\n"
-"    \n"
-"    \tid++, id--\tvariable post-increment, post-decrement\n"
-"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
-"    \t-, +\t\tunary minus, plus\n"
-"    \t!, ~\t\tlogical and bitwise negation\n"
-"    \t**\t\texponentiation\n"
-"    \t*, /, %\t\tmultiplication, division, remainder\n"
-"    \t+, -\t\taddition, subtraction\n"
-"    \t<<, >>\t\tleft and right bitwise shifts\n"
-"    \t<=, >=, <, >\tcomparison\n"
-"    \t==, !=\t\tequality, inequality\n"
-"    \t&\t\tbitwise AND\n"
-"    \t^\t\tbitwise XOR\n"
-"    \t|\t\tbitwise OR\n"
-"    \t&&\t\tlogical AND\n"
-"    \t||\t\tlogical OR\n"
-"    \texpr ? expr : expr\n"
-"    \t\t\tconditional operator\n"
-"    \t=, *=, /=, %=,\n"
-"    \t+=, -=, <<=, >>=,\n"
-"    \t&=, ^=, |=\tassignment\n"
-"    \n"
-"    Shell variables are allowed as operands.  The name of the variable\n"
-"    is replaced by its value (coerced to a fixed-width integer) within\n"
-"    an expression.  The variable need not have its integer attribute\n"
-"    turned on to be used in an expression.\n"
-"    \n"
-"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
-"    parentheses are evaluated first and may override the precedence\n"
-"    rules above.\n"
-"    \n"
-"    If the last ARG evaluates to 0, let returns 1; 0 is returned\n"
-"    otherwise."
-msgstr ""
-
-#: builtins.c:730
-msgid ""
-" One line is read from the standard input, or from file descriptor FD if "
-"the\n"
-"    -u option is supplied, and the first word is assigned to the first "
-"NAME,\n"
-"    the second word to the second NAME, and so on, with leftover words "
-"assigned\n"
-"    to the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
-"    delimiters.  If no NAMEs are supplied, the line read is stored in the "
-"REPLY\n"
-"    variable.  If the -r option is given, this signifies `raw' input, and\n"
-"    backslash escaping is disabled.  The -d option causes read to continue\n"
-"    until the first character of DELIM is read, rather than newline.  If the "
-"-p\n"
-"    option is supplied, the string PROMPT is output without a trailing "
-"newline\n"
-"    before attempting to read.  If -a is supplied, the words read are "
-"assigned\n"
-"    to sequential indices of ARRAY, starting at zero.  If -e is supplied "
-"and\n"
-"    the shell is interactive, readline is used to obtain the line.  If -n "
-"is\n"
-"    supplied with a non-zero NCHARS argument, read returns after NCHARS\n"
-"    characters have been read.  The -s option causes input coming from a\n"
-"    terminal to not be echoed.\n"
-"    \n"
-"    The -t option causes read to time out and return failure if a complete "
-"line\n"
-"    of input is not read within TIMEOUT seconds.  If the TMOUT variable is "
-"set,\n"
-"    its value is the default timeout.  The return code is zero, unless end-"
-"of-file\n"
-"    is encountered, read times out, or an invalid file descriptor is "
-"supplied as\n"
-"    the argument to -u."
-msgstr ""
-
-#: builtins.c:756
-msgid ""
-" Causes a function to exit with the return value specified by N.  If N\n"
-"    is omitted, the return status is that of the last command."
-msgstr ""
-
-#: builtins.c:763
-msgid ""
-"     -a  Mark variables which are modified or created for export.\n"
-"        -b  Notify of job termination immediately.\n"
-"        -e  Exit immediately if a command exits with a non-zero status.\n"
-"        -f  Disable file name generation (globbing).\n"
-"        -h  Remember the location of commands as they are looked up.\n"
-"        -k  All assignment arguments are placed in the environment for a\n"
-"            command, not just those that precede the command name.\n"
-"        -m  Job control is enabled.\n"
-"        -n  Read commands but do not execute them.\n"
-"        -o option-name\n"
-"            Set the variable corresponding to option-name:\n"
-"                allexport    same as -a\n"
-"                braceexpand  same as -B\n"
-"                emacs        use an emacs-style line editing interface\n"
-"                errexit      same as -e\n"
-"                errtrace     same as -E\n"
-"                functrace    same as -T\n"
-"                hashall      same as -h\n"
-"                histexpand   same as -H\n"
-"                history      enable command history\n"
-"                ignoreeof    the shell will not exit upon reading EOF\n"
-"                interactive-comments\n"
-"                             allow comments to appear in interactive "
-"commands\n"
-"                keyword      same as -k\n"
-"                monitor      same as -m\n"
-"                noclobber    same as -C\n"
-"                noexec       same as -n\n"
-"                noglob       same as -f\n"
-"                nolog        currently accepted but ignored\n"
-"                notify       same as -b\n"
-"                nounset      same as -u\n"
-"                onecmd       same as -t\n"
-"                physical     same as -P\n"
-"                pipefail     the return value of a pipeline is the status "
-"of\n"
-"                             the last command to exit with a non-zero "
-"status,\n"
-"                             or zero if no command exited with a non-zero "
-"status\n"
-"                posix        change the behavior of bash where the default\n"
-"                             operation differs from the 1003.2 standard to\n"
-"                             match the standard\n"
-"                privileged   same as -p\n"
-"                verbose      same as -v\n"
-"                vi           use a vi-style line editing interface\n"
-"                xtrace       same as -x\n"
-"        -p  Turned on whenever the real and effective user ids do not "
-"match.\n"
-"            Disables processing of the $ENV file and importing of shell\n"
-"            functions.  Turning this option off causes the effective uid "
-"and\n"
-"            gid to be set to the real uid and gid.\n"
-"        -t  Exit after reading and executing one command.\n"
-"        -u  Treat unset variables as an error when substituting.\n"
-"        -v  Print shell input lines as they are read.\n"
-"        -x  Print commands and their arguments as they are executed.\n"
-"        -B  the shell will perform brace expansion\n"
-"        -C  If set, disallow existing regular files to be overwritten\n"
-"            by redirection of output.\n"
-"        -E  If set, the ERR trap is inherited by shell functions.\n"
-"        -H  Enable ! style history substitution.  This flag is on\n"
-"            by default when the shell is interactive.\n"
-"        -P  If set, do not follow symbolic links when executing commands\n"
-"            such as cd which change the current directory.\n"
-"        -T  If set, the DEBUG trap is inherited by shell functions.\n"
-"        -   Assign any remaining arguments to the positional parameters.\n"
-"            The -x and -v options are turned off.\n"
-"    \n"
-"    Using + rather than - causes these flags to be turned off.  The\n"
-"    flags can also be used upon invocation of the shell.  The current\n"
-"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
-"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
-"    ARGs are given, all shell variables are printed."
-msgstr ""
-
-#: builtins.c:836
-msgid ""
-" For each NAME, remove the corresponding variable or function.  Given\n"
-"    the `-v', unset will only act on variables.  Given the `-f' flag,\n"
-"    unset will only act on functions.  With neither flag, unset first\n"
-"    tries to unset a variable, and if that fails, then tries to unset a\n"
-"    function.  Some variables cannot be unset; also see readonly."
-msgstr ""
-
-#: builtins.c:846
-msgid ""
-" NAMEs are marked for automatic export to the environment of\n"
-"    subsequently executed commands.  If the -f option is given,\n"
-"    the NAMEs refer to functions.  If no NAMEs are given, or if `-p'\n"
-"    is given, a list of all names that are exported in this shell is\n"
-"    printed.  An argument of `-n' says to remove the export property\n"
-"    from subsequent NAMEs.  An argument of `--' disables further option\n"
-"    processing."
-msgstr ""
-
-#: builtins.c:858
-msgid ""
-" The given NAMEs are marked readonly and the values of these NAMEs may\n"
-"    not be changed by subsequent assignment.  If the -f option is given,\n"
-"    then functions corresponding to the NAMEs are so marked.  If no\n"
-"    arguments are given, or if `-p' is given, a list of all readonly names\n"
-"    is printed.  The `-a' option means to treat each NAME as\n"
-"    an array variable.  An argument of `--' disables further option\n"
-"    processing."
-msgstr ""
-
-#: builtins.c:870
-msgid ""
-" The positional parameters from $N+1 ... are renamed to $1 ...  If N is\n"
-"    not given, it is assumed to be 1."
-msgstr ""
-
-#: builtins.c:877 builtins.c:886
-msgid ""
-" Read and execute commands from FILENAME and return.  The pathnames\n"
-"    in $PATH are used to find the directory containing FILENAME.  If any\n"
-"    ARGUMENTS are supplied, they become the positional parameters when\n"
-"    FILENAME is executed."
-msgstr ""
-
-#: builtins.c:896
-msgid ""
-" Suspend the execution of this shell until it receives a SIGCONT\n"
-"    signal.  The `-f' if specified says not to complain about this\n"
-"    being a login shell if it is; just suspend anyway."
-msgstr ""
-
-#: builtins.c:905
-msgid ""
-" Exits with a status of 0 (true) or 1 (false) depending on\n"
-"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
-"    expressions are often used to examine the status of a file.  There\n"
-"    are string operators as well, and numeric comparison operators.\n"
-"    \n"
-"    File operators:\n"
-"    \n"
-"        -a FILE        True if file exists.\n"
-"        -b FILE        True if file is block special.\n"
-"        -c FILE        True if file is character special.\n"
-"        -d FILE        True if file is a directory.\n"
-"        -e FILE        True if file exists.\n"
-"        -f FILE        True if file exists and is a regular file.\n"
-"        -g FILE        True if file is set-group-id.\n"
-"        -h FILE        True if file is a symbolic link.\n"
-"        -L FILE        True if file is a symbolic link.\n"
-"        -k FILE        True if file has its `sticky' bit set.\n"
-"        -p FILE        True if file is a named pipe.\n"
-"        -r FILE        True if file is readable by you.\n"
-"        -s FILE        True if file exists and is not empty.\n"
-"        -S FILE        True if file is a socket.\n"
-"        -t FD          True if FD is opened on a terminal.\n"
-"        -u FILE        True if the file is set-user-id.\n"
-"        -w FILE        True if the file is writable by you.\n"
-"        -x FILE        True if the file is executable by you.\n"
-"        -O FILE        True if the file is effectively owned by you.\n"
-"        -G FILE        True if the file is effectively owned by your group.\n"
-"        -N FILE        True if the file has been modified since it was last "
-"read.\n"
-"    \n"
-"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
-"                       modification date).\n"
-"    \n"
-"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
-"    \n"
-"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
-"    \n"
-"    String operators:\n"
-"    \n"
-"        -z STRING      True if string is empty.\n"
-"    \n"
-"        -n STRING\n"
-"        STRING         True if string is not empty.\n"
-"    \n"
-"        STRING1 = STRING2\n"
-"                       True if the strings are equal.\n"
-"        STRING1 != STRING2\n"
-"                       True if the strings are not equal.\n"
-"        STRING1 < STRING2\n"
-"                       True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-"        STRING1 > STRING2\n"
-"                       True if STRING1 sorts after STRING2 "
-"lexicographically.\n"
-"    \n"
-"    Other operators:\n"
-"    \n"
-"        -o OPTION      True if the shell option OPTION is enabled.\n"
-"        ! EXPR         True if expr is false.\n"
-"        EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-"        EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-"    \n"
-"        arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
-"                       -lt, -le, -gt, or -ge.\n"
-"    \n"
-"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-"    than ARG2."
-msgstr ""
-
-#: builtins.c:975
-msgid ""
-" This is a synonym for the \"test\" builtin, but the last\n"
-"    argument must be a literal `]', to match the opening `['."
-msgstr ""
-
-#: builtins.c:982
-msgid ""
-" Print the accumulated user and system times for processes run from\n"
-"    the shell."
-msgstr ""
-
-#: builtins.c:989
-msgid ""
-" The command ARG is to be read and executed when the shell receives\n"
-"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
-"    is supplied) or `-', each specified signal is reset to its original\n"
-"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-"    shell and by the commands it invokes.  If a SIGNAL_SPEC is EXIT (0)\n"
-"    the command ARG is executed on exit from the shell.  If a SIGNAL_SPEC\n"
-"    is DEBUG, ARG is executed after every simple command.  If the`-p' "
-"option\n"
-"    is supplied then the trap commands associated with each SIGNAL_SPEC are\n"
-"    displayed.  If no arguments are supplied or if only `-p' is given, trap\n"
-"    prints the list of commands associated with each signal.  Each "
-"SIGNAL_SPEC\n"
-"    is either a signal name in <signal.h> or a signal number.  Signal names\n"
-"    are case insensitive and the SIG prefix is optional.  `trap -l' prints\n"
-"    a list of signal names and their corresponding numbers.  Note that a\n"
-"    signal can be sent to the shell with \"kill -signal $$\"."
-msgstr ""
-
-#: builtins.c:1008
-msgid ""
-" For each NAME, indicate how it would be interpreted if used as a\n"
-"    command name.\n"
-"    \n"
-"    If the -t option is used, `type' outputs a single word which is one of\n"
-"    `alias', `keyword', `function', `builtin', `file' or `', if NAME is an\n"
-"    alias, shell reserved word, shell function, shell builtin, disk file,\n"
-"    or unfound, respectively.\n"
-"    \n"
-"    If the -p flag is used, `type' either returns the name of the disk\n"
-"    file that would be executed, or nothing if `type -t NAME' would not\n"
-"    return `file'.\n"
-"    \n"
-"    If the -a flag is used, `type' displays all of the places that contain\n"
-"    an executable named `file'.  This includes aliases, builtins, and\n"
-"    functions, if and only if the -p flag is not also used.\n"
-"    \n"
-"    The -f flag suppresses shell function lookup.\n"
-"    \n"
-"    The -P flag forces a PATH search for each NAME, even if it is an alias,\n"
-"    builtin, or function, and returns the name of the disk file that would\n"
-"    be executed."
-msgstr ""
-
-#: builtins.c:1035
-msgid ""
-" Ulimit provides control over the resources available to processes\n"
-"    started by the shell, on systems that allow such control.  If an\n"
-"    option is given, it is interpreted as follows:\n"
-"    \n"
-"        -S\tuse the `soft' resource limit\n"
-"        -H\tuse the `hard' resource limit\n"
-"        -a\tall current limits are reported\n"
-"        -c\tthe maximum size of core files created\n"
-"        -d\tthe maximum size of a process's data segment\n"
-"        -f\tthe maximum size of files created by the shell\n"
-"        -i  the maximum number of pending signals\n"
-"        -l\tthe maximum size a process may lock into memory\n"
-"        -m\tthe maximum resident set size\n"
-"        -n\tthe maximum number of open file descriptors\n"
-"        -p\tthe pipe buffer size\n"
-"        -q  the maximum number of bytes in POSIX message queues\n"
-"        -s\tthe maximum stack size\n"
-"        -t\tthe maximum amount of cpu time in seconds\n"
-"        -u\tthe maximum number of user processes\n"
-"        -v\tthe size of virtual memory\n"
-"        -x  the maximum number of file locks\n"
-"    \n"
-"    If LIMIT is given, it is the new value of the specified resource;\n"
-"    the special LIMIT values `soft', `hard', and `unlimited' stand for\n"
-"    the current soft limit, the current hard limit, and no limit, "
-"respectively.\n"
-"    Otherwise, the current value of the specified resource is printed.\n"
-"    If no option is given, then -f is assumed.  Values are in 1024-byte\n"
-"    increments, except for -t, which is in seconds, -p, which is in\n"
-"    increments of 512 bytes, and -u, which is an unscaled number of\n"
-"    processes."
-msgstr ""
-
-#: builtins.c:1071
-msgid ""
-" The user file-creation mask is set to MODE.  If MODE is omitted, or if\n"
-"    `-S' is supplied, the current value of the mask is printed.  The `-S'\n"
-"    option makes the output symbolic; otherwise an octal number is output.\n"
-"    If `-p' is supplied, and MODE is omitted, the output is in a form\n"
-"    that may be used as input.  If MODE begins with a digit, it is\n"
-"    interpreted as an octal number, otherwise it is a symbolic mode string\n"
-"    like that accepted by chmod(1)."
-msgstr ""
-
-#: builtins.c:1084
-msgid ""
-" Wait for the specified process and report its termination status.  If\n"
-"    N is not given, all currently active child processes are waited for,\n"
-"    and the return code is zero.  N may be a process ID or a job\n"
-"    specification; if a job spec is given, all processes in the job's\n"
-"    pipeline are waited for."
-msgstr ""
-
-#: builtins.c:1096
-msgid ""
-" Wait for the specified process and report its termination status.  If\n"
-"    N is not given, all currently active child processes are waited for,\n"
-"    and the return code is zero.  N is a process ID; if it is not given,\n"
-"    all child processes of the shell are waited for."
-msgstr ""
-
-#: builtins.c:1106
-msgid ""
-" The `for' loop executes a sequence of commands for each member in a\n"
-"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
-"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
-"    the COMMANDS are executed."
-msgstr ""
-
-#: builtins.c:1115
-msgid ""
-" Equivalent to\n"
-"    \t(( EXP1 ))\n"
-"    \twhile (( EXP2 )); do\n"
-"    \t\tCOMMANDS\n"
-"    \t\t(( EXP3 ))\n"
-"    \tdone\n"
-"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
-"    omitted, it behaves as if it evaluates to 1."
-msgstr ""
-
-#: builtins.c:1128
-msgid ""
-" The WORDS are expanded, generating a list of words.  The\n"
-"    set of expanded words is printed on the standard error, each\n"
-"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
-"    is assumed.  The PS3 prompt is then displayed and a line read\n"
-"    from the standard input.  If the line consists of the number\n"
-"    corresponding to one of the displayed words, then NAME is set\n"
-"    to that word.  If the line is empty, WORDS and the prompt are\n"
-"    redisplayed.  If EOF is read, the command completes.  Any other\n"
-"    value read causes NAME to be set to null.  The line read is saved\n"
-"    in the variable REPLY.  COMMANDS are executed after each selection\n"
-"    until a break command is executed."
-msgstr ""
-
-#: builtins.c:1144
-msgid ""
-" Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-"    and system CPU time spent executing PIPELINE when it terminates.\n"
-"    The return status is the return status of PIPELINE.  The `-p' option\n"
-"    prints the timing summary in a slightly different format.  This uses\n"
-"    the value of the TIMEFORMAT variable as the output format."
-msgstr ""
-
-#: builtins.c:1154
-msgid ""
-" Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
-"    `|' is used to separate multiple patterns."
-msgstr ""
-
-#: builtins.c:1161
-msgid ""
-" The `if COMMANDS' list is executed.  If its exit status is zero, then the\n"
-"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
-"is\n"
-"    executed in turn, and if its exit status is zero, the corresponding\n"
-"    `then COMMANDS' list is executed and the if command completes.  "
-"Otherwise,\n"
-"    the `else COMMANDS' list is executed, if present.  The exit status of "
-"the\n"
-"    entire construct is the exit status of the last command executed, or "
-"zero\n"
-"    if no condition tested true."
-msgstr ""
-
-#: builtins.c:1173
-msgid ""
-" Expand and execute COMMANDS as long as the final command in the\n"
-"    `while' COMMANDS has an exit status of zero."
-msgstr ""
-
-#: builtins.c:1180
-msgid ""
-" Expand and execute COMMANDS as long as the final command in the\n"
-"    `until' COMMANDS has an exit status which is not zero."
-msgstr ""
-
-#: builtins.c:1187
-msgid ""
-" Create a simple command invoked by NAME which runs COMMANDS.\n"
-"    Arguments on the command line along with NAME are passed to the\n"
-"    function as $0 .. $n."
-msgstr ""
-
-#: builtins.c:1195
-msgid ""
-" Run a set of commands in a group.  This is one way to redirect an\n"
-"    entire set of commands."
-msgstr ""
-
-#: builtins.c:1202
-msgid ""
-" Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
-"    stopped or background job.  JOB_SPEC can specify either a job name\n"
-"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
-"    the background, as if the job specification had been supplied as an\n"
-"    argument to `bg'."
-msgstr ""
-
-#: builtins.c:1212
-msgid ""
-" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-"    evaluation.  Equivalent to \"let EXPRESSION\"."
-msgstr ""
-
-#: builtins.c:1219
-msgid ""
-" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
-"    expression EXPRESSION.  Expressions are composed of the same primaries "
-"used\n"
-"    by the `test' builtin, and may be combined using the following "
-"operators\n"
-"    \n"
-"    \t( EXPRESSION )\tReturns the value of EXPRESSION\n"
-"    \t! EXPRESSION\tTrue if EXPRESSION is false; else false\n"
-"    \tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-"    \tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-"    \n"
-"    When the `==' and `!=' operators are used, the string to the right of "
-"the\n"
-"    operator is used as a pattern and pattern matching is performed.  The\n"
-"    && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-"    determine the expression's value."
-msgstr ""
-
-#: builtins.c:1237
-msgid ""
-" BASH_VERSION    Version information for this Bash.\n"
-"    CDPATH          A colon-separated list of directories to search\n"
-"    \t\tfor directries given as arguments to `cd'.\n"
-"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-"    \t\tbe ignored by pathname expansion.\n"
-"    HISTFILE        The name of the file where your command history is "
-"stored.\n"
-"    HISTFILESIZE    The maximum number of lines this file can contain.\n"
-"    HISTSIZE        The maximum number of history lines that a running\n"
-"    \t\tshell can access.\n"
-"    HOME            The complete pathname to your login directory.\n"
-"    HOSTNAME\tThe name of the current host.\n"
-"    HOSTTYPE        The type of CPU this version of Bash is running under.\n"
-"    IGNOREEOF       Controls the action of the shell on receipt of an EOF\n"
-"    \t\tcharacter as the sole input.  If set, then the value\n"
-"    \t\tof it is the number of EOF characters that can be seen\n"
-"    \t\tin a row on an empty line before the shell will exit\n"
-"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
-"    MACHTYPE\tA string describing the current system Bash is running on.\n"
-"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-"    \t\tfor new mail.\n"
-"    OSTYPE\t\tThe version of Unix this version of Bash is running on.\n"
-"    PATH            A colon-separated list of directories to search when\n"
-"    \t\tlooking for commands.\n"
-"    PROMPT_COMMAND  A command to be executed before the printing of each\n"
-"    \t\tprimary prompt.\n"
-"    PS1             The primary prompt string.\n"
-"    PS2             The secondary prompt string.\n"
-"    PWD\t\tThe full pathname of the current directory.\n"
-"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-"    TERM            The name of the current terminal type.\n"
-"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-"    \t\t`time' reserved word.\n"
-"    auto_resume     Non-null means a command word appearing on a line by\n"
-"    \t\titself is first looked for in the list of currently\n"
-"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
-"    \t\tA value of `exact' means that the command word must\n"
-"    \t\texactly match a command in the list of stopped jobs.  A\n"
-"    \t\tvalue of `substring' means that the command word must\n"
-"    \t\tmatch a substring of the job.  Any other value means that\n"
-"    \t\tthe command must be a prefix of a stopped job.\n"
-"    histchars       Characters controlling history expansion and quick\n"
-"    \t\tsubstitution.  The first character is the history\n"
-"    \t\tsubstitution character, usually `!'.  The second is\n"
-"    \t\tthe `quick substitution' character, usually `^'.  The\n"
-"    \t\tthird is the `history comment' character, usually `#'.\n"
-"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-"    \t\tcommands should be saved on the history list.\n"
-msgstr ""
-
-#: builtins.c:1292
-msgid ""
-" Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"    -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"    -n\tsuppress the normal change of directory when adding directories\n"
-"    \tto the stack, so only the stack is manipulated.\n"
-"    \n"
-"    dir\tadds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    You can see the directory stack with the `dirs' command."
-msgstr ""
-
-#: builtins.c:1318
-msgid ""
-" Removes entries from the directory stack.  With no arguments,\n"
-"    removes the top directory from the stack, and cd's to the new\n"
-"    top directory.\n"
-"    \n"
-"    +N\tremoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"    -N\tremoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    -n\tsuppress the normal change of directory when removing directories\n"
-"    \tfrom the stack, so only the stack is manipulated.\n"
-"    \n"
-"    You can see the directory stack with the `dirs' command."
-msgstr ""
-
-#: builtins.c:1341
-msgid ""
-" Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    The -l flag specifies that `dirs' should not print shorthand versions\n"
-"    of directories which are relative to your home directory.  This means\n"
-"    that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag\n"
-"    causes `dirs' to print the directory stack with one entry per line,\n"
-"    prepending the directory name with its position in the stack.  The -p\n"
-"    flag does the same thing, but the stack position is not prepended.\n"
-"    The -c flag clears the directory stack by deleting all of the elements.\n"
-"    \n"
-"    +N\tdisplays the Nth entry counting from the left of the list shown by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"    -N\tdisplays the Nth entry counting from the right of the list shown by\n"
-"    \tdirs when invoked without options, starting with zero."
-msgstr ""
-
-#: builtins.c:1364
-msgid ""
-" Toggle the values of variables controlling optional behavior.\n"
-"    The -s flag means to enable (set) each OPTNAME; the -u flag\n"
-"    unsets each OPTNAME.  The -q flag suppresses output; the exit\n"
-"    status indicates whether each OPTNAME is set or unset.  The -o\n"
-"    option restricts the OPTNAMEs to those defined for use with\n"
-"    `set -o'.  With no options, or with the -p option, a list of all\n"
-"    settable options is displayed, with an indication of whether or\n"
-"    not each is set."
-msgstr ""
-
-#: builtins.c:1377
-msgid ""
-" printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT\n"
-"    is a character string which contains three types of objects: plain\n"
-"    characters, which are simply copied to standard output, character "
-"escape\n"
-"    sequences which are converted and copied to the standard output, and\n"
-"    format specifications, each of which causes printing of the next "
-"successive\n"
-"    argument.  In addition to the standard printf(1) formats, %b means to\n"
-"    expand backslash escape sequences in the corresponding argument, and %q\n"
-"    means to quote the argument in a way that can be reused as shell input.\n"
-"    If the -v option is supplied, the output is placed into the value of "
-"the\n"
-"    shell variable VAR rather than being sent to the standard output."
-msgstr ""
-
-#: builtins.c:1393
-msgid ""
-" For each NAME, specify how arguments are to be completed.\n"
-"    If the -p option is supplied, or if no options are supplied, existing\n"
-"    completion specifications are printed in a way that allows them to be\n"
-"    reused as input.  The -r option removes a completion specification for\n"
-"    each NAME, or, if no NAMEs are supplied, all completion specifications."
-msgstr ""
-
-#: builtins.c:1405
-msgid ""
-" Display the possible completions depending on the options.  Intended\n"
-"    to be used from within a shell function generating possible "
-"completions.\n"
-"    If the optional WORD argument is supplied, matches against WORD are\n"
-"    generated."
-msgstr ""
diff --git a/po/bash-3.2.pot b/po/bash-3.2.pot
deleted file mode 100644 (file)
index 4a79cc4..0000000
+++ /dev/null
@@ -1,2578 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2006-10-23 17:20-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: arrayfunc.c:48
-msgid "bad array subscript"
-msgstr ""
-
-#: arrayfunc.c:362
-#, c-format
-msgid "%s: cannot assign to non-numeric index"
-msgstr ""
-
-#: bashhist.c:331
-#, c-format
-msgid "%s: cannot create: %s"
-msgstr ""
-
-#: bashline.c:3030
-msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-
-#: bashline.c:3079
-#, c-format
-msgid "%s: first non-whitespace character is not `\"'"
-msgstr ""
-
-#: bashline.c:3108
-#, c-format
-msgid "no closing `%c' in %s"
-msgstr ""
-
-#: bashline.c:3142
-#, c-format
-msgid "%s: missing colon separator"
-msgstr ""
-
-#: builtins/bind.def:194
-#, c-format
-msgid "`%s': invalid keymap name"
-msgstr ""
-
-#: builtins/bind.def:233
-#, c-format
-msgid "%s: cannot read: %s"
-msgstr ""
-
-#: builtins/bind.def:248
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr ""
-
-#: builtins/bind.def:283
-#, c-format
-msgid "`%s': unknown function name"
-msgstr ""
-
-#: builtins/bind.def:291
-#, c-format
-msgid "%s is not bound to any keys.\n"
-msgstr ""
-
-#: builtins/bind.def:295
-#, c-format
-msgid "%s can be invoked via "
-msgstr ""
-
-#: builtins/break.def:128
-msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr ""
-
-#: builtins/caller.def:131
-msgid "Returns the context of the current subroutine call."
-msgstr ""
-
-#: builtins/caller.def:132 builtins/caller.def:136 builtins/pushd.def:666
-#: builtins/pushd.def:674 builtins/pushd.def:677 builtins/pushd.def:687
-#: builtins/pushd.def:691 builtins/pushd.def:695 builtins/pushd.def:698
-#: builtins/pushd.def:701 builtins/pushd.def:710 builtins/pushd.def:714
-#: builtins/pushd.def:718 builtins/pushd.def:721
-msgid " "
-msgstr ""
-
-#: builtins/caller.def:133
-msgid "Without EXPR, returns returns \"$line $filename\".  With EXPR,"
-msgstr ""
-
-#: builtins/caller.def:134
-msgid "returns \"$line $subroutine $filename\"; this extra information"
-msgstr ""
-
-#: builtins/caller.def:135
-msgid "can be used used to provide a stack trace."
-msgstr ""
-
-#: builtins/caller.def:137
-msgid "The value of EXPR indicates how many call frames to go back before the"
-msgstr ""
-
-#: builtins/caller.def:138
-msgid "current one; the top frame is frame 0."
-msgstr ""
-
-#: builtins/cd.def:204
-msgid "HOME not set"
-msgstr ""
-
-#: builtins/cd.def:216
-msgid "OLDPWD not set"
-msgstr ""
-
-#: builtins/common.c:133 test.c:822
-msgid "too many arguments"
-msgstr ""
-
-#: builtins/common.c:157 shell.c:474 shell.c:748
-#, c-format
-msgid "%s: option requires an argument"
-msgstr ""
-
-#: builtins/common.c:164
-#, c-format
-msgid "%s: numeric argument required"
-msgstr ""
-
-#: builtins/common.c:171
-#, c-format
-msgid "%s: not found"
-msgstr ""
-
-#: builtins/common.c:180 shell.c:761
-#, c-format
-msgid "%s: invalid option"
-msgstr ""
-
-#: builtins/common.c:187
-#, c-format
-msgid "%s: invalid option name"
-msgstr ""
-
-#: builtins/common.c:194 general.c:230 general.c:235
-#, c-format
-msgid "`%s': not a valid identifier"
-msgstr ""
-
-#: builtins/common.c:201
-#, c-format
-msgid "%s: invalid number"
-msgstr ""
-
-#: builtins/common.c:208
-#, c-format
-msgid "%s: invalid signal specification"
-msgstr ""
-
-#: builtins/common.c:215
-#, c-format
-msgid "`%s': not a pid or valid job spec"
-msgstr ""
-
-#: builtins/common.c:222 error.c:451
-#, c-format
-msgid "%s: readonly variable"
-msgstr ""
-
-#: builtins/common.c:230
-#, c-format
-msgid "%s: %s out of range"
-msgstr ""
-
-#: builtins/common.c:230 builtins/common.c:232
-msgid "argument"
-msgstr ""
-
-#: builtins/common.c:232
-#, c-format
-msgid "%s out of range"
-msgstr ""
-
-#: builtins/common.c:240
-#, c-format
-msgid "%s: no such job"
-msgstr ""
-
-#: builtins/common.c:248
-#, c-format
-msgid "%s: no job control"
-msgstr ""
-
-#: builtins/common.c:250
-msgid "no job control"
-msgstr ""
-
-#: builtins/common.c:260
-#, c-format
-msgid "%s: restricted"
-msgstr ""
-
-#: builtins/common.c:262
-msgid "restricted"
-msgstr ""
-
-#: builtins/common.c:270
-#, c-format
-msgid "%s: not a shell builtin"
-msgstr ""
-
-#: builtins/common.c:276
-#, c-format
-msgid "write error: %s"
-msgstr ""
-
-#: builtins/common.c:481
-#, c-format
-msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr ""
-
-#: builtins/common.c:547 builtins/common.c:549
-#, c-format
-msgid "%s: ambiguous job spec"
-msgstr ""
-
-#: builtins/complete.def:251
-#, c-format
-msgid "%s: invalid action name"
-msgstr ""
-
-#: builtins/complete.def:381 builtins/complete.def:524
-#, c-format
-msgid "%s: no completion specification"
-msgstr ""
-
-#: builtins/complete.def:571
-msgid "warning: -F option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:573
-msgid "warning: -C option may not work as you expect"
-msgstr ""
-
-#: builtins/declare.def:106
-msgid "can only be used in a function"
-msgstr ""
-
-#: builtins/declare.def:306
-msgid "cannot use `-f' to make functions"
-msgstr ""
-
-#: builtins/declare.def:318 execute_cmd.c:4073
-#, c-format
-msgid "%s: readonly function"
-msgstr ""
-
-#: builtins/declare.def:406
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr ""
-
-#: builtins/enable.def:128 builtins/enable.def:136
-msgid "dynamic loading not available"
-msgstr ""
-
-#: builtins/enable.def:303
-#, c-format
-msgid "cannot open shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:326
-#, c-format
-msgid "cannot find %s in shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:450
-#, c-format
-msgid "%s: not dynamically loaded"
-msgstr ""
-
-#: builtins/enable.def:465
-#, c-format
-msgid "%s: cannot delete: %s"
-msgstr ""
-
-#: builtins/evalfile.c:129 execute_cmd.c:3930 shell.c:1409
-#, c-format
-msgid "%s: is a directory"
-msgstr ""
-
-#: builtins/evalfile.c:134
-#, c-format
-msgid "%s: not a regular file"
-msgstr ""
-
-#: builtins/evalfile.c:142
-#, c-format
-msgid "%s: file is too large"
-msgstr ""
-
-#: builtins/exec.def:205
-#, c-format
-msgid "%s: cannot execute: %s"
-msgstr ""
-
-#: builtins/exit.def:83
-msgid "not login shell: use `exit'"
-msgstr ""
-
-#: builtins/exit.def:111
-msgid "There are stopped jobs.\n"
-msgstr ""
-
-#: builtins/fc.def:258
-msgid "no command found"
-msgstr ""
-
-#: builtins/fc.def:328
-msgid "history specification"
-msgstr ""
-
-#: builtins/fc.def:349
-#, c-format
-msgid "%s: cannot open temp file: %s"
-msgstr ""
-
-#: builtins/fg_bg.def:149
-#, c-format
-msgid "job %d started without job control"
-msgstr ""
-
-#: builtins/getopt.c:109
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr ""
-
-#: builtins/getopt.c:110
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr ""
-
-#: builtins/hash.def:84
-msgid "hashing disabled"
-msgstr ""
-
-#: builtins/hash.def:130
-#, c-format
-msgid "%s: hash table empty\n"
-msgstr ""
-
-#: builtins/help.def:108
-msgid "Shell commands matching keywords `"
-msgstr ""
-
-#: builtins/help.def:110
-msgid "Shell commands matching keyword `"
-msgstr ""
-
-#: builtins/help.def:138
-#, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-
-#: builtins/help.def:164
-#, c-format
-msgid "%s: cannot open: %s"
-msgstr ""
-
-#: builtins/help.def:182
-msgid ""
-"These shell commands are defined internally.  Type `help' to see this list.\n"
-"Type `help name' to find out more about the function `name'.\n"
-"Use `info bash' to find out more about the shell in general.\n"
-"Use `man -k' or `info' to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-msgstr ""
-
-#: builtins/history.def:150
-msgid "cannot use more than one of -anrw"
-msgstr ""
-
-#: builtins/history.def:182
-msgid "history position"
-msgstr ""
-
-#: builtins/history.def:400
-#, c-format
-msgid "%s: history expansion failed"
-msgstr ""
-
-#: builtins/jobs.def:99
-msgid "no other options allowed with `-x'"
-msgstr ""
-
-#: builtins/kill.def:187
-#, c-format
-msgid "%s: arguments must be process or job IDs"
-msgstr ""
-
-#: builtins/kill.def:250
-msgid "Unknown error"
-msgstr ""
-
-#: builtins/let.def:94 builtins/let.def:119 expr.c:498 expr.c:513
-msgid "expression expected"
-msgstr ""
-
-#: builtins/printf.def:339
-#, c-format
-msgid "`%s': missing format character"
-msgstr ""
-
-#: builtins/printf.def:516
-#, c-format
-msgid "`%c': invalid format character"
-msgstr ""
-
-#: builtins/printf.def:722
-msgid "missing hex digit for \\x"
-msgstr ""
-
-#: builtins/pushd.def:175
-msgid "no other directory"
-msgstr ""
-
-#: builtins/pushd.def:442
-msgid "<no current directory>"
-msgstr ""
-
-#: builtins/pushd.def:663
-msgid "Display the list of currently remembered directories.  Directories"
-msgstr ""
-
-#: builtins/pushd.def:664
-msgid "find their way onto the list with the `pushd' command; you can get"
-msgstr ""
-
-#: builtins/pushd.def:665
-msgid "back up through the list with the `popd' command."
-msgstr ""
-
-#: builtins/pushd.def:667
-msgid "The -l flag specifies that `dirs' should not print shorthand versions"
-msgstr ""
-
-#: builtins/pushd.def:668
-msgid "of directories which are relative to your home directory.  This means"
-msgstr ""
-
-#: builtins/pushd.def:669
-msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
-msgstr ""
-
-#: builtins/pushd.def:670
-msgid "causes `dirs' to print the directory stack with one entry per line,"
-msgstr ""
-
-#: builtins/pushd.def:671
-msgid "prepending the directory name with its position in the stack.  The -p"
-msgstr ""
-
-#: builtins/pushd.def:672
-msgid "flag does the same thing, but the stack position is not prepended."
-msgstr ""
-
-#: builtins/pushd.def:673
-msgid "The -c flag clears the directory stack by deleting all of the elements."
-msgstr ""
-
-#: builtins/pushd.def:675
-msgid "+N   displays the Nth entry counting from the left of the list shown by"
-msgstr ""
-
-#: builtins/pushd.def:676 builtins/pushd.def:679
-msgid "     dirs when invoked without options, starting with zero."
-msgstr ""
-
-#: builtins/pushd.def:678
-msgid ""
-"-N   displays the Nth entry counting from the right of the list shown by"
-msgstr ""
-
-#: builtins/pushd.def:684
-msgid "Adds a directory to the top of the directory stack, or rotates"
-msgstr ""
-
-#: builtins/pushd.def:685
-msgid "the stack, making the new top of the stack the current working"
-msgstr ""
-
-#: builtins/pushd.def:686
-msgid "directory.  With no arguments, exchanges the top two directories."
-msgstr ""
-
-#: builtins/pushd.def:688
-msgid "+N   Rotates the stack so that the Nth directory (counting"
-msgstr ""
-
-#: builtins/pushd.def:689
-msgid "     from the left of the list shown by `dirs', starting with"
-msgstr ""
-
-#: builtins/pushd.def:690 builtins/pushd.def:694
-msgid "     zero) is at the top."
-msgstr ""
-
-#: builtins/pushd.def:692
-msgid "-N   Rotates the stack so that the Nth directory (counting"
-msgstr ""
-
-#: builtins/pushd.def:693
-msgid "     from the right of the list shown by `dirs', starting with"
-msgstr ""
-
-#: builtins/pushd.def:696
-msgid "-n   suppress the normal change of directory when adding directories"
-msgstr ""
-
-#: builtins/pushd.def:697
-msgid "     to the stack, so only the stack is manipulated."
-msgstr ""
-
-#: builtins/pushd.def:699
-msgid "dir  adds DIR to the directory stack at the top, making it the"
-msgstr ""
-
-#: builtins/pushd.def:700
-msgid "     new current working directory."
-msgstr ""
-
-#: builtins/pushd.def:702 builtins/pushd.def:722
-msgid "You can see the directory stack with the `dirs' command."
-msgstr ""
-
-#: builtins/pushd.def:707
-msgid "Removes entries from the directory stack.  With no arguments,"
-msgstr ""
-
-#: builtins/pushd.def:708
-msgid "removes the top directory from the stack, and cd's to the new"
-msgstr ""
-
-#: builtins/pushd.def:709
-msgid "top directory."
-msgstr ""
-
-#: builtins/pushd.def:711
-msgid "+N   removes the Nth entry counting from the left of the list"
-msgstr ""
-
-#: builtins/pushd.def:712
-msgid "     shown by `dirs', starting with zero.  For example: `popd +0'"
-msgstr ""
-
-#: builtins/pushd.def:713
-msgid "     removes the first directory, `popd +1' the second."
-msgstr ""
-
-#: builtins/pushd.def:715
-msgid "-N   removes the Nth entry counting from the right of the list"
-msgstr ""
-
-#: builtins/pushd.def:716
-msgid "     shown by `dirs', starting with zero.  For example: `popd -0'"
-msgstr ""
-
-#: builtins/pushd.def:717
-msgid "     removes the last directory, `popd -1' the next to last."
-msgstr ""
-
-#: builtins/pushd.def:719
-msgid "-n   suppress the normal change of directory when removing directories"
-msgstr ""
-
-#: builtins/pushd.def:720
-msgid "     from the stack, so only the stack is manipulated."
-msgstr ""
-
-#: builtins/read.def:210
-#, c-format
-msgid "%s: invalid timeout specification"
-msgstr ""
-
-#: builtins/read.def:233
-#, c-format
-msgid "%s: invalid file descriptor specification"
-msgstr ""
-
-#: builtins/read.def:240
-#, c-format
-msgid "%d: invalid file descriptor: %s"
-msgstr ""
-
-#: builtins/read.def:478
-#, c-format
-msgid "read error: %d: %s"
-msgstr ""
-
-#: builtins/return.def:63
-msgid "can only `return' from a function or sourced script"
-msgstr ""
-
-#: builtins/set.def:744
-msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-
-#: builtins/set.def:781
-#, c-format
-msgid "%s: cannot unset"
-msgstr ""
-
-#: builtins/set.def:788
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr ""
-
-#: builtins/set.def:799
-#, c-format
-msgid "%s: not an array variable"
-msgstr ""
-
-#: builtins/setattr.def:166
-#, c-format
-msgid "%s: not a function"
-msgstr ""
-
-#: builtins/shift.def:66 builtins/shift.def:72
-msgid "shift count"
-msgstr ""
-
-#: builtins/shopt.def:227
-msgid "cannot set and unset shell options simultaneously"
-msgstr ""
-
-#: builtins/shopt.def:292
-#, c-format
-msgid "%s: invalid shell option name"
-msgstr ""
-
-#: builtins/source.def:115
-msgid "filename argument required"
-msgstr ""
-
-#: builtins/source.def:135
-#, c-format
-msgid "%s: file not found"
-msgstr ""
-
-#: builtins/suspend.def:95
-msgid "cannot suspend"
-msgstr ""
-
-#: builtins/suspend.def:105
-msgid "cannot suspend a login shell"
-msgstr ""
-
-#: builtins/type.def:232
-#, c-format
-msgid "%s is aliased to `%s'\n"
-msgstr ""
-
-#: builtins/type.def:253
-#, c-format
-msgid "%s is a shell keyword\n"
-msgstr ""
-
-#: builtins/type.def:273
-#, c-format
-msgid "%s is a function\n"
-msgstr ""
-
-#: builtins/type.def:298
-#, c-format
-msgid "%s is a shell builtin\n"
-msgstr ""
-
-#: builtins/type.def:319
-#, c-format
-msgid "%s is %s\n"
-msgstr ""
-
-#: builtins/type.def:339
-#, c-format
-msgid "%s is hashed (%s)\n"
-msgstr ""
-
-#: builtins/ulimit.def:352
-#, c-format
-msgid "%s: invalid limit argument"
-msgstr ""
-
-#: builtins/ulimit.def:378
-#, c-format
-msgid "`%c': bad command"
-msgstr ""
-
-#: builtins/ulimit.def:407
-#, c-format
-msgid "%s: cannot get limit: %s"
-msgstr ""
-
-#: builtins/ulimit.def:445
-#, c-format
-msgid "%s: cannot modify limit: %s"
-msgstr ""
-
-#: builtins/umask.def:112
-msgid "octal number"
-msgstr ""
-
-#: builtins/umask.def:226
-#, c-format
-msgid "`%c': invalid symbolic mode operator"
-msgstr ""
-
-#: builtins/umask.def:281
-#, c-format
-msgid "`%c': invalid symbolic mode character"
-msgstr ""
-
-#: error.c:163
-#, c-format
-msgid "last command: %s\n"
-msgstr ""
-
-#: error.c:171
-msgid "Aborting..."
-msgstr ""
-
-#: error.c:258
-#, c-format
-msgid "%s: warning: "
-msgstr ""
-
-#: error.c:403
-msgid "unknown command error"
-msgstr ""
-
-#: error.c:404
-msgid "bad command type"
-msgstr ""
-
-#: error.c:405
-msgid "bad connector"
-msgstr ""
-
-#: error.c:406
-msgid "bad jump"
-msgstr ""
-
-#: error.c:444
-#, c-format
-msgid "%s: unbound variable"
-msgstr ""
-
-#: eval.c:176
-msgid "\atimed out waiting for input: auto-logout\n"
-msgstr ""
-
-#: execute_cmd.c:474
-#, c-format
-msgid "cannot redirect standard input from /dev/null: %s"
-msgstr ""
-
-#: execute_cmd.c:1058
-#, c-format
-msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr ""
-
-#: execute_cmd.c:3629
-#, c-format
-msgid "%s: restricted: cannot specify `/' in command names"
-msgstr ""
-
-#: execute_cmd.c:3717
-#, c-format
-msgid "%s: command not found"
-msgstr ""
-
-#: execute_cmd.c:3963
-#, c-format
-msgid "%s: %s: bad interpreter"
-msgstr ""
-
-#: execute_cmd.c:4000
-#, c-format
-msgid "%s: cannot execute binary file"
-msgstr ""
-
-#: execute_cmd.c:4112
-#, c-format
-msgid "cannot duplicate fd %d to fd %d"
-msgstr ""
-
-#: expr.c:241
-msgid "expression recursion level exceeded"
-msgstr ""
-
-#: expr.c:265
-msgid "recursion stack underflow"
-msgstr ""
-
-#: expr.c:376
-msgid "syntax error in expression"
-msgstr ""
-
-#: expr.c:416
-msgid "attempted assignment to non-variable"
-msgstr ""
-
-#: expr.c:437 expr.c:442 expr.c:752
-msgid "division by 0"
-msgstr ""
-
-#: expr.c:468
-msgid "bug: bad expassign token"
-msgstr ""
-
-#: expr.c:510
-msgid "`:' expected for conditional expression"
-msgstr ""
-
-#: expr.c:777
-msgid "exponent less than 0"
-msgstr ""
-
-#: expr.c:822
-msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
-
-#: expr.c:850
-msgid "missing `)'"
-msgstr ""
-
-#: expr.c:893 expr.c:1171
-msgid "syntax error: operand expected"
-msgstr ""
-
-#: expr.c:1173
-msgid "syntax error: invalid arithmetic operator"
-msgstr ""
-
-#: expr.c:1251
-msgid "invalid number"
-msgstr ""
-
-#: expr.c:1255
-msgid "invalid arithmetic base"
-msgstr ""
-
-#: expr.c:1275
-msgid "value too great for base"
-msgstr ""
-
-#: general.c:61
-msgid "getcwd: cannot access parent directories"
-msgstr ""
-
-#: input.c:237
-#, c-format
-msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr ""
-
-#: input.c:245
-#, c-format
-msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr ""
-
-#: jobs.c:876
-#, c-format
-msgid "forked pid %d appears in running job %d"
-msgstr ""
-
-#: jobs.c:983
-#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr ""
-
-#: jobs.c:1378
-#, c-format
-msgid "describe_pid: %ld: no such pid"
-msgstr ""
-
-#: jobs.c:2061 nojobs.c:575
-#, c-format
-msgid "wait: pid %ld is not a child of this shell"
-msgstr ""
-
-#: jobs.c:2265
-#, c-format
-msgid "wait_for: No record of process %ld"
-msgstr ""
-
-#: jobs.c:2524
-#, c-format
-msgid "wait_for_job: job %d is stopped"
-msgstr ""
-
-#: jobs.c:2746
-#, c-format
-msgid "%s: job has terminated"
-msgstr ""
-
-#: jobs.c:2755
-#, c-format
-msgid "%s: job %d already in background"
-msgstr ""
-
-#: jobs.c:3546
-msgid "no job control in this shell"
-msgstr ""
-
-#: lib/malloc/malloc.c:298
-#, c-format
-msgid "malloc: failed assertion: %s\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:314
-#, c-format
-msgid ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:799
-msgid "malloc: block on free list clobbered"
-msgstr ""
-
-#: lib/malloc/malloc.c:876
-msgid "free: called with already freed block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:879
-msgid "free: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:898
-msgid "free: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:904
-msgid "free: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/malloc.c:1003
-msgid "realloc: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:1018
-msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:1024
-msgid "realloc: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/table.c:176
-msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
-
-#: lib/malloc/table.c:183
-#, c-format
-msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
-
-#: lib/malloc/table.c:219
-#, c-format
-msgid "register_free: %p already in table as free?\n"
-msgstr ""
-
-#: lib/malloc/watch.c:46
-msgid "allocated"
-msgstr ""
-
-#: lib/malloc/watch.c:48
-msgid "freed"
-msgstr ""
-
-#: lib/malloc/watch.c:50
-msgid "requesting resize"
-msgstr ""
-
-#: lib/malloc/watch.c:52
-msgid "just resized"
-msgstr ""
-
-#: lib/malloc/watch.c:54
-msgid "bug: unknown operation"
-msgstr ""
-
-#: lib/malloc/watch.c:56
-#, c-format
-msgid "malloc: watch alert: %p %s "
-msgstr ""
-
-#: lib/sh/fmtulong.c:101
-msgid "invalid base"
-msgstr ""
-
-#: lib/sh/netopen.c:168
-#, c-format
-msgid "%s: host unknown"
-msgstr ""
-
-#: lib/sh/netopen.c:175
-#, c-format
-msgid "%s: invalid service"
-msgstr ""
-
-#: lib/sh/netopen.c:306
-#, c-format
-msgid "%s: bad network path specification"
-msgstr ""
-
-#: lib/sh/netopen.c:346
-msgid "network operations not supported"
-msgstr ""
-
-#: mailcheck.c:386
-msgid "You have mail in $_"
-msgstr ""
-
-#: mailcheck.c:411
-msgid "You have new mail in $_"
-msgstr ""
-
-#: mailcheck.c:427
-#, c-format
-msgid "The mail in %s has been read\n"
-msgstr ""
-
-#: make_cmd.c:322
-msgid "syntax error: arithmetic expression required"
-msgstr ""
-
-#: make_cmd.c:324
-msgid "syntax error: `;' unexpected"
-msgstr ""
-
-#: make_cmd.c:325
-#, c-format
-msgid "syntax error: `((%s))'"
-msgstr ""
-
-#: make_cmd.c:566
-#, c-format
-msgid "make_here_document: bad instruction type %d"
-msgstr ""
-
-#: make_cmd.c:741
-#, c-format
-msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
-
-#: parse.y:2759
-#, c-format
-msgid "unexpected EOF while looking for matching `%c'"
-msgstr ""
-
-#: parse.y:3071
-msgid "unexpected EOF while looking for `]]'"
-msgstr ""
-
-#: parse.y:3076
-#, c-format
-msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr ""
-
-#: parse.y:3080
-msgid "syntax error in conditional expression"
-msgstr ""
-
-#: parse.y:3158
-#, c-format
-msgid "unexpected token `%s', expected `)'"
-msgstr ""
-
-#: parse.y:3162
-msgid "expected `)'"
-msgstr ""
-
-#: parse.y:3190
-#, c-format
-msgid "unexpected argument `%s' to conditional unary operator"
-msgstr ""
-
-#: parse.y:3194
-msgid "unexpected argument to conditional unary operator"
-msgstr ""
-
-#: parse.y:3234
-#, c-format
-msgid "unexpected token `%s', conditional binary operator expected"
-msgstr ""
-
-#: parse.y:3238
-msgid "conditional binary operator expected"
-msgstr ""
-
-#: parse.y:3255
-#, c-format
-msgid "unexpected argument `%s' to conditional binary operator"
-msgstr ""
-
-#: parse.y:3259
-msgid "unexpected argument to conditional binary operator"
-msgstr ""
-
-#: parse.y:3270
-#, c-format
-msgid "unexpected token `%c' in conditional command"
-msgstr ""
-
-#: parse.y:3273
-#, c-format
-msgid "unexpected token `%s' in conditional command"
-msgstr ""
-
-#: parse.y:3277
-#, c-format
-msgid "unexpected token %d in conditional command"
-msgstr ""
-
-#: parse.y:4523
-#, c-format
-msgid "syntax error near unexpected token `%s'"
-msgstr ""
-
-#: parse.y:4541
-#, c-format
-msgid "syntax error near `%s'"
-msgstr ""
-
-#: parse.y:4551
-msgid "syntax error: unexpected end of file"
-msgstr ""
-
-#: parse.y:4551
-msgid "syntax error"
-msgstr ""
-
-#: parse.y:4613
-#, c-format
-msgid "Use \"%s\" to leave the shell.\n"
-msgstr ""
-
-#: parse.y:4775
-msgid "unexpected EOF while looking for matching `)'"
-msgstr ""
-
-#: pcomplete.c:1002
-#, c-format
-msgid "completion: function `%s' not found"
-msgstr ""
-
-#: pcomplib.c:179
-#, c-format
-msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr ""
-
-#: print_cmd.c:264
-#, c-format
-msgid "print_command: bad connector `%d'"
-msgstr ""
-
-#: print_cmd.c:1236
-#, c-format
-msgid "cprintf: `%c': invalid format character"
-msgstr ""
-
-#: redir.c:99
-msgid "file descriptor out of range"
-msgstr ""
-
-#: redir.c:141
-#, c-format
-msgid "%s: ambiguous redirect"
-msgstr ""
-
-#: redir.c:145
-#, c-format
-msgid "%s: cannot overwrite existing file"
-msgstr ""
-
-#: redir.c:150
-#, c-format
-msgid "%s: restricted: cannot redirect output"
-msgstr ""
-
-#: redir.c:155
-#, c-format
-msgid "cannot create temp file for here document: %s"
-msgstr ""
-
-#: redir.c:509
-msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
-
-#: redir.c:965
-msgid "redirection error: cannot duplicate fd"
-msgstr ""
-
-#: shell.c:309
-msgid "could not find /tmp, please create!"
-msgstr ""
-
-#: shell.c:313
-msgid "/tmp must be a valid directory name"
-msgstr ""
-
-#: shell.c:850
-#, c-format
-msgid "%c%c: invalid option"
-msgstr ""
-
-#: shell.c:1600
-msgid "I have no name!"
-msgstr ""
-
-#: shell.c:1735
-#, c-format
-msgid ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-msgstr ""
-
-#: shell.c:1737
-msgid "GNU long options:\n"
-msgstr ""
-
-#: shell.c:1741
-msgid "Shell options:\n"
-msgstr ""
-
-#: shell.c:1742
-msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
-
-#: shell.c:1757
-#, c-format
-msgid "\t-%s or -o option\n"
-msgstr ""
-
-#: shell.c:1763
-#, c-format
-msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-
-#: shell.c:1764
-#, c-format
-msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-
-#: shell.c:1765
-msgid "Use the `bashbug' command to report bugs.\n"
-msgstr ""
-
-#: sig.c:557
-#, c-format
-msgid "sigprocmask: %d: invalid operation"
-msgstr ""
-
-#: subst.c:1160
-#, c-format
-msgid "bad substitution: no closing `%s' in %s"
-msgstr ""
-
-#: subst.c:2328
-#, c-format
-msgid "%s: cannot assign list to array member"
-msgstr ""
-
-#: subst.c:4265 subst.c:4281
-msgid "cannot make pipe for process substitution"
-msgstr ""
-
-#: subst.c:4312
-msgid "cannot make child for process substitution"
-msgstr ""
-
-#: subst.c:4357
-#, c-format
-msgid "cannot open named pipe %s for reading"
-msgstr ""
-
-#: subst.c:4359
-#, c-format
-msgid "cannot open named pipe %s for writing"
-msgstr ""
-
-#: subst.c:4367
-#, c-format
-msgid "cannout reset nodelay mode for fd %d"
-msgstr ""
-
-#: subst.c:4377
-#, c-format
-msgid "cannot duplicate named pipe %s as fd %d"
-msgstr ""
-
-#: subst.c:4552
-msgid "cannot make pipe for command substitution"
-msgstr ""
-
-#: subst.c:4588
-msgid "cannot make child for command substitution"
-msgstr ""
-
-#: subst.c:4605
-msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr ""
-
-#: subst.c:5068
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr ""
-
-#: subst.c:5342
-#, c-format
-msgid "%s: substring expression < 0"
-msgstr ""
-
-#: subst.c:6179
-#, c-format
-msgid "%s: bad substitution"
-msgstr ""
-
-#: subst.c:6255
-#, c-format
-msgid "$%s: cannot assign in this way"
-msgstr ""
-
-#: subst.c:7826
-#, c-format
-msgid "no match: %s"
-msgstr ""
-
-#: test.c:145
-msgid "argument expected"
-msgstr ""
-
-#: test.c:154
-#, c-format
-msgid "%s: integer expression expected"
-msgstr ""
-
-#: test.c:262
-msgid "`)' expected"
-msgstr ""
-
-#: test.c:264
-#, c-format
-msgid "`)' expected, found %s"
-msgstr ""
-
-#: test.c:279 test.c:688 test.c:691
-#, c-format
-msgid "%s: unary operator expected"
-msgstr ""
-
-#: test.c:444 test.c:731
-#, c-format
-msgid "%s: binary operator expected"
-msgstr ""
-
-#: test.c:806
-msgid "missing `]'"
-msgstr ""
-
-#: trap.c:200
-msgid "invalid signal number"
-msgstr ""
-
-#: trap.c:315
-#, c-format
-msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
-
-#: trap.c:319
-#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-
-#: trap.c:355
-#, c-format
-msgid "trap_handler: bad signal %d"
-msgstr ""
-
-#: variables.c:334
-#, c-format
-msgid "error importing function definition for `%s'"
-msgstr ""
-
-#: variables.c:711
-#, c-format
-msgid "shell level (%d) too high, resetting to 1"
-msgstr ""
-
-#: variables.c:1670
-msgid "make_local_variable: no function context at current scope"
-msgstr ""
-
-#: variables.c:2813
-msgid "all_local_variables: no function context at current scope"
-msgstr ""
-
-#: variables.c:3030 variables.c:3039
-#, c-format
-msgid "invalid character %d in exportstr for %s"
-msgstr ""
-
-#: variables.c:3045
-#, c-format
-msgid "no `=' in exportstr for %s"
-msgstr ""
-
-#: variables.c:3472
-msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-
-#: variables.c:3485
-msgid "pop_var_context: no global_variables context"
-msgstr ""
-
-#: variables.c:3557
-msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-
-#: version.c:82
-msgid "Copyright (C) 2006 Free Software Foundation, Inc.\n"
-msgstr ""
-
-#: xmalloc.c:93
-#, c-format
-msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:95
-#, c-format
-msgid "xmalloc: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:115
-#, c-format
-msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:117
-#, c-format
-msgid "xrealloc: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:151
-#, c-format
-msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:153
-#, c-format
-msgid "xmalloc: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:175
-#, c-format
-msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:177
-#, c-format
-msgid "xrealloc: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: builtins.c:244
-msgid ""
-"`alias' with no arguments or with the -p option prints the list\n"
-"    of aliases in the form alias NAME=VALUE on standard output.\n"
-"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-"    A trailing space in VALUE causes the next word to be checked for\n"
-"    alias substitution when the alias is expanded.  Alias returns\n"
-"    true unless a NAME is given for which no alias has been defined."
-msgstr ""
-
-#: builtins.c:257
-msgid ""
-"Remove NAMEs from the list of defined aliases.  If the -a option is given,\n"
-"    then remove all alias definitions."
-msgstr ""
-
-#: builtins.c:266
-msgid ""
-"Bind a key sequence to a Readline function or a macro, or set\n"
-"    a Readline variable.  The non-option argument syntax is equivalent\n"
-"    to that found in ~/.inputrc, but must be passed as a single argument:\n"
-"    bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"    bind accepts the following options:\n"
-"      -m  keymap         Use `keymap' as the keymap for the duration of "
-"this\n"
-"                         command.  Acceptable keymap names are emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-"                         vi-command, and vi-insert.\n"
-"      -l                 List names of functions.\n"
-"      -P                 List function names and bindings.\n"
-"      -p                 List functions and bindings in a form that can be\n"
-"                         reused as input.\n"
-"      -r  keyseq         Remove the binding for KEYSEQ.\n"
-"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-"    \t\t\t\tKEYSEQ is entered.\n"
-"      -f  filename       Read key bindings from FILENAME.\n"
-"      -q  function-name  Query about which keys invoke the named function.\n"
-"      -u  function-name  Unbind all keys which are bound to the named "
-"function.\n"
-"      -V                 List variable names and values\n"
-"      -v                 List variable names and values in a form that can\n"
-"                         be reused as input.\n"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\n"
-"                         in a form that can be reused as input."
-msgstr ""
-
-#: builtins.c:297
-msgid ""
-"Exit from within a FOR, WHILE or UNTIL loop.  If N is specified,\n"
-"    break N levels."
-msgstr ""
-
-#: builtins.c:304
-msgid ""
-"Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-"    If N is specified, resume at the N-th enclosing loop."
-msgstr ""
-
-#: builtins.c:311
-msgid ""
-"Run a shell builtin.  This is useful when you wish to rename a\n"
-"    shell builtin to be a function, but need the functionality of the\n"
-"    builtin within the function itself."
-msgstr ""
-
-#: builtins.c:320
-msgid ""
-"Returns the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns \"$line $filename\".  With EXPR,\n"
-"    returns \"$line $subroutine $filename\"; this extra information\n"
-"    can be used to provide a stack trace.\n"
-"    \n"
-"    The value of EXPR indicates how many call frames to go back before the\n"
-"    current one; the top frame is frame 0."
-msgstr ""
-
-#: builtins.c:334
-msgid ""
-"Change the current directory to DIR.  The variable $HOME is the\n"
-"    default DIR.  The variable CDPATH defines the search path for\n"
-"    the directory containing DIR.  Alternative directory names in CDPATH\n"
-"    are separated by a colon (:).  A null directory name is the same as\n"
-"    the current directory, i.e. `.'.  If DIR begins with a slash (/),\n"
-"    then CDPATH is not used.  If the directory is not found, and the\n"
-"    shell option `cdable_vars' is set, then try the word as a variable\n"
-"    name.  If that variable has a value, then cd to the value of that\n"
-"    variable.  The -P option says to use the physical directory structure\n"
-"    instead of following symbolic links; the -L option forces symbolic "
-"links\n"
-"    to be followed."
-msgstr ""
-
-#: builtins.c:350
-msgid ""
-"Print the current working directory.  With the -P option, pwd prints\n"
-"    the physical directory, without any symbolic links; the -L option\n"
-"    makes pwd follow symbolic links."
-msgstr ""
-
-#: builtins.c:358
-msgid "No effect; the command does nothing.  A zero exit code is returned."
-msgstr ""
-
-#: builtins.c:364
-msgid "Return a successful result."
-msgstr ""
-
-#: builtins.c:370
-msgid "Return an unsuccessful result."
-msgstr ""
-
-#: builtins.c:376
-msgid ""
-"Runs COMMAND with ARGS ignoring shell functions.  If you have a shell\n"
-"    function called `ls', and you wish to call the command `ls', you can\n"
-"    say \"command ls\".  If the -p option is given, a default value is used\n"
-"    for PATH that is guaranteed to find all of the standard utilities.  If\n"
-"    the -V or -v option is given, a string is printed describing COMMAND.\n"
-"    The -V option produces a more verbose description."
-msgstr ""
-
-#: builtins.c:387
-msgid ""
-"Declare variables and/or give them attributes.  If no NAMEs are\n"
-"    given, then display the values of variables instead.  The -p option\n"
-"    will display the attributes and values of each NAME.\n"
-"    \n"
-"    The flags are:\n"
-"    \n"
-"      -a\tto make NAMEs arrays (if supported)\n"
-"      -f\tto select from among function names only\n"
-"      -F\tto display function names (and line number and source file name "
-"if\n"
-"    \tdebugging) without definitions\n"
-"      -i\tto make NAMEs have the `integer' attribute\n"
-"      -r\tto make NAMEs readonly\n"
-"      -t\tto make NAMEs have the `trace' attribute\n"
-"      -x\tto make NAMEs export\n"
-"    \n"
-"    Variables with the integer attribute have arithmetic evaluation (see\n"
-"    `let') done when the variable is assigned to.\n"
-"    \n"
-"    When displaying values of variables, -f displays a function's name\n"
-"    and definition.  The -F option restricts the display to function\n"
-"    name only.\n"
-"    \n"
-"    Using `+' instead of `-' turns off the given attribute instead.  When\n"
-"    used in a function, makes NAMEs local, as with the `local' command."
-msgstr ""
-
-#: builtins.c:416
-msgid "Obsolete.  See `declare'."
-msgstr ""
-
-#: builtins.c:422
-msgid ""
-"Create a local variable called NAME, and give it VALUE.  LOCAL\n"
-"    can only be used within a function; it makes the variable NAME\n"
-"    have a visible scope restricted to that function and its children."
-msgstr ""
-
-#: builtins.c:431
-msgid ""
-"Output the ARGs.  If -n is specified, the trailing newline is\n"
-"    suppressed.  If the -e option is given, interpretation of the\n"
-"    following backslash-escaped characters is turned on:\n"
-"    \t\\a\talert (bell)\n"
-"    \t\\b\tbackspace\n"
-"    \t\\c\tsuppress trailing newline\n"
-"    \t\\E\tescape character\n"
-"    \t\\f\tform feed\n"
-"    \t\\n\tnew line\n"
-"    \t\\r\tcarriage return\n"
-"    \t\\t\thorizontal tab\n"
-"    \t\\v\tvertical tab\n"
-"    \t\\\\\tbackslash\n"
-"    \t\\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n"
-"    \t\t0 to 3 octal digits\n"
-"    \n"
-"    You can explicitly turn off the interpretation of the above characters\n"
-"    with the -E option."
-msgstr ""
-
-#: builtins.c:456
-msgid ""
-"Output the ARGs.  If -n is specified, the trailing newline is suppressed."
-msgstr ""
-
-#: builtins.c:463
-msgid ""
-"Enable and disable builtin shell commands.  This allows\n"
-"    you to use a disk command which has the same name as a shell\n"
-"    builtin without specifying a full pathname.  If -n is used, the\n"
-"    NAMEs become disabled; otherwise NAMEs are enabled.  For example,\n"
-"    to use the `test' found in $PATH instead of the shell builtin\n"
-"    version, type `enable -n test'.  On systems supporting dynamic\n"
-"    loading, the -f option may be used to load new builtins from the\n"
-"    shared object FILENAME.  The -d option will delete a builtin\n"
-"    previously loaded with -f.  If no non-option names are given, or\n"
-"    the -p option is supplied, a list of builtins is printed.  The\n"
-"    -a option means to print every builtin with an indication of whether\n"
-"    or not it is enabled.  The -s option restricts the output to the "
-"POSIX.2\n"
-"    `special' builtins.  The -n option displays a list of all disabled "
-"builtins."
-msgstr ""
-
-#: builtins.c:481
-msgid "Read ARGs as input to the shell and execute the resulting command(s)."
-msgstr ""
-
-#: builtins.c:487
-msgid ""
-"Getopts is used by shell procedures to parse positional parameters.\n"
-"    \n"
-"    OPTSTRING contains the option letters to be recognized; if a letter\n"
-"    is followed by a colon, the option is expected to have an argument,\n"
-"    which should be separated from it by white space.\n"
-"    \n"
-"    Each time it is invoked, getopts will place the next option in the\n"
-"    shell variable $name, initializing name if it does not exist, and\n"
-"    the index of the next argument to be processed into the shell\n"
-"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
-"    a shell script is invoked.  When an option requires an argument,\n"
-"    getopts places that argument into the shell variable OPTARG.\n"
-"    \n"
-"    getopts reports errors in one of two ways.  If the first character\n"
-"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
-"    this mode, no error messages are printed.  If an invalid option is\n"
-"    seen, getopts places the option character found into OPTARG.  If a\n"
-"    required argument is not found, getopts places a ':' into NAME and\n"
-"    sets OPTARG to the option character found.  If getopts is not in\n"
-"    silent mode, and an invalid option is seen, getopts places '?' into\n"
-"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
-"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-"    printed.\n"
-"    \n"
-"    If the shell variable OPTERR has the value 0, getopts disables the\n"
-"    printing of error messages, even if the first character of\n"
-"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
-"    \n"
-"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
-"    more arguments are given, they are parsed instead."
-msgstr ""
-
-#: builtins.c:522
-msgid ""
-"Exec FILE, replacing this shell with the specified program.\n"
-"    If FILE is not specified, the redirections take effect in this\n"
-"    shell.  If the first argument is `-l', then place a dash in the\n"
-"    zeroth arg passed to FILE, as login does.  If the `-c' option\n"
-"    is supplied, FILE is executed with a null environment.  The `-a'\n"
-"    option means to make set argv[0] of the executed process to NAME.\n"
-"    If the file cannot be executed and the shell is not interactive,\n"
-"    then the shell exits, unless the shell option `execfail' is set."
-msgstr ""
-
-#: builtins.c:535
-msgid ""
-"Exit the shell with a status of N.  If N is omitted, the exit status\n"
-"    is that of the last command executed."
-msgstr ""
-
-#: builtins.c:542
-msgid "Logout of a login shell."
-msgstr ""
-
-#: builtins.c:549
-msgid ""
-"fc is used to list or edit and re-execute commands from the history list.\n"
-"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-"    string, which means the most recent command beginning with that\n"
-"    string.\n"
-"    \n"
-"       -e ENAME selects which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
-"          then vi.\n"
-"    \n"
-"       -l means list lines instead of editing.\n"
-"       -n means no line numbers listed.\n"
-"       -r means reverse the order of the lines (making it newest listed "
-"first).\n"
-"    \n"
-"    With the `fc -s [pat=rep ...] [command]' format, the command is\n"
-"    re-executed after the substitution OLD=NEW is performed.\n"
-"    \n"
-"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
-"    runs the last command beginning with `cc' and typing `r' re-executes\n"
-"    the last command."
-msgstr ""
-
-#: builtins.c:574
-msgid ""
-"Place JOB_SPEC in the foreground, and make it the current job.  If\n"
-"    JOB_SPEC is not present, the shell's notion of the current job is\n"
-"    used."
-msgstr ""
-
-#: builtins.c:584
-msgid ""
-"Place each JOB_SPEC in the background, as if it had been started with\n"
-"    `&'.  If JOB_SPEC is not present, the shell's notion of the current\n"
-"    job is used."
-msgstr ""
-
-#: builtins.c:593
-msgid ""
-"For each NAME, the full pathname of the command is determined and\n"
-"    remembered.  If the -p option is supplied, PATHNAME is used as the\n"
-"    full pathname of NAME, and no path search is performed.  The -r\n"
-"    option causes the shell to forget all remembered locations.  The -d\n"
-"    option causes the shell to forget the remembered location of each NAME.\n"
-"    If the -t option is supplied the full pathname to which each NAME\n"
-"    corresponds is printed.  If multiple NAME arguments are supplied with\n"
-"    -t, the NAME is printed before the hashed full pathname.  The -l option\n"
-"    causes output to be displayed in a format that may be reused as input.\n"
-"    If no arguments are given, information about remembered commands is "
-"displayed."
-msgstr ""
-
-#: builtins.c:609
-msgid ""
-"Display helpful information about builtin commands.  If PATTERN is\n"
-"    specified, gives detailed help on all commands matching PATTERN,\n"
-"    otherwise a list of the builtins is printed.  The -s option\n"
-"    restricts the output for each builtin command matching PATTERN to\n"
-"    a short usage synopsis."
-msgstr ""
-
-#: builtins.c:621
-msgid ""
-"Display the history list with line numbers.  Lines listed with\n"
-"    with a `*' have been modified.  Argument of N says to list only\n"
-"    the last N lines.  The `-c' option causes the history list to be\n"
-"    cleared by deleting all of the entries.  The `-d' option deletes\n"
-"    the history entry at offset OFFSET.  The `-w' option writes out the\n"
-"    current history to the history file;  `-r' means to read the file and\n"
-"    append the contents to the history list instead.  `-a' means\n"
-"    to append history lines from this session to the history file.\n"
-"    Argument `-n' means to read all history lines not already read\n"
-"    from the history file and append them to the history list.\n"
-"    \n"
-"    If FILENAME is given, then that is used as the history file else\n"
-"    if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-"    If the -s option is supplied, the non-option ARGs are appended to\n"
-"    the history list as a single entry.  The -p option means to perform\n"
-"    history expansion on each ARG and display the result, without storing\n"
-"    anything in the history list.\n"
-"    \n"
-"    If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-"    as a format string for strftime(3) to print the time stamp associated\n"
-"    with each displayed history entry.  No time stamps are printed otherwise."
-msgstr ""
-
-#: builtins.c:649
-msgid ""
-"Lists the active jobs.  The -l option lists process id's in addition\n"
-"    to the normal information; the -p option lists process id's only.\n"
-"    If -n is given, only processes that have changed status since the last\n"
-"    notification are printed.  JOBSPEC restricts output to that job.  The\n"
-"    -r and -s options restrict output to running and stopped jobs only,\n"
-"    respectively.  Without options, the status of all active jobs is\n"
-"    printed.  If -x is given, COMMAND is run after all job specifications\n"
-"    that appear in ARGS have been replaced with the process ID of that "
-"job's\n"
-"    process group leader."
-msgstr ""
-
-#: builtins.c:665
-msgid ""
-"By default, removes each JOBSPEC argument from the table of active jobs.\n"
-"    If the -h option is given, the job is not removed from the table, but "
-"is\n"
-"    marked so that SIGHUP is not sent to the job if the shell receives a\n"
-"    SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove "
-"all\n"
-"    jobs from the job table; the -r option means to remove only running jobs."
-msgstr ""
-
-#: builtins.c:676
-msgid ""
-"Send the processes named by PID (or JOBSPEC) the signal SIGSPEC.  If\n"
-"    SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'\n"
-"    lists the signal names; if arguments follow `-l' they are assumed to\n"
-"    be signal numbers for which names should be listed.  Kill is a shell\n"
-"    builtin for two reasons: it allows job IDs to be used instead of\n"
-"    process IDs, and, if you have reached the limit on processes that\n"
-"    you can create, you don't have to start a process to kill another one."
-msgstr ""
-
-#: builtins.c:688
-msgid ""
-"Each ARG is an arithmetic expression to be evaluated.  Evaluation\n"
-"    is done in fixed-width integers with no check for overflow, though\n"
-"    division by 0 is trapped and flagged as an error.  The following\n"
-"    list of operators is grouped into levels of equal-precedence operators.\n"
-"    The levels are listed in order of decreasing precedence.\n"
-"    \n"
-"    \tid++, id--\tvariable post-increment, post-decrement\n"
-"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
-"    \t-, +\t\tunary minus, plus\n"
-"    \t!, ~\t\tlogical and bitwise negation\n"
-"    \t**\t\texponentiation\n"
-"    \t*, /, %\t\tmultiplication, division, remainder\n"
-"    \t+, -\t\taddition, subtraction\n"
-"    \t<<, >>\t\tleft and right bitwise shifts\n"
-"    \t<=, >=, <, >\tcomparison\n"
-"    \t==, !=\t\tequality, inequality\n"
-"    \t&\t\tbitwise AND\n"
-"    \t^\t\tbitwise XOR\n"
-"    \t|\t\tbitwise OR\n"
-"    \t&&\t\tlogical AND\n"
-"    \t||\t\tlogical OR\n"
-"    \texpr ? expr : expr\n"
-"    \t\t\tconditional operator\n"
-"    \t=, *=, /=, %=,\n"
-"    \t+=, -=, <<=, >>=,\n"
-"    \t&=, ^=, |=\tassignment\n"
-"    \n"
-"    Shell variables are allowed as operands.  The name of the variable\n"
-"    is replaced by its value (coerced to a fixed-width integer) within\n"
-"    an expression.  The variable need not have its integer attribute\n"
-"    turned on to be used in an expression.\n"
-"    \n"
-"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
-"    parentheses are evaluated first and may override the precedence\n"
-"    rules above.\n"
-"    \n"
-"    If the last ARG evaluates to 0, let returns 1; 0 is returned\n"
-"    otherwise."
-msgstr ""
-
-#: builtins.c:731
-msgid ""
-"One line is read from the standard input, or from file descriptor FD if the\n"
-"    -u option is supplied, and the first word is assigned to the first "
-"NAME,\n"
-"    the second word to the second NAME, and so on, with leftover words "
-"assigned\n"
-"    to the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
-"    delimiters.  If no NAMEs are supplied, the line read is stored in the "
-"REPLY\n"
-"    variable.  If the -r option is given, this signifies `raw' input, and\n"
-"    backslash escaping is disabled.  The -d option causes read to continue\n"
-"    until the first character of DELIM is read, rather than newline.  If the "
-"-p\n"
-"    option is supplied, the string PROMPT is output without a trailing "
-"newline\n"
-"    before attempting to read.  If -a is supplied, the words read are "
-"assigned\n"
-"    to sequential indices of ARRAY, starting at zero.  If -e is supplied "
-"and\n"
-"    the shell is interactive, readline is used to obtain the line.  If -n "
-"is\n"
-"    supplied with a non-zero NCHARS argument, read returns after NCHARS\n"
-"    characters have been read.  The -s option causes input coming from a\n"
-"    terminal to not be echoed.\n"
-"    \n"
-"    The -t option causes read to time out and return failure if a complete "
-"line\n"
-"    of input is not read within TIMEOUT seconds.  If the TMOUT variable is "
-"set,\n"
-"    its value is the default timeout.  The return code is zero, unless end-"
-"of-file\n"
-"    is encountered, read times out, or an invalid file descriptor is "
-"supplied as\n"
-"    the argument to -u."
-msgstr ""
-
-#: builtins.c:757
-msgid ""
-"Causes a function to exit with the return value specified by N.  If N\n"
-"    is omitted, the return status is that of the last command."
-msgstr ""
-
-#: builtins.c:764
-msgid ""
-"    -a  Mark variables which are modified or created for export.\n"
-"        -b  Notify of job termination immediately.\n"
-"        -e  Exit immediately if a command exits with a non-zero status.\n"
-"        -f  Disable file name generation (globbing).\n"
-"        -h  Remember the location of commands as they are looked up.\n"
-"        -k  All assignment arguments are placed in the environment for a\n"
-"            command, not just those that precede the command name.\n"
-"        -m  Job control is enabled.\n"
-"        -n  Read commands but do not execute them.\n"
-"        -o option-name\n"
-"            Set the variable corresponding to option-name:\n"
-"                allexport    same as -a\n"
-"                braceexpand  same as -B\n"
-"                emacs        use an emacs-style line editing interface\n"
-"                errexit      same as -e\n"
-"                errtrace     same as -E\n"
-"                functrace    same as -T\n"
-"                hashall      same as -h\n"
-"                histexpand   same as -H\n"
-"                history      enable command history\n"
-"                ignoreeof    the shell will not exit upon reading EOF\n"
-"                interactive-comments\n"
-"                             allow comments to appear in interactive "
-"commands\n"
-"                keyword      same as -k\n"
-"                monitor      same as -m\n"
-"                noclobber    same as -C\n"
-"                noexec       same as -n\n"
-"                noglob       same as -f\n"
-"                nolog        currently accepted but ignored\n"
-"                notify       same as -b\n"
-"                nounset      same as -u\n"
-"                onecmd       same as -t\n"
-"                physical     same as -P\n"
-"                pipefail     the return value of a pipeline is the status "
-"of\n"
-"                             the last command to exit with a non-zero "
-"status,\n"
-"                             or zero if no command exited with a non-zero "
-"status\n"
-"                posix        change the behavior of bash where the default\n"
-"                             operation differs from the 1003.2 standard to\n"
-"                             match the standard\n"
-"                privileged   same as -p\n"
-"                verbose      same as -v\n"
-"                vi           use a vi-style line editing interface\n"
-"                xtrace       same as -x\n"
-"        -p  Turned on whenever the real and effective user ids do not "
-"match.\n"
-"            Disables processing of the $ENV file and importing of shell\n"
-"            functions.  Turning this option off causes the effective uid "
-"and\n"
-"            gid to be set to the real uid and gid.\n"
-"        -t  Exit after reading and executing one command.\n"
-"        -u  Treat unset variables as an error when substituting.\n"
-"        -v  Print shell input lines as they are read.\n"
-"        -x  Print commands and their arguments as they are executed.\n"
-"        -B  the shell will perform brace expansion\n"
-"        -C  If set, disallow existing regular files to be overwritten\n"
-"            by redirection of output.\n"
-"        -E  If set, the ERR trap is inherited by shell functions.\n"
-"        -H  Enable ! style history substitution.  This flag is on\n"
-"            by default when the shell is interactive.\n"
-"        -P  If set, do not follow symbolic links when executing commands\n"
-"            such as cd which change the current directory.\n"
-"        -T  If set, the DEBUG trap is inherited by shell functions.\n"
-"        -   Assign any remaining arguments to the positional parameters.\n"
-"            The -x and -v options are turned off.\n"
-"    \n"
-"    Using + rather than - causes these flags to be turned off.  The\n"
-"    flags can also be used upon invocation of the shell.  The current\n"
-"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
-"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
-"    ARGs are given, all shell variables are printed."
-msgstr ""
-
-#: builtins.c:837
-msgid ""
-"For each NAME, remove the corresponding variable or function.  Given\n"
-"    the `-v', unset will only act on variables.  Given the `-f' flag,\n"
-"    unset will only act on functions.  With neither flag, unset first\n"
-"    tries to unset a variable, and if that fails, then tries to unset a\n"
-"    function.  Some variables cannot be unset; also see readonly."
-msgstr ""
-
-#: builtins.c:847
-msgid ""
-"NAMEs are marked for automatic export to the environment of\n"
-"    subsequently executed commands.  If the -f option is given,\n"
-"    the NAMEs refer to functions.  If no NAMEs are given, or if `-p'\n"
-"    is given, a list of all names that are exported in this shell is\n"
-"    printed.  An argument of `-n' says to remove the export property\n"
-"    from subsequent NAMEs.  An argument of `--' disables further option\n"
-"    processing."
-msgstr ""
-
-#: builtins.c:859
-msgid ""
-"The given NAMEs are marked readonly and the values of these NAMEs may\n"
-"    not be changed by subsequent assignment.  If the -f option is given,\n"
-"    then functions corresponding to the NAMEs are so marked.  If no\n"
-"    arguments are given, or if `-p' is given, a list of all readonly names\n"
-"    is printed.  The `-a' option means to treat each NAME as\n"
-"    an array variable.  An argument of `--' disables further option\n"
-"    processing."
-msgstr ""
-
-#: builtins.c:871
-msgid ""
-"The positional parameters from $N+1 ... are renamed to $1 ...  If N is\n"
-"    not given, it is assumed to be 1."
-msgstr ""
-
-#: builtins.c:878 builtins.c:887
-msgid ""
-"Read and execute commands from FILENAME and return.  The pathnames\n"
-"    in $PATH are used to find the directory containing FILENAME.  If any\n"
-"    ARGUMENTS are supplied, they become the positional parameters when\n"
-"    FILENAME is executed."
-msgstr ""
-
-#: builtins.c:897
-msgid ""
-"Suspend the execution of this shell until it receives a SIGCONT\n"
-"    signal.  The `-f' if specified says not to complain about this\n"
-"    being a login shell if it is; just suspend anyway."
-msgstr ""
-
-#: builtins.c:906
-msgid ""
-"Exits with a status of 0 (true) or 1 (false) depending on\n"
-"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
-"    expressions are often used to examine the status of a file.  There\n"
-"    are string operators as well, and numeric comparison operators.\n"
-"    \n"
-"    File operators:\n"
-"    \n"
-"        -a FILE        True if file exists.\n"
-"        -b FILE        True if file is block special.\n"
-"        -c FILE        True if file is character special.\n"
-"        -d FILE        True if file is a directory.\n"
-"        -e FILE        True if file exists.\n"
-"        -f FILE        True if file exists and is a regular file.\n"
-"        -g FILE        True if file is set-group-id.\n"
-"        -h FILE        True if file is a symbolic link.\n"
-"        -L FILE        True if file is a symbolic link.\n"
-"        -k FILE        True if file has its `sticky' bit set.\n"
-"        -p FILE        True if file is a named pipe.\n"
-"        -r FILE        True if file is readable by you.\n"
-"        -s FILE        True if file exists and is not empty.\n"
-"        -S FILE        True if file is a socket.\n"
-"        -t FD          True if FD is opened on a terminal.\n"
-"        -u FILE        True if the file is set-user-id.\n"
-"        -w FILE        True if the file is writable by you.\n"
-"        -x FILE        True if the file is executable by you.\n"
-"        -O FILE        True if the file is effectively owned by you.\n"
-"        -G FILE        True if the file is effectively owned by your group.\n"
-"        -N FILE        True if the file has been modified since it was last "
-"read.\n"
-"    \n"
-"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
-"                       modification date).\n"
-"    \n"
-"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
-"    \n"
-"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
-"    \n"
-"    String operators:\n"
-"    \n"
-"        -z STRING      True if string is empty.\n"
-"    \n"
-"        -n STRING\n"
-"        STRING         True if string is not empty.\n"
-"    \n"
-"        STRING1 = STRING2\n"
-"                       True if the strings are equal.\n"
-"        STRING1 != STRING2\n"
-"                       True if the strings are not equal.\n"
-"        STRING1 < STRING2\n"
-"                       True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-"        STRING1 > STRING2\n"
-"                       True if STRING1 sorts after STRING2 "
-"lexicographically.\n"
-"    \n"
-"    Other operators:\n"
-"    \n"
-"        -o OPTION      True if the shell option OPTION is enabled.\n"
-"        ! EXPR         True if expr is false.\n"
-"        EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-"        EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-"    \n"
-"        arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
-"                       -lt, -le, -gt, or -ge.\n"
-"    \n"
-"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-"    than ARG2."
-msgstr ""
-
-#: builtins.c:976
-msgid ""
-"This is a synonym for the \"test\" builtin, but the last\n"
-"    argument must be a literal `]', to match the opening `['."
-msgstr ""
-
-#: builtins.c:983
-msgid ""
-"Print the accumulated user and system times for processes run from\n"
-"    the shell."
-msgstr ""
-
-#: builtins.c:990
-msgid ""
-"The command ARG is to be read and executed when the shell receives\n"
-"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
-"    is supplied) or `-', each specified signal is reset to its original\n"
-"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-"    shell and by the commands it invokes.  If a SIGNAL_SPEC is EXIT (0)\n"
-"    the command ARG is executed on exit from the shell.  If a SIGNAL_SPEC\n"
-"    is DEBUG, ARG is executed after every simple command.  If the`-p' "
-"option\n"
-"    is supplied then the trap commands associated with each SIGNAL_SPEC are\n"
-"    displayed.  If no arguments are supplied or if only `-p' is given, trap\n"
-"    prints the list of commands associated with each signal.  Each "
-"SIGNAL_SPEC\n"
-"    is either a signal name in <signal.h> or a signal number.  Signal names\n"
-"    are case insensitive and the SIG prefix is optional.  `trap -l' prints\n"
-"    a list of signal names and their corresponding numbers.  Note that a\n"
-"    signal can be sent to the shell with \"kill -signal $$\"."
-msgstr ""
-
-#: builtins.c:1009
-msgid ""
-"For each NAME, indicate how it would be interpreted if used as a\n"
-"    command name.\n"
-"    \n"
-"    If the -t option is used, `type' outputs a single word which is one of\n"
-"    `alias', `keyword', `function', `builtin', `file' or `', if NAME is an\n"
-"    alias, shell reserved word, shell function, shell builtin, disk file,\n"
-"    or unfound, respectively.\n"
-"    \n"
-"    If the -p flag is used, `type' either returns the name of the disk\n"
-"    file that would be executed, or nothing if `type -t NAME' would not\n"
-"    return `file'.\n"
-"    \n"
-"    If the -a flag is used, `type' displays all of the places that contain\n"
-"    an executable named `file'.  This includes aliases, builtins, and\n"
-"    functions, if and only if the -p flag is not also used.\n"
-"    \n"
-"    The -f flag suppresses shell function lookup.\n"
-"    \n"
-"    The -P flag forces a PATH search for each NAME, even if it is an alias,\n"
-"    builtin, or function, and returns the name of the disk file that would\n"
-"    be executed."
-msgstr ""
-
-#: builtins.c:1036
-msgid ""
-"Ulimit provides control over the resources available to processes\n"
-"    started by the shell, on systems that allow such control.  If an\n"
-"    option is given, it is interpreted as follows:\n"
-"    \n"
-"        -S\tuse the `soft' resource limit\n"
-"        -H\tuse the `hard' resource limit\n"
-"        -a\tall current limits are reported\n"
-"        -c\tthe maximum size of core files created\n"
-"        -d\tthe maximum size of a process's data segment\n"
-"        -e\tthe maximum scheduling priority (`nice')\n"
-"        -f\tthe maximum size of files written by the shell and its children\n"
-"        -i\tthe maximum number of pending signals\n"
-"        -l\tthe maximum size a process may lock into memory\n"
-"        -m\tthe maximum resident set size\n"
-"        -n\tthe maximum number of open file descriptors\n"
-"        -p\tthe pipe buffer size\n"
-"        -q\tthe maximum number of bytes in POSIX message queues\n"
-"        -r\tthe maximum real-time scheduling priority\n"
-"        -s\tthe maximum stack size\n"
-"        -t\tthe maximum amount of cpu time in seconds\n"
-"        -u\tthe maximum number of user processes\n"
-"        -v\tthe size of virtual memory\n"
-"        -x\tthe maximum number of file locks\n"
-"    \n"
-"    If LIMIT is given, it is the new value of the specified resource;\n"
-"    the special LIMIT values `soft', `hard', and `unlimited' stand for\n"
-"    the current soft limit, the current hard limit, and no limit, "
-"respectively.\n"
-"    Otherwise, the current value of the specified resource is printed.\n"
-"    If no option is given, then -f is assumed.  Values are in 1024-byte\n"
-"    increments, except for -t, which is in seconds, -p, which is in\n"
-"    increments of 512 bytes, and -u, which is an unscaled number of\n"
-"    processes."
-msgstr ""
-
-#: builtins.c:1074
-msgid ""
-"The user file-creation mask is set to MODE.  If MODE is omitted, or if\n"
-"    `-S' is supplied, the current value of the mask is printed.  The `-S'\n"
-"    option makes the output symbolic; otherwise an octal number is output.\n"
-"    If `-p' is supplied, and MODE is omitted, the output is in a form\n"
-"    that may be used as input.  If MODE begins with a digit, it is\n"
-"    interpreted as an octal number, otherwise it is a symbolic mode string\n"
-"    like that accepted by chmod(1)."
-msgstr ""
-
-#: builtins.c:1087
-msgid ""
-"Wait for the specified process and report its termination status.  If\n"
-"    N is not given, all currently active child processes are waited for,\n"
-"    and the return code is zero.  N may be a process ID or a job\n"
-"    specification; if a job spec is given, all processes in the job's\n"
-"    pipeline are waited for."
-msgstr ""
-
-#: builtins.c:1099
-msgid ""
-"Wait for the specified process and report its termination status.  If\n"
-"    N is not given, all currently active child processes are waited for,\n"
-"    and the return code is zero.  N is a process ID; if it is not given,\n"
-"    all child processes of the shell are waited for."
-msgstr ""
-
-#: builtins.c:1109
-msgid ""
-"The `for' loop executes a sequence of commands for each member in a\n"
-"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
-"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
-"    the COMMANDS are executed."
-msgstr ""
-
-#: builtins.c:1118
-msgid ""
-"Equivalent to\n"
-"    \t(( EXP1 ))\n"
-"    \twhile (( EXP2 )); do\n"
-"    \t\tCOMMANDS\n"
-"    \t\t(( EXP3 ))\n"
-"    \tdone\n"
-"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
-"    omitted, it behaves as if it evaluates to 1."
-msgstr ""
-
-#: builtins.c:1131
-msgid ""
-"The WORDS are expanded, generating a list of words.  The\n"
-"    set of expanded words is printed on the standard error, each\n"
-"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
-"    is assumed.  The PS3 prompt is then displayed and a line read\n"
-"    from the standard input.  If the line consists of the number\n"
-"    corresponding to one of the displayed words, then NAME is set\n"
-"    to that word.  If the line is empty, WORDS and the prompt are\n"
-"    redisplayed.  If EOF is read, the command completes.  Any other\n"
-"    value read causes NAME to be set to null.  The line read is saved\n"
-"    in the variable REPLY.  COMMANDS are executed after each selection\n"
-"    until a break command is executed."
-msgstr ""
-
-#: builtins.c:1147
-msgid ""
-"Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-"    and system CPU time spent executing PIPELINE when it terminates.\n"
-"    The return status is the return status of PIPELINE.  The `-p' option\n"
-"    prints the timing summary in a slightly different format.  This uses\n"
-"    the value of the TIMEFORMAT variable as the output format."
-msgstr ""
-
-#: builtins.c:1157
-msgid ""
-"Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
-"    `|' is used to separate multiple patterns."
-msgstr ""
-
-#: builtins.c:1164
-msgid ""
-"The `if COMMANDS' list is executed.  If its exit status is zero, then the\n"
-"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
-"is\n"
-"    executed in turn, and if its exit status is zero, the corresponding\n"
-"    `then COMMANDS' list is executed and the if command completes.  "
-"Otherwise,\n"
-"    the `else COMMANDS' list is executed, if present.  The exit status of "
-"the\n"
-"    entire construct is the exit status of the last command executed, or "
-"zero\n"
-"    if no condition tested true."
-msgstr ""
-
-#: builtins.c:1176
-msgid ""
-"Expand and execute COMMANDS as long as the final command in the\n"
-"    `while' COMMANDS has an exit status of zero."
-msgstr ""
-
-#: builtins.c:1183
-msgid ""
-"Expand and execute COMMANDS as long as the final command in the\n"
-"    `until' COMMANDS has an exit status which is not zero."
-msgstr ""
-
-#: builtins.c:1190
-msgid ""
-"Create a simple command invoked by NAME which runs COMMANDS.\n"
-"    Arguments on the command line along with NAME are passed to the\n"
-"    function as $0 .. $n."
-msgstr ""
-
-#: builtins.c:1198
-msgid ""
-"Run a set of commands in a group.  This is one way to redirect an\n"
-"    entire set of commands."
-msgstr ""
-
-#: builtins.c:1205
-msgid ""
-"Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
-"    stopped or background job.  JOB_SPEC can specify either a job name\n"
-"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
-"    the background, as if the job specification had been supplied as an\n"
-"    argument to `bg'."
-msgstr ""
-
-#: builtins.c:1215
-msgid ""
-"The EXPRESSION is evaluated according to the rules for arithmetic\n"
-"    evaluation.  Equivalent to \"let EXPRESSION\"."
-msgstr ""
-
-#: builtins.c:1222
-msgid ""
-"Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
-"    expression EXPRESSION.  Expressions are composed of the same primaries "
-"used\n"
-"    by the `test' builtin, and may be combined using the following "
-"operators\n"
-"    \n"
-"    \t( EXPRESSION )\tReturns the value of EXPRESSION\n"
-"    \t! EXPRESSION\tTrue if EXPRESSION is false; else false\n"
-"    \tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-"    \tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-"    \n"
-"    When the `==' and `!=' operators are used, the string to the right of "
-"the\n"
-"    operator is used as a pattern and pattern matching is performed.  The\n"
-"    && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-"    determine the expression's value."
-msgstr ""
-
-#: builtins.c:1240
-msgid ""
-"BASH_VERSION\tVersion information for this Bash.\n"
-"    CDPATH\tA colon-separated list of directories to search\n"
-"    \t\tfor directries given as arguments to `cd'.\n"
-"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-"    \t\tbe ignored by pathname expansion.\n"
-"    HISTFILE\tThe name of the file where your command history is stored.\n"
-"    HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
-"    HISTSIZE\tThe maximum number of history lines that a running\n"
-"    \t\tshell can access.\n"
-"    HOME\tThe complete pathname to your login directory.\n"
-"    HOSTNAME\tThe name of the current host.\n"
-"    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
-"    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
-"    \t\tcharacter as the sole input.  If set, then the value\n"
-"    \t\tof it is the number of EOF characters that can be seen\n"
-"    \t\tin a row on an empty line before the shell will exit\n"
-"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
-"    MACHTYPE\tA string describing the current system Bash is running on.\n"
-"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-"    \t\tfor new mail.\n"
-"    OSTYPE\tThe version of Unix this version of Bash is running on.\n"
-"    PATH\tA colon-separated list of directories to search when\n"
-"    \t\tlooking for commands.\n"
-"    PROMPT_COMMAND\tA command to be executed before the printing of each\n"
-"    \t\tprimary prompt.\n"
-"    PS1\t\tThe primary prompt string.\n"
-"    PS2\t\tThe secondary prompt string.\n"
-"    PWD\t\tThe full pathname of the current directory.\n"
-"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-"    TERM\tThe name of the current terminal type.\n"
-"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-"    \t\t`time' reserved word.\n"
-"    auto_resume\tNon-null means a command word appearing on a line by\n"
-"    \t\titself is first looked for in the list of currently\n"
-"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
-"    \t\tA value of `exact' means that the command word must\n"
-"    \t\texactly match a command in the list of stopped jobs.  A\n"
-"    \t\tvalue of `substring' means that the command word must\n"
-"    \t\tmatch a substring of the job.  Any other value means that\n"
-"    \t\tthe command must be a prefix of a stopped job.\n"
-"    histchars\tCharacters controlling history expansion and quick\n"
-"    \t\tsubstitution.  The first character is the history\n"
-"    \t\tsubstitution character, usually `!'.  The second is\n"
-"    \t\tthe `quick substitution' character, usually `^'.  The\n"
-"    \t\tthird is the `history comment' character, usually `#'.\n"
-"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-"    \t\tcommands should be saved on the history list.\n"
-msgstr ""
-
-#: builtins.c:1295
-msgid ""
-"Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"    -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"    -n\tsuppress the normal change of directory when adding directories\n"
-"    \tto the stack, so only the stack is manipulated.\n"
-"    \n"
-"    dir\tadds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    You can see the directory stack with the `dirs' command."
-msgstr ""
-
-#: builtins.c:1321
-msgid ""
-"Removes entries from the directory stack.  With no arguments,\n"
-"    removes the top directory from the stack, and cd's to the new\n"
-"    top directory.\n"
-"    \n"
-"    +N\tremoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"    -N\tremoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    -n\tsuppress the normal change of directory when removing directories\n"
-"    \tfrom the stack, so only the stack is manipulated.\n"
-"    \n"
-"    You can see the directory stack with the `dirs' command."
-msgstr ""
-
-#: builtins.c:1344
-msgid ""
-"Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    The -l flag specifies that `dirs' should not print shorthand versions\n"
-"    of directories which are relative to your home directory.  This means\n"
-"    that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag\n"
-"    causes `dirs' to print the directory stack with one entry per line,\n"
-"    prepending the directory name with its position in the stack.  The -p\n"
-"    flag does the same thing, but the stack position is not prepended.\n"
-"    The -c flag clears the directory stack by deleting all of the elements.\n"
-"    \n"
-"    +N\tdisplays the Nth entry counting from the left of the list shown by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"    -N\tdisplays the Nth entry counting from the right of the list shown by\n"
-"    \tdirs when invoked without options, starting with zero."
-msgstr ""
-
-#: builtins.c:1367
-msgid ""
-"Toggle the values of variables controlling optional behavior.\n"
-"    The -s flag means to enable (set) each OPTNAME; the -u flag\n"
-"    unsets each OPTNAME.  The -q flag suppresses output; the exit\n"
-"    status indicates whether each OPTNAME is set or unset.  The -o\n"
-"    option restricts the OPTNAMEs to those defined for use with\n"
-"    `set -o'.  With no options, or with the -p option, a list of all\n"
-"    settable options is displayed, with an indication of whether or\n"
-"    not each is set."
-msgstr ""
-
-#: builtins.c:1380
-msgid ""
-"printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT\n"
-"    is a character string which contains three types of objects: plain\n"
-"    characters, which are simply copied to standard output, character "
-"escape\n"
-"    sequences which are converted and copied to the standard output, and\n"
-"    format specifications, each of which causes printing of the next "
-"successive\n"
-"    argument.  In addition to the standard printf(1) formats, %b means to\n"
-"    expand backslash escape sequences in the corresponding argument, and %q\n"
-"    means to quote the argument in a way that can be reused as shell input.\n"
-"    If the -v option is supplied, the output is placed into the value of "
-"the\n"
-"    shell variable VAR rather than being sent to the standard output."
-msgstr ""
-
-#: builtins.c:1396
-msgid ""
-"For each NAME, specify how arguments are to be completed.\n"
-"    If the -p option is supplied, or if no options are supplied, existing\n"
-"    completion specifications are printed in a way that allows them to be\n"
-"    reused as input.  The -r option removes a completion specification for\n"
-"    each NAME, or, if no NAMEs are supplied, all completion specifications."
-msgstr ""
-
-#: builtins.c:1408
-msgid ""
-"Display the possible completions depending on the options.  Intended\n"
-"    to be used from within a shell function generating possible "
-"completions.\n"
-"    If the optional WORD argument is supplied, matches against WORD are\n"
-"    generated."
-msgstr ""
diff --git a/po/bash-4.0.pot b/po/bash-4.0.pot
deleted file mode 100644 (file)
index 3f78e05..0000000
+++ /dev/null
@@ -1,3824 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-19 14:53-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: arrayfunc.c:50
-msgid "bad array subscript"
-msgstr ""
-
-#: arrayfunc.c:313 builtins/declare.def:474
-#, c-format
-msgid "%s: cannot convert indexed to associative array"
-msgstr ""
-
-#: arrayfunc.c:479
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr ""
-
-#: arrayfunc.c:481
-#, c-format
-msgid "%s: cannot assign to non-numeric index"
-msgstr ""
-
-#: arrayfunc.c:517
-#, c-format
-msgid "%s: %s: must use subscript when assigning associative array"
-msgstr ""
-
-#: bashhist.c:379
-#, c-format
-msgid "%s: cannot create: %s"
-msgstr ""
-
-#: bashline.c:3413
-msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-
-#: bashline.c:3491
-#, c-format
-msgid "%s: first non-whitespace character is not `\"'"
-msgstr ""
-
-#: bashline.c:3520
-#, c-format
-msgid "no closing `%c' in %s"
-msgstr ""
-
-#: bashline.c:3554
-#, c-format
-msgid "%s: missing colon separator"
-msgstr ""
-
-#: builtins/bind.def:120 builtins/bind.def:123
-msgid "line editing not enabled"
-msgstr ""
-
-#: builtins/bind.def:206
-#, c-format
-msgid "`%s': invalid keymap name"
-msgstr ""
-
-#: builtins/bind.def:245
-#, c-format
-msgid "%s: cannot read: %s"
-msgstr ""
-
-#: builtins/bind.def:260
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr ""
-
-#: builtins/bind.def:295 builtins/bind.def:325
-#, c-format
-msgid "`%s': unknown function name"
-msgstr ""
-
-#: builtins/bind.def:303
-#, c-format
-msgid "%s is not bound to any keys.\n"
-msgstr ""
-
-#: builtins/bind.def:307
-#, c-format
-msgid "%s can be invoked via "
-msgstr ""
-
-#: builtins/break.def:77 builtins/break.def:117
-msgid "loop count"
-msgstr ""
-
-#: builtins/break.def:137
-msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr ""
-
-#: builtins/caller.def:133
-msgid ""
-"Returns the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns "
-msgstr ""
-
-#: builtins/cd.def:215
-msgid "HOME not set"
-msgstr ""
-
-#: builtins/cd.def:227
-msgid "OLDPWD not set"
-msgstr ""
-
-#: builtins/common.c:101
-#, c-format
-msgid "line %d: "
-msgstr ""
-
-#: builtins/common.c:139 error.c:260
-#, c-format
-msgid "warning: "
-msgstr ""
-
-#: builtins/common.c:153
-#, c-format
-msgid "%s: usage: "
-msgstr ""
-
-#: builtins/common.c:166 test.c:822
-msgid "too many arguments"
-msgstr ""
-
-#: builtins/common.c:191 shell.c:493 shell.c:774
-#, c-format
-msgid "%s: option requires an argument"
-msgstr ""
-
-#: builtins/common.c:198
-#, c-format
-msgid "%s: numeric argument required"
-msgstr ""
-
-#: builtins/common.c:205
-#, c-format
-msgid "%s: not found"
-msgstr ""
-
-#: builtins/common.c:214 shell.c:787
-#, c-format
-msgid "%s: invalid option"
-msgstr ""
-
-#: builtins/common.c:221
-#, c-format
-msgid "%s: invalid option name"
-msgstr ""
-
-#: builtins/common.c:228 general.c:231 general.c:236
-#, c-format
-msgid "`%s': not a valid identifier"
-msgstr ""
-
-#: builtins/common.c:238
-msgid "invalid octal number"
-msgstr ""
-
-#: builtins/common.c:240
-msgid "invalid hex number"
-msgstr ""
-
-#: builtins/common.c:242 expr.c:1255
-msgid "invalid number"
-msgstr ""
-
-#: builtins/common.c:250
-#, c-format
-msgid "%s: invalid signal specification"
-msgstr ""
-
-#: builtins/common.c:257
-#, c-format
-msgid "`%s': not a pid or valid job spec"
-msgstr ""
-
-#: builtins/common.c:264 error.c:453
-#, c-format
-msgid "%s: readonly variable"
-msgstr ""
-
-#: builtins/common.c:272
-#, c-format
-msgid "%s: %s out of range"
-msgstr ""
-
-#: builtins/common.c:272 builtins/common.c:274
-msgid "argument"
-msgstr ""
-
-#: builtins/common.c:274
-#, c-format
-msgid "%s out of range"
-msgstr ""
-
-#: builtins/common.c:282
-#, c-format
-msgid "%s: no such job"
-msgstr ""
-
-#: builtins/common.c:290
-#, c-format
-msgid "%s: no job control"
-msgstr ""
-
-#: builtins/common.c:292
-msgid "no job control"
-msgstr ""
-
-#: builtins/common.c:302
-#, c-format
-msgid "%s: restricted"
-msgstr ""
-
-#: builtins/common.c:304
-msgid "restricted"
-msgstr ""
-
-#: builtins/common.c:312
-#, c-format
-msgid "%s: not a shell builtin"
-msgstr ""
-
-#: builtins/common.c:321
-#, c-format
-msgid "write error: %s"
-msgstr ""
-
-#: builtins/common.c:329
-#, c-format
-msgid "error setting terminal attributes: %s"
-msgstr ""
-
-#: builtins/common.c:331
-#, c-format
-msgid "error getting terminal attributes: %s"
-msgstr ""
-
-#: builtins/common.c:563
-#, c-format
-msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr ""
-
-#: builtins/common.c:629 builtins/common.c:631
-#, c-format
-msgid "%s: ambiguous job spec"
-msgstr ""
-
-#: builtins/complete.def:270
-#, c-format
-msgid "%s: invalid action name"
-msgstr ""
-
-#: builtins/complete.def:430 builtins/complete.def:615
-#: builtins/complete.def:813
-#, c-format
-msgid "%s: no completion specification"
-msgstr ""
-
-#: builtins/complete.def:667
-msgid "warning: -F option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:669
-msgid "warning: -C option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:786
-msgid "not currently executing completion function"
-msgstr ""
-
-#: builtins/declare.def:122
-msgid "can only be used in a function"
-msgstr ""
-
-#: builtins/declare.def:353
-msgid "cannot use `-f' to make functions"
-msgstr ""
-
-#: builtins/declare.def:365 execute_cmd.c:4818
-#, c-format
-msgid "%s: readonly function"
-msgstr ""
-
-#: builtins/declare.def:461
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr ""
-
-#: builtins/declare.def:468
-#, c-format
-msgid "%s: cannot convert associative to indexed array"
-msgstr ""
-
-#: builtins/enable.def:137 builtins/enable.def:145
-msgid "dynamic loading not available"
-msgstr ""
-
-#: builtins/enable.def:312
-#, c-format
-msgid "cannot open shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:335
-#, c-format
-msgid "cannot find %s in shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:459
-#, c-format
-msgid "%s: not dynamically loaded"
-msgstr ""
-
-#: builtins/enable.def:474
-#, c-format
-msgid "%s: cannot delete: %s"
-msgstr ""
-
-#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4675
-#: shell.c:1439
-#, c-format
-msgid "%s: is a directory"
-msgstr ""
-
-#: builtins/evalfile.c:139
-#, c-format
-msgid "%s: not a regular file"
-msgstr ""
-
-#: builtins/evalfile.c:147
-#, c-format
-msgid "%s: file is too large"
-msgstr ""
-
-#: builtins/evalfile.c:185 execute_cmd.c:4745 shell.c:1449
-#, c-format
-msgid "%s: cannot execute binary file"
-msgstr ""
-
-#: builtins/exec.def:212
-#, c-format
-msgid "%s: cannot execute: %s"
-msgstr ""
-
-#: builtins/exit.def:65
-#, c-format
-msgid "logout\n"
-msgstr ""
-
-#: builtins/exit.def:88
-msgid "not login shell: use `exit'"
-msgstr ""
-
-#: builtins/exit.def:120
-#, c-format
-msgid "There are stopped jobs.\n"
-msgstr ""
-
-#: builtins/exit.def:122
-#, c-format
-msgid "There are running jobs.\n"
-msgstr ""
-
-#: builtins/fc.def:261
-msgid "no command found"
-msgstr ""
-
-#: builtins/fc.def:341
-msgid "history specification"
-msgstr ""
-
-#: builtins/fc.def:362
-#, c-format
-msgid "%s: cannot open temp file: %s"
-msgstr ""
-
-#: builtins/fg_bg.def:149 builtins/jobs.def:282
-msgid "current"
-msgstr ""
-
-#: builtins/fg_bg.def:158
-#, c-format
-msgid "job %d started without job control"
-msgstr ""
-
-#: builtins/getopt.c:110
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr ""
-
-#: builtins/getopt.c:111
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr ""
-
-#: builtins/hash.def:92
-msgid "hashing disabled"
-msgstr ""
-
-#: builtins/hash.def:138
-#, c-format
-msgid "%s: hash table empty\n"
-msgstr ""
-
-#: builtins/hash.def:244
-#, c-format
-msgid "hits\tcommand\n"
-msgstr ""
-
-#: builtins/help.def:130
-#, c-format
-msgid "Shell commands matching keyword `"
-msgid_plural "Shell commands matching keywords `"
-msgstr[0] ""
-msgstr[1] ""
-
-#: builtins/help.def:168
-#, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-
-#: builtins/help.def:185
-#, c-format
-msgid "%s: cannot open: %s"
-msgstr ""
-
-#: builtins/help.def:337
-#, c-format
-msgid ""
-"These shell commands are defined internally.  Type `help' to see this list.\n"
-"Type `help name' to find out more about the function `name'.\n"
-"Use `info bash' to find out more about the shell in general.\n"
-"Use `man -k' or `info' to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-msgstr ""
-
-#: builtins/history.def:154
-msgid "cannot use more than one of -anrw"
-msgstr ""
-
-#: builtins/history.def:186
-msgid "history position"
-msgstr ""
-
-#: builtins/history.def:365
-#, c-format
-msgid "%s: history expansion failed"
-msgstr ""
-
-#: builtins/inlib.def:71
-#, c-format
-msgid "%s: inlib failed"
-msgstr ""
-
-#: builtins/jobs.def:109
-msgid "no other options allowed with `-x'"
-msgstr ""
-
-#: builtins/kill.def:197
-#, c-format
-msgid "%s: arguments must be process or job IDs"
-msgstr ""
-
-#: builtins/kill.def:260
-msgid "Unknown error"
-msgstr ""
-
-#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516
-msgid "expression expected"
-msgstr ""
-
-#: builtins/mapfile.def:241 builtins/read.def:272
-#, c-format
-msgid "%s: invalid file descriptor specification"
-msgstr ""
-
-#: builtins/mapfile.def:249 builtins/read.def:279
-#, c-format
-msgid "%d: invalid file descriptor: %s"
-msgstr ""
-
-#: builtins/mapfile.def:258 builtins/mapfile.def:296
-#, c-format
-msgid "%s: invalid line count"
-msgstr ""
-
-#: builtins/mapfile.def:269
-#, c-format
-msgid "%s: invalid array origin"
-msgstr ""
-
-#: builtins/mapfile.def:286
-#, c-format
-msgid "%s: invalid callback quantum"
-msgstr ""
-
-#: builtins/mapfile.def:318
-msgid "empty array variable name"
-msgstr ""
-
-#: builtins/mapfile.def:339
-msgid "array variable support required"
-msgstr ""
-
-#: builtins/printf.def:367
-#, c-format
-msgid "`%s': missing format character"
-msgstr ""
-
-#: builtins/printf.def:544
-#, c-format
-msgid "`%c': invalid format character"
-msgstr ""
-
-#: builtins/printf.def:571
-#, c-format
-msgid "warning: %s: %s"
-msgstr ""
-
-#: builtins/printf.def:750
-msgid "missing hex digit for \\x"
-msgstr ""
-
-#: builtins/pushd.def:195
-msgid "no other directory"
-msgstr ""
-
-#: builtins/pushd.def:462
-msgid "<no current directory>"
-msgstr ""
-
-#: builtins/pushd.def:506
-msgid "directory stack empty"
-msgstr ""
-
-#: builtins/pushd.def:508
-msgid "directory stack index"
-msgstr ""
-
-#: builtins/pushd.def:683
-msgid ""
-"Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"\tdirs when invoked without options, starting with zero."
-msgstr ""
-
-#: builtins/pushd.def:705
-msgid ""
-"Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-
-#: builtins/pushd.def:730
-msgid ""
-"Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-
-#: builtins/read.def:248
-#, c-format
-msgid "%s: invalid timeout specification"
-msgstr ""
-
-#: builtins/read.def:574
-#, c-format
-msgid "read error: %d: %s"
-msgstr ""
-
-#: builtins/return.def:73
-msgid "can only `return' from a function or sourced script"
-msgstr ""
-
-#: builtins/set.def:768
-msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-
-#: builtins/set.def:805
-#, c-format
-msgid "%s: cannot unset"
-msgstr ""
-
-#: builtins/set.def:812
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr ""
-
-#: builtins/set.def:823
-#, c-format
-msgid "%s: not an array variable"
-msgstr ""
-
-#: builtins/setattr.def:186
-#, c-format
-msgid "%s: not a function"
-msgstr ""
-
-#: builtins/shift.def:71 builtins/shift.def:77
-msgid "shift count"
-msgstr ""
-
-#: builtins/shopt.def:254
-msgid "cannot set and unset shell options simultaneously"
-msgstr ""
-
-#: builtins/shopt.def:319
-#, c-format
-msgid "%s: invalid shell option name"
-msgstr ""
-
-#: builtins/source.def:128
-msgid "filename argument required"
-msgstr ""
-
-#: builtins/source.def:153
-#, c-format
-msgid "%s: file not found"
-msgstr ""
-
-#: builtins/suspend.def:101
-msgid "cannot suspend"
-msgstr ""
-
-#: builtins/suspend.def:111
-msgid "cannot suspend a login shell"
-msgstr ""
-
-#: builtins/type.def:234
-#, c-format
-msgid "%s is aliased to `%s'\n"
-msgstr ""
-
-#: builtins/type.def:255
-#, c-format
-msgid "%s is a shell keyword\n"
-msgstr ""
-
-#: builtins/type.def:274
-#, c-format
-msgid "%s is a function\n"
-msgstr ""
-
-#: builtins/type.def:296
-#, c-format
-msgid "%s is a shell builtin\n"
-msgstr ""
-
-#: builtins/type.def:317 builtins/type.def:391
-#, c-format
-msgid "%s is %s\n"
-msgstr ""
-
-#: builtins/type.def:337
-#, c-format
-msgid "%s is hashed (%s)\n"
-msgstr ""
-
-#: builtins/ulimit.def:372
-#, c-format
-msgid "%s: invalid limit argument"
-msgstr ""
-
-#: builtins/ulimit.def:398
-#, c-format
-msgid "`%c': bad command"
-msgstr ""
-
-#: builtins/ulimit.def:427
-#, c-format
-msgid "%s: cannot get limit: %s"
-msgstr ""
-
-#: builtins/ulimit.def:453
-msgid "limit"
-msgstr ""
-
-#: builtins/ulimit.def:465 builtins/ulimit.def:765
-#, c-format
-msgid "%s: cannot modify limit: %s"
-msgstr ""
-
-#: builtins/umask.def:118
-msgid "octal number"
-msgstr ""
-
-#: builtins/umask.def:231
-#, c-format
-msgid "`%c': invalid symbolic mode operator"
-msgstr ""
-
-#: builtins/umask.def:286
-#, c-format
-msgid "`%c': invalid symbolic mode character"
-msgstr ""
-
-#: error.c:89 error.c:320 error.c:322 error.c:324
-msgid " line "
-msgstr ""
-
-#: error.c:164
-#, c-format
-msgid "last command: %s\n"
-msgstr ""
-
-#: error.c:172
-#, c-format
-msgid "Aborting..."
-msgstr ""
-
-#: error.c:405
-msgid "unknown command error"
-msgstr ""
-
-#: error.c:406
-msgid "bad command type"
-msgstr ""
-
-#: error.c:407
-msgid "bad connector"
-msgstr ""
-
-#: error.c:408
-msgid "bad jump"
-msgstr ""
-
-#: error.c:446
-#, c-format
-msgid "%s: unbound variable"
-msgstr ""
-
-#: eval.c:181
-#, c-format
-msgid "\atimed out waiting for input: auto-logout\n"
-msgstr ""
-
-#: execute_cmd.c:491
-#, c-format
-msgid "cannot redirect standard input from /dev/null: %s"
-msgstr ""
-
-#: execute_cmd.c:1112
-#, c-format
-msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr ""
-
-#: execute_cmd.c:2011
-msgid "pipe error"
-msgstr ""
-
-#: execute_cmd.c:4363
-#, c-format
-msgid "%s: restricted: cannot specify `/' in command names"
-msgstr ""
-
-#: execute_cmd.c:4454
-#, c-format
-msgid "%s: command not found"
-msgstr ""
-
-#: execute_cmd.c:4708
-#, c-format
-msgid "%s: %s: bad interpreter"
-msgstr ""
-
-#: execute_cmd.c:4857
-#, c-format
-msgid "cannot duplicate fd %d to fd %d"
-msgstr ""
-
-#: expr.c:241
-msgid "expression recursion level exceeded"
-msgstr ""
-
-#: expr.c:265
-msgid "recursion stack underflow"
-msgstr ""
-
-#: expr.c:379
-msgid "syntax error in expression"
-msgstr ""
-
-#: expr.c:419
-msgid "attempted assignment to non-variable"
-msgstr ""
-
-#: expr.c:440 expr.c:445 expr.c:756
-msgid "division by 0"
-msgstr ""
-
-#: expr.c:471
-msgid "bug: bad expassign token"
-msgstr ""
-
-#: expr.c:513
-msgid "`:' expected for conditional expression"
-msgstr ""
-
-#: expr.c:781
-msgid "exponent less than 0"
-msgstr ""
-
-#: expr.c:826
-msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
-
-#: expr.c:854
-msgid "missing `)'"
-msgstr ""
-
-#: expr.c:897 expr.c:1175
-msgid "syntax error: operand expected"
-msgstr ""
-
-#: expr.c:1177
-msgid "syntax error: invalid arithmetic operator"
-msgstr ""
-
-#: expr.c:1201
-#, c-format
-msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr ""
-
-#: expr.c:1259
-msgid "invalid arithmetic base"
-msgstr ""
-
-#: expr.c:1279
-msgid "value too great for base"
-msgstr ""
-
-#: expr.c:1328
-#, c-format
-msgid "%s: expression error\n"
-msgstr ""
-
-#: general.c:61
-msgid "getcwd: cannot access parent directories"
-msgstr ""
-
-#: input.c:94 subst.c:4559
-#, c-format
-msgid "cannot reset nodelay mode for fd %d"
-msgstr ""
-
-#: input.c:258
-#, c-format
-msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr ""
-
-#: input.c:266
-#, c-format
-msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr ""
-
-#: jobs.c:466
-msgid "start_pipeline: pgrp pipe"
-msgstr ""
-
-#: jobs.c:887
-#, c-format
-msgid "forked pid %d appears in running job %d"
-msgstr ""
-
-#: jobs.c:1005
-#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr ""
-
-#: jobs.c:1110
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr ""
-
-#: jobs.c:1113
-#, c-format
-msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr ""
-
-#: jobs.c:1401
-#, c-format
-msgid "describe_pid: %ld: no such pid"
-msgstr ""
-
-#: jobs.c:1416
-#, c-format
-msgid "Signal %d"
-msgstr ""
-
-#: jobs.c:1430 jobs.c:1455
-msgid "Done"
-msgstr ""
-
-#: jobs.c:1435 siglist.c:122
-msgid "Stopped"
-msgstr ""
-
-#: jobs.c:1439
-#, c-format
-msgid "Stopped(%s)"
-msgstr ""
-
-#: jobs.c:1443
-msgid "Running"
-msgstr ""
-
-#: jobs.c:1457
-#, c-format
-msgid "Done(%d)"
-msgstr ""
-
-#: jobs.c:1459
-#, c-format
-msgid "Exit %d"
-msgstr ""
-
-#: jobs.c:1462
-msgid "Unknown status"
-msgstr ""
-
-#: jobs.c:1549
-#, c-format
-msgid "(core dumped) "
-msgstr ""
-
-#: jobs.c:1568
-#, c-format
-msgid "  (wd: %s)"
-msgstr ""
-
-#: jobs.c:1771
-#, c-format
-msgid "child setpgid (%ld to %ld)"
-msgstr ""
-
-#: jobs.c:2099 nojobs.c:585
-#, c-format
-msgid "wait: pid %ld is not a child of this shell"
-msgstr ""
-
-#: jobs.c:2326
-#, c-format
-msgid "wait_for: No record of process %ld"
-msgstr ""
-
-#: jobs.c:2598
-#, c-format
-msgid "wait_for_job: job %d is stopped"
-msgstr ""
-
-#: jobs.c:2820
-#, c-format
-msgid "%s: job has terminated"
-msgstr ""
-
-#: jobs.c:2829
-#, c-format
-msgid "%s: job %d already in background"
-msgstr ""
-
-#: jobs.c:3492
-#, c-format
-msgid "%s: line %d: "
-msgstr ""
-
-#: jobs.c:3506 nojobs.c:814
-#, c-format
-msgid " (core dumped)"
-msgstr ""
-
-#: jobs.c:3518 jobs.c:3531
-#, c-format
-msgid "(wd now: %s)\n"
-msgstr ""
-
-#: jobs.c:3563
-msgid "initialize_job_control: getpgrp failed"
-msgstr ""
-
-#: jobs.c:3623
-msgid "initialize_job_control: line discipline"
-msgstr ""
-
-#: jobs.c:3633
-msgid "initialize_job_control: setpgid"
-msgstr ""
-
-#: jobs.c:3661
-#, c-format
-msgid "cannot set terminal process group (%d)"
-msgstr ""
-
-#: jobs.c:3666
-msgid "no job control in this shell"
-msgstr ""
-
-#: lib/malloc/malloc.c:296
-#, c-format
-msgid "malloc: failed assertion: %s\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:312
-#, c-format
-msgid ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:313
-msgid "unknown"
-msgstr ""
-
-#: lib/malloc/malloc.c:797
-msgid "malloc: block on free list clobbered"
-msgstr ""
-
-#: lib/malloc/malloc.c:874
-msgid "free: called with already freed block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:877
-msgid "free: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:896
-msgid "free: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:902
-msgid "free: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/malloc.c:1001
-msgid "realloc: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:1016
-msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:1022
-msgid "realloc: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/table.c:177
-#, c-format
-msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
-
-#: lib/malloc/table.c:184
-#, c-format
-msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
-
-#: lib/malloc/table.c:220
-#, c-format
-msgid "register_free: %p already in table as free?\n"
-msgstr ""
-
-#: lib/sh/fmtulong.c:101
-msgid "invalid base"
-msgstr ""
-
-#: lib/sh/netopen.c:168
-#, c-format
-msgid "%s: host unknown"
-msgstr ""
-
-#: lib/sh/netopen.c:175
-#, c-format
-msgid "%s: invalid service"
-msgstr ""
-
-#: lib/sh/netopen.c:306
-#, c-format
-msgid "%s: bad network path specification"
-msgstr ""
-
-#: lib/sh/netopen.c:346
-msgid "network operations not supported"
-msgstr ""
-
-#: mailcheck.c:433
-msgid "You have mail in $_"
-msgstr ""
-
-#: mailcheck.c:458
-msgid "You have new mail in $_"
-msgstr ""
-
-#: mailcheck.c:474
-#, c-format
-msgid "The mail in %s has been read\n"
-msgstr ""
-
-#: make_cmd.c:322
-msgid "syntax error: arithmetic expression required"
-msgstr ""
-
-#: make_cmd.c:324
-msgid "syntax error: `;' unexpected"
-msgstr ""
-
-#: make_cmd.c:325
-#, c-format
-msgid "syntax error: `((%s))'"
-msgstr ""
-
-#: make_cmd.c:567
-#, c-format
-msgid "make_here_document: bad instruction type %d"
-msgstr ""
-
-#: make_cmd.c:651
-#, c-format
-msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
-
-#: make_cmd.c:746
-#, c-format
-msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
-
-#: parse.y:2986 parse.y:3218
-#, c-format
-msgid "unexpected EOF while looking for matching `%c'"
-msgstr ""
-
-#: parse.y:3722
-msgid "unexpected EOF while looking for `]]'"
-msgstr ""
-
-#: parse.y:3727
-#, c-format
-msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr ""
-
-#: parse.y:3731
-msgid "syntax error in conditional expression"
-msgstr ""
-
-#: parse.y:3809
-#, c-format
-msgid "unexpected token `%s', expected `)'"
-msgstr ""
-
-#: parse.y:3813
-msgid "expected `)'"
-msgstr ""
-
-#: parse.y:3841
-#, c-format
-msgid "unexpected argument `%s' to conditional unary operator"
-msgstr ""
-
-#: parse.y:3845
-msgid "unexpected argument to conditional unary operator"
-msgstr ""
-
-#: parse.y:3885
-#, c-format
-msgid "unexpected token `%s', conditional binary operator expected"
-msgstr ""
-
-#: parse.y:3889
-msgid "conditional binary operator expected"
-msgstr ""
-
-#: parse.y:3906
-#, c-format
-msgid "unexpected argument `%s' to conditional binary operator"
-msgstr ""
-
-#: parse.y:3910
-msgid "unexpected argument to conditional binary operator"
-msgstr ""
-
-#: parse.y:3921
-#, c-format
-msgid "unexpected token `%c' in conditional command"
-msgstr ""
-
-#: parse.y:3924
-#, c-format
-msgid "unexpected token `%s' in conditional command"
-msgstr ""
-
-#: parse.y:3928
-#, c-format
-msgid "unexpected token %d in conditional command"
-msgstr ""
-
-#: parse.y:5195
-#, c-format
-msgid "syntax error near unexpected token `%s'"
-msgstr ""
-
-#: parse.y:5213
-#, c-format
-msgid "syntax error near `%s'"
-msgstr ""
-
-#: parse.y:5223
-msgid "syntax error: unexpected end of file"
-msgstr ""
-
-#: parse.y:5223
-msgid "syntax error"
-msgstr ""
-
-#: parse.y:5285
-#, c-format
-msgid "Use \"%s\" to leave the shell.\n"
-msgstr ""
-
-#: parse.y:5447
-msgid "unexpected EOF while looking for matching `)'"
-msgstr ""
-
-#: pcomplete.c:1018
-#, c-format
-msgid "completion: function `%s' not found"
-msgstr ""
-
-#: pcomplib.c:179
-#, c-format
-msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr ""
-
-#: print_cmd.c:285
-#, c-format
-msgid "print_command: bad connector `%d'"
-msgstr ""
-
-#: print_cmd.c:1348
-#, c-format
-msgid "cprintf: `%c': invalid format character"
-msgstr ""
-
-#: redir.c:105
-msgid "file descriptor out of range"
-msgstr ""
-
-#: redir.c:148
-#, c-format
-msgid "%s: ambiguous redirect"
-msgstr ""
-
-#: redir.c:152
-#, c-format
-msgid "%s: cannot overwrite existing file"
-msgstr ""
-
-#: redir.c:157
-#, c-format
-msgid "%s: restricted: cannot redirect output"
-msgstr ""
-
-#: redir.c:162
-#, c-format
-msgid "cannot create temp file for here-document: %s"
-msgstr ""
-
-#: redir.c:517
-msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
-
-#: redir.c:1023
-msgid "redirection error: cannot duplicate fd"
-msgstr ""
-
-#: shell.c:328
-msgid "could not find /tmp, please create!"
-msgstr ""
-
-#: shell.c:332
-msgid "/tmp must be a valid directory name"
-msgstr ""
-
-#: shell.c:876
-#, c-format
-msgid "%c%c: invalid option"
-msgstr ""
-
-#: shell.c:1638
-msgid "I have no name!"
-msgstr ""
-
-#: shell.c:1778
-#, c-format
-msgid "GNU bash, version %s-(%s)\n"
-msgstr ""
-
-#: shell.c:1779
-#, c-format
-msgid ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-msgstr ""
-
-#: shell.c:1781
-msgid "GNU long options:\n"
-msgstr ""
-
-#: shell.c:1785
-msgid "Shell options:\n"
-msgstr ""
-
-#: shell.c:1786
-msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
-
-#: shell.c:1801
-#, c-format
-msgid "\t-%s or -o option\n"
-msgstr ""
-
-#: shell.c:1807
-#, c-format
-msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-
-#: shell.c:1808
-#, c-format
-msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-
-#: shell.c:1809
-#, c-format
-msgid "Use the `bashbug' command to report bugs.\n"
-msgstr ""
-
-#: sig.c:583
-#, c-format
-msgid "sigprocmask: %d: invalid operation"
-msgstr ""
-
-#: siglist.c:47
-msgid "Bogus signal"
-msgstr ""
-
-#: siglist.c:50
-msgid "Hangup"
-msgstr ""
-
-#: siglist.c:54
-msgid "Interrupt"
-msgstr ""
-
-#: siglist.c:58
-msgid "Quit"
-msgstr ""
-
-#: siglist.c:62
-msgid "Illegal instruction"
-msgstr ""
-
-#: siglist.c:66
-msgid "BPT trace/trap"
-msgstr ""
-
-#: siglist.c:74
-msgid "ABORT instruction"
-msgstr ""
-
-#: siglist.c:78
-msgid "EMT instruction"
-msgstr ""
-
-#: siglist.c:82
-msgid "Floating point exception"
-msgstr ""
-
-#: siglist.c:86
-msgid "Killed"
-msgstr ""
-
-#: siglist.c:90
-msgid "Bus error"
-msgstr ""
-
-#: siglist.c:94
-msgid "Segmentation fault"
-msgstr ""
-
-#: siglist.c:98
-msgid "Bad system call"
-msgstr ""
-
-#: siglist.c:102
-msgid "Broken pipe"
-msgstr ""
-
-#: siglist.c:106
-msgid "Alarm clock"
-msgstr ""
-
-#: siglist.c:110
-msgid "Terminated"
-msgstr ""
-
-#: siglist.c:114
-msgid "Urgent IO condition"
-msgstr ""
-
-#: siglist.c:118
-msgid "Stopped (signal)"
-msgstr ""
-
-#: siglist.c:126
-msgid "Continue"
-msgstr ""
-
-#: siglist.c:134
-msgid "Child death or stop"
-msgstr ""
-
-#: siglist.c:138
-msgid "Stopped (tty input)"
-msgstr ""
-
-#: siglist.c:142
-msgid "Stopped (tty output)"
-msgstr ""
-
-#: siglist.c:146
-msgid "I/O ready"
-msgstr ""
-
-#: siglist.c:150
-msgid "CPU limit"
-msgstr ""
-
-#: siglist.c:154
-msgid "File limit"
-msgstr ""
-
-#: siglist.c:158
-msgid "Alarm (virtual)"
-msgstr ""
-
-#: siglist.c:162
-msgid "Alarm (profile)"
-msgstr ""
-
-#: siglist.c:166
-msgid "Window changed"
-msgstr ""
-
-#: siglist.c:170
-msgid "Record lock"
-msgstr ""
-
-#: siglist.c:174
-msgid "User signal 1"
-msgstr ""
-
-#: siglist.c:178
-msgid "User signal 2"
-msgstr ""
-
-#: siglist.c:182
-msgid "HFT input data pending"
-msgstr ""
-
-#: siglist.c:186
-msgid "power failure imminent"
-msgstr ""
-
-#: siglist.c:190
-msgid "system crash imminent"
-msgstr ""
-
-#: siglist.c:194
-msgid "migrate process to another CPU"
-msgstr ""
-
-#: siglist.c:198
-msgid "programming error"
-msgstr ""
-
-#: siglist.c:202
-msgid "HFT monitor mode granted"
-msgstr ""
-
-#: siglist.c:206
-msgid "HFT monitor mode retracted"
-msgstr ""
-
-#: siglist.c:210
-msgid "HFT sound sequence has completed"
-msgstr ""
-
-#: siglist.c:214
-msgid "Information request"
-msgstr ""
-
-#: siglist.c:222
-msgid "Unknown Signal #"
-msgstr ""
-
-#: siglist.c:224
-#, c-format
-msgid "Unknown Signal #%d"
-msgstr ""
-
-#: subst.c:1181 subst.c:1302
-#, c-format
-msgid "bad substitution: no closing `%s' in %s"
-msgstr ""
-
-#: subst.c:2458
-#, c-format
-msgid "%s: cannot assign list to array member"
-msgstr ""
-
-#: subst.c:4456 subst.c:4472
-msgid "cannot make pipe for process substitution"
-msgstr ""
-
-#: subst.c:4504
-msgid "cannot make child for process substitution"
-msgstr ""
-
-#: subst.c:4549
-#, c-format
-msgid "cannot open named pipe %s for reading"
-msgstr ""
-
-#: subst.c:4551
-#, c-format
-msgid "cannot open named pipe %s for writing"
-msgstr ""
-
-#: subst.c:4569
-#, c-format
-msgid "cannot duplicate named pipe %s as fd %d"
-msgstr ""
-
-#: subst.c:4765
-msgid "cannot make pipe for command substitution"
-msgstr ""
-
-#: subst.c:4799
-msgid "cannot make child for command substitution"
-msgstr ""
-
-#: subst.c:4816
-msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr ""
-
-#: subst.c:5318
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr ""
-
-#: subst.c:5608
-#, c-format
-msgid "%s: substring expression < 0"
-msgstr ""
-
-#: subst.c:6660
-#, c-format
-msgid "%s: bad substitution"
-msgstr ""
-
-#: subst.c:6740
-#, c-format
-msgid "$%s: cannot assign in this way"
-msgstr ""
-
-#: subst.c:7499
-#, c-format
-msgid "bad substitution: no closing \"`\" in %s"
-msgstr ""
-
-#: subst.c:8375
-#, c-format
-msgid "no match: %s"
-msgstr ""
-
-#: test.c:145
-msgid "argument expected"
-msgstr ""
-
-#: test.c:154
-#, c-format
-msgid "%s: integer expression expected"
-msgstr ""
-
-#: test.c:262
-msgid "`)' expected"
-msgstr ""
-
-#: test.c:264
-#, c-format
-msgid "`)' expected, found %s"
-msgstr ""
-
-#: test.c:279 test.c:688 test.c:691
-#, c-format
-msgid "%s: unary operator expected"
-msgstr ""
-
-#: test.c:444 test.c:731
-#, c-format
-msgid "%s: binary operator expected"
-msgstr ""
-
-#: test.c:806
-msgid "missing `]'"
-msgstr ""
-
-#: trap.c:201
-msgid "invalid signal number"
-msgstr ""
-
-#: trap.c:324
-#, c-format
-msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
-
-#: trap.c:328
-#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-
-#: trap.c:372
-#, c-format
-msgid "trap_handler: bad signal %d"
-msgstr ""
-
-#: variables.c:358
-#, c-format
-msgid "error importing function definition for `%s'"
-msgstr ""
-
-#: variables.c:736
-#, c-format
-msgid "shell level (%d) too high, resetting to 1"
-msgstr ""
-
-#: variables.c:1898
-msgid "make_local_variable: no function context at current scope"
-msgstr ""
-
-#: variables.c:3127
-msgid "all_local_variables: no function context at current scope"
-msgstr ""
-
-#: variables.c:3344 variables.c:3353
-#, c-format
-msgid "invalid character %d in exportstr for %s"
-msgstr ""
-
-#: variables.c:3359
-#, c-format
-msgid "no `=' in exportstr for %s"
-msgstr ""
-
-#: variables.c:3794
-msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-
-#: variables.c:3807
-msgid "pop_var_context: no global_variables context"
-msgstr ""
-
-#: variables.c:3881
-msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-
-#: version.c:46
-msgid "Copyright (C) 2009 Free Software Foundation, Inc."
-msgstr ""
-
-#: version.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-
-#: version.c:86
-#, c-format
-msgid "GNU bash, version %s (%s)\n"
-msgstr ""
-
-#: version.c:91
-#, c-format
-msgid "This is free software; you are free to change and redistribute it.\n"
-msgstr ""
-
-#: version.c:92
-#, c-format
-msgid "There is NO WARRANTY, to the extent permitted by law.\n"
-msgstr ""
-
-#: xmalloc.c:92
-#, c-format
-msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:94
-#, c-format
-msgid "xmalloc: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:114
-#, c-format
-msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:116
-#, c-format
-msgid "xrealloc: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:150
-#, c-format
-msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:152
-#, c-format
-msgid "xmalloc: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:174
-#, c-format
-msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:176
-#, c-format
-msgid "xrealloc: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: builtins.c:43
-msgid "alias [-p] [name[=value] ... ]"
-msgstr ""
-
-#: builtins.c:47
-msgid "unalias [-a] name [name ...]"
-msgstr ""
-
-#: builtins.c:51
-msgid ""
-"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-
-#: builtins.c:54
-msgid "break [n]"
-msgstr ""
-
-#: builtins.c:56
-msgid "continue [n]"
-msgstr ""
-
-#: builtins.c:58
-msgid "builtin [shell-builtin [arg ...]]"
-msgstr ""
-
-#: builtins.c:61
-msgid "caller [expr]"
-msgstr ""
-
-#: builtins.c:64
-msgid "cd [-L|-P] [dir]"
-msgstr ""
-
-#: builtins.c:66
-msgid "pwd [-LP]"
-msgstr ""
-
-#: builtins.c:68
-msgid ":"
-msgstr ""
-
-#: builtins.c:70
-msgid "true"
-msgstr ""
-
-#: builtins.c:72
-msgid "false"
-msgstr ""
-
-#: builtins.c:74
-msgid "command [-pVv] command [arg ...]"
-msgstr ""
-
-#: builtins.c:76
-msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]"
-msgstr ""
-
-#: builtins.c:78
-msgid "typeset [-aAfFilrtux] [-p] name[=value] ..."
-msgstr ""
-
-#: builtins.c:80
-msgid "local [option] name[=value] ..."
-msgstr ""
-
-#: builtins.c:83
-msgid "echo [-neE] [arg ...]"
-msgstr ""
-
-#: builtins.c:87
-msgid "echo [-n] [arg ...]"
-msgstr ""
-
-#: builtins.c:90
-msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr ""
-
-#: builtins.c:92
-msgid "eval [arg ...]"
-msgstr ""
-
-#: builtins.c:94
-msgid "getopts optstring name [arg]"
-msgstr ""
-
-#: builtins.c:96
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr ""
-
-#: builtins.c:98
-msgid "exit [n]"
-msgstr ""
-
-#: builtins.c:100
-msgid "logout [n]"
-msgstr ""
-
-#: builtins.c:103
-msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr ""
-
-#: builtins.c:107
-msgid "fg [job_spec]"
-msgstr ""
-
-#: builtins.c:111
-msgid "bg [job_spec ...]"
-msgstr ""
-
-#: builtins.c:114
-msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr ""
-
-#: builtins.c:117
-msgid "help [-ds] [pattern ...]"
-msgstr ""
-
-#: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-
-#: builtins.c:125
-msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr ""
-
-#: builtins.c:129
-msgid "disown [-h] [-ar] [jobspec ...]"
-msgstr ""
-
-#: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-
-#: builtins.c:134
-msgid "let arg [arg ...]"
-msgstr ""
-
-#: builtins.c:136
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-p prompt] [-t "
-"timeout] [-u fd] [name ...]"
-msgstr ""
-
-#: builtins.c:138
-msgid "return [n]"
-msgstr ""
-
-#: builtins.c:140
-msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]"
-msgstr ""
-
-#: builtins.c:142
-msgid "unset [-f] [-v] [name ...]"
-msgstr ""
-
-#: builtins.c:144
-msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr ""
-
-#: builtins.c:146
-msgid "readonly [-af] [name[=value] ...] or readonly -p"
-msgstr ""
-
-#: builtins.c:148
-msgid "shift [n]"
-msgstr ""
-
-#: builtins.c:150
-msgid "source filename [arguments]"
-msgstr ""
-
-#: builtins.c:152
-msgid ". filename [arguments]"
-msgstr ""
-
-#: builtins.c:155
-msgid "suspend [-f]"
-msgstr ""
-
-#: builtins.c:158
-msgid "test [expr]"
-msgstr ""
-
-#: builtins.c:160
-msgid "[ arg... ]"
-msgstr ""
-
-#: builtins.c:162
-msgid "times"
-msgstr ""
-
-#: builtins.c:164
-msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr ""
-
-#: builtins.c:166
-msgid "type [-afptP] name [name ...]"
-msgstr ""
-
-#: builtins.c:169
-msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]"
-msgstr ""
-
-#: builtins.c:172
-msgid "umask [-p] [-S] [mode]"
-msgstr ""
-
-#: builtins.c:175
-msgid "wait [id]"
-msgstr ""
-
-#: builtins.c:179
-msgid "wait [pid]"
-msgstr ""
-
-#: builtins.c:182
-msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:184
-msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:186
-msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:188
-msgid "time [-p] pipeline"
-msgstr ""
-
-#: builtins.c:190
-msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr ""
-
-#: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-
-#: builtins.c:194
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:196
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:198
-msgid "coproc [NAME] command [redirections]"
-msgstr ""
-
-#: builtins.c:200
-msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr ""
-
-#: builtins.c:202
-msgid "{ COMMANDS ; }"
-msgstr ""
-
-#: builtins.c:204
-msgid "job_spec [&]"
-msgstr ""
-
-#: builtins.c:206
-msgid "(( expression ))"
-msgstr ""
-
-#: builtins.c:208
-msgid "[[ expression ]]"
-msgstr ""
-
-#: builtins.c:210
-msgid "variables - Names and meanings of some shell variables"
-msgstr ""
-
-#: builtins.c:213
-msgid "pushd [-n] [+N | -N | dir]"
-msgstr ""
-
-#: builtins.c:217
-msgid "popd [-n] [+N | -N]"
-msgstr ""
-
-#: builtins.c:221
-msgid "dirs [-clpv] [+N] [-N]"
-msgstr ""
-
-#: builtins.c:224
-msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr ""
-
-#: builtins.c:226
-msgid "printf [-v var] format [arguments]"
-msgstr ""
-
-#: builtins.c:229
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W "
-"wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] "
-"[name ...]"
-msgstr ""
-
-#: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-
-#: builtins.c:237
-msgid "compopt [-o|+o option] [name ...]"
-msgstr ""
-
-#: builtins.c:240
-msgid ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-
-#: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-
-#: builtins.c:254
-msgid ""
-"Define or display aliases.\n"
-"    \n"
-"    Without arguments, `alias' prints the list of aliases in the reusable\n"
-"    form `alias NAME=VALUE' on standard output.\n"
-"    \n"
-"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-"    A trailing space in VALUE causes the next word to be checked for\n"
-"    alias substitution when the alias is expanded.\n"
-"    \n"
-"    Options:\n"
-"      -p\tPrint all defined aliases in a reusable format\n"
-"    \n"
-"    Exit Status:\n"
-"    alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
-"    defined."
-msgstr ""
-
-#: builtins.c:276
-msgid ""
-"Remove each NAME from the list of defined aliases.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all alias definitions.\n"
-"    \n"
-"    Return success unless a NAME is not an existing alias."
-msgstr ""
-
-#: builtins.c:289
-msgid ""
-"Set Readline key bindings and variables.\n"
-"    \n"
-"    Bind a key sequence to a Readline function or a macro, or set a\n"
-"    Readline variable.  The non-option argument syntax is equivalent to\n"
-"    that found in ~/.inputrc, but must be passed as a single argument:\n"
-"    e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"    \n"
-"    Options:\n"
-"      -m  keymap         Use KEYMAP as the keymap for the duration of this\n"
-"                         command.  Acceptable keymap names are emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-"                         vi-command, and vi-insert.\n"
-"      -l                 List names of functions.\n"
-"      -P                 List function names and bindings.\n"
-"      -p                 List functions and bindings in a form that can be\n"
-"                         reused as input.\n"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\n"
-"                         in a form that can be reused as input.\n"
-"      -V                 List variable names and values\n"
-"      -v                 List variable names and values in a form that can\n"
-"                         be reused as input.\n"
-"      -q  function-name  Query about which keys invoke the named function.\n"
-"      -u  function-name  Unbind all keys which are bound to the named "
-"function.\n"
-"      -r  keyseq         Remove the binding for KEYSEQ.\n"
-"      -f  filename       Read key bindings from FILENAME.\n"
-"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-"    \t\t\t\tKEYSEQ is entered.\n"
-"    \n"
-"    Exit Status:\n"
-"    bind returns 0 unless an unrecognized option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:326
-msgid ""
-"Exit for, while, or until loops.\n"
-"    \n"
-"    Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing\n"
-"    loops.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-
-#: builtins.c:338
-msgid ""
-"Resume for, while, or until loops.\n"
-"    \n"
-"    Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-"    If N is specified, resumes the Nth enclosing loop.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-
-#: builtins.c:350
-msgid ""
-"Execute shell builtins.\n"
-"    \n"
-"    Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
-"    lookup.  This is useful when you wish to reimplement a shell builtin\n"
-"    as a shell function, but need to execute the builtin within the "
-"function.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
-msgstr ""
-
-#: builtins.c:365
-msgid ""
-"Return the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns \"$line $filename\".  With EXPR, returns\n"
-"    \"$line $subroutine $filename\"; this extra information can be used to\n"
-"    provide a stack trace.\n"
-"    \n"
-"    The value of EXPR indicates how many call frames to go back before the\n"
-"    current one; the top frame is frame 0.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless the shell is not executing a shell function or EXPR\n"
-"    is invalid."
-msgstr ""
-
-#: builtins.c:383
-msgid ""
-"Change the shell working directory.\n"
-"    \n"
-"    Change the current directory to DIR.  The default DIR is the value of "
-"the\n"
-"    HOME shell variable.\n"
-"    \n"
-"    The variable CDPATH defines the search path for the directory "
-"containing\n"
-"    DIR.  Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-"    A null directory name is the same as the current directory.  If DIR "
-"begins\n"
-"    with a slash (/), then CDPATH is not used.\n"
-"    \n"
-"    If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-"    the word is assumed to be  a variable name.  If that variable has a "
-"value,\n"
-"    its value is used for DIR.\n"
-"    \n"
-"    Options:\n"
-"        -L\tforce symbolic links to be followed\n"
-"        -P\tuse the physical directory structure without following symbolic\n"
-"    \tlinks\n"
-"    \n"
-"    The default is to follow symbolic links, as if `-L' were specified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 if the directory is changed; non-zero otherwise."
-msgstr ""
-
-#: builtins.c:411
-msgid ""
-"Print the name of the current working directory.\n"
-"    \n"
-"    Options:\n"
-"      -L\tprint the value of $PWD if it names the current working\n"
-"    \tdirectory\n"
-"      -P\tprint the physical directory, without any symbolic links\n"
-"    \n"
-"    By default, `pwd' behaves as if `-L' were specified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless an invalid option is given or the current directory\n"
-"    cannot be read."
-msgstr ""
-
-#: builtins.c:428
-msgid ""
-"Null command.\n"
-"    \n"
-"    No effect; the command does nothing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:439
-msgid ""
-"Return a successful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:448
-msgid ""
-"Return an unsuccessful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always fails."
-msgstr ""
-
-#: builtins.c:457
-msgid ""
-"Execute a simple command or display information about commands.\n"
-"    \n"
-"    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n"
-"    information about the specified COMMANDs.  Can be used to invoke "
-"commands\n"
-"    on disk when a function with the same name exists.\n"
-"    \n"
-"    Options:\n"
-"      -p\tuse a default value for PATH that is guaranteed to find all of\n"
-"    \tthe standard utilities\n"
-"      -v\tprint a description of COMMAND similar to the `type' builtin\n"
-"      -V\tprint a more verbose description of each COMMAND\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of COMMAND, or failure if COMMAND is not found."
-msgstr ""
-
-#: builtins.c:476
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Declare variables and give them attributes.  If no NAMEs are given,\n"
-"    display the attributes and values of all variables.\n"
-"    \n"
-"    Options:\n"
-"      -f\trestrict action or display to function names and definitions\n"
-"      -F\trestrict display to function names only (plus line number and\n"
-"    \tsource file when debugging)\n"
-"      -p\tdisplay the attributes and value of each NAME\n"
-"    \n"
-"    Options which set attributes:\n"
-"      -a\tto make NAMEs indexed arrays (if supported)\n"
-"      -A\tto make NAMEs associative arrays (if supported)\n"
-"      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
-"      -r\tto make NAMEs readonly\n"
-"      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
-"      -x\tto make NAMEs export\n"
-"    \n"
-"    Using `+' instead of `-' turns off the given attribute.\n"
-"    \n"
-"    Variables with the integer attribute have arithmetic evaluation (see\n"
-"    the `let' command) performed when the variable is assigned a value.\n"
-"    \n"
-"    When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
-"    command.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:512
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Obsolete.  See `help declare'."
-msgstr ""
-
-#: builtins.c:520
-msgid ""
-"Define local variables.\n"
-"    \n"
-"    Create a local variable called NAME, and give it VALUE.  OPTION can\n"
-"    be any option accepted by `declare'.\n"
-"    \n"
-"    Local variables can only be used within a function; they are visible\n"
-"    only to the function where they are defined and its children.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied, an error occurs,\n"
-"    or the shell is not executing a function."
-msgstr ""
-
-#: builtins.c:537
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs on the standard output followed by a newline.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"      -e\tenable interpretation of the following backslash escapes\n"
-"      -E\texplicitly suppress interpretation of backslash escapes\n"
-"    \n"
-"    `echo' interprets the following backslash-escaped characters:\n"
-"      \\a\talert (bell)\n"
-"      \\b\tbackspace\n"
-"      \\c\tsuppress further output\n"
-"      \\e\tescape character\n"
-"      \\f\tform feed\n"
-"      \\n\tnew line\n"
-"      \\r\tcarriage return\n"
-"      \\t\thorizontal tab\n"
-"      \\v\tvertical tab\n"
-"      \\\\\tbackslash\n"
-"      \\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n"
-"    \t0 to 3 octal digits\n"
-"      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
-"    \tcan be one or two hex digits\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-
-#: builtins.c:571
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs on the standard output followed by a newline.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-
-#: builtins.c:586
-msgid ""
-"Enable and disable shell builtins.\n"
-"    \n"
-"    Enables and disables builtin shell commands.  Disabling allows you to\n"
-"    execute a disk command which has the same name as a shell builtin\n"
-"    without using a full pathname.\n"
-"    \n"
-"    Options:\n"
-"      -a\tprint a list of builtins showing whether or not each is enabled\n"
-"      -n\tdisable each NAME or display a list of disabled builtins\n"
-"      -p\tprint the list of builtins in a reusable format\n"
-"      -s\tprint only the names of Posix `special' builtins\n"
-"    \n"
-"    Options controlling dynamic loading:\n"
-"      -f\tLoad builtin NAME from shared object FILENAME\n"
-"      -d\tRemove a builtin loaded with -f\n"
-"    \n"
-"    Without options, each NAME is enabled.\n"
-"    \n"
-"    To use the `test' found in $PATH instead of the shell builtin\n"
-"    version, type `enable -n test'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not a shell builtin or an error occurs."
-msgstr ""
-
-#: builtins.c:614
-msgid ""
-"Execute arguments as a shell command.\n"
-"    \n"
-"    Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
-"    and execute the resulting commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of command or success if command is null."
-msgstr ""
-
-#: builtins.c:626
-msgid ""
-"Parse option arguments.\n"
-"    \n"
-"    Getopts is used by shell procedures to parse positional parameters\n"
-"    as options.\n"
-"    \n"
-"    OPTSTRING contains the option letters to be recognized; if a letter\n"
-"    is followed by a colon, the option is expected to have an argument,\n"
-"    which should be separated from it by white space.\n"
-"    \n"
-"    Each time it is invoked, getopts will place the next option in the\n"
-"    shell variable $name, initializing name if it does not exist, and\n"
-"    the index of the next argument to be processed into the shell\n"
-"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
-"    a shell script is invoked.  When an option requires an argument,\n"
-"    getopts places that argument into the shell variable OPTARG.\n"
-"    \n"
-"    getopts reports errors in one of two ways.  If the first character\n"
-"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
-"    this mode, no error messages are printed.  If an invalid option is\n"
-"    seen, getopts places the option character found into OPTARG.  If a\n"
-"    required argument is not found, getopts places a ':' into NAME and\n"
-"    sets OPTARG to the option character found.  If getopts is not in\n"
-"    silent mode, and an invalid option is seen, getopts places '?' into\n"
-"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
-"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-"    printed.\n"
-"    \n"
-"    If the shell variable OPTERR has the value 0, getopts disables the\n"
-"    printing of error messages, even if the first character of\n"
-"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
-"    \n"
-"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
-"    more arguments are given, they are parsed instead.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if an option is found; fails if the end of options is\n"
-"    encountered or an error occurs."
-msgstr ""
-
-#: builtins.c:668
-msgid ""
-"Replace the shell with the given command.\n"
-"    \n"
-"    Execute COMMAND, replacing this shell with the specified program.\n"
-"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not "
-"specified,\n"
-"    any redirections take effect in the current shell.\n"
-"    \n"
-"    Options:\n"
-"      -a name\tpass NAME as the zeroth argument to COMMAND\n"
-"      -c\t\texecute COMMAND with an empty environment\n"
-"      -l\t\tplace a dash in the zeroth argument to COMMAND\n"
-"    \n"
-"    If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
-"    the shell option `execfail' is set.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless COMMAND is not found or a redirection error "
-"occurs."
-msgstr ""
-
-#: builtins.c:689
-msgid ""
-"Exit the shell.\n"
-"    \n"
-"    Exits the shell with a status of N.  If N is omitted, the exit status\n"
-"    is that of the last command executed."
-msgstr ""
-
-#: builtins.c:698
-msgid ""
-"Exit a login shell.\n"
-"    \n"
-"    Exits a login shell with exit status N.  Returns an error if not "
-"executed\n"
-"    in a login shell."
-msgstr ""
-
-#: builtins.c:708
-msgid ""
-"Display or execute commands from the history list.\n"
-"    \n"
-"    fc is used to list or edit and re-execute commands from the history "
-"list.\n"
-"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-"    string, which means the most recent command beginning with that\n"
-"    string.\n"
-"    \n"
-"    Options:\n"
-"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
-"    \t\tthen vi\n"
-"      -l \tlist lines instead of editing\n"
-"      -n\tomit line numbers when listing\n"
-"      -r\treverse the order of the lines (newest listed first)\n"
-"    \n"
-"    With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n"
-"    re-executed after the substitution OLD=NEW is performed.\n"
-"    \n"
-"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
-"    runs the last command beginning with `cc' and typing `r' re-executes\n"
-"    the last command.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success or status of executed command; non-zero if an error "
-"occurs."
-msgstr ""
-
-#: builtins.c:738
-msgid ""
-"Move job to the foreground.\n"
-"    \n"
-"    Place the job identified by JOB_SPEC in the foreground, making it the\n"
-"    current job.  If JOB_SPEC is not present, the shell's notion of the\n"
-"    current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Status of command placed in foreground, or failure if an error occurs."
-msgstr ""
-
-#: builtins.c:753
-msgid ""
-"Move jobs to the background.\n"
-"    \n"
-"    Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-"    had been started with `&'.  If JOB_SPEC is not present, the shell's "
-"notion\n"
-"    of the current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-
-#: builtins.c:767
-msgid ""
-"Remember or display program locations.\n"
-"    \n"
-"    Determine and remember the full pathname of each command NAME.  If\n"
-"    no arguments are given, information about remembered commands is "
-"displayed.\n"
-"    \n"
-"    Options:\n"
-"      -d\t\tforget the remembered location of each NAME\n"
-"      -l\t\tdisplay in a format that may be reused as input\n"
-"      -p pathname\tuse PATHNAME is the full pathname of NAME\n"
-"      -r\t\tforget all remembered locations\n"
-"      -t\t\tprint the remembered location of each NAME, preceding\n"
-"    \t\teach location with the corresponding NAME if multiple\n"
-"    \t\tNAMEs are given\n"
-"    Arguments:\n"
-"      NAME\t\tEach NAME is searched for in $PATH and added to the list\n"
-"    \t\tof remembered commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not found or an invalid option is given."
-msgstr ""
-
-#: builtins.c:792
-msgid ""
-"Display information about builtin commands.\n"
-"    \n"
-"    Displays brief summaries of builtin commands.  If PATTERN is\n"
-"    specified, gives detailed help on all commands matching PATTERN,\n"
-"    otherwise the list of help topics is printed.\n"
-"    \n"
-"    Options:\n"
-"      -d\toutput short description for each topic\n"
-"      -m\tdisplay usage in pseudo-manpage format\n"
-"      -s\toutput only a short usage synopsis for each topic matching\n"
-"    \tPATTERN\n"
-"    \n"
-"    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless PATTERN is not found or an invalid option is "
-"given."
-msgstr ""
-
-#: builtins.c:816
-msgid ""
-"Display or manipulate the history list.\n"
-"    \n"
-"    Display the history list with line numbers, prefixing each modified\n"
-"    entry with a `*'.  An argument of N lists only the last N entries.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at offset OFFSET.\n"
-"    \n"
-"      -a\tappend history lines from this session to the history file\n"
-"      -n\tread all history lines not already read from the history file\n"
-"      -r\tread the history file and append the contents to the history\n"
-"    \tlist\n"
-"      -w\twrite the current history to the history file\n"
-"    \tand append them to the history list\n"
-"    \n"
-"      -p\tperform history expansion on each ARG and display the result\n"
-"    \twithout storing it in the history list\n"
-"      -s\tappend the ARGs to the history list as a single entry\n"
-"    \n"
-"    If FILENAME is given, it is used as the history file.  Otherwise,\n"
-"    if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-"    \n"
-"    If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-"    as a format string for strftime(3) to print the time stamp associated\n"
-"    with each displayed history entry.  No time stamps are printed "
-"otherwise.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:852
-msgid ""
-"Display status of jobs.\n"
-"    \n"
-"    Lists the active jobs.  JOBSPEC restricts output to that job.\n"
-"    Without options, the status of all active jobs is displayed.\n"
-"    \n"
-"    Options:\n"
-"      -l\tlists process IDs in addition to the normal information\n"
-"      -n\tlist only processes that have changed status since the last\n"
-"    \tnotification\n"
-"      -p\tlists process IDs only\n"
-"      -r\trestrict output to running jobs\n"
-"      -s\trestrict output to stopped jobs\n"
-"    \n"
-"    If -x is supplied, COMMAND is run after all job specifications that\n"
-"    appear in ARGS have been replaced with the process ID of that job's\n"
-"    process group leader.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs.\n"
-"    If -x is used, returns the exit status of COMMAND."
-msgstr ""
-
-#: builtins.c:879
-msgid ""
-"Remove jobs from current shell.\n"
-"    \n"
-"    Removes each JOBSPEC argument from the table of active jobs.  Without\n"
-"    any JOBSPECs, the shell uses its notion of the current job.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all jobs if JOBSPEC is not supplied\n"
-"      -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
-"    \tshell receives a SIGHUP\n"
-"      -r\tremove only running jobs\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option or JOBSPEC is given."
-msgstr ""
-
-#: builtins.c:898
-msgid ""
-"Send a signal to a job.\n"
-"    \n"
-"    Send the processes identified by PID or JOBSPEC the signal named by\n"
-"    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then\n"
-"    SIGTERM is assumed.\n"
-"    \n"
-"    Options:\n"
-"      -s sig\tSIG is a signal name\n"
-"      -n sig\tSIG is a signal number\n"
-"      -l\tlist the signal names; if arguments follow `-l' they are\n"
-"    \tassumed to be signal numbers for which names should be listed\n"
-"    \n"
-"    Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-"    instead of process IDs, and allows processes to be killed if the limit\n"
-"    on processes that you can create is reached.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:921
-msgid ""
-"Evaluate arithmetic expressions.\n"
-"    \n"
-"    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
-"    fixed-width integers with no check for overflow, though division by 0\n"
-"    is trapped and flagged as an error.  The following list of operators is\n"
-"    grouped into levels of equal-precedence operators.  The levels are "
-"listed\n"
-"    in order of decreasing precedence.\n"
-"    \n"
-"    \tid++, id--\tvariable post-increment, post-decrement\n"
-"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
-"    \t-, +\t\tunary minus, plus\n"
-"    \t!, ~\t\tlogical and bitwise negation\n"
-"    \t**\t\texponentiation\n"
-"    \t*, /, %\t\tmultiplication, division, remainder\n"
-"    \t+, -\t\taddition, subtraction\n"
-"    \t<<, >>\t\tleft and right bitwise shifts\n"
-"    \t<=, >=, <, >\tcomparison\n"
-"    \t==, !=\t\tequality, inequality\n"
-"    \t&\t\tbitwise AND\n"
-"    \t^\t\tbitwise XOR\n"
-"    \t|\t\tbitwise OR\n"
-"    \t&&\t\tlogical AND\n"
-"    \t||\t\tlogical OR\n"
-"    \texpr ? expr : expr\n"
-"    \t\t\tconditional operator\n"
-"    \t=, *=, /=, %=,\n"
-"    \t+=, -=, <<=, >>=,\n"
-"    \t&=, ^=, |=\tassignment\n"
-"    \n"
-"    Shell variables are allowed as operands.  The name of the variable\n"
-"    is replaced by its value (coerced to a fixed-width integer) within\n"
-"    an expression.  The variable need not have its integer attribute\n"
-"    turned on to be used in an expression.\n"
-"    \n"
-"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
-"    parentheses are evaluated first and may override the precedence\n"
-"    rules above.\n"
-"    \n"
-"    Exit Status:\n"
-"    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise.."
-msgstr ""
-
-#: builtins.c:966
-msgid ""
-"Read a line from the standard input and split it into fields.\n"
-"    \n"
-"    Reads a single line from the standard input, or from file descriptor FD\n"
-"    if the -u option is supplied.  The line is split into fields as with "
-"word\n"
-"    splitting, and the first word is assigned to the first NAME, the second\n"
-"    word to the second NAME, and so on, with any leftover words assigned to\n"
-"    the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
-"    delimiters.\n"
-"    \n"
-"    If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
-"    \n"
-"    Options:\n"
-"      -a array\tassign the words read to sequential indices of the array\n"
-"    \t\tvariable ARRAY, starting at zero\n"
-"      -d delim\tcontinue until the first character of DELIM is read, rather\n"
-"    \t\tthan newline\n"
-"      -e\t\tuse Readline to obtain the line in an interactive shell\n"
-"      -i text\tUse TEXT as the initial text for Readline\n"
-"      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
-"    \t\tfor a newline\n"
-"      -p prompt\toutput the string PROMPT without a trailing newline before\n"
-"    \t\tattempting to read\n"
-"      -r\t\tdo not allow backslashes to escape any characters\n"
-"      -s\t\tdo not echo input coming from a terminal\n"
-"      -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
-"    \t\tnot read withint TIMEOUT seconds.  The value of the TMOUT\n"
-"    \t\tvariable is the default timeout.  TIMEOUT may be a\n"
-"    \t\tfractional number.  If TIMEOUT is 0, read returns success only\n"
-"    \t\tif input is available on the specified file descriptor.  The\n"
-"    \t\texit status is greater than 128 if the timeout is exceeded\n"
-"      -u fd\t\tread from file descriptor FD instead of the standard input\n"
-"    \n"
-"    Exit Status:\n"
-"    The return code is zero, unless end-of-file is encountered, read times "
-"out,\n"
-"    or an invalid file descriptor is supplied as the argument to -u."
-msgstr ""
-
-#: builtins.c:1006
-msgid ""
-"Return from a shell function.\n"
-"    \n"
-"    Causes a function or sourced script to exit with the return value\n"
-"    specified by N.  If N is omitted, the return status is that of the\n"
-"    last command executed within the function or script.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns N, or failure if the shell is not executing a function or script."
-msgstr ""
-
-#: builtins.c:1019
-msgid ""
-"Set or unset values of shell options and positional parameters.\n"
-"    \n"
-"    Change the value of shell attributes and positional parameters, or\n"
-"    display the names and values of shell variables.\n"
-"    \n"
-"    Options:\n"
-"      -a  Mark variables which are modified or created for export.\n"
-"      -b  Notify of job termination immediately.\n"
-"      -e  Exit immediately if a command exits with a non-zero status.\n"
-"      -f  Disable file name generation (globbing).\n"
-"      -h  Remember the location of commands as they are looked up.\n"
-"      -k  All assignment arguments are placed in the environment for a\n"
-"          command, not just those that precede the command name.\n"
-"      -m  Job control is enabled.\n"
-"      -n  Read commands but do not execute them.\n"
-"      -o option-name\n"
-"          Set the variable corresponding to option-name:\n"
-"              allexport    same as -a\n"
-"              braceexpand  same as -B\n"
-"              emacs        use an emacs-style line editing interface\n"
-"              errexit      same as -e\n"
-"              errtrace     same as -E\n"
-"              functrace    same as -T\n"
-"              hashall      same as -h\n"
-"              histexpand   same as -H\n"
-"              history      enable command history\n"
-"              ignoreeof    the shell will not exit upon reading EOF\n"
-"              interactive-comments\n"
-"                           allow comments to appear in interactive commands\n"
-"              keyword      same as -k\n"
-"              monitor      same as -m\n"
-"              noclobber    same as -C\n"
-"              noexec       same as -n\n"
-"              noglob       same as -f\n"
-"              nolog        currently accepted but ignored\n"
-"              notify       same as -b\n"
-"              nounset      same as -u\n"
-"              onecmd       same as -t\n"
-"              physical     same as -P\n"
-"              pipefail     the return value of a pipeline is the status of\n"
-"                           the last command to exit with a non-zero status,\n"
-"                           or zero if no command exited with a non-zero "
-"status\n"
-"              posix        change the behavior of bash where the default\n"
-"                           operation differs from the Posix standard to\n"
-"                           match the standard\n"
-"              privileged   same as -p\n"
-"              verbose      same as -v\n"
-"              vi           use a vi-style line editing interface\n"
-"              xtrace       same as -x\n"
-"      -p  Turned on whenever the real and effective user ids do not match.\n"
-"          Disables processing of the $ENV file and importing of shell\n"
-"          functions.  Turning this option off causes the effective uid and\n"
-"          gid to be set to the real uid and gid.\n"
-"      -t  Exit after reading and executing one command.\n"
-"      -u  Treat unset variables as an error when substituting.\n"
-"      -v  Print shell input lines as they are read.\n"
-"      -x  Print commands and their arguments as they are executed.\n"
-"      -B  the shell will perform brace expansion\n"
-"      -C  If set, disallow existing regular files to be overwritten\n"
-"          by redirection of output.\n"
-"      -E  If set, the ERR trap is inherited by shell functions.\n"
-"      -H  Enable ! style history substitution.  This flag is on\n"
-"          by default when the shell is interactive.\n"
-"      -P  If set, do not follow symbolic links when executing commands\n"
-"          such as cd which change the current directory.\n"
-"      -T  If set, the DEBUG trap is inherited by shell functions.\n"
-"      -   Assign any remaining arguments to the positional parameters.\n"
-"          The -x and -v options are turned off.\n"
-"    \n"
-"    Using + rather than - causes these flags to be turned off.  The\n"
-"    flags can also be used upon invocation of the shell.  The current\n"
-"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
-"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
-"    ARGs are given, all shell variables are printed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given."
-msgstr ""
-
-#: builtins.c:1101
-msgid ""
-"Unset values and attributes of shell variables and functions.\n"
-"    \n"
-"    For each NAME, remove the corresponding variable or function.\n"
-"    \n"
-"    Options:\n"
-"      -f\ttreat each NAME as a shell function\n"
-"      -v\ttreat each NAME as a shell variable\n"
-"    \n"
-"    Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
-"    tries to unset a function.\n"
-"    \n"
-"    Some variables cannot be unset; also see `readonly'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a NAME is read-only."
-msgstr ""
-
-#: builtins.c:1121
-msgid ""
-"Set export attribute for shell variables.\n"
-"    \n"
-"    Marks each NAME for automatic export to the environment of subsequently\n"
-"    executed commands.  If VALUE is supplied, assign VALUE before "
-"exporting.\n"
-"    \n"
-"    Options:\n"
-"      -f\trefer to shell functions\n"
-"      -n\tremove the export property from each NAME\n"
-"      -p\tdisplay a list of all exported variables and functions\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-
-#: builtins.c:1140
-msgid ""
-"Mark shell variables as unchangeable.\n"
-"    \n"
-"    Mark each NAME as read-only; the values of these NAMEs may not be\n"
-"    changed by subsequent assignment.  If VALUE is supplied, assign VALUE\n"
-"    before marking as read-only.\n"
-"    \n"
-"    Options:\n"
-"      -a\trefer to indexed array variables\n"
-"      -A\trefer to associative array variables\n"
-"      -f\trefer to shell functions\n"
-"      -p\tdisplay a list of all readonly variables and functions\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-
-#: builtins.c:1161
-msgid ""
-"Shift positional parameters.\n"
-"    \n"
-"    Rename the positional parameters $N+1,$N+2 ... to $1,$2 ...  If N is\n"
-"    not given, it is assumed to be 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless N is negative or greater than $#."
-msgstr ""
-
-#: builtins.c:1173 builtins.c:1188
-msgid ""
-"Execute commands from a file in the current shell.\n"
-"    \n"
-"    Read and execute commands from FILENAME in the current shell.  The\n"
-"    entries in $PATH are used to find the directory containing FILENAME.\n"
-"    If any ARGUMENTS are supplied, they become the positional parameters\n"
-"    when FILENAME is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed in FILENAME; fails if\n"
-"    FILENAME cannot be read."
-msgstr ""
-
-#: builtins.c:1204
-msgid ""
-"Suspend shell execution.\n"
-"    \n"
-"    Suspend the execution of this shell until it receives a SIGCONT signal.\n"
-"    Unless forced, login shells cannot be suspended.\n"
-"    \n"
-"    Options:\n"
-"      -f\tforce the suspend, even if the shell is a login shell\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-
-#: builtins.c:1220
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    Exits with a status of 0 (true) or 1 (false) depending on\n"
-"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
-"    expressions are often used to examine the status of a file.  There\n"
-"    are string operators as well, and numeric comparison operators.\n"
-"    \n"
-"    File operators:\n"
-"    \n"
-"      -a FILE        True if file exists.\n"
-"      -b FILE        True if file is block special.\n"
-"      -c FILE        True if file is character special.\n"
-"      -d FILE        True if file is a directory.\n"
-"      -e FILE        True if file exists.\n"
-"      -f FILE        True if file exists and is a regular file.\n"
-"      -g FILE        True if file is set-group-id.\n"
-"      -h FILE        True if file is a symbolic link.\n"
-"      -L FILE        True if file is a symbolic link.\n"
-"      -k FILE        True if file has its `sticky' bit set.\n"
-"      -p FILE        True if file is a named pipe.\n"
-"      -r FILE        True if file is readable by you.\n"
-"      -s FILE        True if file exists and is not empty.\n"
-"      -S FILE        True if file is a socket.\n"
-"      -t FD          True if FD is opened on a terminal.\n"
-"      -u FILE        True if the file is set-user-id.\n"
-"      -w FILE        True if the file is writable by you.\n"
-"      -x FILE        True if the file is executable by you.\n"
-"      -O FILE        True if the file is effectively owned by you.\n"
-"      -G FILE        True if the file is effectively owned by your group.\n"
-"      -N FILE        True if the file has been modified since it was last "
-"read.\n"
-"    \n"
-"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
-"                       modification date).\n"
-"    \n"
-"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
-"    \n"
-"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
-"    \n"
-"    String operators:\n"
-"    \n"
-"      -z STRING      True if string is empty.\n"
-"    \n"
-"      -n STRING\n"
-"         STRING      True if string is not empty.\n"
-"    \n"
-"      STRING1 = STRING2\n"
-"                     True if the strings are equal.\n"
-"      STRING1 != STRING2\n"
-"                     True if the strings are not equal.\n"
-"      STRING1 < STRING2\n"
-"                     True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-"      STRING1 > STRING2\n"
-"                     True if STRING1 sorts after STRING2 lexicographically.\n"
-"    \n"
-"    Other operators:\n"
-"    \n"
-"      -o OPTION      True if the shell option OPTION is enabled.\n"
-"      ! EXPR         True if expr is false.\n"
-"      EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-"      EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-"    \n"
-"      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
-"                     -lt, -le, -gt, or -ge.\n"
-"    \n"
-"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-"    than ARG2.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
-"    false or an invalid argument is given."
-msgstr ""
-
-#: builtins.c:1296
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    This is a synonym for the \"test\" builtin, but the last argument must\n"
-"    be a literal `]', to match the opening `['."
-msgstr ""
-
-#: builtins.c:1305
-msgid ""
-"Display process times.\n"
-"    \n"
-"    Prints the accumulated user and system times for the shell and all of "
-"its\n"
-"    child processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:1317
-msgid ""
-"Trap signals and other events.\n"
-"    \n"
-"    Defines and activates handlers to be run when the shell receives "
-"signals\n"
-"    or other conditions.\n"
-"    \n"
-"    ARG is a command to be read and executed when the shell receives the\n"
-"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
-"    is supplied) or `-', each specified signal is reset to its original\n"
-"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-"    shell and by the commands it invokes.\n"
-"    \n"
-"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  "
-"If\n"
-"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.\n"
-"    \n"
-"    If no arguments are supplied, trap prints the list of commands "
-"associated\n"
-"    with each signal.\n"
-"    \n"
-"    Options:\n"
-"      -l\tprint a list of signal names and their corresponding numbers\n"
-"      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
-"    \n"
-"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
-"    Signal names are case insensitive and the SIG prefix is optional.  A\n"
-"    signal may be sent to the shell with \"kill -signal $$\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
-msgstr ""
-
-#: builtins.c:1349
-msgid ""
-"Display information about command type.\n"
-"    \n"
-"    For each NAME, indicate how it would be interpreted if used as a\n"
-"    command name.\n"
-"    \n"
-"    Options:\n"
-"      -a\tdisplay all locations containing an executable named NAME;\n"
-"    \tincludes aliases, builtins, and functions, if and only if\n"
-"    \tthe `-p' option is not also used\n"
-"      -f\tsuppress shell function lookup\n"
-"      -P\tforce a PATH search for each NAME, even if it is an alias,\n"
-"    \tbuiltin, or function, and returns the name of the disk file\n"
-"    \tthat would be executed\n"
-"      -p\treturns either the name of the disk file that would be executed,\n"
-"    \tor nothing if `type -t NAME' would not return `file'.\n"
-"      -t\toutput a single word which is one of `alias', `keyword',\n"
-"    \t`function', `builtin', `file' or `', if NAME is an alias, shell\n"
-"    \treserved word, shell function, shell builtin, disk file, or not\n"
-"    \tfound, respectively\n"
-"    \n"
-"    Arguments:\n"
-"      NAME\tCommand name to be interpreted.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if all of the NAMEs are found; fails if any are not "
-"found."
-msgstr ""
-
-#: builtins.c:1380
-msgid ""
-"Modify shell resource limits.\n"
-"    \n"
-"    Provides control over the resources available to the shell and "
-"processes\n"
-"    it creates, on systems that allow such control.\n"
-"    \n"
-"    Options:\n"
-"      -S\tuse the `soft' resource limit\n"
-"      -H\tuse the `hard' resource limit\n"
-"      -a\tall current limits are reported\n"
-"      -b\tthe socket buffer size\n"
-"      -c\tthe maximum size of core files created\n"
-"      -d\tthe maximum size of a process's data segment\n"
-"      -e\tthe maximum scheduling priority (`nice')\n"
-"      -f\tthe maximum size of files written by the shell and its children\n"
-"      -i\tthe maximum number of pending signals\n"
-"      -l\tthe maximum size a process may lock into memory\n"
-"      -m\tthe maximum resident set size\n"
-"      -n\tthe maximum number of open file descriptors\n"
-"      -p\tthe pipe buffer size\n"
-"      -q\tthe maximum number of bytes in POSIX message queues\n"
-"      -r\tthe maximum real-time scheduling priority\n"
-"      -s\tthe maximum stack size\n"
-"      -t\tthe maximum amount of cpu time in seconds\n"
-"      -u\tthe maximum number of user processes\n"
-"      -v\tthe size of virtual memory\n"
-"      -x\tthe maximum number of file locks\n"
-"    \n"
-"    If LIMIT is given, it is the new value of the specified resource; the\n"
-"    special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-"    current soft limit, the current hard limit, and no limit, respectively.\n"
-"    Otherwise, the current value of the specified resource is printed.  If\n"
-"    no option is given, then -f is assumed.\n"
-"    \n"
-"    Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-"    -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-"    number of processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1425
-msgid ""
-"Display or set file mode mask.\n"
-"    \n"
-"    Sets the user file-creation mask to MODE.  If MODE is omitted, prints\n"
-"    the current value of the mask.\n"
-"    \n"
-"    If MODE begins with a digit, it is interpreted as an octal number;\n"
-"    otherwise it is a symbolic mode string like that accepted by chmod(1).\n"
-"    \n"
-"    Options:\n"
-"      -p\tif MODE is omitted, output in a form that may be reused as input\n"
-"      -S\tmakes the output symbolic; otherwise an octal number is output\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless MODE is invalid or an invalid option is given."
-msgstr ""
-
-#: builtins.c:1445
-msgid ""
-"Wait for job completion and return exit status.\n"
-"    \n"
-"    Waits for the process identified by ID, which may be a process ID or a\n"
-"    job specification, and reports its termination status.  If ID is not\n"
-"    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
-"    in the job's pipeline.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-"    given."
-msgstr ""
-
-#: builtins.c:1463
-msgid ""
-"Wait for process completion and return exit status.\n"
-"    \n"
-"    Waits for the specified process and reports its termination status.  If\n"
-"    PID is not given, all currently active child processes are waited for,\n"
-"    and the return code is zero.  PID must be a process ID.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-"    given."
-msgstr ""
-
-#: builtins.c:1478
-msgid ""
-"Execute commands for each member in a list.\n"
-"    \n"
-"    The `for' loop executes a sequence of commands for each member in a\n"
-"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
-"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
-"    the COMMANDS are executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1492
-msgid ""
-"Arithmetic for loop.\n"
-"    \n"
-"    Equivalent to\n"
-"    \t(( EXP1 ))\n"
-"    \twhile (( EXP2 )); do\n"
-"    \t\tCOMMANDS\n"
-"    \t\t(( EXP3 ))\n"
-"    \tdone\n"
-"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
-"    omitted, it behaves as if it evaluates to 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1510
-msgid ""
-"Select words from a list and execute commands.\n"
-"    \n"
-"    The WORDS are expanded, generating a list of words.  The\n"
-"    set of expanded words is printed on the standard error, each\n"
-"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
-"    is assumed.  The PS3 prompt is then displayed and a line read\n"
-"    from the standard input.  If the line consists of the number\n"
-"    corresponding to one of the displayed words, then NAME is set\n"
-"    to that word.  If the line is empty, WORDS and the prompt are\n"
-"    redisplayed.  If EOF is read, the command completes.  Any other\n"
-"    value read causes NAME to be set to null.  The line read is saved\n"
-"    in the variable REPLY.  COMMANDS are executed after each selection\n"
-"    until a break command is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1531
-msgid ""
-"Report time consumed by pipeline's execution.\n"
-"    \n"
-"    Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-"    and system CPU time spent executing PIPELINE when it terminates.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint the timing summary in the portable Posix format\n"
-"    \n"
-"    The value of the TIMEFORMAT variable is used as the output format.\n"
-"    \n"
-"    Exit Status:\n"
-"    The return status is the return status of PIPELINE."
-msgstr ""
-
-#: builtins.c:1548
-msgid ""
-"Execute commands based on pattern matching.\n"
-"    \n"
-"    Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
-"    `|' is used to separate multiple patterns.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1560
-msgid ""
-"Execute commands based on conditional.\n"
-"    \n"
-"    The `if COMMANDS' list is executed.  If its exit status is zero, then "
-"the\n"
-"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
-"is\n"
-"    executed in turn, and if its exit status is zero, the corresponding\n"
-"    `then COMMANDS' list is executed and the if command completes.  "
-"Otherwise,\n"
-"    the `else COMMANDS' list is executed, if present.  The exit status of "
-"the\n"
-"    entire construct is the exit status of the last command executed, or "
-"zero\n"
-"    if no condition tested true.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1577
-msgid ""
-"Execute commands as long as a test succeeds.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `while' COMMANDS has an exit status of zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1589
-msgid ""
-"Execute commands as long as a test does not succeed.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `until' COMMANDS has an exit status which is not zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1601
-msgid ""
-"Create a coprocess named NAME.\n"
-"    \n"
-"    Execute COMMAND asynchronously, with the standard output and standard\n"
-"    input of the command connected via a pipe to file descriptors assigned\n"
-"    to indices 0 and 1 of an array variable NAME in the executing shell.\n"
-"    The default NAME is \"COPROC\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of COMMAND."
-msgstr ""
-
-#: builtins.c:1615
-msgid ""
-"Define shell function.\n"
-"    \n"
-"    Create a shell function named NAME.  When invoked as a simple command,\n"
-"    NAME runs COMMANDs in the calling shell's context.  When NAME is "
-"invoked,\n"
-"    the arguments are passed to the function as $1...$n, and the function's\n"
-"    name is in $FUNCNAME.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is readonly."
-msgstr ""
-
-#: builtins.c:1629
-msgid ""
-"Group commands as a unit.\n"
-"    \n"
-"    Run a set of commands in a group.  This is one way to redirect an\n"
-"    entire set of commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1641
-msgid ""
-"Resume job in foreground.\n"
-"    \n"
-"    Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
-"    stopped or background job.  JOB_SPEC can specify either a job name\n"
-"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
-"    the background, as if the job specification had been supplied as an\n"
-"    argument to `bg'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the resumed job."
-msgstr ""
-
-#: builtins.c:1656
-msgid ""
-"Evaluate arithmetic expression.\n"
-"    \n"
-"    The EXPRESSION is evaluated according to the rules for arithmetic\n"
-"    evaluation.  Equivalent to \"let EXPRESSION\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-msgstr ""
-
-#: builtins.c:1668
-msgid ""
-"Execute conditional command.\n"
-"    \n"
-"    Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-"    expression EXPRESSION.  Expressions are composed of the same primaries "
-"used\n"
-"    by the `test' builtin, and may be combined using the following "
-"operators:\n"
-"    \n"
-"      ( EXPRESSION )\tReturns the value of EXPRESSION\n"
-"      ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
-"      EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-"      EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-"    \n"
-"    When the `==' and `!=' operators are used, the string to the right of\n"
-"    the operator is used as a pattern and pattern matching is performed.\n"
-"    When the `=~' operator is used, the string to the right of the operator\n"
-"    is matched as a regular expression.\n"
-"    \n"
-"    The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-"    determine the expression's value.\n"
-"    \n"
-"    Exit Status:\n"
-"    0 or 1 depending on value of EXPRESSION."
-msgstr ""
-
-#: builtins.c:1694
-msgid ""
-"Common shell variable names and usage.\n"
-"    \n"
-"    BASH_VERSION\tVersion information for this Bash.\n"
-"    CDPATH\tA colon-separated list of directories to search\n"
-"    \t\tfor directories given as arguments to `cd'.\n"
-"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-"    \t\tbe ignored by pathname expansion.\n"
-"    HISTFILE\tThe name of the file where your command history is stored.\n"
-"    HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
-"    HISTSIZE\tThe maximum number of history lines that a running\n"
-"    \t\tshell can access.\n"
-"    HOME\tThe complete pathname to your login directory.\n"
-"    HOSTNAME\tThe name of the current host.\n"
-"    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
-"    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
-"    \t\tcharacter as the sole input.  If set, then the value\n"
-"    \t\tof it is the number of EOF characters that can be seen\n"
-"    \t\tin a row on an empty line before the shell will exit\n"
-"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
-"    MACHTYPE\tA string describing the current system Bash is running on.\n"
-"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-"    \t\tfor new mail.\n"
-"    OSTYPE\tThe version of Unix this version of Bash is running on.\n"
-"    PATH\tA colon-separated list of directories to search when\n"
-"    \t\tlooking for commands.\n"
-"    PROMPT_COMMAND\tA command to be executed before the printing of each\n"
-"    \t\tprimary prompt.\n"
-"    PS1\t\tThe primary prompt string.\n"
-"    PS2\t\tThe secondary prompt string.\n"
-"    PWD\t\tThe full pathname of the current directory.\n"
-"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-"    TERM\tThe name of the current terminal type.\n"
-"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-"    \t\t`time' reserved word.\n"
-"    auto_resume\tNon-null means a command word appearing on a line by\n"
-"    \t\titself is first looked for in the list of currently\n"
-"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
-"    \t\tA value of `exact' means that the command word must\n"
-"    \t\texactly match a command in the list of stopped jobs.  A\n"
-"    \t\tvalue of `substring' means that the command word must\n"
-"    \t\tmatch a substring of the job.  Any other value means that\n"
-"    \t\tthe command must be a prefix of a stopped job.\n"
-"    histchars\tCharacters controlling history expansion and quick\n"
-"    \t\tsubstitution.  The first character is the history\n"
-"    \t\tsubstitution character, usually `!'.  The second is\n"
-"    \t\tthe `quick substitution' character, usually `^'.  The\n"
-"    \t\tthird is the `history comment' character, usually `#'.\n"
-"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-"    \t\tcommands should be saved on the history list.\n"
-msgstr ""
-
-#: builtins.c:1751
-msgid ""
-"Add directories to stack.\n"
-"    \n"
-"    Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-
-#: builtins.c:1785
-msgid ""
-"Remove directories from stack.\n"
-"    \n"
-"    Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-
-#: builtins.c:1815
-msgid ""
-"Display directory stack.\n"
-"    \n"
-"    Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1844
-msgid ""
-"Set and unset shell options.\n"
-"    \n"
-"    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
-"    \n"
-"    Options:\n"
-"      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
-"      -p\tprint each shell option with an indication of its status\n"
-"      -q\tsuppress output\n"
-"      -s\tenable (set) each OPTNAME\n"
-"      -u\tdisable (unset) each OPTNAME\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
-"    given or OPTNAME is disabled."
-msgstr ""
-
-#: builtins.c:1865
-msgid ""
-"Formats and prints ARGUMENTS under control of the FORMAT.\n"
-"    \n"
-"    Options:\n"
-"      -v var\tassign the output to shell variable VAR rather than\n"
-"    \t\tdisplay it on the standard output\n"
-"    \n"
-"    FORMAT is a character string which contains three types of objects: "
-"plain\n"
-"    characters, which are simply copied to standard output; character "
-"escape\n"
-"    sequences, which are converted and copied to the standard output; and\n"
-"    format specifications, each of which causes printing of the next "
-"successive\n"
-"    argument.\n"
-"    \n"
-"    In addition to the standard format specifications described in printf"
-"(1)\n"
-"    and printf(3), printf interprets:\n"
-"    \n"
-"      %b\texpand backslash escape sequences in the corresponding argument\n"
-"      %q\tquote the argument in a way that can be reused as shell input\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a write or "
-"assignment\n"
-"    error occurs."
-msgstr ""
-
-#: builtins.c:1892
-msgid ""
-"Specify how arguments are to be completed by Readline.\n"
-"    \n"
-"    For each NAME, specify how arguments are to be completed.  If no "
-"options\n"
-"    are supplied, existing completion specifications are printed in a way "
-"that\n"
-"    allows them to be reused as input.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint existing completion specifications in a reusable format\n"
-"      -r\tremove a completion specification for each NAME, or, if no\n"
-"    \tNAMEs are supplied, all completion specifications\n"
-"    \n"
-"    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1915
-msgid ""
-"Display possible completions depending on the options.\n"
-"    \n"
-"    Intended to be used from within a shell function generating possible\n"
-"    completions.  If the optional WORD argument is supplied, matches "
-"against\n"
-"    WORD are generated.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1930
-msgid ""
-"Modify or display completion options.\n"
-"    \n"
-"    Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-"    the completion currently begin executed.  If no OPTIONs are givenm, "
-"print\n"
-"    the completion options for each NAME or the current completion "
-"specification.\n"
-"    \n"
-"    Options:\n"
-"    \t-o option\tSet completion option OPTION for each NAME\n"
-"    \n"
-"    Using `+o' instead of `-o' turns off the specified option.\n"
-"    \n"
-"    Arguments:\n"
-"    \n"
-"    Each NAME refers to a command for which a completion specification must\n"
-"    have previously been defined using the `complete' builtin.  If no NAMEs\n"
-"    are supplied, compopt must be called by a function currently generating\n"
-"    completions, and the options for that currently-executing completion\n"
-"    generator are modified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or NAME does not\n"
-"    have a completion specification defined."
-msgstr ""
-
-#: builtins.c:1958
-msgid ""
-"Read lines from the standard input into an array variable.\n"
-"    \n"
-"    Read lines from the standard input into the array variable ARRAY, or "
-"from\n"
-"    file descriptor FD if the -u option is supplied.  The variable MAPFILE "
-"is\n"
-"    the default ARRAY.\n"
-"    \n"
-"    Options:\n"
-"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are "
-"copied.\n"
-"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default "
-"index is 0.\n"
-"      -s count \tDiscard the first COUNT lines read.\n"
-"      -t\t\tRemove a trailing newline from each line read.\n"
-"      -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
-"      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-"      -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
-"    \n"
-"    Arguments:\n"
-"      ARRAY\t\tArray variable name to use for file data.\n"
-"    \n"
-"    If -C is supplied without -c, the default quantum is 5000.  When\n"
-"    CALLBACK is evaluated, it is supplied the index of the next array\n"
-"    element to be assigned as an additional argument.\n"
-"    \n"
-"    If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
-"    assigning to it.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or ARRAY is readonly."
-msgstr ""
-
-#: builtins.c:1990
-msgid ""
-"Read lines from a file into an array variable.\n"
-"    \n"
-"    A synonym for `mapfile'."
-msgstr ""
diff --git a/po/bash-4.1.pot b/po/bash-4.1.pot
deleted file mode 100644 (file)
index 68d33f8..0000000
+++ /dev/null
@@ -1,3919 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-30 08:25-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: arrayfunc.c:50
-msgid "bad array subscript"
-msgstr ""
-
-#: arrayfunc.c:313 builtins/declare.def:481
-#, c-format
-msgid "%s: cannot convert indexed to associative array"
-msgstr ""
-
-#: arrayfunc.c:480
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr ""
-
-#: arrayfunc.c:482
-#, c-format
-msgid "%s: cannot assign to non-numeric index"
-msgstr ""
-
-#: arrayfunc.c:518
-#, c-format
-msgid "%s: %s: must use subscript when assigning associative array"
-msgstr ""
-
-#: bashhist.c:383
-#, c-format
-msgid "%s: cannot create: %s"
-msgstr ""
-
-#: bashline.c:3457
-msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-
-#: bashline.c:3543
-#, c-format
-msgid "%s: first non-whitespace character is not `\"'"
-msgstr ""
-
-#: bashline.c:3572
-#, c-format
-msgid "no closing `%c' in %s"
-msgstr ""
-
-#: bashline.c:3606
-#, c-format
-msgid "%s: missing colon separator"
-msgstr ""
-
-#: builtins/alias.def:132
-#, c-format
-msgid "`%s': invalid alias name"
-msgstr ""
-
-#: builtins/bind.def:120 builtins/bind.def:123
-msgid "line editing not enabled"
-msgstr ""
-
-#: builtins/bind.def:206
-#, c-format
-msgid "`%s': invalid keymap name"
-msgstr ""
-
-#: builtins/bind.def:245
-#, c-format
-msgid "%s: cannot read: %s"
-msgstr ""
-
-#: builtins/bind.def:260
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr ""
-
-#: builtins/bind.def:295 builtins/bind.def:325
-#, c-format
-msgid "`%s': unknown function name"
-msgstr ""
-
-#: builtins/bind.def:303
-#, c-format
-msgid "%s is not bound to any keys.\n"
-msgstr ""
-
-#: builtins/bind.def:307
-#, c-format
-msgid "%s can be invoked via "
-msgstr ""
-
-#: builtins/break.def:77 builtins/break.def:117
-msgid "loop count"
-msgstr ""
-
-#: builtins/break.def:137
-msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr ""
-
-#: builtins/caller.def:133
-msgid ""
-"Returns the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns "
-msgstr ""
-
-#: builtins/caller.def:135
-msgid ""
-".  With EXPR, returns\n"
-"    "
-msgstr ""
-
-#: builtins/caller.def:136
-msgid ""
-"; this extra information can be used to\n"
-"    provide a stack trace.\n"
-"    \n"
-"    The value of EXPR indicates how many call frames to go back before the\n"
-"    current one; the top frame is frame 0."
-msgstr ""
-
-#: builtins/cd.def:215
-msgid "HOME not set"
-msgstr ""
-
-#: builtins/cd.def:227
-msgid "OLDPWD not set"
-msgstr ""
-
-#: builtins/common.c:101
-#, c-format
-msgid "line %d: "
-msgstr ""
-
-#: builtins/common.c:139 error.c:261
-#, c-format
-msgid "warning: "
-msgstr ""
-
-#: builtins/common.c:153
-#, c-format
-msgid "%s: usage: "
-msgstr ""
-
-#: builtins/common.c:166 test.c:827
-msgid "too many arguments"
-msgstr ""
-
-#: builtins/common.c:191 shell.c:499 shell.c:782
-#, c-format
-msgid "%s: option requires an argument"
-msgstr ""
-
-#: builtins/common.c:198
-#, c-format
-msgid "%s: numeric argument required"
-msgstr ""
-
-#: builtins/common.c:205
-#, c-format
-msgid "%s: not found"
-msgstr ""
-
-#: builtins/common.c:214 shell.c:795
-#, c-format
-msgid "%s: invalid option"
-msgstr ""
-
-#: builtins/common.c:221
-#, c-format
-msgid "%s: invalid option name"
-msgstr ""
-
-#: builtins/common.c:228 general.c:231 general.c:236
-#, c-format
-msgid "`%s': not a valid identifier"
-msgstr ""
-
-#: builtins/common.c:238
-msgid "invalid octal number"
-msgstr ""
-
-#: builtins/common.c:240
-msgid "invalid hex number"
-msgstr ""
-
-#: builtins/common.c:242 expr.c:1256
-msgid "invalid number"
-msgstr ""
-
-#: builtins/common.c:250
-#, c-format
-msgid "%s: invalid signal specification"
-msgstr ""
-
-#: builtins/common.c:257
-#, c-format
-msgid "`%s': not a pid or valid job spec"
-msgstr ""
-
-#: builtins/common.c:264 error.c:454
-#, c-format
-msgid "%s: readonly variable"
-msgstr ""
-
-#: builtins/common.c:272
-#, c-format
-msgid "%s: %s out of range"
-msgstr ""
-
-#: builtins/common.c:272 builtins/common.c:274
-msgid "argument"
-msgstr ""
-
-#: builtins/common.c:274
-#, c-format
-msgid "%s out of range"
-msgstr ""
-
-#: builtins/common.c:282
-#, c-format
-msgid "%s: no such job"
-msgstr ""
-
-#: builtins/common.c:290
-#, c-format
-msgid "%s: no job control"
-msgstr ""
-
-#: builtins/common.c:292
-msgid "no job control"
-msgstr ""
-
-#: builtins/common.c:302
-#, c-format
-msgid "%s: restricted"
-msgstr ""
-
-#: builtins/common.c:304
-msgid "restricted"
-msgstr ""
-
-#: builtins/common.c:312
-#, c-format
-msgid "%s: not a shell builtin"
-msgstr ""
-
-#: builtins/common.c:321
-#, c-format
-msgid "write error: %s"
-msgstr ""
-
-#: builtins/common.c:329
-#, c-format
-msgid "error setting terminal attributes: %s"
-msgstr ""
-
-#: builtins/common.c:331
-#, c-format
-msgid "error getting terminal attributes: %s"
-msgstr ""
-
-#: builtins/common.c:563
-#, c-format
-msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr ""
-
-#: builtins/common.c:629 builtins/common.c:631
-#, c-format
-msgid "%s: ambiguous job spec"
-msgstr ""
-
-#: builtins/complete.def:276
-#, c-format
-msgid "%s: invalid action name"
-msgstr ""
-
-#: builtins/complete.def:449 builtins/complete.def:644
-#: builtins/complete.def:853
-#, c-format
-msgid "%s: no completion specification"
-msgstr ""
-
-#: builtins/complete.def:696
-msgid "warning: -F option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:698
-msgid "warning: -C option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:826
-msgid "not currently executing completion function"
-msgstr ""
-
-#: builtins/declare.def:122
-msgid "can only be used in a function"
-msgstr ""
-
-#: builtins/declare.def:360
-msgid "cannot use `-f' to make functions"
-msgstr ""
-
-#: builtins/declare.def:372 execute_cmd.c:4937
-#, c-format
-msgid "%s: readonly function"
-msgstr ""
-
-#: builtins/declare.def:468
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr ""
-
-#: builtins/declare.def:475
-#, c-format
-msgid "%s: cannot convert associative to indexed array"
-msgstr ""
-
-#: builtins/enable.def:137 builtins/enable.def:145
-msgid "dynamic loading not available"
-msgstr ""
-
-#: builtins/enable.def:312
-#, c-format
-msgid "cannot open shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:335
-#, c-format
-msgid "cannot find %s in shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:459
-#, c-format
-msgid "%s: not dynamically loaded"
-msgstr ""
-
-#: builtins/enable.def:474
-#, c-format
-msgid "%s: cannot delete: %s"
-msgstr ""
-
-#: builtins/evalfile.c:134 builtins/hash.def:169 execute_cmd.c:4794
-#: shell.c:1452
-#, c-format
-msgid "%s: is a directory"
-msgstr ""
-
-#: builtins/evalfile.c:139
-#, c-format
-msgid "%s: not a regular file"
-msgstr ""
-
-#: builtins/evalfile.c:147
-#, c-format
-msgid "%s: file is too large"
-msgstr ""
-
-#: builtins/evalfile.c:185 builtins/evalfile.c:203 execute_cmd.c:4864
-#: shell.c:1462
-#, c-format
-msgid "%s: cannot execute binary file"
-msgstr ""
-
-#: builtins/exec.def:212
-#, c-format
-msgid "%s: cannot execute: %s"
-msgstr ""
-
-#: builtins/exit.def:65
-#, c-format
-msgid "logout\n"
-msgstr ""
-
-#: builtins/exit.def:88
-msgid "not login shell: use `exit'"
-msgstr ""
-
-#: builtins/exit.def:120
-#, c-format
-msgid "There are stopped jobs.\n"
-msgstr ""
-
-#: builtins/exit.def:122
-#, c-format
-msgid "There are running jobs.\n"
-msgstr ""
-
-#: builtins/fc.def:262
-msgid "no command found"
-msgstr ""
-
-#: builtins/fc.def:349
-msgid "history specification"
-msgstr ""
-
-#: builtins/fc.def:370
-#, c-format
-msgid "%s: cannot open temp file: %s"
-msgstr ""
-
-#: builtins/fg_bg.def:149 builtins/jobs.def:282
-msgid "current"
-msgstr ""
-
-#: builtins/fg_bg.def:158
-#, c-format
-msgid "job %d started without job control"
-msgstr ""
-
-#: builtins/getopt.c:110
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr ""
-
-#: builtins/getopt.c:111
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr ""
-
-#: builtins/hash.def:92
-msgid "hashing disabled"
-msgstr ""
-
-#: builtins/hash.def:138
-#, c-format
-msgid "%s: hash table empty\n"
-msgstr ""
-
-#: builtins/hash.def:244
-#, c-format
-msgid "hits\tcommand\n"
-msgstr ""
-
-#: builtins/help.def:130
-#, c-format
-msgid "Shell commands matching keyword `"
-msgid_plural "Shell commands matching keywords `"
-msgstr[0] ""
-msgstr[1] ""
-
-#: builtins/help.def:168
-#, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-
-#: builtins/help.def:185
-#, c-format
-msgid "%s: cannot open: %s"
-msgstr ""
-
-#: builtins/help.def:337
-#, c-format
-msgid ""
-"These shell commands are defined internally.  Type `help' to see this list.\n"
-"Type `help name' to find out more about the function `name'.\n"
-"Use `info bash' to find out more about the shell in general.\n"
-"Use `man -k' or `info' to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-msgstr ""
-
-#: builtins/history.def:154
-msgid "cannot use more than one of -anrw"
-msgstr ""
-
-#: builtins/history.def:186
-msgid "history position"
-msgstr ""
-
-#: builtins/history.def:365
-#, c-format
-msgid "%s: history expansion failed"
-msgstr ""
-
-#: builtins/inlib.def:71
-#, c-format
-msgid "%s: inlib failed"
-msgstr ""
-
-#: builtins/jobs.def:109
-msgid "no other options allowed with `-x'"
-msgstr ""
-
-#: builtins/kill.def:200
-#, c-format
-msgid "%s: arguments must be process or job IDs"
-msgstr ""
-
-#: builtins/kill.def:263
-msgid "Unknown error"
-msgstr ""
-
-#: builtins/let.def:95 builtins/let.def:120 expr.c:501 expr.c:516
-msgid "expression expected"
-msgstr ""
-
-#: builtins/mapfile.def:165
-#, c-format
-msgid "%s: not an indexed array"
-msgstr ""
-
-#: builtins/mapfile.def:249 builtins/read.def:279
-#, c-format
-msgid "%s: invalid file descriptor specification"
-msgstr ""
-
-#: builtins/mapfile.def:257 builtins/read.def:286
-#, c-format
-msgid "%d: invalid file descriptor: %s"
-msgstr ""
-
-#: builtins/mapfile.def:266 builtins/mapfile.def:304
-#, c-format
-msgid "%s: invalid line count"
-msgstr ""
-
-#: builtins/mapfile.def:277
-#, c-format
-msgid "%s: invalid array origin"
-msgstr ""
-
-#: builtins/mapfile.def:294
-#, c-format
-msgid "%s: invalid callback quantum"
-msgstr ""
-
-#: builtins/mapfile.def:326
-msgid "empty array variable name"
-msgstr ""
-
-#: builtins/mapfile.def:347
-msgid "array variable support required"
-msgstr ""
-
-#: builtins/printf.def:374
-#, c-format
-msgid "`%s': missing format character"
-msgstr ""
-
-#: builtins/printf.def:551
-#, c-format
-msgid "`%c': invalid format character"
-msgstr ""
-
-#: builtins/printf.def:578
-#, c-format
-msgid "warning: %s: %s"
-msgstr ""
-
-#: builtins/printf.def:757
-msgid "missing hex digit for \\x"
-msgstr ""
-
-#: builtins/pushd.def:195
-msgid "no other directory"
-msgstr ""
-
-#: builtins/pushd.def:462
-msgid "<no current directory>"
-msgstr ""
-
-#: builtins/pushd.def:506
-msgid "directory stack empty"
-msgstr ""
-
-#: builtins/pushd.def:508
-msgid "directory stack index"
-msgstr ""
-
-#: builtins/pushd.def:683
-msgid ""
-"Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"\tdirs when invoked without options, starting with zero."
-msgstr ""
-
-#: builtins/pushd.def:705
-msgid ""
-"Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-
-#: builtins/pushd.def:730
-msgid ""
-"Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-
-#: builtins/read.def:252
-#, c-format
-msgid "%s: invalid timeout specification"
-msgstr ""
-
-#: builtins/read.def:588
-#, c-format
-msgid "read error: %d: %s"
-msgstr ""
-
-#: builtins/return.def:73
-msgid "can only `return' from a function or sourced script"
-msgstr ""
-
-#: builtins/set.def:768
-msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-
-#: builtins/set.def:805
-#, c-format
-msgid "%s: cannot unset"
-msgstr ""
-
-#: builtins/set.def:812
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr ""
-
-#: builtins/set.def:823
-#, c-format
-msgid "%s: not an array variable"
-msgstr ""
-
-#: builtins/setattr.def:186
-#, c-format
-msgid "%s: not a function"
-msgstr ""
-
-#: builtins/shift.def:71 builtins/shift.def:77
-msgid "shift count"
-msgstr ""
-
-#: builtins/shopt.def:260
-msgid "cannot set and unset shell options simultaneously"
-msgstr ""
-
-#: builtins/shopt.def:325
-#, c-format
-msgid "%s: invalid shell option name"
-msgstr ""
-
-#: builtins/source.def:128
-msgid "filename argument required"
-msgstr ""
-
-#: builtins/source.def:153
-#, c-format
-msgid "%s: file not found"
-msgstr ""
-
-#: builtins/suspend.def:101
-msgid "cannot suspend"
-msgstr ""
-
-#: builtins/suspend.def:111
-msgid "cannot suspend a login shell"
-msgstr ""
-
-#: builtins/type.def:234
-#, c-format
-msgid "%s is aliased to `%s'\n"
-msgstr ""
-
-#: builtins/type.def:255
-#, c-format
-msgid "%s is a shell keyword\n"
-msgstr ""
-
-#: builtins/type.def:274
-#, c-format
-msgid "%s is a function\n"
-msgstr ""
-
-#: builtins/type.def:296
-#, c-format
-msgid "%s is a shell builtin\n"
-msgstr ""
-
-#: builtins/type.def:317 builtins/type.def:391
-#, c-format
-msgid "%s is %s\n"
-msgstr ""
-
-#: builtins/type.def:337
-#, c-format
-msgid "%s is hashed (%s)\n"
-msgstr ""
-
-#: builtins/ulimit.def:372
-#, c-format
-msgid "%s: invalid limit argument"
-msgstr ""
-
-#: builtins/ulimit.def:398
-#, c-format
-msgid "`%c': bad command"
-msgstr ""
-
-#: builtins/ulimit.def:427
-#, c-format
-msgid "%s: cannot get limit: %s"
-msgstr ""
-
-#: builtins/ulimit.def:453
-msgid "limit"
-msgstr ""
-
-#: builtins/ulimit.def:465 builtins/ulimit.def:765
-#, c-format
-msgid "%s: cannot modify limit: %s"
-msgstr ""
-
-#: builtins/umask.def:118
-msgid "octal number"
-msgstr ""
-
-#: builtins/umask.def:231
-#, c-format
-msgid "`%c': invalid symbolic mode operator"
-msgstr ""
-
-#: builtins/umask.def:286
-#, c-format
-msgid "`%c': invalid symbolic mode character"
-msgstr ""
-
-#: error.c:90 error.c:321 error.c:323 error.c:325
-msgid " line "
-msgstr ""
-
-#: error.c:165
-#, c-format
-msgid "last command: %s\n"
-msgstr ""
-
-#: error.c:173
-#, c-format
-msgid "Aborting..."
-msgstr ""
-
-#: error.c:406
-msgid "unknown command error"
-msgstr ""
-
-#: error.c:407
-msgid "bad command type"
-msgstr ""
-
-#: error.c:408
-msgid "bad connector"
-msgstr ""
-
-#: error.c:409
-msgid "bad jump"
-msgstr ""
-
-#: error.c:447
-#, c-format
-msgid "%s: unbound variable"
-msgstr ""
-
-#: eval.c:181
-#, c-format
-msgid "\atimed out waiting for input: auto-logout\n"
-msgstr ""
-
-#: execute_cmd.c:497
-#, c-format
-msgid "cannot redirect standard input from /dev/null: %s"
-msgstr ""
-
-#: execute_cmd.c:1162
-#, c-format
-msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr ""
-
-#: execute_cmd.c:2075
-msgid "pipe error"
-msgstr ""
-
-#: execute_cmd.c:4481
-#, c-format
-msgid "%s: restricted: cannot specify `/' in command names"
-msgstr ""
-
-#: execute_cmd.c:4572
-#, c-format
-msgid "%s: command not found"
-msgstr ""
-
-#: execute_cmd.c:4827
-#, c-format
-msgid "%s: %s: bad interpreter"
-msgstr ""
-
-#: execute_cmd.c:4976
-#, c-format
-msgid "cannot duplicate fd %d to fd %d"
-msgstr ""
-
-#: expr.c:241
-msgid "expression recursion level exceeded"
-msgstr ""
-
-#: expr.c:265
-msgid "recursion stack underflow"
-msgstr ""
-
-#: expr.c:379
-msgid "syntax error in expression"
-msgstr ""
-
-#: expr.c:419
-msgid "attempted assignment to non-variable"
-msgstr ""
-
-#: expr.c:440 expr.c:445 expr.c:756
-msgid "division by 0"
-msgstr ""
-
-#: expr.c:471
-msgid "bug: bad expassign token"
-msgstr ""
-
-#: expr.c:513
-msgid "`:' expected for conditional expression"
-msgstr ""
-
-#: expr.c:781
-msgid "exponent less than 0"
-msgstr ""
-
-#: expr.c:826
-msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
-
-#: expr.c:854
-msgid "missing `)'"
-msgstr ""
-
-#: expr.c:897 expr.c:1176
-msgid "syntax error: operand expected"
-msgstr ""
-
-#: expr.c:1178
-msgid "syntax error: invalid arithmetic operator"
-msgstr ""
-
-#: expr.c:1202
-#, c-format
-msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr ""
-
-#: expr.c:1260
-msgid "invalid arithmetic base"
-msgstr ""
-
-#: expr.c:1280
-msgid "value too great for base"
-msgstr ""
-
-#: expr.c:1329
-#, c-format
-msgid "%s: expression error\n"
-msgstr ""
-
-#: general.c:61
-msgid "getcwd: cannot access parent directories"
-msgstr ""
-
-#: input.c:94 subst.c:4857
-#, c-format
-msgid "cannot reset nodelay mode for fd %d"
-msgstr ""
-
-#: input.c:258
-#, c-format
-msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr ""
-
-#: input.c:266
-#, c-format
-msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr ""
-
-#: jobs.c:466
-msgid "start_pipeline: pgrp pipe"
-msgstr ""
-
-#: jobs.c:887
-#, c-format
-msgid "forked pid %d appears in running job %d"
-msgstr ""
-
-#: jobs.c:1005
-#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr ""
-
-#: jobs.c:1110
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr ""
-
-#: jobs.c:1113
-#, c-format
-msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr ""
-
-#: jobs.c:1401
-#, c-format
-msgid "describe_pid: %ld: no such pid"
-msgstr ""
-
-#: jobs.c:1416
-#, c-format
-msgid "Signal %d"
-msgstr ""
-
-#: jobs.c:1430 jobs.c:1455
-msgid "Done"
-msgstr ""
-
-#: jobs.c:1435 siglist.c:123
-msgid "Stopped"
-msgstr ""
-
-#: jobs.c:1439
-#, c-format
-msgid "Stopped(%s)"
-msgstr ""
-
-#: jobs.c:1443
-msgid "Running"
-msgstr ""
-
-#: jobs.c:1457
-#, c-format
-msgid "Done(%d)"
-msgstr ""
-
-#: jobs.c:1459
-#, c-format
-msgid "Exit %d"
-msgstr ""
-
-#: jobs.c:1462
-msgid "Unknown status"
-msgstr ""
-
-#: jobs.c:1549
-#, c-format
-msgid "(core dumped) "
-msgstr ""
-
-#: jobs.c:1568
-#, c-format
-msgid "  (wd: %s)"
-msgstr ""
-
-#: jobs.c:1776
-#, c-format
-msgid "child setpgid (%ld to %ld)"
-msgstr ""
-
-#: jobs.c:2104 nojobs.c:585
-#, c-format
-msgid "wait: pid %ld is not a child of this shell"
-msgstr ""
-
-#: jobs.c:2331
-#, c-format
-msgid "wait_for: No record of process %ld"
-msgstr ""
-
-#: jobs.c:2607
-#, c-format
-msgid "wait_for_job: job %d is stopped"
-msgstr ""
-
-#: jobs.c:2829
-#, c-format
-msgid "%s: job has terminated"
-msgstr ""
-
-#: jobs.c:2838
-#, c-format
-msgid "%s: job %d already in background"
-msgstr ""
-
-#: jobs.c:3059
-msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
-
-#: jobs.c:3508
-#, c-format
-msgid "%s: line %d: "
-msgstr ""
-
-#: jobs.c:3522 nojobs.c:814
-#, c-format
-msgid " (core dumped)"
-msgstr ""
-
-#: jobs.c:3534 jobs.c:3547
-#, c-format
-msgid "(wd now: %s)\n"
-msgstr ""
-
-#: jobs.c:3579
-msgid "initialize_job_control: getpgrp failed"
-msgstr ""
-
-#: jobs.c:3639
-msgid "initialize_job_control: line discipline"
-msgstr ""
-
-#: jobs.c:3649
-msgid "initialize_job_control: setpgid"
-msgstr ""
-
-#: jobs.c:3677
-#, c-format
-msgid "cannot set terminal process group (%d)"
-msgstr ""
-
-#: jobs.c:3682
-msgid "no job control in this shell"
-msgstr ""
-
-#: lib/malloc/malloc.c:296
-#, c-format
-msgid "malloc: failed assertion: %s\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:312
-#, c-format
-msgid ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:313
-msgid "unknown"
-msgstr ""
-
-#: lib/malloc/malloc.c:797
-msgid "malloc: block on free list clobbered"
-msgstr ""
-
-#: lib/malloc/malloc.c:874
-msgid "free: called with already freed block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:877
-msgid "free: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:896
-msgid "free: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:902
-msgid "free: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/malloc.c:1001
-msgid "realloc: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:1016
-msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:1022
-msgid "realloc: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/table.c:177
-#, c-format
-msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
-
-#: lib/malloc/table.c:184
-#, c-format
-msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
-
-#: lib/malloc/table.c:220
-#, c-format
-msgid "register_free: %p already in table as free?\n"
-msgstr ""
-
-#: lib/sh/fmtulong.c:101
-msgid "invalid base"
-msgstr ""
-
-#: lib/sh/netopen.c:168
-#, c-format
-msgid "%s: host unknown"
-msgstr ""
-
-#: lib/sh/netopen.c:175
-#, c-format
-msgid "%s: invalid service"
-msgstr ""
-
-#: lib/sh/netopen.c:306
-#, c-format
-msgid "%s: bad network path specification"
-msgstr ""
-
-#: lib/sh/netopen.c:346
-msgid "network operations not supported"
-msgstr ""
-
-#: locale.c:192
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr ""
-
-#: locale.c:194
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr ""
-
-#: locale.c:247
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s)"
-msgstr ""
-
-#: locale.c:249
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr ""
-
-#: mailcheck.c:433
-msgid "You have mail in $_"
-msgstr ""
-
-#: mailcheck.c:458
-msgid "You have new mail in $_"
-msgstr ""
-
-#: mailcheck.c:474
-#, c-format
-msgid "The mail in %s has been read\n"
-msgstr ""
-
-#: make_cmd.c:323
-msgid "syntax error: arithmetic expression required"
-msgstr ""
-
-#: make_cmd.c:325
-msgid "syntax error: `;' unexpected"
-msgstr ""
-
-#: make_cmd.c:326
-#, c-format
-msgid "syntax error: `((%s))'"
-msgstr ""
-
-#: make_cmd.c:575
-#, c-format
-msgid "make_here_document: bad instruction type %d"
-msgstr ""
-
-#: make_cmd.c:659
-#, c-format
-msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
-
-#: make_cmd.c:756
-#, c-format
-msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
-
-#: parse.y:3133 parse.y:3369
-#, c-format
-msgid "unexpected EOF while looking for matching `%c'"
-msgstr ""
-
-#: parse.y:3951
-msgid "unexpected EOF while looking for `]]'"
-msgstr ""
-
-#: parse.y:3956
-#, c-format
-msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr ""
-
-#: parse.y:3960
-msgid "syntax error in conditional expression"
-msgstr ""
-
-#: parse.y:4038
-#, c-format
-msgid "unexpected token `%s', expected `)'"
-msgstr ""
-
-#: parse.y:4042
-msgid "expected `)'"
-msgstr ""
-
-#: parse.y:4070
-#, c-format
-msgid "unexpected argument `%s' to conditional unary operator"
-msgstr ""
-
-#: parse.y:4074
-msgid "unexpected argument to conditional unary operator"
-msgstr ""
-
-#: parse.y:4120
-#, c-format
-msgid "unexpected token `%s', conditional binary operator expected"
-msgstr ""
-
-#: parse.y:4124
-msgid "conditional binary operator expected"
-msgstr ""
-
-#: parse.y:4146
-#, c-format
-msgid "unexpected argument `%s' to conditional binary operator"
-msgstr ""
-
-#: parse.y:4150
-msgid "unexpected argument to conditional binary operator"
-msgstr ""
-
-#: parse.y:4161
-#, c-format
-msgid "unexpected token `%c' in conditional command"
-msgstr ""
-
-#: parse.y:4164
-#, c-format
-msgid "unexpected token `%s' in conditional command"
-msgstr ""
-
-#: parse.y:4168
-#, c-format
-msgid "unexpected token %d in conditional command"
-msgstr ""
-
-#: parse.y:5459
-#, c-format
-msgid "syntax error near unexpected token `%s'"
-msgstr ""
-
-#: parse.y:5477
-#, c-format
-msgid "syntax error near `%s'"
-msgstr ""
-
-#: parse.y:5487
-msgid "syntax error: unexpected end of file"
-msgstr ""
-
-#: parse.y:5487
-msgid "syntax error"
-msgstr ""
-
-#: parse.y:5549
-#, c-format
-msgid "Use \"%s\" to leave the shell.\n"
-msgstr ""
-
-#: parse.y:5711
-msgid "unexpected EOF while looking for matching `)'"
-msgstr ""
-
-#: pcomplete.c:1030
-#, c-format
-msgid "completion: function `%s' not found"
-msgstr ""
-
-#: pcomplib.c:179
-#, c-format
-msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr ""
-
-#: print_cmd.c:290
-#, c-format
-msgid "print_command: bad connector `%d'"
-msgstr ""
-
-#: print_cmd.c:363
-#, c-format
-msgid "xtrace_set: %d: invalid file descriptor"
-msgstr ""
-
-#: print_cmd.c:368
-msgid "xtrace_set: NULL file pointer"
-msgstr ""
-
-#: print_cmd.c:372
-#, c-format
-msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
-msgstr ""
-
-#: print_cmd.c:1461
-#, c-format
-msgid "cprintf: `%c': invalid format character"
-msgstr ""
-
-#: redir.c:110
-msgid "file descriptor out of range"
-msgstr ""
-
-#: redir.c:166
-#, c-format
-msgid "%s: ambiguous redirect"
-msgstr ""
-
-#: redir.c:170
-#, c-format
-msgid "%s: cannot overwrite existing file"
-msgstr ""
-
-#: redir.c:175
-#, c-format
-msgid "%s: restricted: cannot redirect output"
-msgstr ""
-
-#: redir.c:180
-#, c-format
-msgid "cannot create temp file for here-document: %s"
-msgstr ""
-
-#: redir.c:184
-#, c-format
-msgid "%s: cannot assign fd to variable"
-msgstr ""
-
-#: redir.c:544
-msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
-
-#: redir.c:1101
-msgid "redirection error: cannot duplicate fd"
-msgstr ""
-
-#: shell.c:332
-msgid "could not find /tmp, please create!"
-msgstr ""
-
-#: shell.c:336
-msgid "/tmp must be a valid directory name"
-msgstr ""
-
-#: shell.c:884
-#, c-format
-msgid "%c%c: invalid option"
-msgstr ""
-
-#: shell.c:1651
-msgid "I have no name!"
-msgstr ""
-
-#: shell.c:1793
-#, c-format
-msgid "GNU bash, version %s-(%s)\n"
-msgstr ""
-
-#: shell.c:1794
-#, c-format
-msgid ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-msgstr ""
-
-#: shell.c:1796
-msgid "GNU long options:\n"
-msgstr ""
-
-#: shell.c:1800
-msgid "Shell options:\n"
-msgstr ""
-
-#: shell.c:1801
-msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
-
-#: shell.c:1816
-#, c-format
-msgid "\t-%s or -o option\n"
-msgstr ""
-
-#: shell.c:1822
-#, c-format
-msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-
-#: shell.c:1823
-#, c-format
-msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-
-#: shell.c:1824
-#, c-format
-msgid "Use the `bashbug' command to report bugs.\n"
-msgstr ""
-
-#: sig.c:626
-#, c-format
-msgid "sigprocmask: %d: invalid operation"
-msgstr ""
-
-#: siglist.c:48
-msgid "Bogus signal"
-msgstr ""
-
-#: siglist.c:51
-msgid "Hangup"
-msgstr ""
-
-#: siglist.c:55
-msgid "Interrupt"
-msgstr ""
-
-#: siglist.c:59
-msgid "Quit"
-msgstr ""
-
-#: siglist.c:63
-msgid "Illegal instruction"
-msgstr ""
-
-#: siglist.c:67
-msgid "BPT trace/trap"
-msgstr ""
-
-#: siglist.c:75
-msgid "ABORT instruction"
-msgstr ""
-
-#: siglist.c:79
-msgid "EMT instruction"
-msgstr ""
-
-#: siglist.c:83
-msgid "Floating point exception"
-msgstr ""
-
-#: siglist.c:87
-msgid "Killed"
-msgstr ""
-
-#: siglist.c:91
-msgid "Bus error"
-msgstr ""
-
-#: siglist.c:95
-msgid "Segmentation fault"
-msgstr ""
-
-#: siglist.c:99
-msgid "Bad system call"
-msgstr ""
-
-#: siglist.c:103
-msgid "Broken pipe"
-msgstr ""
-
-#: siglist.c:107
-msgid "Alarm clock"
-msgstr ""
-
-#: siglist.c:111
-msgid "Terminated"
-msgstr ""
-
-#: siglist.c:115
-msgid "Urgent IO condition"
-msgstr ""
-
-#: siglist.c:119
-msgid "Stopped (signal)"
-msgstr ""
-
-#: siglist.c:127
-msgid "Continue"
-msgstr ""
-
-#: siglist.c:135
-msgid "Child death or stop"
-msgstr ""
-
-#: siglist.c:139
-msgid "Stopped (tty input)"
-msgstr ""
-
-#: siglist.c:143
-msgid "Stopped (tty output)"
-msgstr ""
-
-#: siglist.c:147
-msgid "I/O ready"
-msgstr ""
-
-#: siglist.c:151
-msgid "CPU limit"
-msgstr ""
-
-#: siglist.c:155
-msgid "File limit"
-msgstr ""
-
-#: siglist.c:159
-msgid "Alarm (virtual)"
-msgstr ""
-
-#: siglist.c:163
-msgid "Alarm (profile)"
-msgstr ""
-
-#: siglist.c:167
-msgid "Window changed"
-msgstr ""
-
-#: siglist.c:171
-msgid "Record lock"
-msgstr ""
-
-#: siglist.c:175
-msgid "User signal 1"
-msgstr ""
-
-#: siglist.c:179
-msgid "User signal 2"
-msgstr ""
-
-#: siglist.c:183
-msgid "HFT input data pending"
-msgstr ""
-
-#: siglist.c:187
-msgid "power failure imminent"
-msgstr ""
-
-#: siglist.c:191
-msgid "system crash imminent"
-msgstr ""
-
-#: siglist.c:195
-msgid "migrate process to another CPU"
-msgstr ""
-
-#: siglist.c:199
-msgid "programming error"
-msgstr ""
-
-#: siglist.c:203
-msgid "HFT monitor mode granted"
-msgstr ""
-
-#: siglist.c:207
-msgid "HFT monitor mode retracted"
-msgstr ""
-
-#: siglist.c:211
-msgid "HFT sound sequence has completed"
-msgstr ""
-
-#: siglist.c:215
-msgid "Information request"
-msgstr ""
-
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr ""
-
-#: siglist.c:225
-#, c-format
-msgid "Unknown Signal #%d"
-msgstr ""
-
-#: subst.c:1333 subst.c:1454
-#, c-format
-msgid "bad substitution: no closing `%s' in %s"
-msgstr ""
-
-#: subst.c:2735
-#, c-format
-msgid "%s: cannot assign list to array member"
-msgstr ""
-
-#: subst.c:4754 subst.c:4770
-msgid "cannot make pipe for process substitution"
-msgstr ""
-
-#: subst.c:4802
-msgid "cannot make child for process substitution"
-msgstr ""
-
-#: subst.c:4847
-#, c-format
-msgid "cannot open named pipe %s for reading"
-msgstr ""
-
-#: subst.c:4849
-#, c-format
-msgid "cannot open named pipe %s for writing"
-msgstr ""
-
-#: subst.c:4867
-#, c-format
-msgid "cannot duplicate named pipe %s as fd %d"
-msgstr ""
-
-#: subst.c:5063
-msgid "cannot make pipe for command substitution"
-msgstr ""
-
-#: subst.c:5097
-msgid "cannot make child for command substitution"
-msgstr ""
-
-#: subst.c:5114
-msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr ""
-
-#: subst.c:5617
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr ""
-
-#: subst.c:5907
-#, c-format
-msgid "%s: substring expression < 0"
-msgstr ""
-
-#: subst.c:6965
-#, c-format
-msgid "%s: bad substitution"
-msgstr ""
-
-#: subst.c:7045
-#, c-format
-msgid "$%s: cannot assign in this way"
-msgstr ""
-
-#: subst.c:7374
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-
-#: subst.c:7839
-#, c-format
-msgid "bad substitution: no closing \"`\" in %s"
-msgstr ""
-
-#: subst.c:8720
-#, c-format
-msgid "no match: %s"
-msgstr ""
-
-#: test.c:146
-msgid "argument expected"
-msgstr ""
-
-#: test.c:155
-#, c-format
-msgid "%s: integer expression expected"
-msgstr ""
-
-#: test.c:263
-msgid "`)' expected"
-msgstr ""
-
-#: test.c:265
-#, c-format
-msgid "`)' expected, found %s"
-msgstr ""
-
-#: test.c:280 test.c:693 test.c:696
-#, c-format
-msgid "%s: unary operator expected"
-msgstr ""
-
-#: test.c:449 test.c:736
-#, c-format
-msgid "%s: binary operator expected"
-msgstr ""
-
-#: test.c:811
-msgid "missing `]'"
-msgstr ""
-
-#: trap.c:203
-msgid "invalid signal number"
-msgstr ""
-
-#: trap.c:327
-#, c-format
-msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
-
-#: trap.c:331
-#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-
-#: trap.c:380
-#, c-format
-msgid "trap_handler: bad signal %d"
-msgstr ""
-
-#: variables.c:363
-#, c-format
-msgid "error importing function definition for `%s'"
-msgstr ""
-
-#: variables.c:748
-#, c-format
-msgid "shell level (%d) too high, resetting to 1"
-msgstr ""
-
-#: variables.c:1915
-msgid "make_local_variable: no function context at current scope"
-msgstr ""
-
-#: variables.c:3159
-msgid "all_local_variables: no function context at current scope"
-msgstr ""
-
-#: variables.c:3376
-#, c-format
-msgid "%s has null exportstr"
-msgstr ""
-
-#: variables.c:3381 variables.c:3390
-#, c-format
-msgid "invalid character %d in exportstr for %s"
-msgstr ""
-
-#: variables.c:3396
-#, c-format
-msgid "no `=' in exportstr for %s"
-msgstr ""
-
-#: variables.c:3835
-msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-
-#: variables.c:3848
-msgid "pop_var_context: no global_variables context"
-msgstr ""
-
-#: variables.c:3922
-msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-
-#: variables.c:4678
-#, c-format
-msgid "%s: %s: cannot open as FILE"
-msgstr ""
-
-#: variables.c:4683
-#, c-format
-msgid "%s: %s: invalid value for trace file descriptor"
-msgstr ""
-
-#: version.c:46
-msgid "Copyright (C) 2009 Free Software Foundation, Inc."
-msgstr ""
-
-#: version.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-
-#: version.c:86 version2.c:83
-#, c-format
-msgid "GNU bash, version %s (%s)\n"
-msgstr ""
-
-#: version.c:91 version2.c:88
-#, c-format
-msgid "This is free software; you are free to change and redistribute it.\n"
-msgstr ""
-
-#: version.c:92 version2.c:89
-#, c-format
-msgid "There is NO WARRANTY, to the extent permitted by law.\n"
-msgstr ""
-
-#: version2.c:86
-#, c-format
-msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-msgstr ""
-
-#: version2.c:87
-#, c-format
-msgid ""
-"License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-
-#: xmalloc.c:91
-#, c-format
-msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:93
-#, c-format
-msgid "%s: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:163
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:165
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: builtins.c:43
-msgid "alias [-p] [name[=value] ... ]"
-msgstr ""
-
-#: builtins.c:47
-msgid "unalias [-a] name [name ...]"
-msgstr ""
-
-#: builtins.c:51
-msgid ""
-"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-
-#: builtins.c:54
-msgid "break [n]"
-msgstr ""
-
-#: builtins.c:56
-msgid "continue [n]"
-msgstr ""
-
-#: builtins.c:58
-msgid "builtin [shell-builtin [arg ...]]"
-msgstr ""
-
-#: builtins.c:61
-msgid "caller [expr]"
-msgstr ""
-
-#: builtins.c:64
-msgid "cd [-L|-P] [dir]"
-msgstr ""
-
-#: builtins.c:66
-msgid "pwd [-LP]"
-msgstr ""
-
-#: builtins.c:68
-msgid ":"
-msgstr ""
-
-#: builtins.c:70
-msgid "true"
-msgstr ""
-
-#: builtins.c:72
-msgid "false"
-msgstr ""
-
-#: builtins.c:74
-msgid "command [-pVv] command [arg ...]"
-msgstr ""
-
-#: builtins.c:76
-msgid "declare [-aAfFilrtux] [-p] [name[=value] ...]"
-msgstr ""
-
-#: builtins.c:78
-msgid "typeset [-aAfFilrtux] [-p] name[=value] ..."
-msgstr ""
-
-#: builtins.c:80
-msgid "local [option] name[=value] ..."
-msgstr ""
-
-#: builtins.c:83
-msgid "echo [-neE] [arg ...]"
-msgstr ""
-
-#: builtins.c:87
-msgid "echo [-n] [arg ...]"
-msgstr ""
-
-#: builtins.c:90
-msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr ""
-
-#: builtins.c:92
-msgid "eval [arg ...]"
-msgstr ""
-
-#: builtins.c:94
-msgid "getopts optstring name [arg]"
-msgstr ""
-
-#: builtins.c:96
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr ""
-
-#: builtins.c:98
-msgid "exit [n]"
-msgstr ""
-
-#: builtins.c:100
-msgid "logout [n]"
-msgstr ""
-
-#: builtins.c:103
-msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr ""
-
-#: builtins.c:107
-msgid "fg [job_spec]"
-msgstr ""
-
-#: builtins.c:111
-msgid "bg [job_spec ...]"
-msgstr ""
-
-#: builtins.c:114
-msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr ""
-
-#: builtins.c:117
-msgid "help [-dms] [pattern ...]"
-msgstr ""
-
-#: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-
-#: builtins.c:125
-msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr ""
-
-#: builtins.c:129
-msgid "disown [-h] [-ar] [jobspec ...]"
-msgstr ""
-
-#: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-
-#: builtins.c:134
-msgid "let arg [arg ...]"
-msgstr ""
-
-#: builtins.c:136
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-
-#: builtins.c:138
-msgid "return [n]"
-msgstr ""
-
-#: builtins.c:140
-msgid "set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]"
-msgstr ""
-
-#: builtins.c:142
-msgid "unset [-f] [-v] [name ...]"
-msgstr ""
-
-#: builtins.c:144
-msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr ""
-
-#: builtins.c:146
-msgid "readonly [-af] [name[=value] ...] or readonly -p"
-msgstr ""
-
-#: builtins.c:148
-msgid "shift [n]"
-msgstr ""
-
-#: builtins.c:150
-msgid "source filename [arguments]"
-msgstr ""
-
-#: builtins.c:152
-msgid ". filename [arguments]"
-msgstr ""
-
-#: builtins.c:155
-msgid "suspend [-f]"
-msgstr ""
-
-#: builtins.c:158
-msgid "test [expr]"
-msgstr ""
-
-#: builtins.c:160
-msgid "[ arg... ]"
-msgstr ""
-
-#: builtins.c:162
-msgid "times"
-msgstr ""
-
-#: builtins.c:164
-msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr ""
-
-#: builtins.c:166
-msgid "type [-afptP] name [name ...]"
-msgstr ""
-
-#: builtins.c:169
-msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]"
-msgstr ""
-
-#: builtins.c:172
-msgid "umask [-p] [-S] [mode]"
-msgstr ""
-
-#: builtins.c:175
-msgid "wait [id]"
-msgstr ""
-
-#: builtins.c:179
-msgid "wait [pid]"
-msgstr ""
-
-#: builtins.c:182
-msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:184
-msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:186
-msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:188
-msgid "time [-p] pipeline"
-msgstr ""
-
-#: builtins.c:190
-msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr ""
-
-#: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-
-#: builtins.c:194
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:196
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:198
-msgid "coproc [NAME] command [redirections]"
-msgstr ""
-
-#: builtins.c:200
-msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr ""
-
-#: builtins.c:202
-msgid "{ COMMANDS ; }"
-msgstr ""
-
-#: builtins.c:204
-msgid "job_spec [&]"
-msgstr ""
-
-#: builtins.c:206
-msgid "(( expression ))"
-msgstr ""
-
-#: builtins.c:208
-msgid "[[ expression ]]"
-msgstr ""
-
-#: builtins.c:210
-msgid "variables - Names and meanings of some shell variables"
-msgstr ""
-
-#: builtins.c:213
-msgid "pushd [-n] [+N | -N | dir]"
-msgstr ""
-
-#: builtins.c:217
-msgid "popd [-n] [+N | -N]"
-msgstr ""
-
-#: builtins.c:221
-msgid "dirs [-clpv] [+N] [-N]"
-msgstr ""
-
-#: builtins.c:224
-msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr ""
-
-#: builtins.c:226
-msgid "printf [-v var] format [arguments]"
-msgstr ""
-
-#: builtins.c:229
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-
-#: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-
-#: builtins.c:237
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr ""
-
-#: builtins.c:240
-msgid ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-
-#: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-
-#: builtins.c:254
-msgid ""
-"Define or display aliases.\n"
-"    \n"
-"    Without arguments, `alias' prints the list of aliases in the reusable\n"
-"    form `alias NAME=VALUE' on standard output.\n"
-"    \n"
-"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-"    A trailing space in VALUE causes the next word to be checked for\n"
-"    alias substitution when the alias is expanded.\n"
-"    \n"
-"    Options:\n"
-"      -p\tPrint all defined aliases in a reusable format\n"
-"    \n"
-"    Exit Status:\n"
-"    alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
-"    defined."
-msgstr ""
-
-#: builtins.c:276
-msgid ""
-"Remove each NAME from the list of defined aliases.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all alias definitions.\n"
-"    \n"
-"    Return success unless a NAME is not an existing alias."
-msgstr ""
-
-#: builtins.c:289
-msgid ""
-"Set Readline key bindings and variables.\n"
-"    \n"
-"    Bind a key sequence to a Readline function or a macro, or set a\n"
-"    Readline variable.  The non-option argument syntax is equivalent to\n"
-"    that found in ~/.inputrc, but must be passed as a single argument:\n"
-"    e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"    \n"
-"    Options:\n"
-"      -m  keymap         Use KEYMAP as the keymap for the duration of this\n"
-"                         command.  Acceptable keymap names are emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-"                         vi-command, and vi-insert.\n"
-"      -l                 List names of functions.\n"
-"      -P                 List function names and bindings.\n"
-"      -p                 List functions and bindings in a form that can be\n"
-"                         reused as input.\n"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\n"
-"                         in a form that can be reused as input.\n"
-"      -V                 List variable names and values\n"
-"      -v                 List variable names and values in a form that can\n"
-"                         be reused as input.\n"
-"      -q  function-name  Query about which keys invoke the named function.\n"
-"      -u  function-name  Unbind all keys which are bound to the named "
-"function.\n"
-"      -r  keyseq         Remove the binding for KEYSEQ.\n"
-"      -f  filename       Read key bindings from FILENAME.\n"
-"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-"    \t\t\t\tKEYSEQ is entered.\n"
-"    \n"
-"    Exit Status:\n"
-"    bind returns 0 unless an unrecognized option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:326
-msgid ""
-"Exit for, while, or until loops.\n"
-"    \n"
-"    Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing\n"
-"    loops.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-
-#: builtins.c:338
-msgid ""
-"Resume for, while, or until loops.\n"
-"    \n"
-"    Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-"    If N is specified, resumes the Nth enclosing loop.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-
-#: builtins.c:350
-msgid ""
-"Execute shell builtins.\n"
-"    \n"
-"    Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
-"    lookup.  This is useful when you wish to reimplement a shell builtin\n"
-"    as a shell function, but need to execute the builtin within the "
-"function.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
-msgstr ""
-
-#: builtins.c:365
-msgid ""
-"Return the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns \"$line $filename\".  With EXPR, returns\n"
-"    \"$line $subroutine $filename\"; this extra information can be used to\n"
-"    provide a stack trace.\n"
-"    \n"
-"    The value of EXPR indicates how many call frames to go back before the\n"
-"    current one; the top frame is frame 0.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless the shell is not executing a shell function or EXPR\n"
-"    is invalid."
-msgstr ""
-
-#: builtins.c:383
-msgid ""
-"Change the shell working directory.\n"
-"    \n"
-"    Change the current directory to DIR.  The default DIR is the value of "
-"the\n"
-"    HOME shell variable.\n"
-"    \n"
-"    The variable CDPATH defines the search path for the directory "
-"containing\n"
-"    DIR.  Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-"    A null directory name is the same as the current directory.  If DIR "
-"begins\n"
-"    with a slash (/), then CDPATH is not used.\n"
-"    \n"
-"    If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-"    the word is assumed to be  a variable name.  If that variable has a "
-"value,\n"
-"    its value is used for DIR.\n"
-"    \n"
-"    Options:\n"
-"        -L\tforce symbolic links to be followed\n"
-"        -P\tuse the physical directory structure without following symbolic\n"
-"    \tlinks\n"
-"    \n"
-"    The default is to follow symbolic links, as if `-L' were specified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 if the directory is changed; non-zero otherwise."
-msgstr ""
-
-#: builtins.c:411
-msgid ""
-"Print the name of the current working directory.\n"
-"    \n"
-"    Options:\n"
-"      -L\tprint the value of $PWD if it names the current working\n"
-"    \tdirectory\n"
-"      -P\tprint the physical directory, without any symbolic links\n"
-"    \n"
-"    By default, `pwd' behaves as if `-L' were specified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless an invalid option is given or the current directory\n"
-"    cannot be read."
-msgstr ""
-
-#: builtins.c:428
-msgid ""
-"Null command.\n"
-"    \n"
-"    No effect; the command does nothing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:439
-msgid ""
-"Return a successful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:448
-msgid ""
-"Return an unsuccessful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always fails."
-msgstr ""
-
-#: builtins.c:457
-msgid ""
-"Execute a simple command or display information about commands.\n"
-"    \n"
-"    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n"
-"    information about the specified COMMANDs.  Can be used to invoke "
-"commands\n"
-"    on disk when a function with the same name exists.\n"
-"    \n"
-"    Options:\n"
-"      -p\tuse a default value for PATH that is guaranteed to find all of\n"
-"    \tthe standard utilities\n"
-"      -v\tprint a description of COMMAND similar to the `type' builtin\n"
-"      -V\tprint a more verbose description of each COMMAND\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of COMMAND, or failure if COMMAND is not found."
-msgstr ""
-
-#: builtins.c:476
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Declare variables and give them attributes.  If no NAMEs are given,\n"
-"    display the attributes and values of all variables.\n"
-"    \n"
-"    Options:\n"
-"      -f\trestrict action or display to function names and definitions\n"
-"      -F\trestrict display to function names only (plus line number and\n"
-"    \tsource file when debugging)\n"
-"      -p\tdisplay the attributes and value of each NAME\n"
-"    \n"
-"    Options which set attributes:\n"
-"      -a\tto make NAMEs indexed arrays (if supported)\n"
-"      -A\tto make NAMEs associative arrays (if supported)\n"
-"      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
-"      -r\tto make NAMEs readonly\n"
-"      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
-"      -x\tto make NAMEs export\n"
-"    \n"
-"    Using `+' instead of `-' turns off the given attribute.\n"
-"    \n"
-"    Variables with the integer attribute have arithmetic evaluation (see\n"
-"    the `let' command) performed when the variable is assigned a value.\n"
-"    \n"
-"    When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
-"    command.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:512
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Obsolete.  See `help declare'."
-msgstr ""
-
-#: builtins.c:520
-msgid ""
-"Define local variables.\n"
-"    \n"
-"    Create a local variable called NAME, and give it VALUE.  OPTION can\n"
-"    be any option accepted by `declare'.\n"
-"    \n"
-"    Local variables can only be used within a function; they are visible\n"
-"    only to the function where they are defined and its children.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied, an error occurs,\n"
-"    or the shell is not executing a function."
-msgstr ""
-
-#: builtins.c:537
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs on the standard output followed by a newline.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"      -e\tenable interpretation of the following backslash escapes\n"
-"      -E\texplicitly suppress interpretation of backslash escapes\n"
-"    \n"
-"    `echo' interprets the following backslash-escaped characters:\n"
-"      \\a\talert (bell)\n"
-"      \\b\tbackspace\n"
-"      \\c\tsuppress further output\n"
-"      \\e\tescape character\n"
-"      \\f\tform feed\n"
-"      \\n\tnew line\n"
-"      \\r\tcarriage return\n"
-"      \\t\thorizontal tab\n"
-"      \\v\tvertical tab\n"
-"      \\\\\tbackslash\n"
-"      \\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n"
-"    \t0 to 3 octal digits\n"
-"      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
-"    \tcan be one or two hex digits\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-
-#: builtins.c:571
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs on the standard output followed by a newline.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-
-#: builtins.c:586
-msgid ""
-"Enable and disable shell builtins.\n"
-"    \n"
-"    Enables and disables builtin shell commands.  Disabling allows you to\n"
-"    execute a disk command which has the same name as a shell builtin\n"
-"    without using a full pathname.\n"
-"    \n"
-"    Options:\n"
-"      -a\tprint a list of builtins showing whether or not each is enabled\n"
-"      -n\tdisable each NAME or display a list of disabled builtins\n"
-"      -p\tprint the list of builtins in a reusable format\n"
-"      -s\tprint only the names of Posix `special' builtins\n"
-"    \n"
-"    Options controlling dynamic loading:\n"
-"      -f\tLoad builtin NAME from shared object FILENAME\n"
-"      -d\tRemove a builtin loaded with -f\n"
-"    \n"
-"    Without options, each NAME is enabled.\n"
-"    \n"
-"    To use the `test' found in $PATH instead of the shell builtin\n"
-"    version, type `enable -n test'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not a shell builtin or an error occurs."
-msgstr ""
-
-#: builtins.c:614
-msgid ""
-"Execute arguments as a shell command.\n"
-"    \n"
-"    Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
-"    and execute the resulting commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of command or success if command is null."
-msgstr ""
-
-#: builtins.c:626
-msgid ""
-"Parse option arguments.\n"
-"    \n"
-"    Getopts is used by shell procedures to parse positional parameters\n"
-"    as options.\n"
-"    \n"
-"    OPTSTRING contains the option letters to be recognized; if a letter\n"
-"    is followed by a colon, the option is expected to have an argument,\n"
-"    which should be separated from it by white space.\n"
-"    \n"
-"    Each time it is invoked, getopts will place the next option in the\n"
-"    shell variable $name, initializing name if it does not exist, and\n"
-"    the index of the next argument to be processed into the shell\n"
-"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
-"    a shell script is invoked.  When an option requires an argument,\n"
-"    getopts places that argument into the shell variable OPTARG.\n"
-"    \n"
-"    getopts reports errors in one of two ways.  If the first character\n"
-"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
-"    this mode, no error messages are printed.  If an invalid option is\n"
-"    seen, getopts places the option character found into OPTARG.  If a\n"
-"    required argument is not found, getopts places a ':' into NAME and\n"
-"    sets OPTARG to the option character found.  If getopts is not in\n"
-"    silent mode, and an invalid option is seen, getopts places '?' into\n"
-"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
-"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-"    printed.\n"
-"    \n"
-"    If the shell variable OPTERR has the value 0, getopts disables the\n"
-"    printing of error messages, even if the first character of\n"
-"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
-"    \n"
-"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
-"    more arguments are given, they are parsed instead.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if an option is found; fails if the end of options is\n"
-"    encountered or an error occurs."
-msgstr ""
-
-#: builtins.c:668
-msgid ""
-"Replace the shell with the given command.\n"
-"    \n"
-"    Execute COMMAND, replacing this shell with the specified program.\n"
-"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not "
-"specified,\n"
-"    any redirections take effect in the current shell.\n"
-"    \n"
-"    Options:\n"
-"      -a name\tpass NAME as the zeroth argument to COMMAND\n"
-"      -c\t\texecute COMMAND with an empty environment\n"
-"      -l\t\tplace a dash in the zeroth argument to COMMAND\n"
-"    \n"
-"    If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
-"    the shell option `execfail' is set.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless COMMAND is not found or a redirection error "
-"occurs."
-msgstr ""
-
-#: builtins.c:689
-msgid ""
-"Exit the shell.\n"
-"    \n"
-"    Exits the shell with a status of N.  If N is omitted, the exit status\n"
-"    is that of the last command executed."
-msgstr ""
-
-#: builtins.c:698
-msgid ""
-"Exit a login shell.\n"
-"    \n"
-"    Exits a login shell with exit status N.  Returns an error if not "
-"executed\n"
-"    in a login shell."
-msgstr ""
-
-#: builtins.c:708
-msgid ""
-"Display or execute commands from the history list.\n"
-"    \n"
-"    fc is used to list or edit and re-execute commands from the history "
-"list.\n"
-"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-"    string, which means the most recent command beginning with that\n"
-"    string.\n"
-"    \n"
-"    Options:\n"
-"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
-"    \t\tthen vi\n"
-"      -l \tlist lines instead of editing\n"
-"      -n\tomit line numbers when listing\n"
-"      -r\treverse the order of the lines (newest listed first)\n"
-"    \n"
-"    With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n"
-"    re-executed after the substitution OLD=NEW is performed.\n"
-"    \n"
-"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
-"    runs the last command beginning with `cc' and typing `r' re-executes\n"
-"    the last command.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success or status of executed command; non-zero if an error "
-"occurs."
-msgstr ""
-
-#: builtins.c:738
-msgid ""
-"Move job to the foreground.\n"
-"    \n"
-"    Place the job identified by JOB_SPEC in the foreground, making it the\n"
-"    current job.  If JOB_SPEC is not present, the shell's notion of the\n"
-"    current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Status of command placed in foreground, or failure if an error occurs."
-msgstr ""
-
-#: builtins.c:753
-msgid ""
-"Move jobs to the background.\n"
-"    \n"
-"    Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-"    had been started with `&'.  If JOB_SPEC is not present, the shell's "
-"notion\n"
-"    of the current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-
-#: builtins.c:767
-msgid ""
-"Remember or display program locations.\n"
-"    \n"
-"    Determine and remember the full pathname of each command NAME.  If\n"
-"    no arguments are given, information about remembered commands is "
-"displayed.\n"
-"    \n"
-"    Options:\n"
-"      -d\t\tforget the remembered location of each NAME\n"
-"      -l\t\tdisplay in a format that may be reused as input\n"
-"      -p pathname\tuse PATHNAME is the full pathname of NAME\n"
-"      -r\t\tforget all remembered locations\n"
-"      -t\t\tprint the remembered location of each NAME, preceding\n"
-"    \t\teach location with the corresponding NAME if multiple\n"
-"    \t\tNAMEs are given\n"
-"    Arguments:\n"
-"      NAME\t\tEach NAME is searched for in $PATH and added to the list\n"
-"    \t\tof remembered commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not found or an invalid option is given."
-msgstr ""
-
-#: builtins.c:792
-msgid ""
-"Display information about builtin commands.\n"
-"    \n"
-"    Displays brief summaries of builtin commands.  If PATTERN is\n"
-"    specified, gives detailed help on all commands matching PATTERN,\n"
-"    otherwise the list of help topics is printed.\n"
-"    \n"
-"    Options:\n"
-"      -d\toutput short description for each topic\n"
-"      -m\tdisplay usage in pseudo-manpage format\n"
-"      -s\toutput only a short usage synopsis for each topic matching\n"
-"    \tPATTERN\n"
-"    \n"
-"    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless PATTERN is not found or an invalid option is "
-"given."
-msgstr ""
-
-#: builtins.c:816
-msgid ""
-"Display or manipulate the history list.\n"
-"    \n"
-"    Display the history list with line numbers, prefixing each modified\n"
-"    entry with a `*'.  An argument of N lists only the last N entries.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at offset OFFSET.\n"
-"    \n"
-"      -a\tappend history lines from this session to the history file\n"
-"      -n\tread all history lines not already read from the history file\n"
-"      -r\tread the history file and append the contents to the history\n"
-"    \tlist\n"
-"      -w\twrite the current history to the history file\n"
-"    \tand append them to the history list\n"
-"    \n"
-"      -p\tperform history expansion on each ARG and display the result\n"
-"    \twithout storing it in the history list\n"
-"      -s\tappend the ARGs to the history list as a single entry\n"
-"    \n"
-"    If FILENAME is given, it is used as the history file.  Otherwise,\n"
-"    if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-"    \n"
-"    If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-"    as a format string for strftime(3) to print the time stamp associated\n"
-"    with each displayed history entry.  No time stamps are printed "
-"otherwise.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:852
-msgid ""
-"Display status of jobs.\n"
-"    \n"
-"    Lists the active jobs.  JOBSPEC restricts output to that job.\n"
-"    Without options, the status of all active jobs is displayed.\n"
-"    \n"
-"    Options:\n"
-"      -l\tlists process IDs in addition to the normal information\n"
-"      -n\tlist only processes that have changed status since the last\n"
-"    \tnotification\n"
-"      -p\tlists process IDs only\n"
-"      -r\trestrict output to running jobs\n"
-"      -s\trestrict output to stopped jobs\n"
-"    \n"
-"    If -x is supplied, COMMAND is run after all job specifications that\n"
-"    appear in ARGS have been replaced with the process ID of that job's\n"
-"    process group leader.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs.\n"
-"    If -x is used, returns the exit status of COMMAND."
-msgstr ""
-
-#: builtins.c:879
-msgid ""
-"Remove jobs from current shell.\n"
-"    \n"
-"    Removes each JOBSPEC argument from the table of active jobs.  Without\n"
-"    any JOBSPECs, the shell uses its notion of the current job.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all jobs if JOBSPEC is not supplied\n"
-"      -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
-"    \tshell receives a SIGHUP\n"
-"      -r\tremove only running jobs\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option or JOBSPEC is given."
-msgstr ""
-
-#: builtins.c:898
-msgid ""
-"Send a signal to a job.\n"
-"    \n"
-"    Send the processes identified by PID or JOBSPEC the signal named by\n"
-"    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then\n"
-"    SIGTERM is assumed.\n"
-"    \n"
-"    Options:\n"
-"      -s sig\tSIG is a signal name\n"
-"      -n sig\tSIG is a signal number\n"
-"      -l\tlist the signal names; if arguments follow `-l' they are\n"
-"    \tassumed to be signal numbers for which names should be listed\n"
-"    \n"
-"    Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-"    instead of process IDs, and allows processes to be killed if the limit\n"
-"    on processes that you can create is reached.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:921
-msgid ""
-"Evaluate arithmetic expressions.\n"
-"    \n"
-"    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
-"    fixed-width integers with no check for overflow, though division by 0\n"
-"    is trapped and flagged as an error.  The following list of operators is\n"
-"    grouped into levels of equal-precedence operators.  The levels are "
-"listed\n"
-"    in order of decreasing precedence.\n"
-"    \n"
-"    \tid++, id--\tvariable post-increment, post-decrement\n"
-"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
-"    \t-, +\t\tunary minus, plus\n"
-"    \t!, ~\t\tlogical and bitwise negation\n"
-"    \t**\t\texponentiation\n"
-"    \t*, /, %\t\tmultiplication, division, remainder\n"
-"    \t+, -\t\taddition, subtraction\n"
-"    \t<<, >>\t\tleft and right bitwise shifts\n"
-"    \t<=, >=, <, >\tcomparison\n"
-"    \t==, !=\t\tequality, inequality\n"
-"    \t&\t\tbitwise AND\n"
-"    \t^\t\tbitwise XOR\n"
-"    \t|\t\tbitwise OR\n"
-"    \t&&\t\tlogical AND\n"
-"    \t||\t\tlogical OR\n"
-"    \texpr ? expr : expr\n"
-"    \t\t\tconditional operator\n"
-"    \t=, *=, /=, %=,\n"
-"    \t+=, -=, <<=, >>=,\n"
-"    \t&=, ^=, |=\tassignment\n"
-"    \n"
-"    Shell variables are allowed as operands.  The name of the variable\n"
-"    is replaced by its value (coerced to a fixed-width integer) within\n"
-"    an expression.  The variable need not have its integer attribute\n"
-"    turned on to be used in an expression.\n"
-"    \n"
-"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
-"    parentheses are evaluated first and may override the precedence\n"
-"    rules above.\n"
-"    \n"
-"    Exit Status:\n"
-"    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise.."
-msgstr ""
-
-#: builtins.c:966
-msgid ""
-"Read a line from the standard input and split it into fields.\n"
-"    \n"
-"    Reads a single line from the standard input, or from file descriptor FD\n"
-"    if the -u option is supplied.  The line is split into fields as with "
-"word\n"
-"    splitting, and the first word is assigned to the first NAME, the second\n"
-"    word to the second NAME, and so on, with any leftover words assigned to\n"
-"    the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
-"    delimiters.\n"
-"    \n"
-"    If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
-"    \n"
-"    Options:\n"
-"      -a array\tassign the words read to sequential indices of the array\n"
-"    \t\tvariable ARRAY, starting at zero\n"
-"      -d delim\tcontinue until the first character of DELIM is read, rather\n"
-"    \t\tthan newline\n"
-"      -e\t\tuse Readline to obtain the line in an interactive shell\n"
-"      -i text\tUse TEXT as the initial text for Readline\n"
-"      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
-"    \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
-"    \t\tcharacters are read before the delimiter\n"
-"      -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
-"    \t\tEOF is encountered or read times out, ignoring any delimiter\n"
-"      -p prompt\toutput the string PROMPT without a trailing newline before\n"
-"    \t\tattempting to read\n"
-"      -r\t\tdo not allow backslashes to escape any characters\n"
-"      -s\t\tdo not echo input coming from a terminal\n"
-"      -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
-"    \t\tnot read withint TIMEOUT seconds.  The value of the TMOUT\n"
-"    \t\tvariable is the default timeout.  TIMEOUT may be a\n"
-"    \t\tfractional number.  If TIMEOUT is 0, read returns success only\n"
-"    \t\tif input is available on the specified file descriptor.  The\n"
-"    \t\texit status is greater than 128 if the timeout is exceeded\n"
-"      -u fd\t\tread from file descriptor FD instead of the standard input\n"
-"    \n"
-"    Exit Status:\n"
-"    The return code is zero, unless end-of-file is encountered, read times "
-"out,\n"
-"    or an invalid file descriptor is supplied as the argument to -u."
-msgstr ""
-
-#: builtins.c:1009
-msgid ""
-"Return from a shell function.\n"
-"    \n"
-"    Causes a function or sourced script to exit with the return value\n"
-"    specified by N.  If N is omitted, the return status is that of the\n"
-"    last command executed within the function or script.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns N, or failure if the shell is not executing a function or script."
-msgstr ""
-
-#: builtins.c:1022
-msgid ""
-"Set or unset values of shell options and positional parameters.\n"
-"    \n"
-"    Change the value of shell attributes and positional parameters, or\n"
-"    display the names and values of shell variables.\n"
-"    \n"
-"    Options:\n"
-"      -a  Mark variables which are modified or created for export.\n"
-"      -b  Notify of job termination immediately.\n"
-"      -e  Exit immediately if a command exits with a non-zero status.\n"
-"      -f  Disable file name generation (globbing).\n"
-"      -h  Remember the location of commands as they are looked up.\n"
-"      -k  All assignment arguments are placed in the environment for a\n"
-"          command, not just those that precede the command name.\n"
-"      -m  Job control is enabled.\n"
-"      -n  Read commands but do not execute them.\n"
-"      -o option-name\n"
-"          Set the variable corresponding to option-name:\n"
-"              allexport    same as -a\n"
-"              braceexpand  same as -B\n"
-"              emacs        use an emacs-style line editing interface\n"
-"              errexit      same as -e\n"
-"              errtrace     same as -E\n"
-"              functrace    same as -T\n"
-"              hashall      same as -h\n"
-"              histexpand   same as -H\n"
-"              history      enable command history\n"
-"              ignoreeof    the shell will not exit upon reading EOF\n"
-"              interactive-comments\n"
-"                           allow comments to appear in interactive commands\n"
-"              keyword      same as -k\n"
-"              monitor      same as -m\n"
-"              noclobber    same as -C\n"
-"              noexec       same as -n\n"
-"              noglob       same as -f\n"
-"              nolog        currently accepted but ignored\n"
-"              notify       same as -b\n"
-"              nounset      same as -u\n"
-"              onecmd       same as -t\n"
-"              physical     same as -P\n"
-"              pipefail     the return value of a pipeline is the status of\n"
-"                           the last command to exit with a non-zero status,\n"
-"                           or zero if no command exited with a non-zero "
-"status\n"
-"              posix        change the behavior of bash where the default\n"
-"                           operation differs from the Posix standard to\n"
-"                           match the standard\n"
-"              privileged   same as -p\n"
-"              verbose      same as -v\n"
-"              vi           use a vi-style line editing interface\n"
-"              xtrace       same as -x\n"
-"      -p  Turned on whenever the real and effective user ids do not match.\n"
-"          Disables processing of the $ENV file and importing of shell\n"
-"          functions.  Turning this option off causes the effective uid and\n"
-"          gid to be set to the real uid and gid.\n"
-"      -t  Exit after reading and executing one command.\n"
-"      -u  Treat unset variables as an error when substituting.\n"
-"      -v  Print shell input lines as they are read.\n"
-"      -x  Print commands and their arguments as they are executed.\n"
-"      -B  the shell will perform brace expansion\n"
-"      -C  If set, disallow existing regular files to be overwritten\n"
-"          by redirection of output.\n"
-"      -E  If set, the ERR trap is inherited by shell functions.\n"
-"      -H  Enable ! style history substitution.  This flag is on\n"
-"          by default when the shell is interactive.\n"
-"      -P  If set, do not follow symbolic links when executing commands\n"
-"          such as cd which change the current directory.\n"
-"      -T  If set, the DEBUG trap is inherited by shell functions.\n"
-"      -   Assign any remaining arguments to the positional parameters.\n"
-"          The -x and -v options are turned off.\n"
-"    \n"
-"    Using + rather than - causes these flags to be turned off.  The\n"
-"    flags can also be used upon invocation of the shell.  The current\n"
-"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
-"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
-"    ARGs are given, all shell variables are printed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given."
-msgstr ""
-
-#: builtins.c:1104
-msgid ""
-"Unset values and attributes of shell variables and functions.\n"
-"    \n"
-"    For each NAME, remove the corresponding variable or function.\n"
-"    \n"
-"    Options:\n"
-"      -f\ttreat each NAME as a shell function\n"
-"      -v\ttreat each NAME as a shell variable\n"
-"    \n"
-"    Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
-"    tries to unset a function.\n"
-"    \n"
-"    Some variables cannot be unset; also see `readonly'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a NAME is read-only."
-msgstr ""
-
-#: builtins.c:1124
-msgid ""
-"Set export attribute for shell variables.\n"
-"    \n"
-"    Marks each NAME for automatic export to the environment of subsequently\n"
-"    executed commands.  If VALUE is supplied, assign VALUE before "
-"exporting.\n"
-"    \n"
-"    Options:\n"
-"      -f\trefer to shell functions\n"
-"      -n\tremove the export property from each NAME\n"
-"      -p\tdisplay a list of all exported variables and functions\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-
-#: builtins.c:1143
-msgid ""
-"Mark shell variables as unchangeable.\n"
-"    \n"
-"    Mark each NAME as read-only; the values of these NAMEs may not be\n"
-"    changed by subsequent assignment.  If VALUE is supplied, assign VALUE\n"
-"    before marking as read-only.\n"
-"    \n"
-"    Options:\n"
-"      -a\trefer to indexed array variables\n"
-"      -A\trefer to associative array variables\n"
-"      -f\trefer to shell functions\n"
-"      -p\tdisplay a list of all readonly variables and functions\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-
-#: builtins.c:1164
-msgid ""
-"Shift positional parameters.\n"
-"    \n"
-"    Rename the positional parameters $N+1,$N+2 ... to $1,$2 ...  If N is\n"
-"    not given, it is assumed to be 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless N is negative or greater than $#."
-msgstr ""
-
-#: builtins.c:1176 builtins.c:1191
-msgid ""
-"Execute commands from a file in the current shell.\n"
-"    \n"
-"    Read and execute commands from FILENAME in the current shell.  The\n"
-"    entries in $PATH are used to find the directory containing FILENAME.\n"
-"    If any ARGUMENTS are supplied, they become the positional parameters\n"
-"    when FILENAME is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed in FILENAME; fails if\n"
-"    FILENAME cannot be read."
-msgstr ""
-
-#: builtins.c:1207
-msgid ""
-"Suspend shell execution.\n"
-"    \n"
-"    Suspend the execution of this shell until it receives a SIGCONT signal.\n"
-"    Unless forced, login shells cannot be suspended.\n"
-"    \n"
-"    Options:\n"
-"      -f\tforce the suspend, even if the shell is a login shell\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-
-#: builtins.c:1223
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    Exits with a status of 0 (true) or 1 (false) depending on\n"
-"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
-"    expressions are often used to examine the status of a file.  There\n"
-"    are string operators as well, and numeric comparison operators.\n"
-"    \n"
-"    File operators:\n"
-"    \n"
-"      -a FILE        True if file exists.\n"
-"      -b FILE        True if file is block special.\n"
-"      -c FILE        True if file is character special.\n"
-"      -d FILE        True if file is a directory.\n"
-"      -e FILE        True if file exists.\n"
-"      -f FILE        True if file exists and is a regular file.\n"
-"      -g FILE        True if file is set-group-id.\n"
-"      -h FILE        True if file is a symbolic link.\n"
-"      -L FILE        True if file is a symbolic link.\n"
-"      -k FILE        True if file has its `sticky' bit set.\n"
-"      -p FILE        True if file is a named pipe.\n"
-"      -r FILE        True if file is readable by you.\n"
-"      -s FILE        True if file exists and is not empty.\n"
-"      -S FILE        True if file is a socket.\n"
-"      -t FD          True if FD is opened on a terminal.\n"
-"      -u FILE        True if the file is set-user-id.\n"
-"      -w FILE        True if the file is writable by you.\n"
-"      -x FILE        True if the file is executable by you.\n"
-"      -O FILE        True if the file is effectively owned by you.\n"
-"      -G FILE        True if the file is effectively owned by your group.\n"
-"      -N FILE        True if the file has been modified since it was last "
-"read.\n"
-"    \n"
-"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
-"                       modification date).\n"
-"    \n"
-"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
-"    \n"
-"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
-"    \n"
-"    String operators:\n"
-"    \n"
-"      -z STRING      True if string is empty.\n"
-"    \n"
-"      -n STRING\n"
-"         STRING      True if string is not empty.\n"
-"    \n"
-"      STRING1 = STRING2\n"
-"                     True if the strings are equal.\n"
-"      STRING1 != STRING2\n"
-"                     True if the strings are not equal.\n"
-"      STRING1 < STRING2\n"
-"                     True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-"      STRING1 > STRING2\n"
-"                     True if STRING1 sorts after STRING2 lexicographically.\n"
-"    \n"
-"    Other operators:\n"
-"    \n"
-"      -o OPTION      True if the shell option OPTION is enabled.\n"
-"      ! EXPR         True if expr is false.\n"
-"      EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-"      EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-"    \n"
-"      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
-"                     -lt, -le, -gt, or -ge.\n"
-"    \n"
-"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-"    than ARG2.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
-"    false or an invalid argument is given."
-msgstr ""
-
-#: builtins.c:1299
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    This is a synonym for the \"test\" builtin, but the last argument must\n"
-"    be a literal `]', to match the opening `['."
-msgstr ""
-
-#: builtins.c:1308
-msgid ""
-"Display process times.\n"
-"    \n"
-"    Prints the accumulated user and system times for the shell and all of "
-"its\n"
-"    child processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:1320
-msgid ""
-"Trap signals and other events.\n"
-"    \n"
-"    Defines and activates handlers to be run when the shell receives "
-"signals\n"
-"    or other conditions.\n"
-"    \n"
-"    ARG is a command to be read and executed when the shell receives the\n"
-"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
-"    is supplied) or `-', each specified signal is reset to its original\n"
-"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-"    shell and by the commands it invokes.\n"
-"    \n"
-"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  "
-"If\n"
-"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.\n"
-"    \n"
-"    If no arguments are supplied, trap prints the list of commands "
-"associated\n"
-"    with each signal.\n"
-"    \n"
-"    Options:\n"
-"      -l\tprint a list of signal names and their corresponding numbers\n"
-"      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
-"    \n"
-"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
-"    Signal names are case insensitive and the SIG prefix is optional.  A\n"
-"    signal may be sent to the shell with \"kill -signal $$\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
-msgstr ""
-
-#: builtins.c:1352
-msgid ""
-"Display information about command type.\n"
-"    \n"
-"    For each NAME, indicate how it would be interpreted if used as a\n"
-"    command name.\n"
-"    \n"
-"    Options:\n"
-"      -a\tdisplay all locations containing an executable named NAME;\n"
-"    \tincludes aliases, builtins, and functions, if and only if\n"
-"    \tthe `-p' option is not also used\n"
-"      -f\tsuppress shell function lookup\n"
-"      -P\tforce a PATH search for each NAME, even if it is an alias,\n"
-"    \tbuiltin, or function, and returns the name of the disk file\n"
-"    \tthat would be executed\n"
-"      -p\treturns either the name of the disk file that would be executed,\n"
-"    \tor nothing if `type -t NAME' would not return `file'.\n"
-"      -t\toutput a single word which is one of `alias', `keyword',\n"
-"    \t`function', `builtin', `file' or `', if NAME is an alias, shell\n"
-"    \treserved word, shell function, shell builtin, disk file, or not\n"
-"    \tfound, respectively\n"
-"    \n"
-"    Arguments:\n"
-"      NAME\tCommand name to be interpreted.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if all of the NAMEs are found; fails if any are not "
-"found."
-msgstr ""
-
-#: builtins.c:1383
-msgid ""
-"Modify shell resource limits.\n"
-"    \n"
-"    Provides control over the resources available to the shell and "
-"processes\n"
-"    it creates, on systems that allow such control.\n"
-"    \n"
-"    Options:\n"
-"      -S\tuse the `soft' resource limit\n"
-"      -H\tuse the `hard' resource limit\n"
-"      -a\tall current limits are reported\n"
-"      -b\tthe socket buffer size\n"
-"      -c\tthe maximum size of core files created\n"
-"      -d\tthe maximum size of a process's data segment\n"
-"      -e\tthe maximum scheduling priority (`nice')\n"
-"      -f\tthe maximum size of files written by the shell and its children\n"
-"      -i\tthe maximum number of pending signals\n"
-"      -l\tthe maximum size a process may lock into memory\n"
-"      -m\tthe maximum resident set size\n"
-"      -n\tthe maximum number of open file descriptors\n"
-"      -p\tthe pipe buffer size\n"
-"      -q\tthe maximum number of bytes in POSIX message queues\n"
-"      -r\tthe maximum real-time scheduling priority\n"
-"      -s\tthe maximum stack size\n"
-"      -t\tthe maximum amount of cpu time in seconds\n"
-"      -u\tthe maximum number of user processes\n"
-"      -v\tthe size of virtual memory\n"
-"      -x\tthe maximum number of file locks\n"
-"    \n"
-"    If LIMIT is given, it is the new value of the specified resource; the\n"
-"    special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-"    current soft limit, the current hard limit, and no limit, respectively.\n"
-"    Otherwise, the current value of the specified resource is printed.  If\n"
-"    no option is given, then -f is assumed.\n"
-"    \n"
-"    Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-"    -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-"    number of processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1428
-msgid ""
-"Display or set file mode mask.\n"
-"    \n"
-"    Sets the user file-creation mask to MODE.  If MODE is omitted, prints\n"
-"    the current value of the mask.\n"
-"    \n"
-"    If MODE begins with a digit, it is interpreted as an octal number;\n"
-"    otherwise it is a symbolic mode string like that accepted by chmod(1).\n"
-"    \n"
-"    Options:\n"
-"      -p\tif MODE is omitted, output in a form that may be reused as input\n"
-"      -S\tmakes the output symbolic; otherwise an octal number is output\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless MODE is invalid or an invalid option is given."
-msgstr ""
-
-#: builtins.c:1448
-msgid ""
-"Wait for job completion and return exit status.\n"
-"    \n"
-"    Waits for the process identified by ID, which may be a process ID or a\n"
-"    job specification, and reports its termination status.  If ID is not\n"
-"    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
-"    in the job's pipeline.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-"    given."
-msgstr ""
-
-#: builtins.c:1466
-msgid ""
-"Wait for process completion and return exit status.\n"
-"    \n"
-"    Waits for the specified process and reports its termination status.  If\n"
-"    PID is not given, all currently active child processes are waited for,\n"
-"    and the return code is zero.  PID must be a process ID.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-"    given."
-msgstr ""
-
-#: builtins.c:1481
-msgid ""
-"Execute commands for each member in a list.\n"
-"    \n"
-"    The `for' loop executes a sequence of commands for each member in a\n"
-"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
-"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
-"    the COMMANDS are executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1495
-msgid ""
-"Arithmetic for loop.\n"
-"    \n"
-"    Equivalent to\n"
-"    \t(( EXP1 ))\n"
-"    \twhile (( EXP2 )); do\n"
-"    \t\tCOMMANDS\n"
-"    \t\t(( EXP3 ))\n"
-"    \tdone\n"
-"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
-"    omitted, it behaves as if it evaluates to 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1513
-msgid ""
-"Select words from a list and execute commands.\n"
-"    \n"
-"    The WORDS are expanded, generating a list of words.  The\n"
-"    set of expanded words is printed on the standard error, each\n"
-"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
-"    is assumed.  The PS3 prompt is then displayed and a line read\n"
-"    from the standard input.  If the line consists of the number\n"
-"    corresponding to one of the displayed words, then NAME is set\n"
-"    to that word.  If the line is empty, WORDS and the prompt are\n"
-"    redisplayed.  If EOF is read, the command completes.  Any other\n"
-"    value read causes NAME to be set to null.  The line read is saved\n"
-"    in the variable REPLY.  COMMANDS are executed after each selection\n"
-"    until a break command is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1534
-msgid ""
-"Report time consumed by pipeline's execution.\n"
-"    \n"
-"    Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-"    and system CPU time spent executing PIPELINE when it terminates.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint the timing summary in the portable Posix format\n"
-"    \n"
-"    The value of the TIMEFORMAT variable is used as the output format.\n"
-"    \n"
-"    Exit Status:\n"
-"    The return status is the return status of PIPELINE."
-msgstr ""
-
-#: builtins.c:1551
-msgid ""
-"Execute commands based on pattern matching.\n"
-"    \n"
-"    Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
-"    `|' is used to separate multiple patterns.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1563
-msgid ""
-"Execute commands based on conditional.\n"
-"    \n"
-"    The `if COMMANDS' list is executed.  If its exit status is zero, then "
-"the\n"
-"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
-"is\n"
-"    executed in turn, and if its exit status is zero, the corresponding\n"
-"    `then COMMANDS' list is executed and the if command completes.  "
-"Otherwise,\n"
-"    the `else COMMANDS' list is executed, if present.  The exit status of "
-"the\n"
-"    entire construct is the exit status of the last command executed, or "
-"zero\n"
-"    if no condition tested true.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1580
-msgid ""
-"Execute commands as long as a test succeeds.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `while' COMMANDS has an exit status of zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1592
-msgid ""
-"Execute commands as long as a test does not succeed.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `until' COMMANDS has an exit status which is not zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1604
-msgid ""
-"Create a coprocess named NAME.\n"
-"    \n"
-"    Execute COMMAND asynchronously, with the standard output and standard\n"
-"    input of the command connected via a pipe to file descriptors assigned\n"
-"    to indices 0 and 1 of an array variable NAME in the executing shell.\n"
-"    The default NAME is \"COPROC\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of COMMAND."
-msgstr ""
-
-#: builtins.c:1618
-msgid ""
-"Define shell function.\n"
-"    \n"
-"    Create a shell function named NAME.  When invoked as a simple command,\n"
-"    NAME runs COMMANDs in the calling shell's context.  When NAME is "
-"invoked,\n"
-"    the arguments are passed to the function as $1...$n, and the function's\n"
-"    name is in $FUNCNAME.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is readonly."
-msgstr ""
-
-#: builtins.c:1632
-msgid ""
-"Group commands as a unit.\n"
-"    \n"
-"    Run a set of commands in a group.  This is one way to redirect an\n"
-"    entire set of commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1644
-msgid ""
-"Resume job in foreground.\n"
-"    \n"
-"    Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
-"    stopped or background job.  JOB_SPEC can specify either a job name\n"
-"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
-"    the background, as if the job specification had been supplied as an\n"
-"    argument to `bg'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the resumed job."
-msgstr ""
-
-#: builtins.c:1659
-msgid ""
-"Evaluate arithmetic expression.\n"
-"    \n"
-"    The EXPRESSION is evaluated according to the rules for arithmetic\n"
-"    evaluation.  Equivalent to \"let EXPRESSION\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-msgstr ""
-
-#: builtins.c:1671
-msgid ""
-"Execute conditional command.\n"
-"    \n"
-"    Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-"    expression EXPRESSION.  Expressions are composed of the same primaries "
-"used\n"
-"    by the `test' builtin, and may be combined using the following "
-"operators:\n"
-"    \n"
-"      ( EXPRESSION )\tReturns the value of EXPRESSION\n"
-"      ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
-"      EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-"      EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-"    \n"
-"    When the `==' and `!=' operators are used, the string to the right of\n"
-"    the operator is used as a pattern and pattern matching is performed.\n"
-"    When the `=~' operator is used, the string to the right of the operator\n"
-"    is matched as a regular expression.\n"
-"    \n"
-"    The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-"    determine the expression's value.\n"
-"    \n"
-"    Exit Status:\n"
-"    0 or 1 depending on value of EXPRESSION."
-msgstr ""
-
-#: builtins.c:1697
-msgid ""
-"Common shell variable names and usage.\n"
-"    \n"
-"    BASH_VERSION\tVersion information for this Bash.\n"
-"    CDPATH\tA colon-separated list of directories to search\n"
-"    \t\tfor directories given as arguments to `cd'.\n"
-"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-"    \t\tbe ignored by pathname expansion.\n"
-"    HISTFILE\tThe name of the file where your command history is stored.\n"
-"    HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
-"    HISTSIZE\tThe maximum number of history lines that a running\n"
-"    \t\tshell can access.\n"
-"    HOME\tThe complete pathname to your login directory.\n"
-"    HOSTNAME\tThe name of the current host.\n"
-"    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
-"    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
-"    \t\tcharacter as the sole input.  If set, then the value\n"
-"    \t\tof it is the number of EOF characters that can be seen\n"
-"    \t\tin a row on an empty line before the shell will exit\n"
-"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
-"    MACHTYPE\tA string describing the current system Bash is running on.\n"
-"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-"    \t\tfor new mail.\n"
-"    OSTYPE\tThe version of Unix this version of Bash is running on.\n"
-"    PATH\tA colon-separated list of directories to search when\n"
-"    \t\tlooking for commands.\n"
-"    PROMPT_COMMAND\tA command to be executed before the printing of each\n"
-"    \t\tprimary prompt.\n"
-"    PS1\t\tThe primary prompt string.\n"
-"    PS2\t\tThe secondary prompt string.\n"
-"    PWD\t\tThe full pathname of the current directory.\n"
-"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-"    TERM\tThe name of the current terminal type.\n"
-"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-"    \t\t`time' reserved word.\n"
-"    auto_resume\tNon-null means a command word appearing on a line by\n"
-"    \t\titself is first looked for in the list of currently\n"
-"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
-"    \t\tA value of `exact' means that the command word must\n"
-"    \t\texactly match a command in the list of stopped jobs.  A\n"
-"    \t\tvalue of `substring' means that the command word must\n"
-"    \t\tmatch a substring of the job.  Any other value means that\n"
-"    \t\tthe command must be a prefix of a stopped job.\n"
-"    histchars\tCharacters controlling history expansion and quick\n"
-"    \t\tsubstitution.  The first character is the history\n"
-"    \t\tsubstitution character, usually `!'.  The second is\n"
-"    \t\tthe `quick substitution' character, usually `^'.  The\n"
-"    \t\tthird is the `history comment' character, usually `#'.\n"
-"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-"    \t\tcommands should be saved on the history list.\n"
-msgstr ""
-
-#: builtins.c:1754
-msgid ""
-"Add directories to stack.\n"
-"    \n"
-"    Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-
-#: builtins.c:1788
-msgid ""
-"Remove directories from stack.\n"
-"    \n"
-"    Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-
-#: builtins.c:1818
-msgid ""
-"Display directory stack.\n"
-"    \n"
-"    Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1847
-msgid ""
-"Set and unset shell options.\n"
-"    \n"
-"    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
-"    \n"
-"    Options:\n"
-"      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
-"      -p\tprint each shell option with an indication of its status\n"
-"      -q\tsuppress output\n"
-"      -s\tenable (set) each OPTNAME\n"
-"      -u\tdisable (unset) each OPTNAME\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
-"    given or OPTNAME is disabled."
-msgstr ""
-
-#: builtins.c:1868
-msgid ""
-"Formats and prints ARGUMENTS under control of the FORMAT.\n"
-"    \n"
-"    Options:\n"
-"      -v var\tassign the output to shell variable VAR rather than\n"
-"    \t\tdisplay it on the standard output\n"
-"    \n"
-"    FORMAT is a character string which contains three types of objects: "
-"plain\n"
-"    characters, which are simply copied to standard output; character "
-"escape\n"
-"    sequences, which are converted and copied to the standard output; and\n"
-"    format specifications, each of which causes printing of the next "
-"successive\n"
-"    argument.\n"
-"    \n"
-"    In addition to the standard format specifications described in printf"
-"(1)\n"
-"    and printf(3), printf interprets:\n"
-"    \n"
-"      %b\texpand backslash escape sequences in the corresponding argument\n"
-"      %q\tquote the argument in a way that can be reused as shell input\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a write or "
-"assignment\n"
-"    error occurs."
-msgstr ""
-
-#: builtins.c:1895
-msgid ""
-"Specify how arguments are to be completed by Readline.\n"
-"    \n"
-"    For each NAME, specify how arguments are to be completed.  If no "
-"options\n"
-"    are supplied, existing completion specifications are printed in a way "
-"that\n"
-"    allows them to be reused as input.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint existing completion specifications in a reusable format\n"
-"      -r\tremove a completion specification for each NAME, or, if no\n"
-"    \tNAMEs are supplied, all completion specifications\n"
-"      -D\tapply the completions and actions as the default for commands\n"
-"    \twithout any specific completion defined\n"
-"      -E\tapply the completions and actions to \"empty\" commands --\n"
-"    \tcompletion attempted on a blank line\n"
-"    \n"
-"    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1923
-msgid ""
-"Display possible completions depending on the options.\n"
-"    \n"
-"    Intended to be used from within a shell function generating possible\n"
-"    completions.  If the optional WORD argument is supplied, matches "
-"against\n"
-"    WORD are generated.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1938
-msgid ""
-"Modify or display completion options.\n"
-"    \n"
-"    Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-"    the completion currently begin executed.  If no OPTIONs are givenm, "
-"print\n"
-"    the completion options for each NAME or the current completion "
-"specification.\n"
-"    \n"
-"    Options:\n"
-"    \t-o option\tSet completion option OPTION for each NAME\n"
-"    \t-D\t\tChange options for the \"default\" command completion\n"
-"    \t-E\t\tChange options for the \"empty\" command completion\n"
-"    \n"
-"    Using `+o' instead of `-o' turns off the specified option.\n"
-"    \n"
-"    Arguments:\n"
-"    \n"
-"    Each NAME refers to a command for which a completion specification must\n"
-"    have previously been defined using the `complete' builtin.  If no NAMEs\n"
-"    are supplied, compopt must be called by a function currently generating\n"
-"    completions, and the options for that currently-executing completion\n"
-"    generator are modified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or NAME does not\n"
-"    have a completion specification defined."
-msgstr ""
-
-#: builtins.c:1968
-msgid ""
-"Read lines from the standard input into an indexed array variable.\n"
-"    \n"
-"    Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-"    from file descriptor FD if the -u option is supplied.  The variable "
-"MAPFILE\n"
-"    is the default ARRAY.\n"
-"    \n"
-"    Options:\n"
-"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are "
-"copied.\n"
-"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default "
-"index is 0.\n"
-"      -s count \tDiscard the first COUNT lines read.\n"
-"      -t\t\tRemove a trailing newline from each line read.\n"
-"      -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
-"      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-"      -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
-"    \n"
-"    Arguments:\n"
-"      ARRAY\t\tArray variable name to use for file data.\n"
-"    \n"
-"    If -C is supplied without -c, the default quantum is 5000.  When\n"
-"    CALLBACK is evaluated, it is supplied the index of the next array\n"
-"    element to be assigned as an additional argument.\n"
-"    \n"
-"    If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
-"    assigning to it.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
-"    not an indexed array."
-msgstr ""
-
-#: builtins.c:2001
-msgid ""
-"Read lines from a file into an array variable.\n"
-"    \n"
-"    A synonym for `mapfile'."
-msgstr ""
diff --git a/po/bash-4.2.pot b/po/bash-4.2.pot
deleted file mode 100644 (file)
index e54dabd..0000000
+++ /dev/null
@@ -1,3944 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-01-28 22:09-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: arrayfunc.c:50
-msgid "bad array subscript"
-msgstr ""
-
-#: arrayfunc.c:313 builtins/declare.def:487
-#, c-format
-msgid "%s: cannot convert indexed to associative array"
-msgstr ""
-
-#: arrayfunc.c:480
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr ""
-
-#: arrayfunc.c:482
-#, c-format
-msgid "%s: cannot assign to non-numeric index"
-msgstr ""
-
-#: arrayfunc.c:518
-#, c-format
-msgid "%s: %s: must use subscript when assigning associative array"
-msgstr ""
-
-#: bashhist.c:387
-#, c-format
-msgid "%s: cannot create: %s"
-msgstr ""
-
-#: bashline.c:3498
-msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-
-#: bashline.c:3584
-#, c-format
-msgid "%s: first non-whitespace character is not `\"'"
-msgstr ""
-
-#: bashline.c:3613
-#, c-format
-msgid "no closing `%c' in %s"
-msgstr ""
-
-#: bashline.c:3647
-#, c-format
-msgid "%s: missing colon separator"
-msgstr ""
-
-#: builtins/alias.def:132
-#, c-format
-msgid "`%s': invalid alias name"
-msgstr ""
-
-#: builtins/bind.def:120 builtins/bind.def:123
-msgid "line editing not enabled"
-msgstr ""
-
-#: builtins/bind.def:206
-#, c-format
-msgid "`%s': invalid keymap name"
-msgstr ""
-
-#: builtins/bind.def:245
-#, c-format
-msgid "%s: cannot read: %s"
-msgstr ""
-
-#: builtins/bind.def:260
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr ""
-
-#: builtins/bind.def:295 builtins/bind.def:325
-#, c-format
-msgid "`%s': unknown function name"
-msgstr ""
-
-#: builtins/bind.def:303
-#, c-format
-msgid "%s is not bound to any keys.\n"
-msgstr ""
-
-#: builtins/bind.def:307
-#, c-format
-msgid "%s can be invoked via "
-msgstr ""
-
-#: builtins/break.def:77 builtins/break.def:117
-msgid "loop count"
-msgstr ""
-
-#: builtins/break.def:137
-msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr ""
-
-#: builtins/caller.def:133
-msgid ""
-"Returns the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns "
-msgstr ""
-
-#: builtins/cd.def:235
-msgid "HOME not set"
-msgstr ""
-
-#: builtins/cd.def:247
-msgid "OLDPWD not set"
-msgstr ""
-
-#: builtins/common.c:101
-#, c-format
-msgid "line %d: "
-msgstr ""
-
-#: builtins/common.c:139 error.c:261
-#, c-format
-msgid "warning: "
-msgstr ""
-
-#: builtins/common.c:153
-#, c-format
-msgid "%s: usage: "
-msgstr ""
-
-#: builtins/common.c:166 test.c:832
-msgid "too many arguments"
-msgstr ""
-
-#: builtins/common.c:191 shell.c:500 shell.c:782
-#, c-format
-msgid "%s: option requires an argument"
-msgstr ""
-
-#: builtins/common.c:198
-#, c-format
-msgid "%s: numeric argument required"
-msgstr ""
-
-#: builtins/common.c:205
-#, c-format
-msgid "%s: not found"
-msgstr ""
-
-#: builtins/common.c:214 shell.c:795
-#, c-format
-msgid "%s: invalid option"
-msgstr ""
-
-#: builtins/common.c:221
-#, c-format
-msgid "%s: invalid option name"
-msgstr ""
-
-#: builtins/common.c:228 general.c:231 general.c:236
-#, c-format
-msgid "`%s': not a valid identifier"
-msgstr ""
-
-#: builtins/common.c:238
-msgid "invalid octal number"
-msgstr ""
-
-#: builtins/common.c:240
-msgid "invalid hex number"
-msgstr ""
-
-#: builtins/common.c:242 expr.c:1362
-msgid "invalid number"
-msgstr ""
-
-#: builtins/common.c:250
-#, c-format
-msgid "%s: invalid signal specification"
-msgstr ""
-
-#: builtins/common.c:257
-#, c-format
-msgid "`%s': not a pid or valid job spec"
-msgstr ""
-
-#: builtins/common.c:264 error.c:454
-#, c-format
-msgid "%s: readonly variable"
-msgstr ""
-
-#: builtins/common.c:272
-#, c-format
-msgid "%s: %s out of range"
-msgstr ""
-
-#: builtins/common.c:272 builtins/common.c:274
-msgid "argument"
-msgstr ""
-
-#: builtins/common.c:274
-#, c-format
-msgid "%s out of range"
-msgstr ""
-
-#: builtins/common.c:282
-#, c-format
-msgid "%s: no such job"
-msgstr ""
-
-#: builtins/common.c:290
-#, c-format
-msgid "%s: no job control"
-msgstr ""
-
-#: builtins/common.c:292
-msgid "no job control"
-msgstr ""
-
-#: builtins/common.c:302
-#, c-format
-msgid "%s: restricted"
-msgstr ""
-
-#: builtins/common.c:304
-msgid "restricted"
-msgstr ""
-
-#: builtins/common.c:312
-#, c-format
-msgid "%s: not a shell builtin"
-msgstr ""
-
-#: builtins/common.c:321
-#, c-format
-msgid "write error: %s"
-msgstr ""
-
-#: builtins/common.c:329
-#, c-format
-msgid "error setting terminal attributes: %s"
-msgstr ""
-
-#: builtins/common.c:331
-#, c-format
-msgid "error getting terminal attributes: %s"
-msgstr ""
-
-#: builtins/common.c:563
-#, c-format
-msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr ""
-
-#: builtins/common.c:629 builtins/common.c:631
-#, c-format
-msgid "%s: ambiguous job spec"
-msgstr ""
-
-#: builtins/complete.def:276
-#, c-format
-msgid "%s: invalid action name"
-msgstr ""
-
-#: builtins/complete.def:449 builtins/complete.def:644
-#: builtins/complete.def:853
-#, c-format
-msgid "%s: no completion specification"
-msgstr ""
-
-#: builtins/complete.def:696
-msgid "warning: -F option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:698
-msgid "warning: -C option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:826
-msgid "not currently executing completion function"
-msgstr ""
-
-#: builtins/declare.def:124
-msgid "can only be used in a function"
-msgstr ""
-
-#: builtins/declare.def:366
-msgid "cannot use `-f' to make functions"
-msgstr ""
-
-#: builtins/declare.def:378 execute_cmd.c:5105
-#, c-format
-msgid "%s: readonly function"
-msgstr ""
-
-#: builtins/declare.def:474
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr ""
-
-#: builtins/declare.def:481
-#, c-format
-msgid "%s: cannot convert associative to indexed array"
-msgstr ""
-
-#: builtins/enable.def:137 builtins/enable.def:145
-msgid "dynamic loading not available"
-msgstr ""
-
-#: builtins/enable.def:312
-#, c-format
-msgid "cannot open shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:335
-#, c-format
-msgid "cannot find %s in shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:459
-#, c-format
-msgid "%s: not dynamically loaded"
-msgstr ""
-
-#: builtins/enable.def:474
-#, c-format
-msgid "%s: cannot delete: %s"
-msgstr ""
-
-#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961
-#: shell.c:1457
-#, c-format
-msgid "%s: is a directory"
-msgstr ""
-
-#: builtins/evalfile.c:140
-#, c-format
-msgid "%s: not a regular file"
-msgstr ""
-
-#: builtins/evalfile.c:148
-#, c-format
-msgid "%s: file is too large"
-msgstr ""
-
-#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032
-#: shell.c:1467
-#, c-format
-msgid "%s: cannot execute binary file"
-msgstr ""
-
-#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228
-#, c-format
-msgid "%s: cannot execute: %s"
-msgstr ""
-
-#: builtins/exit.def:65
-#, c-format
-msgid "logout\n"
-msgstr ""
-
-#: builtins/exit.def:88
-msgid "not login shell: use `exit'"
-msgstr ""
-
-#: builtins/exit.def:120
-#, c-format
-msgid "There are stopped jobs.\n"
-msgstr ""
-
-#: builtins/exit.def:122
-#, c-format
-msgid "There are running jobs.\n"
-msgstr ""
-
-#: builtins/fc.def:262
-msgid "no command found"
-msgstr ""
-
-#: builtins/fc.def:312 builtins/fc.def:359
-msgid "history specification"
-msgstr ""
-
-#: builtins/fc.def:380
-#, c-format
-msgid "%s: cannot open temp file: %s"
-msgstr ""
-
-#: builtins/fg_bg.def:149 builtins/jobs.def:282
-msgid "current"
-msgstr ""
-
-#: builtins/fg_bg.def:158
-#, c-format
-msgid "job %d started without job control"
-msgstr ""
-
-#: builtins/getopt.c:110
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr ""
-
-#: builtins/getopt.c:111
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr ""
-
-#: builtins/hash.def:92
-msgid "hashing disabled"
-msgstr ""
-
-#: builtins/hash.def:138
-#, c-format
-msgid "%s: hash table empty\n"
-msgstr ""
-
-#: builtins/hash.def:245
-#, c-format
-msgid "hits\tcommand\n"
-msgstr ""
-
-#: builtins/help.def:130
-#, c-format
-msgid "Shell commands matching keyword `"
-msgid_plural "Shell commands matching keywords `"
-msgstr[0] ""
-msgstr[1] ""
-
-#: builtins/help.def:168
-#, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-
-#: builtins/help.def:185
-#, c-format
-msgid "%s: cannot open: %s"
-msgstr ""
-
-#: builtins/help.def:337
-#, c-format
-msgid ""
-"These shell commands are defined internally.  Type `help' to see this list.\n"
-"Type `help name' to find out more about the function `name'.\n"
-"Use `info bash' to find out more about the shell in general.\n"
-"Use `man -k' or `info' to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-msgstr ""
-
-#: builtins/history.def:154
-msgid "cannot use more than one of -anrw"
-msgstr ""
-
-#: builtins/history.def:186
-msgid "history position"
-msgstr ""
-
-#: builtins/history.def:365
-#, c-format
-msgid "%s: history expansion failed"
-msgstr ""
-
-#: builtins/inlib.def:71
-#, c-format
-msgid "%s: inlib failed"
-msgstr ""
-
-#: builtins/jobs.def:109
-msgid "no other options allowed with `-x'"
-msgstr ""
-
-#: builtins/kill.def:198
-#, c-format
-msgid "%s: arguments must be process or job IDs"
-msgstr ""
-
-#: builtins/kill.def:261
-msgid "Unknown error"
-msgstr ""
-
-#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567
-msgid "expression expected"
-msgstr ""
-
-#: builtins/mapfile.def:172
-#, c-format
-msgid "%s: not an indexed array"
-msgstr ""
-
-#: builtins/mapfile.def:256 builtins/read.def:279
-#, c-format
-msgid "%s: invalid file descriptor specification"
-msgstr ""
-
-#: builtins/mapfile.def:264 builtins/read.def:286
-#, c-format
-msgid "%d: invalid file descriptor: %s"
-msgstr ""
-
-#: builtins/mapfile.def:273 builtins/mapfile.def:311
-#, c-format
-msgid "%s: invalid line count"
-msgstr ""
-
-#: builtins/mapfile.def:284
-#, c-format
-msgid "%s: invalid array origin"
-msgstr ""
-
-#: builtins/mapfile.def:301
-#, c-format
-msgid "%s: invalid callback quantum"
-msgstr ""
-
-#: builtins/mapfile.def:333
-msgid "empty array variable name"
-msgstr ""
-
-#: builtins/mapfile.def:354
-msgid "array variable support required"
-msgstr ""
-
-#: builtins/printf.def:394
-#, c-format
-msgid "`%s': missing format character"
-msgstr ""
-
-#: builtins/printf.def:448
-#, c-format
-msgid "`%c': invalid time format specification"
-msgstr ""
-
-#: builtins/printf.def:635
-#, c-format
-msgid "`%c': invalid format character"
-msgstr ""
-
-#: builtins/printf.def:662
-#, c-format
-msgid "warning: %s: %s"
-msgstr ""
-
-#: builtins/printf.def:840
-msgid "missing hex digit for \\x"
-msgstr ""
-
-#: builtins/printf.def:855
-#, c-format
-msgid "missing unicode digit for \\%c"
-msgstr ""
-
-#: builtins/pushd.def:195
-msgid "no other directory"
-msgstr ""
-
-#: builtins/pushd.def:462
-msgid "<no current directory>"
-msgstr ""
-
-#: builtins/pushd.def:506
-msgid "directory stack empty"
-msgstr ""
-
-#: builtins/pushd.def:508
-msgid "directory stack index"
-msgstr ""
-
-#: builtins/pushd.def:683
-msgid ""
-"Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"\tdirs when invoked without options, starting with zero."
-msgstr ""
-
-#: builtins/pushd.def:705
-msgid ""
-"Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-
-#: builtins/pushd.def:730
-msgid ""
-"Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-
-#: builtins/read.def:252
-#, c-format
-msgid "%s: invalid timeout specification"
-msgstr ""
-
-#: builtins/read.def:588
-#, c-format
-msgid "read error: %d: %s"
-msgstr ""
-
-#: builtins/return.def:73
-msgid "can only `return' from a function or sourced script"
-msgstr ""
-
-#: builtins/set.def:771
-msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-
-#: builtins/set.def:808
-#, c-format
-msgid "%s: cannot unset"
-msgstr ""
-
-#: builtins/set.def:815
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr ""
-
-#: builtins/set.def:826
-#, c-format
-msgid "%s: not an array variable"
-msgstr ""
-
-#: builtins/setattr.def:186
-#, c-format
-msgid "%s: not a function"
-msgstr ""
-
-#: builtins/shift.def:71 builtins/shift.def:77
-msgid "shift count"
-msgstr ""
-
-#: builtins/shopt.def:264
-msgid "cannot set and unset shell options simultaneously"
-msgstr ""
-
-#: builtins/shopt.def:329
-#, c-format
-msgid "%s: invalid shell option name"
-msgstr ""
-
-#: builtins/source.def:130
-msgid "filename argument required"
-msgstr ""
-
-#: builtins/source.def:155
-#, c-format
-msgid "%s: file not found"
-msgstr ""
-
-#: builtins/suspend.def:101
-msgid "cannot suspend"
-msgstr ""
-
-#: builtins/suspend.def:111
-msgid "cannot suspend a login shell"
-msgstr ""
-
-#: builtins/type.def:234
-#, c-format
-msgid "%s is aliased to `%s'\n"
-msgstr ""
-
-#: builtins/type.def:255
-#, c-format
-msgid "%s is a shell keyword\n"
-msgstr ""
-
-#: builtins/type.def:274
-#, c-format
-msgid "%s is a function\n"
-msgstr ""
-
-#: builtins/type.def:296
-#, c-format
-msgid "%s is a shell builtin\n"
-msgstr ""
-
-#: builtins/type.def:317 builtins/type.def:391
-#, c-format
-msgid "%s is %s\n"
-msgstr ""
-
-#: builtins/type.def:337
-#, c-format
-msgid "%s is hashed (%s)\n"
-msgstr ""
-
-#: builtins/ulimit.def:376
-#, c-format
-msgid "%s: invalid limit argument"
-msgstr ""
-
-#: builtins/ulimit.def:402
-#, c-format
-msgid "`%c': bad command"
-msgstr ""
-
-#: builtins/ulimit.def:431
-#, c-format
-msgid "%s: cannot get limit: %s"
-msgstr ""
-
-#: builtins/ulimit.def:457
-msgid "limit"
-msgstr ""
-
-#: builtins/ulimit.def:469 builtins/ulimit.def:769
-#, c-format
-msgid "%s: cannot modify limit: %s"
-msgstr ""
-
-#: builtins/umask.def:118
-msgid "octal number"
-msgstr ""
-
-#: builtins/umask.def:231
-#, c-format
-msgid "`%c': invalid symbolic mode operator"
-msgstr ""
-
-#: builtins/umask.def:286
-#, c-format
-msgid "`%c': invalid symbolic mode character"
-msgstr ""
-
-#: error.c:90 error.c:321 error.c:323 error.c:325
-msgid " line "
-msgstr ""
-
-#: error.c:165
-#, c-format
-msgid "last command: %s\n"
-msgstr ""
-
-#: error.c:173
-#, c-format
-msgid "Aborting..."
-msgstr ""
-
-#: error.c:406
-msgid "unknown command error"
-msgstr ""
-
-#: error.c:407
-msgid "bad command type"
-msgstr ""
-
-#: error.c:408
-msgid "bad connector"
-msgstr ""
-
-#: error.c:409
-msgid "bad jump"
-msgstr ""
-
-#: error.c:447
-#, c-format
-msgid "%s: unbound variable"
-msgstr ""
-
-#: eval.c:181
-#, c-format
-msgid "\atimed out waiting for input: auto-logout\n"
-msgstr ""
-
-#: execute_cmd.c:504
-#, c-format
-msgid "cannot redirect standard input from /dev/null: %s"
-msgstr ""
-
-#: execute_cmd.c:1168
-#, c-format
-msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr ""
-
-#: execute_cmd.c:2121
-msgid "pipe error"
-msgstr ""
-
-#: execute_cmd.c:4640
-#, c-format
-msgid "%s: restricted: cannot specify `/' in command names"
-msgstr ""
-
-#: execute_cmd.c:4735
-#, c-format
-msgid "%s: command not found"
-msgstr ""
-
-#: execute_cmd.c:4959
-#, c-format
-msgid "%s: %s"
-msgstr ""
-
-#: execute_cmd.c:4995
-#, c-format
-msgid "%s: %s: bad interpreter"
-msgstr ""
-
-#: execute_cmd.c:5144
-#, c-format
-msgid "cannot duplicate fd %d to fd %d"
-msgstr ""
-
-#: expr.c:256
-msgid "expression recursion level exceeded"
-msgstr ""
-
-#: expr.c:280
-msgid "recursion stack underflow"
-msgstr ""
-
-#: expr.c:422
-msgid "syntax error in expression"
-msgstr ""
-
-#: expr.c:463
-msgid "attempted assignment to non-variable"
-msgstr ""
-
-#: expr.c:486 expr.c:491 expr.c:807
-msgid "division by 0"
-msgstr ""
-
-#: expr.c:517
-msgid "bug: bad expassign token"
-msgstr ""
-
-#: expr.c:564
-msgid "`:' expected for conditional expression"
-msgstr ""
-
-#: expr.c:832
-msgid "exponent less than 0"
-msgstr ""
-
-#: expr.c:887
-msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
-
-#: expr.c:910
-msgid "missing `)'"
-msgstr ""
-
-#: expr.c:959 expr.c:1282
-msgid "syntax error: operand expected"
-msgstr ""
-
-#: expr.c:1284
-msgid "syntax error: invalid arithmetic operator"
-msgstr ""
-
-#: expr.c:1308
-#, c-format
-msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr ""
-
-#: expr.c:1366
-msgid "invalid arithmetic base"
-msgstr ""
-
-#: expr.c:1386
-msgid "value too great for base"
-msgstr ""
-
-#: expr.c:1435
-#, c-format
-msgid "%s: expression error\n"
-msgstr ""
-
-#: general.c:61
-msgid "getcwd: cannot access parent directories"
-msgstr ""
-
-#: input.c:94 subst.c:5082
-#, c-format
-msgid "cannot reset nodelay mode for fd %d"
-msgstr ""
-
-#: input.c:260
-#, c-format
-msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr ""
-
-#: input.c:268
-#, c-format
-msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr ""
-
-#: jobs.c:468
-msgid "start_pipeline: pgrp pipe"
-msgstr ""
-
-#: jobs.c:889
-#, c-format
-msgid "forked pid %d appears in running job %d"
-msgstr ""
-
-#: jobs.c:1007
-#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr ""
-
-#: jobs.c:1112
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr ""
-
-#: jobs.c:1115
-#, c-format
-msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr ""
-
-#: jobs.c:1430
-#, c-format
-msgid "describe_pid: %ld: no such pid"
-msgstr ""
-
-#: jobs.c:1445
-#, c-format
-msgid "Signal %d"
-msgstr ""
-
-#: jobs.c:1459 jobs.c:1484
-msgid "Done"
-msgstr ""
-
-#: jobs.c:1464 siglist.c:123
-msgid "Stopped"
-msgstr ""
-
-#: jobs.c:1468
-#, c-format
-msgid "Stopped(%s)"
-msgstr ""
-
-#: jobs.c:1472
-msgid "Running"
-msgstr ""
-
-#: jobs.c:1486
-#, c-format
-msgid "Done(%d)"
-msgstr ""
-
-#: jobs.c:1488
-#, c-format
-msgid "Exit %d"
-msgstr ""
-
-#: jobs.c:1491
-msgid "Unknown status"
-msgstr ""
-
-#: jobs.c:1578
-#, c-format
-msgid "(core dumped) "
-msgstr ""
-
-#: jobs.c:1597
-#, c-format
-msgid "  (wd: %s)"
-msgstr ""
-
-#: jobs.c:1805
-#, c-format
-msgid "child setpgid (%ld to %ld)"
-msgstr ""
-
-#: jobs.c:2133 nojobs.c:585
-#, c-format
-msgid "wait: pid %ld is not a child of this shell"
-msgstr ""
-
-#: jobs.c:2360
-#, c-format
-msgid "wait_for: No record of process %ld"
-msgstr ""
-
-#: jobs.c:2637
-#, c-format
-msgid "wait_for_job: job %d is stopped"
-msgstr ""
-
-#: jobs.c:2859
-#, c-format
-msgid "%s: job has terminated"
-msgstr ""
-
-#: jobs.c:2868
-#, c-format
-msgid "%s: job %d already in background"
-msgstr ""
-
-#: jobs.c:3089
-msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
-
-#: jobs.c:3538
-#, c-format
-msgid "%s: line %d: "
-msgstr ""
-
-#: jobs.c:3552 nojobs.c:814
-#, c-format
-msgid " (core dumped)"
-msgstr ""
-
-#: jobs.c:3564 jobs.c:3577
-#, c-format
-msgid "(wd now: %s)\n"
-msgstr ""
-
-#: jobs.c:3609
-msgid "initialize_job_control: getpgrp failed"
-msgstr ""
-
-#: jobs.c:3669
-msgid "initialize_job_control: line discipline"
-msgstr ""
-
-#: jobs.c:3679
-msgid "initialize_job_control: setpgid"
-msgstr ""
-
-#: jobs.c:3707
-#, c-format
-msgid "cannot set terminal process group (%d)"
-msgstr ""
-
-#: jobs.c:3712
-msgid "no job control in this shell"
-msgstr ""
-
-#: lib/malloc/malloc.c:296
-#, c-format
-msgid "malloc: failed assertion: %s\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:312
-#, c-format
-msgid ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:313
-msgid "unknown"
-msgstr ""
-
-#: lib/malloc/malloc.c:797
-msgid "malloc: block on free list clobbered"
-msgstr ""
-
-#: lib/malloc/malloc.c:874
-msgid "free: called with already freed block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:877
-msgid "free: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:896
-msgid "free: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:902
-msgid "free: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/malloc.c:1001
-msgid "realloc: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:1016
-msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:1022
-msgid "realloc: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/table.c:177
-#, c-format
-msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
-
-#: lib/malloc/table.c:184
-#, c-format
-msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
-
-#: lib/malloc/table.c:220
-#, c-format
-msgid "register_free: %p already in table as free?\n"
-msgstr ""
-
-#: lib/sh/fmtulong.c:101
-msgid "invalid base"
-msgstr ""
-
-#: lib/sh/netopen.c:168
-#, c-format
-msgid "%s: host unknown"
-msgstr ""
-
-#: lib/sh/netopen.c:175
-#, c-format
-msgid "%s: invalid service"
-msgstr ""
-
-#: lib/sh/netopen.c:306
-#, c-format
-msgid "%s: bad network path specification"
-msgstr ""
-
-#: lib/sh/netopen.c:346
-msgid "network operations not supported"
-msgstr ""
-
-#: locale.c:192
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr ""
-
-#: locale.c:194
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr ""
-
-#: locale.c:247
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s)"
-msgstr ""
-
-#: locale.c:249
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr ""
-
-#: mailcheck.c:433
-msgid "You have mail in $_"
-msgstr ""
-
-#: mailcheck.c:458
-msgid "You have new mail in $_"
-msgstr ""
-
-#: mailcheck.c:474
-#, c-format
-msgid "The mail in %s has been read\n"
-msgstr ""
-
-#: make_cmd.c:323
-msgid "syntax error: arithmetic expression required"
-msgstr ""
-
-#: make_cmd.c:325
-msgid "syntax error: `;' unexpected"
-msgstr ""
-
-#: make_cmd.c:326
-#, c-format
-msgid "syntax error: `((%s))'"
-msgstr ""
-
-#: make_cmd.c:575
-#, c-format
-msgid "make_here_document: bad instruction type %d"
-msgstr ""
-
-#: make_cmd.c:659
-#, c-format
-msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
-
-#: make_cmd.c:756
-#, c-format
-msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
-
-#: parse.y:3173 parse.y:3444
-#, c-format
-msgid "unexpected EOF while looking for matching `%c'"
-msgstr ""
-
-#: parse.y:4025
-msgid "unexpected EOF while looking for `]]'"
-msgstr ""
-
-#: parse.y:4030
-#, c-format
-msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr ""
-
-#: parse.y:4034
-msgid "syntax error in conditional expression"
-msgstr ""
-
-#: parse.y:4112
-#, c-format
-msgid "unexpected token `%s', expected `)'"
-msgstr ""
-
-#: parse.y:4116
-msgid "expected `)'"
-msgstr ""
-
-#: parse.y:4144
-#, c-format
-msgid "unexpected argument `%s' to conditional unary operator"
-msgstr ""
-
-#: parse.y:4148
-msgid "unexpected argument to conditional unary operator"
-msgstr ""
-
-#: parse.y:4194
-#, c-format
-msgid "unexpected token `%s', conditional binary operator expected"
-msgstr ""
-
-#: parse.y:4198
-msgid "conditional binary operator expected"
-msgstr ""
-
-#: parse.y:4220
-#, c-format
-msgid "unexpected argument `%s' to conditional binary operator"
-msgstr ""
-
-#: parse.y:4224
-msgid "unexpected argument to conditional binary operator"
-msgstr ""
-
-#: parse.y:4235
-#, c-format
-msgid "unexpected token `%c' in conditional command"
-msgstr ""
-
-#: parse.y:4238
-#, c-format
-msgid "unexpected token `%s' in conditional command"
-msgstr ""
-
-#: parse.y:4242
-#, c-format
-msgid "unexpected token %d in conditional command"
-msgstr ""
-
-#: parse.y:5566
-#, c-format
-msgid "syntax error near unexpected token `%s'"
-msgstr ""
-
-#: parse.y:5584
-#, c-format
-msgid "syntax error near `%s'"
-msgstr ""
-
-#: parse.y:5594
-msgid "syntax error: unexpected end of file"
-msgstr ""
-
-#: parse.y:5594
-msgid "syntax error"
-msgstr ""
-
-#: parse.y:5656
-#, c-format
-msgid "Use \"%s\" to leave the shell.\n"
-msgstr ""
-
-#: parse.y:5818
-msgid "unexpected EOF while looking for matching `)'"
-msgstr ""
-
-#: pcomplete.c:1030
-#, c-format
-msgid "completion: function `%s' not found"
-msgstr ""
-
-#: pcomplib.c:182
-#, c-format
-msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr ""
-
-#: print_cmd.c:296
-#, c-format
-msgid "print_command: bad connector `%d'"
-msgstr ""
-
-#: print_cmd.c:368
-#, c-format
-msgid "xtrace_set: %d: invalid file descriptor"
-msgstr ""
-
-#: print_cmd.c:373
-msgid "xtrace_set: NULL file pointer"
-msgstr ""
-
-#: print_cmd.c:377
-#, c-format
-msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
-msgstr ""
-
-#: print_cmd.c:1478
-#, c-format
-msgid "cprintf: `%c': invalid format character"
-msgstr ""
-
-#: redir.c:122
-msgid "file descriptor out of range"
-msgstr ""
-
-#: redir.c:178
-#, c-format
-msgid "%s: ambiguous redirect"
-msgstr ""
-
-#: redir.c:182
-#, c-format
-msgid "%s: cannot overwrite existing file"
-msgstr ""
-
-#: redir.c:187
-#, c-format
-msgid "%s: restricted: cannot redirect output"
-msgstr ""
-
-#: redir.c:192
-#, c-format
-msgid "cannot create temp file for here-document: %s"
-msgstr ""
-
-#: redir.c:196
-#, c-format
-msgid "%s: cannot assign fd to variable"
-msgstr ""
-
-#: redir.c:548
-msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
-
-#: redir.c:818 redir.c:930 redir.c:993 redir.c:1136
-msgid "redirection error: cannot duplicate fd"
-msgstr ""
-
-#: shell.c:333
-msgid "could not find /tmp, please create!"
-msgstr ""
-
-#: shell.c:337
-msgid "/tmp must be a valid directory name"
-msgstr ""
-
-#: shell.c:884
-#, c-format
-msgid "%c%c: invalid option"
-msgstr ""
-
-#: shell.c:1652
-msgid "I have no name!"
-msgstr ""
-
-#: shell.c:1795
-#, c-format
-msgid "GNU bash, version %s-(%s)\n"
-msgstr ""
-
-#: shell.c:1796
-#, c-format
-msgid ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-msgstr ""
-
-#: shell.c:1798
-msgid "GNU long options:\n"
-msgstr ""
-
-#: shell.c:1802
-msgid "Shell options:\n"
-msgstr ""
-
-#: shell.c:1803
-msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
-
-#: shell.c:1818
-#, c-format
-msgid "\t-%s or -o option\n"
-msgstr ""
-
-#: shell.c:1824
-#, c-format
-msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-
-#: shell.c:1825
-#, c-format
-msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-
-#: shell.c:1826
-#, c-format
-msgid "Use the `bashbug' command to report bugs.\n"
-msgstr ""
-
-#: sig.c:638
-#, c-format
-msgid "sigprocmask: %d: invalid operation"
-msgstr ""
-
-#: siglist.c:48
-msgid "Bogus signal"
-msgstr ""
-
-#: siglist.c:51
-msgid "Hangup"
-msgstr ""
-
-#: siglist.c:55
-msgid "Interrupt"
-msgstr ""
-
-#: siglist.c:59
-msgid "Quit"
-msgstr ""
-
-#: siglist.c:63
-msgid "Illegal instruction"
-msgstr ""
-
-#: siglist.c:67
-msgid "BPT trace/trap"
-msgstr ""
-
-#: siglist.c:75
-msgid "ABORT instruction"
-msgstr ""
-
-#: siglist.c:79
-msgid "EMT instruction"
-msgstr ""
-
-#: siglist.c:83
-msgid "Floating point exception"
-msgstr ""
-
-#: siglist.c:87
-msgid "Killed"
-msgstr ""
-
-#: siglist.c:91
-msgid "Bus error"
-msgstr ""
-
-#: siglist.c:95
-msgid "Segmentation fault"
-msgstr ""
-
-#: siglist.c:99
-msgid "Bad system call"
-msgstr ""
-
-#: siglist.c:103
-msgid "Broken pipe"
-msgstr ""
-
-#: siglist.c:107
-msgid "Alarm clock"
-msgstr ""
-
-#: siglist.c:111
-msgid "Terminated"
-msgstr ""
-
-#: siglist.c:115
-msgid "Urgent IO condition"
-msgstr ""
-
-#: siglist.c:119
-msgid "Stopped (signal)"
-msgstr ""
-
-#: siglist.c:127
-msgid "Continue"
-msgstr ""
-
-#: siglist.c:135
-msgid "Child death or stop"
-msgstr ""
-
-#: siglist.c:139
-msgid "Stopped (tty input)"
-msgstr ""
-
-#: siglist.c:143
-msgid "Stopped (tty output)"
-msgstr ""
-
-#: siglist.c:147
-msgid "I/O ready"
-msgstr ""
-
-#: siglist.c:151
-msgid "CPU limit"
-msgstr ""
-
-#: siglist.c:155
-msgid "File limit"
-msgstr ""
-
-#: siglist.c:159
-msgid "Alarm (virtual)"
-msgstr ""
-
-#: siglist.c:163
-msgid "Alarm (profile)"
-msgstr ""
-
-#: siglist.c:167
-msgid "Window changed"
-msgstr ""
-
-#: siglist.c:171
-msgid "Record lock"
-msgstr ""
-
-#: siglist.c:175
-msgid "User signal 1"
-msgstr ""
-
-#: siglist.c:179
-msgid "User signal 2"
-msgstr ""
-
-#: siglist.c:183
-msgid "HFT input data pending"
-msgstr ""
-
-#: siglist.c:187
-msgid "power failure imminent"
-msgstr ""
-
-#: siglist.c:191
-msgid "system crash imminent"
-msgstr ""
-
-#: siglist.c:195
-msgid "migrate process to another CPU"
-msgstr ""
-
-#: siglist.c:199
-msgid "programming error"
-msgstr ""
-
-#: siglist.c:203
-msgid "HFT monitor mode granted"
-msgstr ""
-
-#: siglist.c:207
-msgid "HFT monitor mode retracted"
-msgstr ""
-
-#: siglist.c:211
-msgid "HFT sound sequence has completed"
-msgstr ""
-
-#: siglist.c:215
-msgid "Information request"
-msgstr ""
-
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr ""
-
-#: siglist.c:225
-#, c-format
-msgid "Unknown Signal #%d"
-msgstr ""
-
-#: subst.c:1333 subst.c:1502
-#, c-format
-msgid "bad substitution: no closing `%s' in %s"
-msgstr ""
-
-#: subst.c:2795
-#, c-format
-msgid "%s: cannot assign list to array member"
-msgstr ""
-
-#: subst.c:4979 subst.c:4995
-msgid "cannot make pipe for process substitution"
-msgstr ""
-
-#: subst.c:5027
-msgid "cannot make child for process substitution"
-msgstr ""
-
-#: subst.c:5072
-#, c-format
-msgid "cannot open named pipe %s for reading"
-msgstr ""
-
-#: subst.c:5074
-#, c-format
-msgid "cannot open named pipe %s for writing"
-msgstr ""
-
-#: subst.c:5092
-#, c-format
-msgid "cannot duplicate named pipe %s as fd %d"
-msgstr ""
-
-#: subst.c:5284
-msgid "cannot make pipe for command substitution"
-msgstr ""
-
-#: subst.c:5322
-msgid "cannot make child for command substitution"
-msgstr ""
-
-#: subst.c:5339
-msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr ""
-
-#: subst.c:5859
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr ""
-
-#: subst.c:6125 subst.c:6140
-#, c-format
-msgid "%s: substring expression < 0"
-msgstr ""
-
-#: subst.c:7271
-#, c-format
-msgid "%s: bad substitution"
-msgstr ""
-
-#: subst.c:7347
-#, c-format
-msgid "$%s: cannot assign in this way"
-msgstr ""
-
-#: subst.c:7684
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-
-#: subst.c:8149
-#, c-format
-msgid "bad substitution: no closing \"`\" in %s"
-msgstr ""
-
-#: subst.c:9036
-#, c-format
-msgid "no match: %s"
-msgstr ""
-
-#: test.c:146
-msgid "argument expected"
-msgstr ""
-
-#: test.c:155
-#, c-format
-msgid "%s: integer expression expected"
-msgstr ""
-
-#: test.c:263
-msgid "`)' expected"
-msgstr ""
-
-#: test.c:265
-#, c-format
-msgid "`)' expected, found %s"
-msgstr ""
-
-#: test.c:280 test.c:698 test.c:701
-#, c-format
-msgid "%s: unary operator expected"
-msgstr ""
-
-#: test.c:449 test.c:741
-#, c-format
-msgid "%s: binary operator expected"
-msgstr ""
-
-#: test.c:816
-msgid "missing `]'"
-msgstr ""
-
-#: trap.c:207
-msgid "invalid signal number"
-msgstr ""
-
-#: trap.c:337
-#, c-format
-msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
-
-#: trap.c:341
-#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-
-#: trap.c:393
-#, c-format
-msgid "trap_handler: bad signal %d"
-msgstr ""
-
-#: variables.c:363
-#, c-format
-msgid "error importing function definition for `%s'"
-msgstr ""
-
-#: variables.c:755
-#, c-format
-msgid "shell level (%d) too high, resetting to 1"
-msgstr ""
-
-#: variables.c:1932
-msgid "make_local_variable: no function context at current scope"
-msgstr ""
-
-#: variables.c:3182
-msgid "all_local_variables: no function context at current scope"
-msgstr ""
-
-#: variables.c:3427
-#, c-format
-msgid "%s has null exportstr"
-msgstr ""
-
-#: variables.c:3432 variables.c:3441
-#, c-format
-msgid "invalid character %d in exportstr for %s"
-msgstr ""
-
-#: variables.c:3447
-#, c-format
-msgid "no `=' in exportstr for %s"
-msgstr ""
-
-#: variables.c:3891
-msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-
-#: variables.c:3904
-msgid "pop_var_context: no global_variables context"
-msgstr ""
-
-#: variables.c:3978
-msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-
-#: variables.c:4786
-#, c-format
-msgid "%s: %s: cannot open as FILE"
-msgstr ""
-
-#: variables.c:4791
-#, c-format
-msgid "%s: %s: invalid value for trace file descriptor"
-msgstr ""
-
-#: version.c:46
-msgid "Copyright (C) 2011 Free Software Foundation, Inc."
-msgstr ""
-
-#: version.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-
-#: version.c:86 version2.c:83
-#, c-format
-msgid "GNU bash, version %s (%s)\n"
-msgstr ""
-
-#: version.c:91 version2.c:88
-#, c-format
-msgid "This is free software; you are free to change and redistribute it.\n"
-msgstr ""
-
-#: version.c:92 version2.c:89
-#, c-format
-msgid "There is NO WARRANTY, to the extent permitted by law.\n"
-msgstr ""
-
-#: version2.c:86
-#, c-format
-msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-msgstr ""
-
-#: version2.c:87
-#, c-format
-msgid ""
-"License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-
-#: xmalloc.c:91
-#, c-format
-msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:93
-#, c-format
-msgid "%s: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:163
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:165
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: builtins.c:43
-msgid "alias [-p] [name[=value] ... ]"
-msgstr ""
-
-#: builtins.c:47
-msgid "unalias [-a] name [name ...]"
-msgstr ""
-
-#: builtins.c:51
-msgid ""
-"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-
-#: builtins.c:54
-msgid "break [n]"
-msgstr ""
-
-#: builtins.c:56
-msgid "continue [n]"
-msgstr ""
-
-#: builtins.c:58
-msgid "builtin [shell-builtin [arg ...]]"
-msgstr ""
-
-#: builtins.c:61
-msgid "caller [expr]"
-msgstr ""
-
-#: builtins.c:64
-msgid "cd [-L|[-P [-e]]] [dir]"
-msgstr ""
-
-#: builtins.c:66
-msgid "pwd [-LP]"
-msgstr ""
-
-#: builtins.c:68
-msgid ":"
-msgstr ""
-
-#: builtins.c:70
-msgid "true"
-msgstr ""
-
-#: builtins.c:72
-msgid "false"
-msgstr ""
-
-#: builtins.c:74
-msgid "command [-pVv] command [arg ...]"
-msgstr ""
-
-#: builtins.c:76
-msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]"
-msgstr ""
-
-#: builtins.c:78
-msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..."
-msgstr ""
-
-#: builtins.c:80
-msgid "local [option] name[=value] ..."
-msgstr ""
-
-#: builtins.c:83
-msgid "echo [-neE] [arg ...]"
-msgstr ""
-
-#: builtins.c:87
-msgid "echo [-n] [arg ...]"
-msgstr ""
-
-#: builtins.c:90
-msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr ""
-
-#: builtins.c:92
-msgid "eval [arg ...]"
-msgstr ""
-
-#: builtins.c:94
-msgid "getopts optstring name [arg]"
-msgstr ""
-
-#: builtins.c:96
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr ""
-
-#: builtins.c:98
-msgid "exit [n]"
-msgstr ""
-
-#: builtins.c:100
-msgid "logout [n]"
-msgstr ""
-
-#: builtins.c:103
-msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr ""
-
-#: builtins.c:107
-msgid "fg [job_spec]"
-msgstr ""
-
-#: builtins.c:111
-msgid "bg [job_spec ...]"
-msgstr ""
-
-#: builtins.c:114
-msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr ""
-
-#: builtins.c:117
-msgid "help [-dms] [pattern ...]"
-msgstr ""
-
-#: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-
-#: builtins.c:125
-msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr ""
-
-#: builtins.c:129
-msgid "disown [-h] [-ar] [jobspec ...]"
-msgstr ""
-
-#: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-
-#: builtins.c:134
-msgid "let arg [arg ...]"
-msgstr ""
-
-#: builtins.c:136
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-
-#: builtins.c:138
-msgid "return [n]"
-msgstr ""
-
-#: builtins.c:140
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr ""
-
-#: builtins.c:142
-msgid "unset [-f] [-v] [name ...]"
-msgstr ""
-
-#: builtins.c:144
-msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr ""
-
-#: builtins.c:146
-msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr ""
-
-#: builtins.c:148
-msgid "shift [n]"
-msgstr ""
-
-#: builtins.c:150
-msgid "source filename [arguments]"
-msgstr ""
-
-#: builtins.c:152
-msgid ". filename [arguments]"
-msgstr ""
-
-#: builtins.c:155
-msgid "suspend [-f]"
-msgstr ""
-
-#: builtins.c:158
-msgid "test [expr]"
-msgstr ""
-
-#: builtins.c:160
-msgid "[ arg... ]"
-msgstr ""
-
-#: builtins.c:162
-msgid "times"
-msgstr ""
-
-#: builtins.c:164
-msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr ""
-
-#: builtins.c:166
-msgid "type [-afptP] name [name ...]"
-msgstr ""
-
-#: builtins.c:169
-msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]"
-msgstr ""
-
-#: builtins.c:172
-msgid "umask [-p] [-S] [mode]"
-msgstr ""
-
-#: builtins.c:175
-msgid "wait [id]"
-msgstr ""
-
-#: builtins.c:179
-msgid "wait [pid]"
-msgstr ""
-
-#: builtins.c:182
-msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:184
-msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:186
-msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:188
-msgid "time [-p] pipeline"
-msgstr ""
-
-#: builtins.c:190
-msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr ""
-
-#: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-
-#: builtins.c:194
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:196
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:198
-msgid "coproc [NAME] command [redirections]"
-msgstr ""
-
-#: builtins.c:200
-msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr ""
-
-#: builtins.c:202
-msgid "{ COMMANDS ; }"
-msgstr ""
-
-#: builtins.c:204
-msgid "job_spec [&]"
-msgstr ""
-
-#: builtins.c:206
-msgid "(( expression ))"
-msgstr ""
-
-#: builtins.c:208
-msgid "[[ expression ]]"
-msgstr ""
-
-#: builtins.c:210
-msgid "variables - Names and meanings of some shell variables"
-msgstr ""
-
-#: builtins.c:213
-msgid "pushd [-n] [+N | -N | dir]"
-msgstr ""
-
-#: builtins.c:217
-msgid "popd [-n] [+N | -N]"
-msgstr ""
-
-#: builtins.c:221
-msgid "dirs [-clpv] [+N] [-N]"
-msgstr ""
-
-#: builtins.c:224
-msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr ""
-
-#: builtins.c:226
-msgid "printf [-v var] format [arguments]"
-msgstr ""
-
-#: builtins.c:229
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-
-#: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-
-#: builtins.c:237
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr ""
-
-#: builtins.c:240
-msgid ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-
-#: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-
-#: builtins.c:254
-msgid ""
-"Define or display aliases.\n"
-"    \n"
-"    Without arguments, `alias' prints the list of aliases in the reusable\n"
-"    form `alias NAME=VALUE' on standard output.\n"
-"    \n"
-"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-"    A trailing space in VALUE causes the next word to be checked for\n"
-"    alias substitution when the alias is expanded.\n"
-"    \n"
-"    Options:\n"
-"      -p\tPrint all defined aliases in a reusable format\n"
-"    \n"
-"    Exit Status:\n"
-"    alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
-"    defined."
-msgstr ""
-
-#: builtins.c:276
-msgid ""
-"Remove each NAME from the list of defined aliases.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all alias definitions.\n"
-"    \n"
-"    Return success unless a NAME is not an existing alias."
-msgstr ""
-
-#: builtins.c:289
-msgid ""
-"Set Readline key bindings and variables.\n"
-"    \n"
-"    Bind a key sequence to a Readline function or a macro, or set a\n"
-"    Readline variable.  The non-option argument syntax is equivalent to\n"
-"    that found in ~/.inputrc, but must be passed as a single argument:\n"
-"    e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"    \n"
-"    Options:\n"
-"      -m  keymap         Use KEYMAP as the keymap for the duration of this\n"
-"                         command.  Acceptable keymap names are emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-"                         vi-command, and vi-insert.\n"
-"      -l                 List names of functions.\n"
-"      -P                 List function names and bindings.\n"
-"      -p                 List functions and bindings in a form that can be\n"
-"                         reused as input.\n"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\n"
-"                         in a form that can be reused as input.\n"
-"      -V                 List variable names and values\n"
-"      -v                 List variable names and values in a form that can\n"
-"                         be reused as input.\n"
-"      -q  function-name  Query about which keys invoke the named function.\n"
-"      -u  function-name  Unbind all keys which are bound to the named "
-"function.\n"
-"      -r  keyseq         Remove the binding for KEYSEQ.\n"
-"      -f  filename       Read key bindings from FILENAME.\n"
-"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-"    \t\t\t\tKEYSEQ is entered.\n"
-"    \n"
-"    Exit Status:\n"
-"    bind returns 0 unless an unrecognized option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:326
-msgid ""
-"Exit for, while, or until loops.\n"
-"    \n"
-"    Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing\n"
-"    loops.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-
-#: builtins.c:338
-msgid ""
-"Resume for, while, or until loops.\n"
-"    \n"
-"    Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-"    If N is specified, resumes the Nth enclosing loop.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-
-#: builtins.c:350
-msgid ""
-"Execute shell builtins.\n"
-"    \n"
-"    Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
-"    lookup.  This is useful when you wish to reimplement a shell builtin\n"
-"    as a shell function, but need to execute the builtin within the "
-"function.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
-msgstr ""
-
-#: builtins.c:365
-msgid ""
-"Return the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns \"$line $filename\".  With EXPR, returns\n"
-"    \"$line $subroutine $filename\"; this extra information can be used to\n"
-"    provide a stack trace.\n"
-"    \n"
-"    The value of EXPR indicates how many call frames to go back before the\n"
-"    current one; the top frame is frame 0.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless the shell is not executing a shell function or EXPR\n"
-"    is invalid."
-msgstr ""
-
-#: builtins.c:383
-msgid ""
-"Change the shell working directory.\n"
-"    \n"
-"    Change the current directory to DIR.  The default DIR is the value of "
-"the\n"
-"    HOME shell variable.\n"
-"    \n"
-"    The variable CDPATH defines the search path for the directory "
-"containing\n"
-"    DIR.  Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-"    A null directory name is the same as the current directory.  If DIR "
-"begins\n"
-"    with a slash (/), then CDPATH is not used.\n"
-"    \n"
-"    If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-"    the word is assumed to be  a variable name.  If that variable has a "
-"value,\n"
-"    its value is used for DIR.\n"
-"    \n"
-"    Options:\n"
-"        -L\tforce symbolic links to be followed\n"
-"        -P\tuse the physical directory structure without following symbolic\n"
-"    \tlinks\n"
-"        -e\tif the -P option is supplied, and the current working directory\n"
-"    \tcannot be determined successfully, exit with a non-zero status\n"
-"    \n"
-"    The default is to follow symbolic links, as if `-L' were specified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
-"    -P is used; non-zero otherwise."
-msgstr ""
-
-#: builtins.c:414
-msgid ""
-"Print the name of the current working directory.\n"
-"    \n"
-"    Options:\n"
-"      -L\tprint the value of $PWD if it names the current working\n"
-"    \tdirectory\n"
-"      -P\tprint the physical directory, without any symbolic links\n"
-"    \n"
-"    By default, `pwd' behaves as if `-L' were specified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless an invalid option is given or the current directory\n"
-"    cannot be read."
-msgstr ""
-
-#: builtins.c:431
-msgid ""
-"Null command.\n"
-"    \n"
-"    No effect; the command does nothing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:442
-msgid ""
-"Return a successful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:451
-msgid ""
-"Return an unsuccessful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always fails."
-msgstr ""
-
-#: builtins.c:460
-msgid ""
-"Execute a simple command or display information about commands.\n"
-"    \n"
-"    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n"
-"    information about the specified COMMANDs.  Can be used to invoke "
-"commands\n"
-"    on disk when a function with the same name exists.\n"
-"    \n"
-"    Options:\n"
-"      -p\tuse a default value for PATH that is guaranteed to find all of\n"
-"    \tthe standard utilities\n"
-"      -v\tprint a description of COMMAND similar to the `type' builtin\n"
-"      -V\tprint a more verbose description of each COMMAND\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of COMMAND, or failure if COMMAND is not found."
-msgstr ""
-
-#: builtins.c:479
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Declare variables and give them attributes.  If no NAMEs are given,\n"
-"    display the attributes and values of all variables.\n"
-"    \n"
-"    Options:\n"
-"      -f\trestrict action or display to function names and definitions\n"
-"      -F\trestrict display to function names only (plus line number and\n"
-"    \tsource file when debugging)\n"
-"      -g\tcreate global variables when used in a shell function; otherwise\n"
-"    \tignored\n"
-"      -p\tdisplay the attributes and value of each NAME\n"
-"    \n"
-"    Options which set attributes:\n"
-"      -a\tto make NAMEs indexed arrays (if supported)\n"
-"      -A\tto make NAMEs associative arrays (if supported)\n"
-"      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
-"      -r\tto make NAMEs readonly\n"
-"      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
-"      -x\tto make NAMEs export\n"
-"    \n"
-"    Using `+' instead of `-' turns off the given attribute.\n"
-"    \n"
-"    Variables with the integer attribute have arithmetic evaluation (see\n"
-"    the `let' command) performed when the variable is assigned a value.\n"
-"    \n"
-"    When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
-"    command.  The `-g' option suppresses this behavior.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:517
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Obsolete.  See `help declare'."
-msgstr ""
-
-#: builtins.c:525
-msgid ""
-"Define local variables.\n"
-"    \n"
-"    Create a local variable called NAME, and give it VALUE.  OPTION can\n"
-"    be any option accepted by `declare'.\n"
-"    \n"
-"    Local variables can only be used within a function; they are visible\n"
-"    only to the function where they are defined and its children.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied, an error occurs,\n"
-"    or the shell is not executing a function."
-msgstr ""
-
-#: builtins.c:542
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs on the standard output followed by a newline.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"      -e\tenable interpretation of the following backslash escapes\n"
-"      -E\texplicitly suppress interpretation of backslash escapes\n"
-"    \n"
-"    `echo' interprets the following backslash-escaped characters:\n"
-"      \\a\talert (bell)\n"
-"      \\b\tbackspace\n"
-"      \\c\tsuppress further output\n"
-"      \\e\tescape character\n"
-"      \\f\tform feed\n"
-"      \\n\tnew line\n"
-"      \\r\tcarriage return\n"
-"      \\t\thorizontal tab\n"
-"      \\v\tvertical tab\n"
-"      \\\\\tbackslash\n"
-"      \\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n"
-"    \t0 to 3 octal digits\n"
-"      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
-"    \tcan be one or two hex digits\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-
-#: builtins.c:576
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs on the standard output followed by a newline.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-
-#: builtins.c:591
-msgid ""
-"Enable and disable shell builtins.\n"
-"    \n"
-"    Enables and disables builtin shell commands.  Disabling allows you to\n"
-"    execute a disk command which has the same name as a shell builtin\n"
-"    without using a full pathname.\n"
-"    \n"
-"    Options:\n"
-"      -a\tprint a list of builtins showing whether or not each is enabled\n"
-"      -n\tdisable each NAME or display a list of disabled builtins\n"
-"      -p\tprint the list of builtins in a reusable format\n"
-"      -s\tprint only the names of Posix `special' builtins\n"
-"    \n"
-"    Options controlling dynamic loading:\n"
-"      -f\tLoad builtin NAME from shared object FILENAME\n"
-"      -d\tRemove a builtin loaded with -f\n"
-"    \n"
-"    Without options, each NAME is enabled.\n"
-"    \n"
-"    To use the `test' found in $PATH instead of the shell builtin\n"
-"    version, type `enable -n test'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not a shell builtin or an error occurs."
-msgstr ""
-
-#: builtins.c:619
-msgid ""
-"Execute arguments as a shell command.\n"
-"    \n"
-"    Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
-"    and execute the resulting commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of command or success if command is null."
-msgstr ""
-
-#: builtins.c:631
-msgid ""
-"Parse option arguments.\n"
-"    \n"
-"    Getopts is used by shell procedures to parse positional parameters\n"
-"    as options.\n"
-"    \n"
-"    OPTSTRING contains the option letters to be recognized; if a letter\n"
-"    is followed by a colon, the option is expected to have an argument,\n"
-"    which should be separated from it by white space.\n"
-"    \n"
-"    Each time it is invoked, getopts will place the next option in the\n"
-"    shell variable $name, initializing name if it does not exist, and\n"
-"    the index of the next argument to be processed into the shell\n"
-"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
-"    a shell script is invoked.  When an option requires an argument,\n"
-"    getopts places that argument into the shell variable OPTARG.\n"
-"    \n"
-"    getopts reports errors in one of two ways.  If the first character\n"
-"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
-"    this mode, no error messages are printed.  If an invalid option is\n"
-"    seen, getopts places the option character found into OPTARG.  If a\n"
-"    required argument is not found, getopts places a ':' into NAME and\n"
-"    sets OPTARG to the option character found.  If getopts is not in\n"
-"    silent mode, and an invalid option is seen, getopts places '?' into\n"
-"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
-"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-"    printed.\n"
-"    \n"
-"    If the shell variable OPTERR has the value 0, getopts disables the\n"
-"    printing of error messages, even if the first character of\n"
-"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
-"    \n"
-"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
-"    more arguments are given, they are parsed instead.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if an option is found; fails if the end of options is\n"
-"    encountered or an error occurs."
-msgstr ""
-
-#: builtins.c:673
-msgid ""
-"Replace the shell with the given command.\n"
-"    \n"
-"    Execute COMMAND, replacing this shell with the specified program.\n"
-"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not "
-"specified,\n"
-"    any redirections take effect in the current shell.\n"
-"    \n"
-"    Options:\n"
-"      -a name\tpass NAME as the zeroth argument to COMMAND\n"
-"      -c\t\texecute COMMAND with an empty environment\n"
-"      -l\t\tplace a dash in the zeroth argument to COMMAND\n"
-"    \n"
-"    If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
-"    the shell option `execfail' is set.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless COMMAND is not found or a redirection error "
-"occurs."
-msgstr ""
-
-#: builtins.c:694
-msgid ""
-"Exit the shell.\n"
-"    \n"
-"    Exits the shell with a status of N.  If N is omitted, the exit status\n"
-"    is that of the last command executed."
-msgstr ""
-
-#: builtins.c:703
-msgid ""
-"Exit a login shell.\n"
-"    \n"
-"    Exits a login shell with exit status N.  Returns an error if not "
-"executed\n"
-"    in a login shell."
-msgstr ""
-
-#: builtins.c:713
-msgid ""
-"Display or execute commands from the history list.\n"
-"    \n"
-"    fc is used to list or edit and re-execute commands from the history "
-"list.\n"
-"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-"    string, which means the most recent command beginning with that\n"
-"    string.\n"
-"    \n"
-"    Options:\n"
-"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
-"    \t\tthen vi\n"
-"      -l \tlist lines instead of editing\n"
-"      -n\tomit line numbers when listing\n"
-"      -r\treverse the order of the lines (newest listed first)\n"
-"    \n"
-"    With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n"
-"    re-executed after the substitution OLD=NEW is performed.\n"
-"    \n"
-"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
-"    runs the last command beginning with `cc' and typing `r' re-executes\n"
-"    the last command.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success or status of executed command; non-zero if an error "
-"occurs."
-msgstr ""
-
-#: builtins.c:743
-msgid ""
-"Move job to the foreground.\n"
-"    \n"
-"    Place the job identified by JOB_SPEC in the foreground, making it the\n"
-"    current job.  If JOB_SPEC is not present, the shell's notion of the\n"
-"    current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Status of command placed in foreground, or failure if an error occurs."
-msgstr ""
-
-#: builtins.c:758
-msgid ""
-"Move jobs to the background.\n"
-"    \n"
-"    Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-"    had been started with `&'.  If JOB_SPEC is not present, the shell's "
-"notion\n"
-"    of the current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-
-#: builtins.c:772
-msgid ""
-"Remember or display program locations.\n"
-"    \n"
-"    Determine and remember the full pathname of each command NAME.  If\n"
-"    no arguments are given, information about remembered commands is "
-"displayed.\n"
-"    \n"
-"    Options:\n"
-"      -d\t\tforget the remembered location of each NAME\n"
-"      -l\t\tdisplay in a format that may be reused as input\n"
-"      -p pathname\tuse PATHNAME is the full pathname of NAME\n"
-"      -r\t\tforget all remembered locations\n"
-"      -t\t\tprint the remembered location of each NAME, preceding\n"
-"    \t\teach location with the corresponding NAME if multiple\n"
-"    \t\tNAMEs are given\n"
-"    Arguments:\n"
-"      NAME\t\tEach NAME is searched for in $PATH and added to the list\n"
-"    \t\tof remembered commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not found or an invalid option is given."
-msgstr ""
-
-#: builtins.c:797
-msgid ""
-"Display information about builtin commands.\n"
-"    \n"
-"    Displays brief summaries of builtin commands.  If PATTERN is\n"
-"    specified, gives detailed help on all commands matching PATTERN,\n"
-"    otherwise the list of help topics is printed.\n"
-"    \n"
-"    Options:\n"
-"      -d\toutput short description for each topic\n"
-"      -m\tdisplay usage in pseudo-manpage format\n"
-"      -s\toutput only a short usage synopsis for each topic matching\n"
-"    \tPATTERN\n"
-"    \n"
-"    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless PATTERN is not found or an invalid option is "
-"given."
-msgstr ""
-
-#: builtins.c:821
-msgid ""
-"Display or manipulate the history list.\n"
-"    \n"
-"    Display the history list with line numbers, prefixing each modified\n"
-"    entry with a `*'.  An argument of N lists only the last N entries.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at offset OFFSET.\n"
-"    \n"
-"      -a\tappend history lines from this session to the history file\n"
-"      -n\tread all history lines not already read from the history file\n"
-"      -r\tread the history file and append the contents to the history\n"
-"    \tlist\n"
-"      -w\twrite the current history to the history file\n"
-"    \tand append them to the history list\n"
-"    \n"
-"      -p\tperform history expansion on each ARG and display the result\n"
-"    \twithout storing it in the history list\n"
-"      -s\tappend the ARGs to the history list as a single entry\n"
-"    \n"
-"    If FILENAME is given, it is used as the history file.  Otherwise,\n"
-"    if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-"    \n"
-"    If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-"    as a format string for strftime(3) to print the time stamp associated\n"
-"    with each displayed history entry.  No time stamps are printed "
-"otherwise.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:857
-msgid ""
-"Display status of jobs.\n"
-"    \n"
-"    Lists the active jobs.  JOBSPEC restricts output to that job.\n"
-"    Without options, the status of all active jobs is displayed.\n"
-"    \n"
-"    Options:\n"
-"      -l\tlists process IDs in addition to the normal information\n"
-"      -n\tlist only processes that have changed status since the last\n"
-"    \tnotification\n"
-"      -p\tlists process IDs only\n"
-"      -r\trestrict output to running jobs\n"
-"      -s\trestrict output to stopped jobs\n"
-"    \n"
-"    If -x is supplied, COMMAND is run after all job specifications that\n"
-"    appear in ARGS have been replaced with the process ID of that job's\n"
-"    process group leader.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs.\n"
-"    If -x is used, returns the exit status of COMMAND."
-msgstr ""
-
-#: builtins.c:884
-msgid ""
-"Remove jobs from current shell.\n"
-"    \n"
-"    Removes each JOBSPEC argument from the table of active jobs.  Without\n"
-"    any JOBSPECs, the shell uses its notion of the current job.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all jobs if JOBSPEC is not supplied\n"
-"      -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
-"    \tshell receives a SIGHUP\n"
-"      -r\tremove only running jobs\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option or JOBSPEC is given."
-msgstr ""
-
-#: builtins.c:903
-msgid ""
-"Send a signal to a job.\n"
-"    \n"
-"    Send the processes identified by PID or JOBSPEC the signal named by\n"
-"    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then\n"
-"    SIGTERM is assumed.\n"
-"    \n"
-"    Options:\n"
-"      -s sig\tSIG is a signal name\n"
-"      -n sig\tSIG is a signal number\n"
-"      -l\tlist the signal names; if arguments follow `-l' they are\n"
-"    \tassumed to be signal numbers for which names should be listed\n"
-"    \n"
-"    Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-"    instead of process IDs, and allows processes to be killed if the limit\n"
-"    on processes that you can create is reached.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:926
-msgid ""
-"Evaluate arithmetic expressions.\n"
-"    \n"
-"    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
-"    fixed-width integers with no check for overflow, though division by 0\n"
-"    is trapped and flagged as an error.  The following list of operators is\n"
-"    grouped into levels of equal-precedence operators.  The levels are "
-"listed\n"
-"    in order of decreasing precedence.\n"
-"    \n"
-"    \tid++, id--\tvariable post-increment, post-decrement\n"
-"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
-"    \t-, +\t\tunary minus, plus\n"
-"    \t!, ~\t\tlogical and bitwise negation\n"
-"    \t**\t\texponentiation\n"
-"    \t*, /, %\t\tmultiplication, division, remainder\n"
-"    \t+, -\t\taddition, subtraction\n"
-"    \t<<, >>\t\tleft and right bitwise shifts\n"
-"    \t<=, >=, <, >\tcomparison\n"
-"    \t==, !=\t\tequality, inequality\n"
-"    \t&\t\tbitwise AND\n"
-"    \t^\t\tbitwise XOR\n"
-"    \t|\t\tbitwise OR\n"
-"    \t&&\t\tlogical AND\n"
-"    \t||\t\tlogical OR\n"
-"    \texpr ? expr : expr\n"
-"    \t\t\tconditional operator\n"
-"    \t=, *=, /=, %=,\n"
-"    \t+=, -=, <<=, >>=,\n"
-"    \t&=, ^=, |=\tassignment\n"
-"    \n"
-"    Shell variables are allowed as operands.  The name of the variable\n"
-"    is replaced by its value (coerced to a fixed-width integer) within\n"
-"    an expression.  The variable need not have its integer attribute\n"
-"    turned on to be used in an expression.\n"
-"    \n"
-"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
-"    parentheses are evaluated first and may override the precedence\n"
-"    rules above.\n"
-"    \n"
-"    Exit Status:\n"
-"    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
-msgstr ""
-
-#: builtins.c:971
-msgid ""
-"Read a line from the standard input and split it into fields.\n"
-"    \n"
-"    Reads a single line from the standard input, or from file descriptor FD\n"
-"    if the -u option is supplied.  The line is split into fields as with "
-"word\n"
-"    splitting, and the first word is assigned to the first NAME, the second\n"
-"    word to the second NAME, and so on, with any leftover words assigned to\n"
-"    the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
-"    delimiters.\n"
-"    \n"
-"    If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
-"    \n"
-"    Options:\n"
-"      -a array\tassign the words read to sequential indices of the array\n"
-"    \t\tvariable ARRAY, starting at zero\n"
-"      -d delim\tcontinue until the first character of DELIM is read, rather\n"
-"    \t\tthan newline\n"
-"      -e\t\tuse Readline to obtain the line in an interactive shell\n"
-"      -i text\tUse TEXT as the initial text for Readline\n"
-"      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
-"    \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
-"    \t\tcharacters are read before the delimiter\n"
-"      -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
-"    \t\tEOF is encountered or read times out, ignoring any delimiter\n"
-"      -p prompt\toutput the string PROMPT without a trailing newline before\n"
-"    \t\tattempting to read\n"
-"      -r\t\tdo not allow backslashes to escape any characters\n"
-"      -s\t\tdo not echo input coming from a terminal\n"
-"      -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
-"    \t\tnot read withint TIMEOUT seconds.  The value of the TMOUT\n"
-"    \t\tvariable is the default timeout.  TIMEOUT may be a\n"
-"    \t\tfractional number.  If TIMEOUT is 0, read returns success only\n"
-"    \t\tif input is available on the specified file descriptor.  The\n"
-"    \t\texit status is greater than 128 if the timeout is exceeded\n"
-"      -u fd\t\tread from file descriptor FD instead of the standard input\n"
-"    \n"
-"    Exit Status:\n"
-"    The return code is zero, unless end-of-file is encountered, read times "
-"out,\n"
-"    or an invalid file descriptor is supplied as the argument to -u."
-msgstr ""
-
-#: builtins.c:1014
-msgid ""
-"Return from a shell function.\n"
-"    \n"
-"    Causes a function or sourced script to exit with the return value\n"
-"    specified by N.  If N is omitted, the return status is that of the\n"
-"    last command executed within the function or script.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns N, or failure if the shell is not executing a function or script."
-msgstr ""
-
-#: builtins.c:1027
-msgid ""
-"Set or unset values of shell options and positional parameters.\n"
-"    \n"
-"    Change the value of shell attributes and positional parameters, or\n"
-"    display the names and values of shell variables.\n"
-"    \n"
-"    Options:\n"
-"      -a  Mark variables which are modified or created for export.\n"
-"      -b  Notify of job termination immediately.\n"
-"      -e  Exit immediately if a command exits with a non-zero status.\n"
-"      -f  Disable file name generation (globbing).\n"
-"      -h  Remember the location of commands as they are looked up.\n"
-"      -k  All assignment arguments are placed in the environment for a\n"
-"          command, not just those that precede the command name.\n"
-"      -m  Job control is enabled.\n"
-"      -n  Read commands but do not execute them.\n"
-"      -o option-name\n"
-"          Set the variable corresponding to option-name:\n"
-"              allexport    same as -a\n"
-"              braceexpand  same as -B\n"
-"              emacs        use an emacs-style line editing interface\n"
-"              errexit      same as -e\n"
-"              errtrace     same as -E\n"
-"              functrace    same as -T\n"
-"              hashall      same as -h\n"
-"              histexpand   same as -H\n"
-"              history      enable command history\n"
-"              ignoreeof    the shell will not exit upon reading EOF\n"
-"              interactive-comments\n"
-"                           allow comments to appear in interactive commands\n"
-"              keyword      same as -k\n"
-"              monitor      same as -m\n"
-"              noclobber    same as -C\n"
-"              noexec       same as -n\n"
-"              noglob       same as -f\n"
-"              nolog        currently accepted but ignored\n"
-"              notify       same as -b\n"
-"              nounset      same as -u\n"
-"              onecmd       same as -t\n"
-"              physical     same as -P\n"
-"              pipefail     the return value of a pipeline is the status of\n"
-"                           the last command to exit with a non-zero status,\n"
-"                           or zero if no command exited with a non-zero "
-"status\n"
-"              posix        change the behavior of bash where the default\n"
-"                           operation differs from the Posix standard to\n"
-"                           match the standard\n"
-"              privileged   same as -p\n"
-"              verbose      same as -v\n"
-"              vi           use a vi-style line editing interface\n"
-"              xtrace       same as -x\n"
-"      -p  Turned on whenever the real and effective user ids do not match.\n"
-"          Disables processing of the $ENV file and importing of shell\n"
-"          functions.  Turning this option off causes the effective uid and\n"
-"          gid to be set to the real uid and gid.\n"
-"      -t  Exit after reading and executing one command.\n"
-"      -u  Treat unset variables as an error when substituting.\n"
-"      -v  Print shell input lines as they are read.\n"
-"      -x  Print commands and their arguments as they are executed.\n"
-"      -B  the shell will perform brace expansion\n"
-"      -C  If set, disallow existing regular files to be overwritten\n"
-"          by redirection of output.\n"
-"      -E  If set, the ERR trap is inherited by shell functions.\n"
-"      -H  Enable ! style history substitution.  This flag is on\n"
-"          by default when the shell is interactive.\n"
-"      -P  If set, do not follow symbolic links when executing commands\n"
-"          such as cd which change the current directory.\n"
-"      -T  If set, the DEBUG trap is inherited by shell functions.\n"
-"      --  Assign any remaining arguments to the positional parameters.\n"
-"          If there are no remaining arguments, the positional parameters\n"
-"          are unset.\n"
-"      -   Assign any remaining arguments to the positional parameters.\n"
-"          The -x and -v options are turned off.\n"
-"    \n"
-"    Using + rather than - causes these flags to be turned off.  The\n"
-"    flags can also be used upon invocation of the shell.  The current\n"
-"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
-"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
-"    ARGs are given, all shell variables are printed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given."
-msgstr ""
-
-#: builtins.c:1112
-msgid ""
-"Unset values and attributes of shell variables and functions.\n"
-"    \n"
-"    For each NAME, remove the corresponding variable or function.\n"
-"    \n"
-"    Options:\n"
-"      -f\ttreat each NAME as a shell function\n"
-"      -v\ttreat each NAME as a shell variable\n"
-"    \n"
-"    Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
-"    tries to unset a function.\n"
-"    \n"
-"    Some variables cannot be unset; also see `readonly'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a NAME is read-only."
-msgstr ""
-
-#: builtins.c:1132
-msgid ""
-"Set export attribute for shell variables.\n"
-"    \n"
-"    Marks each NAME for automatic export to the environment of subsequently\n"
-"    executed commands.  If VALUE is supplied, assign VALUE before "
-"exporting.\n"
-"    \n"
-"    Options:\n"
-"      -f\trefer to shell functions\n"
-"      -n\tremove the export property from each NAME\n"
-"      -p\tdisplay a list of all exported variables and functions\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-
-#: builtins.c:1151
-msgid ""
-"Mark shell variables as unchangeable.\n"
-"    \n"
-"    Mark each NAME as read-only; the values of these NAMEs may not be\n"
-"    changed by subsequent assignment.  If VALUE is supplied, assign VALUE\n"
-"    before marking as read-only.\n"
-"    \n"
-"    Options:\n"
-"      -a\trefer to indexed array variables\n"
-"      -A\trefer to associative array variables\n"
-"      -f\trefer to shell functions\n"
-"      -p\tdisplay a list of all readonly variables and functions\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-
-#: builtins.c:1172
-msgid ""
-"Shift positional parameters.\n"
-"    \n"
-"    Rename the positional parameters $N+1,$N+2 ... to $1,$2 ...  If N is\n"
-"    not given, it is assumed to be 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless N is negative or greater than $#."
-msgstr ""
-
-#: builtins.c:1184 builtins.c:1199
-msgid ""
-"Execute commands from a file in the current shell.\n"
-"    \n"
-"    Read and execute commands from FILENAME in the current shell.  The\n"
-"    entries in $PATH are used to find the directory containing FILENAME.\n"
-"    If any ARGUMENTS are supplied, they become the positional parameters\n"
-"    when FILENAME is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed in FILENAME; fails if\n"
-"    FILENAME cannot be read."
-msgstr ""
-
-#: builtins.c:1215
-msgid ""
-"Suspend shell execution.\n"
-"    \n"
-"    Suspend the execution of this shell until it receives a SIGCONT signal.\n"
-"    Unless forced, login shells cannot be suspended.\n"
-"    \n"
-"    Options:\n"
-"      -f\tforce the suspend, even if the shell is a login shell\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-
-#: builtins.c:1231
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    Exits with a status of 0 (true) or 1 (false) depending on\n"
-"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
-"    expressions are often used to examine the status of a file.  There\n"
-"    are string operators and numeric comparison operators as well.\n"
-"    \n"
-"    The behavior of test depends on the number of arguments.  Read the\n"
-"    bash manual page for the complete specification.\n"
-"    \n"
-"    File operators:\n"
-"    \n"
-"      -a FILE        True if file exists.\n"
-"      -b FILE        True if file is block special.\n"
-"      -c FILE        True if file is character special.\n"
-"      -d FILE        True if file is a directory.\n"
-"      -e FILE        True if file exists.\n"
-"      -f FILE        True if file exists and is a regular file.\n"
-"      -g FILE        True if file is set-group-id.\n"
-"      -h FILE        True if file is a symbolic link.\n"
-"      -L FILE        True if file is a symbolic link.\n"
-"      -k FILE        True if file has its `sticky' bit set.\n"
-"      -p FILE        True if file is a named pipe.\n"
-"      -r FILE        True if file is readable by you.\n"
-"      -s FILE        True if file exists and is not empty.\n"
-"      -S FILE        True if file is a socket.\n"
-"      -t FD          True if FD is opened on a terminal.\n"
-"      -u FILE        True if the file is set-user-id.\n"
-"      -w FILE        True if the file is writable by you.\n"
-"      -x FILE        True if the file is executable by you.\n"
-"      -O FILE        True if the file is effectively owned by you.\n"
-"      -G FILE        True if the file is effectively owned by your group.\n"
-"      -N FILE        True if the file has been modified since it was last "
-"read.\n"
-"    \n"
-"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
-"                       modification date).\n"
-"    \n"
-"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
-"    \n"
-"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
-"    \n"
-"    String operators:\n"
-"    \n"
-"      -z STRING      True if string is empty.\n"
-"    \n"
-"      -n STRING\n"
-"         STRING      True if string is not empty.\n"
-"    \n"
-"      STRING1 = STRING2\n"
-"                     True if the strings are equal.\n"
-"      STRING1 != STRING2\n"
-"                     True if the strings are not equal.\n"
-"      STRING1 < STRING2\n"
-"                     True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-"      STRING1 > STRING2\n"
-"                     True if STRING1 sorts after STRING2 lexicographically.\n"
-"    \n"
-"    Other operators:\n"
-"    \n"
-"      -o OPTION      True if the shell option OPTION is enabled.\n"
-"      -v VAR\t True if the shell variable VAR is set\n"
-"      ! EXPR         True if expr is false.\n"
-"      EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-"      EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-"    \n"
-"      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
-"                     -lt, -le, -gt, or -ge.\n"
-"    \n"
-"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-"    than ARG2.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
-"    false or an invalid argument is given."
-msgstr ""
-
-#: builtins.c:1311
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    This is a synonym for the \"test\" builtin, but the last argument must\n"
-"    be a literal `]', to match the opening `['."
-msgstr ""
-
-#: builtins.c:1320
-msgid ""
-"Display process times.\n"
-"    \n"
-"    Prints the accumulated user and system times for the shell and all of "
-"its\n"
-"    child processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:1332
-msgid ""
-"Trap signals and other events.\n"
-"    \n"
-"    Defines and activates handlers to be run when the shell receives "
-"signals\n"
-"    or other conditions.\n"
-"    \n"
-"    ARG is a command to be read and executed when the shell receives the\n"
-"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
-"    is supplied) or `-', each specified signal is reset to its original\n"
-"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-"    shell and by the commands it invokes.\n"
-"    \n"
-"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  "
-"If\n"
-"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.  "
-"If\n"
-"    a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-"    script run by the . or source builtins finishes executing.  A "
-"SIGNAL_SPEC\n"
-"    of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
-"    shell to exit when the -e option is enabled.\n"
-"    \n"
-"    If no arguments are supplied, trap prints the list of commands "
-"associated\n"
-"    with each signal.\n"
-"    \n"
-"    Options:\n"
-"      -l\tprint a list of signal names and their corresponding numbers\n"
-"      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
-"    \n"
-"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
-"    Signal names are case insensitive and the SIG prefix is optional.  A\n"
-"    signal may be sent to the shell with \"kill -signal $$\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
-msgstr ""
-
-#: builtins.c:1368
-msgid ""
-"Display information about command type.\n"
-"    \n"
-"    For each NAME, indicate how it would be interpreted if used as a\n"
-"    command name.\n"
-"    \n"
-"    Options:\n"
-"      -a\tdisplay all locations containing an executable named NAME;\n"
-"    \tincludes aliases, builtins, and functions, if and only if\n"
-"    \tthe `-p' option is not also used\n"
-"      -f\tsuppress shell function lookup\n"
-"      -P\tforce a PATH search for each NAME, even if it is an alias,\n"
-"    \tbuiltin, or function, and returns the name of the disk file\n"
-"    \tthat would be executed\n"
-"      -p\treturns either the name of the disk file that would be executed,\n"
-"    \tor nothing if `type -t NAME' would not return `file'.\n"
-"      -t\toutput a single word which is one of `alias', `keyword',\n"
-"    \t`function', `builtin', `file' or `', if NAME is an alias, shell\n"
-"    \treserved word, shell function, shell builtin, disk file, or not\n"
-"    \tfound, respectively\n"
-"    \n"
-"    Arguments:\n"
-"      NAME\tCommand name to be interpreted.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if all of the NAMEs are found; fails if any are not "
-"found."
-msgstr ""
-
-#: builtins.c:1399
-msgid ""
-"Modify shell resource limits.\n"
-"    \n"
-"    Provides control over the resources available to the shell and "
-"processes\n"
-"    it creates, on systems that allow such control.\n"
-"    \n"
-"    Options:\n"
-"      -S\tuse the `soft' resource limit\n"
-"      -H\tuse the `hard' resource limit\n"
-"      -a\tall current limits are reported\n"
-"      -b\tthe socket buffer size\n"
-"      -c\tthe maximum size of core files created\n"
-"      -d\tthe maximum size of a process's data segment\n"
-"      -e\tthe maximum scheduling priority (`nice')\n"
-"      -f\tthe maximum size of files written by the shell and its children\n"
-"      -i\tthe maximum number of pending signals\n"
-"      -l\tthe maximum size a process may lock into memory\n"
-"      -m\tthe maximum resident set size\n"
-"      -n\tthe maximum number of open file descriptors\n"
-"      -p\tthe pipe buffer size\n"
-"      -q\tthe maximum number of bytes in POSIX message queues\n"
-"      -r\tthe maximum real-time scheduling priority\n"
-"      -s\tthe maximum stack size\n"
-"      -t\tthe maximum amount of cpu time in seconds\n"
-"      -u\tthe maximum number of user processes\n"
-"      -v\tthe size of virtual memory\n"
-"      -x\tthe maximum number of file locks\n"
-"    \n"
-"    If LIMIT is given, it is the new value of the specified resource; the\n"
-"    special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-"    current soft limit, the current hard limit, and no limit, respectively.\n"
-"    Otherwise, the current value of the specified resource is printed.  If\n"
-"    no option is given, then -f is assumed.\n"
-"    \n"
-"    Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-"    -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-"    number of processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1444
-msgid ""
-"Display or set file mode mask.\n"
-"    \n"
-"    Sets the user file-creation mask to MODE.  If MODE is omitted, prints\n"
-"    the current value of the mask.\n"
-"    \n"
-"    If MODE begins with a digit, it is interpreted as an octal number;\n"
-"    otherwise it is a symbolic mode string like that accepted by chmod(1).\n"
-"    \n"
-"    Options:\n"
-"      -p\tif MODE is omitted, output in a form that may be reused as input\n"
-"      -S\tmakes the output symbolic; otherwise an octal number is output\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless MODE is invalid or an invalid option is given."
-msgstr ""
-
-#: builtins.c:1464
-msgid ""
-"Wait for job completion and return exit status.\n"
-"    \n"
-"    Waits for the process identified by ID, which may be a process ID or a\n"
-"    job specification, and reports its termination status.  If ID is not\n"
-"    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
-"    in the job's pipeline.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-"    given."
-msgstr ""
-
-#: builtins.c:1482
-msgid ""
-"Wait for process completion and return exit status.\n"
-"    \n"
-"    Waits for the specified process and reports its termination status.  If\n"
-"    PID is not given, all currently active child processes are waited for,\n"
-"    and the return code is zero.  PID must be a process ID.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-"    given."
-msgstr ""
-
-#: builtins.c:1497
-msgid ""
-"Execute commands for each member in a list.\n"
-"    \n"
-"    The `for' loop executes a sequence of commands for each member in a\n"
-"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
-"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
-"    the COMMANDS are executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1511
-msgid ""
-"Arithmetic for loop.\n"
-"    \n"
-"    Equivalent to\n"
-"    \t(( EXP1 ))\n"
-"    \twhile (( EXP2 )); do\n"
-"    \t\tCOMMANDS\n"
-"    \t\t(( EXP3 ))\n"
-"    \tdone\n"
-"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
-"    omitted, it behaves as if it evaluates to 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1529
-msgid ""
-"Select words from a list and execute commands.\n"
-"    \n"
-"    The WORDS are expanded, generating a list of words.  The\n"
-"    set of expanded words is printed on the standard error, each\n"
-"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
-"    is assumed.  The PS3 prompt is then displayed and a line read\n"
-"    from the standard input.  If the line consists of the number\n"
-"    corresponding to one of the displayed words, then NAME is set\n"
-"    to that word.  If the line is empty, WORDS and the prompt are\n"
-"    redisplayed.  If EOF is read, the command completes.  Any other\n"
-"    value read causes NAME to be set to null.  The line read is saved\n"
-"    in the variable REPLY.  COMMANDS are executed after each selection\n"
-"    until a break command is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1550
-msgid ""
-"Report time consumed by pipeline's execution.\n"
-"    \n"
-"    Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-"    and system CPU time spent executing PIPELINE when it terminates.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint the timing summary in the portable Posix format\n"
-"    \n"
-"    The value of the TIMEFORMAT variable is used as the output format.\n"
-"    \n"
-"    Exit Status:\n"
-"    The return status is the return status of PIPELINE."
-msgstr ""
-
-#: builtins.c:1567
-msgid ""
-"Execute commands based on pattern matching.\n"
-"    \n"
-"    Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
-"    `|' is used to separate multiple patterns.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1579
-msgid ""
-"Execute commands based on conditional.\n"
-"    \n"
-"    The `if COMMANDS' list is executed.  If its exit status is zero, then "
-"the\n"
-"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
-"is\n"
-"    executed in turn, and if its exit status is zero, the corresponding\n"
-"    `then COMMANDS' list is executed and the if command completes.  "
-"Otherwise,\n"
-"    the `else COMMANDS' list is executed, if present.  The exit status of "
-"the\n"
-"    entire construct is the exit status of the last command executed, or "
-"zero\n"
-"    if no condition tested true.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1596
-msgid ""
-"Execute commands as long as a test succeeds.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `while' COMMANDS has an exit status of zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1608
-msgid ""
-"Execute commands as long as a test does not succeed.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `until' COMMANDS has an exit status which is not zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1620
-msgid ""
-"Create a coprocess named NAME.\n"
-"    \n"
-"    Execute COMMAND asynchronously, with the standard output and standard\n"
-"    input of the command connected via a pipe to file descriptors assigned\n"
-"    to indices 0 and 1 of an array variable NAME in the executing shell.\n"
-"    The default NAME is \"COPROC\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of COMMAND."
-msgstr ""
-
-#: builtins.c:1634
-msgid ""
-"Define shell function.\n"
-"    \n"
-"    Create a shell function named NAME.  When invoked as a simple command,\n"
-"    NAME runs COMMANDs in the calling shell's context.  When NAME is "
-"invoked,\n"
-"    the arguments are passed to the function as $1...$n, and the function's\n"
-"    name is in $FUNCNAME.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is readonly."
-msgstr ""
-
-#: builtins.c:1648
-msgid ""
-"Group commands as a unit.\n"
-"    \n"
-"    Run a set of commands in a group.  This is one way to redirect an\n"
-"    entire set of commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1660
-msgid ""
-"Resume job in foreground.\n"
-"    \n"
-"    Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
-"    stopped or background job.  JOB_SPEC can specify either a job name\n"
-"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
-"    the background, as if the job specification had been supplied as an\n"
-"    argument to `bg'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the resumed job."
-msgstr ""
-
-#: builtins.c:1675
-msgid ""
-"Evaluate arithmetic expression.\n"
-"    \n"
-"    The EXPRESSION is evaluated according to the rules for arithmetic\n"
-"    evaluation.  Equivalent to \"let EXPRESSION\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-msgstr ""
-
-#: builtins.c:1687
-msgid ""
-"Execute conditional command.\n"
-"    \n"
-"    Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-"    expression EXPRESSION.  Expressions are composed of the same primaries "
-"used\n"
-"    by the `test' builtin, and may be combined using the following "
-"operators:\n"
-"    \n"
-"      ( EXPRESSION )\tReturns the value of EXPRESSION\n"
-"      ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
-"      EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-"      EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-"    \n"
-"    When the `==' and `!=' operators are used, the string to the right of\n"
-"    the operator is used as a pattern and pattern matching is performed.\n"
-"    When the `=~' operator is used, the string to the right of the operator\n"
-"    is matched as a regular expression.\n"
-"    \n"
-"    The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-"    determine the expression's value.\n"
-"    \n"
-"    Exit Status:\n"
-"    0 or 1 depending on value of EXPRESSION."
-msgstr ""
-
-#: builtins.c:1713
-msgid ""
-"Common shell variable names and usage.\n"
-"    \n"
-"    BASH_VERSION\tVersion information for this Bash.\n"
-"    CDPATH\tA colon-separated list of directories to search\n"
-"    \t\tfor directories given as arguments to `cd'.\n"
-"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-"    \t\tbe ignored by pathname expansion.\n"
-"    HISTFILE\tThe name of the file where your command history is stored.\n"
-"    HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
-"    HISTSIZE\tThe maximum number of history lines that a running\n"
-"    \t\tshell can access.\n"
-"    HOME\tThe complete pathname to your login directory.\n"
-"    HOSTNAME\tThe name of the current host.\n"
-"    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
-"    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
-"    \t\tcharacter as the sole input.  If set, then the value\n"
-"    \t\tof it is the number of EOF characters that can be seen\n"
-"    \t\tin a row on an empty line before the shell will exit\n"
-"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
-"    MACHTYPE\tA string describing the current system Bash is running on.\n"
-"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-"    \t\tfor new mail.\n"
-"    OSTYPE\tThe version of Unix this version of Bash is running on.\n"
-"    PATH\tA colon-separated list of directories to search when\n"
-"    \t\tlooking for commands.\n"
-"    PROMPT_COMMAND\tA command to be executed before the printing of each\n"
-"    \t\tprimary prompt.\n"
-"    PS1\t\tThe primary prompt string.\n"
-"    PS2\t\tThe secondary prompt string.\n"
-"    PWD\t\tThe full pathname of the current directory.\n"
-"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-"    TERM\tThe name of the current terminal type.\n"
-"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-"    \t\t`time' reserved word.\n"
-"    auto_resume\tNon-null means a command word appearing on a line by\n"
-"    \t\titself is first looked for in the list of currently\n"
-"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
-"    \t\tA value of `exact' means that the command word must\n"
-"    \t\texactly match a command in the list of stopped jobs.  A\n"
-"    \t\tvalue of `substring' means that the command word must\n"
-"    \t\tmatch a substring of the job.  Any other value means that\n"
-"    \t\tthe command must be a prefix of a stopped job.\n"
-"    histchars\tCharacters controlling history expansion and quick\n"
-"    \t\tsubstitution.  The first character is the history\n"
-"    \t\tsubstitution character, usually `!'.  The second is\n"
-"    \t\tthe `quick substitution' character, usually `^'.  The\n"
-"    \t\tthird is the `history comment' character, usually `#'.\n"
-"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-"    \t\tcommands should be saved on the history list.\n"
-msgstr ""
-
-#: builtins.c:1770
-msgid ""
-"Add directories to stack.\n"
-"    \n"
-"    Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-
-#: builtins.c:1804
-msgid ""
-"Remove directories from stack.\n"
-"    \n"
-"    Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-
-#: builtins.c:1834
-msgid ""
-"Display directory stack.\n"
-"    \n"
-"    Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1863
-msgid ""
-"Set and unset shell options.\n"
-"    \n"
-"    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
-"    \n"
-"    Options:\n"
-"      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
-"      -p\tprint each shell option with an indication of its status\n"
-"      -q\tsuppress output\n"
-"      -s\tenable (set) each OPTNAME\n"
-"      -u\tdisable (unset) each OPTNAME\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
-"    given or OPTNAME is disabled."
-msgstr ""
-
-#: builtins.c:1884
-msgid ""
-"Formats and prints ARGUMENTS under control of the FORMAT.\n"
-"    \n"
-"    Options:\n"
-"      -v var\tassign the output to shell variable VAR rather than\n"
-"    \t\tdisplay it on the standard output\n"
-"    \n"
-"    FORMAT is a character string which contains three types of objects: "
-"plain\n"
-"    characters, which are simply copied to standard output; character "
-"escape\n"
-"    sequences, which are converted and copied to the standard output; and\n"
-"    format specifications, each of which causes printing of the next "
-"successive\n"
-"    argument.\n"
-"    \n"
-"    In addition to the standard format specifications described in printf"
-"(1)\n"
-"    and printf(3), printf interprets:\n"
-"    \n"
-"      %b\texpand backslash escape sequences in the corresponding argument\n"
-"      %q\tquote the argument in a way that can be reused as shell input\n"
-"      %(fmt)T output the date-time string resulting from using FMT as a "
-"format\n"
-"            string for strftime(3)\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a write or "
-"assignment\n"
-"    error occurs."
-msgstr ""
-
-#: builtins.c:1913
-msgid ""
-"Specify how arguments are to be completed by Readline.\n"
-"    \n"
-"    For each NAME, specify how arguments are to be completed.  If no "
-"options\n"
-"    are supplied, existing completion specifications are printed in a way "
-"that\n"
-"    allows them to be reused as input.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint existing completion specifications in a reusable format\n"
-"      -r\tremove a completion specification for each NAME, or, if no\n"
-"    \tNAMEs are supplied, all completion specifications\n"
-"      -D\tapply the completions and actions as the default for commands\n"
-"    \twithout any specific completion defined\n"
-"      -E\tapply the completions and actions to \"empty\" commands --\n"
-"    \tcompletion attempted on a blank line\n"
-"    \n"
-"    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1941
-msgid ""
-"Display possible completions depending on the options.\n"
-"    \n"
-"    Intended to be used from within a shell function generating possible\n"
-"    completions.  If the optional WORD argument is supplied, matches "
-"against\n"
-"    WORD are generated.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1956
-msgid ""
-"Modify or display completion options.\n"
-"    \n"
-"    Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-"    the completion currently being executed.  If no OPTIONs are given, "
-"print\n"
-"    the completion options for each NAME or the current completion "
-"specification.\n"
-"    \n"
-"    Options:\n"
-"    \t-o option\tSet completion option OPTION for each NAME\n"
-"    \t-D\t\tChange options for the \"default\" command completion\n"
-"    \t-E\t\tChange options for the \"empty\" command completion\n"
-"    \n"
-"    Using `+o' instead of `-o' turns off the specified option.\n"
-"    \n"
-"    Arguments:\n"
-"    \n"
-"    Each NAME refers to a command for which a completion specification must\n"
-"    have previously been defined using the `complete' builtin.  If no NAMEs\n"
-"    are supplied, compopt must be called by a function currently generating\n"
-"    completions, and the options for that currently-executing completion\n"
-"    generator are modified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or NAME does not\n"
-"    have a completion specification defined."
-msgstr ""
-
-#: builtins.c:1986
-msgid ""
-"Read lines from the standard input into an indexed array variable.\n"
-"    \n"
-"    Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-"    from file descriptor FD if the -u option is supplied.  The variable "
-"MAPFILE\n"
-"    is the default ARRAY.\n"
-"    \n"
-"    Options:\n"
-"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are "
-"copied.\n"
-"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default "
-"index is 0.\n"
-"      -s count \tDiscard the first COUNT lines read.\n"
-"      -t\t\tRemove a trailing newline from each line read.\n"
-"      -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
-"      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-"      -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
-"    \n"
-"    Arguments:\n"
-"      ARRAY\t\tArray variable name to use for file data.\n"
-"    \n"
-"    If -C is supplied without -c, the default quantum is 5000.  When\n"
-"    CALLBACK is evaluated, it is supplied the index of the next array\n"
-"    element to be assigned and the line to be assigned to that element\n"
-"    as additional arguments.\n"
-"    \n"
-"    If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
-"    assigning to it.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
-"    not an indexed array."
-msgstr ""
-
-#: builtins.c:2020
-msgid ""
-"Read lines from a file into an array variable.\n"
-"    \n"
-"    A synonym for `mapfile'."
-msgstr ""
diff --git a/po/bash-4.3.pot b/po/bash-4.3.pot
deleted file mode 100644 (file)
index 1ef1208..0000000
+++ /dev/null
@@ -1,4041 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-02-11 11:19-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: arrayfunc.c:51
-msgid "bad array subscript"
-msgstr ""
-
-#: arrayfunc.c:356 builtins/declare.def:566
-#, c-format
-msgid "%s: cannot convert indexed to associative array"
-msgstr ""
-
-#: arrayfunc.c:539
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr ""
-
-#: arrayfunc.c:541
-#, c-format
-msgid "%s: cannot assign to non-numeric index"
-msgstr ""
-
-#: arrayfunc.c:586
-#, c-format
-msgid "%s: %s: must use subscript when assigning associative array"
-msgstr ""
-
-#: bashhist.c:388
-#, c-format
-msgid "%s: cannot create: %s"
-msgstr ""
-
-#: bashline.c:3982
-msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-
-#: bashline.c:4069
-#, c-format
-msgid "%s: first non-whitespace character is not `\"'"
-msgstr ""
-
-#: bashline.c:4098
-#, c-format
-msgid "no closing `%c' in %s"
-msgstr ""
-
-#: bashline.c:4132
-#, c-format
-msgid "%s: missing colon separator"
-msgstr ""
-
-#: braces.c:321
-#, c-format
-msgid "brace expansion: cannot allocate memory for %s"
-msgstr ""
-
-#: braces.c:413
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr ""
-
-#: braces.c:452
-#, c-format
-msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr ""
-
-#: builtins/alias.def:132
-#, c-format
-msgid "`%s': invalid alias name"
-msgstr ""
-
-#: builtins/bind.def:123 builtins/bind.def:126
-msgid "line editing not enabled"
-msgstr ""
-
-#: builtins/bind.def:212
-#, c-format
-msgid "`%s': invalid keymap name"
-msgstr ""
-
-#: builtins/bind.def:251
-#, c-format
-msgid "%s: cannot read: %s"
-msgstr ""
-
-#: builtins/bind.def:266
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr ""
-
-#: builtins/bind.def:304 builtins/bind.def:334
-#, c-format
-msgid "`%s': unknown function name"
-msgstr ""
-
-#: builtins/bind.def:312
-#, c-format
-msgid "%s is not bound to any keys.\n"
-msgstr ""
-
-#: builtins/bind.def:316
-#, c-format
-msgid "%s can be invoked via "
-msgstr ""
-
-#: builtins/break.def:77 builtins/break.def:117
-msgid "loop count"
-msgstr ""
-
-#: builtins/break.def:137
-msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr ""
-
-#: builtins/caller.def:134
-msgid ""
-"Returns the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns "
-msgstr ""
-
-#: builtins/cd.def:319
-msgid "HOME not set"
-msgstr ""
-
-#: builtins/cd.def:327 builtins/common.c:166 test.c:876
-msgid "too many arguments"
-msgstr ""
-
-#: builtins/cd.def:338
-msgid "OLDPWD not set"
-msgstr ""
-
-#: builtins/common.c:101
-#, c-format
-msgid "line %d: "
-msgstr ""
-
-#: builtins/common.c:139 error.c:265
-#, c-format
-msgid "warning: "
-msgstr ""
-
-#: builtins/common.c:153
-#, c-format
-msgid "%s: usage: "
-msgstr ""
-
-#: builtins/common.c:191 shell.c:506 shell.c:788
-#, c-format
-msgid "%s: option requires an argument"
-msgstr ""
-
-#: builtins/common.c:198
-#, c-format
-msgid "%s: numeric argument required"
-msgstr ""
-
-#: builtins/common.c:205
-#, c-format
-msgid "%s: not found"
-msgstr ""
-
-#: builtins/common.c:214 shell.c:801
-#, c-format
-msgid "%s: invalid option"
-msgstr ""
-
-#: builtins/common.c:221
-#, c-format
-msgid "%s: invalid option name"
-msgstr ""
-
-#: builtins/common.c:228 general.c:235 general.c:240
-#, c-format
-msgid "`%s': not a valid identifier"
-msgstr ""
-
-#: builtins/common.c:238
-msgid "invalid octal number"
-msgstr ""
-
-#: builtins/common.c:240
-msgid "invalid hex number"
-msgstr ""
-
-#: builtins/common.c:242 expr.c:1470
-msgid "invalid number"
-msgstr ""
-
-#: builtins/common.c:250
-#, c-format
-msgid "%s: invalid signal specification"
-msgstr ""
-
-#: builtins/common.c:257
-#, c-format
-msgid "`%s': not a pid or valid job spec"
-msgstr ""
-
-#: builtins/common.c:264 error.c:488
-#, c-format
-msgid "%s: readonly variable"
-msgstr ""
-
-#: builtins/common.c:272
-#, c-format
-msgid "%s: %s out of range"
-msgstr ""
-
-#: builtins/common.c:272 builtins/common.c:274
-msgid "argument"
-msgstr ""
-
-#: builtins/common.c:274
-#, c-format
-msgid "%s out of range"
-msgstr ""
-
-#: builtins/common.c:282
-#, c-format
-msgid "%s: no such job"
-msgstr ""
-
-#: builtins/common.c:290
-#, c-format
-msgid "%s: no job control"
-msgstr ""
-
-#: builtins/common.c:292
-msgid "no job control"
-msgstr ""
-
-#: builtins/common.c:302
-#, c-format
-msgid "%s: restricted"
-msgstr ""
-
-#: builtins/common.c:304
-msgid "restricted"
-msgstr ""
-
-#: builtins/common.c:312
-#, c-format
-msgid "%s: not a shell builtin"
-msgstr ""
-
-#: builtins/common.c:321
-#, c-format
-msgid "write error: %s"
-msgstr ""
-
-#: builtins/common.c:329
-#, c-format
-msgid "error setting terminal attributes: %s"
-msgstr ""
-
-#: builtins/common.c:331
-#, c-format
-msgid "error getting terminal attributes: %s"
-msgstr ""
-
-#: builtins/common.c:563
-#, c-format
-msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr ""
-
-#: builtins/common.c:629 builtins/common.c:631
-#, c-format
-msgid "%s: ambiguous job spec"
-msgstr ""
-
-#: builtins/complete.def:277
-#, c-format
-msgid "%s: invalid action name"
-msgstr ""
-
-#: builtins/complete.def:450 builtins/complete.def:645
-#: builtins/complete.def:855
-#, c-format
-msgid "%s: no completion specification"
-msgstr ""
-
-#: builtins/complete.def:697
-msgid "warning: -F option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:699
-msgid "warning: -C option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:828
-msgid "not currently executing completion function"
-msgstr ""
-
-#: builtins/declare.def:126
-msgid "can only be used in a function"
-msgstr ""
-
-#: builtins/declare.def:315 builtins/declare.def:509
-#, c-format
-msgid "%s: reference variable cannot be an array"
-msgstr ""
-
-#: builtins/declare.def:324
-#, c-format
-msgid "%s: nameref variable self references not allowed"
-msgstr ""
-
-#: builtins/declare.def:398
-msgid "cannot use `-f' to make functions"
-msgstr ""
-
-#: builtins/declare.def:410 execute_cmd.c:5361
-#, c-format
-msgid "%s: readonly function"
-msgstr ""
-
-#: builtins/declare.def:553
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr ""
-
-#: builtins/declare.def:560 builtins/read.def:733
-#, c-format
-msgid "%s: cannot convert associative to indexed array"
-msgstr ""
-
-#: builtins/enable.def:137 builtins/enable.def:145
-msgid "dynamic loading not available"
-msgstr ""
-
-#: builtins/enable.def:312
-#, c-format
-msgid "cannot open shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:335
-#, c-format
-msgid "cannot find %s in shared object %s: %s"
-msgstr ""
-
-#: builtins/enable.def:459
-#, c-format
-msgid "%s: not dynamically loaded"
-msgstr ""
-
-#: builtins/enable.def:474
-#, c-format
-msgid "%s: cannot delete: %s"
-msgstr ""
-
-#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208
-#: shell.c:1481
-#, c-format
-msgid "%s: is a directory"
-msgstr ""
-
-#: builtins/evalfile.c:146
-#, c-format
-msgid "%s: not a regular file"
-msgstr ""
-
-#: builtins/evalfile.c:155
-#, c-format
-msgid "%s: file is too large"
-msgstr ""
-
-#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491
-#, c-format
-msgid "%s: cannot execute binary file"
-msgstr ""
-
-#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228
-#, c-format
-msgid "%s: cannot execute: %s"
-msgstr ""
-
-#: builtins/exit.def:65
-#, c-format
-msgid "logout\n"
-msgstr ""
-
-#: builtins/exit.def:88
-msgid "not login shell: use `exit'"
-msgstr ""
-
-#: builtins/exit.def:120
-#, c-format
-msgid "There are stopped jobs.\n"
-msgstr ""
-
-#: builtins/exit.def:122
-#, c-format
-msgid "There are running jobs.\n"
-msgstr ""
-
-#: builtins/fc.def:262
-msgid "no command found"
-msgstr ""
-
-#: builtins/fc.def:320 builtins/fc.def:369
-msgid "history specification"
-msgstr ""
-
-#: builtins/fc.def:390
-#, c-format
-msgid "%s: cannot open temp file: %s"
-msgstr ""
-
-#: builtins/fg_bg.def:149 builtins/jobs.def:282
-msgid "current"
-msgstr ""
-
-#: builtins/fg_bg.def:158
-#, c-format
-msgid "job %d started without job control"
-msgstr ""
-
-#: builtins/getopt.c:110
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr ""
-
-#: builtins/getopt.c:111
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr ""
-
-#: builtins/hash.def:92
-msgid "hashing disabled"
-msgstr ""
-
-#: builtins/hash.def:138
-#, c-format
-msgid "%s: hash table empty\n"
-msgstr ""
-
-#: builtins/hash.def:245
-#, c-format
-msgid "hits\tcommand\n"
-msgstr ""
-
-#: builtins/help.def:130
-#, c-format
-msgid "Shell commands matching keyword `"
-msgid_plural "Shell commands matching keywords `"
-msgstr[0] ""
-msgstr[1] ""
-
-#: builtins/help.def:182
-#, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-
-#: builtins/help.def:199
-#, c-format
-msgid "%s: cannot open: %s"
-msgstr ""
-
-#: builtins/help.def:485
-#, c-format
-msgid ""
-"These shell commands are defined internally.  Type `help' to see this list.\n"
-"Type `help name' to find out more about the function `name'.\n"
-"Use `info bash' to find out more about the shell in general.\n"
-"Use `man -k' or `info' to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-msgstr ""
-
-#: builtins/history.def:154
-msgid "cannot use more than one of -anrw"
-msgstr ""
-
-#: builtins/history.def:186
-msgid "history position"
-msgstr ""
-
-#: builtins/history.def:366
-#, c-format
-msgid "%s: history expansion failed"
-msgstr ""
-
-#: builtins/inlib.def:71
-#, c-format
-msgid "%s: inlib failed"
-msgstr ""
-
-#: builtins/jobs.def:109
-msgid "no other options allowed with `-x'"
-msgstr ""
-
-#: builtins/kill.def:200
-#, c-format
-msgid "%s: arguments must be process or job IDs"
-msgstr ""
-
-#: builtins/kill.def:263
-msgid "Unknown error"
-msgstr ""
-
-#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598
-msgid "expression expected"
-msgstr ""
-
-#: builtins/mapfile.def:172
-#, c-format
-msgid "%s: not an indexed array"
-msgstr ""
-
-#: builtins/mapfile.def:259 builtins/read.def:302
-#, c-format
-msgid "%s: invalid file descriptor specification"
-msgstr ""
-
-#: builtins/mapfile.def:267 builtins/read.def:309
-#, c-format
-msgid "%d: invalid file descriptor: %s"
-msgstr ""
-
-#: builtins/mapfile.def:276 builtins/mapfile.def:314
-#, c-format
-msgid "%s: invalid line count"
-msgstr ""
-
-#: builtins/mapfile.def:287
-#, c-format
-msgid "%s: invalid array origin"
-msgstr ""
-
-#: builtins/mapfile.def:304
-#, c-format
-msgid "%s: invalid callback quantum"
-msgstr ""
-
-#: builtins/mapfile.def:336
-msgid "empty array variable name"
-msgstr ""
-
-#: builtins/mapfile.def:357
-msgid "array variable support required"
-msgstr ""
-
-#: builtins/printf.def:402
-#, c-format
-msgid "`%s': missing format character"
-msgstr ""
-
-#: builtins/printf.def:456
-#, c-format
-msgid "`%c': invalid time format specification"
-msgstr ""
-
-#: builtins/printf.def:658
-#, c-format
-msgid "`%c': invalid format character"
-msgstr ""
-
-#: builtins/printf.def:684
-#, c-format
-msgid "warning: %s: %s"
-msgstr ""
-
-#: builtins/printf.def:768
-#, c-format
-msgid "format parsing problem: %s"
-msgstr ""
-
-#: builtins/printf.def:865
-msgid "missing hex digit for \\x"
-msgstr ""
-
-#: builtins/printf.def:880
-#, c-format
-msgid "missing unicode digit for \\%c"
-msgstr ""
-
-#: builtins/pushd.def:195
-msgid "no other directory"
-msgstr ""
-
-#: builtins/pushd.def:354
-#, c-format
-msgid "%s: invalid argument"
-msgstr ""
-
-#: builtins/pushd.def:468
-msgid "<no current directory>"
-msgstr ""
-
-#: builtins/pushd.def:512
-msgid "directory stack empty"
-msgstr ""
-
-#: builtins/pushd.def:514
-msgid "directory stack index"
-msgstr ""
-
-#: builtins/pushd.def:689
-msgid ""
-"Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"\tdirs when invoked without options, starting with zero."
-msgstr ""
-
-#: builtins/pushd.def:711
-msgid ""
-"Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-
-#: builtins/pushd.def:736
-msgid ""
-"Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-
-#: builtins/read.def:275
-#, c-format
-msgid "%s: invalid timeout specification"
-msgstr ""
-
-#: builtins/read.def:678
-#, c-format
-msgid "read error: %d: %s"
-msgstr ""
-
-#: builtins/return.def:75
-msgid "can only `return' from a function or sourced script"
-msgstr ""
-
-#: builtins/set.def:782
-msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-
-#: builtins/set.def:826
-#, c-format
-msgid "%s: cannot unset"
-msgstr ""
-
-#: builtins/set.def:843
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr ""
-
-#: builtins/set.def:854
-#, c-format
-msgid "%s: not an array variable"
-msgstr ""
-
-#: builtins/setattr.def:187
-#, c-format
-msgid "%s: not a function"
-msgstr ""
-
-#: builtins/shift.def:71 builtins/shift.def:77
-msgid "shift count"
-msgstr ""
-
-#: builtins/shopt.def:279
-msgid "cannot set and unset shell options simultaneously"
-msgstr ""
-
-#: builtins/shopt.def:346
-#, c-format
-msgid "%s: invalid shell option name"
-msgstr ""
-
-#: builtins/source.def:130
-msgid "filename argument required"
-msgstr ""
-
-#: builtins/source.def:155
-#, c-format
-msgid "%s: file not found"
-msgstr ""
-
-#: builtins/suspend.def:101
-msgid "cannot suspend"
-msgstr ""
-
-#: builtins/suspend.def:111
-msgid "cannot suspend a login shell"
-msgstr ""
-
-#: builtins/type.def:234
-#, c-format
-msgid "%s is aliased to `%s'\n"
-msgstr ""
-
-#: builtins/type.def:255
-#, c-format
-msgid "%s is a shell keyword\n"
-msgstr ""
-
-#: builtins/type.def:274
-#, c-format
-msgid "%s is a function\n"
-msgstr ""
-
-#: builtins/type.def:296
-#, c-format
-msgid "%s is a shell builtin\n"
-msgstr ""
-
-#: builtins/type.def:317 builtins/type.def:393
-#, c-format
-msgid "%s is %s\n"
-msgstr ""
-
-#: builtins/type.def:337
-#, c-format
-msgid "%s is hashed (%s)\n"
-msgstr ""
-
-#: builtins/ulimit.def:383
-#, c-format
-msgid "%s: invalid limit argument"
-msgstr ""
-
-#: builtins/ulimit.def:409
-#, c-format
-msgid "`%c': bad command"
-msgstr ""
-
-#: builtins/ulimit.def:438
-#, c-format
-msgid "%s: cannot get limit: %s"
-msgstr ""
-
-#: builtins/ulimit.def:464
-msgid "limit"
-msgstr ""
-
-#: builtins/ulimit.def:476 builtins/ulimit.def:776
-#, c-format
-msgid "%s: cannot modify limit: %s"
-msgstr ""
-
-#: builtins/umask.def:114
-msgid "octal number"
-msgstr ""
-
-#: builtins/umask.def:227
-#, c-format
-msgid "`%c': invalid symbolic mode operator"
-msgstr ""
-
-#: builtins/umask.def:282
-#, c-format
-msgid "`%c': invalid symbolic mode character"
-msgstr ""
-
-#: error.c:90 error.c:325 error.c:327 error.c:329
-msgid " line "
-msgstr ""
-
-#: error.c:165
-#, c-format
-msgid "last command: %s\n"
-msgstr ""
-
-#: error.c:173
-#, c-format
-msgid "Aborting..."
-msgstr ""
-
-#: error.c:440
-msgid "unknown command error"
-msgstr ""
-
-#: error.c:441
-msgid "bad command type"
-msgstr ""
-
-#: error.c:442
-msgid "bad connector"
-msgstr ""
-
-#: error.c:443
-msgid "bad jump"
-msgstr ""
-
-#: error.c:481
-#, c-format
-msgid "%s: unbound variable"
-msgstr ""
-
-#: eval.c:189
-#, c-format
-msgid "\atimed out waiting for input: auto-logout\n"
-msgstr ""
-
-#: execute_cmd.c:512
-#, c-format
-msgid "cannot redirect standard input from /dev/null: %s"
-msgstr ""
-
-#: execute_cmd.c:1233
-#, c-format
-msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr ""
-
-#: execute_cmd.c:2287
-msgid "pipe error"
-msgstr ""
-
-#: execute_cmd.c:4386
-#, c-format
-msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr ""
-
-#: execute_cmd.c:4884
-#, c-format
-msgid "%s: restricted: cannot specify `/' in command names"
-msgstr ""
-
-#: execute_cmd.c:4973
-#, c-format
-msgid "%s: command not found"
-msgstr ""
-
-#: execute_cmd.c:5206
-#, c-format
-msgid "%s: %s"
-msgstr ""
-
-#: execute_cmd.c:5243
-#, c-format
-msgid "%s: %s: bad interpreter"
-msgstr ""
-
-#: execute_cmd.c:5280
-#, c-format
-msgid "%s: cannot execute binary file: %s"
-msgstr ""
-
-#: execute_cmd.c:5352
-#, c-format
-msgid "`%s': is a special builtin"
-msgstr ""
-
-#: execute_cmd.c:5404
-#, c-format
-msgid "cannot duplicate fd %d to fd %d"
-msgstr ""
-
-#: expr.c:259
-msgid "expression recursion level exceeded"
-msgstr ""
-
-#: expr.c:283
-msgid "recursion stack underflow"
-msgstr ""
-
-#: expr.c:431
-msgid "syntax error in expression"
-msgstr ""
-
-#: expr.c:475
-msgid "attempted assignment to non-variable"
-msgstr ""
-
-#: expr.c:495 expr.c:858
-msgid "division by 0"
-msgstr ""
-
-#: expr.c:542
-msgid "bug: bad expassign token"
-msgstr ""
-
-#: expr.c:595
-msgid "`:' expected for conditional expression"
-msgstr ""
-
-#: expr.c:919
-msgid "exponent less than 0"
-msgstr ""
-
-#: expr.c:976
-msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
-
-#: expr.c:1002
-msgid "missing `)'"
-msgstr ""
-
-#: expr.c:1053 expr.c:1390
-msgid "syntax error: operand expected"
-msgstr ""
-
-#: expr.c:1392
-msgid "syntax error: invalid arithmetic operator"
-msgstr ""
-
-#: expr.c:1416
-#, c-format
-msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr ""
-
-#: expr.c:1474
-msgid "invalid arithmetic base"
-msgstr ""
-
-#: expr.c:1494
-msgid "value too great for base"
-msgstr ""
-
-#: expr.c:1543
-#, c-format
-msgid "%s: expression error\n"
-msgstr ""
-
-#: general.c:62
-msgid "getcwd: cannot access parent directories"
-msgstr ""
-
-#: input.c:102 subst.c:5168
-#, c-format
-msgid "cannot reset nodelay mode for fd %d"
-msgstr ""
-
-#: input.c:271
-#, c-format
-msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr ""
-
-#: input.c:279
-#, c-format
-msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr ""
-
-#: jobs.c:471
-msgid "start_pipeline: pgrp pipe"
-msgstr ""
-
-#: jobs.c:893
-#, c-format
-msgid "forked pid %d appears in running job %d"
-msgstr ""
-
-#: jobs.c:1012
-#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr ""
-
-#: jobs.c:1117
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr ""
-
-#: jobs.c:1120
-#, c-format
-msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr ""
-
-#: jobs.c:1435
-#, c-format
-msgid "describe_pid: %ld: no such pid"
-msgstr ""
-
-#: jobs.c:1450
-#, c-format
-msgid "Signal %d"
-msgstr ""
-
-#: jobs.c:1464 jobs.c:1489
-msgid "Done"
-msgstr ""
-
-#: jobs.c:1469 siglist.c:123
-msgid "Stopped"
-msgstr ""
-
-#: jobs.c:1473
-#, c-format
-msgid "Stopped(%s)"
-msgstr ""
-
-#: jobs.c:1477
-msgid "Running"
-msgstr ""
-
-#: jobs.c:1491
-#, c-format
-msgid "Done(%d)"
-msgstr ""
-
-#: jobs.c:1493
-#, c-format
-msgid "Exit %d"
-msgstr ""
-
-#: jobs.c:1496
-msgid "Unknown status"
-msgstr ""
-
-#: jobs.c:1583
-#, c-format
-msgid "(core dumped) "
-msgstr ""
-
-#: jobs.c:1602
-#, c-format
-msgid "  (wd: %s)"
-msgstr ""
-
-#: jobs.c:1819
-#, c-format
-msgid "child setpgid (%ld to %ld)"
-msgstr ""
-
-#: jobs.c:2138 nojobs.c:605
-#, c-format
-msgid "wait: pid %ld is not a child of this shell"
-msgstr ""
-
-#: jobs.c:2385
-#, c-format
-msgid "wait_for: No record of process %ld"
-msgstr ""
-
-#: jobs.c:2694
-#, c-format
-msgid "wait_for_job: job %d is stopped"
-msgstr ""
-
-#: jobs.c:2986
-#, c-format
-msgid "%s: job has terminated"
-msgstr ""
-
-#: jobs.c:2995
-#, c-format
-msgid "%s: job %d already in background"
-msgstr ""
-
-#: jobs.c:3220
-msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
-
-#: jobs.c:3711
-#, c-format
-msgid "%s: line %d: "
-msgstr ""
-
-#: jobs.c:3725 nojobs.c:843
-#, c-format
-msgid " (core dumped)"
-msgstr ""
-
-#: jobs.c:3737 jobs.c:3750
-#, c-format
-msgid "(wd now: %s)\n"
-msgstr ""
-
-#: jobs.c:3782
-msgid "initialize_job_control: getpgrp failed"
-msgstr ""
-
-#: jobs.c:3843
-msgid "initialize_job_control: line discipline"
-msgstr ""
-
-#: jobs.c:3853
-msgid "initialize_job_control: setpgid"
-msgstr ""
-
-#: jobs.c:3874 jobs.c:3883
-#, c-format
-msgid "cannot set terminal process group (%d)"
-msgstr ""
-
-#: jobs.c:3888
-msgid "no job control in this shell"
-msgstr ""
-
-#: lib/malloc/malloc.c:296
-#, c-format
-msgid "malloc: failed assertion: %s\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:312
-#, c-format
-msgid ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-msgstr ""
-
-#: lib/malloc/malloc.c:313
-msgid "unknown"
-msgstr ""
-
-#: lib/malloc/malloc.c:801
-msgid "malloc: block on free list clobbered"
-msgstr ""
-
-#: lib/malloc/malloc.c:878
-msgid "free: called with already freed block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:881
-msgid "free: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:900
-msgid "free: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:906
-msgid "free: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/malloc.c:1005
-msgid "realloc: called with unallocated block argument"
-msgstr ""
-
-#: lib/malloc/malloc.c:1020
-msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
-
-#: lib/malloc/malloc.c:1026
-msgid "realloc: start and end chunk sizes differ"
-msgstr ""
-
-#: lib/malloc/table.c:194
-#, c-format
-msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
-
-#: lib/malloc/table.c:203
-#, c-format
-msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
-
-#: lib/malloc/table.c:256
-#, c-format
-msgid "register_free: %p already in table as free?\n"
-msgstr ""
-
-#: lib/sh/fmtulong.c:102
-msgid "invalid base"
-msgstr ""
-
-#: lib/sh/netopen.c:168
-#, c-format
-msgid "%s: host unknown"
-msgstr ""
-
-#: lib/sh/netopen.c:175
-#, c-format
-msgid "%s: invalid service"
-msgstr ""
-
-#: lib/sh/netopen.c:306
-#, c-format
-msgid "%s: bad network path specification"
-msgstr ""
-
-#: lib/sh/netopen.c:346
-msgid "network operations not supported"
-msgstr ""
-
-#: locale.c:200
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr ""
-
-#: locale.c:202
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr ""
-
-#: locale.c:259
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s)"
-msgstr ""
-
-#: locale.c:261
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr ""
-
-#: mailcheck.c:439
-msgid "You have mail in $_"
-msgstr ""
-
-#: mailcheck.c:464
-msgid "You have new mail in $_"
-msgstr ""
-
-#: mailcheck.c:480
-#, c-format
-msgid "The mail in %s has been read\n"
-msgstr ""
-
-#: make_cmd.c:323
-msgid "syntax error: arithmetic expression required"
-msgstr ""
-
-#: make_cmd.c:325
-msgid "syntax error: `;' unexpected"
-msgstr ""
-
-#: make_cmd.c:326
-#, c-format
-msgid "syntax error: `((%s))'"
-msgstr ""
-
-#: make_cmd.c:578
-#, c-format
-msgid "make_here_document: bad instruction type %d"
-msgstr ""
-
-#: make_cmd.c:662
-#, c-format
-msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
-
-#: make_cmd.c:759
-#, c-format
-msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
-
-#: parse.y:3278 parse.y:3561
-#, c-format
-msgid "unexpected EOF while looking for matching `%c'"
-msgstr ""
-
-#: parse.y:4170
-msgid "unexpected EOF while looking for `]]'"
-msgstr ""
-
-#: parse.y:4175
-#, c-format
-msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr ""
-
-#: parse.y:4179
-msgid "syntax error in conditional expression"
-msgstr ""
-
-#: parse.y:4257
-#, c-format
-msgid "unexpected token `%s', expected `)'"
-msgstr ""
-
-#: parse.y:4261
-msgid "expected `)'"
-msgstr ""
-
-#: parse.y:4289
-#, c-format
-msgid "unexpected argument `%s' to conditional unary operator"
-msgstr ""
-
-#: parse.y:4293
-msgid "unexpected argument to conditional unary operator"
-msgstr ""
-
-#: parse.y:4339
-#, c-format
-msgid "unexpected token `%s', conditional binary operator expected"
-msgstr ""
-
-#: parse.y:4343
-msgid "conditional binary operator expected"
-msgstr ""
-
-#: parse.y:4365
-#, c-format
-msgid "unexpected argument `%s' to conditional binary operator"
-msgstr ""
-
-#: parse.y:4369
-msgid "unexpected argument to conditional binary operator"
-msgstr ""
-
-#: parse.y:4380
-#, c-format
-msgid "unexpected token `%c' in conditional command"
-msgstr ""
-
-#: parse.y:4383
-#, c-format
-msgid "unexpected token `%s' in conditional command"
-msgstr ""
-
-#: parse.y:4387
-#, c-format
-msgid "unexpected token %d in conditional command"
-msgstr ""
-
-#: parse.y:5737
-#, c-format
-msgid "syntax error near unexpected token `%s'"
-msgstr ""
-
-#: parse.y:5755
-#, c-format
-msgid "syntax error near `%s'"
-msgstr ""
-
-#: parse.y:5765
-msgid "syntax error: unexpected end of file"
-msgstr ""
-
-#: parse.y:5765
-msgid "syntax error"
-msgstr ""
-
-#: parse.y:5827
-#, c-format
-msgid "Use \"%s\" to leave the shell.\n"
-msgstr ""
-
-#: parse.y:5989
-msgid "unexpected EOF while looking for matching `)'"
-msgstr ""
-
-#: pcomplete.c:1094
-#, c-format
-msgid "completion: function `%s' not found"
-msgstr ""
-
-#: pcomplib.c:182
-#, c-format
-msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr ""
-
-#: print_cmd.c:300
-#, c-format
-msgid "print_command: bad connector `%d'"
-msgstr ""
-
-#: print_cmd.c:373
-#, c-format
-msgid "xtrace_set: %d: invalid file descriptor"
-msgstr ""
-
-#: print_cmd.c:378
-msgid "xtrace_set: NULL file pointer"
-msgstr ""
-
-#: print_cmd.c:382
-#, c-format
-msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
-msgstr ""
-
-#: print_cmd.c:1518
-#, c-format
-msgid "cprintf: `%c': invalid format character"
-msgstr ""
-
-#: redir.c:123 redir.c:170
-msgid "file descriptor out of range"
-msgstr ""
-
-#: redir.c:177
-#, c-format
-msgid "%s: ambiguous redirect"
-msgstr ""
-
-#: redir.c:181
-#, c-format
-msgid "%s: cannot overwrite existing file"
-msgstr ""
-
-#: redir.c:186
-#, c-format
-msgid "%s: restricted: cannot redirect output"
-msgstr ""
-
-#: redir.c:191
-#, c-format
-msgid "cannot create temp file for here-document: %s"
-msgstr ""
-
-#: redir.c:195
-#, c-format
-msgid "%s: cannot assign fd to variable"
-msgstr ""
-
-#: redir.c:582
-msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
-
-#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199
-msgid "redirection error: cannot duplicate fd"
-msgstr ""
-
-#: shell.c:339
-msgid "could not find /tmp, please create!"
-msgstr ""
-
-#: shell.c:343
-msgid "/tmp must be a valid directory name"
-msgstr ""
-
-#: shell.c:890
-#, c-format
-msgid "%c%c: invalid option"
-msgstr ""
-
-#: shell.c:1682
-msgid "I have no name!"
-msgstr ""
-
-#: shell.c:1827
-#, c-format
-msgid "GNU bash, version %s-(%s)\n"
-msgstr ""
-
-#: shell.c:1828
-#, c-format
-msgid ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-msgstr ""
-
-#: shell.c:1830
-msgid "GNU long options:\n"
-msgstr ""
-
-#: shell.c:1834
-msgid "Shell options:\n"
-msgstr ""
-
-#: shell.c:1835
-msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
-
-#: shell.c:1850
-#, c-format
-msgid "\t-%s or -o option\n"
-msgstr ""
-
-#: shell.c:1856
-#, c-format
-msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-
-#: shell.c:1857
-#, c-format
-msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-
-#: shell.c:1858
-#, c-format
-msgid "Use the `bashbug' command to report bugs.\n"
-msgstr ""
-
-#: sig.c:691
-#, c-format
-msgid "sigprocmask: %d: invalid operation"
-msgstr ""
-
-#: siglist.c:48
-msgid "Bogus signal"
-msgstr ""
-
-#: siglist.c:51
-msgid "Hangup"
-msgstr ""
-
-#: siglist.c:55
-msgid "Interrupt"
-msgstr ""
-
-#: siglist.c:59
-msgid "Quit"
-msgstr ""
-
-#: siglist.c:63
-msgid "Illegal instruction"
-msgstr ""
-
-#: siglist.c:67
-msgid "BPT trace/trap"
-msgstr ""
-
-#: siglist.c:75
-msgid "ABORT instruction"
-msgstr ""
-
-#: siglist.c:79
-msgid "EMT instruction"
-msgstr ""
-
-#: siglist.c:83
-msgid "Floating point exception"
-msgstr ""
-
-#: siglist.c:87
-msgid "Killed"
-msgstr ""
-
-#: siglist.c:91
-msgid "Bus error"
-msgstr ""
-
-#: siglist.c:95
-msgid "Segmentation fault"
-msgstr ""
-
-#: siglist.c:99
-msgid "Bad system call"
-msgstr ""
-
-#: siglist.c:103
-msgid "Broken pipe"
-msgstr ""
-
-#: siglist.c:107
-msgid "Alarm clock"
-msgstr ""
-
-#: siglist.c:111
-msgid "Terminated"
-msgstr ""
-
-#: siglist.c:115
-msgid "Urgent IO condition"
-msgstr ""
-
-#: siglist.c:119
-msgid "Stopped (signal)"
-msgstr ""
-
-#: siglist.c:127
-msgid "Continue"
-msgstr ""
-
-#: siglist.c:135
-msgid "Child death or stop"
-msgstr ""
-
-#: siglist.c:139
-msgid "Stopped (tty input)"
-msgstr ""
-
-#: siglist.c:143
-msgid "Stopped (tty output)"
-msgstr ""
-
-#: siglist.c:147
-msgid "I/O ready"
-msgstr ""
-
-#: siglist.c:151
-msgid "CPU limit"
-msgstr ""
-
-#: siglist.c:155
-msgid "File limit"
-msgstr ""
-
-#: siglist.c:159
-msgid "Alarm (virtual)"
-msgstr ""
-
-#: siglist.c:163
-msgid "Alarm (profile)"
-msgstr ""
-
-#: siglist.c:167
-msgid "Window changed"
-msgstr ""
-
-#: siglist.c:171
-msgid "Record lock"
-msgstr ""
-
-#: siglist.c:175
-msgid "User signal 1"
-msgstr ""
-
-#: siglist.c:179
-msgid "User signal 2"
-msgstr ""
-
-#: siglist.c:183
-msgid "HFT input data pending"
-msgstr ""
-
-#: siglist.c:187
-msgid "power failure imminent"
-msgstr ""
-
-#: siglist.c:191
-msgid "system crash imminent"
-msgstr ""
-
-#: siglist.c:195
-msgid "migrate process to another CPU"
-msgstr ""
-
-#: siglist.c:199
-msgid "programming error"
-msgstr ""
-
-#: siglist.c:203
-msgid "HFT monitor mode granted"
-msgstr ""
-
-#: siglist.c:207
-msgid "HFT monitor mode retracted"
-msgstr ""
-
-#: siglist.c:211
-msgid "HFT sound sequence has completed"
-msgstr ""
-
-#: siglist.c:215
-msgid "Information request"
-msgstr ""
-
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr ""
-
-#: siglist.c:225
-#, c-format
-msgid "Unknown Signal #%d"
-msgstr ""
-
-#: subst.c:1362 subst.c:1520
-#, c-format
-msgid "bad substitution: no closing `%s' in %s"
-msgstr ""
-
-#: subst.c:2847
-#, c-format
-msgid "%s: cannot assign list to array member"
-msgstr ""
-
-#: subst.c:5065 subst.c:5081
-msgid "cannot make pipe for process substitution"
-msgstr ""
-
-#: subst.c:5113
-msgid "cannot make child for process substitution"
-msgstr ""
-
-#: subst.c:5158
-#, c-format
-msgid "cannot open named pipe %s for reading"
-msgstr ""
-
-#: subst.c:5160
-#, c-format
-msgid "cannot open named pipe %s for writing"
-msgstr ""
-
-#: subst.c:5178
-#, c-format
-msgid "cannot duplicate named pipe %s as fd %d"
-msgstr ""
-
-#: subst.c:5376
-msgid "cannot make pipe for command substitution"
-msgstr ""
-
-#: subst.c:5414
-msgid "cannot make child for command substitution"
-msgstr ""
-
-#: subst.c:5433
-msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr ""
-
-#: subst.c:5837 subst.c:8050
-#, c-format
-msgid "%s: invalid variable name for name reference"
-msgstr ""
-
-#: subst.c:6048
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr ""
-
-#: subst.c:6320 subst.c:6335
-#, c-format
-msgid "%s: substring expression < 0"
-msgstr ""
-
-#: subst.c:7506
-#, c-format
-msgid "%s: bad substitution"
-msgstr ""
-
-#: subst.c:7583
-#, c-format
-msgid "$%s: cannot assign in this way"
-msgstr ""
-
-#: subst.c:7917
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-
-#: subst.c:8421
-#, c-format
-msgid "bad substitution: no closing \"`\" in %s"
-msgstr ""
-
-#: subst.c:9322
-#, c-format
-msgid "no match: %s"
-msgstr ""
-
-#: test.c:147
-msgid "argument expected"
-msgstr ""
-
-#: test.c:156
-#, c-format
-msgid "%s: integer expression expected"
-msgstr ""
-
-#: test.c:264
-msgid "`)' expected"
-msgstr ""
-
-#: test.c:266
-#, c-format
-msgid "`)' expected, found %s"
-msgstr ""
-
-#: test.c:281 test.c:742 test.c:745
-#, c-format
-msgid "%s: unary operator expected"
-msgstr ""
-
-#: test.c:468 test.c:785
-#, c-format
-msgid "%s: binary operator expected"
-msgstr ""
-
-#: test.c:860
-msgid "missing `]'"
-msgstr ""
-
-#: trap.c:217
-msgid "invalid signal number"
-msgstr ""
-
-#: trap.c:371
-#, c-format
-msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
-
-#: trap.c:375
-#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-
-#: trap.c:428
-#, c-format
-msgid "trap_handler: bad signal %d"
-msgstr ""
-
-#: variables.c:382
-#, c-format
-msgid "error importing function definition for `%s'"
-msgstr ""
-
-#: variables.c:780
-#, c-format
-msgid "shell level (%d) too high, resetting to 1"
-msgstr ""
-
-#: variables.c:1865
-#, c-format
-msgid "%s: circular name reference"
-msgstr ""
-
-#: variables.c:2228
-msgid "make_local_variable: no function context at current scope"
-msgstr ""
-
-#: variables.c:2247
-#, c-format
-msgid "%s: variable may not be assigned value"
-msgstr ""
-
-#: variables.c:3646
-msgid "all_local_variables: no function context at current scope"
-msgstr ""
-
-#: variables.c:3891
-#, c-format
-msgid "%s has null exportstr"
-msgstr ""
-
-#: variables.c:3896 variables.c:3905
-#, c-format
-msgid "invalid character %d in exportstr for %s"
-msgstr ""
-
-#: variables.c:3911
-#, c-format
-msgid "no `=' in exportstr for %s"
-msgstr ""
-
-#: variables.c:4344
-msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-
-#: variables.c:4357
-msgid "pop_var_context: no global_variables context"
-msgstr ""
-
-#: variables.c:4431
-msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-
-#: variables.c:5257
-#, c-format
-msgid "%s: %s: cannot open as FILE"
-msgstr ""
-
-#: variables.c:5262
-#, c-format
-msgid "%s: %s: invalid value for trace file descriptor"
-msgstr ""
-
-#: variables.c:5307
-#, c-format
-msgid "%s: %s: compatibility value out of range"
-msgstr ""
-
-#: version.c:46
-msgid "Copyright (C) 2013 Free Software Foundation, Inc."
-msgstr ""
-
-#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-
-#: version.c:86 version2.c:86
-#, c-format
-msgid "GNU bash, version %s (%s)\n"
-msgstr ""
-
-#: version.c:91 version2.c:91
-msgid "This is free software; you are free to change and redistribute it."
-msgstr ""
-
-#: version.c:92 version2.c:92
-msgid "There is NO WARRANTY, to the extent permitted by law."
-msgstr ""
-
-#: version2.c:46
-msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-msgstr ""
-
-#: xmalloc.c:91
-#, c-format
-msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:93
-#, c-format
-msgid "%s: cannot allocate %lu bytes"
-msgstr ""
-
-#: xmalloc.c:163
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr ""
-
-#: xmalloc.c:165
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr ""
-
-#: builtins.c:43
-msgid "alias [-p] [name[=value] ... ]"
-msgstr ""
-
-#: builtins.c:47
-msgid "unalias [-a] name [name ...]"
-msgstr ""
-
-#: builtins.c:51
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-
-#: builtins.c:54
-msgid "break [n]"
-msgstr ""
-
-#: builtins.c:56
-msgid "continue [n]"
-msgstr ""
-
-#: builtins.c:58
-msgid "builtin [shell-builtin [arg ...]]"
-msgstr ""
-
-#: builtins.c:61
-msgid "caller [expr]"
-msgstr ""
-
-#: builtins.c:64
-msgid "cd [-L|[-P [-e]] [-@]] [dir]"
-msgstr ""
-
-#: builtins.c:66
-msgid "pwd [-LP]"
-msgstr ""
-
-#: builtins.c:68
-msgid ":"
-msgstr ""
-
-#: builtins.c:70
-msgid "true"
-msgstr ""
-
-#: builtins.c:72
-msgid "false"
-msgstr ""
-
-#: builtins.c:74
-msgid "command [-pVv] command [arg ...]"
-msgstr ""
-
-#: builtins.c:76
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
-msgstr ""
-
-#: builtins.c:78
-msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..."
-msgstr ""
-
-#: builtins.c:80
-msgid "local [option] name[=value] ..."
-msgstr ""
-
-#: builtins.c:83
-msgid "echo [-neE] [arg ...]"
-msgstr ""
-
-#: builtins.c:87
-msgid "echo [-n] [arg ...]"
-msgstr ""
-
-#: builtins.c:90
-msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr ""
-
-#: builtins.c:92
-msgid "eval [arg ...]"
-msgstr ""
-
-#: builtins.c:94
-msgid "getopts optstring name [arg]"
-msgstr ""
-
-#: builtins.c:96
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr ""
-
-#: builtins.c:98
-msgid "exit [n]"
-msgstr ""
-
-#: builtins.c:100
-msgid "logout [n]"
-msgstr ""
-
-#: builtins.c:103
-msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr ""
-
-#: builtins.c:107
-msgid "fg [job_spec]"
-msgstr ""
-
-#: builtins.c:111
-msgid "bg [job_spec ...]"
-msgstr ""
-
-#: builtins.c:114
-msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr ""
-
-#: builtins.c:117
-msgid "help [-dms] [pattern ...]"
-msgstr ""
-
-#: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-
-#: builtins.c:125
-msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr ""
-
-#: builtins.c:129
-msgid "disown [-h] [-ar] [jobspec ...]"
-msgstr ""
-
-#: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-
-#: builtins.c:134
-msgid "let arg [arg ...]"
-msgstr ""
-
-#: builtins.c:136
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-
-#: builtins.c:138
-msgid "return [n]"
-msgstr ""
-
-#: builtins.c:140
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr ""
-
-#: builtins.c:142
-msgid "unset [-f] [-v] [-n] [name ...]"
-msgstr ""
-
-#: builtins.c:144
-msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr ""
-
-#: builtins.c:146
-msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr ""
-
-#: builtins.c:148
-msgid "shift [n]"
-msgstr ""
-
-#: builtins.c:150
-msgid "source filename [arguments]"
-msgstr ""
-
-#: builtins.c:152
-msgid ". filename [arguments]"
-msgstr ""
-
-#: builtins.c:155
-msgid "suspend [-f]"
-msgstr ""
-
-#: builtins.c:158
-msgid "test [expr]"
-msgstr ""
-
-#: builtins.c:160
-msgid "[ arg... ]"
-msgstr ""
-
-#: builtins.c:162
-msgid "times"
-msgstr ""
-
-#: builtins.c:164
-msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr ""
-
-#: builtins.c:166
-msgid "type [-afptP] name [name ...]"
-msgstr ""
-
-#: builtins.c:169
-msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]"
-msgstr ""
-
-#: builtins.c:172
-msgid "umask [-p] [-S] [mode]"
-msgstr ""
-
-#: builtins.c:175
-msgid "wait [-n] [id ...]"
-msgstr ""
-
-#: builtins.c:179
-msgid "wait [pid ...]"
-msgstr ""
-
-#: builtins.c:182
-msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:184
-msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:186
-msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:188
-msgid "time [-p] pipeline"
-msgstr ""
-
-#: builtins.c:190
-msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr ""
-
-#: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-
-#: builtins.c:194
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:196
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr ""
-
-#: builtins.c:198
-msgid "coproc [NAME] command [redirections]"
-msgstr ""
-
-#: builtins.c:200
-msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr ""
-
-#: builtins.c:202
-msgid "{ COMMANDS ; }"
-msgstr ""
-
-#: builtins.c:204
-msgid "job_spec [&]"
-msgstr ""
-
-#: builtins.c:206
-msgid "(( expression ))"
-msgstr ""
-
-#: builtins.c:208
-msgid "[[ expression ]]"
-msgstr ""
-
-#: builtins.c:210
-msgid "variables - Names and meanings of some shell variables"
-msgstr ""
-
-#: builtins.c:213
-msgid "pushd [-n] [+N | -N | dir]"
-msgstr ""
-
-#: builtins.c:217
-msgid "popd [-n] [+N | -N]"
-msgstr ""
-
-#: builtins.c:221
-msgid "dirs [-clpv] [+N] [-N]"
-msgstr ""
-
-#: builtins.c:224
-msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr ""
-
-#: builtins.c:226
-msgid "printf [-v var] format [arguments]"
-msgstr ""
-
-#: builtins.c:229
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-
-#: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-
-#: builtins.c:237
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr ""
-
-#: builtins.c:240
-msgid ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-
-#: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-
-#: builtins.c:254
-msgid ""
-"Define or display aliases.\n"
-"    \n"
-"    Without arguments, `alias' prints the list of aliases in the reusable\n"
-"    form `alias NAME=VALUE' on standard output.\n"
-"    \n"
-"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-"    A trailing space in VALUE causes the next word to be checked for\n"
-"    alias substitution when the alias is expanded.\n"
-"    \n"
-"    Options:\n"
-"      -p\tPrint all defined aliases in a reusable format\n"
-"    \n"
-"    Exit Status:\n"
-"    alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
-"    defined."
-msgstr ""
-
-#: builtins.c:276
-msgid ""
-"Remove each NAME from the list of defined aliases.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all alias definitions.\n"
-"    \n"
-"    Return success unless a NAME is not an existing alias."
-msgstr ""
-
-#: builtins.c:289
-msgid ""
-"Set Readline key bindings and variables.\n"
-"    \n"
-"    Bind a key sequence to a Readline function or a macro, or set a\n"
-"    Readline variable.  The non-option argument syntax is equivalent to\n"
-"    that found in ~/.inputrc, but must be passed as a single argument:\n"
-"    e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"    \n"
-"    Options:\n"
-"      -m  keymap         Use KEYMAP as the keymap for the duration of this\n"
-"                         command.  Acceptable keymap names are emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-"                         vi-command, and vi-insert.\n"
-"      -l                 List names of functions.\n"
-"      -P                 List function names and bindings.\n"
-"      -p                 List functions and bindings in a form that can be\n"
-"                         reused as input.\n"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\n"
-"                         in a form that can be reused as input.\n"
-"      -V                 List variable names and values\n"
-"      -v                 List variable names and values in a form that can\n"
-"                         be reused as input.\n"
-"      -q  function-name  Query about which keys invoke the named function.\n"
-"      -u  function-name  Unbind all keys which are bound to the named "
-"function.\n"
-"      -r  keyseq         Remove the binding for KEYSEQ.\n"
-"      -f  filename       Read key bindings from FILENAME.\n"
-"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-"    \t\t\t\tKEYSEQ is entered.\n"
-"      -X\t\t     List key sequences bound with -x and associated commands\n"
-"                         in a form that can be reused as input.\n"
-"    \n"
-"    Exit Status:\n"
-"    bind returns 0 unless an unrecognized option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:328
-msgid ""
-"Exit for, while, or until loops.\n"
-"    \n"
-"    Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing\n"
-"    loops.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-
-#: builtins.c:340
-msgid ""
-"Resume for, while, or until loops.\n"
-"    \n"
-"    Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-"    If N is specified, resumes the Nth enclosing loop.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-
-#: builtins.c:352
-msgid ""
-"Execute shell builtins.\n"
-"    \n"
-"    Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
-"    lookup.  This is useful when you wish to reimplement a shell builtin\n"
-"    as a shell function, but need to execute the builtin within the "
-"function.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
-msgstr ""
-
-#: builtins.c:367
-msgid ""
-"Return the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns \"$line $filename\".  With EXPR, returns\n"
-"    \"$line $subroutine $filename\"; this extra information can be used to\n"
-"    provide a stack trace.\n"
-"    \n"
-"    The value of EXPR indicates how many call frames to go back before the\n"
-"    current one; the top frame is frame 0.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless the shell is not executing a shell function or EXPR\n"
-"    is invalid."
-msgstr ""
-
-#: builtins.c:385
-msgid ""
-"Change the shell working directory.\n"
-"    \n"
-"    Change the current directory to DIR.  The default DIR is the value of "
-"the\n"
-"    HOME shell variable.\n"
-"    \n"
-"    The variable CDPATH defines the search path for the directory "
-"containing\n"
-"    DIR.  Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-"    A null directory name is the same as the current directory.  If DIR "
-"begins\n"
-"    with a slash (/), then CDPATH is not used.\n"
-"    \n"
-"    If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-"    the word is assumed to be  a variable name.  If that variable has a "
-"value,\n"
-"    its value is used for DIR.\n"
-"    \n"
-"    Options:\n"
-"        -L\tforce symbolic links to be followed: resolve symbolic links in\n"
-"    \tDIR after processing instances of `..'\n"
-"        -P\tuse the physical directory structure without following symbolic\n"
-"    \tlinks: resolve symbolic links in DIR before processing instances\n"
-"    \tof `..'\n"
-"        -e\tif the -P option is supplied, and the current working directory\n"
-"    \tcannot be determined successfully, exit with a non-zero status\n"
-"        -@  on systems that support it, present a file with extended "
-"attributes\n"
-"            as a directory containing the file attributes\n"
-"    \n"
-"    The default is to follow symbolic links, as if `-L' were specified.\n"
-"    `..' is processed by removing the immediately previous pathname "
-"component\n"
-"    back to a slash or the beginning of DIR.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
-"    -P is used; non-zero otherwise."
-msgstr ""
-
-#: builtins.c:422
-msgid ""
-"Print the name of the current working directory.\n"
-"    \n"
-"    Options:\n"
-"      -L\tprint the value of $PWD if it names the current working\n"
-"    \tdirectory\n"
-"      -P\tprint the physical directory, without any symbolic links\n"
-"    \n"
-"    By default, `pwd' behaves as if `-L' were specified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless an invalid option is given or the current directory\n"
-"    cannot be read."
-msgstr ""
-
-#: builtins.c:439
-msgid ""
-"Null command.\n"
-"    \n"
-"    No effect; the command does nothing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:450
-msgid ""
-"Return a successful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:459
-msgid ""
-"Return an unsuccessful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always fails."
-msgstr ""
-
-#: builtins.c:468
-msgid ""
-"Execute a simple command or display information about commands.\n"
-"    \n"
-"    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n"
-"    information about the specified COMMANDs.  Can be used to invoke "
-"commands\n"
-"    on disk when a function with the same name exists.\n"
-"    \n"
-"    Options:\n"
-"      -p\tuse a default value for PATH that is guaranteed to find all of\n"
-"    \tthe standard utilities\n"
-"      -v\tprint a description of COMMAND similar to the `type' builtin\n"
-"      -V\tprint a more verbose description of each COMMAND\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of COMMAND, or failure if COMMAND is not found."
-msgstr ""
-
-#: builtins.c:487
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Declare variables and give them attributes.  If no NAMEs are given,\n"
-"    display the attributes and values of all variables.\n"
-"    \n"
-"    Options:\n"
-"      -f\trestrict action or display to function names and definitions\n"
-"      -F\trestrict display to function names only (plus line number and\n"
-"    \tsource file when debugging)\n"
-"      -g\tcreate global variables when used in a shell function; otherwise\n"
-"    \tignored\n"
-"      -p\tdisplay the attributes and value of each NAME\n"
-"    \n"
-"    Options which set attributes:\n"
-"      -a\tto make NAMEs indexed arrays (if supported)\n"
-"      -A\tto make NAMEs associative arrays (if supported)\n"
-"      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
-"      -n\tmake NAME a reference to the variable named by its value\n"
-"      -r\tto make NAMEs readonly\n"
-"      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
-"      -x\tto make NAMEs export\n"
-"    \n"
-"    Using `+' instead of `-' turns off the given attribute.\n"
-"    \n"
-"    Variables with the integer attribute have arithmetic evaluation (see\n"
-"    the `let' command) performed when the variable is assigned a value.\n"
-"    \n"
-"    When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
-"    command.  The `-g' option suppresses this behavior.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or a variable\n"
-"    assignment error occurs."
-msgstr ""
-
-#: builtins.c:527
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Obsolete.  See `help declare'."
-msgstr ""
-
-#: builtins.c:535
-msgid ""
-"Define local variables.\n"
-"    \n"
-"    Create a local variable called NAME, and give it VALUE.  OPTION can\n"
-"    be any option accepted by `declare'.\n"
-"    \n"
-"    Local variables can only be used within a function; they are visible\n"
-"    only to the function where they are defined and its children.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied, a variable\n"
-"    assignment error occurs, or the shell is not executing a function."
-msgstr ""
-
-#: builtins.c:552
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs, separated by a single space character and followed by "
-"a\n"
-"    newline, on the standard output.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"      -e\tenable interpretation of the following backslash escapes\n"
-"      -E\texplicitly suppress interpretation of backslash escapes\n"
-"    \n"
-"    `echo' interprets the following backslash-escaped characters:\n"
-"      \\a\talert (bell)\n"
-"      \\b\tbackspace\n"
-"      \\c\tsuppress further output\n"
-"      \\e\tescape character\n"
-"      \\E\tescape character\n"
-"      \\f\tform feed\n"
-"      \\n\tnew line\n"
-"      \\r\tcarriage return\n"
-"      \\t\thorizontal tab\n"
-"      \\v\tvertical tab\n"
-"      \\\\\tbackslash\n"
-"      \\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n"
-"    \t0 to 3 octal digits\n"
-"      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
-"    \tcan be one or two hex digits\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-
-#: builtins.c:588
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs on the standard output followed by a newline.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-
-#: builtins.c:603
-msgid ""
-"Enable and disable shell builtins.\n"
-"    \n"
-"    Enables and disables builtin shell commands.  Disabling allows you to\n"
-"    execute a disk command which has the same name as a shell builtin\n"
-"    without using a full pathname.\n"
-"    \n"
-"    Options:\n"
-"      -a\tprint a list of builtins showing whether or not each is enabled\n"
-"      -n\tdisable each NAME or display a list of disabled builtins\n"
-"      -p\tprint the list of builtins in a reusable format\n"
-"      -s\tprint only the names of Posix `special' builtins\n"
-"    \n"
-"    Options controlling dynamic loading:\n"
-"      -f\tLoad builtin NAME from shared object FILENAME\n"
-"      -d\tRemove a builtin loaded with -f\n"
-"    \n"
-"    Without options, each NAME is enabled.\n"
-"    \n"
-"    To use the `test' found in $PATH instead of the shell builtin\n"
-"    version, type `enable -n test'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not a shell builtin or an error occurs."
-msgstr ""
-
-#: builtins.c:631
-msgid ""
-"Execute arguments as a shell command.\n"
-"    \n"
-"    Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
-"    and execute the resulting commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of command or success if command is null."
-msgstr ""
-
-#: builtins.c:643
-msgid ""
-"Parse option arguments.\n"
-"    \n"
-"    Getopts is used by shell procedures to parse positional parameters\n"
-"    as options.\n"
-"    \n"
-"    OPTSTRING contains the option letters to be recognized; if a letter\n"
-"    is followed by a colon, the option is expected to have an argument,\n"
-"    which should be separated from it by white space.\n"
-"    \n"
-"    Each time it is invoked, getopts will place the next option in the\n"
-"    shell variable $name, initializing name if it does not exist, and\n"
-"    the index of the next argument to be processed into the shell\n"
-"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
-"    a shell script is invoked.  When an option requires an argument,\n"
-"    getopts places that argument into the shell variable OPTARG.\n"
-"    \n"
-"    getopts reports errors in one of two ways.  If the first character\n"
-"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
-"    this mode, no error messages are printed.  If an invalid option is\n"
-"    seen, getopts places the option character found into OPTARG.  If a\n"
-"    required argument is not found, getopts places a ':' into NAME and\n"
-"    sets OPTARG to the option character found.  If getopts is not in\n"
-"    silent mode, and an invalid option is seen, getopts places '?' into\n"
-"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
-"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-"    printed.\n"
-"    \n"
-"    If the shell variable OPTERR has the value 0, getopts disables the\n"
-"    printing of error messages, even if the first character of\n"
-"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
-"    \n"
-"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
-"    more arguments are given, they are parsed instead.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if an option is found; fails if the end of options is\n"
-"    encountered or an error occurs."
-msgstr ""
-
-#: builtins.c:685
-msgid ""
-"Replace the shell with the given command.\n"
-"    \n"
-"    Execute COMMAND, replacing this shell with the specified program.\n"
-"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not "
-"specified,\n"
-"    any redirections take effect in the current shell.\n"
-"    \n"
-"    Options:\n"
-"      -a name\tpass NAME as the zeroth argument to COMMAND\n"
-"      -c\t\texecute COMMAND with an empty environment\n"
-"      -l\t\tplace a dash in the zeroth argument to COMMAND\n"
-"    \n"
-"    If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
-"    the shell option `execfail' is set.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless COMMAND is not found or a redirection error "
-"occurs."
-msgstr ""
-
-#: builtins.c:706
-msgid ""
-"Exit the shell.\n"
-"    \n"
-"    Exits the shell with a status of N.  If N is omitted, the exit status\n"
-"    is that of the last command executed."
-msgstr ""
-
-#: builtins.c:715
-msgid ""
-"Exit a login shell.\n"
-"    \n"
-"    Exits a login shell with exit status N.  Returns an error if not "
-"executed\n"
-"    in a login shell."
-msgstr ""
-
-#: builtins.c:725
-msgid ""
-"Display or execute commands from the history list.\n"
-"    \n"
-"    fc is used to list or edit and re-execute commands from the history "
-"list.\n"
-"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-"    string, which means the most recent command beginning with that\n"
-"    string.\n"
-"    \n"
-"    Options:\n"
-"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
-"    \t\tthen vi\n"
-"      -l \tlist lines instead of editing\n"
-"      -n\tomit line numbers when listing\n"
-"      -r\treverse the order of the lines (newest listed first)\n"
-"    \n"
-"    With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n"
-"    re-executed after the substitution OLD=NEW is performed.\n"
-"    \n"
-"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
-"    runs the last command beginning with `cc' and typing `r' re-executes\n"
-"    the last command.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success or status of executed command; non-zero if an error "
-"occurs."
-msgstr ""
-
-#: builtins.c:755
-msgid ""
-"Move job to the foreground.\n"
-"    \n"
-"    Place the job identified by JOB_SPEC in the foreground, making it the\n"
-"    current job.  If JOB_SPEC is not present, the shell's notion of the\n"
-"    current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Status of command placed in foreground, or failure if an error occurs."
-msgstr ""
-
-#: builtins.c:770
-msgid ""
-"Move jobs to the background.\n"
-"    \n"
-"    Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-"    had been started with `&'.  If JOB_SPEC is not present, the shell's "
-"notion\n"
-"    of the current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-
-#: builtins.c:784
-msgid ""
-"Remember or display program locations.\n"
-"    \n"
-"    Determine and remember the full pathname of each command NAME.  If\n"
-"    no arguments are given, information about remembered commands is "
-"displayed.\n"
-"    \n"
-"    Options:\n"
-"      -d\t\tforget the remembered location of each NAME\n"
-"      -l\t\tdisplay in a format that may be reused as input\n"
-"      -p pathname\tuse PATHNAME as the full pathname of NAME\n"
-"      -r\t\tforget all remembered locations\n"
-"      -t\t\tprint the remembered location of each NAME, preceding\n"
-"    \t\teach location with the corresponding NAME if multiple\n"
-"    \t\tNAMEs are given\n"
-"    Arguments:\n"
-"      NAME\t\tEach NAME is searched for in $PATH and added to the list\n"
-"    \t\tof remembered commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not found or an invalid option is given."
-msgstr ""
-
-#: builtins.c:809
-msgid ""
-"Display information about builtin commands.\n"
-"    \n"
-"    Displays brief summaries of builtin commands.  If PATTERN is\n"
-"    specified, gives detailed help on all commands matching PATTERN,\n"
-"    otherwise the list of help topics is printed.\n"
-"    \n"
-"    Options:\n"
-"      -d\toutput short description for each topic\n"
-"      -m\tdisplay usage in pseudo-manpage format\n"
-"      -s\toutput only a short usage synopsis for each topic matching\n"
-"    \tPATTERN\n"
-"    \n"
-"    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless PATTERN is not found or an invalid option is "
-"given."
-msgstr ""
-
-#: builtins.c:833
-msgid ""
-"Display or manipulate the history list.\n"
-"    \n"
-"    Display the history list with line numbers, prefixing each modified\n"
-"    entry with a `*'.  An argument of N lists only the last N entries.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at offset OFFSET.\n"
-"    \n"
-"      -a\tappend history lines from this session to the history file\n"
-"      -n\tread all history lines not already read from the history file\n"
-"      -r\tread the history file and append the contents to the history\n"
-"    \tlist\n"
-"      -w\twrite the current history to the history file\n"
-"    \tand append them to the history list\n"
-"    \n"
-"      -p\tperform history expansion on each ARG and display the result\n"
-"    \twithout storing it in the history list\n"
-"      -s\tappend the ARGs to the history list as a single entry\n"
-"    \n"
-"    If FILENAME is given, it is used as the history file.  Otherwise,\n"
-"    if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-"    \n"
-"    If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-"    as a format string for strftime(3) to print the time stamp associated\n"
-"    with each displayed history entry.  No time stamps are printed "
-"otherwise.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:869
-msgid ""
-"Display status of jobs.\n"
-"    \n"
-"    Lists the active jobs.  JOBSPEC restricts output to that job.\n"
-"    Without options, the status of all active jobs is displayed.\n"
-"    \n"
-"    Options:\n"
-"      -l\tlists process IDs in addition to the normal information\n"
-"      -n\tlists only processes that have changed status since the last\n"
-"    \tnotification\n"
-"      -p\tlists process IDs only\n"
-"      -r\trestrict output to running jobs\n"
-"      -s\trestrict output to stopped jobs\n"
-"    \n"
-"    If -x is supplied, COMMAND is run after all job specifications that\n"
-"    appear in ARGS have been replaced with the process ID of that job's\n"
-"    process group leader.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs.\n"
-"    If -x is used, returns the exit status of COMMAND."
-msgstr ""
-
-#: builtins.c:896
-msgid ""
-"Remove jobs from current shell.\n"
-"    \n"
-"    Removes each JOBSPEC argument from the table of active jobs.  Without\n"
-"    any JOBSPECs, the shell uses its notion of the current job.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all jobs if JOBSPEC is not supplied\n"
-"      -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
-"    \tshell receives a SIGHUP\n"
-"      -r\tremove only running jobs\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option or JOBSPEC is given."
-msgstr ""
-
-#: builtins.c:915
-msgid ""
-"Send a signal to a job.\n"
-"    \n"
-"    Send the processes identified by PID or JOBSPEC the signal named by\n"
-"    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then\n"
-"    SIGTERM is assumed.\n"
-"    \n"
-"    Options:\n"
-"      -s sig\tSIG is a signal name\n"
-"      -n sig\tSIG is a signal number\n"
-"      -l\tlist the signal names; if arguments follow `-l' they are\n"
-"    \tassumed to be signal numbers for which names should be listed\n"
-"    \n"
-"    Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-"    instead of process IDs, and allows processes to be killed if the limit\n"
-"    on processes that you can create is reached.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-
-#: builtins.c:938
-msgid ""
-"Evaluate arithmetic expressions.\n"
-"    \n"
-"    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
-"    fixed-width integers with no check for overflow, though division by 0\n"
-"    is trapped and flagged as an error.  The following list of operators is\n"
-"    grouped into levels of equal-precedence operators.  The levels are "
-"listed\n"
-"    in order of decreasing precedence.\n"
-"    \n"
-"    \tid++, id--\tvariable post-increment, post-decrement\n"
-"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
-"    \t-, +\t\tunary minus, plus\n"
-"    \t!, ~\t\tlogical and bitwise negation\n"
-"    \t**\t\texponentiation\n"
-"    \t*, /, %\t\tmultiplication, division, remainder\n"
-"    \t+, -\t\taddition, subtraction\n"
-"    \t<<, >>\t\tleft and right bitwise shifts\n"
-"    \t<=, >=, <, >\tcomparison\n"
-"    \t==, !=\t\tequality, inequality\n"
-"    \t&\t\tbitwise AND\n"
-"    \t^\t\tbitwise XOR\n"
-"    \t|\t\tbitwise OR\n"
-"    \t&&\t\tlogical AND\n"
-"    \t||\t\tlogical OR\n"
-"    \texpr ? expr : expr\n"
-"    \t\t\tconditional operator\n"
-"    \t=, *=, /=, %=,\n"
-"    \t+=, -=, <<=, >>=,\n"
-"    \t&=, ^=, |=\tassignment\n"
-"    \n"
-"    Shell variables are allowed as operands.  The name of the variable\n"
-"    is replaced by its value (coerced to a fixed-width integer) within\n"
-"    an expression.  The variable need not have its integer attribute\n"
-"    turned on to be used in an expression.\n"
-"    \n"
-"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
-"    parentheses are evaluated first and may override the precedence\n"
-"    rules above.\n"
-"    \n"
-"    Exit Status:\n"
-"    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
-msgstr ""
-
-#: builtins.c:983
-msgid ""
-"Read a line from the standard input and split it into fields.\n"
-"    \n"
-"    Reads a single line from the standard input, or from file descriptor FD\n"
-"    if the -u option is supplied.  The line is split into fields as with "
-"word\n"
-"    splitting, and the first word is assigned to the first NAME, the second\n"
-"    word to the second NAME, and so on, with any leftover words assigned to\n"
-"    the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
-"    delimiters.\n"
-"    \n"
-"    If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
-"    \n"
-"    Options:\n"
-"      -a array\tassign the words read to sequential indices of the array\n"
-"    \t\tvariable ARRAY, starting at zero\n"
-"      -d delim\tcontinue until the first character of DELIM is read, rather\n"
-"    \t\tthan newline\n"
-"      -e\t\tuse Readline to obtain the line in an interactive shell\n"
-"      -i text\tUse TEXT as the initial text for Readline\n"
-"      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
-"    \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
-"    \t\tcharacters are read before the delimiter\n"
-"      -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
-"    \t\tEOF is encountered or read times out, ignoring any delimiter\n"
-"      -p prompt\toutput the string PROMPT without a trailing newline before\n"
-"    \t\tattempting to read\n"
-"      -r\t\tdo not allow backslashes to escape any characters\n"
-"      -s\t\tdo not echo input coming from a terminal\n"
-"      -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
-"    \t\tnot read within TIMEOUT seconds.  The value of the TMOUT\n"
-"    \t\tvariable is the default timeout.  TIMEOUT may be a\n"
-"    \t\tfractional number.  If TIMEOUT is 0, read returns immediately,\n"
-"    \t\twithout trying to read any data, returning success only if\n"
-"    \t\tinput is available on the specified file descriptor.  The\n"
-"    \t\texit status is greater than 128 if the timeout is exceeded\n"
-"      -u fd\t\tread from file descriptor FD instead of the standard input\n"
-"    \n"
-"    Exit Status:\n"
-"    The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-"    (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
-"    or an invalid file descriptor is supplied as the argument to -u."
-msgstr ""
-
-#: builtins.c:1028
-msgid ""
-"Return from a shell function.\n"
-"    \n"
-"    Causes a function or sourced script to exit with the return value\n"
-"    specified by N.  If N is omitted, the return status is that of the\n"
-"    last command executed within the function or script.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns N, or failure if the shell is not executing a function or script."
-msgstr ""
-
-#: builtins.c:1041
-msgid ""
-"Set or unset values of shell options and positional parameters.\n"
-"    \n"
-"    Change the value of shell attributes and positional parameters, or\n"
-"    display the names and values of shell variables.\n"
-"    \n"
-"    Options:\n"
-"      -a  Mark variables which are modified or created for export.\n"
-"      -b  Notify of job termination immediately.\n"
-"      -e  Exit immediately if a command exits with a non-zero status.\n"
-"      -f  Disable file name generation (globbing).\n"
-"      -h  Remember the location of commands as they are looked up.\n"
-"      -k  All assignment arguments are placed in the environment for a\n"
-"          command, not just those that precede the command name.\n"
-"      -m  Job control is enabled.\n"
-"      -n  Read commands but do not execute them.\n"
-"      -o option-name\n"
-"          Set the variable corresponding to option-name:\n"
-"              allexport    same as -a\n"
-"              braceexpand  same as -B\n"
-"              emacs        use an emacs-style line editing interface\n"
-"              errexit      same as -e\n"
-"              errtrace     same as -E\n"
-"              functrace    same as -T\n"
-"              hashall      same as -h\n"
-"              histexpand   same as -H\n"
-"              history      enable command history\n"
-"              ignoreeof    the shell will not exit upon reading EOF\n"
-"              interactive-comments\n"
-"                           allow comments to appear in interactive commands\n"
-"              keyword      same as -k\n"
-"              monitor      same as -m\n"
-"              noclobber    same as -C\n"
-"              noexec       same as -n\n"
-"              noglob       same as -f\n"
-"              nolog        currently accepted but ignored\n"
-"              notify       same as -b\n"
-"              nounset      same as -u\n"
-"              onecmd       same as -t\n"
-"              physical     same as -P\n"
-"              pipefail     the return value of a pipeline is the status of\n"
-"                           the last command to exit with a non-zero status,\n"
-"                           or zero if no command exited with a non-zero "
-"status\n"
-"              posix        change the behavior of bash where the default\n"
-"                           operation differs from the Posix standard to\n"
-"                           match the standard\n"
-"              privileged   same as -p\n"
-"              verbose      same as -v\n"
-"              vi           use a vi-style line editing interface\n"
-"              xtrace       same as -x\n"
-"      -p  Turned on whenever the real and effective user ids do not match.\n"
-"          Disables processing of the $ENV file and importing of shell\n"
-"          functions.  Turning this option off causes the effective uid and\n"
-"          gid to be set to the real uid and gid.\n"
-"      -t  Exit after reading and executing one command.\n"
-"      -u  Treat unset variables as an error when substituting.\n"
-"      -v  Print shell input lines as they are read.\n"
-"      -x  Print commands and their arguments as they are executed.\n"
-"      -B  the shell will perform brace expansion\n"
-"      -C  If set, disallow existing regular files to be overwritten\n"
-"          by redirection of output.\n"
-"      -E  If set, the ERR trap is inherited by shell functions.\n"
-"      -H  Enable ! style history substitution.  This flag is on\n"
-"          by default when the shell is interactive.\n"
-"      -P  If set, do not resolve symbolic links when executing commands\n"
-"          such as cd which change the current directory.\n"
-"      -T  If set, the DEBUG trap is inherited by shell functions.\n"
-"      --  Assign any remaining arguments to the positional parameters.\n"
-"          If there are no remaining arguments, the positional parameters\n"
-"          are unset.\n"
-"      -   Assign any remaining arguments to the positional parameters.\n"
-"          The -x and -v options are turned off.\n"
-"    \n"
-"    Using + rather than - causes these flags to be turned off.  The\n"
-"    flags can also be used upon invocation of the shell.  The current\n"
-"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
-"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
-"    ARGs are given, all shell variables are printed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given."
-msgstr ""
-
-#: builtins.c:1126
-msgid ""
-"Unset values and attributes of shell variables and functions.\n"
-"    \n"
-"    For each NAME, remove the corresponding variable or function.\n"
-"    \n"
-"    Options:\n"
-"      -f\ttreat each NAME as a shell function\n"
-"      -v\ttreat each NAME as a shell variable\n"
-"      -n\ttreat each NAME as a name reference and unset the variable itself\n"
-"    \trather than the variable it references\n"
-"    \n"
-"    Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
-"    tries to unset a function.\n"
-"    \n"
-"    Some variables cannot be unset; also see `readonly'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a NAME is read-only."
-msgstr ""
-
-#: builtins.c:1148
-msgid ""
-"Set export attribute for shell variables.\n"
-"    \n"
-"    Marks each NAME for automatic export to the environment of subsequently\n"
-"    executed commands.  If VALUE is supplied, assign VALUE before "
-"exporting.\n"
-"    \n"
-"    Options:\n"
-"      -f\trefer to shell functions\n"
-"      -n\tremove the export property from each NAME\n"
-"      -p\tdisplay a list of all exported variables and functions\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-
-#: builtins.c:1167
-msgid ""
-"Mark shell variables as unchangeable.\n"
-"    \n"
-"    Mark each NAME as read-only; the values of these NAMEs may not be\n"
-"    changed by subsequent assignment.  If VALUE is supplied, assign VALUE\n"
-"    before marking as read-only.\n"
-"    \n"
-"    Options:\n"
-"      -a\trefer to indexed array variables\n"
-"      -A\trefer to associative array variables\n"
-"      -f\trefer to shell functions\n"
-"      -p\tdisplay a list of all readonly variables or functions, depending "
-"on\n"
-"            whether or not the -f option is given\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-
-#: builtins.c:1189
-msgid ""
-"Shift positional parameters.\n"
-"    \n"
-"    Rename the positional parameters $N+1,$N+2 ... to $1,$2 ...  If N is\n"
-"    not given, it is assumed to be 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless N is negative or greater than $#."
-msgstr ""
-
-#: builtins.c:1201 builtins.c:1216
-msgid ""
-"Execute commands from a file in the current shell.\n"
-"    \n"
-"    Read and execute commands from FILENAME in the current shell.  The\n"
-"    entries in $PATH are used to find the directory containing FILENAME.\n"
-"    If any ARGUMENTS are supplied, they become the positional parameters\n"
-"    when FILENAME is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed in FILENAME; fails if\n"
-"    FILENAME cannot be read."
-msgstr ""
-
-#: builtins.c:1232
-msgid ""
-"Suspend shell execution.\n"
-"    \n"
-"    Suspend the execution of this shell until it receives a SIGCONT signal.\n"
-"    Unless forced, login shells cannot be suspended.\n"
-"    \n"
-"    Options:\n"
-"      -f\tforce the suspend, even if the shell is a login shell\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-
-#: builtins.c:1248
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    Exits with a status of 0 (true) or 1 (false) depending on\n"
-"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
-"    expressions are often used to examine the status of a file.  There\n"
-"    are string operators and numeric comparison operators as well.\n"
-"    \n"
-"    The behavior of test depends on the number of arguments.  Read the\n"
-"    bash manual page for the complete specification.\n"
-"    \n"
-"    File operators:\n"
-"    \n"
-"      -a FILE        True if file exists.\n"
-"      -b FILE        True if file is block special.\n"
-"      -c FILE        True if file is character special.\n"
-"      -d FILE        True if file is a directory.\n"
-"      -e FILE        True if file exists.\n"
-"      -f FILE        True if file exists and is a regular file.\n"
-"      -g FILE        True if file is set-group-id.\n"
-"      -h FILE        True if file is a symbolic link.\n"
-"      -L FILE        True if file is a symbolic link.\n"
-"      -k FILE        True if file has its `sticky' bit set.\n"
-"      -p FILE        True if file is a named pipe.\n"
-"      -r FILE        True if file is readable by you.\n"
-"      -s FILE        True if file exists and is not empty.\n"
-"      -S FILE        True if file is a socket.\n"
-"      -t FD          True if FD is opened on a terminal.\n"
-"      -u FILE        True if the file is set-user-id.\n"
-"      -w FILE        True if the file is writable by you.\n"
-"      -x FILE        True if the file is executable by you.\n"
-"      -O FILE        True if the file is effectively owned by you.\n"
-"      -G FILE        True if the file is effectively owned by your group.\n"
-"      -N FILE        True if the file has been modified since it was last "
-"read.\n"
-"    \n"
-"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
-"                       modification date).\n"
-"    \n"
-"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
-"    \n"
-"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
-"    \n"
-"    String operators:\n"
-"    \n"
-"      -z STRING      True if string is empty.\n"
-"    \n"
-"      -n STRING\n"
-"         STRING      True if string is not empty.\n"
-"    \n"
-"      STRING1 = STRING2\n"
-"                     True if the strings are equal.\n"
-"      STRING1 != STRING2\n"
-"                     True if the strings are not equal.\n"
-"      STRING1 < STRING2\n"
-"                     True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-"      STRING1 > STRING2\n"
-"                     True if STRING1 sorts after STRING2 lexicographically.\n"
-"    \n"
-"    Other operators:\n"
-"    \n"
-"      -o OPTION      True if the shell option OPTION is enabled.\n"
-"      -v VAR\t True if the shell variable VAR is set\n"
-"      -R VAR\t True if the shell variable VAR is set and is a name "
-"reference.\n"
-"      ! EXPR         True if expr is false.\n"
-"      EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-"      EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-"    \n"
-"      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
-"                     -lt, -le, -gt, or -ge.\n"
-"    \n"
-"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-"    than ARG2.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
-"    false or an invalid argument is given."
-msgstr ""
-
-#: builtins.c:1329
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    This is a synonym for the \"test\" builtin, but the last argument must\n"
-"    be a literal `]', to match the opening `['."
-msgstr ""
-
-#: builtins.c:1338
-msgid ""
-"Display process times.\n"
-"    \n"
-"    Prints the accumulated user and system times for the shell and all of "
-"its\n"
-"    child processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-
-#: builtins.c:1350
-msgid ""
-"Trap signals and other events.\n"
-"    \n"
-"    Defines and activates handlers to be run when the shell receives "
-"signals\n"
-"    or other conditions.\n"
-"    \n"
-"    ARG is a command to be read and executed when the shell receives the\n"
-"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
-"    is supplied) or `-', each specified signal is reset to its original\n"
-"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-"    shell and by the commands it invokes.\n"
-"    \n"
-"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  "
-"If\n"
-"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.  "
-"If\n"
-"    a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-"    script run by the . or source builtins finishes executing.  A "
-"SIGNAL_SPEC\n"
-"    of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
-"    shell to exit when the -e option is enabled.\n"
-"    \n"
-"    If no arguments are supplied, trap prints the list of commands "
-"associated\n"
-"    with each signal.\n"
-"    \n"
-"    Options:\n"
-"      -l\tprint a list of signal names and their corresponding numbers\n"
-"      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
-"    \n"
-"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
-"    Signal names are case insensitive and the SIG prefix is optional.  A\n"
-"    signal may be sent to the shell with \"kill -signal $$\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
-msgstr ""
-
-#: builtins.c:1386
-msgid ""
-"Display information about command type.\n"
-"    \n"
-"    For each NAME, indicate how it would be interpreted if used as a\n"
-"    command name.\n"
-"    \n"
-"    Options:\n"
-"      -a\tdisplay all locations containing an executable named NAME;\n"
-"    \tincludes aliases, builtins, and functions, if and only if\n"
-"    \tthe `-p' option is not also used\n"
-"      -f\tsuppress shell function lookup\n"
-"      -P\tforce a PATH search for each NAME, even if it is an alias,\n"
-"    \tbuiltin, or function, and returns the name of the disk file\n"
-"    \tthat would be executed\n"
-"      -p\treturns either the name of the disk file that would be executed,\n"
-"    \tor nothing if `type -t NAME' would not return `file'.\n"
-"      -t\toutput a single word which is one of `alias', `keyword',\n"
-"    \t`function', `builtin', `file' or `', if NAME is an alias, shell\n"
-"    \treserved word, shell function, shell builtin, disk file, or not\n"
-"    \tfound, respectively\n"
-"    \n"
-"    Arguments:\n"
-"      NAME\tCommand name to be interpreted.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if all of the NAMEs are found; fails if any are not "
-"found."
-msgstr ""
-
-#: builtins.c:1417
-msgid ""
-"Modify shell resource limits.\n"
-"    \n"
-"    Provides control over the resources available to the shell and "
-"processes\n"
-"    it creates, on systems that allow such control.\n"
-"    \n"
-"    Options:\n"
-"      -S\tuse the `soft' resource limit\n"
-"      -H\tuse the `hard' resource limit\n"
-"      -a\tall current limits are reported\n"
-"      -b\tthe socket buffer size\n"
-"      -c\tthe maximum size of core files created\n"
-"      -d\tthe maximum size of a process's data segment\n"
-"      -e\tthe maximum scheduling priority (`nice')\n"
-"      -f\tthe maximum size of files written by the shell and its children\n"
-"      -i\tthe maximum number of pending signals\n"
-"      -l\tthe maximum size a process may lock into memory\n"
-"      -m\tthe maximum resident set size\n"
-"      -n\tthe maximum number of open file descriptors\n"
-"      -p\tthe pipe buffer size\n"
-"      -q\tthe maximum number of bytes in POSIX message queues\n"
-"      -r\tthe maximum real-time scheduling priority\n"
-"      -s\tthe maximum stack size\n"
-"      -t\tthe maximum amount of cpu time in seconds\n"
-"      -u\tthe maximum number of user processes\n"
-"      -v\tthe size of virtual memory\n"
-"      -x\tthe maximum number of file locks\n"
-"      -T    the maximum number of threads\n"
-"    \n"
-"    Not all options are available on all platforms.\n"
-"    \n"
-"    If LIMIT is given, it is the new value of the specified resource; the\n"
-"    special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-"    current soft limit, the current hard limit, and no limit, respectively.\n"
-"    Otherwise, the current value of the specified resource is printed.  If\n"
-"    no option is given, then -f is assumed.\n"
-"    \n"
-"    Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-"    -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-"    number of processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1465
-msgid ""
-"Display or set file mode mask.\n"
-"    \n"
-"    Sets the user file-creation mask to MODE.  If MODE is omitted, prints\n"
-"    the current value of the mask.\n"
-"    \n"
-"    If MODE begins with a digit, it is interpreted as an octal number;\n"
-"    otherwise it is a symbolic mode string like that accepted by chmod(1).\n"
-"    \n"
-"    Options:\n"
-"      -p\tif MODE is omitted, output in a form that may be reused as input\n"
-"      -S\tmakes the output symbolic; otherwise an octal number is output\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless MODE is invalid or an invalid option is given."
-msgstr ""
-
-#: builtins.c:1485
-msgid ""
-"Wait for job completion and return exit status.\n"
-"    \n"
-"    Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
-"    job specification, and reports its termination status.  If ID is not\n"
-"    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
-"    in that job's pipeline.\n"
-"    \n"
-"    If the -n option is supplied, waits for the next job to terminate and\n"
-"    returns its exit status.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-"    option is given."
-msgstr ""
-
-#: builtins.c:1506
-msgid ""
-"Wait for process completion and return exit status.\n"
-"    \n"
-"    Waits for each process specified by a PID and reports its termination "
-"status.\n"
-"    If PID is not given, waits for all currently active child processes,\n"
-"    and the return status is zero.  PID must be a process ID.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
-"    option is given."
-msgstr ""
-
-#: builtins.c:1521
-msgid ""
-"Execute commands for each member in a list.\n"
-"    \n"
-"    The `for' loop executes a sequence of commands for each member in a\n"
-"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
-"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
-"    the COMMANDS are executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1535
-msgid ""
-"Arithmetic for loop.\n"
-"    \n"
-"    Equivalent to\n"
-"    \t(( EXP1 ))\n"
-"    \twhile (( EXP2 )); do\n"
-"    \t\tCOMMANDS\n"
-"    \t\t(( EXP3 ))\n"
-"    \tdone\n"
-"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
-"    omitted, it behaves as if it evaluates to 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1553
-msgid ""
-"Select words from a list and execute commands.\n"
-"    \n"
-"    The WORDS are expanded, generating a list of words.  The\n"
-"    set of expanded words is printed on the standard error, each\n"
-"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
-"    is assumed.  The PS3 prompt is then displayed and a line read\n"
-"    from the standard input.  If the line consists of the number\n"
-"    corresponding to one of the displayed words, then NAME is set\n"
-"    to that word.  If the line is empty, WORDS and the prompt are\n"
-"    redisplayed.  If EOF is read, the command completes.  Any other\n"
-"    value read causes NAME to be set to null.  The line read is saved\n"
-"    in the variable REPLY.  COMMANDS are executed after each selection\n"
-"    until a break command is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1574
-msgid ""
-"Report time consumed by pipeline's execution.\n"
-"    \n"
-"    Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-"    and system CPU time spent executing PIPELINE when it terminates.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint the timing summary in the portable Posix format\n"
-"    \n"
-"    The value of the TIMEFORMAT variable is used as the output format.\n"
-"    \n"
-"    Exit Status:\n"
-"    The return status is the return status of PIPELINE."
-msgstr ""
-
-#: builtins.c:1591
-msgid ""
-"Execute commands based on pattern matching.\n"
-"    \n"
-"    Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
-"    `|' is used to separate multiple patterns.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1603
-msgid ""
-"Execute commands based on conditional.\n"
-"    \n"
-"    The `if COMMANDS' list is executed.  If its exit status is zero, then "
-"the\n"
-"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
-"is\n"
-"    executed in turn, and if its exit status is zero, the corresponding\n"
-"    `then COMMANDS' list is executed and the if command completes.  "
-"Otherwise,\n"
-"    the `else COMMANDS' list is executed, if present.  The exit status of "
-"the\n"
-"    entire construct is the exit status of the last command executed, or "
-"zero\n"
-"    if no condition tested true.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1620
-msgid ""
-"Execute commands as long as a test succeeds.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `while' COMMANDS has an exit status of zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1632
-msgid ""
-"Execute commands as long as a test does not succeed.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `until' COMMANDS has an exit status which is not zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1644
-msgid ""
-"Create a coprocess named NAME.\n"
-"    \n"
-"    Execute COMMAND asynchronously, with the standard output and standard\n"
-"    input of the command connected via a pipe to file descriptors assigned\n"
-"    to indices 0 and 1 of an array variable NAME in the executing shell.\n"
-"    The default NAME is \"COPROC\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of COMMAND."
-msgstr ""
-
-#: builtins.c:1658
-msgid ""
-"Define shell function.\n"
-"    \n"
-"    Create a shell function named NAME.  When invoked as a simple command,\n"
-"    NAME runs COMMANDs in the calling shell's context.  When NAME is "
-"invoked,\n"
-"    the arguments are passed to the function as $1...$n, and the function's\n"
-"    name is in $FUNCNAME.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is readonly."
-msgstr ""
-
-#: builtins.c:1672
-msgid ""
-"Group commands as a unit.\n"
-"    \n"
-"    Run a set of commands in a group.  This is one way to redirect an\n"
-"    entire set of commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-
-#: builtins.c:1684
-msgid ""
-"Resume job in foreground.\n"
-"    \n"
-"    Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
-"    stopped or background job.  JOB_SPEC can specify either a job name\n"
-"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
-"    the background, as if the job specification had been supplied as an\n"
-"    argument to `bg'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the resumed job."
-msgstr ""
-
-#: builtins.c:1699
-msgid ""
-"Evaluate arithmetic expression.\n"
-"    \n"
-"    The EXPRESSION is evaluated according to the rules for arithmetic\n"
-"    evaluation.  Equivalent to \"let EXPRESSION\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-msgstr ""
-
-#: builtins.c:1711
-msgid ""
-"Execute conditional command.\n"
-"    \n"
-"    Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-"    expression EXPRESSION.  Expressions are composed of the same primaries "
-"used\n"
-"    by the `test' builtin, and may be combined using the following "
-"operators:\n"
-"    \n"
-"      ( EXPRESSION )\tReturns the value of EXPRESSION\n"
-"      ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
-"      EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-"      EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-"    \n"
-"    When the `==' and `!=' operators are used, the string to the right of\n"
-"    the operator is used as a pattern and pattern matching is performed.\n"
-"    When the `=~' operator is used, the string to the right of the operator\n"
-"    is matched as a regular expression.\n"
-"    \n"
-"    The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-"    determine the expression's value.\n"
-"    \n"
-"    Exit Status:\n"
-"    0 or 1 depending on value of EXPRESSION."
-msgstr ""
-
-#: builtins.c:1737
-msgid ""
-"Common shell variable names and usage.\n"
-"    \n"
-"    BASH_VERSION\tVersion information for this Bash.\n"
-"    CDPATH\tA colon-separated list of directories to search\n"
-"    \t\tfor directories given as arguments to `cd'.\n"
-"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-"    \t\tbe ignored by pathname expansion.\n"
-"    HISTFILE\tThe name of the file where your command history is stored.\n"
-"    HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
-"    HISTSIZE\tThe maximum number of history lines that a running\n"
-"    \t\tshell can access.\n"
-"    HOME\tThe complete pathname to your login directory.\n"
-"    HOSTNAME\tThe name of the current host.\n"
-"    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
-"    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
-"    \t\tcharacter as the sole input.  If set, then the value\n"
-"    \t\tof it is the number of EOF characters that can be seen\n"
-"    \t\tin a row on an empty line before the shell will exit\n"
-"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
-"    MACHTYPE\tA string describing the current system Bash is running on.\n"
-"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-"    \t\tfor new mail.\n"
-"    OSTYPE\tThe version of Unix this version of Bash is running on.\n"
-"    PATH\tA colon-separated list of directories to search when\n"
-"    \t\tlooking for commands.\n"
-"    PROMPT_COMMAND\tA command to be executed before the printing of each\n"
-"    \t\tprimary prompt.\n"
-"    PS1\t\tThe primary prompt string.\n"
-"    PS2\t\tThe secondary prompt string.\n"
-"    PWD\t\tThe full pathname of the current directory.\n"
-"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-"    TERM\tThe name of the current terminal type.\n"
-"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-"    \t\t`time' reserved word.\n"
-"    auto_resume\tNon-null means a command word appearing on a line by\n"
-"    \t\titself is first looked for in the list of currently\n"
-"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
-"    \t\tA value of `exact' means that the command word must\n"
-"    \t\texactly match a command in the list of stopped jobs.  A\n"
-"    \t\tvalue of `substring' means that the command word must\n"
-"    \t\tmatch a substring of the job.  Any other value means that\n"
-"    \t\tthe command must be a prefix of a stopped job.\n"
-"    histchars\tCharacters controlling history expansion and quick\n"
-"    \t\tsubstitution.  The first character is the history\n"
-"    \t\tsubstitution character, usually `!'.  The second is\n"
-"    \t\tthe `quick substitution' character, usually `^'.  The\n"
-"    \t\tthird is the `history comment' character, usually `#'.\n"
-"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-"    \t\tcommands should be saved on the history list.\n"
-msgstr ""
-
-#: builtins.c:1794
-msgid ""
-"Add directories to stack.\n"
-"    \n"
-"    Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-
-#: builtins.c:1828
-msgid ""
-"Remove directories from stack.\n"
-"    \n"
-"    Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-
-#: builtins.c:1858
-msgid ""
-"Display directory stack.\n"
-"    \n"
-"    Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1887
-msgid ""
-"Set and unset shell options.\n"
-"    \n"
-"    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
-"    \n"
-"    Options:\n"
-"      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
-"      -p\tprint each shell option with an indication of its status\n"
-"      -q\tsuppress output\n"
-"      -s\tenable (set) each OPTNAME\n"
-"      -u\tdisable (unset) each OPTNAME\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
-"    given or OPTNAME is disabled."
-msgstr ""
-
-#: builtins.c:1908
-msgid ""
-"Formats and prints ARGUMENTS under control of the FORMAT.\n"
-"    \n"
-"    Options:\n"
-"      -v var\tassign the output to shell variable VAR rather than\n"
-"    \t\tdisplay it on the standard output\n"
-"    \n"
-"    FORMAT is a character string which contains three types of objects: "
-"plain\n"
-"    characters, which are simply copied to standard output; character "
-"escape\n"
-"    sequences, which are converted and copied to the standard output; and\n"
-"    format specifications, each of which causes printing of the next "
-"successive\n"
-"    argument.\n"
-"    \n"
-"    In addition to the standard format specifications described in "
-"printf(1),\n"
-"    printf interprets:\n"
-"    \n"
-"      %b\texpand backslash escape sequences in the corresponding argument\n"
-"      %q\tquote the argument in a way that can be reused as shell input\n"
-"      %(fmt)T output the date-time string resulting from using FMT as a "
-"format\n"
-"            string for strftime(3)\n"
-"    \n"
-"    The format is re-used as necessary to consume all of the arguments.  If\n"
-"    there are fewer arguments than the format requires,  extra format\n"
-"    specifications behave as if a zero value or null string, as "
-"appropriate,\n"
-"    had been supplied.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a write or "
-"assignment\n"
-"    error occurs."
-msgstr ""
-
-#: builtins.c:1942
-msgid ""
-"Specify how arguments are to be completed by Readline.\n"
-"    \n"
-"    For each NAME, specify how arguments are to be completed.  If no "
-"options\n"
-"    are supplied, existing completion specifications are printed in a way "
-"that\n"
-"    allows them to be reused as input.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint existing completion specifications in a reusable format\n"
-"      -r\tremove a completion specification for each NAME, or, if no\n"
-"    \tNAMEs are supplied, all completion specifications\n"
-"      -D\tapply the completions and actions as the default for commands\n"
-"    \twithout any specific completion defined\n"
-"      -E\tapply the completions and actions to \"empty\" commands --\n"
-"    \tcompletion attempted on a blank line\n"
-"    \n"
-"    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1970
-msgid ""
-"Display possible completions depending on the options.\n"
-"    \n"
-"    Intended to be used from within a shell function generating possible\n"
-"    completions.  If the optional WORD argument is supplied, matches "
-"against\n"
-"    WORD are generated.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-
-#: builtins.c:1985
-msgid ""
-"Modify or display completion options.\n"
-"    \n"
-"    Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-"    the completion currently being executed.  If no OPTIONs are given, "
-"print\n"
-"    the completion options for each NAME or the current completion "
-"specification.\n"
-"    \n"
-"    Options:\n"
-"    \t-o option\tSet completion option OPTION for each NAME\n"
-"    \t-D\t\tChange options for the \"default\" command completion\n"
-"    \t-E\t\tChange options for the \"empty\" command completion\n"
-"    \n"
-"    Using `+o' instead of `-o' turns off the specified option.\n"
-"    \n"
-"    Arguments:\n"
-"    \n"
-"    Each NAME refers to a command for which a completion specification must\n"
-"    have previously been defined using the `complete' builtin.  If no NAMEs\n"
-"    are supplied, compopt must be called by a function currently generating\n"
-"    completions, and the options for that currently-executing completion\n"
-"    generator are modified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or NAME does not\n"
-"    have a completion specification defined."
-msgstr ""
-
-#: builtins.c:2015
-msgid ""
-"Read lines from the standard input into an indexed array variable.\n"
-"    \n"
-"    Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-"    from file descriptor FD if the -u option is supplied.  The variable "
-"MAPFILE\n"
-"    is the default ARRAY.\n"
-"    \n"
-"    Options:\n"
-"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are "
-"copied.\n"
-"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default "
-"index is 0.\n"
-"      -s count \tDiscard the first COUNT lines read.\n"
-"      -t\t\tRemove a trailing newline from each line read.\n"
-"      -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
-"      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-"      -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
-"    \n"
-"    Arguments:\n"
-"      ARRAY\t\tArray variable name to use for file data.\n"
-"    \n"
-"    If -C is supplied without -c, the default quantum is 5000.  When\n"
-"    CALLBACK is evaluated, it is supplied the index of the next array\n"
-"    element to be assigned and the line to be assigned to that element\n"
-"    as additional arguments.\n"
-"    \n"
-"    If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
-"    assigning to it.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
-"    not an indexed array."
-msgstr ""
-
-#: builtins.c:2049
-msgid ""
-"Read lines from a file into an array variable.\n"
-"    \n"
-"    A synonym for `mapfile'."
-msgstr ""
diff --git a/po/nb.gmo b/po/nb.gmo
deleted file mode 100644 (file)
index 241049a..0000000
Binary files a/po/nb.gmo and /dev/null differ
diff --git a/po/nb.po b/po/nb.po
deleted file mode 100644 (file)
index 23b690d..0000000
--- a/po/nb.po
+++ /dev/null
@@ -1,5679 +0,0 @@
-# Norwegian (bokmÃ¥l) translation of GNU Bash
-# Copyright (C) 2015 Free Software Foundation, Inc.
-# This file is distributed under the same license as the bash package.
-# Ã…ka Sikrom <a4@hush.com>, 2015.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: bash-4.3-rc2\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-06-17 11:03-0400\n"
-"PO-Revision-Date: 2015-06-12 13:45+0100\n"
-"Last-Translator: Ã…ka Sikrom <a4@hush.com>\n"
-"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: Norwegian bokmÃ¥l\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.5.4\n"
-"X-Poedit-Language: Norwegian BokmÃ¥l\n"
-"X-Poedit-Country: NORWAY\n"
-
-#: arrayfunc.c:54
-msgid "bad array subscript"
-msgstr "feil i tabell-underskript"
-
-#: arrayfunc.c:360 builtins/declare.def:640
-#, c-format
-msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell"
-
-#: arrayfunc.c:548
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: ugyldig nøkkel for assosiativ tabell"
-
-#: arrayfunc.c:550
-#, c-format
-msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: kan ikke tildeles ikke-numerisk indeks"
-
-#: arrayfunc.c:595
-#, c-format
-msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s: %s: underskript mÃ¥ brukes ved tildeling av assosiative tabeller"
-
-#: bashhist.c:405
-#, c-format
-msgid "%s: cannot create: %s"
-msgstr "%s: klarte ikke Ã¥ opprette: %s"
-
-#: bashline.c:4062
-msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando"
-
-#: bashline.c:4156
-#, c-format
-msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: første ikke-blanktegn mÃ¥ være Â«\"»"
-
-#: bashline.c:4185
-#, c-format
-msgid "no closing `%c' in %s"
-msgstr "avsluttende Â«%c» mangler i %s"
-
-#: bashline.c:4219
-#, c-format
-msgid "%s: missing colon separator"
-msgstr "%s: kolon-skilletegn mangler"
-
-#: braces.c:321
-#, c-format
-msgid "brace expansion: cannot allocate memory for %s"
-msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for %s"
-
-#: braces.c:413
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for %d elementer"
-
-#: braces.c:452
-#, c-format
-msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for Â«%s»"
-
-#: builtins/alias.def:132
-#, c-format
-msgid "`%s': invalid alias name"
-msgstr "«%s»: ugyldig alias"
-
-#: builtins/bind.def:123 builtins/bind.def:126
-msgid "line editing not enabled"
-msgstr "linjeredigering er ikke slÃ¥tt pÃ¥"
-
-#: builtins/bind.def:213
-#, c-format
-msgid "`%s': invalid keymap name"
-msgstr "«%s»: ugyldig navn pÃ¥ tastaturoppsett"
-
-#: builtins/bind.def:253
-#, c-format
-msgid "%s: cannot read: %s"
-msgstr "%s: klarte ikke Ã¥ lese: %s"
-
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "«%s»: klarte ikke Ã¥ fjerne tildeling"
-
-#: builtins/bind.def:308 builtins/bind.def:338
-#, c-format
-msgid "`%s': unknown function name"
-msgstr "«%s»: ukjent funksjonsnavn"
-
-#: builtins/bind.def:316
-#, c-format
-msgid "%s is not bound to any keys.\n"
-msgstr "%s er ikke tilknyttet en knapp.\n"
-
-#: builtins/bind.def:320
-#, c-format
-msgid "%s can be invoked via "
-msgstr "%s kan startes via"
-
-#: builtins/break.def:79 builtins/break.def:121
-msgid "loop count"
-msgstr "antall sløyfer"
-
-#: builtins/break.def:141
-msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "gir bare mening i Â«for»-, Â«while»- og Â«until»-sløyfer"
-
-#: builtins/caller.def:136
-msgid ""
-"Returns the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns "
-msgstr ""
-"Viser kontekst for kall av gjeldende underrutine.\n"
-"    \n"
-"    Hvis EXPR mangler, vises"
-
-#: builtins/cd.def:320
-msgid "HOME not set"
-msgstr "HOME har ingen verdi"
-
-#: builtins/cd.def:328 builtins/common.c:167 test.c:878
-msgid "too many arguments"
-msgstr "for mange argumenter"
-
-#: builtins/cd.def:339
-msgid "OLDPWD not set"
-msgstr "OLDPWD har ingen verdi"
-
-#: builtins/common.c:102
-#, c-format
-msgid "line %d: "
-msgstr "linje %d: "
-
-#: builtins/common.c:140 error.c:265
-#, c-format
-msgid "warning: "
-msgstr "advarsel:"
-
-#: builtins/common.c:154
-#, c-format
-msgid "%s: usage: "
-msgstr "%s: bruk: "
-
-#: builtins/common.c:199 shell.c:509 shell.c:793
-#, c-format
-msgid "%s: option requires an argument"
-msgstr "%s: valget krever et argument"
-
-#: builtins/common.c:206
-#, c-format
-msgid "%s: numeric argument required"
-msgstr "%s: valget krever et tall-argument"
-
-#: builtins/common.c:213
-#, c-format
-msgid "%s: not found"
-msgstr "%s: ikke funnet"
-
-#: builtins/common.c:222 shell.c:806
-#, c-format
-msgid "%s: invalid option"
-msgstr "%s: ugyldig valg"
-
-#: builtins/common.c:229
-#, c-format
-msgid "%s: invalid option name"
-msgstr "%s: ugyldig valgnavn"
-
-#: builtins/common.c:236 general.c:240 general.c:245
-#, c-format
-msgid "`%s': not a valid identifier"
-msgstr "«%s»: ugyldig navn"
-
-#: builtins/common.c:246
-msgid "invalid octal number"
-msgstr "ugyldig oktal-tall"
-
-#: builtins/common.c:248
-msgid "invalid hex number"
-msgstr "ugldig heksadesimalt tall"
-
-#: builtins/common.c:250 expr.c:1470
-msgid "invalid number"
-msgstr "ugyldig tall"
-
-#: builtins/common.c:258
-#, c-format
-msgid "%s: invalid signal specification"
-msgstr "%s: ugyldig signalspesifikasjon"
-
-#: builtins/common.c:265
-#, c-format
-msgid "`%s': not a pid or valid job spec"
-msgstr "«%s» er hverken hverken et PID eller en gyldig jobbspesifikasjon"
-
-#: builtins/common.c:272 error.c:488
-#, c-format
-msgid "%s: readonly variable"
-msgstr "%s: skrivebeskyttet variabel"
-
-#: builtins/common.c:280
-#, c-format
-msgid "%s: %s out of range"
-msgstr "%s: %s er utenfor rekkevidde"
-
-#: builtins/common.c:280 builtins/common.c:282
-msgid "argument"
-msgstr "argument"
-
-#: builtins/common.c:282
-#, c-format
-msgid "%s out of range"
-msgstr "%s er utenfor rekkevidde"
-
-#: builtins/common.c:290
-#, c-format
-msgid "%s: no such job"
-msgstr "%s: jobben finnes ikke"
-
-#: builtins/common.c:298
-#, c-format
-msgid "%s: no job control"
-msgstr "%s: ingen jobbkontroll"
-
-#: builtins/common.c:300
-msgid "no job control"
-msgstr "ingen jobbkontroll"
-
-#: builtins/common.c:310
-#, c-format
-msgid "%s: restricted"
-msgstr "%s: begrenset"
-
-#: builtins/common.c:312
-msgid "restricted"
-msgstr "begrenset"
-
-#: builtins/common.c:320
-#, c-format
-msgid "%s: not a shell builtin"
-msgstr "%s: ikke innebygd i skall"
-
-#: builtins/common.c:329
-#, c-format
-msgid "write error: %s"
-msgstr "skrivefeil: %s"
-
-#: builtins/common.c:337
-#, c-format
-msgid "error setting terminal attributes: %s"
-msgstr "feil ved endring av terminal-egenskaper: %s"
-
-#: builtins/common.c:339
-#, c-format
-msgid "error getting terminal attributes: %s"
-msgstr "feil ved henting av terminal-egenskaper: %s"
-
-#: builtins/common.c:583
-#, c-format
-msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s: feil ved henting av gjeldende mappe: %s: %s\n"
-
-#: builtins/common.c:649 builtins/common.c:651
-#, c-format
-msgid "%s: ambiguous job spec"
-msgstr "%s: flertydig jobbspesifikasjon"
-
-#: builtins/common.c:916
-msgid "help not available in this version"
-msgstr ""
-
-#: builtins/complete.def:278
-#, c-format
-msgid "%s: invalid action name"
-msgstr "%s: ugyldig handlingsnavn"
-
-#: builtins/complete.def:451 builtins/complete.def:646
-#: builtins/complete.def:856
-#, c-format
-msgid "%s: no completion specification"
-msgstr "%s: ingen spesifikasjon for fullføring"
-
-#: builtins/complete.def:698
-msgid "warning: -F option may not work as you expect"
-msgstr "advarsel: valget Â«-F» virker kanskje ikke slik du forventer"
-
-#: builtins/complete.def:700
-msgid "warning: -C option may not work as you expect"
-msgstr "advarsel: valget Â«-C» virker kanskje ikke slik du forventer"
-
-#: builtins/complete.def:829
-msgid "not currently executing completion function"
-msgstr "fullføringsfunksjon kjøres ikke nÃ¥"
-
-#: builtins/declare.def:127
-msgid "can only be used in a function"
-msgstr "kan bare brukes i funksjoner"
-
-#: builtins/declare.def:330 builtins/declare.def:565
-#, c-format
-msgid "%s: reference variable cannot be an array"
-msgstr "%s: referansevariabler kan ikke være tabeller (arrays)"
-
-#: builtins/declare.def:339
-#, c-format
-msgid "%s: nameref variable self references not allowed"
-msgstr "%s: navnref.-variabler kan ikke referere til seg selv"
-
-#: builtins/declare.def:346 builtins/declare.def:574 subst.c:6228 subst.c:8537
-#, c-format
-msgid "%s: invalid variable name for name reference"
-msgstr "%s: ugyldig variabelnavn for navnreferanse"
-
-#: builtins/declare.def:424
-msgid "cannot use `-f' to make functions"
-msgstr "valget«-f» kan ikke brukes til Ã¥ lage funksjoner"
-
-#: builtins/declare.def:436 execute_cmd.c:5545
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: skrivebeskyttet funksjon"
-
-#: builtins/declare.def:614
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:627
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr "%s: tabellvariabler kan ikke Ã¸delegges pÃ¥ denne mÃ¥ten"
-
-#: builtins/declare.def:634 builtins/read.def:749
-#, c-format
-msgid "%s: cannot convert associative to indexed array"
-msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller"
-
-#: builtins/enable.def:137 builtins/enable.def:145
-msgid "dynamic loading not available"
-msgstr "dynamisk innlasting er ikke tilgjengelig"
-
-#: builtins/enable.def:313
-#, c-format
-msgid "cannot open shared object %s: %s"
-msgstr "klarte ikke Ã¥ Ã¥pne delt objekt %s: %s"
-
-#: builtins/enable.def:339
-#, c-format
-msgid "cannot find %s in shared object %s: %s"
-msgstr "fant ikke %s i delt objekt %s: %s"
-
-#: builtins/enable.def:465
-#, c-format
-msgid "%s: not dynamically loaded"
-msgstr "%s: ikke dynamisk innlastet"
-
-#: builtins/enable.def:480
-#, c-format
-msgid "%s: cannot delete: %s"
-msgstr "%s: klarte ikke Ã¥ slette: %s"
-
-#: builtins/evalfile.c:143 builtins/hash.def:171 execute_cmd.c:5386
-#, c-format
-msgid "%s: is a directory"
-msgstr "%s: er en mappe"
-
-#: builtins/evalfile.c:149
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: ikke en vanlig fil"
-
-#: builtins/evalfile.c:158
-#, c-format
-msgid "%s: file is too large"
-msgstr "%s: fila er for stor"
-
-#: builtins/evalfile.c:193 builtins/evalfile.c:211 shell.c:1544
-#, c-format
-msgid "%s: cannot execute binary file"
-msgstr "%s: klarte ikke Ã¥ kjøre binærfil"
-
-#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228
-#, c-format
-msgid "%s: cannot execute: %s"
-msgstr "%s: klarte ikke Ã¥ kjøre: %s"
-
-#: builtins/exit.def:67
-#, c-format
-msgid "logout\n"
-msgstr "logg ut\n"
-
-#: builtins/exit.def:92
-msgid "not login shell: use `exit'"
-msgstr "ikke innloggingsskall. Bruk Â«exit»"
-
-#: builtins/exit.def:124
-#, c-format
-msgid "There are stopped jobs.\n"
-msgstr "Bakgrunnsjobb(er) venter.\n"
-
-#: builtins/exit.def:126
-#, c-format
-msgid "There are running jobs.\n"
-msgstr "Bakgrunnsjobb(er) kjører.\n"
-
-#: builtins/fc.def:268
-msgid "no command found"
-msgstr "fant ingen kommando"
-
-#: builtins/fc.def:326 builtins/fc.def:375
-msgid "history specification"
-msgstr "historikk-spesifikasjon"
-
-#: builtins/fc.def:396
-#, c-format
-msgid "%s: cannot open temp file: %s"
-msgstr "%s: klarte ikke Ã¥ Ã¥pne midlertidig fil: %s"
-
-#: builtins/fg_bg.def:153 builtins/jobs.def:282
-msgid "current"
-msgstr "gjeldende"
-
-#: builtins/fg_bg.def:162
-#, c-format
-msgid "job %d started without job control"
-msgstr "jobb %d startet uten jobbkontroll"
-
-#: builtins/getopt.c:110
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: -- %c er et ugyldig valg\n"
-
-#: builtins/getopt.c:111
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: -- %c krever et argument\n"
-
-#: builtins/hash.def:92
-msgid "hashing disabled"
-msgstr "nøkkelsummering er slÃ¥tt av"
-
-#: builtins/hash.def:138
-#, c-format
-msgid "%s: hash table empty\n"
-msgstr "%s: kontrollsum-tabell er tom\n"
-
-#: builtins/hash.def:253
-#, c-format
-msgid "hits\tcommand\n"
-msgstr "treff\tkommando\n"
-
-#: builtins/help.def:134
-#, c-format
-msgid "Shell commands matching keyword `"
-msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Skallkommandoer som samsvarer med nøkkelordet `"
-msgstr[1] "Skallkommandoer som samsvarer med nøkkelordene `"
-
-#: builtins/help.def:186
-#, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"ingen hjelpeemner samsvarer med Â«%s».  Prøv Â«help help», Â«man -k %s» eller Â«info "
-"%s»."
-
-#: builtins/help.def:225
-#, c-format
-msgid "%s: cannot open: %s"
-msgstr "%s: klarte ikke Ã¥ Ã¥pne: %s"
-
-#: builtins/help.def:513
-#, c-format
-msgid ""
-"These shell commands are defined internally.  Type `help' to see this list.\n"
-"Type `help name' to find out more about the function `name'.\n"
-"Use `info bash' to find out more about the shell in general.\n"
-"Use `man -k' or `info' to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-msgstr ""
-"Disse skallkommandoene er internt definert. Skriv Â«help» for Ã¥ se denne "
-"lista.\n"
-"Skriv Â«help name» for Ã¥ finne ut mer om funksjonen Â«name».\n"
-"Bruk Â«info bash» for Ã¥ finne generell info om skallet.\n"
-"Bruk Â«man -k» eller Â«info» for Ã¥ finne ut mer om kommandoer som ikke er pÃ¥ "
-"denne lista.\n"
-"\n"
-"Stjerne (*) ved siden av et kommandonavn betyr at gjeldende kommando er "
-"slÃ¥tt av.\n"
-"\n"
-
-#: builtins/history.def:154
-msgid "cannot use more than one of -anrw"
-msgstr "du kan ikke bruke flere enn ett av valgene -anrw pÃ¥ Ã©n gang"
-
-#: builtins/history.def:186
-msgid "history position"
-msgstr "historikkposisjon"
-
-#: builtins/history.def:371
-#, c-format
-msgid "%s: history expansion failed"
-msgstr "%s: historikk-utvidelse mislyktes"
-
-#: builtins/inlib.def:71
-#, c-format
-msgid "%s: inlib failed"
-msgstr "%s: inlib mislyktes"
-
-#: builtins/jobs.def:109
-msgid "no other options allowed with `-x'"
-msgstr "valget Â«-x» kan ikke brukes i kombinasjon med andre valg"
-
-#: builtins/kill.def:201
-#, c-format
-msgid "%s: arguments must be process or job IDs"
-msgstr "%s: argumenter mÃ¥ være prosess- eller jobb-ID-er"
-
-#: builtins/kill.def:264
-msgid "Unknown error"
-msgstr "Ukjent feil"
-
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
-msgid "expression expected"
-msgstr "forventet uttrykk"
-
-#: builtins/mapfile.def:178
-#, c-format
-msgid "%s: not an indexed array"
-msgstr "%s: ikke en indeksert tabell"
-
-#: builtins/mapfile.def:272 builtins/read.def:305
-#, c-format
-msgid "%s: invalid file descriptor specification"
-msgstr "%s: ugyldig spesifikasjon av fildeskriptor"
-
-#: builtins/mapfile.def:280 builtins/read.def:312
-#, c-format
-msgid "%d: invalid file descriptor: %s"
-msgstr "%d: ugyldig fildeskriptor: %s"
-
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
-#, c-format
-msgid "%s: invalid line count"
-msgstr "%s: ugyldig linjeantall"
-
-#: builtins/mapfile.def:300
-#, c-format
-msgid "%s: invalid array origin"
-msgstr "%s: ugyldig tabellopphav"
-
-#: builtins/mapfile.def:317
-#, c-format
-msgid "%s: invalid callback quantum"
-msgstr "%s: ugyldig tilbakekallsmengde"
-
-#: builtins/mapfile.def:349
-msgid "empty array variable name"
-msgstr "tomt navn pÃ¥ tabellvariabel"
-
-#: builtins/mapfile.def:370
-msgid "array variable support required"
-msgstr "støtte for tabellvariabler kreves"
-
-#: builtins/printf.def:410
-#, c-format
-msgid "`%s': missing format character"
-msgstr "«%s»: formattegn mangler"
-
-#: builtins/printf.def:464
-#, c-format
-msgid "`%c': invalid time format specification"
-msgstr "«%c»: ugyldig spesifikasjon av tidsformat"
-
-#: builtins/printf.def:666
-#, c-format
-msgid "`%c': invalid format character"
-msgstr "«%c»: ugyldig formattegn"
-
-#: builtins/printf.def:692
-#, c-format
-msgid "warning: %s: %s"
-msgstr "advarsel: %s: %s"
-
-#: builtins/printf.def:778
-#, c-format
-msgid "format parsing problem: %s"
-msgstr "problem med tolkning av format: %s"
-
-#: builtins/printf.def:875
-msgid "missing hex digit for \\x"
-msgstr "heks-siffer mangler for \\x"
-
-#: builtins/printf.def:890
-#, c-format
-msgid "missing unicode digit for \\%c"
-msgstr "unicode-siffer mangler for  \\%c"
-
-#: builtins/pushd.def:199
-msgid "no other directory"
-msgstr "ingen annen mappe"
-
-#: builtins/pushd.def:360
-#, c-format
-msgid "%s: invalid argument"
-msgstr "%s: ugyldig argument"
-
-#: builtins/pushd.def:475
-msgid "<no current directory>"
-msgstr "<ingen gjeldende mappe>"
-
-#: builtins/pushd.def:519
-msgid "directory stack empty"
-msgstr "mappestabel er tom"
-
-#: builtins/pushd.def:521
-msgid "directory stack index"
-msgstr "mappestabel-indeks"
-
-#: builtins/pushd.def:696
-msgid ""
-"Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-"    \tdirs when invoked without options, starting with zero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"\tdirs when invoked without options, starting with zero."
-msgstr ""
-"Vis liste over mapper som blir husket. Mapper\n"
-"    havner pÃ¥ denne lista med kommandoen Â«pushd». Du kan gÃ¥\n"
-"    tilbake i lista med kommandoen Â«popd».\n"
-"    \n"
-"    Valg:\n"
-"      -c\ttøm mappestabel ved Ã¥ slette alle elementer\n"
-"      -l\tikke legg til tildeprefiks pÃ¥ stier som er relative\n"
-"    \ttil gjeldende hjemmemappe\n"
-"      -p\tskriv ut mappetsabel med ett element per linje\n"
-"      -v\tskriv ut mappestabel med ett element per linje som har\n"
-"    \tstabelposisjon som prefiks\n"
-"    \n"
-"    Argumenter:\n"
-"      +N\tVis N-te mappe talt fra null\n"
-"    \tpÃ¥ venstre side av lista (gjelder nÃ¥r programmet kjøres uten valg).\n"
-"    \n"
-"      -N\tVis N-te  mappe talt fra null\n"
-"\tpÃ¥ høyre side av lista (gjelder nÃ¥r programmet kjøres uten valg)."
-
-#: builtins/pushd.def:718
-msgid ""
-"Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the left of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \tfrom the right of the list shown by `dirs', starting with\n"
-"    \tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-"Legger til en mappe i toppen av mappestabelen, eller rullerer\n"
-"    stabelen slik at Ã¸verste mappe blir gjeldende arbeidsmappe.\n"
-"    Hvis ingen argumenter er valgt, bytter de to Ã¸verste mappene plass.\n"
-"    \n"
-"    Valg:\n"
-"      -n\tLar være Ã¥ bytte mappe nÃ¥r mapper legges til i stabelen,\n"
-"    \tslik at kun selve stabelen blir endret.\n"
-"    \n"
-"    Argumenter:\n"
-"      +N\tRullerer stabelen slik at N-te mappe - talt fra\n"
-"    \tnull til venstre i lista etter Â«dirs» - havner Ã¸verst.\n"
-"    \n"
-"      -N\tRullerer stabelen slik at N-te mappe - talt fra\n"
-"    \tnull til høyre i lista etter Â«dirs» - havner Ã¸verst\n"
-"    \n"
-"      dir\tLegger til DIR i toppen av mappestabelen, og tar den\n"
-"    \ti bruk som gjeldende arbeidsmappe.\n"
-"    \n"
-"    Den innebygde funksjonen Â«dirs» viser mappestabelen."
-
-#: builtins/pushd.def:743
-msgid ""
-"Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack."
-msgstr ""
-"Fjerner mapper fra mappestabelen. Hvis ingen argumenter brukes,\n"
-"    fjerner programmet Ã¸verste mappe fra stabelen og bytter til det som "
-"deretter er Ã¸verste mappe.\n"
-"    \n"
-"    Valg:\n"
-"      -n\tLar være Ã¥ bytte mappe nÃ¥r mapper fjernes fra stabelen,\n"
-"    \tslik at bare stabelen blir endret.\n"
-"    \n"
-"    Argumenter:\n"
-"      +N\tFjerner N-te oppføring - talt fra null til venstre i lista\n"
-"    \tetter Â«dirs». For eksempel fjerner Â«popd +0»\n"
-"    \tførste mappe, og Â«popd +1» den andre.\n"
-"    \n"
-"      -N\tFjerner N-te oppføring - talt fra null til høyre i lista\n"
-"    \tetter Â«dirs». For eksempel fjerner Â«popd -0»\n"
-"    \tsiste mappe, og Â«popd -1» den nest siste.\n"
-"    \n"
-"    Den innebygde funksjonen Â«dirs» viser mappestabelen."
-
-#: builtins/read.def:278
-#, c-format
-msgid "%s: invalid timeout specification"
-msgstr "%s: ugyldig spesifikasjon av tidsavbrudd"
-
-#: builtins/read.def:694
-#, c-format
-msgid "read error: %d: %s"
-msgstr "lesefeil: %d: %s"
-
-#: builtins/return.def:71
-msgid "can only `return' from a function or sourced script"
-msgstr "du kan bare Â«return» fra en funksjon eller kildeskript"
-
-#: builtins/set.def:829
-msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-"du kan ikke utføre Â«unset» (tømme bÃ¥de en funksjon og en variabel for "
-"verdier) samtidig"
-
-#: builtins/set.def:876
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: klarte ikke Ã¥ fjerne verdi"
-
-#: builtins/set.def:897
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: klarte ikke Ã¥ fjerne verdi fra skrivebeskyttet %s"
-
-#: builtins/set.def:910
-#, c-format
-msgid "%s: not an array variable"
-msgstr "%s: ikke en tabellvariabel"
-
-#: builtins/setattr.def:188
-#, c-format
-msgid "%s: not a function"
-msgstr "%s: ikke en funksjon"
-
-#: builtins/setattr.def:193
-#, fuzzy, c-format
-msgid "%s: cannot export"
-msgstr "%s: klarte ikke Ã¥ fjerne verdi"
-
-#: builtins/shift.def:73 builtins/shift.def:79
-msgid "shift count"
-msgstr "shift-antall"
-
-#: builtins/shopt.def:283
-msgid "cannot set and unset shell options simultaneously"
-msgstr "du kan ikke bÃ¥de definere og fjerne skallvalg samtidig"
-
-#: builtins/shopt.def:350
-#, c-format
-msgid "%s: invalid shell option name"
-msgstr "%s: ugyldig navn pÃ¥ skallvalg"
-
-#: builtins/source.def:131
-msgid "filename argument required"
-msgstr "filnavn-argument kreves"
-
-#: builtins/source.def:157
-#, c-format
-msgid "%s: file not found"
-msgstr "%s: fant ikke fil"
-
-#: builtins/suspend.def:101
-msgid "cannot suspend"
-msgstr "klarte ikke Ã¥ sette i hvilemodus"
-
-#: builtins/suspend.def:111
-msgid "cannot suspend a login shell"
-msgstr "klarte ikke Ã¥ sette et innloggingsskall i hvilemodus"
-
-#: builtins/type.def:235
-#, c-format
-msgid "%s is aliased to `%s'\n"
-msgstr "%s har alias Â«%s»\n"
-
-#: builtins/type.def:256
-#, c-format
-msgid "%s is a shell keyword\n"
-msgstr "%s er et skall-nøkkelord\n"
-
-#: builtins/type.def:275
-#, c-format
-msgid "%s is a function\n"
-msgstr "%s er en funksjon\n"
-
-#: builtins/type.def:297
-#, c-format
-msgid "%s is a shell builtin\n"
-msgstr "%s er en innebygget skallfunksjon\n"
-
-#: builtins/type.def:318 builtins/type.def:403
-#, c-format
-msgid "%s is %s\n"
-msgstr "%s er %s\n"
-
-#: builtins/type.def:338
-#, c-format
-msgid "%s is hashed (%s)\n"
-msgstr "%s er nøkkelsummert («hashed») (%s)\n"
-
-#: builtins/ulimit.def:397
-#, c-format
-msgid "%s: invalid limit argument"
-msgstr "%s: ugyldig grenseargument"
-
-#: builtins/ulimit.def:423
-#, c-format
-msgid "`%c': bad command"
-msgstr "«%c»: ugyldig kommando"
-
-#: builtins/ulimit.def:452
-#, c-format
-msgid "%s: cannot get limit: %s"
-msgstr "%s: klarte ikke Ã¥ hente grense: %s"
-
-#: builtins/ulimit.def:478
-msgid "limit"
-msgstr "grense"
-
-#: builtins/ulimit.def:490 builtins/ulimit.def:790
-#, c-format
-msgid "%s: cannot modify limit: %s"
-msgstr "%s: klarte ikke Ã¥ endre grense: %s"
-
-#: builtins/umask.def:114
-msgid "octal number"
-msgstr "oktalt tall"
-
-#: builtins/umask.def:231
-#, c-format
-msgid "`%c': invalid symbolic mode operator"
-msgstr "«%c»: ugyldig symbolsk modus-operatør"
-
-#: builtins/umask.def:286
-#, c-format
-msgid "`%c': invalid symbolic mode character"
-msgstr "«%c»: ugyldig symbolsk modustegn"
-
-#: error.c:90 error.c:325 error.c:327 error.c:329
-msgid " line "
-msgstr " linje "
-
-#: error.c:165
-#, c-format
-msgid "last command: %s\n"
-msgstr "forrige kommando: %s\n"
-
-#: error.c:173
-#, c-format
-msgid "Aborting..."
-msgstr "Abryter â€¦"
-
-#: error.c:440
-msgid "unknown command error"
-msgstr "ukjent kommandofeil"
-
-#: error.c:441
-msgid "bad command type"
-msgstr "ugyldig kommandotype"
-
-#: error.c:442
-msgid "bad connector"
-msgstr "ugyldig tilkobling"
-
-#: error.c:443
-msgid "bad jump"
-msgstr "ugyldig hopp"
-
-#: error.c:481
-#, c-format
-msgid "%s: unbound variable"
-msgstr "%s: utildelt variabel"
-
-#: eval.c:192
-#, c-format
-msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\atidsavbrudd for inndata: auto-utlogging\n"
-
-#: execute_cmd.c:538
-#, c-format
-msgid "cannot redirect standard input from /dev/null: %s"
-msgstr "klarte ikke Ã¥ videresende standard inndata fra Â«/dev/null». %s"
-
-#: execute_cmd.c:1286
-#, c-format
-msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr "TIMEFORMAT: Â«%c» er et ugyldig formattegn"
-
-#: execute_cmd.c:2344
-msgid "pipe error"
-msgstr "datarør-feil"
-
-#: execute_cmd.c:4419
-#, fuzzy, c-format
-msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr "%s: grensa for nivÃ¥er av funksjoner i funksjoner (%d) er overskredet"
-
-#: execute_cmd.c:4431
-#, fuzzy, c-format
-msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: grensa for nivÃ¥er av funksjoner i funksjoner (%d) er overskredet"
-
-#: execute_cmd.c:4540
-#, c-format
-msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr "%s: grensa for nivÃ¥er av funksjoner i funksjoner (%d) er overskredet"
-
-#: execute_cmd.c:5061
-#, c-format
-msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde Â«/»"
-
-#: execute_cmd.c:5149
-#, c-format
-msgid "%s: command not found"
-msgstr "%s: fant ikke kommando"
-
-#: execute_cmd.c:5384
-#, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
-
-#: execute_cmd.c:5421
-#, c-format
-msgid "%s: %s: bad interpreter"
-msgstr "%s: %s: ugyldig tolk"
-
-#: execute_cmd.c:5458
-#, c-format
-msgid "%s: cannot execute binary file: %s"
-msgstr "%s: klarte ikke Ã¥ kjøre binærfil: %s"
-
-#: execute_cmd.c:5536
-#, c-format
-msgid "`%s': is a special builtin"
-msgstr "«%s» er en innebygd spesialfunksjon"
-
-#: execute_cmd.c:5588
-#, c-format
-msgid "cannot duplicate fd %d to fd %d"
-msgstr "klarte ikke Ã¥ duplisere fd %d til fd %d"
-
-#: expr.c:259
-msgid "expression recursion level exceeded"
-msgstr "grensa for rekursjonsnivÃ¥er i uttrykk er overskredet"
-
-#: expr.c:283
-msgid "recursion stack underflow"
-msgstr "rekursjonsstabelen er tom"
-
-#: expr.c:431
-msgid "syntax error in expression"
-msgstr "uttrykk inneholder syntaksfeil"
-
-#: expr.c:475
-msgid "attempted assignment to non-variable"
-msgstr "du forsøkte Ã¥ tilordne en verdi til noe som ikke er en variabel"
-
-#: expr.c:495 expr.c:858
-msgid "division by 0"
-msgstr "forsøkte Ã¥ dele pÃ¥ 0"
-
-#: expr.c:542
-msgid "bug: bad expassign token"
-msgstr "programfeil: ugyldig expassign-symbol"
-
-#: expr.c:595
-msgid "`:' expected for conditional expression"
-msgstr "forventet Â«:» for betinget uttrykk"
-
-#: expr.c:919
-msgid "exponent less than 0"
-msgstr "eksponent er lavere enn 0"
-
-#: expr.c:976
-msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "forventet identifikator etter pre-økning eller pre-forminskelse"
-
-#: expr.c:1002
-msgid "missing `)'"
-msgstr "mangler Â«)»"
-
-#: expr.c:1053 expr.c:1390
-msgid "syntax error: operand expected"
-msgstr "syntaksfeil: forventet operand"
-
-#: expr.c:1392
-msgid "syntax error: invalid arithmetic operator"
-msgstr "syntaksfeil: ugyldig aritmetisk operatør"
-
-#: expr.c:1416
-#, c-format
-msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s: %s (feilaktig symbol er Â«%s»)"
-
-#: expr.c:1474
-msgid "invalid arithmetic base"
-msgstr "ugyldig aritmetisk grunntall"
-
-#: expr.c:1494
-msgid "value too great for base"
-msgstr "verdien er for høy for grunntallet"
-
-#: expr.c:1543
-#, c-format
-msgid "%s: expression error\n"
-msgstr "%s: feil i uttrykk\n"
-
-#: general.c:67
-msgid "getcwd: cannot access parent directories"
-msgstr "getcwd: fikk ikke tilgang til foreldermapper"
-
-#: input.c:102 subst.c:5529
-#, c-format
-msgid "cannot reset nodelay mode for fd %d"
-msgstr "klarte ikke Ã¥ tilbakestille nodelay-modus for fd %d"
-
-#: input.c:271
-#, c-format
-msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "klarte ikke Ã¥ knytte ny fildeskriptor til bash-inndata fra fd %d"
-
-#: input.c:279
-#, c-format
-msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede"
-
-#: jobs.c:487
-msgid "start_pipeline: pgrp pipe"
-msgstr "start_pipeline: pgrp-datarør"
-
-#: jobs.c:922
-#, c-format
-msgid "forked pid %d appears in running job %d"
-msgstr "kopiert pid %d finnes i kjørende jobb %d"
-
-#: jobs.c:1041
-#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld"
-
-#: jobs.c:1145
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: prosess %5ld (%s) i _kommandokø"
-
-#: jobs.c:1148
-#, c-format
-msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: markert PID %5ld (%s) som levende"
-
-#: jobs.c:1477
-#, c-format
-msgid "describe_pid: %ld: no such pid"
-msgstr "describe_pid: %ld: pid-en finnes ikke"
-
-#: jobs.c:1492
-#, c-format
-msgid "Signal %d"
-msgstr "Signal %d"
-
-#: jobs.c:1506 jobs.c:1532
-msgid "Done"
-msgstr "Ferdig"
-
-#: jobs.c:1511 siglist.c:123
-msgid "Stopped"
-msgstr "Venter"
-
-#: jobs.c:1515
-#, c-format
-msgid "Stopped(%s)"
-msgstr "Venter(%s)"
-
-#: jobs.c:1519
-msgid "Running"
-msgstr "Kjører"
-
-#: jobs.c:1536
-#, c-format
-msgid "Done(%d)"
-msgstr "Ferdig(%d)"
-
-#: jobs.c:1538
-#, c-format
-msgid "Exit %d"
-msgstr "Avsluttet %d"
-
-#: jobs.c:1541
-msgid "Unknown status"
-msgstr "Ukjent status"
-
-#: jobs.c:1628
-#, c-format
-msgid "(core dumped) "
-msgstr "(kjerne lagret i fil) "
-
-#: jobs.c:1647
-#, c-format
-msgid "  (wd: %s)"
-msgstr "  (wd: %s)"
-
-#: jobs.c:1869
-#, c-format
-msgid "child setpgid (%ld to %ld)"
-msgstr "underprosess setpgid (%ld til %ld)"
-
-#: jobs.c:2218 nojobs.c:634
-#, c-format
-msgid "wait: pid %ld is not a child of this shell"
-msgstr "wait: pid %ld er ikke en underprosess av dette skallet"
-
-#: jobs.c:2465
-#, c-format
-msgid "wait_for: No record of process %ld"
-msgstr "wait_for: Ingen kjennskap til prosess %ld"
-
-#: jobs.c:2785
-#, c-format
-msgid "wait_for_job: job %d is stopped"
-msgstr "wait_for_job: prosess %d venter"
-
-#: jobs.c:3077
-#, c-format
-msgid "%s: job has terminated"
-msgstr "%s: jobben er avsluttet"
-
-#: jobs.c:3086
-#, c-format
-msgid "%s: job %d already in background"
-msgstr "%s: jobb %d kjører allerede i bakgrunnen"
-
-#: jobs.c:3311
-msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr "waitchld: slÃ¥r pÃ¥ WNOHANG for Ã¥ unngÃ¥ kronisk blokkering"
-
-#: jobs.c:3810
-#, c-format
-msgid "%s: line %d: "
-msgstr "%s: linje %d: "
-
-#: jobs.c:3824 nojobs.c:872
-#, c-format
-msgid " (core dumped)"
-msgstr " (kjerne lagret i fil)"
-
-#: jobs.c:3836 jobs.c:3849
-#, c-format
-msgid "(wd now: %s)\n"
-msgstr "(wd nÃ¥: %s)\n"
-
-#: jobs.c:3881
-msgid "initialize_job_control: getpgrp failed"
-msgstr "initialize_job_control: getpgrp mislyktes"
-
-#: jobs.c:3944
-msgid "initialize_job_control: line discipline"
-msgstr "initialize_job_control: linjeregler"
-
-#: jobs.c:3954
-msgid "initialize_job_control: setpgid"
-msgstr "initialize_job_control: setpgid"
-
-#: jobs.c:3975 jobs.c:3984
-#, c-format
-msgid "cannot set terminal process group (%d)"
-msgstr "klarte ikke Ã¥ velge terminal-prosessgruppe (%d)"
-
-#: jobs.c:3989
-msgid "no job control in this shell"
-msgstr "ingen jobbkontroll i dette skallet"
-
-#: lib/malloc/malloc.c:296
-#, c-format
-msgid "malloc: failed assertion: %s\n"
-msgstr "malloc: mislykket premiss: %s\n"
-
-#: lib/malloc/malloc.c:312
-#, c-format
-msgid ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-msgstr ""
-"\r\n"
-"malloc: %s:%d: urimelig premiss\r\n"
-
-#: lib/malloc/malloc.c:313
-msgid "unknown"
-msgstr "ukjent"
-
-#: lib/malloc/malloc.c:801
-msgid "malloc: block on free list clobbered"
-msgstr "malloc: rotete blokk pÃ¥ befrielsesliste"
-
-#: lib/malloc/malloc.c:878
-msgid "free: called with already freed block argument"
-msgstr "free: ble bedt om Ã¥ behandle blokk som allerede er ledig"
-
-#: lib/malloc/malloc.c:881
-msgid "free: called with unallocated block argument"
-msgstr "free: ble bedt om Ã¥ behandle blokk som ikke er tildelt"
-
-#: lib/malloc/malloc.c:900
-msgid "free: underflow detected; mh_nbytes out of range"
-msgstr "free: tomt. mh_nbytes er utenfor rekkevidde"
-
-#: lib/malloc/malloc.c:906
-msgid "free: start and end chunk sizes differ"
-msgstr "free: start- og sluttdel er av ulik størrelse"
-
-#: lib/malloc/malloc.c:1005
-msgid "realloc: called with unallocated block argument"
-msgstr "realloc: ble bedt om Ã¥ behandle blokk som ikke er tildelt"
-
-#: lib/malloc/malloc.c:1020
-msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde"
-
-#: lib/malloc/malloc.c:1026
-msgid "realloc: start and end chunk sizes differ"
-msgstr "realloc: start- og sluttdel er av ulik størrelse"
-
-#: lib/malloc/table.c:191
-#, c-format
-msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr "register_alloc: tildelingstabell er full med FIND_ALLOC?\n"
-
-#: lib/malloc/table.c:200
-#, c-format
-msgid "register_alloc: %p already in table as allocated?\n"
-msgstr "register_alloc: finnes %p allerede i tabellen som tildelt?\n"
-
-#: lib/malloc/table.c:253
-#, c-format
-msgid "register_free: %p already in table as free?\n"
-msgstr "register_free: finnes %p allerede i tabellen som ledig?\n"
-
-#: lib/sh/fmtulong.c:102
-msgid "invalid base"
-msgstr "ugyldig grunntall"
-
-#: lib/sh/netopen.c:168
-#, c-format
-msgid "%s: host unknown"
-msgstr "%s: ukjent vert"
-
-#: lib/sh/netopen.c:175
-#, c-format
-msgid "%s: invalid service"
-msgstr "%s: ugyldig tjeneste"
-
-#: lib/sh/netopen.c:306
-#, c-format
-msgid "%s: bad network path specification"
-msgstr "%s: ugyldig spesifikasjon av nettverkssti"
-
-#: lib/sh/netopen.c:346
-msgid "network operations not supported"
-msgstr "nettverkshandlinger støttes ikke"
-
-#: locale.c:200
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr "setlocale: LC_ALL: klarte ikke Ã¥ bytte region (%s)"
-
-#: locale.c:202
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr "setlocale: LC_ALL: klarte ikke Ã¥ bytte region (%s): %s"
-
-#: locale.c:259
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "setlocale: %s: klarte ikke Ã¥ bytte region (%s)"
-
-#: locale.c:261
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "setlocale: %s: klarte ikke Ã¥ bytte region (%s): %s"
-
-#: mailcheck.c:439
-msgid "You have mail in $_"
-msgstr "Du har e-post i $_"
-
-#: mailcheck.c:464
-msgid "You have new mail in $_"
-msgstr "Du har ny e-post i $_"
-
-#: mailcheck.c:480
-#, c-format
-msgid "The mail in %s has been read\n"
-msgstr "Posten i %s er lest\n"
-
-#: make_cmd.c:326
-msgid "syntax error: arithmetic expression required"
-msgstr "syntaksfeil: aritmetisk uttrykk kreves"
-
-#: make_cmd.c:328
-msgid "syntax error: `;' unexpected"
-msgstr "syntaksfeil: uforventet Â«;»"
-
-#: make_cmd.c:329
-#, c-format
-msgid "syntax error: `((%s))'"
-msgstr "syntaksfeil: Â«((%s))»"
-
-#: make_cmd.c:581
-#, c-format
-msgid "make_here_document: bad instruction type %d"
-msgstr "make_here_document: %d er en ugyldig instrukstype"
-
-#: make_cmd.c:665
-#, c-format
-msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "here-dokument ved linje %d adskilt av slutt pÃ¥ fil (forventet Â«%s»)"
-
-#: make_cmd.c:763
-#, c-format
-msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
-"make_redirection: videresendinginstruks Â«%d» er utenfor tillatt rekkevidde"
-
-#: parse.y:2687
-msgid "maximum here-document count exceeded"
-msgstr ""
-
-#: parse.y:3354 parse.y:3637
-#, c-format
-msgid "unexpected EOF while looking for matching `%c'"
-msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter Â«%c»"
-
-#: parse.y:4247
-msgid "unexpected EOF while looking for `]]'"
-msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter Â«]]»"
-
-#: parse.y:4252
-#, c-format
-msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet Â«%s»"
-
-#: parse.y:4256
-msgid "syntax error in conditional expression"
-msgstr "syntaksfeil i betinget uttrykk"
-
-#: parse.y:4334
-#, c-format
-msgid "unexpected token `%s', expected `)'"
-msgstr "forventet ikke symbolet Â«%s», men Â«)»"
-
-#: parse.y:4338
-msgid "expected `)'"
-msgstr "forventet Â«)»"
-
-#: parse.y:4366
-#, c-format
-msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "«%s» er et uforventet argument for betinget unær operatør"
-
-#: parse.y:4370
-msgid "unexpected argument to conditional unary operator"
-msgstr "uforventet argument for betinget unær operatør"
-
-#: parse.y:4416
-#, c-format
-msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør"
-
-#: parse.y:4420
-msgid "conditional binary operator expected"
-msgstr "forventet betinget binæroperatør"
-
-#: parse.y:4442
-#, c-format
-msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "«%s» er et uforventet argument for betinget binæroperatør"
-
-#: parse.y:4446
-msgid "unexpected argument to conditional binary operator"
-msgstr "uforventet argument for betinget binæroperatør"
-
-#: parse.y:4457
-#, c-format
-msgid "unexpected token `%c' in conditional command"
-msgstr "«%c» er et uforventet symbol i en betinget kommando"
-
-#: parse.y:4460
-#, c-format
-msgid "unexpected token `%s' in conditional command"
-msgstr "«%s» er et uforventet symbol i en betinget kommando"
-
-#: parse.y:4464
-#, c-format
-msgid "unexpected token %d in conditional command"
-msgstr "«%d» er et uforventet symbol i en betinget kommando"
-
-#: parse.y:5814
-#, c-format
-msgid "syntax error near unexpected token `%s'"
-msgstr "syntaksfeil ved Â«%s», som er et uforventet symbol"
-
-#: parse.y:5832
-#, c-format
-msgid "syntax error near `%s'"
-msgstr "syntaksfeil ved Â«%s»"
-
-#: parse.y:5842
-msgid "syntax error: unexpected end of file"
-msgstr "syntaksfeil: uforventet slutt pÃ¥ fil"
-
-#: parse.y:5842
-msgid "syntax error"
-msgstr "syntaksfeil"
-
-#: parse.y:5904
-#, c-format
-msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Bruk Â«%s» for Ã¥ gÃ¥ ut av skallet.\n"
-
-#: parse.y:6066
-msgid "unexpected EOF while looking for matching `)'"
-msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter Â«)»"
-
-#: pcomplete.c:1126
-#, c-format
-msgid "completion: function `%s' not found"
-msgstr "fullføring: fant ikke funksjonen Â«%s»"
-
-#: pcomplib.c:182
-#, c-format
-msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr "progcomp_insert: %s: NULL COMPSPEC"
-
-#: print_cmd.c:301
-#, c-format
-msgid "print_command: bad connector `%d'"
-msgstr "print_command: Â«%d» er en ugyldig tilkobling"
-
-#: print_cmd.c:374
-#, c-format
-msgid "xtrace_set: %d: invalid file descriptor"
-msgstr "xtrace_set: %d: ugyldig fildeskriptor"
-
-#: print_cmd.c:379
-msgid "xtrace_set: NULL file pointer"
-msgstr "xtrace_set: filpeker er NULL"
-
-#: print_cmd.c:383
-#, c-format
-msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
-msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-
-#: print_cmd.c:1523
-#, c-format
-msgid "cprintf: `%c': invalid format character"
-msgstr "cprintf: Â«%c»: ugyldig formattegn"
-
-#: redir.c:126 redir.c:174
-msgid "file descriptor out of range"
-msgstr "fildeskriptor er utenfor tillatt rekkevidde"
-
-#: redir.c:181
-#, c-format
-msgid "%s: ambiguous redirect"
-msgstr "%s: flertydig videresending"
-
-#: redir.c:185
-#, c-format
-msgid "%s: cannot overwrite existing file"
-msgstr "%s: klarte ikke Ã¥ overskrive fil"
-
-#: redir.c:190
-#, c-format
-msgid "%s: restricted: cannot redirect output"
-msgstr "%s: ikke tillatt: klarte ikke Ã¥ videresende utdata"
-
-#: redir.c:195
-#, c-format
-msgid "cannot create temp file for here-document: %s"
-msgstr "klarte ikke Ã¥ lage midlertidig fil for here-dokument: %s"
-
-#: redir.c:199
-#, c-format
-msgid "%s: cannot assign fd to variable"
-msgstr "%s: klarte ikke Ã¥ knytte fd til variabel"
-
-#: redir.c:589
-msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling"
-
-#: redir.c:871 redir.c:986 redir.c:1047 redir.c:1212
-msgid "redirection error: cannot duplicate fd"
-msgstr "videresendingsfeil: klarte ikke Ã¥ duplisere fd"
-
-#: shell.c:342
-msgid "could not find /tmp, please create!"
-msgstr "fant ikke Â«/tmp». Opprett denne mappa!"
-
-#: shell.c:346
-msgid "/tmp must be a valid directory name"
-msgstr "«/tmp» mÃ¥ være et gyldig mappenavn"
-
-#: shell.c:895
-#, c-format
-msgid "%c%c: invalid option"
-msgstr "%c%c: ugyldig valg"
-
-#: shell.c:1250
-#, fuzzy, c-format
-msgid "cannot set uid to %d: effective uid %d"
-msgstr "klarte ikke Ã¥ tilbakestille nodelay-modus for fd %d"
-
-#: shell.c:1257
-#, fuzzy, c-format
-msgid "cannot set gid to %d: effective gid %d"
-msgstr "klarte ikke Ã¥ tilbakestille nodelay-modus for fd %d"
-
-#: shell.c:1532
-#, fuzzy, c-format
-msgid "%s: Is a directory"
-msgstr "%s: er en mappe"
-
-#: shell.c:1737
-msgid "I have no name!"
-msgstr "Jeg manger navn!"
-
-#: shell.c:1888
-#, c-format
-msgid "GNU bash, version %s-(%s)\n"
-msgstr "GNU bash, versjon %s-(%s)\n"
-
-#: shell.c:1889
-#, c-format
-msgid ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-msgstr ""
-"Bruk:\t%s [langt GNU-valg] [valg] â€¦\n"
-"\t%s [langt GNU-valg] [valg] skriptfil â€¦\n"
-
-#: shell.c:1891
-msgid "GNU long options:\n"
-msgstr "Lange GNU-valg:\n"
-
-#: shell.c:1895
-msgid "Shell options:\n"
-msgstr "Skallvalg:\n"
-
-#: shell.c:1896
-msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
-"\t«-ilrsD»,  Â«-c kommando» eller Â«-O kortvalg_valg»\t\t(kun programkall)\n"
-
-#: shell.c:1911
-#, c-format
-msgid "\t-%s or -o option\n"
-msgstr "\t«-%s» eller Â«-o»\n"
-
-#: shell.c:1917
-#, c-format
-msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr "Skriv Â«%s -c \"help set\"» for mer informasjon om skallvalg.\n"
-
-#: shell.c:1918
-#, c-format
-msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr "Skriv Â«%s -c help» for mer informasjon om innebygde skallkommandoer.\n"
-
-#: shell.c:1919
-#, c-format
-msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "Bruk kommandoen Â«bashbug» for Ã¥ rapportere programfeil.\n"
-
-#: sig.c:701
-#, c-format
-msgid "sigprocmask: %d: invalid operation"
-msgstr "sigprocmask: %d: ugyldig handling"
-
-#: siglist.c:48
-msgid "Bogus signal"
-msgstr "Ugyldig signal"
-
-#: siglist.c:51
-msgid "Hangup"
-msgstr "Legg pÃ¥"
-
-#: siglist.c:55
-msgid "Interrupt"
-msgstr "Forstyrr"
-
-#: siglist.c:59
-msgid "Quit"
-msgstr "Avslutt"
-
-#: siglist.c:63
-msgid "Illegal instruction"
-msgstr "Ugyldig instruks"
-
-#: siglist.c:67
-msgid "BPT trace/trap"
-msgstr "BPT-sporing/-fanging"
-
-#: siglist.c:75
-msgid "ABORT instruction"
-msgstr "ABORT-instruks"
-
-#: siglist.c:79
-msgid "EMT instruction"
-msgstr "EMT-instruks"
-
-#: siglist.c:83
-msgid "Floating point exception"
-msgstr "Flyttallsfeil"
-
-#: siglist.c:87
-msgid "Killed"
-msgstr "Drept"
-
-#: siglist.c:91
-msgid "Bus error"
-msgstr "Bussfeil"
-
-#: siglist.c:95
-msgid "Segmentation fault"
-msgstr "Segmenteringsfeil"
-
-#: siglist.c:99
-msgid "Bad system call"
-msgstr "Ugyldig systemkall"
-
-#: siglist.c:103
-msgid "Broken pipe"
-msgstr "Ødelagt datarør"
-
-#: siglist.c:107
-msgid "Alarm clock"
-msgstr "Alarmklokke"
-
-#: siglist.c:111
-msgid "Terminated"
-msgstr "Avsluttet"
-
-#: siglist.c:115
-msgid "Urgent IO condition"
-msgstr "Hastende IO-tilstand"
-
-#: siglist.c:119
-msgid "Stopped (signal)"
-msgstr "Stoppet (signal)"
-
-#: siglist.c:127
-msgid "Continue"
-msgstr "Fortsett"
-
-#: siglist.c:135
-msgid "Child death or stop"
-msgstr "Død eller stans av underprosess"
-
-#: siglist.c:139
-msgid "Stopped (tty input)"
-msgstr "Stoppet (tty-inndata)"
-
-#: siglist.c:143
-msgid "Stopped (tty output)"
-msgstr "Stoppet (tty-utdata)"
-
-#: siglist.c:147
-msgid "I/O ready"
-msgstr "I/O klar"
-
-#: siglist.c:151
-msgid "CPU limit"
-msgstr "CPU-grense"
-
-#: siglist.c:155
-msgid "File limit"
-msgstr "Filgrense"
-
-#: siglist.c:159
-msgid "Alarm (virtual)"
-msgstr "Alarm (virtuell)"
-
-#: siglist.c:163
-msgid "Alarm (profile)"
-msgstr "Alarm (profil)"
-
-#: siglist.c:167
-msgid "Window changed"
-msgstr "Vindu endret"
-
-#: siglist.c:171
-msgid "Record lock"
-msgstr "Husk lÃ¥s"
-
-#: siglist.c:175
-msgid "User signal 1"
-msgstr "Brukersignal 1"
-
-#: siglist.c:179
-msgid "User signal 2"
-msgstr "Brukersignal 2"
-
-#: siglist.c:183
-msgid "HFT input data pending"
-msgstr "HFT-inndata venter"
-
-#: siglist.c:187
-msgid "power failure imminent"
-msgstr "strømstans er nærliggende"
-
-#: siglist.c:191
-msgid "system crash imminent"
-msgstr "systemkræsj er nærliggende"
-
-#: siglist.c:195
-msgid "migrate process to another CPU"
-msgstr "flytt prosess til annen CPU"
-
-#: siglist.c:199
-msgid "programming error"
-msgstr "programmeringsfeil"
-
-#: siglist.c:203
-msgid "HFT monitor mode granted"
-msgstr "HFT-skjermmodus tildelt"
-
-#: siglist.c:207
-msgid "HFT monitor mode retracted"
-msgstr "HFT-skjermmodus tilbaketrukket"
-
-#: siglist.c:211
-msgid "HFT sound sequence has completed"
-msgstr "HFT-lydsekvens er fullført"
-
-#: siglist.c:215
-msgid "Information request"
-msgstr "Informasjonsforespørsel"
-
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Ukjent signal #"
-
-#: siglist.c:225
-#, c-format
-msgid "Unknown Signal #%d"
-msgstr "#%d er et ukjent signal"
-
-#: subst.c:1392 subst.c:1550
-#, c-format
-msgid "bad substitution: no closing `%s' in %s"
-msgstr "ugyldig substitutt: %2$s mangler avsluttende Â«%1$s»"
-
-#: subst.c:2882
-#, c-format
-msgid "%s: cannot assign list to array member"
-msgstr "%s: klarte ikke Ã¥ knytte liste til tabellmedlem"
-
-#: subst.c:5421 subst.c:5437
-msgid "cannot make pipe for process substitution"
-msgstr "klarte ikke Ã¥ lage datarør for substitusjon av prosess"
-
-#: subst.c:5469
-msgid "cannot make child for process substitution"
-msgstr "klarte ikke Ã¥ lage underprosess for substitusjon av prosess"
-
-#: subst.c:5519
-#, c-format
-msgid "cannot open named pipe %s for reading"
-msgstr "klarte ikke Ã¥ Ã¥pne navngitt datarør %s for lesing"
-
-#: subst.c:5521
-#, c-format
-msgid "cannot open named pipe %s for writing"
-msgstr "klarte ikke Ã¥ Ã¥pne navngitt datarør %s for skriving"
-
-#: subst.c:5539
-#, c-format
-msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "klarte ikke Ã¥ duplisere navngitt datarør %s som fd %d"
-
-#: subst.c:5746
-msgid "cannot make pipe for command substitution"
-msgstr "klarte ikke Ã¥ lage datarør for substitusjon av kommando"
-
-#: subst.c:5784
-msgid "cannot make child for command substitution"
-msgstr "klarte ikke Ã¥ lage underprosess for substitusjon av kommando"
-
-#: subst.c:5803
-msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: klarte ikke Ã¥ duplisere datarør som fd 1"
-
-#: subst.c:6416
-#, fuzzy, c-format
-msgid "%s: invalid indirect expansion"
-msgstr "%s: ugyldig linjeantall"
-
-#: subst.c:6423
-#, fuzzy, c-format
-msgid "%s: invalid variable name"
-msgstr "«%s»: ugyldig alias"
-
-#: subst.c:6470
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr "%s: parameter har null-verdi eller stÃ¥r tomt"
-
-#: subst.c:6742 subst.c:6757
-#, c-format
-msgid "%s: substring expression < 0"
-msgstr "%s: understreng-uttrykk < 0"
-
-#: subst.c:7969
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: ugyldig substitusjon"
-
-#: subst.c:8061
-#, c-format
-msgid "$%s: cannot assign in this way"
-msgstr "$%s: du kan ikke tildele pÃ¥ denne mÃ¥ten"
-
-#: subst.c:8400
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-"fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk "
-"substitusjon"
-
-#: subst.c:8940
-#, c-format
-msgid "bad substitution: no closing \"`\" in %s"
-msgstr "ugyldig substitusjon. %s mangler avsluttende Â«`»"
-
-#: subst.c:9878
-#, c-format
-msgid "no match: %s"
-msgstr "ingen treff pÃ¥ %s"
-
-#: test.c:147
-msgid "argument expected"
-msgstr "forventet argument"
-
-#: test.c:156
-#, c-format
-msgid "%s: integer expression expected"
-msgstr "%s: forventet heltallsuttrykk"
-
-#: test.c:265
-msgid "`)' expected"
-msgstr "forventet Â«)»"
-
-#: test.c:267
-#, c-format
-msgid "`)' expected, found %s"
-msgstr "forventet Â«)», men fant %s"
-
-#: test.c:282 test.c:744 test.c:747
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: forventet unær operatør"
-
-#: test.c:469 test.c:787
-#, c-format
-msgid "%s: binary operator expected"
-msgstr "%s: forventet binær operatør"
-
-#: test.c:862
-msgid "missing `]'"
-msgstr "«]» mangler"
-
-#: trap.c:223
-msgid "invalid signal number"
-msgstr "ugyldig signalnummer"
-
-#: trap.c:385
-#, c-format
-msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr "run_pending_traps: ugyldig verdi i Â«trap_list[%d]»: %p"
-
-#: trap.c:389
-#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-"run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv "
-"pÃ¥ nytt"
-
-#: trap.c:442
-#, c-format
-msgid "trap_handler: bad signal %d"
-msgstr "trap_handler: %d er et ugyldig signal"
-
-#: variables.c:406
-#, c-format
-msgid "error importing function definition for `%s'"
-msgstr "feil under importering av definisjonen av funksjonen Â«%s»"
-
-#: variables.c:801
-#, c-format
-msgid "shell level (%d) too high, resetting to 1"
-msgstr "skallnivÃ¥et (%d) er for høyt. Tilbakestiller til 1"
-
-#: variables.c:1893
-#, c-format
-msgid "%s: circular name reference"
-msgstr "%s: sirkulær navnreferanse"
-
-#: variables.c:2305
-msgid "make_local_variable: no function context at current scope"
-msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt"
-
-#: variables.c:2324
-#, c-format
-msgid "%s: variable may not be assigned value"
-msgstr "%s: variabel kan ikke tilknyttes verdi"
-
-#: variables.c:3730
-msgid "all_local_variables: no function context at current scope"
-msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt"
-
-#: variables.c:4007
-#, c-format
-msgid "%s has null exportstr"
-msgstr "%s har exportstr som er null"
-
-#: variables.c:4012 variables.c:4021
-#, c-format
-msgid "invalid character %d in exportstr for %s"
-msgstr "%d er et ugyldig tegn i exportstr for %s"
-
-#: variables.c:4027
-#, c-format
-msgid "no `=' in exportstr for %s"
-msgstr "exportstr for %s mangler Â«=»"
-
-#: variables.c:4462
-msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-"pop_var_context: toppen av Â«shell_variables» er ikke en funksjonskontekst"
-
-#: variables.c:4475
-msgid "pop_var_context: no global_variables context"
-msgstr "pop_var_context: kontekst for Â«global_variables» mangler"
-
-#: variables.c:4549
-msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr "pop_scope: toppen av Â«shell_variables» er ikke et midlertidig miljøfelt"
-
-#: variables.c:5393
-#, c-format
-msgid "%s: %s: cannot open as FILE"
-msgstr "%s: %s: klarte ikke Ã¥ Ã¥pne som FIL"
-
-#: variables.c:5398
-#, c-format
-msgid "%s: %s: invalid value for trace file descriptor"
-msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor"
-
-#: variables.c:5443
-#, c-format
-msgid "%s: %s: compatibility value out of range"
-msgstr "%s: %s: samspill-verdi er utenfor tillatt rekkevidde"
-
-#: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-msgstr "Opphavsrett (C) 2013 Free Software Foundation, Inc."
-
-#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"Lisens GPLv3+: GNU GPL versjon 3 eller nyere <http://gnu.org/licenses/gpl."
-"html>\n"
-
-#: version.c:86 version2.c:86
-#, c-format
-msgid "GNU bash, version %s (%s)\n"
-msgstr "GNU bash, versjon %s (%s)\n"
-
-#: version.c:91 version2.c:91
-msgid "This is free software; you are free to change and redistribute it."
-msgstr ""
-"Dette er fri programvare. Du stÃ¥r fritt til Ã¥ endre og dele den videre."
-
-#: version.c:92 version2.c:92
-msgid "There is NO WARRANTY, to the extent permitted by law."
-msgstr ""
-"Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk."
-
-#: xmalloc.c:91
-#, c-format
-msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: klarte ikke Ã¥ tildele %lu byte (%lu byte tildelt)"
-
-#: xmalloc.c:93
-#, c-format
-msgid "%s: cannot allocate %lu bytes"
-msgstr "%s: klarte ikke Ã¥ tildele %lu byte"
-
-#: xmalloc.c:163
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: %s:%d: klarte ikke Ã¥ tildele %lu byte (%lu byte tildelt)"
-
-#: xmalloc.c:165
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "%s: %s:%d: klarte ikke Ã¥ tildele %lu byte"
-
-#: builtins.c:43
-msgid "alias [-p] [name[=value] ... ]"
-msgstr "alias [-p] [navn[=verdi] â€¦ ]"
-
-#: builtins.c:47
-msgid "unalias [-a] name [name ...]"
-msgstr "unalias [-a] navn [navn â€¦]"
-
-#: builtins.c:51
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpsvPSVX] [-m tastaturoppsett] [-f filnavn] [-q navn] [-u navn] [-r "
-"knappesekv] [-x knappesekv:skallkommando] [knappesekv:readline-funksjon "
-"eller readline-kommando]"
-
-#: builtins.c:54
-msgid "break [n]"
-msgstr "break [n]"
-
-#: builtins.c:56
-msgid "continue [n]"
-msgstr "continue [n]"
-
-#: builtins.c:58
-msgid "builtin [shell-builtin [arg ...]]"
-msgstr "builtin [innebygd-skallfunksjon [arg â€¦]]"
-
-#: builtins.c:61
-msgid "caller [expr]"
-msgstr "caller [uttr]"
-
-#: builtins.c:64
-msgid "cd [-L|[-P [-e]] [-@]] [dir]"
-msgstr "cd [-L|[-P [-e]] [-@]] [mappe]"
-
-#: builtins.c:66
-msgid "pwd [-LP]"
-msgstr "pwd [-LP]"
-
-#: builtins.c:68
-msgid ":"
-msgstr ":"
-
-#: builtins.c:70
-msgid "true"
-msgstr "true"
-
-#: builtins.c:72
-msgid "false"
-msgstr "false"
-
-#: builtins.c:74
-msgid "command [-pVv] command [arg ...]"
-msgstr "command [-pVv] command [arg â€¦]"
-
-#: builtins.c:76
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [navn[=verdi] â€¦]"
-
-#: builtins.c:78
-#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] navn[=verdi] â€¦"
-
-#: builtins.c:80
-msgid "local [option] name[=value] ..."
-msgstr "local [valg] navn[=verdi] â€¦"
-
-#: builtins.c:83
-msgid "echo [-neE] [arg ...]"
-msgstr "echo [-neE] [arg â€¦]"
-
-#: builtins.c:87
-msgid "echo [-n] [arg ...]"
-msgstr "echo [-n] [arg â€¦]"
-
-#: builtins.c:90
-msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr "enable [-a] [-dnps] [-f filnavn] [navn â€¦]"
-
-#: builtins.c:92
-msgid "eval [arg ...]"
-msgstr "eval [arg â€¦]"
-
-#: builtins.c:94
-msgid "getopts optstring name [arg]"
-msgstr "getopts valgstreng navn [arg]"
-
-#: builtins.c:96
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr "exec [-cl] [-a navn] [kommando [argumenter â€¦]] [videresending â€¦]"
-
-#: builtins.c:98
-msgid "exit [n]"
-msgstr "exit [n]"
-
-#: builtins.c:100
-msgid "logout [n]"
-msgstr "logout [n]"
-
-#: builtins.c:103
-msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e enavn] [-lnr] [første] [siste] eller fc -s [pat=rep] [kommando]"
-
-#: builtins.c:107
-msgid "fg [job_spec]"
-msgstr "fg [jobbspes]"
-
-#: builtins.c:111
-msgid "bg [job_spec ...]"
-msgstr "bg [jobbspes â€¦]"
-
-#: builtins.c:114
-msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr "hash [-lr] [-p stinavn] [-dt] [navn â€¦]"
-
-#: builtins.c:117
-msgid "help [-dms] [pattern ...]"
-msgstr "help [-dms] [mønster â€¦]"
-
-#: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d posisjon] [n] eller history -anrw [filnavn] eller history -"
-"ps arg [arg â€¦]"
-
-#: builtins.c:125
-msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [jobbspes â€¦] eller jobs -x kommando [arg]"
-
-#: builtins.c:129
-msgid "disown [-h] [-ar] [jobspec ...]"
-msgstr "disown [-h] [-ar] [jobbspes â€¦]"
-
-#: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s sigspes | -n signum | -sigspes] pid | jobbspes â€¦ eller kill -l "
-"[sigspes]"
-
-#: builtins.c:134
-msgid "let arg [arg ...]"
-msgstr "let arg [arg â€¦]"
-
-#: builtins.c:136
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a tabell] [-d adskill] [-i tekst] [-n ntegn] [-N ntegn] [-p "
-"ledetekst] [-t tidsavbrudd] [-u fd] [navn â€¦]"
-
-#: builtins.c:138
-msgid "return [n]"
-msgstr "return [n]"
-
-#: builtins.c:140
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o valgnavn] [--] [arg â€¦]"
-
-#: builtins.c:142
-msgid "unset [-f] [-v] [-n] [name ...]"
-msgstr "unset [-f] [-v] [-n] [navn â€¦]"
-
-#: builtins.c:144
-msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr "export [-fn] [navn[=verdi] â€¦] eller export -p"
-
-#: builtins.c:146
-msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr "readonly [-aAf] [navn[=verdi] â€¦] eller readonly -p"
-
-#: builtins.c:148
-msgid "shift [n]"
-msgstr "shift [n]"
-
-#: builtins.c:150
-msgid "source filename [arguments]"
-msgstr "source filnavn [argumenter]"
-
-#: builtins.c:152
-msgid ". filename [arguments]"
-msgstr ". filnavn [argumenter]"
-
-#: builtins.c:155
-msgid "suspend [-f]"
-msgstr "suspend [-f]"
-
-#: builtins.c:158
-msgid "test [expr]"
-msgstr "test [uttr]"
-
-#: builtins.c:160
-msgid "[ arg... ]"
-msgstr "[ arg â€¦ ]"
-
-#: builtins.c:162
-msgid "times"
-msgstr "times"
-
-#: builtins.c:164
-msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr "trap [-lp] [[arg] signalspes â€¦]"
-
-#: builtins.c:166
-msgid "type [-afptP] name [name ...]"
-msgstr "type [-afptP] navn [navn â€¦]"
-
-#: builtins.c:169
-#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [grense]"
-
-#: builtins.c:172
-msgid "umask [-p] [-S] [mode]"
-msgstr "umask [-p] [-S] [modus]"
-
-#: builtins.c:175
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [id â€¦]"
-
-#: builtins.c:179
-msgid "wait [pid ...]"
-msgstr "wait [pid â€¦]"
-
-#: builtins.c:182
-msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr "for NAVN [in ORD â€¦ ] ; do KOMMANDOER; done"
-
-#: builtins.c:184
-msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr "for (( uttr1; uttr2; uttr3 )); do KOMMANDOER; done"
-
-#: builtins.c:186
-msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select NAVN [in ORD â€¦ ;] do KOMMANDOER; done"
-
-#: builtins.c:188
-msgid "time [-p] pipeline"
-msgstr "time [-p] kommandokø"
-
-#: builtins.c:190
-msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr "case ORD in [MØNSTER [| MØNSTER] â€¦) KOMMANDOER ;;] â€¦ esac"
-
-#: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ] â€¦ "
-"[ else KOMMANDOER; ] fi"
-
-#: builtins.c:194
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while KOMMANDOER; do KOMMANDOER; done"
-
-#: builtins.c:196
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until KOMMANDOER; do KOMMANDOER; done"
-
-#: builtins.c:198
-msgid "coproc [NAME] command [redirections]"
-msgstr "coproc [NAVN] kommando [videresendinger]"
-
-#: builtins.c:200
-msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr "function navn { KOMAMNDOER ; } eller navn () { KOMMANDOER ; }"
-
-#: builtins.c:202
-msgid "{ COMMANDS ; }"
-msgstr "{ KOMMANDOER ; }"
-
-#: builtins.c:204
-msgid "job_spec [&]"
-msgstr "job_spec [&]"
-
-#: builtins.c:206
-msgid "(( expression ))"
-msgstr "(( uttrykk ))"
-
-#: builtins.c:208
-msgid "[[ expression ]]"
-msgstr "[[ uttrykk ]]"
-
-#: builtins.c:210
-msgid "variables - Names and meanings of some shell variables"
-msgstr "variabler - Navn og betydninger av enkelte skallvariabler"
-
-#: builtins.c:213
-msgid "pushd [-n] [+N | -N | dir]"
-msgstr "pushd [-n] [+N | -N | mappe]"
-
-#: builtins.c:217
-msgid "popd [-n] [+N | -N]"
-msgstr "popd [-n] [+N | -N]"
-
-#: builtins.c:221
-msgid "dirs [-clpv] [+N] [-N]"
-msgstr "dirs [-clpv] [+N] [-N]"
-
-#: builtins.c:224
-msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr "shopt [-pqsu] [-o] [valgnavn â€¦]"
-
-#: builtins.c:226
-msgid "printf [-v var] format [arguments]"
-msgstr "printf [-v var] format [argumenter]"
-
-#: builtins.c:229
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o valg] [-A handling] [-G globpat] [-"
-"W ordliste]  [-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S "
-"suffiks] [navn â€¦]"
-
-#: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o valg]  [-A handling] [-G globpat] [-W ordliste]  "
-"[-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S suffiks] [ord]"
-
-#: builtins.c:237
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o valg] [-DE] [navn â€¦]"
-
-#: builtins.c:240
-#, fuzzy
-msgid ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"mapfile [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] [-"
-"c mengde] [tabell]"
-
-#: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"readarray [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] "
-"[-c mengde] [tabell]"
-
-#: builtins.c:254
-#, fuzzy
-msgid ""
-"Define or display aliases.\n"
-"    \n"
-"    Without arguments, `alias' prints the list of aliases in the reusable\n"
-"    form `alias NAME=VALUE' on standard output.\n"
-"    \n"
-"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-"    A trailing space in VALUE causes the next word to be checked for\n"
-"    alias substitution when the alias is expanded.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint all defined aliases in a reusable format\n"
-"    \n"
-"    Exit Status:\n"
-"    alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
-"    defined."
-msgstr ""
-"Definer eller vis alias.\n"
-"    \n"
-"    Hvis ingen argumenter er gitt, skriver programmet ut en liste over\n"
-"    gjeldende alias i form av Â«alias NAVN=verdi» til standardutdata.\n"
-"    \n"
-"    Ellers defineres et alias per NAVN med en VERDI.\n"
-"    Avsluttende mellomrom i VERDI fører til at neste ord kontrolleres for\n"
-"    alias-substitusjon nÃ¥r aliaset utvides.\n"
-"    \n"
-"    Valg:\n"
-"      -p\tSkriv ut alle definerte alias i brukbart format\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    alias avslutter med positiv verdi («true»), med mindre brukeren angir et "
-"NAVN\n"
-"    som mangler definert alias."
-
-#: builtins.c:276
-#, fuzzy
-msgid ""
-"Remove each NAME from the list of defined aliases.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all alias definitions\n"
-"    \n"
-"    Return success unless a NAME is not an existing alias."
-msgstr ""
-"Fjern hvert NAVN fra lista over definerte alias.\n"
-"    \n"
-"    Valg:\n"
-"      -a\tfjern alle alias-definisjoner.\n"
-"    \n"
-"    Programmet avslutter som vellykket med mindre brukeren velger et "
-"aliasNAVN som ikke finnes."
-
-#: builtins.c:289
-#, fuzzy
-msgid ""
-"Set Readline key bindings and variables.\n"
-"    \n"
-"    Bind a key sequence to a Readline function or a macro, or set a\n"
-"    Readline variable.  The non-option argument syntax is equivalent to\n"
-"    that found in ~/.inputrc, but must be passed as a single argument:\n"
-"    e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"    \n"
-"    Options:\n"
-"      -m  keymap         Use KEYMAP as the keymap for the duration of this\n"
-"                         command.  Acceptable keymap names are emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-"                         vi-command, and vi-insert.\n"
-"      -l                 List names of functions.\n"
-"      -P                 List function names and bindings.\n"
-"      -p                 List functions and bindings in a form that can be\n"
-"                         reused as input.\n"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\n"
-"                         in a form that can be reused as input.\n"
-"      -V                 List variable names and values\n"
-"      -v                 List variable names and values in a form that can\n"
-"                         be reused as input.\n"
-"      -q  function-name  Query about which keys invoke the named function.\n"
-"      -u  function-name  Unbind all keys which are bound to the named "
-"function.\n"
-"      -r  keyseq         Remove the binding for KEYSEQ.\n"
-"      -f  filename       Read key bindings from FILENAME.\n"
-"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-"    \t\t\t\tKEYSEQ is entered.\n"
-"      -X                 List key sequences bound with -x and associated "
-"commands\n"
-"                         in a form that can be reused as input.\n"
-"    \n"
-"    Exit Status:\n"
-"    bind returns 0 unless an unrecognized option is given or an error occurs."
-msgstr ""
-"Velg hurtigtaster og variabler for Readline.\n"
-"    \n"
-"    Knytt en knappekombinasjon til en Readline-funksjon eller makro, eller "
-"gi\n"
-"    verdi til en Readline-variabel. Argumentsyntaksen tilsvarer det som "
-"finnes\n"
-"    i Â«~/.inputrc», men mÃ¥ oppgis som ett argument.\n"
-"    F.eks.: bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"    \n"
-"    Valg:\n"
-"      -m  OPPSETT         Bruk valgt tastaturOPPSETT under kjøring av denne "
-"kommandoen.\n"
-"                         Gyldige oppsettsnavn er Â«emacs», Â«emacs-standard»,\n"
-"                         Â«emacs-meta», Â«emacs-ctlx», Â«vi», Â«vi-move»,\n"
-"                         Â«vi-command» og Â«vi-insert».\n"
-"      -l                 Vis funksjonsnavn.\n"
-"      -P                 Vis funksjonsnavn og tildelinger.\n"
-"      -p                 Vis funksjoner og tildelinger i et format som kan "
-"gjenbrukes\n"
-"                         som inndata.\n"
-"      -S                 Vis knappekombinasjoner som kaller makroer og "
-"tilhørende verdier\n"
-"      -s                 Tilsvarer Â«-S», men i et format som kan gjenbrukes i "
-"inndata.\n"
-"      -V                 Vis variabelnavn og verdier\n"
-"      -v                 Tilsvarer Â«-V», men i et format som kan gjenbrukes i "
-"inndata.\n"
-"      -q  function-name  Spør hvilke knapper som kaller aktuell funksjon.\n"
-"      -u  function-name  Fjern alle knappekombinasjoner som er tilknyttet "
-"aktuell funksjon.\n"
-"      -r  KOMB         Fjern tildeling av valgt knappeKOMBinasjon.\n"
-"      -f  FILNAVN       Les knappekombinasjoner fra FILNAVN.\n"
-"      -x  KOMB:KOMMANDO\tGjør slik at valgt skallKOMMANDO kjøres nÃ¥r\n"
-"    \t\t\t\tvalgt knappeKOMBinasjon trykkes.\n"
-"      -X\t\t     Vis knappekombinasjoner som er tildelt med Â«-x», og aktuelle "
-"kommandoer \n"
-"                         i et format som kan gjenbrukes i inndata.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    bind avslutter med 0, med mindre brukeren tar et ukjent valg eller det "
-"oppstÃ¥r en feil."
-
-#: builtins.c:328
-msgid ""
-"Exit for, while, or until loops.\n"
-"    \n"
-"    Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing\n"
-"    loops.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-"GÃ¥ ut av en Â«FOR»-, Â«WHILE»- eller Â«UNTIL»-løkke.\n"
-"    \n"
-"    Hvis N er valgt, brytes N antall underløkker.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Statuskoden er 0, med mindre N er mindre enn 1."
-
-#: builtins.c:340
-msgid ""
-"Resume for, while, or until loops.\n"
-"    \n"
-"    Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-"    If N is specified, resumes the Nth enclosing loop.\n"
-"    \n"
-"    Exit Status:\n"
-"    The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-"Fortsett neste runde av gjeldende FOR-, WHILE- eller WHILE-løkke..\n"
-"    \n"
-"    Hvis N er valgt, fortsetter N-te løkke.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Statuskoden er 0, med mindre N er mindre enn 1."
-
-#: builtins.c:352
-msgid ""
-"Execute shell builtins.\n"
-"    \n"
-"    Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
-"    lookup.  This is useful when you wish to reimplement a shell builtin\n"
-"    as a shell function, but need to execute the builtin within the "
-"function.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
-msgstr ""
-"Kjør innebygde skallfunksjoner.\n"
-"    \n"
-"    Kjør SKALLFUNKSJON med valgte ARGumenter uten Ã¥ slÃ¥ opp\n"
-"    kommandonavn. Dette er nyttig nÃ¥r du vil re-implementere en innebygd\n"
-"    skallkommando som en funksjon, samtidig som du kjører den innenfor en "
-"skallfunksjon.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Statuskoden er den samme som aktuell SKALLFUNKSJON gir, eller\n"
-"    negativ («false») hvis SKALLFUNKSJON ikke er en innebygd skallkommando.."
-
-#: builtins.c:367
-msgid ""
-"Return the context of the current subroutine call.\n"
-"    \n"
-"    Without EXPR, returns \"$line $filename\".  With EXPR, returns\n"
-"    \"$line $subroutine $filename\"; this extra information can be used to\n"
-"    provide a stack trace.\n"
-"    \n"
-"    The value of EXPR indicates how many call frames to go back before the\n"
-"    current one; the top frame is frame 0.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless the shell is not executing a shell function or EXPR\n"
-"    is invalid."
-msgstr ""
-"Vis konteksten for gjeldende underrutine-kall.\n"
-"    \n"
-"    Hvis UTTRykk ikke er valgt, vises Â«$line $filename».  Med UTTRykk vises\n"
-"    Â«$line $subroutine $filename». Denne ekstrainformasjonen kan brukes\n"
-"    til stabelsporing.\n"
-"    \n"
-"    Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege "
-"seg\n"
-"    gjennom tilbake fra gjeldende ramme. Ã˜verste ramme er 0.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Status er 0, med mindre skallet ikke kjører en skallfunksjon eller\n"
-"    valgt UTTRykk er ugyldig."
-
-#: builtins.c:385
-#, fuzzy
-msgid ""
-"Change the shell working directory.\n"
-"    \n"
-"    Change the current directory to DIR.  The default DIR is the value of "
-"the\n"
-"    HOME shell variable.\n"
-"    \n"
-"    The variable CDPATH defines the search path for the directory "
-"containing\n"
-"    DIR.  Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-"    A null directory name is the same as the current directory.  If DIR "
-"begins\n"
-"    with a slash (/), then CDPATH is not used.\n"
-"    \n"
-"    If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-"    the word is assumed to be  a variable name.  If that variable has a "
-"value,\n"
-"    its value is used for DIR.\n"
-"    \n"
-"    Options:\n"
-"      -L\tforce symbolic links to be followed: resolve symbolic\n"
-"    \t\tlinks in DIR after processing instances of `..'\n"
-"      -P\tuse the physical directory structure without following\n"
-"    \t\tsymbolic links: resolve symbolic links in DIR before\n"
-"    \t\tprocessing instances of `..'\n"
-"      -e\tif the -P option is supplied, and the current working\n"
-"    \t\tdirectory cannot be determined successfully, exit with\n"
-"    \t\ta non-zero status\n"
-"      -@\ton systems that support it, present a file with extended\n"
-"    \t\tattributes as a directory containing the file attributes\n"
-"    \n"
-"    The default is to follow symbolic links, as if `-L' were specified.\n"
-"    `..' is processed by removing the immediately previous pathname "
-"component\n"
-"    back to a slash or the beginning of DIR.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
-"    -P is used; non-zero otherwise."
-msgstr ""
-"Bytt arbeidsmappe for skallet.\n"
-"    \n"
-"    Bytt gjeldende mappe til MAP. Standard MAPpe er verdien av\n"
-"    skallvariabelen HOME.\n"
-"    \n"
-"    Variabelen CDPATH bestemmer søkestien for mapper som inneholder\n"
-"    MAP. Alternative mappenavn i CDPATH er adskilt med Â«:».\n"
-"    Et null-mappenavn er det samme som gjeldende mappe. Hvis MAP begynner\n"
-"    med skrÃ¥strek (/), brukes ikke CDPATH.\n"
-"    \n"
-"    Hvis valgt mappe ikke finnes, og skallvalget Â«cdable_vars» har en verdi,\n"
-"    antas ordet Ã¥ være et variabelnavn. Hvis den variabelen har en verdi,\n"
-"    brukes denne verdien som MAP.\n"
-"    \n"
-"    Valg:\n"
-"        -L\ttving følging av symbolske lenker. Følg symbolske lenker i\n"
-"    \tMAP etter Ã¥ ha behandlet forekomster av «..»\n"
-"        -P\tbruk fysisk mappestruktur uten Ã¥ følge symbolske\n"
-"    \tlenker. Følg lenker i MAP før forekomster av Â«..» behandles.\n"
-"        -e\thvis Â«-P» er valgt, og det er uklart hva som er gjeldende\n"
-"    \tarbeidsmappe, avslutt med en annen status enn 0\n"
-"        -@  hvis systemet støtter det, vis en fil med utvidede attributter\n"
-"            som en mappe med attributtene som innhold\n"
-"    \n"
-"    Standard for symbolske lenker er at de følges, som om Â«-L» er valgt.\n"
-"    Â«..» behandles ved at den nÃ¥ tidligere stinavn-komponenten fjernes\n"
-"    Ã©n skrÃ¥strek tilbake eller til begynnelsen av MAP.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Status er 0 hvis skallet har byttet mappe, og hvis $PWD er valgt uten "
-"problemer\n"
-"    ved bruk av Â«-P». Ellers er status noe annet enn 0."
-
-#: builtins.c:423
-#, fuzzy
-msgid ""
-"Print the name of the current working directory.\n"
-"    \n"
-"    Options:\n"
-"      -L\tprint the value of $PWD if it names the current working\n"
-"    \t\tdirectory\n"
-"      -P\tprint the physical directory, without any symbolic links\n"
-"    \n"
-"    By default, `pwd' behaves as if `-L' were specified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 0 unless an invalid option is given or the current directory\n"
-"    cannot be read."
-msgstr ""
-"Skriv ut navn pÃ¥ gjeldende arbeidsmappe.\n"
-"    \n"
-"    Valg:\n"
-"      -L\tskriv ut verdien av $PWD hvis dette er navnet pÃ¥\n"
-"    \tgjeldende arbeidsmappe\n"
-"      -P\tskriv ut fysisk mappe, uten symbolske lenker\n"
-"    \n"
-"    Valget Â«-L» er gjeldende som standard i Â«pwd».\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Status er 0, med mindre brukeren tar et ugyldig valg eller\n"
-"    programmet ikke klarer Ã¥ lese gjeldende mappe."
-
-#: builtins.c:440
-msgid ""
-"Null command.\n"
-"    \n"
-"    No effect; the command does nothing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-"Null-kommando.\n"
-"    \n"
-"    Dette har ingen effekt. Kommandoen gjør ingenting.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Alltid vellykket."
-
-#: builtins.c:451
-msgid ""
-"Return a successful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-"Gi et vellykket resultat.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Alltid vellykket."
-
-#: builtins.c:460
-msgid ""
-"Return an unsuccessful result.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always fails."
-msgstr ""
-"Gi et mislykket resultat.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Alltid mislykket."
-
-#: builtins.c:469
-#, fuzzy
-msgid ""
-"Execute a simple command or display information about commands.\n"
-"    \n"
-"    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n"
-"    information about the specified COMMANDs.  Can be used to invoke "
-"commands\n"
-"    on disk when a function with the same name exists.\n"
-"    \n"
-"    Options:\n"
-"      -p    use a default value for PATH that is guaranteed to find all of\n"
-"            the standard utilities\n"
-"      -v    print a description of COMMAND similar to the `type' builtin\n"
-"      -V    print a more verbose description of each COMMAND\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of COMMAND, or failure if COMMAND is not found."
-msgstr ""
-"Kjør en enkel kommando, eller vis informasjon om kommandoer.\n"
-"    \n"
-"    Kjører valgt KOMMANDO med ARG uten oppslag av skallfunksjoner, eller "
-"viser\n"
-"    informasjon om valgte KOMMANDOer. Dette kan brukes til Ã¥ kalle "
-"kommandoer\n"
-"    pÃ¥ disk nÃ¥r det finens en funksjon med samme navn.\n"
-"    \n"
-"    Valg:\n"
-"      -p\tbruk en standardverdi for STI som garantert finner alle\n"
-"    \tstandardverktøyene\n"
-"      -v\tskriv ut en beskrivelse av KOMMANDO i Â«type»-stil\n"
-"      -V\tskriv ut en mer detaljert beskrivelse av hver KOMMANDO\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som statuskoden fra KOMMANDO, eller mislykket hvis KOMMANDO ikke "
-"finnes."
-
-#: builtins.c:488
-#, fuzzy
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Declare variables and give them attributes.  If no NAMEs are given,\n"
-"    display the attributes and values of all variables.\n"
-"    \n"
-"    Options:\n"
-"      -f\trestrict action or display to function names and definitions\n"
-"      -F\trestrict display to function names only (plus line number and\n"
-"    \t\tsource file when debugging)\n"
-"      -g\tcreate global variables when used in a shell function; otherwise\n"
-"    \t\tignored\n"
-"      -p\tdisplay the attributes and value of each NAME\n"
-"    \n"
-"    Options which set attributes:\n"
-"      -a\tto make NAMEs indexed arrays (if supported)\n"
-"      -A\tto make NAMEs associative arrays (if supported)\n"
-"      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
-"      -n\tmake NAME a reference to the variable named by its value\n"
-"      -r\tto make NAMEs readonly\n"
-"      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
-"      -x\tto make NAMEs export\n"
-"    \n"
-"    Using `+' instead of `-' turns off the given attribute.\n"
-"    \n"
-"    Variables with the integer attribute have arithmetic evaluation (see\n"
-"    the `let' command) performed when the variable is assigned a value.\n"
-"    \n"
-"    When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
-"    command.  The `-g' option suppresses this behavior.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or a variable\n"
-"    assignment error occurs."
-msgstr ""
-"Gi verdier og attributter til variabler.\n"
-"    \n"
-"    Lag variabler og gi dem attributter. Hvis ingen NAVN er valgt,\n"
-"    vises attributter og verdier av alle variabler.\n"
-"    \n"
-"    Valg:\n"
-"      -f\tbegrens handling eller visning til funksjonsnavn og definisjoner\n"
-"      -F\tbegrens visning til funksjonsnavn (linjenummer og\n"
-"    \tkildefil kommer i tillegg ved feilsøking)\n"
-"      -g\tlag globale variabler ved bruk innenfor en skallfunksjon\n"
-"    \t(ignoreres ved annen bruk)\n"
-"      -p\tvis attributter og verdi av hvert valgt NAVN\n"
-"    \n"
-"    Valg som justerer attributter:\n"
-"      -a\tgjør valgte NAVN til indekserte tabeller (hvis det støttes)\n"
-"      -A\tgjør valgte NAVN til assosiative tabeller (hvis det støttes)\n"
-"      -i\tgi valgte NAVN attributten Â«integer» (heltall)\n"
-"      -l\tkonverter valgte NAVN til smÃ¥ bokstaver\n"
-"      -n\tgjør valgt NAVN til en referanse til variabelen med egen verdi som "
-"navn\n"
-"      -r\tskrivebeskytt valgte NAVN\n"
-"      -t\tgi valgte NAVN attirbutten Â«trace»\n"
-"      -u\tkonverter valgte NAVN til store bokstaver\n"
-"      -x\tgjør valgte NAVN eksporterbare\n"
-"    \n"
-"    Bruk Â«+» i stedet for Â«-» for Ã¥ slÃ¥ av aktuell attributt.\n"
-"    \n"
-"    Variabler med heltallsattributt blir evaluert aritmetisk (se\n"
-"    kommandoen Â«let») nÃ¥r de fÃ¥r en verdi.\n"
-"    \n"
-"    Ved bruk innenfor funksjoner gjør Â«declare» valgte NAVN lokale, som med\n"
-"    kommandoen Â«local». Valget Â«-g» slÃ¥r av denne oppførselen.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller\n"
-"    det oppstÃ¥r en variabel-tildelingsfeil."
-
-#: builtins.c:528
-msgid ""
-"Set variable values and attributes.\n"
-"    \n"
-"    Obsolete.  See `help declare'."
-msgstr ""
-"Gi verdier og attributter til variabler.\n"
-"    \n"
-"    Denne funksjonen er utgÃ¥tt.  Se Â«help declare»."
-
-#: builtins.c:536
-msgid ""
-"Define local variables.\n"
-"    \n"
-"    Create a local variable called NAME, and give it VALUE.  OPTION can\n"
-"    be any option accepted by `declare'.\n"
-"    \n"
-"    Local variables can only be used within a function; they are visible\n"
-"    only to the function where they are defined and its children.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied, a variable\n"
-"    assignment error occurs, or the shell is not executing a function."
-msgstr ""
-"Definer lokale variabler.\n"
-"    \n"
-"    Lag en lokal variabel med valgt NAVN og VERDI. Du kan foreta\n"
-"    VALG i henhold til kommandoen Â«declare».\n"
-"    \n"
-"    Lokale variabler kan bare brukes innenfor en funksjon. De er kun "
-"synlige\n"
-"    for funksjonen de lages innenfor, samt underfunksjoner.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg, det oppstÃ¥r\n"
-"    en feil under variabeltildeling eller skallet ikke kjører en funksjon."
-
-#: builtins.c:553
-#, fuzzy
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs, separated by a single space character and followed by "
-"a\n"
-"    newline, on the standard output.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"      -e\tenable interpretation of the following backslash escapes\n"
-"      -E\texplicitly suppress interpretation of backslash escapes\n"
-"    \n"
-"    `echo' interprets the following backslash-escaped characters:\n"
-"      \\a\talert (bell)\n"
-"      \\b\tbackspace\n"
-"      \\c\tsuppress further output\n"
-"      \\e\tescape character\n"
-"      \\E\tescape character\n"
-"      \\f\tform feed\n"
-"      \\n\tnew line\n"
-"      \\r\tcarriage return\n"
-"      \\t\thorizontal tab\n"
-"      \\v\tvertical tab\n"
-"      \\\\\tbackslash\n"
-"      \\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n"
-"    \t\t0 to 3 octal digits\n"
-"      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
-"    \t\tcan be one or two hex digits\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-"Skriv argumenter til standardutdata.\n"
-"    \n"
-"    Send ARGumenter til standardutdata, adskilt med enkelt mellomromtegn og\n"
-"    etterfulgt av linjeskift.n    \n"
-"    Valg:\n"
-"      -n\tikke legg til linjeskift\n"
-"      -e\tslÃ¥ pÃ¥ tolkning av skrÃ¥strek-skiftetegn\n"
-"      -E\tslÃ¥ uttrykkelig av tolkning av skÃ¥strek-skiftetegn\n"
-"    \n"
-"    Â«echo» tolker følgende skiftetegn:\n"
-"      \\a\tsystemvarsel\n"
-"      \\b\tskrÃ¥strektegn\n"
-"      \\c\tavbryt etterfølgende utdata\n"
-"      \\e\tskiftetegn\n"
-"      \\E\tskiftetegn\n"
-"      \\f\tsideskift\n"
-"      \\n\tny linje\n"
-"      \\r\tlinjeskift-tegn\n"
-"      \\t\thorisontal tabulator\n"
-"      \\v\tvertikal tabulator\n"
-"      \\\\\tomvendt skrÃ¥strek\n"
-"      \\0nnn\ttegn med ASCII-kode NNN (oktal). NNN kan bestÃ¥ av\n"
-"    \t0 til 3 oktale sifre\n"
-"      \\xHH\t8-bit-tegn med verdi HH (heksadesimal). HH\n"
-"    \tkan bestÃ¥ av ett eller to hex-sifre\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre det oppstÃ¥r en skrivefeil."
-
-#: builtins.c:589
-msgid ""
-"Write arguments to the standard output.\n"
-"    \n"
-"    Display the ARGs on the standard output followed by a newline.\n"
-"    \n"
-"    Options:\n"
-"      -n\tdo not append a newline\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a write error occurs."
-msgstr ""
-"Skriv ut argumenter til standardutdata.\n"
-"    \n"
-"    Vis ARGumenter pÃ¥ standardutdata, etterfulgt av linjeskift.\n"
-"    \n"
-"    Valg:\n"
-"      -n\tikke ta med linjeskift\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre det oppstÃ¥r en skrivefeil."
-
-#: builtins.c:604
-msgid ""
-"Enable and disable shell builtins.\n"
-"    \n"
-"    Enables and disables builtin shell commands.  Disabling allows you to\n"
-"    execute a disk command which has the same name as a shell builtin\n"
-"    without using a full pathname.\n"
-"    \n"
-"    Options:\n"
-"      -a\tprint a list of builtins showing whether or not each is enabled\n"
-"      -n\tdisable each NAME or display a list of disabled builtins\n"
-"      -p\tprint the list of builtins in a reusable format\n"
-"      -s\tprint only the names of Posix `special' builtins\n"
-"    \n"
-"    Options controlling dynamic loading:\n"
-"      -f\tLoad builtin NAME from shared object FILENAME\n"
-"      -d\tRemove a builtin loaded with -f\n"
-"    \n"
-"    Without options, each NAME is enabled.\n"
-"    \n"
-"    To use the `test' found in $PATH instead of the shell builtin\n"
-"    version, type `enable -n test'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not a shell builtin or an error occurs."
-msgstr ""
-"SlÃ¥ pÃ¥ og av innebygde skallfunksjoner.\n"
-"    \n"
-"    SlÃ¥r av og pÃ¥ innebygde skallkommandoer. Ved Ã¥ slÃ¥ av kan du\n"
-"    kjøre en kommando pÃ¥ disk med samme navnet som en skallkommando\n"
-"    uten Ã¥ mÃ¥tte bruke fullstendig filsti.\n"
-"    \n"
-"    Valg:\n"
-"      -a\tskriv ut en liste som viser hvilke kommandoer som er slÃ¥tt pÃ¥\n"
-"      -n\tslÃ¥ av hvert valgt NAVN, eller vis en liste over kommandoer som er "
-"slÃ¥tt av\n"
-"      -p\tskriv ut liste over kommandoer i et gjenbrukbart format\n"
-"      -s\tbare skriv ut navn pÃ¥ innebygde Posix-spesialkommandoer\n"
-"    \n"
-"    Valg for dynamisk innlasting:\n"
-"      -f\tHent NAVN fra delt objekt-FILNAVN\n"
-"      -d\tFjern en kommando som er lastet inn med -f\n"
-"    \n"
-"    Hvis du ikke tar noen valg, blir hvert NAVN slÃ¥tt pÃ¥.\n"
-"    \n"
-"    Bruk Â«enable -n test» for Ã¥ bruke Â«test» i $PATH i stedet for\n"
-"    versjonen som er innebygd i skallet.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstÃ¥r en "
-"feil."
-
-#: builtins.c:632
-msgid ""
-"Execute arguments as a shell command.\n"
-"    \n"
-"    Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
-"    and execute the resulting commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns exit status of command or success if command is null."
-msgstr ""
-"Kjør argumenter som en skallkommando.\n"
-"    \n"
-"    Kombiner ARGumenter i Ã©n streng, bruk resultatet som inndata i skallet,\n"
-"    og kjør dette som kommando(er).\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som valgt kommando, eller vellykket hvis kommando er null."
-
-#: builtins.c:644
-msgid ""
-"Parse option arguments.\n"
-"    \n"
-"    Getopts is used by shell procedures to parse positional parameters\n"
-"    as options.\n"
-"    \n"
-"    OPTSTRING contains the option letters to be recognized; if a letter\n"
-"    is followed by a colon, the option is expected to have an argument,\n"
-"    which should be separated from it by white space.\n"
-"    \n"
-"    Each time it is invoked, getopts will place the next option in the\n"
-"    shell variable $name, initializing name if it does not exist, and\n"
-"    the index of the next argument to be processed into the shell\n"
-"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
-"    a shell script is invoked.  When an option requires an argument,\n"
-"    getopts places that argument into the shell variable OPTARG.\n"
-"    \n"
-"    getopts reports errors in one of two ways.  If the first character\n"
-"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
-"    this mode, no error messages are printed.  If an invalid option is\n"
-"    seen, getopts places the option character found into OPTARG.  If a\n"
-"    required argument is not found, getopts places a ':' into NAME and\n"
-"    sets OPTARG to the option character found.  If getopts is not in\n"
-"    silent mode, and an invalid option is seen, getopts places '?' into\n"
-"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
-"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-"    printed.\n"
-"    \n"
-"    If the shell variable OPTERR has the value 0, getopts disables the\n"
-"    printing of error messages, even if the first character of\n"
-"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
-"    \n"
-"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
-"    more arguments are given, they are parsed instead.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if an option is found; fails if the end of options is\n"
-"    encountered or an error occurs."
-msgstr ""
-"Tolk valg-argumenter.\n"
-"    \n"
-"    Getopts brukes av skallprosedyrer til Ã¥ tolke posisjonsparametre\n"
-"    som valg.\n"
-"    \n"
-"    VALGSTRENG inneholder bokstaver som skal behandles som valg.\n"
-"    Hvis en bokstav etterfølges av kolon, forventer valget et argument.\n"
-"    Argumentet holdes adskilt fra valget med blanktegn.\n"
-"    \n"
-"    getopts plasserer neste valg i skallvariabelen $name hver gang det\n"
-"    kalles, laster inn navnet hvis det ikke finnes, og\n"
-"    indeks for neste argument som skal behandles i skallvariabelen OPTIND.\n"
-"    OPTIND lastes inn til 1 hver gang skallet eller et skallskript kjøres.\n"
-"    NÃ¥r et valg krever et argument plasseres argumentet i skallvariabelen "
-"OPTARG.\n"
-"    \n"
-"    getopts rapporterer feil pÃ¥ Ã©n av to mÃ¥ter. Hvis første tegn i "
-"VALGSTRENG\n"
-"    er kolon, rapporteres feil uten direkte feilmeldinger til brukeren.\n"
-"    Hvis getopts ser et ugyldig valg, plasseres aktuelt valgtegn i OPTARG.\n"
-"    Hvis et obligatorisk argument ikke er gitt, legger getopts et Â«:» i NAVN "
-"og\n"
-"    bruker oppdaget valgtegn som OPTARG. Hvis getopts ikke er i "
-"stillemodus,\n"
-"    og ser et ugyldig valg, brukes Â«?» som NAVN, og OPTARG tømmes.\n"
-"    Hvis et obligatorisk argument ikke er gitt, legger getopts et Â«?»\n"
-"    i NAVN, tømmer OPTARG og skriver ut en feilmelding.\n"
-"    \n"
-"    Hvis skallvariabelen OPTERR har verdien 0, slÃ¥r getopts av utskrift\n"
-"    av feilmeldinger, selv hvis første tegn i VALGSTRENG ikke er kolon.\n"
-"    OPTERR har verdien 1 som standard.\n"
-"    \n"
-"    Getopts tolker vanligvis posisjonsparametre ($0 - $9), men hvis\n"
-"    flere argumenter er gitt, blir disse tolket i stedet.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket hvis et valg finnes, og mislykket hvis et valg ikke finnes\n"
-"    eller det oppstÃ¥r en annen feil."
-
-#: builtins.c:686
-#, fuzzy
-msgid ""
-"Replace the shell with the given command.\n"
-"    \n"
-"    Execute COMMAND, replacing this shell with the specified program.\n"
-"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not "
-"specified,\n"
-"    any redirections take effect in the current shell.\n"
-"    \n"
-"    Options:\n"
-"      -a name\tpass NAME as the zeroth argument to COMMAND\n"
-"      -c\texecute COMMAND with an empty environment\n"
-"      -l\tplace a dash in the zeroth argument to COMMAND\n"
-"    \n"
-"    If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
-"    the shell option `execfail' is set.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless COMMAND is not found or a redirection error "
-"occurs."
-msgstr ""
-"Erstatt skallet med valgt kommando.\n"
-"    \n"
-"    Kjør KOMMANDO, og erstatt dette skallet med valgt program.\n"
-"    ARGUMENTER sendes videre til valgt KOMMANDO. Hvis KOMMANDO ikke er "
-"valgt,\n"
-"    blir videresendinger brukt i gjeldende skall.\n"
-"    \n"
-"    Valg:\n"
-"      -a name\tsend NAVN som argument nummer null for KOMMANDO\n"
-"      -c\t\tkjør valgt KOMMANDO med et tomt miljø\n"
-"      -l\t\tbruk bindestrek som argument nummer null for COMMAND\n"
-"    \n"
-"    Hvis kommandoen ikke kan kjøres, avsluttes ikke-interaktivt skall, med "
-"mindre\n"
-"    skallvalget Â«execfail» er brukt.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstÃ¥r en "
-"videresendingsfeil."
-
-#: builtins.c:707
-msgid ""
-"Exit the shell.\n"
-"    \n"
-"    Exits the shell with a status of N.  If N is omitted, the exit status\n"
-"    is that of the last command executed."
-msgstr ""
-"Avslutt skallet.\n"
-"    \n"
-"    Avslutt skallet med status N. Hvis N utelates, er statuskoden\n"
-"    den samme som forrige kjørte kommando."
-
-#: builtins.c:716
-msgid ""
-"Exit a login shell.\n"
-"    \n"
-"    Exits a login shell with exit status N.  Returns an error if not "
-"executed\n"
-"    in a login shell."
-msgstr ""
-"Avslutt et innloggingsskall.\n"
-"    \n"
-"    Avslutter et innloggingsskall med status N. Dette gir feilmelding hvis "
-"det\n"
-"    ikke kjøres i et innloggingsskall."
-
-#: builtins.c:726
-msgid ""
-"Display or execute commands from the history list.\n"
-"    \n"
-"    fc is used to list or edit and re-execute commands from the history "
-"list.\n"
-"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-"    string, which means the most recent command beginning with that\n"
-"    string.\n"
-"    \n"
-"    Options:\n"
-"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
-"    \t\tthen vi\n"
-"      -l \tlist lines instead of editing\n"
-"      -n\tomit line numbers when listing\n"
-"      -r\treverse the order of the lines (newest listed first)\n"
-"    \n"
-"    With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n"
-"    re-executed after the substitution OLD=NEW is performed.\n"
-"    \n"
-"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
-"    runs the last command beginning with `cc' and typing `r' re-executes\n"
-"    the last command.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success or status of executed command; non-zero if an error "
-"occurs."
-msgstr ""
-"Vis eller kjør kommandoer fra historikklista.\n"
-"    \n"
-"    fc brukes til Ã¥ vise list eller redigere og kjøre kommandoer pÃ¥ nytt fra "
-"historikklista.\n"
-"    FØRSTE og SISTE kan være tall som angir rekkevidde. FØRSTE kan ogsÃ¥ være "
-"en\n"
-"    streng, som betyr nyeste kommando som begynner med denne strengen.\n"
-"    \n"
-"    Valg:\n"
-"      -e ENAME\tvelg hvilket redigeringsprogram som skal brukes. Standard er "
-"FCEDIT, evt. EDITOR\n"
-"    \t\teller vi\n"
-"      -l \tvis linjer i stedet for Ã¥ redigere\n"
-"      -n\tikke vis linjenumre\n"
-"      -r\tvis linjer i omvendt rekkefølge (nyeste linjer Ã¸verst)\n"
-"    \n"
-"    I formatet Â«fc -s [pat=rep â€¦] [kommando]» kjøres KOMMANDO\n"
-"    pÃ¥ nytt etter at GAMMEL=NY er utført.\n"
-"    \n"
-"    Et nyttig alias for dette er r='fc -s'. Slik blir Â«r cc» ensbetydende\n"
-"    med Ã¥ kjøre forrige kommando med navn som begynner pÃ¥ Â«cc», og Â«r»\n"
-"    betyr Ã¥ kjøre forrige kommando.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis "
-"det oppstÃ¥r feil."
-
-#: builtins.c:756
-msgid ""
-"Move job to the foreground.\n"
-"    \n"
-"    Place the job identified by JOB_SPEC in the foreground, making it the\n"
-"    current job.  If JOB_SPEC is not present, the shell's notion of the\n"
-"    current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Status of command placed in foreground, or failure if an error occurs."
-msgstr ""
-"Flytt jobb til forgrunnen.\n"
-"    \n"
-"    Plasser jobb med id-en JOB_SPEC i forgrunnen, slik at den blir\n"
-"    gjeldende jobb. Hvis JOB_SPEC ikke er oppgitt, brukes jobben som\n"
-"    allerede oppfattes som gjeldende i skallet.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det "
-"oppstÃ¥r en feil."
-
-#: builtins.c:771
-msgid ""
-"Move jobs to the background.\n"
-"    \n"
-"    Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-"    had been started with `&'.  If JOB_SPEC is not present, the shell's "
-"notion\n"
-"    of the current job is used.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-"Flytt jobber til bakgrunnen.\n"
-"    \n"
-"    Plasser jobber med id-er JOB_SPEC i bakgrunnen, som om de\n"
-"    ble startet med Â«&».  Hvis JOB_SPEC ikke er oppgitt, brukes jobben som "
-"allerede\n"
-"    som gjeldende i skallet.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r en feil."
-
-#: builtins.c:785
-#, fuzzy
-msgid ""
-"Remember or display program locations.\n"
-"    \n"
-"    Determine and remember the full pathname of each command NAME.  If\n"
-"    no arguments are given, information about remembered commands is "
-"displayed.\n"
-"    \n"
-"    Options:\n"
-"      -d\tforget the remembered location of each NAME\n"
-"      -l\tdisplay in a format that may be reused as input\n"
-"      -p pathname\tuse PATHNAME as the full pathname of NAME\n"
-"      -r\tforget all remembered locations\n"
-"      -t\tprint the remembered location of each NAME, preceding\n"
-"    \t\teach location with the corresponding NAME if multiple\n"
-"    \t\tNAMEs are given\n"
-"    Arguments:\n"
-"      NAME\tEach NAME is searched for in $PATH and added to the list\n"
-"    \t\tof remembered commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is not found or an invalid option is given."
-msgstr ""
-"Husk eller vis programplasseringer.\n"
-"    \n"
-"    Finn ut og husk fullstendige stinavn pÃ¥ hvert kommandoNAVN. Hvis\n"
-"    ingen argumenter er gitt, viser programmet lagrede programplasseringer.\n"
-"    \n"
-"    Valg:\n"
-"      -d\t\tglem lagret plassering av valgt(e) NAVN\n"
-"      -l\t\tskriv ut i gjenbrukbart format\n"
-"      -p stinavn\tbruk valgt STINAVN som fullstendig stinavn pÃ¥ valgt NAVN\n"
-"      -r\t\tglem alle lagrede plasseringer\n"
-"      -t\t\tskriv ut lagret plassering av valgt(e) NAVN, med\n"
-"    \t\tNAVN foran aktuell plassering hvis flere NAVN er valgt\n"
-"    Argumenter:\n"
-"      NAVN\t\tProgrammet søker etter hvert NAVN i $PATH og legger det til i "
-"lista\n"
-"    \t\tover lagrede kommandoer.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre NAVN ikke finnes eller brukeren tar et ugyldig "
-"valg."
-
-#: builtins.c:810
-#, fuzzy
-msgid ""
-"Display information about builtin commands.\n"
-"    \n"
-"    Displays brief summaries of builtin commands.  If PATTERN is\n"
-"    specified, gives detailed help on all commands matching PATTERN,\n"
-"    otherwise the list of help topics is printed.\n"
-"    \n"
-"    Options:\n"
-"      -d\toutput short description for each topic\n"
-"      -m\tdisplay usage in pseudo-manpage format\n"
-"      -s\toutput only a short usage synopsis for each topic matching\n"
-"    \t\tPATTERN\n"
-"    \n"
-"    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless PATTERN is not found or an invalid option is "
-"given."
-msgstr ""
-"Vis informasjon om innebygde kommandoer.\n"
-"    \n"
-"    Vis kort sammendrag om innebygde kommandoer. Hvis MØNSTER er\n"
-"    gitt, vises detaljert hjelp til bruk av alle kommandoer som samsvarer\n"
-"    med MØNSTER. Ellers vises en liste over hjelpeemner.\n"
-"    \n"
-"    VALG:\n"
-"      -d\tskriv ut en kort beskrivelse av hvert emne\n"
-"      -m\tetterlikn Â«manpage»-format i bruksdata\n"
-"      -s\tbare vis et kort brukssammendrag per emne som samsvarer\n"
-"    \tmed MØNSTER\n"
-"    \n"
-"    Argumenter:\n"
-"      MØNSTER\tVelger hjelpeemne\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre et MØNSTER ikke finnes eller brukeren tar et "
-"ugyldig valg."
-
-#: builtins.c:834
-#, fuzzy
-msgid ""
-"Display or manipulate the history list.\n"
-"    \n"
-"    Display the history list with line numbers, prefixing each modified\n"
-"    entry with a `*'.  An argument of N lists only the last N entries.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at offset OFFSET.\n"
-"    \n"
-"      -a\tappend history lines from this session to the history file\n"
-"      -n\tread all history lines not already read from the history file\n"
-"      -r\tread the history file and append the contents to the history\n"
-"    \t\tlist\n"
-"      -w\twrite the current history to the history file\n"
-"    \t\tand append them to the history list\n"
-"    \n"
-"      -p\tperform history expansion on each ARG and display the result\n"
-"    \t\twithout storing it in the history list\n"
-"      -s\tappend the ARGs to the history list as a single entry\n"
-"    \n"
-"    If FILENAME is given, it is used as the history file.  Otherwise,\n"
-"    if HISTFILE has a value, that is used, else ~/.bash_history.\n"
-"    \n"
-"    If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
-"    as a format string for strftime(3) to print the time stamp associated\n"
-"    with each displayed history entry.  No time stamps are printed "
-"otherwise.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-"Vis eller gjør endringer i kommandohistorikk.\n"
-"    \n"
-"    Vis historikk som en liste med linjenumre, og legg til en Â«*» foran\n"
-"    endrede oppføringer.  Argumentet N viser siste N antall oppføringer.\n"
-"    \n"
-"    Valg:\n"
-"      -c\ttøm historikk ved Ã¥ slette alle oppføringer\n"
-"      -d posisjon\tslett historikkoppføring ved valgt posisjon.\n"
-"    \n"
-"      -a\tlegg til linjer fra denne Ã¸kta i historikkfil\n"
-"      -n\tles alle historikklinjer som ikke allerede er lest inn fra "
-"historikkfil\n"
-"      -r\tles historikkfil og legg til innhold i historikkliste\n"
-"      -w\tlagre gjeldende historikk i historikkfil\n"
-"    \tog legg til i historikkliste\n"
-"    \n"
-"      -p\tutfør historikkutvidelse per ARGument og vis resultatet\n"
-"    \tuten Ã¥ lagre det i historikkliste\n"
-"      -s\tlegg til ARGumenter i historikkliste som Ã©n enkelt oppføring\n"
-"    \n"
-"    Hvis FILNAVN er valgt, brukes dette som historikkfil. Hvis ikke, brukes\n"
-"    $HISTFILE hvis den har en verdi. Ellers brukes Â«~/.bash_history».\n"
-"    \n"
-"    Hvis variabelen $HISTTIMEFORMAT har en verdi som ikke er null, brukes "
-"denne\n"
-"    verdien som formatstreng for strftime(3) for Ã¥ skriv ut tidsstempelet i\n"
-"    hver historikkoppføring. Ellers skrives ingen tidsstempler ut.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en "
-"feil."
-
-#: builtins.c:870
-#, fuzzy
-msgid ""
-"Display status of jobs.\n"
-"    \n"
-"    Lists the active jobs.  JOBSPEC restricts output to that job.\n"
-"    Without options, the status of all active jobs is displayed.\n"
-"    \n"
-"    Options:\n"
-"      -l\tlists process IDs in addition to the normal information\n"
-"      -n\tlists only processes that have changed status since the last\n"
-"    \t\tnotification\n"
-"      -p\tlists process IDs only\n"
-"      -r\trestrict output to running jobs\n"
-"      -s\trestrict output to stopped jobs\n"
-"    \n"
-"    If -x is supplied, COMMAND is run after all job specifications that\n"
-"    appear in ARGS have been replaced with the process ID of that job's\n"
-"    process group leader.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs.\n"
-"    If -x is used, returns the exit status of COMMAND."
-msgstr ""
-"VIs status for bakgrunnsjobber.\n"
-"    \n"
-"    Vis aktive bakgrunnsjobber. JOBBSPES begrenser utskrift til valgt jobb.\n"
-"    Hvis ingenting er valgt, vises status for alle aktive jobber.\n"
-"    \n"
-"    Valg:\n"
-"      -l\tvis prosess-ID-er i tillegg til vanlig informasjon\n"
-"      -n\tbare vis prosesser som har endret stattus siden forrige\n"
-"    \tvarsling\n"
-"      -p\tbare vis prosess-ID-er\n"
-"      -r\tbare skriv ut kjørende jobber\n"
-"      -s\tbare skriv ut ventende jobber\n"
-"    \n"
-"    Hvis Â«-x» er valgt, kjøres KOMMANDO straks alle ARGumenterte\n"
-"    jobber er erstattet med prosess-ID-en til gjeldende prosessgruppeleder.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en "
-"feil.\n"
-"    Hvis Â«-x» er valgt, hentes statuskode fra aktuell KOMMANDO."
-
-#: builtins.c:897
-#, fuzzy
-msgid ""
-"Remove jobs from current shell.\n"
-"    \n"
-"    Removes each JOBSPEC argument from the table of active jobs.  Without\n"
-"    any JOBSPECs, the shell uses its notion of the current job.\n"
-"    \n"
-"    Options:\n"
-"      -a\tremove all jobs if JOBSPEC is not supplied\n"
-"      -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
-"    \t\tshell receives a SIGHUP\n"
-"      -r\tremove only running jobs\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option or JOBSPEC is given."
-msgstr ""
-"Fjern jobber fra gjeldende skall.\n"
-"    \n"
-"    Fjerner hvert JOBBSPES-argument fra tabellen med aktive jobber.\n"
-"    Hvis ingen JOBBSPES er valgt, brukes jobben som regnes som gjeldende.\n"
-"    \n"
-"    Valg:\n"
-"      -a\tfjern alle jobber hvis JOBBSPES ikke er angitt\n"
-"      -h\tmarker hver JOBBSPES slik at SIGHUP ikke sendes til jobben hvis "
-"skallet\n"
-"    \tmottar et SIGHUP\n"
-"      -r\tbare fjern kjørende jobber\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren bruker ugyldig(e) valg eller JOBBSPES."
-
-#: builtins.c:916
-#, fuzzy
-msgid ""
-"Send a signal to a job.\n"
-"    \n"
-"    Send the processes identified by PID or JOBSPEC the signal named by\n"
-"    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then\n"
-"    SIGTERM is assumed.\n"
-"    \n"
-"    Options:\n"
-"      -s sig\tSIG is a signal name\n"
-"      -n sig\tSIG is a signal number\n"
-"      -l\tlist the signal names; if arguments follow `-l' they are\n"
-"    \t\tassumed to be signal numbers for which names should be listed\n"
-"    \n"
-"    Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-"    instead of process IDs, and allows processes to be killed if the limit\n"
-"    on processes that you can create is reached.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-"Send et signal til en jobb.\n"
-"    \n"
-"    Gi prosesser (valgt med PID eller JOBBSPES) et signal\n"
-"    (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er "
-"valgt,\n"
-"    brukes SIGTERM.\n"
-"    \n"
-"    Valg:\n"
-"      -s sig\tSIG er et signalnavn\n"
-"      -n sig\tSIG er et signalnummer\n"
-"      -l\tvis signalnavn. Hvis Â«-l» etterfølges av argumenter,\n"
-"    \tantas disse Ã¥ være signalnumre som det skal vises navn pÃ¥\n"
-"    \n"
-"    Kill er en innebygget skallkommando av to grunner: den tillater bruk av "
-"jobb-ID\n"
-"    i stedet for prosess-ID, og lar brukeren drepe prosesser hvis grensa "
-"for\n"
-"    tillatt antall prosesser er nÃ¥dd.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r "
-"feil."
-
-#: builtins.c:939
-msgid ""
-"Evaluate arithmetic expressions.\n"
-"    \n"
-"    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
-"    fixed-width integers with no check for overflow, though division by 0\n"
-"    is trapped and flagged as an error.  The following list of operators is\n"
-"    grouped into levels of equal-precedence operators.  The levels are "
-"listed\n"
-"    in order of decreasing precedence.\n"
-"    \n"
-"    \tid++, id--\tvariable post-increment, post-decrement\n"
-"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
-"    \t-, +\t\tunary minus, plus\n"
-"    \t!, ~\t\tlogical and bitwise negation\n"
-"    \t**\t\texponentiation\n"
-"    \t*, /, %\t\tmultiplication, division, remainder\n"
-"    \t+, -\t\taddition, subtraction\n"
-"    \t<<, >>\t\tleft and right bitwise shifts\n"
-"    \t<=, >=, <, >\tcomparison\n"
-"    \t==, !=\t\tequality, inequality\n"
-"    \t&\t\tbitwise AND\n"
-"    \t^\t\tbitwise XOR\n"
-"    \t|\t\tbitwise OR\n"
-"    \t&&\t\tlogical AND\n"
-"    \t||\t\tlogical OR\n"
-"    \texpr ? expr : expr\n"
-"    \t\t\tconditional operator\n"
-"    \t=, *=, /=, %=,\n"
-"    \t+=, -=, <<=, >>=,\n"
-"    \t&=, ^=, |=\tassignment\n"
-"    \n"
-"    Shell variables are allowed as operands.  The name of the variable\n"
-"    is replaced by its value (coerced to a fixed-width integer) within\n"
-"    an expression.  The variable need not have its integer attribute\n"
-"    turned on to be used in an expression.\n"
-"    \n"
-"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
-"    parentheses are evaluated first and may override the precedence\n"
-"    rules above.\n"
-"    \n"
-"    Exit Status:\n"
-"    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
-msgstr ""
-"Kontroller aritmetiske uttrykk.\n"
-"    \n"
-"    Kontroller hvert ARGument som et aritmetisk uttrykk. Kontroll utføres i\n"
-"    breddefaste heltall uten overflodssjekk, men deling pÃ¥ 0 fanges opp\n"
-"    og markeres som en feil. Følgende liste over operatører er\n"
-"    sortert gruppevis pÃ¥ presedensnivÃ¥, som vises i synkende rekkefølge.\n"
-"    \n"
-"    \tid++, id--\tvariabel post-inkrement, post-dekrement\n"
-"    \t++id, --id\tvariabel pre-inkrement, pre-dekrement\n"
-"    \t-, +\t\tunær minus, pluss\n"
-"    \t!, ~\t\tlogisk og bitvis negasjon\n"
-"    \t**\t\teksponentiasjon\n"
-"    \t*, /, %\t\tmultiplikasjon, divisjon, rest\n"
-"    \t+, -\t\taddisjon, subtraksjon\n"
-"    \t<<, >>\t\tvenstre og høyre bitvis bytte\n"
-"    \t<=, >=, <, >\tsammenlikning\n"
-"    \t==, !=\t\tlikhet, ulikhet\n"
-"    \t&\t\tbitvis AND\n"
-"    \t^\t\tbitvis XOR\n"
-"    \t|\t\tbitvis OR\n"
-"    \t&&\t\tlogisk AND\n"
-"    \t||\t\tlogisk OR\n"
-"    \texpr ? expr : expr\n"
-"    \t\t\tbetinget operatør\n"
-"    \t=, *=, /=, %=,\n"
-"    \t+=, -=, <<=, >>=,\n"
-"    \t&=, ^=, |=\toppgave\n"
-"    \n"
-"    Skallvariabler tillates som operand. Variabelens navn erstattes med\n"
-"    verdien (tvunget til et breddefast heltall) i et uttrykk.\n"
-"    Variabelen behøver ikke heltallsattributt for Ã¥ kunne brukes i et "
-"uttrykk.\n"
-"    \n"
-"    Operatører regnes ut etter presedens. Underuttrykk i parentes\n"
-"    regnes ut først, og kan overstyre overnevnte presedensregler.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Hvis siste ARGument blir 0, er status 1. Ellers er statuskoden 0."
-
-#: builtins.c:984
-#, fuzzy
-msgid ""
-"Read a line from the standard input and split it into fields.\n"
-"    \n"
-"    Reads a single line from the standard input, or from file descriptor FD\n"
-"    if the -u option is supplied.  The line is split into fields as with "
-"word\n"
-"    splitting, and the first word is assigned to the first NAME, the second\n"
-"    word to the second NAME, and so on, with any leftover words assigned to\n"
-"    the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
-"    delimiters.\n"
-"    \n"
-"    If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
-"    \n"
-"    Options:\n"
-"      -a array\tassign the words read to sequential indices of the array\n"
-"    \t\tvariable ARRAY, starting at zero\n"
-"      -d delim\tcontinue until the first character of DELIM is read, rather\n"
-"    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
-"      -i text\tuse TEXT as the initial text for Readline\n"
-"      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
-"    \t\tfor a newline, but honor a delimiter if fewer than\n"
-"    \t\tNCHARS characters are read before the delimiter\n"
-"      -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
-"    \t\tEOF is encountered or read times out, ignoring any\n"
-"    \t\tdelimiter\n"
-"      -p prompt\toutput the string PROMPT without a trailing newline before\n"
-"    \t\tattempting to read\n"
-"      -r\tdo not allow backslashes to escape any characters\n"
-"      -s\tdo not echo input coming from a terminal\n"
-"      -t timeout\ttime out and return failure if a complete line of\n"
-"    \t\tinput is not read within TIMEOUT seconds.  The value of the\n"
-"    \t\tTMOUT variable is the default timeout.  TIMEOUT may be a\n"
-"    \t\tfractional number.  If TIMEOUT is 0, read returns\n"
-"    \t\timmediately, without trying to read any data, returning\n"
-"    \t\tsuccess only if input is available on the specified\n"
-"    \t\tfile descriptor.  The exit status is greater than 128\n"
-"    \t\tif the timeout is exceeded\n"
-"      -u fd\tread from file descriptor FD instead of the standard input\n"
-"    \n"
-"    Exit Status:\n"
-"    The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-"    (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
-"    or an invalid file descriptor is supplied as the argument to -u."
-msgstr ""
-"Les en linje fra standard inndata og del den opp i felt.\n"
-"    \n"
-"    Leser en enkeltlinje fra standard inndata, eller fra fildeskriptor FD\n"
-"    hvis Â«-u» er valgt. Linja deles opp i felt pÃ¥ samme mÃ¥te som orddeling.\n"
-"    Første ord tildeles første NAVN, ord nummer to til NAVN nummer to,\n"
-"    og sÃ¥ videre. Eventuelle restrerende ord tildeles siste NAVN.\n"
-"    Bare tegn som finnes i $IFS regnes som ord-skilletegn.\n"
-"    \n"
-"    Hvis ingen NAVN er oppgitt, legges lest linje i variabelen REPLY.\n"
-"    \n"
-"    Valg:\n"
-"      -a tabell\tknytt leste ord til sekvens-indekser i \n"
-"    \t\ttabellvariabelen TABELL, talt fra null\n"
-"      -d skill\tfortsett frem til første SKILLetegn, i stedet for frem til "
-"linjeskift\n"
-"      -e\t\tbruk Readline til Ã¥ hente linja i et interaktivt skall\n"
-"      -i tekst\tBruk valgt TEKST med Readline\n"
-"      -n n\tgÃ¥ tilbake etter Ã¥ ha lest N antall tegn i stedet for Ã¥ vente pÃ¥ "
-"ny linje,\n"
-"    \t\tmen bruk skilletegn hvis linja er kortere enn N\n"
-"    \t\tles tegn før skilletegn\n"
-"      -N N\tgÃ¥ tilbake etter Ã¥ ha lest nøyaktig N antall tegn, med mindre\n"
-"    \t\tEOF eller tidsavbrudd oppstÃ¥r (skilletegn ignoreres)\n"
-"      -p ledet\tskriv ut valgt LEDETekst uten Ã¥ legge til linjeskift før "
-"lesing\n"
-"      -r\t\tikke tillat bruk av skrÃ¥strek som skiftetegn\n"
-"      -s\t\tikke skriv ut inndata som kommer fra en terminal\n"
-"      -t tidsav\tavbryt og avslutt med feil hvis en hel linje med inndata\n"
-"    \t\tikke blir lest ferdig innen valgt TIDSAVbrudd (i sekunder).\n"
-"    \t\tStandard avbruddstid hentes fra variabelen TMOUT. TIDSAVbrudd kan "
-"være\n"
-"    \t\tet brøktall. Hvis TIDSAV er 0, gÃ¥r read tilbake umiddelbart,\n"
-"    \t\tog prøver ikke Ã¥ lese data. I sistnevnte tilfelle avslutter read "
-"bare\n"
-"    \t\tvellykket hvis inndata er tilgjengelig pÃ¥ valgt fildeskriptor.\n"
-"    \t\tAvslutningsstatus er større enn 128 ved tidsavbrudd\n"
-"      -u fd\t\tles fra fildeskriptor FD i stedet for standard inndata\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Null (vellykket), med mindre programmet møter EOF, fÃ¥r tidsavbrudd\n"
-"    (i sÃ¥ fall er verdien høyere enn 128), det oppstÃ¥r en variabel-"
-"tidelingsfeil,\n"
-"    eller valget Â«-u» argumenteres med en ugyldig fildeskriptor."
-
-#: builtins.c:1031
-msgid ""
-"Return from a shell function.\n"
-"    \n"
-"    Causes a function or sourced script to exit with the return value\n"
-"    specified by N.  If N is omitted, the return status is that of the\n"
-"    last command executed within the function or script.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns N, or failure if the shell is not executing a function or script."
-msgstr ""
-"GÃ¥ ut av en skallfunksjon.\n"
-"    \n"
-"    Avslutter en funksjon eller kildeskript med status N.\n"
-"    Hvis N er utelatt, brukes statuskoden fra forrige kommando\n"
-"    i funksjonen eller skriptet.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript."
-
-#: builtins.c:1044
-msgid ""
-"Set or unset values of shell options and positional parameters.\n"
-"    \n"
-"    Change the value of shell attributes and positional parameters, or\n"
-"    display the names and values of shell variables.\n"
-"    \n"
-"    Options:\n"
-"      -a  Mark variables which are modified or created for export.\n"
-"      -b  Notify of job termination immediately.\n"
-"      -e  Exit immediately if a command exits with a non-zero status.\n"
-"      -f  Disable file name generation (globbing).\n"
-"      -h  Remember the location of commands as they are looked up.\n"
-"      -k  All assignment arguments are placed in the environment for a\n"
-"          command, not just those that precede the command name.\n"
-"      -m  Job control is enabled.\n"
-"      -n  Read commands but do not execute them.\n"
-"      -o option-name\n"
-"          Set the variable corresponding to option-name:\n"
-"              allexport    same as -a\n"
-"              braceexpand  same as -B\n"
-"              emacs        use an emacs-style line editing interface\n"
-"              errexit      same as -e\n"
-"              errtrace     same as -E\n"
-"              functrace    same as -T\n"
-"              hashall      same as -h\n"
-"              histexpand   same as -H\n"
-"              history      enable command history\n"
-"              ignoreeof    the shell will not exit upon reading EOF\n"
-"              interactive-comments\n"
-"                           allow comments to appear in interactive commands\n"
-"              keyword      same as -k\n"
-"              monitor      same as -m\n"
-"              noclobber    same as -C\n"
-"              noexec       same as -n\n"
-"              noglob       same as -f\n"
-"              nolog        currently accepted but ignored\n"
-"              notify       same as -b\n"
-"              nounset      same as -u\n"
-"              onecmd       same as -t\n"
-"              physical     same as -P\n"
-"              pipefail     the return value of a pipeline is the status of\n"
-"                           the last command to exit with a non-zero status,\n"
-"                           or zero if no command exited with a non-zero "
-"status\n"
-"              posix        change the behavior of bash where the default\n"
-"                           operation differs from the Posix standard to\n"
-"                           match the standard\n"
-"              privileged   same as -p\n"
-"              verbose      same as -v\n"
-"              vi           use a vi-style line editing interface\n"
-"              xtrace       same as -x\n"
-"      -p  Turned on whenever the real and effective user ids do not match.\n"
-"          Disables processing of the $ENV file and importing of shell\n"
-"          functions.  Turning this option off causes the effective uid and\n"
-"          gid to be set to the real uid and gid.\n"
-"      -t  Exit after reading and executing one command.\n"
-"      -u  Treat unset variables as an error when substituting.\n"
-"      -v  Print shell input lines as they are read.\n"
-"      -x  Print commands and their arguments as they are executed.\n"
-"      -B  the shell will perform brace expansion\n"
-"      -C  If set, disallow existing regular files to be overwritten\n"
-"          by redirection of output.\n"
-"      -E  If set, the ERR trap is inherited by shell functions.\n"
-"      -H  Enable ! style history substitution.  This flag is on\n"
-"          by default when the shell is interactive.\n"
-"      -P  If set, do not resolve symbolic links when executing commands\n"
-"          such as cd which change the current directory.\n"
-"      -T  If set, the DEBUG trap is inherited by shell functions.\n"
-"      --  Assign any remaining arguments to the positional parameters.\n"
-"          If there are no remaining arguments, the positional parameters\n"
-"          are unset.\n"
-"      -   Assign any remaining arguments to the positional parameters.\n"
-"          The -x and -v options are turned off.\n"
-"    \n"
-"    Using + rather than - causes these flags to be turned off.  The\n"
-"    flags can also be used upon invocation of the shell.  The current\n"
-"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
-"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
-"    ARGs are given, all shell variables are printed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given."
-msgstr ""
-"Legg til eller fjern verdier for skallvalg og posisjonsparametre.\n"
-"    \n"
-"    Endre verdien av skall-attributter og posisjonsparametre, eller\n"
-"    vis navn og verdier av skallvariabler.\n"
-"    \n"
-"    Valg:\n"
-"      -a  Marker variabler som er endret eller laget for eksportering.\n"
-"      -b  Varsle jobbavbrudd umiddelbart.\n"
-"      -e  Avslutt hvis en kommando avslutter med annen status enn null.\n"
-"      -f  SlÃ¥ av generering av filnavn («globbing»).\n"
-"      -h  Husk plassering av kommandoer ved oppslag.\n"
-"      -k  Legg alle tildelingsargumenter for en kommando i miljøet,\n"
-"          og ikke bare de som kommer før kommandonavnet.\n"
-"      -m  SlÃ¥ pÃ¥ jobbkontroll.\n"
-"      -n  Les kommandoer, men ikke kjør dem.\n"
-"      -o valgnavn\n"
-"          Gi verdi til variabelen som samsvarer med valgnavn:\n"
-"              allexport    tilsvarer Â«-a»\n"
-"              braceexpand  tilsvarer Â«-B»\n"
-"              emacs        rediger linjer med et emacs-aktig grensesnitt\n"
-"              errexit      tilsvarer Â«-e»\n"
-"              errtrace     tilsvarer Â«-E»\n"
-"              functrace    tilsvarer Â«-T»\n"
-"              hashall      tilsvarer Â«-h»\n"
-"              histexpand   tilsvarer Â«-H»\n"
-"              history      slÃ¥ pÃ¥ kommandohistorikk\n"
-"              ignoreeof    ikke avslutt skall ved lesing av EOF\n"
-"              interactive-comments\n"
-"                           tillat kommentarer i interaktive kommandoer\n"
-"              keyword      tilsvarer Â«-k»\n"
-"              monitor      tilsvarer Â«-m»\n"
-"              noclobber    tilsvarer Â«-C»\n"
-"              noexec       tilsvarer Â«-n»\n"
-"              noglob       tilsvarer Â«-f»\n"
-"              nolog        godtas, men ignoreres\n"
-"              notify       tilsvarer Â«-b»\n"
-"              nounset      tilsvarer Â«-u»\n"
-"              onecmd       tilsvarer Â«-t»\n"
-"              physical     tilsvarer Â«-P»\n"
-"              pipefail     returverdi av en kommandokø er statusen for\n"
-"                           siste kommando som avslutter med en annen status "
-"enn null,\n"
-"                           eller null hvis alle kommandoer avsluttet med "
-"null\n"
-"              posix        endre bash-oppførsel hvor standardoppførselen er\n"
-"                           annerledes enn Posix-standarden, slik at bash\n"
-"                           samsvarer med Posix\n"
-"              privileged   tilsvarer Â«-p»\n"
-"              verbose      tilsvarer Â«-v»\n"
-"              vi           rediger linjer med et vi-aktig grensesnitt\n"
-"              xtrace       tilsvarer Â«-x»\n"
-"      -p  SlÃ¥tt pÃ¥ nÃ¥r virkelig og effektiv bruker-ID ikke er like.\n"
-"          Dette slÃ¥r av behandling av fila $ENV og importering av\n"
-"          skallfunksjoner. Hvis du slÃ¥r av dette valget, blir effektiv uid "
-"og\n"
-"          gid det samme som virkelig uid og gid.\n"
-"      -t  Avslutt nÃ¥r Ã©n kommando er lest og kjørt.\n"
-"      -u  Behandle udefinerte variabler som en feil.\n"
-"      -v  Skriv ut skall-inndatalinjer nÃ¥r de leses.\n"
-"      -x  Skriv ut kommandoer og argumenter nÃ¥r de kjøres.\n"
-"      -B  utfør Â«brace»-utvidelse\n"
-"      -C  Ikke tillat overskriving av vanlige filer ved\n"
-"          videresending av utdata.\n"
-"      -E  Gi ERR-felle videre til skallfunksjoner.\n"
-"      -H  SlÃ¥ pÃ¥ historikk-subsidiering i Â«!»-stil. Dette er slÃ¥tt pÃ¥\n"
-"          som standard i interaktive skall.\n"
-"      -P  Ikke følg symbolske lenker ved kjøring av kommandoer\n"
-"          som Â«cd».\n"
-"      -T  Gi DEBUG-felle videre til skallfunksjoner.\n"
-"      --  Tildel gjenstÃ¥ende argumenter til posisjonsparametre.\n"
-"          Hvis ingen argumenter gjenstÃ¥r, tømmes posisjonsparametrene..\n"
-"      -   Knytt gjenstÃ¥ende argumenter til posisjonsparametrene.\n"
-"          Valgene Â«-x» og Â«-v» er slÃ¥tt av.\n"
-"    \n"
-"    Bruk Â«+» i stedet for Â«-» for Ã¥ skru av disse valgene.\n"
-"    De kan ogsÃ¥ brukes nÃ¥r skalelt kalles. Gjeldende valgsett finnes\n"
-"    i Â«$-». GjenstÃ¥ende antall ARGumenter er posisjonsparametre,\n"
-"    og tildeles i rekkefølge til $1, $2, â€¦ $n. Hvis ingen\n"
-"    ARGumenter er brukt, skrives alle skallvariabler ut.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg."
-
-#: builtins.c:1129
-#, fuzzy
-msgid ""
-"Unset values and attributes of shell variables and functions.\n"
-"    \n"
-"    For each NAME, remove the corresponding variable or function.\n"
-"    \n"
-"    Options:\n"
-"      -f\ttreat each NAME as a shell function\n"
-"      -v\ttreat each NAME as a shell variable\n"
-"      -n\ttreat each NAME as a name reference and unset the variable itself\n"
-"    \t\trather than the variable it references\n"
-"    \n"
-"    Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
-"    tries to unset a function.\n"
-"    \n"
-"    Some variables cannot be unset; also see `readonly'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a NAME is read-only."
-msgstr ""
-"Fjern verdier og attributter fra skallvariabler og funksjoner.\n"
-"    \n"
-"    Fjern variabel og funksjon per oppgitt NAVN.\n"
-"    \n"
-"    Valg:\n"
-"      -f\tbehandle hvert NAVN som en skallfunksjon\n"
-"      -v\tbehandle hvert NAVN som en skallvariabel\n"
-"      -n\tbehandle hvert NAVN som en navnreferanse, og tilbakestill selve "
-"variabelen\n"
-"    \ti stedet for variabelen den refererer til\n"
-"    \n"
-"    Hvis ingen valg er tatt, prøver programmet først Ã¥ tømme en variabel.\n"
-"    Hvis dette mislykkes, prøver programmet Ã¥ tømme en funksjon.\n"
-"    \n"
-"    Enkelte variabler kan ikke tømmes. Se ogsÃ¥ Â«readonly».\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller et NAVN er "
-"skrivebeskyttet."
-
-#: builtins.c:1151
-msgid ""
-"Set export attribute for shell variables.\n"
-"    \n"
-"    Marks each NAME for automatic export to the environment of subsequently\n"
-"    executed commands.  If VALUE is supplied, assign VALUE before "
-"exporting.\n"
-"    \n"
-"    Options:\n"
-"      -f\trefer to shell functions\n"
-"      -n\tremove the export property from each NAME\n"
-"      -p\tdisplay a list of all exported variables and functions\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-"Gi skallvariabler eksport-attributt.\n"
-"    \n"
-"    Markerer hvert valgt NAVN for automatisk eksportering til miljøet ved "
-"etterfølgende\n"
-"    kjørte kommandoer. Hvis VERDI er oppgitt, tildeles VERDI før "
-"eksportering.\n"
-"    \n"
-"    Valg:\n"
-"      -f\thenvis til skallfunksjoner\n"
-"      -n\tfjern eksport-attributt fra valgt(e) NAVN\n"
-"      -p\tvis en liste over alle eksporterte variabler og funksjoner\n"
-"    \n"
-"    Bruk argumentet«--» for Ã¥ slÃ¥ av videre behandling av valg.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg, eller et NAVN er "
-"ugyldig."
-
-#: builtins.c:1170
-#, fuzzy
-msgid ""
-"Mark shell variables as unchangeable.\n"
-"    \n"
-"    Mark each NAME as read-only; the values of these NAMEs may not be\n"
-"    changed by subsequent assignment.  If VALUE is supplied, assign VALUE\n"
-"    before marking as read-only.\n"
-"    \n"
-"    Options:\n"
-"      -a\trefer to indexed array variables\n"
-"      -A\trefer to associative array variables\n"
-"      -f\trefer to shell functions\n"
-"      -p\tdisplay a list of all readonly variables or functions,\n"
-"    \t\tdepending on whether or not the -f option is given\n"
-"    \n"
-"    An argument of `--' disables further option processing.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-"Marker skallvariabler som skrivebeskyttet.\n"
-"    \n"
-"    Marker hvert valgt NAVN som skrivebeskyttet. Verdier av NAVN kan ikke "
-"endres\n"
-"    av etterfølgende tildeling. Hvis VERDI er oppgitt, tildeles denne før\n"
-"    variabelen markeres som skrivebeskyttet.\n"
-"    \n"
-"    Valg:\n"
-"      -a\thenvis til indekserte tabellvariabler\n"
-"      -A\thenvis til assosiative tabellvariabler\n"
-"      -f\thenvis til skallfunksjoner\n"
-"      -p\tvis en liste over alle skrivebeskyttede variabler eller "
-"funksjoner,\n"
-"            avhengig av hvorvidt Â«-f» er valgt\n"
-"    \n"
-"    Bruk argumentet Â«--» for Ã¥ slÃ¥ av videre behandling av valg.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren bruker et ugyldig valg eller NAVN."
-
-#: builtins.c:1192
-msgid ""
-"Shift positional parameters.\n"
-"    \n"
-"    Rename the positional parameters $N+1,$N+2 ... to $1,$2 ...  If N is\n"
-"    not given, it is assumed to be 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless N is negative or greater than $#."
-msgstr ""
-"Flytt posisjonsparametre.\n"
-"    \n"
-"    Gi parametrene $N+1,$N+2 osv. nye navn som $1,$2 osv. Hvis N er\n"
-"    utelatt, brukes verdien 1.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre N er negativ eller større enn $#."
-
-#: builtins.c:1204 builtins.c:1219
-msgid ""
-"Execute commands from a file in the current shell.\n"
-"    \n"
-"    Read and execute commands from FILENAME in the current shell.  The\n"
-"    entries in $PATH are used to find the directory containing FILENAME.\n"
-"    If any ARGUMENTS are supplied, they become the positional parameters\n"
-"    when FILENAME is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed in FILENAME; fails if\n"
-"    FILENAME cannot be read."
-msgstr ""
-"Kjør kommandoer fra en fil i gjeldende skall.\n"
-"    \n"
-"    Les og kjør kommandoer fra valgt FILNAVN i gjeldende kall.\n"
-"    Elementene i $PATH brukes til Ã¥ finne mappa med valgt FILNAVN.\n"
-"    Hvis ARGUMENTER brukes, bruke disse som posisjonsparametre\n"
-"    nÃ¥r valgt FILNAVN kjøres.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som siste kommando som ble kjørt via FILNAVN, eller\n"
-"    mislykket hvis FILNAVN ikke kan leses."
-
-#: builtins.c:1235
-msgid ""
-"Suspend shell execution.\n"
-"    \n"
-"    Suspend the execution of this shell until it receives a SIGCONT signal.\n"
-"    Unless forced, login shells cannot be suspended.\n"
-"    \n"
-"    Options:\n"
-"      -f\tforce the suspend, even if the shell is a login shell\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-"Sett skallkjøring pÃ¥ pause.\n"
-"    \n"
-"    Sett kjøring av dette skallet pÃ¥ pause inntil det mottar et SIGCONT-"
-"signal.\n"
-"    Innloggingsskall kan ikke settes pÃ¥ pause med mindre du tvinger det "
-"fram.\n"
-"    \n"
-"    Valg:\n"
-"      -f\ttving skallpause, selv hvis skallet er et innloggingsskall\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r en feil."
-
-#: builtins.c:1251
-#, fuzzy
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    Exits with a status of 0 (true) or 1 (false) depending on\n"
-"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
-"    expressions are often used to examine the status of a file.  There\n"
-"    are string operators and numeric comparison operators as well.\n"
-"    \n"
-"    The behavior of test depends on the number of arguments.  Read the\n"
-"    bash manual page for the complete specification.\n"
-"    \n"
-"    File operators:\n"
-"    \n"
-"      -a FILE        True if file exists.\n"
-"      -b FILE        True if file is block special.\n"
-"      -c FILE        True if file is character special.\n"
-"      -d FILE        True if file is a directory.\n"
-"      -e FILE        True if file exists.\n"
-"      -f FILE        True if file exists and is a regular file.\n"
-"      -g FILE        True if file is set-group-id.\n"
-"      -h FILE        True if file is a symbolic link.\n"
-"      -L FILE        True if file is a symbolic link.\n"
-"      -k FILE        True if file has its `sticky' bit set.\n"
-"      -p FILE        True if file is a named pipe.\n"
-"      -r FILE        True if file is readable by you.\n"
-"      -s FILE        True if file exists and is not empty.\n"
-"      -S FILE        True if file is a socket.\n"
-"      -t FD          True if FD is opened on a terminal.\n"
-"      -u FILE        True if the file is set-user-id.\n"
-"      -w FILE        True if the file is writable by you.\n"
-"      -x FILE        True if the file is executable by you.\n"
-"      -O FILE        True if the file is effectively owned by you.\n"
-"      -G FILE        True if the file is effectively owned by your group.\n"
-"      -N FILE        True if the file has been modified since it was last "
-"read.\n"
-"    \n"
-"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
-"                       modification date).\n"
-"    \n"
-"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
-"    \n"
-"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
-"    \n"
-"    String operators:\n"
-"    \n"
-"      -z STRING      True if string is empty.\n"
-"    \n"
-"      -n STRING\n"
-"         STRING      True if string is not empty.\n"
-"    \n"
-"      STRING1 = STRING2\n"
-"                     True if the strings are equal.\n"
-"      STRING1 != STRING2\n"
-"                     True if the strings are not equal.\n"
-"      STRING1 < STRING2\n"
-"                     True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-"      STRING1 > STRING2\n"
-"                     True if STRING1 sorts after STRING2 lexicographically.\n"
-"    \n"
-"    Other operators:\n"
-"    \n"
-"      -o OPTION      True if the shell option OPTION is enabled.\n"
-"      -v VAR         True if the shell variable VAR is set.\n"
-"      -R VAR         True if the shell variable VAR is set and is a name\n"
-"                     reference.\n"
-"      ! EXPR         True if expr is false.\n"
-"      EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-"      EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-"    \n"
-"      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
-"                     -lt, -le, -gt, or -ge.\n"
-"    \n"
-"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-"    than ARG2.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
-"    false or an invalid argument is given."
-msgstr ""
-"Kontroller betinget uttrykk.\n"
-"    \n"
-"    Avslutter med status 0 (positiv, Â«true») eller 1 (negativ, Â«false»)\n"
-"    i henhold til resultatet av valgt UTTRykk. Uttrykk kan være unære eller "
-"binære.\n"
-"    Unære uttrykk brukes ofte for Ã¥ undersøke status for en fil.\n"
-"    Streng- og tallkontroll-valg kan ogsÃ¥ brukes.\n"
-"    \n"
-"    Test endrer oppførsel i henhold til antall argumenter.\n"
-"    Se bash-bruksanvisninga for en fullstendig spesifikasjon.\n"
-"    \n"
-"    Filvalg:\n"
-"    \n"
-"      -a FIL        Positiv hvis FIL finnes.\n"
-"      -b FIL        Positiv hvis FIL er blokk-spesialfil.\n"
-"      -c FIL        Positiv hvis FIL er tegn-spesialfil.\n"
-"      -d FIL        Positiv hvis FIL er en mappe.\n"
-"      -e FIL        Positiv hvis FIL finnes.\n"
-"      -f FIL        Positiv hvis FIL finnes og er en vanlig fil.\n"
-"      -g FIL        Positiv hvis FIL er Â«set-group-id».\n"
-"      -h FIL        Positiv hvis FIL er en symbolsk lenke.\n"
-"      -L FIL        Positiv hvis FIL er en symbolsk lenke.\n"
-"      -k FIL        Positiv hvis FIL er Â«sticky».\n"
-"      -p FIL        Positiv hvis FIL er et navngitt datarør.\n"
-"      -r FIL        Positiv hvis FIL kan leses av deg.\n"
-"      -s FIL        Positiv hvis FIL finnes og ikke er tom.\n"
-"      -S FIL        Positiv hvis FIL er en sokkel.\n"
-"      -t FD          Positiv hvis FD er Ã¥pen i en terminal.\n"
-"      -u FIL        Positiv hvis FIL er Â«set-user-id».\n"
-"      -w FIL        Positiv hvis FIL kan overskrives av deg.\n"
-"      -x FIL        Positiv hvis FIL kan kjøres av deg.\n"
-"      -O FIL        Positiv hvis FIL har deg som effektiv eier.\n"
-"      -G FIL        Positiv hvis FIL har din gruppe som effektiv "
-"gruppetilhørighet.\n"
-"      -N FIL        Positiv hvis FIL er blitt endret siden den ble lest "
-"sist.\n"
-"    \n"
-"      FIL1 -nt FIL2  Positiv hvis FIL1 er nyere enn FIL2 (i følge\n"
-"                       endringsdato).\n"
-"    \n"
-"      FIL1 -ot FIL2  Positiv hvis FIL1 er eldre enn FIL2.\n"
-"    \n"
-"      FIL1 -ef FIL2  Positiv hvis FIL1 er en hard lenke til FIL2.\n"
-"    \n"
-"    Strengvalg:\n"
-"    \n"
-"      -z STRENG      Positiv hvis STRENG er tom.\n"
-"    \n"
-"      -n STRENG\n"
-"         STRENG      Positiv hvis STRENG ikke er tom.\n"
-"    \n"
-"      STRENG1 = STRENG2\n"
-"                     Positiv hvis STRENGene er like.\n"
-"      STRENG1 != STRENG2\n"
-"                     Positiv hvis STRENGene ikke er like.\n"
-"      STRENG1 < STRENG2\n"
-"                     Positiv hvis STRENG1 havner over STRENG2 nÃ¥r de "
-"sorteres leksikografisk.\n"
-"      STRENG1 > STRENG2\n"
-"                     Positiv hvis STRENG1 havner under STRENG2 nÃ¥r de "
-"sorteres leksikografisk.\n"
-"    \n"
-"    Andre valg:\n"
-"    \n"
-"      -o VALG      Positiv hvis skallvalget OPTION er slÃ¥tt pÃ¥.\n"
-"      -v VAR\t Positiv hvis skallvariabelen VAR har en verdi\n"
-"      -R VAR\t Positiv hvis skallvariabelen VAR har en verdi, og er en "
-"navnreferanse.\n"
-"      ! UTTR         Positiv hvis UTTR er usant.\n"
-"      UTTR1 -a UTTR2 Positiv hvis bÃ¥de UTTR1 og UTTR2 er sanne.\n"
-"      UTTR1 -o UTTR2 Positiv hvis enten UTTR1 eller UTTR2 er sanne.\n"
-"    \n"
-"      arg1 OP arg2   Aritmetiske tester. OP mÃ¥ være enten Â«-eq», Â«-ne»,\n"
-"                     Â«-lt», Â«-le», Â«-gt» eller Â«-ge».\n"
-"    \n"
-"    Aritmetiske binærvalg gir positiv verdi hvis ARG1 er lik, ulik, mindre "
-"enn,\n"
-"    lik-eller-mindre-enn, større enn eller større-enn-eller-lik ARG2.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ "
-"verdi eller\n"
-"    brukeren bruker et ugyldig argument."
-
-#: builtins.c:1333
-msgid ""
-"Evaluate conditional expression.\n"
-"    \n"
-"    This is a synonym for the \"test\" builtin, but the last argument must\n"
-"    be a literal `]', to match the opening `['."
-msgstr ""
-"Kontroller betinget uttrykk.\n"
-"    \n"
-"    Dette er synonymt med den innebygde kommandoen Â«test», men\n"
-"    siste argument mÃ¥ være Â«]» for Ã¥ samsvare med Â«[»."
-
-#: builtins.c:1342
-msgid ""
-"Display process times.\n"
-"    \n"
-"    Prints the accumulated user and system times for the shell and all of "
-"its\n"
-"    child processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Always succeeds."
-msgstr ""
-"Vis prosesstider.\n"
-"    \n"
-"    Skriver ut oppsamlet bruker- og systemtid for skallet og alle "
-"underprosesser.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Alltid vellykket."
-
-#: builtins.c:1354
-msgid ""
-"Trap signals and other events.\n"
-"    \n"
-"    Defines and activates handlers to be run when the shell receives "
-"signals\n"
-"    or other conditions.\n"
-"    \n"
-"    ARG is a command to be read and executed when the shell receives the\n"
-"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
-"    is supplied) or `-', each specified signal is reset to its original\n"
-"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-"    shell and by the commands it invokes.\n"
-"    \n"
-"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  "
-"If\n"
-"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.  "
-"If\n"
-"    a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-"    script run by the . or source builtins finishes executing.  A "
-"SIGNAL_SPEC\n"
-"    of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
-"    shell to exit when the -e option is enabled.\n"
-"    \n"
-"    If no arguments are supplied, trap prints the list of commands "
-"associated\n"
-"    with each signal.\n"
-"    \n"
-"    Options:\n"
-"      -l\tprint a list of signal names and their corresponding numbers\n"
-"      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
-"    \n"
-"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
-"    Signal names are case insensitive and the SIG prefix is optional.  A\n"
-"    signal may be sent to the shell with \"kill -signal $$\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
-msgstr ""
-"Fang signaler og andre hendelser.\n"
-"    \n"
-"    Definerer og slÃ¥r pÃ¥ brytere som skal kjøres nÃ¥r skallet mottar "
-"signaler\n"
-"    eller havner i andre tilstander.\n"
-"    \n"
-"    ARG er en kommando som skal leses og kjøres nÃ¥r skallet mottar signalet/-"
-"ene\n"
-"    i henhold til SIGNALSPES. Hvis ARG er enten utelatt eller Â«-»,\n"
-"    og Ã©n SIGNALSPES er brukt, tilbakestilles valgt(e) signal(er) til\n"
-"    opprinnelig verdi. Hvis ARG er null, ignoreres SIGNALSPES av skallet\n"
-"    og kommandoene det kjører.\n"
-"    \n"
-"    Hvis en SIGNALSPES er EXIT (0), kjøres ARG nÃ¥r skallet avslutter.\n"
-"    Hvis en SIGNALSPES er DEBUG, kjøres ARG før hver kommando.\n"
-"    Hvis en SIGNALSPES er RETURN, kjøres ARG hver gang en skallfunksjon, "
-"skript\n"
-"    eller innebygd kommando har kjørt ferdig. Hvis en SIGNALSPES\n"
-"    er ERR, kjøres ARG hver gang en feilkjørt kommando ville ført til at "
-"skallet\n"
-"    avsluttes nÃ¥r Â«-e» er valgt.\n"
-"    \n"
-"    Hvis ingen argumenter er brukt, skriver trap ut en liste over "
-"kommandoer\n"
-"    som er tilknyttet hvert signal.\n"
-"    \n"
-"    Valg:\n"
-"      -l\tskriv ut en liste over signalnavn og tilknyttede numre\n"
-"      -p\tvis trap-kommandoer som er tilknyttet hver SIGNALSPESifikasjon\n"
-"    \n"
-"    Hver SIGNALSPES er enten et signalnavn fra <signal.h> eller et "
-"signalnummer.\n"
-"    Signalnavn skiller mellom smÃ¥ og store bokstaver. Prefikset Â«SIG» er "
-"valgfritt.\n"
-"    Du kan sende et signal til skallet med Â«kill -signal $$».\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig."
-
-#: builtins.c:1390
-#, fuzzy
-msgid ""
-"Display information about command type.\n"
-"    \n"
-"    For each NAME, indicate how it would be interpreted if used as a\n"
-"    command name.\n"
-"    \n"
-"    Options:\n"
-"      -a\tdisplay all locations containing an executable named NAME;\n"
-"    \t\tincludes aliases, builtins, and functions, if and only if\n"
-"    \t\tthe `-p' option is not also used\n"
-"      -f\tsuppress shell function lookup\n"
-"      -P\tforce a PATH search for each NAME, even if it is an alias,\n"
-"    \t\tbuiltin, or function, and returns the name of the disk file\n"
-"    \t\tthat would be executed\n"
-"      -p\treturns either the name of the disk file that would be executed,\n"
-"    \t\tor nothing if `type -t NAME' would not return `file'\n"
-"      -t\toutput a single word which is one of `alias', `keyword',\n"
-"    \t\t`function', `builtin', `file' or `', if NAME is an alias,\n"
-"    \t\tshell reserved word, shell function, shell builtin, disk file,\n"
-"    \t\tor not found, respectively\n"
-"    \n"
-"    Arguments:\n"
-"      NAME\tCommand name to be interpreted.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if all of the NAMEs are found; fails if any are not "
-"found."
-msgstr ""
-"Vis informasjon om kommandotype.\n"
-"    \n"
-"    Vis hvordan hvert NAVN ville blitt tolket hvis det ble brukt som\n"
-"    et kommandonavn.\n"
-"    \n"
-"    Valg:\n"
-"      -a\tvis alle plasseringer som inneholder en kjørbar fil med oppgitt "
-"NAVN.\n"
-"    \tHer inngÃ¥r alle alias, innebygde kommandoer og funksjoner, med mindre\n"
-"    \t«-p» er valgt i tillegg\n"
-"      -f\tikke slÃ¥ opp skallfunksjoner\n"
-"      -P\ttving et søk i STI etter NAVN, selv hvis det er et alias,\n"
-"    \tinnebygd kommando eller en funksjon, og vis navn pÃ¥ fila\n"
-"    \tsom ville blitt kjørt\n"
-"      -p\tvis enten navn pÃ¥ fila som ville blitt kjørt, eller ingenting "
-"hvis\n"
-"    \t«type -t NAVN» ikke fører til Â«file».\n"
-"      -t\tbeskriv NAVN som enten Â«alias», Â«keyword» (nøkkelord),\n"
-"    \t«function» (funksjon), Â«builtin» (innebygd kommando), Â«file» (fil) "
-"eller \n"
-"    \t«'» (ikke funnet), if NAME is an alias, shell\n"
-"    \n"
-"    Argumenter:\n"
-"      NAVN\tKommandonavn som skal tolkes.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke "
-"finnes."
-
-#: builtins.c:1421
-#, fuzzy
-msgid ""
-"Modify shell resource limits.\n"
-"    \n"
-"    Provides control over the resources available to the shell and "
-"processes\n"
-"    it creates, on systems that allow such control.\n"
-"    \n"
-"    Options:\n"
-"      -S\tuse the `soft' resource limit\n"
-"      -H\tuse the `hard' resource limit\n"
-"      -a\tall current limits are reported\n"
-"      -b\tthe socket buffer size\n"
-"      -c\tthe maximum size of core files created\n"
-"      -d\tthe maximum size of a process's data segment\n"
-"      -e\tthe maximum scheduling priority (`nice')\n"
-"      -f\tthe maximum size of files written by the shell and its children\n"
-"      -i\tthe maximum number of pending signals\n"
-"      -k\tthe maximum number of kqueues allocated for this process\n"
-"      -l\tthe maximum size a process may lock into memory\n"
-"      -m\tthe maximum resident set size\n"
-"      -n\tthe maximum number of open file descriptors\n"
-"      -p\tthe pipe buffer size\n"
-"      -q\tthe maximum number of bytes in POSIX message queues\n"
-"      -r\tthe maximum real-time scheduling priority\n"
-"      -s\tthe maximum stack size\n"
-"      -t\tthe maximum amount of cpu time in seconds\n"
-"      -u\tthe maximum number of user processes\n"
-"      -v\tthe size of virtual memory\n"
-"      -x\tthe maximum number of file locks\n"
-"      -P\tthe maximum number of pseudoterminals\n"
-"      -T\tthe maximum number of threads\n"
-"    \n"
-"    Not all options are available on all platforms.\n"
-"    \n"
-"    If LIMIT is given, it is the new value of the specified resource; the\n"
-"    special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-"    current soft limit, the current hard limit, and no limit, respectively.\n"
-"    Otherwise, the current value of the specified resource is printed.  If\n"
-"    no option is given, then -f is assumed.\n"
-"    \n"
-"    Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-"    -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-"    number of processes.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Endre grenser for skallressurser.\n"
-"    \n"
-"    Lar deg kontrollere mengden ressurser som skal være tilgjengelig for "
-"skall og\n"
-"    prosessene det lager pÃ¥ systemer som tillater det.\n"
-"    \n"
-"    Valg:\n"
-"      -S\tbruk myk («soft») ressursgrense\n"
-"      -H\tbruk Â«hard» ressursgrense\n"
-"      -a\tvis alle gjeldende grenser\n"
-"      -b\tstørrelse pÃ¥ sokkel-mellomlager\n"
-"      -c\tmaksimal størrelse pÃ¥ opprettede kjernefiler\n"
-"      -d\tmaksimal størrelse pÃ¥ datasegment av en prosess\n"
-"      -e\tmaksimal prioritet («nice»-verdi)\n"
-"      -f\tmaksimal størrelse pÃ¥ filer som skrives av skallet og "
-"underprosesser\n"
-"      -i\tmaksimalt antall ventende signaler\n"
-"      -l\tmaksimal minnemengde en prosess kan lÃ¥se\n"
-"      -m\tmaksimal Â«resident set»-størrelse\n"
-"      -n\tmaksimalt antall Ã¥pne fildeskriptorer\n"
-"      -p\tstørrelse pÃ¥ mellomlager for datarør\n"
-"      -q\tmaksimalt antall byte i POSIX-meldingskøer\n"
-"      -r\tmaksimal sanntidsprioritet\n"
-"      -s\tmaksimal stabelstørrelse\n"
-"      -t\tmaksimal cpu-tid (i sekunder)\n"
-"      -u\tmaksimalt antall brukerprosesser\n"
-"      -v\tstørrelsen pÃ¥ virtuelt minne\n"
-"      -x\tmaksimalt antall fillÃ¥ser\n"
-"      -T    maksimalt antall trÃ¥der\n"
-"    \n"
-"    Det er ikke alle valg som støttes pÃ¥ alle plattformer.\n"
-"    \n"
-"    Hvis GRENSE er oppgitt, brukes denne som ny verdi for valgt ressurs.\n"
-"    Du kan ogsÃ¥ bruke spesialverdiene Â«soft» (myk), Â«hard», og "
-"«unlimited» (ubegrenset).\n"
-"    Ellers skriver programmet ut gjeldende verdi av valgt ressurs. Hvis "
-"ingenting\n"
-"    er valgt, brukes Â«-f».\n"
-"    \n"
-"    Verdier oppgis i 1024-byte-enheter, bortsett fra Â«-t» som oppgis i "
-"sekunder,\n"
-"    Â«-p» som oppgis i 512-byte-enheter og Â«-u» som er et uskalert antall "
-"prosesser.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en "
-"feil."
-
-#: builtins.c:1471
-msgid ""
-"Display or set file mode mask.\n"
-"    \n"
-"    Sets the user file-creation mask to MODE.  If MODE is omitted, prints\n"
-"    the current value of the mask.\n"
-"    \n"
-"    If MODE begins with a digit, it is interpreted as an octal number;\n"
-"    otherwise it is a symbolic mode string like that accepted by chmod(1).\n"
-"    \n"
-"    Options:\n"
-"      -p\tif MODE is omitted, output in a form that may be reused as input\n"
-"      -S\tmakes the output symbolic; otherwise an octal number is output\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless MODE is invalid or an invalid option is given."
-msgstr ""
-"Vis eller endre filmodus-maske.\n"
-"    \n"
-"    Endrer brukerens standardmaske for nye filer til valgt MODUS. Hvis "
-"ingen\n"
-"    MODUS er valgt, skrives gjeldende maskeverdi ut.\n"
-"    \n"
-"    Hvis MODUS begynner med et siffer, tolkes den som et oktalt tall,\n"
-"    og ellers som en symbolsk modusstreng av typen som brukes av chmod(1).\n"
-"    \n"
-"    Valg:\n"
-"      -p\tskriv ut i et format som kan gjenbrukes som inndata hvis ingen "
-"MODUS er valgt\n"
-"      -S\tgjør utdata symbolsk (ikke skriv ut oktaltall)\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre MODUS er ugyldig eller brukeren tar et ugyldig "
-"valg."
-
-#: builtins.c:1491
-msgid ""
-"Wait for job completion and return exit status.\n"
-"    \n"
-"    Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
-"    job specification, and reports its termination status.  If ID is not\n"
-"    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
-"    in that job's pipeline.\n"
-"    \n"
-"    If the -n option is supplied, waits for the next job to terminate and\n"
-"    returns its exit status.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-"    option is given."
-msgstr ""
-"Vent pÃ¥ fullføring av jobb, og skriv ut avslutningsstatus.\n"
-"    \n"
-"    Vent pÃ¥ valgt(e) prosess(er) (valgt med ID, som kan være prosess-ID "
-"eller\n"
-"    jobbspesifikasjon), og skriv ut statuskode. Hvis ID ikke er valgt,\n"
-"    venter programmet pÃ¥ alle aktive underprosesser, og avslutter\n"
-"    med kode null. Hvis ID er en jobbspesifikasjon, venter programmet pÃ¥ "
-"alle\n"
-"    prosesser i kommandokøen for valgt jobb.\n"
-"    \n"
-"    Hvis Â«-n» er valgt, skriver programmet ut avslutningsstatus for neste "
-"jobb.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som siste ID, eller mislykket hvis enten en ID er ugyldig eller\n"
-"    brukeren tar et ugyldig valg."
-
-#: builtins.c:1512
-msgid ""
-"Wait for process completion and return exit status.\n"
-"    \n"
-"    Waits for each process specified by a PID and reports its termination "
-"status.\n"
-"    If PID is not given, waits for all currently active child processes,\n"
-"    and the return status is zero.  PID must be a process ID.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
-"    option is given."
-msgstr ""
-"Vent pÃ¥ ferdigstillelse av prosess, og rapporter avslutningsstatus.\n"
-"    \n"
-"    Venter pÃ¥ hver prosess som er valgt med PID, og rapporterer avsluttende "
-"statuskode.\n"
-"    Hvis PID ikke er valgt, venter kommandoen pÃ¥ alle aktive "
-"underprosesser,\n"
-"    og avslutter med null-status. PID mÃ¥ være en prosess-ID.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n"
-"    brukeren tar et ugyldig valg."
-
-#: builtins.c:1527
-msgid ""
-"Execute commands for each member in a list.\n"
-"    \n"
-"    The `for' loop executes a sequence of commands for each member in a\n"
-"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
-"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
-"    the COMMANDS are executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-"Kjør kommandoer for hvert medlem i en liste.\n"
-"    \n"
-"    Løkka Â«for» kjører en rekke kommandoer per medlem i en liste\n"
-"    over elementer. Hvis Â«in ORD â€¦;» ikke er angitt, brukes«in \"$@\"».\n"
-"    NAVN gis til hvert element i ORD, og KOMMANDOER kjøres.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som sist kjørte kommando."
-
-#: builtins.c:1541
-msgid ""
-"Arithmetic for loop.\n"
-"    \n"
-"    Equivalent to\n"
-"    \t(( EXP1 ))\n"
-"    \twhile (( EXP2 )); do\n"
-"    \t\tCOMMANDS\n"
-"    \t\t(( EXP3 ))\n"
-"    \tdone\n"
-"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
-"    omitted, it behaves as if it evaluates to 1.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-"Aritmetisk Â«for»-løkke.\n"
-"    \n"
-"    Tilsvarer\n"
-"    \t(( UTTR1 ))\n"
-"    \twhile (( UTTR2 )); do\n"
-"    \t\tKOMMANDOER\n"
-"    \t\t(( UTTR3 ))\n"
-"    \tdone\n"
-"    UTTR1, UTTR2 og UTTR3 er aritmetiske uttrykk. Hvis et uttrykk\n"
-"    utelates, oppfører programmet seg som om uttrykket er lik 1.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som sist kjørte kommando."
-
-#: builtins.c:1559
-msgid ""
-"Select words from a list and execute commands.\n"
-"    \n"
-"    The WORDS are expanded, generating a list of words.  The\n"
-"    set of expanded words is printed on the standard error, each\n"
-"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
-"    is assumed.  The PS3 prompt is then displayed and a line read\n"
-"    from the standard input.  If the line consists of the number\n"
-"    corresponding to one of the displayed words, then NAME is set\n"
-"    to that word.  If the line is empty, WORDS and the prompt are\n"
-"    redisplayed.  If EOF is read, the command completes.  Any other\n"
-"    value read causes NAME to be set to null.  The line read is saved\n"
-"    in the variable REPLY.  COMMANDS are executed after each selection\n"
-"    until a break command is executed.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-"Velg ord fra en liste og kjør kommandoer.\n"
-"    \n"
-"    Utvid og lag en liste av valgt(e) ORD.\n"
-"    Utvidede ord skrive ut pÃ¥ standard feilkanal, anledet av et tall.\n"
-"    Hvis Â«in ORD» ikke er valgt, brukes Â«in \"$@\"». Deretter vises\n"
-"    PS3-ledetekst, og en linje leses fra standard inndata. Hvis linja\n"
-"    bestÃ¥r av et tall som tilsvarer antall ord, endres NAVN slik at det\n"
-"    tilsvarer dette tallet. Hvis linja er tom, vises ORD og ledetekst pÃ¥\n"
-"    nytt.  Hvis programmet møter EOF, avslutter kommandoen. Andre\n"
-"    verdier fører til at NAVN endres til null. Lest linje lagres i "
-"variabelen\n"
-"    REPLY. KOMMANDOER kjøres etter hvert utvalg frem til programmet\n"
-"    støter pÃ¥ en bruddkommando.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som sist kjørt kommando."
-
-#: builtins.c:1580
-msgid ""
-"Report time consumed by pipeline's execution.\n"
-"    \n"
-"    Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-"    and system CPU time spent executing PIPELINE when it terminates.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint the timing summary in the portable Posix format\n"
-"    \n"
-"    The value of the TIMEFORMAT variable is used as the output format.\n"
-"    \n"
-"    Exit Status:\n"
-"    The return status is the return status of PIPELINE."
-msgstr ""
-"Rapporter medgÃ¥tt tid i kommandokø-kjøring.\n"
-"    \n"
-"    Kjør valgt DATARØR og skriv ut en oppsummering av reell tid, bruker-CPU-"
-"tid\n"
-"    og system-CPU-tid som er medgÃ¥tt ved kjøring av DATARØR idet det "
-"avsluttes.\n"
-"    \n"
-"    Valg:\n"
-"      -p\tkjør tidsoppsummering i gjenbrukbart Posix-format.\n"
-"    \n"
-"    Verdien av variabelen Â«TIMEFORMAT» brukes som utdata-format.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som statuskoden fra valgt DATARØR."
-
-#: builtins.c:1597
-msgid ""
-"Execute commands based on pattern matching.\n"
-"    \n"
-"    Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
-"    `|' is used to separate multiple patterns.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-"Kjør kommandoer basert pÃ¥ mønster-søk.\n"
-"    \n"
-"    Kjør KOMMANDOER som samsvarer med ORD og MØNSTER.\n"
-"    Tegnet Â«|» brukes til Ã¥ holde mønstre adskilt.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som sist kjørte kommando."
-
-#: builtins.c:1609
-msgid ""
-"Execute commands based on conditional.\n"
-"    \n"
-"    The `if COMMANDS' list is executed.  If its exit status is zero, then "
-"the\n"
-"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
-"is\n"
-"    executed in turn, and if its exit status is zero, the corresponding\n"
-"    `then COMMANDS' list is executed and the if command completes.  "
-"Otherwise,\n"
-"    the `else COMMANDS' list is executed, if present.  The exit status of "
-"the\n"
-"    entire construct is the exit status of the last command executed, or "
-"zero\n"
-"    if no condition tested true.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-"Kjør kommandoer pÃ¥ gitte betingelser.\n"
-"    \n"
-"    Kjør lista Â«if KOMMANDOER». Hvis avslutningsstatus er null, kjøres\n"
-"    Â«then KOMMANDOER». Ellers kjøres hver Â«elif KOMMANDOER»-liste\n"
-"    etter tur. Hvis status er null ved sistnevnte, kjøres tilhørende Â«then "
-"KOMMANDOER»\n"
-"    og if-kommandoen avslutter. Ellers kjøres evt. lista Â«else KOMMANDOER».\n"
-"    Avslutningsstatus for hele betingelsesuttrykket er statuskoden fra sist "
-"kjørt kommando,\n"
-"    eller null hvis ingen tilstand er sann.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som sist kjørt kommando."
-
-#: builtins.c:1626
-msgid ""
-"Execute commands as long as a test succeeds.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `while' COMMANDS has an exit status of zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-"Kjør kommandoer sÃ¥ lenge en test lykkes.\n"
-"    \n"
-"    Utvid og kjør KOMMANDOER sÃ¥ lenge siste kommando i\n"
-"    Â«while» avslutter med null-status.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som sist kjørte kommando."
-
-#: builtins.c:1638
-msgid ""
-"Execute commands as long as a test does not succeed.\n"
-"    \n"
-"    Expand and execute COMMANDS as long as the final command in the\n"
-"    `until' COMMANDS has an exit status which is not zero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-"Kjør kommandoer sÃ¥ lenge en test mislykkes.\n"
-"    \n"
-"    Utvid og kjør KOMMANDOER sÃ¥ lenge siste kommando i\n"
-"    Â«until» avslutter med en annen statuskode enn null.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som sist kjørte kommando."
-
-#: builtins.c:1650
-msgid ""
-"Create a coprocess named NAME.\n"
-"    \n"
-"    Execute COMMAND asynchronously, with the standard output and standard\n"
-"    input of the command connected via a pipe to file descriptors assigned\n"
-"    to indices 0 and 1 of an array variable NAME in the executing shell.\n"
-"    The default NAME is \"COPROC\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the exit status of COMMAND."
-msgstr ""
-"Lag en medprosess med valgt NAVN.\n"
-"    \n"
-"    Kjør valgt KOMMANDO synkront, med standard inn- og utdata for "
-"kommandoen\n"
-"    som er tilkoblet via et datarør til fildeskriptorer med indeks 0 og 1 i "
-"en tabellvariabel \n"
-"    med oppgitt NAVN i kjørende skall.\n"
-"\v    StandardNAVN er Â«COPROC».\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som valgt KOMMANDO."
-
-#: builtins.c:1664
-msgid ""
-"Define shell function.\n"
-"    \n"
-"    Create a shell function named NAME.  When invoked as a simple command,\n"
-"    NAME runs COMMANDs in the calling shell's context.  When NAME is "
-"invoked,\n"
-"    the arguments are passed to the function as $1...$n, and the function's\n"
-"    name is in $FUNCNAME.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless NAME is readonly."
-msgstr ""
-"Definer en skallfunksjon.\n"
-"    \n"
-"    Lag en skallfunksjon med valgt NAVN. NAVN kjører KOMMANDOer i gjeldende "
-"skallkontekst\n"
-"    nÃ¥r det kjøres som en enkel kommando, og argumenter videresendes til "
-"funksjonen som\n"
-"    $1…$n. Funksjonens navn ligger i $FUNCNAME.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre valgt NAVN er skrivebeskyttet."
-
-#: builtins.c:1678
-msgid ""
-"Group commands as a unit.\n"
-"    \n"
-"    Run a set of commands in a group.  This is one way to redirect an\n"
-"    entire set of commands.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the last command executed."
-msgstr ""
-"Organiser kommandoer i grupper.\n"
-"    \n"
-"    Kjør en rekke kommandoer som en gruppe. Slik kan du videresende\n"
-"    et helt kommandosett.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som sist kjørt kommando."
-
-#: builtins.c:1690
-msgid ""
-"Resume job in foreground.\n"
-"    \n"
-"    Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
-"    stopped or background job.  JOB_SPEC can specify either a job name\n"
-"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
-"    the background, as if the job specification had been supplied as an\n"
-"    argument to `bg'.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns the status of the resumed job."
-msgstr ""
-"Gjenoppta jobb i forgrunnen.\n"
-"    \n"
-"    Tilsvarer argumentet Â«JOBBSPES» for kommandoen Â«fg». Gjenoppta\n"
-"    en jobb som venter eller kjører i bakgrunnen. Â«JOBBSPES» kan\n"
-"    enten være et jobbnavn eller -nummer. Bruk Â«&» etter JOBBSPES for Ã¥\n"
-"    legge jobben i bakgrunnen, som om jobbspesifikasjonen var et argument "
-"for Â«bg».\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Samme som statuskoden for gjenopptatt jobb."
-
-#: builtins.c:1705
-msgid ""
-"Evaluate arithmetic expression.\n"
-"    \n"
-"    The EXPRESSION is evaluated according to the rules for arithmetic\n"
-"    evaluation.  Equivalent to \"let EXPRESSION\".\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-msgstr ""
-"GÃ¥ gjennom aritmetisk uttrykk.\n"
-"    \n"
-"    Valgt UTTRYKK prøves i henhold til regler for aritmetisk utregning.\n"
-"    Tilsvarer Â«let UTTRYKK».\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    1 hvis UTTRYKK blir 0, og ellers 0."
-
-#: builtins.c:1717
-msgid ""
-"Execute conditional command.\n"
-"    \n"
-"    Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-"    expression EXPRESSION.  Expressions are composed of the same primaries "
-"used\n"
-"    by the `test' builtin, and may be combined using the following "
-"operators:\n"
-"    \n"
-"      ( EXPRESSION )\tReturns the value of EXPRESSION\n"
-"      ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
-"      EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-"      EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-"    \n"
-"    When the `==' and `!=' operators are used, the string to the right of\n"
-"    the operator is used as a pattern and pattern matching is performed.\n"
-"    When the `=~' operator is used, the string to the right of the operator\n"
-"    is matched as a regular expression.\n"
-"    \n"
-"    The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-"    determine the expression's value.\n"
-"    \n"
-"    Exit Status:\n"
-"    0 or 1 depending on value of EXPRESSION."
-msgstr ""
-"Kjør betinget kommando.\n"
-"    \n"
-"    Gir statuskode 0 eller 1, avhengig av utfallet av betinget UTTRYKK.\n"
-"    Uttrykk bygges opp pÃ¥ samme mÃ¥te som i den innebygde kommandoen Â«test»,\n"
-"    og kan kombineres som følger:\n"
-"    \n"
-"      ( UTTRYKK )\tViser verdien av UTTRYKK\n"
-"      ! UTTRYKK\t\tPositiv hvis UTTRYKK er usant, ellers negativ\n"
-"      UTTR1 && UTTR2\tPositiv hvis bÃ¥de UTTR1 og UTTR2 er sant, ellers "
-"negativ\n"
-"      UTTR1 || UTTR2\tPositiv hvis enten UTTR1 eller UTTR2 er sant, ellers "
-"negativ\n"
-"    \n"
-"    Ved bruk av Â«==» og Â«!=» brukes etterfølgende streng som\n"
-"    et mønster, og programmet utfører mønsterutlikning.\n"
-"    Ved bruk av Â«=~» utliknes etterfølgende streng som\n"
-"    et regulært uttrykk.\n"
-"    \n"
-"    Valgene Â«&&» og Â«||» kontrollerer ikke UTTR2 hvis UTTR1 allerede\n"
-"    har gitt svar pÃ¥ uttrykkets verdi.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    0 eller 1, avhengig av UTTRYKKets verdi."
-
-#: builtins.c:1743
-msgid ""
-"Common shell variable names and usage.\n"
-"    \n"
-"    BASH_VERSION\tVersion information for this Bash.\n"
-"    CDPATH\tA colon-separated list of directories to search\n"
-"    \t\tfor directories given as arguments to `cd'.\n"
-"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-"    \t\tbe ignored by pathname expansion.\n"
-"    HISTFILE\tThe name of the file where your command history is stored.\n"
-"    HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
-"    HISTSIZE\tThe maximum number of history lines that a running\n"
-"    \t\tshell can access.\n"
-"    HOME\tThe complete pathname to your login directory.\n"
-"    HOSTNAME\tThe name of the current host.\n"
-"    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
-"    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
-"    \t\tcharacter as the sole input.  If set, then the value\n"
-"    \t\tof it is the number of EOF characters that can be seen\n"
-"    \t\tin a row on an empty line before the shell will exit\n"
-"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
-"    MACHTYPE\tA string describing the current system Bash is running on.\n"
-"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-"    \t\tfor new mail.\n"
-"    OSTYPE\tThe version of Unix this version of Bash is running on.\n"
-"    PATH\tA colon-separated list of directories to search when\n"
-"    \t\tlooking for commands.\n"
-"    PROMPT_COMMAND\tA command to be executed before the printing of each\n"
-"    \t\tprimary prompt.\n"
-"    PS1\t\tThe primary prompt string.\n"
-"    PS2\t\tThe secondary prompt string.\n"
-"    PWD\t\tThe full pathname of the current directory.\n"
-"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-"    TERM\tThe name of the current terminal type.\n"
-"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-"    \t\t`time' reserved word.\n"
-"    auto_resume\tNon-null means a command word appearing on a line by\n"
-"    \t\titself is first looked for in the list of currently\n"
-"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
-"    \t\tA value of `exact' means that the command word must\n"
-"    \t\texactly match a command in the list of stopped jobs.  A\n"
-"    \t\tvalue of `substring' means that the command word must\n"
-"    \t\tmatch a substring of the job.  Any other value means that\n"
-"    \t\tthe command must be a prefix of a stopped job.\n"
-"    histchars\tCharacters controlling history expansion and quick\n"
-"    \t\tsubstitution.  The first character is the history\n"
-"    \t\tsubstitution character, usually `!'.  The second is\n"
-"    \t\tthe `quick substitution' character, usually `^'.  The\n"
-"    \t\tthird is the `history comment' character, usually `#'.\n"
-"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-"    \t\tcommands should be saved on the history list.\n"
-msgstr ""
-"Vanlige skallvariabel-navn og bruk.\n"
-"    \n"
-"    BASH_VERSION\tInformasjon om Bash-versjon.\n"
-"    CDPATH\tEn kolondelt liste over mapper som skal gjennomsøkes\n"
-"    \t\tfor mapper som er brukt som argumenter for Â«cd».\n"
-"    GLOBIGNORE\tEn kolondelt liste over mønstre som beskriver filnavn\n"
-"    \t\tsom skal ignoreres av stinavn-utvidelse.\n"
-"    HISTFILE\tNavn pÃ¥ fil hvor kommandohistorikk for gjeldende bruker er "
-"lagret.\n"
-"    HISTFILESIZE\tMaksimalt antall linjer denne fila kan inneholde.\n"
-"    HISTSIZE\tMaksimalt antall historikklinjer et kjørende skall har tilgang "
-"til.\n"
-"    HOME\tFullstendig sti til gjeldende brukers hjemmemappe.\n"
-"    HOSTNAME\tNavn pÃ¥ gjeldende vert.\n"
-"    HOSTTYPE\tType prosessor denne versjonen av Bash kjører pÃ¥.\n"
-"    IGNOREEOF\tKontrollerer skallets handling ved mottak av\n"
-"    \t\tEOF-tegn som eneste inndata. Hvis denne har en verdi, er verdien\n"
-"    \t\tgjeldende antall EOF-tegn som kan dukke opp pÃ¥ rad pÃ¥ en tom linje\n"
-"    \t\tfør skallet avslutter (standard: 10). Hvis denne ikke har en verdi,\n"
-"    \t\ttolkes EOF som slutt pÃ¥ inndata.\n"
-"    MACHTYPE\tEn streng som beskriver systemet Bash kjører pÃ¥ nÃ¥.\n"
-"    MAILCHECK\tHvor ofte (i sekunder) Bash skal se etter ny e-post.\n"
-"    MAILPATH\tEn kolondelt liste over filnavn som Bash skal gjennomsøke\n"
-"    \t\tfor ny e-post.\n"
-"    OSTYPE\tVersjonen av Unix som denne versjonen av Bash kjører pÃ¥.\n"
-"    PATH\tEn kolondelt liste over mapper som skal gjennomsøkes\n"
-"    \t\tved søk etter kommandoer.\n"
-"    PROMPT_COMMAND\tEn kommando som skal kjøres før utskrift av\n"
-"    \t\tprimær ledetekst.\n"
-"    PS1\t\tPrimær ledetekst-streng.\n"
-"    PS2\t\tSekundær ledetekst-streng.\n"
-"    PWD\t\tFullstendig sti til gjeldende mappe.\n"
-"    SHELLOPTS\tEn kolondelt liste over skallvalg som er i bruk.\n"
-"    TERM\tNavn pÃ¥ gjeldende terminaltype.\n"
-"    TIMEFORMAT\tUtdata-format for tidsstatistikk som vises av\n"
-"    \t\tdet reserverte ordet Â«time».\n"
-"    auto_resume\tEt kommandoord som dukker opp alene pÃ¥ en linje\n"
-"    \t\tblir kontrollert mot lista over ventende jobber. Hvis kommandoen "
-"finnes\n"
-"    \t\ti lista, flyttes den til forgrunnen.\n"
-"    \t\tVerdien Â«exact» betyr at kommandoen mÃ¥ være helt lik\n"
-"    \t\tet kommandonavn i lista over ventende jobber.\n"
-"    \t\t«substring» betyr at kommandoen mÃ¥ samsvare med en del\n"
-"    \t\tav navnet. Andre verdier betyr at kommandoen mÃ¥\n"
-"    \t\tvære et prefiks av en ventende jobb.\n"
-"    histchars\tTegn som styrer historikkutvidelse og hurtig-subsidiering.\n"
-"    \t\tFørste tegn er historikk-subsidieringstegnet (vanligvis Â«!»),\n"
-"    \t\tdet andre er hurtig-subsidieringstegnet (vanligvis Â«^»), og\n"
-"    \t\tdet tredje er historikk-kommentar-tegnet (vanligvis Â«#»).\n"
-"    HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n"
-"    \t\thvilke kommandoer som skal lagres i historikklista.\n"
-
-#: builtins.c:1800
-#, fuzzy
-msgid ""
-"Add directories to stack.\n"
-"    \n"
-"    Adds a directory to the top of the directory stack, or rotates\n"
-"    the stack, making the new top of the stack the current working\n"
-"    directory.  With no arguments, exchanges the top two directories.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when adding\n"
-"    \t\tdirectories to the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRotates the stack so that the Nth directory (counting\n"
-"    \t\tfrom the left of the list shown by `dirs', starting with\n"
-"    \t\tzero) is at the top.\n"
-"    \n"
-"      -N\tRotates the stack so that the Nth directory (counting\n"
-"    \t\tfrom the right of the list shown by `dirs', starting with\n"
-"    \t\tzero) is at the top.\n"
-"    \n"
-"      dir\tAdds DIR to the directory stack at the top, making it the\n"
-"    \t\tnew current working directory.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-"Legg til mapper i stabel.\n"
-"    \n"
-"    Legg til en mappe i toppen av mappestabelen, eller roter\n"
-"    stabelen og gjør toppen av stabelen til gjeldende arbeidsmappe.\n"
-"    Hvis ingen argumenter er gitt, bytter de to Ã¸verste mappene plass..\n"
-"    \n"
-"    Valg:\n"
-"      -n\tIkke bytt mappe nÃ¥r mapper legges til i stabelen\n"
-"    \t(bare endre stabelen).\n"
-"    \n"
-"    Argumenter:\n"
-"      +N\tRoter stabelen og legg N-te mappe (talt fra\n"
-"    \tnull til venstre, etter Â«dirs») i toppen.\n"
-"    \n"
-"      -N\tRoter stabelen og legg N-te mappe (talt fra\n"
-"    \tnull til høyre, etter Â«dirs») i toppen.\n"
-"    \n"
-"      dir\tLegg til MAP i toppen av mappestabelen, og ta den i bruk\n"
-"    \tsom arbeidsmappe.\n"
-"    \n"
-"    Bruk kommandoen Â«dirs» for Ã¥ vise mappestabelen.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre et ugyldig argument er brukt eller\n"
-"    mappebytte mislykkes."
-
-#: builtins.c:1834
-#, fuzzy
-msgid ""
-"Remove directories from stack.\n"
-"    \n"
-"    Removes entries from the directory stack.  With no arguments, removes\n"
-"    the top directory from the stack, and changes to the new top directory.\n"
-"    \n"
-"    Options:\n"
-"      -n\tSuppresses the normal change of directory when removing\n"
-"    \t\tdirectories from the stack, so only the stack is manipulated.\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tRemoves the Nth entry counting from the left of the list\n"
-"    \t\tshown by `dirs', starting with zero.  For example: `popd +0'\n"
-"    \t\tremoves the first directory, `popd +1' the second.\n"
-"    \n"
-"      -N\tRemoves the Nth entry counting from the right of the list\n"
-"    \t\tshown by `dirs', starting with zero.  For example: `popd -0'\n"
-"    \t\tremoves the last directory, `popd -1' the next to last.\n"
-"    \n"
-"    The `dirs' builtin displays the directory stack.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid argument is supplied or the directory\n"
-"    change fails."
-msgstr ""
-"Fjern mapper fra stabelen.\n"
-"    \n"
-"    Fjern oppføringer fra mappestabelen. Hvis ingen argumenter er gitt,\n"
-"    fjernes Ã¸verste mappe fra stabelen, og tar i bruk ny toppmappe som "
-"arbeidsmappe.\n"
-"    \n"
-"    Valg:\n"
-"      -n\tIkke bytt mappe nÃ¥r mapper fjernes fra stabelen\n"
-"    \t(bare endre stabelen).\n"
-"    \n"
-"    Argumenter:\n"
-"      +N\tFjern N-te mappe (talt fra null til venstre, etter Â«dirs»).\n"
-"       F.eks.: Â«popd +0» fjerner første mappe, og Â«popd +1» mappe nr. 2.\n"
-"    \n"
-"      -N\tFjern N-te mappe (talt fra null til høyre, etter Â«dirs»).\n"
-"       F.eks.: Â«popd -0» fjerner siste mappe, og Â«popd -1» nest siste mappe.\n"
-"    \n"
-"    Bruk kommandoen Â«dirs» for Ã¥ vise mappestabelen.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre et ugyldig argument er brukt eller\n"
-"    mappebytte mislykkes."
-
-#: builtins.c:1864
-#, fuzzy
-msgid ""
-"Display directory stack.\n"
-"    \n"
-"    Display the list of currently remembered directories.  Directories\n"
-"    find their way onto the list with the `pushd' command; you can get\n"
-"    back up through the list with the `popd' command.\n"
-"    \n"
-"    Options:\n"
-"      -c\tclear the directory stack by deleting all of the elements\n"
-"      -l\tdo not print tilde-prefixed versions of directories relative\n"
-"    \t\tto your home directory\n"
-"      -p\tprint the directory stack with one entry per line\n"
-"      -v\tprint the directory stack with one entry per line prefixed\n"
-"    \t\twith its position in the stack\n"
-"    \n"
-"    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list\n"
-"    \t\tshown by dirs when invoked without options, starting with\n"
-"    \t\tzero.\n"
-"    \n"
-"      -N\tDisplays the Nth entry counting from the right of the list\n"
-"    \t\tshown by dirs when invoked without options, starting with\n"
-"    \t\tzero.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Vis mappestabel.\n"
-"    \n"
-"    Vis lista over hurtiglagrede mapper som er hurtiglagret med\n"
-"    kommandoen Â«pushd». Du kan gÃ¥ opp igjen med kommandoen Â«popd».    \n"
-"    Valg:\n"
-"      -c\ttøm mappestabel ved Ã¥ slette alle elementer\n"
-"      -l\tikke skriv ut undermapper av brukerens hjemmemappe som\n"
-"    \trelative stier med tilde-prefiks\n"
-"      -p\tskriv ut mappestabel med Ã©n oppføring per linje\n"
-"      -v\ttilsvarer Â«-p», men med stabelposisjon som prefiks\n"
-"    \n"
-"    Argumenter:\n"
-"      +N\tVis N-te oppføring (talt fra null til venstre, etter Â«dirs»).\n"
-"      -N\tVis N-te oppføring (talt fra null til høyre, etter Â«dirs»).\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en "
-"feil."
-
-#: builtins.c:1895
-msgid ""
-"Set and unset shell options.\n"
-"    \n"
-"    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
-"    \n"
-"    Options:\n"
-"      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
-"      -p\tprint each shell option with an indication of its status\n"
-"      -q\tsuppress output\n"
-"      -s\tenable (set) each OPTNAME\n"
-"      -u\tdisable (unset) each OPTNAME\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
-"    given or OPTNAME is disabled."
-msgstr ""
-"Juster og tilbakestill skallvalg.\n"
-"    \n"
-"    Endre innstilling for hvert VALGNAVN. Hvis ingen valg/argumenter er "
-"brukt,\n"
-"    skriv ut alle skallvalg og vis hvorvidt hvert av dem har en verdi.\n"
-"    \n"
-"    Valg:\n"
-"      -o\tbegrense VALGNAVN til det som er definert med Â«set -o»\n"
-"      -p\tskriv ut hvert skallvalg og vis status\n"
-"      -q\tikke skriv ut noe\n"
-"      -s\tslÃ¥ pÃ¥ (gi verdi til) hvert VALGNAVN\n"
-"      -u\tslÃ¥ av (tilbakestill) hvert VALGNAVN\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket hvis VALGNAVN er slÃ¥tt pÃ¥, og mislykket hvis enten brukeren \n"
-"    tar et ugyldig valg eller VALGNAVN er slÃ¥tt av."
-
-#: builtins.c:1916
-#, fuzzy
-msgid ""
-"Formats and prints ARGUMENTS under control of the FORMAT.\n"
-"    \n"
-"    Options:\n"
-"      -v var\tassign the output to shell variable VAR rather than\n"
-"    \t\tdisplay it on the standard output\n"
-"    \n"
-"    FORMAT is a character string which contains three types of objects: "
-"plain\n"
-"    characters, which are simply copied to standard output; character "
-"escape\n"
-"    sequences, which are converted and copied to the standard output; and\n"
-"    format specifications, each of which causes printing of the next "
-"successive\n"
-"    argument.\n"
-"    \n"
-"    In addition to the standard format specifications described in printf"
-"(1),\n"
-"    printf interprets:\n"
-"    \n"
-"      %b\texpand backslash escape sequences in the corresponding argument\n"
-"      %q\tquote the argument in a way that can be reused as shell input\n"
-"      %(fmt)T\toutput the date-time string resulting from using FMT as a "
-"format\n"
-"    \t        string for strftime(3)\n"
-"    \n"
-"    The format is re-used as necessary to consume all of the arguments.  If\n"
-"    there are fewer arguments than the format requires,  extra format\n"
-"    specifications behave as if a zero value or null string, as "
-"appropriate,\n"
-"    had been supplied.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or a write or "
-"assignment\n"
-"    error occurs."
-msgstr ""
-"Formaterer og skriver ut ARGUMENTER pÃ¥ FORMATets premisser.\n"
-"    \n"
-"    Valg:\n"
-"      -v var\tlegg utdata i valgt VARiabel i stedet for Ã¥\n"
-"    \t\tvise den pÃ¥ standardutdata\n"
-"    \n"
-"    FORMAT er en tegnstreng som inneholder tre typer objekter:\n"
-"    - rene tegn (som kopieres til standardutdata),\n"
-"    - skiftetegn (som konverteres og kopieres til standardutdata), og\n"
-"    - formatspesifikasjoner (som skriver ut pÃ¥følgende argument).\n"
-"    \n"
-"    Printf tolker følgende standard-formatspes. i tillegg til de som "
-"stÃ¥r     beskrevet i printf(1):\n"
-"    \n"
-"      %b\tutvid omvendt skrÃ¥strek-skiftesekvenser i gjeldende argument\n"
-"      %q\tgi argumentet anførselstegn slik at det kan brukes som skall-"
-"inndata\n"
-"      %(fmt)T skriv ut Â«date-time»-streng etter bruk av FMT som formatstreng\n"
-"            med strftime(3)\n"
-"    \n"
-"    Formatet gjenbrukes etter nødvendighet for Ã¥ bruke opp alle "
-"argumentene.\n"
-"    Hvis det finnes færre argumenter enn formatet krever, oppfører "
-"overflødige\n"
-"    formatstrenger seg som om de var 0-verdier eller null-strenger.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en\n"
-"    skrive- eller tidelingsfeil."
-
-#: builtins.c:1950
-#, fuzzy
-msgid ""
-"Specify how arguments are to be completed by Readline.\n"
-"    \n"
-"    For each NAME, specify how arguments are to be completed.  If no "
-"options\n"
-"    are supplied, existing completion specifications are printed in a way "
-"that\n"
-"    allows them to be reused as input.\n"
-"    \n"
-"    Options:\n"
-"      -p\tprint existing completion specifications in a reusable format\n"
-"      -r\tremove a completion specification for each NAME, or, if no\n"
-"    \t\tNAMEs are supplied, all completion specifications\n"
-"      -D\tapply the completions and actions as the default for commands\n"
-"    \t\twithout any specific completion defined\n"
-"      -E\tapply the completions and actions to \"empty\" commands --\n"
-"    \t\tcompletion attempted on a blank line\n"
-"    \n"
-"    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Velg hvordan argumenter skal fullføres av Readline.\n"
-"    \n"
-"    Velg hvordan argumenter skal fullføres per NAVN.\n"
-"    \n"
-"    Valg:\n"
-"      -p\tskriv ut gjeldende fullføringsoppsett i et gjenbrukbart format "
-"(standard)\n"
-"      -r\tfjern en fullføringsspesifikasjon per NAVN\n"
-"    \t(eller fra alle spesifikasjoner hvis ingen NAVN er valgt)\n"
-"      -D\tbruk fullføringer og handlinger som standard for kommandoer uten\n"
-"    \tspesifikke definisjoner av fullføring\n"
-"      -E\tbruk fullføringer og handlinger med Â«tomme» kommandoer\n"
-"    \n"
-"    Handlinger tas i bruk i samme rekkefølge som valgene med\n"
-"    store bokstaver ovenfor. Valget Â«-D» brukes fortrinnsvis\n"
-"    fremfor Â«-E».\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en "
-"feil."
-
-#: builtins.c:1978
-msgid ""
-"Display possible completions depending on the options.\n"
-"    \n"
-"    Intended to be used from within a shell function generating possible\n"
-"    completions.  If the optional WORD argument is supplied, matches "
-"against\n"
-"    WORD are generated.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Vis mulige fullføringer basert pÃ¥ valgene.\n"
-"    \n"
-"    Dette er ment for Ã¥ brukes i en skallfunksjon som genererer mulige\n"
-"    fullføringer. Hvis argumentet ORD brukes, genererer programmet\n"
-"    søketreff pÃ¥ ORD.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en "
-"feil."
-
-#: builtins.c:1993
-msgid ""
-"Modify or display completion options.\n"
-"    \n"
-"    Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-"    the completion currently being executed.  If no OPTIONs are given, "
-"print\n"
-"    the completion options for each NAME or the current completion "
-"specification.\n"
-"    \n"
-"    Options:\n"
-"    \t-o option\tSet completion option OPTION for each NAME\n"
-"    \t-D\t\tChange options for the \"default\" command completion\n"
-"    \t-E\t\tChange options for the \"empty\" command completion\n"
-"    \n"
-"    Using `+o' instead of `-o' turns off the specified option.\n"
-"    \n"
-"    Arguments:\n"
-"    \n"
-"    Each NAME refers to a command for which a completion specification must\n"
-"    have previously been defined using the `complete' builtin.  If no NAMEs\n"
-"    are supplied, compopt must be called by a function currently generating\n"
-"    completions, and the options for that currently-executing completion\n"
-"    generator are modified.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is supplied or NAME does not\n"
-"    have a completion specification defined."
-msgstr ""
-"Endre eller vis fullføringsvalg.\n"
-"    \n"
-"    Endre fullføringsvalg per NAVN, eller kjørende fullføringsprosess hvis "
-"ingen\n"
-"    NAVN er valgt. Hvis ingen VALG er brukt, skriv enten ut fullføringsvalg "
-"per NAVN,\n"
-"    eller gjeldende fullføringsoppsett.\n"
-"    \n"
-"    Valg:\n"
-"    \t-o option\tEndre fullføringsVALG per NAVN\n"
-"    \t-D\t\tEndre valg for kommandofullføringa Â«default»\n"
-"    \t-E\t\tEndre valg for kommandofullføringa Â«empty»\n"
-"    \n"
-"    Bruk Â«+o» i stedet for Â«-o» for Ã¥ slÃ¥ av valg.\n"
-"    \n"
-"    Argumenter:\n"
-"    \n"
-"    Hvert NAVN henviser til en kommando som mÃ¥ ha en "
-"fullføringsspesifikasjon\n"
-"    definert med den innebyde kommandoen Â«complete». Hvis ingen NAVN\n"
-"    er valgt, mÃ¥ compopt brukes av en funksjon som genererer fullføringer.\n"
-"    Valgene for den aktuelle fullføringsgeneratoren blir i sÃ¥ fall endret.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN\n"
-"    mangler fullføringsoppsett."
-
-#: builtins.c:2023
-#, fuzzy
-msgid ""
-"Read lines from the standard input into an indexed array variable.\n"
-"    \n"
-"    Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-"    from file descriptor FD if the -u option is supplied.  The variable "
-"MAPFILE\n"
-"    is the default ARRAY.\n"
-"    \n"
-"    Options:\n"
-"      -d delim\tUse DELIM to terminate lines, instead of newline\n"
-"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are "
-"copied\n"
-"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default "
-"index is 0\n"
-"      -s count\tDiscard the first COUNT lines read\n"
-"      -t\tRemove a trailing DELIM from each line read (default newline)\n"
-"      -u fd\tRead lines from file descriptor FD instead of the standard "
-"input\n"
-"      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
-"      -c quantum\tSpecify the number of lines read between each call to\n"
-"    \t\t\tCALLBACK\n"
-"    \n"
-"    Arguments:\n"
-"      ARRAY\tArray variable name to use for file data\n"
-"    \n"
-"    If -C is supplied without -c, the default quantum is 5000.  When\n"
-"    CALLBACK is evaluated, it is supplied the index of the next array\n"
-"    element to be assigned and the line to be assigned to that element\n"
-"    as additional arguments.\n"
-"    \n"
-"    If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
-"    assigning to it.\n"
-"    \n"
-"    Exit Status:\n"
-"    Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
-"    not an indexed array."
-msgstr ""
-"Legg linjer fra standard inndata i en indeksert tabellvariabel.\n"
-"    \n"
-"    Legg linjer fra standard inndata i indeksert tabellvariabel TABELL, "
-"eller\n"
-"    fra fildeskriptor FD ved bruk av Â«-u». Variabelen MAPFILE er\n"
-"    standard TABELL.\n"
-"    \n"
-"    Valg:\n"
-"      -n antall\tIkke kopier flere enn valgt ANTALL linjer. Hvis ANTALL er "
-"0, kopieres alle linjer.\n"
-"      -O oppr\tTildel til TABELL ved indeks-OPPRinnelse. Standard indeks er "
-"0.\n"
-"      -s antall \tForkast valgt ANTALL linjer i starten.\n"
-"      -t\t\tFjern etterfølgende linjeskift fra hver lest linje.\n"
-"      -u fd\t\tLes linjer fra fildeskriptor FD i stedet for standard "
-"inndata.\n"
-"      -C tilbakekall\tVurder TILBAKEKALL hver gang valgt ANTALL linjer er "
-"lest.\n"
-"      -c antall\tVelg antall linjer som skal leses mellom hvert "
-"TILBAKEKALL.\n"
-"    \n"
-"    Argumenter:\n"
-"      ARRAY\t\tTabellvariabel-navn som skal brukes i fildata.\n"
-"    \n"
-"    Hvis Â«-C» er valgt men ikke Â«-c», brukes standardantallet 5000.  NÃ¥r\n"
-"    TILBAKEKALL vurderes, argumenteres det i tillegg med indeks av neste "
-"tabellelement\n"
-"    samt linjenummeret som skal tildeles aktuelt element.\n"
-"    \n"
-"    Hvis ingen eksplisitt opprinnelse er gitt, tømmes TABELL før den fÃ¥r "
-"tildelt noe.\n"
-"    \n"
-"    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller TABELL enten "
-"er\n"
-"    skrivebeskyttet eller en ikke-indeksert tabell."
-
-#: builtins.c:2059
-msgid ""
-"Read lines from a file into an array variable.\n"
-"    \n"
-"    A synonym for `mapfile'."
-msgstr ""
-"Legg linjer fra en fil inn i en tabellvariabel.\n"
-"    \n"
-"    Dette er synonymt med Â«mapfile»."
-
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Opphavsrett (C) 2012 Free Software Foundation, Inc."
diff --git a/po/readline.po b/po/readline.po
deleted file mode 100644 (file)
index 61c4da3..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#: lib/readline/bind.c:2076 lib/readline/bind.c:2078 lib/readline/bind.c:2080
-#: lib/readline/bind.c:2082 lib/readline/display.c:461
-#: lib/readline/display.c:881 lib/readline/display.c:1921
-#: lib/readline/histexpand.c:1267 lib/readline/histexpand.c:1275
-#: lib/readline/nls.c:116
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2005-10-03 17:39-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: lib/readline/bind.c:890
-#, c-format
-msgid "readline: %s: line %d: %s\n"
-msgstr ""
-
-#: lib/readline/bind.c:893
-#, c-format
-msgid "readline: %s\n"
-msgstr ""
-
-#: lib/readline/bind.c:916
-msgid "other"
-msgstr ""
-
-#: lib/readline/bind.c:1006
-msgid "$else found without matching $if"
-msgstr ""
-
-#: lib/readline/bind.c:1036
-msgid "$endif without matching $if"
-msgstr ""
-
-#: lib/readline/bind.c:1113
-msgid "unknown parser directive"
-msgstr ""
-
-#: lib/readline/bind.c:1174
-msgid "no closing `\"' in key binding"
-msgstr ""
-
-#: lib/readline/bind.c:1999
-#, c-format
-msgid "# %s (not bound)\n"
-msgstr ""
-
-#: lib/readline/bind.c:2017
-#, c-format
-msgid "%s is not bound to any keys\n"
-msgstr ""
-
-#: lib/readline/bind.c:2023
-#, c-format
-msgid "%s can be found on "
-msgstr ""
-
-#: lib/readline/bind.c:2080
-#, c-format
-msgid "%s%s outputs %s\n"
-msgstr ""
-
-#: lib/readline/bind.c:2150
-#, c-format
-msgid "%s is set to `%s'\n"
-msgstr ""
-
-#: lib/readline/bind.c:2168
-#, c-format
-msgid "bell-style is set to `%s'\n"
-msgstr ""
-
-#: lib/readline/bind.c:2174
-#, c-format
-msgid "comment-begin is set to `%s'\n"
-msgstr ""
-
-#: lib/readline/bind.c:2180
-#, c-format
-msgid "completion-query-items is set to `%d'\n"
-msgstr ""
-
-#: lib/readline/bind.c:2186
-#, c-format
-msgid "editing-mode is set to `%s'\n"
-msgstr ""
-
-#: lib/readline/bind.c:2198
-#, c-format
-msgid "isearch-terminators is set to \"%s\"\n"
-msgstr ""
-
-#: lib/readline/bind.c:2210
-#, c-format
-msgid "keymap is set to `%s'\n"
-msgstr ""
-
-#: lib/readline/callback.c:113
-msgid "readline: readline_callback_read_char() called with no handler!\r\n"
-msgstr ""
-
-#: lib/readline/complete.c:1418
-#, c-format
-msgid "Display all %d possibilities? (y or n)"
-msgstr ""
-
-#: lib/readline/complete.c:1756
-#, c-format
-msgid ""
-"\r\n"
-"readline: bad value %d for what_to_do in rl_complete\n"
-msgstr ""
-
-#: lib/readline/display.c:2061
-#, c-format
-msgid "readline: debug: insert_some_chars: count (%d) != col (%d)\n"
-msgstr ""
-
-#: lib/readline/histexpand.c:379
-msgid "event not found"
-msgstr ""
-
-#: lib/readline/histexpand.c:383
-msgid "bad word specifier"
-msgstr ""
-
-#: lib/readline/histexpand.c:387
-msgid "substitution failed"
-msgstr ""
-
-#: lib/readline/histexpand.c:391
-msgid "unrecognized history modifier"
-msgstr ""
-
-#: lib/readline/histexpand.c:395
-msgid "no previous substitution"
-msgstr ""
-
-#: lib/readline/histexpand.c:399
-msgid "unknown expansion error"
-msgstr ""
-
-#: lib/readline/isearch.c:179
-msgid "reverse-"
-msgstr ""
-
-#: lib/readline/isearch.c:183
-msgid "i-search)`"
-msgstr ""
-
-#: lib/readline/rltty.c:467
-#, c-format
-msgid "readline: warning: %s\n"
-msgstr ""
-
-#: lib/readline/rltty.c:478
-msgid "turning on OPOST for terminal\r"
-msgstr ""
-
-#: lib/readline/rltty.c:504
-msgid "turning off output flushing"
-msgstr ""
-
-#: lib/readline/xmalloc.c:47
-#, c-format
-msgid "%s: out of virtual memory\n"
-msgstr ""
diff --git a/support/bash.icon.ps b/support/bash.icon.ps
deleted file mode 100644 (file)
index 772e63e..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: bash.icon.ps
-%%Creator: XV Version 3.00  Rev: 3/30/93  -  by John Bradley
-%%BoundingBox: 274 372 338 420
-%%Pages: 1
-%%DocumentFonts:
-%%EndComments
-%%EndProlog
-
-%%Page: 1 1
-
-% remember original state
-/origstate save def
-
-% build a temporary dictionary
-20 dict begin
-
-% define string to hold a scanline's worth of data
-/pix 8 string def
-
-% lower left corner
-274 372 translate
-
-% size of image (on paper, in 1/72inch coords)
-64.00800 48.02400 scale
-
-% dimensions of data
-64 48 1
-
-% mapping matrix
-[64 0 0 -48 0 48]
-
-{currentfile pix readhexstring pop}
-image
-fff99ff3dfffffff
-f9e67ffd3fffffff
-67fffafefe00ffff
-9fffc73f78053fff
-bfffbbcf45d08fff
-78bf6f67177643ff
-e01efdf6eeee89ff
-8e26dfb9bbbb94ff
-bf88cde9ddddc97f
-bfe07aad777772bf
-5ffabbf8eeeee93f
-bdf545fdbbbbba5f
-777effdddddddd1f
-bffbdef97777744f
-bfafbffceeeeed2f
-ddfdffbdbbbbba47
-dbefbfd9dddddca7
-effffbfb77777657
-eeffff78000000a7
-f7efbbf7fffffc57
-73fdffb03ffc7ca7
-7ddbedc99ffe7c57
-be7fff999ffe7ca7
-dfbbb7199ffe7c57
-afdff89998e21ca7
-6ff01788325a0c57
-f3ffff899e4e4ca7
-ff7ffe1998424c57
-ff9dfd9992724ca7
-ffe3c399925a4c57
-ffffbf90384644a7
-ffdff99ffffffc57
-ffdffd80000000a7
-ffbffeb777777657
-ffffffaeeeeeeea7
-ffffffbbbbbbba57
-ffffff9ddddddca6
-ffffffb777777652
-fffff7aeeeeeeea2
-fffff7bbbbbbba54
-fffff39cddddcc04
-fffb639657756650
-feb0952ea6a82600
-7c4a850a22a0a204
-bb268a14d5451402
-23b38c000000002a
-8a2b650ad48a8b3c
-443d6a74a28acb4c
-
-
-showpage
-
-% stop using temporary dictionary
-end
-
-% restore original state
-origstate restore
-
-%%Trailer
diff --git a/support/bash.install b/support/bash.install
deleted file mode 100644 (file)
index 6829b4f..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#! /bin/sh
-PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb:/usr/lib:/usr/etc:/etc
-
-PROG=bash
-O=root
-NEWDIR=$HOME/install
-MODE=0755
-
-if [ -f /bsd ]; then
-       NEWVERS=$NEWDIR/bash.bsd386
-       DEST=/bin
-       O=bin
-       G=bin
-elif [ -d /usr/ibm ]; then
-       NEWVERS=$NEWDIR/bash.ibm032
-       DEST=/bin
-       G=staff
-else
-       NEWVERS=$NEWDIR/bash.sun4
-       DEST=/bin
-       G=staff
-fi
-
-install -c -o ${O} -g ${G} -m ${MODE} -s ${NEWVERS} ${DEST}/${PROG}.new
-
-# swap new and old version; save old version as ${PROG}.old
-cd $DEST
-rm -f ${PROG}.old
-mv ${PROG} ${PROG}.old
-mv ${PROG}.new ${PROG}
-
-exit 0
diff --git a/support/bash.xv b/support/bash.xv
deleted file mode 100644 (file)
index 35d5690..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#define bash_width 64
-#define bash_height 48
-static char bash_bits[] = {
-   0x00, 0x60, 0x06, 0x30, 0x04, 0x00, 0x00, 0x00, 0x60, 0x98, 0x01, 0x40,
-   0x03, 0x00, 0x00, 0x00, 0x19, 0x00, 0xa0, 0x80, 0x80, 0xff, 0x00, 0x00,
-   0x06, 0x00, 0x1c, 0x03, 0xe1, 0x5f, 0x03, 0x00, 0x02, 0x00, 0x22, 0x0c,
-   0x5d, 0xf4, 0x0e, 0x00, 0xe1, 0x02, 0x09, 0x19, 0x17, 0x91, 0x3d, 0x00,
-   0xf8, 0x87, 0x40, 0x90, 0x88, 0x88, 0x6e, 0x00, 0x8e, 0x9b, 0x04, 0x62,
-   0x22, 0x22, 0xd6, 0x00, 0x02, 0xee, 0x4c, 0x68, 0x44, 0x44, 0x6c, 0x01,
-   0x02, 0xf8, 0xa1, 0x4a, 0x11, 0x11, 0xb1, 0x02, 0x05, 0xa0, 0x22, 0xe0,
-   0x88, 0x88, 0x68, 0x03, 0x42, 0x50, 0x5d, 0x40, 0x22, 0x22, 0xa2, 0x05,
-   0x11, 0x81, 0x00, 0x44, 0x44, 0x44, 0x44, 0x07, 0x02, 0x20, 0x84, 0x60,
-   0x11, 0x11, 0xd1, 0x0d, 0x02, 0x0a, 0x02, 0xc0, 0x88, 0x88, 0x48, 0x0b,
-   0x44, 0x40, 0x00, 0x42, 0x22, 0x22, 0xa2, 0x1d, 0x24, 0x08, 0x02, 0x64,
-   0x44, 0x44, 0xc4, 0x1a, 0x08, 0x00, 0x20, 0x20, 0x11, 0x11, 0x91, 0x15,
-   0x88, 0x00, 0x00, 0xe1, 0xff, 0xff, 0xff, 0x1a, 0x10, 0x08, 0x22, 0x10,
-   0x00, 0x00, 0xc0, 0x15, 0x31, 0x40, 0x00, 0xf2, 0x03, 0xc0, 0xc1, 0x1a,
-   0x41, 0x24, 0x48, 0x6c, 0x06, 0x80, 0xc1, 0x15, 0x82, 0x01, 0x00, 0x66,
-   0x06, 0x80, 0xc1, 0x1a, 0x04, 0x22, 0x12, 0x67, 0x06, 0x80, 0xc1, 0x15,
-   0x0a, 0x04, 0xe0, 0x66, 0xe6, 0xb8, 0xc7, 0x1a, 0x09, 0xf0, 0x17, 0xee,
-   0xb3, 0xa5, 0xcf, 0x15, 0x30, 0x00, 0x00, 0x6e, 0x86, 0x8d, 0xcd, 0x1a,
-   0x00, 0x01, 0x80, 0x67, 0xe6, 0xbd, 0xcd, 0x15, 0x00, 0x46, 0x40, 0x66,
-   0xb6, 0xb1, 0xcd, 0x1a, 0x00, 0x38, 0x3c, 0x66, 0xb6, 0xa5, 0xcd, 0x15,
-   0x00, 0x00, 0x02, 0xf6, 0xe3, 0x9d, 0xdd, 0x1a, 0x00, 0x04, 0x60, 0x06,
-   0x00, 0x00, 0xc0, 0x15, 0x00, 0x04, 0x40, 0xfe, 0xff, 0xff, 0xff, 0x1a,
-   0x00, 0x02, 0x80, 0x12, 0x11, 0x11, 0x91, 0x15, 0x00, 0x00, 0x00, 0x8a,
-   0x88, 0x88, 0x88, 0x1a, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0xa2, 0x15,
-   0x00, 0x00, 0x00, 0x46, 0x44, 0x44, 0xc4, 0x9a, 0x00, 0x00, 0x00, 0x12,
-   0x11, 0x11, 0x91, 0xb5, 0x00, 0x00, 0x10, 0x8a, 0x88, 0x88, 0x88, 0xba,
-   0x00, 0x00, 0x10, 0x22, 0x22, 0x22, 0xa2, 0xd5, 0x00, 0x00, 0x30, 0xc6,
-   0x44, 0x44, 0xcc, 0xdf, 0x00, 0x20, 0x39, 0x96, 0x15, 0x51, 0x99, 0xf5,
-   0x80, 0xf2, 0x56, 0x8b, 0x9a, 0xea, 0x9b, 0xff, 0xc1, 0xad, 0x5e, 0xaf,
-   0xbb, 0xfa, 0xba, 0xdf, 0x22, 0x9b, 0xae, 0xd7, 0x54, 0x5d, 0xd7, 0xbf,
-   0x3b, 0x32, 0xce, 0xff, 0xff, 0xff, 0xff, 0xab, 0xae, 0x2b, 0x59, 0xaf,
-   0xd4, 0xae, 0x2e, 0xc3, 0xdd, 0x43, 0xa9, 0xd1, 0xba, 0xae, 0x2c, 0xcd};
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.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/copyright-comment b/support/copyright-comment
deleted file mode 100644 (file)
index 83f7544..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-   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/>.
-*/
diff --git a/support/copyright-def b/support/copyright-def
deleted file mode 100644 (file)
index 1d083e4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-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/>.
diff --git a/support/copyright-makefile b/support/copyright-makefile
deleted file mode 100644 (file)
index e9f3fab..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#   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/>.
-#
diff --git a/support/deblank.sh b/support/deblank.sh
deleted file mode 100644 (file)
index c226139..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#! /bin/sh
-perl -pi -e 's/[ \t]+$//;' "$@"
diff --git a/support/endian.c b/support/endian.c
deleted file mode 100644 (file)
index 3c92ae8..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-/* endian.c -- A trick for determining the byte order of a machine. */
-
-/* Copyright (C) 1993 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 <sys/types.h>
-#include <stdio.h>
-#include "bashansi.h"
-
-/* The name of this program, as taken from argv[0]. */
-char *progname;
-
-/* The name of the source file that this code is made from. */
-char source_name[256];
-
-/* The name of the define.  Either "BIG_ENDIAN" or "LITTLE_ENDIAN". */
-char *endian_define;
-
-char string[9];
-char nstring[9];
-
-/* Stuff "1234" into a long, and compare it against a character string
-   "1234".  If the results are EQ, the machine is big endian like a 68000
-   or Sparc, otherwise it is little endian, like a Vax, or 386. */
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-#if defined (__STDC__)
-  register size_t i;
-#else
-  register int i;
-#endif /* !__STDC__ */
-  FILE *stream = (FILE *)NULL;
-  char *stream_name = "stdout";
-  union {
-      unsigned long l;
-      char s[sizeof (long)];
-  } u;
-
-  progname = argv[0];
-
-  for (i = strlen (progname); i > 0; i--)
-    if (progname[i] == '/')
-      {
-       progname = progname + i + 1;
-       break;
-      }
-
-  strcpy (source_name, progname);
-  for (i = strlen (source_name); i > 0; i--)
-    if (source_name[i] == '.')
-      {
-       source_name[i] = '\0';
-       break;
-      }
-
-  strcat (source_name, ".c");
-
-  if (argc == 1)
-    {
-      stream_name = "stdout";
-      stream = stdout;
-    }
-  else if (argc == 2)
-    {
-      stream_name = argv[1];
-      stream = fopen (stream_name, "w");
-    }
-  else
-    {
-      fprintf (stderr, "Usage: %s [output-file]\n", progname);
-      exit (1);
-    }
-
-  if (!stream)
-    {
-      fprintf (stderr, "%s: %s Cannot be opened or written to.\n",
-              progname, stream_name);
-      exit (2);
-    }
-
-  if (sizeof (long int) == 4)
-    {
-      u.l = 0x04030201L;
-      (void) strcpy (string, "4321");
-    }
-  else if (sizeof (long int) == 8)
-    {
-#if defined (__GNUC__)
-      unsigned long fake_out_gcc;
-
-      fake_out_gcc = (0x08070605L << 31);
-      fake_out_gcc = (fake_out_gcc << 1);
-      u.l = fake_out_gcc | 0x04030201L;
-#else
-      u.l = (0x08070605L << 32) | 0x04030201L;
-#endif /* !__GNUC__ */
-      (void) strcpy (string, "87654321");
-    }
-  else
-    {
-      fprintf (stderr,
-              "%s: sizeof (long int) = %d, which isn't handled here.\n",
-              progname, sizeof (long int));
-      exit (2);
-    }
-
-  for (i = 0; i < sizeof (long); i++)
-    nstring[i] = u.s[i] + '0';
-  nstring[i] = '\0';
-
-  if (strcmp (nstring, string) == 0)
-    endian_define = "BIG_ENDIAN";
-  else
-    endian_define = "LITTLE_ENDIAN";
-
-  fprintf (stream, "/* %s - Define BIG or LITTLE endian. */\n\n", stream_name);
-  fprintf (stream,
-"/* This file was automatically created by `%s'.  You shouldn't\n\
-   edit this file, because your changes will be overwritten.  Instead,\n\
-   edit the source code file `%s'. */\n\n",
-          progname, source_name);
-
-  fprintf (stream, "#if !defined (%s)\n", endian_define);
-  fprintf (stream, "#  define %s\n", endian_define);
-  fprintf (stream, "#endif /* %s */\n", endian_define);
-
-  if (stream != stdout)
-    fclose (stream);
-
-  exit (0);
-}
diff --git a/support/mail-shell b/support/mail-shell
deleted file mode 100644 (file)
index 09ed155..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-#! /bin/bash
-#
-# mail-shell -- mail out the shell
-#
-# usage: mail-shell -t tarball recipient
-#
-# Chet Ramey
-# chet@ins.CWRU.Edu
-#
-
-# Copyright (C) 1995-2009 by Chester Ramey
-#
-#   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/>.
-#
-
-
-PATH=/usr/ucb:/bin:/usr/bin:/usr/local/bin/gnu:/usr/local/bin:.
-
-trap 'rm -f x?? ${UUFILE}' 0 1 2 3 6 15
-
-prog=`basename $0`
-
-TARFILE=bash.tar
-VERS=2.05b
-
-while getopts t: opt
-do
-       case $opt in
-       t)      TARFILE=$OPTARG ;;
-       *)      echo usage: $prog [ -t tarfile ] recipient 1>&2
-               exit 1
-       esac
-done
-
-shift $(( $OPTIND - 1 ))
-
-case "$TARFILE" in
-bash-*.tar)    VERS=${TARFILE%%.tar} ; VERS=${VERS#bash-} ;;
-esac
-
-GZFILE=${TARFILE}.gz
-UUFILE=${GZFILE}.uu
-
-if [ $# -ne 1 ] ; then
-       echo usage: $0 recipient
-       exit 1
-fi
-
-recip=$1
-i=1
-
-if [ ! -f ${TARFILE} ] && [ ! -f ${GZFILE} ]; then
-       echo "$prog: no file ${TARFILE}, aborting"
-       exit 1
-fi
-
-if [ ! -f ${GZFILE} ] ; then
-       echo "$prog: no gzipped tar file ${GZFILE}"
-       echo "$prog: gzipping ${TARFILE}"
-       gzip ${TARFILE}
-fi
-
-if [ ! -f ${UUFILE} ] ; then
-       echo "$prog: no uuencoded tar file ${UUFILE}"
-       echo "$prog: uuencoding ${GZFILE}"
-       uuencode ${GZFILE} < ${GZFILE} > ${UUFILE}
-fi
-
-files=$(echo x??)
-
-if [ "$files" = 'x??' ] ; then
-       echo "$prog: no split of ${UUFILE} exists"
-       echo "$prog: splitting ${UUFILE}"
-       split ${UUFILE}
-fi
-
-count()
-{
-       echo $#
-}
-
-parts=$(count x??)
-
-if [ -x /usr/ucb/mail ]; then
-       MAIL=/usr/ucb/mail
-elif [ -x /usr/ucb/Mail ]; then
-       MAIL=/usr/ucb/Mail
-elif [ -x /usr/bin/mailx ]; then
-       MAIL=/usr/bin/mailx
-elif [ -x /usr/bin/mail ]; then
-       MAIL=/usr/bin/mail
-else
-       MAIL=/bin/mail
-fi
-
-$MAIL -s "bash-${VERS} shipment coming" $recip <<EOF
-
-Hi.  Here is version ${VERS} of bash.  Expect $parts messages.
-Each is part of a uuencoded tar file of the bash sources.  When
-you get all $parts messages, cat them all together into the file
-${UUFILE}, and run uudecode on this file.  You will have a
-gzipped tar file named ${GZFILE}.  gunzip it, cd into a source
-directory (the tar archive extracts into its own directory), and
-untar.
-
-Chet
-EOF
-
-for file in x??
-do
-       echo mailing part $i to $recip
-       /usr/ucb/mail -s "${UUFILE} part $i of $parts" $recip < $file
-       i=$(( $i + 1 ))
-done
-
-exit 0
diff --git a/support/memtest.c b/support/memtest.c
deleted file mode 100644 (file)
index 39ffd0f..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * malloc test program.
- *
- * to build:
- *     make x.o
- *     gcc -g -o x x.o xmalloc.o lib/malloc/libmalloc.a
- */
-
-/* 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 <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-
-#define USING_BASH_MALLOC
-#define HAVE_STRINGIZE
-
-#include "xmalloc.h"
-
-int interrupt_immediately = 0;
-
-static char    xp[64];
-
-main(int c, char **v)
-{
-       char    *p;
-
-       malloc_set_register(1);
-
-#if 0
-       free (xp);      /* free unallocated memory */
-#endif
-
-#if 0
-       p = xrealloc(xp, 128);
-#endif
-
-#if 0
-       /*
-        * request an amount so that the bucket changes when the malloc
-        * overhead is added to the requested size.  This had better
-        * succeed.
-        */
-       p = xmalloc(25);
-       p[0] = 'a';
-       p[1] = '\0';
-       free(p);        /* sanity check on underflow checks in free() */
-#endif
-
-#if 0
-       p = xmalloc(28);
-       /* This works for little-endian machines like i386. */
-       p[-4] = '\7';   /* underflow */
-       p = xrealloc(p, 128);   /* realloc corrupted memory */
-#endif
-
-#if 0
-       p = xmalloc(28);
-       /* This works for little-endian machines like i386. */
-       p[-4] = '\7';   /* underflow */
-       free(p);
-#endif
-
-#if 0
-       p = xmalloc(2);
-       free(p);
-       free(p);        /* duplicate free */
-#endif
-
-#if 0
-       p = xmalloc(32);
-       free(p);
-       p = xrealloc(p, 128);   /* realloc freed mem */
-#endif
-
-#if 0
-       p = xmalloc(64);
-       p[64] = '\0';
-       p = xrealloc(p, 128);   /* overflow */
-#endif
-
-#if 0
-       p = xmalloc(64);
-       p[64] = '\0';
-       free(p);                /* overflow */
-#endif
-
-#if 0
-       p = xmalloc(64);
-       p[-1] = 'a';
-       free (p);               /* underflow */
-#endif
-
-#if 0
-       p = xmalloc(64);
-       p[-1] = 'a';
-       p = xrealloc(p, 129);   /* underflow */
-#endif
-
-       mregister_dump_table();
-       exit(0);
-}
-
-void
-fatal_error(const char *format, ...)
-{
-       va_list args;
-
-       fprintf(stderr, "malloc-test: ");
-       va_start(args, format);
-       vfprintf(stderr, format, args);
-       fprintf(stderr, "\n");
-       va_end(args);
-       exit(2);
-}
-
-void
-programming_error(const char *format, ...)
-{
-       va_list args;
-
-       fprintf(stderr, "malloc-test: ");
-       va_start(args, format);
-       vfprintf(stderr, format, args);
-       fprintf(stderr, "\n");
-       va_end(args);
-
-       abort();
-}
-
-int
-signal_is_trapped(int n)
-{
-       return 0;
-}
diff --git a/support/mkdep b/support/mkdep
deleted file mode 100755 (executable)
index a79c90a..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/sh -
-#
-#      BSDI $Id: mkdep.gcc.sh,v 2.1 1995/02/03 12:54:13 polk Exp $
-#
-# Copyright (c) 1991, 1993
-#      The Regents of the University of California.  All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-#    must display the following acknowledgement:
-#      This product includes software developed by the University of
-#      California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-#    may be used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-#      @(#)mkdep.gcc.sh        8.1 (Berkeley) 6/6/93
-#
-
-PATH=/bin:/usr/bin:/usr/gnu/bin:/usr/local/bin:/usr/local/bin/gnu
-export PATH
-
-cpp=${CPP:-gcc}
-#trad="-notraditional"
-
-D=depends                      # default dependency file is depends
-append=0
-pflag=
-
-usage()
-{
-       echo 'usage: mkdep [-t] [-p] [-f depend_file] [-c compiler] [cc_flags] file ...' >&2
-}
-
-while getopts "2af:c:pt" opt; do
-       case "$opt" in
-       # -2 => gcc2 -- this option is temporary, hence not documented
-       2)      cpp=${CPP:-gcc2} ; trad= ;;
-       # -a appends to the depend file
-       a)      append=1;;
-       # -c specifies the compiler to use
-       c)      CPP=$OPTARG ;;
-       # -f allows you to select a makefile name
-       f)      D=$OPTARG ;;
-       # the -p flag produces "program: program.c" style dependencies
-       # so .o's don't get produced
-       p)      pflag=p ;;
-       # -t means use -traditional with gnu cpp
-       t)      trad="-traditional" ;;
-       \?)     usage ; exit 2;;
-       esac
-done
-
-shift $(( $OPTIND - 1 ))
-
-if [ $# = 0 ] ; then
-       usage
-       exit 1
-fi
-
-TMP=/tmp/mkdep$$
-
-trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
-
-if [ x$pflag = x ]; then
-       $cpp $trad -M $* | sed -e 's; \./; ;g' > $TMP
-else
-       $cpp $trad -M $* | sed -e 's;\.o *:;:;' -e 's; \./; ;g' > $TMP
-fi
-
-if [ $? != 0 ]; then
-       echo 'mkdep: compile failed.'
-       rm -f $TMP
-       exit 1
-fi
-
-if [ $append = 1 ]; then
-       cat $TMP >> $D
-       rm -f $TMP
-else
-       mv $TMP $D
-fi
-exit 0
diff --git a/support/mkdist b/support/mkdist
deleted file mode 100755 (executable)
index 282431d..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-#! /bin/bash -
-#
-# mkdist - make a distribution directory from a master manifest file
-#
-# usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version
-#
-# SRCDIR defaults to src
-# MANIFEST defaults to $SRCDIR/MANIFEST
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-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/>.
-#
-
-SRCDIR=src
-ROOTNAME=bash
-
-usage()
-{
-       echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version 1>&2
-       exit 2
-}
-
-vmsg()
-{
-       if [ -n "$verbose" ]; then
-               echo mkdist: "$@"
-       fi
-}
-
-while getopts m:s:r:tv name
-do
-       case $name in
-       m)      MANIFEST=$OPTARG ;;
-       s)      SRCDIR=$OPTARG ;;
-       r)      ROOTNAME=$OPTARG ;;
-       t)      maketar=yes ;;
-       v)      verbose=yes ;;
-       ?)      usage ;;
-       esac
-done
-
-: ${MANIFEST:=$SRCDIR/MANIFEST}
-
-vmsg using $MANIFEST
-
-shift $(( $OPTIND - 1 ))
-
-if [ $# -lt 1 ]; then
-       usage
-fi
-
-version=$1
-newdir=${ROOTNAME}-$version
-
-tarfile=${newdir}.tar
-
-vmsg creating distribution for $ROOTNAME version $version in $newdir
-
-if [ ! -d $newdir ]; then
-       mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; }
-fi
-
-dirmode=755
-filmode=644
-
-while read fname type mode
-do
-       [ -z "$fname" ] && continue
-
-       case "$fname" in
-       \#*)    continue ;;
-       esac
-
-       case "$type" in
-       d)      mkdir $newdir/$fname ;;
-       f)      cp -p $SRCDIR/$fname $newdir/$fname ;;
-       s)      ln -s $mode $newdir/$fname ; mode= ;;           # symlink
-       l)      ln $mode $newdir/$fname ; mode= ;;              # hard link
-       *)      echo "unknown file type $type" 1>&2 ;;
-       esac
-
-       if [ -n "$mode" ]; then
-               chmod $mode $newdir/$fname
-       fi
-
-done < $MANIFEST
-
-# cut off the `-alpha' in something like `2.0-alpha', leaving just the
-# numeric version
-#version=${version%%-*}
-
-#case "$version" in
-#*.*.*)        vers=${version%.*} ;;
-#*.*)  vers=${version} ;;
-#esac
-
-#echo $vers > $newdir/.distribution
-
-#case "$version" in
-#*.*.*)        plevel=${version##*.} ;;
-#*)    plevel=0 ;;
-#esac
-#[ -z "$plevel" ] && plevel=0
-#echo ${plevel} > $newdir/.patchlevel
-
-vmsg $newdir created
-
-if [ -n "$maketar" ]; then
-       tar cf ${tarfile} $newdir
-       gzip $tarfile
-       vmsg ${tarfile}.gz created
-fi
-
-exit 0
diff --git a/support/mkdocdist b/support/mkdocdist
deleted file mode 100755 (executable)
index 8cd414c..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#! /bin/bash -
-#
-# mkdocdist - make a distribution directory containing formatted
-#            documentation from a master manifest file
-#
-# usage: mkdocdist [-m manifest] [-s srcdir] [-r rootname] [-v] version
-#
-# SRCDIR defaults to src
-# MANIFEST defaults to $SRCDIR/MANIFEST.doc
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-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/>.
-#
-
-SRCDIR=src
-ROOTNAME=bash-doc
-
-usage()
-{
-       echo usage: mkdocdist [-m manifest] [-s srcdir] [-r rootname] [-v] version 1>&2
-       exit 2
-}
-
-vmsg()
-{
-       if [ -n "$verbose" ]; then
-               echo mkdocdist: "$@"
-       fi
-}
-
-while getopts m:s:r:v name
-do
-       case $name in
-       m)      MANIFEST=$OPTARG ;;
-       s)      SRCDIR=$OPTARG ;;
-       r)      ROOTNAME=$OPTARG ;;
-       v)      verbose=yes ;;
-       ?)      usage ;;
-       esac
-done
-
-: ${MANIFEST:=$SRCDIR/MANIFEST.doc}
-
-vmsg using $MANIFEST
-
-shift $(( $OPTIND - 1 ))
-
-if [ $# -lt 1 ]; then
-       usage
-fi
-
-version=$1
-newdir=${ROOTNAME}-$version
-
-vmsg creating documentation distribution for $ROOTNAME version $version in $newdir
-
-if [ ! -d $newdir ]; then
-       mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; }
-fi
-
-dirmode=755
-filmode=644
-
-while read fname type mode
-do
-       [ -z "$fname" ] && continue
-
-       case "$fname" in
-       \#*)    continue ;;
-       esac
-
-       case "$type" in
-       d)      mkdir $newdir/$fname ;;
-       f)      cp -p $SRCDIR/$fname $newdir/$fname ;;
-       *)      echo "unknown file type $type" 1>&2 ;;
-       esac
-
-       if [ -n "$mode" ]; then
-               chmod $mode $newdir/$fname
-       fi
-
-done < $MANIFEST
-
-vmsg $newdir created
-
-exit 0
diff --git a/support/mknewvers.sh b/support/mknewvers.sh
deleted file mode 100644 (file)
index da74f74..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-#! /bin/bash
-#
-# Simple program to make new version files for the shell.
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-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/>.
-#
-
-PROGNAME=`basename $0`
-USAGE="$PROGNAME [-M] [-m] [-p] [version]"
-
-while [ $# -gt 0 ]; do
-       case "$1" in
-       -n)     shift; debug=yes;;
-       -M)     shift; major_version=yes ;;
-       -m)     shift; minor_version=yes ;;
-       -p)     shift; patch_level=yes ;;
-       -*)     echo "$PROGNAME: usage: $USAGE" >&2 ; exit 2 ;;
-       *)      break;;
-       esac
-done
-
-if [ -n "$1" ]; then
-       NEWVERSION="$1";
-fi
-
-DISTFILE=_distribution
-PATCHFILE=_patchlevel
-
-dist_version=`cat $DISTFILE`
-PATCH=`cat $PATCHFILE`
-
-# making new version files from a new version argument
-if [ -n "$NEWVERSION" ]; then
-       case "$NEWVERSION" in
-       *.*.*)  PATCH=${NEWVERSION##*.} ;;
-       *)      PATCH=0 ;;
-       esac
-
-       case "$NEWVERSION" in
-       *.*.*)  vers=${NEWVERSION%.*} ;;
-       *)      vers=${NEWVERSION} ;;
-       esac
-
-       case "$vers" in
-       *.*)    MAJOR=${vers%.*} MINOR=${vers##*.} ;;
-       *)      MAJOR=${vers} MINOR=0 ;;
-       esac
-
-       if [ -n "$debug" ]; then
-               echo "echo ${MAJOR}.${MINOR} > $DISTFILE"
-               echo "echo ${PATCH} > $PATCHFILE"
-       else
-               echo ${MAJOR}.${MINOR} > $DISTFILE
-               echo ${PATCH} > $PATCHFILE
-       fi
-
-       echo "$PROGNAME: running autoconf..."
-       autoconf
-
-       exit 0
-fi
-
-case "$dist_version" in
-*.*.*) vers=${dist_version%.*} ;;
-*.*)   vers=${dist_version} ;;
-esac
-
-case "$vers" in
-*.*)   MAJOR=${vers%.*} MINOR=${vers##*.} ;;
-*)     MAJOR=${vers} MINOR=0 ;;
-esac
-
-# incrementing the major version
-if [ -n "$major_version" ]; then
-       MAJOR=`expr $MAJOR + 1`
-fi
-
-if [ -n "$minor_version" ]; then
-       $MINOR=`echo $minor_version | awk '{printf "%02d\n", $1+1}'`
-fi
-       
-if [ -n "$patch_level" ]; then
-       PATCH=`expr $PATCH + 1`
-fi
-
-if [ -n "$debug" ]; then
-       echo "echo ${MAJOR}.${MINOR} > $DISTFILE"
-       echo "echo ${PATCH} > $PATCHFILE"
-else
-       echo ${MAJOR}.${MINOR} > $DISTFILE
-       echo ${PATCH} > $PATCHFILE
-fi
-
-echo "$PROGNAME: running autoconf..."
-autoconf
-
-exit 0
diff --git a/support/mksnap b/support/mksnap
deleted file mode 100755 (executable)
index ed487da..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#! /bin/bash -
-#
-# mksnap -- make a snapshot copy of the bash source tree in a new directory
-#          named by the date
-#
-# Chet Ramey
-# chet@po.cwru.edu
-
-# Copyright (C) 1996-2002 by Chester Ramey
-#
-#   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/>.
-#
-
-SRCDIR="src"
-SRCARG="-s src"
-ROOTNAME="-r bash"
-
-usage()
-{
-       echo usage: mksnap [-m manifest] [-s srcdir] [-r rootname] [-v] 1>&2
-       exit 2
-}
-
-vmsg()
-{
-       if [ -n "$verbose" ]; then
-               echo mksnap: "$@"
-       fi
-}
-
-while getopts m:s:r:v name
-do
-       case $name in
-       m)      MANIFEST="-m $OPTARG" ;;
-       s)      SRCDIR="$OPTARG" SRCARG="-s $OPTARG" ;;
-       r)      ROOTNAME="-r $OPTARG" ;;
-       v)      verbose=-v ;;
-       ?)      usage ;;
-       esac
-done
-
-VERSION=`date "+%Y%m%d"`
-
-vmsg calling mkdist $verbose
-
-/bin/bash $SRCDIR/support/mkdist $verbose $SRCARG $MANIFEST $ROOTNAME $VERSION
-
-exit 0
diff --git a/support/relicense b/support/relicense
deleted file mode 100644 (file)
index bb4aa77..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /bin/sh
-#
-# relicense - change copyrights between GPL2 and GPL3
-#
-# usage: relicense [n]
-#
-# n is `2' or `3'.  The default `n' is 2
-#
-# Chet Ramey
-# chet.ramey@case.edu
-#
-SRC=/usr/homes/chet/src/bash/src
-
-V=2
-
-if [ ! -f parse.y ]; then
-       echo "relicense: must be run from source directory to be relicensed" >&2
-       exit 2
-fi
-
-case "$1" in
-2)     V=2 ;;
-3)     V=3 ;;
-"")    ;;
-*)     echo "relicense: usage: relicense [2|3]" >&2  ; exit 2 ;;
-esac
-
-LIC2="version 2 of the License"
-LIC3="version 3 of the License"
-
-VS2='GPLv2+: GNU GPL version 2 or later'
-VS3='GPLv3+: GNU GPL version 3 or later'
-
-case "$V" in
-2)     PAT1="$LIC3" REP1="$LIC2" PAT2="$VS3" REP2="$VS2" ;;
-3)     PAT1="$LIC2" REP1="$LIC3" PAT2="$VS2" REP2="$VS3" ;;
-esac
-
-find . -type f -print |
-       while read fn ; do
-               BASE=${fn##*/}
-               sed -e "s|$PAT1|$REP1|g" -e "s|$PAT2|$REP2|g" < $fn > /tmp/$BASE && touch -r $fn /tmp/$BASE
-               cmp -s /tmp/$BASE $fn || mv /tmp/$BASE $fn
-               echo $fn
-               rm -f /tmp/$BASE
-       done
-
-echo "relicense: copying appropriate license file"
-case "$V" in
-2)     cp -p $SRC/COPYINGv2 COPYING
-       cp -p $SRC/COPYINGv2 lib/readline/COPYING ;;
-3)     cp -p $SRC/COPYINGv3 COPYING
-       cp -p $SRC/COPYINGv3 lib/readline/COPYING ;;
-esac
-
-exit 0
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/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/texi2html.debug b/support/texi2html.debug
deleted file mode 100755 (executable)
index dbe15cd..0000000
+++ /dev/null
@@ -1,5439 +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
-               $first_index_chapter = $node
-                 if ($level == 1 && !$first_index_chapter && 
-                     $name =~ /index/i);
-if ($level == 1 && $name =~ /index/i) {
-  print "# at level 1 found '" . $name . "' as matching index name (node = '" . $node . "')\n";
-  print "# first index chapter = '" . $first_index_chapter . "' \n";
-}
-               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";
-print "# set node2href for '" . $node . "' (" . $name . ") to '" . $node2href{$node} . "'\n"
-  if ($node =~ /index/i);
-                 $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 "# Set Index HREF to '" . clean_name($T2H_INDEX_CHAPTER) . "' \n";
-}
-
-print "# Using '" . clean_name($T2H_INDEX_CHAPTER) . "' as index page\n"
-  if ($T2H_VERBOSE && $T2H_HREF{Index});
-
-print "# Using '" . $T2H_HREF{Index} . "' as index href\n";
-
-%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/tests/-i b/tests/-i
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/tests/RUN-ONE-TEST b/tests/RUN-ONE-TEST
deleted file mode 100755 (executable)
index 3efcf32..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-BUILD_DIR=/usr/local/build/chet/bash/bash-current
-THIS_SH=$BUILD_DIR/bash
-PATH=$PATH:$BUILD_DIR
-
-export THIS_SH PATH
-
-rm -f /tmp/xx
-
-/bin/sh "$@"
diff --git a/tests/RUN-TEST-SCRIPT b/tests/RUN-TEST-SCRIPT
deleted file mode 100755 (executable)
index 75fe594..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-BUILD_DIR=/usr/local/build/chet/bash/bash-current
-THIS_SH=$BUILD_DIR/bash
-PATH=$PATH:$BUILD_DIR
-
-export THIS_SH PATH
-
-${THIS_SH} "$@"
diff --git a/tests/cracauer-testsuite/DOC b/tests/cracauer-testsuite/DOC
deleted file mode 100644 (file)
index 30e8150..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-The scripts './test01.sh' to './test05.sh' all echo to stdout what
-they should do and what behaviour is expected. Test them interactivly.
-
-Do a 'make' first to build a sample program that makes use of SIGQUIT
-and SIGINT. Links the shell to test to './testshell' or './testcsh'.
-
-Remember to 
-   stty quit '^\'
-after each test. It seens resetting the terminal sometimes doesn't
-reset the keys as well.
-
-The file OBSERVATIONS contains the misbehaviour I found.
-
diff --git a/tests/cracauer-testsuite/Makefile b/tests/cracauer-testsuite/Makefile
deleted file mode 100644 (file)
index 103bb93..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-ALL = catcher
-
-all: $(ALL)
-
-DEPSTUFF = Makefile
-
-CFLAGS = -O -g -Wall -D_POSIX_SOURCE
-
-catcher: $(DEPSTUFF) catcher.c 
-
-clean:
-       -rm $(ALL) *.core core *.o
diff --git a/tests/cracauer-testsuite/OBSERVATIONS b/tests/cracauer-testsuite/OBSERVATIONS
deleted file mode 100644 (file)
index b856d08..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-CRA = my diffs.
-BDE = Bruce diffs.
-
-BDE version 19980212:
-
-Test 2: It should send SIGQUIT to cat, it doesn't.
-
-Test 9: can't break wait()
-
-%% older notes:
-
-test2:
-  trap '' 2
-  while : ; do cat ; echo -n $? ; done
-test6:
-  trap '' 3
-  while : ; do cat ; echo -n $? ; done
-
-The trapped signal should be ignored. If SIGINT is ignored (test 2),
-SIGQUIT exits `cat`, but not the shell (means the loop will continue
-and `cat` will be called again). 
-
-If SIGQUIT is ignored, SIGINT both exit the whole script.
-
-I'm not sure this asymmetric behaviour is intended, but currently CRA
-and BDE versions has is.
-
-I think SIGTERM should exit the script in all cases immedeatly. CRA
-version does this, BDE version ignores SIGTERM.
-
-bash1 falls over completely on these tests.
-
-bash2 works like CRA version.
-
-Other tests:
-------------
-
-BDE version fails on 5, the shell terminated while the forground child
-is running (like the unpatched FreeBSD sh did). 
-
-BDE version handles SIGQUIT seperately from SIGINT in test 1, and 3,
-but not in test 4 and 5.
-
-bash2 fails on 5, it gets a SIGQUIT that was sent to a
-SIGQUIT-catching process after that process exits. Reliably, it
-doesn't matter how much time was passed between SIGQUIT to process and
-exit or process.
-
-As Bruce noted, bash version 1 fails on test 2 like my version of sh
-does. bash1 doesn't have the bash2 problem on test 5 (getting signals
-that were caught by the child after the child exits).
-
-zsh fails on test 1 and 5 in a similar way bash2 failed on 5: After a
-child exits that received SIGINT, it terminates immedeatly.
-
-I wonder how bash 2 manages to fail on test 5, but to pass test 1...
-
-csh fails on test 1 in two ways:
-- when the SIGINT/SIGQUIT-catching child receives both SIGQUIT and
-  SIGINT, csh exits immedeatly, while the child is still running.
-- when only one or more SIGQUIT are delivered to the child, csh gets
-  it after the child exits and terminates with coredump.
-
-csh also ignores SIGQUIT where SIGINT is caught.
-
-test2.csh is different from test1.sh in that all signals should be
-caught. csh fails in that it sometimes gets SIGQUIT and exits with
-coredump (the shell, not the child). 
-
-
-Other stuff not directly relevant to these fixes:
-=================================================
-
-csh oddness:
-------------
-
-When the "catcher" program resets the terminal, there's a time-window
-where C-g is mapped to SIGQUIT, but "catcher" already exited. In other
-word, if you type C-g while in "catcher", then immedeatly C-d, csh
-will get SIGQUIT. I thought that remapping the terminal keys should
-have been done before the shell is re-entered. The same happens to
-tcsh. 
-
-With sh variants I didn't manage to deliver SIGQUIT by C-g.
diff --git a/tests/cracauer-testsuite/QUESTIONS b/tests/cracauer-testsuite/QUESTIONS
deleted file mode 100644 (file)
index a1620be..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Should the background job be killed in test 3?
diff --git a/tests/cracauer-testsuite/catcher.c b/tests/cracauer-testsuite/catcher.c
deleted file mode 100644 (file)
index f2de71c..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-#undef VERBOSE
-
-#include <stdio.h>
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#include <sys/types.h>
-#include <termios.h>
-
-#include <sys/ttydefaults.h>
-
-#define BUFSIZE 65536
-
-struct termios ttystate;
-struct termios oldttystate;
-int cleanupP = 0;
-
-#ifndef CTRL
-#define CTRL(x) (x&037)
-#endif
-
-int _global_fd;
-
-void handler2(int sig)
-{
-#define TMP "Async action on sigint (2)\n"
-  write(1,TMP,sizeof(TMP)-1);
-#undef TMP
-}
-
-void handler3(int sig)
-{
-#define TMP "Async action on sigquit (3)\n"
-  write(1,TMP,sizeof(TMP)-1);
-#undef TMP
-}
-
-void cleanup()
-{
-  if (cleanupP) {
-    printf("Resettung terminal\n");
-    if (tcsetattr(_global_fd, TCSANOW, &oldttystate) < 0) {
-      perror("ioctl reset /dev/tty");
-    }
-  }
-  close(_global_fd);
-}
-
-static void exit_handler(int sig)
-#ifdef __GNUC__
-    __attribute__ ((noreturn))
-#endif
-;
-static void exit_handler(int sig)
-{
-  cleanup();
-  if (sig)
-    printf("Exiting on signal %d\n",sig);
-  exit(0);
-}
-
-int main()
-{
-  char c[BUFSIZE];
-  pid_t pgrp;
-
-#ifdef VERBOSE
-  printf("I'm PID %d\n",getpid());
-#endif
-
-  if ( (  _global_fd = open("/dev/tty",O_RDONLY)) < 1) {
-    perror("open /dev/tty");
-    exit_handler(0);
-  }
-  
-  if ( (pgrp = tcgetpgrp(_global_fd)) < 0) {
-    perror("Can't get pgrp\n");
-    exit_handler(0);
-  }
-#ifdef VERBOSE
-  printf("tty pgrp is %ld\n",(long)pgrp);
-#endif
-
-  if ( tcsetpgrp(_global_fd, pgrp) < 0) {
-    perror("Can't set pgrp\n");
-    exit_handler(0);
-  }
-
-  if (tcgetattr(_global_fd, &oldttystate) < 0) {
-    perror("ioctl1 /dev/tty");
-    exit_handler(0);
-  }
-  ttystate = oldttystate;
-  ttystate.c_lflag &= ~ICANON;
-  ttystate.c_lflag &= ~ECHO;
-  ttystate.c_cc[VQUIT] = CTRL('g'); /* From sys/ttydefaults.h */
-  if (tcsetattr(_global_fd, TCSANOW, &ttystate) < 0) {
-    perror("ioctl2 /dev/tty");
-    exit_handler(0);
-  }
-  cleanupP = 1;
-
-  {
-    struct sigaction siga;
-    
-    sigemptyset(&siga.sa_mask);
-    siga.sa_flags = 0;
-
-    siga.sa_handler = handler2;
-    sigaction(SIGINT, &siga, (struct sigaction *)0);
-    siga.sa_handler = handler3;
-    sigaction(SIGQUIT, &siga, (struct sigaction *)0);
-
-    siga.sa_handler = exit_handler;
-    sigaction(SIGHUP, &siga, (struct sigaction *)0);
-    sigaction(SIGTERM, &siga, (struct sigaction *)0);
-  }
-
-  printf("Use C-c and C-g for async actions, end with C-d\n");
-  while (1) {
-    switch (read(_global_fd,c,1)) {
-    case -1:
-      if (errno == EINTR)
-       continue;
-      perror("stdin read");
-      exit_handler(0);
-    case 0:
-      printf("Exiting on stdin EOF (should happen only in cannon mode\n");
-      exit_handler(0);
-    default:
-      if (c[0] == CEOF) { /* From sys/ttydefaults.h */
-       printf("Exiting on stdin EOF (hopefully only in noncannon mode)\n");
-       exit_handler(0);
-      }
-      printf("You typed: '%c' (0x%X)\n",c[0],c[0]);
-    }
-  }
-  exit_handler(0);
-  return 0;
-}
diff --git a/tests/cracauer-testsuite/lib.csh b/tests/cracauer-testsuite/lib.csh
deleted file mode 100644 (file)
index b8e8a77..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# I don't have a clue about csh programming...
-
-alias docatcher '\
-    echo "Trigger some async actions, shell should not exit" \
-    echo "Then exit catcher with C-d" \
-    ./catcher'
-
diff --git a/tests/cracauer-testsuite/lib.sh b/tests/cracauer-testsuite/lib.sh
deleted file mode 100644 (file)
index 8e87565..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-docatcher()
-{
-    echo 'Trigger some async actions, shell should not exit'
-    echo 'Then exit catcher with C-d'
-    if [ ! -f ./catcher ] ; then
-       make catcher
-    fi
-    ./catcher
-}
-
-endless()
-{
-    while : ; do foo=1 ; done
-}
\ No newline at end of file
diff --git a/tests/cracauer-testsuite/test01.csh b/tests/cracauer-testsuite/test01.csh
deleted file mode 100644 (file)
index bf50bc7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!./testcsh -f
-
-echo 'Test 1: See whether child can work on SIGINT and SIGQUIT without'
-echo '        terminating the shell around it. See if the shell is'
-echo '        interruptable afterwards'
-
-source lib.csh
-
-docatcher
-echo "No try to exit shell loop with C-c, C-\ or SIGTERM"
-while (1)
-end
diff --git a/tests/cracauer-testsuite/test01.sh b/tests/cracauer-testsuite/test01.sh
deleted file mode 100644 (file)
index fabf8fb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!./testshell
-
-echo 'Test 1: See whether child can work on SIGINT and SIGQUIT without'
-echo '        terminating the shell around it. See if the shell is'
-echo '        interruptable afterwards'
-
-if [ $ZSH_VERSION ] ; then
-    source lib.sh
-else
-    . lib.sh
-fi
-
-docatcher
-echo 'Now try to exit shell loop with C-c, C-\ or SIGTERM'
-endless
diff --git a/tests/cracauer-testsuite/test02.csh b/tests/cracauer-testsuite/test02.csh
deleted file mode 100644 (file)
index a60d70a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!./testcsh -f
-
-echo 'Test 2: You should not be able to end cat using anything besides SIGKILL'
-
-source lib.csh
-
-onintr -
-
-while (1)
-    echo cat
-    cat
-    echo Exited with $?
-end
diff --git a/tests/cracauer-testsuite/test02.sh b/tests/cracauer-testsuite/test02.sh
deleted file mode 100644 (file)
index 4c6f82d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!./testshell
-
-echo 'Test 2: You should not be able to exit `cat` with SIGINT.'
-echo '        SIGQUIT should abort `cat` (with coredump) while'
-echo '        the shell should continue and call `cat` again.'
-echo '        SIGTERM should exit the whole script.'
-
-set -x
-trap '' 2
-while : ; do cat ; echo -n $? ; done
diff --git a/tests/cracauer-testsuite/test03.sh b/tests/cracauer-testsuite/test03.sh
deleted file mode 100644 (file)
index 955d6dd..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!./testshell 
-
-echo 'Test 3: A background job is being started, then the shell loops.'
-echo '        You should be able to break the shell loop with C-c.'
-echo '        This goes wrong if the shell blocks signals when'
-echo '        starting any child. It should do so only for foreground'
-echo '        jobs.'
-
-if [ $ZSH_VERSION ] ; then
-    source lib.sh
-else
-    . lib.sh
-fi
-
-echo Starting job
-gzip < /dev/zero | wc &
-echo 'Now try to break this loop'
-endless
diff --git a/tests/cracauer-testsuite/test04.sh b/tests/cracauer-testsuite/test04.sh
deleted file mode 100644 (file)
index 962aa7a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!./testshell 
-
-echo 'Test 4: Three shells all loop. You should be able to terminate this'
-echo '        script with just one SIGINT or SIGQUIT'
-
-if [ $ZSH_VERSION ] ; then
-    source lib.sh
-else
-    . lib.sh
-fi
-
-(
-    (
-       endless
-    )
-    endless
-)
-endless
diff --git a/tests/cracauer-testsuite/test05.sh b/tests/cracauer-testsuite/test05.sh
deleted file mode 100644 (file)
index cbef1ae..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!./testshell 
-
-echo 'Test 5: The SIGINT/SIGQUIT-catching program is being run'
-echo '     A: The shell should not exit on signals while this program runs.'
-echo '     B: After you exited it via C-d, you should be able to end this'
-echo '        script with its 3 subhells with just one signal'
-echo '        script with just one SIGINT or SIGQUIT'
-
-if [ $ZSH_VERSION ] ; then
-    source lib.sh
-else
-    . lib.sh
-fi
-
-(
-    (
-       docatcher
-       echo "Now try to exit with one SIGINT"
-       endless
-    )
-    endless
-)
-endless
diff --git a/tests/cracauer-testsuite/test06.sh b/tests/cracauer-testsuite/test06.sh
deleted file mode 100644 (file)
index ce1b911..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!./testshell
-
-echo 'Test 2: You should not be able to exit `cat` with SIGQUIT.'
-echo '        SIGINT should exit `cat` (without coredump) while'
-echo '        the shell should continue and call `cat` again.'
-echo '        SIGTERM should exit the whole script.'
-
-set -x
-trap '' 3
-while : ; do cat ; echo -n $? ; done
diff --git a/tests/cracauer-testsuite/test07.csh b/tests/cracauer-testsuite/test07.csh
deleted file mode 100644 (file)
index 9909e32..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!./testcsh -f
-
-echo 'Test 7: See whether child can work on SIGINT and SIGQUIT without'
-echo '        terminating the shell around it. See if the shell'
-echo '        continues the script after the child exits'
-
-source lib.csh
-
-echo
-echo 'After the catching program, you should see 4 lines of text, sent'
-echo 'with one second delay each'
-docatcher
-echo 'You should see 3 more lines'
-sleep 1
-echo 'You should see 2 more lines'
-sleep 1
-echo 'You should see 1 more line'
-sleep 1
-echo 'Done'
diff --git a/tests/cracauer-testsuite/test07.sh b/tests/cracauer-testsuite/test07.sh
deleted file mode 100644 (file)
index 2f87ce4..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!./testshell
-
-echo 'Test 7: See whether child can work on SIGINT and SIGQUIT without'
-echo '        terminating the shell around it. See if the shell'
-echo '        continues the script after the child exits'
-
-if [ $ZSH_VERSION ] ; then
-    source lib.sh
-else
-    . lib.sh
-fi
-
-echo
-echo 'After the catching program, you should see 4 lines of text, sent'
-echo 'with one second delay each'
-docatcher
-echo 'You should see 3 more lines'
-sleep 1
-echo 'You should see 2 more lines'
-sleep 1
-echo 'You should see 1 more line'
-sleep 1
-echo 'Done'
diff --git a/tests/cracauer-testsuite/test08.sh b/tests/cracauer-testsuite/test08.sh
deleted file mode 100644 (file)
index 87bde69..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!./testshell
-
-echo 'Test 8: Start a child that is to be interrupted by SIGINT.'
-echo '        The shell should not continue with the script'
-
-if [ $ZSH_VERSION ] ; then
-    source lib.sh
-else
-    . lib.sh
-fi
-
-echo
-echo 'Should exit immedeatly after you break cat by SIGINT'
-echo cat
-cat
-sleep 1
-echo 'If you see this, you have a problem'
-sleep 1
-echo 'If you see this, you have even more problems'
diff --git a/tests/cracauer-testsuite/test09.sh b/tests/cracauer-testsuite/test09.sh
deleted file mode 100644 (file)
index d12cb53..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!./testshell
-
-trap 'echo I am a trap' 2
-
-echo 'Try to break wait using SIGINT before wc completes'
-echo 'After you break wait, it should print "I am a trap"'
-echo 'and then "Going on"'
-echo 'wc &'
-gzip < /kernel | wc &
-p=$!
-echo wait
-wait
-echo "Going on"
-kill $p
diff --git a/tests/cracauer-testsuite/test10.sh b/tests/cracauer-testsuite/test10.sh
deleted file mode 100644 (file)
index a3bdc62..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!./testshell
-
-echo 'You should be able to end the script with one SIGINT'
-(while :; do wc /kernel > /dev/null ; done)
diff --git a/tests/cracauer-testsuite/test11.sh b/tests/cracauer-testsuite/test11.sh
deleted file mode 100644 (file)
index b56d68c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!./testshell
-
-echo 'Test 11 (variant of 9):'
-echo 'Try to break wait using SIGINT before wc completes' 
-echo 'After you break wait, it should NOT print "Going on"'
-
-echo 'wc &'
-gzip < /kernel | wc &
-p=$!
-echo wait
-wait
-echo "Going on"
-kill $p
diff --git a/tests/cracauer-testsuite/test12.sh b/tests/cracauer-testsuite/test12.sh
deleted file mode 100644 (file)
index b724eae..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!./testshell
-
-echo 'Test 12 (Variant of test10):'
-echo 'You should be able to end the script with one SIGINT'
-(while :; do ./catcher ; done)
diff --git a/tests/cracauer-testsuite/test13.sh b/tests/cracauer-testsuite/test13.sh
deleted file mode 100644 (file)
index f4b8bb8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!./testshell
-
-echo 'Test 13 (variant of Test 1):'
-echo 'On SIGINT, cat should exit (and be restarted by the shell loop)'
-echo 'and the Text "I am a trap" should be printed'
-
-set -x
-trap 'echo I am a trap' 2
-while : ; do cat ; echo -n $? ; done
diff --git a/tests/exp-tests b/tests/exp-tests
deleted file mode 100644 (file)
index 884b5a6..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-#
-# A suite of tests for bash word expansions
-#
-# This tests parameter and variable expansion, with an empahsis on
-# proper quoting behavior.
-#
-# Chet Ramey
-
-#
-# If you comment out the body of this function, you can do a diff against
-# `expansion-tests.right' to see if the shell is behaving correctly
-#
-expect()
-{
-       echo expect "$@"
-}
-
-# Test the substitution quoting characters (CTLESC and CTLNUL) in different
-# combinations
-
-expect "<^A>"
-recho `echo '\ 1'`
-expect "<^A>"
-recho `echo "\ 1"`
-expect "<^B>"
-recho `echo '\ 2'`
-expect "<^B>"
-recho `echo "\ 2"`
-expect "<^A>"
-recho `echo \ 1`
-expect "<^B>"
-recho `echo \ 2`
-
-# Test null strings without variable expansion
-expect "<abcdefgh>"
-recho abcd""efgh
-expect "<abcdefgh>"
-recho abcd''efgh
-expect "<abcdefgh>"
-recho ""abcdefgh
-expect "<abcdefgh>"
-recho ''abcdefgh
-expect "<abcd>"
-recho abcd""
-expect "<abcd>"
-recho abcd''
-
-# Test the quirky behavior of $@ in ""
-expect nothing
-recho "$@"
-expect "< >"
-recho " $@"
-expect "<-->"
-recho "-${@}-"
-
-# Test null strings with variable expansion that fails
-expect '<>'
-recho $xxx""
-expect '<>'
-recho ""$xxx
-expect '<>'
-recho $xxx''
-expect '<>'
-recho ''$xxx
-expect '<>'
-recho $xxx""$yyy
-expect '<>'
-recho $xxx''$yyy
-
-# Test null strings with variable expansion that succeeds
-xxx=abc
-yyy=def
-
-expect '<abc>'
-recho $xxx""
-expect '<abc>'
-recho ""$xxx
-expect '<abc>'
-recho $xxx''
-expect '<abc>'
-recho ''$xxx
-expect '<abcdef>'
-recho $xxx""$yyy
-expect '<abcdef>'
-recho $xxx''$yyy
-
-unset xxx yyy
-
-# Test the unquoted special quoting characters
-expect "<^A>"
-recho \ 1
-expect "<^B>"
-recho \ 2
-expect "<^A>"
-recho "\ 1"
-expect "<^B>"
-recho "\ 2"
-expect "<^A>"
-recho '\ 1'
-expect "<^B>"
-recho '\ 2'
-
-# Test expansion of a variable that is unset
-expect nothing
-recho $xxx
-expect '<>'
-recho "$xxx"
-
-expect nothing
-recho "$xxx${@}"
-
-# Test empty string expansion
-expect '<>'
-recho ""
-expect '<>'
-recho ''
-
-# Test command substitution with (disabled) history substitution
-expect '<Hello World!>'
-# set +H
-recho "`echo \"Hello world!\"`"
-
-# Test some shell special characters
-expect '<`>'
-recho "\`"
-expect '<">'
-recho "\""
-expect '<\^A>'
-recho "\\ 1"
-
-expect '<\$>'
-recho "\\$"
-
-expect '<\\>'
-recho "\\\\"
-
-# This should give argv[1] = a argv[2] = b
-expect '<a> <b>'
-FOO=`echo 'a b' | tr ' ' '\012'`
-recho $FOO
-
-# This should give argv[1] = ^A argv[2] = ^B
-expect '<^A> <^B>'
-FOO=`echo '\ 1 \ 2' | tr ' ' '\012'`
-recho $FOO
-
-# Test quoted and unquoted globbing characters
-expect '<**>'
-recho "*"*
-
-expect '<\.\./*/>'
-recho "\.\./*/"
-
-# Test patterns that come up when the shell quotes funny character
-# combinations
-expect '<^A^B^A^B>'
-recho '\ 1\ 2\ 1\ 2'
-expect '<^A^A>'
-recho '\ 1\ 1'
-expect '<^A^B>'
-recho '\ 1\ 2'
-expect '<^A^A^B>'
-recho '\ 1\ 1\ 2'
-
-# More tests of "$@"
-set abc def ghi jkl
-expect '<  abc> <def> <ghi> <jkl  >'
-recho "  $@  "
-expect '<  abc> <def> <ghi> <jkl  >'
-recho "${1+  $@  }"
-
-set abc def ghi jkl
-expect '<--abc> <def> <ghi> <jkl-->'
-recho "--$@--"
-
-set "a b" cd ef gh
-expect '<a b> <cd> <ef> <gh>'
-recho ${1+"$@"}
-expect '<a b> <cd> <ef> <gh>'
-recho ${foo:-"$@"}
-expect '<a b> <cd> <ef> <gh>'
-recho "${@}"
-
-expect '<  >'
-recho "  "
-expect '< - >'
-recho " - "
-
-# Test combinations of different types of quoting in a fully-quoted string
-# (so the WHOLLY_QUOTED tests fail and it doesn't get set)
-expect '</^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/>'
-recho "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/"
-
-# Test the various Posix parameter expansions
-
-expect '<foo bar>'
-recho "${x:-$(echo "foo bar")}"
-expect '<foo> <bar>'
-recho ${x:-$(echo "foo bar")}
-
-unset X
-expect '<abc>'
-recho ${X:=abc}
-expect '<abc>'
-recho $X
-
-set a b c
-expect '<posix>'
-recho ${3:+posix}
-
-POSIX=/usr/posix
-expect '<10>'
-recho ${#POSIX}
-
-# remove shortest trailing match
-x=file.c
-expect '<file.o>'
-recho ${x%.c}.o
-
-# remove longest trailing match
-x=posix/src/std
-expect '<posix>'
-recho ${x%%/*}
-
-# remove shortest leading pattern
-x=$HOME/src/cmd
-expect '</src/cmd>'
-recho ${x#$HOME}
-
-# remove longest leading pattern
-x=/one/two/three
-expect '<three>'
-recho ${x##*/}
-
-# pattern removal of patterns that don't match
-z=abcdef
-
-expect '<abcdef>'
-recho ${z#xyz}
-expect '<abcdef>'
-recho ${z##xyz}
-
-expect '<abcdef>'
-recho ${z%xyz}
-expect '<abcdef>'
-recho ${z%%xyz}
-
-# Command substitution and the quirky differences between `` and $()
-
-expect '<\$x>'
-recho '\$x'
-
-expect '<$x>'
-recho `echo '\$x'`
-
-expect '<\$x>'
-recho $(echo '\$x')
-
-# The difference between $* "$*" and "$@"
-
-set "abc" "def ghi" "jkl"
-
-expect '<abc> <def> <ghi> <jkl>'
-recho $*
-
-expect '<abc def ghi jkl>'
-recho "$*"
-
-OIFS="$IFS"
-IFS=":$IFS"
-
-# The special behavior of "$*", using the first character of $IFS as separator
-expect '<abc:def ghi:jkl>'
-recho "$*"
-
-IFS="$OIFS"
-
-expect '<abc> <def ghi> <jkl>'
-recho "$@"
-
-expect '<xxabc> <def ghi> <jklyy>'
-recho "xx$@yy"
-
-expect '<abc> <def ghi> <jklabc> <def ghi> <jkl>'
-recho "$@$@"
-
-foo=abc
-bar=def
-
-expect '<abcdef>'
-recho "$foo""$bar"
-
-unset foo
-set $foo bar '' xyz "$foo" abc
-
-expect '<bar> <> <xyz> <> <abc>'
-recho "$@"
-
-# More tests of quoting and deferred evaluation
-
-foo=10 x=foo
-y='$'$x
-expect '<$foo>'
-recho $y
-eval y='$'$x
-expect '<10>'
-recho $y
-
-# case statements
-
-NL='
-'
-x='ab
-cd'
-
-expect '<newline expected>'
-case "$x" in
-*$NL*) recho "newline expected" ;;
-esac
-
-expect '<got it>'
-case \? in
-*"?"*) recho "got it" ;;
-esac
-
-expect '<got it>'
-case \? in
-*\?*) recho "got it" ;;
-esac
-
-set one two three four five
-expect '<one> <three> <five>'
-recho $1 $3 ${5} $8 ${9}
-
-# length tests on positional parameters and some special parameters
-
-expect '<5> <5>'
-recho $# ${#}
-expect '<3>'
-recho ${#1}
-expect '<1>'
-recho ${##}
-expect '<1>'
-recho ${#?}
-expect '<5>'
-recho ${#@}
-expect '<5>'
-recho ${#*}
-expect '<5>'
-recho "${#@}"
-expect '<5>'
-recho "${#*}"
-
-expect '<42>'
-recho $((28 + 14))
-expect '<26>'
-recho $[ 13 * 2 ]
-
-expect '<\>'
-recho `echo \\\\`
-
-expect '<~>'
-recho '~'
-
-expect nothing
-recho $!
-expect nothing
-recho ${!}
-
-# test word splitting of assignment statements not preceding a command
-a="a b c d e"
-declare b=$a
-expect '<a> <b> <c> <d> <e>'
-recho $b
-
-a="a?b?c"
-
-echo ${a//\\?/ }
-
-echo ${a//\?/ }
diff --git a/tests/extglob2.sub b/tests/extglob2.sub
deleted file mode 100644 (file)
index f4a3b37..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-LANG=en_US.UTF-8
-
-shopt -s extglob
-a="aaaäöü"
-
-echo "${a}" "${a//?aa}" "${a//\aaa}"
-exit 0 
diff --git a/tests/glob-test b/tests/glob-test
deleted file mode 100644 (file)
index d32988b..0000000
+++ /dev/null
@@ -1,388 +0,0 @@
-export LC_COLLATE=C
-#
-# test the shell globbing
-#
-expect()
-{
-       echo expect "$@"
-}
-
-# First, a test that bash-2.01.1 fails
-${THIS_SH} ./glob1.sub
-
-MYDIR=$PWD     # save where we are
-
-TESTDIR=/tmp/glob-test
-mkdir $TESTDIR
-builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; }
-rm -rf *
-
-touch a b c d abc abd abe bb bcd ca cb dd de Beware
-mkdir bdir
-
-# see if `regular' globbing works right
-expect '<a> <abc> <abd> <abe> <X*>'
-recho a* X*
-
-expect '<a> <abc> <abd> <abe>'
-recho \a*
-
-# see if null glob expansion works
-shopt -s nullglob
-
-expect '<a> <abc> <abd> <abe>'
-recho a* X*
-
-shopt -u nullglob
-
-# see if the failglob option works
-
-mkdir tmp
-touch tmp/l1 tmp/l2 tmp/l3
-builtin echo tmp/l[12] tmp/*4 tmp/*3
-shopt -s failglob
-builtin echo tmp/l[12] tmp/*4 tmp/*3
-rm -r tmp
-shopt -u failglob
-
-# see if the code that expands directories only works
-expect '<bdir/>'
-recho b*/
-
-# Test quoted and unquoted globbing characters
-expect '<*>'
-recho \*
-
-expect '<a*>'
-recho 'a*'
-
-expect '<a*>'
-recho a\*
-
-expect '<c> <ca> <cb> <a*> <*q*>'
-recho c* a\* *q*
-
-expect '<**>'
-recho "*"*
-
-expect '<**>'
-recho \**
-
-expect '<\.\./*/>'
-recho "\.\./*/"
-
-expect '<s/\..*//>'
-recho 's/\..*//'
-
-# Pattern from Larry Wall's Configure that caused bash to blow up
-expect '</^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/>'
-recho "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/"
-
-# Make sure character classes work properly
-
-expect '<abc> <abd> <abe> <bb> <cb>'
-recho [a-c]b*
-
-expect '<abd> <abe> <bb> <bcd> <bdir> <ca> <cb> <dd> <de>'
-recho [a-y]*[^c]
-
-expect '<abd> <abe>'
-recho a*[^c]
-
-touch a-b aXb
-expect '<a-b> <aXb>'
-recho a[X-]b
-
-touch .x .y
-expect '<Beware> <d> <dd> <de>'
-recho [^a-c]*
-
-# Make sure that filenames with embedded globbing characters are handled
-# properly
-mkdir a\*b
-> a\*b/ooo
-
-expect '<a*b/ooo>'
-recho a\*b/*
-
-expect '<a*b/ooo>'
-recho a\*?/*
-
-expect '<no match>'
-cmd='echo !7'
-case "$cmd" in
-*\\!*) echo match ;;
-*) echo no match ;;
-esac
-
-expect '<not there>'
-file='r.*'
-case $file in
-*.\*) echo not there ;;
-*) echo there ;;
-esac
-
-# examples from the Posix.2 spec (d11.2, p. 243)
-expect '<abc>'
-recho a[b]c
-
-expect '<abc>'
-recho a["b"]c
-
-expect '<abc>'
-recho a[\b]c
-
-expect '<abc>'
-recho a?c
-
-expect '<match 1>'
-case abc in
-a"b"c) echo 'match 1' ;;
-*)     echo 'BAD match 1' ;;
-esac
-
-expect '<match 2>'
-case abc in
-a*c)   echo 'match 2' ;;
-*)     echo 'BAD match 2' ;;
-esac
-
-expect '<ok 1>'
-case abc in
-"a?c") echo 'bad 1' ;;
-*)     echo 'ok 1' ;;
-esac
-
-expect '<ok 2>'
-case abc in
-a\*c)  echo 'bad 2' ;;
-*)     echo 'ok 2' ;;
-esac
-
-expect '<ok 3>'
-case abc in
-a\[b]c)        echo 'bad 3' ;;
-*)     echo 'ok 3' ;;
-esac
-
-expect '<ok 4>'
-case "$nosuchvar" in
-"")    echo 'ok 4' ;;
-*)     echo 'bad 4' ;;
-esac
-
-# This is very odd, but sh and ksh seem to agree
-expect '<ok 5>'
-case abc in
-a["\b"]c) echo 'ok 5' ;;
-*)     echo 'bad 5' ;;
-esac
-
-mkdir man
-mkdir man/man1
-touch man/man1/bash.1
-expect '<man/man1/bash.1>'
-recho */man*/bash.*
-expect '<man/man1/bash.1>'
-recho $(echo */man*/bash.*)
-expect '<man/man1/bash.1>'
-recho "$(echo */man*/bash.*)"
-
-# tests with multiple `*'s
-case abc in
-a***c) echo ok 1;;
-esac
-
-case abc in
-a*****?c)      echo ok 2;;
-esac
-
-case abc in
-?*****??)      echo ok 3;;
-esac
-
-case abc in
-*****??)       echo ok 4;;
-esac
-
-case abc in
-*****??c)      echo ok 5;;
-esac
-
-case abc in
-?*****?c)      echo ok 6;;
-esac
-
-case abc in
-?***?****c)    echo ok 7;;
-esac
-
-case abc in
-?***?****?)    echo ok 8;;
-esac
-
-case abc in
-?***?****)     echo ok 9;;
-esac
-
-case abc in
-*******c)      echo ok 10;;
-esac
-
-case abc in
-*******?)      echo ok 11;;
-esac
-
-case abcdecdhjk in
-a*cd**?**??k)  echo ok 20;;
-esac
-
-case abcdecdhjk in
-a**?**cd**?**??k)      echo ok 21;;
-esac
-
-case abcdecdhjk in
-a**?**cd**?**??k***)   echo ok 22;;
-esac
-
-case abcdecdhjk in
-a**?**cd**?**??***k)   echo ok 23;;
-esac
-
-case abcdecdhjk in
-a**?**cd**?**??***k**) echo ok 24;;
-esac
-
-case abcdecdhjk in
-a****c**?**??*****)    echo ok 25;;
-esac
-
-case '-' in
-[-abc])        echo ok 26 ;;
-esac
-
-case '-' in
-[abc-]) echo ok 27 ;;
-esac
-
-case '\' in
-\\)    echo ok 28 ;;
-esac
-
-case '\' in
-[\\])  echo ok 29 ;;
-esac
-
-case '\' in
-'\')   echo ok 30 ;;
-esac
-
-case '[' in
-[[])   echo ok 31 ;;
-esac
-
-# a `[' without a closing `]' is just another character to match, in the
-# bash implementation
-case '[' in
-[)     echo ok 32 ;;
-esac
-
-case '[abc' in
-[*)    echo 'ok 33';;
-esac
-
-# a right bracket shall lose its special meaning and represent itself in
-# a bracket expression if it occurs first in the list.  -- POSIX.2 2.8.3.2
-case ']' in
-[]])   echo ok 34 ;;
-esac
-
-case '-' in
-[]-])  echo ok 35 ;;
-esac
-
-# a backslash should just escape the next character in this context
-case p in
-[a-\z])        echo ok 36 ;;
-esac
-
-# this was a bug in all versions up to bash-2.04-release
-case "/tmp" in
-[/\\]*) echo ok 37 ;;
-esac
-
-# none of these should output anything
-
-case abc in
-??**********?****?)    echo bad 1;;
-esac
-
-case abc in
-??**********?****c)    echo bad 2;;
-esac
-
-case abc in
-?************c****?****)       echo bad 3;;
-esac
-
-case abc in
-*c*?**)        echo bad 4;;
-esac
-
-case abc in
-a*****c*?**)   echo bad 5;;
-esac
-
-case abc in
-a********???*******)   echo bad 6;;
-esac
-
-case 'a' in
-[])    echo bad 7 ;;
-esac
-
-case '[' in
-[abc)  echo bad 8;;
-esac
-
-# let's start testing the case-insensitive globbing code
-recho b*
-
-shopt -s nocaseglob
-recho b*
-
-recho [b]*
-shopt -u nocaseglob
-
-# make sure set -f works right
-set -f
-recho *
-set +f
-
-# test out the GLOBIGNORE code
-GLOBIGNORE='.*:*c:*e:?'
-recho *
-
-GLOBIGNORE='.*:*b:*d:?'
-recho *
-
-# see if GLOBIGNORE can substitute for `set -f'
-GLOBIGNORE='.*:*'
-recho *
-
-unset GLOBIGNORE
-expect '<man/man1/bash.1>'
-recho */man*/bash.*
-
-# make sure null values for GLOBIGNORE have no effect
-GLOBIGNORE=
-expect '<man/man1/bash.1>'
-recho */man*/bash.*
-
-# this is for the benefit of pure coverage, so it writes the pcv file
-# in the right place, and for gprof
-builtin cd $MYDIR
-
-rm -rf $TESTDIR
-
-exit 0
diff --git a/tests/local-tests b/tests/local-tests
deleted file mode 100644 (file)
index 8cb92a0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-PATH=/usr/local/bin:/usr/ucb:/bin:/usr/bin:.
-export PATH
-
-gmake tests
diff --git a/tests/misc/input-line-2.sh b/tests/misc/input-line-2.sh
deleted file mode 100644 (file)
index b3e126e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-echo before calling input-line.sub
-${THIS_SH} < ./input-line.sub
-this line for input-line.sub
-echo finished with input-line.sub
diff --git a/tests/misc/minus-e b/tests/misc/minus-e
deleted file mode 100644 (file)
index be67ec5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-set -e
-if set +e
-then
-       false
-fi
-echo hi
diff --git a/tests/misc/minus-e.right b/tests/misc/minus-e.right
deleted file mode 100644 (file)
index 45b983b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-hi
diff --git a/tests/misc/read-nchars-int.tests b/tests/misc/read-nchars-int.tests
deleted file mode 100644 (file)
index 40b1f98..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# interactive
-
-# from tty
-read -n 3 -p 'enter three chars: ' xyz
-echo
-echo $xyz
-
-# using readline
-read -p 'enter 3 chars: ' -e -n 3 abc
-# readline outputs a newline for us, so we don't need the extra echo
-echo $abc
diff --git a/tests/misc/regress/README b/tests/misc/regress/README
deleted file mode 100644 (file)
index d78925f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-This is Geoff Collyer's `sh' regression test.  It will run each test
-on sh and ../../bash, and on ksh if you have it.  I have `real' ksh;
-the PD ksh is different and will fail some of the tests.
-
-Expect some small variations in the sh and bash output, since some
-of the tests work from the output of `date' or on the current dat
-returned by `getdate'.
-
-Don't expect `getdate' to exist unless you're running C News.  If you
-don't have it, run
-
-       make -f getdate.mk getdate
diff --git a/tests/misc/regress/geoff.post b/tests/misc/regress/geoff.post
deleted file mode 100644 (file)
index 3e9f2de..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-Newsgroups: comp.os.coherent
-Subject: sh clones evaluated (was Re: C News)
-Organization: Software Tool & Die Netnews Research Center
-References: <138198@allan.sublink.org> <920725204@umunk.GUN.de>
-       <9207260813.30@rmkhome.UUCP> <1992Jul27.200244.2456@acme.gen.nz>
-       <Bs0x7K.2pp@world.std.com> <9207291604.00@rmkhome.UUCP>
-       <Bs84t1.3Fx@world.std.com> <9208011403.38@rmkhome.UUCP>
-
-I've reevaluated the allegedly-sh-compatible shells I have on hand (sh,
-bash, ash, zsh and a redistributable ksh).  bash seems to have improved
-since I last looked at it and seems to run inews and subordinates
-correctly, and passes the diagnostic tests I extracted from inews and
-anne.jones.  ash, zsh and redistributable ksh each fail three of the six
-tests.  This saddens me, as ash is an elegant and relatively small piece
-of work, whereas bash is bloated and complicated.
-
-I've enclosed the test scripts (shx?), driver script (shx) and results
-(log) below.  A couple caveats:  shx4 (a quoting test) uses the C News
-getdate command; there may be newer versions of the shells tested - this
-evaluation is decidedly informal.  Here's a quick summary: sh and bash
-passed all tests; ash can't parse "<&$fd" and doesn't understand quoting;
-redistributable ksh dumps core on a newline inside backquotes, doesn't
-understand quoting, and botches waiting on background processes; zsh
-doesn't understand sh quoting (in particular, it sees ! as a job control
-character, even inside quotes), and botches waiting for background
-processes.
-
-
-# To unbundle, sh this file
-echo log 1>&2
-sed 's/^X//' >log <<'!'
-X:; ./shx
-
-sh:
-X<&$fd ok
-nlbq   Mon Aug  3 02:45:00 EDT 1992
-bang   geoff
-quote  712824302
-setbq  defmsgid=<1992Aug3.024502.6176@host>
-bgwait sleep done... wait 6187
-
-
-bash:
-X<&$fd ok
-nlbq   Mon Aug  3 02:45:09 EDT 1992
-bang   geoff
-quote  712824311
-setbq  defmsgid=<1992Aug3.024512.6212@host>
-bgwait sleep done... wait 6223
-
-
-ash:
-X<&$fd shx1: 4: Syntax error: Bad fd number
-nlbq   Mon Aug  3 02:45:19 EDT 1992
-bang   geoff
-quote  getdate: `"now"' not a valid date
-
-setbq  defmsgid=<1992Aug3.` echo 024521
-bgwait sleep done... wait 6241
-
-
-ksh:
-X<&$fd ok
-nlbq   ./shx: 6248 Memory fault - core dumped
-bang   geoff
-quote  getdate: `"now"' not a valid date
-
-setbq  defmsgid=<1992Aug3.024530.6257@host>
-bgwait no such job: 6265
-wait 6265
-sleep done... 
-
-zsh:
-X<&$fd ok
-nlbq   Mon Aug 3 02:45:36 EDT 1992
-bang   shx3: event not found: /s/ [4]
-quote  712824337
-setbq  defmsgid=<..6290@host>
-bgwait shx7: unmatched " [9]
-sleep done... 
-X:; 
-!
-echo shx 1>&2
-sed 's/^X//' >shx <<'!'
-X#! /bin/sh
-for cmd in sh bash ash ksh zsh
-do
-X      echo
-X      echo $cmd:
-X      for demo in shx?
-X      do
-X              $cmd $demo
-X      done
-done
-!
-echo shx1 1>&2
-sed 's/^X//' >shx1 <<'!'
-X# ash fails this one
-echo -n '<&$fd '
-fd=3
-echo ok <&$fd
-!
-echo shx2 1>&2
-sed 's/^X//' >shx2 <<'!'
-X# pd ksh fails this one
-echo -n "nlbq  "
-date=`
-date`
-echo "$date"
-!
-echo shx3 1>&2
-sed 's/^X//' >shx3 <<'!'
-X# zsh fails this one
-echo -n 'bang  '
-echo 'geoff    tty??   Aug  3 02:35' |
-X    sed -e 's/[        ].*//' -e '/!/s/^.*!//'
-!
-echo shx4 1>&2
-sed 's/^X//' >shx4 <<'!'
-X# ash, pd ksh fail this one
-echo -n "quote "
-expiry="now"
-timet="` getdate \"$expiry\" `"
-echo "$timet"
-!
-echo shx5 1>&2
-sed 's/^X//' >shx5 <<'!'
-X# ash, zsh fail this one
-echo -n "setbq "
-host=host
-date="`date`"
-echo defmsgid="`set $date; echo \<$6$2$3.\`  echo $4 | tr -d : \`.$$@$host\>`"
-!
-echo shx7 1>&2
-sed 's/^X//' >shx7 <<'!'
-X# pd ksh and zsh fail this one
-echo -n "bgwait        "
-X(
-X      sleep 2
-X      echo -n "sleep done... "
-X) &
-waitcmd="wait $!"
-eval $waitcmd
-echo "$waitcmd"
-!
-echo shx8 1>&2
-sed 's/^X//' >shx8 <<'!'
-X# in case gcx7 is really breaks this shell
-sleep 3
-echo
-!
-exit 0
diff --git a/tests/misc/regress/getdate.mk b/tests/misc/regress/getdate.mk
deleted file mode 100644 (file)
index 543242e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-all:   getdate
-
-getdate.c:     getdate.y
-       yacc getdate.y
-       mv y.tab.c getdate.c
-
-getdate:       getdate.c
-       $(CC) -o $@ getdate.c 
-       rm -f getdate.c getdate.o
diff --git a/tests/misc/regress/getdate.y b/tests/misc/regress/getdate.y
deleted file mode 100644 (file)
index 1df3773..0000000
+++ /dev/null
@@ -1,553 +0,0 @@
-%token ID MONTH DAY MERIDIAN NUMBER UNIT MUNIT SUNIT ZONE DAYZONE AGO
-%{
-       /*      Steven M. Bellovin (unc!smb)                    */
-       /*      Dept. of Computer Science                       */
-       /*      University of North Carolina at Chapel Hill     */
-       /*      @(#)getdate.y   2.13    9/16/86 */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <ctype.h>
-#include <time.h>
-#define        timezone        tmzn    /* ugly hack for obscure name clash */
-#include <sys/timeb.h>
-
-#define daysec (24L*60L*60L)
-
-       static int timeflag, zoneflag, dateflag, dayflag, relflag;
-       static time_t relsec, relmonth;
-       static int hh, mm, ss, merid, daylight;
-       static int dayord, dayreq;
-       static int month, day, year;
-       static int ourzone;
-
-#define AM 1
-#define PM 2
-#define DAYLIGHT 1
-#define STANDARD 2
-#define MAYBE    3
-%}
-
-%%
-timedate:              /* empty */
-       | timedate item;
-
-item:  tspec =
-               {timeflag++;}
-       | zone =
-               {zoneflag++;}
-       | dtspec =
-               {dateflag++;}
-       | dyspec =
-               {dayflag++;}
-       | rspec =
-               {relflag++;}
-       | nspec;
-
-nspec: NUMBER =
-               {if (timeflag && dateflag && !relflag) year = $1;
-               else {timeflag++;hh = $1/100;mm = $1%100;ss = 0;merid = 24;}};
-
-tspec: NUMBER MERIDIAN =
-               {hh = $1; mm = 0; ss = 0; merid = $2;}
-       | NUMBER ':' NUMBER =
-               {hh = $1; mm = $3; merid = 24;}
-       | NUMBER ':' NUMBER MERIDIAN =
-               {hh = $1; mm = $3; merid = $4;}
-       | NUMBER ':' NUMBER NUMBER =
-               {hh = $1; mm = $3; merid = 24;
-               daylight = STANDARD; ourzone = $4%100 + 60*$4/100;}
-       | NUMBER ':' NUMBER ':' NUMBER =
-               {hh = $1; mm = $3; ss = $5; merid = 24;}
-       | NUMBER ':' NUMBER ':' NUMBER MERIDIAN =
-               {hh = $1; mm = $3; ss = $5; merid = $6;}
-       | NUMBER ':' NUMBER ':' NUMBER NUMBER =
-               {hh = $1; mm = $3; ss = $5; merid = 24;
-               daylight = STANDARD; ourzone = $6%100 + 60*$6/100;};
-
-zone:  ZONE =
-               {ourzone = $1; daylight = STANDARD;}
-       | DAYZONE =
-               {ourzone = $1; daylight = DAYLIGHT;};
-
-dyspec:        DAY =
-               {dayord = 1; dayreq = $1;}
-       | DAY ',' =
-               {dayord = 1; dayreq = $1;}
-       | NUMBER DAY =
-               {dayord = $1; dayreq = $2;};
-
-dtspec:        NUMBER '/' NUMBER =
-               {month = $1; day = $3;}
-       | NUMBER '/' NUMBER '/' NUMBER =
-               {month = $1; day = $3; year = $5;}
-       | MONTH NUMBER =
-               {month = $1; day = $2;}
-       | MONTH NUMBER ',' NUMBER =
-               {month = $1; day = $2; year = $4;}
-       | NUMBER MONTH =
-               {month = $2; day = $1;}
-       | NUMBER MONTH NUMBER =
-               {month = $2; day = $1; year = $3;};
-
-
-rspec: NUMBER UNIT =
-               {relsec +=  60L * $1 * $2;}
-       | NUMBER MUNIT =
-               {relmonth += $1 * $2;}
-       | NUMBER SUNIT =
-               {relsec += $1;}
-       | UNIT =
-               {relsec +=  60L * $1;}
-       | MUNIT =
-               {relmonth += $1;}
-       | SUNIT =
-               {relsec++;}
-       | rspec AGO =
-               {relsec = -relsec; relmonth = -relmonth;};
-%%
-
-static int mdays[12] =
-       {31, 0, 31,  30, 31, 30,  31, 31, 30,  31, 30, 31};
-#define epoch 1970
-
-extern struct tm *localtime();
-
-static time_t
-dateconv(mm, dd, yy, h, m, s, mer, zone, dayflag)
-int mm, dd, yy, h, m, s, mer, zone, dayflag;
-{
-       time_t tod, jdate;
-       register int i;
-       time_t timeconv();
-
-       if (yy < 0) yy = -yy;
-       if (yy < 100) yy += 1900;
-       mdays[1] = 28 + (yy%4 == 0 && (yy%100 != 0 || yy%400 == 0));
-       if (yy < epoch || yy > 1999 || mm < 1 || mm > 12 ||
-               dd < 1 || dd > mdays[--mm]) return (-1);
-       jdate = dd-1;
-        for (i=0; i<mm; i++) jdate += mdays[i];
-       for (i = epoch; i < yy; i++) jdate += 365 + (i%4 == 0);
-       jdate *= daysec;
-       jdate += zone * 60L;
-       if ((tod = timeconv(h, m, s, mer)) < 0) return (-1);
-       jdate += tod;
-       if (dayflag==DAYLIGHT || (dayflag==MAYBE&&localtime(&jdate)->tm_isdst))
-               jdate += -1*60*60;
-       return (jdate);
-}
-
-static time_t
-dayconv(ord, day, now)
-int ord, day; time_t now;
-{
-       register struct tm *loctime;
-       time_t tod;
-       time_t daylcorr();
-
-       tod = now;
-       loctime = localtime(&tod);
-       tod += daysec * ((day - loctime->tm_wday + 7) % 7);
-       tod += 7*daysec*(ord<=0?ord:ord-1);
-       return daylcorr(tod, now);
-}
-
-static time_t
-timeconv(hh, mm, ss, mer)
-register int hh, mm, ss, mer;
-{
-       if (mm < 0 || mm > 59 || ss < 0 || ss > 59) return (-1);
-       switch (mer) {
-               case AM: if (hh < 1 || hh > 12) return(-1);
-                        return (60L * ((hh%12)*60L + mm)+ss);
-               case PM: if (hh < 1 || hh > 12) return(-1);
-                        return (60L * ((hh%12 +12)*60L + mm)+ss);
-               case 24: if (hh < 0 || hh > 23) return (-1);
-                        return (60L * (hh*60L + mm)+ss);
-               default: return (-1);
-       }
-}
-
-static time_t
-monthadd(sdate, relmonth)
-time_t sdate, relmonth;
-{
-       struct tm *ltime;
-       time_t dateconv();
-       time_t daylcorr();
-       int mm, yy;
-
-       if (relmonth == 0) return 0;
-       ltime = localtime(&sdate);
-       mm = 12*ltime->tm_year + ltime->tm_mon + relmonth;
-       yy = mm/12;
-       mm = mm%12 + 1;
-       return daylcorr(dateconv(mm, ltime->tm_mday, yy, ltime->tm_hour,
-               ltime->tm_min, ltime->tm_sec, 24, ourzone, MAYBE), sdate);
-}
-
-static time_t
-daylcorr(future, now)
-time_t future, now;
-{
-       int fdayl, nowdayl;
-
-       nowdayl = (localtime(&now)->tm_hour+1) % 24;
-       fdayl = (localtime(&future)->tm_hour+1) % 24;
-       return (future-now) + 60L*60L*(nowdayl-fdayl);
-}
-
-static char *lptr;
-
-yylex()
-{
-       extern int yylval;
-       int sign;
-       register char c;
-       register char *p;
-       char idbuf[20];
-       int pcnt;
-
-       for (;;) {
-               while (isspace(*lptr)) lptr++;
-
-               if (isdigit(c = *lptr) || c == '-' || c == '+') {
-                       if (c== '-' || c == '+') {
-                               if (c=='-') sign = -1;
-                               else sign = 1;
-                               if (!isdigit(*++lptr)) {
-                                       /* yylval = sign; return (NUMBER); */
-                                       return yylex(); /* skip the '-' sign */
-                               }
-                       } else sign = 1;
-                       yylval = 0;
-                       while (isdigit(c = *lptr++)) yylval = 10*yylval + c - '0';
-                       yylval *= sign;
-                       lptr--;
-                       return (NUMBER);
-
-               } else if (isalpha(c)) {
-                       p = idbuf;
-                       while (isalpha(c = *lptr++) || c=='.')
-                               if (p < &idbuf[sizeof(idbuf)-1])
-                                       *p++ = c;
-                       *p = '\0';
-                       lptr--;
-                       return (lookup(idbuf));
-               }
-
-               else if (c == '(') {
-                       pcnt = 0;
-                       do {
-                               c = *lptr++;
-                               if (c == '\0') return(c);
-                               else if (c == '(') pcnt++;
-                               else if (c == ')') pcnt--;
-                       } while (pcnt > 0);
-               }
-
-               else return (*lptr++);
-       }
-}
-
-struct table {
-       char *name;
-       int type, value;
-};
-
-static struct table mdtab[] = {
-       {"January", MONTH, 1},
-       {"February", MONTH, 2},
-       {"March", MONTH, 3},
-       {"April", MONTH, 4},
-       {"May", MONTH, 5},
-       {"June", MONTH, 6},
-       {"July", MONTH, 7},
-       {"August", MONTH, 8},
-       {"September", MONTH, 9},
-       {"Sept", MONTH, 9},
-       {"October", MONTH, 10},
-       {"November", MONTH, 11},
-       {"December", MONTH, 12},
-
-       {"Sunday", DAY, 0},
-       {"Monday", DAY, 1},
-       {"Tuesday", DAY, 2},
-       {"Tues", DAY, 2},
-       {"Wednesday", DAY, 3},
-       {"Wednes", DAY, 3},
-       {"Thursday", DAY, 4},
-       {"Thur", DAY, 4},
-       {"Thurs", DAY, 4},
-       {"Friday", DAY, 5},
-       {"Saturday", DAY, 6},
-       {0, 0, 0}};
-
-#define HRS *60
-#define HALFHR 30
-static struct table mztab[] = {
-       {"a.m.", MERIDIAN, AM},
-       {"am", MERIDIAN, AM},
-       {"p.m.", MERIDIAN, PM},
-       {"pm", MERIDIAN, PM},
-       {"nst", ZONE, 3 HRS + HALFHR},          /* Newfoundland */
-       {"n.s.t.", ZONE, 3 HRS + HALFHR},
-       {"ast", ZONE, 4 HRS},           /* Atlantic */
-       {"a.s.t.", ZONE, 4 HRS},
-       {"adt", DAYZONE, 4 HRS},
-       {"a.d.t.", DAYZONE, 4 HRS},
-       {"est", ZONE, 5 HRS},           /* Eastern */
-       {"e.s.t.", ZONE, 5 HRS},
-       {"edt", DAYZONE, 5 HRS},
-       {"e.d.t.", DAYZONE, 5 HRS},
-       {"cst", ZONE, 6 HRS},           /* Central */
-       {"c.s.t.", ZONE, 6 HRS},
-       {"cdt", DAYZONE, 6 HRS},
-       {"c.d.t.", DAYZONE, 6 HRS},
-       {"mst", ZONE, 7 HRS},           /* Mountain */
-       {"m.s.t.", ZONE, 7 HRS},
-       {"mdt", DAYZONE, 7 HRS},
-       {"m.d.t.", DAYZONE, 7 HRS},
-       {"pst", ZONE, 8 HRS},           /* Pacific */
-       {"p.s.t.", ZONE, 8 HRS},
-       {"pdt", DAYZONE, 8 HRS},
-       {"p.d.t.", DAYZONE, 8 HRS},
-       {"yst", ZONE, 9 HRS},           /* Yukon */
-       {"y.s.t.", ZONE, 9 HRS},
-       {"ydt", DAYZONE, 9 HRS},
-       {"y.d.t.", DAYZONE, 9 HRS},
-       {"hst", ZONE, 10 HRS},          /* Hawaii */
-       {"h.s.t.", ZONE, 10 HRS},
-       {"hdt", DAYZONE, 10 HRS},
-       {"h.d.t.", DAYZONE, 10 HRS},
-
-       {"gmt", ZONE, 0 HRS},
-       {"g.m.t.", ZONE, 0 HRS},
-       {"ut", ZONE, 0 HRS},
-       {"u.t.", ZONE, 0 HRS},
-       {"bst", DAYZONE, 0 HRS},                /* British Summer Time */
-       {"b.s.t.", DAYZONE, 0 HRS},
-       {"eet", ZONE, 0 HRS},           /* European Eastern Time */
-       {"e.e.t.", ZONE, 0 HRS},
-       {"eest", DAYZONE, 0 HRS},       /* European Eastern Summer Time */
-       {"e.e.s.t.", DAYZONE, 0 HRS},
-       {"met", ZONE, -1 HRS},          /* Middle European Time */
-       {"m.e.t.", ZONE, -1 HRS},
-       {"mest", DAYZONE, -1 HRS},      /* Middle European Summer Time */
-       {"m.e.s.t.", DAYZONE, -1 HRS},
-       {"wet", ZONE, -2 HRS },         /* Western European Time */
-       {"w.e.t.", ZONE, -2 HRS },
-       {"west", DAYZONE, -2 HRS},      /* Western European Summer Time */
-       {"w.e.s.t.", DAYZONE, -2 HRS},
-
-       {"jst", ZONE, -9 HRS},          /* Japan Standard Time */
-       {"j.s.t.", ZONE, -9 HRS},       /* Japan Standard Time */
-                                       /* No daylight savings time */
-
-       {"aest", ZONE, -10 HRS},        /* Australian Eastern Time */
-       {"a.e.s.t.", ZONE, -10 HRS},
-       {"aesst", DAYZONE, -10 HRS},    /* Australian Eastern Summer Time */
-       {"a.e.s.s.t.", DAYZONE, -10 HRS},
-       {"acst", ZONE, -(9 HRS + HALFHR)},      /* Australian Central Time */
-       {"a.c.s.t.", ZONE, -(9 HRS + HALFHR)},
-       {"acsst", DAYZONE, -(9 HRS + HALFHR)},  /* Australian Central Summer */
-       {"a.c.s.s.t.", DAYZONE, -(9 HRS + HALFHR)},
-       {"awst", ZONE, -8 HRS},         /* Australian Western Time */
-       {"a.w.s.t.", ZONE, -8 HRS},     /* (no daylight time there, I'm told */
-       {0, 0, 0}};
-
-static struct table unittb[] = {
-       {"year", MUNIT, 12},
-       {"month", MUNIT, 1},
-       {"fortnight", UNIT, 14*24*60},
-       {"week", UNIT, 7*24*60},
-       {"day", UNIT, 1*24*60},
-       {"hour", UNIT, 60},
-       {"minute", UNIT, 1},
-       {"min", UNIT, 1},
-       {"second", SUNIT, 1},
-       {"sec", SUNIT, 1},
-       {0, 0, 0}};
-
-static struct table othertb[] = {
-       {"tomorrow", UNIT, 1*24*60},
-       {"yesterday", UNIT, -1*24*60},
-       {"today", UNIT, 0},
-       {"now", UNIT, 0},
-       {"last", NUMBER, -1},
-       {"this", UNIT, 0},
-       {"next", NUMBER, 2},
-       {"first", NUMBER, 1},
-       /* {"second", NUMBER, 2}, */
-       {"third", NUMBER, 3},
-       {"fourth", NUMBER, 4},
-       {"fifth", NUMBER, 5},
-       {"sixth", NUMBER, 6},
-       {"seventh", NUMBER, 7},
-       {"eigth", NUMBER, 8},
-       {"ninth", NUMBER, 9},
-       {"tenth", NUMBER, 10},
-       {"eleventh", NUMBER, 11},
-       {"twelfth", NUMBER, 12},
-       {"ago", AGO, 1},
-       {0, 0, 0}};
-
-static struct table milzone[] = {
-       {"a", ZONE, 1 HRS},
-       {"b", ZONE, 2 HRS},
-       {"c", ZONE, 3 HRS},
-       {"d", ZONE, 4 HRS},
-       {"e", ZONE, 5 HRS},
-       {"f", ZONE, 6 HRS},
-       {"g", ZONE, 7 HRS},
-       {"h", ZONE, 8 HRS},
-       {"i", ZONE, 9 HRS},
-       {"k", ZONE, 10 HRS},
-       {"l", ZONE, 11 HRS},
-       {"m", ZONE, 12 HRS},
-       {"n", ZONE, -1 HRS},
-       {"o", ZONE, -2 HRS},
-       {"p", ZONE, -3 HRS},
-       {"q", ZONE, -4 HRS},
-       {"r", ZONE, -5 HRS},
-       {"s", ZONE, -6 HRS},
-       {"t", ZONE, -7 HRS},
-       {"u", ZONE, -8 HRS},
-       {"v", ZONE, -9 HRS},
-       {"w", ZONE, -10 HRS},
-       {"x", ZONE, -11 HRS},
-       {"y", ZONE, -12 HRS},
-       {"z", ZONE, 0 HRS},
-       {0, 0, 0}};
-
-static
-lookup(id)
-char *id;
-{
-#define gotit (yylval=i->value,  i->type)
-#define getid for(j=idvar, k=id; *j++ = *k++; )
-
-       char idvar[20];
-       register char *j, *k;
-       register struct table *i;
-       int abbrev;
-
-       getid;
-       if (strlen(idvar) == 3) abbrev = 1;
-       else if (strlen(idvar) == 4 && idvar[3] == '.') {
-               abbrev = 1;
-               idvar[3] = '\0';
-       }
-       else abbrev = 0;
-
-       if (islower(*idvar)) *idvar = toupper(*idvar);
-
-       for (i = mdtab; i->name; i++) {
-               k = idvar;
-               for (j = i->name; *j++ == *k++;) {
-                       if (abbrev && j==i->name+3) return gotit;
-                       if (j[-1] == 0) return gotit;
-               }
-       }
-
-       getid;
-       for (i = mztab; i->name; i++)
-               if (strcmp(i->name, idvar) == 0) return gotit;
-
-       for (j = idvar; *j; j++)
-               if (isupper(*j)) *j = tolower(*j);
-       for (i=mztab; i->name; i++)
-               if (strcmp(i->name, idvar) == 0) return gotit;
-
-       getid;
-       for (i=unittb; i->name; i++)
-               if (strcmp(i->name, idvar) == 0) return gotit;
-
-       if (idvar[strlen(idvar)-1] == 's')
-               idvar[strlen(idvar)-1] = '\0';
-       for (i=unittb; i->name; i++)
-               if (strcmp(i->name, idvar) == 0) return gotit;
-
-       getid;
-       for (i = othertb; i->name; i++)
-               if (strcmp(i->name, idvar) == 0) return gotit;
-
-       getid;
-       if (strlen(idvar) == 1 && isalpha(*idvar)) {
-               if (isupper(*idvar)) *idvar = tolower(*idvar);
-               for (i = milzone; i->name; i++)
-                       if (strcmp(i->name, idvar) == 0) return gotit;
-       }
-
-       return(ID);
-}
-
-time_t
-getdate(p, now)
-char *p;
-struct timeb *now;
-{
-#define mcheck(f)      if (f>1) err++
-       time_t monthadd();
-       int err;
-       struct tm *lt;
-       struct timeb ftz;
-
-       time_t sdate, tod;
-
-       lptr = p;
-       if (now == ((struct timeb *) NULL)) {
-               now = &ftz;
-               ftime(&ftz);
-       }
-       lt = localtime(&now->time);
-       year = lt->tm_year;
-       month = lt->tm_mon+1;
-       day = lt->tm_mday;
-       relsec = 0; relmonth = 0;
-       timeflag=zoneflag=dateflag=dayflag=relflag=0;
-       ourzone = now->timezone;
-       daylight = MAYBE;
-       hh = mm = ss = 0;
-       merid = 24;
-
-       if (err = yyparse()) return (-1);
-
-       mcheck(timeflag);
-       mcheck(zoneflag);
-       mcheck(dateflag);
-       mcheck(dayflag);
-
-       if (err) return (-1);
-       if (dateflag || timeflag || dayflag) {
-               sdate = dateconv(month,day,year,hh,mm,ss,merid,ourzone,daylight);
-               if (sdate < 0) return -1;
-       }
-       else {
-               sdate = now->time;
-               if (relflag == 0)
-                       sdate -= (lt->tm_sec + lt->tm_min*60 +
-                               lt->tm_hour*(60L*60L));
-       }
-
-       sdate += relsec;
-       sdate += monthadd(sdate, relmonth);
-
-       if (dayflag && !dateflag) {
-               tod = dayconv(dayord, dayreq, sdate);
-               sdate += tod;
-       }
-
-       return sdate;
-}
-
-yyerror(s) char *s;
-{}
-
-main(c, v)
-int    c;
-char   **v;
-{
-       printf("%d\n", getdate(v[1], (struct timeb *)0));
-}
diff --git a/tests/misc/regress/shx b/tests/misc/regress/shx
deleted file mode 100644 (file)
index feb2bc8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#! /bin/sh
-
-if ksh -c 'echo ""' >/dev/null 2>&1; then
-       ksh=ksh
-fi
-
-for cmd in sh ../../bash $ksh
-do
-       echo
-       echo $cmd:
-       for demo in shx[0-9]
-       do
-               $cmd $demo
-       done
-done
diff --git a/tests/misc/regress/shx1 b/tests/misc/regress/shx1
deleted file mode 100644 (file)
index 73c5e8a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# ash fails this one
-echo -n '<&$fd '
-fd=3
-echo ok <&$fd
diff --git a/tests/misc/regress/shx2 b/tests/misc/regress/shx2
deleted file mode 100644 (file)
index 03cff5b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# pd ksh fails this one
-echo -n "nlbq  "
-date=`
-date`
-echo "$date"
diff --git a/tests/misc/regress/shx3 b/tests/misc/regress/shx3
deleted file mode 100644 (file)
index 1fbbb37..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# zsh fails this one
-echo -n 'bang  '
-echo 'geoff    tty??   Aug  3 02:35' |
-    sed -e 's/[         ].*//' -e '/!/s/^.*!//'
diff --git a/tests/misc/regress/shx4 b/tests/misc/regress/shx4
deleted file mode 100644 (file)
index 9ae7781..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# ash, pd ksh fail this one
-echo -n "quote "
-expiry="now"
-timet="` getdate \"$expiry\" `"
-echo "$timet"
diff --git a/tests/misc/regress/shx5 b/tests/misc/regress/shx5
deleted file mode 100644 (file)
index bd7ad0e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# ash, zsh fail this one
-echo -n "setbq "
-host=host
-date="`date`"
-echo defmsgid="`set $date; echo \<$6$2$3.\`  echo $4 | tr -d : \`.$$@$host\>`"
diff --git a/tests/misc/regress/shx7 b/tests/misc/regress/shx7
deleted file mode 100644 (file)
index 12ba1ec..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# pd ksh and zsh fail this one
-echo -n "bgwait        "
-(
-       sleep 2
-       echo -n "sleep done... "
-) &
-waitcmd="wait $!"
-eval $waitcmd
-echo "$waitcmd"
diff --git a/tests/misc/regress/shx8 b/tests/misc/regress/shx8
deleted file mode 100644 (file)
index b466ec1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# in case gcx7 is really breaks this shell
-sleep 3
-echo
diff --git a/tests/misc/run-input-test-2 b/tests/misc/run-input-test-2
deleted file mode 100644 (file)
index ffbac4c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-cat ./input-line-2.sh | ${THIS_SH} > /tmp/xx
-diff /tmp/xx input.right && rm -f /tmp/xx
diff --git a/tests/misc/run-minus-e b/tests/misc/run-minus-e
deleted file mode 100644 (file)
index 2a91a3d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-${THIS_SH} ./minus-e > /tmp/xx
-diff /tmp/xx minus-e.right && rm -f /tmp/xx
diff --git a/tests/misc/test.patmatch b/tests/misc/test.patmatch
deleted file mode 100644 (file)
index 88b5631..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# these will work only if test.c has been compiled with -DPATTERN_MATCHING
-# to get =~ and !~
-
-[ a =\~ a ] && echo OK || echo BAD
-[ a !~ b ] && echo OK || echo BAD
-
-[ a =\~ \* ] && echo OK || echo BAD
-[ a =\~ \? ] && echo OK || echo BAD
-[ abc !~ \? ] && echo OK || echo BAD
-
-[ '' =\~ \* ] && echo OK || echo BAD
-[ '' !~ \?\* ] && echo OK || echo BAD
-
-[ a =\~ \[abc] ] && echo OK || echo BAD
-[ x !~ \[abc] ] && echo OK || echo BAD
diff --git a/tests/posix-ifs.sh b/tests/posix-ifs.sh
deleted file mode 100644 (file)
index cf9a898..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-# Usage: $SHELL ifs.sh
-#
-# This script generates 6856 tests for the set(1) and read(1)
-# builtins w.r.t. IFS whitespace and non-whitespace characters.
-# Each failed test produces one line on the standard output that
-# contains the test along with the expected and actual results.
-# The last output line contains the test result counts.  ordered>0
-# are the number of tests where IFS=": " produced different results
-# than IFS=" :".  If a test fails the same way for IFS=": " and
-# IFS=" :" then the second output line is suppressed.
-
-TESTS=6856
-
-ksh_read=0
-echo 1 | read ksh_read
-ksh_arith=0
-eval '((ksh_arith+=1))' 2>/dev/null
-
-failed=0
-ordered=0
-passed=0
-
-split()
-{
-       i=$1 s=$2 r=$3 S='' R=''
-       for ifs in ': ' ' :'
-       do      IFS=$ifs
-               set x $i
-               shift
-               IFS=' '
-               g="[$#]"
-               while   :
-               do      case $# in
-                       0)      break ;;
-                       esac
-                       g="$g($1)"
-                       shift
-               done
-               case $g in
-               "$s")   case $ksh_arith in
-                       1)      ((passed+=1)) ;;
-                       *)      passed=`expr $passed + 1` ;;
-                       esac
-                       case $S in
-                       '')     S=$g
-                               ;;
-                       "$g")   ;;
-                       *)      case $ksh_arith in
-                               1)      ((ordered+=1)) ;;
-                               *)      ordered=`expr $ordered + 1` ;;
-                               esac
-                               ;;
-                       esac
-                       ;;
-               "$S")   case $ksh_arith in
-                       1)      ((failed+=1)) ;;
-                       *)      failed=`expr $failed + 1` ;;
-                       esac
-                       ;;
-               *)      case $ksh_arith in
-                       1)      ((failed+=1)) ;;
-                       *)      failed=`expr $failed + 1` ;;
-                       esac
-                       case $s in
-                       "$S")   ;;
-                       ?0*)    echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#]\" # expected \"$s\" got \"$g\"" ;;
-                       ?1*)    echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)\" # expected \"$s\" got \"$g\"" ;;
-                       ?2*)    echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)\" # expected \"$s\" got \"$g\"" ;;
-                       ?3*)    echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)(\$3)\" # expected \"$s\" got \"$g\"" ;;
-                       *)      echo TEST ERROR i="'$i'" s="'$s'" ;;
-                       esac
-                       case $S in
-                       '')     S=$g
-                               ;;
-                       "$g")   ;;
-                       *)      case $ksh_arith in
-                               1)      ((ordered+=1)) ;;
-                               *)      ordered=`expr $ordered + 1` ;;
-                               esac
-                               ;;
-                       esac
-               esac
-               case $ksh_read in
-               1)      echo "$i" | IFS=$ifs read x y; g="($x)($y)" ;;
-               *)      g=`export ifs; echo "$i" | ( IFS=$ifs; read x y; echo "($x)($y)" )` ;;
-               esac
-               case $g in
-               "$r")   case $ksh_arith in
-                       1)      ((passed+=1)) ;;
-                       *)      passed=`expr $passed + 1` ;;
-                       esac
-                       case $R in
-                       '')     R=$g
-                               ;;
-                       "$g")   ;;
-                       *)      case $ksh_arith in
-                               1)      ((ordered+=1)) ;;
-                               *)      ordered=`expr $ordered + 1` ;;
-                               esac
-                               ;;
-                       esac
-                       ;;
-               "$R")   case $ksh_arith in
-                       1)      ((failed+=1)) ;;
-                       *)      failed=`expr $failed + 1` ;;
-                       esac
-                       ;;
-               *)      case $ksh_arith in
-                       1)      ((failed+=1)) ;;
-                       *)      failed=`expr $failed + 1` ;;
-                       esac
-                       case $r in
-                       "$R")   ;;
-                       *)      echo "echo \"$i\" | ( IFS=\"$ifs\" read x y; echo \"(\$x)(\$y)\" ) # expected \"$r\" got \"$g\"" ;;
-                       esac
-                       case $R in
-                       '')     R=$g
-                               ;;
-                       "$g")   ;;
-                       *)      case $ksh_arith in
-                               1)      ((ordered+=1)) ;;
-                               *)      ordered=`expr $ordered + 1` ;;
-                               esac
-                               ;;
-                       esac
-                       ;;
-               esac
-       done
-}
-
-for str in     \
-       '-'     \
-       'a'     \
-       '- -'   \
-       '- a'   \
-       'a -'   \
-       'a b'   \
-       '- - -' \
-       '- - a' \
-       '- a -' \
-       '- a b' \
-       'a - -' \
-       'a - b' \
-       'a b -' \
-       'a b c' \
-
-do
-       IFS=' '
-       set x $str
-
-       shift
-       case $# in
-       0)      continue ;;
-       esac
-
-       f1=$1
-       case $f1 in
-       '-')    f1='' ;;
-       esac
-
-       shift
-       case $# in
-       0)      for d0 in '' ' '
-               do
-                       for d1 in '' ' ' ':' ' :' ': ' ' : '
-                       do
-                               case $f1$d1 in
-                               '')     split "$d0$f1$d1" "[0]" "()()" ;;
-                               ' ')    ;;
-                               *)      split "$d0$f1$d1" "[1]($f1)" "($f1)()" ;;
-                               esac
-                       done
-               done
-               continue
-               ;;
-       esac
-       f2=$1
-       case $f2 in
-       '-')    f2='' ;;
-       esac
-
-       shift
-       case $# in
-       0)      for d0 in '' ' '
-               do
-                       for d1 in ' ' ':' ' :' ': ' ' : '
-                       do
-                               case ' ' in
-                               $f1$d1|$d1$f2)  continue ;;
-                               esac
-                               for d2 in '' ' ' ':' ' :' ': ' ' : '
-                               do
-                                       case $f2$d2 in
-                                       '')     split "$d0$f1$d1$f2$d2" "[1]($f1)" "($f1)()" ;;
-                                       ' ')    ;;
-                                       *)      split "$d0$f1$d1$f2$d2" "[2]($f1)($f2)" "($f1)($f2)" ;;
-                                       esac
-                               done
-                       done
-               done
-               continue
-               ;;
-       esac
-       f3=$1
-       case $f3 in
-       '-')    f3='' ;;
-       esac
-
-       shift
-       case $# in
-       0)      for d0 in '' ' '
-               do
-                       for d1 in ':' ' :' ': ' ' : '
-                       do
-                               case ' ' in
-                               $f1$d1|$d1$f2)  continue ;;
-                               esac
-                               for d2 in ' ' ':' ' :' ': ' ' : '
-                               do
-                                       case $f2$d2 in
-                                       ' ')    continue ;;
-                                       esac
-                                       case ' ' in
-                                       $f2$d2|$d2$f3)  continue ;;
-                                       esac
-                                       for d3 in '' ' ' ':' ' :' ': ' ' : '
-                                       do
-                                               case $f3$d3 in
-                                               '')     split "$d0$f1$d1$f2$d2$f3$d3" "[2]($f1)($f2)" "($f1)($f2)" ;;
-                                               ' ')    ;;
-                                               *)      x=$f2$d2$f3$d3
-                                                       x=${x#' '}
-                                                       x=${x%' '}
-                                                       split "$d0$f1$d1$f2$d2$f3$d3" "[3]($f1)($f2)($f3)" "($f1)($x)"
-                                                       ;;
-                                               esac
-                                       done
-                               done
-                       done
-               done
-               continue
-               ;;
-       esac
-done
-case $ksh_arith in
-1)     ((tests=passed+failed)) ;;
-*)     tests=`expr $passed + $failed` ;;
-esac
-case $ordered in
-0)     ordered="" ;;
-*)     ordered=" ordered $ordered" ;;
-esac
-case $tests in
-$TESTS)        fatal="" ;;
-*)     fatal=" -- fundamental IFS error -- $TESTS tests expected"
-esac
-echo "# tests $tests passed $passed failed $failed$ordered$fatal"
diff --git a/tests/printf.right.raw b/tests/printf.right.raw
deleted file mode 100644 (file)
index 903d147..0000000
Binary files a/tests/printf.right.raw and /dev/null differ
diff --git a/tests/run-gprof b/tests/run-gprof
deleted file mode 100644 (file)
index 87d5086..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#! /bin/sh
-
-PATH=.:$PATH   # just to get recho/zecho/printenv if not run via `make tests'
-export PATH
-
-# unset BASH_ENV only if it is set
-[ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV
-# ditto for SHELLOPTS
-#[ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS
-
-: ${THIS_SH:=../bash}
-export THIS_SH
-
-rm -f gmon.sum
-
-${THIS_SH} ./version
-
-rm -f /tmp/xx
-
-# prime the pump; gprof complains if gmon.sum is empty
-[ -f bash.gmon ] && gprof -s ${THIS_SH} bash.gmon >/dev/null
-
-echo Any output from any test, unless otherwise noted, indicates a possible anomaly
-
-for x in run-*
-do
-       case $x in
-       $0|run-all|run-minimal|run-gprof)       ;;
-       *.orig|*~) ;;
-       *)      echo $x ; sh $x
-               if [ -f /tmp/bash.gmon ]; then
-                       if [ -f bash.gmon ]; then
-                               gprof -s ${THIS_SH} gmon.sum bash.gmon /tmp/bash.gmon >/dev/null
-                       else
-                               gprof -s ${THIS_SH} gmon.sum /tmp/bash.gmon >/dev/null                          
-                       fi
-               else
-                       gprof -s ${THIS_SH} gmon.sum bash.gmon >/dev/null
-               fi
-               rm -f /tmp/bash.gmon bash.gmon
-               ;;
-       esac
-done
-
-gprof -s ${THIS_SH} gmon.sum ./-specialname.gmon ./ohio-state.gmon > /dev/null
-rm -f ./-specialname.gmon ./ohio-state.gmon
-
-if [ -f specialname.gmon ]; then
-       gprof -s ${THIS_SH} gmon.sum ./specialname.gmon > /dev/null
-       rm -f specialname.gmon
-fi
-
-exit 0
diff --git a/tests/time.tests b/tests/time.tests
deleted file mode 100644 (file)
index 06881e9..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-printf "time /dev/null:\n"
-time ${THIS_SH} /dev/null
-
-printf "\nPOSIX: time -p /dev/null:\n"
-time -p ${THIS_SH} /dev/null
-
-printf "\nBSD time /dev/null:\n"
-TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
-time ${THIS_SH} /dev/null
-
-printf "\nSYSV time /dev/null:\n"
-TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
-time ${THIS_SH} /dev/null
-
-printf "\nksh time /dev/null:\n"
-TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
-time ${THIS_SH} /dev/null
-
-printf "\ntimes:\n"
-times
-
-exit 0
diff --git a/version2.c b/version2.c
deleted file mode 100644 (file)
index cc77bd6..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/* version.c -- distribution and version numbers. */
-
-/* Copyright (C) 1989-2014 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 <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;
-
-const char * const bash_copyright = N_("Copyright (C) 2014 Free Software Foundation, Inc.");
-const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n");
-
-/* 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 ("%s\n", _(bash_copyright));
-      printf ("%s\n", _(bash_license));
-      printf ("%s\n", _("This is free software; you are free to change and redistribute it."));
-      printf ("%s\n", _("There is NO WARRANTY, to the extent permitted by law."));
-    }
-}